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),t.prop("checked",!1)}e(".tools_page_advanced-cron-manager").on("click",".tablenav .action",function(n){n.preventDefault();var t=e(this),c=e(this).prev("select"),s=c.val();"-1"!=s&&(t.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)}),t.attr("disabled",!1),c.val("-1"))});var t=e(".single-event.header .select-all");t.on("change",function(){a().prop("checked",this.checked),t.prop("checked",this.checked)}),a().on("change",function(){t.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 t={action:"acm/event/run",nonce:a.data("nonce"),event:a.data("event")};e.post(ajaxurl,t,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(),t=a.data("event");a.replaceWith(advanced_cron_manager.i18n.removing),n.addClass("removing");var c={action:"acm/event/remove",nonce:a.data("nonce"),event:t};e.post(ajaxurl,c,function(e){advanced_cron_manager.ajax_messages(e),1==e.success&&(n.slideUp(),wp.hooks.doAction("advanced-cron-manager.event.removed",t,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(),t=a.data("event");a.replaceWith(advanced_cron_manager.i18n.pausing),n.addClass("removing");var c={action:"acm/event/pause",nonce:a.data("nonce"),event:t};e.post(ajaxurl,c,function(e){advanced_cron_manager.ajax_messages(e),1==e.success&&wp.hooks.doAction("advanced-cron-manager.event.paused",t,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(),t=a.data("event");a.replaceWith(advanced_cron_manager.i18n.pausing),n.addClass("removing");var c={action:"acm/event/unpause",nonce:a.data("nonce"),event:t};e.post(ajaxurl,c,function(e){advanced_cron_manager.ajax_messages(e),1==e.success&&wp.hooks.doAction("advanced-cron-manager.event.unpaused",t,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.doAction("advanced-cron-manager.event.search"),wp.hooks.doAction("advanced-cron-manager.event.sort")})};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){function a(a,n){function t(a,t){return a=e(a).find(".event-name").text().toLowerCase(),t=e(t).find(".event-name").text().toLowerCase(),a.localeCompare(t)*n}function c(a,t){return a=parseInt(e(a).find(".schedule").data("interval")),t=parseInt(e(t).find(".schedule").data("interval")),a===t?0:(a>t?1:-1)*n}function s(a,t){return a=parseInt(e(a).find(".next-execution").data("time")),t=parseInt(e(t).find(".next-execution").data("time")),a===t?0:(a>t?1:-1)*n}switch(a){case"event":return t;case"schedule":return c;case"next-execution":return s;default:return}}function n(a){e(a).is(".asc")||e(a).is(".desc")?e(a).toggleClass("asc desc"):e(a).addClass("asc"),e(a).siblings().removeClass("asc desc")}function t(e){var a=new URLSearchParams(window.location.search),n=e.data("name"),t=e.is(".asc")?"asc":"desc";a.set("sort",n),a.set("order",t);var c="?"+a.toString();window.history.pushState({sort:n,order:t},"",c)}function c(e){return e.is(".asc")?1:e.is(".desc")?-1:0}function s(){function a(e){return new URLSearchParams(window.location.search).get(e)}var n=a("sort"),t=a("order");n&&t&&(t="desc"===t?"asc":"desc",e(".columns").find("[data-name='"+n+"']").removeClass("asc desc").addClass(t).first().trigger("click"))}e(".tools_page_advanced-cron-manager").on("click","#events .header .is-sortable",function(s){s.preventDefault();var o=e(".event-rows-block"),r=o.children(),d=e(this).data("name"),i=e("#events .header").find("[data-name='"+d+"']");e.each(i,function(e,a){n(a)}),t(e(this)),r.sort(a(d,c(e(this)))),o.html(r)}),e(window).ready(s),wp.hooks.addAction("advanced-cron-manager.event.sort","bracketspace/acm",s)}(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"),t=n.data("schedule");advanced_cron_manager.slidebar.open(),advanced_cron_manager.slidebar.wait();var c={action:"acm/schedule/edit/form",nonce:n.data("nonce"),schedule:t};e.post(ajaxurl,c,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 t=n.data("schedule"),c={action:"acm/schedule/remove",nonce:n.data("nonce"),schedule:t};e.post(ajaxurl,c,function(e){advanced_cron_manager.ajax_messages(e),1==e.success?(a.slideUp(),wp.hooks.doAction("advanced-cron-manager.schedule.removed",t)):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 t=86400;else if(n.hasClass("hours"))var t=3600;else if(n.hasClass("minutes"))var t=60;else var t=1;a+=n.val()*t}),e(".slidebar .total-seconds span").text(a),e(".slidebar .interval-input").val(a)})}(jQuery),function(e){function a(){var a=new URLSearchParams(window.location.search),n=a.get("event-search");null!==n&&""!==n&&e("#search").val(n).trigger("input")}var n;e("#search").bind("input",function(){window.clearTimeout(n),n=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("")}),wp.hooks.addAction("advanced-cron-manager.events.search.triggered","bracketspace/acm",function(e){var a=new URLSearchParams(window.location.search);""!==e?a.set("event-search",e):a.delete("event-search");var n="?"+a.toString();window.history.pushState({"event-search":e},"",n)}),e(window).ready(a),wp.hooks.addAction("advanced-cron-manager.event.search","bracketspace/acm",a)}(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(),t={action:"acm/server/settings/save",data:a.serialize(),nonce:n.data("nonce")},c=n.val();n.val(advanced_cron_manager.i18n.saving),n.attr("disabled",!0),e.post(ajaxurl,t,function(e){advanced_cron_manager.ajax_messages(e),n.val(c),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"),t=e(this).parents(".details").first();t.find(".tabs li.active").removeClass("active"),e(this).parent().addClass("active"),t.find(".content.active").removeClass("active"),t.find(".content."+n).addClass("active"),wp.hooks.doAction("advanced-cron-manager.event.details.tabs.changed",n)})}(jQuery); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1vbi5qcyIsImJ1bGstYWN0aW9ucy5qcyIsImNvdW50ZXIuanMiLCJkZXRhaWxzLmpzIiwiZXZlbnQtYWN0aW9ucy5qcyIsImV2ZW50LXNvcnRpbmcuanMiLCJmaWx0ZXIuanMiLCJzY2hlZHVsZS1hY3Rpb25zLmpzIiwic2VhcmNoLmpzIiwic2VydmVyLXNldHRpbmdzLmpzIiwidGFicy5qcyJdLCJuYW1lcyI6WyJBQ01fU2xpZGViYXIiLCJ0aGlzIiwiY29udGFpbmVyIiwialF1ZXJ5Iiwib3ZlcmxheSIsImNsb3NlX2J1dHRvbiIsImNsaWNrIiwic2xpZGViYXIiLCJldmVudCIsImRhdGEiLCJjbG9zZSIsIm9wZW4iLCJhbmltYXRlIiwibWFyZ2luLXJpZ2h0IiwiZmFkZUluIiwiJGZvcm0iLCJmaW5kIiwib3V0ZXJXaWR0aCIsImh0bWwiLCJmYWRlT3V0Iiwid2FpdCIsImFkZENsYXNzIiwiZnVsZmlsbCIsInJlbW92ZUNsYXNzIiwiZm9ybV9wcm9jZXNzX3N0YXJ0IiwiYXR0ciIsImNzcyIsImZvcm1fcHJvY2Vzc19zdG9wIiwiJCIsImdldF9hbGxfY2hlY2tib3hlcyIsImNoZWNrZWQiLCJhcHBlbmRpeCIsImNsZWFyX2FsbF9jaGVja2JveGVzIiwicHJvcCIsIiRjYl9hbGwiLCJvbiIsInByZXZlbnREZWZhdWx0IiwiJGFwcGx5X2J1dHRvbiIsIiRzZWxlY3RfaW5wdXQiLCJwcmV2IiwiYWN0aW9uIiwidmFsIiwiZWFjaCIsIiRjaGVja2JveCIsIiRhY3Rpb25fYnV0dG9uIiwicGFyZW50cyIsImZpcnN0IiwidHJpZ2dlciIsImxlbmd0aCIsIndwIiwiaG9va3MiLCJhZGRBY3Rpb24iLCJhZHZhbmNlZF9jcm9uX21hbmFnZXIiLCJub3RpZnkiLCJub3RpZmljYXRpb24iLCJpY29uIiwiTWF0ZXJpYWxpemUiLCJ0b2FzdCIsImFqYXhfbWVzc2FnZXMiLCJyZXNwb25zZSIsInN1Y2Nlc3MiLCJudW1iZXIiLCJlcnJvciIsImNvdW50X2V2ZW50cyIsIm51bWJlcl9vZl9ldmVudHMiLCJ0ZXh0IiwiaTE4biIsImV2ZW50cyIsInRvZ2dsZV9yb3dfZm9sZCIsIiRsaW5rIiwiJHJvdyIsInRvZ2dsZUNsYXNzIiwiaGFzQ2xhc3MiLCJkb0FjdGlvbiIsIiRidXR0b24iLCJub25jZSIsInBvc3QiLCJhamF4dXJsIiwic2VyaWFsaXplIiwiJGV2ZW50X3JvdyIsImV4ZWN1dGVkX3dpdGhfZXJyb3JzIiwiZXZlbnRfaGFzaCIsInJlcGxhY2VXaXRoIiwicmVtb3ZpbmciLCJzbGlkZVVwIiwicGF1c2luZyIsImV2ZW50c190YWJsZV9yZXJlbmRlciIsIiRpbnB1dCIsIm5leHQiLCJhcHBlbmQiLCJyZW1vdmUiLCJrZXlDb2RlIiwiYmx1ciIsIkRhdGUiLCJnZXRUaW1lem9uZU9mZnNldCIsImdldF9jb21wYXJhdG9yIiwiY29sdW1uX25hbWUiLCJvcmRlciIsImNvbXBhcmVfYnlfZXZlbnRfbmFtZSIsInJvdzEiLCJyb3cyIiwidG9Mb3dlckNhc2UiLCJsb2NhbGVDb21wYXJlIiwiY29tcGFyZV9ieV9ldmVudF9zY2hlZHVsZSIsInBhcnNlSW50IiwiY29tcGFyZV9ieV9ldmVudF9leGVjdXRpb24iLCJhc3NpZ25fb3JkZXJfY2xhc3MiLCJjb2x1bW5faGVhZGVyIiwiaXMiLCJzaWJsaW5ncyIsInByZXNlcnZlX3NvcnRpbmciLCJ1cmxfcGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJzb3J0Iiwic2V0IiwidXJsIiwidG9TdHJpbmciLCJoaXN0b3J5IiwicHVzaFN0YXRlIiwiZ2V0X29yZGVyX2RpcmVjdGlvbiIsImV2ZW50c190YWJsZV9wcmVzZXJ2ZWRfc29ydCIsImdldF9wYXJhbV9mcm9tX3VybCIsImtleSIsImdldCIsIm9yZGVyX2NsYXNzIiwiZXZlbnRfcm93c19ibG9jayIsImV2ZW50X3Jvd3MiLCJjaGlsZHJlbiIsImNvbHVtbl9oZWFkZXJzIiwiaW5kZXgiLCJpdGVtIiwicmVhZHkiLCJzY2hlZHVsZSIsInNob3ciLCJoaWRlIiwic2NoZWR1bGVfbmFtZSIsInNjaGVkdWxlc190YWJsZV9yZXJlbmRlciIsIm5hbWUiLCJzbHVnIiwidHJpbSIsInJlcGxhY2UiLCJzZWNvbmRzIiwibXVsdGlwbGllciIsImV2ZW50c190YWJsZV9wcmVzZXJ2ZWRfc2VhcmNoIiwic2VhcmNoX3BhcmFtIiwidGltZXIiLCJiaW5kIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInNlYXJjaF93b3JkIiwiaW5kZXhPZiIsInZhbHVlIiwiZGVsZXRlIiwiZXZlbnQtc2VhcmNoIiwiYnV0dG9uX2xhYmVsIiwic2F2aW5nIiwicGFyZW50IiwibmV4dEFsbCIsInRhcmdldCIsIiRkZXRhaWxzIl0sIm1hcHBpbmdzIjoiQUF3QkEsUUFBQUEsZ0JBQ0FDLEtBQUFDLFVBQUFDLE9BQUEsYUFDQUYsS0FBQUcsUUFBQUQsT0FBQSxxQkFDQUYsS0FBQUksYUFBQUYsT0FBQSxvQkFFQUYsS0FBQUksYUFBQUMsT0FBQUMsU0FBQU4sTUFBQSxTQUFBTyxHQUNBQSxFQUFBQyxLQUFBRixTQUFBRyxVQUdBVCxLQUFBRyxRQUFBRSxPQUFBQyxTQUFBTixNQUFBLFNBQUFPLEdBQ0FBLEVBQUFDLEtBQUFGLFNBQUFHLFVBR0FULEtBQUFVLEtBQUEsV0FFQVYsS0FBQUMsVUFBQVUsU0FDQUMsZUFBQSxHQUNBLElBQUEsaUJBRUFaLEtBQUFHLFFBQUFVLE9BQUEsTUFJQWIsS0FBQVMsTUFBQSxXQUVBLEdBQUFLLEdBQUFkLEtBQUFDLFVBQUFjLEtBQUEsaUJBRUFmLE1BQUFDLFVBQUFVLFNBQ0FDLGVBQUEsS0FBQVosS0FBQUMsVUFBQWUsYUFBQSxJQUNBLElBQUEsZ0JBQUEsV0FDQUYsRUFBQUcsS0FBQSxNQUdBakIsS0FBQUcsUUFBQWUsUUFBQSxNQUlBbEIsS0FBQW1CLEtBQUEsV0FDQW5CLEtBQUFDLFVBQUFjLEtBQUEsWUFBQUssU0FBQSxZQUdBcEIsS0FBQXFCLFFBQUEsU0FBQUosR0FDQWpCLEtBQUFDLFVBQUFjLEtBQUEs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QUMsTUFBQUMsVUFBQSwrQ0FBQSwwQ0FBQSxTQUFBcEMsR0FFQSxHQUFBMkQsR0FBQTNELEVBQUFDLEtBQUEscUJBQUE4QixRQUVBckMsR0FDQStCLE9BQUEsMkJBQ0EvQixLQUFBTSxFQUFBK0QsWUFDQUgsTUFBQUQsRUFBQWpFLEtBQUEsVUFHQW9KLEVBQUFuRixFQUFBakMsS0FFQWlDLEdBQUFqQyxJQUFBVyxzQkFBQWMsS0FBQTRGLFFBQ0FwRixFQUFBakQsS0FBQSxZQUFBLEdBRUFHLEVBQUFnRCxLQUFBQyxRQUFBcEUsRUFBQSxTQUFBa0QsR0FFQVAsc0JBQUFNLGNBQUFDLEdBRUFlLEVBQUFqQyxJQUFBb0gsR0FDQW5GLEVBQUFqRCxLQUFBLFlBQUEsT0FVQUcsRUFBQSx5QkFBQU8sR0FBQSxTQUFBLHdCQUFBLFdBRUFsQyxLQUFBNkIsUUFDQUYsRUFBQTNCLE1BQUE4SixTQUFBQyxRQUFBLGVBQUF4QixPQUVBNUcsRUFBQTNCLE1BQUE4SixTQUFBQyxRQUFBLGVBQUF2QixVQUtBdEksUUN6REEsU0FBQXlCLEdBRUFBLEVBQUEscUNBQUFPLEdBQUEsUUFBQSwyQkFBQSxTQUFBM0IsR0FFQUEsRUFBQTRCLGdCQUVBLElBQUE2SCxHQUFBckksRUFBQTNCLE1BQUFRLEtBQUEsV0FFQXlKLEVBQUF0SSxFQUFBM0IsTUFBQTRDLFFBQUEsWUFBQUMsT0FFQW9ILEdBQUFsSixLQUFBLG1CQUFBTyxZQUFBLFVBQ0FLLEVBQUEzQixNQUFBOEosU0FBQTFJLFNBQUEsVUFFQTZJLEVBQUFsSixLQUFBLG1CQUFBTyxZQUFBLFVBQ0EySSxFQUFBbEosS0FBQSxZQUFBaUosR0FBQTVJLFNBQUEsVUFFQTRCLEdBQUFDLE1BQUF1QixTQUFBLG1EQUFBd0YsTUFJQTlKIiwiZmlsZSI6InNjcmlwdHMubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLm5vdGlmeSA9IGZ1bmN0aW9uKCBub3RpZmljYXRpb24sIGljb24gKSB7XHJcblxyXG5cdGlmICggdHlwZW9mIGljb24gPT0gJ3VuZGVmaW5lZCcgKSB7XHJcblx0XHRpY29uID0gJyc7XHJcblx0fSBlbHNlIHtcclxuXHRcdGljb24gPSAnPHNwYW4gY2xhc3M9XCJkYXNoaWNvbnMgZGFzaGljb25zLScgKyBpY29uICsgJ1wiPjwvc3Bhbj4nO1xyXG5cdH1cclxuXHJcblx0TWF0ZXJpYWxpemUudG9hc3QoIGljb24gKyBub3RpZmljYXRpb24sIDQwMDAgKTtcclxuXHJcbn07XHJcblxyXG5hZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyA9IGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHJcblx0aWYgKCByZXNwb25zZS5zdWNjZXNzID09IHRydWUgKSB7XHJcblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIubm90aWZ5KCByZXNwb25zZS5kYXRhLCAneWVzJyApO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRqUXVlcnkuZWFjaCggcmVzcG9uc2UuZGF0YSwgZnVuY3Rpb24oIG51bWJlciwgZXJyb3IgKSB7XHJcblx0XHRcdGFkdmFuY2VkX2Nyb25fbWFuYWdlci5ub3RpZnkoIGVycm9yLCAnd2FybmluZycgKTtcclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG59O1xyXG5cclxuZnVuY3Rpb24gQUNNX1NsaWRlYmFyKCkge1xyXG5cdHRoaXMuY29udGFpbmVyICAgID0galF1ZXJ5KCAnLnNsaWRlYmFyJyApO1xyXG5cdHRoaXMub3ZlcmxheSAgICAgID0galF1ZXJ5KCAnLnNsaWRlYmFyLW92ZXJsYXknICk7XHJcblx0dGhpcy5jbG9zZV9idXR0b24gPSBqUXVlcnkoICcuc2xpZGViYXIgLmNsb3NlJyApO1xyXG5cclxuXHR0aGlzLmNsb3NlX2J1dHRvbi5jbGljayggeyBzbGlkZWJhcjogdGhpcyB9LCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblx0XHRldmVudC5kYXRhLnNsaWRlYmFyLmNsb3NlKCk7XHJcblx0fSApO1xyXG5cclxuXHR0aGlzLm92ZXJsYXkuY2xpY2soIHsgc2xpZGViYXI6IHRoaXMgfSwgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cdFx0ZXZlbnQuZGF0YS5zbGlkZWJhci5jbG9zZSgpO1xyXG5cdH0gKTtcclxuXHJcblx0dGhpcy5vcGVuID0gZnVuY3Rpb24oKSB7XHJcblxyXG5cdFx0dGhpcy5jb250YWluZXIuYW5pbWF0ZSgge1xyXG5cdFx0XHQnbWFyZ2luLXJpZ2h0JzogMFxyXG5cdFx0fSwgNDAwLCAnZWFzZUluT3V0U2luZScgKTtcclxuXHJcblx0XHR0aGlzLm92ZXJsYXkuZmFkZUluKCA0MDAgKTtcclxuXHJcblx0fTtcclxuXHJcblx0dGhpcy5jbG9zZSA9IGZ1bmN0aW9uKCkge1xyXG5cclxuXHRcdHZhciAkZm9ybSA9IHRoaXMuY29udGFpbmVyLmZpbmQoICcuY29udGVudCAuZm9ybScgKTtcclxuXHJcblx0XHR0aGlzLmNvbnRhaW5lci5hbmltYXRlKCB7XHJcblx0XHRcdCdtYXJnaW4tcmlnaHQnOiAnLScgKyAoIHRoaXMuY29udGFpbmVyLm91dGVyV2lkdGgoKSArIDUgKVxyXG5cdFx0fSwgNDAwLCAnZWFzZUluT3V0U2luZScsIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0JGZvcm0uaHRtbCggJycgKTtcclxuXHRcdH0gKTtcclxuXHJcblx0XHR0aGlzLm92ZXJsYXkuZmFkZU91dCggNDAwICk7XHJcblxyXG5cdH07XHJcblxyXG5cdHRoaXMud2FpdCA9IGZ1bmN0aW9uKCkge1xyXG5cdFx0dGhpcy5jb250YWluZXIuZmluZCggJy5jb250ZW50JyApLmFkZENsYXNzKCAnbG9hZGluZycgKTtcclxuXHR9O1xyXG5cclxuXHR0aGlzLmZ1bGZpbGwgPSBmdW5jdGlvbiggaHRtbCApIHtcclxuXHRcdHRoaXMuY29udGFpbmVyLmZpbmQoICcuY29udGVudCAuZm9ybScgKS5odG1sKCBodG1sICk7XHJcblx0XHR0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQnICkucmVtb3ZlQ2xhc3MoICdsb2FkaW5nJyApO1xyXG5cdH07XHJcblxyXG5cdHRoaXMuZm9ybV9wcm9jZXNzX3N0YXJ0ID0gZnVuY3Rpb24oIGh0bWwgKSB7XHJcblx0XHR0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQgLnNlbmQtZm9ybScgKS5hdHRyKCAnZGlzYWJsZWQnLCB0cnVlICk7XHJcblx0XHR0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQgLnNwaW5uZXInICkuY3NzKCAndmlzaWJpbGl0eScsICd2aXNpYmxlJyApO1xyXG5cdH07XHJcblxyXG5cdHRoaXMuZm9ybV9wcm9jZXNzX3N0b3AgPSBmdW5jdGlvbiggaHRtbCApIHtcclxuXHRcdHRoaXMuY29udGFpbmVyLmZpbmQoICcuY29udGVudCAuc2VuZC1mb3JtJyApLmF0dHIoICdkaXNhYmxlZCcsIGZhbHNlICk7XHJcblx0XHR0aGlzLmNvbnRhaW5lci5maW5kKCAnLmNvbnRlbnQgLnNwaW5uZXInICkuY3NzKCAndmlzaWJpbGl0eScsICdoaWRkZW4nICk7XHJcblx0fTtcclxuXHJcbn07XHJcblxyXG5hZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIgPSBuZXcgQUNNX1NsaWRlYmFyO1xyXG4iLCIoIGZ1bmN0aW9uKCAkICkge1xyXG5cclxuXHQvLy8vLy8vLy8vLy9cclxuXHQvLyBBY3Rpb24gLy9cclxuXHQvLy8vLy8vLy8vLy9cclxuXHJcblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJy50YWJsZW5hdiAuYWN0aW9uJywgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG5cdFx0dmFyICRhcHBseV9idXR0b24gPSAkKCB0aGlzICk7XHJcblx0XHR2YXIgJHNlbGVjdF9pbnB1dCA9ICQoIHRoaXMgKS5wcmV2KCAnc2VsZWN0JyApO1xyXG5cdFx0dmFyIGFjdGlvbiAgICAgICAgPSAkc2VsZWN0X2lucHV0LnZhbCgpO1xyXG5cclxuXHRcdGlmICggYWN0aW9uICE9ICctMScgKSB7XHJcblxyXG5cdFx0XHQkYXBwbHlfYnV0dG9uLmF0dHIoICdkaXNhYmxlZCcsIHRydWUgKTtcclxuXHJcblx0XHRcdGdldF9hbGxfY2hlY2tib3hlcyggdHJ1ZSApLmVhY2goIGZ1bmN0aW9uKCkge1xyXG5cclxuXHRcdFx0XHR2YXIgJGNoZWNrYm94ICAgICAgPSAkKCB0aGlzICk7XHJcblx0XHRcdFx0dmFyICRhY3Rpb25fYnV0dG9uID0gJGNoZWNrYm94LnBhcmVudHMoICcuc2luZ2xlLWV2ZW50LnJvdycgKS5maXJzdCgpLmZpbmQoICdhLicgKyBhY3Rpb24gKyAnLWV2ZW50JyApO1xyXG5cclxuXHRcdFx0XHRpZiAoICRhY3Rpb25fYnV0dG9uICkge1xyXG5cdFx0XHRcdFx0JGFjdGlvbl9idXR0b24udHJpZ2dlciggJ2NsaWNrJyApO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0JGNoZWNrYm94LmF0dHIoICdjaGVja2VkJywgZmFsc2UgKTtcclxuXHJcblx0XHRcdH0gKTtcclxuXHJcblx0XHRcdCRhcHBseV9idXR0b24uYXR0ciggJ2Rpc2FibGVkJywgZmFsc2UgKTtcclxuXHRcdFx0JHNlbGVjdF9pbnB1dC52YWwoICctMScgKTtcclxuXHJcblx0XHR9XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8vLy8vLy8vLy8vLy8vL1xyXG5cdC8vIENoZWNrYm94ZXMgLy9cclxuXHQvLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5cdHZhciAkY2JfYWxsICAgID0gJCggJy5zaW5nbGUtZXZlbnQuaGVhZGVyIC5zZWxlY3QtYWxsJyApLFxyXG5cdFx0Y2JfY2hlY2tlZCA9IFtdO1xyXG5cclxuXHRmdW5jdGlvbiBnZXRfYWxsX2NoZWNrYm94ZXMoIGNoZWNrZWQgKSB7XHJcblxyXG5cdFx0Y2hlY2tlZCA9IHR5cGVvZiBjaGVja2VkICE9PSAndW5kZWZpbmVkJyA/IGNoZWNrZWQgOiBmYWxzZTtcclxuXHJcblx0XHRpZiAoIGNoZWNrZWQgKSB7XHJcblx0XHRcdHZhciBhcHBlbmRpeCA9ICc6Y2hlY2tlZCc7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR2YXIgYXBwZW5kaXggPSAnJztcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gJCggJyNldmVudHMgLmV2ZW50cyAuc2luZ2xlLWV2ZW50LnJvdzp2aXNpYmxlIC5jYiBpbnB1dDpjaGVja2JveCcgKyBhcHBlbmRpeCApO1xyXG5cclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGNsZWFyX2FsbF9jaGVja2JveGVzKCkge1xyXG5cdFx0Z2V0X2FsbF9jaGVja2JveGVzKCkucHJvcCggJ2NoZWNrZWQnLCBmYWxzZSApO1xyXG5cdFx0JGNiX2FsbC5wcm9wKCAnY2hlY2tlZCcsIGZhbHNlICk7XHJcblx0fVxyXG5cclxuXHQvLyBjaGFuZ2UgYWxsIHJvd3MgaWYgcGFyZW50IGNoZWNrYm94ZXMgaGFzIGJlZW4gY2hhbmdlZFxyXG5cdCRjYl9hbGwub24oICdjaGFuZ2UnLCBmdW5jdGlvbigpIHtcclxuXHRcdGdldF9hbGxfY2hlY2tib3hlcygpLnByb3AoICdjaGVja2VkJywgdGhpcy5jaGVja2VkICk7XHJcblx0XHQkY2JfYWxsLnByb3AoICdjaGVja2VkJywgdGhpcy5jaGVja2VkICk7XHJcblx0fSk7XHJcblxyXG5cdC8vIGNoZWNrIGlmIHBhcmVudCBjaGVja2JveGVzIHNob3VsZCBiZSBjaGFuZ2VkIHdoZW4gY2hhbmdpbmcgcm93IGNoZWNrYm94ZXNcclxuXHRnZXRfYWxsX2NoZWNrYm94ZXMoKS5vbiggJ2NoYW5nZScsIGZ1bmN0aW9uKCkge1xyXG5cdFx0JGNiX2FsbC5wcm9wKCAnY2hlY2tlZCcsICggZ2V0X2FsbF9jaGVja2JveGVzKCB0cnVlICkubGVuZ3RoID09IGdldF9hbGxfY2hlY2tib3hlcygpLmxlbmd0aCApICk7XHJcblx0fSApO1xyXG5cclxuXHQvLyBjbGVhciBhbGwgY2hlY2tib3hlcyBvbiBzZWFyY2hcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLnNlYXJjaC50cmlnZ2VyZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudHMtc2VhcmNoLXRyaWdnZXJlZCcsIGNsZWFyX2FsbF9jaGVja2JveGVzICk7XHJcblxyXG5cdC8vIGNsZWFyIGFsbCBjaGVja2JveGVzIG9uIGZpbHRlclxyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudHMuZmlsdGVyLnNjaGVkdWxlJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnRzLWZpbHRlci1zY2hlZHVsZScsIGNsZWFyX2FsbF9jaGVja2JveGVzICk7XHJcblxyXG59ICkoIGpRdWVyeSApO1xyXG4iLCIoIGZ1bmN0aW9uKCAkICkge1xyXG5cclxuXHRmdW5jdGlvbiBjb3VudF9ldmVudHMoKSB7XHJcblx0XHR2YXIgbnVtYmVyX29mX2V2ZW50cyA9ICQoICcjZXZlbnRzIC5ldmVudHMgLnNpbmdsZS1ldmVudC5yb3c6dmlzaWJsZScgKS5sZW5ndGg7XHJcblx0XHQkKCAnI2V2ZW50cyAudGFibGVuYXYgLnRhYmxlbmF2LXBhZ2VzIC5kaXNwbGF5aW5nLW51bScgKS50ZXh0KCBudW1iZXJfb2ZfZXZlbnRzICsgJyAnICsgYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmkxOG4uZXZlbnRzICk7XHJcblx0fVxyXG5cclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLmZpbHRlci5zY2hlZHVsZScsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50cy1maWx0ZXItc2NoZWR1bGUnLCBjb3VudF9ldmVudHMsIDEwMCApO1xyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudHMuc2VhcmNoLnRyaWdnZXJlZCcsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50cy1zZWFyY2gtdHJpZ2dlcmVkJywgY291bnRfZXZlbnRzLCAxMDAgKTtcclxuXHJcbn0gKSggalF1ZXJ5ICk7XHJcbiIsIiggZnVuY3Rpb24oICQgKSB7XHJcblxyXG5cdHZhciB0b2dnbGVfcm93X2ZvbGQgPSBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblxyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcblx0XHQkbGluayA9ICQoIHRoaXMgKTtcclxuXHRcdCRyb3cgID0gJGxpbmsucGFyZW50cyggJy5zaW5nbGUtZXZlbnQnICkuZmlyc3QoKTtcclxuXHJcblx0XHQkcm93LnRvZ2dsZUNsYXNzKCAndW5mb2xkZWQnICk7XHJcblxyXG5cdFx0aWYgKCAkcm93Lmhhc0NsYXNzKCAndW5mb2xkZWQnICkgKSB7XHJcblx0XHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LmRldGFpbHMudW5mb2xkZWQnLCAkcm93ICk7XHJcblx0XHR9XHJcblxyXG5cdH07XHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjZXZlbnRzIC5jb2x1bW5zIC5ldmVudCAucm93LWFjdGlvbnMgLmRldGFpbHMgYScsIHRvZ2dsZV9yb3dfZm9sZCApO1xyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjZXZlbnRzIC5jb2x1bW5zIC5ldmVudCAuZXZlbnQtbmFtZScsIHRvZ2dsZV9yb3dfZm9sZCApO1xyXG5cclxufSApKCBqUXVlcnkgKTtcclxuIiwiKCBmdW5jdGlvbiggJCApIHtcclxuXHJcblx0Ly8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cdC8vIEZvcm0gcmVxdWVzdHMgLy9cclxuXHQvLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcuYWRkLWV2ZW50JywgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5hZGQnLCAkKHRoaXMpICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblx0Ly8gRm9ybSBwcm9jZXNzaW5nIC8vXHJcblx0Ly8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5cdCQoICcuc2xpZGViYXInICkub24oICdzdWJtaXQnLCAnLmV2ZW50LWFkZCcsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkLnByb2Nlc3MnLCAkKHRoaXMpICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJyNldmVudHMgLnJ1bi1ldmVudCcsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucnVuLnByb2Nlc3MnLCAkKHRoaXMpICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJyNldmVudHMgLnJlbW92ZS1ldmVudCcsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucmVtb3ZlLnByb2Nlc3MnLCAkKHRoaXMpICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJyNldmVudHMgLnBhdXNlLWV2ZW50JywgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5wYXVzZS5wcm9jZXNzJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcjZXZlbnRzIC51bnBhdXNlLWV2ZW50JywgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC51bnBhdXNlLnByb2Nlc3MnLCAkKHRoaXMpICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8vLy8vLy8vLy8vL1xyXG5cdC8vIEFjdGlvbnMgLy9cclxuXHQvLy8vLy8vLy8vLy8vXHJcblxyXG5cdC8vIGFkZFxyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5hZGQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1hZGQnLCBmdW5jdGlvbiggJGJ1dHRvbiApIHtcclxuXHJcblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIub3BlbigpO1xyXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLndhaXQoKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHQgICAgICAgICdhY3Rpb24nOiAnYWNtL2V2ZW50L2FkZC9mb3JtJyxcclxuXHQgICAgICAgICdub25jZScgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKVxyXG5cdCAgICB9O1xyXG5cclxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCBkYXRhLCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblx0ICAgICAgICBhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZnVsZmlsbCggcmVzcG9uc2UuZGF0YSApO1xyXG5cdCAgICB9ICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LmFkZC5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnQtYWRkLXByb2Nlc3MnLCBmdW5jdGlvbiggJGZvcm0gKSB7XHJcblxyXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmZvcm1fcHJvY2Vzc19zdGFydCgpO1xyXG5cclxuXHRcdHZhciBkYXRhID0ge1xyXG5cdCAgICAgICAgJ2FjdGlvbic6ICdhY20vZXZlbnQvaW5zZXJ0JyxcclxuXHQgICAgICAgICdub25jZScgOiAkZm9ybS5maW5kKCAnI25vbmNlJyApLnZhbCgpLFxyXG5cdCAgICAgICAgJ2RhdGEnICA6ICRmb3JtLnNlcmlhbGl6ZSgpXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHJcblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XHJcblxyXG5cdCAgICAgICAgaWYgKCByZXNwb25zZS5zdWNjZXNzID09IHRydWUgKSB7XHJcblx0ICAgICAgICBcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LmFkZGVkJywgJGZvcm0uZmluZCggJyNldmVudC1ob29rJyApLnZhbCgpICk7XHJcblx0ICAgICAgICB9IGVsc2Uge1xyXG5cdCAgICAgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0b3AoKTtcclxuXHQgICAgICAgIH1cclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyBydW5cclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucnVuLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1ydW4tcHJvY2VzcycsIGZ1bmN0aW9uKCAkYnV0dG9uICkge1xyXG5cclxuXHRcdGlmICggJGJ1dHRvbi5oYXNDbGFzcyggJ2J1c3knICkgKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHR2YXIgJGV2ZW50X3JvdyA9ICRidXR0b24ucGFyZW50cyggJy5zaW5nbGUtZXZlbnQucm93JyApLmZpcnN0KCk7XHJcblxyXG5cdFx0JGV2ZW50X3Jvdy5hZGRDbGFzcyggJ3J1bm5pbmcnICk7XHJcblx0XHQkYnV0dG9uLmFkZENsYXNzKCAnYnVzeScgKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHQgICAgICAgICdhY3Rpb24nOiAnYWNtL2V2ZW50L3J1bicsXHJcblx0ICAgICAgICAnbm9uY2UnIDogJGJ1dHRvbi5kYXRhKCAnbm9uY2UnICksXHJcblx0ICAgICAgICAnZXZlbnQnIDogJGJ1dHRvbi5kYXRhKCAnZXZlbnQnIClcclxuXHQgICAgfTtcclxuXHJcblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xyXG5cclxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcclxuXHJcblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcclxuICAgICAgICBcdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuZXhlY3V0ZWQnLCAkYnV0dG9uLmRhdGEoICdldmVudCcgKSwgJGV2ZW50X3JvdyApO1xyXG5cdCAgICAgICAgfVxyXG5cclxuXHQgICAgICAgICRldmVudF9yb3cucmVtb3ZlQ2xhc3MoICdydW5uaW5nJyApO1xyXG5cdCAgICAgICAgJGJ1dHRvbi5yZW1vdmVDbGFzcyggJ2J1c3knICk7XHJcblxyXG5cdCAgICB9ICkuZXJyb3IoIGZ1bmN0aW9uKCkge1xyXG5cclxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIubm90aWZ5KCBhZHZhbmNlZF9jcm9uX21hbmFnZXIuaTE4bi5leGVjdXRlZF93aXRoX2Vycm9ycywgJ3dhcm5pbmcnICk7XHJcblxyXG5cdCAgICBcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LmV4ZWN1dGVkJywgJGJ1dHRvbi5kYXRhKCAnZXZlbnQnICksICRldmVudF9yb3cgKTtcclxuXHJcblx0ICAgIFx0JGV2ZW50X3Jvdy5yZW1vdmVDbGFzcyggJ3J1bm5pbmcnICk7XHJcblx0ICAgICAgICAkYnV0dG9uLnJlbW92ZUNsYXNzKCAnYnVzeScgKTtcclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyByZW1vdmVcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucmVtb3ZlLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1yZW1vdmUtcHJvY2VzcycsIGZ1bmN0aW9uKCAkYnV0dG9uICkge1xyXG5cclxuXHRcdHZhciAkZXZlbnRfcm93ID0gJGJ1dHRvbi5wYXJlbnRzKCAnLnNpbmdsZS1ldmVudC5yb3cnICkuZmlyc3QoKTtcclxuXHRcdHZhciBldmVudF9oYXNoID0gJGJ1dHRvbi5kYXRhKCAnZXZlbnQnICk7XHJcblxyXG5cdFx0JGJ1dHRvbi5yZXBsYWNlV2l0aCggYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmkxOG4ucmVtb3ZpbmcgKTtcclxuXHJcblx0XHQkZXZlbnRfcm93LmFkZENsYXNzKCAncmVtb3ZpbmcnICk7XHJcblxyXG5cdFx0dmFyIGRhdGEgPSB7XHJcblx0ICAgICAgICAnYWN0aW9uJzogJ2FjbS9ldmVudC9yZW1vdmUnLFxyXG5cdCAgICAgICAgJ25vbmNlJyA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApLFxyXG5cdCAgICAgICAgJ2V2ZW50JyA6IGV2ZW50X2hhc2hcclxuXHQgICAgfTtcclxuXHJcblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xyXG5cclxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcclxuXHJcblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcclxuXHQgICAgICAgIFx0JGV2ZW50X3Jvdy5zbGlkZVVwKCk7XHJcbiAgICAgICAgXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnJlbW92ZWQnLCBldmVudF9oYXNoLCAkZXZlbnRfcm93ICk7XHJcblx0ICAgICAgICB9XHJcblxyXG5cdCAgICAgICAgJGV2ZW50X3Jvdy5yZW1vdmVDbGFzcyggJ3JlbW92aW5nJyApO1xyXG5cclxuXHQgICAgfSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vIHBhdXNlXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnBhdXNlLnByb2Nlc3MnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1wYXVzZS1wcm9jZXNzJywgZnVuY3Rpb24oICRidXR0b24gKSB7XHJcblxyXG5cdFx0dmFyICRldmVudF9yb3cgPSAkYnV0dG9uLnBhcmVudHMoICcuc2luZ2xlLWV2ZW50LnJvdycgKS5maXJzdCgpO1xyXG5cdFx0dmFyIGV2ZW50X2hhc2ggPSAkYnV0dG9uLmRhdGEoICdldmVudCcgKTtcclxuXHJcblx0XHQkYnV0dG9uLnJlcGxhY2VXaXRoKCBhZHZhbmNlZF9jcm9uX21hbmFnZXIuaTE4bi5wYXVzaW5nICk7XHJcblxyXG5cdFx0JGV2ZW50X3Jvdy5hZGRDbGFzcyggJ3JlbW92aW5nJyApO1xyXG5cclxuXHRcdHZhciBkYXRhID0ge1xyXG5cdCAgICAgICAgJ2FjdGlvbic6ICdhY20vZXZlbnQvcGF1c2UnLFxyXG5cdCAgICAgICAgJ25vbmNlJyA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApLFxyXG5cdCAgICAgICAgJ2V2ZW50JyA6IGV2ZW50X2hhc2hcclxuXHQgICAgfTtcclxuXHJcblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xyXG5cclxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcclxuXHJcblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcclxuICAgICAgICBcdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQucGF1c2VkJywgZXZlbnRfaGFzaCwgJGV2ZW50X3JvdyApO1xyXG5cdCAgICAgICAgfVxyXG5cclxuXHQgICAgICAgICRldmVudF9yb3cucmVtb3ZlQ2xhc3MoICdyZW1vdmluZycgKTtcclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyB1bnBhdXNlXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnVucGF1c2UucHJvY2VzcycsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50LXVucGF1c2UtcHJvY2VzcycsIGZ1bmN0aW9uKCAkYnV0dG9uICkge1xyXG5cclxuXHRcdHZhciAkZXZlbnRfcm93ID0gJGJ1dHRvbi5wYXJlbnRzKCAnLnNpbmdsZS1ldmVudC5yb3cnICkuZmlyc3QoKTtcclxuXHRcdHZhciBldmVudF9oYXNoID0gJGJ1dHRvbi5kYXRhKCAnZXZlbnQnICk7XHJcblxyXG5cdFx0JGJ1dHRvbi5yZXBsYWNlV2l0aCggYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmkxOG4ucGF1c2luZyApO1xyXG5cclxuXHRcdCRldmVudF9yb3cuYWRkQ2xhc3MoICdyZW1vdmluZycgKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHQgICAgICAgICdhY3Rpb24nOiAnYWNtL2V2ZW50L3VucGF1c2UnLFxyXG5cdCAgICAgICAgJ25vbmNlJyA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApLFxyXG5cdCAgICAgICAgJ2V2ZW50JyA6IGV2ZW50X2hhc2hcclxuXHQgICAgfTtcclxuXHJcblx0ICAgICQucG9zdCggYWpheHVybCwgZGF0YSwgZnVuY3Rpb24oIHJlc3BvbnNlICkge1xyXG5cclxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcclxuXHJcblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcclxuICAgICAgICBcdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQudW5wYXVzZWQnLCBldmVudF9oYXNoLCAkZXZlbnRfcm93ICk7XHJcblx0ICAgICAgICB9XHJcblxyXG5cdCAgICAgICAgJGV2ZW50X3Jvdy5yZW1vdmVDbGFzcyggJ3JlbW92aW5nJyApO1xyXG5cclxuXHQgICAgfSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vIHJlZnJlc2ggdGFibGUgYW5kIGNsb3NlIHNsaWRlYmFyLlxyXG5cdHZhciBldmVudHNfdGFibGVfcmVyZW5kZXIgPSBmdW5jdGlvbiAoKSB7XHJcblxyXG5cdFx0JCggJyNldmVudHMnICkuYWRkQ2xhc3MoICdsb2FkaW5nJyApO1xyXG5cclxuXHRcdCQucG9zdChcclxuXHRcdFx0YWpheHVybCxcclxuXHRcdFx0eyAnYWN0aW9uJzogJ2FjbS9yZXJlbmRlci9ldmVudHMnIH0sXHJcblx0XHRcdGZ1bmN0aW9uICggcmVzcG9uc2UgKSB7XHJcblx0XHRcdFx0JCggJyNldmVudHMnICkucmVwbGFjZVdpdGgoIHJlc3BvbnNlLmRhdGEgKTtcclxuXHRcdFx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0b3AoKTtcclxuXHRcdFx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuY2xvc2UoKTtcclxuXHRcdFx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5zZWFyY2gnICk7XHJcblx0XHRcdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuc29ydCcgKTtcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9O1xyXG5cclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuYWRkZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1hZGRlZCcsIGV2ZW50c190YWJsZV9yZXJlbmRlciApO1xyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5wYXVzZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC1wYXVzZWQnLCBldmVudHNfdGFibGVfcmVyZW5kZXIgKTtcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQudW5wYXVzZWQnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudC11bnBhdXNlZCcsIGV2ZW50c190YWJsZV9yZXJlbmRlciApO1xyXG5cclxuXHQvLy8vLy8vLy8vLy8vXHJcblx0Ly8gSGVscGVycyAvL1xyXG5cdC8vLy8vLy8vLy8vLy9cclxuXHJcblx0JCggJy5zbGlkZWJhcicgKS5vbiggJ2JsdXInLCAnLmV2ZW50LWFyZ3VtZW50cyAuZXZlbnQtYXJndW1lbnQnLCBmdW5jdGlvbigpIHtcclxuXHJcblx0XHR2YXIgJGlucHV0ID0gJCggdGhpcyApO1xyXG5cclxuXHRcdC8vIGFkZCBuZXcgYXJnXHJcblx0XHRpZiAoICRpbnB1dC5uZXh0KCAnLmV2ZW50LWFyZ3VtZW50JyApLmxlbmd0aCA9PSAwICYmICRpbnB1dC52YWwoKS5sZW5ndGggPiAwICkge1xyXG5cdFx0XHQkKCAnLnNsaWRlYmFyIC5ldmVudC1hcmd1bWVudHMnICkuYXBwZW5kKCAnPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFyZ3VtZW50c1tdXCIgY2xhc3M9XCJldmVudC1hcmd1bWVudCB3aWRlZmF0XCI+JyApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIHJlbW92ZSBlbXB0eSBhcmdcclxuXHRcdGlmICggJGlucHV0LnZhbCgpLmxlbmd0aCA9PSAwICYmICQoICcuc2xpZGViYXIgLmV2ZW50LWFyZ3VtZW50cyAuZXZlbnQtYXJndW1lbnQnICkubGVuZ3RoID4gMSApIHtcclxuXHRcdFx0JGlucHV0LnJlbW92ZSgpO1xyXG5cdFx0fVxyXG5cclxuXHR9ICk7XHJcblxyXG5cdCQoICcuc2xpZGViYXInICkub24oICdrZXl1cCcsICcuZXZlbnQtYXJndW1lbnRzIC5ldmVudC1hcmd1bWVudCcsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHR2YXIgJGlucHV0ID0gJCggdGhpcyApO1xyXG5cclxuXHRcdGlmICggZXZlbnQua2V5Q29kZSA9PSA4ICYmICRpbnB1dC52YWwoKS5sZW5ndGggPT0gMCAmJiAkKCAnLnNsaWRlYmFyIC5ldmVudC1hcmd1bWVudHMgLmV2ZW50LWFyZ3VtZW50JyApLmxlbmd0aCA+IDEgICkge1xyXG5cdFx0XHQkaW5wdXQuYmx1cigpO1xyXG5cdFx0fVxyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vIGFkZCB1c2VyIHRpbWV6b25lIG9mZnNldFxyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5hZGQucHJvY2VzcycsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50LWFkZC1wcm9jZXNzJywgZnVuY3Rpb24oICRmb3JtICkge1xyXG5cdFx0JGZvcm0uZmluZCggJyNldmVudC1vZmZzZXQnICkudmFsKCBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkgLyA2MCApO1xyXG5cdH0sIDUgKTtcclxuXHJcbn0gKSggalF1ZXJ5ICk7XHJcbiIsIlxyXG4oZnVuY3Rpb24gKCQpIHtcclxuXHJcblx0Ly8gLy8vLy8vLy8vLy9cclxuXHQvLyBTb3J0aW5nICAvL1xyXG5cdC8vIC8vLy8vLy8vLy8vXHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oXHJcblx0XHQnY2xpY2snLFxyXG5cdFx0JyNldmVudHMgLmhlYWRlciAuaXMtc29ydGFibGUnLFxyXG5cdFx0ZnVuY3Rpb24gKGV2ZW50KSB7XHJcblxyXG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdFx0dmFyIGV2ZW50X3Jvd3NfYmxvY2sgPSAkKCAnLmV2ZW50LXJvd3MtYmxvY2snICk7XHJcblx0XHRcdHZhciBldmVudF9yb3dzICAgICAgID0gZXZlbnRfcm93c19ibG9jay5jaGlsZHJlbigpO1xyXG5cdFx0XHR2YXIgY29sdW1uX25hbWUgICAgICA9ICQoIHRoaXMgKS5kYXRhKCAnbmFtZScgKTtcclxuXHRcdFx0dmFyIGNvbHVtbl9oZWFkZXJzICAgPSAkKCAnI2V2ZW50cyAuaGVhZGVyJyApLmZpbmQoIFwiW2RhdGEtbmFtZT0nXCIgKyBjb2x1bW5fbmFtZSArIFwiJ11cIiApO1xyXG5cclxuXHRcdFx0JC5lYWNoKFxyXG5cdFx0XHRcdGNvbHVtbl9oZWFkZXJzLFxyXG5cdFx0XHRcdGZ1bmN0aW9uICggaW5kZXgsIGl0ZW0gKSB7XHJcblx0XHRcdFx0XHRhc3NpZ25fb3JkZXJfY2xhc3MoIGl0ZW0gKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHRwcmVzZXJ2ZV9zb3J0aW5nKCAkKCB0aGlzICkgKTtcclxuXHJcblx0XHRcdGV2ZW50X3Jvd3Muc29ydCggZ2V0X2NvbXBhcmF0b3IoIGNvbHVtbl9uYW1lLCBnZXRfb3JkZXJfZGlyZWN0aW9uKCAkKCB0aGlzICkgKSApICk7XHJcblx0XHRcdGV2ZW50X3Jvd3NfYmxvY2suaHRtbCggZXZlbnRfcm93cyApO1xyXG5cdFx0fVxyXG5cdCk7XHJcblxyXG5cdGZ1bmN0aW9uIGdldF9jb21wYXJhdG9yICggY29sdW1uX25hbWUsIG9yZGVyICkge1xyXG5cdFx0c3dpdGNoICggY29sdW1uX25hbWUgKSB7XHJcblx0XHRcdGNhc2UgJ2V2ZW50JzpcclxuXHRcdFx0XHRyZXR1cm4gY29tcGFyZV9ieV9ldmVudF9uYW1lO1xyXG5cdFx0XHRjYXNlICdzY2hlZHVsZSc6XHJcblx0XHRcdFx0cmV0dXJuIGNvbXBhcmVfYnlfZXZlbnRfc2NoZWR1bGU7XHJcblx0XHRcdGNhc2UgJ25leHQtZXhlY3V0aW9uJzpcclxuXHRcdFx0XHRyZXR1cm4gY29tcGFyZV9ieV9ldmVudF9leGVjdXRpb247XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGZ1bmN0aW9uIGNvbXBhcmVfYnlfZXZlbnRfbmFtZShyb3cxLCByb3cyKSB7XHJcblx0XHRcdHJvdzEgPSAkKCByb3cxICkuZmluZCggJy5ldmVudC1uYW1lJyApLnRleHQoKS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRyb3cyID0gJCggcm93MiApLmZpbmQoICcuZXZlbnQtbmFtZScgKS50ZXh0KCkudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0cmV0dXJuIHJvdzEubG9jYWxlQ29tcGFyZSggcm93MiApICogb3JkZXI7XHJcblx0XHR9XHJcblxyXG5cdFx0ZnVuY3Rpb24gY29tcGFyZV9ieV9ldmVudF9zY2hlZHVsZShyb3cxLCByb3cyKSB7XHJcblx0XHRcdHJvdzEgPSBwYXJzZUludCggJCggcm93MSApLmZpbmQoICcuc2NoZWR1bGUnICkuZGF0YSggJ2ludGVydmFsJyApICk7XHJcblx0XHRcdHJvdzIgPSBwYXJzZUludCggJCggcm93MiApLmZpbmQoICcuc2NoZWR1bGUnICkuZGF0YSggJ2ludGVydmFsJyApICk7XHJcblx0XHRcdHJldHVybiByb3cxID09PSByb3cyID8gMCA6ICggcm93MSA+IHJvdzIgPyAxIDogLTEgKSAqIG9yZGVyO1xyXG5cdFx0fVxyXG5cclxuXHRcdGZ1bmN0aW9uIGNvbXBhcmVfYnlfZXZlbnRfZXhlY3V0aW9uKHJvdzEsIHJvdzIpIHtcclxuXHRcdFx0cm93MSA9IHBhcnNlSW50KCAkKCByb3cxICkuZmluZCggJy5uZXh0LWV4ZWN1dGlvbicgKS5kYXRhKCAndGltZScgKSApO1xyXG5cdFx0XHRyb3cyID0gcGFyc2VJbnQoICQoIHJvdzIgKS5maW5kKCAnLm5leHQtZXhlY3V0aW9uJyApLmRhdGEoICd0aW1lJyApICk7XHJcblx0XHRcdHJldHVybiByb3cxID09PSByb3cyID8gMCA6ICggcm93MSA+IHJvdzIgPyAxIDogLTEgKSAqIG9yZGVyO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gYXNzaWduX29yZGVyX2NsYXNzKCBjb2x1bW5faGVhZGVyICkge1xyXG5cdFx0aWYgKCAkKCBjb2x1bW5faGVhZGVyICkuaXMoICcuYXNjJyApIHx8ICQoIGNvbHVtbl9oZWFkZXIgKS5pcyggJy5kZXNjJyApICkge1xyXG5cdFx0XHQkKCBjb2x1bW5faGVhZGVyICkudG9nZ2xlQ2xhc3MoICdhc2MgZGVzYycgKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdCQoIGNvbHVtbl9oZWFkZXIgKS5hZGRDbGFzcyggJ2FzYycgKTtcclxuXHRcdH1cclxuXHRcdCQoIGNvbHVtbl9oZWFkZXIgKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCAnYXNjIGRlc2MnICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBwcmVzZXJ2ZV9zb3J0aW5nKCBjb2x1bW5faGVhZGVyICkge1xyXG5cdFx0XHR2YXIgdXJsX3BhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKTtcclxuXHRcdFx0dmFyIHNvcnQgICAgICAgPSBjb2x1bW5faGVhZGVyLmRhdGEoICduYW1lJyApO1xyXG5cdFx0XHR2YXIgb3JkZXIgICAgICA9IGNvbHVtbl9oZWFkZXIuaXMoICcuYXNjJyApID8gJ2FzYycgOiAnZGVzYyc7XHJcblxyXG5cdFx0XHR1cmxfcGFyYW1zLnNldCggJ3NvcnQnLCBzb3J0ICk7XHJcblx0XHRcdHVybF9wYXJhbXMuc2V0KCAnb3JkZXInLCAgb3JkZXIgKTtcclxuXHRcdFx0dmFyIHVybCA9IFwiP1wiICsgdXJsX3BhcmFtcy50b1N0cmluZygpO1xyXG5cclxuXHRcdFx0d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKCB7ICdzb3J0Jzogc29ydCwgJ29yZGVyJzogb3JkZXIgfSwgJycsIHVybCApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gZ2V0X29yZGVyX2RpcmVjdGlvbiggY29sdW1uX2hlYWRlciApIHtcclxuXHRcdGlmICggY29sdW1uX2hlYWRlci5pcyggJy5hc2MnICkgKSB7XHJcblx0XHRcdHJldHVybiAxO1xyXG5cdFx0fSBlbHNlIGlmICggY29sdW1uX2hlYWRlci5pcyggJy5kZXNjJyApICkge1xyXG5cdFx0XHRyZXR1cm4gLTE7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gMDtcclxuXHR9XHJcblxyXG5cclxuXHQvLyBzb3J0IGV2ZW50cyB0YWJsZSBieSBsYXN0IHNlbGVjdGVkIHNvcnRpbmcuXHJcblx0ZnVuY3Rpb24gZXZlbnRzX3RhYmxlX3ByZXNlcnZlZF9zb3J0KCkge1xyXG5cdFx0dmFyIGNvbHVtbl9uYW1lID0gZ2V0X3BhcmFtX2Zyb21fdXJsKCAnc29ydCcgKTtcclxuXHRcdHZhciBvcmRlcl9jbGFzcyA9IGdldF9wYXJhbV9mcm9tX3VybCggJ29yZGVyJyApO1xyXG5cclxuXHRcdGlmICggY29sdW1uX25hbWUgJiYgb3JkZXJfY2xhc3MgKSB7XHJcblx0XHRcdG9yZGVyX2NsYXNzID0gb3JkZXJfY2xhc3MgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xyXG5cdFx0XHQkKCAnLmNvbHVtbnMnICkuZmluZCggXCJbZGF0YS1uYW1lPSdcIiArIGNvbHVtbl9uYW1lICsgXCInXVwiIClcclxuXHRcdFx0XHQucmVtb3ZlQ2xhc3MoICdhc2MgZGVzYycgKVxyXG5cdFx0XHRcdC5hZGRDbGFzcyggb3JkZXJfY2xhc3MgKVxyXG5cdFx0XHRcdC5maXJzdCgpXHJcblx0XHRcdFx0LnRyaWdnZXIoICdjbGljaycgKTtcclxuXHRcdH1cclxuXHJcblx0XHRmdW5jdGlvbiBnZXRfcGFyYW1fZnJvbV91cmwoIGtleSApIHtcclxuXHRcdFx0dmFyIHVybF9wYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCB3aW5kb3cubG9jYXRpb24uc2VhcmNoICk7XHJcblx0XHRcdHJldHVybiB1cmxfcGFyYW1zLmdldCgga2V5ICk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBhcHBseSBwcmVzZXJ2ZWQgc29ydGluZyB3aGVuIHdpbmRvdyBpcyByZWxvYWRlZC5cclxuXHQkKCB3aW5kb3cgKS5yZWFkeSggZXZlbnRzX3RhYmxlX3ByZXNlcnZlZF9zb3J0ICk7XHJcblxyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5ldmVudC5zb3J0JywgJ2JyYWNrZXRzcGFjZS9hY20nLCBldmVudHNfdGFibGVfcHJlc2VydmVkX3NvcnQgKTtcclxuXHJcbn0pKCBqUXVlcnkgKTtcclxuIiwiKCBmdW5jdGlvbiggJCApIHtcclxuXHJcblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NoYW5nZScsICcjZXZlbnRzIC50YWJsZW5hdiAuc2NoZWR1bGVzLWZpbHRlcicsIGZ1bmN0aW9uKCkge1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLmZpbHRlci5zY2hlZHVsZScsICQoIHRoaXMgKS52YWwoKSApO1xyXG5cdH0gKTtcclxuXHJcblx0Ly8gZmlsdGVyIHRoZSBldmVudHMgbGlzdCB3aXRoIHNjaGVkdWxlXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50cy5maWx0ZXIuc2NoZWR1bGUnLCAnYnJhY2tldHNwYWNlL2FjbS9ldmVudHMtZmlsdGVyLXNjaGVkdWxlJywgZnVuY3Rpb24oIHNjaGVkdWxlICkge1xyXG5cclxuXHRcdCQoICcjZXZlbnRzIC5ldmVudHMgLnNpbmdsZS1ldmVudC5yb3cnICkuZWFjaCggZnVuY3Rpb24oKSB7XHJcblxyXG5cdFx0XHR2YXIgJHJvdyA9ICQoIHRoaXMgKTtcclxuXHRcdFx0dmFyIGV2ZW50X3NjaGVkdWxlID0gJHJvdy5kYXRhKCAnc2NoZWR1bGUnICk7XHJcblxyXG5cdFx0XHRpZiAoIGV2ZW50X3NjaGVkdWxlID09IHNjaGVkdWxlIHx8IHNjaGVkdWxlID09ICcnICkge1xyXG5cdFx0XHRcdCRyb3cuc2hvdygpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdCRyb3cuaGlkZSgpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0fSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vIGNsZWFyIGZpbHRlcnMgd2hpbGUgdXNpbmcgc2VhcmNoXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50cy5zZWFyY2gudHJpZ2dlcmVkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnRzLXNlYXJjaC10cmlnZ2VyZWQnLCBmdW5jdGlvbigpIHtcclxuXHRcdCQoICcjZXZlbnRzIC50YWJsZW5hdiAuc2NoZWR1bGVzLWZpbHRlcicgKS52YWwoICcnICk7XHJcblx0fSApO1xyXG5cclxufSApKCBqUXVlcnkgKTtcclxuIiwiKCBmdW5jdGlvbiggJCApIHtcclxuXHJcblx0Ly8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cdC8vIGZvcm0gcmVxdWVzdHMgLy9cclxuXHQvLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5cdCQoICcudG9vbHNfcGFnZV9hZHZhbmNlZC1jcm9uLW1hbmFnZXInICkub24oICdjbGljaycsICcuYWRkLXNjaGVkdWxlJywgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zY2hlZHVsZS5hZGQnLCAkKHRoaXMpICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJyNzY2hlZHVsZXMgLnNpbmdsZS1zY2hlZHVsZSAuYWN0aW9ucyAuZWRpdC1zY2hlZHVsZScsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuZWRpdCcsICQodGhpcykucGFyZW50cyggJy5zaW5nbGUtc2NoZWR1bGUnICkuZmlyc3QoKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cdC8vIEZvcm0gcHJvY2Vzc2luZyAvL1xyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuXHQkKCAnLnNsaWRlYmFyJyApLm9uKCAnc3VibWl0JywgJy5zY2hlZHVsZS1hZGQnLCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblxyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZC5wcm9jZXNzJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdCQoICcuc2xpZGViYXInICkub24oICdzdWJtaXQnLCAnLnNjaGVkdWxlLWVkaXQnLCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblxyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmVkaXQucHJvY2VzcycsICQodGhpcykgKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQkKCAnLnRvb2xzX3BhZ2VfYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyJyApLm9uKCAnY2xpY2snLCAnI3NjaGVkdWxlcyAuc2luZ2xlLXNjaGVkdWxlIC5hY3Rpb25zIC5yZW1vdmUtc2NoZWR1bGUnLCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblxyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLnJlbW92ZS5wcm9jZXNzJywgJCh0aGlzKS5wYXJlbnRzKCAnLnNpbmdsZS1zY2hlZHVsZScgKS5maXJzdCgpICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8vLy8vLy8vLy8vL1xyXG5cdC8vIEFjdGlvbnMgLy9cclxuXHQvLy8vLy8vLy8vLy8vXHJcblxyXG5cdC8vIGFkZCBzY2hlZHVsZVxyXG5cdHdwLmhvb2tzLmFkZEFjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zY2hlZHVsZS5hZGQnLCAnYnJhY2tldHNwYWNlL2FjbS9zY2hlZHVsZS1hZGQnLCBmdW5jdGlvbiggJGJ1dHRvbiApIHtcclxuXHJcblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIub3BlbigpO1xyXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLndhaXQoKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHQgICAgICAgICdhY3Rpb24nOiAnYWNtL3NjaGVkdWxlL2FkZC9mb3JtJyxcclxuXHQgICAgICAgICdub25jZScgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKVxyXG5cdCAgICB9O1xyXG5cclxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCBkYXRhLCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblx0ICAgICAgICBhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZnVsZmlsbCggcmVzcG9uc2UuZGF0YSApO1xyXG5cdCAgICB9ICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZC5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtYWRkLXByb2Nlc3MnLCBmdW5jdGlvbiggJGZvcm0gKSB7XHJcblxyXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmZvcm1fcHJvY2Vzc19zdGFydCgpO1xyXG5cclxuXHRcdHZhciBkYXRhID0ge1xyXG5cdCAgICAgICAgJ2FjdGlvbic6ICdhY20vc2NoZWR1bGUvaW5zZXJ0JyxcclxuXHQgICAgICAgICdub25jZScgOiAkZm9ybS5maW5kKCAnI25vbmNlJyApLnZhbCgpLFxyXG5cdCAgICAgICAgJ2RhdGEnICA6ICRmb3JtLnNlcmlhbGl6ZSgpXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHJcblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XHJcblxyXG5cdCAgICAgICAgaWYgKCByZXNwb25zZS5zdWNjZXNzID09IHRydWUgKSB7XHJcblx0ICAgICAgICBcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZGVkJywgJGZvcm0uZmluZCggJyNzY2hlZHVsZS1zbHVnJyApLnZhbCgpICk7XHJcblx0ICAgICAgICB9IGVsc2Uge1xyXG5cdCAgICAgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0b3AoKTtcclxuXHQgICAgICAgIH1cclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyBlZGl0IHNjaGVkdWxlXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmVkaXQnLCAnYnJhY2tldHNwYWNlL2FjbS9zY2hlZHVsZS1lZGl0JywgZnVuY3Rpb24oICRyb3cgKSB7XHJcblxyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcblx0XHR2YXIgJGJ1dHRvbiA9ICRyb3cuZmluZCggJy5hY3Rpb25zIC5lZGl0LXNjaGVkdWxlJyApO1xyXG5cdFx0dmFyIHNjaGVkdWxlX25hbWUgPSAkYnV0dG9uLmRhdGEoICdzY2hlZHVsZScgKTtcclxuXHJcblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIub3BlbigpO1xyXG5cdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLndhaXQoKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHQgICAgICAgICdhY3Rpb24nICA6ICdhY20vc2NoZWR1bGUvZWRpdC9mb3JtJyxcclxuXHQgICAgICAgICdub25jZScgICA6ICRidXR0b24uZGF0YSggJ25vbmNlJyApLFxyXG5cdCAgICAgICAgJ3NjaGVkdWxlJzogc2NoZWR1bGVfbmFtZVxyXG5cdCAgICB9O1xyXG5cclxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCBkYXRhLCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblx0ICAgICAgICBhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZnVsZmlsbCggcmVzcG9uc2UuZGF0YSApO1xyXG5cdCAgICB9ICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmVkaXQucHJvY2VzcycsICdicmFja2V0c3BhY2UvYWNtL3NjaGVkdWxlLWVkaXQtcHJvY2VzcycsIGZ1bmN0aW9uKCAkZm9ybSApIHtcclxuXHJcblx0XHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0YXJ0KCk7XHJcblxyXG5cdFx0dmFyIGRhdGEgPSB7XHJcblx0ICAgICAgICAnYWN0aW9uJzogJ2FjbS9zY2hlZHVsZS9lZGl0JyxcclxuXHQgICAgICAgICdub25jZScgOiAkZm9ybS5maW5kKCAnI25vbmNlJyApLnZhbCgpLFxyXG5cdCAgICAgICAgJ2RhdGEnICA6ICRmb3JtLnNlcmlhbGl6ZSgpXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHJcblx0ICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XHJcblxyXG5cdCAgICAgICAgaWYgKCByZXNwb25zZS5zdWNjZXNzID09IHRydWUgKSB7XHJcblx0ICAgICAgICBcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmVkaXRlZCcsICRmb3JtLmZpbmQoICcjc2NoZWR1bGUtc2x1ZycgKS52YWwoKSApO1xyXG5cdCAgICAgICAgfSBlbHNlIHtcclxuXHQgICAgICAgIFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmZvcm1fcHJvY2Vzc19zdG9wKCk7XHJcblx0ICAgICAgICB9XHJcblxyXG5cdCAgICB9ICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8gcmVtb3ZlIHNjaGVkdWxlXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLnJlbW92ZS5wcm9jZXNzJywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtcmVtb3ZlLXByb2Nlc3MnLCBmdW5jdGlvbiggJHJvdyApIHtcclxuXHJcblx0XHR2YXIgJGJ1dHRvbiA9ICRyb3cuZmluZCggJy5hY3Rpb25zIC5yZW1vdmUtc2NoZWR1bGUnICk7XHJcblxyXG5cdFx0JGJ1dHRvbi5hZGRDbGFzcyggJ3dvcmtpbmcnICk7XHJcblxyXG5cdFx0dmFyIHNjaGVkdWxlX25hbWUgPSAkYnV0dG9uLmRhdGEoICdzY2hlZHVsZScgKTtcclxuXHJcblx0ICAgIHZhciBkYXRhID0ge1xyXG5cdCAgICAgICAgJ2FjdGlvbicgIDogJ2FjbS9zY2hlZHVsZS9yZW1vdmUnLFxyXG5cdCAgICAgICAgJ25vbmNlJyAgIDogJGJ1dHRvbi5kYXRhKCAnbm9uY2UnICksXHJcblx0ICAgICAgICAnc2NoZWR1bGUnOiBzY2hlZHVsZV9uYW1lXHJcblx0ICAgIH07XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIGRhdGEsIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcclxuXHJcblx0ICAgICAgICBhZHZhbmNlZF9jcm9uX21hbmFnZXIuYWpheF9tZXNzYWdlcyggcmVzcG9uc2UgKTtcclxuXHJcblx0ICAgICAgICBpZiAoIHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcclxuXHQgICAgICAgIFx0JHJvdy5zbGlkZVVwKCk7XHJcblx0ICAgICAgICBcdHdwLmhvb2tzLmRvQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLnJlbW92ZWQnLCBzY2hlZHVsZV9uYW1lICk7XHJcblx0ICAgICAgICB9IGVsc2Uge1xyXG5cdCAgICAgICAgXHQkYnV0dG9uLnJlbW92ZUNsYXNzKCAnd29ya2luZycgKTtcclxuXHQgICAgICAgIH1cclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLyByZWZyZXNoIHRhYmxlIGFuZCBjbG9zZSBzbGlkZWJhclxyXG5cdHZhciBzY2hlZHVsZXNfdGFibGVfcmVyZW5kZXIgPSBmdW5jdGlvbigpIHtcclxuXHJcblx0XHQkKCAnI3NjaGVkdWxlcycgKS5hZGRDbGFzcyggJ2xvYWRpbmcnICk7XHJcblxyXG5cdCAgICAkLnBvc3QoIGFqYXh1cmwsIHsgJ2FjdGlvbic6ICdhY20vcmVyZW5kZXIvc2NoZWR1bGVzJyB9LCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblx0ICAgIFx0JCggJyNzY2hlZHVsZXMnICkucmVwbGFjZVdpdGgoIHJlc3BvbnNlLmRhdGEgKTtcclxuXHQgICAgXHRhZHZhbmNlZF9jcm9uX21hbmFnZXIuc2xpZGViYXIuZm9ybV9wcm9jZXNzX3N0b3AoKTtcclxuXHRcdFx0YWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLnNsaWRlYmFyLmNsb3NlKCk7XHJcblx0ICAgIH0gKTtcclxuXHJcblx0fTtcclxuXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLnNjaGVkdWxlLmFkZGVkJywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtYWRkZWQnLCBzY2hlZHVsZXNfdGFibGVfcmVyZW5kZXIgKTtcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2NoZWR1bGUuZWRpdGVkJywgJ2JyYWNrZXRzcGFjZS9hY20vc2NoZWR1bGUtZWRpdGVkJywgc2NoZWR1bGVzX3RhYmxlX3JlcmVuZGVyICk7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy9cclxuXHQvLyBIZWxwZXJzIC8vXHJcblx0Ly8vLy8vLy8vLy8vL1xyXG5cclxuXHQvLyBhZGQgc2NoZWR1bGUgZm9ybSBoZWxwZXJzXHJcblx0JCggJy5zbGlkZWJhcicgKS5vbiggJ2JsdXInLCAnI3NjaGVkdWxlLW5hbWUnLCBmdW5jdGlvbigpIHtcclxuXHRcdHZhciBuYW1lID0gJCh0aGlzKS52YWwoKTtcclxuXHRcdGlmICggJCggJy5zbGlkZWJhciAjc2NoZWR1bGUtc2x1ZycgKS52YWwoKSA9PSAnJyApIHtcclxuXHRcdFx0dmFyIHNsdWcgPSBuYW1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIC8gL2csICdfJyApO1xyXG5cdFx0XHQkKCAnLnNsaWRlYmFyICNzY2hlZHVsZS1zbHVnJyApLnZhbCggc2x1ZyApO1xyXG5cdFx0fVxyXG5cdH0gKTtcclxuXHJcblx0JCggJy5zbGlkZWJhcicgKS5vbiggJ2NoYW5nZScsICd0YWJsZSAuc3BpbmJveCcsIGZ1bmN0aW9uKCkge1xyXG5cclxuXHRcdHZhciBzZWNvbmRzID0gMDtcclxuXHJcblx0XHQkKCAnLnNsaWRlYmFyIHRhYmxlIC5zcGluYm94JyApLmVhY2goIGZ1bmN0aW9uKCkge1xyXG5cclxuXHRcdFx0dmFyICRpbnB1dCA9ICQoIHRoaXMgKTtcclxuXHJcblx0XHRcdGlmICggJGlucHV0Lmhhc0NsYXNzKCAnZGF5cycgKSApIHtcclxuXHRcdFx0XHR2YXIgbXVsdGlwbGllciA9IDg2NDAwO1xyXG5cdFx0XHR9IGVsc2UgaWYgKCAkaW5wdXQuaGFzQ2xhc3MoICdob3VycycgKSApIHtcclxuXHRcdFx0XHR2YXIgbXVsdGlwbGllciA9IDM2MDA7XHJcblx0XHRcdH0gZWxzZSBpZiAoICRpbnB1dC5oYXNDbGFzcyggJ21pbnV0ZXMnICkgKSB7XHJcblx0XHRcdFx0dmFyIG11bHRpcGxpZXIgPSA2MDtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR2YXIgbXVsdGlwbGllciA9IDE7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHNlY29uZHMgPSBzZWNvbmRzICsgKCAkaW5wdXQudmFsKCkgKiBtdWx0aXBsaWVyICk7XHJcblxyXG5cdFx0fSApO1xyXG5cclxuXHRcdCQoICcuc2xpZGViYXIgLnRvdGFsLXNlY29uZHMgc3BhbicgKS50ZXh0KCBzZWNvbmRzICk7XHJcblx0XHQkKCAnLnNsaWRlYmFyIC5pbnRlcnZhbC1pbnB1dCcgKS52YWwoIHNlY29uZHMgKTtcclxuXHJcblx0fSApO1xyXG5cclxufSApKCBqUXVlcnkgKTtcclxuIiwiKCBmdW5jdGlvbiggJCApIHtcclxuXHJcblx0dmFyIHNlYXJjaF9pbnB1dF9kZWxheSA9IDQwMCxcclxuXHRcdHRpbWVyO1xyXG5cclxuXHQkKCAnI3NlYXJjaCcgKS5iaW5kKCAnaW5wdXQnLCBmdW5jdGlvbigpIHtcclxuXHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVyICk7XHJcblx0XHR0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcclxuXHRcdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLnNlYXJjaC50cmlnZ2VyZWQnLCAkKCAnI3NlYXJjaCcgKS52YWwoKSApO1xyXG5cdFx0fSwgc2VhcmNoX2lucHV0X2RlbGF5ICk7XHJcblx0fSApO1xyXG5cclxuXHQvLyBmaWx0ZXIgdGhlIGV2ZW50cyBsaXN0XHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50cy5zZWFyY2gudHJpZ2dlcmVkJywgJ2JyYWNrZXRzcGFjZS9hY20vZXZlbnRzLXNlYXJjaC10cmlnZ2VyZWQnLCBmdW5jdGlvbiggc2VhcmNoX3dvcmQgKSB7XHJcblxyXG5cdFx0JCggJyNldmVudHMgLmV2ZW50cyAuc2luZ2xlLWV2ZW50LnJvdycgKS5lYWNoKCBmdW5jdGlvbigpIHtcclxuXHJcblx0XHRcdHZhciAkcm93ID0gJCggdGhpcyApO1xyXG5cdFx0XHR2YXIgZXZlbnRfbmFtZSA9ICRyb3cuZmluZCggJy5jb2x1bW5zIC5ldmVudCAuZXZlbnQtbmFtZScgKS50ZXh0KCk7XHJcblxyXG5cdFx0XHRpZiAoIGV2ZW50X25hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCBzZWFyY2hfd29yZC50b0xvd2VyQ2FzZSgpICkgPT0gLTEgKSB7XHJcblx0XHRcdFx0JHJvdy5oaWRlKCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0JHJvdy5zaG93KCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHR9ICk7XHJcblxyXG5cdH0gKTtcclxuXHJcblx0Ly8gY2xlYXIgc2VhcmNoIGlucHV0IHdoaWxlIHVzaW5nIGZpbHRlcnNcclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnRzLmZpbHRlci5zY2hlZHVsZScsICdicmFja2V0c3BhY2UvYWNtL2V2ZW50cy1maWx0ZXItc2NoZWR1bGUnLCBmdW5jdGlvbigpIHtcclxuXHRcdCQoICcjc2VhcmNoJyApLnZhbCggJycgKTtcclxuXHR9ICk7XHJcblxyXG5cdC8vIHByZXNlcnZlIHNlYXJjaCB2YWx1ZS5cclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oXHJcblx0XHQnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50cy5zZWFyY2gudHJpZ2dlcmVkJyxcclxuXHRcdCdicmFja2V0c3BhY2UvYWNtJyxcclxuXHRcdGZ1bmN0aW9uKCB2YWx1ZSApIHtcclxuXHRcdFx0dmFyIHVybF9wYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCB3aW5kb3cubG9jYXRpb24uc2VhcmNoICk7XHJcblxyXG5cdFx0XHRpZiAoIHZhbHVlICE9PSBcIlwiKSB7XHJcblx0XHRcdFx0dXJsX3BhcmFtcy5zZXQoICdldmVudC1zZWFyY2gnLCB2YWx1ZSApO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHVybF9wYXJhbXMuZGVsZXRlKCAnZXZlbnQtc2VhcmNoJyApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR2YXIgdXJsID0gXCI/XCIgKyB1cmxfcGFyYW1zLnRvU3RyaW5nKCk7XHJcblx0XHRcdHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSggeyAnZXZlbnQtc2VhcmNoJzogdmFsdWUgfSwgJycsIHVybCApO1xyXG5cdFx0fVxyXG5cdCk7XHJcblxyXG5cdC8vIGFwcGx5IHNlYXJjaCB0byBldmVudHMgdGFibGUgYnkgbGFzdCBzZWFyY2ggdmFsdWUuXHJcblx0ZnVuY3Rpb24gZXZlbnRzX3RhYmxlX3ByZXNlcnZlZF9zZWFyY2ggKCkge1xyXG5cdFx0dmFyIHVybF9wYXJhbXMgICA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKTtcclxuXHRcdHZhciBzZWFyY2hfcGFyYW0gPSB1cmxfcGFyYW1zLmdldCggJ2V2ZW50LXNlYXJjaCcgKTtcclxuXHJcblx0XHRpZiAoIHNlYXJjaF9wYXJhbSAhPT0gbnVsbCAmJiBzZWFyY2hfcGFyYW0gIT09IFwiXCIpIHtcclxuXHRcdFx0JCggJyNzZWFyY2gnICkudmFsKCBzZWFyY2hfcGFyYW0gKS50cmlnZ2VyKCAnaW5wdXQnICk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBhcHBseSBwcmVzZXJ2ZWQgc29ydGluZyB3aGVuIHdpbmRvdyBpcyByZWxvYWRlZC5cclxuXHQkKCB3aW5kb3cgKS5yZWFkeSggZXZlbnRzX3RhYmxlX3ByZXNlcnZlZF9zZWFyY2ggKTtcclxuXHJcblx0d3AuaG9va3MuYWRkQWN0aW9uKCAnYWR2YW5jZWQtY3Jvbi1tYW5hZ2VyLmV2ZW50LnNlYXJjaCcsICdicmFja2V0c3BhY2UvYWNtJywgZXZlbnRzX3RhYmxlX3ByZXNlcnZlZF9zZWFyY2ggKTtcclxuXHJcbn0gKSggalF1ZXJ5ICk7XHJcbiIsIiggZnVuY3Rpb24oICQgKSB7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cdC8vIEZvcm0gcHJvY2Vzc2luZyAvL1xyXG5cdC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuXHQkKCAnI3NlcnZlci1zZXR0aW5ncy1mb3JtJyApLm9uKCAnc3VibWl0JywgZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR3cC5ob29rcy5kb0FjdGlvbiggJ2FkdmFuY2VkLWNyb24tbWFuYWdlci5zZXJ2ZXIuc2V0dGluZ3MuYWN0aW9uJywgJCh0aGlzKSApO1xyXG5cclxuXHR9ICk7XHJcblxyXG5cdC8vLy8vLy8vLy8vLy9cclxuXHQvLyBBY3Rpb25zIC8vXHJcblx0Ly8vLy8vLy8vLy8vL1xyXG5cclxuXHR3cC5ob29rcy5hZGRBY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuc2VydmVyLnNldHRpbmdzLmFjdGlvbicsICdicmFja2V0c3BhY2UvYWNtL3NlcnZlci1zZXR0aW5ncy1hY3Rpb24nLCBmdW5jdGlvbiggJGZvcm0gKSB7XHJcblxyXG5cdFx0dmFyICRidXR0b24gPSAkZm9ybS5maW5kKCAnLmJ1dHRvbi1zZWNvbmRhcnknICkuZmlyc3QoKTtcclxuXHJcblx0XHR2YXIgZGF0YSA9IHtcclxuXHRcdFx0J2FjdGlvbicgOiAnYWNtL3NlcnZlci9zZXR0aW5ncy9zYXZlJyxcclxuXHRcdFx0J2RhdGEnICAgOiAkZm9ybS5zZXJpYWxpemUoKSxcclxuXHRcdFx0J25vbmNlJyAgOiAkYnV0dG9uLmRhdGEoICdub25jZScgKVxyXG5cdCAgICB9O1xyXG5cclxuXHQgICAgdmFyIGJ1dHRvbl9sYWJlbCA9ICRidXR0b24udmFsKCk7XHJcblxyXG5cdCAgICAkYnV0dG9uLnZhbCggYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmkxOG4uc2F2aW5nICk7XHJcblx0ICAgICRidXR0b24uYXR0ciggJ2Rpc2FibGVkJywgdHJ1ZSApO1xyXG5cclxuXHQgICAgJC5wb3N0KCBhamF4dXJsLCBkYXRhLCBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XHJcblxyXG5cdCAgICAgICAgYWR2YW5jZWRfY3Jvbl9tYW5hZ2VyLmFqYXhfbWVzc2FnZXMoIHJlc3BvbnNlICk7XHJcblxyXG5cdCAgICAgICAgJGJ1dHRvbi52YWwoIGJ1dHRvbl9sYWJlbCApO1xyXG5cdFx0ICAgICRidXR0b24uYXR0ciggJ2Rpc2FibGVkJywgZmFsc2UgKTtcclxuXHJcblx0ICAgIH0gKTtcclxuXHJcblx0fSApO1xyXG5cclxuXHQvLy8vLy8vLy8vLy8vXHJcblx0Ly8gSGVscGVycyAvL1xyXG5cdC8vLy8vLy8vLy8vLy9cclxuXHJcblx0JCggJyNzZXJ2ZXItc2V0dGluZ3MtZm9ybScgKS5vbiggJ2NoYW5nZScsICcubWFzdGVyLXNldHRpbmcgaW5wdXQnLCBmdW5jdGlvbigpIHtcclxuXHJcblx0XHRpZiAoIHRoaXMuY2hlY2tlZCApIHtcclxuXHRcdFx0JCggdGhpcyApLnBhcmVudCgpLm5leHRBbGwoICcuZGVwZW5kYW50cycgKS5zaG93KCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQkKCB0aGlzICkucGFyZW50KCkubmV4dEFsbCggJy5kZXBlbmRhbnRzJyApLmhpZGUoKTtcclxuXHRcdH1cclxuXHJcblx0fSApO1xyXG5cclxufSApKCBqUXVlcnkgKTtcclxuIiwiKCBmdW5jdGlvbiggJCApIHtcclxuXHJcblx0JCggJy50b29sc19wYWdlX2FkdmFuY2VkLWNyb24tbWFuYWdlcicgKS5vbiggJ2NsaWNrJywgJyNldmVudHMgLmRldGFpbHMgLnRhYnMgYScsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdHZhciB0YXJnZXQgPSAkKCB0aGlzICkuZGF0YSggJ3NlY3Rpb24nICk7XHJcblxyXG5cdFx0dmFyICRkZXRhaWxzID0gJCggdGhpcyApLnBhcmVudHMoICcuZGV0YWlscycgKS5maXJzdCgpO1xyXG5cclxuXHRcdCRkZXRhaWxzLmZpbmQoICcudGFicyBsaS5hY3RpdmUnICkucmVtb3ZlQ2xhc3MoICdhY3RpdmUnICk7XHJcblx0XHQkKCB0aGlzICkucGFyZW50KCkuYWRkQ2xhc3MoICdhY3RpdmUnICk7XHJcblxyXG5cdFx0JGRldGFpbHMuZmluZCggJy5jb250ZW50LmFjdGl2ZScgKS5yZW1vdmVDbGFzcyggJ2FjdGl2ZScgKTtcclxuXHRcdCRkZXRhaWxzLmZpbmQoICcuY29udGVudC4nICsgdGFyZ2V0ICkuYWRkQ2xhc3MoICdhY3RpdmUnICk7XHJcblxyXG5cdFx0d3AuaG9va3MuZG9BY3Rpb24oICdhZHZhbmNlZC1jcm9uLW1hbmFnZXIuZXZlbnQuZGV0YWlscy50YWJzLmNoYW5nZWQnLCB0YXJnZXQgKTtcclxuXHJcblx0fSApO1xyXG5cclxufSApKCBqUXVlcnkgKTtcclxuIl19 .elementor-tab-title a{color:inherit}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-shrink:0;width:25%}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active{border-inline-end-style:none}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{border-inline-end-style:solid;height:999em;left:0;width:0}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:before{top:0;transform:translateY(-100%)}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tab-desktop-title.elementor-active:after{top:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title{display:table-cell}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active{border-bottom-style:none}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{border-bottom-style:solid;bottom:0;height:0;width:999em}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:before{right:100%}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-desktop-title.elementor-active:after{left:100%}.elementor-widget-tabs .elementor-tab-content,.elementor-widget-tabs .elementor-tab-title,.elementor-widget-tabs .elementor-tab-title:after,.elementor-widget-tabs .elementor-tab-title:before,.elementor-widget-tabs .elementor-tabs-content-wrapper{border:1px #d5d8dc}.elementor-widget-tabs .elementor-tabs{text-align:start}.elementor-widget-tabs .elementor-tabs-wrapper{overflow:hidden}.elementor-widget-tabs .elementor-tab-title{cursor:pointer;outline:var(--focus-outline,none)}.elementor-widget-tabs .elementor-tab-desktop-title{border:solid transparent;font-weight:700;line-height:1;padding:20px 25px;position:relative}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{border-color:#d5d8dc}.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:after,.elementor-widget-tabs .elementor-tab-desktop-title.elementor-active:before{content:"";display:block;position:absolute}.elementor-widget-tabs .elementor-tab-desktop-title:focus-visible{border:1px solid #000}.elementor-widget-tabs .elementor-tab-mobile-title{cursor:pointer;padding:10px}.elementor-widget-tabs .elementor-tab-content{display:none;padding:20px}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-tabs .elementor-tab-content,.elementor-tabs .elementor-tab-title{border-style:solid solid none}.elementor-tabs .elementor-tabs-wrapper{display:none}.elementor-tabs .elementor-tabs-content-wrapper{border-bottom-style:solid}.elementor-tabs .elementor-tab-content{padding:10px}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs{display:flex}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-wrapper{flex-direction:column}.elementor-widget-tabs.elementor-tabs-view-vertical .elementor-tabs-content-wrapper{border-style:solid none solid solid;flex-grow:1}.elementor-widget-tabs.elementor-tabs-view-horizontal .elementor-tab-content{border-style:none solid solid}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper,.elementor-widget-tabs.elementor-tabs-alignment-stretch .elementor-tabs-wrapper{display:flex}.elementor-widget-tabs.elementor-tabs-alignment-center .elementor-tabs-wrapper{justify-content:center}.elementor-widget-tabs.elementor-tabs-alignment-end .elementor-tabs-wrapper{justify-content:flex-end}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-horizontal .elementor-tab-title{width:100%}.elementor-widget-tabs.elementor-tabs-alignment-stretch.elementor-tabs-view-vertical .elementor-tab-title{height:100%}.elementor-tabs .elementor-tab-mobile-title{display:none}} Events - American Federation of Teachers New Jersey, AFL-CIO - Part 2

Filters

Changing any of the form inputs will cause the list of events to refresh with the filtered results.