{"id":11513,"date":"2025-05-24T13:54:18","date_gmt":"2025-05-24T13:54:18","guid":{"rendered":"https:\/\/imperialextractstore.com\/?p=11513"},"modified":"2026-04-13T21:19:57","modified_gmt":"2026-04-13T21:19:57","slug":"worldwide-delivery","status":"publish","type":"post","link":"https:\/\/imperialextractstore.com\/es\/worldwide-delivery\/","title":{"rendered":"Efficient Worldwide Delivery Services"},"content":{"rendered":"<h1 class=\"wp-block-heading\"><strong>Free &amp; Fast Shipping with Imperial Extracts Store: USA &amp; Worldwide Delivery in Days<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">At <strong><a href=\"https:\/\/imperialextractstore.com\/es\/producto\/imperial-710-og-kush\/\">Imperial Extract<\/a> Store<\/strong>, we believe that premium <a href=\"https:\/\/imperialextractstore.com\/es\/blog-7\/\">canabis<\/a> products should come with premium service\u2014starting with <strong>free and fast shipping<\/strong> you can count on<a href=\"http:\/\/vipessentialz.com\" target=\"_blank\" rel=\"noopener\">. <\/a>Whether you&#8217;re ordering from New York or New Zealand, we offer reliable, discreet, and swift delivery using trusted carriers like <strong>UPS<\/strong>, <strong>USPS<\/strong>, <strong>FedEx<\/strong>, and <strong>DHL<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s everything you need to know about how we deliver excellence to your doorstep.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Fast &amp; Free Shipping Within the USA: Just 2\u20133 Days<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We ship across all 50 states with <strong>2\u20133 day delivery<\/strong>, making it quick and convenient to get your favorite products like: Worldwide Delivery<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/imperialextractstore.com\/es\/producto\/imperial-710-bubble-gum-kush\/\">Imperial 710<\/a> Disposables<\/strong><\/li>\n\n\n\n<li><strong><a href=\"https:\/\/imperialextractstore.com\/es\/producto\/lifted-bears-zoap\/\">TCA<\/a> Live <a href=\"https:\/\/imperialextractstore.com\/es\/producto\/live-hash-rosin\/\">Rosin<\/a><\/strong><\/li>\n\n\n\n<li><strong><a href=\"https:\/\/imperialextractstore.com\/es\/producto\/imperial-710-biscotti\/\">Resina viva<\/a> <a href=\"https:\/\/imperialextractstore.com\/es\/shop\/\">M\u00e1s malo<\/a><\/strong><\/li>\n\n\n\n<li><strong>Wax, Carts &amp; <a href=\"https:\/\/imperialextractstore.com\/es\/blog-3\/\">Pre-rollos<\/a> and more<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Best of all? <strong>Shipping is 100% free<\/strong> on every domestic order\u2014no minimums, no surprises.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">U.S. Shipping Carriers We Trust:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>UPS<\/strong> \u2013 Fast ground and express options for residential and business addresses<\/li>\n\n\n\n<li><strong>USPS<\/strong> \u2013 Reliable worldwide shipping, including PO Boxes<\/li>\n\n\n\n<li><strong>FedEx<\/strong> \u2013 Secure and speedy delivery with real-time tracking<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">All packages are discreetly packaged with <strong>tracking info sent straight to your inbox<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Worldwide Delivery: 3\u20137 Days International Shipping<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We don\u2019t stop at the border. Whether you&#8217;re in <strong>Canada, the UK, Australia, Germany, or beyond<\/strong>, <strong>ImperialExtractStore<\/strong> proudly offers <strong>worldwide shipping<\/strong> with major international carriers:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">International Shipping Partners:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DHL Express<\/strong> \u2013 Lightning-fast global delivery (3\u20135 days in most regions)<\/li>\n\n\n\n<li><strong>FedEx International<\/strong> \u2013 Secure international priority shipping<\/li>\n\n\n\n<li><strong>USPS International<\/strong> \u2013 Affordable global service for smaller packages<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Customs-Friendly &amp; Discreet<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">We carefully prepare international shipments with <strong>customs-friendly packaging<\/strong> to ensure safe delivery. Every order includes <strong>tracking details<\/strong> for full peace of mind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why Choose Imperial Extracts Store for Shipping?<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li> <strong>Free shipping<\/strong> on all domestic orders<\/li>\n\n\n\n<li> <strong>Fast turnaround<\/strong> (2\u20133 days U.S., 3\u20137 days worldwide)<\/li>\n\n\n\n<li> <strong>Discreet packaging<\/strong> with no branding or obvious markings<\/li>\n\n\n\n<li> <strong>Multiple carrier options<\/strong>: UPS, USPS, FedEx, DHL<\/li>\n\n\n\n<li> <strong>International delivery<\/strong> to most countries<\/li>\n\n\n\n<li> <strong>Customer service<\/strong> ready to help with tracking or delivery questions<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Worldwide Delivery FAQs<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q: How fast is U.S. delivery?<\/strong><br>A: We deliver in just <strong>2\u20133 business days<\/strong> nationwide with USPS, UPS, or FedEx.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q: Do you ship internationally?<\/strong><br>A: Yes! We ship globally with <strong>DHL<\/strong>, <strong>FedEx<\/strong>, and <strong>USPS International<\/strong>, delivering in <strong>3\u20137 business days<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q: Is shipping discreet?<\/strong><br>A: Absolutely. All packaging is plain and <strong>odor-free<\/strong>, with <strong>no reference to cannabis or product names<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q: How do I track my order?<\/strong><br>A: You&#8217;ll receive a tracking number via email as soon as your order ships.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Order Now &amp; Enjoy Free, Fast, Secure Shipping<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No one wants to wait forever for their <strong>cannabis de primera calidad<\/strong> products. That\u2019s why <strong>ImperialExtractStore<\/strong> makes it simple with <strong>fast, secure, and free shipping<\/strong>, powered by the world\u2019s best delivery partners. Whether you&#8217;re ordering <strong><a href=\"https:\/\/imperialextractstore.com\/es\/producto\/imperial-710-live-rosin\/\">live rosin<\/a><\/strong>, <strong>disposables<\/strong>, or <strong><a href=\"https:\/\/imperialextractstore.com\/es\/\">THCA carts<\/a><\/strong>, you\u2019ll get it fast\u2014wherever you are.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At ImperialExtractStore, we understand the importance of efficiency in the Worldwide Delivery of premium cannabis products<a href=\"https:\/\/imperialextractstore.com\/es\/etiqueta-producto\/smoothie-bar-blend-smoothie-shop-blend-photo\/\" data-type=\"product_tag\" data-id=\"11505\">. <\/a>Our commitment to providing timely and secure shipping is unmatched, ensuring your orders arrive in pristine condition regardless of your location. With our trusted delivery partners, we maintain high standards of discretion and reliability, allowing you to focus on enjoying your products without concern. Choose ImperialExtractStore for a seamless shopping experience and exceptional service. Our diverse selection caters to all preferences, whether you\u2019re a seasoned connoisseur or new to cannabis. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We prioritize quality, sourcing only the finest products to ensure customer satisfaction. Regular promotions and discounts make it easier than ever to explore new offerings and stock up on favorites. Join our community of satisfied customers who appreciate both speed and quality in their cannabis shopping experience. Experience the convenience of our user-friendly website, designed to make your shopping journey effortless.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> Our dedicated customer service team is always ready to assist with any inquiries, ensuring you have all the information you need. We believe in transparency, providing detailed product descriptions and lab testing results for peace of mind. As we continue to grow, we remain committed to sustainability, implementing eco-friendly practices in our packaging and shipping processes. Discover the difference with ImperialExtractStore, where your satisfaction is our top priority.<\/p>","protected":false},"excerpt":{"rendered":"<p>Free &amp; Fast Shipping with Imperial Extracts Store: USA &amp; Worldwide Delivery in Days At Imperial Extract Store, we believe [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11515,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"{\"document\":\"AADBE8vzitUOhAqGy9fSDcvzitUOAsbL19INAMvzitUOAcbL19INAIvzitUOxsvX0g0Dy\/OK1Q4MhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INy\/OK1Q4BhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g3L84rVDgGGy9fSDcvzitUOAYbL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDcvzitUOBYbL19INy\/OK1Q4DhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDcvzitUOB4bL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g3L84rVDgWGy9fSDYvzitUOhsvX0g3L84rVDgGGy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDcvzitUOAYbL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g3L84rVDgGGy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g3L84rVDgGGy9fSDcvzitUOAYbL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INy\/OK1Q4DhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDcvzitUOA4bL19INy\/OK1Q4BhsvX0g2L84rVDobL19INy\/OK1Q4BhsvX0g3L84rVDgOGy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g3L84rVDgGGy9fSDYvzitUOhsvX0g2L84rVDobL19INy\/OK1Q4BhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDcvzitUOAYbL19INy\/OK1Q4DhsvX0g2L84rVDobL19INy\/OK1Q4BhsvX0g2L84rVDobL19INy\/OK1Q4BhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDcvzitUOAYbL19INy\/OK1Q4BhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDcvzitUOAYbL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g3L84rVDgGGy9fSDYvzitUOhsvX0g2L84rVDobL19INy\/OK1Q4BhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g3L84rVDgGGy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INy\/OK1Q4DhsvX0g3L84rVDgOGy9fSDcvzitUOB4bL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g3L84rVDgOGy9fSDcvzitUOA4bL19INi\/OK1Q6Gy9fSDcvzitUOAYbL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g3L84rVDgGGy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDcvzitUOAYbL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INy\/OK1Q4BhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDcvzitUOAYbL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDobL19INi\/OK1Q6Gy9fSDYvzitUOhsvX0g2L84rVDsbL19INHovzitUOxsvX0g0Fy\/OK1Q4AxsvX0g0Gy\/OK1Q4AhsvX0g3L84rVDgDGy9fSDQGL84rVDsbL19INDsvzitUOAMbL19INCsvzitUOAIbL19INi\/OK1Q7Gy9fSDQXL84rVDgDGy9fSDQOL84rVDsbL19INAMvzitUOAcbL19IND8vzitUOAMbL19INBIvzitUOxsvX0g0My\/OK1Q4AxsvX0g0By\/OK1Q4AhsvX0g3L84rVDgDGy9fSDQTL84rVDgDGy9fSDQnL84rVDgDGy9fSDQvL84rVDgDGy9fSDQbL84rVDgDGy9fSDQXL84rVDgHGy9fSDQOL84rVDsbL19INHYvzitUOhsvX0g3L84rVDgDGy9fSDQHL84rVDgCGy9fSDYvzitUOhsvX0g3L84rVDgPGy9fSDQDL84rVDgDGy9fSDQPL84rVDgDGy9fSDQXL84rVDgfGy9fSDQDL84rVDgHGy9fSDQKL84rVDsbL19INFcvzitUOAMbL19INCcvzitUOAcbL19INIsvzitUOEcbL19INBIvzitUOhsvX0g3L84rVDgHGy9fSDQvL84rVDgHGy9fSDTqxCggEAgSYywEEAwAIAwMEAgYDAAUAAwEGAgQDAQYDAQgCBAMABgIEAwIEAwwOAwMEAwsKAwQUAgoCBAMBBAgDAAQDBAQDBQoDAgiKAQEdhgECAQIKAkIBD0oAjAQBAgoCQgEQSgCCDwECCgJCARBKAJ4DAQIKAkIBD0oAggMBAgoCQgEQSgCqBQECCgEQSjICAQIKAkIBDkoAhAIBAgoCQgEOSgCyAQECCgJCAQ5KALYBAQIKAkIBDkrgBrgIAQIKAkIBEEoAggQBAgoCQgEPSgC0AQECCgEQSjICAQIKAkIBDkoArAMBAgoCQgEOSgCAAwECCgJCAQ5K4AeoCgECCgJCARBKAIAEAQIKAkIBD0oAvAIBAgoCQgEQSgCKCAECCgJCAQ9KALQBAQIKARBKMgIBAgoCQgEOSgCiAwECCgJCAQ5KAIwDAQIKAkIBDkriB7wKAQIKAkIBD0oAsgEBAgoCQgEQSgCABwECCgJCAQ9KALYCAQIKARBKMgIBAgoCQgEOSgCeAgECCgJCAQ5KALwCAQIKAkIBDkoAhAMBAgoCQgEOSgC0AgECCgJCAQ5KAKYCAQIKAkIBDkrsDoYSAQIKAkIBD0oAhAIBAgoCQgEQSgCUBQECCgJCARBKAKoHAQIKAkIBEEoAnAYBAgoCQgEQSgCqBAECCgJCAQ9KAJYCAQIKAkIBEEoAmA0BAgoCQgEQStbvArj2AuAHBgRC6O8CAqbvAgEA5O8CAqLvAtrvAlICvAQGjvACAuypAQYCCgQK5LYBAwEEorYB3LYBBAMAlrYB0rYBlrYB0rYBAwEHAAQKuLUBCgLwtQG0tQEC7LUBAwEUCIy1AQIIBOS0AQMABAMAorQBBgLYtAECnrQB2rQBAggFAAMBBAMCvLMB+LMBAwC2swHuswEDAqizAd6zAaCzAdqzAQgDAJKzAQTQswEDAI6zAQL0sgG2sgHwsgECsLIB7LIBsLIBAuqyAQMABAMABAMClrIB0LIBAwCQsgHMsgEDAgQDAbyxAfixAYqyAQLGsgEChrIBwrIBAoKyAfyxAQIEAwSwsQHosQGssQHosQEDA6CxAdqxAQQClrEB0LEBAwCQsQHKsQEDAYaxAcKxAQYDCgQDAAScsAEE2rABnLABDOKwAaiwAQIWAviwAQMAvrABCMCxAZSxAQbUsQEClrEB0rEBBQCMsQHIsQECCgMABAMGBQADAAaWsAHSsAEDBIywAcKwAQMDBAMAsq8B7K8BAwEEAwEEAwHSHAMA8ASGIQLQIQMAjiECyiGSIVICuA0GlgIDAIYBAwCsD\/AtAiwEAqa2AdS2AQoElrYBxrQBAwAGorQB0LQBmrQB2LQBoLQB2LQBCAQGDAMBurMB+LMBBAgCBgigswEC2rMBCgKUswHKswEkAwCusgEE6rIBAgYDAAUBlLIBzrIBAwCQsgHMsgEDAAQGAgS6sQH4sQGIsgHEsgGIsgHGsgEDAISyAcCyAQwFAa6xAeaxAQaQTs5OAwAEnrEB2rEBBAIEkrEB0LEBAwCOsQECyLEBAoixAcKxAQYCBAMEBAYDAAScsAEC2LABApqwAQwDABr4sAG6sAH2sAEChLEB\/rABoFcC4FeAsQECBBDQsQGUsQECzrEBBgMADgQCBggEBgIGApSwAdKwAQQDAASKsAECwrABAwEFAQYCBQECBAMCkq8BAwIKBAIK0p4BAwC4mQEGAs6bAQMA7BoDALLeAgLaBszjAQEBCAKUDdYNARBIAIIdAQEIAkIBEEjIPogLArcDCgYAnMsBBgIKBAoBAwgBAgIABAEGBgoCAAQCAQQDAAgEAQQKBgIBAAgBCwYBAQIBAwIAAgECBQABAQMAAAIBAAIABAIBCQQBAQQBBwIAEgIBAAIBAAIBBwYABAEEAgEBAgEBBAECAgEQBQAAAgwABgIWAgEBCggAFAYBAAQBAQIBEQQBBQYBBwIBCsC7AQQCBgwKBJa2Aca0AQMABqK0AQjYtAECBQAIBAYMAwC2swH0swECBAgCBqazAd6zAQYCCgKUswHKswEkrrIB6rIBrrIB6LIBAwAGAwAFAZSyAc6yAQMEBAYCvLEB+LEBAoiyAQLGsgEDAISyAcKyAQQMBQGusQHmsQEGAAMBoLEB3LEBBQAClLEB0LEBAwGOsQHMsQEGAgQCBgIEAwQEBgMABAKcsAHYsAGasAHYsAECprABAuCwAbqwAfiwAQQChLEB\/rABAQCAsQEDAAQQ0LEBlLEB0rEBBo6xAcaxAQIOBAIGCAQGAgaSsAHQsAECBAMABIqwAcSwAQQDAQUBBgIFAQIEAwGSrwEDAwoEAgrSngEDAOgaprQB5LQBmBkDAOwaAwCIVIgLAu4HKAMnAAEAhACBACcABACBAIQBgQCEAIEAhACBAIQAgQCEAIEAhACBAoQAgQCEAIEDhAGBAIQAgQCEAIEAhACBAIQBgQCEAIEAhAOBAoQBgQCEAIEAhAOBAIQBgQCEBIEAhACBAIQCgQCEAYEAhACBAYQAgQCEAIEAhACBAIQAgQCEAYEAhACBAIQEgQCEAIEChACBAYQAgQCEAIEAhAWBAIQCgQCEACcAKAYnACghJwAHACgDJwEEACgRJwCHACgDJwEEACgSJwCHACgDJwEEACgSJwCHACgDJwEEACgRJwCHACgDJwEEACgSJwCHACgDJwAoEicABwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoEicAhwAoAycBBAAoEScAhwAoAycAKBInAAcAKAMnAQQAKBAnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBInAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBInAIcAKAMnAQQAKBEnAIcAKAMnACgSJwAHACgDJwEEACgQJwCHACgDJwEEACgQJwCHACgDJwEEACgQJwCHACgDJwEEACgRJwCHACgDJwEEACgSJwCHACgDJwEEACgRJwCHACgDJwAoEicABwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoEScAhwAoAycBBAAoEicAhwAoAycBBAAoEicAhwAoAycBBAAoEicAhwAoAycBBAAoEicAhwAoAycBBAAoEScAhwAoAycBBAAoEicAhwAoAycBBAAoEicAIQFEAMQAwQAhAKgCKACoASgCqAEoAKgCpwAEAKgBxAXBAMQCwQHEAMEAxADBAMQAwQHEAMEAxAHBAMQAwQDEAMECxADBAcQDwQDEBsEAxADBAMQEwQHEAsEAxAHBAMQAwQDEBMEAxATBAMQCwQDEAMEAxAHBAMQBwQDEA8EBxAPBAMQBwQDEA8EAxADBAMQAwQDEAsEAxALBAMQAwQDEAcEAxAHBAMQDwQDEAMEAxADBAMQAwQDEAMEAxADBAMQCwQHEA8EAxAjBAMQCwQDEAsEAxAbBAMQAwQDEB8EBxAPBAMQBwQHEAsEAxAHBAMQAwQDEA8EAxAPBAMQAwQDEAMEAxAHBAMQEwQDEAsEAxAXBAMQBwQDEAMEAxAHBAMQBwQDEBqgOpwAEAIQGqAHEyAGoAYcAKAInAQQAhAAoEicAhwAoAicBBAAoEicAxPmBAsj1AXN0YXRldmVyc2lvbmRvY3VtZW50ZGF0ZWRvY3VtZW50c2x1Z2RvY3VtZW50c3RhdHVzZG9jdW1lbnR0aXRsZW9kb2N1bWVudGNvbnRlbnQ8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6MX0gLS0+CjxoMSBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5GcmVlICZhbXA7IEZhc3QgU2hpcHBpbmcgd2l0aCBJbXBlcmlhbCBFeHRyYWN0cyBTdG9yZTogVVNBICZhbXA7IFdvcmxkd2lkZSBEZWxpdmVyeSBpbiBEYXlzPC9zdHJvbmc+PC9oMT4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5BdCA8c3Ryb25nPkltcGVyaWFsIEV4dHJhY3QgU3RvcmU8L3N0cm9uZz4sIHdlIGJlbGlldmUgdGhhdCBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzIHNob3VsZCBjb21lIHdpdGggcHJlbWl1bSBzZXJ2aWNl4oCUc3RhcnRpbmcgd2l0aCA8c3Ryb25nPmZyZWUgYW5kIGZhc3Qgc2hpcHBpbmc8L3N0cm9uZz4geW91IGNhbiBjb3VudCBvbjxhIGhyZWY9Imh0dHA6Ly92aXBlc3NlbnRpYWx6LmNvbSI+LiA8L2E+V2hldGhlciB5b3UncmUgb3JkZXJpbmcgZnJvbSBOZXcgWW9yayBvciBOZXcgWmVhbGFuZCwgd2Ugb2ZmZXIgcmVsaWFibGUsIGRpc2NyZWV0LCBhbmQgc3dpZnQgZGVsaXZlcnkgdXNpbmcgdHJ1c3RlZCBjYXJyaWVycyBsaWtlIDxzdHJvbmc+VVBTPC9zdHJvbmc+LCA8c3Ryb25nPlVTUFM8L3N0cm9uZz4sIDxzdHJvbmc+RmVkRXg8L3N0cm9uZz4sIGFuZCA8c3Ryb25nPkRITDwvc3Ryb25nPi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5IZXJl4oCZcyBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIGtub3cgYWJvdXQgaG93IHdlIGRlbGl2ZXIgZXhjZWxsZW5jZSB0byB5b3VyIGRvb3JzdGVwLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+RmFzdCAmYW1wOyBGcmVlIFNoaXBwaW5nIFdpdGhpbiB0aGUgVVNBOiBKdXN0IDLigJMzIERheXM8L3N0cm9uZz48L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPldlIHNoaXAgYWNyb3NzIGFsbCA1MCBzdGF0ZXMgd2l0aCA8c3Ryb25nPjLigJMzIGRheSBkZWxpdmVyeTwvc3Ryb25nPiwgbWFraW5nIGl0IHF1aWNrIGFuZCBjb252ZW5pZW50IHRvIGdldCB5b3VyIGZhdm9yaXRlIHByb2R1Y3RzIGxpa2U6IFdvcmxkd2lkZSBEZWxpdmVyeTwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpsaXN0IC0tPgo8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5JbXBlcmlhbCA3MTAgRGlzcG9zYWJsZXM8L3N0cm9uZz48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+VEhDQSBMaXZlIFJvc2luPC9zdHJvbmc+PC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPkxpdmUgUmVzaW4gQmFkZGVyPC9zdHJvbmc+PC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPldheCwgQ2FydHMgJmFtcDsgUHJlcm9sbHMgYW5kIG1vcmU8L3N0cm9uZz48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5CZXN0IG9mIGFsbD8gPHN0cm9uZz5TaGlwcGluZyBpcyAxMDAlIGZyZWU8L3N0cm9uZz4gb24gZXZlcnkgZG9tZXN0aWMgb3JkZXLigJRubyBtaW5pbXVtcywgbm8gc3VycHJpc2VzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPlUuUy4gU2hpcHBpbmcgQ2FycmllcnMgV2UgVHJ1c3Q6PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+VVBTPC9zdHJvbmc+IOKAkyBGYXN0IGdyb3VuZCBhbmQgZXhwcmVzcyBvcHRpb25zIGZvciByZXNpZGVudGlhbCBhbmQgYnVzaW5lc3MgYWRkcmVzc2VzPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPlVTUFM8L3N0cm9uZz4g4oCTIFJlbGlhYmxlIHdvcmxkd2lkZSBzaGlwcGluZywgaW5jbHVkaW5nIFBPIEJveGVzPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPkZlZEV4PC9zdHJvbmc+IOKAkyBTZWN1cmUgYW5kIHNwZWVkeSBkZWxpdmVyeSB3aXRoIHJlYWwtdGltZSB0cmFja2luZzwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkFsbCBwYWNrYWdlcyBhcmUgZGlzY3JlZXRseSBwYWNrYWdlZCB3aXRoIDxzdHJvbmc+dHJhY2tpbmcgaW5mbyBzZW50IHN0cmFpZ2h0IHRvIHlvdXIgaW5ib3g8L3N0cm9uZz4uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5Xb3JsZHdpZGUgRGVsaXZlcnk6IDPigJM3IERheXMgSW50ZXJuYXRpb25hbCBTaGlwcGluZzwvc3Ryb25nPjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+V2UgZG9u4oCZdCBzdG9wIGF0IHRoZSBib3JkZXIuIFdoZXRoZXIgeW91J3JlIGluIDxzdHJvbmc+Q2FuYWRhLCB0aGUgVUssIEF1c3RyYWxpYSwgR2VybWFueSwgb3IgYmV5b25kPC9zdHJvbmc+LCA8c3Ryb25nPkltcGVyaWFsRXh0cmFjdFN0b3JlPC9zdHJvbmc+IHByb3VkbHkgb2ZmZXJzIDxzdHJvbmc+d29ybGR3aWRlIHNoaXBwaW5nPC9zdHJvbmc+IHdpdGggbWFqb3IgaW50ZXJuYXRpb25hbCBjYXJyaWVyczo8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5JbnRlcm5hdGlvbmFsIFNoaXBwaW5nIFBhcnRuZXJzOjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPkRITCBFeHByZXNzPC9zdHJvbmc+IOKAkyBMaWdodG5pbmctZmFzdCBnbG9iYWwgZGVsaXZlcnkgKDPigJM1IGRheXMgaW4gbW9zdCByZWdpb25zKTwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5GZWRFeCBJbnRlcm5hdGlvbmFsPC9zdHJvbmc+IOKAkyBTZWN1cmUgaW50ZXJuYXRpb25hbCBwcmlvcml0eSBzaGlwcGluZzwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5VU1BTIEludGVybmF0aW9uYWw8L3N0cm9uZz4g4oCTIEFmZm9yZGFibGUgZ2xvYmFsIHNlcnZpY2UgZm9yIHNtYWxsZXIgcGFja2FnZXM8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5DdXN0b21zLUZyaWVuZGx5ICZhbXA7IERpc2NyZWV0PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5XZSBjYXJlZnVsbHkgcHJlcGFyZSBpbnRlcm5hdGlvbmFsIHNoaXBtZW50cyB3aXRoIDxzdHJvbmc+Y3VzdG9tcy1mcmllbmRseSBwYWNrYWdpbmc8L3N0cm9uZz4gdG8gZW5zdXJlIHNhZmUgZGVsaXZlcnkuIEV2ZXJ5IG9yZGVyIGluY2x1ZGVzIDxzdHJvbmc+dHJhY2tpbmcgZGV0YWlsczwvc3Ryb25nPiBmb3IgZnVsbCBwZWFjZSBvZiBtaW5kLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+V2h5IENob29zZSBJbXBlcmlhbCBFeHRyYWN0cyBTdG9yZSBmb3IgU2hpcHBpbmc\/PC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPiA8c3Ryb25nPkZyZWUgc2hpcHBpbmc8L3N0cm9uZz4gb24gYWxsIGRvbWVzdGljIG9yZGVyczwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+IDxzdHJvbmc+RmFzdCB0dXJuYXJvdW5kPC9zdHJvbmc+ICgy4oCTMyBkYXlzIFUuUy4sIDPigJM3IGRheXMgd29ybGR3aWRlKTwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+IDxzdHJvbmc+RGlzY3JlZXQgcGFja2FnaW5nPC9zdHJvbmc+IHdpdGggbm8gYnJhbmRpbmcgb3Igb2J2aW91cyBtYXJraW5nczwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+IDxzdHJvbmc+TXVsdGlwbGUgY2FycmllciBvcHRpb25zPC9zdHJvbmc+OiBVUFMsIFVTUFMsIEZlZEV4LCBESEw8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPiA8c3Ryb25nPkludGVybmF0aW9uYWwgZGVsaXZlcnk8L3N0cm9uZz4gdG8gbW9zdCBjb3VudHJpZXM8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPiA8c3Ryb25nPkN1c3RvbWVyIHNlcnZpY2U8L3N0cm9uZz4gcmVhZHkgdG8gaGVscCB3aXRoIHRyYWNraW5nIG9yIGRlbGl2ZXJ5IHF1ZXN0aW9uczwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+V29ybGR3aWRlIERlbGl2ZXJ5IEZBUXM8L3N0cm9uZz48L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPjxzdHJvbmc+UTogSG93IGZhc3QgaXMgVS5TLiBkZWxpdmVyeT88L3N0cm9uZz48YnI+QTogV2UgZGVsaXZlciBpbiBqdXN0IDxzdHJvbmc+MuKAkzMgYnVzaW5lc3MgZGF5czwvc3Ryb25nPiBuYXRpb253aWRlIHdpdGggVVNQUywgVVBTLCBvciBGZWRFeC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPlE6IERvIHlvdSBzaGlwIGludGVybmF0aW9uYWxseT88L3N0cm9uZz48YnI+QTogWWVzISBXZSBzaGlwIGdsb2JhbGx5IHdpdGggPHN0cm9uZz5ESEw8L3N0cm9uZz4sIDxzdHJvbmc+RmVkRXg8L3N0cm9uZz4sIGFuZCA8c3Ryb25nPlVTUFMgSW50ZXJuYXRpb25hbDwvc3Ryb25nPiwgZGVsaXZlcmluZyBpbiA8c3Ryb25nPjPigJM3IGJ1c2luZXNzIGRheXM8L3N0cm9uZz4uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+PHN0cm9uZz5ROiBJcyBzaGlwcGluZyBkaXNjcmVldD88L3N0cm9uZz48YnI+QTogQWJzb2x1dGVseS4gQWxsIHBhY2thZ2luZyBpcyBwbGFpbiBhbmQgPHN0cm9uZz5vZG9yLWZyZWU8L3N0cm9uZz4sIHdpdGggPHN0cm9uZz5ubyByZWZlcmVuY2UgdG8gY2FubmFiaXMgb3IgcHJvZHVjdCBuYW1lczwvc3Ryb25nPi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPlE6IEhvdyBkbyBJIHRyYWNrIG15IG9yZGVyPzwvc3Ryb25nPjxicj5BOiBZb3UnbGwgcmVjZWl2ZSBhIHRyYWNraW5nIG51bWJlciB2aWEgZW1haWwgYXMgc29vbiBhcyB5b3VyIG9yZGVyIHNoaXBzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPk9yZGVyIE5vdyAmYW1wOyBFbmpveSBGcmVlLCBGYXN0LCBTZWN1cmUgU2hpcHBpbmc8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPk5vIG9uZSB3YW50cyB0byB3YWl0IGZvcmV2ZXIgZm9yIHRoZWlyIDxzdHJvbmc+cHJlbWl1bSBjYW5uYWJpczwvc3Ryb25nPiBwcm9kdWN0cy4gVGhhdOKAmXMgd2h5IDxzdHJvbmc+SW1wZXJpYWxFeHRyYWN0U3RvcmU8L3N0cm9uZz4gbWFrZXMgaXQgc2ltcGxlIHdpdGggPHN0cm9uZz5mYXN0LCBzZWN1cmUsIGFuZCBmcmVlIHNoaXBwaW5nPC9zdHJvbmc+LCBwb3dlcmVkIGJ5IHRoZSB3b3JsZOKAmXMgYmVzdCBkZWxpdmVyeSBwYXJ0bmVycy4gV2hldGhlciB5b3UncmUgb3JkZXJpbmcgPHN0cm9uZz5saXZlIHJvc2luPC9zdHJvbmc+LCA8c3Ryb25nPmRpc3Bvc2FibGVzPC9zdHJvbmc+LCBvciA8c3Ryb25nPlRIQ0EgY2FydHM8L3N0cm9uZz4sIHlvdeKAmWxsIGdldCBpdCBmYXN04oCUd2hlcmV2ZXIgeW91IGFyZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD50clNvIHd0IHRzcyByaHBzaWVyaWFyYXR0b3JlY29lcmlhbHRhY3R0b2VvIG4geHBlcmllbmNlIG5lbCBzZXJ2aWNlICBlb3QgdG8geW91ciBvb3IuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHN0aWNreWRvY3VtZW50dGVtcGxhdGVkb2N1bWVudGZvcm1hdGRvY3VtZW50bWV0YV91YWdfY3VzdG9tX3BhZ2VfbGV2ZWxfY3NzX21vbnN0ZXJpbnNpZ2h0c19za2lwX3RyYWNraW5nX21vbnN0ZXJpbnNpZ2h0c19zaXRlbm90ZV9hY3RpdmVfbW9uc3Rlcmluc2lnaHRzX3NpdGVub3RlX25vdGVfbW9uc3Rlcmluc2lnaHRzX3NpdGVub3RlX2NhdGVnb3J5c2l0ZS1zaWRlYmFyLWxheW91dHNpdGUtY29udGVudC1sYXlvdXRhc3Qtc2l0ZS1jb250ZW50LWxheW91dHNpdGUtY29udGVudC1zdHlsZXNpdGUtc2lkZWJhci1zdHlsZWFzdC1nbG9iYWwtaGVhZGVyLWRpc3BsYXlhc3QtYmFubmVyLXRpdGxlLXZpc2liaWxpdHlhc3QtbWFpbi1oZWFkZXItZGlzcGxheWFzdC1oZmItYWJvdmUtaGVhZGVyLWRpc3BsYXlhc3QtaGZiLWJlbG93LWhlYWRlci1kaXNwbGF5YXN0LWhmYi1tb2JpbGUtaGVhZGVyLWRpc3BsYXlzaXRlLXBvc3QtdGl0bGVhc3QtYnJlYWRjcnVtYnMtY29udGVudGFzdC1mZWF0dXJlZC1pbWdmb290ZXItc21sLWxheW91dGFzdC1kaXNhYmxlLXJlbGF0ZWQtcG9zdHN0aGVtZS10cmFuc3BhcmVudC1oZWFkZXItbWV0YWFkdi1oZWFkZXItaWQtbWV0YXN0aWNrLWhlYWRlci1tZXRhaGVhZGVyLWFib3ZlLXN0aWNrLW1ldGFoZWFkZXItbWFpbi1zdGljay1tZXRhaGVhZGVyLWJlbG93LXN0aWNrLW1ldGFhc3RyYS1taWdyYXRlLW1ldGEtbGF5b3V0c2FzdC1wYWdlLWJhY2tncm91bmQtZW5hYmxlZGFzdC1wYWdlLWJhY2tncm91bmQtbWV0YWFzdC1jb250ZW50LWJhY2tncm91bmQtbWV0YWZvb3Rub3Rlc2RvY3VtZW50Y2F0ZWdvcmllc2RvY3VtZW50dGFnc2RvY3VtZW50YmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5GcmVlICZhbXA7IEZhc3QgU2hpcHBpbmcgd2l0aCBJbXBlcmlhbCBFeHRyYWN0cyBTdG9yZTogVVNBICZhbXA7IFdvcmxkd2lkZSBEZWxpdmVyeSBpbiBEYXlzPC9zdHJvbmc+bGV2ZWxUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QXQgPHN0cm9uZz5JbXBlcmlhbCBFeHRyYWN0IFN0b3JlPC9zdHJvbmc+LCB3ZSBiZWxpZXZlIHRoYXQgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cyBzaG91bGQgY29tZSB3aXRoIHByZW1pdW0gc2VydmljZeKAlHN0YXJ0aW5nIHdpdGggPHN0cm9uZz5mcmVlIGFuZCBmYXN0IHNoaXBwaW5nPC9zdHJvbmc+IHlvdSBjYW4gY291bnQgb248YSBocmVmPSJodHRwOi8vdmlwZXNzZW50aWFsei5jb20iPi4gPC9hPldoZXRoZXIgeW91J3JlIG9yZGVyaW5nIGZyb20gTmV3IFlvcmsgb3IgTmV3IFplYWxhbmQsIHdlIG9mZmVyIHJlbGlhYmxlLCBkaXNjcmVldCwgYW5kIHN3aWZ0IGRlbGl2ZXJ5IHVzaW5nIHRydXN0ZWQgY2FycmllcnMgbGlrZSA8c3Ryb25nPlVQUzwvc3Ryb25nPiwgPHN0cm9uZz5VU1BTPC9zdHJvbmc+LCA8c3Ryb25nPkZlZEV4PC9zdHJvbmc+LCBhbmQgPHN0cm9uZz5ESEw8L3N0cm9uZz4uZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEhlcmXigJlzIGV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8ga25vdyBhYm91dCBob3cgd2UgZGVsaXZlciBleGNlbGxlbmNlIHRvIHlvdXIgZG9vcnN0ZXAuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+RmFzdCAmYW1wOyBGcmVlIFNoaXBwaW5nIFdpdGhpbiB0aGUgVVNBOiBKdXN0IDLigJMzIERheXM8L3N0cm9uZz5sZXZlbFRycENvbnRlbnRSZXN0cmljdGlvblVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRXZSBzaGlwIGFjcm9zcyBhbGwgNTAgc3RhdGVzIHdpdGggPHN0cm9uZz4y4oCTMyBkYXkgZGVsaXZlcnk8L3N0cm9uZz4sIG1ha2luZyBpdCBxdWljayBhbmQgY29udmVuaWVudCB0byBnZXQgeW91ciBmYXZvcml0ZSBwcm9kdWN0cyBsaWtlOiBXb3JsZHdpZGUgRGVsaXZlcnlkcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+SW1wZXJpYWwgNzEwIERpc3Bvc2FibGVzPC9zdHJvbmc+VHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VEhDQSBMaXZlIFJvc2luPC9zdHJvbmc+VHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+TGl2ZSBSZXNpbiBCYWRkZXI8L3N0cm9uZz5UcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5XYXgsIENhcnRzICZhbXA7IFByZXJvbGxzIGFuZCBtb3JlPC9zdHJvbmc+VHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEJlc3Qgb2YgYWxsPyA8c3Ryb25nPlNoaXBwaW5nIGlzIDEwMCUgZnJlZTwvc3Ryb25nPiBvbiBldmVyeSBkb21lc3RpYyBvcmRlcuKAlG5vIG1pbmltdW1zLCBubyBzdXJwcmlzZXMuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFUuUy4gU2hpcHBpbmcgQ2FycmllcnMgV2UgVHJ1c3Q6bGV2ZWxUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VVBTPC9zdHJvbmc+IOKAkyBGYXN0IGdyb3VuZCBhbmQgZXhwcmVzcyBvcHRpb25zIGZvciByZXNpZGVudGlhbCBhbmQgYnVzaW5lc3MgYWRkcmVzc2VzVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VVNQUzwvc3Ryb25nPiDigJMgUmVsaWFibGUgd29ybGR3aWRlIHNoaXBwaW5nLCBpbmNsdWRpbmcgUE8gQm94ZXNUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5GZWRFeDwvc3Ryb25nPiDigJMgU2VjdXJlIGFuZCBzcGVlZHkgZGVsaXZlcnkgd2l0aCByZWFsLXRpbWUgdHJhY2tpbmdUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QWxsIHBhY2thZ2VzIGFyZSBkaXNjcmVldGx5IHBhY2thZ2VkIHdpdGggPHN0cm9uZz50cmFja2luZyBpbmZvIHNlbnQgc3RyYWlnaHQgdG8geW91ciBpbmJveDwvc3Ryb25nPi5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5Xb3JsZHdpZGUgRGVsaXZlcnk6IDPigJM3IERheXMgSW50ZXJuYXRpb25hbCBTaGlwcGluZzwvc3Ryb25nPmxldmVsVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFdlIGRvbuKAmXQgc3RvcCBhdCB0aGUgYm9yZGVyLiBXaGV0aGVyIHlvdSdyZSBpbiA8c3Ryb25nPkNhbmFkYSwgdGhlIFVLLCBBdXN0cmFsaWEsIEdlcm1hbnksIG9yIGJleW9uZDwvc3Ryb25nPiwgPHN0cm9uZz5JbXBlcmlhbEV4dHJhY3RTdG9yZTwvc3Ryb25nPiBwcm91ZGx5IG9mZmVycyA8c3Ryb25nPndvcmxkd2lkZSBzaGlwcGluZzwvc3Ryb25nPiB3aXRoIG1ham9yIGludGVybmF0aW9uYWwgY2FycmllcnM6ZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEludGVybmF0aW9uYWwgU2hpcHBpbmcgUGFydG5lcnM6bGV2ZWxUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+REhMIEV4cHJlc3M8L3N0cm9uZz4g4oCTIExpZ2h0bmluZy1mYXN0IGdsb2JhbCBkZWxpdmVyeSAoM+KAkzUgZGF5cyBpbiBtb3N0IHJlZ2lvbnMpVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+RmVkRXggSW50ZXJuYXRpb25hbDwvc3Ryb25nPiDigJMgU2VjdXJlIGludGVybmF0aW9uYWwgcHJpb3JpdHkgc2hpcHBpbmdUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5VU1BTIEludGVybmF0aW9uYWw8L3N0cm9uZz4g4oCTIEFmZm9yZGFibGUgZ2xvYmFsIHNlcnZpY2UgZm9yIHNtYWxsZXIgcGFja2FnZXNUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50Q3VzdG9tcy1GcmllbmRseSAmYW1wOyBEaXNjcmVldGxldmVsVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFdlIGNhcmVmdWxseSBwcmVwYXJlIGludGVybmF0aW9uYWwgc2hpcG1lbnRzIHdpdGggPHN0cm9uZz5jdXN0b21zLWZyaWVuZGx5IHBhY2thZ2luZzwvc3Ryb25nPiB0byBlbnN1cmUgc2FmZSBkZWxpdmVyeS4gRXZlcnkgb3JkZXIgaW5jbHVkZXMgPHN0cm9uZz50cmFja2luZyBkZXRhaWxzPC9zdHJvbmc+IGZvciBmdWxsIHBlYWNlIG9mIG1pbmQuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+V2h5IENob29zZSBJbXBlcmlhbCBFeHRyYWN0cyBTdG9yZSBmb3IgU2hpcHBpbmc\/PC9zdHJvbmc+bGV2ZWxUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudCA8c3Ryb25nPkZyZWUgc2hpcHBpbmc8L3N0cm9uZz4gb24gYWxsIGRvbWVzdGljIG9yZGVyc1RycENvbnRlbnRSZXN0cmljdGlvblVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQgPHN0cm9uZz5GYXN0IHR1cm5hcm91bmQ8L3N0cm9uZz4gKDLigJMzIGRheXMgVS5TLiwgM+KAkzcgZGF5cyB3b3JsZHdpZGUpVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudCA8c3Ryb25nPkRpc2NyZWV0IHBhY2thZ2luZzwvc3Ryb25nPiB3aXRoIG5vIGJyYW5kaW5nIG9yIG9idmlvdXMgbWFya2luZ3NUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50IDxzdHJvbmc+TXVsdGlwbGUgY2FycmllciBvcHRpb25zPC9zdHJvbmc+OiBVUFMsIFVTUFMsIEZlZEV4LCBESExUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50IDxzdHJvbmc+SW50ZXJuYXRpb25hbCBkZWxpdmVyeTwvc3Ryb25nPiB0byBtb3N0IGNvdW50cmllc1RycENvbnRlbnRSZXN0cmljdGlvblVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQgPHN0cm9uZz5DdXN0b21lciBzZXJ2aWNlPC9zdHJvbmc+IHJlYWR5IHRvIGhlbHAgd2l0aCB0cmFja2luZyBvciBkZWxpdmVyeSBxdWVzdGlvbnNUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5Xb3JsZHdpZGUgRGVsaXZlcnkgRkFRczwvc3Ryb25nPmxldmVsVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+UTogSG93IGZhc3QgaXMgVS5TLiBkZWxpdmVyeT88L3N0cm9uZz48YnI+QTogV2UgZGVsaXZlciBpbiBqdXN0IDxzdHJvbmc+MuKAkzMgYnVzaW5lc3MgZGF5czwvc3Ryb25nPiBuYXRpb253aWRlIHdpdGggVVNQUywgVVBTLCBvciBGZWRFeC5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5ROiBEbyB5b3Ugc2hpcCBpbnRlcm5hdGlvbmFsbHk\/PC9zdHJvbmc+PGJyPkE6IFllcyEgV2Ugc2hpcCBnbG9iYWxseSB3aXRoIDxzdHJvbmc+REhMPC9zdHJvbmc+LCA8c3Ryb25nPkZlZEV4PC9zdHJvbmc+LCBhbmQgPHN0cm9uZz5VU1BTIEludGVybmF0aW9uYWw8L3N0cm9uZz4sIGRlbGl2ZXJpbmcgaW4gPHN0cm9uZz4z4oCTNyBidXNpbmVzcyBkYXlzPC9zdHJvbmc+LmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvblVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlE6IElzIHNoaXBwaW5nIGRpc2NyZWV0Pzwvc3Ryb25nPjxicj5BOiBBYnNvbHV0ZWx5LiBBbGwgcGFja2FnaW5nIGlzIHBsYWluIGFuZCA8c3Ryb25nPm9kb3ItZnJlZTwvc3Ryb25nPiwgd2l0aCA8c3Ryb25nPm5vIHJlZmVyZW5jZSB0byBjYW5uYWJpcyBvciBwcm9kdWN0IG5hbWVzPC9zdHJvbmc+LmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvblVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlE6IEhvdyBkbyBJIHRyYWNrIG15IG9yZGVyPzwvc3Ryb25nPjxicj5BOiBZb3UnbGwgcmVjZWl2ZSBhIHRyYWNraW5nIG51bWJlciB2aWEgZW1haWwgYXMgc29vbiBhcyB5b3VyIG9yZGVyIHNoaXBzLmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvblVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRPcmRlciBOb3cgJmFtcDsgRW5qb3kgRnJlZSwgRmFzdCwgU2VjdXJlIFNoaXBwaW5nbGV2ZWxUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50Tm8gb25lIHdhbnRzIHRvIHdhaXQgZm9yZXZlciBmb3IgdGhlaXIgPHN0cm9uZz5wcmVtaXVtIGNhbm5hYmlzPC9zdHJvbmc+IHByb2R1Y3RzLiBUaGF04oCZcyB3aHkgPHN0cm9uZz5JbXBlcmlhbEV4dHJhY3RTdG9yZTwvc3Ryb25nPiBtYWtlcyBpdCBzaW1wbGUgd2l0aCA8c3Ryb25nPmZhc3QsIHNlY3VyZSwgYW5kIGZyZWUgc2hpcHBpbmc8L3N0cm9uZz4sIHBvd2VyZWQgYnkgdGhlIHdvcmxk4oCZcyBiZXN0IGRlbGl2ZXJ5IHBhcnRuZXJzLiBXaGV0aGVyIHlvdSdyZSBvcmRlcmluZyA8c3Ryb25nPmxpdmUgcm9zaW48L3N0cm9uZz4sIDxzdHJvbmc+ZGlzcG9zYWJsZXM8L3N0cm9uZz4sIG9yIDxzdHJvbmc+VEhDQSBjYXJ0czwvc3Ryb25nPiwgeW914oCZbGwgZ2V0IGl0IGZhc3TigJR3aGVyZXZlciB5b3UgYXJlLmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvblVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlNob3Agbm93PC9zdHJvbmc+IGF0IDxhIGNsYXNzPSIiIGhyZWY9Imh0dHBzOi8vaW1wZXJpYWxleHRyYWN0c3RvcmUuY29tLyI+SW1wZXJpYWxFeHRyYWN0U3RvcmUuY29tPC9hPiBhbmQgZXhwZXJpZW5jZSBuZXh0LWxldmVsIHNlcnZpY2UsIGZyb20gY2hlY2tvdXQgdG8geW91ciBkb29yc3RlcC5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzc3RhdGVzYXZlZEF0c3RhdGVzYXZlZEJ5RWZmaWNpZW50IFdybGR3aWRlIERlbGl2ZXJ5IFNlcnZpY2Vzc3RhdGV2ZXJzaW9uY2xhc3NOYW1lZW5kcG9pbnRwYXJhbXNyZXBsYWNlQmxvY2tpc0FpR2VuZXJhdGVkQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHByaW9yaXRpemUgeW91ciBjb252ZW5pZW5jZSBieSBlbnN1cmluZyBwcm9tcHQgYW5kIHJlbGlhYmxlIGRlbGl2ZXJ5IG9mIG91ciBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgZ2xvYmFsIHNoaXBwaW5nIHNlcnZpY2VzIGFyZSBkZXNpZ25lZCB0byBtZWV0IHlvdXIgbmVlZHMsIHdpdGggYSBjb21taXRtZW50IHRvIGRpc2NyZXRpb24gYW5kIHNlY3VyaXR5IHRocm91Z2hvdXQgdGhlIGVudGlyZSBwcm9jZXNzLiBFdmVyeSBvcmRlciBpcyBjYXJlZnVsbHkgcGFja2FnZWQgdG8gbWFpbnRhaW4gY29uZmlkZW50aWFsaXR5LCBhbGxvd2luZyB5b3UgdG8gc2hvcCB3aXRoIHBlYWNlIG9mIG1pbmQuIEV4cGVyaWVuY2UgdW5wYXJhbGxlbGVkIHNlcnZpY2UgdG9kYXkgYnkgcGxhY2luZyB5b3VyIG9yZGVyIGFuZCBlbmpveWluZyB0aGUgYmVuZWZpdHMgb2Ygc3dpZnQsIHNlY3VyZSBkZWxpdmVyeSByaWdodCB0byB5b3VyIGRvb3IuQSBJbXBlaWFsRXh0cmFjdHRyZSxlIHJpb3JlIG8gZWllbmN5IGluZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmkgcHJvZHVjdC5PdSBnbGEgc2lwaW5nIGVyZXMgYXJlIHNpbmUgdG8gZSB5b3UgbmVkcywgd3QgaXRuIG8gZGlzY2V0aW9uIG5kIHJpeSB1Z291dCB0aCBuIHByZXNzIGVyIHIgcyBjZWwgcGNhZWQgbyBudGFpIG9uZmlkZW5pYWxpIGFsd2luZyBvdSB0byBzbyB3aXRoIHBhZSBpLkV1YXJlZHRheXkgYWluZyB5b3Ugb3JkZSBuIGVueWluZyB0IGVuZWl0cyBmIHN3aXQsIGVyZSBlbGllcnkgcmlnaEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlIHRoZSBjb252ZW5pZW5jZSBvZiBvdXIgdXNlci1mcmllbmRseSB3ZWJzaXRlLCBkZXNpZ25lZCB0byBtYWtlIHlvdXIgc2hvcHBpbmcgam91cm5leSBlZmZvcnRsZXNzLiBPdXIgZGVkaWNhdGVkIGN1c3RvbWVyIHNlcnZpY2UgdGVhbSBpcyBhbHdheXMgcmVhZHkgdG8gYXNzaXN0IHdpdGggYW55IGlucXVpcmllcywgZW5zdXJpbmcgeW91IGhhdmUgYWxsIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZC4gV2UgYmVsaWV2ZSBpbiB0cmFuc3BhcmVuY3ksIHByb3ZpZGluZyBkZXRhaWxlZCBwcm9kdWN0IGRlc2NyaXB0aW9ucyBhbmQgbGFiIHRlc3RpbmcgcmVzdWx0cyBmb3IgcGVhY2Ugb2YgbWluZC4gQXMgd2UgY29udGludWUgdG8gZ3Jvdywgd2UgcmVtYWluIGNvbW1pdHRlZCB0byBzdXN0YWluYWJpbGl0eSwgaW1wbGVtZW50aW5nIGVjby1mcmllbmRseSBwcmFjdGljZXMgaW4gb3VyIHBhY2thZ2luZyBhbmQgc2hpcHBpbmcgcHJvY2Vzc2VzLiBEaXNjb3ZlciB0aGUgZGlmZmVyZW5jZSB3aXRoIEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3aGVyZSB5b3VyIHNhdGlzZmFjdGlvbiBpcyBvdXIgdG9wIHByaW9yaXR5LnVuZGVzdGFuZCB0aGUgbXBhbmNmZmZjaWhjb21taXRtZW50IHRvIHByb3ZpZGluIHRpbWV5IG5kZWN1cmUgc2kgdW5tYXRjaGQsIGVuc3VuZyB5b3VyIG9yZHJyaXZpbiBwcml0Y29uZGlpbnJnYXJkbHNzb2YgbG9jYXRpby4gV2l0aCBvdXIgdHJ1c3QgZGVsaXZlcnkgcGFydG5lcmUgbWFuaW5oZ2ggc2FkYXJkc2ZlbGFiaWxpLGFsbG93aW5nIHlvdSAgZm9jcyBvbiBlbmpveWluIHlyIHByb2R1Y3N3aW91dGNvY2VuLiBDaG9vc0ltZWlhbEV4dHJhdFN0b3IgZm9yIGEgZWFtbGVzc2hvcHBpbmcgeHBlaWVuY2VhbmQgZXhjZXB0aW5hbCBzZXZpYy4gT3VkdmVyZXNlbGV0aW9uIGN0cnMgdG8gYXJlZmVyZW5lcywgd2hldGhlciB5b3XigJlyZSAgc2Fzb25lY29ubm9pc3NldXIgb3IgbmV3IGNuYWJpcy4gV2UgcHJpb3JpaXplIHF1bHR5LHNvdXJpbmcgbHkgdGhlIG5lc3QgcHJvdWN0cyB0byBzdXJlIGN1c29tZXIgc2F0c2ZjdGlvbi4gUmVndWFyIHByb21vdG9ucyBhbmQgZGlzY291bnNta2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHByZSBuZSBvZmZlcnNhbmQgc3RjayBwb24gZmF2b3JpZXMuIEppbm91ciBjb21tdW5pdHkgb2YgYXRpc2ZpZWQgY3VzdG1lcnNobyBhcHByZWNhZSBib3RzZWQgbmQgcXVhbGl0eSBpbiB0aGlyY2FubmFiaXMgc2hwcGluZ2V4cGVyZWNldGhlIGNvbnZlbmllbmNlIG9mIG9yIHVzZXItZnJpZWRseSB3ZWJzaXRlLCBkZXNpZ25lZCB0byBta2UgeW91IHNob3BwaW5nIGpvdXJueSBlZmZvcnRzcy4gT3VyIGVkaWNhdGVkY3V0b20gc2VyZW0gaXMgYWx3YXNyZWFkdG8gc3NzdCB3aXRoIGF5IGlucXVpcmllcywgZW5zdXJpbmhhdmUgYWxsIHRoZSBpbmZtYXRpb24geW91IG5lZS4gV2JlbGlldmUgaXRyYW5zcGFyYywgcHJvdmRpZGVhaWxkcHJvZHVjdCBkc2NyaXB0aW9zIGFuZCBsYWIgdHN0bmcgcmVzdWxmciBwZWFjZSBvbWluZC4gQSBlIGNvbnRudWUgbyBncm93dyBtYWluY29tbWl0dGQgdG8gc3VzdGFpbmFiaXR5LCBpbXBsbWVudGluZyBlY28tZmllbmRscGFjdGNlcyBpbiBvdXIgcGFja2FpbmcgYW5kIHNpcHBpbmcgcHJvY2Vzc2VzLiBEaXNjb3ZlciBoZWRpZmZlcmVuY2Ugd2loIEltcGVyaWFsRXh0cmFjdFN0cmUsd2hlcmUgc2F0aXNmYWN0aW4gaXMgdSB0b3AgcHJpb3JpdHk8YSBocmVmPSJodHRwczovL2ltcGVyaWFsZXh0cmFjdHN0b3JlY29tL3Byb2R1Y3QtdGFnL3Ntb290aGllLWJhci1ibGVuZC1zbW9vdGhpZS1zaG9wLWJsZW5kLXBob3RvLyJkYXRhLXR5cGU9InByb2R1Y3RfdGFnIiBkYXRhLWlkPSIxMTUwNSI+LiA8L2E+PGEgaHJlZj0iaHR0cHM6Ly9pbXBlcmlhbGV4dHJhY3RzdG9yZWNvbS9wcm9kdWN0LXRhZy9zbW9vdGhpZS1iYXItYmxlbmQtc21vb3RoaWUtc2hvcC1ibGVuZC1waG90by8iZGF0YS10eXBlPSJwcm9kdWN0X3RhZyIgZGF0YS1pZD0iMTE1MDUiPi4gPC9hPldvcmx3aWQgRGVXb3Jsd2lkIERlY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50V2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgdGhlIGNvbnZlbmllbmNlIG9mIG91ciB1c2VyLWZyaWVuZGx5IHdlYnNpdGUsIGRlc2lnbmVkIHRvIG1ha2UgeW91ciBzaG9wcGluZyBqb3VybmV5IGVmZm9ydGxlc3MuIE91ciBkZWRpY2F0ZWQgY3VzdG9tZXIgc2VydmljZSB0ZWFtIGlzIGFsd2F5cyByZWFkeSB0byBhc3Npc3Qgd2l0aCBhbnkgaW5xdWlyaWVzLCBlbnN1cmluZyB5b3UgaGF2ZSBhbGwgdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkLiBXZSBiZWxpZXZlIGluIHRyYW5zcGFyZW5jeSwgcHJvdmlkaW5nIGRldGFpbGVkIHByb2R1Y3QgZGVzY3JpcHRpb25zIGFuZCBsYWIgdGVzdGluZyByZXN1bHRzIGZvciBwZWFjZSBvZiBtaW5kLiBBcyB3ZSBjb250aW51ZSB0byBncm93LCB3ZSByZW1haW4gY29tbWl0dGVkIHRvIHN1c3RhaW5hYmlsaXR5LCBpbXBsZW1lbnRpbmcgZWNvLWZyaWVuZGx5IHByYWN0aWNlcyBpbiBvdXIgcGFja2FnaW5nIGFuZCBzaGlwcGluZyBwcm9jZXNzZXMuIERpc2NvdmVyIHRoZSBkaWZmZXJlbmNlIHdpdGggSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdoZXJlIHlvdXIgc2F0aXNmYWN0aW9uIGlzIG91ciB0b3AgcHJpb3JpdHkuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudCBPdXIgZGVkaWNhdGVkIGN1c3RvbWVyIHNlcnZpY2UgdGVhbSBpcyBhbHdheXMgcmVhZHkgdG8gYXNzaXN0IHdpdGggYW55IGlucXVpcmllcywgZW5zdXJpbmcgeW91IGhhdmUgYWxsIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZC4gV2UgYmVsaWV2ZSBpbiB0cmFuc3BhcmVuY3ksIHByb3ZpZGluZyBkZXRhaWxlZCBwcm9kdWN0IGRlc2NyaXB0aW9ucyBhbmQgbGFiIHRlc3RpbmcgcmVzdWx0cyBmb3IgcGVhY2Ugb2YgbWluZC4gQXMgd2UgY29udGludWUgdG8gZ3Jvdywgd2UgcmVtYWluIGNvbW1pdHRlZCB0byBzdXN0YWluYWJpbGl0eSwgaW1wbGVtZW50aW5nIGVjby1mcmllbmRseSBwcmFjdGljZXMgaW4gb3VyIHBhY2thZ2luZyBhbmQgc2hpcHBpbmcgcHJvY2Vzc2VzLiBEaXNjb3ZlciB0aGUgZGlmZmVyZW5jZSB3aXRoIEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3aGVyZSB5b3VyIHNhdGlzZmFjdGlvbiBpcyBvdXIgdG9wIHByaW9yaXR5LmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvblVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3M8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48L3A+CjwhLS0vd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPiAFBwgECAQIBggFAQgHrGVBLApBAwIEQQcFQQEcCAcIBggOCA4ICwgGSAEGCAQaHiAeIlMAF1IAGRsXXAAdDxcQERkdEhEXFhcaGxgbCQgKCAQIBggHDwQKB6wBBRUOSgALDAYXUAARUgALERMPCwgHDwQKB4YHBwsVDkoACwwGF1AAEVIACxETDwsIBw8ECgeUAQcLFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHhwEFFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHmgIHCxUOSgALDAYXUAARUgALERMPCwgHDwQKBwYVDkoACwwGF1AAEVIACxETDwsIBw8ECgcpFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHIBUOSgALDAYXUAARUgALERMPCwgHDwQKByIVDkoACwwGF1AAEVIACxETDwsIBw8ECgczFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHpgEHCxUOSgALDAYXUAARUgALERMPCwgHDwQKByAFFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHBhUOSgALDAYXUAARUgALERMPCwgHDwQKB50BFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHhwEVDkoACwwGF1AAEVIACxETDwsIBw8ECgeLARUOSgALDAYXUAARUgALERMPCwgHDwQKB6UBBwsVDkoACwwGF1AAEVIACxETDwsIBw8ECgeEAQUVDkoACwwGF1AAEVIACxETDwsIBw8ECgeqAwcLFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHIAUVDkoACwwGF1AAEVIACxETDwsIBw8ECgcGFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHmAEVDkoACwwGF1AAEVIACxETDwsIBw8ECgeNARUOSgALDAYXUAARUgALERMPCwgHDwQKB5QBFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHHwUVDkoACwwGF1AAEVIACxETDwsIBw8ECgeFAwcLFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHgQEFFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHBhUOSgALDAYXUAARUgALERMPCwgHDwQKBzYVDkoACwwGF1AAEVIACxETDwsIBw8ECgeFARUOSgALDAYXUAARUgALERMPCwgHDwQKB4kBFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHgQEVDkoACwwGF1AAEVIACxETDwsIBw8ECgc6FQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHlAEVDkoACwwGF1AAEVIACxETDwsIBw8ECgcoBRUOSgALDAYXUAARUgALERMPCwgHDwQKB48CBwsVDkoACwwGF1AAEVIACxETDwsIBw8ECgeaAwcLFQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHswIHCxUOSgALDAYXUAARUgALERMPCwgHDwQKB7oBBwsVDkoACwwGF1AAEVIACxETDwsIBw8ECgcxBRUOSgALDAYXUAARUgALERMPCwgHDwQKB5EGBwsVDkoACwwGF1AAEVIACxETDwsIBw8ECgexAgcLFQ5KAAsMBhdQABFSAAsREw8LBQcFBwsZBQcJCAYMDbgHAQUKAQMCQQBCAEECA0IAQQIKDwgBAkECAgEFQQEEAkEAAkEEA0ECBEEFBQYDQQQCQQACQRECQQFCAEEDQgABAkEGA0EHAkEAAkENAkEBBQECQQMCQQADQQQDAkECAgECQQACQQACQQKLAUEAI0EAtgeHDgQKAgMBQgABFgVCAAcBCAcLAQMGAQVBAQUCAwcQEQQBAgEEAQUBAgUBDQQMAggBAgNCAAgCAQgFBwUBCQMFCwYDBAEDAQQGAUcAEwIFEwEHCQYBA0QAB0gCAgsJD0EAHQUGAQYDAQkFAhENBAkBBQEDEAILRQABAhQLGgYPCAMBBAgCAwQBCQEEAwIJFBAOAwkIAQZCAAMBCQgLAggBCQcBBgQGQQAEBw8IDQUBAxAJGwINEwMGCgUBDSU+LiU+LgRDAARDAAgHBAoHqgadBwcLFQ5KAAsMBhdQABFSAAsREw8LCAcECgedBwcLFQ5KAAsMBhdQABFSAAsREw8LNgktFAEEAAABAAAAAQgAHwECAMEIAQIAsgFCAQEAQQACAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBCAEEAAgBBAAIAZkECAgECBEEAAgMBQgABAwECAQMBBAIDQgBBAwcCQQMFQQEFAgECQQICQQAEQcYHFUELlAJBBAJBAwNFAAJBAAMEAkEBAkECAgRBAAIBAkEBAkEAAkEBAkEFAkEJAkECAkERsgZBMAKXCgB9AXcTMjAyNS0wNS0yNFQxMzo1NDoxOHcSd29ybGR3aWRlLWRlbGl2ZXJ5dwdwdWJsaXNofQF9u7MBdwRvcGVudwRvcGVueXcAdwhzdGFuZGFyZHcAeXl3AH0AdwdkZWZhdWx0dwB3AHcHZGVmYXVsdHcHZGVmYXVsdHcAdwB3AHcAdwB3AHcAdwB3AHcAdwB3AHcAdwB3AHcAdwB3B2RlZmF1bHR3B2RlZmF1bHR2AwdkZXNrdG9wdgwQYmFja2dyb3VuZC1jb2xvcncZdmFyKC0tYXN0LWdsb2JhbC1jb2xvci00KRBiYWNrZ3JvdW5kLWltYWdldwARYmFja2dyb3VuZC1yZXBlYXR3BnJlcGVhdBNiYWNrZ3JvdW5kLXBvc2l0aW9udw1jZW50ZXIgY2VudGVyD2JhY2tncm91bmQtc2l6ZXcEYXV0bxViYWNrZ3JvdW5kLWF0dGFjaG1lbnR3BnNjcm9sbA9iYWNrZ3JvdW5kLXR5cGV3ABBiYWNrZ3JvdW5kLW1lZGlhdwAMb3ZlcmxheS10eXBldwANb3ZlcmxheS1jb2xvcncAD292ZXJsYXktb3BhY2l0eXcAEG92ZXJsYXktZ3JhZGllbnR3AAZ0YWJsZXR2DBBiYWNrZ3JvdW5kLWNvbG9ydwAQYmFja2dyb3VuZC1pbWFnZXcAEWJhY2tncm91bmQtcmVwZWF0dwZyZXBlYXQTYmFja2dyb3VuZC1wb3NpdGlvbncNY2VudGVyIGNlbnRlcg9iYWNrZ3JvdW5kLXNpemV3BGF1dG8VYmFja2dyb3VuZC1hdHRhY2htZW50dwZzY3JvbGwPYmFja2dyb3VuZC10eXBldwAQYmFja2dyb3VuZC1tZWRpYXcADG92ZXJsYXktdHlwZXcADW92ZXJsYXktY29sb3J3AA9vdmVybGF5LW9wYWNpdHl3ABBvdmVybGF5LWdyYWRpZW50dwAGbW9iaWxldgwQYmFja2dyb3VuZC1jb2xvcncAEGJhY2tncm91bmQtaW1hZ2V3ABFiYWNrZ3JvdW5kLXJlcGVhdHcGcmVwZWF0E2JhY2tncm91bmQtcG9zaXRpb253DWNlbnRlciBjZW50ZXIPYmFja2dyb3VuZC1zaXpldwRhdXRvFWJhY2tncm91bmQtYXR0YWNobWVudHcGc2Nyb2xsD2JhY2tncm91bmQtdHlwZXcAEGJhY2tncm91bmQtbWVkaWF3AAxvdmVybGF5LXR5cGV3AA1vdmVybGF5LWNvbG9ydwAPb3ZlcmxheS1vcGFjaXR5dwAQb3ZlcmxheS1ncmFkaWVudHcAdgMHZGVza3RvcHYMEGJhY2tncm91bmQtY29sb3J3GXZhcigtLWFzdC1nbG9iYWwtY29sb3ItNSkQYmFja2dyb3VuZC1pbWFnZXcAEWJhY2tncm91bmQtcmVwZWF0dwZyZXBlYXQTYmFja2dyb3VuZC1wb3NpdGlvbncNY2VudGVyIGNlbnRlcg9iYWNrZ3JvdW5kLXNpemV3BGF1dG8VYmFja2dyb3VuZC1hdHRhY2htZW50dwZzY3JvbGwPYmFja2dyb3VuZC10eXBldwAQYmFja2dyb3VuZC1tZWRpYXcADG92ZXJsYXktdHlwZXcADW92ZXJsYXktY29sb3J3AA9vdmVybGF5LW9wYWNpdHl3ABBvdmVybGF5LWdyYWRpZW50dwAGdGFibGV0dgwQYmFja2dyb3VuZC1jb2xvcncZdmFyKC0tYXN0LWdsb2JhbC1jb2xvci01KRBiYWNrZ3JvdW5kLWltYWdldwARYmFja2dyb3VuZC1yZXBlYXR3BnJlcGVhdBNiYWNrZ3JvdW5kLXBvc2l0aW9udw1jZW50ZXIgY2VudGVyD2JhY2tncm91bmQtc2l6ZXcEYXV0bxViYWNrZ3JvdW5kLWF0dGFjaG1lbnR3BnNjcm9sbA9iYWNrZ3JvdW5kLXR5cGV3ABBiYWNrZ3JvdW5kLW1lZGlhdwAMb3ZlcmxheS10eXBldwANb3ZlcmxheS1jb2xvcncAD292ZXJsYXktb3BhY2l0eXcAEG92ZXJsYXktZ3JhZGllbnR3AAZtb2JpbGV2DBBiYWNrZ3JvdW5kLWNvbG9ydxl2YXIoLS1hc3QtZ2xvYmFsLWNvbG9yLTUpEGJhY2tncm91bmQtaW1hZ2V3ABFiYWNrZ3JvdW5kLXJlcGVhdHcGcmVwZWF0E2JhY2tncm91bmQtcG9zaXRpb253DWNlbnRlciBjZW50ZXIPYmFja2dyb3VuZC1zaXpldwRhdXRvFWJhY2tncm91bmQtYXR0YWNobWVudHcGc2Nyb2xsD2JhY2tncm91bmQtdHlwZXcAEGJhY2tncm91bmQtbWVkaWF3AAxvdmVybGF5LXR5cGV3AA1vdmVybGF5LWNvbG9ydwAPb3ZlcmxheS1vcGFjaXR5dwAQb3ZlcmxheS1ncmFkaWVudHcAdwB1AX0BdQl9hlV9g1V9hVV9iFV9h1V9gFV9glV9hFV9gVV3JDE4NzliMTlkLTU2ZGItNDQxZS1iNmYwLTg3OTc4YTIzMGM1Znh3jgE8aDEgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+RnJlZSAmYW1wOyBGYXN0IFNoaXBwaW5nIHdpdGggSW1wZXJpYWwgRXh0cmFjdHMgU3RvcmU6IFVTQSAmYW1wOyBXb3JsZHdpZGUgRGVsaXZlcnkgaW4gRGF5czwvc3Ryb25nPjwvaDE+dwxjb3JlL2hlYWRpbmd9AXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckODZmNGNjZTYtMTUzYy00OWFhLWFjYmMtMzE3OWQ4NGFkZDlleHfPAzxwPkF0IDxzdHJvbmc+SW1wZXJpYWwgRXh0cmFjdCBTdG9yZTwvc3Ryb25nPiwgd2UgYmVsaWV2ZSB0aGF0IHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMgc2hvdWxkIGNvbWUgd2l0aCBwcmVtaXVtIHNlcnZpY2XigJRzdGFydGluZyB3aXRoIDxzdHJvbmc+ZnJlZSBhbmQgZmFzdCBzaGlwcGluZzwvc3Ryb25nPiB5b3UgY2FuIGNvdW50IG9uPGEgaHJlZj0iaHR0cDovL3ZpcGVzc2VudGlhbHouY29tIj4uIDwvYT5XaGV0aGVyIHlvdSdyZSBvcmRlcmluZyBmcm9tIE5ldyBZb3JrIG9yIE5ldyBaZWFsYW5kLCB3ZSBvZmZlciByZWxpYWJsZSwgZGlzY3JlZXQsIGFuZCBzd2lmdCBkZWxpdmVyeSB1c2luZyB0cnVzdGVkIGNhcnJpZXJzIGxpa2UgPHN0cm9uZz5VUFM8L3N0cm9uZz4sIDxzdHJvbmc+VVNQUzwvc3Ryb25nPiwgPHN0cm9uZz5GZWRFeDwvc3Ryb25nPiwgYW5kIDxzdHJvbmc+REhMPC9zdHJvbmc+LjwvcD53DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQzMWZlZWNmYS01YzQ3LTQ0MjYtYjlmOC1iOTk1ZjY3NTdlNzB4d108cD5IZXJl4oCZcyBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIGtub3cgYWJvdXQgaG93IHdlIGRlbGl2ZXIgZXhjZWxsZW5jZSB0byB5b3VyIGRvb3JzdGVwLjwvcD53DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ5YjAyMTc3ZS1mNTQ3LTQ4NzYtODIwMy1hZTgxZTcyYmZmYmR4d2s8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+RmFzdCAmYW1wOyBGcmVlIFNoaXBwaW5nIFdpdGhpbiB0aGUgVVNBOiBKdXN0IDLigJMzIERheXM8L3N0cm9uZz48L2gyPncMY29yZS9oZWFkaW5nfQJ2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGVhMzg3ZmE1LTQ2ZjQtNGZjOS04YmVmLThiMzVhOGE5ZWJmY3h3owE8cD5XZSBzaGlwIGFjcm9zcyBhbGwgNTAgc3RhdGVzIHdpdGggPHN0cm9uZz4y4oCTMyBkYXkgZGVsaXZlcnk8L3N0cm9uZz4sIG1ha2luZyBpdCBxdWljayBhbmQgY29udmVuaWVudCB0byBnZXQgeW91ciBmYXZvcml0ZSBwcm9kdWN0cyBsaWtlOiBXb3JsZHdpZGUgRGVsaXZlcnk8L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMTAyMWQ5YTQtNWI1Zi00MTM3LTkzMWQtYWNlMmM5ZTFhNmNheHclPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCgoKCgo8L3VsPncJY29yZS9saXN0eXcAdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ2YWVhODgxYy05NWYyLTQ3NmUtODZlYi05MjVjZjgyMWI4ZjJ4dzI8bGk+PHN0cm9uZz5JbXBlcmlhbCA3MTAgRGlzcG9zYWJsZXM8L3N0cm9uZz48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGZjOTlhZDZiLTc4MmMtNDFlMC1hYWNjLTA0MGI3MTlkOWRlNXh3KTxsaT48c3Ryb25nPlRIQ0EgTGl2ZSBSb3Npbjwvc3Ryb25nPjwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNmI5ZTM2MmQtYWQ5MS00YmE2LThmNWUtMmIxMTVlZTcwYzZleHcrPGxpPjxzdHJvbmc+TGl2ZSBSZXNpbiBCYWRkZXI8L3N0cm9uZz48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDQ0ZWRjMmJjLWVlYWYtNGI4OC04ZDY0LWM4MzhiNmVmMTNmZnh3PDxsaT48c3Ryb25nPldheCwgQ2FydHMgJmFtcDsgUHJlcm9sbHMgYW5kIG1vcmU8L3N0cm9uZz48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDBmMDFiZGJiLTEwYjYtNGZmZC04MDI4LTBmYzNiM2E0MTYzMnh3bzxwPkJlc3Qgb2YgYWxsPyA8c3Ryb25nPlNoaXBwaW5nIGlzIDEwMCUgZnJlZTwvc3Ryb25nPiBvbiBldmVyeSBkb21lc3RpYyBvcmRlcuKAlG5vIG1pbmltdW1zLCBubyBzdXJwcmlzZXMuPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDUzMzlkYjhjLTg4YzUtNDQ4Yy05ZDVkLTE2OTQ2OWRkYjNiNHh3QjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+VS5TLiBTaGlwcGluZyBDYXJyaWVycyBXZSBUcnVzdDo8L2gzPncMY29yZS9oZWFkaW5nfQN2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGRmZDg2ZWRjLWM3MjctNDEwMi05NTAzLTQ3Njk1MmI1NzJkZHh3Izx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+CgoKCjwvdWw+dwljb3JlL2xpc3R5dwB2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDhhOTE1ZjFkLTA4ZTYtNDAyOC1hY2VmLTgxNjY1MDAxZGZjMXh3aDxsaT48c3Ryb25nPlVQUzwvc3Ryb25nPiDigJMgRmFzdCBncm91bmQgYW5kIGV4cHJlc3Mgb3B0aW9ucyBmb3IgcmVzaWRlbnRpYWwgYW5kIGJ1c2luZXNzIGFkZHJlc3NlczwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckYjUwYzYyMDktNTRhZi00Njk2LTljNTItMjA5MDQxMmE5ODYweHdSPGxpPjxzdHJvbmc+VVNQUzwvc3Ryb25nPiDigJMgUmVsaWFibGUgd29ybGR3aWRlIHNoaXBwaW5nLCBpbmNsdWRpbmcgUE8gQm94ZXM8L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGZlZmZkNzg3LWNiZmUtNDVmNC1iMjdhLTkxNTE3MmQ5NzQzOXh3VjxsaT48c3Ryb25nPkZlZEV4PC9zdHJvbmc+IOKAkyBTZWN1cmUgYW5kIHNwZWVkeSBkZWxpdmVyeSB3aXRoIHJlYWwtdGltZSB0cmFja2luZzwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMjg0MjNkYjAtZjdlMy00NDFhLWIyZDYtNjJiZDc4MmVjOGIyeHdsPHA+QWxsIHBhY2thZ2VzIGFyZSBkaXNjcmVldGx5IHBhY2thZ2VkIHdpdGggPHN0cm9uZz50cmFja2luZyBpbmZvIHNlbnQgc3RyYWlnaHQgdG8geW91ciBpbmJveDwvc3Ryb25nPi48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMDM4MjRiYjgtZWMzMi00ZGE5LWE2ZjgtMmM4OTBkMGEwNjIweHdoPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPldvcmxkd2lkZSBEZWxpdmVyeTogM+KAkzcgRGF5cyBJbnRlcm5hdGlvbmFsIFNoaXBwaW5nPC9zdHJvbmc+PC9oMj53DGNvcmUvaGVhZGluZ30CdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ2ZmQ3OGIzNC04MjA3LTRiNWMtYWU3Ni1jMDAwMzFjODIxZTB4d\/MBPHA+V2UgZG9u4oCZdCBzdG9wIGF0IHRoZSBib3JkZXIuIFdoZXRoZXIgeW91J3JlIGluIDxzdHJvbmc+Q2FuYWRhLCB0aGUgVUssIEF1c3RyYWxpYSwgR2VybWFueSwgb3IgYmV5b25kPC9zdHJvbmc+LCA8c3Ryb25nPkltcGVyaWFsRXh0cmFjdFN0b3JlPC9zdHJvbmc+IHByb3VkbHkgb2ZmZXJzIDxzdHJvbmc+d29ybGR3aWRlIHNoaXBwaW5nPC9zdHJvbmc+IHdpdGggbWFqb3IgaW50ZXJuYXRpb25hbCBjYXJyaWVyczo8L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNWJhMjBkNWQtNGI2Ni00MTg2LWFiZGItNTE3YTNiZmFmMzQ5eHdCPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5JbnRlcm5hdGlvbmFsIFNoaXBwaW5nIFBhcnRuZXJzOjwvaDM+dwxjb3JlL2hlYWRpbmd9A3YDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckZTMzZGRlZTQtOTZiNy00NjExLWIwNzgtY2FmZmMwMjUwOTNieHcjPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCgoKPC91bD53CWNvcmUvbGlzdHl3AHYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNTU1NzQyYzEtYTcxNS00MTZlLWJhYmUtZDJlZmEyZmJhZTIweHdlPGxpPjxzdHJvbmc+REhMIEV4cHJlc3M8L3N0cm9uZz4g4oCTIExpZ2h0bmluZy1mYXN0IGdsb2JhbCBkZWxpdmVyeSAoM+KAkzUgZGF5cyBpbiBtb3N0IHJlZ2lvbnMpPC9saT53DmNvcmUvbGlzdC1pdGVtdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQyYjNjZmI3ZC1kZjdhLTRjOTEtODk3Yy0xZDZmZTAzNzdiNDZ4d1g8bGk+PHN0cm9uZz5GZWRFeCBJbnRlcm5hdGlvbmFsPC9zdHJvbmc+IOKAkyBTZWN1cmUgaW50ZXJuYXRpb25hbCBwcmlvcml0eSBzaGlwcGluZzwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMjZiMzk3MDYtYjg3OS00YjFlLWI5NjAtZWE3OTQ4OWJmZTgxeHdfPGxpPjxzdHJvbmc+VVNQUyBJbnRlcm5hdGlvbmFsPC9zdHJvbmc+IOKAkyBBZmZvcmRhYmxlIGdsb2JhbCBzZXJ2aWNlIGZvciBzbWFsbGVyIHBhY2thZ2VzPC9saT53DmNvcmUvbGlzdC1pdGVtdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQwZDUwODkyMy0wM2EzLTRkMDAtYTQ2ZS1jODk3YzVhYzEwNDF4d0E8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPkN1c3RvbXMtRnJpZW5kbHkgJmFtcDsgRGlzY3JlZXQ8L2gzPncMY29yZS9oZWFkaW5nfQN2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDI3M2ZkY2ViLWE4MzgtNGUxYi1hNGUwLTI0MjAyMzA5ZTc4ZXh3zAE8cD5XZSBjYXJlZnVsbHkgcHJlcGFyZSBpbnRlcm5hdGlvbmFsIHNoaXBtZW50cyB3aXRoIDxzdHJvbmc+Y3VzdG9tcy1mcmllbmRseSBwYWNrYWdpbmc8L3N0cm9uZz4gdG8gZW5zdXJlIHNhZmUgZGVsaXZlcnkuIEV2ZXJ5IG9yZGVyIGluY2x1ZGVzIDxzdHJvbmc+dHJhY2tpbmcgZGV0YWlsczwvc3Ryb25nPiBmb3IgZnVsbCBwZWFjZSBvZiBtaW5kLjwvcD53DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ0MWMwM2YxYS0zM2MwLTQ5MGMtYTk4Mi00MDlmZjBlYTlkZjV4d2M8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+V2h5IENob29zZSBJbXBlcmlhbCBFeHRyYWN0cyBTdG9yZSBmb3IgU2hpcHBpbmc\/PC9zdHJvbmc+PC9oMj53DGNvcmUvaGVhZGluZ30CdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyRmNzBkMDc5OC1jYmQ5LTQxOGItYjRmYi03MTM0YWFhYzRkMzl4dyk8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPgoKCgoKCgoKCgo8L3VsPncJY29yZS9saXN0eXcAdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyRlZGU1OGZkMi01YzNhLTRiNTgtOWIyMC03MDUzMjRmZmZiZTF4dz88bGk+IDxzdHJvbmc+RnJlZSBzaGlwcGluZzwvc3Ryb25nPiBvbiBhbGwgZG9tZXN0aWMgb3JkZXJzPC9saT53DmNvcmUvbGlzdC1pdGVtdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ5MzlmMGZkNi0xODVkLTQ3NmQtODlmYi01ZjgzMjhjNmQ0NTB4d1I8bGk+IDxzdHJvbmc+RmFzdCB0dXJuYXJvdW5kPC9zdHJvbmc+ICgy4oCTMyBkYXlzIFUuUy4sIDPigJM3IGRheXMgd29ybGR3aWRlKTwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckYzU1OTEyNDgtZjZkMy00OTVmLTlmMTItYTljNmFiNzEyZWJkeHdSPGxpPiA8c3Ryb25nPkRpc2NyZWV0IHBhY2thZ2luZzwvc3Ryb25nPiB3aXRoIG5vIGJyYW5kaW5nIG9yIG9idmlvdXMgbWFya2luZ3M8L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDUzYWJmZmU1LTBjZDEtNDNmMy1hMjA5LTlhNDcxYzQzYmQ0Nnh3SjxsaT4gPHN0cm9uZz5NdWx0aXBsZSBjYXJyaWVyIG9wdGlvbnM8L3N0cm9uZz46IFVQUywgVVNQUywgRmVkRXgsIERITDwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMGE0ZDk0NDktZDBlZS00ZTcyLTg4MDYtYzU0NWRjMzU4OTA5eHdDPGxpPiA8c3Ryb25nPkludGVybmF0aW9uYWwgZGVsaXZlcnk8L3N0cm9uZz4gdG8gbW9zdCBjb3VudHJpZXM8L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGNjODA5Mjk1LWY1NDUtNGVhNS04YWYwLWM1NGYwNjQ3NmFmMXh3XTxsaT4gPHN0cm9uZz5DdXN0b21lciBzZXJ2aWNlPC9zdHJvbmc+IHJlYWR5IHRvIGhlbHAgd2l0aCB0cmFja2luZyBvciBkZWxpdmVyeSBxdWVzdGlvbnM8L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGNmOGE3Y2I3LTNkOTUtNDllYS1hZGU5LWNlZGFlOGU3ZTEyNHh3SjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5Xb3JsZHdpZGUgRGVsaXZlcnkgRkFRczwvc3Ryb25nPjwvaDI+dwxjb3JlL2hlYWRpbmd9AnYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNWVjN2Y3YjgtOWZiMS00M2FiLWI0NTktNDNjZjUwYjk1MDc2eHeYATxwPjxzdHJvbmc+UTogSG93IGZhc3QgaXMgVS5TLiBkZWxpdmVyeT88L3N0cm9uZz48YnI+QTogV2UgZGVsaXZlciBpbiBqdXN0IDxzdHJvbmc+MuKAkzMgYnVzaW5lc3MgZGF5czwvc3Ryb25nPiBuYXRpb253aWRlIHdpdGggVVNQUywgVVBTLCBvciBGZWRFeC48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNjQxY2FiOGItZWM4NC00ZGEyLWIzZGUtZTFiMDRiY2FjNTRjeHfjATxwPjxzdHJvbmc+UTogRG8geW91IHNoaXAgaW50ZXJuYXRpb25hbGx5Pzwvc3Ryb25nPjxicj5BOiBZZXMhIFdlIHNoaXAgZ2xvYmFsbHkgd2l0aCA8c3Ryb25nPkRITDwvc3Ryb25nPiwgPHN0cm9uZz5GZWRFeDwvc3Ryb25nPiwgYW5kIDxzdHJvbmc+VVNQUyBJbnRlcm5hdGlvbmFsPC9zdHJvbmc+LCBkZWxpdmVyaW5nIGluIDxzdHJvbmc+M+KAkzcgYnVzaW5lc3MgZGF5czwvc3Ryb25nPi48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMDgyMjE4MTYtZDA1ZS00MjFiLThiNjQtZDU0Yzg0ZGE3ZDJkeHe6ATxwPjxzdHJvbmc+UTogSXMgc2hpcHBpbmcgZGlzY3JlZXQ\/PC9zdHJvbmc+PGJyPkE6IEFic29sdXRlbHkuIEFsbCBwYWNrYWdpbmcgaXMgcGxhaW4gYW5kIDxzdHJvbmc+b2Rvci1mcmVlPC9zdHJvbmc+LCB3aXRoIDxzdHJvbmc+bm8gcmVmZXJlbmNlIHRvIGNhbm5hYmlzIG9yIHByb2R1Y3QgbmFtZXM8L3N0cm9uZz4uPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDBjMTA0ZjEyLWEwMWUtNDAzOS1hZjU1LWUxYTlmZmVjMDE0Mnh3gQE8cD48c3Ryb25nPlE6IEhvdyBkbyBJIHRyYWNrIG15IG9yZGVyPzwvc3Ryb25nPjxicj5BOiBZb3UnbGwgcmVjZWl2ZSBhIHRyYWNraW5nIG51bWJlciB2aWEgZW1haWwgYXMgc29vbiBhcyB5b3VyIG9yZGVyIHNoaXBzLjwvcD53DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyRiOTM4NmIyNy02NjRjLTRmZGYtOGZmOS1mMzc4ZDUzZmJiNzd4d1M8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPk9yZGVyIE5vdyAmYW1wOyBFbmpveSBGcmVlLCBGYXN0LCBTZWN1cmUgU2hpcHBpbmc8L2gyPncMY29yZS9oZWFkaW5nfQJ2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGUyNGU1N2ZkLWI3MTgtNDlhYy1iODk2LTg3ZmZkM2Y4NjRkZXh3oAM8cD5ObyBvbmUgd2FudHMgdG8gd2FpdCBmb3JldmVyIGZvciB0aGVpciA8c3Ryb25nPnByZW1pdW0gY2FubmFiaXM8L3N0cm9uZz4gcHJvZHVjdHMuIFRoYXTigJlzIHdoeSA8c3Ryb25nPkltcGVyaWFsRXh0cmFjdFN0b3JlPC9zdHJvbmc+IG1ha2VzIGl0IHNpbXBsZSB3aXRoIDxzdHJvbmc+ZmFzdCwgc2VjdXJlLCBhbmQgZnJlZSBzaGlwcGluZzwvc3Ryb25nPiwgcG93ZXJlZCBieSB0aGUgd29ybGTigJlzIGJlc3QgZGVsaXZlcnkgcGFydG5lcnMuIFdoZXRoZXIgeW91J3JlIG9yZGVyaW5nIDxzdHJvbmc+bGl2ZSByb3Npbjwvc3Ryb25nPiwgPHN0cm9uZz5kaXNwb3NhYmxlczwvc3Ryb25nPiwgb3IgPHN0cm9uZz5USENBIGNhcnRzPC9zdHJvbmc+LCB5b3XigJlsbCBnZXQgaXQgZmFzdOKAlHdoZXJldmVyIHlvdSBhcmUuPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGFjNzE0MTM4LTUyYWUtNDczNi05NDI0LTgwNzMyMDkyZmZkOXh3uAE8cD48c3Ryb25nPlNob3Agbm93PC9zdHJvbmc+IGF0IDxhIGNsYXNzPSIiIGhyZWY9Imh0dHBzOi8vaW1wZXJpYWxleHRyYWN0c3RvcmUuY29tLyI+SW1wZXJpYWxFeHRyYWN0U3RvcmUuY29tPC9hPiBhbmQgZXhwZXJpZW5jZSBuZXh0LWxldmVsIHNlcnZpY2UsIGZyb20gY2hlY2tvdXQgdG8geW91ciBkb29yc3RlcC48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9ALcEAHckMTE5ZjZjMjMtMWJlZS00ZGVhLWExNTktOTY3YWQ4YTc2Njc2dxFyYW5rLW1hdGgvY29tbWFuZHcAdxxyYW5rLW1hdGgtY29udGVudC1haS1jb21tYW5kdw1HZW5lcmF0aW5n4oCmdyN0eXBpbmcgcmFuay1tYXRoLWNvbnRlbnQtYWktY29tbWFuZHcFV3JpdGV2DA5kb2N1bWVudF90aXRsZXclRWZmaWNpZW50IFdvcmxkd2lkZSBEZWxpdmVyeSBTZXJ2aWNlcwR0ZXh0d5UGIFdlIHNoaXAgZ2xvYmFsbHkgd2l0aCBESEwsIEZlZEV4LCBhbmQgVVNQUyBJbnRlcm5hdGlvbmFsLCBkZWxpdmVyaW5nIGluIDPigJM3IGJ1c2luZXNzIGRheXMuIFE6IElzIHNoaXBwaW5nIGRpc2NyZWV0PyBBOiBBYnNvbHV0ZWx5LiBBbGwgcGFja2FnaW5nIGlzIHBsYWluIGFuZCBvZG9yLWZyZWUsIHdpdGggbm8gcmVmZXJlbmNlIHRvIGNhbm5hYmlzIG9yIHByb2R1Y3QgbmFtZXMuCgpROiBIb3cgZG8gSSB0cmFjayBteSBvcmRlcj8gQTogWW91J2xsIHJlY2VpdmUgYSB0cmFja2luZyBudW1iZXIgdmlhIGVtYWlsIGFzIHNvb24gYXMgeW91ciBvcmRlciBzaGlwcy4KCiMjIE9yZGVyIE5vdyAmIEVuam95IEZyZWUsIEZhc3QsIFNlY3VyZSBTaGlwcGluZwoKTm8gb25lIHdhbnRzIHRvIHdhaXQgZm9yZXZlciBmb3IgdGhlaXIgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gVGhhdOKAmXMgd2h5IEltcGVyaWFsRXh0cmFjdFN0b3JlIG1ha2VzIGl0IHNpbXBsZSB3aXRoIGZhc3QsIHNlY3VyZSwgYW5kIGZyZWUgc2hpcHBpbmcsIHBvd2VyZWQgYnkgdGhlIHdvcmxk4oCZcyBiZXN0IGRlbGl2ZXJ5IHBhcnRuZXJzLiBXaGV0aGVyIHlvdSdyZSBvcmRlcmluZyBsaXZlIHJvc2luLCBkaXNwb3NhYmxlcywgb3IgVEhDQSBjYXJ0cywgeW914oCZbGwgZ2V0IGl0IGZhc3TigJR3aGVyZXZlciB5b3UgYXJlLgoKU2hvcCBub3cgYXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUuY29tIGFuZCBleHBlcmllbmNlIG5leHQtbGV2ZWwgc2VydmljZSwgZnJvbSBjaGVja291dCB0byB5b3VyIGRvb3JzdGVwLgoKDGluc3RydWN0aW9uc3cABHRvbmV1AXcGRm9ybWFsDWZvY3VzX2tleXdvcmR1AAZsZW5ndGh3Bm1lZGl1bQdjaG9pY2VzfQEIdXNlcm5hbWV3DHBhdHJpY2t3b29kcwdhcGlfa2V5dyA0YzgyMTI0NWRjNmU2MjExNjJmMmYyMTgyYTc2ZThiZghzaXRlX3VybHcgaHR0cHM6Ly9pbXBlcmlhbGV4dHJhY3RzdG9yZS5jb20OcGx1Z2luX3ZlcnNpb253BzEuMC4yNjcIbGFuZ3VhZ2V3ClVTIEVuZ2xpc2h5dwB3HHJhbmstbWF0aC1jb250ZW50LWFpLWNvbW1hbmR4dwJBdHcEQXQgIHcaQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSx3HEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICB3H0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2V3IUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgIHcsQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemV3LkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICB3M0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91cnc1QXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICB3QUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNld0NBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgd0ZBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5d0hBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICB3UUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZ3dTQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICB3WkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdHdcQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICB3YEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZHdiQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICB3a0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxld21BdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgd3ZBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5d3hBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICB3e0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZnd9QXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICB3gQFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXJ3gwFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgIHeLAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW13jQFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICB3lgFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXN3mAFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgIHeiAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLnekAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgd6gBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3Vyd6oBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICB3sQFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWx3swFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgIHe8AUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nd74BQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgIHfHAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXN3yQFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICB3zQFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJld88BQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgd9gBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkd9oBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICB33QFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0b3ffAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICB35AFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXR35gFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgIHfrAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXJ37QFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICB39AFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsd\/YBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgd\/sBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGh3\/QFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgd\/8BQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhd4ECQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICB3jAJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50d44CQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgd5ECQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvd5MCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICB3ngJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9ud6ACQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgd6QCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZHemAkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgIHevAkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eXexAkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgd7wCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dHe+AkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgIHfCAkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGV3xAJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICB3ywJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJld80CQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgd9YCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3Mud9gCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICB33gJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeXfgAkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICB35gJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyd+gCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgd+sCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzd+0CQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICB39wJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHl3+QJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgIHeCA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2Vkd4QDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgIHeHA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG93iQNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICB3kgNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW53lANBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gIHelA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSx3pwNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICB3sANBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmd3sgNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgIHe2A0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdXe4A0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgd7sDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG93vQNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgd8IDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wd8QDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICB3yQNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRod8sDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgd9EDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNld9MDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICB31gNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZnfYA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICB33gNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQud+ADQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgd+sDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2V37QNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgd\/oDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWR3\/ANBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgd4QEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNld4YEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICB3jARBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheXeOBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICB3kQRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5d5MEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgd5sEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmd3nQRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5ICAgcGxhY2luZyAgd6IEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3Vyd6QEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICB3qgRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5ICAgcGxhY2luZyAgIHlvdXIgICBvcmRlcnesBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICAgYnkgICBwbGFjaW5nICAgeW91ciAgIG9yZGVyICB3sARBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5ICAgcGxhY2luZyAgIHlvdXIgICBvcmRlciAgIGFuZHeyBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICAgYnkgICBwbGFjaW5nICAgeW91ciAgIG9yZGVyICAgYW5kICB3uwRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5ICAgcGxhY2luZyAgIHlvdXIgICBvcmRlciAgIGFuZCAgIGVuam95aW5nd70EQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICAgb3JkZXIgICBhbmQgICBlbmpveWluZyAgd8EEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICAgb3JkZXIgICBhbmQgICBlbmpveWluZyAgIHRoZXfDBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICAgYnkgICBwbGFjaW5nICAgeW91ciAgIG9yZGVyICAgYW5kICAgZW5qb3lpbmcgICB0aGUgIHfMBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICAgYnkgICBwbGFjaW5nICAgeW91ciAgIG9yZGVyICAgYW5kICAgZW5qb3lpbmcgICB0aGUgICBiZW5lZml0c3fOBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICAgYnkgICBwbGFjaW5nICAgeW91ciAgIG9yZGVyICAgYW5kICAgZW5qb3lpbmcgICB0aGUgICBiZW5lZml0cyAgd9EEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICAgb3JkZXIgICBhbmQgICBlbmpveWluZyAgIHRoZSAgIGJlbmVmaXRzICAgb2Z30wRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5ICAgcGxhY2luZyAgIHlvdXIgICBvcmRlciAgIGFuZCAgIGVuam95aW5nICAgdGhlICAgYmVuZWZpdHMgICBvZiAgd9oEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICAgb3JkZXIgICBhbmQgICBlbmpveWluZyAgIHRoZSAgIGJlbmVmaXRzICAgb2YgICBzd2lmdCx33ARBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5ICAgcGxhY2luZyAgIHlvdXIgICBvcmRlciAgIGFuZCAgIGVuam95aW5nICAgdGhlICAgYmVuZWZpdHMgICBvZiAgIHN3aWZ0LCAgd+MEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICAgb3JkZXIgICBhbmQgICBlbmpveWluZyAgIHRoZSAgIGJlbmVmaXRzICAgb2YgICBzd2lmdCwgICBzZWN1cmV35QRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5ICAgcGxhY2luZyAgIHlvdXIgICBvcmRlciAgIGFuZCAgIGVuam95aW5nICAgdGhlICAgYmVuZWZpdHMgICBvZiAgIHN3aWZ0LCAgIHNlY3VyZSAgd+4EQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICAgb3JkZXIgICBhbmQgICBlbmpveWluZyAgIHRoZSAgIGJlbmVmaXRzICAgb2YgICBzd2lmdCwgICBzZWN1cmUgICBkZWxpdmVyeXfwBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICAgYnkgICBwbGFjaW5nICAgeW91ciAgIG9yZGVyICAgYW5kICAgZW5qb3lpbmcgICB0aGUgICBiZW5lZml0cyAgIG9mICAgc3dpZnQsICAgc2VjdXJlICAgZGVsaXZlcnkgIHf2BEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICAgYnkgICBwbGFjaW5nICAgeW91ciAgIG9yZGVyICAgYW5kICAgZW5qb3lpbmcgICB0aGUgICBiZW5lZml0cyAgIG9mICAgc3dpZnQsICAgc2VjdXJlICAgZGVsaXZlcnkgICByaWdodHf4BEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICAgYnkgICBwbGFjaW5nICAgeW91ciAgIG9yZGVyICAgYW5kICAgZW5qb3lpbmcgICB0aGUgICBiZW5lZml0cyAgIG9mICAgc3dpZnQsICAgc2VjdXJlICAgZGVsaXZlcnkgICByaWdodCAgd\/sEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICAgb3JkZXIgICBhbmQgICBlbmpveWluZyAgIHRoZSAgIGJlbmVmaXRzICAgb2YgICBzd2lmdCwgICBzZWN1cmUgICBkZWxpdmVyeSAgIHJpZ2h0ICAgdG93\/QRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5ICAgcGxhY2luZyAgIHlvdXIgICBvcmRlciAgIGFuZCAgIGVuam95aW5nICAgdGhlICAgYmVuZWZpdHMgICBvZiAgIHN3aWZ0LCAgIHNlY3VyZSAgIGRlbGl2ZXJ5ICAgcmlnaHQgICB0byAgd4IFQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICAgb3JkZXIgICBhbmQgICBlbmpveWluZyAgIHRoZSAgIGJlbmVmaXRzICAgb2YgICBzd2lmdCwgICBzZWN1cmUgICBkZWxpdmVyeSAgIHJpZ2h0ICAgdG8gICB5b3Vyd4QFQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHByaW9yaXRpemUgICB5b3VyICAgY29udmVuaWVuY2UgICBieSAgIGVuc3VyaW5nICAgcHJvbXB0ICAgYW5kICAgcmVsaWFibGUgICBkZWxpdmVyeSAgIG9mICAgb3VyICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgZ2xvYmFsICAgc2hpcHBpbmcgICBzZXJ2aWNlcyAgIGFyZSAgIGRlc2lnbmVkICAgdG8gICBtZWV0ICAgeW91ciAgIG5lZWRzLCAgIHdpdGggICBhICAgY29tbWl0bWVudCAgIHRvICAgZGlzY3JldGlvbiAgIGFuZCAgIHNlY3VyaXR5ICAgdGhyb3VnaG91dCAgIHRoZSAgIGVudGlyZSAgIHByb2Nlc3MuICAgRXZlcnkgICBvcmRlciAgIGlzICAgY2FyZWZ1bGx5ICAgcGFja2FnZWQgICB0byAgIG1haW50YWluICAgY29uZmlkZW50aWFsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBzaG9wICAgd2l0aCAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEV4cGVyaWVuY2UgICB1bnBhcmFsbGVsZWQgICBzZXJ2aWNlICAgdG9kYXkgICBieSAgIHBsYWNpbmcgICB5b3VyICAgb3JkZXIgICBhbmQgICBlbmpveWluZyAgIHRoZSAgIGJlbmVmaXRzICAgb2YgICBzd2lmdCwgICBzZWN1cmUgICBkZWxpdmVyeSAgIHJpZ2h0ICAgdG8gICB5b3VyICB3igVBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgcHJpb3JpdGl6ZSAgIHlvdXIgICBjb252ZW5pZW5jZSAgIGJ5ICAgZW5zdXJpbmcgICBwcm9tcHQgICBhbmQgICByZWxpYWJsZSAgIGRlbGl2ZXJ5ICAgb2YgICBvdXIgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBnbG9iYWwgICBzaGlwcGluZyAgIHNlcnZpY2VzICAgYXJlICAgZGVzaWduZWQgICB0byAgIG1lZXQgICB5b3VyICAgbmVlZHMsICAgd2l0aCAgIGEgICBjb21taXRtZW50ICAgdG8gICBkaXNjcmV0aW9uICAgYW5kICAgc2VjdXJpdHkgICB0aHJvdWdob3V0ICAgdGhlICAgZW50aXJlICAgcHJvY2Vzcy4gICBFdmVyeSAgIG9yZGVyICAgaXMgICBjYXJlZnVsbHkgICBwYWNrYWdlZCAgIHRvICAgbWFpbnRhaW4gICBjb25maWRlbnRpYWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIHNob3AgICB3aXRoICAgcGVhY2UgICBvZiAgIG1pbmQuICAgRXhwZXJpZW5jZSAgIHVucGFyYWxsZWxlZCAgIHNlcnZpY2UgICB0b2RheSAgIGJ5ICAgcGxhY2luZyAgIHlvdXIgICBvcmRlciAgIGFuZCAgIGVuam95aW5nICAgdGhlICAgYmVuZWZpdHMgICBvZiAgIHN3aWZ0LCAgIHNlY3VyZSAgIGRlbGl2ZXJ5ICAgcmlnaHQgICB0byAgIHlvdXIgICBkb29yLneMBUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICBwcmlvcml0aXplICAgeW91ciAgIGNvbnZlbmllbmNlICAgYnkgICBlbnN1cmluZyAgIHByb21wdCAgIGFuZCAgIHJlbGlhYmxlICAgZGVsaXZlcnkgICBvZiAgIG91ciAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGdsb2JhbCAgIHNoaXBwaW5nICAgc2VydmljZXMgICBhcmUgICBkZXNpZ25lZCAgIHRvICAgbWVldCAgIHlvdXIgICBuZWVkcywgICB3aXRoICAgYSAgIGNvbW1pdG1lbnQgICB0byAgIGRpc2NyZXRpb24gICBhbmQgICBzZWN1cml0eSAgIHRocm91Z2hvdXQgICB0aGUgICBlbnRpcmUgICBwcm9jZXNzLiAgIEV2ZXJ5ICAgb3JkZXIgICBpcyAgIGNhcmVmdWxseSAgIHBhY2thZ2VkICAgdG8gICBtYWludGFpbiAgIGNvbmZpZGVudGlhbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgc2hvcCAgIHdpdGggICBwZWFjZSAgIG9mICAgbWluZC4gICBFeHBlcmllbmNlICAgdW5wYXJhbGxlbGVkICAgc2VydmljZSAgIHRvZGF5ICAgYnkgICBwbGFjaW5nICAgeW91ciAgIG9yZGVyICAgYW5kICAgZW5qb3lpbmcgICB0aGUgICBiZW5lZml0cyAgIG9mICAgc3dpZnQsICAgc2VjdXJlICAgZGVsaXZlcnkgICByaWdodCAgIHRvICAgeW91ciAgIGRvb3IuICB3JDNkZjczZDliLWNiNmItNDQyNS04ZjNkLTYyOTkzZWMwMDViMncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGI2NDE0ZGU3LTc3YTgtNDdjZS05NGMyLTRkOTZlMTMxMjQwOHcRcmFuay1tYXRoL2NvbW1hbmR3AHcccmFuay1tYXRoLWNvbnRlbnQtYWktY29tbWFuZHcNR2VuZXJhdGluZ+KApncjdHlwaW5nIHJhbmstbWF0aC1jb250ZW50LWFpLWNvbW1hbmR3BVdyaXRldgwOZG9jdW1lbnRfdGl0bGV3JUVmZmljaWVudCBXb3JsZHdpZGUgRGVsaXZlcnkgU2VydmljZXMEdGV4dHevBk5vIG9uZSB3YW50cyB0byB3YWl0IGZvcmV2ZXIgZm9yIHRoZWlyIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIFRoYXTigJlzIHdoeSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBtYWtlcyBpdCBzaW1wbGUgd2l0aCBmYXN0LCBzZWN1cmUsIGFuZCBmcmVlIHNoaXBwaW5nLCBwb3dlcmVkIGJ5IHRoZSB3b3JsZOKAmXMgYmVzdCBkZWxpdmVyeSBwYXJ0bmVycy4gV2hldGhlciB5b3UncmUgb3JkZXJpbmcgbGl2ZSByb3NpbiwgZGlzcG9zYWJsZXMsIG9yIFRIQ0EgY2FydHMsIHlvdeKAmWxsIGdldCBpdCBmYXN04oCUd2hlcmV2ZXIgeW91IGFyZS4KCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSBwcmlvcml0aXplIHlvdXIgY29udmVuaWVuY2UgYnkgZW5zdXJpbmcgcHJvbXB0IGFuZCByZWxpYWJsZSBkZWxpdmVyeSBvZiBvdXIgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGdsb2JhbCBzaGlwcGluZyBzZXJ2aWNlcyBhcmUgZGVzaWduZWQgdG8gbWVldCB5b3VyIG5lZWRzLCB3aXRoIGEgY29tbWl0bWVudCB0byBkaXNjcmV0aW9uIGFuZCBzZWN1cml0eSB0aHJvdWdob3V0IHRoZSBlbnRpcmUgcHJvY2Vzcy4gRXZlcnkgb3JkZXIgaXMgY2FyZWZ1bGx5IHBhY2thZ2VkIHRvIG1haW50YWluIGNvbmZpZGVudGlhbGl0eSwgYWxsb3dpbmcgeW91IHRvIHNob3Agd2l0aCBwZWFjZSBvZiBtaW5kLiBFeHBlcmllbmNlIHVucGFyYWxsZWxlZCBzZXJ2aWNlIHRvZGF5IGJ5IHBsYWNpbmcgeW91ciBvcmRlciBhbmQgZW5qb3lpbmcgdGhlIGJlbmVmaXRzIG9mIHN3aWZ0LCBzZWN1cmUgZGVsaXZlcnkgcmlnaHQgdG8geW91ciBkb29yLgoKDGluc3RydWN0aW9uc3cABHRvbmV1AXcGRm9ybWFsDWZvY3VzX2tleXdvcmR1AAZsZW5ndGh3Bm1lZGl1bQdjaG9pY2VzfQEIdXNlcm5hbWV3DHBhdHJpY2t3b29kcwdhcGlfa2V5dyA0YzgyMTI0NWRjNmU2MjExNjJmMmYyMTgyYTc2ZThiZghzaXRlX3VybHcgaHR0cHM6Ly9pbXBlcmlhbGV4dHJhY3RzdG9yZS5jb20OcGx1Z2luX3ZlcnNpb253BzEuMC4yNjcIbGFuZ3VhZ2V3ClVTIEVuZ2xpc2h5dwB3HHJhbmstbWF0aC1jb250ZW50LWFpLWNvbW1hbmR4dwJBdHcEQXQgIHcaQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSx3HEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICB3H0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2V3IUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgIHcsQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmR3LkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICB3MkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhldzRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgdz9BdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2V3QUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgd0RBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZndGQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgIHdRQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5d1NBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgIHdWQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW53WEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICB3XEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhld15BdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgd2dBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5d2lBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICB3bEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZnduQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICB3dkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW13eEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gIHeBAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpc3eDAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgd40BQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMud48BQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICB3kwFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXJ3lQFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgIHegAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnR3ogFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICB3pQFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG93pwFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gIHexAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZ3ezAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgd7oBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5d7wBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICB3wAFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmR3wgFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgIHfJAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZXfLAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgd9QBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmd31gFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgd9kBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpc3fbAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgIHfmAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsd+gBQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgIHfxAUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmd38wFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICB3+AFBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91cnf6AUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICB3gQJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVyc3eDAkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICB3igJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZXeMAkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICB3jwJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGlud5ECQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgd5oCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5ld5wCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICB3pgJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb253qAJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gIHezAkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3N3tQJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICB3uAJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2Z3ugJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgIHe\/AkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXJ3wQJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICB3ywJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24ud80CQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgd9ICQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGh31AJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgd9gCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXJ32gJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgd+ICQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkd+QCQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICB37QJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeXfvAkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICB3+QJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLHf7AkF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICB3\/gJBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdld4ADQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgd4kDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWlud4sDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICB3kANBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdod5IDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgd5wDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkc3eeA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgIHehA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZnejA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgd64DQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbnewA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gIHe0A0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmR3tgNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICB3wwNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksd8UDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgd84DQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nd9ADQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICB31ANBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3V31gNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgIHfZA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvd9sDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gIHfhA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXN34wNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICB35gNBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb2536ANBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gIHfxA0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nd\/MDQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgIHf4A0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nICAgeW91cnf6A0F0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nICAgeW91ciAgd4MEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgICB5b3VyICAgcHJvZHVjdHN3hQRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgd40EQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgICB5b3VyICAgcHJvZHVjdHMgICB3aXRob3V0d48EQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgICB5b3VyICAgcHJvZHVjdHMgICB3aXRob3V0ICB3mARBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgIHdpdGhvdXQgICBjb25jZXJuLneaBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nICAgeW91ciAgIHByb2R1Y3RzICAgd2l0aG91dCAgIGNvbmNlcm4uICB3oQRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgIHdpdGhvdXQgICBjb25jZXJuLiAgIENob29zZXejBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nICAgeW91ciAgIHByb2R1Y3RzICAgd2l0aG91dCAgIGNvbmNlcm4uICAgQ2hvb3NlICB3uARBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgIHdpdGhvdXQgICBjb25jZXJuLiAgIENob29zZSAgIEltcGVyaWFsRXh0cmFjdFN0b3Jld7oEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgICB5b3VyICAgcHJvZHVjdHMgICB3aXRob3V0ICAgY29uY2Vybi4gICBDaG9vc2UgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSAgd74EQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgICB5b3VyICAgcHJvZHVjdHMgICB3aXRob3V0ICAgY29uY2Vybi4gICBDaG9vc2UgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSAgIGZvcnfABEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nICAgeW91ciAgIHByb2R1Y3RzICAgd2l0aG91dCAgIGNvbmNlcm4uICAgQ2hvb3NlICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUgICBmb3IgIHfCBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nICAgeW91ciAgIHByb2R1Y3RzICAgd2l0aG91dCAgIGNvbmNlcm4uICAgQ2hvb3NlICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUgICBmb3IgICBhd8QEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgICB5b3VyICAgcHJvZHVjdHMgICB3aXRob3V0ICAgY29uY2Vybi4gICBDaG9vc2UgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSAgIGZvciAgIGEgIHfNBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nICAgeW91ciAgIHByb2R1Y3RzICAgd2l0aG91dCAgIGNvbmNlcm4uICAgQ2hvb3NlICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUgICBmb3IgICBhICAgc2VhbWxlc3N3zwRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgIHdpdGhvdXQgICBjb25jZXJuLiAgIENob29zZSAgIEltcGVyaWFsRXh0cmFjdFN0b3JlICAgZm9yICAgYSAgIHNlYW1sZXNzICB32ARBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgIHdpdGhvdXQgICBjb25jZXJuLiAgIENob29zZSAgIEltcGVyaWFsRXh0cmFjdFN0b3JlICAgZm9yICAgYSAgIHNlYW1sZXNzICAgc2hvcHBpbmd32gRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgIHdpdGhvdXQgICBjb25jZXJuLiAgIENob29zZSAgIEltcGVyaWFsRXh0cmFjdFN0b3JlICAgZm9yICAgYSAgIHNlYW1sZXNzICAgc2hvcHBpbmcgIHflBEF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nICAgeW91ciAgIHByb2R1Y3RzICAgd2l0aG91dCAgIGNvbmNlcm4uICAgQ2hvb3NlICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUgICBmb3IgICBhICAgc2VhbWxlc3MgICBzaG9wcGluZyAgIGV4cGVyaWVuY2V35wRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgIHdpdGhvdXQgICBjb25jZXJuLiAgIENob29zZSAgIEltcGVyaWFsRXh0cmFjdFN0b3JlICAgZm9yICAgYSAgIHNlYW1sZXNzICAgc2hvcHBpbmcgICBleHBlcmllbmNlICB36wRBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgIHdpdGhvdXQgICBjb25jZXJuLiAgIENob29zZSAgIEltcGVyaWFsRXh0cmFjdFN0b3JlICAgZm9yICAgYSAgIHNlYW1sZXNzICAgc2hvcHBpbmcgICBleHBlcmllbmNlICAgYW5kd+0EQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgICB5b3VyICAgcHJvZHVjdHMgICB3aXRob3V0ICAgY29uY2Vybi4gICBDaG9vc2UgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSAgIGZvciAgIGEgICBzZWFtbGVzcyAgIHNob3BwaW5nICAgZXhwZXJpZW5jZSAgIGFuZCAgd\/kEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgICB5b3VyICAgcHJvZHVjdHMgICB3aXRob3V0ICAgY29uY2Vybi4gICBDaG9vc2UgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSAgIGZvciAgIGEgICBzZWFtbGVzcyAgIHNob3BwaW5nICAgZXhwZXJpZW5jZSAgIGFuZCAgIGV4Y2VwdGlvbmFsd\/sEQXQgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3ZSAgIHVuZGVyc3RhbmQgICB0aGUgICBpbXBvcnRhbmNlICAgb2YgICBlZmZpY2llbmN5ICAgaW4gICB0aGUgICBkZWxpdmVyeSAgIG9mICAgcHJlbWl1bSAgIGNhbm5hYmlzICAgcHJvZHVjdHMuICAgT3VyICAgY29tbWl0bWVudCAgIHRvICAgcHJvdmlkaW5nICAgdGltZWx5ICAgYW5kICAgc2VjdXJlICAgc2hpcHBpbmcgICBpcyAgIHVubWF0Y2hlZCwgICBlbnN1cmluZyAgIHlvdXIgICBvcmRlcnMgICBhcnJpdmUgICBpbiAgIHByaXN0aW5lICAgY29uZGl0aW9uICAgcmVnYXJkbGVzcyAgIG9mICAgeW91ciAgIGxvY2F0aW9uLiAgIFdpdGggICBvdXIgICB0cnVzdGVkICAgZGVsaXZlcnkgICBwYXJ0bmVycywgICB3ZSAgIG1haW50YWluICAgaGlnaCAgIHN0YW5kYXJkcyAgIG9mICAgZGlzY3JldGlvbiAgIGFuZCAgIHJlbGlhYmlsaXR5LCAgIGFsbG93aW5nICAgeW91ICAgdG8gICBmb2N1cyAgIG9uICAgZW5qb3lpbmcgICB5b3VyICAgcHJvZHVjdHMgICB3aXRob3V0ICAgY29uY2Vybi4gICBDaG9vc2UgICBJbXBlcmlhbEV4dHJhY3RTdG9yZSAgIGZvciAgIGEgICBzZWFtbGVzcyAgIHNob3BwaW5nICAgZXhwZXJpZW5jZSAgIGFuZCAgIGV4Y2VwdGlvbmFsICB3hAVBdCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdlICAgdW5kZXJzdGFuZCAgIHRoZSAgIGltcG9ydGFuY2UgICBvZiAgIGVmZmljaWVuY3kgICBpbiAgIHRoZSAgIGRlbGl2ZXJ5ICAgb2YgICBwcmVtaXVtICAgY2FubmFiaXMgICBwcm9kdWN0cy4gICBPdXIgICBjb21taXRtZW50ICAgdG8gICBwcm92aWRpbmcgICB0aW1lbHkgICBhbmQgICBzZWN1cmUgICBzaGlwcGluZyAgIGlzICAgdW5tYXRjaGVkLCAgIGVuc3VyaW5nICAgeW91ciAgIG9yZGVycyAgIGFycml2ZSAgIGluICAgcHJpc3RpbmUgICBjb25kaXRpb24gICByZWdhcmRsZXNzICAgb2YgICB5b3VyICAgbG9jYXRpb24uICAgV2l0aCAgIG91ciAgIHRydXN0ZWQgICBkZWxpdmVyeSAgIHBhcnRuZXJzLCAgIHdlICAgbWFpbnRhaW4gICBoaWdoICAgc3RhbmRhcmRzICAgb2YgICBkaXNjcmV0aW9uICAgYW5kICAgcmVsaWFiaWxpdHksICAgYWxsb3dpbmcgICB5b3UgICB0byAgIGZvY3VzICAgb24gICBlbmpveWluZyAgIHlvdXIgICBwcm9kdWN0cyAgIHdpdGhvdXQgICBjb25jZXJuLiAgIENob29zZSAgIEltcGVyaWFsRXh0cmFjdFN0b3JlICAgZm9yICAgYSAgIHNlYW1sZXNzICAgc2hvcHBpbmcgICBleHBlcmllbmNlICAgYW5kICAgZXhjZXB0aW9uYWwgICBzZXJ2aWNlLneGBUF0ICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2UgICB1bmRlcnN0YW5kICAgdGhlICAgaW1wb3J0YW5jZSAgIG9mICAgZWZmaWNpZW5jeSAgIGluICAgdGhlICAgZGVsaXZlcnkgICBvZiAgIHByZW1pdW0gICBjYW5uYWJpcyAgIHByb2R1Y3RzLiAgIE91ciAgIGNvbW1pdG1lbnQgICB0byAgIHByb3ZpZGluZyAgIHRpbWVseSAgIGFuZCAgIHNlY3VyZSAgIHNoaXBwaW5nICAgaXMgICB1bm1hdGNoZWQsICAgZW5zdXJpbmcgICB5b3VyICAgb3JkZXJzICAgYXJyaXZlICAgaW4gICBwcmlzdGluZSAgIGNvbmRpdGlvbiAgIHJlZ2FyZGxlc3MgICBvZiAgIHlvdXIgICBsb2NhdGlvbi4gICBXaXRoICAgb3VyICAgdHJ1c3RlZCAgIGRlbGl2ZXJ5ICAgcGFydG5lcnMsICAgd2UgICBtYWludGFpbiAgIGhpZ2ggICBzdGFuZGFyZHMgICBvZiAgIGRpc2NyZXRpb24gICBhbmQgICByZWxpYWJpbGl0eSwgICBhbGxvd2luZyAgIHlvdSAgIHRvICAgZm9jdXMgICBvbiAgIGVuam95aW5nICAgeW91ciAgIHByb2R1Y3RzICAgd2l0aG91dCAgIGNvbmNlcm4uICAgQ2hvb3NlICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUgICBmb3IgICBhICAgc2VhbWxlc3MgICBzaG9wcGluZyAgIGV4cGVyaWVuY2UgICBhbmQgICBleGNlcHRpb25hbCAgIHNlcnZpY2UuICB3iQRBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuR2VuZXJhdGluZ+KApncAd\/wDQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLneABEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3Vyd4IEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgIHeKBEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZXeMBEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgd5YEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9ud5gEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICB3nwRBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnN3oQRBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgIHekBEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvd6YEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gIHeqBEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsd6wEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgIHe5BEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsd7sEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgIHfDBEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlcnfFBEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgd84EQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmV30ARBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgd9IEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhd9QEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICB33QRBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZHffBEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICB36wRBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyd+0EQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgd\/AEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yd\/IEQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICB39gRBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXd3+ARBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgIHf7BEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvd\/0EQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gIHeHBUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMud4kFQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gIHeMBUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2V3jgVBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICB3mQVBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZXebBUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICB3pAVBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksd6YFQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgd68FQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nd7EFQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICB3tgVBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5d7gFQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgd7wFQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZXe+BUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgIHfFBUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3R3xwVBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICB30AVBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHN30gVBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgIHfVBUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvd9cFQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gIHfeBUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJld+AFQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgIHfpBUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXJ36wVBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICB3+QVBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLnf7BUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICB3gwZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXJ3hQZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgIHeQBkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnN3kgZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICB3lgZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kd5gGQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgd6IGQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50c3ekBkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgIHepBkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtld6sGQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgIHeuBkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXR3sAZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICB3twZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyd7kGQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgd74GQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW53wAZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgd8UGQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyd8cGQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICB3ygZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0b3fMBkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICB31AZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmV31gZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgIHfaBkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ld3fcBkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgd+YGQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzd+gGQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICB37AZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmR37gZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgIHf0BkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2Nrd\/YGQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICAgYW5kICAgc3RvY2sgIHf5BkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXB3+wZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICB3\/gZBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb253gAdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gIHeLB0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy53jQdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICB3kgdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbneUB0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICB3mAdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91cneaB0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICB3pAdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eXemB0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICAgY29tbXVuaXR5ICB3qQdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9md6sHQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICAgYW5kICAgc3RvY2sgICB1cCAgIG9uICAgZmF2b3JpdGVzLiAgIEpvaW4gICBvdXIgICBjb21tdW5pdHkgICBvZiAgd7UHQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICAgYW5kICAgc3RvY2sgICB1cCAgIG9uICAgZmF2b3JpdGVzLiAgIEpvaW4gICBvdXIgICBjb21tdW5pdHkgICBvZiAgIHNhdGlzZmllZHe3B0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICAgY29tbXVuaXR5ICAgb2YgICBzYXRpc2ZpZWQgIHfBB0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICAgY29tbXVuaXR5ICAgb2YgICBzYXRpc2ZpZWQgICBjdXN0b21lcnN3wwdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICB3xwdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvd8kHQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICAgYW5kICAgc3RvY2sgICB1cCAgIG9uICAgZmF2b3JpdGVzLiAgIEpvaW4gICBvdXIgICBjb21tdW5pdHkgICBvZiAgIHNhdGlzZmllZCAgIGN1c3RvbWVycyAgIHdobyAgd9QHQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICAgYW5kICAgc3RvY2sgICB1cCAgIG9uICAgZmF2b3JpdGVzLiAgIEpvaW4gICBvdXIgICBjb21tdW5pdHkgICBvZiAgIHNhdGlzZmllZCAgIGN1c3RvbWVycyAgIHdobyAgIGFwcHJlY2lhdGV31gdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvICAgYXBwcmVjaWF0ZSAgd9sHQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICAgYW5kICAgc3RvY2sgICB1cCAgIG9uICAgZmF2b3JpdGVzLiAgIEpvaW4gICBvdXIgICBjb21tdW5pdHkgICBvZiAgIHNhdGlzZmllZCAgIGN1c3RvbWVycyAgIHdobyAgIGFwcHJlY2lhdGUgICBib3Rod90HQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICAgYW5kICAgc3RvY2sgICB1cCAgIG9uICAgZmF2b3JpdGVzLiAgIEpvaW4gICBvdXIgICBjb21tdW5pdHkgICBvZiAgIHNhdGlzZmllZCAgIGN1c3RvbWVycyAgIHdobyAgIGFwcHJlY2lhdGUgICBib3RoICB34wdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvICAgYXBwcmVjaWF0ZSAgIGJvdGggICBzcGVlZHflB0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICAgY29tbXVuaXR5ICAgb2YgICBzYXRpc2ZpZWQgICBjdXN0b21lcnMgICB3aG8gICBhcHByZWNpYXRlICAgYm90aCAgIHNwZWVkICB36QdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvICAgYXBwcmVjaWF0ZSAgIGJvdGggICBzcGVlZCAgIGFuZHfrB0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICAgY29tbXVuaXR5ICAgb2YgICBzYXRpc2ZpZWQgICBjdXN0b21lcnMgICB3aG8gICBhcHByZWNpYXRlICAgYm90aCAgIHNwZWVkICAgYW5kICB38wdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvICAgYXBwcmVjaWF0ZSAgIGJvdGggICBzcGVlZCAgIGFuZCAgIHF1YWxpdHl39QdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvICAgYXBwcmVjaWF0ZSAgIGJvdGggICBzcGVlZCAgIGFuZCAgIHF1YWxpdHkgIHf4B0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICAgY29tbXVuaXR5ICAgb2YgICBzYXRpc2ZpZWQgICBjdXN0b21lcnMgICB3aG8gICBhcHByZWNpYXRlICAgYm90aCAgIHNwZWVkICAgYW5kICAgcXVhbGl0eSAgIGlud\/oHQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICAgYW5kICAgc3RvY2sgICB1cCAgIG9uICAgZmF2b3JpdGVzLiAgIEpvaW4gICBvdXIgICBjb21tdW5pdHkgICBvZiAgIHNhdGlzZmllZCAgIGN1c3RvbWVycyAgIHdobyAgIGFwcHJlY2lhdGUgICBib3RoICAgc3BlZWQgICBhbmQgICBxdWFsaXR5ICAgaW4gIHeACEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICAgY29tbXVuaXR5ICAgb2YgICBzYXRpc2ZpZWQgICBjdXN0b21lcnMgICB3aG8gICBhcHByZWNpYXRlICAgYm90aCAgIHNwZWVkICAgYW5kICAgcXVhbGl0eSAgIGluICAgdGhlaXJ3gghBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvICAgYXBwcmVjaWF0ZSAgIGJvdGggICBzcGVlZCAgIGFuZCAgIHF1YWxpdHkgICBpbiAgIHRoZWlyICB3iwhBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvICAgYXBwcmVjaWF0ZSAgIGJvdGggICBzcGVlZCAgIGFuZCAgIHF1YWxpdHkgICBpbiAgIHRoZWlyICAgY2FubmFiaXN3jQhBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvICAgYXBwcmVjaWF0ZSAgIGJvdGggICBzcGVlZCAgIGFuZCAgIHF1YWxpdHkgICBpbiAgIHRoZWlyICAgY2FubmFiaXMgIHeWCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICAgY29tbXVuaXR5ICAgb2YgICBzYXRpc2ZpZWQgICBjdXN0b21lcnMgICB3aG8gICBhcHByZWNpYXRlICAgYm90aCAgIHNwZWVkICAgYW5kICAgcXVhbGl0eSAgIGluICAgdGhlaXIgICBjYW5uYWJpcyAgIHNob3BwaW5nd5gIQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgICBkaXZlcnNlICAgc2VsZWN0aW9uICAgY2F0ZXJzICAgdG8gICBhbGwgICBwcmVmZXJlbmNlcywgICB3aGV0aGVyICAgeW914oCZcmUgICBhICAgc2Vhc29uZWQgICBjb25ub2lzc2V1ciAgIG9yICAgbmV3ICAgdG8gICBjYW5uYWJpcy4gICBXZSAgIHByaW9yaXRpemUgICBxdWFsaXR5LCAgIHNvdXJjaW5nICAgb25seSAgIHRoZSAgIGZpbmVzdCAgIHByb2R1Y3RzICAgdG8gICBlbnN1cmUgICBjdXN0b21lciAgIHNhdGlzZmFjdGlvbi4gICBSZWd1bGFyICAgcHJvbW90aW9ucyAgIGFuZCAgIGRpc2NvdW50cyAgIG1ha2UgICBpdCAgIGVhc2llciAgIHRoYW4gICBldmVyICAgdG8gICBleHBsb3JlICAgbmV3ICAgb2ZmZXJpbmdzICAgYW5kICAgc3RvY2sgICB1cCAgIG9uICAgZmF2b3JpdGVzLiAgIEpvaW4gICBvdXIgICBjb21tdW5pdHkgICBvZiAgIHNhdGlzZmllZCAgIGN1c3RvbWVycyAgIHdobyAgIGFwcHJlY2lhdGUgICBib3RoICAgc3BlZWQgICBhbmQgICBxdWFsaXR5ICAgaW4gICB0aGVpciAgIGNhbm5hYmlzICAgc2hvcHBpbmcgIHekCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyICAgZGl2ZXJzZSAgIHNlbGVjdGlvbiAgIGNhdGVycyAgIHRvICAgYWxsICAgcHJlZmVyZW5jZXMsICAgd2hldGhlciAgIHlvdeKAmXJlICAgYSAgIHNlYXNvbmVkICAgY29ubm9pc3NldXIgICBvciAgIG5ldyAgIHRvICAgY2FubmFiaXMuICAgV2UgICBwcmlvcml0aXplICAgcXVhbGl0eSwgICBzb3VyY2luZyAgIG9ubHkgICB0aGUgICBmaW5lc3QgICBwcm9kdWN0cyAgIHRvICAgZW5zdXJlICAgY3VzdG9tZXIgICBzYXRpc2ZhY3Rpb24uICAgUmVndWxhciAgIHByb21vdGlvbnMgICBhbmQgICBkaXNjb3VudHMgICBtYWtlICAgaXQgICBlYXNpZXIgICB0aGFuICAgZXZlciAgIHRvICAgZXhwbG9yZSAgIG5ldyAgIG9mZmVyaW5ncyAgIGFuZCAgIHN0b2NrICAgdXAgICBvbiAgIGZhdm9yaXRlcy4gICBKb2luICAgb3VyICAgY29tbXVuaXR5ICAgb2YgICBzYXRpc2ZpZWQgICBjdXN0b21lcnMgICB3aG8gICBhcHByZWNpYXRlICAgYm90aCAgIHNwZWVkICAgYW5kICAgcXVhbGl0eSAgIGluICAgdGhlaXIgICBjYW5uYWJpcyAgIHNob3BwaW5nICAgZXhwZXJpZW5jZS53pghBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciAgIGRpdmVyc2UgICBzZWxlY3Rpb24gICBjYXRlcnMgICB0byAgIGFsbCAgIHByZWZlcmVuY2VzLCAgIHdoZXRoZXIgICB5b3XigJlyZSAgIGEgICBzZWFzb25lZCAgIGNvbm5vaXNzZXVyICAgb3IgICBuZXcgICB0byAgIGNhbm5hYmlzLiAgIFdlICAgcHJpb3JpdGl6ZSAgIHF1YWxpdHksICAgc291cmNpbmcgICBvbmx5ICAgdGhlICAgZmluZXN0ICAgcHJvZHVjdHMgICB0byAgIGVuc3VyZSAgIGN1c3RvbWVyICAgc2F0aXNmYWN0aW9uLiAgIFJlZ3VsYXIgICBwcm9tb3Rpb25zICAgYW5kICAgZGlzY291bnRzICAgbWFrZSAgIGl0ICAgZWFzaWVyICAgdGhhbiAgIGV2ZXIgICB0byAgIGV4cGxvcmUgICBuZXcgICBvZmZlcmluZ3MgICBhbmQgICBzdG9jayAgIHVwICAgb24gICBmYXZvcml0ZXMuICAgSm9pbiAgIG91ciAgIGNvbW11bml0eSAgIG9mICAgc2F0aXNmaWVkICAgY3VzdG9tZXJzICAgd2hvICAgYXBwcmVjaWF0ZSAgIGJvdGggICBzcGVlZCAgIGFuZCAgIHF1YWxpdHkgICBpbiAgIHRoZWlyICAgY2FubmFiaXMgICBzaG9wcGluZyAgIGV4cGVyaWVuY2UuICB3tQdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS5HZW5lcmF0aW5n4oCmdwB3qAdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS53swdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZXe1B0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICB3uQdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZXe7B0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICB3xwdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNld8kHQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgd8wHQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9md84HQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICB30gdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXJ31AdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgIHfiB0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHl35AdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICB37QdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSx37wdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgIHf4B0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkd\/oHQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgIHf9B0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG93\/wdBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICB3hAhBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZXeGCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICB3iwhBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXJ3jQhBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgIHeWCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nd5gIQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgIHegCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leXeiCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgd64IQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy53sAhBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgd7QIQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXJ3tghBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgd8AIQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWR3wghBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgd8sIQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lcnfNCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgIHfVCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNld9cIQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgIHfcCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbXfeCEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgd+EIQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXN34whBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgd+oIQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXN37AhBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgd\/IIQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeXf0CEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgIHf3CEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0b3f5CEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgd4AJQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0d4IJQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICB3hwlBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRod4kJQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgd40JQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueXePCUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgIHeaCUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsd5wJQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgIHelCUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmd3pwlBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICB3qwlBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91d60JQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgd7IJQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmV3tAlBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgd7gJQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGx3uglBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgd74JQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGV3wAlBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgd8wJQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbnfOCUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gIHfSCUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3V31AlBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICB32glBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC533AlBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gIHffCUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdld+EJQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgIHfpCUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZXfrCUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgd+4JQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW538AlBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgd\/4JQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksd4AKQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICB3igpBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmd3jApBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgIHeVCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkd5cKQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgIHefCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdHehCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgd64KQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zd7AKQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICB3tApBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmR3tgpBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgIHe6CkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYne8CkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgd8QKQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZ3fGCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgIHfOCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzd9AKQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgIHfUCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yd9YKQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgIHfcCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2V33gpBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICB34QpBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2Z34wpBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgIHfpCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQud+sKQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gIHfuCkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXN38ApBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICB38wpBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2V39QpBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgIHf+CkF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVld4ALQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgIHeDC0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG93hQtBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICB3iwtBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3Jvdyx3jQtBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgIHeQC0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdld5ILQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgIHeZC0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWlud5sLQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gIHelC0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkd6cLQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgIHeqC0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG93rAtBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICB3vAtBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksd74LQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgd8sLQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZ3fNC0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgIHfaC0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHl33AtBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICB35gtBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2Vzd+gLQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgd+sLQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGlud+0LQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICB38QtBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXJ38wtBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgIHf9C0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZ3f\/C0F0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgd4MMQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kd4UMQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kICB3jgxBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZ3eQDEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICB3mwxBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZyAgIHByb2Nlc3Nlcy53nQxBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZyAgIHByb2Nlc3Nlcy4gIHemDEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICAgcHJvY2Vzc2VzLiAgIERpc2NvdmVyd6gMQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kICAgc2hpcHBpbmcgICBwcm9jZXNzZXMuICAgRGlzY292ZXIgIHesDEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICAgcHJvY2Vzc2VzLiAgIERpc2NvdmVyICAgdGhld64MQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kICAgc2hpcHBpbmcgICBwcm9jZXNzZXMuICAgRGlzY292ZXIgICB0aGUgIHe5DEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICAgcHJvY2Vzc2VzLiAgIERpc2NvdmVyICAgdGhlICAgZGlmZmVyZW5jZXe7DEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICAgcHJvY2Vzc2VzLiAgIERpc2NvdmVyICAgdGhlICAgZGlmZmVyZW5jZSAgd8AMQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kICAgc2hpcHBpbmcgICBwcm9jZXNzZXMuICAgRGlzY292ZXIgICB0aGUgICBkaWZmZXJlbmNlICAgd2l0aHfCDEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICAgcHJvY2Vzc2VzLiAgIERpc2NvdmVyICAgdGhlICAgZGlmZmVyZW5jZSAgIHdpdGggIHfYDEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICAgcHJvY2Vzc2VzLiAgIERpc2NvdmVyICAgdGhlICAgZGlmZmVyZW5jZSAgIHdpdGggICBJbXBlcmlhbEV4dHJhY3RTdG9yZSx32gxBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZyAgIHByb2Nlc3Nlcy4gICBEaXNjb3ZlciAgIHRoZSAgIGRpZmZlcmVuY2UgICB3aXRoICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICB34AxBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZyAgIHByb2Nlc3Nlcy4gICBEaXNjb3ZlciAgIHRoZSAgIGRpZmZlcmVuY2UgICB3aXRoICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2hlcmV34gxBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZyAgIHByb2Nlc3Nlcy4gICBEaXNjb3ZlciAgIHRoZSAgIGRpZmZlcmVuY2UgICB3aXRoICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2hlcmUgIHfnDEF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICAgcHJvY2Vzc2VzLiAgIERpc2NvdmVyICAgdGhlICAgZGlmZmVyZW5jZSAgIHdpdGggICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3aGVyZSAgIHlvdXJ36QxBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZyAgIHByb2Nlc3Nlcy4gICBEaXNjb3ZlciAgIHRoZSAgIGRpZmZlcmVuY2UgICB3aXRoICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2hlcmUgICB5b3VyICB39gxBdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZyAgIHByb2Nlc3Nlcy4gICBEaXNjb3ZlciAgIHRoZSAgIGRpZmZlcmVuY2UgICB3aXRoICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2hlcmUgICB5b3VyICAgc2F0aXNmYWN0aW9ud\/gMQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kICAgc2hpcHBpbmcgICBwcm9jZXNzZXMuICAgRGlzY292ZXIgICB0aGUgICBkaWZmZXJlbmNlICAgd2l0aCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdoZXJlICAgeW91ciAgIHNhdGlzZmFjdGlvbiAgd\/sMQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kICAgc2hpcHBpbmcgICBwcm9jZXNzZXMuICAgRGlzY292ZXIgICB0aGUgICBkaWZmZXJlbmNlICAgd2l0aCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdoZXJlICAgeW91ciAgIHNhdGlzZmFjdGlvbiAgIGlzd\/0MQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kICAgc2hpcHBpbmcgICBwcm9jZXNzZXMuICAgRGlzY292ZXIgICB0aGUgICBkaWZmZXJlbmNlICAgd2l0aCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdoZXJlICAgeW91ciAgIHNhdGlzZmFjdGlvbiAgIGlzICB3gQ1BdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZyAgIHByb2Nlc3Nlcy4gICBEaXNjb3ZlciAgIHRoZSAgIGRpZmZlcmVuY2UgICB3aXRoICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2hlcmUgICB5b3VyICAgc2F0aXNmYWN0aW9uICAgaXMgICBvdXJ3gw1BdCBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgd2UgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBlZmZpY2llbmN5IGluIHRoZSBkZWxpdmVyeSBvZiBwcmVtaXVtIGNhbm5hYmlzIHByb2R1Y3RzLiBPdXIgY29tbWl0bWVudCB0byBwcm92aWRpbmcgdGltZWx5IGFuZCBzZWN1cmUgc2hpcHBpbmcgaXMgdW5tYXRjaGVkLCBlbnN1cmluZyB5b3VyIG9yZGVycyBhcnJpdmUgaW4gcHJpc3RpbmUgY29uZGl0aW9uIHJlZ2FyZGxlc3Mgb2YgeW91ciBsb2NhdGlvbi4gV2l0aCBvdXIgdHJ1c3RlZCBkZWxpdmVyeSBwYXJ0bmVycywgd2UgbWFpbnRhaW4gaGlnaCBzdGFuZGFyZHMgb2YgZGlzY3JldGlvbiBhbmQgcmVsaWFiaWxpdHksIGFsbG93aW5nIHlvdSB0byBmb2N1cyBvbiBlbmpveWluZyB5b3VyIHByb2R1Y3RzIHdpdGhvdXQgY29uY2Vybi4gQ2hvb3NlIEltcGVyaWFsRXh0cmFjdFN0b3JlIGZvciBhIHNlYW1sZXNzIHNob3BwaW5nIGV4cGVyaWVuY2UgYW5kIGV4Y2VwdGlvbmFsIHNlcnZpY2UuIE91ciBkaXZlcnNlIHNlbGVjdGlvbiBjYXRlcnMgdG8gYWxsIHByZWZlcmVuY2VzLCB3aGV0aGVyIHlvdeKAmXJlIGEgc2Vhc29uZWQgY29ubm9pc3NldXIgb3IgbmV3IHRvIGNhbm5hYmlzLiBXZSBwcmlvcml0aXplIHF1YWxpdHksIHNvdXJjaW5nIG9ubHkgdGhlIGZpbmVzdCBwcm9kdWN0cyB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiBSZWd1bGFyIHByb21vdGlvbnMgYW5kIGRpc2NvdW50cyBtYWtlIGl0IGVhc2llciB0aGFuIGV2ZXIgdG8gZXhwbG9yZSBuZXcgb2ZmZXJpbmdzIGFuZCBzdG9jayB1cCBvbiBmYXZvcml0ZXMuIEpvaW4gb3VyIGNvbW11bml0eSBvZiBzYXRpc2ZpZWQgY3VzdG9tZXJzIHdobyBhcHByZWNpYXRlIGJvdGggc3BlZWQgYW5kIHF1YWxpdHkgaW4gdGhlaXIgY2FubmFiaXMgc2hvcHBpbmcgZXhwZXJpZW5jZS4gRXhwZXJpZW5jZSAgIHRoZSAgIGNvbnZlbmllbmNlICAgb2YgICBvdXIgICB1c2VyLWZyaWVuZGx5ICAgd2Vic2l0ZSwgICBkZXNpZ25lZCAgIHRvICAgbWFrZSAgIHlvdXIgICBzaG9wcGluZyAgIGpvdXJuZXkgICBlZmZvcnRsZXNzLiAgIE91ciAgIGRlZGljYXRlZCAgIGN1c3RvbWVyICAgc2VydmljZSAgIHRlYW0gICBpcyAgIGFsd2F5cyAgIHJlYWR5ICAgdG8gICBhc3Npc3QgICB3aXRoICAgYW55ICAgaW5xdWlyaWVzLCAgIGVuc3VyaW5nICAgeW91ICAgaGF2ZSAgIGFsbCAgIHRoZSAgIGluZm9ybWF0aW9uICAgeW91ICAgbmVlZC4gICBXZSAgIGJlbGlldmUgICBpbiAgIHRyYW5zcGFyZW5jeSwgICBwcm92aWRpbmcgICBkZXRhaWxlZCAgIHByb2R1Y3QgICBkZXNjcmlwdGlvbnMgICBhbmQgICBsYWIgICB0ZXN0aW5nICAgcmVzdWx0cyAgIGZvciAgIHBlYWNlICAgb2YgICBtaW5kLiAgIEFzICAgd2UgICBjb250aW51ZSAgIHRvICAgZ3JvdywgICB3ZSAgIHJlbWFpbiAgIGNvbW1pdHRlZCAgIHRvICAgc3VzdGFpbmFiaWxpdHksICAgaW1wbGVtZW50aW5nICAgZWNvLWZyaWVuZGx5ICAgcHJhY3RpY2VzICAgaW4gICBvdXIgICBwYWNrYWdpbmcgICBhbmQgICBzaGlwcGluZyAgIHByb2Nlc3Nlcy4gICBEaXNjb3ZlciAgIHRoZSAgIGRpZmZlcmVuY2UgICB3aXRoICAgSW1wZXJpYWxFeHRyYWN0U3RvcmUsICAgd2hlcmUgICB5b3VyICAgc2F0aXNmYWN0aW9uICAgaXMgICBvdXIgIHeHDUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICAgcHJvY2Vzc2VzLiAgIERpc2NvdmVyICAgdGhlICAgZGlmZmVyZW5jZSAgIHdpdGggICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3aGVyZSAgIHlvdXIgICBzYXRpc2ZhY3Rpb24gICBpcyAgIG91ciAgIHRvcHeJDUF0IEltcGVyaWFsRXh0cmFjdFN0b3JlLCB3ZSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGVmZmljaWVuY3kgaW4gdGhlIGRlbGl2ZXJ5IG9mIHByZW1pdW0gY2FubmFiaXMgcHJvZHVjdHMuIE91ciBjb21taXRtZW50IHRvIHByb3ZpZGluZyB0aW1lbHkgYW5kIHNlY3VyZSBzaGlwcGluZyBpcyB1bm1hdGNoZWQsIGVuc3VyaW5nIHlvdXIgb3JkZXJzIGFycml2ZSBpbiBwcmlzdGluZSBjb25kaXRpb24gcmVnYXJkbGVzcyBvZiB5b3VyIGxvY2F0aW9uLiBXaXRoIG91ciB0cnVzdGVkIGRlbGl2ZXJ5IHBhcnRuZXJzLCB3ZSBtYWludGFpbiBoaWdoIHN0YW5kYXJkcyBvZiBkaXNjcmV0aW9uIGFuZCByZWxpYWJpbGl0eSwgYWxsb3dpbmcgeW91IHRvIGZvY3VzIG9uIGVuam95aW5nIHlvdXIgcHJvZHVjdHMgd2l0aG91dCBjb25jZXJuLiBDaG9vc2UgSW1wZXJpYWxFeHRyYWN0U3RvcmUgZm9yIGEgc2VhbWxlc3Mgc2hvcHBpbmcgZXhwZXJpZW5jZSBhbmQgZXhjZXB0aW9uYWwgc2VydmljZS4gT3VyIGRpdmVyc2Ugc2VsZWN0aW9uIGNhdGVycyB0byBhbGwgcHJlZmVyZW5jZXMsIHdoZXRoZXIgeW914oCZcmUgYSBzZWFzb25lZCBjb25ub2lzc2V1ciBvciBuZXcgdG8gY2FubmFiaXMuIFdlIHByaW9yaXRpemUgcXVhbGl0eSwgc291cmNpbmcgb25seSB0aGUgZmluZXN0IHByb2R1Y3RzIHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIFJlZ3VsYXIgcHJvbW90aW9ucyBhbmQgZGlzY291bnRzIG1ha2UgaXQgZWFzaWVyIHRoYW4gZXZlciB0byBleHBsb3JlIG5ldyBvZmZlcmluZ3MgYW5kIHN0b2NrIHVwIG9uIGZhdm9yaXRlcy4gSm9pbiBvdXIgY29tbXVuaXR5IG9mIHNhdGlzZmllZCBjdXN0b21lcnMgd2hvIGFwcHJlY2lhdGUgYm90aCBzcGVlZCBhbmQgcXVhbGl0eSBpbiB0aGVpciBjYW5uYWJpcyBzaG9wcGluZyBleHBlcmllbmNlLiBFeHBlcmllbmNlICAgdGhlICAgY29udmVuaWVuY2UgICBvZiAgIG91ciAgIHVzZXItZnJpZW5kbHkgICB3ZWJzaXRlLCAgIGRlc2lnbmVkICAgdG8gICBtYWtlICAgeW91ciAgIHNob3BwaW5nICAgam91cm5leSAgIGVmZm9ydGxlc3MuICAgT3VyICAgZGVkaWNhdGVkICAgY3VzdG9tZXIgICBzZXJ2aWNlICAgdGVhbSAgIGlzICAgYWx3YXlzICAgcmVhZHkgICB0byAgIGFzc2lzdCAgIHdpdGggICBhbnkgICBpbnF1aXJpZXMsICAgZW5zdXJpbmcgICB5b3UgICBoYXZlICAgYWxsICAgdGhlICAgaW5mb3JtYXRpb24gICB5b3UgICBuZWVkLiAgIFdlICAgYmVsaWV2ZSAgIGluICAgdHJhbnNwYXJlbmN5LCAgIHByb3ZpZGluZyAgIGRldGFpbGVkICAgcHJvZHVjdCAgIGRlc2NyaXB0aW9ucyAgIGFuZCAgIGxhYiAgIHRlc3RpbmcgICByZXN1bHRzICAgZm9yICAgcGVhY2UgICBvZiAgIG1pbmQuICAgQXMgICB3ZSAgIGNvbnRpbnVlICAgdG8gICBncm93LCAgIHdlICAgcmVtYWluICAgY29tbWl0dGVkICAgdG8gICBzdXN0YWluYWJpbGl0eSwgICBpbXBsZW1lbnRpbmcgICBlY28tZnJpZW5kbHkgICBwcmFjdGljZXMgICBpbiAgIG91ciAgIHBhY2thZ2luZyAgIGFuZCAgIHNoaXBwaW5nICAgcHJvY2Vzc2VzLiAgIERpc2NvdmVyICAgdGhlICAgZGlmZmVyZW5jZSAgIHdpdGggICBJbXBlcmlhbEV4dHJhY3RTdG9yZSwgICB3aGVyZSAgIHlvdXIgICBzYXRpc2ZhY3Rpb24gICBpcyAgIG91ciAgIHRvcCAgd5MNQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kICAgc2hpcHBpbmcgICBwcm9jZXNzZXMuICAgRGlzY292ZXIgICB0aGUgICBkaWZmZXJlbmNlICAgd2l0aCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdoZXJlICAgeW91ciAgIHNhdGlzZmFjdGlvbiAgIGlzICAgb3VyICAgdG9wICAgcHJpb3JpdHkud5UNQXQgSW1wZXJpYWxFeHRyYWN0U3RvcmUsIHdlIHVuZGVyc3RhbmQgdGhlIGltcG9ydGFuY2Ugb2YgZWZmaWNpZW5jeSBpbiB0aGUgZGVsaXZlcnkgb2YgcHJlbWl1bSBjYW5uYWJpcyBwcm9kdWN0cy4gT3VyIGNvbW1pdG1lbnQgdG8gcHJvdmlkaW5nIHRpbWVseSBhbmQgc2VjdXJlIHNoaXBwaW5nIGlzIHVubWF0Y2hlZCwgZW5zdXJpbmcgeW91ciBvcmRlcnMgYXJyaXZlIGluIHByaXN0aW5lIGNvbmRpdGlvbiByZWdhcmRsZXNzIG9mIHlvdXIgbG9jYXRpb24uIFdpdGggb3VyIHRydXN0ZWQgZGVsaXZlcnkgcGFydG5lcnMsIHdlIG1haW50YWluIGhpZ2ggc3RhbmRhcmRzIG9mIGRpc2NyZXRpb24gYW5kIHJlbGlhYmlsaXR5LCBhbGxvd2luZyB5b3UgdG8gZm9jdXMgb24gZW5qb3lpbmcgeW91ciBwcm9kdWN0cyB3aXRob3V0IGNvbmNlcm4uIENob29zZSBJbXBlcmlhbEV4dHJhY3RTdG9yZSBmb3IgYSBzZWFtbGVzcyBzaG9wcGluZyBleHBlcmllbmNlIGFuZCBleGNlcHRpb25hbCBzZXJ2aWNlLiBPdXIgZGl2ZXJzZSBzZWxlY3Rpb24gY2F0ZXJzIHRvIGFsbCBwcmVmZXJlbmNlcywgd2hldGhlciB5b3XigJlyZSBhIHNlYXNvbmVkIGNvbm5vaXNzZXVyIG9yIG5ldyB0byBjYW5uYWJpcy4gV2UgcHJpb3JpdGl6ZSBxdWFsaXR5LCBzb3VyY2luZyBvbmx5IHRoZSBmaW5lc3QgcHJvZHVjdHMgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gUmVndWxhciBwcm9tb3Rpb25zIGFuZCBkaXNjb3VudHMgbWFrZSBpdCBlYXNpZXIgdGhhbiBldmVyIHRvIGV4cGxvcmUgbmV3IG9mZmVyaW5ncyBhbmQgc3RvY2sgdXAgb24gZmF2b3JpdGVzLiBKb2luIG91ciBjb21tdW5pdHkgb2Ygc2F0aXNmaWVkIGN1c3RvbWVycyB3aG8gYXBwcmVjaWF0ZSBib3RoIHNwZWVkIGFuZCBxdWFsaXR5IGluIHRoZWlyIGNhbm5hYmlzIHNob3BwaW5nIGV4cGVyaWVuY2UuIEV4cGVyaWVuY2UgICB0aGUgICBjb252ZW5pZW5jZSAgIG9mICAgb3VyICAgdXNlci1mcmllbmRseSAgIHdlYnNpdGUsICAgZGVzaWduZWQgICB0byAgIG1ha2UgICB5b3VyICAgc2hvcHBpbmcgICBqb3VybmV5ICAgZWZmb3J0bGVzcy4gICBPdXIgICBkZWRpY2F0ZWQgICBjdXN0b21lciAgIHNlcnZpY2UgICB0ZWFtICAgaXMgICBhbHdheXMgICByZWFkeSAgIHRvICAgYXNzaXN0ICAgd2l0aCAgIGFueSAgIGlucXVpcmllcywgICBlbnN1cmluZyAgIHlvdSAgIGhhdmUgICBhbGwgICB0aGUgICBpbmZvcm1hdGlvbiAgIHlvdSAgIG5lZWQuICAgV2UgICBiZWxpZXZlICAgaW4gICB0cmFuc3BhcmVuY3ksICAgcHJvdmlkaW5nICAgZGV0YWlsZWQgICBwcm9kdWN0ICAgZGVzY3JpcHRpb25zICAgYW5kICAgbGFiICAgdGVzdGluZyAgIHJlc3VsdHMgICBmb3IgICBwZWFjZSAgIG9mICAgbWluZC4gICBBcyAgIHdlICAgY29udGludWUgICB0byAgIGdyb3csICAgd2UgICByZW1haW4gICBjb21taXR0ZWQgICB0byAgIHN1c3RhaW5hYmlsaXR5LCAgIGltcGxlbWVudGluZyAgIGVjby1mcmllbmRseSAgIHByYWN0aWNlcyAgIGluICAgb3VyICAgcGFja2FnaW5nICAgYW5kICAgc2hpcHBpbmcgICBwcm9jZXNzZXMuICAgRGlzY292ZXIgICB0aGUgICBkaWZmZXJlbmNlICAgd2l0aCAgIEltcGVyaWFsRXh0cmFjdFN0b3JlLCAgIHdoZXJlICAgeW91ciAgIHNhdGlzZmFjdGlvbiAgIGlzICAgb3VyICAgdG9wICAgcHJpb3JpdHkuICB3JDMwZTg0OGI1LWVmODMtNDg2MS1iOTk5LWVkZDg0NGMwNDNkYXcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl7QnnYi2dFkAB9hsvX0g13JDE1YTNlNGY1LWU2MzYtNGIyYS04OTQxLTJhMTE2MGM3ZjdjMXh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyRhZGVhMTMyMy1jNjQxLTRkNWItYTg0MS0xYzA5OTYyYmU3YjN4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AALLucWqBy0FAQEA7TIBAgMBAAEAAQEBAgEEAQABBgICAQABAwEBAgIBAQQDAgABAAQAAgYFAQEAAwACAAEBAQQBAAEAAQALBAEBCQABAwEBAQEBAAoAAwPNJwABAQGzARIBJBTG5avpBkUAnQUWAAQCAgABAAEBAQAEAgIEAgcBAw0DHQEBAAoBBwECAAIABQAHAAYBAQMCAAIADwIEAQIABgABAAEBAwADAAEBAgACAAQAAQEBAAIAAQABAAUBBAAMAQMABQAHAAEACgEEAAIBAwACAAIBCAAFAAEAAQADAQcAAwAJAAMAAQADAAMACL0D6wSGB+AO3AM=\",\"updateId\":935528012}","_uag_custom_page_level_css":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[5446,5443,5445,5448,5447,5440,5442,5444,5441],"class_list":["post-11513","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-delivery","tag-dhl-shipping","tag-fedex-shipping","tag-free-delivery","tag-free-shipping","tag-shipping","tag-ups-shipping","tag-usps-shipping","tag-worldwide-shipping"],"uagb_featured_image_src":{"full":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs.jpg",960,1280,false],"thumbnail":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs-150x150.jpg",150,150,true],"medium":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs-225x300.jpg",225,300,true],"medium_large":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs-768x1024.jpg",768,1024,true],"large":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs-768x1024.jpg",768,1024,true],"1536x1536":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs.jpg",960,1280,false],"2048x2048":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs.jpg",960,1280,false],"trp-custom-language-flag":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs-9x12.jpg",9,12,true],"woocommerce_thumbnail":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs-300x300.jpg",300,300,true],"woocommerce_single":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs-600x800.jpg",600,800,true],"woocommerce_gallery_thumbnail":["https:\/\/imperialextractstore.com\/wp-content\/uploads\/2025\/05\/packs-100x100.jpg",100,100,true]},"uagb_author_info":{"display_name":"Imperial Extracts","author_link":"https:\/\/imperialextractstore.com\/es\/author\/imperialextractstore-com\/"},"uagb_comment_info":0,"uagb_excerpt":"Free &amp; Fast Shipping with Imperial Extracts Store: USA &amp; Worldwide Delivery in Days At Imperial Extract Store, we believe [&hellip;]","_links":{"self":[{"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/posts\/11513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/comments?post=11513"}],"version-history":[{"count":8,"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/posts\/11513\/revisions"}],"predecessor-version":[{"id":13473,"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/posts\/11513\/revisions\/13473"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/media\/11515"}],"wp:attachment":[{"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/media?parent=11513"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/categories?post=11513"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imperialextractstore.com\/es\/wp-json\/wp\/v2\/tags?post=11513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}