diff --git a/advanced-cron-manager.php b/advanced-cron-manager.php index fc67b60..0c028ca 100644 --- a/advanced-cron-manager.php +++ b/advanced-cron-manager.php @@ -2,14 +2,14 @@ /** * Plugin Name: Advanced Cron Manager * Description: View, pause, remove, edit and add WP Cron events. - * Version: 2.3.4 + * Version: 2.3.5 * Author: BracketSpace * Author URI: https://bracketspace.com * License: GPL3 * Text Domain: advanced-cron-manager */ -$plugin_version = '2.3.4'; +$plugin_version = '2.3.5'; $plugin_file = __FILE__; /** @@ -185,6 +185,9 @@ function acm_check_old_plugins( $plugins, $r ) { add_action( 'wp_ajax_acm/server/settings/save', array( $server_settings(), 'save_settings' ) ); add_action( 'plugins_loaded', array( $server_processor(), 'block_cron_executions' ), 10, 1 ); +// Plugin row actions +add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $misc(), 'plugin_action_link' ) ); + // Notification promo add_action( 'plugins_loaded', function() use ( $misc ) { if ( ! function_exists( 'register_trigger' ) ) { diff --git a/assets/dist/css/style.css b/assets/dist/css/style.css index 6a4463c..54850fb 100644 --- a/assets/dist/css/style.css +++ b/assets/dist/css/style.css @@ -1,3 +1,3 @@ -@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes pulsate{0%{background-color:#ccc}50%{background-color:#ddd}100%{background-color:#ccc}}@keyframes pulsate{0%{background-color:#ccc}50%{background-color:#ddd}100%{background-color:#ccc}}.tools_page_advanced-cron-manager #poststuff{padding-top:25px}@media (max-width: 460px){.tools_page_advanced-cron-manager #poststuff{padding-top:10px}}.tools_page_advanced-cron-manager #poststuff #post-body{margin-right:470px}@media (max-width: 1200px){.tools_page_advanced-cron-manager #poststuff #post-body{margin-right:320px}}.tools_page_advanced-cron-manager #poststuff #postbox-container-1{float:right;margin-right:-470px;width:450px}@media (max-width: 1200px){.tools_page_advanced-cron-manager #poststuff #postbox-container-1{margin-right:-320px;width:300px}}@media (max-width: 460px){.tools_page_advanced-cron-manager .wrap>.page-title-action{display:none}}.tile{background-color:#fff;border:1px solid #ddd}.tile .tile-header{padding:10px 15px;font-size:1.1em;margin:0;border-bottom:1px solid #ddd}.tile .tile-content{padding:10px 15px}.tile img{max-width:100%;height:auto}#notification-promo{margin-top:40px}#toast-container{display:block;position:fixed;z-index:999999}@media (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media (min-width: 601px) and (max-width: 1200px){#toast-container{right:5%;bottom:7%;max-width:90%}}@media (min-width: 1201px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{box-sizing:border-box;border-radius:2px;top:35px;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#222;padding:10px 25px 10px 15px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.toast .btn{margin:0;margin-left:2rem;padding:5px 10px;border-radius:5px;background:#444;color:white;text-decoration:none;font-weight:500;font-size:1rem}.toast .dashicons{margin-right:10px}.toast .dashicons.dashicons-yes{color:#00b300}.toast .dashicons.dashicons-warning{color:#ff2626}@media (max-width: 600px){.toast{width:100%;border-radius:0}}@media (min-width: 601px) and (max-width: 1200px){.toast{float:left}}@media (min-width: 1201px){.toast{float:right}}.slidebar{box-sizing:border-box;position:fixed;height:100%;height:100vh;right:0;top:0;background:#f7f7f7;border-left:1px solid #d2d2d2;box-shadow:0 -3px 9px #cacaca;width:380px;z-index:9999;padding:20px 30px;margin-top:32px;overflow:auto;margin-right:-385px;max-width:95%}@media (max-width: 600px){.slidebar{z-index:99999;margin-top:0}}.slidebar .close{float:right;margin:0 0 16px 16px;cursor:pointer;font-size:1.8rem}.slidebar .content h3{margin-top:6px;margin-bottom:40px}.slidebar .content form label{font-weight:500}.slidebar .content form input,.slidebar .content form select{margin-top:6px;margin-bottom:15px}.slidebar .content form input.spinbox,.slidebar .content form select.spinbox{margin-bottom:5px;float:right;width:60px;display:inline-block}.slidebar .content form input.event-argument,.slidebar .content form select.event-argument{margin-bottom:5px}.slidebar .content form .submit-row{float:right}.slidebar .content form .submit-row .button{float:right;margin-bottom:20px}.slidebar .content form .submit-row .spinner{margin-top:10px;float:left}.slidebar .content .form-placeholder{display:none}.slidebar .content .form-placeholder .header{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:pulsate;animation-name:pulsate;-webkit-animation-timing-function:linear;animation-timing-function:linear;background:#e2e2e2;height:30px;width:75%;margin-bottom:3em}.slidebar .content .form-placeholder .input{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:pulsate;animation-name:pulsate;-webkit-animation-timing-function:linear;animation-timing-function:linear;background:#e2e2e2;height:30px;width:100%;margin-bottom:1.5em}.slidebar .content .form-placeholder .send{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:pulsate;animation-name:pulsate;-webkit-animation-timing-function:linear;animation-timing-function:linear;background:#e2e2e2;height:30px;width:30%;float:right}.slidebar .content.loading .form-placeholder{display:block}.slidebar-overlay{display:none;position:fixed;width:100%;height:100%;top:0;left:0;z-index:999;background-color:rgba(0,0,0,0.1)}.searchbox{margin-bottom:20px}.searchbox #search{padding:10px 15px;font-size:1.2em}@media (max-width: 850px){#schedules{margin-top:30px}}#schedules.loading{opacity:0.7}#schedules .schedules .single-schedule{display:-webkit-box;display:-ms-flexbox;display:flex;margin:10px 0}#schedules .schedules .single-schedule.header{font-weight:500}#schedules .schedules .single-schedule.header:hover{background:transparent}#schedules .schedules .single-schedule .column{padding:2px;overflow:hidden}#schedules .schedules .single-schedule .column.label{-webkit-box-flex:100;-ms-flex-positive:100;flex-grow:100}#schedules .schedules .single-schedule .column.slug{width:30%}#schedules .schedules .single-schedule .column.interval{width:15%}#schedules .schedules .single-schedule .column.actions{width:15%;text-align:right}#schedules .schedules .single-schedule .column.actions .dashicons.dashicons-trash{color:#a00}#schedules .schedules .single-schedule .column.actions .dashicons.dashicons-trash:hover{color:red}#schedules .schedules .single-schedule .column.actions .dashicons.dashicons-trash.working{color:inherit;-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:4000ms;animation-duration:4000ms;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#schedules .schedules .single-schedule .column.actions .dashicons.dashicons-trash.working:before{content:"\f111"}#schedules .schedules .single-schedule .column.actions .dashicons.disabled,#schedules .schedules .single-schedule .column.actions .dashicons.disabled:hover{cursor:not-allowed;color:#ccc}#schedules .schedules .single-schedule .column.actions .dashicons span{display:none}#schedules .page-title-action{top:15px;margin-left:0}#events.loading{opacity:0.7}#events .tablenav.bottom{overflow:auto;margin-bottom:-15px}@media (min-width: 784px){#events .tablenav.bottom{display:none}}#events .events{overflow:hidden}#events .events .single-event{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#events .events .single-event:hover .row-actions{position:static}@media (max-width: 1200px){#events .events .single-event .row-actions{position:static}}#events .events .single-event.header{border-bottom:1px solid #e1e1e1;font-weight:500}#events .events .single-event.header:last-of-type{border-bottom:none}#events .events .single-event.header .columns{border-bottom:none;box-shadow:none}#events .events .single-event.unfolded .columns{box-shadow:0 1px 6px rgba(0,0,0,0.1)}#events .events .single-event.unfolded>.details{display:-webkit-box;display:-ms-flexbox;display:flex}#events .events .single-event.paused{background-color:#fcfcfc}#events .events .single-event.running{background-color:#e0fbe7}#events .events .single-event.running .columns .column.cb input{display:none}#events .events .single-event.running .columns .column.cb .dashicons{display:block;color:green}#events .events .single-event.removing .columns .column.cb input{display:none}#events .events .single-event.removing .columns .column.cb .dashicons{display:block}#events .events .single-event .columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;border-bottom:1px solid #e1e1e1;z-index:1}#events .events .single-event .columns .column{padding:12px}#events .events .single-event .columns .column.cb{width:18px}#events .events .single-event .columns .column.cb input{margin-right:0}#events .events .single-event .columns .column.cb .dashicons{display:none;-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:4000ms;animation-duration:4000ms;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#events .events .single-event .columns .column.event{-webkit-box-flex:100;-ms-flex-positive:100;flex-grow:100}#events .events .single-event .columns .column.event .event-name{text-decoration:none;color:inherit}#events .events .single-event .columns .column.event .event-name .dashicons{color:#555}#events .events .single-event .columns .column.event .row-actions a{text-decoration:none}#events .events .single-event .columns .column.schedule{width:15%}@media (max-width: 1200px){#events .events .single-event .columns .column.schedule{display:none}}#events .events .single-event .columns .column.arguments{width:15%}@media (max-width: 1200px){#events .events .single-event .columns .column.arguments{display:none}}#events .events .single-event .columns .column.arguments span{margin:0 4px 4px 0;padding:3px 5px;background:#f5f5f5;border-radius:3px;border:1px solid #dbdbdb;white-space:pre;display:inline-block}#events .events .single-event .columns .column.next-execution{width:15%;text-align:right}@media (max-width: 1200px){#events .events .single-event .columns .column.next-execution{width:25%}}#events .events .single-event>.details{display:none;-webkit-box-flex:100;-ms-flex-positive:100;flex-grow:100;background-color:#f3f3f3;border-bottom:1px solid #dbdbdb}@media (max-width: 1200px){#events .events .single-event>.details{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}#events .events .single-event>.details .tabs{min-width:220px;max-width:220px;margin:0}@media (max-width: 1200px){#events .events .single-event>.details .tabs{min-width:100%;max-width:100%;border-bottom:1px solid #e8e8e8}}#events .events .single-event>.details .tabs li{margin:0}@media (max-width: 1200px){#events .events .single-event>.details .tabs li{width:50%;float:left}}#events .events .single-event>.details .tabs li:last-child{margin-bottom:20px}@media (max-width: 1200px){#events .events .single-event>.details .tabs li:last-child{margin-bottom:0}}#events .events .single-event>.details .tabs li.active{border-top:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8}#events .events .single-event>.details .tabs li.active:first-child{border-top-color:#fbfbfb}@media (max-width: 1200px){#events .events .single-event>.details .tabs li.active{border:none;font-weight:500}}#events .events .single-event>.details .tabs li.active a{position:relative;left:1px;padding-left:53px;background-color:#fbfbfb}@media (max-width: 1200px){#events .events .single-event>.details .tabs li.active a{padding-left:20px;background-color:transparent}}#events .events .single-event>.details .tabs li.arguments,#events .events .single-event>.details .tabs li.schedule{display:none}@media (max-width: 1200px){#events .events .single-event>.details .tabs li.arguments,#events .events .single-event>.details .tabs li.schedule{display:block}}#events .events .single-event>.details .tabs li a{display:block;padding:10px 20px 10px 54px;text-decoration:none;color:#444}@media (max-width: 1200px){#events .events .single-event>.details .tabs li a{padding-left:20px}}#events .events .single-event>.details .tabs li a:focus{box-shadow:none}#events .events .single-event>.details .content{padding:20px;border-left:1px solid #d8d8d8;display:none;background-color:#fbfbfb;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media (max-width: 1200px){#events .events .single-event>.details .content{border:none}}#events .events .single-event>.details .content.active{display:block}#events .events .single-event>.details .content.logs p:first-child{margin-top:0}#events .events .single-event>.details .content.logs ul{list-style:disc;padding-left:20px}#events .events .single-event>.details .content.arguments span{margin:0 4px 4px 0;padding:3px 5px;background:#f5f5f5;border-radius:3px;border:1px solid #dbdbdb;white-space:pre;display:inline-block}#events .events .single-event>.details .content.implementation code{display:block;padding:15px;background-color:#f7f7f7;border:1px solid #e8e8e8}#events .page-title-action{top:15px;margin-left:0;clear:both}#server-scheduler-settings{margin-top:40px}#server-scheduler-settings #server-settings-form label{display:block;margin-bottom:15px} +@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes pulsate{0%{background-color:#ccc}50%{background-color:#ddd}100%{background-color:#ccc}}.tools_page_advanced-cron-manager #poststuff{padding-top:25px}@media (max-width: 460px){.tools_page_advanced-cron-manager #poststuff{padding-top:10px}}.tools_page_advanced-cron-manager #poststuff #post-body{margin-right:470px}@media (max-width: 1200px){.tools_page_advanced-cron-manager #poststuff #post-body{margin-right:320px}}.tools_page_advanced-cron-manager #poststuff #postbox-container-1{float:right;margin-right:-470px;width:450px}@media (max-width: 1200px){.tools_page_advanced-cron-manager #poststuff #postbox-container-1{margin-right:-320px;width:300px}}@media (max-width: 460px){.tools_page_advanced-cron-manager .wrap>.page-title-action{display:none}}.tile{background-color:#fff;border:1px solid #ddd}.tile .tile-header{padding:10px 15px;font-size:1.1em;margin:0;border-bottom:1px solid #ddd}.tile .tile-content{padding:10px 15px}.tile img{max-width:100%;height:auto}#notification-promo{margin-top:40px}#toast-container{display:block;position:fixed;z-index:999999}@media (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media (min-width: 601px) and (max-width: 1200px){#toast-container{right:5%;bottom:7%;max-width:90%}}@media (min-width: 1201px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{box-sizing:border-box;border-radius:2px;top:35px;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#222;padding:10px 25px 10px 15px;font-size:1.1rem;font-weight:300;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.toast .btn{margin:0;margin-left:2rem;padding:5px 10px;border-radius:5px;background:#444;color:white;text-decoration:none;font-weight:500;font-size:1rem}.toast .dashicons{margin-right:10px}.toast .dashicons.dashicons-yes{color:#00b300}.toast .dashicons.dashicons-warning{color:#ff2626}@media (max-width: 600px){.toast{width:100%;border-radius:0}}@media (min-width: 601px) and (max-width: 1200px){.toast{float:left}}@media (min-width: 1201px){.toast{float:right}}.slidebar{box-sizing:border-box;position:fixed;height:100%;height:100vh;right:0;top:0;background:#f7f7f7;border-left:1px solid #d2d2d2;box-shadow:0 -3px 9px #cacaca;width:380px;z-index:9999;padding:20px 30px;margin-top:32px;overflow:auto;margin-right:-385px;max-width:95%}@media (max-width: 600px){.slidebar{z-index:99999;margin-top:0}}.slidebar .close{float:right;margin:0 0 16px 16px;cursor:pointer;font-size:1.8rem}.slidebar .content h3{margin-top:6px;margin-bottom:40px}.slidebar .content form label{font-weight:500}.slidebar .content form input,.slidebar .content form select{margin-top:6px;margin-bottom:15px}.slidebar .content form input.spinbox,.slidebar .content form select.spinbox{margin-bottom:5px;float:right;width:60px;display:inline-block}.slidebar .content form input.event-argument,.slidebar .content form select.event-argument{margin-bottom:5px}.slidebar .content form .submit-row{float:right}.slidebar .content form .submit-row .button{float:right;margin-bottom:20px}.slidebar .content form .submit-row .spinner{margin-top:10px;float:left}.slidebar .content .form-placeholder{display:none}.slidebar .content .form-placeholder .header{animation-duration:1s;animation-iteration-count:infinite;animation-name:pulsate;animation-timing-function:linear;background:#e2e2e2;height:30px;width:75%;margin-bottom:3em}.slidebar .content .form-placeholder .input{animation-duration:1s;animation-iteration-count:infinite;animation-name:pulsate;animation-timing-function:linear;background:#e2e2e2;height:30px;width:100%;margin-bottom:1.5em}.slidebar .content .form-placeholder .send{animation-duration:1s;animation-iteration-count:infinite;animation-name:pulsate;animation-timing-function:linear;background:#e2e2e2;height:30px;width:30%;float:right}.slidebar .content.loading .form-placeholder{display:block}.slidebar-overlay{display:none;position:fixed;width:100%;height:100%;top:0;left:0;z-index:999;background-color:rgba(0,0,0,0.1)}.searchbox{margin-bottom:20px}.searchbox #search{padding:10px 15px;font-size:1.2em}@media (max-width: 850px){#schedules{margin-top:30px}}#schedules.loading{opacity:0.7}#schedules .schedules .single-schedule{display:-ms-flexbox;display:flex;margin:10px 0}#schedules .schedules .single-schedule.header{font-weight:500}#schedules .schedules .single-schedule.header:hover{background:transparent}#schedules .schedules .single-schedule .column{padding:2px;overflow:hidden}#schedules .schedules .single-schedule .column.label{-ms-flex-positive:100;flex-grow:100}#schedules .schedules .single-schedule .column.slug{width:30%}#schedules .schedules .single-schedule .column.interval{width:15%}#schedules .schedules .single-schedule .column.actions{width:15%;text-align:right}#schedules .schedules .single-schedule .column.actions .dashicons.dashicons-trash{color:#a00}#schedules .schedules .single-schedule .column.actions .dashicons.dashicons-trash:hover{color:red}#schedules .schedules .single-schedule .column.actions .dashicons.dashicons-trash.working{color:inherit;animation-name:spin;animation-duration:4000ms;animation-iteration-count:infinite;animation-timing-function:linear}#schedules .schedules .single-schedule .column.actions .dashicons.dashicons-trash.working:before{content:"\f111"}#schedules .schedules .single-schedule .column.actions .dashicons.disabled,#schedules .schedules .single-schedule .column.actions .dashicons.disabled:hover{cursor:not-allowed;color:#ccc}#schedules .schedules .single-schedule .column.actions .dashicons span{display:none}#schedules .page-title-action{top:15px;margin-left:0}#events.loading{opacity:0.7}#events .tablenav.bottom{overflow:auto;margin-bottom:-15px}@media (min-width: 784px){#events .tablenav.bottom{display:none}}#events .events{overflow:hidden}#events .events .single-event{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}#events .events .single-event:hover .row-actions{position:static}@media (max-width: 1200px){#events .events .single-event .row-actions{position:static}}#events .events .single-event.header{border-bottom:1px solid #e1e1e1;font-weight:500}#events .events .single-event.header:last-of-type{border-bottom:none}#events .events .single-event.header .columns{border-bottom:none;box-shadow:none}#events .events .single-event.unfolded .columns{box-shadow:0 1px 6px rgba(0,0,0,0.1)}#events .events .single-event.unfolded>.details{display:-ms-flexbox;display:flex}#events .events .single-event.paused{background-color:#fcfcfc}#events .events .single-event.running{background-color:#e0fbe7}#events .events .single-event.running .columns .column.cb input{display:none}#events .events .single-event.running .columns .column.cb .dashicons{display:block;color:green}#events .events .single-event.removing .columns .column.cb input{display:none}#events .events .single-event.removing .columns .column.cb .dashicons{display:block}#events .events .single-event .columns{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;border-bottom:1px solid #e1e1e1;z-index:1}#events .events .single-event .columns .column{padding:12px}#events .events .single-event .columns .column.cb{width:18px}#events .events .single-event .columns .column.cb input{margin-right:0}#events .events .single-event .columns .column.cb .dashicons{display:none;animation-name:spin;animation-duration:4000ms;animation-iteration-count:infinite;animation-timing-function:linear}#events .events .single-event .columns .column.event{-ms-flex-positive:100;flex-grow:100}#events .events .single-event .columns .column.event .event-name{text-decoration:none;color:inherit}#events .events .single-event .columns .column.event .event-name .dashicons{color:#555}#events .events .single-event .columns .column.event .row-actions a{text-decoration:none}#events .events .single-event .columns .column.schedule{width:15%}@media (max-width: 1200px){#events .events .single-event .columns .column.schedule{display:none}}#events .events .single-event .columns .column.arguments{width:15%}@media (max-width: 1200px){#events .events .single-event .columns .column.arguments{display:none}}#events .events .single-event .columns .column.arguments span{margin:0 4px 4px 0;padding:3px 5px;background:#f5f5f5;border-radius:3px;border:1px solid #dbdbdb}#events .events .single-event .columns .column.next-execution{width:15%;text-align:right}@media (max-width: 1200px){#events .events .single-event .columns .column.next-execution{width:25%}}#events .events .single-event>.details{display:none;-ms-flex-positive:100;flex-grow:100;background-color:#f3f3f3;border-bottom:1px solid #dbdbdb}@media (max-width: 1200px){#events .events .single-event>.details{-ms-flex-direction:column;flex-direction:column}}#events .events .single-event>.details .tabs{min-width:220px;max-width:220px;margin:0}@media (max-width: 1200px){#events .events .single-event>.details .tabs{min-width:100%;max-width:100%;border-bottom:1px solid #e8e8e8}}#events .events .single-event>.details .tabs li{margin:0}@media (max-width: 1200px){#events .events .single-event>.details .tabs li{width:50%;float:left}}#events .events .single-event>.details .tabs li:last-child{margin-bottom:20px}@media (max-width: 1200px){#events .events .single-event>.details .tabs li:last-child{margin-bottom:0}}#events .events .single-event>.details .tabs li.active{border-top:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8}#events .events .single-event>.details .tabs li.active:first-child{border-top-color:#fbfbfb}@media (max-width: 1200px){#events .events .single-event>.details .tabs li.active{border:none;font-weight:500}}#events .events .single-event>.details .tabs li.active a{position:relative;left:1px;padding-left:53px;background-color:#fbfbfb}@media (max-width: 1200px){#events .events .single-event>.details .tabs li.active a{padding-left:20px;background-color:transparent}}#events .events .single-event>.details .tabs li.arguments,#events .events .single-event>.details .tabs li.schedule{display:none}@media (max-width: 1200px){#events .events .single-event>.details .tabs li.arguments,#events .events .single-event>.details .tabs li.schedule{display:block}}#events .events .single-event>.details .tabs li a{display:block;padding:10px 20px 10px 54px;text-decoration:none;color:#444}@media (max-width: 1200px){#events .events .single-event>.details .tabs li a{padding-left:20px}}#events .events .single-event>.details .tabs li a:focus{box-shadow:none}#events .events .single-event>.details .content{padding:20px;border-left:1px solid #d8d8d8;display:none;background-color:#fbfbfb;-ms-flex-positive:1;flex-grow:1}@media (max-width: 1200px){#events .events .single-event>.details .content{border:none}}#events .events .single-event>.details .content.active{display:block}#events .events .single-event>.details .content.logs p:first-child{margin-top:0}#events .events .single-event>.details .content.logs ul{list-style:disc;padding-left:20px}#events .events .single-event>.details .content.arguments span{margin:0 4px 4px 0;padding:3px 5px;background:#f5f5f5;border-radius:3px;border:1px solid #dbdbdb;white-space:pre;display:inline-block}#events .events .single-event>.details .content.implementation code{display:block;padding:15px;background-color:#f7f7f7;border:1px solid #e8e8e8}#events .page-title-action{top:15px;margin-left:0;clear:both}#server-scheduler-settings{margin-top:40px}#server-scheduler-settings #server-settings-form label{display:block;margin-bottom:15px} -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9hbmltYXRpb25zLnNjc3MiLCJjb21wb25lbnRzL193cmFwcGVyLnNjc3MiLCJ2ZW5kb3IvX2luY2x1ZGUtbWVkaWEuc2NzcyIsImNvbXBvbmVudHMvX3RpbGUuc2NzcyIsImNvbXBvbmVudHMvX3RvYXN0LnNjc3MiLCJjb21wb25lbnRzL19zbGlkZWJhci5zY3NzIiwicGFydHMvX3NlYXJjaGJveC5zY3NzIiwicGFydHMvX3NjaGVkdWxlcy5zY3NzIiwicGFydHMvX2V2ZW50cy5zY3NzIiwicGFydHMvX3NlcnZlci1zZXR0aW5ncy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdCQUNJLEtBQU8sK0JBQUEsQUFBd0Isc0JBQUEsQ0FDL0IsR0FBSyxpQ0FBQSxBQUEwQix3QkFBQSxDQUFBLENBRm5DLEFBS0EsZ0JBSkksS0FBTywrQkFBQSxBQUF3QixzQkFBQSxDQUMvQixHQUFLLGlDQUFBLEFBQTBCLHdCQUFBLENBQUEsQ0FHbkMsMkJBQ0ksR0FBSyxxQkFBc0IsQ0FDM0IsSUFBTSxxQkFBc0IsQ0FDNUIsS0FBTyxxQkFBc0IsQ0FBQSxDQUhqQyxBQ0xBLG1CRE1JLEdBQUsscUJBQXNCLENBQzNCLElBQU0scUJBQXNCLENBQzVCLEtBQU8scUJBQXNCLENBQUEsQ0NSakMsNkNBR0ssZ0JBQWlCLENDNGlCbEIsMEJEL2lCSiw2Q0FNRyxnQkFBaUIsQ0F3QmxCLENBOUJGLHdEQVVNLGtCQUFtQixDQ3FpQnJCLDJCRC9pQkosd0RBYUksa0JBQW1CLENBR3BCLENBaEJILGtFQW1CTSxZQUNBLG9CQUNBLFdBQVksQ0MwaEJkLDJCRC9pQkosa0VBd0JJLG9CQUNBLFdBQVksQ0FHYixDQ21oQkMsMEJEL2lCSiwyREFrQ0csWUFBYSxDQUNiLENFbkNILE1BQ0Msc0JBQ0cscUJBQXNCLENBRjFCLG1CQUtLLGtCQUNBLGdCQUNBLFNBQ0EsNEJBQTZCLENBUmxDLG9CQVlLLGlCQUFrQixDQVp2QixVQWdCSyxlQUNBLFdBQVksQ0FDWixvQkFLSixlQUFn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V0FBWSxDQTZDYixDQXJWTCx1REE0U00sYUFBYyxDQTVTcEIsbUVBa1RPLFlBQWEsQ0FsVHBCLHdEQXNUVSxnQkFDRyxpQkFBa0IsQ0F2VC9CLCtEQStUTyxtQkFDQSxnQkFDQSxtQkFDQSxrQkFDQSx5QkFDQSxnQkFDQSxvQkFBcUIsQ0FyVTVCLG9FQTZVTyxjQUNBLGFBQ0EseUJBQ0Esd0JBQXlCLENBaFZoQywyQkE4VkUsU0FDQSxjQUNBLFVBQVcsQ0FDWCwyQkNoV0QsZUFBZ0IsQ0FEakIsdURBTUcsY0FDQSxrQkFBbUIsQ0FDbkIiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGtleWZyYW1lcyBzcGluIHtcclxuICAgIGZyb20geyB0cmFuc2Zvcm06cm90YXRlKCAwZGVnICk7IH1cclxuICAgIHRvIHsgdHJhbnNmb3JtOnJvdGF0ZSggMzYwZGVnICk7IH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBwdWxzYXRlIHtcclxuICAgIDAlIHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgfVxyXG4gICAgNTAlIHsgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsgfVxyXG4gICAgMTAwJSB7IGJhY2tncm91bmQtY29sb3I6ICNjY2M7IH1cclxufVxyXG4iLCIudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXIge1xyXG5cclxuXHQjcG9zdHN0dWZmIHtcclxuXHQgICAgcGFkZGluZy10b3A6IDI1cHg7XHJcblxyXG5cdCAgICBAaW5jbHVkZSBtZWRpYSggJzw9eHNtYWxsJyApIHtcclxuXHRcdFx0cGFkZGluZy10b3A6IDEwcHg7XHJcblx0XHR9XHJcblxyXG5cdCAgICAjcG9zdC1ib2R5IHtcclxuXHRcdCAgICBtYXJnaW4tcmlnaHQ6IDQ3MHB4O1xyXG5cclxuXHRcdCAgICBAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcclxuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDMyMHB4O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0fVxyXG5cclxuXHQgICAgI3Bvc3Rib3gtY29udGFpbmVyLTEge1xyXG5cdFx0ICAgIGZsb2F0OiByaWdodDtcclxuXHRcdCAgICBtYXJnaW4tcmlnaHQ6IC00NzBweDtcclxuXHRcdCAgICB3aWR0aDogNDUwcHg7XHJcblxyXG5cdFx0ICAgIEBpbmNsdWRlIG1lZGlhKCAnPD14bGFyZ2UnICkge1xyXG5cdFx0XHRcdG1hcmdpbi1yaWdodDogLTMyMHB4O1xyXG5cdFx0XHRcdHdpZHRoOiAzMDBweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHRAaW5jbHVkZSBtZWRpYSggJzw9eHNtYWxsJyApIHtcclxuXHRcdC53cmFwID4gLnBhZ2UtdGl0bGUtYWN0aW9uIHtcclxuXHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vICAgICBfICAgICAgICAgICAgXyAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gX1xyXG4vLyAgICAoXykgICAgICAgICAgfCB8ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF8pXHJcbi8vICAgICBfIF8gX18gICBfX198IHxfICAgXyAgX198IHwgX19fICAgXyBfXyBfX18gICBfX18gIF9ffCB8XyAgX18gX1xyXG4vLyAgICB8IHwgJ18gXFwgLyBfX3wgfCB8IHwgfC8gX2AgfC8gXyBcXCB8ICdfIGAgXyBcXCAvIF8gXFwvIF9gIHwgfC8gX2AgfFxyXG4vLyAgICB8IHwgfCB8IHwgKF9ffCB8IHxffCB8IChffCB8ICBfXy8gfCB8IHwgfCB8IHwgIF9fLyAoX3wgfCB8IChffCB8XHJcbi8vICAgIHxffF98IHxffFxcX19ffF98XFxfXyxffFxcX18sX3xcXF9fX3wgfF98IHxffCB8X3xcXF9fX3xcXF9fLF98X3xcXF9fLF98XHJcbi8vXHJcbi8vICAgICAgU2ltcGxlLCBlbGVnYW50IGFuZCBtYWludGFpbmFibGUgbWVkaWEgcXVlcmllcyBpbiBTYXNzXHJcbi8vICAgICAgICAgICAgICAgICAgICAgICAgdjEuNC45XHJcbi8vXHJcbi8vICAgICAgICAgICAgICAgIGh0dHA6Ly9pbmNsdWRlLW1lZGlhLmNvbVxyXG4vL1xyXG4vLyAgICAgICAgIEF1dGhvcnM6IEVkdWFyZG8gQm91Y2FzIChAZWR1YXJkb2JvdWNhcylcclxuLy8gICAgICAgICAgICAgICAgICBIdWdvIEdpcmF1ZGVsIChAaHVnb2dpcmF1ZGVsKVxyXG4vL1xyXG4vLyAgICAgIFRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlXHJcblxyXG5cclxuLy8vL1xyXG4vLy8gaW5jbHVkZS1tZWRpYSBsaWJyYXJ5IHB1YmxpYyBjb25maWd1cmF0aW9uXHJcbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXHJcbi8vLyBAYWNjZXNzIHB1YmxpY1xyXG4vLy8vXHJcblxyXG5cclxuLy8vXHJcbi8vLyBDcmVhdGVzIGEgbGlzdCBvZiBnbG9iYWwgYnJlYWtwb2ludHNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHdpdGggdGhlIGxhYmVsIGBwaG9uZWBcclxuLy8vICAkYnJlYWtwb2ludHM6ICgncGhvbmUnOiAzMjBweCk7XHJcbi8vL1xyXG4kYnJlYWtwb2ludHM6IChcclxuICAncGhvbmUnOiAzMjBweCxcclxuICAndGFibGV0JzogNzY4cHgsXHJcbiAgJ2Rlc2t0b3AnOiAxMDI0cHhcclxuKSAhZGVmYXVsdDtcclxuXHJcblxyXG4vLy9cclxuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIHN0YXRpYyBleHByZXNzaW9ucyBvciBtZWRpYSB0eXBlc1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc2luZ2xlIG1lZGlhIHR5cGUgKHNjcmVlbilcclxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJzogJ3NjcmVlbicpO1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc3RhdGljIGV4cHJlc3Npb24gd2l0aCBsb2dpY2FsIGRpc2p1bmN0aW9uIChPUiBvcGVyYXRvcilcclxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6IChcclxuLy8vICAgICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJ1xyXG4vLy8gICk7XHJcbi8vL1xyXG4kbWVkaWEtZXhwcmVzc2lvbnM6IChcclxuICAnc2NyZWVuJzogJ3NjcmVlbicsXHJcbiAgJ3ByaW50JzogJ3ByaW50JyxcclxuICAnaGFuZGhlbGQnOiAnaGFuZGhlbGQnLFxyXG4gICdsYW5kc2NhcGUnOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcclxuICAncG9ydHJhaXQnOiAnKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxyXG4gICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLCAobWluLXJlc29sdXRpb246IDJkcHB4KScsXHJcbiAgJ3JldGluYTN4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMpLCAobWluLXJlc29sdXRpb246IDM1MGRwaSksIChtaW4tcmVzb2x1dGlvbjogM2RwcHgpJ1xyXG4pICFkZWZhdWx0O1xyXG5cclxuXHJcbi8vL1xyXG4vLy8gRGVmaW5lcyBhIG51bWJlciB0byBiZSBhZGRlZCBvciBzdWJ0cmFjdGVkIGZyb20gZWFjaCB1bml0IHdoZW4gZGVjbGFyaW5nIGJyZWFrcG9pbnRzIHdpdGggZXhjbHVzaXZlIGludGVydmFsc1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcGl4ZWxzIGlzIGRlZmluZWQgYXMgYDFgIGJ5IGRlZmF1bHRcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjEyOHB4Jykge31cclxuLy8vXHJcbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xyXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAxMjlweCkge31cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIGVtcyBpcyBkZWZpbmVkIGFzIGAwLjAxYCBieSBkZWZhdWx0XHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yMGVtJykge31cclxuLy8vXHJcbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xyXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyMC4wMWVtKSB7fVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcmVtcyBpcyBkZWZpbmVkIGFzIGAwLjFgIGJ5IGRlZmF1bHQsIHRvIGJlIHVzZWQgd2l0aCBgZm9udC1zaXplOiA2Mi41JTtgXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yLjByZW0nKSB7fVxyXG4vLy9cclxuLy8vICAvKiBHZW5lcmF0ZXM6ICovXHJcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIuMXJlbSkge31cclxuLy8vXHJcbiR1bml0LWludGVydmFsczogKFxyXG4gICdweCc6IDEsXHJcbiAgJ2VtJzogMC4wMSxcclxuICAncmVtJzogMC4xLFxyXG4gICcnOiAwXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy9cclxuLy8vIERlZmluZXMgd2hldGhlciBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGF2YWlsYWJsZSwgdXNlZnVsIGZvciBjcmVhdGluZyBzZXBhcmF0ZSBzdHlsZXNoZWV0c1xyXG4vLy8gZm9yIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBtZWRpYSBxdWVyaWVzLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBEaXNhYmxlcyBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzXHJcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcclxuLy8vICAgIC5mb28ge1xyXG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xyXG4vLy8gICAgfVxyXG4vLy8gIH1cclxuLy8vXHJcbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xyXG4vLy8gIC5mb28ge1xyXG4vLy8gICAgY29sb3I6IHRvbWF0bztcclxuLy8vICB9XHJcbi8vL1xyXG4kaW0tbWVkaWEtc3VwcG9ydDogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vL1xyXG4vLy8gU2VsZWN0cyB3aGljaCBicmVha3BvaW50IHRvIGVtdWxhdGUgd2hlbiBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGRpc2FibGVkLiBNZWRpYSBxdWVyaWVzIHRoYXQgc3RhcnQgYXQgb3JcclxuLy8vIGludGVyY2VwdCB0aGUgYnJlYWtwb2ludCB3aWxsIGJlIGRpc3BsYXllZCwgYW55IG90aGVycyB3aWxsIGJlIGlnbm9yZWQuXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnRcclxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XHJcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XHJcbi8vLyAgICAuZm9vIHtcclxuLy8vICAgICAgY29sb3I6IHRvbWF0bztcclxuLy8vICAgIH1cclxuLy8vICB9XHJcbi8vL1xyXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cclxuLy8vICAuZm9vIHtcclxuLy8vICAgIGNvbG9yOiB0b21hdG87XHJcbi8vLyAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgTk9UIHNob3cgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbnRlcmNlcHQgdGhlIGRlc2t0b3AgYnJlYWtwb2ludFxyXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcclxuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ3RhYmxldCc7XHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcclxuLy8vICAgIC5mb28ge1xyXG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xyXG4vLy8gICAgfVxyXG4vLy8gIH1cclxuLy8vXHJcbi8vLyAgLyogTm8gb3V0cHV0ICovXHJcbi8vL1xyXG4kaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnICFkZWZhdWx0O1xyXG5cclxuLy8vXHJcbi8vLyBTZWxlY3RzIHdoaWNoIG1lZGlhIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIGFuIGV4cHJlc3Npb24gZm9yIGl0IHRvIGJlIHVzZWQgd2hlbiBtZWRpYSBxdWVyaWVzXHJcbi8vLyBhcmUgbm90IHN1cHBvcnRlZC5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBhbmQgY29udGFpbnMgb25seSBhY2NlcHRlZCBtZWRpYSBleHByZXNzaW9uc1xyXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcclxuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xyXG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnLCAnc2NyZWVuJykge1xyXG4vLy8gICAgLmZvbyB7XHJcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XHJcbi8vLyAgICB9XHJcbi8vLyAgfVxyXG4vLy9cclxuLy8vICAgLyogR2VuZXJhdGVzOiAqL1xyXG4vLy8gICAuZm9vIHtcclxuLy8vICAgICBjb2xvcjogdG9tYXRvO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGJ1dCBjb250YWlucyBhIG1lZGlhIGV4cHJlc3Npb24gdGhhdCBpcyBub3QgYWNjZXB0ZWRcclxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XHJcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcclxuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3JldGluYTJ4Jykge1xyXG4vLy8gICAgLmZvbyB7XHJcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XHJcbi8vLyAgICB9XHJcbi8vLyAgfVxyXG4vLy9cclxuLy8vICAvKiBObyBvdXRwdXQgKi9cclxuLy8vXHJcbiRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nLCAncG9ydHJhaXQnLCAnbGFuZHNjYXBlJykgIWRlZmF1bHQ7XHJcblxyXG4vLy8vXHJcbi8vLyBDcm9zcy1lbmdpbmUgbG9nZ2luZyBlbmdpbmVcclxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vLy9cclxuXHJcblxyXG4vLy9cclxuLy8vIExvZyBhIG1lc3NhZ2UgZWl0aGVyIHdpdGggYEBlcnJvcmAgaWYgc3VwcG9ydGVkXHJcbi8vLyBlbHNlIHdpdGggYEB3YXJuYCwgdXNpbmcgYGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpYFxyXG4vLy8gdG8gZGV0ZWN0IHN1cHBvcnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZXNzYWdlIC0gTWVzc2FnZSB0byBsb2dcclxuLy8vXHJcbkBmdW5jdGlvbiBpbS1sb2coJG1lc3NhZ2UpIHtcclxuICBAaWYgZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJykge1xyXG4gICAgQGVycm9yICRtZXNzYWdlO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQHdhcm4gJG1lc3NhZ2U7XHJcbiAgICAkXzogbm9vcCgpO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkbWVzc2FnZTtcclxufVxyXG5cclxuXHJcbi8vL1xyXG4vLy8gV3JhcHBlciBtaXhpbiBmb3IgdGhlIGxvZyBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIGEgbW9yZSBmcmllbmRseVxyXG4vLy8gQVBJIHRoYW4gYEBpZiBpbS1sb2coJy4uJykge31gIG9yIGAkXzogaW0tbG9nKCcuLicpYC4gQmFzaWNhbGx5LCB1c2UgdGhlIGZ1bmN0aW9uXHJcbi8vLyB3aXRoaW4gZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbiBhIGZ1bmN0aW9uXHJcbi8vLyBhbmQgdXNlIHRoZSBtaXhpbiBldmVyeXdoZXJlIGVsc2UgYmVjYXVzZSBpdCdzIG11Y2ggbW9yZSBlbGVnYW50LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXHJcbi8vL1xyXG5AbWl4aW4gbG9nKCRtZXNzYWdlKSB7XHJcbiAgQGlmIGltLWxvZygkbWVzc2FnZSkge31cclxufVxyXG5cclxuXHJcbi8vL1xyXG4vLy8gRnVuY3Rpb24gd2l0aCBubyBgQHJldHVybmAgY2FsbGVkIG5leHQgdG8gYEB3YXJuYCBpbiBTYXNzIDMuM1xyXG4vLy8gdG8gdHJpZ2dlciBhIGNvbXBpbGluZyBlcnJvciBhbmQgc3RvcCB0aGUgcHJvY2Vzcy5cclxuLy8vXHJcbkBmdW5jdGlvbiBub29wKCkge31cclxuXHJcbi8vL1xyXG4vLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbGlzdCBvZiBjb25kaXRpb25zIGlzIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICAgJGNvbmRpdGlvbnMgIC0gTWVkaWEgcXVlcnkgY29uZGl0aW9uc1xyXG4vLy9cclxuLy8vIEByZXR1cm4ge0Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBjb25kaXRpb25zIGFyZSBpbnRlcmNlcHRlZCBieSB0aGUgc3RhdGljIGJyZWFrcG9pbnRcclxuLy8vXHJcbkBmdW5jdGlvbiBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSB7XHJcbiAgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludCk7XHJcblxyXG4gIEBpZiBub3QgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUge1xyXG4gICAgQGlmIGltLWxvZygnYCN7JGltLW5vLW1lZGlhLWJyZWFrcG9pbnR9YCBpcyBub3QgYSB2YWxpZCBicmVha3BvaW50LicpIHt9XHJcbiAgfVxyXG5cclxuICBAZWFjaCAkY29uZGl0aW9uIGluICRjb25kaXRpb25zIHtcclxuICAgIEBpZiBub3QgbWFwLWhhcy1rZXkoJG1lZGlhLWV4cHJlc3Npb25zLCAkY29uZGl0aW9uKSB7XHJcbiAgICAgICRvcGVyYXRvcjogZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGNvbmRpdGlvbik7XHJcbiAgICAgICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xyXG4gICAgICAkdmFsdWU6IGdldC1leHByZXNzaW9uLXZhbHVlKCRjb25kaXRpb24sICRvcGVyYXRvcik7XHJcblxyXG4gICAgICBAaWYgKCRwcmVmaXggPT0gJ21heCcgYW5kICR2YWx1ZSA8PSAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSkgb3JcclxuICAgICAgICAgICgkcHJlZml4ID09ICdtaW4nIGFuZCAkdmFsdWUgPiAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSkge1xyXG4gICAgICAgIEByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2UgaWYgbm90IGluZGV4KCRpbS1uby1tZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xyXG4gICAgICBAcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQHJldHVybiB0cnVlO1xyXG59XHJcblxyXG4vLy8vXHJcbi8vLyBQYXJzaW5nIGVuZ2luZVxyXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vL1xyXG5cclxuXHJcbi8vL1xyXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3Qgb3BlcmF0b3IgZnJvbVxyXG4vLy9cclxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBBbnkgb2YgYD49YCwgYD5gLCBgPD1gLCBgPGAsIGDiiaVgLCBg4omkYFxyXG4vLy9cclxuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XHJcbiAgQGVhY2ggJG9wZXJhdG9yIGluICgnPj0nLCAnPicsICc8PScsICc8JywgJ+KJpScsICfiiaQnKSB7XHJcbiAgICBAaWYgc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcclxuICAgICAgQHJldHVybiAkb3BlcmF0b3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXHJcbiAgLy8gcmVseSBvbiB0aGUgYGltLWxvZyguLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBgbG9nKC4uKWAgbWl4aW4uIEJlY2F1c2VcclxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cclxuICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxyXG4gIC8vIFNhc3MgMy4zLCBjaGFuZ2UgdGhpcyBsaW5lIGluIGBAaWYgaW0tbG9nKC4uKSB7fWAgaW5zdGVhZC5cclxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xyXG59XHJcblxyXG5cclxuLy8vXHJcbi8vLyBHZXQgZGltZW5zaW9uIG9mIGFuIGV4cHJlc3Npb24sIGJhc2VkIG9uIGEgZm91bmQgb3BlcmF0b3JcclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgZGltZW5zaW9uIGZyb21cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYHdpZHRoYCBvciBgaGVpZ2h0YCAob3IgcG90ZW50aWFsbHkgYW55dGhpbmcgZWxzZSlcclxuLy8vXHJcbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xyXG4gICRvcGVyYXRvci1pbmRleDogc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xyXG4gICRwYXJzZWQtZGltZW5zaW9uOiBzdHItc2xpY2UoJGV4cHJlc3Npb24sIDAsICRvcGVyYXRvci1pbmRleCAtIDEpO1xyXG4gICRkaW1lbnNpb246ICd3aWR0aCc7XHJcblxyXG4gIEBpZiBzdHItbGVuZ3RoKCRwYXJzZWQtZGltZW5zaW9uKSA+IDAge1xyXG4gICAgJGRpbWVuc2lvbjogJHBhcnNlZC1kaW1lbnNpb247XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRkaW1lbnNpb247XHJcbn1cclxuXHJcblxyXG4vLy9cclxuLy8vIEdldCBkaW1lbnNpb24gcHJlZml4IGJhc2VkIG9uIGFuIG9wZXJhdG9yXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGBtaW5gIG9yIGBtYXhgXHJcbi8vL1xyXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcikge1xyXG4gIEByZXR1cm4gaWYoaW5kZXgoKCc8JywgJzw9JywgJ+KJpCcpLCAkb3BlcmF0b3IpLCAnbWF4JywgJ21pbicpO1xyXG59XHJcblxyXG5cclxuLy8vXHJcbi8vLyBHZXQgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3IgZnJvbSBgJGV4cHJlc3Npb25gXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIEEgbnVtZXJpYyB2YWx1ZVxyXG4vLy9cclxuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXZhbHVlKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcclxuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcclxuICAkdmFsdWU6IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yLWluZGV4ICsgc3RyLWxlbmd0aCgkb3BlcmF0b3IpKTtcclxuXHJcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XHJcbiAgICAkdmFsdWU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkdmFsdWUpO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgJHZhbHVlOiB0by1udW1iZXIoJHZhbHVlKTtcclxuICB9XHJcblxyXG4gICRpbnRlcnZhbDogbWFwLWdldCgkdW5pdC1pbnRlcnZhbHMsIHVuaXQoJHZhbHVlKSk7XHJcblxyXG4gIEBpZiBub3QgJGludGVydmFsIHtcclxuICAgIC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW5zaWRlIGEgZnVuY3Rpb24sIHNvIHdlIGhhdmUgdG9cclxuICAgIC8vIHJlbHkgb24gdGhlIGBpbS1sb2coLi4pYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgYGxvZyguLilgIG1peGluLiBCZWNhdXNlXHJcbiAgICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cclxuICAgIC8vIGEgZHVtbXkgdmFyaWFibGUsIHN1Y2ggYXMgYCRfYC4gSWYgYW55Ym9keSBldmVyIHJhaXNlIGEgc2NvcGluZyBpc3N1ZSB3aXRoXHJcbiAgICAvLyBTYXNzIDMuMywgY2hhbmdlIHRoaXMgbGluZSBpbiBgQGlmIGltLWxvZyguLikge31gIGluc3RlYWQuXHJcbiAgICAkXzogaW0tbG9nKCdVbmtub3duIHVuaXQgYCN7dW5pdCgkdmFsdWUpfWAuJyk7XHJcbiAgfVxyXG5cclxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XHJcbiAgICAkdmFsdWU6ICR2YWx1ZSArICRpbnRlcnZhbDtcclxuICB9IEBlbHNlIGlmICRvcGVyYXRvciA9PSAnPCcge1xyXG4gICAgJHZhbHVlOiAkdmFsdWUgLSAkaW50ZXJ2YWw7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICR2YWx1ZTtcclxufVxyXG5cclxuXHJcbi8vL1xyXG4vLy8gUGFyc2UgYW4gZXhwcmVzc2lvbiB0byByZXR1cm4gYSB2YWxpZCBtZWRpYS1xdWVyeSBleHByZXNzaW9uXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBwYXJzZVxyXG4vLy9cclxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBWYWxpZCBtZWRpYSBxdWVyeVxyXG4vLy9cclxuQGZ1bmN0aW9uIHBhcnNlLWV4cHJlc3Npb24oJGV4cHJlc3Npb24pIHtcclxuICAvLyBJZiBpdCBpcyBwYXJ0IG9mICRtZWRpYS1leHByZXNzaW9ucywgaXQgaGFzIG5vIG9wZXJhdG9yXHJcbiAgLy8gdGhlbiB0aGVyZSBpcyBubyBuZWVkIHRvIGdvIGFueSBmdXJ0aGVyLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcclxuICBAaWYgbWFwLWhhcy1rZXkoJG1lZGlhLWV4cHJlc3Npb25zLCAkZXhwcmVzc2lvbikge1xyXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pO1xyXG4gIH1cclxuXHJcbiAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkZXhwcmVzc2lvbik7XHJcbiAgJGRpbWVuc2lvbjogZ2V0LWV4cHJlc3Npb24tZGltZW5zaW9uKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xyXG4gICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xyXG4gICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XHJcblxyXG4gIEByZXR1cm4gJygjeyRwcmVmaXh9LSN7JGRpbWVuc2lvbn06ICN7JHZhbHVlfSknO1xyXG59XHJcblxyXG4vLy9cclxuLy8vIFNsaWNlIGAkbGlzdGAgYmV0d2VlbiBgJHN0YXJ0YCBhbmQgYCRlbmRgIGluZGV4ZXNcclxuLy8vXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gTGlzdCB0byBzbGljZVxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzdGFydCBbMV0gLSBTdGFydCBpbmRleFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbmQgW2xlbmd0aCgkbGlzdCldIC0gRW5kIGluZGV4XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TGlzdH0gU2xpY2VkIGxpc3RcclxuLy8vXHJcbkBmdW5jdGlvbiBzbGljZSgkbGlzdCwgJHN0YXJ0OiAxLCAkZW5kOiBsZW5ndGgoJGxpc3QpKSB7XHJcbiAgQGlmIGxlbmd0aCgkbGlzdCkgPCAxIG9yICRzdGFydCA+ICRlbmQge1xyXG4gICAgQHJldHVybiAoKTtcclxuICB9XHJcblxyXG4gICRyZXN1bHQ6ICgpO1xyXG5cclxuICBAZm9yICRpIGZyb20gJHN0YXJ0IHRocm91Z2ggJGVuZCB7XHJcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgbnRoKCRsaXN0LCAkaSkpO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkcmVzdWx0O1xyXG59XHJcblxyXG4vLy8vXHJcbi8vLyBTdHJpbmcgdG8gbnVtYmVyIGNvbnZlcnRlclxyXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vL1xyXG5cclxuXHJcbi8vL1xyXG4vLy8gQ2FzdHMgYSBzdHJpbmcgaW50byBhIG51bWJlclxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBiZSBwYXJzZWRcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XHJcbi8vL1xyXG5AZnVuY3Rpb24gdG8tbnVtYmVyKCR2YWx1ZSkge1xyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xyXG4gICAgQHJldHVybiAkdmFsdWU7XHJcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ3N0cmluZycge1xyXG4gICAgJF86IGltLWxvZygnVmFsdWUgZm9yIGB0by1udW1iZXJgIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcclxuICB9XHJcblxyXG4gICRmaXJzdC1jaGFyYWN0ZXI6IHN0ci1zbGljZSgkdmFsdWUsIDEsIDEpO1xyXG4gICRyZXN1bHQ6IDA7XHJcbiAgJGRpZ2l0czogMDtcclxuICAkbWludXM6ICgkZmlyc3QtY2hhcmFjdGVyID09ICctJyk7XHJcbiAgJG51bWJlcnM6ICgnMCc6IDAsICcxJzogMSwgJzInOiAyLCAnMyc6IDMsICc0JzogNCwgJzUnOiA1LCAnNic6IDYsICc3JzogNywgJzgnOiA4LCAnOSc6IDkpO1xyXG5cclxuICAvLyBSZW1vdmUgKy8tIHNpZ24gaWYgcHJlc2VudCBhdCBmaXJzdCBjaGFyYWN0ZXJcclxuICBAaWYgKCRmaXJzdC1jaGFyYWN0ZXIgPT0gJysnIG9yICRmaXJzdC1jaGFyYWN0ZXIgPT0gJy0nKSB7XHJcbiAgICAkdmFsdWU6IHN0ci1zbGljZSgkdmFsdWUsIDIpO1xyXG4gIH1cclxuXHJcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHItbGVuZ3RoKCR2YWx1ZSkge1xyXG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgJGksICRpKTtcclxuXHJcbiAgICBAaWYgbm90IChpbmRleChtYXAta2V5cygkbnVtYmVycyksICRjaGFyYWN0ZXIpIG9yICRjaGFyYWN0ZXIgPT0gJy4nKSB7XHJcbiAgICAgIEByZXR1cm4gdG8tbGVuZ3RoKGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpLCBzdHItc2xpY2UoJHZhbHVlLCAkaSkpXHJcbiAgICB9XHJcblxyXG4gICAgQGlmICRjaGFyYWN0ZXIgPT0gJy4nIHtcclxuICAgICAgJGRpZ2l0czogMTtcclxuICAgIH0gQGVsc2UgaWYgJGRpZ2l0cyA9PSAwIHtcclxuICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3Rlcik7XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgJGRpZ2l0czogJGRpZ2l0cyAqIDEwO1xyXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3RlcikgLyAkZGlnaXRzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQHJldHVybiBpZigkbWludXMsIC0kcmVzdWx0LCAkcmVzdWx0KTtcclxufVxyXG5cclxuXHJcbi8vL1xyXG4vLy8gQWRkIGAkdW5pdGAgdG8gYCR2YWx1ZWBcclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYWRkIHVuaXQgdG9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdW5pdCAtIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdW5pdFxyXG4vLy9cclxuLy8vIEByZXR1cm4ge051bWJlcn0gLSBgJHZhbHVlYCBleHByZXNzZWQgaW4gYCR1bml0YFxyXG4vLy9cclxuQGZ1bmN0aW9uIHRvLWxlbmd0aCgkdmFsdWUsICR1bml0KSB7XHJcbiAgJHVuaXRzOiAoJ3B4JzogMXB4LCAnY20nOiAxY20sICdtbSc6IDFtbSwgJyUnOiAxJSwgJ2NoJzogMWNoLCAncGMnOiAxcGMsICdpbic6IDFpbiwgJ2VtJzogMWVtLCAncmVtJzogMXJlbSwgJ3B0JzogMXB0LCAnZXgnOiAxZXgsICd2dyc6IDF2dywgJ3ZoJzogMXZoLCAndm1pbic6IDF2bWluLCAndm1heCc6IDF2bWF4KTtcclxuXHJcbiAgQGlmIG5vdCBpbmRleChtYXAta2V5cygkdW5pdHMpLCAkdW5pdCkge1xyXG4gICAgJF86IGltLWxvZygnSW52YWxpZCB1bml0IGAjeyR1bml0fWAuJyk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICR2YWx1ZSAqIG1hcC1nZXQoJHVuaXRzLCAkdW5pdCk7XHJcbn1cclxuXHJcbi8vL1xyXG4vLy8gVGhpcyBtaXhpbiBhaW1zIGF0IHJlZGVmaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24ganVzdCBmb3IgdGhlIHNjb3BlIG9mXHJcbi8vLyB0aGUgY2FsbC4gSXQgaXMgaGVscGZ1bCB3aGVuIGhhdmluZyBhIGNvbXBvbmVudCBuZWVkaW5nIGFuIGV4dGVuZGVkXHJcbi8vLyBjb25maWd1cmF0aW9uIHN1Y2ggYXMgY3VzdG9tIGJyZWFrcG9pbnRzIChyZWZlcnJlZCB0byBhcyB0d2Vha3BvaW50cylcclxuLy8vIGZvciBpbnN0YW5jZS5cclxuLy8vXHJcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcclxuLy8vXHJcbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrcG9pbnRzIFsoKV0gLSBNYXAgb2YgdHdlYWtwb2ludHMgdG8gYmUgbWVyZ2VkIHdpdGggYCRicmVha3BvaW50c2BcclxuLy8vIEBwYXJhbSB7TWFwfSAkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnMgWygpXSAtIE1hcCBvZiB0d2Vha2VkIG1lZGlhIGV4cHJlc3Npb25zIHRvIGJlIG1lcmdlZCB3aXRoIGAkbWVkaWEtZXhwcmVzc2lvbmBcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgYnJlYWtwb2ludHMgd2l0aCBhIHR3ZWFrcG9pbnRcclxuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCgnY3VzdG9tJzogNjc4cHgpKSB7XHJcbi8vLyAgICAuZm9vIHtcclxuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PWN1c3RvbScpIHtcclxuLy8vICAgICAgIC8vIC4uLlxyXG4vLy8gICAgICB9XHJcbi8vLyAgICB9XHJcbi8vLyAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBtZWRpYSBleHByZXNzaW9ucyB3aXRoIGEgY3VzdG9tIG9uZVxyXG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zOiAoJ2FsbCc6ICdhbGwnKSkge1xyXG4vLy8gICAgLmZvbyB7XHJcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJykge1xyXG4vLy8gICAgICAgLy8gLi4uXHJcbi8vLyAgICAgIH1cclxuLy8vICAgIH1cclxuLy8vICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCBib3RoIGNvbmZpZ3VyYXRpb24gbWFwc1xyXG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoKCdjdXN0b20nOiA2NzhweCksICgnYWxsJzogJ2FsbCcpKSB7XHJcbi8vLyAgICAuZm9vIHtcclxuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XHJcbi8vLyAgICAgICAvLyAuLi5cclxuLy8vICAgICAgfVxyXG4vLy8gICAgfVxyXG4vLy8gIH1cclxuLy8vXHJcbkBtaXhpbiBtZWRpYS1jb250ZXh0KCR0d2Vha3BvaW50czogKCksICR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCkpIHtcclxuICAvLyBTYXZlIGdsb2JhbCBjb25maWd1cmF0aW9uXHJcbiAgJGdsb2JhbC1icmVha3BvaW50czogJGJyZWFrcG9pbnRzO1xyXG4gICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnM6ICRtZWRpYS1leHByZXNzaW9ucztcclxuXHJcbiAgLy8gVXBkYXRlIGdsb2JhbCBjb25maWd1cmF0aW9uXHJcbiAgJGJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkdHdlYWtwb2ludHMpICFnbG9iYWw7XHJcbiAgJG1lZGlhLWV4cHJlc3Npb25zOiBtYXAtbWVyZ2UoJG1lZGlhLWV4cHJlc3Npb25zLCAkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnMpICFnbG9iYWw7XHJcblxyXG4gIEBjb250ZW50O1xyXG5cclxuICAvLyBSZXN0b3JlIGdsb2JhbCBjb25maWd1cmF0aW9uXHJcbiAgJGJyZWFrcG9pbnRzOiAkZ2xvYmFsLWJyZWFrcG9pbnRzICFnbG9iYWw7XHJcbiAgJG1lZGlhLWV4cHJlc3Npb25zOiAkZ2xvYmFsLW1lZGlhLWV4cHJlc3Npb25zICFnbG9iYWw7XHJcbn1cclxuXHJcbi8vLy9cclxuLy8vIGluY2x1ZGUtbWVkaWEgcHVibGljIGV4cG9zZWQgQVBJXHJcbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXHJcbi8vLyBAYWNjZXNzIHB1YmxpY1xyXG4vLy8vXHJcblxyXG5cclxuLy8vXHJcbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBiYXNlZCBvbiBhIGxpc3Qgb2YgY29uZGl0aW9uc1xyXG4vLy9cclxuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzaW5nbGUgc2V0IGJyZWFrcG9pbnRcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJykgeyB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggdHdvIHNldCBicmVha3BvaW50c1xyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD10YWJsZXQnKSB7IH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBjdXN0b20gdmFsdWVzXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49MzU4cHgnLCAnPDg1MHB4JykgeyB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggc2V0IGJyZWFrcG9pbnRzIHdpdGggY3VzdG9tIHZhbHVlc1xyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+ZGVza3RvcCcsICc8PTEzNTBweCcpIHsgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGEgc3RhdGljIGV4cHJlc3Npb25cclxuLy8vICBAaW5jbHVkZSBtZWRpYSgncmV0aW5hMngnKSB7IH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gTWl4aW5nIGV2ZXJ5dGhpbmdcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNTBweCcsICc8dGFibGV0JywgJ3JldGluYTN4JykgeyB9XHJcbi8vL1xyXG5AbWl4aW4gbWVkaWEoJGNvbmRpdGlvbnMuLi4pIHtcclxuICBAaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID09IDApIG9yXHJcbiAgICAgIChub3QgJGltLW1lZGlhLXN1cHBvcnQgYW5kIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pKSB7XHJcbiAgICBAY29udGVudDtcclxuICB9IEBlbHNlIGlmICgkaW0tbWVkaWEtc3VwcG9ydCBhbmQgbGVuZ3RoKCRjb25kaXRpb25zKSA+IDApIHtcclxuICAgIEBtZWRpYSAje3VucXVvdGUocGFyc2UtZXhwcmVzc2lvbihudGgoJGNvbmRpdGlvbnMsIDEpKSl9IHtcclxuICAgICAgLy8gUmVjdXJzaXZlIGNhbGxcclxuICAgICAgQGluY2x1ZGUgbWVkaWEoc2xpY2UoJGNvbmRpdGlvbnMsIDIpLi4uKSB7XHJcbiAgICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLnRpbGUge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG5cbiAgICAudGlsZS1oZWFkZXIge1xuICAgIFx0cGFkZGluZzogMTBweCAxNXB4O1xuICAgIFx0Zm9udC1zaXplOiAxLjFlbTtcblx0ICAgIG1hcmdpbjogMDtcblx0ICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICAgIH1cblxuICAgIC50aWxlLWNvbnRlbnQge1xuICAgIFx0cGFkZGluZzogMTBweCAxNXB4O1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgXHRtYXgtd2lkdGg6IDEwMCU7XG4gICAgXHRoZWlnaHQ6IGF1dG87XG4gICAgfVxuXG59XG5cbiNub3RpZmljYXRpb24tcHJvbW8ge1xuXHRtYXJnaW4tdG9wOiA0MHB4O1xufVxuIiwiI3RvYXN0LWNvbnRhaW5lciB7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcblx0cG9zaXRpb246IGZpeGVkO1xyXG5cdHotaW5kZXg6IDk5OTk5OTtcclxuXHJcblx0QGluY2x1ZGUgbWVkaWEoICc8PXNtYWxsJyApIHtcclxuXHRcdG1pbi13aWR0aDogMTAwJTtcclxuXHRcdGJvdHRvbTogMCU7XHJcblx0fVxyXG5cclxuXHRAaW5jbHVkZSBtZWRpYSggJz5zbWFsbCcsICc8PXhsYXJnZScgKSB7XHJcblx0XHRyaWdodDogNSU7XHJcblx0XHRib3R0b206IDclO1xyXG5cdFx0bWF4LXdpZHRoOiA5MCU7XHJcblx0fVxyXG5cclxuXHRAaW5jbHVkZSBtZWRpYSggJz54bGFyZ2UnICkge1xyXG5cdFx0dG9wOiAxMCU7XHJcblx0XHRyaWdodDogNyU7XHJcblx0XHRtYXgtd2lkdGg6IDg2JTtcclxuXHR9XHJcblxyXG59XHJcblxyXG4udG9hc3Qge1xyXG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0Ym9yZGVyLXJhZGl1czogMnB4O1xyXG5cdHRvcDogMzVweDtcclxuXHR3aWR0aDogYXV0bztcclxuXHRjbGVhcjogYm90aDtcclxuXHRtYXJnaW4tdG9wOiAxMHB4O1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRtYXgtd2lkdGg6MTAwJTtcclxuXHRoZWlnaHQ6IGF1dG87XHJcblx0bWluLWhlaWdodDogNDhweDtcclxuXHRsaW5lLWhlaWdodDogMS41ZW07XHJcblx0d29yZC1icmVhazogYnJlYWstYWxsO1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICMyMjI7XHJcblx0cGFkZGluZzogMTBweCAyNXB4IDEwcHggMTVweDtcclxuXHRmb250LXNpemU6IDEuMXJlbTtcclxuXHRmb250LXdlaWdodDogMzAwO1xyXG5cdGNvbG9yOiAjZmZmO1xyXG5cclxuXHRkaXNwbGF5OiBmbGV4O1xyXG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuXHQuYnRuIHtcclxuXHRcdG1hcmdpbjogMDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAycmVtO1xyXG5cdFx0cGFkZGluZzogNXB4IDEwcHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiA1cHg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjNDQ0O1xyXG5cdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDUwMDtcclxuXHRcdGZvbnQtc2l6ZTogMXJlbTtcclxuXHR9XHJcblxyXG5cdC5kYXNoaWNvbnMge1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cclxuXHRcdCYuZGFzaGljb25zLXllcyB7XHJcblx0XHRcdGNvbG9yOiAjMDBiMzAwO1xyXG5cdFx0fVxyXG5cclxuXHRcdCYuZGFzaGljb25zLXdhcm5pbmcge1xyXG5cdFx0XHRjb2xvcjogI2ZmMjYyNjtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHRAaW5jbHVkZSBtZWRpYSggJzw9c21hbGwnICkge1xyXG5cdFx0d2lkdGg6MTAwJTtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDA7XHJcblx0fVxyXG5cclxuXHRAaW5jbHVkZSBtZWRpYSggJz5zbWFsbCcsICc8PXhsYXJnZScgKSB7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHR9XHJcblxyXG5cdEBpbmNsdWRlIG1lZGlhKCAnPnhsYXJnZScgKSB7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0fVxyXG5cclxufVxyXG4iLCIuc2xpZGViYXIge1xyXG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0cG9zaXRpb246IGZpeGVkO1xyXG5cdGhlaWdodDogMTAwJTtcclxuXHRoZWlnaHQ6IDEwMHZoO1xyXG5cdHJpZ2h0OiAwO1xyXG5cdHRvcDogMDtcclxuXHRiYWNrZ3JvdW5kOiAjZjdmN2Y3O1xyXG5cdGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2QyZDJkMjtcclxuXHRib3gtc2hhZG93OiAwIC0zcHggOXB4ICNjYWNhY2E7XHJcblx0d2lkdGg6IDM4MHB4O1xyXG5cdHotaW5kZXg6IDk5OTk7XHJcblx0cGFkZGluZzogMjBweCAzMHB4O1xyXG5cdG1hcmdpbi10b3A6IDMycHg7XHJcblx0b3ZlcmZsb3c6IGF1dG87XHJcblx0bWFyZ2luLXJpZ2h0OiAtMzg1cHg7XHJcblx0bWF4LXdpZHRoOiA5NSU7XHJcblxyXG5cdEBpbmNsdWRlIG1lZGlhKCAnPD1zbWFsbCcgKSB7XHJcblx0XHR6LWluZGV4OiA5OTk5OTtcclxuXHRcdG1hcmdpbi10b3A6IDA7XHJcblx0fVxyXG5cclxuXHQuY2xvc2Uge1xyXG5cdCAgICBmbG9hdDogcmlnaHQ7XHJcblx0ICAgIG1hcmdpbjogMCAwIDE2cHggMTZweDtcclxuXHQgICAgY3Vyc29yOiBwb2ludGVyO1xyXG5cdCAgICBmb250LXNpemU6IDEuOHJlbTtcclxuXHR9XHJcblxyXG5cdC5jb250ZW50IHtcclxuXHJcblx0XHRoMyB7XHJcblx0XHRcdG1hcmdpbi10b3A6IDZweDtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogNDBweDtcclxuXHRcdH1cclxuXHJcblx0XHRmb3JtIHtcclxuXHJcblx0XHRcdGxhYmVsIHtcclxuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpbnB1dCxcclxuXHRcdFx0c2VsZWN0IHtcclxuXHRcdFx0XHRtYXJnaW4tdG9wOiA2cHg7XHJcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMTVweDtcclxuXHJcblx0XHRcdFx0Ji5zcGluYm94IHtcclxuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDVweDtcclxuXHRcdFx0XHRcdGZsb2F0OiByaWdodDtcclxuXHRcdFx0XHRcdHdpZHRoOiA2MHB4O1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ji5ldmVudC1hcmd1bWVudCB7XHJcblx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiA1cHg7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LnN1Ym1pdC1yb3cge1xyXG5cdFx0XHRcdGZsb2F0OiByaWdodDtcclxuXHJcblx0XHRcdFx0LmJ1dHRvbiB7XHJcblx0XHRcdFx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LnNwaW5uZXIge1xyXG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogMTBweDtcclxuXHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH1cclxuXHJcblx0XHR9XHJcblxyXG5cdFx0QG1peGluIHBsYWNlaG9sZGVyLWFuaW1hdGlvbigpIHtcclxuXHRcdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcclxuXHRcdCAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcclxuXHRcdCAgICBhbmltYXRpb24tbmFtZTogcHVsc2F0ZTtcclxuXHRcdCAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XHJcblx0XHQgICAgYmFja2dyb3VuZDogI2UyZTJlMjtcclxuXHRcdH1cclxuXHJcblx0XHQuZm9ybS1wbGFjZWhvbGRlciB7XHJcblx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblxyXG5cdFx0XHQuaGVhZGVyIHtcclxuXHRcdFx0XHRAaW5jbHVkZSBwbGFjZWhvbGRlci1hbmltYXRpb24oKTtcclxuXHRcdFx0XHRoZWlnaHQ6IDMwcHg7XHJcblx0XHRcdFx0d2lkdGg6IDc1JTtcclxuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAzZW07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC5pbnB1dCB7XHJcblx0XHRcdFx0QGluY2x1ZGUgcGxhY2Vob2xkZXItYW5pbWF0aW9uKCk7XHJcblx0XHRcdFx0aGVpZ2h0OiAzMHB4O1xyXG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDEuNWVtO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQuc2VuZCB7XHJcblx0XHRcdFx0QGluY2x1ZGUgcGxhY2Vob2xkZXItYW5pbWF0aW9uKCk7XHJcblx0XHRcdFx0aGVpZ2h0OiAzMHB4O1xyXG5cdFx0XHRcdHdpZHRoOiAzMCU7XHJcblx0XHRcdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0fVxyXG5cclxuXHRcdCYubG9hZGluZyAuZm9ybS1wbGFjZWhvbGRlciB7XHJcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0fVxyXG5cclxuXHR9XHJcblxyXG59XHJcblxyXG4uc2xpZGViYXItb3ZlcmxheSB7XHJcblx0ZGlzcGxheTogbm9uZTtcclxuXHRwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB6LWluZGV4OiA5OTk7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbn1cclxuIiwiLnNlYXJjaGJveCB7XHJcblx0bWFyZ2luLWJvdHRvbTogMjBweDtcclxuXHJcblx0I3NlYXJjaCB7XHJcblx0XHRwYWRkaW5nOiAxMHB4IDE1cHg7XHJcblx0ICAgIGZvbnQtc2l6ZTogMS4yZW07XHJcblx0fVxyXG5cclxufVxyXG4iLCIjc2NoZWR1bGVzIHtcclxuXHJcblx0QGluY2x1ZGUgbWVkaWEoICc8PTg1MHB4JyApIHtcclxuXHRcdG1hcmdpbi10b3A6IDMwcHg7XHJcblx0fVxyXG5cclxuXHQmLmxvYWRpbmcge1xyXG5cdFx0b3BhY2l0eTogMC43O1xyXG5cdH1cclxuXHJcblx0LnNjaGVkdWxlcyB7XHJcblxyXG5cdFx0LnNpbmdsZS1zY2hlZHVsZSB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdG1hcmdpbjogMTBweCAwO1xyXG5cclxuXHRcdFx0Ji5oZWFkZXIge1xyXG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XHJcblxyXG5cdFx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmNvbHVtbiB7XHJcblx0XHRcdFx0cGFkZGluZzogMnB4O1xyXG5cdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG5cdFx0XHRcdCYubGFiZWwge1xyXG5cdFx0XHRcdFx0ZmxleC1ncm93OiAxMDA7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQmLnNsdWcge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDMwJTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdCYuaW50ZXJ2YWwge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDE1JTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdCYuYWN0aW9ucyB7XHJcblx0XHRcdFx0XHR3aWR0aDogMTUlO1xyXG5cdFx0XHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblxyXG5cdFx0XHRcdFx0LmRhc2hpY29ucyB7XHJcblxyXG5cdFx0XHRcdFx0XHQmLmRhc2hpY29ucy10cmFzaCB7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6ICNhMDA7XHJcblxyXG5cdFx0XHRcdFx0XHRcdCY6aG92ZXIge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29sb3I6IHJlZDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRcdCYud29ya2luZyB7XHJcblx0XHRcdFx0XHRcdFx0XHRjb2xvcjogaW5oZXJpdDtcclxuXHRcdFx0XHRcdFx0XHRcdGFuaW1hdGlvbi1uYW1lOiBzcGluO1xyXG5cdFx0XHRcdFx0XHRcdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiA0MDAwbXM7XHJcblx0XHRcdFx0XHRcdFx0XHRhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcclxuXHRcdFx0XHRcdFx0XHRcdGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcclxuXHJcblx0XHRcdFx0XHRcdFx0XHQmOmJlZm9yZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwiXFxmMTExXCI7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdCYuZGlzYWJsZWQsXHJcblx0XHRcdFx0XHRcdCYuZGlzYWJsZWQ6aG92ZXIge1xyXG5cdFx0XHRcdFx0XHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6ICNjY2M7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdHNwYW4ge1xyXG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH1cclxuXHJcblx0XHR9XHJcblxyXG5cdH1cclxuXHJcblx0LnBhZ2UtdGl0bGUtYWN0aW9uIHtcclxuXHRcdHRvcDogMTVweDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAwO1xyXG5cdH1cclxuXHJcbn1cclxuIiwiI2V2ZW50cyB7XHJcblxyXG5cdCYubG9hZGluZyB7XHJcblx0XHRvcGFjaXR5OiAwLjc7XHJcblx0fVxyXG5cclxuXHQudGFibGVuYXYuYm90dG9tIHtcclxuXHRcdG92ZXJmbG93OiBhdXRvO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogLTE1cHg7XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEoICc+bWVkaXVtJyApIHtcclxuXHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHQuZXZlbnRzIHtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG5cdFx0LnNpbmdsZS1ldmVudCB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblxyXG5cdFx0XHQmOmhvdmVyIHtcclxuXHJcblx0XHRcdFx0LnJvdy1hY3Rpb25zIHtcclxuXHRcdFx0XHRcdHBvc2l0aW9uOiBzdGF0aWM7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XHJcblx0XHRcdFx0LnJvdy1hY3Rpb25zIHtcclxuXHRcdFx0XHRcdHBvc2l0aW9uOiBzdGF0aWM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmLmhlYWRlciB7XHJcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMWUxZTE7XHJcblx0XHRcdCAgICBmb250LXdlaWdodDogNTAwO1xyXG5cclxuXHRcdFx0ICAgICY6bGFzdC1vZi10eXBlIHtcclxuXHRcdFx0ICAgIFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcclxuXHRcdFx0ICAgIH1cclxuXHJcblx0XHRcdCAgICAuY29sdW1ucyB7XHJcblx0XHRcdCAgICBcdGJvcmRlci1ib3R0b206IG5vbmU7XHJcblx0XHRcdCAgICBcdGJveC1zaGFkb3c6IG5vbmU7XHJcblx0XHRcdCAgICB9XHJcblxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmLnVuZm9sZGVkIHtcclxuXHJcblx0XHRcdFx0LmNvbHVtbnMge1xyXG5cdFx0XHRcdFx0Ym94LXNoYWRvdzogMCAxcHggNnB4IHJnYmEoMCwwLDAsMC4xKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdD4gLmRldGFpbHMge1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmLnBhdXNlZCB7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZjZmNmYztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ji5ydW5uaW5nIHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTBmYmU3O1xyXG5cclxuXHRcdFx0XHQuY29sdW1ucyAuY29sdW1uLmNiIHtcclxuXHJcblx0XHRcdFx0XHRpbnB1dCB7XHJcblx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0LmRhc2hpY29ucyB7XHJcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRcdFx0XHRjb2xvcjogZ3JlZW47XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCYucmVtb3Zpbmcge1xyXG5cclxuXHRcdFx0XHQuY29sdW1ucyAuY29sdW1uLmNiIHtcclxuXHJcblx0XHRcdFx0XHRpbnB1dCB7XHJcblx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0LmRhc2hpY29ucyB7XHJcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQuY29sdW1ucyB7XHJcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTFlMWUxO1xyXG5cdFx0XHQgICAgei1pbmRleDogMTtcclxuXHJcblx0XHRcdFx0LmNvbHVtbiB7XHJcblx0XHRcdFx0XHRwYWRkaW5nOiAxMnB4O1xyXG5cclxuXHRcdFx0XHRcdCYuY2Ige1xyXG5cdFx0XHRcdFx0XHR3aWR0aDogMThweDtcclxuXHJcblx0XHRcdFx0XHRcdGlucHV0IHtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdC5kYXNoaWNvbnMge1xyXG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdFx0XHRcdFx0YW5pbWF0aW9uLW5hbWU6IHNwaW47XHJcblx0XHRcdFx0XHRcdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiA0MDAwbXM7XHJcblx0XHRcdFx0XHRcdFx0YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XHJcblx0XHRcdFx0XHRcdFx0YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdCYuZXZlbnQge1xyXG5cdFx0XHRcdFx0XHRmbGV4LWdyb3c6IDEwMDtcclxuXHJcblx0XHRcdFx0XHRcdC5ldmVudC1uYW1lIHtcclxuXHRcdFx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6IGluaGVyaXQ7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC5kYXNoaWNvbnMge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29sb3I6ICM1NTU7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0LnJvdy1hY3Rpb25zIHtcclxuXHJcblx0XHRcdFx0XHRcdFx0YSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQmLnNjaGVkdWxlIHtcclxuXHRcdFx0XHRcdFx0d2lkdGg6IDE1JTtcclxuXHJcblx0XHRcdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCAnPD14bGFyZ2UnICkge1xyXG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0Ji5hcmd1bWVudHMge1xyXG5cdFx0XHRcdFx0XHR3aWR0aDogMTUlO1xyXG5cclxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XHJcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0c3BhbiB7XHJcblx0XHRcdFx0XHRcdFx0bWFyZ2luOiAwIDRweCA0cHggMDtcclxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAzcHggNXB4O1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQ6ICNmNWY1ZjU7XHJcblx0XHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xyXG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNkYmRiZGI7XHJcblx0XHRcdFx0XHRcdFx0d2hpdGUtc3BhY2U6IHByZTtcclxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0Ji5uZXh0LWV4ZWN1dGlvbiB7XHJcblx0XHRcdFx0XHRcdHdpZHRoOiAxNSU7XHJcblx0XHRcdFx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cclxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XHJcblx0XHRcdFx0XHRcdFx0d2lkdGg6IDI1JTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0PiAuZGV0YWlscyB7XHJcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0XHRmbGV4LWdyb3c6IDEwMDtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xyXG5cdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGJkYmRiO1xyXG5cclxuXHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcclxuXHRcdFx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQudGFicyB7XHJcblx0XHRcdFx0XHRtaW4td2lkdGg6IDIyMHB4O1xyXG5cdFx0XHRcdFx0bWF4LXdpZHRoOiAyMjBweDtcclxuXHRcdFx0XHRcdG1hcmdpbjogMDtcclxuXHJcblx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcclxuXHRcdFx0XHRcdFx0bWluLXdpZHRoOiAxMDAlO1xyXG5cdFx0XHRcdFx0XHRtYXgtd2lkdGg6IDEwMCU7XHJcblx0XHRcdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGxpIHtcclxuXHRcdFx0XHRcdFx0bWFyZ2luOiAwO1xyXG5cclxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XHJcblx0XHRcdFx0XHRcdFx0d2lkdGg6IDUwJTtcclxuXHRcdFx0XHRcdFx0XHRmbG9hdDogbGVmdDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG5cclxuXHRcdFx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcclxuXHRcdFx0XHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0Ji5hY3RpdmUge1xyXG5cdFx0XHRcdFx0XHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAjZDhkOGQ4O1xyXG5cdFx0XHRcdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDhkOGQ4O1xyXG5cclxuXHRcdFx0XHRcdFx0XHQmOmZpcnN0LWNoaWxkIHtcclxuXHRcdFx0XHRcdFx0XHRcdGJvcmRlci10b3AtY29sb3I6ICNmYmZiZmI7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcclxuXHRcdFx0XHRcdFx0XHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdFx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRhIHtcclxuXHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0XHRcdFx0XHQgICAgbGVmdDogMXB4O1xyXG5cdFx0XHRcdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiA1M3B4O1xyXG5cdFx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZiZmJmYjtcclxuXHJcblx0XHRcdFx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiAyMHB4O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0Ji5hcmd1bWVudHMsXHJcblx0XHRcdFx0XHRcdCYuc2NoZWR1bGUge1xyXG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblxyXG5cdFx0XHRcdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCAnPD14bGFyZ2UnICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRhIHtcclxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAxMHB4IDIwcHggMTBweCA1NHB4O1xyXG5cdFx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRcdFx0XHRcdFx0XHRjb2xvcjogIzQ0NDtcclxuXHJcblx0XHRcdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHQmOmZvY3VzIHtcclxuXHRcdFx0XHRcdFx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQuY29udGVudCB7XHJcblx0XHRcdFx0XHRwYWRkaW5nOiAyMHB4O1xyXG5cdFx0XHRcdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZDhkOGQ4O1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmYmZiZmI7XHJcblx0XHRcdFx0XHRmbGV4LWdyb3c6IDE7XHJcblxyXG5cdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XHJcblx0XHRcdFx0XHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQmLmFjdGl2ZSB7XHJcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdCYubG9ncyB7XHJcblxyXG5cdFx0XHRcdFx0XHRwOmZpcnN0LWNoaWxkIHtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW4tdG9wOiAwO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHR1bCB7XHJcblx0XHRcdFx0XHRcdCAgICBsaXN0LXN0eWxlOiBkaXNjO1xyXG5cdFx0XHRcdFx0ICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0Ji5hcmd1bWVudHMge1xyXG5cclxuXHRcdFx0XHRcdFx0c3BhbiB7XHJcblx0XHRcdFx0XHRcdFx0bWFyZ2luOiAwIDRweCA0cHggMDtcclxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAzcHggNXB4O1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQ6ICNmNWY1ZjU7XHJcblx0XHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xyXG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNkYmRiZGI7XHJcblx0XHRcdFx0XHRcdFx0d2hpdGUtc3BhY2U6IHByZTtcclxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0Ji5pbXBsZW1lbnRhdGlvbiB7XHJcblxyXG5cdFx0XHRcdFx0XHRjb2RlIHtcclxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAxNXB4O1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XHJcblx0XHRcdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2U4ZThlODtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHQucGFnZS10aXRsZS1hY3Rpb24ge1xyXG5cdFx0dG9wOiAxNXB4O1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDA7XHJcblx0XHRjbGVhcjogYm90aDtcclxuXHR9XHJcblxyXG59XHJcbiIsIiNzZXJ2ZXItc2NoZWR1bGVyLXNldHRpbmdzIHtcclxuXHRtYXJnaW4tdG9wOiA0MHB4O1xyXG5cclxuXHQjc2VydmVyLXNldHRpbmdzLWZvcm0ge1xyXG5cclxuXHRcdGxhYmVsIHtcclxuXHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdG1hcmdpbi1ib3R0b206IDE1cHg7XHJcblx0XHR9XHJcblxyXG5cdH1cclxuXHJcbn1cclxuIl19 */ +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9hbmltYXRpb25zLnNjc3MiLCJjb21wb25lbnRzL193cmFwcGVyLnNjc3MiLCJ2ZW5kb3IvX2luY2x1ZGUtbWVkaWEuc2NzcyIsImNvbXBvbmVudHMvX3RpbGUuc2NzcyIsImNvbXBvbmVudHMvX3RvYXN0LnNjc3MiLCJjb21wb25lbnRzL19zbGlkZWJhci5zY3NzIiwicGFydHMvX3NlYXJjaGJveC5zY3NzIiwicGFydHMvX3NjaGVkdWxlcy5zY3NzIiwicGFydHMvX2V2ZW50cy5zY3NzIiwicGFydHMvX3NlcnZlci1zZXR0aW5ncy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUNJLEtBQU8sc0JBQXdCLENBQy9CLEdBQUssd0JBQTBCLENBQUEsQ0FHbkMsbUJBQ0ksR0FBSyxxQkFBc0IsQ0FDM0IsSUFBTSxxQkFBc0IsQ0FDNUIsS0FBTyxxQkFBc0IsQ0FBQSxDQ1JqQyw2Q0FHSyxnQkFBaUIsQ0M0aUJsQiwwQkQvaUJKLDZDQU1HLGdCQUFpQixDQXdCbEIsQ0E5QkYsd0RBVU0sa0JBQW1CLENDcWlCckIsMkJEL2lCSix3REFhSSxrQkFBbUIsQ0FHcEIsQ0FoQkgsa0VBbUJNLFlBQ0Esb0JBQ0EsV0FBWSxDQzBoQmQsMkJEL2lCSixrRUF3Qkksb0JBQ0EsV0FBWSxDQUdiLENDbWhCQywwQkQvaUJKLDJEQWtDRyxZQUFhLENBQ2IsQ0VuQ0gsTUFDQyxzQkFDRyxxQkFBc0IsQ0FGMUIsbUJBS0ssa0JBQ0EsZ0JBQ0EsU0FDQSw0QkFBNkIsQ0FSbEMsb0JBWUssaUJBQWtCLENBWnZCLFVBZ0JLLGVBQ0EsV0FBWSxDQUNaLG9CQUtKLGVBQWdCLENBQ2hCLGlCQ3ZCQSxjQUNBLGVBQ0EsY0FBZSxDRjRpQlosMEJFL2lCSixpQkFNRSxlQUNBLFNBQVUsQ0FlWCxDRnloQkcsa0RFL2lCSixpQkFXRSxTQUNBLFVBQ0EsYUFBYyxDQVNmLENGeWhCRywyQkUvaUJKLGlCQWlCRSxRQUNBLFNBQ0EsYUFBYyxDQUdmLENBRUQsT0FDQyxzQkFDQSxr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Q0EsZUFBZ0IsQ0FnQmpCLENBL1BQLHlEQW1QUSxrQkFDRyxTQUNILGtCQUNBLHdCQUF5QixDTnlUN0IsMkJNL2lCSix5REF5UFMsa0JBQ0EsNEJBQTZCLENBRzlCLENBN1BSLG1IQW1RTyxZQUFhLENONFNoQiwyQk0vaUJKLG1IQXNRUSxhQUFjLENBRWYsQ0F4UVAsa0RBMlFPLGNBQ0EsNEJBQ0EscUJBQ0EsVUFBVyxDTmlTZCwyQk0vaUJKLGtEQWlSUSxpQkFBa0IsQ0FPbkIsQ0F4UlAsd0RBcVJRLGVBQWdCLENBclJ4QixnREErUkssYUFDQSw4QkFDQSxhQUNBLHlCQUNBLG9CQUFBLEFBQVksV0FBQSxDTjRRYiwyQk0vaUJKLGdEQXNTTSxXQUFZLENBNkNiLENBblZMLHVEQTBTTSxhQUFjLENBMVNwQixtRUFnVE8sWUFBYSxDQWhUcEIsd0RBb1RVLGdCQUNHLGlCQUFrQixDQXJUL0IsK0RBNlRPLG1CQUNBLGdCQUNBLG1CQUNBLGtCQUNBLHlCQUNBLGdCQUNBLG9CQUFxQixDQW5VNUIsb0VBMlVPLGNBQ0EsYUFDQSx5QkFDQSx3QkFBeUIsQ0E5VWhDLDJCQTRWRSxTQUNBLGNBQ0EsVUFBVyxDQUNYLDJCQzlWRCxlQUFnQixDQURqQix1REFNRyxjQUNBLGtCQUFtQixDQUNuQiIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAa2V5ZnJhbWVzIHNwaW4ge1xyXG4gICAgZnJvbSB7IHRyYW5zZm9ybTpyb3RhdGUoIDBkZWcgKTsgfVxyXG4gICAgdG8geyB0cmFuc2Zvcm06cm90YXRlKCAzNjBkZWcgKTsgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIHB1bHNhdGUge1xyXG4gICAgMCUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOyB9XHJcbiAgICA1MCUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOyB9XHJcbiAgICAxMDAlIHsgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsgfVxyXG59XHJcbiIsIi50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlciB7XHJcblxyXG5cdCNwb3N0c3R1ZmYge1xyXG5cdCAgICBwYWRkaW5nLXRvcDogMjVweDtcclxuXHJcblx0ICAgIEBpbmNsdWRlIG1lZGlhKCAnPD14c21hbGwnICkge1xyXG5cdFx0XHRwYWRkaW5nLXRvcDogMTBweDtcclxuXHRcdH1cclxuXHJcblx0ICAgICNwb3N0LWJvZHkge1xyXG5cdFx0ICAgIG1hcmdpbi1yaWdodDogNDcwcHg7XHJcblxyXG5cdFx0ICAgIEBpbmNsdWRlIG1lZGlhKCAnPD14bGFyZ2UnICkge1xyXG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMzIwcHg7XHJcblx0XHRcdH1cclxuXHJcblx0XHR9XHJcblxyXG5cdCAgICAjcG9zdGJveC1jb250YWluZXItMSB7XHJcblx0XHQgICAgZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0ICAgIG1hcmdpbi1yaWdodDogLTQ3MHB4O1xyXG5cdFx0ICAgIHdpZHRoOiA0NTBweDtcclxuXHJcblx0XHQgICAgQGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XHJcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAtMzIwcHg7XHJcblx0XHRcdFx0d2lkdGg6IDMwMHB4O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0fVxyXG5cclxuXHR9XHJcblxyXG5cdEBpbmNsdWRlIG1lZGlhKCAnPD14c21hbGwnICkge1xyXG5cdFx0LndyYXAgPiAucGFnZS10aXRsZS1hY3Rpb24ge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8gICAgIF8gICAgICAgICAgICBfICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAgICAgXyBfXHJcbi8vICAgIChfKSAgICAgICAgICB8IHwgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAoXylcclxuLy8gICAgIF8gXyBfXyAgIF9fX3wgfF8gICBfICBfX3wgfCBfX18gICBfIF9fIF9fXyAgIF9fXyAgX198IHxfICBfXyBfXHJcbi8vICAgIHwgfCAnXyBcXCAvIF9ffCB8IHwgfCB8LyBfYCB8LyBfIFxcIHwgJ18gYCBfIFxcIC8gXyBcXC8gX2AgfCB8LyBfYCB8XHJcbi8vICAgIHwgfCB8IHwgfCAoX198IHwgfF98IHwgKF98IHwgIF9fLyB8IHwgfCB8IHwgfCAgX18vIChffCB8IHwgKF98IHxcclxuLy8gICAgfF98X3wgfF98XFxfX198X3xcXF9fLF98XFxfXyxffFxcX19ffCB8X3wgfF98IHxffFxcX19ffFxcX18sX3xffFxcX18sX3xcclxuLy9cclxuLy8gICAgICBTaW1wbGUsIGVsZWdhbnQgYW5kIG1haW50YWluYWJsZSBtZWRpYSBxdWVyaWVzIGluIFNhc3NcclxuLy8gICAgICAgICAgICAgICAgICAgICAgICB2MS40LjlcclxuLy9cclxuLy8gICAgICAgICAgICAgICAgaHR0cDovL2luY2x1ZGUtbWVkaWEuY29tXHJcbi8vXHJcbi8vICAgICAgICAgQXV0aG9yczogRWR1YXJkbyBCb3VjYXMgKEBlZHVhcmRvYm91Y2FzKVxyXG4vLyAgICAgICAgICAgICAgICAgIEh1Z28gR2lyYXVkZWwgKEBodWdvZ2lyYXVkZWwpXHJcbi8vXHJcbi8vICAgICAgVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2VcclxuXHJcblxyXG4vLy8vXHJcbi8vLyBpbmNsdWRlLW1lZGlhIGxpYnJhcnkgcHVibGljIGNvbmZpZ3VyYXRpb25cclxuLy8vIEBhdXRob3IgRWR1YXJkbyBCb3VjYXNcclxuLy8vIEBhY2Nlc3MgcHVibGljXHJcbi8vLy9cclxuXHJcblxyXG4vLy9cclxuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIGdsb2JhbCBicmVha3BvaW50c1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc2luZ2xlIGJyZWFrcG9pbnQgd2l0aCB0aGUgbGFiZWwgYHBob25lYFxyXG4vLy8gICRicmVha3BvaW50czogKCdwaG9uZSc6IDMyMHB4KTtcclxuLy8vXHJcbiRicmVha3BvaW50czogKFxyXG4gICdwaG9uZSc6IDMyMHB4LFxyXG4gICd0YWJsZXQnOiA3NjhweCxcclxuICAnZGVza3RvcCc6IDEwMjRweFxyXG4pICFkZWZhdWx0O1xyXG5cclxuXHJcbi8vL1xyXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2Ygc3RhdGljIGV4cHJlc3Npb25zIG9yIG1lZGlhIHR5cGVzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzaW5nbGUgbWVkaWEgdHlwZSAoc2NyZWVuKVxyXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nOiAnc2NyZWVuJyk7XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzdGF0aWMgZXhwcmVzc2lvbiB3aXRoIGxvZ2ljYWwgZGlzanVuY3Rpb24gKE9SIG9wZXJhdG9yKVxyXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKFxyXG4vLy8gICAgJ3JldGluYTJ4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSknXHJcbi8vLyAgKTtcclxuLy8vXHJcbiRtZWRpYS1leHByZXNzaW9uczogKFxyXG4gICdzY3JlZW4nOiAnc2NyZWVuJyxcclxuICAncHJpbnQnOiAncHJpbnQnLFxyXG4gICdoYW5kaGVsZCc6ICdoYW5kaGVsZCcsXHJcbiAgJ2xhbmRzY2FwZSc6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxyXG4gICdwb3J0cmFpdCc6ICcob3JpZW50YXRpb246IHBvcnRyYWl0KScsXHJcbiAgJ3JldGluYTJ4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSksIChtaW4tcmVzb2x1dGlvbjogMmRwcHgpJyxcclxuICAncmV0aW5hM3gnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMyksIChtaW4tcmVzb2x1dGlvbjogMzUwZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAzZHBweCknXHJcbikgIWRlZmF1bHQ7XHJcblxyXG5cclxuLy8vXHJcbi8vLyBEZWZpbmVzIGEgbnVtYmVyIHRvIGJlIGFkZGVkIG9yIHN1YnRyYWN0ZWQgZnJvbSBlYWNoIHVuaXQgd2hlbiBkZWNsYXJpbmcgYnJlYWtwb2ludHMgd2l0aCBleGNsdXNpdmUgaW50ZXJ2YWxzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciBwaXhlbHMgaXMgZGVmaW5lZCBhcyBgMWAgYnkgZGVmYXVsdFxyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MTI4cHgnKSB7fVxyXG4vLy9cclxuLy8vICAvKiBHZW5lcmF0ZXM6ICovXHJcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDEyOXB4KSB7fVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgZW1zIGlzIGRlZmluZWQgYXMgYDAuMDFgIGJ5IGRlZmF1bHRcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIwZW0nKSB7fVxyXG4vLy9cclxuLy8vICAvKiBHZW5lcmF0ZXM6ICovXHJcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIwLjAxZW0pIHt9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciByZW1zIGlzIGRlZmluZWQgYXMgYDAuMWAgYnkgZGVmYXVsdCwgdG8gYmUgdXNlZCB3aXRoIGBmb250LXNpemU6IDYyLjUlO2BcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIuMHJlbScpIHt9XHJcbi8vL1xyXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cclxuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMi4xcmVtKSB7fVxyXG4vLy9cclxuJHVuaXQtaW50ZXJ2YWxzOiAoXHJcbiAgJ3B4JzogMSxcclxuICAnZW0nOiAwLjAxLFxyXG4gICdyZW0nOiAwLjEsXHJcbiAgJyc6IDBcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vL1xyXG4vLy8gRGVmaW5lcyB3aGV0aGVyIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgYXZhaWxhYmxlLCB1c2VmdWwgZm9yIGNyZWF0aW5nIHNlcGFyYXRlIHN0eWxlc2hlZXRzXHJcbi8vLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IG1lZGlhIHF1ZXJpZXMuXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIERpc2FibGVzIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXNcclxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xyXG4vLy8gICAgLmZvbyB7XHJcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XHJcbi8vLyAgICB9XHJcbi8vLyAgfVxyXG4vLy9cclxuLy8vICAvKiBHZW5lcmF0ZXM6ICovXHJcbi8vLyAgLmZvbyB7XHJcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xyXG4vLy8gIH1cclxuLy8vXHJcbiRpbS1tZWRpYS1zdXBwb3J0OiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vXHJcbi8vLyBTZWxlY3RzIHdoaWNoIGJyZWFrcG9pbnQgdG8gZW11bGF0ZSB3aGVuIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgZGlzYWJsZWQuIE1lZGlhIHF1ZXJpZXMgdGhhdCBzdGFydCBhdCBvclxyXG4vLy8gaW50ZXJjZXB0IHRoZSBicmVha3BvaW50IHdpbGwgYmUgZGlzcGxheWVkLCBhbnkgb3RoZXJzIHdpbGwgYmUgaWdub3JlZC5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludFxyXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcclxuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcclxuLy8vICAgIC5mb28ge1xyXG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xyXG4vLy8gICAgfVxyXG4vLy8gIH1cclxuLy8vXHJcbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xyXG4vLy8gIC5mb28ge1xyXG4vLy8gICAgY29sb3I6IHRvbWF0bztcclxuLy8vICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGRvZXMgbm90IGludGVyY2VwdCB0aGUgZGVza3RvcCBicmVha3BvaW50XHJcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xyXG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAndGFibGV0JztcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xyXG4vLy8gICAgLmZvbyB7XHJcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XHJcbi8vLyAgICB9XHJcbi8vLyAgfVxyXG4vLy9cclxuLy8vICAvKiBObyBvdXRwdXQgKi9cclxuLy8vXHJcbiRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCcgIWRlZmF1bHQ7XHJcblxyXG4vLy9cclxuLy8vIFNlbGVjdHMgd2hpY2ggbWVkaWEgZXhwcmVzc2lvbnMgYXJlIGFsbG93ZWQgaW4gYW4gZXhwcmVzc2lvbiBmb3IgaXQgdG8gYmUgdXNlZCB3aGVuIG1lZGlhIHF1ZXJpZXNcclxuLy8vIGFyZSBub3Qgc3VwcG9ydGVkLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGFuZCBjb250YWlucyBvbmx5IGFjY2VwdGVkIG1lZGlhIGV4cHJlc3Npb25zXHJcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xyXG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XHJcbi8vLyAgJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicpO1xyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdzY3JlZW4nKSB7XHJcbi8vLyAgICAuZm9vIHtcclxuLy8vICAgICAgY29sb3I6IHRvbWF0bztcclxuLy8vICAgIH1cclxuLy8vICB9XHJcbi8vL1xyXG4vLy8gICAvKiBHZW5lcmF0ZXM6ICovXHJcbi8vLyAgIC5mb28ge1xyXG4vLy8gICAgIGNvbG9yOiB0b21hdG87XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnQgYnV0IGNvbnRhaW5zIGEgbWVkaWEgZXhwcmVzc2lvbiB0aGF0IGlzIG5vdCBhY2NlcHRlZFxyXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcclxuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xyXG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnLCAncmV0aW5hMngnKSB7XHJcbi8vLyAgICAuZm9vIHtcclxuLy8vICAgICAgY29sb3I6IHRvbWF0bztcclxuLy8vICAgIH1cclxuLy8vICB9XHJcbi8vL1xyXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xyXG4vLy9cclxuJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicsICdwb3J0cmFpdCcsICdsYW5kc2NhcGUnKSAhZGVmYXVsdDtcclxuXHJcbi8vLy9cclxuLy8vIENyb3NzLWVuZ2luZSBsb2dnaW5nIGVuZ2luZVxyXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vL1xyXG5cclxuXHJcbi8vL1xyXG4vLy8gTG9nIGEgbWVzc2FnZSBlaXRoZXIgd2l0aCBgQGVycm9yYCBpZiBzdXBwb3J0ZWRcclxuLy8vIGVsc2Ugd2l0aCBgQHdhcm5gLCB1c2luZyBgZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJylgXHJcbi8vLyB0byBkZXRlY3Qgc3VwcG9ydC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lc3NhZ2UgLSBNZXNzYWdlIHRvIGxvZ1xyXG4vLy9cclxuQGZ1bmN0aW9uIGltLWxvZygkbWVzc2FnZSkge1xyXG4gIEBpZiBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKSB7XHJcbiAgICBAZXJyb3IgJG1lc3NhZ2U7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAd2FybiAkbWVzc2FnZTtcclxuICAgICRfOiBub29wKCk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRtZXNzYWdlO1xyXG59XHJcblxyXG5cclxuLy8vXHJcbi8vLyBXcmFwcGVyIG1peGluIGZvciB0aGUgbG9nIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggYSBtb3JlIGZyaWVuZGx5XHJcbi8vLyBBUEkgdGhhbiBgQGlmIGltLWxvZygnLi4nKSB7fWAgb3IgYCRfOiBpbS1sb2coJy4uJylgLiBCYXNpY2FsbHksIHVzZSB0aGUgZnVuY3Rpb25cclxuLy8vIHdpdGhpbiBmdW5jdGlvbnMgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluIGEgZnVuY3Rpb25cclxuLy8vIGFuZCB1c2UgdGhlIG1peGluIGV2ZXJ5d2hlcmUgZWxzZSBiZWNhdXNlIGl0J3MgbXVjaCBtb3JlIGVsZWdhbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZXNzYWdlIC0gTWVzc2FnZSB0byBsb2dcclxuLy8vXHJcbkBtaXhpbiBsb2coJG1lc3NhZ2UpIHtcclxuICBAaWYgaW0tbG9nKCRtZXNzYWdlKSB7fVxyXG59XHJcblxyXG5cclxuLy8vXHJcbi8vLyBGdW5jdGlvbiB3aXRoIG5vIGBAcmV0dXJuYCBjYWxsZWQgbmV4dCB0byBgQHdhcm5gIGluIFNhc3MgMy4zXHJcbi8vLyB0byB0cmlnZ2VyIGEgY29tcGlsaW5nIGVycm9yIGFuZCBzdG9wIHRoZSBwcm9jZXNzLlxyXG4vLy9cclxuQGZ1bmN0aW9uIG5vb3AoKSB7fVxyXG5cclxuLy8vXHJcbi8vLyBEZXRlcm1pbmVzIHdoZXRoZXIgYSBsaXN0IG9mIGNvbmRpdGlvbnMgaXMgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Qm9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmRpdGlvbnMgYXJlIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludFxyXG4vLy9cclxuQGZ1bmN0aW9uIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pIHtcclxuICAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRpbS1uby1tZWRpYS1icmVha3BvaW50KTtcclxuXHJcbiAgQGlmIG5vdCAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSB7XHJcbiAgICBAaWYgaW0tbG9nKCdgI3skaW0tbm8tbWVkaWEtYnJlYWtwb2ludH1gIGlzIG5vdCBhIHZhbGlkIGJyZWFrcG9pbnQuJykge31cclxuICB9XHJcblxyXG4gIEBlYWNoICRjb25kaXRpb24gaW4gJGNvbmRpdGlvbnMge1xyXG4gICAgQGlmIG5vdCBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcclxuICAgICAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkY29uZGl0aW9uKTtcclxuICAgICAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XHJcbiAgICAgICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGNvbmRpdGlvbiwgJG9wZXJhdG9yKTtcclxuXHJcbiAgICAgIEBpZiAoJHByZWZpeCA9PSAnbWF4JyBhbmQgJHZhbHVlIDw9ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSBvclxyXG4gICAgICAgICAgKCRwcmVmaXggPT0gJ21pbicgYW5kICR2YWx1ZSA+ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSB7XHJcbiAgICAgICAgQHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSBpZiBub3QgaW5kZXgoJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zLCAkY29uZGl0aW9uKSB7XHJcbiAgICAgIEByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbi8vLy9cclxuLy8vIFBhcnNpbmcgZW5naW5lXHJcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy8vXHJcblxyXG5cclxuLy8vXHJcbi8vLyBHZXQgb3BlcmF0b3Igb2YgYW4gZXhwcmVzc2lvblxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIEFueSBvZiBgPj1gLCBgPmAsIGA8PWAsIGA8YCwgYOKJpWAsIGDiiaRgXHJcbi8vL1xyXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGV4cHJlc3Npb24pIHtcclxuICBAZWFjaCAkb3BlcmF0b3IgaW4gKCc+PScsICc+JywgJzw9JywgJzwnLCAn4omlJywgJ+KJpCcpIHtcclxuICAgIEBpZiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xyXG4gICAgICBAcmV0dXJuICRvcGVyYXRvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW5zaWRlIGEgZnVuY3Rpb24sIHNvIHdlIGhhdmUgdG9cclxuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxyXG4gIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxyXG4gIC8vIGEgZHVtbXkgdmFyaWFibGUsIHN1Y2ggYXMgYCRfYC4gSWYgYW55Ym9keSBldmVyIHJhaXNlIGEgc2NvcGluZyBpc3N1ZSB3aXRoXHJcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxyXG4gICRfOiBpbS1sb2coJ05vIG9wZXJhdG9yIGZvdW5kIGluIGAjeyRleHByZXNzaW9ufWAuJyk7XHJcbn1cclxuXHJcblxyXG4vLy9cclxuLy8vIEdldCBkaW1lbnNpb24gb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBkaW1lbnNpb24gZnJvbVxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxyXG4vLy9cclxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBgd2lkdGhgIG9yIGBoZWlnaHRgIChvciBwb3RlbnRpYWxseSBhbnl0aGluZyBlbHNlKVxyXG4vLy9cclxuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XHJcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XHJcbiAgJHBhcnNlZC1kaW1lbnNpb246IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgMCwgJG9wZXJhdG9yLWluZGV4IC0gMSk7XHJcbiAgJGRpbWVuc2lvbjogJ3dpZHRoJztcclxuXHJcbiAgQGlmIHN0ci1sZW5ndGgoJHBhcnNlZC1kaW1lbnNpb24pID4gMCB7XHJcbiAgICAkZGltZW5zaW9uOiAkcGFyc2VkLWRpbWVuc2lvbjtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJGRpbWVuc2lvbjtcclxufVxyXG5cclxuXHJcbi8vL1xyXG4vLy8gR2V0IGRpbWVuc2lvbiBwcmVmaXggYmFzZWQgb24gYW4gb3BlcmF0b3JcclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3JcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYG1pbmAgb3IgYG1heGBcclxuLy8vXHJcbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKSB7XHJcbiAgQHJldHVybiBpZihpbmRleCgoJzwnLCAnPD0nLCAn4omkJyksICRvcGVyYXRvciksICdtYXgnLCAnbWluJyk7XHJcbn1cclxuXHJcblxyXG4vLy9cclxuLy8vIEdldCB2YWx1ZSBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IHZhbHVlIGZyb21cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gQSBudW1lcmljIHZhbHVlXHJcbi8vL1xyXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xyXG4gICRvcGVyYXRvci1pbmRleDogc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xyXG4gICR2YWx1ZTogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAkb3BlcmF0b3ItaW5kZXggKyBzdHItbGVuZ3RoKCRvcGVyYXRvcikpO1xyXG5cclxuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcclxuICAgICR2YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICAkdmFsdWU6IHRvLW51bWJlcigkdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgJGludGVydmFsOiBtYXAtZ2V0KCR1bml0LWludGVydmFscywgdW5pdCgkdmFsdWUpKTtcclxuXHJcbiAgQGlmIG5vdCAkaW50ZXJ2YWwge1xyXG4gICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xyXG4gICAgLy8gcmVseSBvbiB0aGUgYGltLWxvZyguLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBgbG9nKC4uKWAgbWl4aW4uIEJlY2F1c2VcclxuICAgIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxyXG4gICAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcclxuICAgIC8vIFNhc3MgMy4zLCBjaGFuZ2UgdGhpcyBsaW5lIGluIGBAaWYgaW0tbG9nKC4uKSB7fWAgaW5zdGVhZC5cclxuICAgICRfOiBpbS1sb2coJ1Vua25vd24gdW5pdCBgI3t1bml0KCR2YWx1ZSl9YC4nKTtcclxuICB9XHJcblxyXG4gIEBpZiAkb3BlcmF0b3IgPT0gJz4nIHtcclxuICAgICR2YWx1ZTogJHZhbHVlICsgJGludGVydmFsO1xyXG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XHJcbiAgICAkdmFsdWU6ICR2YWx1ZSAtICRpbnRlcnZhbDtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHZhbHVlO1xyXG59XHJcblxyXG5cclxuLy8vXHJcbi8vLyBQYXJzZSBhbiBleHByZXNzaW9uIHRvIHJldHVybiBhIHZhbGlkIG1lZGlhLXF1ZXJ5IGV4cHJlc3Npb25cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIHBhcnNlXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIFZhbGlkIG1lZGlhIHF1ZXJ5XHJcbi8vL1xyXG5AZnVuY3Rpb24gcGFyc2UtZXhwcmVzc2lvbigkZXhwcmVzc2lvbikge1xyXG4gIC8vIElmIGl0IGlzIHBhcnQgb2YgJG1lZGlhLWV4cHJlc3Npb25zLCBpdCBoYXMgbm8gb3BlcmF0b3JcclxuICAvLyB0aGVuIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ28gYW55IGZ1cnRoZXIsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxyXG4gIEBpZiBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKSB7XHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1lZGlhLWV4cHJlc3Npb25zLCAkZXhwcmVzc2lvbik7XHJcbiAgfVxyXG5cclxuICAkb3BlcmF0b3I6IGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKTtcclxuICAkZGltZW5zaW9uOiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XHJcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XHJcbiAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcclxuXHJcbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XHJcbn1cclxuXHJcbi8vL1xyXG4vLy8gU2xpY2UgYCRsaXN0YCBiZXR3ZWVuIGAkc3RhcnRgIGFuZCBgJGVuZGAgaW5kZXhlc1xyXG4vLy9cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNsaWNlXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGVuZCBbbGVuZ3RoKCRsaXN0KV0gLSBFbmQgaW5kZXhcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxyXG4vLy9cclxuQGZ1bmN0aW9uIHNsaWNlKCRsaXN0LCAkc3RhcnQ6IDEsICRlbmQ6IGxlbmd0aCgkbGlzdCkpIHtcclxuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XHJcbiAgICBAcmV0dXJuICgpO1xyXG4gIH1cclxuXHJcbiAgJHJlc3VsdDogKCk7XHJcblxyXG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgdGhyb3VnaCAkZW5kIHtcclxuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBudGgoJGxpc3QsICRpKSk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRyZXN1bHQ7XHJcbn1cclxuXHJcbi8vLy9cclxuLy8vIFN0cmluZyB0byBudW1iZXIgY29udmVydGVyXHJcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy8vXHJcblxyXG5cclxuLy8vXHJcbi8vLyBDYXN0cyBhIHN0cmluZyBpbnRvIGEgbnVtYmVyXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGJlIHBhcnNlZFxyXG4vLy9cclxuLy8vIEByZXR1cm4ge051bWJlcn1cclxuLy8vXHJcbkBmdW5jdGlvbiB0by1udW1iZXIoJHZhbHVlKSB7XHJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XHJcbiAgICBAcmV0dXJuICR2YWx1ZTtcclxuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XHJcbiAgICAkXzogaW0tbG9nKCdWYWx1ZSBmb3IgYHRvLW51bWJlcmAgc2hvdWxkIGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nLicpO1xyXG4gIH1cclxuXHJcbiAgJGZpcnN0LWNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgMSwgMSk7XHJcbiAgJHJlc3VsdDogMDtcclxuICAkZGlnaXRzOiAwO1xyXG4gICRtaW51czogKCRmaXJzdC1jaGFyYWN0ZXIgPT0gJy0nKTtcclxuICAkbnVtYmVyczogKCcwJzogMCwgJzEnOiAxLCAnMic6IDIsICczJzogMywgJzQnOiA0LCAnNSc6IDUsICc2JzogNiwgJzcnOiA3LCAnOCc6IDgsICc5JzogOSk7XHJcblxyXG4gIC8vIFJlbW92ZSArLy0gc2lnbiBpZiBwcmVzZW50IGF0IGZpcnN0IGNoYXJhY3RlclxyXG4gIEBpZiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnKycgb3IgJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpIHtcclxuICAgICR2YWx1ZTogc3RyLXNsaWNlKCR2YWx1ZSwgMik7XHJcbiAgfVxyXG5cclxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0ci1sZW5ndGgoJHZhbHVlKSB7XHJcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHZhbHVlLCAkaSwgJGkpO1xyXG5cclxuICAgIEBpZiBub3QgKGluZGV4KG1hcC1rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSAnLicpIHtcclxuICAgICAgQHJldHVybiB0by1sZW5ndGgoaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCksIHN0ci1zbGljZSgkdmFsdWUsICRpKSlcclxuICAgIH1cclxuXHJcbiAgICBAaWYgJGNoYXJhY3RlciA9PSAnLicge1xyXG4gICAgICAkZGlnaXRzOiAxO1xyXG4gICAgfSBAZWxzZSBpZiAkZGlnaXRzID09IDAge1xyXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKTtcclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICAkZGlnaXRzOiAkZGlnaXRzICogMTA7XHJcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKSAvICRkaWdpdHM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpO1xyXG59XHJcblxyXG5cclxuLy8vXHJcbi8vLyBBZGQgYCR1bml0YCB0byBgJHZhbHVlYFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBhZGQgdW5pdCB0b1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR1bml0IC0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1bml0XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIGAkdmFsdWVgIGV4cHJlc3NlZCBpbiBgJHVuaXRgXHJcbi8vL1xyXG5AZnVuY3Rpb24gdG8tbGVuZ3RoKCR2YWx1ZSwgJHVuaXQpIHtcclxuICAkdW5pdHM6ICgncHgnOiAxcHgsICdjbSc6IDFjbSwgJ21tJzogMW1tLCAnJSc6IDElLCAnY2gnOiAxY2gsICdwYyc6IDFwYywgJ2luJzogMWluLCAnZW0nOiAxZW0sICdyZW0nOiAxcmVtLCAncHQnOiAxcHQsICdleCc6IDFleCwgJ3Z3JzogMXZ3LCAndmgnOiAxdmgsICd2bWluJzogMXZtaW4sICd2bWF4JzogMXZtYXgpO1xyXG5cclxuICBAaWYgbm90IGluZGV4KG1hcC1rZXlzKCR1bml0cyksICR1bml0KSB7XHJcbiAgICAkXzogaW0tbG9nKCdJbnZhbGlkIHVuaXQgYCN7JHVuaXR9YC4nKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHZhbHVlICogbWFwLWdldCgkdW5pdHMsICR1bml0KTtcclxufVxyXG5cclxuLy8vXHJcbi8vLyBUaGlzIG1peGluIGFpbXMgYXQgcmVkZWZpbmluZyB0aGUgY29uZmlndXJhdGlvbiBqdXN0IGZvciB0aGUgc2NvcGUgb2ZcclxuLy8vIHRoZSBjYWxsLiBJdCBpcyBoZWxwZnVsIHdoZW4gaGF2aW5nIGEgY29tcG9uZW50IG5lZWRpbmcgYW4gZXh0ZW5kZWRcclxuLy8vIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyBjdXN0b20gYnJlYWtwb2ludHMgKHJlZmVycmVkIHRvIGFzIHR3ZWFrcG9pbnRzKVxyXG4vLy8gZm9yIGluc3RhbmNlLlxyXG4vLy9cclxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWFwfSAkdHdlYWtwb2ludHMgWygpXSAtIE1hcCBvZiB0d2Vha3BvaW50cyB0byBiZSBtZXJnZWQgd2l0aCBgJGJyZWFrcG9pbnRzYFxyXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucyBbKCldIC0gTWFwIG9mIHR3ZWFrZWQgbWVkaWEgZXhwcmVzc2lvbnMgdG8gYmUgbWVyZ2VkIHdpdGggYCRtZWRpYS1leHByZXNzaW9uYFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBicmVha3BvaW50cyB3aXRoIGEgdHdlYWtwb2ludFxyXG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoKCdjdXN0b20nOiA2NzhweCkpIHtcclxuLy8vICAgIC5mb28ge1xyXG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJywgJzw9Y3VzdG9tJykge1xyXG4vLy8gICAgICAgLy8gLi4uXHJcbi8vLyAgICAgIH1cclxuLy8vICAgIH1cclxuLy8vICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCB0aGUgZ2xvYmFsIG1lZGlhIGV4cHJlc3Npb25zIHdpdGggYSBjdXN0b20gb25lXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgnYWxsJzogJ2FsbCcpKSB7XHJcbi8vLyAgICAuZm9vIHtcclxuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnKSB7XHJcbi8vLyAgICAgICAvLyAuLi5cclxuLy8vICAgICAgfVxyXG4vLy8gICAgfVxyXG4vLy8gIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIGJvdGggY29uZmlndXJhdGlvbiBtYXBzXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSwgKCdhbGwnOiAnYWxsJykpIHtcclxuLy8vICAgIC5mb28ge1xyXG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnYWxsJywgJz5waG9uZScsICc8PWN1c3RvbScpIHtcclxuLy8vICAgICAgIC8vIC4uLlxyXG4vLy8gICAgICB9XHJcbi8vLyAgICB9XHJcbi8vLyAgfVxyXG4vLy9cclxuQG1peGluIG1lZGlhLWNvbnRleHQoJHR3ZWFrcG9pbnRzOiAoKSwgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zOiAoKSkge1xyXG4gIC8vIFNhdmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cclxuICAkZ2xvYmFsLWJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHM7XHJcbiAgJGdsb2JhbC1tZWRpYS1leHByZXNzaW9uczogJG1lZGlhLWV4cHJlc3Npb25zO1xyXG5cclxuICAvLyBVcGRhdGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cclxuICAkYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICR0d2Vha3BvaW50cykgIWdsb2JhbDtcclxuICAkbWVkaWEtZXhwcmVzc2lvbnM6IG1hcC1tZXJnZSgkbWVkaWEtZXhwcmVzc2lvbnMsICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucykgIWdsb2JhbDtcclxuXHJcbiAgQGNvbnRlbnQ7XHJcblxyXG4gIC8vIFJlc3RvcmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cclxuICAkYnJlYWtwb2ludHM6ICRnbG9iYWwtYnJlYWtwb2ludHMgIWdsb2JhbDtcclxuICAkbWVkaWEtZXhwcmVzc2lvbnM6ICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnMgIWdsb2JhbDtcclxufVxyXG5cclxuLy8vL1xyXG4vLy8gaW5jbHVkZS1tZWRpYSBwdWJsaWMgZXhwb3NlZCBBUElcclxuLy8vIEBhdXRob3IgRWR1YXJkbyBCb3VjYXNcclxuLy8vIEBhY2Nlc3MgcHVibGljXHJcbi8vLy9cclxuXHJcblxyXG4vLy9cclxuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IGJhc2VkIG9uIGEgbGlzdCBvZiBjb25kaXRpb25zXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHNpbmdsZSBzZXQgYnJlYWtwb2ludFxyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnKSB7IH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCB0d28gc2V0IGJyZWFrcG9pbnRzXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PXRhYmxldCcpIHsgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGN1c3RvbSB2YWx1ZXNcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNThweCcsICc8ODUwcHgnKSB7IH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5kZXNrdG9wJywgJzw9MTM1MHB4JykgeyB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzdGF0aWMgZXhwcmVzc2lvblxyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCdyZXRpbmEyeCcpIHsgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBNaXhpbmcgZXZlcnl0aGluZ1xyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PTM1MHB4JywgJzx0YWJsZXQnLCAncmV0aW5hM3gnKSB7IH1cclxuLy8vXHJcbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xyXG4gIEBpZiAoJGltLW1lZGlhLXN1cHBvcnQgYW5kIGxlbmd0aCgkY29uZGl0aW9ucykgPT0gMCkgb3JcclxuICAgICAgKG5vdCAkaW0tbWVkaWEtc3VwcG9ydCBhbmQgaW0taW50ZXJjZXB0cy1zdGF0aWMtYnJlYWtwb2ludCgkY29uZGl0aW9ucy4uLikpIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH0gQGVsc2UgaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xyXG4gICAgQG1lZGlhICN7dW5xdW90ZShwYXJzZS1leHByZXNzaW9uKG50aCgkY29uZGl0aW9ucywgMSkpKX0ge1xyXG4gICAgICAvLyBSZWN1cnNpdmUgY2FsbFxyXG4gICAgICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcclxuICAgICAgICBAY29udGVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIudGlsZSB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XHJcblxyXG4gICAgLnRpbGUtaGVhZGVyIHtcclxuICAgIFx0cGFkZGluZzogMTBweCAxNXB4O1xyXG4gICAgXHRmb250LXNpemU6IDEuMWVtO1xyXG5cdCAgICBtYXJnaW46IDA7XHJcblx0ICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xyXG4gICAgfVxyXG5cclxuICAgIC50aWxlLWNvbnRlbnQge1xyXG4gICAgXHRwYWRkaW5nOiAxMHB4IDE1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgaW1nIHtcclxuICAgIFx0bWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgXHRoZWlnaHQ6IGF1dG87XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG4jbm90aWZpY2F0aW9uLXByb21vIHtcclxuXHRtYXJnaW4tdG9wOiA0MHB4O1xyXG59XHJcbiIsIiN0b2FzdC1jb250YWluZXIge1xyXG5cdGRpc3BsYXk6IGJsb2NrO1xyXG5cdHBvc2l0aW9uOiBmaXhlZDtcclxuXHR6LWluZGV4OiA5OTk5OTk7XHJcblxyXG5cdEBpbmNsdWRlIG1lZGlhKCAnPD1zbWFsbCcgKSB7XHJcblx0XHRtaW4td2lkdGg6IDEwMCU7XHJcblx0XHRib3R0b206IDAlO1xyXG5cdH1cclxuXHJcblx0QGluY2x1ZGUgbWVkaWEoICc+c21hbGwnLCAnPD14bGFyZ2UnICkge1xyXG5cdFx0cmlnaHQ6IDUlO1xyXG5cdFx0Ym90dG9tOiA3JTtcclxuXHRcdG1heC13aWR0aDogOTAlO1xyXG5cdH1cclxuXHJcblx0QGluY2x1ZGUgbWVkaWEoICc+eGxhcmdlJyApIHtcclxuXHRcdHRvcDogMTAlO1xyXG5cdFx0cmlnaHQ6IDclO1xyXG5cdFx0bWF4LXdpZHRoOiA4NiU7XHJcblx0fVxyXG5cclxufVxyXG5cclxuLnRvYXN0IHtcclxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cdGJvcmRlci1yYWRpdXM6IDJweDtcclxuXHR0b3A6IDM1cHg7XHJcblx0d2lkdGg6IGF1dG87XHJcblx0Y2xlYXI6IGJvdGg7XHJcblx0bWFyZ2luLXRvcDogMTBweDtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0bWF4LXdpZHRoOjEwMCU7XHJcblx0aGVpZ2h0OiBhdXRvO1xyXG5cdG1pbi1oZWlnaHQ6IDQ4cHg7XHJcblx0bGluZS1oZWlnaHQ6IDEuNWVtO1xyXG5cdHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyO1xyXG5cdHBhZGRpbmc6IDEwcHggMjVweCAxMHB4IDE1cHg7XHJcblx0Zm9udC1zaXplOiAxLjFyZW07XHJcblx0Zm9udC13ZWlnaHQ6IDMwMDtcclxuXHRjb2xvcjogI2ZmZjtcclxuXHJcblx0ZGlzcGxheTogZmxleDtcclxuXHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHJcblx0LmJ0biB7XHJcblx0XHRtYXJnaW46IDA7XHJcblx0XHRtYXJnaW4tbGVmdDogMnJlbTtcclxuXHRcdHBhZGRpbmc6IDVweCAxMHB4O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xyXG5cdFx0YmFja2dyb3VuZDogIzQ0NDtcclxuXHRcdGNvbG9yOiB3aGl0ZTtcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRcdGZvbnQtd2VpZ2h0OiA1MDA7XHJcblx0XHRmb250LXNpemU6IDFyZW07XHJcblx0fVxyXG5cclxuXHQuZGFzaGljb25zIHtcclxuXHRcdG1hcmdpbi1yaWdodDogMTBweDtcclxuXHJcblx0XHQmLmRhc2hpY29ucy15ZXMge1xyXG5cdFx0XHRjb2xvcjogIzAwYjMwMDtcclxuXHRcdH1cclxuXHJcblx0XHQmLmRhc2hpY29ucy13YXJuaW5nIHtcclxuXHRcdFx0Y29sb3I6ICNmZjI2MjY7XHJcblx0XHR9XHJcblxyXG5cdH1cclxuXHJcblx0QGluY2x1ZGUgbWVkaWEoICc8PXNtYWxsJyApIHtcclxuXHRcdHdpZHRoOjEwMCU7XHJcblx0XHRib3JkZXItcmFkaXVzOiAwO1xyXG5cdH1cclxuXHJcblx0QGluY2x1ZGUgbWVkaWEoICc+c21hbGwnLCAnPD14bGFyZ2UnICkge1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0fVxyXG5cclxuXHRAaW5jbHVkZSBtZWRpYSggJz54bGFyZ2UnICkge1xyXG5cdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdH1cclxuXHJcbn1cclxuIiwiLnNsaWRlYmFyIHtcclxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cdHBvc2l0aW9uOiBmaXhlZDtcclxuXHRoZWlnaHQ6IDEwMCU7XHJcblx0aGVpZ2h0OiAxMDB2aDtcclxuXHRyaWdodDogMDtcclxuXHR0b3A6IDA7XHJcblx0YmFja2dyb3VuZDogI2Y3ZjdmNztcclxuXHRib3JkZXItbGVmdDogMXB4IHNvbGlkICNkMmQyZDI7XHJcblx0Ym94LXNoYWRvdzogMCAtM3B4IDlweCAjY2FjYWNhO1xyXG5cdHdpZHRoOiAzODBweDtcclxuXHR6LWluZGV4OiA5OTk5O1xyXG5cdHBhZGRpbmc6IDIwcHggMzBweDtcclxuXHRtYXJnaW4tdG9wOiAzMnB4O1xyXG5cdG92ZXJmbG93OiBhdXRvO1xyXG5cdG1hcmdpbi1yaWdodDogLTM4NXB4O1xyXG5cdG1heC13aWR0aDogOTUlO1xyXG5cclxuXHRAaW5jbHVkZSBtZWRpYSggJzw9c21hbGwnICkge1xyXG5cdFx0ei1pbmRleDogOTk5OTk7XHJcblx0XHRtYXJnaW4tdG9wOiAwO1xyXG5cdH1cclxuXHJcblx0LmNsb3NlIHtcclxuXHQgICAgZmxvYXQ6IHJpZ2h0O1xyXG5cdCAgICBtYXJnaW46IDAgMCAxNnB4IDE2cHg7XHJcblx0ICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHQgICAgZm9udC1zaXplOiAxLjhyZW07XHJcblx0fVxyXG5cclxuXHQuY29udGVudCB7XHJcblxyXG5cdFx0aDMge1xyXG5cdFx0XHRtYXJnaW4tdG9wOiA2cHg7XHJcblx0XHRcdG1hcmdpbi1ib3R0b206IDQwcHg7XHJcblx0XHR9XHJcblxyXG5cdFx0Zm9ybSB7XHJcblxyXG5cdFx0XHRsYWJlbCB7XHJcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aW5wdXQsXHJcblx0XHRcdHNlbGVjdCB7XHJcblx0XHRcdFx0bWFyZ2luLXRvcDogNnB4O1xyXG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDE1cHg7XHJcblxyXG5cdFx0XHRcdCYuc3BpbmJveCB7XHJcblx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiA1cHg7XHJcblx0XHRcdFx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRcdFx0XHR3aWR0aDogNjBweDtcclxuXHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdCYuZXZlbnQtYXJndW1lbnQge1xyXG5cdFx0XHRcdFx0bWFyZ2luLWJvdHRvbTogNXB4O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC5zdWJtaXQtcm93IHtcclxuXHRcdFx0XHRmbG9hdDogcmlnaHQ7XHJcblxyXG5cdFx0XHRcdC5idXR0b24ge1xyXG5cdFx0XHRcdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC5zcGlubmVyIHtcclxuXHRcdFx0XHRcdG1hcmdpbi10b3A6IDEwcHg7XHJcblx0XHRcdFx0XHRmbG9hdDogbGVmdDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblxyXG5cdFx0fVxyXG5cclxuXHRcdEBtaXhpbiBwbGFjZWhvbGRlci1hbmltYXRpb24oKSB7XHJcblx0XHRcdGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XHJcblx0XHQgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XHJcblx0XHQgICAgYW5pbWF0aW9uLW5hbWU6IHB1bHNhdGU7XHJcblx0XHQgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xyXG5cdFx0ICAgIGJhY2tncm91bmQ6ICNlMmUyZTI7XHJcblx0XHR9XHJcblxyXG5cdFx0LmZvcm0tcGxhY2Vob2xkZXIge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cclxuXHRcdFx0LmhlYWRlciB7XHJcblx0XHRcdFx0QGluY2x1ZGUgcGxhY2Vob2xkZXItYW5pbWF0aW9uKCk7XHJcblx0XHRcdFx0aGVpZ2h0OiAzMHB4O1xyXG5cdFx0XHRcdHdpZHRoOiA3NSU7XHJcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogM2VtO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQuaW5wdXQge1xyXG5cdFx0XHRcdEBpbmNsdWRlIHBsYWNlaG9sZGVyLWFuaW1hdGlvbigpO1xyXG5cdFx0XHRcdGhlaWdodDogMzBweDtcclxuXHRcdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAxLjVlbTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LnNlbmQge1xyXG5cdFx0XHRcdEBpbmNsdWRlIHBsYWNlaG9sZGVyLWFuaW1hdGlvbigpO1xyXG5cdFx0XHRcdGhlaWdodDogMzBweDtcclxuXHRcdFx0XHR3aWR0aDogMzAlO1xyXG5cdFx0XHRcdGZsb2F0OiByaWdodDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdH1cclxuXHJcblx0XHQmLmxvYWRpbmcgLmZvcm0tcGxhY2Vob2xkZXIge1xyXG5cdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxufVxyXG5cclxuLnNsaWRlYmFyLW92ZXJsYXkge1xyXG5cdGRpc3BsYXk6IG5vbmU7XHJcblx0cG9zaXRpb246IGZpeGVkO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgei1pbmRleDogOTk5O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG59XHJcbiIsIi5zZWFyY2hib3gge1xyXG5cdG1hcmdpbi1ib3R0b206IDIwcHg7XHJcblxyXG5cdCNzZWFyY2gge1xyXG5cdFx0cGFkZGluZzogMTBweCAxNXB4O1xyXG5cdCAgICBmb250LXNpemU6IDEuMmVtO1xyXG5cdH1cclxuXHJcbn1cclxuIiwiI3NjaGVkdWxlcyB7XHJcblxyXG5cdEBpbmNsdWRlIG1lZGlhKCAnPD04NTBweCcgKSB7XHJcblx0XHRtYXJnaW4tdG9wOiAzMHB4O1xyXG5cdH1cclxuXHJcblx0Ji5sb2FkaW5nIHtcclxuXHRcdG9wYWNpdHk6IDAuNztcclxuXHR9XHJcblxyXG5cdC5zY2hlZHVsZXMge1xyXG5cclxuXHRcdC5zaW5nbGUtc2NoZWR1bGUge1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRtYXJnaW46IDEwcHggMDtcclxuXHJcblx0XHRcdCYuaGVhZGVyIHtcclxuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cclxuXHRcdFx0XHQmOmhvdmVyIHtcclxuXHRcdFx0XHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC5jb2x1bW4ge1xyXG5cdFx0XHRcdHBhZGRpbmc6IDJweDtcclxuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuXHRcdFx0XHQmLmxhYmVsIHtcclxuXHRcdFx0XHRcdGZsZXgtZ3JvdzogMTAwO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ji5zbHVnIHtcclxuXHRcdFx0XHRcdHdpZHRoOiAzMCU7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQmLmludGVydmFsIHtcclxuXHRcdFx0XHRcdHdpZHRoOiAxNSU7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQmLmFjdGlvbnMge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDE1JTtcclxuXHRcdFx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cclxuXHRcdFx0XHRcdC5kYXNoaWNvbnMge1xyXG5cclxuXHRcdFx0XHRcdFx0Ji5kYXNoaWNvbnMtdHJhc2gge1xyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiAjYTAwO1xyXG5cclxuXHRcdFx0XHRcdFx0XHQmOmhvdmVyIHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbG9yOiByZWQ7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHQmLndvcmtpbmcge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29sb3I6IGluaGVyaXQ7XHJcblx0XHRcdFx0XHRcdFx0XHRhbmltYXRpb24tbmFtZTogc3BpbjtcclxuXHRcdFx0XHRcdFx0XHRcdGFuaW1hdGlvbi1kdXJhdGlvbjogNDAwMG1zO1xyXG5cdFx0XHRcdFx0XHRcdFx0YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XHJcblx0XHRcdFx0XHRcdFx0XHRhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0JjpiZWZvcmUge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiBcIlxcZjExMVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHQmLmRpc2FibGVkLFxyXG5cdFx0XHRcdFx0XHQmLmRpc2FibGVkOmhvdmVyIHtcclxuXHRcdFx0XHRcdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiAjY2NjO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRzcGFuIHtcclxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblxyXG5cdFx0fVxyXG5cclxuXHR9XHJcblxyXG5cdC5wYWdlLXRpdGxlLWFjdGlvbiB7XHJcblx0XHR0b3A6IDE1cHg7XHJcblx0XHRtYXJnaW4tbGVmdDogMDtcclxuXHR9XHJcblxyXG59XHJcbiIsIiNldmVudHMge1xuXG5cdCYubG9hZGluZyB7XG5cdFx0b3BhY2l0eTogMC43O1xuXHR9XG5cblx0LnRhYmxlbmF2LmJvdHRvbSB7XG5cdFx0b3ZlcmZsb3c6IGF1dG87XG5cdFx0bWFyZ2luLWJvdHRvbTogLTE1cHg7XG5cblx0XHRAaW5jbHVkZSBtZWRpYSggJz5tZWRpdW0nICkge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0fVxuXG5cdC5ldmVudHMge1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cblx0XHQuc2luZ2xlLWV2ZW50IHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG5cdFx0XHQmOmhvdmVyIHtcblxuXHRcdFx0XHQucm93LWFjdGlvbnMge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBzdGF0aWM7XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcblx0XHRcdFx0LnJvdy1hY3Rpb25zIHtcblx0XHRcdFx0XHRwb3NpdGlvbjogc3RhdGljO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCYuaGVhZGVyIHtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMWUxZTE7XG5cdFx0XHQgICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuXHRcdFx0ICAgICY6bGFzdC1vZi10eXBlIHtcblx0XHRcdCAgICBcdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdFx0XHQgICAgfVxuXG5cdFx0XHQgICAgLmNvbHVtbnMge1xuXHRcdFx0ICAgIFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdCAgICBcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHQgICAgfVxuXG5cdFx0XHR9XG5cblx0XHRcdCYudW5mb2xkZWQge1xuXG5cdFx0XHRcdC5jb2x1bW5zIHtcblx0XHRcdFx0XHRib3gtc2hhZG93OiAwIDFweCA2cHggcmdiYSgwLDAsMCwwLjEpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0PiAuZGV0YWlscyB7XG5cdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHRcdCYucGF1c2VkIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZjZmNmYztcblx0XHRcdH1cblxuXHRcdFx0Ji5ydW5uaW5nIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2UwZmJlNztcblxuXHRcdFx0XHQuY29sdW1ucyAuY29sdW1uLmNiIHtcblxuXHRcdFx0XHRcdGlucHV0IHtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LmRhc2hpY29ucyB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRcdGNvbG9yOiBncmVlbjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHRcdCYucmVtb3Zpbmcge1xuXG5cdFx0XHRcdC5jb2x1bW5zIC5jb2x1bW4uY2Ige1xuXG5cdFx0XHRcdFx0aW5wdXQge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQuZGFzaGljb25zIHtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9XG5cblx0XHRcdH1cblxuXHRcdFx0LmNvbHVtbnMge1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UxZTFlMTtcblx0XHRcdCAgICB6LWluZGV4OiAxO1xuXG5cdFx0XHRcdC5jb2x1bW4ge1xuXHRcdFx0XHRcdHBhZGRpbmc6IDEycHg7XG5cblx0XHRcdFx0XHQmLmNiIHtcblx0XHRcdFx0XHRcdHdpZHRoOiAxOHB4O1xuXG5cdFx0XHRcdFx0XHRpbnB1dCB7XG5cdFx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0LmRhc2hpY29ucyB7XG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdFx0XHRcdGFuaW1hdGlvbi1uYW1lOiBzcGluO1xuXHRcdFx0XHRcdFx0XHRhbmltYXRpb24tZHVyYXRpb246IDQwMDBtcztcblx0XHRcdFx0XHRcdFx0YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG5cdFx0XHRcdFx0XHRcdGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYuZXZlbnQge1xuXHRcdFx0XHRcdFx0ZmxleC1ncm93OiAxMDA7XG5cblx0XHRcdFx0XHRcdC5ldmVudC1uYW1lIHtcblx0XHRcdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0XHRcdFx0XHRjb2xvcjogaW5oZXJpdDtcblxuXHRcdFx0XHRcdFx0XHQuZGFzaGljb25zIHtcblx0XHRcdFx0XHRcdFx0XHRjb2xvcjogIzU1NTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC5yb3ctYWN0aW9ucyB7XG5cblx0XHRcdFx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYuc2NoZWR1bGUge1xuXHRcdFx0XHRcdFx0d2lkdGg6IDE1JTtcblxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQmLmFyZ3VtZW50cyB7XG5cdFx0XHRcdFx0XHR3aWR0aDogMTUlO1xuXG5cdFx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0c3BhbiB7XG5cdFx0XHRcdFx0XHRcdG1hcmdpbjogMCA0cHggNHB4IDA7XG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDNweCA1cHg7XG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQ6ICNmNWY1ZjU7XG5cdFx0XHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRcdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2RiZGJkYjtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYubmV4dC1leGVjdXRpb24ge1xuXHRcdFx0XHRcdFx0d2lkdGg6IDE1JTtcblx0XHRcdFx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXG5cdFx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcblx0XHRcdFx0XHRcdFx0d2lkdGg6IDI1JTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9XG5cblx0XHRcdH1cblxuXHRcdFx0PiAuZGV0YWlscyB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdGZsZXgtZ3JvdzogMTAwO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RiZGJkYjtcblxuXHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcblx0XHRcdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0LnRhYnMge1xuXHRcdFx0XHRcdG1pbi13aWR0aDogMjIwcHg7XG5cdFx0XHRcdFx0bWF4LXdpZHRoOiAyMjBweDtcblx0XHRcdFx0XHRtYXJnaW46IDA7XG5cblx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcblx0XHRcdFx0XHRcdG1pbi13aWR0aDogMTAwJTtcblx0XHRcdFx0XHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRcdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGxpIHtcblx0XHRcdFx0XHRcdG1hcmdpbjogMDtcblxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XG5cdFx0XHRcdFx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0XHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG5cdFx0XHRcdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCAnPD14bGFyZ2UnICkge1xuXHRcdFx0XHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRcdFx0XHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAjZDhkOGQ4O1xuXHRcdFx0XHRcdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q4ZDhkODtcblxuXHRcdFx0XHRcdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdFx0XHRib3JkZXItdG9wLWNvbG9yOiAjZmJmYmZiO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRhIHtcblx0XHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdFx0XHRcdCAgICBsZWZ0OiAxcHg7XG5cdFx0XHRcdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiA1M3B4O1xuXHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmYmZiZmI7XG5cblx0XHRcdFx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDogMjBweDtcblx0XHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ji5hcmd1bWVudHMsXG5cdFx0XHRcdFx0XHQmLnNjaGVkdWxlIHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdFx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSggJzw9eGxhcmdlJyApIHtcblx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRhIHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDEwcHggMjBweCAxMHB4IDU0cHg7XG5cdFx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHRcdFx0Y29sb3I6ICM0NDQ7XG5cblx0XHRcdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiAyMHB4O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdFx0XHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC5jb250ZW50IHtcblx0XHRcdFx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdFx0XHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2Q4ZDhkODtcblx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmYmZiZmI7XG5cdFx0XHRcdFx0ZmxleC1ncm93OiAxO1xuXG5cdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoICc8PXhsYXJnZScgKSB7XG5cdFx0XHRcdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ji5hY3RpdmUge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ji5sb2dzIHtcblxuXHRcdFx0XHRcdFx0cDpmaXJzdC1jaGlsZCB7XG5cdFx0XHRcdFx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHVsIHtcblx0XHRcdFx0XHRcdCAgICBsaXN0LXN0eWxlOiBkaXNjO1xuXHRcdFx0XHRcdCAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ji5hcmd1bWVudHMge1xuXG5cdFx0XHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRcdFx0bWFyZ2luOiAwIDRweCA0cHggMDtcblx0XHRcdFx0XHRcdFx0cGFkZGluZzogM3B4IDVweDtcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZDogI2Y1ZjVmNTtcblx0XHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGJkYmRiO1xuXHRcdFx0XHRcdFx0XHR3aGl0ZS1zcGFjZTogcHJlO1xuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQmLmltcGxlbWVudGF0aW9uIHtcblxuXHRcdFx0XHRcdFx0Y29kZSB7XG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAxNXB4O1xuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuXHRcdFx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZThlOGU4O1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdH1cblxuXHQucGFnZS10aXRsZS1hY3Rpb24ge1xuXHRcdHRvcDogMTVweDtcblx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHRjbGVhcjogYm90aDtcblx0fVxuXG59XG4iLCIjc2VydmVyLXNjaGVkdWxlci1zZXR0aW5ncyB7XHJcblx0bWFyZ2luLXRvcDogNDBweDtcclxuXHJcblx0I3NlcnZlci1zZXR0aW5ncy1mb3JtIHtcclxuXHJcblx0XHRsYWJlbCB7XHJcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG5cdFx0fVxyXG5cclxuXHR9XHJcblxyXG59XHJcbiJdfQ== */ diff --git a/assets/dist/js/scripts.min.js b/assets/dist/js/scripts.min.js index b3aedbf..180deff 100644 --- a/assets/dist/js/scripts.min.js +++ b/assets/dist/js/scripts.min.js @@ -1,2 +1,2 @@ function ACM_Slidebar(){this.container=jQuery(".slidebar"),this.overlay=jQuery(".slidebar-overlay"),this.close_button=jQuery(".slidebar .close"),this.close_button.click({slidebar:this},function(e){e.data.slidebar.close()}),this.overlay.click({slidebar:this},function(e){e.data.slidebar.close()}),this.open=function(){this.container.animate({"margin-right":0},400,"easeInOutSine"),this.overlay.fadeIn(400)},this.close=function(){var e=this.container.find(".content .form");this.container.animate({"margin-right":"-"+(this.container.outerWidth()+5)},400,"easeInOutSine",function(){e.html("")}),this.overlay.fadeOut(400)},this.wait=function(){this.container.find(".content").addClass("loading")},this.fulfill=function(e){this.container.find(".content .form").html(e),this.container.find(".content").removeClass("loading")},this.form_process_start=function(e){this.container.find(".content .send-form").attr("disabled",!0),this.container.find(".content .spinner").css("visibility","visible")},this.form_process_stop=function(e){this.container.find(".content .send-form").attr("disabled",!1),this.container.find(".content .spinner").css("visibility","hidden")}}!function(e){function a(a){if(a=void 0!==a&&a)var n=":checked";else var n="";return e("#events .events .single-event.row:visible .cb input:checkbox"+n)}function n(){a().prop("checked",!1),c.prop("checked",!1)}e(".tools_page_advanced-cron-manager").on("click",".tablenav .action",function(n){n.preventDefault();var c=e(this),t=e(this).prev("select"),s=t.val();"-1"!=s&&(c.attr("disabled",!0),a(!0).each(function(){var a=e(this),n=a.parents(".single-event.row").first().find("a."+s+"-event");n&&n.trigger("click"),a.attr("checked",!1)}),c.attr("disabled",!1),t.val("-1"))});var c=e(".single-event.header .select-all");c.on("change",function(){a().prop("checked",this.checked),c.prop("checked",this.checked)}),a().on("change",function(){c.prop("checked",a(!0).length==a().length)}),wp.hooks.addAction("advanced-cron-manager.events.search.triggered","bracketspace/acm/events-search-triggered",n),wp.hooks.addAction("advanced-cron-manager.events.filter.schedule","bracketspace/acm/events-filter-schedule",n)}(jQuery),advanced_cron_manager.notify=function(e,a){a=void 0===a?"":'',Materialize.toast(a+e,4e3)},advanced_cron_manager.ajax_messages=function(e){1==e.success?advanced_cron_manager.notify(e.data,"yes"):jQuery.each(e.data,function(e,a){advanced_cron_manager.notify(a,"warning")})},advanced_cron_manager.slidebar=new ACM_Slidebar,function(e){function a(){var a=e("#events .events .single-event.row:visible").length;e("#events .tablenav .tablenav-pages .displaying-num").text(a+" "+advanced_cron_manager.i18n.events)}wp.hooks.addAction("advanced-cron-manager.events.filter.schedule","bracketspace/acm/events-filter-schedule",a,100),wp.hooks.addAction("advanced-cron-manager.events.search.triggered","bracketspace/acm/events-search-triggered",a,100)}(jQuery),function(e){var a=function(a){a.preventDefault(),$link=e(this),$row=$link.parents(".single-event").first(),$row.toggleClass("unfolded"),$row.hasClass("unfolded")&&wp.hooks.doAction("advanced-cron-manager.event.details.unfolded",$row)};e(".tools_page_advanced-cron-manager").on("click","#events .columns .event .row-actions .details a",a),e(".tools_page_advanced-cron-manager").on("click","#events .columns .event .event-name",a)}(jQuery),function(e){e(".tools_page_advanced-cron-manager").on("click",".add-event",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.event.add",e(this))}),e(".slidebar").on("submit",".event-add",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.event.add.process",e(this))}),e(".tools_page_advanced-cron-manager").on("click","#events .run-event",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.event.run.process",e(this))}),e(".tools_page_advanced-cron-manager").on("click","#events .remove-event",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.event.remove.process",e(this))}),e(".tools_page_advanced-cron-manager").on("click","#events .pause-event",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.event.pause.process",e(this))}),e(".tools_page_advanced-cron-manager").on("click","#events .unpause-event",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.event.unpause.process",e(this))}),wp.hooks.addAction("advanced-cron-manager.event.add","bracketspace/acm/event-add",function(a){advanced_cron_manager.slidebar.open(),advanced_cron_manager.slidebar.wait();var n={action:"acm/event/add/form",nonce:a.data("nonce")};e.post(ajaxurl,n,function(e){advanced_cron_manager.slidebar.fulfill(e.data)})}),wp.hooks.addAction("advanced-cron-manager.event.add.process","bracketspace/acm/event-add-process",function(a){advanced_cron_manager.slidebar.form_process_start();var n={action:"acm/event/insert",nonce:a.find("#nonce").val(),data:a.serialize()};e.post(ajaxurl,n,function(e){advanced_cron_manager.ajax_messages(e),1==e.success?wp.hooks.doAction("advanced-cron-manager.event.added",a.find("#event-hook").val()):advanced_cron_manager.slidebar.form_process_stop()})}),wp.hooks.addAction("advanced-cron-manager.event.run.process","bracketspace/acm/event-run-process",function(a){if(a.hasClass("busy"))return!1;var n=a.parents(".single-event.row").first();n.addClass("running"),a.addClass("busy");var c={action:"acm/event/run",nonce:a.data("nonce"),event:a.data("event")};e.post(ajaxurl,c,function(e){advanced_cron_manager.ajax_messages(e),1==e.success&&wp.hooks.doAction("advanced-cron-manager.event.executed",a.data("event"),n),n.removeClass("running"),a.removeClass("busy")}).error(function(){advanced_cron_manager.notify(advanced_cron_manager.i18n.executed_with_errors,"warning"),wp.hooks.doAction("advanced-cron-manager.event.executed",a.data("event"),n),n.removeClass("running"),a.removeClass("busy")})}),wp.hooks.addAction("advanced-cron-manager.event.remove.process","bracketspace/acm/event-remove-process",function(a){var n=a.parents(".single-event.row").first(),c=a.data("event");a.replaceWith(advanced_cron_manager.i18n.removing),n.addClass("removing");var t={action:"acm/event/remove",nonce:a.data("nonce"),event:c};e.post(ajaxurl,t,function(e){advanced_cron_manager.ajax_messages(e),1==e.success&&(n.slideUp(),wp.hooks.doAction("advanced-cron-manager.event.removed",c,n)),n.removeClass("removing")})}),wp.hooks.addAction("advanced-cron-manager.event.pause.process","bracketspace/acm/event-pause-process",function(a){var n=a.parents(".single-event.row").first(),c=a.data("event");a.replaceWith(advanced_cron_manager.i18n.pausing),n.addClass("removing");var t={action:"acm/event/pause",nonce:a.data("nonce"),event:c};e.post(ajaxurl,t,function(e){advanced_cron_manager.ajax_messages(e),1==e.success&&wp.hooks.doAction("advanced-cron-manager.event.paused",c,n),n.removeClass("removing")})}),wp.hooks.addAction("advanced-cron-manager.event.unpause.process","bracketspace/acm/event-unpause-process",function(a){var n=a.parents(".single-event.row").first(),c=a.data("event");a.replaceWith(advanced_cron_manager.i18n.pausing),n.addClass("removing");var t={action:"acm/event/unpause",nonce:a.data("nonce"),event:c};e.post(ajaxurl,t,function(e){advanced_cron_manager.ajax_messages(e),1==e.success&&wp.hooks.doAction("advanced-cron-manager.event.unpaused",c,n),n.removeClass("removing")})});var a=function(){e("#events").addClass("loading"),e.post(ajaxurl,{action:"acm/rerender/events"},function(a){e("#events").replaceWith(a.data),advanced_cron_manager.slidebar.form_process_stop(),advanced_cron_manager.slidebar.close()})};wp.hooks.addAction("advanced-cron-manager.event.added","bracketspace/acm/event-added",a),wp.hooks.addAction("advanced-cron-manager.event.paused","bracketspace/acm/event-paused",a),wp.hooks.addAction("advanced-cron-manager.event.unpaused","bracketspace/acm/event-unpaused",a),e(".slidebar").on("blur",".event-arguments .event-argument",function(){var a=e(this);0==a.next(".event-argument").length&&a.val().length>0&&e(".slidebar .event-arguments").append(''),0==a.val().length&&e(".slidebar .event-arguments .event-argument").length>1&&a.remove()}),e(".slidebar").on("keyup",".event-arguments .event-argument",function(a){var n=e(this);8==a.keyCode&&0==n.val().length&&e(".slidebar .event-arguments .event-argument").length>1&&n.blur()}),wp.hooks.addAction("advanced-cron-manager.event.add.process","bracketspace/acm/event-add-process",function(e){e.find("#event-offset").val((new Date).getTimezoneOffset()/60)},5)}(jQuery),function(e){e(".tools_page_advanced-cron-manager").on("change","#events .tablenav .schedules-filter",function(){wp.hooks.doAction("advanced-cron-manager.events.filter.schedule",e(this).val())}),wp.hooks.addAction("advanced-cron-manager.events.filter.schedule","bracketspace/acm/events-filter-schedule",function(a){e("#events .events .single-event.row").each(function(){var n=e(this);n.data("schedule")==a||""==a?n.show():n.hide()})}),wp.hooks.addAction("advanced-cron-manager.events.search.triggered","bracketspace/acm/events-search-triggered",function(){e("#events .tablenav .schedules-filter").val("")})}(jQuery),function(e){e(".tools_page_advanced-cron-manager").on("click",".add-schedule",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.schedule.add",e(this))}),e(".tools_page_advanced-cron-manager").on("click","#schedules .single-schedule .actions .edit-schedule",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.schedule.edit",e(this).parents(".single-schedule").first())}),e(".slidebar").on("submit",".schedule-add",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.schedule.add.process",e(this))}),e(".slidebar").on("submit",".schedule-edit",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.schedule.edit.process",e(this))}),e(".tools_page_advanced-cron-manager").on("click","#schedules .single-schedule .actions .remove-schedule",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.schedule.remove.process",e(this).parents(".single-schedule").first())}),wp.hooks.addAction("advanced-cron-manager.schedule.add","bracketspace/acm/schedule-add",function(a){advanced_cron_manager.slidebar.open(),advanced_cron_manager.slidebar.wait();var n={action:"acm/schedule/add/form",nonce:a.data("nonce")};e.post(ajaxurl,n,function(e){advanced_cron_manager.slidebar.fulfill(e.data)})}),wp.hooks.addAction("advanced-cron-manager.schedule.add.process","bracketspace/acm/schedule-add-process",function(a){advanced_cron_manager.slidebar.form_process_start();var n={action:"acm/schedule/insert",nonce:a.find("#nonce").val(),data:a.serialize()};e.post(ajaxurl,n,function(e){advanced_cron_manager.ajax_messages(e),1==e.success?wp.hooks.doAction("advanced-cron-manager.schedule.added",a.find("#schedule-slug").val()):advanced_cron_manager.slidebar.form_process_stop()})}),wp.hooks.addAction("advanced-cron-manager.schedule.edit","bracketspace/acm/schedule-edit",function(a){event.preventDefault();var n=a.find(".actions .edit-schedule"),c=n.data("schedule");advanced_cron_manager.slidebar.open(),advanced_cron_manager.slidebar.wait();var t={action:"acm/schedule/edit/form",nonce:n.data("nonce"),schedule:c};e.post(ajaxurl,t,function(e){advanced_cron_manager.slidebar.fulfill(e.data)})}),wp.hooks.addAction("advanced-cron-manager.schedule.edit.process","bracketspace/acm/schedule-edit-process",function(a){advanced_cron_manager.slidebar.form_process_start();var n={action:"acm/schedule/edit",nonce:a.find("#nonce").val(),data:a.serialize()};e.post(ajaxurl,n,function(e){advanced_cron_manager.ajax_messages(e),1==e.success?wp.hooks.doAction("advanced-cron-manager.schedule.edited",a.find("#schedule-slug").val()):advanced_cron_manager.slidebar.form_process_stop()})}),wp.hooks.addAction("advanced-cron-manager.schedule.remove.process","bracketspace/acm/schedule-remove-process",function(a){var n=a.find(".actions .remove-schedule");n.addClass("working");var c=n.data("schedule"),t={action:"acm/schedule/remove",nonce:n.data("nonce"),schedule:c};e.post(ajaxurl,t,function(e){advanced_cron_manager.ajax_messages(e),1==e.success?(a.slideUp(),wp.hooks.doAction("advanced-cron-manager.schedule.removed",c)):n.removeClass("working")})});var a=function(){e("#schedules").addClass("loading"),e.post(ajaxurl,{action:"acm/rerender/schedules"},function(a){e("#schedules").replaceWith(a.data),advanced_cron_manager.slidebar.form_process_stop(),advanced_cron_manager.slidebar.close()})};wp.hooks.addAction("advanced-cron-manager.schedule.added","bracketspace/acm/schedule-added",a),wp.hooks.addAction("advanced-cron-manager.schedule.edited","bracketspace/acm/schedule-edited",a),e(".slidebar").on("blur","#schedule-name",function(){var a=e(this).val();if(""==e(".slidebar #schedule-slug").val()){var n=a.trim().toLowerCase().replace(/ /g,"_");e(".slidebar #schedule-slug").val(n)}}),e(".slidebar").on("change","table .spinbox",function(){var a=0;e(".slidebar table .spinbox").each(function(){var n=e(this);if(n.hasClass("days"))var c=86400;else if(n.hasClass("hours"))var c=3600;else if(n.hasClass("minutes"))var c=60;else var c=1;a+=n.val()*c}),e(".slidebar .total-seconds span").text(a),e(".slidebar .interval-input").val(a)})}(jQuery),function(e){var a;e("#search").bind("input",function(){window.clearTimeout(a),a=window.setTimeout(function(){wp.hooks.doAction("advanced-cron-manager.events.search.triggered",e("#search").val())},400)}),wp.hooks.addAction("advanced-cron-manager.events.search.triggered","bracketspace/acm/events-search-triggered",function(a){e("#events .events .single-event.row").each(function(){var n=e(this);-1==n.find(".columns .event .event-name").text().toLowerCase().indexOf(a.toLowerCase())?n.hide():n.show()})}),wp.hooks.addAction("advanced-cron-manager.events.filter.schedule","bracketspace/acm/events-filter-schedule",function(){e("#search").val("")})}(jQuery),function(e){e("#server-settings-form").on("submit",function(a){a.preventDefault(),wp.hooks.doAction("advanced-cron-manager.server.settings.action",e(this))}),wp.hooks.addAction("advanced-cron-manager.server.settings.action","bracketspace/acm/server-settings-action",function(a){var n=a.find(".button-secondary").first(),c={action:"acm/server/settings/save",data:a.serialize(),nonce:n.data("nonce")},t=n.val();n.val(advanced_cron_manager.i18n.saving),n.attr("disabled",!0),e.post(ajaxurl,c,function(e){advanced_cron_manager.ajax_messages(e),n.val(t),n.attr("disabled",!1)})}),e("#server-settings-form").on("change",".master-setting input",function(){this.checked?e(this).parent().nextAll(".dependants").show():e(this).parent().nextAll(".dependants").hide()})}(jQuery),function(e){e(".tools_page_advanced-cron-manager").on("click","#events .details .tabs a",function(a){a.preventDefault();var n=e(this).data("section"),c=e(this).parents(".details").first();c.find(".tabs li.active").removeClass("active"),e(this).parent().addClass("active"),c.find(".content.active").removeClass("active"),c.find(".content."+n).addClass("active"),wp.hooks.doAction("advanced-cron-manager.event.details.tabs.changed",n)})}(jQuery); -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1vbi5qcyIsImJ1bGstYWN0aW9ucy5qcyIsImNvdW50ZXIuanMiLCJkZXRhaWxzLmpzIiwiZXZlbnQtYWN0aW9ucy5qcyIsImZpbHRlci5qcyIsInNjaGVkdWxlLWFjdGlvbnMuanMiLCJzZWFyY2guanMiLCJzZXJ2ZXItc2V0dGluZ3MuanMiLCJ0YWJzLmpzIl0sIm5hbWVzIjpbIkFDTV9TbGlkZWJhciIsInRoaXMiLCJjb250YWluZXIiLCJqUXVlcnkiLCJvdmVybGF5IiwiY2xvc2VfYnV0dG9uIiwiY2xpY2siLCJzbGlkZWJhciIsImV2ZW50IiwiZGF0YSIsImNsb3NlIiwib3BlbiIsImFuaW1hdGUiLCJtYXJnaW4tcmlnaHQiLCJmYWRlSW4iLCIkZm9ybSIsImZpbmQiLCJvdXRlcldpZHRoIiwiaHRtbCIsImZhZGVPdXQiLCJ3YWl0IiwiYWRkQ2xhc3MiLCJmdWxmaWxsIiwicmVtb3ZlQ2xhc3MiLCJmb3JtX3Byb2Nlc3Nfc3RhcnQiLCJhdHRyIiwiY3NzIiwiZm9ybV9wcm9jZXNzX3N0b3AiLCIkIiwiZ2V0X2FsbF9jaGVja2JveGVzIiwiY2hlY2tlZCIsImFwcGVuZGl4IiwiY2xlYXJfYWxsX2NoZWNrYm94ZXMiLCJwcm9wIiwiJGNiX2FsbCIsIm9uIiwicHJldmVudERlZmF1bHQiLCIkYXBwbHlfYnV0dG9uIiwiJHNlbGVjdF9pbnB1dCIsInByZXYiLCJhY3Rpb24iLCJ2YWwiLCJlYWNoIiwiJGNoZWNrYm94IiwiJGFjdGlvbl9idXR0b24iLCJwYXJlbnRzIiwiZmlyc3QiLCJ0cmlnZ2VyIiwibGVuZ3RoIiwid3AiLCJob29rcyIsImFkZEFjdGlvbiIsImFkdmFuY2VkX2Nyb25fbWFuYWdlciIsIm5vdGlmeSIsIm5vdGlmaWNhdGlvbiIsImljb24iLCJNYXRlcmlhbGl6ZSIsInRvYXN0IiwiYWpheF9tZXNzYWdlcyIsInJlc3BvbnNlIiwic3VjY2VzcyIsIm51bWJlciIsImVycm9yIiwiY291bnRfZXZlbnRzIiwibnVtYmVyX29mX2V2ZW50cyIsInRleHQiLCJpMThuIiwiZXZlbnRzIiwidG9nZ2xlX3Jvd19mb2xkIiwiJGxpbmsiLCIkcm93IiwidG9nZ2xlQ2xhc3MiLCJoYXNDbGFzcyIsImRvQWN0aW9uIiwiJGJ1dHRvbiIsIm5vbmNlIiwicG9zdCIsImFqYXh1cmwiLCJzZXJpYWxpemUiLCIkZXZlbnRfcm93IiwiZXhlY3V0ZWRfd2l0aF9lcnJvcnMiLCJldmVudF9oYXNoIiwicmVwbGFjZVdpdGgiLCJyZW1vdmluZyIsInNsaWRlVXAiLCJwYXVzaW5nIiwiZXZlbnRzX3RhYmxlX3JlcmVuZGVyIiwiJGlucHV0IiwibmV4dCIsImFwcGVuZCIsInJlbW92ZSIsImtleUNvZGUiLCJibHVyIiwiRGF0ZSIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2NoZWR1bGUiLCJzaG93IiwiaGlkZSIsInNjaGVkdWxlX25hbWUiLCJzY2hlZHVsZXNfdGFibGVfcmVyZW5kZXIiLCJuYW1lIiwic2x1ZyIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJzZWNvbmRzIiwibXVsdGlwbGllciIsInRpbWVyIiwiYmluZCIsIndpbmRvdyIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJzZWFyY2hfd29yZCIsImluZGV4T2YiLCJidXR0b25fbGFiZWwiLCJzYXZpbmciLCJwYXJlbnQiLCJuZXh0QWxsIiwidGFyZ2V0IiwiJGRldGFpbHMiXSwibWFwcGluZ3MiOiJBQXdCQSxRQUFBQSxnQkFDQUMsS0FBQUMsVUFBQUMsT0FBQSxhQUNBRixLQUFBRyxRQUFBRCxPQUFBLHFCQUNBRixLQUFBSSxhQUFBRixPQUFBLG9CQUVBRixLQUFBSSxhQUFBQyxPQUFBQyxTQUFBTixNQUFBLFNBQUFPLEdBQ0FBLEVBQUFDLEtBQUFGLFNBQUFHLFVBR0FULEtBQUFHLFFBQUFFLE9BQUFDLFNBQUFOLE1BQUEsU0FBQU8sR0FDQUEsRUFBQUMsS0FBQUYsU0FBQUcsVUFHQVQsS0FBQVUsS0FBQSxXQUVBVixLQUFBQyxVQUFBVSxTQUNBQyxlQUFBLEdBQ0EsSUFBQSxpQkFF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RUFBQStELFlBQ0FILE1BQUFELEVBQUFqRSxLQUFBLFVBR0F5RyxFQUFBeEMsRUFBQWpDLEtBRUFpQyxHQUFBakMsSUFBQVcsc0JBQUFjLEtBQUFpRCxRQUNBekMsRUFBQWpELEtBQUEsWUFBQSxHQUVBRyxFQUFBZ0QsS0FBQUMsUUFBQXBFLEVBQUEsU0FBQWtELEdBRUFQLHNCQUFBTSxjQUFBQyxHQUVBZSxFQUFBakMsSUFBQXlFLEdBQ0F4QyxFQUFBakQsS0FBQSxZQUFBLE9BVUFHLEVBQUEseUJBQUFPLEdBQUEsU0FBQSx3QkFBQSxXQUVBbEMsS0FBQTZCLFFBQ0FGLEVBQUEzQixNQUFBbUgsU0FBQUMsUUFBQSxlQUFBckIsT0FFQXBFLEVBQUEzQixNQUFBbUgsU0FBQUMsUUFBQSxlQUFBcEIsVUFLQTlGLFFDekRBLFNBQUF5QixHQUVBQSxFQUFBLHFDQUFBTyxHQUFBLFFBQUEsMkJBQUEsU0FBQTNCLEdBRUFBLEVBQUE0QixnQkFFQSxJQUFBa0YsR0FBQTFGLEVBQUEzQixNQUFBUSxLQUFBLFdBRUE4RyxFQUFBM0YsRUFBQTNCLE1BQUE0QyxRQUFBLFlBQUFDLE9BRUF5RSxHQUFBdkcsS0FBQSxtQkFBQU8sWUFBQSxVQUNBSyxFQUFBM0IsTUFBQW1ILFNBQUEvRixTQUFBLFVBRUFrRyxFQUFBdkcsS0FBQSxtQkFBQU8sWUFBQSxVQUNBZ0csRUFBQXZHLEtBQUEsWUFBQXNHLEdBQUFqRyxTQUFBLFVBRUE0QixHQUFBQyxNQUFBdUIsU0FBQSxtREFBQTZDLE1BSUFuSCIsImZpbGUiOiJzY3JpcHRzLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImFkdmFuY2VkX2Nyb25fbWFuYWdlci5ub3RpZnkgPSBmdW5jdGlvbiggbm90aWZpY2F0aW9uLCBpY29uICkge1xyXG5cclxuXHRpZiAoIHR5cGVvZiBpY29uID09ICd1bmRlZmluZWQnICkge1xyXG5cdFx0aWNvbiA9ICcnO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRpY29uID0gJzxzcGFuIGNsYXNzPVwiZGFzaGljb25zIGRhc2hpY29ucy0nICsgaWNvbiArICdcIj48L3NwYW4+JztcclxuXHR9XHJcblxyXG5cdE1hdGVyaWFsaXplLnRvYXN0KCBpY29uICsgbm90aWZpY2F0aW9uLCA0MDAwICk7XHJcblxyXG59O1xyXG5cclxuYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMgPSBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblxyXG5cdGlmICggcmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlICkge1xyXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLm5vdGlmeSggcmVzcG9uc2UuZGF0YSwgJ3llcycgKTtcclxuXHR9IGVsc2Uge1xyXG5cdFx0alF1ZXJ5LmVhY2goIHJlc3BvbnNlLmRhdGEsIGZ1bmN0aW9uKCBudW1iZXIsIGVycm9yICkge1xyXG5cdFx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIubm90aWZ5KCBlcnJvciwgJ3dhcm5pbmcnICk7XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxufTtcclxuXHJcbmZ1bmN0aW9uIEFDTV9TbGlkZWJhcigpIHtcclxuXHR0aGlzLmNvbnRhaW5lciAgICA9IGpRdWVyeSggJy5zbGlkZWJhcicgKTtcclxuXHR0aGlzLm92ZXJsYXkgICAgICA9IGpRdWVyeSggJy5zbGlkZWJhci1vdmVybGF5JyApO1xyXG5cdHRoaXMuY2xvc2VfYnV0dG9uID0galF1ZXJ5KCAnLnNsaWRlYmFyIC5jbG9zZScgKTtcclxuXHJcblx0dGhpcy5jbG9zZV9idXR0b24uY2xpY2soIHsgc2xpZGViYXI6IHRoaXMgfSwgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cdFx0ZXZlbnQuZGF0YS5zbGlkZWJhci5jbG9zZSgpO1xyXG5cdH0gKTtcclxuXHJcblx0dGhpcy5vdmVybGF5LmNsaWNrKCB7IHNsaWRlYmFyOiB0aGlzIH0sIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHRcdGV2ZW50LmRhdGEuc2xpZGViYXIuY2xvc2UoKTtcclxuXHR9ICk7XHJcblxyXG5cdHRoaXMub3BlbiA9IGZ1bmN0aW9uKCkge1xyXG5cclxuXHRcdHRoaXMuY29udGFpbmVyLmFuaW1hdGUoIHtcclxuXHRcdFx0J21hcmdpbi1yaWdodCc6IDBcclxuXHRcdH0sIDQwMCwgJ2Vhc2VJbk91dFNpbmUnICk7XHJcblxyXG5cdFx0dGhpcy5vdmVybGF5LmZhZGVJbiggNDAwICk7XHJcblxyXG5cdH07XHJcblxyXG5cdHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHtcclxuXHJcblx0XHR2YXIgJGZvcm0gPSB0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQgLmZvcm0nICk7XHJcblxyXG5cdFx0dGhpcy5jb250YWluZXIuYW5pbWF0ZSgge1xyXG5cdFx0XHQnbWFyZ2luLXJpZ2h0JzogJy0nICsgKCB0aGlzLmNvbnRhaW5lci5vdXRlcldpZHRoKCkgKyA1IClcclxuXHRcdH0sIDQwMCwgJ2Vhc2VJbk91dFNpbmUnLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdCRmb3JtLmh0bWwoICcnICk7XHJcblx0XHR9ICk7XHJcblxyXG5cdFx0dGhpcy5vdmVybGF5LmZhZGVPdXQoIDQwMCApO1xyXG5cclxuXHR9O1xyXG5cclxuXHR0aGlzLndhaXQgPSBmdW5jdGlvbigpIHtcclxuXHRcdHRoaXMuY29udGFpbmVyLmZpbmQoICcuY29udGVudCcgKS5hZGRDbGFzcyggJ2xvYWRpbmcnICk7XHJcblx0fTtcclxuXHJcblx0dGhpcy5mdWxmaWxsID0gZnVuY3Rpb24oIGh0bWwgKSB7XHJcblx0XHR0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQgLmZvcm0nICkuaHRtbCggaHRtbCApO1xyXG5cdFx0dGhpcy5jb250YWluZXIuZmluZCggJy5jb250ZW50JyApLnJlbW92ZUNsYXNzKCAnbG9hZGluZycgKTtcclxuXHR9O1xyXG5cclxuXHR0aGlzLmZvcm1fcHJvY2Vzc19zdGFydCA9IGZ1bmN0aW9uKCBodG1sICkge1xyXG5cdFx0dGhpcy5jb250YWluZXIuZmluZCggJy5jb250ZW50IC5zZW5kLWZvcm0nICkuYXR0ciggJ2Rpc2FibGVkJywgdHJ1ZSApO1xyXG5cdFx0dGhpcy5jb250YWluZXIuZmluZCggJy5jb250ZW50IC5zcGlubmVyJyApLmNzcyggJ3Zpc2liaWxpdHknLCAndmlzaWJsZScgKTtcclxuXHR9O1xyXG5cclxuXHR0aGlzLmZvcm1fcHJvY2Vzc19zdG9wID0gZnVuY3Rpb24oIGh0bWwgKSB7XHJcblx0XHR0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQgLnNlbmQtZm9ybScgKS5hdHRyKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xyXG5cdFx0dGhpcy5jb250YWluZXIuZmluZCggJy5jb250ZW50IC5zcGlubmVyJyApLmNzcyggJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyApO1xyXG5cdH07XHJcblxyXG59O1xyXG5cclxuYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyID0gbmV3IEFDTV9TbGlkZWJhcjtcclxuIiwiKCBmdW5jdGlvbiggJCApIHtcblxuXHQvLy8vLy8vLy8vLy9cblx0Ly8gQWN0aW9uIC8vXG5cdC8vLy8vLy8vLy8vL1xuXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcudGFibGVuYXYgLmFjdGlvbicsIGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHR2YXIgJGFwcGx5X2J1dHRvbiA9ICQoIHRoaXMgKTtcblx0XHR2YXIgJHNlbGVjdF9pbnB1dCA9ICQoIHRoaXMgKS5wcmV2KCAnc2VsZWN0JyApO1xuXHRcdHZhciBhY3Rpb24gICAgICAgID0gJHNlbGVjdF9pbnB1dC52YWwoKTtcblxuXHRcdGlmICggYWN0aW9uICE9ICctMScgKSB7XG5cblx0XHRcdCRhcHBseV9idXR0b24uYXR0ciggJ2Rpc2FibGVkJywgdHJ1ZSApO1xuXG5cdFx0XHRnZXRfYWxsX2NoZWNrYm94ZXMoIHRydWUgKS5lYWNoKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHR2YXIgJGNoZWNrYm94ICAgICAgPSAkKCB0aGlzICk7XG5cdFx0XHRcdHZhciAkYWN0aW9uX2J1dHRvbiA9ICRjaGVja2JveC5wYXJlbnRzKCAnLnNpbmdsZS1ldmVudC5yb3cnICkuZmlyc3QoKS5maW5kKCAnYS4nICsgYWN0aW9uICsgJy1ldmVudCcgKTtcblxuXHRcdFx0XHRpZiAoICRhY3Rpb25fYnV0dG9uICkge1xuXHRcdFx0XHRcdCRhY3Rpb25fYnV0dG9uLnRyaWdnZXIoICdjbGljaycgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCRjaGVja2JveC5hdHRyKCAnY2hlY2tlZCcsIGZhbHNlICk7XG5cblx0XHRcdH0gKTtcblxuXHRcdFx0JGFwcGx5X2J1dHRvbi5hdHRyKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXHRcdFx0JHNlbGVjdF9pbnB1dC52YWwoICctMScgKTtcblxuXHRcdH1cblxuXHR9ICk7XG5cblx0Ly8vLy8vLy8vLy8vLy8vL1xuXHQvLyBDaGVja2JveGVzIC8vXG5cdC8vLy8vLy8vLy8vLy8vLy9cblxuXHR2YXIgJGNiX2FsbCAgICA9ICQoICcuc2luZ2xlLWV2ZW50LmhlYWRlciAuc2VsZWN0LWFsbCcgKSxcblx0XHRjYl9jaGVja2VkID0gW107XG5cblx0ZnVuY3Rpb24gZ2V0X2FsbF9jaGVja2JveGVzKCBjaGVja2VkICkge1xuXG5cdFx0Y2hlY2tlZCA9IHR5cGVvZiBjaGVja2VkICE9PSAndW5kZWZpbmVkJyA/IGNoZWNrZWQgOiBmYWxzZTtcblxuXHRcdGlmICggY2hlY2tlZCApIHtcblx0XHRcdHZhciBhcHBlbmRpeCA9ICc6Y2hlY2tlZCc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhciBhcHBlbmRpeCA9ICcnO1xuXHRcdH1cblxuXHRcdHJldHVybiAkKCAnI2V2ZW50cyAuZXZlbnRzIC5zaW5nbGUtZXZlbnQucm93OnZpc2libGUgLmNiIGlucHV0OmNoZWNrYm94JyArIGFwcGVuZGl4ICk7XG5cblx0fVxuXG5cdGZ1bmN0aW9uIGNsZWFyX2FsbF9jaGVja2JveGVzKCkge1xuXHRcdGdldF9hbGxfY2hlY2tib3hlcygpLnByb3AoICdjaGVja2VkJywgZmFsc2UgKTtcblx0XHQkY2JfYWxsLnByb3AoICdjaGVja2VkJywgZmFsc2UgKTtcblx0fVxuXG5cdC8vIGNoYW5nZSBhbGwgcm93cyBpZiBwYXJlbnQgY2hlY2tib3hlcyBoYXMgYmVlbiBjaGFuZ2VkXG5cdCRjYl9hbGwub24oICdjaGFuZ2UnLCBmdW5jdGlvbigpIHtcblx0XHRnZXRfYWxsX2NoZWNrYm94ZXMoKS5wcm9wKCAnY2hlY2tlZCcsIHRoaXMuY2hlY2tlZCApO1xuXHRcdCRjYl9hbGwucHJvcCggJ2NoZWNrZWQnLCB0aGlzLmNoZWNrZWQgKTtcblx0fSk7XG5cblx0Ly8gY2hlY2sgaWYgcGFyZW50IGNoZWNrYm94ZXMgc2hvdWxkIGJlIGNoYW5nZWQgd2hlbiBjaGFuZ2luZyByb3cgY2hlY2tib3hlc1xuXHRnZXRfYWxsX2NoZWNrYm94ZXMoKS5vbiggJ2NoYW5nZScsIGZ1bmN0aW9uKCkge1xuXHRcdCRjYl9hbGwucHJvcCggJ2NoZWNrZWQnLCAoIGdldF9hbGxfY2hlY2tib3hlcyggdHJ1ZSApLmxlbmd0aCA9PSBnZXRfYWxsX2NoZWNrYm94ZXMoKS5sZW5ndGggKSApO1xuXHR9ICk7XG5cblx0Ly8gY2xlYXIgYWxsIGNoZWNrYm94ZXMgb24gc2VhcmNoXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudHMuc2VhcmNoLnRyaWdnZXJlZCcsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50cy1zZWFyY2gtdHJpZ2dlcmVkJywgY2xlYXJfYWxsX2NoZWNrYm94ZXMgKTtcblxuXHQvLyBjbGVhciBhbGwgY2hlY2tib3hlcyBvbiBmaWx0ZXJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50cy5maWx0ZXIuc2NoZWR1bGUnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudHMtZmlsdGVyLXNjaGVkdWxlJywgY2xlYXJfYWxsX2NoZWNrYm94ZXMgKTtcblxufSApKCBqUXVlcnkgKTtcbiIsIiggZnVuY3Rpb24oICQgKSB7XG5cblx0ZnVuY3Rpb24gY291bnRfZXZlbnRzKCkge1xuXHRcdHZhciBudW1iZXJfb2ZfZXZlbnRzID0gJCggJyNldmVudHMgLmV2ZW50cyAuc2luZ2xlLWV2ZW50LnJvdzp2aXNpYmxlJyApLmxlbmd0aDtcblx0XHQkKCAnI2V2ZW50cyAudGFibGVuYXYgLnRhYmxlbmF2LXBhZ2VzIC5kaXNwbGF5aW5nLW51bScgKS50ZXh0KCBudW1iZXJfb2ZfZXZlbnRzICsgJyAnICsgYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmkxOG4uZXZlbnRzICk7XG5cdH1cblxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLmZpbHRlci5zY2hlZHVsZScsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50cy1maWx0ZXItc2NoZWR1bGUnLCBjb3VudF9ldmVudHMsIDEwMCApO1xuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLnNlYXJjaC50cmlnZ2VyZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudHMtc2VhcmNoLXRyaWdnZXJlZCcsIGNvdW50X2V2ZW50cywgMTAwICk7XG5cbn0gKSggalF1ZXJ5ICk7XG4iLCIoIGZ1bmN0aW9uKCAkICkge1xuXG5cdHZhciB0b2dnbGVfcm93X2ZvbGQgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0JGxpbmsgPSAkKCB0aGlzICk7XG5cdFx0JHJvdyAgPSAkbGluay5wYXJlbnRzKCAnLnNpbmdsZS1ldmVudCcgKS5maXJzdCgpO1xuXG5cdFx0JHJvdy50b2dnbGVDbGFzcyggJ3VuZm9sZGVkJyApO1xuXG5cdFx0aWYgKCAkcm93Lmhhc0NsYXNzKCAndW5mb2xkZWQnICkgKSB7XG5cdFx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5kZXRhaWxzLnVuZm9sZGVkJywgJHJvdyApO1xuXHRcdH1cblxuXHR9O1xuXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjZXZlbnRzIC5jb2x1bW5zIC5ldmVudCAucm93LWFjdGlvbnMgLmRldGFpbHMgYScsIHRvZ2dsZV9yb3dfZm9sZCApO1xuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnI2V2ZW50cyAuY29sdW1ucyAuZXZlbnQgLmV2ZW50LW5hbWUnLCB0b2dnbGVfcm93X2ZvbGQgKTtcblxufSApKCBqUXVlcnkgKTtcbiIsIiggZnVuY3Rpb24oICQgKSB7XG5cblx0Ly8vLy8vLy8vLy8vLy8vLy8vL1xuXHQvLyBGb3JtIHJlcXVlc3RzIC8vXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy9cblxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnLmFkZC1ldmVudCcsIGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkJywgJCh0aGlzKSApO1xuXG5cdH0gKTtcblxuXHQvLy8vLy8vLy8vLy8vLy8vLy8vLy9cblx0Ly8gRm9ybSBwcm9jZXNzaW5nIC8vXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5cdCQoICcuc2xpZGViYXInICkub24oICdzdWJtaXQnLCAnLmV2ZW50LWFkZCcsIGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkLnByb2Nlc3MnLCAkKHRoaXMpICk7XG5cblx0fSApO1xuXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjZXZlbnRzIC5ydW4tZXZlbnQnLCBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnJ1bi5wcm9jZXNzJywgJCh0aGlzKSApO1xuXG5cdH0gKTtcblxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnI2V2ZW50cyAucmVtb3ZlLWV2ZW50JywgZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5yZW1vdmUucHJvY2VzcycsICQodGhpcykgKTtcblxuXHR9ICk7XG5cblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJyNldmVudHMgLnBhdXNlLWV2ZW50JywgZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5wYXVzZS5wcm9jZXNzJywgJCh0aGlzKSApO1xuXG5cdH0gKTtcblxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnI2V2ZW50cyAudW5wYXVzZS1ldmVudCcsIGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQudW5wYXVzZS5wcm9jZXNzJywgJCh0aGlzKSApO1xuXG5cdH0gKTtcblxuXHQvLy8vLy8vLy8vLy8vXG5cdC8vIEFjdGlvbnMgLy9cblx0Ly8vLy8vLy8vLy8vL1xuXG5cdC8vIGFkZFxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtYWRkJywgZnVuY3Rpb24oICRidXR0b24gKSB7XG5cblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIub3BlbigpO1xuXHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci53YWl0KCk7XG5cblx0XHR2YXIgZGF0YSA9IHtcblx0ICAgICAgICAnYWN0aW9uJzogJ2FjbS9ldmVudC9hZGQvZm9ybScsXG5cdCAgICAgICAgJ25vbmNlJyA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApXG5cdCAgICB9O1xuXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcblx0ICAgICAgICBhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZnVsZmlsbCggcmVzcG9uc2UuZGF0YSApO1xuXHQgICAgfSApO1xuXG5cdH0gKTtcblxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1hZGQtcHJvY2VzcycsIGZ1bmN0aW9uKCAkZm9ybSApIHtcblxuXHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5mb3JtX3Byb2Nlc3Nfc3RhcnQoKTtcblxuXHRcdHZhciBkYXRhID0ge1xuXHQgICAgICAgICdhY3Rpb24nOiAnYWNtL2V2ZW50L2luc2VydCcsXG5cdCAgICAgICAgJ25vbmNlJyA6ICRmb3JtLmZpbmQoICcjbm9uY2UnICkudmFsKCksXG5cdCAgICAgICAgJ2RhdGEnICA6ICRmb3JtLnNlcmlhbGl6ZSgpXG5cdCAgICB9O1xuXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcblxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcblxuXHQgICAgICAgIGlmICggcmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlICkge1xuXHQgICAgICAgIFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkZWQnLCAkZm9ybS5maW5kKCAnI2V2ZW50LWhvb2snICkudmFsKCkgKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmZvcm1fcHJvY2Vzc19zdG9wKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICB9ICk7XG5cblx0fSApO1xuXG5cdC8vIHJ1blxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucnVuLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1ydW4tcHJvY2VzcycsIGZ1bmN0aW9uKCAkYnV0dG9uICkge1xuXG5cdFx0aWYgKCAkYnV0dG9uLmhhc0NsYXNzKCAnYnVzeScgKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHR2YXIgJGV2ZW50X3JvdyA9ICRidXR0b24ucGFyZW50cyggJy5zaW5nbGUtZXZlbnQucm93JyApLmZpcnN0KCk7XG5cblx0XHQkZXZlbnRfcm93LmFkZENsYXNzKCAncnVubmluZycgKTtcblx0XHQkYnV0dG9uLmFkZENsYXNzKCAnYnVzeScgKTtcblxuXHRcdHZhciBkYXRhID0ge1xuXHQgICAgICAgICdhY3Rpb24nOiAnYWNtL2V2ZW50L3J1bicsXG5cdCAgICAgICAgJ25vbmNlJyA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApLFxuXHQgICAgICAgICdldmVudCcgOiAkYnV0dG9uLmRhdGEoICdldmVudCcgKVxuXHQgICAgfTtcblxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCBkYXRhLCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XG5cblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XG5cblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcbiAgICAgICAgXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LmV4ZWN1dGVkJywgJGJ1dHRvbi5kYXRhKCAnZXZlbnQnICksICRldmVudF9yb3cgKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAkZXZlbnRfcm93LnJlbW92ZUNsYXNzKCAncnVubmluZycgKTtcblx0ICAgICAgICAkYnV0dG9uLnJlbW92ZUNsYXNzKCAnYnVzeScgKTtcblxuXHQgICAgfSApLmVycm9yKCBmdW5jdGlvbigpIHtcblxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIubm90aWZ5KCBhZHZhbmNlZF9jcm9uX21hbmFnZXIuaTE4bi5leGVjdXRlZF93aXRoX2Vycm9ycywgJ3dhcm5pbmcnICk7XG5cblx0ICAgIFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuZXhlY3V0ZWQnLCAkYnV0dG9uLmRhdGEoICdldmVudCcgKSwgJGV2ZW50X3JvdyApO1xuXG5cdCAgICBcdCRldmVudF9yb3cucmVtb3ZlQ2xhc3MoICdydW5uaW5nJyApO1xuXHQgICAgICAgICRidXR0b24ucmVtb3ZlQ2xhc3MoICdidXN5JyApO1xuXG5cdCAgICB9ICk7XG5cblx0fSApO1xuXG5cdC8vIHJlbW92ZVxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucmVtb3ZlLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1yZW1vdmUtcHJvY2VzcycsIGZ1bmN0aW9uKCAkYnV0dG9uICkge1xuXG5cdFx0dmFyICRldmVudF9yb3cgPSAkYnV0dG9uLnBhcmVudHMoICcuc2luZ2xlLWV2ZW50LnJvdycgKS5maXJzdCgpO1xuXHRcdHZhciBldmVudF9oYXNoID0gJGJ1dHRvbi5kYXRhKCAnZXZlbnQnICk7XG5cblx0XHQkYnV0dG9uLnJlcGxhY2VXaXRoKCBhZHZhbmNlZF9jcm9uX21hbmFnZXIuaTE4bi5yZW1vdmluZyApO1xuXG5cdFx0JGV2ZW50X3Jvdy5hZGRDbGFzcyggJ3JlbW92aW5nJyApO1xuXG5cdFx0dmFyIGRhdGEgPSB7XG5cdCAgICAgICAgJ2FjdGlvbic6ICdhY20vZXZlbnQvcmVtb3ZlJyxcblx0ICAgICAgICAnbm9uY2UnIDogJGJ1dHRvbi5kYXRhKCAnbm9uY2UnICksXG5cdCAgICAgICAgJ2V2ZW50JyA6IGV2ZW50X2hhc2hcblx0ICAgIH07XG5cblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xuXG5cdCAgICBcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5hamF4X21lc3NhZ2VzKCByZXNwb25zZSApO1xuXG5cdCAgICAgICAgaWYgKCByZXNwb25zZS5zdWNjZXNzID09IHRydWUgKSB7XG5cdCAgICAgICAgXHQkZXZlbnRfcm93LnNsaWRlVXAoKTtcbiAgICAgICAgXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnJlbW92ZWQnLCBldmVudF9oYXNoLCAkZXZlbnRfcm93ICk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgJGV2ZW50X3Jvdy5yZW1vdmVDbGFzcyggJ3JlbW92aW5nJyApO1xuXG5cdCAgICB9ICk7XG5cblx0fSApO1xuXG5cdC8vIHBhdXNlXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5wYXVzZS5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtcGF1c2UtcHJvY2VzcycsIGZ1bmN0aW9uKCAkYnV0dG9uICkge1xuXG5cdFx0dmFyICRldmVudF9yb3cgPSAkYnV0dG9uLnBhcmVudHMoICcuc2luZ2xlLWV2ZW50LnJvdycgKS5maXJzdCgpO1xuXHRcdHZhciBldmVudF9oYXNoID0gJGJ1dHRvbi5kYXRhKCAnZXZlbnQnICk7XG5cblx0XHQkYnV0dG9uLnJlcGxhY2VXaXRoKCBhZHZhbmNlZF9jcm9uX21hbmFnZXIuaTE4bi5wYXVzaW5nICk7XG5cblx0XHQkZXZlbnRfcm93LmFkZENsYXNzKCAncmVtb3ZpbmcnICk7XG5cblx0XHR2YXIgZGF0YSA9IHtcblx0ICAgICAgICAnYWN0aW9uJzogJ2FjbS9ldmVudC9wYXVzZScsXG5cdCAgICAgICAgJ25vbmNlJyA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApLFxuXHQgICAgICAgICdldmVudCcgOiBldmVudF9oYXNoXG5cdCAgICB9O1xuXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcblxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcblxuXHQgICAgICAgIGlmICggcmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlICkge1xuICAgICAgICBcdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucGF1c2VkJywgZXZlbnRfaGFzaCwgJGV2ZW50X3JvdyApO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgICRldmVudF9yb3cucmVtb3ZlQ2xhc3MoICdyZW1vdmluZycgKTtcblxuXHQgICAgfSApO1xuXG5cdH0gKTtcblxuXHQvLyB1bnBhdXNlXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC51bnBhdXNlLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC11bnBhdXNlLXByb2Nlc3MnLCBmdW5jdGlvbiggJGJ1dHRvbiApIHtcblxuXHRcdHZhciAkZXZlbnRfcm93ID0gJGJ1dHRvbi5wYXJlbnRzKCAnLnNpbmdsZS1ldmVudC5yb3cnICkuZmlyc3QoKTtcblx0XHR2YXIgZXZlbnRfaGFzaCA9ICRidXR0b24uZGF0YSggJ2V2ZW50JyApO1xuXG5cdFx0JGJ1dHRvbi5yZXBsYWNlV2l0aCggYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmkxOG4ucGF1c2luZyApO1xuXG5cdFx0JGV2ZW50X3Jvdy5hZGRDbGFzcyggJ3JlbW92aW5nJyApO1xuXG5cdFx0dmFyIGRhdGEgPSB7XG5cdCAgICAgICAgJ2FjdGlvbic6ICdhY20vZXZlbnQvdW5wYXVzZScsXG5cdCAgICAgICAgJ25vbmNlJyA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApLFxuXHQgICAgICAgICdldmVudCcgOiBldmVudF9oYXNoXG5cdCAgICB9O1xuXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcblxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcblxuXHQgICAgICAgIGlmICggcmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlICkge1xuICAgICAgICBcdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQudW5wYXVzZWQnLCBldmVudF9oYXNoLCAkZXZlbnRfcm93ICk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgJGV2ZW50X3Jvdy5yZW1vdmVDbGFzcyggJ3JlbW92aW5nJyApO1xuXG5cdCAgICB9ICk7XG5cblx0fSApO1xuXG5cdC8vIHJlZnJlc2ggdGFibGUgYW5kIGNsb3NlIHNsaWRlYmFyXG5cdHZhciBldmVudHNfdGFibGVfcmVyZW5kZXIgPSBmdW5jdGlvbigpIHtcblxuXHRcdCQoICcjZXZlbnRzJyApLmFkZENsYXNzKCAnbG9hZGluZycgKTtcblxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCB7ICdhY3Rpb24nOiAnYWNtL3JlcmVuZGVyL2V2ZW50cycgfSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xuXHQgICAgXHQkKCAnI2V2ZW50cycgKS5yZXBsYWNlV2l0aCggcmVzcG9uc2UuZGF0YSApO1xuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0b3AoKTtcblx0XHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5jbG9zZSgpO1xuXHQgICAgfSApO1xuXG5cdH07XG5cblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LmFkZGVkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtYWRkZWQnLCBldmVudHNfdGFibGVfcmVyZW5kZXIgKTtcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnBhdXNlZCcsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50LXBhdXNlZCcsIGV2ZW50c190YWJsZV9yZXJlbmRlciApO1xuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQudW5wYXVzZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC11bnBhdXNlZCcsIGV2ZW50c190YWJsZV9yZXJlbmRlciApO1xuXG5cdC8vLy8vLy8vLy8vLy9cblx0Ly8gSGVscGVycyAvL1xuXHQvLy8vLy8vLy8vLy8vXG5cblx0JCggJy5zbGlkZWJhcicgKS5vbiggJ2JsdXInLCAnLmV2ZW50LWFyZ3VtZW50cyAuZXZlbnQtYXJndW1lbnQnLCBmdW5jdGlvbigpIHtcblxuXHRcdHZhciAkaW5wdXQgPSAkKCB0aGlzICk7XG5cblx0XHQvLyBhZGQgbmV3IGFyZ1xuXHRcdGlmICggJGlucHV0Lm5leHQoICcuZXZlbnQtYXJndW1lbnQnICkubGVuZ3RoID09IDAgJiYgJGlucHV0LnZhbCgpLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHQkKCAnLnNsaWRlYmFyIC5ldmVudC1hcmd1bWVudHMnICkuYXBwZW5kKCAnPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFyZ3VtZW50c1tdXCIgY2xhc3M9XCJldmVudC1hcmd1bWVudCB3aWRlZmF0XCI+JyApO1xuXHRcdH1cblxuXHRcdC8vIHJlbW92ZSBlbXB0eSBhcmdcblx0XHRpZiAoICRpbnB1dC52YWwoKS5sZW5ndGggPT0gMCAmJiAkKCAnLnNsaWRlYmFyIC5ldmVudC1hcmd1bWVudHMgLmV2ZW50LWFyZ3VtZW50JyApLmxlbmd0aCA+IDEgKSB7XG5cdFx0XHQkaW5wdXQucmVtb3ZlKCk7XG5cdFx0fVxuXG5cdH0gKTtcblxuXHQkKCAnLnNsaWRlYmFyJyApLm9uKCAna2V5dXAnLCAnLmV2ZW50LWFyZ3VtZW50cyAuZXZlbnQtYXJndW1lbnQnLCBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHR2YXIgJGlucHV0ID0gJCggdGhpcyApO1xuXG5cdFx0aWYgKCBldmVudC5rZXlDb2RlID09IDggJiYgJGlucHV0LnZhbCgpLmxlbmd0aCA9PSAwICYmICQoICcuc2xpZGViYXIgLmV2ZW50LWFyZ3VtZW50cyAuZXZlbnQtYXJndW1lbnQnICkubGVuZ3RoID4gMSAgKSB7XG5cdFx0XHQkaW5wdXQuYmx1cigpO1xuXHRcdH1cblxuXHR9ICk7XG5cblx0Ly8gYWRkIHVzZXIgdGltZXpvbmUgb2Zmc2V0XG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5hZGQucHJvY2VzcycsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50LWFkZC1wcm9jZXNzJywgZnVuY3Rpb24oICRmb3JtICkge1xuXHRcdCRmb3JtLmZpbmQoICcjZXZlbnQtb2Zmc2V0JyApLnZhbCggbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpIC8gNjAgKTtcblx0fSwgNSApO1xuXG59ICkoIGpRdWVyeSApO1xuIiwiKCBmdW5jdGlvbiggJCApIHtcblxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2hhbmdlJywgJyNldmVudHMgLnRhYmxlbmF2IC5zY2hlZHVsZXMtZmlsdGVyJywgZnVuY3Rpb24oKSB7XG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLmZpbHRlci5zY2hlZHVsZScsICQoIHRoaXMgKS52YWwoKSApO1xuXHR9ICk7XG5cblx0Ly8gZmlsdGVyIHRoZSBldmVudHMgbGlzdCB3aXRoIHNjaGVkdWxlXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudHMuZmlsdGVyLnNjaGVkdWxlJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnRzLWZpbHRlci1zY2hlZHVsZScsIGZ1bmN0aW9uKCBzY2hlZHVsZSApIHtcblxuXHRcdCQoICcjZXZlbnRzIC5ldmVudHMgLnNpbmdsZS1ldmVudC5yb3cnICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdHZhciAkcm93ID0gJCggdGhpcyApO1xuXHRcdFx0dmFyIGV2ZW50X3NjaGVkdWxlID0gJHJvdy5kYXRhKCAnc2NoZWR1bGUnICk7XG5cblx0XHRcdGlmICggZXZlbnRfc2NoZWR1bGUgPT0gc2NoZWR1bGUgfHwgc2NoZWR1bGUgPT0gJycgKSB7XG5cdFx0XHRcdCRyb3cuc2hvdygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JHJvdy5oaWRlKCk7XG5cdFx0XHR9XG5cblx0XHR9ICk7XG5cblx0fSApO1xuXG5cdC8vIGNsZWFyIGZpbHRlcnMgd2hpbGUgdXNpbmcgc2VhcmNoXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudHMuc2VhcmNoLnRyaWdnZXJlZCcsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50cy1zZWFyY2gtdHJpZ2dlcmVkJywgZnVuY3Rpb24oKSB7XG5cdFx0JCggJyNldmVudHMgLnRhYmxlbmF2IC5zY2hlZHVsZXMtZmlsdGVyJyApLnZhbCggJycgKTtcblx0fSApO1xuXG59ICkoIGpRdWVyeSApO1xuIiwiKCBmdW5jdGlvbiggJCApIHtcblxuXHQvLy8vLy8vLy8vLy8vLy8vLy8vXG5cdC8vIGZvcm0gcmVxdWVzdHMgLy9cblx0Ly8vLy8vLy8vLy8vLy8vLy8vL1xuXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcuYWRkLXNjaGVkdWxlJywgZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zY2hlZHVsZS5hZGQnLCAkKHRoaXMpICk7XG5cblx0fSApO1xuXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjc2NoZWR1bGVzIC5zaW5nbGUtc2NoZWR1bGUgLmFjdGlvbnMgLmVkaXQtc2NoZWR1bGUnLCBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmVkaXQnLCAkKHRoaXMpLnBhcmVudHMoICcuc2luZ2xlLXNjaGVkdWxlJyApLmZpcnN0KCkgKTtcblxuXHR9ICk7XG5cblx0Ly8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cdC8vIEZvcm0gcHJvY2Vzc2luZyAvL1xuXHQvLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuXHQkKCAnLnNsaWRlYmFyJyApLm9uKCAnc3VibWl0JywgJy5zY2hlZHVsZS1hZGQnLCBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZC5wcm9jZXNzJywgJCh0aGlzKSApO1xuXG5cdH0gKTtcblxuXHQkKCAnLnNsaWRlYmFyJyApLm9uKCAnc3VibWl0JywgJy5zY2hlZHVsZS1lZGl0JywgZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zY2hlZHVsZS5lZGl0LnByb2Nlc3MnLCAkKHRoaXMpICk7XG5cblx0fSApO1xuXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjc2NoZWR1bGVzIC5zaW5nbGUtc2NoZWR1bGUgLmFjdGlvbnMgLnJlbW92ZS1zY2hlZHVsZScsIGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUucmVtb3ZlLnByb2Nlc3MnLCAkKHRoaXMpLnBhcmVudHMoICcuc2luZ2xlLXNjaGVkdWxlJyApLmZpcnN0KCkgKTtcblxuXHR9ICk7XG5cblx0Ly8vLy8vLy8vLy8vL1xuXHQvLyBBY3Rpb25zIC8vXG5cdC8vLy8vLy8vLy8vLy9cblxuXHQvLyBhZGQgc2NoZWR1bGVcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZCcsICdicmFja2V0c3BhY2UvYWNtL3NjaGVkdWxlLWFkZCcsIGZ1bmN0aW9uKCAkYnV0dG9uICkge1xuXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLm9wZW4oKTtcblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIud2FpdCgpO1xuXG5cdFx0dmFyIGRhdGEgPSB7XG5cdCAgICAgICAgJ2FjdGlvbic6ICdhY20vc2NoZWR1bGUvYWRkL2Zvcm0nLFxuXHQgICAgICAgICdub25jZScgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKVxuXHQgICAgfTtcblxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCBkYXRhLCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XG5cdCAgICAgICAgYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmZ1bGZpbGwoIHJlc3BvbnNlLmRhdGEgKTtcblx0ICAgIH0gKTtcblxuXHR9ICk7XG5cblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZC5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtYWRkLXByb2Nlc3MnLCBmdW5jdGlvbiggJGZvcm0gKSB7XG5cblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0YXJ0KCk7XG5cblx0XHR2YXIgZGF0YSA9IHtcblx0ICAgICAgICAnYWN0aW9uJzogJ2FjbS9zY2hlZHVsZS9pbnNlcnQnLFxuXHQgICAgICAgICdub25jZScgOiAkZm9ybS5maW5kKCAnI25vbmNlJyApLnZhbCgpLFxuXHQgICAgICAgICdkYXRhJyAgOiAkZm9ybS5zZXJpYWxpemUoKVxuXHQgICAgfTtcblxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCBkYXRhLCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XG5cblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XG5cblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcblx0ICAgICAgICBcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZGVkJywgJGZvcm0uZmluZCggJyNzY2hlZHVsZS1zbHVnJyApLnZhbCgpICk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5mb3JtX3Byb2Nlc3Nfc3RvcCgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgfSApO1xuXG5cdH0gKTtcblxuXHQvLyBlZGl0IHNjaGVkdWxlXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zY2hlZHVsZS5lZGl0JywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtZWRpdCcsIGZ1bmN0aW9uKCAkcm93ICkge1xuXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdHZhciAkYnV0dG9uID0gJHJvdy5maW5kKCAnLmFjdGlvbnMgLmVkaXQtc2NoZWR1bGUnICk7XG5cdFx0dmFyIHNjaGVkdWxlX25hbWUgPSAkYnV0dG9uLmRhdGEoICdzY2hlZHVsZScgKTtcblxuXHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5vcGVuKCk7XG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLndhaXQoKTtcblxuXHRcdHZhciBkYXRhID0ge1xuXHQgICAgICAgICdhY3Rpb24nICA6ICdhY20vc2NoZWR1bGUvZWRpdC9mb3JtJyxcblx0ICAgICAgICAnbm9uY2UnICAgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKSxcblx0ICAgICAgICAnc2NoZWR1bGUnOiBzY2hlZHVsZV9uYW1lXG5cdCAgICB9O1xuXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcblx0ICAgICAgICBhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZnVsZmlsbCggcmVzcG9uc2UuZGF0YSApO1xuXHQgICAgfSApO1xuXG5cdH0gKTtcblxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuZWRpdC5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtZWRpdC1wcm9jZXNzJywgZnVuY3Rpb24oICRmb3JtICkge1xuXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmZvcm1fcHJvY2Vzc19zdGFydCgpO1xuXG5cdFx0dmFyIGRhdGEgPSB7XG5cdCAgICAgICAgJ2FjdGlvbic6ICdhY20vc2NoZWR1bGUvZWRpdCcsXG5cdCAgICAgICAgJ25vbmNlJyA6ICRmb3JtLmZpbmQoICcjbm9uY2UnICkudmFsKCksXG5cdCAgICAgICAgJ2RhdGEnICA6ICRmb3JtLnNlcmlhbGl6ZSgpXG5cdCAgICB9O1xuXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcblxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcblxuXHQgICAgICAgIGlmICggcmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlICkge1xuXHQgICAgICAgIFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuZWRpdGVkJywgJGZvcm0uZmluZCggJyNzY2hlZHVsZS1zbHVnJyApLnZhbCgpICk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5mb3JtX3Byb2Nlc3Nfc3RvcCgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgfSApO1xuXG5cdH0gKTtcblxuXHQvLyByZW1vdmUgc2NoZWR1bGVcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLnJlbW92ZS5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtcmVtb3ZlLXByb2Nlc3MnLCBmdW5jdGlvbiggJHJvdyApIHtcblxuXHRcdHZhciAkYnV0dG9uID0gJHJvdy5maW5kKCAnLmFjdGlvbnMgLnJlbW92ZS1zY2hlZHVsZScgKTtcblxuXHRcdCRidXR0b24uYWRkQ2xhc3MoICd3b3JraW5nJyApO1xuXG5cdFx0dmFyIHNjaGVkdWxlX25hbWUgPSAkYnV0dG9uLmRhdGEoICdzY2hlZHVsZScgKTtcblxuXHQgICAgdmFyIGRhdGEgPSB7XG5cdCAgICAgICAgJ2FjdGlvbicgIDogJ2FjbS9zY2hlZHVsZS9yZW1vdmUnLFxuXHQgICAgICAgICdub25jZScgICA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApLFxuXHQgICAgICAgICdzY2hlZHVsZSc6IHNjaGVkdWxlX25hbWVcblx0ICAgIH07XG5cblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xuXG5cdCAgICAgICAgYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XG5cblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcblx0ICAgICAgICBcdCRyb3cuc2xpZGVVcCgpO1xuXHQgICAgICAgIFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUucmVtb3ZlZCcsIHNjaGVkdWxlX25hbWUgKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIFx0JGJ1dHRvbi5yZW1vdmVDbGFzcyggJ3dvcmtpbmcnICk7XG5cdCAgICAgICAgfVxuXG5cdCAgICB9ICk7XG5cblx0fSApO1xuXG5cdC8vIHJlZnJlc2ggdGFibGUgYW5kIGNsb3NlIHNsaWRlYmFyXG5cdHZhciBzY2hlZHVsZXNfdGFibGVfcmVyZW5kZXIgPSBmdW5jdGlvbigpIHtcblxuXHRcdCQoICcjc2NoZWR1bGVzJyApLmFkZENsYXNzKCAnbG9hZGluZycgKTtcblxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCB7ICdhY3Rpb24nOiAnYWNtL3JlcmVuZGVyL3NjaGVkdWxlcycgfSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xuXHQgICAgXHQkKCAnI3NjaGVkdWxlcycgKS5yZXBsYWNlV2l0aCggcmVzcG9uc2UuZGF0YSApO1xuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0b3AoKTtcblx0XHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5jbG9zZSgpO1xuXHQgICAgfSApO1xuXG5cdH07XG5cblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZGVkJywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtYWRkZWQnLCBzY2hlZHVsZXNfdGFibGVfcmVyZW5kZXIgKTtcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmVkaXRlZCcsICdicmFja2V0c3BhY2UvYWNtL3NjaGVkdWxlLWVkaXRlZCcsIHNjaGVkdWxlc190YWJsZV9yZXJlbmRlciApO1xuXG5cdC8vLy8vLy8vLy8vLy9cblx0Ly8gSGVscGVycyAvL1xuXHQvLy8vLy8vLy8vLy8vXG5cblx0Ly8gYWRkIHNjaGVkdWxlIGZvcm0gaGVscGVyc1xuXHQkKCAnLnNsaWRlYmFyJyApLm9uKCAnYmx1cicsICcjc2NoZWR1bGUtbmFtZScsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuYW1lID0gJCh0aGlzKS52YWwoKTtcblx0XHRpZiAoICQoICcuc2xpZGViYXIgI3NjaGVkdWxlLXNsdWcnICkudmFsKCkgPT0gJycgKSB7XG5cdFx0XHR2YXIgc2x1ZyA9IG5hbWUudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSggLyAvZywgJ18nICk7XG5cdFx0XHQkKCAnLnNsaWRlYmFyICNzY2hlZHVsZS1zbHVnJyApLnZhbCggc2x1ZyApO1xuXHRcdH1cblx0fSApO1xuXG5cdCQoICcuc2xpZGViYXInICkub24oICdjaGFuZ2UnLCAndGFibGUgLnNwaW5ib3gnLCBmdW5jdGlvbigpIHtcblxuXHRcdHZhciBzZWNvbmRzID0gMDtcblxuXHRcdCQoICcuc2xpZGViYXIgdGFibGUgLnNwaW5ib3gnICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdHZhciAkaW5wdXQgPSAkKCB0aGlzICk7XG5cblx0XHRcdGlmICggJGlucHV0Lmhhc0NsYXNzKCAnZGF5cycgKSApIHtcblx0XHRcdFx0dmFyIG11bHRpcGxpZXIgPSA4NjQwMDtcblx0XHRcdH0gZWxzZSBpZiAoICRpbnB1dC5oYXNDbGFzcyggJ2hvdXJzJyApICkge1xuXHRcdFx0XHR2YXIgbXVsdGlwbGllciA9IDM2MDA7XG5cdFx0XHR9IGVsc2UgaWYgKCAkaW5wdXQuaGFzQ2xhc3MoICdtaW51dGVzJyApICkge1xuXHRcdFx0XHR2YXIgbXVsdGlwbGllciA9IDYwO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFyIG11bHRpcGxpZXIgPSAxO1xuXHRcdFx0fVxuXG5cdFx0XHRzZWNvbmRzID0gc2Vjb25kcyArICggJGlucHV0LnZhbCgpICogbXVsdGlwbGllciApO1xuXG5cdFx0fSApO1xuXG5cdFx0JCggJy5zbGlkZWJhciAudG90YWwtc2Vjb25kcyBzcGFuJyApLnRleHQoIHNlY29uZHMgKTtcblx0XHQkKCAnLnNsaWRlYmFyIC5pbnRlcnZhbC1pbnB1dCcgKS52YWwoIHNlY29uZHMgKTtcblxuXHR9ICk7XG5cbn0gKSggalF1ZXJ5ICk7XG4iLCIoIGZ1bmN0aW9uKCAkICkge1xuXG5cdHZhciBzZWFyY2hfaW5wdXRfZGVsYXkgPSA0MDAsXG5cdFx0dGltZXI7XG5cblx0JCggJyNzZWFyY2gnICkuYmluZCggJ2lucHV0JywgZnVuY3Rpb24oKSB7XG5cdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZXIgKTtcblx0XHR0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50cy5zZWFyY2gudHJpZ2dlcmVkJywgJCggJyNzZWFyY2gnICkudmFsKCkgKTtcblx0XHR9LCBzZWFyY2hfaW5wdXRfZGVsYXkgKTtcblx0fSApO1xuXG5cdC8vIGZpbHRlciB0aGUgZXZlbnRzIGxpc3Rcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50cy5zZWFyY2gudHJpZ2dlcmVkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnRzLXNlYXJjaC10cmlnZ2VyZWQnLCBmdW5jdGlvbiggc2VhcmNoX3dvcmQgKSB7XG5cblx0XHQkKCAnI2V2ZW50cyAuZXZlbnRzIC5zaW5nbGUtZXZlbnQucm93JyApLmVhY2goIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHR2YXIgJHJvdyA9ICQoIHRoaXMgKTtcblx0XHRcdHZhciBldmVudF9uYW1lID0gJHJvdy5maW5kKCAnLmNvbHVtbnMgLmV2ZW50IC5ldmVudC1uYW1lJyApLnRleHQoKTtcblxuXHRcdFx0aWYgKCBldmVudF9uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZiggc2VhcmNoX3dvcmQudG9Mb3dlckNhc2UoKSApID09IC0xICkge1xuXHRcdFx0XHQkcm93LmhpZGUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCRyb3cuc2hvdygpO1xuXHRcdFx0fVxuXG5cdFx0fSApO1xuXG5cdH0gKTtcblxuXHQvLyBjbGVhciBzZWFyY2ggaW5wdXQgd2hpbGUgdXNpbmcgZmlsdGVyc1xuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLmZpbHRlci5zY2hlZHVsZScsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50cy1maWx0ZXItc2NoZWR1bGUnLCBmdW5jdGlvbigpIHtcblx0XHQkKCAnI3NlYXJjaCcgKS52YWwoICcnICk7XG5cdH0gKTtcblxufSApKCBqUXVlcnkgKTtcbiIsIiggZnVuY3Rpb24oICQgKSB7XG5cblx0Ly8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cdC8vIEZvcm0gcHJvY2Vzc2luZyAvL1xuXHQvLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuXHQkKCAnI3NlcnZlci1zZXR0aW5ncy1mb3JtJyApLm9uKCAnc3VibWl0JywgZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zZXJ2ZXIuc2V0dGluZ3MuYWN0aW9uJywgJCh0aGlzKSApO1xuXG5cdH0gKTtcblxuXHQvLy8vLy8vLy8vLy8vXG5cdC8vIEFjdGlvbnMgLy9cblx0Ly8vLy8vLy8vLy8vL1xuXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zZXJ2ZXIuc2V0dGluZ3MuYWN0aW9uJywgJ2JyYWNrZXRzcGFjZS9hY20vc2VydmVyLXNldHRpbmdzLWFjdGlvbicsIGZ1bmN0aW9uKCAkZm9ybSApIHtcblxuXHRcdHZhciAkYnV0dG9uID0gJGZvcm0uZmluZCggJy5idXR0b24tc2Vjb25kYXJ5JyApLmZpcnN0KCk7XG5cblx0XHR2YXIgZGF0YSA9IHtcblx0XHRcdCdhY3Rpb24nIDogJ2FjbS9zZXJ2ZXIvc2V0dGluZ3Mvc2F2ZScsXG5cdFx0XHQnZGF0YScgICA6ICRmb3JtLnNlcmlhbGl6ZSgpLFxuXHRcdFx0J25vbmNlJyAgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKVxuXHQgICAgfTtcblxuXHQgICAgdmFyIGJ1dHRvbl9sYWJlbCA9ICRidXR0b24udmFsKCk7XG5cblx0ICAgICRidXR0b24udmFsKCBhZHZhbmNlZF9jcm9uX21hbmFnZXIuaTE4bi5zYXZpbmcgKTtcblx0ICAgICRidXR0b24uYXR0ciggJ2Rpc2FibGVkJywgdHJ1ZSApO1xuXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcblxuXHQgICAgICAgIGFkdmFuY2VkX2Nyb25fbWFuYWdlci5hamF4X21lc3NhZ2VzKCByZXNwb25zZSApO1xuXG5cdCAgICAgICAgJGJ1dHRvbi52YWwoIGJ1dHRvbl9sYWJlbCApO1xuXHRcdCAgICAkYnV0dG9uLmF0dHIoICdkaXNhYmxlZCcsIGZhbHNlICk7XG5cblx0ICAgIH0gKTtcblxuXHR9ICk7XG5cblx0Ly8vLy8vLy8vLy8vL1xuXHQvLyBIZWxwZXJzIC8vXG5cdC8vLy8vLy8vLy8vLy9cblxuXHQkKCAnI3NlcnZlci1zZXR0aW5ncy1mb3JtJyApLm9uKCAnY2hhbmdlJywgJy5tYXN0ZXItc2V0dGluZyBpbnB1dCcsIGZ1bmN0aW9uKCkge1xuXG5cdFx0aWYgKCB0aGlzLmNoZWNrZWQgKSB7XG5cdFx0XHQkKCB0aGlzICkucGFyZW50KCkubmV4dEFsbCggJy5kZXBlbmRhbnRzJyApLnNob3coKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JCggdGhpcyApLnBhcmVudCgpLm5leHRBbGwoICcuZGVwZW5kYW50cycgKS5oaWRlKCk7XG5cdFx0fVxuXG5cdH0gKTtcblxufSApKCBqUXVlcnkgKTtcbiIsIiggZnVuY3Rpb24oICQgKSB7XG5cblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJyNldmVudHMgLmRldGFpbHMgLnRhYnMgYScsIGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHR2YXIgdGFyZ2V0ID0gJCggdGhpcyApLmRhdGEoICdzZWN0aW9uJyApO1xuXG5cdFx0dmFyICRkZXRhaWxzID0gJCggdGhpcyApLnBhcmVudHMoICcuZGV0YWlscycgKS5maXJzdCgpO1xuXG5cdFx0JGRldGFpbHMuZmluZCggJy50YWJzIGxpLmFjdGl2ZScgKS5yZW1vdmVDbGFzcyggJ2FjdGl2ZScgKTtcblx0XHQkKCB0aGlzICkucGFyZW50KCkuYWRkQ2xhc3MoICdhY3RpdmUnICk7XG5cblx0XHQkZGV0YWlscy5maW5kKCAnLmNvbnRlbnQuYWN0aXZlJyApLnJlbW92ZUNsYXNzKCAnYWN0aXZlJyApO1xuXHRcdCRkZXRhaWxzLmZpbmQoICcuY29udGVudC4nICsgdGFyZ2V0ICkuYWRkQ2xhc3MoICdhY3RpdmUnICk7XG5cblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5kZXRhaWxzLnRhYnMuY2hhbmdlZCcsIHRhcmdldCApO1xuXG5cdH0gKTtcblxufSApKCBqUXVlcnkgKTtcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1vbi5qcyIsImJ1bGstYWN0aW9ucy5qcyIsImNvdW50ZXIuanMiLCJkZXRhaWxzLmpzIiwiZXZlbnQtYWN0aW9ucy5qcyIsImZpbHRlci5qcyIsInNjaGVkdWxlLWFjdGlvbnMuanMiLCJzZWFyY2guanMiLCJzZXJ2ZXItc2V0dGluZ3MuanMiLCJ0YWJzLmpzIl0sIm5hbWVzIjpbIkFDTV9TbGlkZWJhciIsInRoaXMiLCJjb250YWluZXIiLCJqUXVlcnkiLCJvdmVybGF5IiwiY2xvc2VfYnV0dG9uIiwiY2xpY2siLCJzbGlkZWJhciIsImV2ZW50IiwiZGF0YSIsImNsb3NlIiwib3BlbiIsImFuaW1hdGUiLCJtYXJnaW4tcmlnaHQiLCJmYWRlSW4iLCIkZm9ybSIsImZpbmQiLCJvdXRlcldpZHRoIiwiaHRtbCIsImZhZGVPdXQiLCJ3YWl0IiwiYWRkQ2xhc3MiLCJmdWxmaWxsIiwicmVtb3ZlQ2xhc3MiLCJmb3JtX3Byb2Nlc3Nfc3RhcnQiLCJhdHRyIiwiY3NzIiwiZm9ybV9wcm9jZXNzX3N0b3AiLCIkIiwiZ2V0X2FsbF9jaGVja2JveGVzIiwiY2hlY2tlZCIsImFwcGVuZGl4IiwiY2xlYXJfYWxsX2NoZWNrYm94ZXMiLCJwcm9wIiwiJGNiX2FsbCIsIm9uIiwicHJldmVudERlZmF1bHQiLCIkYXBwbHlfYnV0dG9uIiwiJHNlbGVjdF9pbnB1dCIsInByZXYiLCJhY3Rpb24iLCJ2YWwiLCJlYWNoIiwiJGNoZWNrYm94IiwiJGFjdGlvbl9idXR0b24iLCJwYXJlbnRzIiwiZmlyc3QiLCJ0cmlnZ2VyIiwibGVuZ3RoIiwid3AiLCJob29rcyIsImFkZEFjdGlvbiIsImFkdmFuY2VkX2Nyb25fbWFuYWdlciIsIm5vdGlmeSIsIm5vdGlmaWNhdGlvbiIsImljb24iLCJNYXRlcmlhbGl6ZSIsInRvYXN0IiwiYWpheF9tZXNzYWdlcyIsInJlc3BvbnNlIiwic3VjY2VzcyIsIm51bWJlciIsImVycm9yIiwiY291bnRfZXZlbnRzIiwibnVtYmVyX29mX2V2ZW50cyIsInRleHQiLCJpMThuIiwiZXZlbnRzIiwidG9nZ2xlX3Jvd19mb2xkIiwiJGxpbmsiLCIkcm93IiwidG9nZ2xlQ2xhc3MiLCJoYXNDbGFzcyIsImRvQWN0aW9uIiwiJGJ1dHRvbiIsIm5vbmNlIiwicG9zdCIsImFqYXh1cmwiLCJzZXJpYWxpemUiLCIkZXZlbnRfcm93IiwiZXhlY3V0ZWRfd2l0aF9lcnJvcnMiLCJldmVudF9oYXNoIiwicmVwbGFjZVdpdGgiLCJyZW1vdmluZyIsInNsaWRlVXAiLCJwYXVzaW5nIiwiZXZlbnRzX3RhYmxlX3JlcmVuZGVyIiwiJGlucHV0IiwibmV4dCIsImFwcGVuZCIsInJlbW92ZSIsImtleUNvZGUiLCJibHVyIiwiRGF0ZSIsImdldFRpbWV6b25lT2Zmc2V0Iiwic2NoZWR1bGUiLCJzaG93IiwiaGlkZSIsInNjaGVkdWxlX25hbWUiLCJzY2hlZHVsZXNfdGFibGVfcmVyZW5kZXIiLCJuYW1lIiwic2x1ZyIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJzZWNvbmRzIiwibXVsdGlwbGllciIsInRpbWVyIiwiYmluZCIsIndpbmRvdyIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJzZWFyY2hfd29yZCIsImluZGV4T2YiLCJidXR0b25fbGFiZWwiLCJzYXZpbmciLCJwYXJlbnQiLCJuZXh0QWxsIiwidGFyZ2V0IiwiJGRldGFpbHMiXSwibWFwcGluZ3MiOiJBQXdCQSxRQUFBQSxnQkFDQUMsS0FBQUMsVUFBQUMsT0FBQSxhQUNBRixLQUFBRyxRQUFBRCxPQUFBLHFCQUNBRixLQUFBSSxhQUFBRixPQUFBLG9CQUVBRixLQUFBSSxhQUFBQyxPQUFBQyxTQUFBTixNQUFBLFNBQUFPLEdBQ0FBLEVBQUFDLEtBQUFGLFNBQUFHLFVBR0FULEtBQUFHLFFBQUFFLE9BQUFDLFNBQUFOLE1BQUEsU0FBQU8sR0FDQUEsRUFBQUMsS0FBQUYsU0FBQUcsVUFHQVQsS0FBQVUsS0FBQSxXQUVBVixLQUFBQyxVQUFBVSxTQUNBQyxlQUFBLEdBQ0EsSUFBQSxpQkFF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RUFBQStELFlBQ0FILE1BQUFELEVBQUFqRSxLQUFBLFVBR0F5RyxFQUFBeEMsRUFBQWpDLEtBRUFpQyxHQUFBakMsSUFBQVcsc0JBQUFjLEtBQUFpRCxRQUNBekMsRUFBQWpELEtBQUEsWUFBQSxHQUVBRyxFQUFBZ0QsS0FBQUMsUUFBQXBFLEVBQUEsU0FBQWtELEdBRUFQLHNCQUFBTSxjQUFBQyxHQUVBZSxFQUFBakMsSUFBQXlFLEdBQ0F4QyxFQUFBakQsS0FBQSxZQUFBLE9BVUFHLEVBQUEseUJBQUFPLEdBQUEsU0FBQSx3QkFBQSxXQUVBbEMsS0FBQTZCLFFBQ0FGLEVBQUEzQixNQUFBbUgsU0FBQUMsUUFBQSxlQUFBckIsT0FFQXBFLEVBQUEzQixNQUFBbUgsU0FBQUMsUUFBQSxlQUFBcEIsVUFLQTlGLFFDekRBLFNBQUF5QixHQUVBQSxFQUFBLHFDQUFBTyxHQUFBLFFBQUEsMkJBQUEsU0FBQTNCLEdBRUFBLEVBQUE0QixnQkFFQSxJQUFBa0YsR0FBQTFGLEVBQUEzQixNQUFBUSxLQUFBLFdBRUE4RyxFQUFBM0YsRUFBQTNCLE1BQUE0QyxRQUFBLFlBQUFDLE9BRUF5RSxHQUFBdkcsS0FBQSxtQkFBQU8sWUFBQSxVQUNBSyxFQUFBM0IsTUFBQW1ILFNBQUEvRixTQUFBLFVBRUFrRyxFQUFBdkcsS0FBQSxtQkFBQU8sWUFBQSxVQUNBZ0csRUFBQXZHLEtBQUEsWUFBQXNHLEdBQUFqRyxTQUFBLFVBRUE0QixHQUFBQyxNQUFBdUIsU0FBQSxtREFBQTZDLE1BSUFuSCIsImZpbGUiOiJzY3JpcHRzLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImFkdmFuY2VkX2Nyb25fbWFuYWdlci5ub3RpZnkgPSBmdW5jdGlvbiggbm90aWZpY2F0aW9uLCBpY29uICkge1xyXG5cclxuXHRpZiAoIHR5cGVvZiBpY29uID09ICd1bmRlZmluZWQnICkge1xyXG5cdFx0aWNvbiA9ICcnO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRpY29uID0gJzxzcGFuIGNsYXNzPVwiZGFzaGljb25zIGRhc2hpY29ucy0nICsgaWNvbiArICdcIj48L3NwYW4+JztcclxuXHR9XHJcblxyXG5cdE1hdGVyaWFsaXplLnRvYXN0KCBpY29uICsgbm90aWZpY2F0aW9uLCA0MDAwICk7XHJcblxyXG59O1xyXG5cclxuYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMgPSBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblxyXG5cdGlmICggcmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlICkge1xyXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLm5vdGlmeSggcmVzcG9uc2UuZGF0YSwgJ3llcycgKTtcclxuXHR9IGVsc2Uge1xyXG5cdFx0alF1ZXJ5LmVhY2goIHJlc3BvbnNlLmRhdGEsIGZ1bmN0aW9uKCBudW1iZXIsIGVycm9yICkge1xyXG5cdFx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIubm90aWZ5KCBlcnJvciwgJ3dhcm5pbmcnICk7XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxufTtcclxuXHJcbmZ1bmN0aW9uIEFDTV9TbGlkZWJhcigpIHtcclxuXHR0aGlzLmNvbnRhaW5lciAgICA9IGpRdWVyeSggJy5zbGlkZWJhcicgKTtcclxuXHR0aGlzLm92ZXJsYXkgICAgICA9IGpRdWVyeSggJy5zbGlkZWJhci1vdmVybGF5JyApO1xyXG5cdHRoaXMuY2xvc2VfYnV0dG9uID0galF1ZXJ5KCAnLnNsaWRlYmFyIC5jbG9zZScgKTtcclxuXHJcblx0dGhpcy5jbG9zZV9idXR0b24uY2xpY2soIHsgc2xpZGViYXI6IHRoaXMgfSwgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cdFx0ZXZlbnQuZGF0YS5zbGlkZWJhci5jbG9zZSgpO1xyXG5cdH0gKTtcclxuXHJcblx0dGhpcy5vdmVybGF5LmNsaWNrKCB7IHNsaWRlYmFyOiB0aGlzIH0sIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHRcdGV2ZW50LmRhdGEuc2xpZGViYXIuY2xvc2UoKTtcclxuXHR9ICk7XHJcblxyXG5cdHRoaXMub3BlbiA9IGZ1bmN0aW9uKCkge1xyXG5cclxuXHRcdHRoaXMuY29udGFpbmVyLmFuaW1hdGUoIHtcclxuXHRcdFx0J21hcmdpbi1yaWdodCc6IDBcclxuXHRcdH0sIDQwMCwgJ2Vhc2VJbk91dFNpbmUnICk7XHJcblxyXG5cdFx0dGhpcy5vdmVybGF5LmZhZGVJbiggNDAwICk7XHJcblxyXG5cdH07XHJcblxyXG5cdHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHtcclxuXHJcblx0XHR2YXIgJGZvcm0gPSB0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQgLmZvcm0nICk7XHJcblxyXG5cdFx0dGhpcy5jb250YWluZXIuYW5pbWF0ZSgge1xyXG5cdFx0XHQnbWFyZ2luLXJpZ2h0JzogJy0nICsgKCB0aGlzLmNvbnRhaW5lci5vdXRlcldpZHRoKCkgKyA1IClcclxuXHRcdH0sIDQwMCwgJ2Vhc2VJbk91dFNpbmUnLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdCRmb3JtLmh0bWwoICcnICk7XHJcblx0XHR9ICk7XHJcblxyXG5cdFx0dGhpcy5vdmVybGF5LmZhZGVPdXQoIDQwMCApO1xyXG5cclxuXHR9O1xyXG5cclxuXHR0aGlzLndhaXQgPSBmdW5jdGlvbigpIHtcclxuXHRcdHRoaXMuY29udGFpbmVyLmZpbmQoICcuY29udGVudCcgKS5hZGRDbGFzcyggJ2xvYWRpbmcnICk7XHJcblx0fTtcclxuXHJcblx0dGhpcy5mdWxmaWxsID0gZnVuY3Rpb24oIGh0bWwgKSB7XHJcblx0XHR0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQgLmZvcm0nICkuaHRtbCggaHRtbCApO1xyXG5cdFx0dGhpcy5jb250YWluZXIuZmluZCggJy5jb250ZW50JyApLnJlbW92ZUNsYXNzKCAnbG9hZGluZycgKTtcclxuXHR9O1xyXG5cclxuXHR0aGlzLmZvcm1fcHJvY2Vzc19zdGFydCA9IGZ1bmN0aW9uKCBodG1sICkge1xyXG5cdFx0dGhpcy5jb250YWluZXIuZmluZCggJy5jb250ZW50IC5zZW5kLWZvcm0nICkuYXR0ciggJ2Rpc2FibGVkJywgdHJ1ZSApO1xyXG5cdFx0dGhpcy5jb250YWluZXIuZmluZCggJy5jb250ZW50IC5zcGlubmVyJyApLmNzcyggJ3Zpc2liaWxpdHknLCAndmlzaWJsZScgKTtcclxuXHR9O1xyXG5cclxuXHR0aGlzLmZvcm1fcHJvY2Vzc19zdG9wID0gZnVuY3Rpb24oIGh0bWwgKSB7XHJcblx0XHR0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQgLnNlbmQtZm9ybScgKS5hdHRyKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xyXG5cdFx0dGhpcy5jb250YWluZXIuZmluZCggJy5jb250ZW50IC5zcGlubmVyJyApLmNzcyggJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyApO1xyXG5cdH07XHJcblxyXG59O1xyXG5cclxuYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyID0gbmV3IEFDTV9TbGlkZWJhcjtcclxuIiwiKCBmdW5jdGlvbiggJCApIHtcclxuXHJcblx0Ly8vLy8vLy8vLy8vXHJcblx0Ly8gQWN0aW9uIC8vXHJcblx0Ly8vLy8vLy8vLy8vXHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcudGFibGVuYXYgLmFjdGlvbicsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdHZhciAkYXBwbHlfYnV0dG9uID0gJCggdGhpcyApO1xyXG5cdFx0dmFyICRzZWxlY3RfaW5wdXQgPSAkKCB0aGlzICkucHJldiggJ3NlbGVjdCcgKTtcclxuXHRcdHZhciBhY3Rpb24gICAgICAgID0gJHNlbGVjdF9pbnB1dC52YWwoKTtcclxuXHJcblx0XHRpZiAoIGFjdGlvbiAhPSAnLTEnICkge1xyXG5cclxuXHRcdFx0JGFwcGx5X2J1dHRvbi5hdHRyKCAnZGlzYWJsZWQnLCB0cnVlICk7XHJcblxyXG5cdFx0XHRnZXRfYWxsX2NoZWNrYm94ZXMoIHRydWUgKS5lYWNoKCBmdW5jdGlvbigpIHtcclxuXHJcblx0XHRcdFx0dmFyICRjaGVja2JveCAgICAgID0gJCggdGhpcyApO1xyXG5cdFx0XHRcdHZhciAkYWN0aW9uX2J1dHRvbiA9ICRjaGVja2JveC5wYXJlbnRzKCAnLnNpbmdsZS1ldmVudC5yb3cnICkuZmlyc3QoKS5maW5kKCAnYS4nICsgYWN0aW9uICsgJy1ldmVudCcgKTtcclxuXHJcblx0XHRcdFx0aWYgKCAkYWN0aW9uX2J1dHRvbiApIHtcclxuXHRcdFx0XHRcdCRhY3Rpb25fYnV0dG9uLnRyaWdnZXIoICdjbGljaycgKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdCRjaGVja2JveC5hdHRyKCAnY2hlY2tlZCcsIGZhbHNlICk7XHJcblxyXG5cdFx0XHR9ICk7XHJcblxyXG5cdFx0XHQkYXBwbHlfYnV0dG9uLmF0dHIoICdkaXNhYmxlZCcsIGZhbHNlICk7XHJcblx0XHRcdCRzZWxlY3RfaW5wdXQudmFsKCAnLTEnICk7XHJcblxyXG5cdFx0fVxyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy8vLy9cclxuXHQvLyBDaGVja2JveGVzIC8vXHJcblx0Ly8vLy8vLy8vLy8vLy8vL1xyXG5cclxuXHR2YXIgJGNiX2FsbCAgICA9ICQoICcuc2luZ2xlLWV2ZW50LmhlYWRlciAuc2VsZWN0LWFsbCcgKSxcclxuXHRcdGNiX2NoZWNrZWQgPSBbXTtcclxuXHJcblx0ZnVuY3Rpb24gZ2V0X2FsbF9jaGVja2JveGVzKCBjaGVja2VkICkge1xyXG5cclxuXHRcdGNoZWNrZWQgPSB0eXBlb2YgY2hlY2tlZCAhPT0gJ3VuZGVmaW5lZCcgPyBjaGVja2VkIDogZmFsc2U7XHJcblxyXG5cdFx0aWYgKCBjaGVja2VkICkge1xyXG5cdFx0XHR2YXIgYXBwZW5kaXggPSAnOmNoZWNrZWQnO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dmFyIGFwcGVuZGl4ID0gJyc7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuICQoICcjZXZlbnRzIC5ldmVudHMgLnNpbmdsZS1ldmVudC5yb3c6dmlzaWJsZSAuY2IgaW5wdXQ6Y2hlY2tib3gnICsgYXBwZW5kaXggKTtcclxuXHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBjbGVhcl9hbGxfY2hlY2tib3hlcygpIHtcclxuXHRcdGdldF9hbGxfY2hlY2tib3hlcygpLnByb3AoICdjaGVja2VkJywgZmFsc2UgKTtcclxuXHRcdCRjYl9hbGwucHJvcCggJ2NoZWNrZWQnLCBmYWxzZSApO1xyXG5cdH1cclxuXHJcblx0Ly8gY2hhbmdlIGFsbCByb3dzIGlmIHBhcmVudCBjaGVja2JveGVzIGhhcyBiZWVuIGNoYW5nZWRcclxuXHQkY2JfYWxsLm9uKCAnY2hhbmdlJywgZnVuY3Rpb24oKSB7XHJcblx0XHRnZXRfYWxsX2NoZWNrYm94ZXMoKS5wcm9wKCAnY2hlY2tlZCcsIHRoaXMuY2hlY2tlZCApO1xyXG5cdFx0JGNiX2FsbC5wcm9wKCAnY2hlY2tlZCcsIHRoaXMuY2hlY2tlZCApO1xyXG5cdH0pO1xyXG5cclxuXHQvLyBjaGVjayBpZiBwYXJlbnQgY2hlY2tib3hlcyBzaG91bGQgYmUgY2hhbmdlZCB3aGVuIGNoYW5naW5nIHJvdyBjaGVja2JveGVzXHJcblx0Z2V0X2FsbF9jaGVja2JveGVzKCkub24oICdjaGFuZ2UnLCBmdW5jdGlvbigpIHtcclxuXHRcdCRjYl9hbGwucHJvcCggJ2NoZWNrZWQnLCAoIGdldF9hbGxfY2hlY2tib3hlcyggdHJ1ZSApLmxlbmd0aCA9PSBnZXRfYWxsX2NoZWNrYm94ZXMoKS5sZW5ndGggKSApO1xyXG5cdH0gKTtcclxuXHJcblx0Ly8gY2xlYXIgYWxsIGNoZWNrYm94ZXMgb24gc2VhcmNoXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50cy5zZWFyY2gudHJpZ2dlcmVkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnRzLXNlYXJjaC10cmlnZ2VyZWQnLCBjbGVhcl9hbGxfY2hlY2tib3hlcyApO1xyXG5cclxuXHQvLyBjbGVhciBhbGwgY2hlY2tib3hlcyBvbiBmaWx0ZXJcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLmZpbHRlci5zY2hlZHVsZScsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50cy1maWx0ZXItc2NoZWR1bGUnLCBjbGVhcl9hbGxfY2hlY2tib3hlcyApO1xyXG5cclxufSApKCBqUXVlcnkgKTtcclxuIiwiKCBmdW5jdGlvbiggJCApIHtcclxuXHJcblx0ZnVuY3Rpb24gY291bnRfZXZlbnRzKCkge1xyXG5cdFx0dmFyIG51bWJlcl9vZl9ldmVudHMgPSAkKCAnI2V2ZW50cyAuZXZlbnRzIC5zaW5nbGUtZXZlbnQucm93OnZpc2libGUnICkubGVuZ3RoO1xyXG5cdFx0JCggJyNldmVudHMgLnRhYmxlbmF2IC50YWJsZW5hdi1wYWdlcyAuZGlzcGxheWluZy1udW0nICkudGV4dCggbnVtYmVyX29mX2V2ZW50cyArICcgJyArIGFkdmFuY2VkX2Nyb25fbWFuYWdlci5pMThuLmV2ZW50cyApO1xyXG5cdH1cclxuXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50cy5maWx0ZXIuc2NoZWR1bGUnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudHMtZmlsdGVyLXNjaGVkdWxlJywgY291bnRfZXZlbnRzLCAxMDAgKTtcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLnNlYXJjaC50cmlnZ2VyZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudHMtc2VhcmNoLXRyaWdnZXJlZCcsIGNvdW50X2V2ZW50cywgMTAwICk7XHJcblxyXG59ICkoIGpRdWVyeSApO1xyXG4iLCIoIGZ1bmN0aW9uKCAkICkge1xyXG5cclxuXHR2YXIgdG9nZ2xlX3Jvd19mb2xkID0gZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG5cdFx0JGxpbmsgPSAkKCB0aGlzICk7XHJcblx0XHQkcm93ICA9ICRsaW5rLnBhcmVudHMoICcuc2luZ2xlLWV2ZW50JyApLmZpcnN0KCk7XHJcblxyXG5cdFx0JHJvdy50b2dnbGVDbGFzcyggJ3VuZm9sZGVkJyApO1xyXG5cclxuXHRcdGlmICggJHJvdy5oYXNDbGFzcyggJ3VuZm9sZGVkJyApICkge1xyXG5cdFx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5kZXRhaWxzLnVuZm9sZGVkJywgJHJvdyApO1xyXG5cdFx0fVxyXG5cclxuXHR9O1xyXG5cclxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnI2V2ZW50cyAuY29sdW1ucyAuZXZlbnQgLnJvdy1hY3Rpb25zIC5kZXRhaWxzIGEnLCB0b2dnbGVfcm93X2ZvbGQgKTtcclxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnI2V2ZW50cyAuY29sdW1ucyAuZXZlbnQgLmV2ZW50LW5hbWUnLCB0b2dnbGVfcm93X2ZvbGQgKTtcclxuXHJcbn0gKSggalF1ZXJ5ICk7XHJcbiIsIiggZnVuY3Rpb24oICQgKSB7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHQvLyBGb3JtIHJlcXVlc3RzIC8vXHJcblx0Ly8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnLmFkZC1ldmVudCcsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cdC8vIEZvcm0gcHJvY2Vzc2luZyAvL1xyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuXHQkKCAnLnNsaWRlYmFyJyApLm9uKCAnc3VibWl0JywgJy5ldmVudC1hZGQnLCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblxyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LmFkZC5wcm9jZXNzJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjZXZlbnRzIC5ydW4tZXZlbnQnLCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblxyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnJ1bi5wcm9jZXNzJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjZXZlbnRzIC5yZW1vdmUtZXZlbnQnLCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblxyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnJlbW92ZS5wcm9jZXNzJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjZXZlbnRzIC5wYXVzZS1ldmVudCcsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucGF1c2UucHJvY2VzcycsICQodGhpcykgKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnI2V2ZW50cyAudW5wYXVzZS1ldmVudCcsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQudW5wYXVzZS5wcm9jZXNzJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy9cclxuXHQvLyBBY3Rpb25zIC8vXHJcblx0Ly8vLy8vLy8vLy8vL1xyXG5cclxuXHQvLyBhZGRcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtYWRkJywgZnVuY3Rpb24oICRidXR0b24gKSB7XHJcblxyXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLm9wZW4oKTtcclxuXHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci53YWl0KCk7XHJcblxyXG5cdFx0dmFyIGRhdGEgPSB7XHJcblx0ICAgICAgICAnYWN0aW9uJzogJ2FjbS9ldmVudC9hZGQvZm9ybScsXHJcblx0ICAgICAgICAnbm9uY2UnIDogJGJ1dHRvbi5kYXRhKCAnbm9uY2UnIClcclxuXHQgICAgfTtcclxuXHJcblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xyXG5cdCAgICAgICAgYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmZ1bGZpbGwoIHJlc3BvbnNlLmRhdGEgKTtcclxuXHQgICAgfSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5hZGQucHJvY2VzcycsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50LWFkZC1wcm9jZXNzJywgZnVuY3Rpb24oICRmb3JtICkge1xyXG5cclxuXHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5mb3JtX3Byb2Nlc3Nfc3RhcnQoKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHQgICAgICAgICdhY3Rpb24nOiAnYWNtL2V2ZW50L2luc2VydCcsXHJcblx0ICAgICAgICAnbm9uY2UnIDogJGZvcm0uZmluZCggJyNub25jZScgKS52YWwoKSxcclxuXHQgICAgICAgICdkYXRhJyAgOiAkZm9ybS5zZXJpYWxpemUoKVxyXG5cdCAgICB9O1xyXG5cclxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCBkYXRhLCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblxyXG5cdCAgICBcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5hamF4X21lc3NhZ2VzKCByZXNwb25zZSApO1xyXG5cclxuXHQgICAgICAgIGlmICggcmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlICkge1xyXG5cdCAgICAgICAgXHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5hZGRlZCcsICRmb3JtLmZpbmQoICcjZXZlbnQtaG9vaycgKS52YWwoKSApO1xyXG5cdCAgICAgICAgfSBlbHNlIHtcclxuXHQgICAgICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmZvcm1fcHJvY2Vzc19zdG9wKCk7XHJcblx0ICAgICAgICB9XHJcblxyXG5cdCAgICB9ICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8gcnVuXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnJ1bi5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtcnVuLXByb2Nlc3MnLCBmdW5jdGlvbiggJGJ1dHRvbiApIHtcclxuXHJcblx0XHRpZiAoICRidXR0b24uaGFzQ2xhc3MoICdidXN5JyApICkge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0dmFyICRldmVudF9yb3cgPSAkYnV0dG9uLnBhcmVudHMoICcuc2luZ2xlLWV2ZW50LnJvdycgKS5maXJzdCgpO1xyXG5cclxuXHRcdCRldmVudF9yb3cuYWRkQ2xhc3MoICdydW5uaW5nJyApO1xyXG5cdFx0JGJ1dHRvbi5hZGRDbGFzcyggJ2J1c3knICk7XHJcblxyXG5cdFx0dmFyIGRhdGEgPSB7XHJcblx0ICAgICAgICAnYWN0aW9uJzogJ2FjbS9ldmVudC9ydW4nLFxyXG5cdCAgICAgICAgJ25vbmNlJyA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApLFxyXG5cdCAgICAgICAgJ2V2ZW50JyA6ICRidXR0b24uZGF0YSggJ2V2ZW50JyApXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHJcblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XHJcblxyXG5cdCAgICAgICAgaWYgKCByZXNwb25zZS5zdWNjZXNzID09IHRydWUgKSB7XHJcbiAgICAgICAgXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LmV4ZWN1dGVkJywgJGJ1dHRvbi5kYXRhKCAnZXZlbnQnICksICRldmVudF9yb3cgKTtcclxuXHQgICAgICAgIH1cclxuXHJcblx0ICAgICAgICAkZXZlbnRfcm93LnJlbW92ZUNsYXNzKCAncnVubmluZycgKTtcclxuXHQgICAgICAgICRidXR0b24ucmVtb3ZlQ2xhc3MoICdidXN5JyApO1xyXG5cclxuXHQgICAgfSApLmVycm9yKCBmdW5jdGlvbigpIHtcclxuXHJcblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLm5vdGlmeSggYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmkxOG4uZXhlY3V0ZWRfd2l0aF9lcnJvcnMsICd3YXJuaW5nJyApO1xyXG5cclxuXHQgICAgXHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5leGVjdXRlZCcsICRidXR0b24uZGF0YSggJ2V2ZW50JyApLCAkZXZlbnRfcm93ICk7XHJcblxyXG5cdCAgICBcdCRldmVudF9yb3cucmVtb3ZlQ2xhc3MoICdydW5uaW5nJyApO1xyXG5cdCAgICAgICAgJGJ1dHRvbi5yZW1vdmVDbGFzcyggJ2J1c3knICk7XHJcblxyXG5cdCAgICB9ICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8gcmVtb3ZlXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnJlbW92ZS5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtcmVtb3ZlLXByb2Nlc3MnLCBmdW5jdGlvbiggJGJ1dHRvbiApIHtcclxuXHJcblx0XHR2YXIgJGV2ZW50X3JvdyA9ICRidXR0b24ucGFyZW50cyggJy5zaW5nbGUtZXZlbnQucm93JyApLmZpcnN0KCk7XHJcblx0XHR2YXIgZXZlbnRfaGFzaCA9ICRidXR0b24uZGF0YSggJ2V2ZW50JyApO1xyXG5cclxuXHRcdCRidXR0b24ucmVwbGFjZVdpdGgoIGFkdmFuY2VkX2Nyb25fbWFuYWdlci5pMThuLnJlbW92aW5nICk7XHJcblxyXG5cdFx0JGV2ZW50X3Jvdy5hZGRDbGFzcyggJ3JlbW92aW5nJyApO1xyXG5cclxuXHRcdHZhciBkYXRhID0ge1xyXG5cdCAgICAgICAgJ2FjdGlvbic6ICdhY20vZXZlbnQvcmVtb3ZlJyxcclxuXHQgICAgICAgICdub25jZScgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKSxcclxuXHQgICAgICAgICdldmVudCcgOiBldmVudF9oYXNoXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHJcblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XHJcblxyXG5cdCAgICAgICAgaWYgKCByZXNwb25zZS5zdWNjZXNzID09IHRydWUgKSB7XHJcblx0ICAgICAgICBcdCRldmVudF9yb3cuc2xpZGVVcCgpO1xyXG4gICAgICAgIFx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5yZW1vdmVkJywgZXZlbnRfaGFzaCwgJGV2ZW50X3JvdyApO1xyXG5cdCAgICAgICAgfVxyXG5cclxuXHQgICAgICAgICRldmVudF9yb3cucmVtb3ZlQ2xhc3MoICdyZW1vdmluZycgKTtcclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyBwYXVzZVxyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5wYXVzZS5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtcGF1c2UtcHJvY2VzcycsIGZ1bmN0aW9uKCAkYnV0dG9uICkge1xyXG5cclxuXHRcdHZhciAkZXZlbnRfcm93ID0gJGJ1dHRvbi5wYXJlbnRzKCAnLnNpbmdsZS1ldmVudC5yb3cnICkuZmlyc3QoKTtcclxuXHRcdHZhciBldmVudF9oYXNoID0gJGJ1dHRvbi5kYXRhKCAnZXZlbnQnICk7XHJcblxyXG5cdFx0JGJ1dHRvbi5yZXBsYWNlV2l0aCggYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmkxOG4ucGF1c2luZyApO1xyXG5cclxuXHRcdCRldmVudF9yb3cuYWRkQ2xhc3MoICdyZW1vdmluZycgKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHQgICAgICAgICdhY3Rpb24nOiAnYWNtL2V2ZW50L3BhdXNlJyxcclxuXHQgICAgICAgICdub25jZScgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKSxcclxuXHQgICAgICAgICdldmVudCcgOiBldmVudF9oYXNoXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHJcblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XHJcblxyXG5cdCAgICAgICAgaWYgKCByZXNwb25zZS5zdWNjZXNzID09IHRydWUgKSB7XHJcbiAgICAgICAgXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnBhdXNlZCcsIGV2ZW50X2hhc2gsICRldmVudF9yb3cgKTtcclxuXHQgICAgICAgIH1cclxuXHJcblx0ICAgICAgICAkZXZlbnRfcm93LnJlbW92ZUNsYXNzKCAncmVtb3ZpbmcnICk7XHJcblxyXG5cdCAgICB9ICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8gdW5wYXVzZVxyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC51bnBhdXNlLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC11bnBhdXNlLXByb2Nlc3MnLCBmdW5jdGlvbiggJGJ1dHRvbiApIHtcclxuXHJcblx0XHR2YXIgJGV2ZW50X3JvdyA9ICRidXR0b24ucGFyZW50cyggJy5zaW5nbGUtZXZlbnQucm93JyApLmZpcnN0KCk7XHJcblx0XHR2YXIgZXZlbnRfaGFzaCA9ICRidXR0b24uZGF0YSggJ2V2ZW50JyApO1xyXG5cclxuXHRcdCRidXR0b24ucmVwbGFjZVdpdGgoIGFkdmFuY2VkX2Nyb25fbWFuYWdlci5pMThuLnBhdXNpbmcgKTtcclxuXHJcblx0XHQkZXZlbnRfcm93LmFkZENsYXNzKCAncmVtb3ZpbmcnICk7XHJcblxyXG5cdFx0dmFyIGRhdGEgPSB7XHJcblx0ICAgICAgICAnYWN0aW9uJzogJ2FjbS9ldmVudC91bnBhdXNlJyxcclxuXHQgICAgICAgICdub25jZScgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKSxcclxuXHQgICAgICAgICdldmVudCcgOiBldmVudF9oYXNoXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHJcblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XHJcblxyXG5cdCAgICAgICAgaWYgKCByZXNwb25zZS5zdWNjZXNzID09IHRydWUgKSB7XHJcbiAgICAgICAgXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnVucGF1c2VkJywgZXZlbnRfaGFzaCwgJGV2ZW50X3JvdyApO1xyXG5cdCAgICAgICAgfVxyXG5cclxuXHQgICAgICAgICRldmVudF9yb3cucmVtb3ZlQ2xhc3MoICdyZW1vdmluZycgKTtcclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyByZWZyZXNoIHRhYmxlIGFuZCBjbG9zZSBzbGlkZWJhclxyXG5cdHZhciBldmVudHNfdGFibGVfcmVyZW5kZXIgPSBmdW5jdGlvbigpIHtcclxuXHJcblx0XHQkKCAnI2V2ZW50cycgKS5hZGRDbGFzcyggJ2xvYWRpbmcnICk7XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIHsgJ2FjdGlvbic6ICdhY20vcmVyZW5kZXIvZXZlbnRzJyB9LCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblx0ICAgIFx0JCggJyNldmVudHMnICkucmVwbGFjZVdpdGgoIHJlc3BvbnNlLmRhdGEgKTtcclxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0b3AoKTtcclxuXHRcdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmNsb3NlKCk7XHJcblx0ICAgIH0gKTtcclxuXHJcblx0fTtcclxuXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LmFkZGVkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtYWRkZWQnLCBldmVudHNfdGFibGVfcmVyZW5kZXIgKTtcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucGF1c2VkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtcGF1c2VkJywgZXZlbnRzX3RhYmxlX3JlcmVuZGVyICk7XHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnVucGF1c2VkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtdW5wYXVzZWQnLCBldmVudHNfdGFibGVfcmVyZW5kZXIgKTtcclxuXHJcblx0Ly8vLy8vLy8vLy8vL1xyXG5cdC8vIEhlbHBlcnMgLy9cclxuXHQvLy8vLy8vLy8vLy8vXHJcblxyXG5cdCQoICcuc2xpZGViYXInICkub24oICdibHVyJywgJy5ldmVudC1hcmd1bWVudHMgLmV2ZW50LWFyZ3VtZW50JywgZnVuY3Rpb24oKSB7XHJcblxyXG5cdFx0dmFyICRpbnB1dCA9ICQoIHRoaXMgKTtcclxuXHJcblx0XHQvLyBhZGQgbmV3IGFyZ1xyXG5cdFx0aWYgKCAkaW5wdXQubmV4dCggJy5ldmVudC1hcmd1bWVudCcgKS5sZW5ndGggPT0gMCAmJiAkaW5wdXQudmFsKCkubGVuZ3RoID4gMCApIHtcclxuXHRcdFx0JCggJy5zbGlkZWJhciAuZXZlbnQtYXJndW1lbnRzJyApLmFwcGVuZCggJzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJhcmd1bWVudHNbXVwiIGNsYXNzPVwiZXZlbnQtYXJndW1lbnQgd2lkZWZhdFwiPicgKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyByZW1vdmUgZW1wdHkgYXJnXHJcblx0XHRpZiAoICRpbnB1dC52YWwoKS5sZW5ndGggPT0gMCAmJiAkKCAnLnNsaWRlYmFyIC5ldmVudC1hcmd1bWVudHMgLmV2ZW50LWFyZ3VtZW50JyApLmxlbmd0aCA+IDEgKSB7XHJcblx0XHRcdCRpbnB1dC5yZW1vdmUoKTtcclxuXHRcdH1cclxuXHJcblx0fSApO1xyXG5cclxuXHQkKCAnLnNsaWRlYmFyJyApLm9uKCAna2V5dXAnLCAnLmV2ZW50LWFyZ3VtZW50cyAuZXZlbnQtYXJndW1lbnQnLCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblxyXG5cdFx0dmFyICRpbnB1dCA9ICQoIHRoaXMgKTtcclxuXHJcblx0XHRpZiAoIGV2ZW50LmtleUNvZGUgPT0gOCAmJiAkaW5wdXQudmFsKCkubGVuZ3RoID09IDAgJiYgJCggJy5zbGlkZWJhciAuZXZlbnQtYXJndW1lbnRzIC5ldmVudC1hcmd1bWVudCcgKS5sZW5ndGggPiAxICApIHtcclxuXHRcdFx0JGlucHV0LmJsdXIoKTtcclxuXHRcdH1cclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyBhZGQgdXNlciB0aW1lem9uZSBvZmZzZXRcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1hZGQtcHJvY2VzcycsIGZ1bmN0aW9uKCAkZm9ybSApIHtcclxuXHRcdCRmb3JtLmZpbmQoICcjZXZlbnQtb2Zmc2V0JyApLnZhbCggbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpIC8gNjAgKTtcclxuXHR9LCA1ICk7XHJcblxyXG59ICkoIGpRdWVyeSApO1xyXG4iLCIoIGZ1bmN0aW9uKCAkICkge1xyXG5cclxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2hhbmdlJywgJyNldmVudHMgLnRhYmxlbmF2IC5zY2hlZHVsZXMtZmlsdGVyJywgZnVuY3Rpb24oKSB7XHJcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudHMuZmlsdGVyLnNjaGVkdWxlJywgJCggdGhpcyApLnZhbCgpICk7XHJcblx0fSApO1xyXG5cclxuXHQvLyBmaWx0ZXIgdGhlIGV2ZW50cyBsaXN0IHdpdGggc2NoZWR1bGVcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLmZpbHRlci5zY2hlZHVsZScsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50cy1maWx0ZXItc2NoZWR1bGUnLCBmdW5jdGlvbiggc2NoZWR1bGUgKSB7XHJcblxyXG5cdFx0JCggJyNldmVudHMgLmV2ZW50cyAuc2luZ2xlLWV2ZW50LnJvdycgKS5lYWNoKCBmdW5jdGlvbigpIHtcclxuXHJcblx0XHRcdHZhciAkcm93ID0gJCggdGhpcyApO1xyXG5cdFx0XHR2YXIgZXZlbnRfc2NoZWR1bGUgPSAkcm93LmRhdGEoICdzY2hlZHVsZScgKTtcclxuXHJcblx0XHRcdGlmICggZXZlbnRfc2NoZWR1bGUgPT0gc2NoZWR1bGUgfHwgc2NoZWR1bGUgPT0gJycgKSB7XHJcblx0XHRcdFx0JHJvdy5zaG93KCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0JHJvdy5oaWRlKCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHR9ICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8gY2xlYXIgZmlsdGVycyB3aGlsZSB1c2luZyBzZWFyY2hcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLnNlYXJjaC50cmlnZ2VyZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudHMtc2VhcmNoLXRyaWdnZXJlZCcsIGZ1bmN0aW9uKCkge1xyXG5cdFx0JCggJyNldmVudHMgLnRhYmxlbmF2IC5zY2hlZHVsZXMtZmlsdGVyJyApLnZhbCggJycgKTtcclxuXHR9ICk7XHJcblxyXG59ICkoIGpRdWVyeSApO1xyXG4iLCIoIGZ1bmN0aW9uKCAkICkge1xyXG5cclxuXHQvLy8vLy8vLy8vLy8vLy8vLy8vXHJcblx0Ly8gZm9ybSByZXF1ZXN0cyAvL1xyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJy5hZGQtc2NoZWR1bGUnLCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblxyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZCcsICQodGhpcykgKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnI3NjaGVkdWxlcyAuc2luZ2xlLXNjaGVkdWxlIC5hY3Rpb25zIC5lZGl0LXNjaGVkdWxlJywgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zY2hlZHVsZS5lZGl0JywgJCh0aGlzKS5wYXJlbnRzKCAnLnNpbmdsZS1zY2hlZHVsZScgKS5maXJzdCgpICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblx0Ly8gRm9ybSBwcm9jZXNzaW5nIC8vXHJcblx0Ly8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5cdCQoICcuc2xpZGViYXInICkub24oICdzdWJtaXQnLCAnLnNjaGVkdWxlLWFkZCcsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuYWRkLnByb2Nlc3MnLCAkKHRoaXMpICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0JCggJy5zbGlkZWJhcicgKS5vbiggJ3N1Ym1pdCcsICcuc2NoZWR1bGUtZWRpdCcsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuZWRpdC5wcm9jZXNzJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjc2NoZWR1bGVzIC5zaW5nbGUtc2NoZWR1bGUgLmFjdGlvbnMgLnJlbW92ZS1zY2hlZHVsZScsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUucmVtb3ZlLnByb2Nlc3MnLCAkKHRoaXMpLnBhcmVudHMoICcuc2luZ2xlLXNjaGVkdWxlJyApLmZpcnN0KCkgKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLy8vLy8vLy8vLy8vXHJcblx0Ly8gQWN0aW9ucyAvL1xyXG5cdC8vLy8vLy8vLy8vLy9cclxuXHJcblx0Ly8gYWRkIHNjaGVkdWxlXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZCcsICdicmFja2V0c3BhY2UvYWNtL3NjaGVkdWxlLWFkZCcsIGZ1bmN0aW9uKCAkYnV0dG9uICkge1xyXG5cclxuXHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5vcGVuKCk7XHJcblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIud2FpdCgpO1xyXG5cclxuXHRcdHZhciBkYXRhID0ge1xyXG5cdCAgICAgICAgJ2FjdGlvbic6ICdhY20vc2NoZWR1bGUvYWRkL2Zvcm0nLFxyXG5cdCAgICAgICAgJ25vbmNlJyA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHQgICAgICAgIGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5mdWxmaWxsKCByZXNwb25zZS5kYXRhICk7XHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuYWRkLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9zY2hlZHVsZS1hZGQtcHJvY2VzcycsIGZ1bmN0aW9uKCAkZm9ybSApIHtcclxuXHJcblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0YXJ0KCk7XHJcblxyXG5cdFx0dmFyIGRhdGEgPSB7XHJcblx0ICAgICAgICAnYWN0aW9uJzogJ2FjbS9zY2hlZHVsZS9pbnNlcnQnLFxyXG5cdCAgICAgICAgJ25vbmNlJyA6ICRmb3JtLmZpbmQoICcjbm9uY2UnICkudmFsKCksXHJcblx0ICAgICAgICAnZGF0YScgIDogJGZvcm0uc2VyaWFsaXplKClcclxuXHQgICAgfTtcclxuXHJcblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xyXG5cclxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcclxuXHJcblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcclxuXHQgICAgICAgIFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuYWRkZWQnLCAkZm9ybS5maW5kKCAnI3NjaGVkdWxlLXNsdWcnICkudmFsKCkgKTtcclxuXHQgICAgICAgIH0gZWxzZSB7XHJcblx0ICAgICAgICBcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5mb3JtX3Byb2Nlc3Nfc3RvcCgpO1xyXG5cdCAgICAgICAgfVxyXG5cclxuXHQgICAgfSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vIGVkaXQgc2NoZWR1bGVcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuZWRpdCcsICdicmFja2V0c3BhY2UvYWNtL3NjaGVkdWxlLWVkaXQnLCBmdW5jdGlvbiggJHJvdyApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdHZhciAkYnV0dG9uID0gJHJvdy5maW5kKCAnLmFjdGlvbnMgLmVkaXQtc2NoZWR1bGUnICk7XHJcblx0XHR2YXIgc2NoZWR1bGVfbmFtZSA9ICRidXR0b24uZGF0YSggJ3NjaGVkdWxlJyApO1xyXG5cclxuXHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5vcGVuKCk7XHJcblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIud2FpdCgpO1xyXG5cclxuXHRcdHZhciBkYXRhID0ge1xyXG5cdCAgICAgICAgJ2FjdGlvbicgIDogJ2FjbS9zY2hlZHVsZS9lZGl0L2Zvcm0nLFxyXG5cdCAgICAgICAgJ25vbmNlJyAgIDogJGJ1dHRvbi5kYXRhKCAnbm9uY2UnICksXHJcblx0ICAgICAgICAnc2NoZWR1bGUnOiBzY2hlZHVsZV9uYW1lXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHQgICAgICAgIGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5mdWxmaWxsKCByZXNwb25zZS5kYXRhICk7XHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuZWRpdC5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtZWRpdC1wcm9jZXNzJywgZnVuY3Rpb24oICRmb3JtICkge1xyXG5cclxuXHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5mb3JtX3Byb2Nlc3Nfc3RhcnQoKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHQgICAgICAgICdhY3Rpb24nOiAnYWNtL3NjaGVkdWxlL2VkaXQnLFxyXG5cdCAgICAgICAgJ25vbmNlJyA6ICRmb3JtLmZpbmQoICcjbm9uY2UnICkudmFsKCksXHJcblx0ICAgICAgICAnZGF0YScgIDogJGZvcm0uc2VyaWFsaXplKClcclxuXHQgICAgfTtcclxuXHJcblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xyXG5cclxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcclxuXHJcblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcclxuXHQgICAgICAgIFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuZWRpdGVkJywgJGZvcm0uZmluZCggJyNzY2hlZHVsZS1zbHVnJyApLnZhbCgpICk7XHJcblx0ICAgICAgICB9IGVsc2Uge1xyXG5cdCAgICAgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0b3AoKTtcclxuXHQgICAgICAgIH1cclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyByZW1vdmUgc2NoZWR1bGVcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUucmVtb3ZlLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9zY2hlZHVsZS1yZW1vdmUtcHJvY2VzcycsIGZ1bmN0aW9uKCAkcm93ICkge1xyXG5cclxuXHRcdHZhciAkYnV0dG9uID0gJHJvdy5maW5kKCAnLmFjdGlvbnMgLnJlbW92ZS1zY2hlZHVsZScgKTtcclxuXHJcblx0XHQkYnV0dG9uLmFkZENsYXNzKCAnd29ya2luZycgKTtcclxuXHJcblx0XHR2YXIgc2NoZWR1bGVfbmFtZSA9ICRidXR0b24uZGF0YSggJ3NjaGVkdWxlJyApO1xyXG5cclxuXHQgICAgdmFyIGRhdGEgPSB7XHJcblx0ICAgICAgICAnYWN0aW9uJyAgOiAnYWNtL3NjaGVkdWxlL3JlbW92ZScsXHJcblx0ICAgICAgICAnbm9uY2UnICAgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKSxcclxuXHQgICAgICAgICdzY2hlZHVsZSc6IHNjaGVkdWxlX25hbWVcclxuXHQgICAgfTtcclxuXHJcblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xyXG5cclxuXHQgICAgICAgIGFkdmFuY2VkX2Nyb25fbWFuYWdlci5hamF4X21lc3NhZ2VzKCByZXNwb25zZSApO1xyXG5cclxuXHQgICAgICAgIGlmICggcmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlICkge1xyXG5cdCAgICAgICAgXHQkcm93LnNsaWRlVXAoKTtcclxuXHQgICAgICAgIFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUucmVtb3ZlZCcsIHNjaGVkdWxlX25hbWUgKTtcclxuXHQgICAgICAgIH0gZWxzZSB7XHJcblx0ICAgICAgICBcdCRidXR0b24ucmVtb3ZlQ2xhc3MoICd3b3JraW5nJyApO1xyXG5cdCAgICAgICAgfVxyXG5cclxuXHQgICAgfSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vIHJlZnJlc2ggdGFibGUgYW5kIGNsb3NlIHNsaWRlYmFyXHJcblx0dmFyIHNjaGVkdWxlc190YWJsZV9yZXJlbmRlciA9IGZ1bmN0aW9uKCkge1xyXG5cclxuXHRcdCQoICcjc2NoZWR1bGVzJyApLmFkZENsYXNzKCAnbG9hZGluZycgKTtcclxuXHJcblx0ICAgICQucG9zdCggYWpheHVybCwgeyAnYWN0aW9uJzogJ2FjbS9yZXJlbmRlci9zY2hlZHVsZXMnIH0sIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHQgICAgXHQkKCAnI3NjaGVkdWxlcycgKS5yZXBsYWNlV2l0aCggcmVzcG9uc2UuZGF0YSApO1xyXG5cdCAgICBcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5zbGlkZWJhci5mb3JtX3Byb2Nlc3Nfc3RvcCgpO1xyXG5cdFx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuY2xvc2UoKTtcclxuXHQgICAgfSApO1xyXG5cclxuXHR9O1xyXG5cclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuYWRkZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9zY2hlZHVsZS1hZGRlZCcsIHNjaGVkdWxlc190YWJsZV9yZXJlbmRlciApO1xyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zY2hlZHVsZS5lZGl0ZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9zY2hlZHVsZS1lZGl0ZWQnLCBzY2hlZHVsZXNfdGFibGVfcmVyZW5kZXIgKTtcclxuXHJcblx0Ly8vLy8vLy8vLy8vL1xyXG5cdC8vIEhlbHBlcnMgLy9cclxuXHQvLy8vLy8vLy8vLy8vXHJcblxyXG5cdC8vIGFkZCBzY2hlZHVsZSBmb3JtIGhlbHBlcnNcclxuXHQkKCAnLnNsaWRlYmFyJyApLm9uKCAnYmx1cicsICcjc2NoZWR1bGUtbmFtZScsIGZ1bmN0aW9uKCkge1xyXG5cdFx0dmFyIG5hbWUgPSAkKHRoaXMpLnZhbCgpO1xyXG5cdFx0aWYgKCAkKCAnLnNsaWRlYmFyICNzY2hlZHVsZS1zbHVnJyApLnZhbCgpID09ICcnICkge1xyXG5cdFx0XHR2YXIgc2x1ZyA9IG5hbWUudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSggLyAvZywgJ18nICk7XHJcblx0XHRcdCQoICcuc2xpZGViYXIgI3NjaGVkdWxlLXNsdWcnICkudmFsKCBzbHVnICk7XHJcblx0XHR9XHJcblx0fSApO1xyXG5cclxuXHQkKCAnLnNsaWRlYmFyJyApLm9uKCAnY2hhbmdlJywgJ3RhYmxlIC5zcGluYm94JywgZnVuY3Rpb24oKSB7XHJcblxyXG5cdFx0dmFyIHNlY29uZHMgPSAwO1xyXG5cclxuXHRcdCQoICcuc2xpZGViYXIgdGFibGUgLnNwaW5ib3gnICkuZWFjaCggZnVuY3Rpb24oKSB7XHJcblxyXG5cdFx0XHR2YXIgJGlucHV0ID0gJCggdGhpcyApO1xyXG5cclxuXHRcdFx0aWYgKCAkaW5wdXQuaGFzQ2xhc3MoICdkYXlzJyApICkge1xyXG5cdFx0XHRcdHZhciBtdWx0aXBsaWVyID0gODY0MDA7XHJcblx0XHRcdH0gZWxzZSBpZiAoICRpbnB1dC5oYXNDbGFzcyggJ2hvdXJzJyApICkge1xyXG5cdFx0XHRcdHZhciBtdWx0aXBsaWVyID0gMzYwMDtcclxuXHRcdFx0fSBlbHNlIGlmICggJGlucHV0Lmhhc0NsYXNzKCAnbWludXRlcycgKSApIHtcclxuXHRcdFx0XHR2YXIgbXVsdGlwbGllciA9IDYwO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHZhciBtdWx0aXBsaWVyID0gMTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0c2Vjb25kcyA9IHNlY29uZHMgKyAoICRpbnB1dC52YWwoKSAqIG11bHRpcGxpZXIgKTtcclxuXHJcblx0XHR9ICk7XHJcblxyXG5cdFx0JCggJy5zbGlkZWJhciAudG90YWwtc2Vjb25kcyBzcGFuJyApLnRleHQoIHNlY29uZHMgKTtcclxuXHRcdCQoICcuc2xpZGViYXIgLmludGVydmFsLWlucHV0JyApLnZhbCggc2Vjb25kcyApO1xyXG5cclxuXHR9ICk7XHJcblxyXG59ICkoIGpRdWVyeSApO1xyXG4iLCIoIGZ1bmN0aW9uKCAkICkge1xyXG5cclxuXHR2YXIgc2VhcmNoX2lucHV0X2RlbGF5ID0gNDAwLFxyXG5cdFx0dGltZXI7XHJcblxyXG5cdCQoICcjc2VhcmNoJyApLmJpbmQoICdpbnB1dCcsIGZ1bmN0aW9uKCkge1xyXG5cdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZXIgKTtcclxuXHRcdHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xyXG5cdFx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudHMuc2VhcmNoLnRyaWdnZXJlZCcsICQoICcjc2VhcmNoJyApLnZhbCgpICk7XHJcblx0XHR9LCBzZWFyY2hfaW5wdXRfZGVsYXkgKTtcclxuXHR9ICk7XHJcblxyXG5cdC8vIGZpbHRlciB0aGUgZXZlbnRzIGxpc3RcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLnNlYXJjaC50cmlnZ2VyZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudHMtc2VhcmNoLXRyaWdnZXJlZCcsIGZ1bmN0aW9uKCBzZWFyY2hfd29yZCApIHtcclxuXHJcblx0XHQkKCAnI2V2ZW50cyAuZXZlbnRzIC5zaW5nbGUtZXZlbnQucm93JyApLmVhY2goIGZ1bmN0aW9uKCkge1xyXG5cclxuXHRcdFx0dmFyICRyb3cgPSAkKCB0aGlzICk7XHJcblx0XHRcdHZhciBldmVudF9uYW1lID0gJHJvdy5maW5kKCAnLmNvbHVtbnMgLmV2ZW50IC5ldmVudC1uYW1lJyApLnRleHQoKTtcclxuXHJcblx0XHRcdGlmICggZXZlbnRfbmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIHNlYXJjaF93b3JkLnRvTG93ZXJDYXNlKCkgKSA9PSAtMSApIHtcclxuXHRcdFx0XHQkcm93LmhpZGUoKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQkcm93LnNob3coKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyBjbGVhciBzZWFyY2ggaW5wdXQgd2hpbGUgdXNpbmcgZmlsdGVyc1xyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudHMuZmlsdGVyLnNjaGVkdWxlJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnRzLWZpbHRlci1zY2hlZHVsZScsIGZ1bmN0aW9uKCkge1xyXG5cdFx0JCggJyNzZWFyY2gnICkudmFsKCAnJyApO1xyXG5cdH0gKTtcclxuXHJcbn0gKSggalF1ZXJ5ICk7XHJcbiIsIiggZnVuY3Rpb24oICQgKSB7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cdC8vIEZvcm0gcHJvY2Vzc2luZyAvL1xyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuXHQkKCAnI3NlcnZlci1zZXR0aW5ncy1mb3JtJyApLm9uKCAnc3VibWl0JywgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zZXJ2ZXIuc2V0dGluZ3MuYWN0aW9uJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy9cclxuXHQvLyBBY3Rpb25zIC8vXHJcblx0Ly8vLy8vLy8vLy8vL1xyXG5cclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2VydmVyLnNldHRpbmdzLmFjdGlvbicsICdicmFja2V0c3BhY2UvYWNtL3NlcnZlci1zZXR0aW5ncy1hY3Rpb24nLCBmdW5jdGlvbiggJGZvcm0gKSB7XHJcblxyXG5cdFx0dmFyICRidXR0b24gPSAkZm9ybS5maW5kKCAnLmJ1dHRvbi1zZWNvbmRhcnknICkuZmlyc3QoKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHRcdFx0J2FjdGlvbicgOiAnYWNtL3NlcnZlci9zZXR0aW5ncy9zYXZlJyxcclxuXHRcdFx0J2RhdGEnICAgOiAkZm9ybS5zZXJpYWxpemUoKSxcclxuXHRcdFx0J25vbmNlJyAgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKVxyXG5cdCAgICB9O1xyXG5cclxuXHQgICAgdmFyIGJ1dHRvbl9sYWJlbCA9ICRidXR0b24udmFsKCk7XHJcblxyXG5cdCAgICAkYnV0dG9uLnZhbCggYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmkxOG4uc2F2aW5nICk7XHJcblx0ICAgICRidXR0b24uYXR0ciggJ2Rpc2FibGVkJywgdHJ1ZSApO1xyXG5cclxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCBkYXRhLCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblxyXG5cdCAgICAgICAgYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XHJcblxyXG5cdCAgICAgICAgJGJ1dHRvbi52YWwoIGJ1dHRvbl9sYWJlbCApO1xyXG5cdFx0ICAgICRidXR0b24uYXR0ciggJ2Rpc2FibGVkJywgZmFsc2UgKTtcclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLy8vLy8vLy8vLy8vXHJcblx0Ly8gSGVscGVycyAvL1xyXG5cdC8vLy8vLy8vLy8vLy9cclxuXHJcblx0JCggJyNzZXJ2ZXItc2V0dGluZ3MtZm9ybScgKS5vbiggJ2NoYW5nZScsICcubWFzdGVyLXNldHRpbmcgaW5wdXQnLCBmdW5jdGlvbigpIHtcclxuXHJcblx0XHRpZiAoIHRoaXMuY2hlY2tlZCApIHtcclxuXHRcdFx0JCggdGhpcyApLnBhcmVudCgpLm5leHRBbGwoICcuZGVwZW5kYW50cycgKS5zaG93KCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQkKCB0aGlzICkucGFyZW50KCkubmV4dEFsbCggJy5kZXBlbmRhbnRzJyApLmhpZGUoKTtcclxuXHRcdH1cclxuXHJcblx0fSApO1xyXG5cclxufSApKCBqUXVlcnkgKTtcclxuIiwiKCBmdW5jdGlvbiggJCApIHtcclxuXHJcblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJyNldmVudHMgLmRldGFpbHMgLnRhYnMgYScsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdHZhciB0YXJnZXQgPSAkKCB0aGlzICkuZGF0YSggJ3NlY3Rpb24nICk7XHJcblxyXG5cdFx0dmFyICRkZXRhaWxzID0gJCggdGhpcyApLnBhcmVudHMoICcuZGV0YWlscycgKS5maXJzdCgpO1xyXG5cclxuXHRcdCRkZXRhaWxzLmZpbmQoICcudGFicyBsaS5hY3RpdmUnICkucmVtb3ZlQ2xhc3MoICdhY3RpdmUnICk7XHJcblx0XHQkKCB0aGlzICkucGFyZW50KCkuYWRkQ2xhc3MoICdhY3RpdmUnICk7XHJcblxyXG5cdFx0JGRldGFpbHMuZmluZCggJy5jb250ZW50LmFjdGl2ZScgKS5yZW1vdmVDbGFzcyggJ2FjdGl2ZScgKTtcclxuXHRcdCRkZXRhaWxzLmZpbmQoICcuY29udGVudC4nICsgdGFyZ2V0ICkuYWRkQ2xhc3MoICdhY3RpdmUnICk7XHJcblxyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuZGV0YWlscy50YWJzLmNoYW5nZWQnLCB0YXJnZXQgKTtcclxuXHJcblx0fSApO1xyXG5cclxufSApKCBqUXVlcnkgKTtcclxuIl19 diff --git a/assets/src/sass/parts/_events.scss b/assets/src/sass/parts/_events.scss index 36a6c44..5a1830b 100644 --- a/assets/src/sass/parts/_events.scss +++ b/assets/src/sass/parts/_events.scss @@ -171,8 +171,6 @@ background: #f5f5f5; border-radius: 3px; border: 1px solid #dbdbdb; - white-space: pre; - display: inline-block; } } diff --git a/composer.lock b/composer.lock index 64fd338..258e6e4 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "underdev/requirements", - "version": "1.2.1", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/Kubitomakita/Requirements.git", - "reference": "98fe018df4815a64c86b3db55dd72d0fe3ab736e" + "reference": "1bb43675b68de26020448852e62c7267d2212c9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Kubitomakita/Requirements/zipball/98fe018df4815a64c86b3db55dd72d0fe3ab736e", - "reference": "98fe018df4815a64c86b3db55dd72d0fe3ab736e", + "url": "https://api.github.com/repos/Kubitomakita/Requirements/zipball/1bb43675b68de26020448852e62c7267d2212c9f", + "reference": "1bb43675b68de26020448852e62c7267d2212c9f", "shasum": "" }, "type": "library", @@ -34,20 +34,20 @@ } ], "description": "WordPress drop-in to check requirements", - "time": "2017-08-13T15:38:21+00:00" + "time": "2018-10-25T08:10:26+00:00" }, { "name": "underdev/utils", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/Kubitomakita/Utils.git", - "reference": "e1b34782ada7e43fc27dca1348b9ca373017bc20" + "reference": "7b731ae48a408acaab3ba478d6acc12894ff4a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Kubitomakita/Utils/zipball/e1b34782ada7e43fc27dca1348b9ca373017bc20", - "reference": "e1b34782ada7e43fc27dca1348b9ca373017bc20", + "url": "https://api.github.com/repos/Kubitomakita/Utils/zipball/7b731ae48a408acaab3ba478d6acc12894ff4a9e", + "reference": "7b731ae48a408acaab3ba478d6acc12894ff4a9e", "shasum": "" }, "require": { @@ -67,7 +67,7 @@ } ], "description": "WordPress utilities", - "time": "2017-08-13T15:34:00+00:00" + "time": "2018-10-24T07:03:17+00:00" } ], "packages-dev": [ @@ -77,25 +77,24 @@ "source": { "type": "git", "url": "https://github.com/10up/wp_mock.git", - "reference": "1baea0dbd1a23251fe7f08d9044fb7c1dc2106b3" + "reference": "0354413d63cbae920ffc0676443c6d9dd330ce40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/10up/wp_mock/zipball/1baea0dbd1a23251fe7f08d9044fb7c1dc2106b3", - "reference": "1baea0dbd1a23251fe7f08d9044fb7c1dc2106b3", + "url": "https://api.github.com/repos/10up/wp_mock/zipball/0354413d63cbae920ffc0676443c6d9dd330ce40", + "reference": "0354413d63cbae920ffc0676443c6d9dd330ce40", "shasum": "" }, "require": { - "antecedent/patchwork": "~2.0.3", - "mockery/mockery": "^0.9.5", - "php": ">=5.6", - "phpunit/phpunit": ">=4.3" - }, - "conflict": { + "antecedent/patchwork": "^2.1", + "mockery/mockery": "^1.0", + "php": ">=7.0", "phpunit/phpunit": ">=6.0" }, "require-dev": { - "behat/behat": "^3.0" + "behat/behat": "^3.0", + "satooshi/php-coveralls": "^1.0", + "sebastian/comparator": ">=1.2.3" }, "type": "library", "autoload": { @@ -111,20 +110,20 @@ "GPL-2.0+" ], "description": "A mocking library to take the pain out of unit testing for WordPress", - "time": "2017-07-19 03:16:31" + "time": "2017-12-03T19:27:57+00:00" }, { "name": "antecedent/patchwork", - "version": "2.0.9", + "version": "2.1.8", "source": { "type": "git", "url": "https://github.com/antecedent/patchwork.git", - "reference": "cab3be4865e47f1dc447715e76c7b616e48b005d" + "reference": "3bb81ace3914c220aa273d1c0603d5e1b454c0d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antecedent/patchwork/zipball/cab3be4865e47f1dc447715e76c7b616e48b005d", - "reference": "cab3be4865e47f1dc447715e76c7b616e48b005d", + "url": "https://api.github.com/repos/antecedent/patchwork/zipball/3bb81ace3914c220aa273d1c0603d5e1b454c0d7", + "reference": "3bb81ace3914c220aa273d1c0603d5e1b454c0d7", "shasum": "" }, "require": { @@ -152,7 +151,7 @@ "runkit", "testing" ], - "time": "2017-08-01T11:52:57+00:00" + "time": "2018-02-19T18:52:50+00:00" }, { "name": "doctrine/instantiator", @@ -210,20 +209,20 @@ }, { "name": "hamcrest/hamcrest-php", - "version": "v1.2.2", + "version": "v2.0.0", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^5.3|^7.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -232,15 +231,18 @@ }, "require-dev": { "phpunit/php-file-iterator": "1.3.3", - "satooshi/php-coveralls": "dev-master" + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "^1.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "hamcrest" - ], - "files": [ - "hamcrest/Hamcrest.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -251,34 +253,34 @@ "keywords": [ "test" ], - "time": "2015-05-11T14:41:42+00:00" + "time": "2016-01-20T08:20:44+00:00" }, { "name": "mockery/mockery", - "version": "0.9.9", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "6fdb61243844dc924071d3404bb23994ea0b6856" + "reference": "100633629bf76d57430b86b7098cd6beb996a35a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/6fdb61243844dc924071d3404bb23994ea0b6856", - "reference": "6fdb61243844dc924071d3404bb23994ea0b6856", + "url": "https://api.github.com/repos/mockery/mockery/zipball/100633629bf76d57430b86b7098cd6beb996a35a", + "reference": "100633629bf76d57430b86b7098cd6beb996a35a", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "~1.1", + "hamcrest/hamcrest-php": "~2.0", "lib-pcre": ">=7.0", - "php": ">=5.3.2" + "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~5.7.10|~6.5|~7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.9.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -302,8 +304,8 @@ "homepage": "http://davedevelopment.co.uk" } ], - "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", - "homepage": "http://github.com/padraic/mockery", + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", "keywords": [ "BDD", "TDD", @@ -316,41 +318,47 @@ "test double", "testing" ], - "time": "2017-02-28T12:52:32+00:00" + "time": "2018-10-02T21:52:37+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.6.1", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102" + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { "psr-4": { "DeepCopy\\": "src/DeepCopy/" - } + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Create deep copies (clones) of your objects", - "homepage": "https://github.com/myclabs/DeepCopy", "keywords": [ "clone", "copy", @@ -358,20 +366,122 @@ "object", "object graph" ], - "time": "2017-04-12T18:52:22+00:00" + "time": "2018-06-11T23:09:50+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "1.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", "shasum": "" }, "require": { @@ -412,33 +522,39 @@ "reflection", "static analysis" ], - "time": "2015-12-27T11:43:31+00:00" + "time": "2017-09-11T18:02:19+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.2.2", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157" + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157", - "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.3.0", + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -457,20 +573,20 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-08-08T06:39:58+00:00" + "time": "2017-11-30T07:14:17+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.3.0", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773" + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773", - "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", "shasum": "" }, "require": { @@ -504,37 +620,37 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-06-03T08:32:36+00:00" + "time": "2017-07-14T14:27:02+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.7.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", - "sebastian/comparator": "^1.1|^2.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -567,44 +683,44 @@ "spy", "stub" ], - "time": "2017-03-02T20:05:34+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "4.0.8", + "version": "6.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^7.0" }, "suggest": { - "ext-xdebug": "^2.5.1" + "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "6.1-dev" } }, "autoload": { @@ -619,7 +735,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -630,29 +746,32 @@ "testing", "xunit" ], - "time": "2017-04-02T07:44:40+00:00" + "time": "2018-10-31T16:06:48+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -667,7 +786,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -677,7 +796,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -722,28 +841,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f", + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -758,7 +877,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -767,33 +886,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2018-02-01T13:07:23+00:00" }, { "name": "phpunit/php-token-stream", - "version": "2.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "ecb0b2cdaa0add708fe6f329ef65ae0c5225130b" + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ecb0b2cdaa0add708fe6f329ef65ae0c5225130b", - "reference": "ecb0b2cdaa0add708fe6f329ef65ae0c5225130b", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18", + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -816,51 +935,57 @@ "keywords": [ "tokenizer" ], - "time": "2017-08-03T14:17:41+00:00" + "time": "2018-10-30T05:52:18+00:00" }, { "name": "phpunit/phpunit", - "version": "5.5.4", + "version": "7.4.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3e6e88e56c912133de6e99b87728cca7ed70c5f5" + "reference": "b1be2c8530c4c29c3519a052c9fb6cee55053bbd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6e88e56c912133de6e99b87728cca7ed70c5f5", - "reference": "3e6e88e56c912133de6e99b87728cca7ed70c5f5", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b1be2c8530c4c29c3519a052c9fb6cee55053bbd", + "reference": "b1be2c8530c4c29c3519a052c9fb6cee55053bbd", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "^4.0.1", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "~1.1", - "sebastian/diff": "~1.2", - "sebastian/environment": "^1.3 || ^2.0", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/object-enumerator": "~1.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "~1.0|~2.0", - "symfony/yaml": "~2.1|~3.0" + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.0", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" }, "suggest": { - "phpunit/php-invoker": "~1.1" + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" @@ -868,7 +993,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.5.x-dev" + "dev-master": "7.4-dev" } }, "autoload": { @@ -894,66 +1019,7 @@ "testing", "xunit" ], - "time": "2016-08-26T07:11:44+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2017-06-30T09:13:00+00:00" + "time": "2018-11-14T16:52:02+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -1002,30 +1068,30 @@ }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1056,38 +1122,39 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "366541b989927187c4ca70490a35615d3fef2dce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/366541b989927187c4ca70490a35615d3fef2dce", + "reference": "366541b989927187c4ca70490a35615d3fef2dce", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1112,34 +1179,37 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-05-22T07:24:03+00:00" + "time": "2018-06-10T07:54:39+00:00" }, { "name": "sebastian/environment", - "version": "2.0.0", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "reference": "febd209a219cea7b56ad799b30ebbea34b71eb8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/febd209a219cea7b56ad799b30ebbea34b71eb8f", + "reference": "febd209a219cea7b56ad799b30ebbea34b71eb8f", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^7.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1164,34 +1234,34 @@ "environment", "hhvm" ], - "time": "2016-11-26T07:53:53+00:00" + "time": "2018-11-25T09:31:21+00:00" }, { "name": "sebastian/exporter", - "version": "1.2.2", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -1231,27 +1301,27 @@ "export", "exporter" ], - "time": "2016-06-17T09:04:28+00:00" + "time": "2017-04-03T13:19:02+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.0" }, "suggest": { "ext-uopz": "*" @@ -1259,7 +1329,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1282,33 +1352,34 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", - "version": "1.0.0", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "d4ca2fb70344987502567bc50081c03e6192fb26" + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/d4ca2fb70344987502567bc50081c03e6192fb26", - "reference": "d4ca2fb70344987502567bc50081c03e6192fb26", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~1.0" + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1328,32 +1399,77 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2016-01-28T13:25:10+00:00" + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", - "version": "1.0.5", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1381,29 +1497,29 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03T07:41:43+00:00" + "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1423,7 +1539,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "time": "2018-10-04T04:07:39+00:00" }, { "name": "sebastian/version", @@ -1469,72 +1585,57 @@ "time": "2016-10-03T07:35:21+00:00" }, { - "name": "symfony/yaml", - "version": "v3.3.6", + "name": "theseer/tokenizer", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed", - "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", "shasum": "" }, "require": { - "php": ">=5.5.9" - }, - "require-dev": { - "symfony/console": "~2.8|~3.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2017-07-23T12:43:26+00:00" + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" }, { "name": "webmozart/assert", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", "shasum": "" }, "require": { @@ -1571,7 +1672,7 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2018-01-29T19:49:41+00:00" } ], "aliases": [], diff --git a/inc/Cron/EventsActions.php b/inc/Cron/EventsActions.php index abe5bcd..48968ff 100644 --- a/inc/Cron/EventsActions.php +++ b/inc/Cron/EventsActions.php @@ -116,7 +116,8 @@ public function run() { */ public function remove() { - $event = $this->events->get_event_by_hash( $_REQUEST['event'] ); + $event = $this->events->get_event_by_hash( $_REQUEST['event'] ); + $errors = array(); $this->ajax->verify_nonce( 'acm/event/remove/' . $event->hash ); diff --git a/inc/Misc.php b/inc/Misc.php index 97029d3..2332111 100644 --- a/inc/Misc.php +++ b/inc/Misc.php @@ -30,4 +30,14 @@ public function load_notification_promo_part() { $this->view->get_view( 'misc/notification-promo' ); } + /** + * Adds the plugin action link on Plugins table + * @param array $links links array + * @return array + */ + public function plugin_action_link( $links ) { + $links[] = '' . esc_html__( 'Cron Manager' ) . ''; + return $links; + } + } diff --git a/package.json b/package.json index 5ccd185..cc1c570 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "gulp-concat": "^2.6.1", "gulp-imagemin": "^3.1.1", "gulp-order": "^1.1.1", - "gulp-sass": "^3.1.0", + "gulp-sass": "^4.0.0", "gulp-sourcemaps": "^2.4.1", "gulp-uglify": "^2.0.1" } diff --git a/readme.txt b/readme.txt index 879397b..aed9c73 100644 --- a/readme.txt +++ b/readme.txt @@ -3,8 +3,8 @@ Contributors: bracketspace, Kubitomakita Donate link: https://www.paypal.me/underDEV/ Tags: cron, wp cron, cron jobs, manager, cron manager, crontrol Requires at least: 3.6 -Tested up to: 4.9.6 -Stable tag: 2.3.4 +Tested up to: 5.0.0 +Stable tag: 2.3.5 License: GPLv2 License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -90,6 +90,14 @@ Yes, but WP-Cron Control is quite old and it's tactics is not needed anymore. Ad == Changelog == += 2.3.5 = +* [Fixed] Fatal error when event argument was an object +* [Fixed] Notices +* [Fixed] Arguments list in the events table +* [Changed] Composer libraries updated +* [Changed] Node packages updated +* [Added] Plugin action link on Plugins table + = 2.3.4 * [Fixed] wp-hooks script handle, causing the page to not load plugin's JavaScript diff --git a/views/parts/events/row.php b/views/parts/events/row.php index e3685a6..917bb1a 100644 --- a/views/parts/events/row.php +++ b/views/parts/events/row.php @@ -59,7 +59,15 @@