{"id":6229,"date":"2026-07-06T18:36:20","date_gmt":"2026-07-06T18:36:20","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-9-test-1-listening\/"},"modified":"2026-07-12T03:25:00","modified_gmt":"2026-07-12T03:25:00","slug":"celpip-set-9-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-9-test-1-listening\/","title":{"rendered":"CELPIP Set 9 \u00b7 Practice Test 1 \u2014 Listening"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n<div class=\"clp-wrap\" id=\"clpApp\" data-variant=\"A\">\n<p>  <!-- ============ 1. HERO ============ --><\/p>\n<section class=\"clp-hero\" data-screen-label=\"Hero\">\n<div class=\"clp-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clp-hero-shimmer\"><\/div>\n<div class=\"clp-hero-badges\">\n      <span class=\"clp-badge-brand\">CELPIP<\/span><br \/>\n      <span class=\"clp-badge-set\">Set 9 &#183; Practice Test 1<\/span>\n    <\/div>\n<h1>CELPIP Listening Practice Test<\/h1>\n<div class=\"clp-hero-chips\">\n      <span class=\"clp-chip\">6 parts<\/span><br \/>\n      <span class=\"clp-chip\">38 questions<\/span><br \/>\n      <span class=\"clp-chip\">~47 minutes<\/span><br \/>\n      <span class=\"clp-chip\">Everything plays once<\/span>\n    <\/div>\n<p>    <button class=\"clp-cta\" id=\"clpStart\">Start test<\/button><br \/>\n  <\/section>\n<p>  <!-- ============ Sticky practice toolbar ============ --><\/p>\n<div class=\"clp-toolbar\" id=\"clpToolbar\" hidden data-screen-label=\"Toolbar\">\n    <span class=\"clp-score-chip\" id=\"clpScoreChip\">Answered 0\/38<\/span><br \/>\n    <span class=\"clp-toolbar-spacer\"><\/span><br \/>\n    <button class=\"clp-tbtn\" id=\"clpTimerToggle\">Timer: on<\/button><br \/>\n    <button class=\"clp-tbtn clp-tbtn-check\" id=\"clpCheck\">Check answers<\/button><br \/>\n    <button class=\"clp-tbtn\" id=\"clpReset\">Reset<\/button>\n  <\/div>\n<p>  <!-- ============ 2. CAT SIMULATOR ============ --><\/p>\n<section class=\"clp-sim\" id=\"clpSim\" data-screen-label=\"CAT Simulator\">\n<div class=\"clp-dots\" id=\"clpDots\"><\/div>\n<div class=\"clp-cat\" id=\"clpCat\"><\/div>\n<\/section>\n<p>  <!-- ============ 3. RESULTS ============ --><\/p>\n<section class=\"clp-results\" id=\"clpResults\" hidden data-screen-label=\"Results\"><\/section>\n<\/div>\n<p><script>eval(atob('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMXMxLTUubXAzIiwiMC4xIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3AxczItNS5tcDMiLCIwLjIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvcDFzMy01Lm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMi01Lm1wMyIsIjIuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMy00Lm1wMyIsIjMuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNC01Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNS00Lm1wNCIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNi00Lm1wMyJ9O3ZhciBDTFBfQVVESU9fVklERU89eyI0LjAiOjF9OwoKKGZ1bmN0aW9uKCl7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtzLnRleHRDb250ZW50PSJcbi8qID09PT09PT09PT09PSBDRUxQSVAgTGlzdGVuaW5nIFByYWN0aWNlIFx1MjAxNCBzY29wZWQsIFdvcmRQcmVzcy1zYWZlID09PT09PT09PT09PSAqL1xuLmNscC13cmFwe1xuICAvKiBWQVJJQU5UX0NIUk9NRV9TVEFSVCAqL1xuICAtLWJhci1iZzojRThFQkVGO1xuICAtLWJhci1ib3JkZXI6I0QzRDlFMDtcbiAgLS1iYXItdGV4dDojMUYyOTM3O1xuICAtLXBhbmVsLW1lZGlhLWJnOiNGNEY1Rjc7XG4gIC0tcGFuZWwtbWVkaWEtYm9yZGVyOiNFM0U2RUE7XG4gIC0tbWVkaWEtY2FyZC1iZzojRUNFRUYxO1xuICAtLW1lZGlhLWNhcmQtYm9yZGVyOiNEOERERTM7XG4gIC0tcGFuZWwtcS1iZzojRTlGNEY3O1xuICAtLXBhbmVsLXEtYm9yZGVyOiNENkU4RUQ7XG4gIC0tZGQtb3Blbi1iZzojQ0JFQkY0O1xuICAvKiBWQVJJQU5UX0NIUk9NRV9FTkQgKi9cbiAgLS1uYXZ5OiMwNTBFMjA7IC0tZGFyazojMEExNjI4OyAtLWI5MDA6IzBEMjM1MjsgLS1iNzAwOiMxMjQ1QTg7IC0tYjUwMDojMjU2M0VCO1xuICAtLWI0MDA6IzNCODJGNjsgLS1iMjAwOiM5M0M1RkQ7IC0tYjEwMDojREJFQUZFOyAtLWI1MDojRUZGNkZGO1xuICAtLXRlYWw6IzBEOTQ4ODsgLS1jeWFuOiMwNkI2RDQ7IC0tZ3JlZW46IzEwQjk4MTsgLS1ncmVlbjUwOiNFQ0ZERjU7XG4gIC0tcm9zZTojRjQzRjVFOyAtLW9yYW5nZTojRjk3MzE2O1xuICAtLXRleHQ6IzBGMTcyQTsgLS1tdXRlZDojNDc1NTY5OyAtLXN1YnRsZTojOTRBM0I4OyAtLWJvcmRlcjojRTJFOEYwO1xuICAtLWNyaW1zb246I0I0MkIzQzsgLS13aGl0ZTojRkZGRkZGOyAtLXBhZ2U6I0Y4RkFGRjtcbiAgZm9udC1mYW1pbHk6J1BsdXMgSmFrYXJ0YSBTYW5zJyxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxzYW5zLXNlcmlmO1xuICBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgbWF4LXdpZHRoOjExNDBweDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZzoxNnB4IDE2cHggNDhweDtcbiAgbGluZS1oZWlnaHQ6MS41OyBmb250LXNpemU6MTZweDtcbn1cbi5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfVxuLmNscC13cmFwIGJ1dHRvbnsgZm9udC1mYW1pbHk6aW5oZXJpdDsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtd3JhcCBoMSwuY2xwLXdyYXAgaDIsLmNscC13cmFwIGgzLC5jbHAtd3JhcCBweyBtYXJnaW46MDsgfVxuXG4vKiA9PT09PT09PT09PT0gSEVSTyA9PT09PT09PT09PT0gKi9cbi5jbHAtaGVyb3tcbiAgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsgYm9yZGVyLXJhZGl1czoyMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW5hdnkpOyBjb2xvcjojZmZmO1xuICBwYWRkaW5nOjM2cHggNDBweDtcbiAgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxNHB4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0O1xuICBib3gtc2hhZG93OjAgMjBweCA0MHB4IC0yMHB4IHJnYmEoNSwxNCwzMiwuNDUpLCAwIDRweCAxMnB4IC02cHggcmdiYSg1LDE0LDMyLC4zKTtcbn1cbi5jbHAtYXVyb3JheyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTsgfVxuLmNscC1hdXJvcmEgc3BhbntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci1yYWRpdXM6NTAlOyBmaWx0ZXI6Ymx1cig2MHB4KTsgb3BhY2l0eTouNTtcbiAgYW5pbWF0aW9uOmNscEZsb2F0IDE0cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG59XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXsgd2lkdGg6NDIwcHg7IGhlaWdodDo0MjBweDsgbGVmdDotMTIwcHg7IHRvcDotMjAwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMTI0NUE4IDAlLHRyYW5zcGFyZW50IDcwJSk7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDIpeyB3aWR0aDozODBweDsgaGVpZ2h0OjM4MHB4OyByaWdodDotODBweDsgdG9wOi0xNjBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi00czsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7IHdpZHRoOjM0MHB4OyBoZWlnaHQ6MzQwcHg7IHJpZ2h0OjIyJTsgYm90dG9tOi0yNDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi04czsgfVxuQGtleWZyYW1lcyBjbHBGbG9hdHtcbiAgZnJvbXsgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKTsgfVxuICB0b3sgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDQwcHgsMjZweCwwKSBzY2FsZSgxLjEyKTsgfVxufVxuLmNscC1oZXJvLXNoaW1tZXJ7XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lO1xuICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHRyYW5zcGFyZW50IDMwJSwgcmdiYSgxNDcsMTk3LDI1MywuMTApIDQ1JSwgcmdiYSg2LDE4MiwyMTIsLjEyKSA1MCUsIHRyYW5zcGFyZW50IDY1JSk7XG4gIGJhY2tncm91bmQtc2l6ZToyNTAlIDEwMCU7XG4gIGFuaW1hdGlvbjpjbHBTaGltbWVyIDdzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBjbHBTaGltbWVyeyAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEyMCUgMDt9IDU1JXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IDEwMCV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSB9XG4uY2xwLWhlcm8tYmFkZ2VzeyBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1iYWRnZS1icmFuZHtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTJweDtcbiAgbGV0dGVyLXNwYWNpbmc6LjEyZW07IHBhZGRpbmc6NXB4IDEycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xufVxuLmNscC1iYWRnZS1zZXR7IGNvbG9yOnZhcigtLWIyMDApOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyB9XG4uY2xwLWhlcm8gaDF7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMmVtOyBsaW5lLWhlaWdodDoxLjEyOyB9XG4uY2xwLWhlcm8tY2hpcHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjhweDsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWNoaXB7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDkpOyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTQ3LDE5NywyNTMsLjI1KTtcbiAgY29sb3I6I0RCRUFGRTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgcGFkZGluZzo2cHggMTRweDsgYm9yZGVyLXJhZGl1czozMnB4O1xuICBiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJhY2tncm91bmQgLjI1cyBlYXNlO1xufVxuLmNscC1jaGlwOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNSk7IH1cbi5jbHAtY3Rhe1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDM0cHg7IG1hcmdpbi10b3A6MnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjY1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjIycyBlYXNlLCBib3gtc2hhZG93IC4yMnMgZWFzZSwgYmFja2dyb3VuZCAuMjJzIGVhc2U7XG59XG4uY2xwLWN0YTpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IGJveC1zaGFkb3c6MCAxNHB4IDI2cHggLThweCByZ2JhKDM3LDk5LDIzNSwuNzUpOyB9XG5cbi8qID09PT09PT09PT09PSBTVElDS1kgVE9PTEJBUiA9PT09PT09PT09PT0gKi9cbi5jbHAtdG9vbGJhcltoaWRkZW5deyBkaXNwbGF5Om5vbmU7IH1cbi5jbHAtdG9vbGJhcntcbiAgcG9zaXRpb246c3RpY2t5OyB0b3A6OHB4OyB6LWluZGV4OjYwO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZsZXgtd3JhcDp3cmFwO1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjkyKTsgYmFja2Ryb3AtZmlsdGVyOmJsdXIoOHB4KTtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7XG4gIHBhZGRpbmc6OHB4IDEycHg7IG1hcmdpbjoxOHB4IDAgMDtcbiAgYm94LXNoYWRvdzowIDhweCAyNHB4IC0xNHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggNnB4IC00cHggcmdiYSgxNSwyMyw0MiwuMTIpO1xuICBtaW4taGVpZ2h0OjUycHg7XG59XG4uY2xwLXNjb3JlLWNoaXB7XG4gIGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLWI5MDApO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo3cHggMTZweDtcbn1cbi5jbHAtdGJ0bntcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjlweCAxNnB4O1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xuICBtaW4taGVpZ2h0OjQwcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBib3gtc2hhZG93IC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC10YnRuOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgYm94LXNoYWRvdzowIDZweCAxNHB4IC04cHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtdGJ0bi1jaGVja3sgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGJvcmRlci1jb2xvcjp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IH1cbi5jbHAtdGJ0bi1jaGVjazpob3ZlcnsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG4uY2xwLXRidG5bZGlzYWJsZWRdeyBvcGFjaXR5Oi41OyBjdXJzb3I6bm90LWFsbG93ZWQ7IHRyYW5zZm9ybTpub25lOyBib3gtc2hhZG93Om5vbmU7IH1cbi5jbHAtdG9vbGJhci1zcGFjZXJ7IGZsZXg6MTsgfVxuXG4vKiA9PT09PT09PT09PT0gQ0FUIFNJTVVMQVRPUiA9PT09PT09PT09PT0gKi9cbi5jbHAtc2lteyBtYXJnaW4tdG9wOjE4cHg7IH1cbi5jbHAtZG90c3sgZGlzcGxheTpmbGV4OyBnYXA6NnB4OyBtYXJnaW46MCAwIDEwcHggMnB4OyB9XG4uY2xwLWRvdHtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLXN1YnRsZSk7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo0cHggMTBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4yNXMgZWFzZSwgY29sb3IgLjI1cyBlYXNlO1xufVxuLmNscC1kb3QuY2xwLWRvbmV7IGJhY2tncm91bmQ6dmFyKC0tYjEwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iMjAwKTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtZG90LmNscC1jdXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgfVxuLmNscC1kb3QuY2xwLWNsaWNrYWJsZXsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtZG90Om5vdCguY2xwLWNsaWNrYWJsZSl7IGN1cnNvcjpkZWZhdWx0OyB9XG5cbi5jbHAtY2F0e1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4OyBvdmVyZmxvdzp2aXNpYmxlO1xuICBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuMjIpLCAwIDJweCA4cHggLTVweCByZ2JhKDE1LDIzLDQyLC4xKTtcbn1cbi5jbHAtYmFye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6MTBweCAxMHB4IDAgMDtcbiAgcGFkZGluZzo5cHggMTJweDsgbWluLWhlaWdodDo0NHB4O1xufVxuLmNscC1iYXItdGl0bGV7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1iYXItdGltZXJ7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IHdoaXRlLXNwYWNlOm5vd3JhcDsgfVxuLmNscC1iYXItdGltZXIgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLW5leHR7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjcwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjRweDtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgcGFkZGluZzo3cHggMTZweDsgbWluLWhlaWdodDozMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsIHRyYW5zZm9ybSAuMnMgZWFzZTtcbn1cbi5jbHAtbmV4dDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iOTAwKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IH1cbi5jbHAtc2NyZWVueyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuXG4uY2xwLWluc3Rye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IGdhcDo5cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4IDEycHg7IGJhY2tncm91bmQ6I2ZmZjtcbn1cbi5jbHAtaW5mb3tcbiAgZmxleDpub25lOyB3aWR0aDoxOHB4OyBoZWlnaHQ6MThweDsgbWFyZ2luLXRvcDoycHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMXB4OyBmb250LXN0eWxlOml0YWxpYztcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO1xufVxuLmNscC1pbnN0ciBweyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuXG4vKiBpbnRybyBzY3JlZW4gKi9cbi5jbHAtaW50cm8tYm9keXsgcGFkZGluZzo2cHggMjBweCAyNnB4IDQ0cHg7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1pbnRyby1ib2R5IGgzeyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6ODAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMnB4OyB9XG4uY2xwLWJ1bGxldHN7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyBtYXgtd2lkdGg6NjQwcHg7IH1cbi5jbHAtYnVsbGV0cyBsaXtcbiAgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIHBhZGRpbmctYm90dG9tOjEwcHg7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xufVxuLmNscC1idWxsZXRzIGxpOjpiZWZvcmV7IGNvbnRlbnQ6XCJcIjsgZmxleDpub25lOyB3aWR0aDo4cHg7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBtYXJnaW4tdG9wOjZweDsgfVxuXG4vKiBtZWRpYSBzY3JlZW4gKi9cbi5jbHAtbWVkaWEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtbWVkaWEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1tZWRpYS1ib3JkZXIpO1xuICBwYWRkaW5nOjM0cHggMjBweCAyNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDtcbn1cbi5jbHAtbWVkaWEtY2FyZHtcbiAgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjUyMHB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW1lZGlhLWNhcmQtYmcpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBwYWRkaW5nOjIycHggMjZweDtcbn1cbi5jbHAtbWVkaWEtY2FyZC5jbHAtaXMtdmlkZW97IG1heC13aWR0aDo2NjBweDsgcGFkZGluZzoxMnB4OyB9XG4uY2xwLW1lZGlhLXpvbmV7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MThweDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLXpvbmV7XG4gIGFzcGVjdC1yYXRpbzoxNi85OyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDp2YXIoLS1kYXJrKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTJweDtcbiAgY29sb3I6I2ZmZjtcbn1cbi5jbHAtc3BlYWtlcntcbiAgZmxleDpub25lOyB3aWR0aDo1NnB4OyBoZWlnaHQ6NTZweDsgYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQ6I2ZmZjtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG59XG4uY2xwLWlzLXZpZGVvIC5jbHAtc3BlYWtlcnsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMik7IGJvcmRlcjpub25lOyBjb2xvcjojZmZmOyB3aWR0aDo2NHB4OyBoZWlnaHQ6NjRweDsgYm9yZGVyLXJhZGl1czo1MCU7IH1cbi5jbHAtbWVkaWEtbWFpbnsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLW1haW57IHBhZGRpbmc6MCAxMHB4IDRweDsgfVxuLmNscC1tZWRpYS1sYWJlbHsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtcHJvZ3Jlc3N7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1wcm9ncmVzc3sgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC42KTsgfVxuLmNscC1wcm9ncmVzcy1maWxseyBoZWlnaHQ6MTAwJTsgd2lkdGg6MCU7IGJhY2tncm91bmQ6dmFyKC0tY3lhbik7IGJvcmRlci1yYWRpdXM6NnB4OyB0cmFuc2l0aW9uOndpZHRoIC4zcyBsaW5lYXI7IH1cbi5jbHAtbWVkaWEtbWV0YXtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7XG59XG4uY2xwLW1lZGlhLW1ldGEgc3ZneyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLW9uY2Utbm90ZXsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuXG4vKiBxdWVzdGlvbiBzY3JlZW4gKi9cbi5jbHAtcS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1xLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtcS1ib3JkZXIpO1xuICBwYWRkaW5nOjIwcHggMjJweCAzMHB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjIwcHg7XG59XG4uY2xwLXF7IGZvbnQtc2l6ZToxNS41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IGxpbmUtaGVpZ2h0OjI7IH1cbi5jbHAtcW51bXsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLWRke1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7XG4gIGJvcmRlcjpub25lOyBib3JkZXItYm90dG9tOjJweCBkb3R0ZWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgY29sb3I6dmFyKC0tYjcwMCk7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7XG4gIHBhZGRpbmc6NHB4IDhweCAzcHg7IG1hcmdpbjowIDJweDsgbWluLWhlaWdodDozMnB4OyBtYXgtd2lkdGg6MTAwJTtcbiAgYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDsgdmVydGljYWwtYWxpZ246YmFzZWxpbmU7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZGQ6aG92ZXJ7IGJhY2tncm91bmQ6cmdiYSgzNyw5OSwyMzUsLjA4KTsgfVxuLmNscC1kZC5jbHAtb3BlbnsgYmFja2dyb3VuZDp2YXIoLS1kZC1vcGVuLWJnKTsgfVxuLmNscC1kZCAuY2xwLWRkLXRleHR7XG4gIG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgd2hpdGUtc3BhY2U6bm93cmFwOyBtYXgtd2lkdGg6NDIwcHg7XG59XG4uY2xwLWRkIC5jbHAtZGQtY2FyZXR7IGZvbnQtc2l6ZTo5cHg7IGNvbG9yOnZhcigtLWI3MDApOyBmbGV4Om5vbmU7IH1cbi5jbHAtZGQuY2xwLXVuYW5zd2VyZWQgLmNscC1kZC10ZXh0eyBsZXR0ZXItc3BhY2luZzoycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IH1cbi5jbHAtZGQuY2xwLW1hcmstcmlnaHR7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7IGJvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6IzA0Nzg1NzsgfVxuLmNscC1kZC5jbHAtbWFyay13cm9uZ3sgYmFja2dyb3VuZDojRkZGMUYyOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXJvc2UpOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6I0JFMTIzQzsgfVxuLmNscC1kZFtkaXNhYmxlZF17IGN1cnNvcjpkZWZhdWx0OyB9XG4uY2xwLXJldmVhbHtcbiAgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEzLjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojMDQ3ODU3OyBsaW5lLWhlaWdodDoxLjU7XG4gIG1hcmdpbjoycHggMCAwIDI2cHg7XG59XG4uY2xwLXJldmVhbCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtdG9kby10YWd7XG4gIGZvbnQtc2l6ZToxMHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyBjb2xvcjp2YXIoLS1vcmFuZ2UpO1xuICBib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgYm9yZGVyLXJhZGl1czo0cHg7IHBhZGRpbmc6MXB4IDZweDsgbWFyZ2luLWxlZnQ6OHB4OyB2ZXJ0aWNhbC1hbGlnbjoycHg7XG59XG5cbi8qIGRyb3Bkb3duIHBvcHVwICovXG4uY2xwLXBvcHtcbiAgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6ODA7IHdpZHRoOm1pbigzNDBweCwgY2FsYygxMDB2dyAtIDQ4cHgpKTtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgYm94LXNoYWRvdzowIDE4cHggNDBweCAtMTJweCByZ2JhKDE1LDIzLDQyLC4yOCksIDAgNHB4IDEycHggLTZweCByZ2JhKDE1LDIzLDQyLC4xNCk7XG4gIHBhZGRpbmc6NnB4OyBcbn1cbi5jbHAtb3B0e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjExcHg7IHdpZHRoOjEwMCU7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpO1xuICBwYWRkaW5nOjEwcHggMTJweDsgbWluLWhlaWdodDo0MnB4OyBib3JkZXItcmFkaXVzOjZweDtcbiAgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzIGVhc2U7XG59XG4uY2xwLW9wdDpsYXN0LWNoaWxkeyBib3JkZXItYm90dG9tOm5vbmU7IH1cbi5jbHAtb3B0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtcmFkaW97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MTdweDsgaGVpZ2h0OjE3cHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6I2ZmZjsgcG9zaXRpb246cmVsYXRpdmU7XG59XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW97IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgfVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlvOjphZnRlcntcbiAgY29udGVudDpcIlwiOyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6Mi41cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApO1xufVxuXG4vKiBwcmUtc3RhcnQgLyBmaW5pc2ggKi9cbi5jbHAtaWRsZXtcbiAgcGFkZGluZzo1NnB4IDI0cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDtcbn1cbi5jbHAtaWRsZSBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1heC13aWR0aDo0ODBweDsgbWFyZ2luOjAgYXV0bzsgfVxuLmNscC1maW5pc2h7IHBhZGRpbmc6NDhweCAyNHB4IDU2cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtZmluaXNoIGgzeyBmb250LXNpemU6MjJweDsgZm9udC13ZWlnaHQ6ODAwOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtZmluaXNoIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbToyMnB4OyB9XG4uY2xwLWZpbmlzaC1jaGVja3tcbiAgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDE2LDE4NSwxMjksLjU1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWZpbmlzaC1jaGVjazpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTVUxUUyA9PT09PT09PT09PT0gKi9cbi5jbHAtcmVzdWx0c3sgbWFyZ2luLXRvcDozMHB4OyB9XG4uY2xwLXJlc3VsdHMgaDJ7IGZvbnQtc2l6ZToyNHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDFlbTsgbWFyZ2luLWJvdHRvbToxNnB4OyB9XG4uY2xwLXJlcy1ncmlkeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcjsgZ2FwOjE2cHg7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH1cbi5jbHAtY2FyZHtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgcGFkZGluZzoyMnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggOHB4IC02cHggcmdiYSgxNSwyMyw0MiwuMDgpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJveC1zaGFkb3cgLjI1cyBlYXNlO1xufVxuLmNscC1jYXJkOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYm94LXNoYWRvdzowIDE2cHggMzZweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC1yaW5nLWNhcmR7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7IG1pbi13aWR0aDoyMjBweDsgfVxuLmNscC1yaW5nLXdyYXB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMzJweDsgaGVpZ2h0OjEzMnB4OyB9XG4uY2xwLXJpbmctd3JhcCBzdmd7IHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgZGlzcGxheTpibG9jazsgfVxuLmNscC1yaW5nLW51bXtcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uO1xuICBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtd2VpZ2h0OjgwMDtcbn1cbi5jbHAtcmluZy1udW0gYnsgZm9udC1zaXplOjI4cHg7IGxpbmUtaGVpZ2h0OjE7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLXJpbmctbnVtIHNwYW57IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcmluZy1jYXJkIGgzeyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcGFydC1jaGlwc3sgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgZ2FwOjEwcHg7IG1hcmdpbi10b3A6MTJweDsgfVxuLmNscC1wYXJ0LWNoaXB7XG4gIGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo4cHggMTZweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBjb2xvcjp2YXIoLS1iOTAwKTtcbn1cbi5jbHAtcGFydC1jaGlwIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1jbGItcm93e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW4tdG9wOjE2cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4OyBib3JkZXItcmFkaXVzOjEwcHg7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtcbn1cbi5jbHAtY2xiLWJhZGdle1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4O1xuICBib3JkZXItcmFkaXVzOjEwcHg7IHBhZGRpbmc6OHB4IDE2cHg7XG59XG4uY2xwLWNsYi1yb3cgcHsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwOyBmbGV4OjE7IG1pbi13aWR0aDoyMDBweDsgfVxuLmNscC10cmFuc2NyaXB0c3sgbWFyZ2luLXRvcDoxNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IH1cbi5jbHAtdHItY2FyZHsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLXRyLWhlYWR7XG4gIHdpZHRoOjEwMCU7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgZ2FwOjEwcHg7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyBwYWRkaW5nOjE1cHggMjBweDsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWluLWhlaWdodDo0OHB4O1xufVxuLmNscC10ci1oZWFkOmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtdHItaGVhZCAuY2xwLXRyLWNhcmV0eyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXNpemU6MTFweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2U7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWNhcmV0eyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH1cbi5jbHAtdHItYm9keXsgZGlzcGxheTpub25lOyBwYWRkaW5nOjAgMjBweCAxOHB4OyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo1MDA7IGxpbmUtaGVpZ2h0OjEuNzsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItYm9keXsgZGlzcGxheTpibG9jazsgfVxuLmNscC10ci10b2RveyBjb2xvcjp2YXIoLS1vcmFuZ2UpOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxMi41cHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6OHB4OyB9XG5cbi8qIHNjcm9sbCByZXZlYWwgKi9cbi5jbHAtcmV2eyBvcGFjaXR5OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKDE2cHgpOyB0cmFuc2l0aW9uOm9wYWNpdHkgLjVzIGVhc2UsIHRyYW5zZm9ybSAuNXMgZWFzZTsgfVxuLmNscC1yZXYuY2xwLWlueyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG5cbi8qID09PT09PT09PT09PSBSRVNQT05TSVZFID09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6NzAwcHgpe1xuICAuY2xwLXdyYXB7IHBhZGRpbmc6MTBweCAxMHB4IDQwcHg7IH1cbiAgLmNscC1oZXJveyBwYWRkaW5nOjI4cHggMjJweDsgYm9yZGVyLXJhZGl1czoxNnB4OyB9XG4gIC5jbHAtcXsgZm9udC1zaXplOjE1cHg7IH1cbiAgLmNscC1kZHsgbWluLWhlaWdodDo0MHB4OyB9XG4gIC5jbHAtZGQgLmNscC1kZC10ZXh0eyBtYXgtd2lkdGg6MTgwcHg7IH1cbiAgLmNscC1iYXJ7IGZsZXgtd3JhcDp3cmFwOyB9XG4gIC5jbHAtYmFyLXRpdGxleyBmbGV4LWJhc2lzOjEwMCU7IH1cbiAgLmNscC1xLXBhbmVseyBwYWRkaW5nOjE2cHggMTRweCAyNnB4OyB9XG4gIC5jbHAtaW50cm8tYm9keXsgcGFkZGluZy1sZWZ0OjIwcHg7IH1cbiAgLmNscC1yZXMtZ3JpZHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjsgfVxuICAuY2xwLW1lZGlhLWNhcmR7IHBhZGRpbmc6MTZweDsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upe1xuICAuY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVye1xuICAgIGFuaW1hdGlvbjpub25lICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246bm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5jbHAtcmV2eyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG59XG5cbi5jbHAtYXVyb3JhIHNwYW57ZmlsdGVyOmJsdXIoMzZweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9XG4uY2xwLWhlcm8tc2hpbW1lcnt3aWxsLWNoYW5nZTpiYWNrZ3JvdW5kLXBvc2l0aW9ufVxuIjtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO30pKCk7CgondXNlIHN0cmljdCc7Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBURVNUX0RBVEEgXHUyMDE0IHN3YXAgaW4gbmV3IHNldHMgaGVyZSB3aXRob3V0IHRvdWNoaW5nIG1hcmt1cC4KICAgU2hhcGU6IHsgcGFydHM6W3sgbmFtZSwgaGVhZGVyVGl0bGUsIGludHJvVGl0bGUsIGludHJvQnVsbGV0c1tdLAogICAgICAgICAgICBxSW5zdHJ1Y3Rpb24sIHRyYW5zY3JpcHQsIHNlY3Rpb25zOlt7IGxhYmVsLCBtZWRpYVR5cGUsCiAgICAgICAgICAgIGR1cmF0aW9uKHNlYyksIHRpbWVNaW51dGVzLCBtZWRpYUluc3RydWN0aW9uLAogICAgICAgICAgICBxdWVzdGlvbnM6W3sgbiwgc3RlbSwgb3B0aW9uc1s0XSwga2V5KDEtNCksIHRvZG8\/IH1dIH1dIH1dIH0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCnZhciBURVNUX0RBVEEgPSB7InRlc3RMYWJlbCI6IlNldCA5IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEiLCJzZXRObyI6OSwidGVzdE5vIjoxLCJwYXJ0cyI6W3sibmFtZSI6IlBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImhlYWRlclRpdGxlIjoiU2V0IDkgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImludHJvVGl0bGUiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGF0IGEgbWFzc2FnZSBjbGluaWMuIiwiaW50cm9CdWxsZXRzIjpbIkEgbWFuIGlzIGFza2luZyBhYm91dCBib29raW5nIG1hc3NhZ2UgYXBwb2ludG1lbnRzLiIsIllvdSB3aWxsIGhlYXIgdGhlIGNvbnZlcnNhdGlvbiBvbmx5IG9uY2UuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSBhcmUgYWJvdXQgdG8gaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGF0IGEgbWFzc2FnZSBjbGluaWMuXG5UaGUgd29tYW4gd29ya3MgYXQgdGhlIGNsaW5pYyBhbmQgdGhlIG1hbiBpcyBhc2tpbmcgZm9yIGluZm9ybWF0aW9uLlxuU2VjdGlvbiAxOlxuTUFOOiBIaSB0aGVyZS4gSSB3YXMgd2Fsa2luZyBieSBhbmQgbm90aWNlZCB5b3VyIHNpZ24gb3V0c2lkZS4gSXQgc2F5cyB0aGF0IHlvdSBkb1xubWFzc2FnZSB0aGVyYXB5IGhlcmUgYW5kIHlvdSBjYW4gYmlsbCBteSBoZWFsdGggaW5zdXJhbmNlIGZvciBwYXJ0IG9mIGl0LiBJcyB0aGF0IGNvcnJlY3Q\/XG5XT01BTjogSXQgY2VydGFpbmx5IGlzLiBXZSBkbyBtYXNzYWdlIGFuZCBhY3VwdW5jdHVyZSBoZXJlLiBXb3VsZCB5b3UgbGlrZSB0b1xuYm9vayBhbiBhcHBvaW50bWVudD9cbk1BTjogWWVzLCBidXQgZmlyc3QgSSB3YW50IHRvIG1ha2Ugc3VyZSBpdFx1MjAxOXMgY292ZXJlZCB0aHJvdWdoIG15IGhlYWx0aCBpbnN1cmFuY2UgcGxhbiBhdFxud29yay4gSVx1MjAxOWxsIGNvbWUgYmFjayBvbmNlIEkgZmluZCBvdXQuXG5XT01BTjogTm8gcHJvYmxlbS4gQnV0IGp1c3QgdG8gbGV0IHlvdSBrbm93LCBpbiBvcmRlciB0byBiZSBjb3ZlcmVkIGZvciBzcGVjaWFsXG50aGVyYXBpZXMgbGlrZSBtYXNzYWdlIG9yIGFjdXB1bmN0dXJlLCBtb3N0IGhlYWx0aCBpbnN1cmFuY2UgY29tcGFuaWVzIHJlcXVpcmUgYSByZWZlcnJhbFxubm90ZSBmcm9tIGEgZmFtaWx5IHBoeXNpY2lhbi5cbk1BTjogT2ggcmVhbGx5PyBPaywgd2VsbCBJIGFjdHVhbGx5IGhhdmUgYW4gYXBwb2ludG1lbnQgd2l0aCBteSBmYW1pbHkgZG9jdG9yXG50b21vcnJvdy5cbldPTUFOOiAgICAgICAgVGhhdFx1MjAxOXMgcGVyZmVjdCEgU2VlIHlvdSBsYXRlciB0aGVuLlxuTm93IGFuc3dlciBxdWVzdGlvbnMgMS0yLlxuV2hhdCBpcyB0aGUgbWFuIGlucXVpcmluZyBhYm91dD9cbldoYXQgaXMgdGhlIG5leHQgc3RlcCBmb3IgdGhlIG1hbj9cblxuU2VjdGlvbiAyOlxuTUFOOiBIaSwgSVx1MjAxOW0gYmFjaywgYW5kIEkgaGF2ZSBhIHJlZmVycmFsIGZvcm0gZnJvbSBteSBkb2N0b3IuIElcdTIwMTl2ZSBoYWQgdGhpcyB0ZXJyaWJsZSBwYWluXG5pbiBteSBzaG91bGRlciBmb3Igd2Vla3MsIHByb2JhYmx5IGZyb20gcGxheWluZyBiYXNrZXRiYWxsIG9yIGJhc2ViYWxsLlxuV09NQU46IFdlbGwsIHdlIGhhdmUgcmVnaXN0ZXJlZCBtYXNzYWdlIHRoZXJhcGlzdHMgdGhhdCBzcGVjaWFsaXplIGluIHNwb3J0c1xuaW5qdXJpZXMuIFdvdWxkIHlvdSBwcmVmZXIgYSBmdWxsIGJvZHkgbWFzc2FnZSBvciBqdXN0IHRvIHRyZWF0IHRoYXQgb25lIHNwZWNpZmljIGFyZWE\/XG5NQU46IEkgdGhpbmsgSVx1MjAxOWQgcHJlZmVyIHRvIGZvY3VzIG9uIG15IHVwcGVyIGJhY2suIFRoYXRcdTIwMTlzIGhlbHBlZCBiZWZvcmUuIE15IGFybXMsIGxlZ3MsXG5hbmQgZmVldCBnZXQgYSBsaXR0bGUgYWNoeSBhZnRlciBhIGdhbWUsIGJ1dCBub3RoaW5nIHRvbyBib3RoZXJzb21lLlxuXGZXT01BTjogT0suIFdlIGNhbiBib29rIHlvdXIgbWFzc2FnZSBmb3IgMzAgbWludXRlcywgNDUgbWludXRlcywgNjAgbWludXRlcywgb3Jcbjc1IG1pbnV0ZXMuXG5NQU46IEhtbSwgd2hhdCBkbyB5b3Ugc3VnZ2VzdD8gSVx1MjAxOWQgbG92ZSBhIDc1LW1pbnV0ZSBtYXNzYWdlLCBidXQgbWF5YmUgdGhhdFx1MjAxOXMgdG9vXG5tdWNoIHRpbWUgdG8gc3BlbmQgb24gb25lIGFyZWEuIFRoaXJ0eSBtaW51dGVzIHNlZW1zIHRvbyBzaG9ydCwgdGhvdWdoLlxuV09NQU46IFdlbGwsIHNpbmNlIHlvdVx1MjAxOXJlIG9ubHkgdHJlYXRpbmcgb25lIGFyZWEsIElcdTIwMTlkIHByb2JhYmx5IHJlY29tbWVuZCBhIDQ1LVxubWludXRlIG1hc3NhZ2UuXG5NQU46IE9oLCBJIGFsbW9zdCBmb3Jnb3QuIE15IGdpcmxmcmllbmQgd2FudHMgdG8gY29tZSB0b28uIERvIHlvdSBoYXZlIHR3b1xuYXBwb2ludG1lbnRzIGF0IHRoZSBzYW1lIHRpbWU\/IFNoZSB3YW50cyBhIDYwLW1pbnV0ZSByZWxheGF0aW9uIG1hc3NhZ2UuXG5XT01BTjogT0sgdGhlbiAuIC4gLiB5b3VcdTIwMTlyZSBpbiBsdWNrLCBpdCBsb29rcyBsaWtlIHdlXHUyMDE5dmUgaGFkIGEgY2FuY2VsbGF0aW9uIGFuZCBJIGNhblxuZml0IHlvdSBib3RoIGluIFRodXJzZGF5LCBhdCBmaXZlIG9cdTIwMTljbG9jay5cbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDMtNS5cbldoYXQgYXJlYSBvZiBoaXMgYm9keSBpcyBib3RoZXJpbmcgdGhlIG1hbj9cbkhvdyBsb25nIHdpbGwgdGhlIG1hblx1MjAxOXMgYXBwb2ludG1lbnQgYmU\/XG5XaGF0IGlzIGxpa2VseSB0cnVlIGFib3V0IHRoZSBtYW4\/XG5cblNlY3Rpb24gMzpcbldPTUFOOiAgICAgICAgU28sIGhvdyB3YXMgeW91ciBtYXNzYWdlPyBEb2VzIHlvdXIgc2hvdWxkZXIgZmVlbCBiZXR0ZXI\/XG5NQU46IFllcywgaXQgcmVhbGx5IGRvZXMhIE15IHRoZXJhcGlzdCB1c2VkIGp1c3QgdGhlIHJpZ2h0IGFtb3VudCBvZiBwcmVzc3VyZS4gV291bGQgaXRcbmJlIHBvc3NpYmxlIHRvIGJvb2sgbW9udGhseSBhcHBvaW50bWVudHMgd2l0aCBoZXI\/XG5XT01BTjogT2YgY291cnNlISBJXHUyMDE5bSBnbGFkIHlvdVx1MjAxOXJlIHBsZWFzZWQuIEhvdyBhYm91dCB5b3VyIGdpcmxmcmllbmQ\/IERpZCBzaGVcbmhhdmUgYSBwb3NpdGl2ZSBleHBlcmllbmNlP1xuTUFOOiBJXHUyMDE5bSBub3Qgc3VyZSAuIC4gLiBzaGVcdTIwMTlzIG5vdCBvdXQgeWV0LlxuV09NQU46ICAgICAgICBPSyB0aGVuLCBzbyBpcyB0aGVyZSBhIGRheSBhbmQgdGltZSB0aGF0IHdvdWxkIHdvcmsgYmVzdCBmb3IgeW91P1xuTUFOOiBNb25kYXkgZXZlbmluZ3Mgd291bGQgYmUgZ29vZCwgYWZ0ZXIgNTozMCB3aGVuIEkgZ2V0IG9mZiBmcm9tIHdvcmsuIEl0XHUyMDE5ZCBiZSBhXG5ncmVhdCB3YXkgdG8gc3RhcnQgdGhlIHdlZWsuIE1heWJlIHRoZSBsYXN0IE1vbmRheSBvZiBlYWNoIG1vbnRoLlxuTm93IGFuc3dlciBxdWVzdGlvbnMgNi04LlxuSG93IGRvZXMgdGhlIG1hbiBmZWVsIGFib3V0IGhpcyBtYXNzYWdlP1xuV2hhdCBkb2VzIHRoZSBtYW4gd2FudCB0byBkbz9cbldoeSBkaWQgdGhlIG1hbiB3YW50IHRoZSB0aW1lIGhlIGNob3NlPyIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAxIiwiZHVyYXRpb24iOjQ4LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYW4gaW5xdWlyaW5nIGFib3V0PyIsIm9wdGlvbnMiOlsicGF5aW5nIGZvciBhcHBvaW50bWVudHMiLCJib29raW5nIGEgaG90ZWwgcm9vbSIsImpvaW5pbmcgYSBzcG9ydHMgdGVhbSIsInJlbmV3aW5nIGEgZ3ltIG1lbWJlcnNoaXAiXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2hhdCBpcyB0aGUgbmV4dCBzdGVwIGZvciB0aGUgbWFuPyIsIm9wdGlvbnMiOlsicGF5IGEgZGVwb3NpdCIsImdldCBhIGRvY3VtZW50IGZyb20gaGlzIGRvY3RvciIsImZpbGwgb3V0IGEgbG9uZyBmb3JtIiwiY2FsbCBiYWNrIG5leHQgd2VlayJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMiIsImR1cmF0aW9uIjo4MCwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6Mywic3RlbSI6IldoYXQgYXJlYSBvZiBoaXMgYm9keSBpcyBib3RoZXJpbmcgdGhlIG1hbj8iLCJvcHRpb25zIjpbImhpcyBsb3dlciBiYWNrIiwiaGlzIG5lY2siLCJoaXMgc2hvdWxkZXIiLCJoaXMga25lZSJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJIb3cgbG9uZyB3aWxsIHRoZSBtYW5cdTIwMTlzIGFwcG9pbnRtZW50IGJlPyIsIm9wdGlvbnMiOlsiMzAgbWludXRlcyIsIjQ1IG1pbnV0ZXMiLCI2MCBtaW51dGVzIiwiOTAgbWludXRlcyJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGlzIGxpa2VseSB0cnVlIGFib3V0IHRoZSBtYW4\/Iiwib3B0aW9ucyI6WyJIZSB3b3JrcyBhdCBhIGRlc2sgYWxsIGRheS4iLCJIZSBsaWtlcyB0byBwbGF5IHNwb3J0cy4iLCJIZSByYXJlbHkgZXhlcmNpc2VzLiIsIkhlIGhhcyBhIGNocm9uaWMgaW5qdXJ5LiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMyIsImR1cmF0aW9uIjo0NiwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmaW5hbCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjYsInN0ZW0iOiJIb3cgZG9lcyB0aGUgbWFuIGZlZWwgYWJvdXQgaGlzIG1hc3NhZ2U\/Iiwib3B0aW9ucyI6WyJkaXNhcHBvaW50ZWQiLCJpbXByZXNzZWQiLCJ1bmNvbWZvcnRhYmxlIiwiaW5kaWZmZXJlbnQiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo3LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBtYW4gd2FudCB0byBkbz8iLCJvcHRpb25zIjpbImNhbmNlbCBoaXMgbWVtYmVyc2hpcCIsInNjaGVkdWxlIHJlZ3VsYXIgYXBwb2ludG1lbnRzIiwiYXNrIGZvciBhIHJlZnVuZCIsInRyeSBhIGRpZmZlcmVudCB0aGVyYXBpc3QiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo4LCJzdGVtIjoiV2h5IGRpZCB0aGUgbWFuIHdhbnQgdGhlIHRpbWUgaGUgY2hvc2U\/Iiwib3B0aW9ucyI6WyJJdCBpcyB0aGUgY2hlYXBlc3Qgc2xvdC4iLCJJdCB3aWxsIHJlbGF4IGhpbSBmb3IgdGhlIHVwY29taW5nIHdlZWsuIiwiSXQgZml0cyBoaXMgd29yayBzY2hlZHVsZS4iLCJJdCBpcyB0aGUgb25seSBvbmUgYXZhaWxhYmxlLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDkgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIHR3byBuZWlnaGJvdXJzLiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIHRoZSBjb252ZXJzYXRpb24gb25seSBvbmNlLiIsIlRoZW4gYW5zd2VyIHRoZSBxdWVzdGlvbnMuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gbmVpZ2hib3Vycy5cblxuTUFOOiBUYW55YSEgWW91XHUyMDE5cmUgYmFjayBmcm9tIGNhbXAhIEkgdGhvdWdodCB5b3Ugd2VyZSBnb25lIHVudGlsIHRvbW9ycm93PyBEaWRcbnlvdSBnZXQgYm9yZWQ\/XG5XT01BTjogTm8sIGNhbXAgd2FzIGdyZWF0LiBCdXQgdGhlIHJvYWRzIGJhY2sgd2VyZSBjbGVhciwgcHJldHR5IG11Y2ggdGhlIHdob2xlXG53YXksIHNvIHdlIG1hZGUgZ3JlYXQgdGltZS5cbk1BTjogV2VsbCwgaXRcdTIwMTlzIGdvb2QgdG8gc2VlIHlvdS4gV2UgbWlzc2VkIHlvdSBndXlzIGF0IGNhcmQgZ2FtZXMgbmlnaHQgbGFzdCBTYXR1cmRheS5cbldPTUFOOiBIYSEgWW91IG1lYW4geW91IG1pc3NlZCBoYXZpbmcgc29tZW9uZSB0byBiZWF0ISBJXHUyMDE5bSBzdGlsbCBub3QgY29udmluY2VkXG55b3UgZG9uXHUyMDE5dCBjaGVhdCBzb21laG93IC4gLiAuIG5vIG9uZSBjYW4gd2luIGV2ZXJ5IHRpbWUgd2l0aG91dCBhIGZldyB0cmlja3MgdXAgdGhlaXJcbnNsZWV2ZS4gQW55d2F5cywgc28gd2hhdFx1MjAxOXMgbmV3P1xuTUFOOiBOb3QgbXVjaFx1MjAxNHNhbWUgb2xkLCBzYW1lIG9sZC4gT2ghIEJ1dCBvbiBUdWVzZGF5LCB3aGVuIEkgd2FzIHZvbHVudGVlcmluZyBhdFxudGhlIGNvbW11bml0eSBjZW50ZXIsIEkgc2F3IHNvbWV0aGluZyBwb3N0ZWQgdGhhdCBtaWdodCBpbnRlcmVzdCB5b3UuXG5XT01BTjogUmVhbGx5PyBXZXJlIHRoZXkgYWR2ZXJ0aXNpbmcgZG9nIHRyYWluaW5nIGNsYXNzZXMgYnkgYW55IGNoYW5jZT8gSSBkb25cdTIwMTl0XG5rbm93IGlmIGl0IHdhcyBqdXN0IHBheWJhY2sgZm9yIHRha2luZyBoaW0gb24gaGlzIGZpcnN0IGxvbmcgY2FyIHJpZGUsIGJ1dCBUZWRkeSB3YXNcbmNhdXNpbmcgc29tZSBzZXJpb3VzIHRyb3VibGUgb24gb3VyIHRyaXAuXG5NQU46IFdlbGwsIHRoZXkgbWlnaHQgaGF2ZSB0aG9zZSB0b28sIGFsdGhvdWdoIFRlZGR5IGFsd2F5cyBzZWVtcyB0byBiZSBvbiBwZXJmZWN0XG5iZWhhdmlvdXIgd2hlbiBJXHUyMDE5bSBhcm91bmQuIEJ1dCBubywgdGhlIHBvc3RlciBJIHNhdyB3YXMgYWJvdXQgYSBuZXcgY2lyY3VzIHNjaG9vbCB0aGF0XG5qdXN0IG9wZW5lZCBhIGZldyBibG9ja3MgYXdheSAuIC4gLiBpbiB0aGF0IGdyZXkgYnVpbGRpbmcgbmV4dCB0byB0aGUgZ3JvY2VyeSBzdG9yZS4gSSB3YXNcbnRoaW5raW5nIC4gLiAuIHlvdVx1MjAxOXJlIGFsd2F5cyBzYXlpbmcgaG93IG11Y2ggeW91IHdhbnRlZCB0byBiZSBhIGNpcmN1cyBwZXJmb3JtZXJcbmdyb3dpbmcgdXBcdTIwMTRub3dcdTIwMTlzIHlvdXIgY2hhbmNlIVxuV09NQU46IEFyZSB5b3Ugc2VyaW91cz8gQSBjaXJjdXMgc2Nob29sPyBJXHUyMDE5ZCBsb3ZlIHRoYXQhIEkgaW1hZ2luZSBpdFx1MjAxOXMganVzdCBmb3Iga2lkcyxcbnRob3VnaC4gVGhlcmUgcHJvYmFibHkgYXJlblx1MjAxOXQgbWFueSBhZHVsdHMgb3V0IHRoZXJlIHN0aWxsIGRyZWFtaW5nIG9mIGJlaW5nIGNpcmN1cyBzdGFycy5cbk1BTjogQWN0dWFsbHksIEkgY2hlY2tlZCBpdCBvdXQsIGFuZCB0aGUgbWFqb3JpdHkgb2YgY2xhc3NlcyBhcmUgZm9yIGFkdWx0cy4gQXBwYXJlbnRseSxcbnlvdSBhcmVuXHUyMDE5dCB0aGF0IHN0cmFuZ2UgYWZ0ZXIgYWxsISBTYW1hbnRoYSBldmVuIGZvdW5kIGEgY2xhc3MgdGhhdCBzaGUgdGhvdWdodCBsb29rZWQgZnVuXG4uIC4gLiBzb21lIHNvcnQgb2YgY29tYmluYXRpb24gb2YgeW9nYSBhbmQgYWNyb2JhdGljcy5cbldPTUFOOiBBaGgsIGFjcm95b2dhLiBJIGNvdWxkIHNlZSBoZXIgbGlraW5nIHRoYXQhIFdlbGwsIElcdTIwMTlsbCBkZWZpbml0ZWx5IGhhdmUgdG9cbmNoZWNrIGl0IG91dC4gSSBob3BlIHRoZXkgaGF2ZSBjbGFzc2VzIGluIHRyYXBlemVcdTIwMTR0aGF0XHUyMDE5cyB3aGF0IElcdTIwMTl2ZSBhbHdheXMgd2FudGVkIHRvIHRyeVxudGhlIG1vc3QuXG5NQU46IFRoZXkgaGF2ZSBvbmUgb24gU2F0dXJkYXkgbmlnaHRzIGFuZCBicmlnaHQgYW5kIGVhcmx5IFN1bmRheSBtb3JuaW5ncy5cblxmV09NQU46IFl1Y2shIEkgaGF0ZSBnZXR0aW5nIHVwIGVhcmx5LCBlc3BlY2lhbGx5IG9uIGEgU3VuZGF5ISBCdXQgSSBjYW5cdTIwMTl0IGxlYXZlIHlvdVxud2l0aG91dCBzb21lb25lIHRvIGJlYXQgYXQgY2FyZHMgb24gU2F0dXJkYXkgbmlnaHQgLiAuIC4gc28gSSBndWVzcyBJXHUyMDE5bGwgYmUgc2V0dGluZyBteSBhbGFybVxuY2xvY2shXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyAxLTUuXG5XaGF0IGlzIHRoaXMgY29udmVyc2F0aW9uIG1haW5seSBhYm91dD9cbldoeSBkaWQgdGhlIHdvbWFuIGdldCBiYWNrIHRvIHRvd24gZWFybHk\/XG5XaGF0IGlzIHByb2JhYmx5IHRydWUgYWJvdXQgdGhlIHdvbWFuIGluIHRoZSBjb252ZXJzYXRpb24\/XG5XaGljaCBzdGF0ZW1lbnQgd291bGQgdGhlIG1hbiBsaWtlbHkgYWdyZWUgd2l0aD9cbldoYXQgd2FzIHRoZSB3b21hblx1MjAxOXMgZGVjaXNpb24gYXQgdGhlIGVuZCBvZiB0aGUgY29udmVyc2F0aW9uPyIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsImR1cmF0aW9uIjoxNDEsIm1lZGlhVHlwZSI6ImF1ZGlvIiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgaXMgdGhpcyBjb252ZXJzYXRpb24gbWFpbmx5IGFib3V0PyIsIm9wdGlvbnMiOlsiYSBuZXcgYWN0aXZpdHkgYXZhaWxhYmxlIGluIHRoZSBjb21tdW5pdHkiLCJhIHRyaXAgdGhlIHdvbWFuIHRvb2siLCJhIHByb2JsZW0gd2l0aCB0aGUgcm9hZHMiLCJhIGNhcmQgZ2FtZSB0b3VybmFtZW50Il0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoeSBkaWQgdGhlIHdvbWFuIGdldCBiYWNrIHRvIHRvd24gZWFybHk\/Iiwib3B0aW9ucyI6WyJTaGUgbGVmdCBlYXJsaWVyIHRoYW4gcGxhbm5lZC4iLCJUaGVyZSB3YXNuXHUyMDE5dCBtdWNoIHRyYWZmaWMgb24gdGhlIHJvYWRzLiIsIkhlciBwbGFucyB3ZXJlIGNhbmNlbGxlZC4iLCJTaGUgdG9vayBhIGZhc3RlciByb3V0ZS4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2hhdCBpcyBwcm9iYWJseSB0cnVlIGFib3V0IHRoZSB3b21hbiBpbiB0aGUgY29udmVyc2F0aW9uPyIsIm9wdGlvbnMiOlsiU2hlIGlzIGFuIGV4cGVydCBjYXJkIHBsYXllci4iLCJTaGUgb2Z0ZW4gbG9zZXMgd2hlbiBwbGF5aW5nIGNhcmRzLiIsIlNoZSBkaXNsaWtlcyBncm91cCBhY3Rpdml0aWVzLiIsIlNoZSB0cmF2ZWxzIGZyZXF1ZW50bHkuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NCwic3RlbSI6IldoaWNoIHN0YXRlbWVudCB3b3VsZCB0aGUgbWFuIGxpa2VseSBhZ3JlZSB3aXRoPyIsIm9wdGlvbnMiOlsiT2xkIGhhYml0cyBhcmUgaGFyZCB0byBicmVhay4iLCJJdFx1MjAxOXMgbmV2ZXIgdG9vIGxhdGUgdG8gbGVhcm4gbmV3IHNraWxscy4iLCJDbGFzc2VzIGFyZSBhIHdhc3RlIG9mIG1vbmV5LiIsIlByYWN0aWNlIGlzIG5vdCBpbXBvcnRhbnQuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQgd2FzIHRoZSB3b21hblx1MjAxOXMgZGVjaXNpb24gYXQgdGhlIGVuZCBvZiB0aGUgY29udmVyc2F0aW9uPyIsIm9wdGlvbnMiOlsiU2hlIHdpbGwgdGhpbmsgYWJvdXQgaXQuIiwiU2hlIHdpbGwgc2lnbiB1cCBmb3Igb25lIG9mIHRoZSBjbGFzc2VzLiIsIlNoZSB3aWxsIGRlY2xpbmUgdGhlIG9mZmVyLiIsIlNoZSB3aWxsIGFzayBhIGZyaWVuZCBmaXJzdC4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDkgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImludHJvVGl0bGUiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGFib3V0IHdyaXRpbmcgcmV2aWV3cy4iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciB0aGUgY29udmVyc2F0aW9uIG9ubHkgb25jZS4iLCJUaGVuIGFuc3dlciB0aGUgcXVlc3Rpb25zLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51LiIsInRyYW5zY3JpcHQiOiJZb3UgYXJlIGFib3V0IHRvIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gZnJpZW5kcy5cbk1BTjogSGkgQWxpY2UsIGhvdyBhcmUgeW91PyBTdGlsbCB3YXRjaGluZyBhIGRpZmZlcmVudCBtb3ZpZSBldmVyeSBuaWdodD9cbldPTUFOOiBZZXMsIERhbmllbCwgSSBhbSEgSSdtIHNvIGdsYWQgeW91IHJlY29tbWVuZGVkIHRoYXQgSSBzdWJzY3JpYmUgdG8gdGhhdFxuaW50ZXJuYXRpb25hbCBtb3ZpZSBjaGFubmVsISBJdCBkb2Vzbid0IGFkZCB0aGF0IG11Y2ggdG8gbXkgdGVsZXZpc2lvbiBiaWxsIGV2ZXJ5IG1vbnRoLFxuYW5kIEknbSByZWFsbHkgZW5qb3lpbmcgaXQhIEknbGwgbmV2ZXIgaGF2ZSB0byBnbyBvdXQgdG8gYSB0aGVhdHJlIHRvIHNlZSBhIG1vdmllIGFnYWluIVxuTUFOOiBIYXZlIHlvdSBjb25zaWRlcmVkIHdyaXRpbmcgcmV2aWV3cz8gTWF5YmUgeW91IGNvdWxkIGdldCB0aGVtIHBvc3RlZCBvbmxpbmUsXG5vbiBhIG1vdmllIGJsb2cuXG5XT01BTjogICAgICAgIE9oLCBJJ20gbm90IHN1cmUgLiAuIC4gSSd2ZSBuZXZlciB3cml0dGVuIGEgbW92aWUgcmV2aWV3IGJlZm9yZS5cbk1BTjogSXQncyBub3QgdGhhdCBkaWZmaWN1bHQuIFlvdSBoYWQgdG8gd3JpdGUgYm9vayByZXZpZXdzIGluIHNjaG9vbCwgZGlkbid0IHlvdT8gRmlyc3QsXG55b3Ugc2hvdWxkIGlkZW50aWZ5IHRoZSBnZW5yZTogZm9yIGV4YW1wbGUsIGlzIHRoZSBtb3ZpZSBhIGNvbWVkeSBvciBhIHJvbWFuY2Ugb3IgYW5cbmFjdGlvbiBtb3ZpZT8gVGhlbiB5b3UgY2FuIHRhbGsgYWJvdXQgdGhlIHBsb3Q6IHdoYXQgaGFwcGVucy5cbldPTUFOOiAgICAgICAgQnV0IEkgZG9uJ3Qgd2FudCB0byBzcG9pbCB0aGUgbW92aWUgZm9yIG90aGVyIHBlb3BsZSFcbk1BTjogRXhhY3RseS4gU28gZWl0aGVyIGRvbid0IHRlbGwgdGhlbSBob3cgaXQgZW5kcyBvciB0ZWxsIHRoZW0gaW4gYWR2YW5jZSB0aGF0IHlvdSdyZVxuZ29pbmcgdG8uIEl0J3MgY2FsbGVkIGEgXHUyMDFjc3BvaWxlciBhbGVydC5cdTIwMWQgWW91IGNhbiBhbHNvIHRhbGsgYWJvdXQgdGhlIGNoYXJhY3RlcnMgYW5kIHRoZVxuZGlhbG9ndWU6IGFyZSB0aGUgcGVvcGxlIGludGVyZXN0aW5nOyBpcyB0aGVpciBjb252ZXJzYXRpb24gcmVhbGlzdGljP1xuV09NQU46IEluIGJvb2sgcmV2aWV3cywgd2UgYWxzbyB0YWxrZWQgYWJvdXQgdGhlbWUgYW5kIHNldHRpbmcuIEkgY291bGQgZG8gdGhhdCBmb3JcbnRoZSBtb3ZpZSBhcyB3ZWxsLlxuTUFOOiBZZXMuIEFuZCB0aGVuLCBzaW5jZSBhIG1vdmllIGlzIE5PVCBhIGJvb2ssIHlvdSBjYW4gdGFsayBhYm91dCB0aGUgYWN0aW5nLCB0aGVcbmNvc3R1bWVzLCB0aGUgc291bmR0cmFjaywgdGhlIHNwZWNpYWwgZWZmZWN0c1x1MjAxNFxuXGZXT01BTjogICAgICAgU291bmR0cmFjaz8gU3BlY2lhbCBlZmZlY3RzP1xuTUFOOiBUaGUgc291bmR0cmFjayBpcyB0aGUgbXVzaWMuIFJlbWVtYmVyIHRoYXQgQ2VsaW5lIERpb24gc29uZyBmcm9tIHRoYXQgbW92aWUgd2VcbndhdGNoZWQgdG9nZXRoZXIgYXQgbXkgcGxhY2VcdTIwMTRUaXRhbmljPyBBbmQgc3BlY2lhbCBlZmZlY3RzXHUyMDE0cmVtZW1iZXIgdGhhdCBTdGFyIFRyZWtcbm1vdmllIEkgZ2F2ZSB5b3U\/XG5XT01BTjogSSBMT1ZFIHRoYXQgc29uZyEgQW5kIHRoZSBTdGFyIFRyZWsgbW92aWUgd2FzIGZ1bGwgb2Ygc3BhY2VzaGlwcyBhbmRcbmFsaWVuIGNyZWF0dXJlcyAuIC4gLiBPaCwgSSBzZWUgd2hhdCB5b3UgbWVhbi4gQW55IG90aGVyIGFkdmljZT9cbk1BTjogV2VsbCwgYWdhaW4sIEkgZW5jb3VyYWdlIHlvdSB0byBzdWJtaXQgeW91ciByZXZpZXdzIHRvIGEgbW92aWUgYmxvZyBvclxuc29tZXRoaW5nLiBJIHRoaW5rIHRoYXQgdGhlcmUncyBhIGdyZWF0IG5lZWQgZm9yIHJldmlld3MgYWJvdXQgbW92aWVzIHRoYXQgYXJlIE5PVCB5b3VyXG50eXBpY2FsIEhvbGx5d29vZCBwcm9kdWN0aW9ucyB0aGF0IGV2ZXJ5Ym9keSBzZWVzIGFuZCBldmVyeWJvZHkga25vd3MgYWJvdXQuXG5XT01BTjogICAgICAgT2theSwgdGhhbmtzISBJIGNhbid0IHdhaXQgdG8gc2hvdyB5b3UgbXkgZmlyc3QgYXR0ZW1wdCFcbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDEtNi5cbldoYXQgaXMgdGhlIGNvbnZlcnNhdGlvbiBtYWlubHkgYWJvdXQ\/XG5XaHkgaXMgdGhlIHdvbWFuIHdhdGNoaW5nIGEgbG90IG9mIG1vdmllcz9cbldoYXQgZG9lcyB0aGUgbWFuIHNheSBhYm91dCByZXZlYWxpbmcgdGhlIGVuZGluZyBvZiBhIG1vdmllIGluIGEgcmV2aWV3P1xuV2hhdCBpcyB0cnVlIG9mIHRoZSB3b21hbj9cbldoYXQga2luZCBvZiBtb3ZpZXMgZG9lcyB0aGUgd29tYW4gdGVuZCB0byB3YXRjaD9cbkhvdyBkb2VzIHRoZSB3b21hbiBmZWVsIGFib3V0IHRoZSBtYW5cdTIwMTlzIG92ZXJhbGwgc3VnZ2VzdGlvbj8iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24iLCJkdXJhdGlvbiI6MTQxLCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHRoZSBjb252ZXJzYXRpb24gbWFpbmx5IGFib3V0PyIsIm9wdGlvbnMiOlsiaG93IHRvIGRvIHNvbWV0aGluZyBzb21ld2hhdCBuZXciLCJ3aGljaCBtb3ZpZSB0byB3YXRjaCB0b25pZ2h0IiwiYSBib29rIHRoZSB3b21hbiBpcyByZWFkaW5nIiwiYSBqb2IgdGhlIHdvbWFuIGFwcGxpZWQgZm9yIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoeSBpcyB0aGUgd29tYW4gd2F0Y2hpbmcgYSBsb3Qgb2YgbW92aWVzPyIsIm9wdGlvbnMiOlsiU2hlIGlzIHN0dWR5aW5nIGZpbG0uIiwiU2hlIGhhcyBhY2Nlc3MgdG8gYSB0ZWxldmlzaW9uIG1vdmllIGNoYW5uZWwuIiwiU2hlIGhhcyBhIGxvdCBvZiBmcmVlIHRpbWUuIiwiSGVyIGZyaWVuZHMgcmVjb21tZW5kIHRoZW0uIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoYXQgZG9lcyB0aGUgbWFuIHNheSBhYm91dCByZXZlYWxpbmcgdGhlIGVuZGluZyBvZiBhIG1vdmllIGluIGEgcmV2aWV3PyIsIm9wdGlvbnMiOlsiTmV2ZXIgZG8gaXQuIiwiV2FybiByZWFkZXJzIGJlZm9yZSBkb2luZyBzby4iLCJPbmx5IGZvciBvbGRlciBtb3ZpZXMuIiwiSXQgYXR0cmFjdHMgbW9yZSByZWFkZXJzLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGlzIHRydWUgb2YgdGhlIHdvbWFuPyIsIm9wdGlvbnMiOlsiU2hlIHdvcmtzIGFzIGEgZmlsbSBjcml0aWMuIiwiU2hlIHdyb3RlIGJvb2sgcmV2aWV3cyBpbiBzY2hvb2wuIiwiU2hlIGhhcyBuZXZlciB3cml0dGVuIGEgcmV2aWV3LiIsIlNoZSBzdHVkaWVkIGpvdXJuYWxpc20uIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQga2luZCBvZiBtb3ZpZXMgZG9lcyB0aGUgd29tYW4gdGVuZCB0byB3YXRjaD8iLCJvcHRpb25zIjpbImFjdGlvbiBtb3ZpZXMiLCJtb3ZpZXMgcHJvZHVjZWQgaW4gZGlmZmVyZW50IGNvdW50cmllcyIsImNsYXNzaWMgZmlsbXMiLCJkb2N1bWVudGFyaWVzIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Niwic3RlbSI6IkhvdyBkb2VzIHRoZSB3b21hbiBmZWVsIGFib3V0IHRoZSBtYW5cdTIwMTlzIG92ZXJhbGwgc3VnZ2VzdGlvbj8iLCJvcHRpb25zIjpbImRvdWJ0ZnVsIiwiZW50aHVzaWFzdGljIiwib3ZlcndoZWxtZWQiLCJ1bmludGVyZXN0ZWQiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaGVhZGVyVGl0bGUiOiJTZXQgOSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIG5ld3Mgc3RvcnkgYWJvdXQgYW4gaW50ZXJnZW5lcmF0aW9uYWwgcHJvZ3JhbS4iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciB0aGUgbmV3cyBpdGVtIG9ubHkgb25jZS4iLCJJdCBpcyBhYm91dCAxLjUgbWludXRlcyBsb25nLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51LiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgbmV3cyBpdGVtIGFib3V0IGEgbG9jYWwgZGV2ZWxvcG1lbnQuXG5cbkEgbmV3IGRheWNhcmUgaXMgc2V0IHRvIG9wZW4gYXQgTWF5ZmFpciBTZW5pb3JzXHUyMDE5IFJlc2lkZW5jZSB0aGlzIG1vbnRoLiBUaGUgY29uY2VwdCxcbmFsdGhvdWdoIG5vdCBuZXcgaW4gQ2FuYWRhLCBpcyB0aGUgZmlyc3Qgb2YgaXRzIGtpbmQgaW4gU2Fza2F0Y2hld2FuLiBJbiBmYWN0LCB0aGUgY2l0eSBvZlxuVG9yb250byBoYXMgYmVlbiBydW5uaW5nIGNvbWJpbmVkIGZhY2lsaXRpZXMgZm9yIG92ZXIgMjUgeWVhcnMgd2l0aCB0cmVtZW5kb3VzIHN1Y2Nlc3MuXG5UaGUgY29tYmluZWQgY2FyZSBjZW50cmVzIGFyZSBpbnRlbmRlZCB0byBmb3N0ZXIgaW50ZXJnZW5lcmF0aW9uYWwgaW50ZXJhY3Rpb24gYW1vbmcgdGhlXG5jaGlsZHJlbiBhbmQgc2VuaW9ycy4gUHN5Y2hvbG9naXN0IEx5bmRhIFJvZ2VycyBzYXlzIHRoZXJlIGFyZSBiZW5lZml0cyBmb3IgYm90aCBwYXJ0aWVzLlxuXG5PbiB0aGUgb25lIGhhbmQsIHNlbmlvcnMgYXJlIGVuY291cmFnZWQgdG8gc29jaWFsaXplIGFuZCBnZXQgbW92aW5nIGJ5IHBhcnRpY2lwYXRpbmcgaW5cbmFjdGl2aXRpZXMgd2l0aCB0aGUgY2hpbGRyZW4sIHdoaWNoIGFyZSBzdXBlcnZpc2VkIGFuZCBvcmdhbml6ZWQgYnkgbGljZW5jZWRcbnByb2Zlc3Npb25hbHMuIE90aGVyIHBvdGVudGlhbCBoZWFsdGggYmVuZWZpdHMgZm9yIHNlbmlvcnMgaW5jbHVkZSBsb3dlciBsZXZlbHMgb2ZcbmRlcHJlc3Npb24gYW5kIHNsb3dlciBjb2duaXRpdmUgZGVjbGluZS4gRm9yIHRoZSBjaGlsZHJlbiwgUm9nZXJzIHNheXMgaXRcdTIwMTlzIGFuIG9wcG9ydHVuaXR5XG5cZnRvIGRldmVsb3AgZW1wYXRoeSBhbmQgdW5kZXJzdGFuZGluZyB0b3dhcmRzIG90aGVycy4gSXQgbWF5IGV2ZW4gaGVscCByZWR1Y2UgYWdlXG5kaXNjcmltaW5hdGlvbi5cblxuU29tZSBjb21tdW5pdHkgbWVtYmVycyBoYXZlIGV4cHJlc3NlZCBoZWFsdGggY29uY2VybnM7IGhvd2V2ZXIsIG1hbmFnZXIgb2ZcblRvcm9udG9cdTIwMTlzIGVhcmx5IGNoaWxkaG9vZCBlZHVjYXRpb24gZmFjaWxpdGllcywgTWFuc291ciBKYWxhbGkgYXJndWVzIHRoYXQgdGhlaXIgY2VudHJlc1xuaGF2ZSBub3Qgc2VlbiBhbnkgc2lnbmlmaWNhbnQgaW5jcmVhc2UgaW4gaWxsbmVzc2VzIGJlY2F1c2UgY2FyZWZ1bCBzYW5pdGF0aW9uIG1lYXN1cmVzIGFyZVxudGFrZW4uIFBhcnRpY2lwYW50cyBtdXN0IHVzZSBoYW5kIHNhbml0aXplciBiZWZvcmUgYW5kIGFmdGVyIGFjdGl2aXRpZXMsIGFuZCB0aGUgY2VudHJlIGhhc1xuZGlzaW5mZWN0YW50IHByb3RvY29scyBpbiBwbGFjZSBmb3IgdGhlIGRheWNhcmUgYW5kIHJlc2lkZW50aWFsIGNlbnRyZXMuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiTmV3cyBJdGVtIiwiZHVyYXRpb24iOjgzLCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBuZXdzIGl0ZW0uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJUaGUgbmV3cyByZXBvcnQgaXMgbWFpbmx5IGFib3V0Iiwib3B0aW9ucyI6WyJjcmVhdGl2ZSB3YXlzIGZvciB0ZWFjaGluZyBjaGlsZHJlbi4iLCJuZXcgcmVzZWFyY2ggb24gc2VuaW9yc1x1MjAxOSBoZWFsdGguIiwiYW4gaW5ub3ZhdGl2ZSBjb21tdW5pdHkgcHJvZ3JhbS4iLCJhbiB1bmNvbW1vbiBwc3ljaG9sb2dpY2FsIHRyZWF0bWVudC4iXSwia2V5IjoyfSx7Im4iOjIsInN0ZW0iOiJUaGUgc2VuaW9ycyBhdCB0aGUgVG9yb250byBmYWNpbGl0aWVzIGxpa2VseSIsIm9wdGlvbnMiOlsicGxheSBnYW1lcyB3aXRoIHRoZSBjaGlsZHJlbi4iLCJvcmdhbml6ZSBhY3Rpdml0aWVzIGZvciB0aGUgY2hpbGRyZW4uIiwic3VwZXJ2aXNlIHRoZSBjaGlsZHJlblx1MjAxOXMgcGxheXRpbWUuIiwibWFrZSB0aGUgY2hpbGRyZW5cdTIwMTlzIGx1bmNoZXMuIl0sImtleSI6MH0seyJuIjozLCJzdGVtIjoiQWNjb3JkaW5nIHRvIHRoZSBuZXdzIHJlcG9ydCwgb25lIGJlbmVmaXQgb2YgdGhlIGZhY2lsaXR5IGlzIGEgYmV0dGVyIiwib3B0aW9ucyI6WyJyYW5nZSBvZiBhY3Rpdml0aWVzIGZvciBjaGlsZHJlbi4iLCJzZW5zZSBvZiByZXNwZWN0IHRvd2FyZCBlbGRlcnMuIiwibGlmZSBleHBlY3RhbmN5IGZvciBzZW5pb3JzLiIsImltbXVuZSBzeXN0ZW0gZm9yIGNoaWxkcmVuLiJdLCJrZXkiOjF9LHsibiI6NCwic3RlbSI6IlNvbWUgcGVvcGxlIGhhdmUgd29ycmllcyBhYm91dCB0aGUiLCJvcHRpb25zIjpbInR5cGUgb2YgYWN0aXZpdGllcy4iLCJsYWNrIG9mIHJlc2VhcmNoLiIsImtpbmQgb2YgaW50ZXJhY3Rpb24uIiwic3ByZWFkIG9mIGdlcm1zLiJdLCJrZXkiOjN9LHsibiI6NSwic3RlbSI6IkluIHRoZSByZXBvcnQsIHRoaXMgbmV3IHR5cGUgb2YgY2VudHJlIGlzIHN1cHBvcnRlZCBieSIsIm9wdGlvbnMiOlsicGFyZW50cyBvZiB5b3VuZyBjaGlsZHJlbi4iLCJjaGlsZGhvb2QgZGV2ZWxvcG1lbnQgZXhwZXJ0cy4iLCJzZW5pb3JzXHUyMDE5IGZhY2lsaXR5IHdvcmtlcnMuIiwiZmFtaWxpZXMgb2YgdGhlIHJlc2lkZW50IHNlbmlvcnMuIl0sImtleSI6MX1dfV19LHsibmFtZSI6IlBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImhlYWRlclRpdGxlIjoiU2V0IDkgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImludHJvVGl0bGUiOiJZb3Ugd2lsbCB3YXRjaCBhIGRpc2N1c3Npb24gYW1vbmcgdGhyZWUgY29sbGVhZ3VlcyBhYm91dCBhIHdvcmtwbGFjZSBwcm9ibGVtLiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCB3YXRjaCB0aGUgZGlzY3Vzc2lvbiBvbmx5IG9uY2UuIiwiSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3QgYW5zd2VyIHRvIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBhbW9uZyB0aHJlZSBwZW9wbGUsIHR3byB3b21lbiBhbmQgb25lIG1hbiwgaW4gYVxuY29tcGFueVx1MjAxOXMgbWFpbCByb29tLiBUaGV5IGFyZSB0YWxraW5nIGFib3V0IGEgcHJvYmxlbSBpbiB0aGUgY29tcGFueS5cblxuQW5kcmVhOiAgICAgIENvbGV0dGUsIHdlXHUyMDE5cmUgbm90IGdldHRpbmcgb3VyIG1haWwgZmFzdCBlbm91Z2guIEkgZ290IHNvbWV0aGluZyB0b2RheSB0aGF0XG53YXMgc2VudCB0byBtZSB0d28gZGF5cyBhZ28uIEZyb20gc29tZW9uZSB1cCBvbiB0aGUgdGhpcmQgZmxvb3IhXG5CZXJuYXJkOiAgICAgVGhhdFx1MjAxOXMgcmlkaWN1bG91cyEgSSB3YXMganVzdCBnb2luZyB0byBjb21wbGFpbiBhYm91dCBleHRlcm5hbCBtYWlsIHRha2luZ1xud2F5IHRvbyBsb25nIHRvIGdldCBvbnRvIG91ciBkZXNrcy5cbkNvbGV0dGU6ICAgICAgIEkga25vdywgSSBrbm93ISBEZWJvcmFoIG5vdCBvbmx5IGhhcyB0byBkZWxpdmVyIHRoZSBtYWlsLCBzaGUgYWxzbyBoYXMgdG9cbnNvcnQgaXQhIFRoZXJlXHUyMDE5cyBzbyBtdWNoIG9mIGl0LCBpdCBvZnRlbiB0YWtlcyBoZXIgYWxsIG1vcm5pbmcganVzdCB0byBzb3J0IHRocm91Z2ggaXQhXG5CZXJuYXJkOiAgICAgICAgSSB3YXMgZ29pbmcgdG8gYXNrIGlmIG1heWJlIHdlIGNvdWxkIGNvbWUgZG93biBhbmQgZ2V0IHN0dWZmIG91cnNlbHZlcyBpZlxuaXRcdTIwMTlzIHBhcnRpY3VsYXJseSB1cmdlbnQuIEJ1dCBJIGd1ZXNzIHRoYXQgd291bGRuXHUyMDE5dCBtYWtlIGEgZGlmZmVyZW5jZT8gLiAuIC5cbkNvbGV0dGU6ICAgICAgIElcdTIwMTltIGFmcmFpZCBub3QuIFVubGVzcyBpdFx1MjAxOXMgc29ydGVkIGFscmVhZHksIHlvdSB3b3VsZCBoYXZlIHRvIGxvb2sgdGhyb3VnaFxuc2V2ZXJhbCBiaW5zIGp1c3QgdG8gZmluZCBpdC4gSSBkb25cdTIwMTl0IHRoaW5rIEkgY291bGQgbGV0IHlvdSBkbyB0aGF0LiBJXHUyMDE5dmUgYmVlbiB0cnlpbmcgdG8gaGlyZVxuYW5vdGhlciBwZXJzb24sIGJ1dCBIdW1hbiBSZXNvdXJjZXMgc2F5cyB0aGVyZVx1MjAxOXMganVzdCBub3QgZW5vdWdoIG1vbmV5LlxuQmVybmFyZDogICAgICBUaGF0XHUyMDE5cyB1bmZvcnR1bmF0ZS4gSSBndWVzcyBvbmUgb2YgdGhvc2UgaGlnaC10ZWNoIGFuZHJvaWQgbWFpbGJvdHMgaXMgb3V0IG9mXG50aGUgcXVlc3Rpb24gdGhlbi5cbkFuZHJlYTogICAgICAgVGhvc2Ugd2hhdD9cbkJlcm5hcmQ6ICAgICAgICBBdCBteSBmcmllbmRcdTIwMTlzIG9mZmljZSwgdGhleSBoYXZlIG9uZSBvZiB0aGVzZSBhdXRvbWF0ZWQgY2FydHMuIEl0XHUyMDE5cyBsaWtlIGFcbmxpdHRsZSByb2JvdCB0aGF0IGdvZXMgZnJvbSBkZXBhcnRtZW50IHRvIGRlcGFydG1lbnQgYWxsIGRheSBsb25nLiBXaGVuIGl0IHNob3dzIHVwIGF0XG55b3VyIGRlcGFydG1lbnQsIHlvdSB0YWtlIHlvdXIgaW5jb21pbmcgbWFpbCBhbmQgcHV0IG9uIHlvdXIgb3V0Z29pbmcgbWFpbC4gSXQgc291bmRzXG5zbyBlZmZpY2llbnQuXG5cZkNvbGV0dGU6ICAgICAgIFdlbGwsIHRoYXQgd291bGQgYmUgbGVzcyBleHBlbnNpdmUgdGhhbiBoaXJpbmcgYW5vdGhlciBwZXJzb24uIEJ1dCBJIGhlYXJkXG50aGV5IGNhbiBzdGFsbCBhbmQgaWYgdGhhdCBoYXBwZW5zIHNvbWV3aGVyZSBpbiBhIGhhbGx3YXksIGl0IG1pZ2h0IHRha2UgYSB3aGlsZSBmb3JcbnNvbWVvbmUgdG8gZmlndXJlIG91dCB3aGF0XHUyMDE5cyBoYXBwZW5lZCBhbmQgZ2V0IGl0IGdvaW5nIGFnYWluLlxuQW5kcmVhOiAgICAgIFdoYXQgaWYgd2UgaGFkIGEgcGFydGl0aW9uZWQgYm94IGF0IHRoZSBlbGV2YXRvciBvbiBlYWNoIGZsb29yIGZvciBpbnRlcm5hbFxubWFpbC4gVGhhdCB3YXksIHdlIGNvdWxkIHByZS1zb3J0IG91ciBvdXRnb2luZyBtYWlsIGJ5IHB1dHRpbmcgaXQgaW4gdGhlIHJpZ2h0IHBhcnRpdGlvbi5cblRoZW4gYWxsIERlYm9yYWggd291bGQgaGF2ZSB0byBkbyBldmVyeSBob3VyIG9yIHNvIGlzIGRlbGl2ZXIgaXQgdG8gdXMgZnJvbSB0aG9zZSBib3hlcy5cbkNvbGV0dGU6ICAgICAgV2VsbCwgdGhhdCB3b3VsZCBoZWxwIHRoZSBtb3ZlbWVudCBvZiB0aGUgaW50ZXJuYWwgbWFpbCwgYnV0IHRoZSBtb3ZlbWVudFxub2YgdGhlIGV4dGVybmFsIG1haWwgd291bGQgYmUgbXVjaCBzbG93ZXIuIEFuZCBiZXNpZGVzLCBJIHdvdWxkIGhhdGUgdG8gYWRkIHRoYXQgdG9cbkRlYm9yYWhcdTIwMTlzIGR1dGllcy5cbkJlcm5hcmQ6ICAgICAgIFdlbGwsIGlmIHlvdVx1MjAxOXJlIHRoYXQgYW54aW91cyBhYm91dCBleHRlcm5hbCBtYWlsLCB3aHkgZG9uXHUyMDE5dCB3ZSBnZXQgdXAgb3V0IG9mXG5vdXIgY2hhaXJzIGFuZCBnbyBhbmQgZG8gaXQgb3Vyc2VsdmVzPyBJIG1lYW4sIHdlXHUyMDE5cmUgbm90IHRoYXQgb2xkLCBndXlzISBBbmQgYW55d2F5cyxcbnRoZXlcdTIwMTlyZSBkZXZlbG9waW5nIG5ldyBzb2Z0d2FyZSBldmVyeSBzaW5nbGUgZGF5LiBNYXliZSBzb29uIHdlIHdvblx1MjAxOXQgZXZlbiBuZWVkXG5waHlzaWNhbCBtYWlsLiBJIG1lYW4sIGluIHRoZSBmdXR1cmUsIGp1c3Qgc2VuZCBhIGRvY3VtZW50IGFuZCBtYXliZSBldmVyeW9uZSB3aWxsIGp1c3RcbnNoYXJlIGl0IG9ubGluZSFcbkNvbGV0dGU6ICAgICAgIFdlbGwsIEkgdGhpbmsgdGhlcmUgd2lsbCBhbHdheXMgYmUgYSBuZWVkIGZvciBzb21lIHBoeXNpY2FsIG1haWwuIFN1cHBsaWVzLFxucGFja2FnZXMgLiAuIC5cbkFuZHJlYTogICAgICAgU28gd2VcdTIwMTlyZSBiYWNrIHdoZXJlIHdlIHN0YXJ0ZWQgLiAuIC4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJkdXJhdGlvbiI6MTUwLCJtZWRpYVR5cGUiOiJ2aWRlbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJXYXRjaCB0aGUgZGlzY3Vzc2lvbi4gWW91IHdpbGwgd2F0Y2ggaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHRoZSBwcm9ibGVtIHdpdGggdGhlIGNvbXBhbnlcdTIwMTlzIG1haWw\/Iiwib3B0aW9ucyI6WyJJdCBnZXRzIGxvc3QgYW5kIG1pc3BsYWNlZCBpbiB0aGUgc3lzdGVtLiIsIkl0cyBoYW5kbGluZyBjb3N0cyBhcmUgdG9vIGhpZ2ggdG8gc3VzdGFpbi4iLCJJdCBpcyBvZnRlbiBkZWxpdmVyZWQgdG8gdGhlIHdyb25nIGZsb29yLiIsIkl0cyBleHBlY3RlZCBhcnJpdmFsIHRpbWUgaXMgb2Z0ZW4gZGVsYXllZC4iXSwia2V5IjozfSx7Im4iOjIsInN0ZW0iOiJXaGF0IGRvZXMgQ29sbGV0dGUsIHRoZSB3b21hbiB3aG8gd29ya3MgaW4gdGhlIG1haWwgcm9vbSwgdGhpbmsgRGVib3JhaCBuZWVkcz8iLCJvcHRpb25zIjpbImEgZmluYW5jaWFsIGluY2VudGl2ZSIsImEgc2hhcmVkIGJ1cmRlbiIsImJldHRlciBvcmdhbml6YXRpb24iLCJ1cGRhdGVkIHRlY2hub2xvZ3kiXSwia2V5IjoxfSx7Im4iOjMsInN0ZW0iOiJXaWxsIENvbGxldHRlIGhpcmUgc29tZW9uZT8iLCJvcHRpb25zIjpbIk5vLCBIdW1hbiBSZXNvdXJjZXMgcmVmdXNlZCBmb3Igbm8gcmVhc29uLiIsIk5vLCB0aGUgZmlybSB3aWxsIGF1dG9tYXRlIG1haWwgaGFuZGxpbmcgaW5zdGVhZC4iLCJZZXMsIGlmIHRoZSBwZXJzb25uZWwgdW5pdCByZXZlcnNlcyBpdHMgZGVjaXNpb24uIiwiWWVzLCBqdXN0IHRvIHByb2Nlc3MgdGhlIHBhY2thZ2VzIGFuZCBwYXJjZWxzLiJdLCJrZXkiOjJ9LHsibiI6NCwic3RlbSI6IldoeSBpcyBhbiBhdXRvbWF0ZWQgbWFpbCBjYXJ0IG5vdCBhIGdvb2Qgc29sdXRpb24\/Iiwib3B0aW9ucyI6WyJUaGV5IGFyZSBub3QgYXZhaWxhYmxlIHlldC4iLCJUaGV5IGFyZSB0b28gZXhwZW5zaXZlLiIsIlRoZXkgY2FuIGdldCBsb3N0IGluIGJpZyBvZmZpY2VzLiIsIlRoZXkgc29tZXRpbWVzIHN0b3Agd29ya2luZy4iXSwia2V5IjozfSx7Im4iOjUsInN0ZW0iOiJXaGF0IHdvdWxkIGJlIHRoZSBwcm9ibGVtIHdpdGggdGhlIHBhcnRpdGlvbmVkIGJveCBzb2x1dGlvbj8iLCJvcHRpb25zIjpbIkRlYm9yYWggd291bGQgbm90IGFncmVlIHRvIGl0LiIsIkl0IHdvdWxkIGNvc3QgdG9vIG11Y2guIiwiSXQgd291bGQgaGF2ZSBtaXhlZCByZXN1bHRzLiIsIlN0YWZmIHdvdWxkIGZpbmQgaXQgY29tcGxpY2F0ZWQuIl0sImtleSI6Mn0seyJuIjo2LCJzdGVtIjoiV2hhdCBkb2VzIEJlcm5hcmQgaW50ZW5kIHRvIHN1Z2dlc3Qgd2l0aCBoaXMgY29tbWVudCBhYm91dCB0aGUgY2hhaXI\/Iiwib3B0aW9ucyI6WyJIaXMgY29sbGVhZ3VlcyBhcmUgY2x1bXN5LiIsIkhpcyBjb2xsZWFndWVzIGFyZSBsYXp5LiIsIlRoZSBjaGFpcnMgYXJlIG9sZC4iLCJUaGUgY2hhaXJzIGFyZSB1bmNvbWZvcnRhYmxlLiJdLCJrZXkiOjF9LHsibiI6Nywic3RlbSI6IldoYXQgaXMgY29udmV5ZWQgYnkgQmVybmFyZFx1MjAxOXMgY29tbWVudCBhYm91dCBuZXcgc29mdHdhcmUgcHJvZ3JhbXM\/Iiwib3B0aW9ucyI6WyJvcHRpbWlzbSIsImhlbHBsZXNzbmVzcyIsInJlc2lnbmF0aW9uIiwic3VycHJpc2UiXSwia2V5IjowfSx7Im4iOjgsInN0ZW0iOiJXaGF0IHNvbHV0aW9uIGRvIHRoZXkgYWdyZWUgb24\/Iiwib3B0aW9ucyI6WyJhIHNvbHV0aW9uIGZvciBhbGwgbWFpbCIsImEgc29sdXRpb24gZm9yIGV4dGVybmFsIG1haWwgb25seSIsImEgc29sdXRpb24gZm9yIGludGVybmFsIG1haWwgb25seSIsIm5vIHNvbHV0aW9uIGF0IGFsbCJdLCJrZXkiOjN9XX1dfSx7Im5hbWUiOiJQYXJ0IDY6IExpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImhlYWRlclRpdGxlIjoiU2V0IDkgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9UaXRsZSI6IllvdSB3aWxsIGhlYXIgYSByZXBvcnQgYWJvdXQgYmlydGggb3JkZXIgcGVyc29uYWxpdHkgdGhlb3JpZXMuIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgdGhlIHJlcG9ydCBvbmx5IG9uY2UuIiwiSXQgaXMgYWJvdXQgMyBtaW51dGVzIGxvbmcuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBwcmVzZW50YXRpb24gYWJvdXQgcGVyc29uYWxpdHkuXG5cbllvdSd2ZSBwcm9iYWJseSBoZWFyZCB0aGUgdGhlb3J5OiBGaXJzdC1ib3JuIGNoaWxkcmVuIGFyZSByZWxpYWJsZSwgbWlkZGxlIGNoaWxkcmVuIGFyZVxuc29jaWFibGUsIGxhc3QtYm9ybnMgY3JhdmUgdGhlIHNwb3RsaWdodCwgYW5kIFwib25saWVzXCIgYXJlIGxvbmVseS4gVGhlc2Ugbm90aW9uc1x1MjAxNHNvbWVcbndvdWxkIHNheSBzdGVyZW90eXBlc1x1MjAxNCBhcmlzZSBmcm9tIGRlY2FkZXMgb2YgcmVzZWFyY2ggYW5kIGZvcm0gdGhlIGJhY2tib25lIG9mXG5odW5kcmVkcyBvZiBzZWxmLWhlbHAgYW5kIHBhcmVudGluZyBib29rcy4gVGhlIG9ubHkgcHJvYmxlbT8gVGhlIG5vdGlvbiB0aGF0IGJpcnRoIG9yZGVyXG5hZmZlY3RzIHBlcnNvbmFsaXR5IGlzIGluY3JlYXNpbmdseSByZWdhcmRlZCBieSBzY2llbnRpc3RzIGFzIHB1cmUgbm9uc2Vuc2UuXG5cbk9uZSBzdWNoIGV4cGVydCBpcyBEci4gV2lsbGlhbSBUcmFnZXIgb2YgTWNHaWxsIFVuaXZlcnNpdHkuIEhlIHBvaW50cyB0byB0d28gcmVjZW50XG5pbnRlcm5hdGlvbmFsIHN0dWRpZXMgdGhhdCB0dXJuZWQgdXAgemVybyBjb3JyZWxhdGlvbiBiZXR3ZWVuIGJpcnRoIG9yZGVyIGFuZCBwZXJzb25hbGl0eVxudHJhaXQgZGV2ZWxvcG1lbnQuIFRyYWdlciBzYXlzIHBhc3Qgc3R1ZGllcyB0aGF0IHBvc2l0ZWQgYSBsaW5rIGJldHdlZW4gYmlydGggb3JkZXIgYW5kXG5wZXJzb25hbGl0eSB3ZXJlIGZhdGFsbHkgZmxhd2VkLiBPbmUgYmx1bmRlciwgc2F5cyBUcmFnZXIsIHdhcyB0aGF0IHJlc2VhcmNoZXJzXG5jb25mb3VuZGVkIHRoZWlyIHN1YmplY3RzJyBiaXJ0aCBvcmRlciB3aXRoIHRoZWlyIGNocm9ub2xvZ2ljYWwgYWdlIGF0IHRoZSB0aW1lIG9mIHRoZVxuc3R1ZHkuIEZvciBleGFtcGxlLCBzdXBwb3NlIGFuIGVsZGVzdCBjaGlsZCwgMTYteWVhci1vbGQgRnJhbmssIHdhcyBzdWJqZWN0aXZlbHlcbmRlc2NyaWJlZCBieSBmYW1pbHkgbWVtYmVycyBhcyByZWxpYWJsZSBjb21wYXJlZCB0byBoaXMgeW91bmdlc3Qgc2libGluZywgMTAteWVhci1vbGRcblxmVGltbXkuIFJlc2VhcmNoZXJzIGNvbmNsdWRlZCB0aGF0IEZyYW5rJ3MgcmVsaWFiaWxpdHkgYXJvc2UgZnJvbSB0aGUgZmFjdCB0aGF0IGhlIHdhc1xuZmlyc3QgYm9ybi4gSG93ZXZlciwgaGFkIHRoZSByZXNlYXJjaGVycyBjb21lIGJhY2sgNiB5ZWFycyBsYXRlciBhbmQgcmVwZWF0ZWQgdGhlXG5xdWVzdGlvbm5haXJlLCBUcmFnZXIgc2F5cyB0aGV5IHByb2JhYmx5IHdvdWxkIGhhdmUgZm91bmQgdGhhdCBUaW1teSwgYnkgdGhlbiAxNiB5ZWFyc1xub2xkIGhpbXNlbGYsIHdvdWxkIGJlIHJhdGVkIGFzIGVxdWFsbHkgcmVsaWFibGUsIGRlc3BpdGUgYmVpbmcgdGhlIHlvdW5nZXN0LiBGb3IgVHJhZ2VyLFxuY29udGludWVkIGJlbGllZiBpbiB0aGVzZSB0aGVvcmllcyBpcyBhbiBpbmRpY2F0aW9uIG9mIHBlb3BsZVx1MjAxOXMgZGVzaXJlcyB0cnVtcGluZyB0aGVpclxuYWJpbGl0eSB0byByZWFzb24uXG5cbkRlc3BpdGUgdGhlc2UgZmluZGluZ3MsIEtpcnN0ZW4gR3JlbnZpbGxlLCBDRU8gb2YgR2xvYmFsIFB1Ymxpc2hpbmcsIHNheXMgYm9va3Mgb24gYmlydGhcbm9yZGVyIHRoZW9yeSBoYXZlIHByb3BlbGxlZCBhIHJhZnQgb2YgcG9wdWxhciBwc3ljaG9sb2dpc3RzIGFuZCBwYXJlbnRpbmcgZXhwZXJ0cyB0byB0aGVcbnRvcCBvZiB0aGUgYmVzdHNlbGxlciBjaGFydHMuIEZvciBHcmVudmlsbGUsIHRoZSBpc3N1ZSBpc25cdTIwMTl0IHdoZXRoZXIgb3Igbm90IGJpcnRoIG9yZGVyIHRoZW9yeVxuaXMgc2NpZW50aWZpY2FsbHkgdmFsaWQuIFRoZSBpc3N1ZSwgcmF0aGVyLCBpcyB3aGV0aGVyIG9yIG5vdCBpdCBzZWxscyBwcm9kdWN0XHUyMDE0YW5kIHNlbGwgaXRcbmRvZXMhIENvbnN1bWVycycgc2VlbWluZ2x5IGluc2F0aWFibGUgYXBwZXRpdGUgZm9yIHRoZXNlIGJvb2tzLCBzYXlzIEdyZW52aWxsZSwgc3RlbXNcbmZyb20gdGhlIGZhY3QgdGhhdCBhbG1vc3QgZXZlcnlvbmUgaGFzIGFuIGluc3RpbmN0aXZlIHNlbnNlIHRoYXQgYmlydGggb3JkZXIgdGhlb3JpZXMgYXJlXG50cnVlLCB3aGV0aGVyIG9yIG5vdCB0aGV5IHJlYWxseSBhcmUuIFBlb3BsZSByZWFkIHRoZXNlIGRlc2NyaXB0aW9ucyBvZiBzaWJsaW5nIHJlbGF0aW9uc2hpcFxuZHluYW1pY3MsIGFuZCB0aGV5IHRoaW5rLCBcIlllYWgsIHRoYXQgaXMgdHJ1ZSBmb3IgbWUuXCIgTWF5YmUgdGhlIGRlc2NyaXB0aW9ucyBhcmUgbGlrZVxuaG9yb3Njb3BlczogZ2VuZXJhbCBlbm91Z2ggdGhhdCBhbG1vc3QgZXZlcnlvbmUgY2FuIGZpbmQgc29tZXRoaW5nIHRvIGFncmVlIHdpdGguIEFsc28sXG5ldmVuIGlmIGJpcnRoIG9yZGVyIGRvZXNuJ3Qgc2NpZW50aWZpY2FsbHkgY29ycmVsYXRlIHdpdGggcGVyc29uYWxpdHkgdHJhaXQgZGV2ZWxvcG1lbnQsIHRoZXJlXG5hcmUgY2VydGFpbmx5IGVub3VnaCBwZXJzb25hbCBhbmVjZG90ZXMsIGZlZWxpbmdzLCBhbmQgaHVuY2hlcyB0byBzdWdnZXN0IG90aGVyd2lzZS5cblxuU28gY2FuIHdlIGZpbmFsbHkgcHV0IHRvIHJlc3QgdGhpcyBub3Rpb24gdGhhdCBiaXJ0aCBvcmRlciBtYXR0ZXJzIGZyb20gYSBzY2llbnRpZmljXG5wZXJzcGVjdGl2ZT8gRHIuIFRyYWdlclx1MjAxOXMgcmVzcG9uc2Ugd291bGQgYmUgYSBxdWFsaWZpZWQgbm8uIFdoaWxlIHBlcnNvbmFsaXR5IG1heSBub3QgYmVcbmFmZmVjdGVkLCBiaXJ0aCBvcmRlciBkb2VzIGFwcGVhciB0byBpbXBhY3QgaW50ZWxsaWdlbmNlLiBEci4gVHJhZ2VyIHNheXMgc3R1ZGllcyBoYXZlXG5wcm92ZW4gdGhhdCBjb21wYXJlZCB0byB0aGVpciBzaWJsaW5ncywgZmlyc3QtYm9ybnMgYXJlIHNtYXJ0ZXIgb24gYXZlcmFnZSBieSBhIGZ1bGwgSVFcbnBvaW50LiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IlJlcG9ydCIsImR1cmF0aW9uIjoxOTksIm1lZGlhVHlwZSI6ImF1ZGlvIiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIHJlcG9ydC4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IlRyYWRpdGlvbmFsIHRoZW9yaWVzIGNsYWltIGF0dGVudGlvbi1zZWVraW5nIGlzIGEgdHJhaXQgb2YiLCJvcHRpb25zIjpbImZpcnN0LWJvcm4gY2hpbGRyZW4uIiwibWlkZGxlIGNoaWxkcmVuLiIsImxhc3QtYm9ybiBjaGlsZHJlbi4iLCJvbmx5IGNoaWxkcmVuLiJdLCJrZXkiOjJ9LHsibiI6Miwic3RlbSI6IkRyLiBXaWxsaWFtIFRyYWdlciB3b3VsZCBhcmd1ZSBUaW1teSBhbmQgRnJhbmsgaGF2ZSIsIm9wdGlvbnMiOlsiZGlmZmVyZW50IHBlcnNvbmFsaXR5IHRyYWl0cyBkdWUgdG8gdGhlaXIgYmlydGggb3JkZXIuIiwiY2hhcmFjdGVyaXN0aWNzIHRoYXQgY2FuIGJlIGNoYWxsZW5naW5nIGZvciBwYXJlbnRzLiIsImRpZmZlcmVudCByZWxpYWJpbGl0eSByYXRpbmdzIGR1ZSB0byBkaWZmZXJlbnQgSVEgc2NvcmVzLiIsInBlcnNvbmFsaXR5IHRyYWl0cyB0aGF0IGRldmVsb3AgdGhyb3VnaG91dCBjaGlsZGhvb2QuIl0sImtleSI6M30seyJuIjozLCJzdGVtIjoiQ0VPIEtpcnN0ZW4gR3JlbnZpbGxlIGJlbGlldmVzIGJpcnRoIG9yZGVyIHBlcnNvbmFsaXR5IHRoZW9yaWVzIGFyZSIsIm9wdGlvbnMiOlsiZXZvbHZpbmcuIiwiZGVjbGluaW5nLiIsInByb2ZpdGFibGUuIiwic2NpZW50aWZpYy4iXSwia2V5IjoyfSx7Im4iOjQsInN0ZW0iOiJDRU8gS2lyc3RlbiBHcmVudmlsbGUgdGhpbmtzIHBlb3BsZSB3YW50IGJvb2tzIHRoYXQiLCJvcHRpb25zIjpbImV4cGxvcmUgdGhlb3JpZXMgb2YgaW50ZWxsaWdlbmNlLiIsImZvcmV0ZWxsIGV2ZW50cyB1c2luZyBhc3Ryb2xvZ3kuIiwicHJlc2VudCBwcm92ZW4gc2NpZW50aWZpYyBmYWN0cy4iLCJ2YWxpZGF0ZSB0aGVpciBvd24gaW50dWl0aW9ucy4iXSwia2V5IjozfSx7Im4iOjUsInN0ZW0iOiJEci4gVHJhZ2VyIGFuZCBDRU8gR3JlbnZpbGxlIGJvdGggc3VnZ2VzdCB0aGVyZSIsIm9wdGlvbnMiOlsibmVlZHMgdG8gYmUgbW9yZSBzY2llbnRpZmljIHJlc2VhcmNoIG9uIHRoaXMgdG9waWMuIiwiaXMgc29tZXRoaW5nIHBlb3BsZSBmaW5kIGFwcGVhbGluZyBhYm91dCB0aGlzIHRvcGljLiIsImFyZSBtb3JlIHBhcmVudHMgZ2FpbmluZyBpbnRlcmVzdCBpbiB0aGlzIHRvcGljLiIsImFyZSBiZXR0ZXIgYm9va3MgY29taW5nIG91dCBhYm91dCB0aGlzIHRvcGljLiJdLCJrZXkiOjF9LHsibiI6Niwic3RlbSI6IlRoZSByZXBvcnRlciB0aGlua3MgYmlydGggb3JkZXIgcGVyc29uYWxpdHkgdGhlb3JpZXMgaGF2ZSIsIm9wdGlvbnMiOlsibGltaXRlZCBzY2llbnRpZmljIGZvdW5kYXRpb25zLiIsIm5ldmVyIGJlZW4gc2NpZW50aWZpY2FsbHkgaW52ZXN0aWdhdGVkLiIsIm5ldmVyIGJlZW4gZXhwbGFpbmVkIGJ5IGZvbGtsb3JlLiIsImxpbmtzIHdpdGggbWFqb3IgbWFya2V0aW5nIHNjYW1zLiJdLCJrZXkiOjB9XX1dfV19OwoKdmFyIENFTFBJUF9ZVCA9IHsgdmlkZW9JZDogJycgfTsgIC8qIGUuZy4gJ2RRdzR3OVdnWGNRJyBcdTIwMTQgU2V0IDkgVGVzdCAxIGZ1bGwgbGlzdGVuaW5nIHZpZGVvICovCnZhciBDTFBfQ0hBUFRFUlMgPSB7ICcwLjAnOlswLDUyMF0sICcwLjEnOlswLDUyMF0sICcwLjInOlswLDUyMF0sICcxLjAnOls1MjAsODUzXSwgJzIuMCc6Wzg1MywxMjcyXSwgJzMuMCc6WzEyNzIsMTM2NF0sICc0LjAnOlsxMzY0LDE1MDNdLCAnNS4wJzpbMTUwMywxNzU3XSB9OwoKLyogVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4gKi8KZnVuY3Rpb24gY2xiRXN0aW1hdGUocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTogJ0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDknLCAgICAgICAgbm90ZTogJ0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA4JywgICAgICAgIG5vdGU6ICdHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDcnLCAgICAgICAgbm90ZTogJ0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDYnLCAgICAgICAgbm90ZTogJ0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNScsICAgICAgICBub3RlOiAnQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiAgICAgICAgICAgIHsgbGV2ZWw6ICdDRUxQSVAgNCBvciBiZWxvdycsICAgbm90ZTogJ0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PSBlbmdpbmUgPT09PT09PT09PT09PT09PT09PT09ICovCihmdW5jdGlvbigpewogIHZhciByZWR1Y2VkTW90aW9uID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICB2YXIgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENhdCcpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwRG90cycpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRvb2xiYXInKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNjb3JlQ2hpcCcpOwoKICB2YXIgVE9UQUxfUSA9IDA7CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCl7IHAuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKXsgVE9UQUxfUSArPSBzLnF1ZXN0aW9ucy5sZW5ndGg7IH0pOyB9KTsKCiAgdmFyIHNjcmVlbnMgPSBbXTsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnaW50cm8nLCBwaTogcGkgfSk7CiAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdtZWRpYScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAncScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgfSk7CiAgfSk7CiAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ZpbmlzaCcgfSk7CgogIHZhciBzdGF0ZSA9IHsKICAgIHN0YXJ0ZWQ6IGZhbHNlLAogICAgaWR4OiAwLAogICAgYW5zd2Vyczoge30sICAgICAgLyogInBpLnNpLnFpIiAtPiBvcHRpb24gaW5kZXggKDAtMykgKi8KICAgIGNoZWNrZWQ6IGZhbHNlLAogICAgdGltZXJPbjogdHJ1ZQogIH07CiAgdmFyIG1lZGlhVGltZXIgPSBudWxsLCBxVGltZXIgPSBudWxsLCBxUmVtYWluaW5nID0gMDsKICB2YXIgcG9wdXAgPSBudWxsLCBvcGVuVHJpZ2dlciA9IG51bGw7CgogIGZ1bmN0aW9uIHFLZXkocGksIHNpLCBxaSl7IHJldHVybiBwaSArICcuJyArIHNpICsgJy4nICsgcWk7IH0KICBmdW5jdGlvbiBmbXQoc2VjKXsgdmFyIG0gPSBNYXRoLmZsb29yKHNlYy82MCksIHMgPSBzZWMgJSA2MDsgcmV0dXJuIG0gKyAnOicgKyAocyA8IDEwID8gJzAnIDogJycpICsgczsgfQogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCB0ZXh0KXsKICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgaWYgKGNscykgZS5jbGFzc05hbWUgPSBjbHM7CiAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSBlLnRleHRDb250ZW50ID0gdGV4dDsKICAgIHJldHVybiBlOwogIH0KICBmdW5jdGlvbiBzY3JvbGxUb0VsKHRhcmdldCwgb2Zmc2V0KXsKICAgIHZhciB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIChvZmZzZXQgfHwgNzApOwogICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogcmVkdWNlZE1vdGlvbiA\/ICdhdXRvJyA6ICdzbW9vdGgnIH0pOwogIH0KICBmdW5jdGlvbiBjbGVhclRpbWVycygpewogICAgaWYgKG1lZGlhVGltZXIpeyBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsgfQogICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7IHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZS5hbnN3ZXJzKS5sZW5ndGg7IH0KICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ1Njb3JlICcgKyBjb21wdXRlU2NvcmUoKS50b3RhbCArICcvJyArIFRPVEFMX1E7CiAgICB9IGVsc2UgewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnQW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcvJyArIFRPVEFMX1E7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbXB1dGVTY29yZSgpewogICAgdmFyIHRvdGFsID0gMCwgcGVyUGFydCA9IFtdOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgYyA9IDAsIG4gPSAwOwogICAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgICAgIG4rKzsKICAgICAgICAgIGlmIChzdGF0ZS5hbnN3ZXJzW3FLZXkocGksIHNpLCBxaSldID09PSBxLmtleSAtIDEpeyBjKys7IHRvdGFsKys7IH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHBlclBhcnQucHVzaCh7IGNvcnJlY3Q6IGMsIHRvdGFsOiBuIH0pOwogICAgfSk7CiAgICByZXR1cm4geyB0b3RhbDogdG90YWwsIHBlclBhcnQ6IHBlclBhcnQgfTsKICB9CgogIC8qIC0tLS0tLS0tLS0gZHJvcGRvd24gcG9wdXAgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNsb3NlUG9wdXAoKXsKICAgIGlmIChwb3B1cCl7IHBvcHVwLnJlbW92ZSgpOyBwb3B1cCA9IG51bGw7IH0KICAgIGlmIChvcGVuVHJpZ2dlcil7IG9wZW5UcmlnZ2VyLmNsYXNzTGlzdC5yZW1vdmUoJ2NscC1vcGVuJyk7IG9wZW5UcmlnZ2VyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBvcGVuUG9wdXAodHJpZ2dlciwgcGksIHNpLCBxaSl7CiAgICBpZiAob3BlblRyaWdnZXIgPT09IHRyaWdnZXIpeyBjbG9zZVBvcHVwKCk7IHJldHVybjsgfQogICAgY2xvc2VQb3B1cCgpOwogICAgdmFyIHEgPSBURVNUX0RBVEEucGFydHNbcGldLnNlY3Rpb25zW3NpXS5xdWVzdGlvbnNbcWldOwogICAgdmFyIGtleSA9IHFLZXkocGksIHNpLCBxaSk7CiAgICBwb3B1cCA9IGVsKCdkaXYnLCAnY2xwLXBvcCcpOwogICAgcS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBvaSl7CiAgICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdjbHAtb3B0JyArIChzdGF0ZS5hbnN3ZXJzW2tleV0gPT09IG9pID8gJyBjbHAtc2VsJyA6ICcnKSk7CiAgICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1yYWRpbycpKTsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCBvcHQpKTsKICAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBzdGF0ZS5hbnN3ZXJzW2tleV0gPSBvaTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgICBjbG9zZVBvcHVwKCk7CiAgICAgICAgc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIG9wdCwgZmFsc2UpOwogICAgICB9KTsKICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoYik7CiAgICB9KTsKICAgIGNhdC5hcHBlbmRDaGlsZChwb3B1cCk7CiAgICAvKiBwb3NpdGlvbjogYmVsb3cgdHJpZ2dlciwgZmxpcCBhYm92ZSB3aGVuIG5lYXIgdmlld3BvcnQgYm90dG9tICovCiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICB2YXIgY2F0UmVjdCA9IGNhdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciB0UmVjdCA9IHRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgcG9wVyA9IHBvcHVwLm9mZnNldFdpZHRoLCBwb3BIID0gcG9wdXAub2Zmc2V0SGVpZ2h0OwogICAgdmFyIGxlZnQgPSB0UmVjdC5sZWZ0IC0gY2F0UmVjdC5sZWZ0OwogICAgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKGxlZnQsIGNhdC5jbGllbnRXaWR0aCAtIHBvcFcgLSA4KSk7CiAgICB2YXIgdG9wOwogICAgaWYgKHRSZWN0LmJvdHRvbSArIHBvcEggKyAyNCA+IHdpbmRvdy5pbm5lckhlaWdodCAmJiB0UmVjdC50b3AgLSBwb3BIIC0gOCA+IDApewogICAgICB0b3AgPSB0UmVjdC50b3AgLSBjYXRSZWN0LnRvcCAtIHBvcEggLSA2OyAgIC8qIGZsaXAgYWJvdmUgKi8KICAgIH0gZWxzZSB7CiAgICAgIHRvcCA9IHRSZWN0LmJvdHRvbSAtIGNhdFJlY3QudG9wICsgNjsKICAgIH0KICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnRvcCA9IHRvcCArICdweCc7CiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2NscC1vcGVuJyk7CiAgICBvcGVuVHJpZ2dlciA9IHRyaWdnZXI7CiAgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgaWYgKHBvcHVwICYmICFwb3B1cC5jb250YWlucyhldi50YXJnZXQpICYmIGV2LnRhcmdldCAhPT0gb3BlblRyaWdnZXIgJiYgKCFvcGVuVHJpZ2dlciB8fCAhb3BlblRyaWdnZXIuY29udGFpbnMoZXYudGFyZ2V0KSkpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICB9CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlUG9wdXApOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigpeyAvKiBrZWVwIHBvcHVwIGFuY2hvcmVkOiBjbG9zZSBvbiBzY3JvbGwgKi8gaWYgKHBvcHVwKSBjbG9zZVBvcHVwKCk7IH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKCiAgZnVuY3Rpb24gc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIHRleHQsIHVuYW5zd2VyZWQpewogICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtdW5hbnN3ZXJlZCcsICEhdW5hbnN3ZXJlZCk7CiAgICB0cmlnZ2VyLnF1ZXJ5U2VsZWN0b3IoJy5jbHAtZGQtdGV4dCcpLnRleHRDb250ZW50ID0gdW5hbnN3ZXJlZCA\/ICdcdTIwMjZcdTIwMjZcdTIwMjZcdTIwMjYnIDogdGV4dDsKICB9CgogIC8qIC0tLS0tLS0tLS0gZG90cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVyRG90cygpewogICAgZG90c0VsLmlubmVySFRNTCA9ICcnOwogICAgdmFyIGN1clBpID0gLTE7CiAgICB2YXIgcyA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKICAgIGlmIChzICYmIHMucGkgIT09IHVuZGVmaW5lZCkgY3VyUGkgPSBzLnBpOwogICAgaWYgKHMgJiYgcy50eXBlID09PSAnZmluaXNoJykgY3VyUGkgPSBURVNUX0RBVEEucGFydHMubGVuZ3RoOyAvKiBhbGwgZG9uZSAqLwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCAnY2xwLWRvdCcsICdQJyArIChwaSArIDEpKTsKICAgICAgZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGlmIChwaSA9PT0gY3VyUGkpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWN1cicpOwogICAgICBlbHNlIGlmIChwaSA8IGN1clBpIHx8IHN0YXRlLmNoZWNrZWQpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWRvbmUnKTsKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWNsaWNrYWJsZScpOwogICAgICAgIGQudGl0bGUgPSAnUmV2aWV3ICcgKyBwYXJ0Lm5hbWU7CiAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmVlbnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoc2NyZWVuc1tpXS50eXBlID09PSAncScgJiYgc2NyZWVuc1tpXS5waSA9PT0gcGkpeyBzdGF0ZS5pZHggPSBpOyBicmVhazsgfQogICAgICAgICAgfQogICAgICAgICAgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkLnRpdGxlID0gcGFydC5uYW1lOwogICAgICB9CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBjaHJvbWUgcGllY2VzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBtYWtlQmFyKHRpdGxlLCB3aXRoVGltZXIpewogICAgdmFyIGJhciA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCB0aXRsZSkpOwogICAgaWYgKHdpdGhUaW1lciAmJiBzdGF0ZS50aW1lck9uKXsKICAgICAgdmFyIHQgPSBlbCgnc3BhbicsICdjbHAtYmFyLXRpbWVyJyk7CiAgICAgIHQuaWQgPSAnY2xwUVRpbWVyJzsKICAgICAgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGJhci5hcHBlbmRDaGlsZCh0KTsKICAgIH0KICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsICdjbHAtbmV4dCcsICdOZXh0Jyk7CiAgICBuZXh0LnR5cGUgPSAnYnV0dG9uJzsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICAgIGlmIChzdGF0ZS5pZHggPCBzY3JlZW5zLmxlbmd0aCAtIDEpeyBzdGF0ZS5pZHgrKzsgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsgfQogICAgfSk7CiAgICBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdmaW5pc2gnKSBuZXh0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBiYXIuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICByZXR1cm4gYmFyOwogIH0KICBmdW5jdGlvbiBtYWtlSW5zdHIodGV4dCl7CiAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtaW5zdHInKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtaW5mbycsICdpJykpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdwJywgJycsIHRleHQpKTsKICAgIHJldHVybiByb3c7CiAgfQogIHZhciBTUEVBS0VSX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+JyArCiAgICAnPHBhdGggZD0iTTIwLjUgNi41IGE5IDkgMCAwIDEgMCAxMyIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICB2YXIgUExBWV9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxwYXRoIGQ9Ik04IDUgTDIxIDEzIEw4IDIxIFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPjwvc3ZnPic7CgogIC8qIC0tLS0tLS0tLS0gc2NyZWVucyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVySW50cm8oc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBJbnN0cnVjdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKCdJbnN0cnVjdGlvbnM6JykpOwogICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC1pbnRyby1ib2R5Jyk7CiAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCBwYXJ0LmludHJvVGl0bGUpKTsKICAgIHZhciB1bCA9IGVsKCd1bCcsICdjbHAtYnVsbGV0cycpOwogICAgcGFydC5pbnRyb0J1bGxldHMuZm9yRWFjaChmdW5jdGlvbihiKXsgdWwuYXBwZW5kQ2hpbGQoZWwoJ2xpJywgJycsIGIpKTsgfSk7CiAgICBib2R5LmFwcGVuZENoaWxkKHVsKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm9keSk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJNZWRpYShzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBNZWRpYScpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoc2VjLm1lZGlhSW5zdHJ1Y3Rpb24pKTsKdmFyIF9haz1zY3IucGkrIi4iK3Njci5zaSxfYXU9KHR5cGVvZiBDTFBfQVVESU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT1tfYWtdO2lmKF9hdSl7dmFyIF9pc1Y9KHR5cGVvZiBDTFBfQVVESU9fVklERU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT19WSURFT1tfYWtdO3ZhciBfcD1lbCgiZGl2IiwiY2xwLW1lZGlhLXBhbmVsIik7dmFyIF9jPWVsKCJkaXYiLCJjbHAtbWVkaWEtY2FyZCIrKF9pc1Y\/IiBjbHAtaXMtdmlkZW8iOiIiKSk7dmFyIF9tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoX2lzVj8idmlkZW8iOiJhdWRpbyIpO19tLnNyYz1fYXU7X20uY29udHJvbHM9dHJ1ZTtfbS5wcmVsb2FkPSJub25lIjtfbS5jbGFzc05hbWU9ImNscC1yZWFsbWVkaWEiO19tLnNldEF0dHJpYnV0ZSgiY29udHJvbHNMaXN0Iiwibm9kb3dubG9hZCIpO19tLnN0eWxlLmNzc1RleHQ9X2lzVj8id2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiMwMDA7ZGlzcGxheTpibG9jayI6IndpZHRoOjEwMCU7ZGlzcGxheTpibG9jayI7X2MuYXBwZW5kQ2hpbGQoX20pO19wLmFwcGVuZENoaWxkKF9jKTtfcC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLW9uY2Utbm90ZSIsIkluIHRoZSByZWFsIHRlc3QgdGhpcyByZWNvcmRpbmcgcGxheXMgb25jZS4gRm9yIHByYWN0aWNlIHlvdSBjYW4gcmVwbGF5IGl0IFx1MjAxNCBidXQgdHJ5IHRvIGxpc3RlbiBvbmx5IG9uY2UgZmlyc3QuIikpO3Jvb3QuYXBwZW5kQ2hpbGQoX3ApO3JldHVybjt9CgogICAgaWYgKENFTFBJUF9ZVC52aWRlb0lkKXsKICAgICAgdmFyIGNoID0gQ0xQX0NIQVBURVJTW3Njci5waSArICcuJyArIHNjci5zaV0gfHwgWzAsIDBdOwogICAgICB2YXIgdnBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgICAgdmFyIHZjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCBjbHAtaXMtdmlkZW8nKTsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7Ym9yZGVyLXJhZGl1czo4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzAwMDsnOwogICAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgIGlmci5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvJyArIENFTFBJUF9ZVC52aWRlb0lkICsgJz9zdGFydD0nICsgY2hbMF0gKyAoY2hbMV0gPyAnJmVuZD0nICsgY2hbMV0gOiAnJykgKyAnJnJlbD0wJm1vZGVzdGJyYW5kaW5nPTEnOwogICAgICBpZnIuYWxsb3cgPSAnYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgcGljdHVyZS1pbi1waWN0dXJlJzsKICAgICAgaWZyLmFsbG93RnVsbHNjcmVlbiA9IHRydWU7CiAgICAgIGlmci50aXRsZSA9ICdDRUxQSVAgTGlzdGVuaW5nIG1lZGlhJzsKICAgICAgaWZyLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowOyc7CiAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaWZyKTsKICAgICAgdmNhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZCh2Y2FyZCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQgcHJlc3MgTkVYVCB3aGVuIGl0IGVuZHMuJykpOwogICAgICByb290LmFwcGVuZENoaWxkKHZwYW5lbCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkJyArIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJyBjbHAtaXMtdmlkZW8nIDogJycpKTsKICAgIC8qIC5jbHAtbWVkaWEtem9uZSBpcyB0aGUgZnV0dXJlIFlvdVR1YmUtZW1iZWQgdGFyZ2V0IChkYXRhLW1lZGlhLXNsb3QpICovCiAgICB2YXIgem9uZSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXpvbmUnKTsKICAgIHpvbmUuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXNsb3QnLCBzY3IucGkgKyAnLicgKyBzY3Iuc2kpOwogICAgdmFyIGljb24gPSBlbCgnZGl2JywgJ2NscC1zcGVha2VyJyk7CiAgICBpY29uLmlubmVySFRNTCA9IHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyBQTEFZX1NWRyA6IFNQRUFLRVJfU1ZHOwogICAgdmFyIG1haW4gPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tYWluJyk7CiAgICB2YXIgbGFiZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1sYWJlbCcsICdQbGF5aW5nXHUyMDI2Jyk7CiAgICB2YXIgcHJvZyA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzJyk7CiAgICB2YXIgZmlsbCA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzLWZpbGwnKTsKICAgIHByb2cuYXBwZW5kQ2hpbGQoZmlsbCk7CgogICAgaWYgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycpewogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChtYWluKTsKICAgIH0gZWxzZSB7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICB6b25lLmFwcGVuZENoaWxkKG1haW4pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgfQogICAgcGFuZWwuYXBwZW5kQ2hpbGQoY2FyZCk7CgogICAgdmFyIG1ldGEgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tZXRhJyk7CiAgICB2YXIgdGltZVNwYW4gPSBlbCgnc3BhbicsICcnLCAnMDowMCAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKSk7CiAgICBtZXRhLmFwcGVuZENoaWxkKHRpbWVTcGFuKTsKICAgIHZhciB2b2wgPSBlbCgnc3BhbicsICcnKTsKICAgIHZvbC5pbm5lckhUTUwgPSAnPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgICBtZXRhLmFwcGVuZENoaWxkKHZvbCk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChtZXRhKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJ1RoaXMgdmlkZW8gcGxheXMnIDogJ1RoaXMgcmVjb3JkaW5nIHBsYXlzJykgKyAnIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIHRlc3QuJykpOwogICAgaWYgKCFDRUxQSVBfWVQudmlkZW9JZCl7IHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdPZmZpY2lhbCBhdWRpby92aWRlbyBpcyBiZWluZyBwcmVwYXJlZCBcdTIwMTQgdGhlIGJhciBhYm92ZSBpcyBhIHNpbXVsYXRpb24uIFByZXNzIE5FWFQgdG8gY29udGludWUuJykpOyB9CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBzaW11bGF0ZWQgcGxheWJhY2sgKi8KICAgIHZhciBlbGFwc2VkID0gMDsKICAgIG1lZGlhVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBlbGFwc2VkKys7CiAgICAgIGlmIChlbGFwc2VkID49IHNlYy5kdXJhdGlvbil7CiAgICAgICAgZWxhcHNlZCA9IHNlYy5kdXJhdGlvbjsKICAgICAgICBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsKICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICdGaW5pc2hlZCc7CiAgICAgIH0KICAgICAgZmlsbC5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoZWxhcHNlZCAvIHNlYy5kdXJhdGlvbiAqIDEwMCkgKyAnJSc7CiAgICAgIHRpbWVTcGFuLnRleHRDb250ZW50ID0gZm10KGVsYXBzZWQpICsgJyAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKTsKICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb25zKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IFF1ZXN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIocGFydC5xSW5zdHJ1Y3Rpb24pKTsKCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1xLXBhbmVsJyk7CiAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICB2YXIga2V5ID0gcUtleShzY3IucGksIHNjci5zaSwgcWkpOwogICAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtcScpOwogICAgICB2YXIgbnVtID0gZWwoJ3NwYW4nLCAnY2xwLXFudW0nLCBxLm4gKyAnLiAnKTsKICAgICAgcm93LmFwcGVuZENoaWxkKG51bSk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxLnN0ZW0gKyAnICcpKTsKCiAgICAgIHZhciBkZCA9IGVsKCdidXR0b24nLCAnY2xwLWRkJyk7CiAgICAgIGRkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLXRleHQnKSk7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIHZhciBhbnMgPSBzdGF0ZS5hbnN3ZXJzW2tleV07CiAgICAgIHNldFRyaWdnZXJMYWJlbChkZCwgYW5zICE9PSB1bmRlZmluZWQgPyBxLm9wdGlvbnNbYW5zXSA6ICcnLCBhbnMgPT09IHVuZGVmaW5lZCk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkZCk7CgogICAgICBpZiAocS50b2RvKXsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRvZG8tdGFnJywgJ1RPRE8nKSk7CiAgICAgIH0KCiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkZC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGNvcnJlY3QgPSBhbnMgPT09IHEua2V5IC0gMTsKICAgICAgICBkZC5jbGFzc0xpc3QuYWRkKGNvcnJlY3QgPyAnY2xwLW1hcmstcmlnaHQnIDogJ2NscC1tYXJrLXdyb25nJyk7CiAgICAgICAgaWYgKCFjb3JyZWN0KXsKICAgICAgICAgIHZhciByZXYgPSBlbCgnc3BhbicsICdjbHAtcmV2ZWFsJyk7CiAgICAgICAgICByZXYuaW5uZXJIVE1MID0gJ0NvcnJlY3QgYW5zd2VyOiA8Yj48L2I+JzsKICAgICAgICAgIHJldi5xdWVyeVNlbGVjdG9yKCdiJykudGV4dENvbnRlbnQgPSBxLm9wdGlvbnNbcS5rZXkgLSAxXTsKICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChyZXYpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBkZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgb3BlblBvcHVwKGRkLCBzY3IucGksIHNjci5zaSwgcWkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9KTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIGNvdW50ZG93biAqLwogICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgc3RhcnRRVGltZXIoKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRRVGltZXIoKXsKICAgIGlmIChxVGltZXIpIGNsZWFySW50ZXJ2YWwocVRpbWVyKTsKICAgIGlmICghc3RhdGUudGltZXJPbikgcmV0dXJuOwogICAgcVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgaWYgKHFSZW1haW5pbmcgPiAwKSBxUmVtYWluaW5nLS07CiAgICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgICBpZiAodCkgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGlmIChxUmVtYWluaW5nIDw9IDApeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRmluaXNoKHJvb3QpewogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgJ0VuZCBvZiBUZXN0Jyk7CiAgICB2YXIgYm94ID0gZWwoJ2RpdicsICdjbHAtZmluaXNoJyk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdFbmQgb2YgdGhlIExpc3RlbmluZyBUZXN0JykpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdwJywgJycsICdZb3UgaGF2ZSBhbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJyBvZiAnICsgVE9UQUxfUSArICcgcXVlc3Rpb25zLiBDaGVjayB5b3VyIGFuc3dlcnMgdG8gc2VlIHlvdXIgc2NvcmUsIHBhcnQtYnktcGFydCByZXN1bHRzLCBhbmQgdHJhbnNjcmlwdHMuJykpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCAnY2xwLWZpbmlzaC1jaGVjaycsICdDaGVjayBhbnN3ZXJzJyk7CiAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hlY2tBbnN3ZXJzKTsKICAgIGJveC5hcHBlbmRDaGlsZChidG4pOwogICAgcm9vdC5hcHBlbmRDaGlsZChib3gpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICBjbGVhclRpbWVycygpOwogICAgY2xvc2VQb3B1cCgpOwogICAgY2F0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIHNjciA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKCiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpewogICAgICB2YXIgYmFyMCA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgICBiYXIwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChiYXIwKTsKICAgICAgdmFyIGlkbGUgPSBlbCgnZGl2JywgJ2NscC1pZGxlJyk7CiAgICAgIHZhciBwID0gZWwoJ3AnLCAnJywgJ1ByZXNzIFx1MjAxQ1N0YXJ0IHRlc3RcdTIwMUQgYWJvdmUgdG8gYmVnaW4uIFRoZSB0ZXN0IGhhcyA2IHBhcnRzIGFuZCAzOCBxdWVzdGlvbnMsIGFuZCBldmVyeSByZWNvcmRpbmcgYW5kIHZpZGVvIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIGNvbXB1dGVyLWRlbGl2ZXJlZCB0ZXN0LicpOwogICAgICBpZGxlLmFwcGVuZENoaWxkKHApOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoaWRsZSk7CiAgICAgIHJlbmRlckRvdHMoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBpc1EgPSBzY3IudHlwZSA9PT0gJ3EnOwogICAgaWYgKGlzUSl7CiAgICAgIHZhciBzZWMgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5zZWN0aW9uc1tzY3Iuc2ldOwogICAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICB9CiAgICB2YXIgdGl0bGUgPSBzY3IudHlwZSA9PT0gJ2ZpbmlzaCcKICAgICAgPyBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnCiAgICAgIDogVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uaGVhZGVyVGl0bGU7CiAgICBjYXQuYXBwZW5kQ2hpbGQobWFrZUJhcih0aXRsZSwgaXNRKSk7CgogICAgdmFyIHNjcmVlbiA9IGVsKCdkaXYnLCAnY2xwLXNjcmVlbicpOwogICAgaWYgKHNjci50eXBlID09PSAnaW50cm8nKSByZW5kZXJJbnRybyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ21lZGlhJykgcmVuZGVyTWVkaWEoc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdxJykgcmVuZGVyUXVlc3Rpb25zKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgcmVuZGVyRmluaXNoKHNjcmVlbik7CiAgICBjYXQuYXBwZW5kQ2hpbGQoc2NyZWVuKTsKICAgIHJlbmRlckRvdHMoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gcmVzdWx0cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2hlY2tBbnN3ZXJzKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCkgcmV0dXJuOwogICAgc3RhdGUuY2hlY2tlZCA9IHRydWU7CiAgICB2YXIgc2NvcmUgPSBjb21wdXRlU2NvcmUoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICByZW5kZXJSZXN1bHRzKHNjb3JlKTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIHNjcm9sbFRvRWwocmVzdWx0c0VsKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclJlc3VsdHMoc2NvcmUpewogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGVsKCdoMicsICcnLCAnWW91ciByZXN1bHRzJykpOwogICAgdmFyIGdyaWQgPSBlbCgnZGl2JywgJ2NscC1yZXMtZ3JpZCcpOwoKICAgIC8qIHJpbmcgY2FyZCAqLwogICAgdmFyIHJpbmdDYXJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmluZy1jYXJkIGNscC1yZXYnKTsKICAgIHZhciB3cmFwID0gZWwoJ2RpdicsICdjbHAtcmluZy13cmFwJyk7CiAgICB2YXIgUiA9IDU2LCBDID0gMiAqIE1hdGguUEkgKiBSOwogICAgd3JhcC5pbm5lckhUTUwgPQogICAgICAnPHN2ZyB3aWR0aD0iMTMyIiBoZWlnaHQ9IjEzMiIgdmlld0JveD0iMCAwIDEzMiAxMzIiPicgKwogICAgICAnPGNpcmNsZSBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiNFMkU4RjAiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiLz4nICsKICAgICAgJzxjaXJjbGUgaWQ9ImNscFJpbmciIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iIzEwQjk4MSIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAnICsKICAgICAgJ3N0cm9rZS1kYXNoYXJyYXk9IicgKyBDICsgJyIgc3Ryb2tlLWRhc2hvZmZzZXQ9IicgKyBDICsgJyIvPjwvc3ZnPic7CiAgICB2YXIgbnVtID0gZWwoJ2RpdicsICdjbHAtcmluZy1udW0nKTsKICAgIHZhciBiaWcgPSBlbCgnYicsICcnLCAnMCcpOwogICAgbnVtLmFwcGVuZENoaWxkKGJpZyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ291dCBvZiAnICsgVE9UQUxfUSkpOwogICAgd3JhcC5hcHBlbmRDaGlsZChudW0pOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1RvdGFsIHNjb3JlJykpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChyaW5nQ2FyZCk7CgogICAgLyogYnJlYWtkb3duIGNhcmQgKi8KICAgIHZhciBiZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJldicpOwogICAgYmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdQYXJ0LWJ5LXBhcnQgYnJlYWtkb3duJykpOwogICAgdmFyIGNoaXBzID0gZWwoJ2RpdicsICdjbHAtcGFydC1jaGlwcycpOwogICAgc2NvcmUucGVyUGFydC5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBwaSl7CiAgICAgIHZhciBjID0gZWwoJ3NwYW4nLCAnY2xwLXBhcnQtY2hpcCcpOwogICAgICBjLmlubmVySFRNTCA9ICdQJyArIChwaSArIDEpICsgJyA8Yj4nICsgcHAuY29ycmVjdCArICcvJyArIHBwLnRvdGFsICsgJzwvYj4nOwogICAgICBjaGlwcy5hcHBlbmRDaGlsZChjKTsKICAgIH0pOwogICAgYmQuYXBwZW5kQ2hpbGQoY2hpcHMpOwoKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZShzY29yZS50b3RhbCk7CiAgICB2YXIgY2xiID0gZWwoJ2RpdicsICdjbHAtY2xiLXJvdycpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1jbGItYmFkZ2UnLCBlc3QubGV2ZWwpKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgncCcsICcnLCBlc3Qubm90ZSArICcgXHUyMDE0IGVzdGltYXRlZCBmcm9tIGEgcmF3IHNjb3JlIG9mICcgKyBzY29yZS50b3RhbCArICcvJyArIFRPVEFMX1EgKyAnLiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LicpKTsKICAgIGJkLmFwcGVuZENoaWxkKGNsYik7CiAgICBncmlkLmFwcGVuZENoaWxkKGJkKTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChncmlkKTsKCiAgICAvKiB0cmFuc2NyaXB0cyAqLwogICAgdmFyIHRyV3JhcCA9IGVsKCdkaXYnLCAnY2xwLXRyYW5zY3JpcHRzJyk7CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtdHItY2FyZCBjbHAtcmV2Jyk7CiAgICAgIHZhciBoZWFkID0gZWwoJ2J1dHRvbicsICdjbHAtdHItaGVhZCcpOwogICAgICBoZWFkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnVHJhbnNjcmlwdCBcdTIwMTQgJyArIHBhcnQubmFtZSkpOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBjYXJkLmNsYXNzTGlzdC50b2dnbGUoJ2NscC1vcGVuJyk7IH0pOwogICAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLXRyLWJvZHknKTsKICAgICAgYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0LnRyYW5zY3JpcHQpKTsKICAgICAgaWYgKHBhcnQudHJhbnNjcmlwdFRvZG8pewogICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLXRvZG8nLCAnVE9ETzogcmVwbGFjZSB0aGlzIHN1bW1hcnkgd2l0aCB0aGUgZnVsbCBvZmZpY2lhbCB0cmFuc2NyaXB0LicpKTsKICAgICAgfQogICAgICBjYXJkLmFwcGVuZENoaWxkKGhlYWQpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGJvZHkpOwogICAgICB0cldyYXAuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZCh0cldyYXApOwoKICAgIC8qIHJldmVhbCArIGNvdW50LXVwICovCiAgICB2YXIgcmV2RWxzID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHAtcmV2Jyk7CiAgICBpZiAoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cgJiYgIXJlZHVjZWRNb3Rpb24pewogICAgICB2YXIgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcyl7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVuKXsKICAgICAgICAgIGlmIChlbi5pc0ludGVyc2VjdGluZyl7IGVuLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgaW8udW5vYnNlcnZlKGVuLnRhcmdldCk7IH0KICAgICAgICB9KTsKICAgICAgfSwgeyB0aHJlc2hvbGQ6IDAuMTUgfSk7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBpby5vYnNlcnZlKGUpOyB9KTsKICAgIH0gZWxzZSB7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBlLmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyB9KTsKICAgIH0KCiAgICB2YXIgcmluZyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yKCcjY2xwUmluZycpOwogICAgdmFyIHRhcmdldCA9IHNjb3JlLnRvdGFsOwogICAgaWYgKHJlZHVjZWRNb3Rpb24pewogICAgICBiaWcudGV4dENvbnRlbnQgPSB0YXJnZXQ7CiAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIHRhcmdldCAvIFRPVEFMX1EpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHQwID0gbnVsbCwgRFVSID0gMTEwMDsKICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgaWYgKCF0MCkgdDAgPSB0czsKICAgICAgICB2YXIgcCA9IE1hdGgubWluKDEsICh0cyAtIHQwKSAvIERVUik7CiAgICAgICAgdmFyIGVhc2UgPSAxIC0gTWF0aC5wb3coMSAtIHAsIDMpOwogICAgICAgIGJpZy50ZXh0Q29udGVudCA9IE1hdGgucm91bmQoZWFzZSAqIHRhcmdldCk7CiAgICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gKGVhc2UgKiB0YXJnZXQpIC8gVE9UQUxfUSk7CiAgICAgICAgaWYgKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICAgIH0KICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfQogIH0KCiAgLyogLS0tLS0tLS0tLSB0b29sYmFyIC8gY29udHJvbHMgLS0tLS0tLS0tLSAqLwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTdGFydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSB0cnVlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHRvb2xiYXIuaGlkZGVuID0gZmFsc2U7CiAgICByZW5kZXIoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2ltJykpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDaGVjaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIGlmICghc3RhdGUuc3RhcnRlZCkgcmV0dXJuOwogICAgY2hlY2tBbnN3ZXJzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IGZhbHNlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHN0YXRlLmFuc3dlcnMgPSB7fTsKICAgIHN0YXRlLmNoZWNrZWQgPSBmYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSB0cnVlOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgdG9vbGJhci5oaWRkZW4gPSB0cnVlOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscEFwcCcpLCAyMCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRpbWVyVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUudGltZXJPbiA9ICFzdGF0ZS50aW1lck9uOwogICAgdGhpcy50ZXh0Q29udGVudCA9ICdUaW1lcjogJyArIChzdGF0ZS50aW1lck9uID8gJ29uJyA6ICdvZmYnKTsKICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKXsKICAgICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgICBpZiAodCkgdC5yZW1vdmUoKTsKICAgIH0gZWxzZSBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdICYmIHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAncScpewogICAgICByZW5kZXIoKTsKICAgIH0KICB9KTsKCiAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgcmVuZGVyKCk7Cn0pKCk7Cg=='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 9 Practice Test 1: 6-part computer-delivered listening test in the real exam format, with audio, instant scoring and answer key. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6229","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6229"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6229\/revisions"}],"predecessor-version":[{"id":6587,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6229\/revisions\/6587"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}