diff --git a/Resources/Public/JavaScript/main.js b/Resources/Public/JavaScript/main.js old mode 100644 new mode 100755 index c744042..03c07b5 --- a/Resources/Public/JavaScript/main.js +++ b/Resources/Public/JavaScript/main.js @@ -3037,14 +3037,22 @@ imageClass: 'zoombox-image', innerClass: 'zoombox-inner', listenKeys: true, + showAsGallery: false, sliderDraggable: true, sliderLooped: true, - sliderNextButton: '', - sliderPrevButton: '', + sliderNextButton: '', + sliderPrevButton: '', slideTransition: 'ease', slideTransitionSpeed: 300, temporary: false, - wrapperClass: 'zoombox-image-wrapper' + wrapperClass: 'zoombox-image-wrapper', + } + + var state = { + initialized: false, + visible: false, + currentSlide: undefined, + slideCount: undefined, } $.fn.zoombox = function(options) { @@ -3063,9 +3071,9 @@ } if(options.temporary) { - var overlay = $(document.body).append('
×
').find('#'+options.containerId+'-temp'); + var overlay = $(document.body).append('
×
').find('#' + options.containerId + '-temp'); } else { - var overlay = $(document.body).append('
×
').find('#'+options.containerId); + var overlay = $(document.body).append('
×
').find('#' + options.containerId); } var inner = overlay.find('.'+options.innerClass); @@ -3079,6 +3087,7 @@ overlay.remove(); } else { inner.slick('slickUnfilter',0); + state.visible = false; } overlay.trigger('zoomboxOverlayHidden'); }); @@ -3094,6 +3103,7 @@ overlay.remove(); } else { inner.slick('slickUnfilter',0); + state.visible = false; } overlay.trigger('zoomboxOverlayHidden'); }); @@ -3126,17 +3136,17 @@ if(!options.temporary) { $(this[i]).attr('data-index',i).on('click',function (event) { - if($(this).is('a')) { - event.preventDefault(); - } + event.preventDefault(); overlay.trigger('zoomboxOverlayShowing'); overlay.fadeIn(options.fadeDuration,function () { + state.visible = true; overlay.trigger('zoomboxOverlayShown'); }); inner.slick('slickGoTo',$(this).data('index'),true); + state.currentSlide = inner.slick('slickCurrentSlide'); if($(this).attr('rel') !== undefined) { var rel = $(this).attr('rel'); @@ -3147,30 +3157,32 @@ } else { var _this = this; - if(options.forceSourceAttr) { - var src = $(_this).attr(options.forceSourceAttr); - } else { - if($(_this).is('a')) { - var src = $(_this).attr('href'); - } else if($(_this).is('img')) { - var src = $(_this).attr('src'); + if (options.showAsGallery == false) { + if (options.forceSourceAttr) { + var src = $(_this).attr(options.forceSourceAttr); } else { - var src = $(_this).data('src'); + if ($(_this).is('a')) { + var src = $(_this).attr('href'); + } else if ($(_this).is('img')) { + var src = $(_this).attr('src'); + } else { + var src = $(_this).data('src'); + } } - } - inner.slick('slickFilter',function () { - return ($(this).find('img').attr('src') === src); - }) + inner.slick('slickFilter', function () { + return ($(this).find('img').attr('src') === src); + }) + } } - setTimeout(function () { - if(options.centerImages) { - inner.find('.slick-slide').each(function (i,e,a) { - $(this).css('margin-top',(inner.outerHeight() - $(this).outerHeight()) / 2); + if (options.centerImages) { + setTimeout(function () { + inner.find('.slick-slide').each(function (i, e, a) { + $(this).css('margin-top', (inner.outerHeight() - $(this).outerHeight()) / 2); }) - } - },50); + }, 50); + } $(window).trigger('resize'); }) @@ -3184,14 +3196,15 @@ draggable: options.sliderDraggable, infinite: options.sliderLooped, mobileFirst: false, //TODO: Test this option - nextArrow: options.sliderNextButton, + nextArrow: '', pauseOnHover: options.disableAutoplayOnHover, - prevArrow: options.sliderPrevButton, + prevArrow: '', speed: options.slideTransitionSpeed, touchMove: !options.disableTouchMove, waitForAnimate: options.ignoreInputOnMove }).on('afterChange',function (e) { - overlay.trigger('zoomboxChanged'); + state.currentSlide = inner.slick('slickCurrentSlide'); + if(state.visible) overlay.trigger('zoomboxChanged'); }) if(options.listenKeys) { @@ -3203,6 +3216,7 @@ inner.slick('unslick'); overlay.remove(); } else { + state.visible = false; inner.slick('slickUnfilter',0); } overlay.trigger('zoomboxOverlayHidden'); @@ -3235,6 +3249,8 @@ $(window).trigger('resize'); } + state.initialized = true; + if(options.enforceChaining) { return this; } else { @@ -3242,6 +3258,18 @@ } }; + window.zoombox = { + isInitialized: function () { + return state.initialized; + }, + isVisible: function () { + return state.visible; + }, + getCurrentSlide: function () { + return state.currentSlide; + } + } + }( jQuery )); $(function() { diff --git a/Resources/Public/JavaScript/main.min.js b/Resources/Public/JavaScript/main.min.js old mode 100644 new mode 100755 index af19d2a..9e464de --- a/Resources/Public/JavaScript/main.min.js +++ b/Resources/Public/JavaScript/main.min.js @@ -1,3 +1,3 @@ !function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};e=function(){function e(e,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(e),appendDots:i(e),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('',sliderPrevButton:'',slideTransition:"ease",slideTransitionSpeed:300,temporary:!1,wrapperClass:"zoombox-image-wrapper"};i.fn.zoombox=function(t){if(void 0!==t&&"object"==typeof t)for(var o in e)!e.hasOwnProperty(o)||void 0!==t[o]&&typeof e[o]==typeof t[o]||(void 0!==t[o]&&typeof e[o]!=typeof t[o]&&console.warn("[ZoomBox.js] Replaced invalid option "+o+" with default value!"),t[o]=e[o]);else t=e;if(t.temporary)var s=i(document.body).append('
×
').find("#"+t.containerId+"-temp");else var s=i(document.body).append('
×
').find("#"+t.containerId);var n=s.find("."+t.innerClass);t.closeOnBlurClick?s.on("click",function(e){i(e.target).is(".slick-slide *, .slick-arrow, .slick-arrow *")||(s.trigger("zoomboxOverlayHiding"),s.fadeOut(t.fadeDuration,function(){t.temporary?(n.slick("unslick"),s.remove()):n.slick("slickUnfilter",0),s.trigger("zoomboxOverlayHidden")}))}):s.on("click",function(e){i(e.target).is("."+t.buttonClass)&&(s.trigger("zoomboxOverlayHiding"),s.fadeOut(t.fadeDuration,function(){t.temporary?(n.slick("unslick"),s.remove()):n.slick("slickUnfilter",0),s.trigger("zoomboxOverlayHidden")}))});for(var r=0;r",n.append(d),t.temporary||i(this[r]).attr("data-index",r).on("click",function(e){if(i(this).is("a")&&e.preventDefault(),s.trigger("zoomboxOverlayShowing"),s.fadeIn(t.fadeDuration,function(){s.trigger("zoomboxOverlayShown")}),n.slick("slickGoTo",i(this).data("index"),!0),void 0!==i(this).attr("rel")){var o=i(this).attr("rel");n.slick("slickFilter",function(){return i(this).find("img").attr("rel")===o})}else{var r=this;if(t.forceSourceAttr)var l=i(r).attr(t.forceSourceAttr);else if(i(r).is("a"))var l=i(r).attr("href");else if(i(r).is("img"))var l=i(r).attr("src");else var l=i(r).data("src");n.slick("slickFilter",function(){return i(this).find("img").attr("src")===l})}setTimeout(function(){t.centerImages&&n.find(".slick-slide").each(function(e,t,o){i(this).css("margin-top",(n.outerHeight()-i(this).outerHeight())/2)})},50),i(window).trigger("resize")})}if(n.slick({autoplay:t.enableAutoplay,autoplaySpeed:t.autoplaySpeed,cssEase:t.slideTransition,draggable:t.sliderDraggable,infinite:t.sliderLooped,mobileFirst:!1,nextArrow:t.sliderNextButton,pauseOnHover:t.disableAutoplayOnHover,prevArrow:t.sliderPrevButton,speed:t.slideTransitionSpeed,touchMove:!t.disableTouchMove,waitForAnimate:t.ignoreInputOnMove}).on("afterChange",function(i){s.trigger("zoomboxChanged")}),t.listenKeys){var c=function(i){"Escape"===i.key||27==i.which?(s.trigger("zoomboxOverlayHiding"),s.fadeOut(t.fadeDuration,function(){t.temporary?(n.slick("unslick"),s.remove()):n.slick("slickUnfilter",0),s.trigger("zoomboxOverlayHidden")})):"ArrowLeft"===i.key||37==i.which?n.slick("slickPrev"):"ArrowRight"!==i.key&&39!=i.which||n.slick("slickNext")};i(document).off("keyup",c).on("keyup",c)}return t.temporary&&(s.trigger("zoomboxOverlayShowing"),s.fadeIn(t.fadeDuration,function(){s.trigger("zoomboxOverlayShown")}),setTimeout(function(){t.centerImages&&n.find(".slick-slide").each(function(e,t,o){i(this).css("margin-top",(n.outerHeight()-i(this).outerHeight())/2)})},50),i(window).trigger("resize")),t.enforceChaining?this:i("#"+t.containerId)||i("#"+t.containerId+"-temp")}}(jQuery),$(function(){!$(".zoombox").length||window.surpressGalleryInit||$("#neos-application").length||$(".zoombox").zoombox({slideTransitionSpeed:500,slideTransition:"ease-in-out"})}); -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNsaWNrLmpzIiwianF1ZXJ5LmpzIiwibWFpbi5qcyJdLCJuYW1lcyI6WyJmYWN0b3J5IiwiZGVmaW5lIiwiYW1kIiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJqUXVlcnkiLCIkIiwiU2xpY2siLCJ3aW5kb3ciLCJlbGVtZW50Iiwic2V0dGluZ3MiLCJkYXRhU2V0dGluZ3MiLCJfIiwidGhpcyIsImRlZmF1bHRzIiwiYWNjZXNzaWJpbGl0eSIsImFkYXB0aXZlSGVpZ2h0IiwiYXBwZW5kQXJyb3dzIiwiYXBwZW5kRG90cyIsImFycm93cyIsImFzTmF2Rm9yIiwicHJldkFycm93IiwibmV4dEFycm93IiwiYXV0b3BsYXkiLCJhdXRvcGxheVNwZWVkIiwiY2VudGVyTW9kZSIsImNlbnRlclBhZGRpbmciLCJjc3NFYXNlIiwiY3VzdG9tUGFnaW5nIiwic2xpZGVyIiwiaSIsInRleHQiLCJkb3RzIiwiZG90c0NsYXNzIiwiZHJhZ2dhYmxlIiwiZWFzaW5nIiwiZWRnZUZyaWN0aW9uIiwiZmFkZSIsImZvY3VzT25TZWxlY3QiLCJmb2N1c09uQ2hhbmdlIiwiaW5maW5pdGUiLCJpbml0aWFsU2xpZGUiLCJsYXp5TG9hZCIsIm1vYmlsZUZpcnN0IiwicGF1c2VPbkhvdmVyIiwicGF1c2VPbkZvY3VzIiwicGF1c2VPbkRvdHNIb3ZlciIsInJlc3BvbmRUbyIsInJlc3BvbnNpdmUiLCJyb3dzIiwicnRsIiwic2xpZGUiLCJzbGlkZXNQZXJSb3ciLCJzbGlkZXNUb1Nob3ciLCJzbGlkZXNUb1Njcm9sbCIsInNwZWVkIiwic3dpcGUiLCJzd2lwZVRvU2xpZGUiLCJ0b3VjaE1vdmUiLCJ0b3VjaFRocmVzaG9sZCIsInVzZUNTUyIsInVzZVRyYW5zZm9ybSIsInZhcmlhYmxlV2lkdGgiLCJ2ZXJ0aWNhbCIsInZlcnRpY2FsU3dpcGluZyIsIndhaXRGb3JBbmltYXRlIiwiekluZGV4IiwiaW5pdGlhbHMiLCJhbmltYXRpbmciLCJkcmFnZ2luZyIsImF1dG9QbGF5VGltZXIiLCJjdXJyZW50RGlyZWN0aW9uIiwiY3VycmVudExlZnQiLCJjdXJyZW50U2xpZGUiLCJkaXJlY3Rpb24iLCIkZG90cyIsImxpc3RXaWR0aCIsImxpc3RIZWlnaHQiLCJsb2FkSW5kZXgiLCIkbmV4dEFycm93IiwiJHByZXZBcnJvdyIsInNjcm9sbGluZyIsInNsaWRlQ291bnQiLCJzbGlkZVdpZHRoIiwiJHNsaWRlVHJhY2siLCIkc2xpZGVzIiwic2xpZGluZyIsInNsaWRlT2Zmc2V0Iiwic3dpcGVMZWZ0Iiwic3dpcGluZyIsIiRsaXN0IiwidG91Y2hPYmplY3QiLCJ0cmFuc2Zvcm1zRW5hYmxlZCIsInVuc2xpY2tlZCIsImV4dGVuZCIsImFjdGl2ZUJyZWFrcG9pbnQiLCJhbmltVHlwZSIsImFuaW1Qcm9wIiwiYnJlYWtwb2ludHMiLCJicmVha3BvaW50U2V0dGluZ3MiLCJjc3NUcmFuc2l0aW9ucyIsImZvY3Vzc2VkIiwiaW50ZXJydXB0ZWQiLCJoaWRkZW4iLCJwYXVzZWQiLCJwb3NpdGlvblByb3AiLCJyb3dDb3VudCIsInNob3VsZENsaWNrIiwiJHNsaWRlciIsIiRzbGlkZXNDYWNoZSIsInRyYW5zZm9ybVR5cGUiLCJ0cmFuc2l0aW9uVHlwZSIsInZpc2liaWxpdHlDaGFuZ2UiLCJ3aW5kb3dXaWR0aCIsIndpbmRvd1RpbWVyIiwiZGF0YSIsIm9wdGlvbnMiLCJvcmlnaW5hbFNldHRpbmdzIiwiZG9jdW1lbnQiLCJtb3pIaWRkZW4iLCJ3ZWJraXRIaWRkZW4iLCJhdXRvUGxheSIsInByb3h5IiwiYXV0b1BsYXlDbGVhciIsImF1dG9QbGF5SXRlcmF0b3IiLCJjaGFuZ2VTbGlkZSIsImNsaWNrSGFuZGxlciIsInNlbGVjdEhhbmRsZXIiLCJzZXRQb3NpdGlvbiIsInN3aXBlSGFuZGxlciIsImRyYWdIYW5kbGVyIiwia2V5SGFuZGxlciIsImluc3RhbmNlVWlkIiwiaHRtbEV4cHIiLCJyZWdpc3RlckJyZWFrcG9pbnRzIiwiaW5pdCIsInByb3RvdHlwZSIsImFjdGl2YXRlQURBIiwiZmluZCIsImF0dHIiLCJhcmlhLWhpZGRlbiIsInRhYmluZGV4IiwiYWRkU2xpZGUiLCJzbGlja0FkZCIsIm1hcmt1cCIsImluZGV4IiwiYWRkQmVmb3JlIiwidW5sb2FkIiwibGVuZ3RoIiwiYXBwZW5kVG8iLCJpbnNlcnRCZWZvcmUiLCJlcSIsImluc2VydEFmdGVyIiwicHJlcGVuZFRvIiwiY2hpbGRyZW4iLCJkZXRhY2giLCJhcHBlbmQiLCJlYWNoIiwicmVpbml0IiwiYW5pbWF0ZUhlaWdodCIsInRhcmdldEhlaWdodCIsIm91dGVySGVpZ2h0IiwiYW5pbWF0ZSIsImhlaWdodCIsImFuaW1hdGVTbGlkZSIsInRhcmdldExlZnQiLCJjYWxsYmFjayIsImFuaW1Qcm9wcyIsImxlZnQiLCJ0b3AiLCJhbmltU3RhcnQiLCJkdXJhdGlvbiIsInN0ZXAiLCJub3ciLCJNYXRoIiwiY2VpbCIsImNzcyIsImNvbXBsZXRlIiwiY2FsbCIsImFwcGx5VHJhbnNpdGlvbiIsInNldFRpbWVvdXQiLCJkaXNhYmxlVHJhbnNpdGlvbiIsImdldE5hdlRhcmdldCIsIm5vdCIsInRhcmdldCIsInNsaWNrIiwic2xpZGVIYW5kbGVyIiwidHJhbnNpdGlvbiIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInNsaWRlVG8iLCJidWlsZEFycm93cyIsImFkZENsYXNzIiwicmVtb3ZlQ2xhc3MiLCJyZW1vdmVBdHRyIiwidGVzdCIsImFkZCIsImFyaWEtZGlzYWJsZWQiLCJidWlsZERvdHMiLCJkb3QiLCJnZXREb3RDb3VudCIsImZpcnN0IiwiYnVpbGRPdXQiLCJ3cmFwQWxsIiwicGFyZW50Iiwid3JhcCIsInNldHVwSW5maW5pdGUiLCJ1cGRhdGVEb3RzIiwic2V0U2xpZGVDbGFzc2VzIiwiYnVpbGRSb3dzIiwiYSIsImIiLCJjIiwibmV3U2xpZGVzIiwibnVtT2ZTbGlkZXMiLCJvcmlnaW5hbFNsaWRlcyIsInNsaWRlc1BlclNlY3Rpb24iLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwiY3JlYXRlRWxlbWVudCIsInJvdyIsImdldCIsImFwcGVuZENoaWxkIiwiZW1wdHkiLCJ3aWR0aCIsImRpc3BsYXkiLCJjaGVja1Jlc3BvbnNpdmUiLCJpbml0aWFsIiwiZm9yY2VVcGRhdGUiLCJicmVha3BvaW50IiwidGFyZ2V0QnJlYWtwb2ludCIsInJlc3BvbmRUb1dpZHRoIiwidHJpZ2dlckJyZWFrcG9pbnQiLCJzbGlkZXJXaWR0aCIsImlubmVyV2lkdGgiLCJtaW4iLCJoYXNPd25Qcm9wZXJ0eSIsInVuc2xpY2siLCJyZWZyZXNoIiwidHJpZ2dlciIsImV2ZW50IiwiZG9udEFuaW1hdGUiLCJpbmRleE9mZnNldCIsInVuZXZlbk9mZnNldCIsIiR0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiaXMiLCJwcmV2ZW50RGVmYXVsdCIsImNsb3Nlc3QiLCJtZXNzYWdlIiwiY2hlY2tOYXZpZ2FibGUiLCJuYXZpZ2FibGVzIiwicHJldk5hdmlnYWJsZSIsImdldE5hdmlnYWJsZUluZGV4ZXMiLCJuIiwiY2xlYW5VcEV2ZW50cyIsIm9mZiIsImludGVycnVwdCIsInZpc2liaWxpdHkiLCJjbGVhblVwU2xpZGVFdmVudHMiLCJvcmllbnRhdGlvbkNoYW5nZSIsInJlc2l6ZSIsImNsZWFuVXBSb3dzIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwic3RvcFByb3BhZ2F0aW9uIiwiZGVzdHJveSIsInJlbW92ZSIsImZhZGVTbGlkZSIsInNsaWRlSW5kZXgiLCJvcGFjaXR5IiwiZmFkZVNsaWRlT3V0IiwiZmlsdGVyU2xpZGVzIiwic2xpY2tGaWx0ZXIiLCJmaWx0ZXIiLCJmb2N1c0hhbmRsZXIiLCJvbiIsIiRzZiIsImdldEN1cnJlbnQiLCJzbGlja0N1cnJlbnRTbGlkZSIsImJyZWFrUG9pbnQiLCJjb3VudGVyIiwicGFnZXJRdHkiLCJnZXRMZWZ0IiwidmVydGljYWxIZWlnaHQiLCJ0YXJnZXRTbGlkZSIsImNvZWYiLCJ2ZXJ0aWNhbE9mZnNldCIsImZsb29yIiwib2Zmc2V0TGVmdCIsIm91dGVyV2lkdGgiLCJnZXRPcHRpb24iLCJzbGlja0dldE9wdGlvbiIsIm9wdGlvbiIsIm1heCIsImluZGV4ZXMiLCJwdXNoIiwiZ2V0U2xpY2siLCJnZXRTbGlkZUNvdW50Iiwic2xpZGVzVHJhdmVyc2VkIiwic3dpcGVkU2xpZGUiLCJjZW50ZXJPZmZzZXQiLCJhYnMiLCJnb1RvIiwic2xpY2tHb1RvIiwicGFyc2VJbnQiLCJjcmVhdGlvbiIsImhhc0NsYXNzIiwic2V0UHJvcHMiLCJzdGFydExvYWQiLCJsb2FkU2xpZGVyIiwiaW5pdGlhbGl6ZUV2ZW50cyIsInVwZGF0ZUFycm93cyIsImluaXRBREEiLCJudW1Eb3RHcm91cHMiLCJ0YWJDb250cm9sSW5kZXhlcyIsInZhbCIsInNsaWRlQ29udHJvbEluZGV4IiwiaW5kZXhPZiIsInJvbGUiLCJpZCIsImFyaWFCdXR0b25Db250cm9sIiwiYXJpYS1kZXNjcmliZWRieSIsIm1hcHBlZFNsaWRlSW5kZXgiLCJhcmlhLWNvbnRyb2xzIiwiYXJpYS1sYWJlbCIsImFyaWEtc2VsZWN0ZWQiLCJlbmQiLCJpbml0QXJyb3dFdmVudHMiLCJpbml0RG90RXZlbnRzIiwiaW5pdFNsaWRlRXZlbnRzIiwiYWN0aW9uIiwiaW5pdFVJIiwic2hvdyIsInRhZ05hbWUiLCJtYXRjaCIsImtleUNvZGUiLCJsb2FkSW1hZ2VzIiwiaW1hZ2VzU2NvcGUiLCJpbWFnZSIsImltYWdlU291cmNlIiwiaW1hZ2VTcmNTZXQiLCJpbWFnZVNpemVzIiwiaW1hZ2VUb0xvYWQiLCJvbmxvYWQiLCJvbmVycm9yIiwic3JjIiwibG9hZFJhbmdlIiwiY2xvbmVSYW5nZSIsInJhbmdlU3RhcnQiLCJyYW5nZUVuZCIsInNsaWNlIiwicHJldlNsaWRlIiwibmV4dFNsaWRlIiwicHJvZ3Jlc3NpdmVMYXp5TG9hZCIsIm5leHQiLCJzbGlja05leHQiLCJwYXVzZSIsInNsaWNrUGF1c2UiLCJwbGF5Iiwic2xpY2tQbGF5IiwicG9zdFNsaWRlIiwiJGN1cnJlbnRTbGlkZSIsImZvY3VzIiwicHJldiIsInNsaWNrUHJldiIsInRyeUNvdW50IiwiJGltZ3NUb0xvYWQiLCJpbml0aWFsaXppbmciLCJsYXN0VmlzaWJsZUluZGV4IiwiY3VycmVudEJyZWFrcG9pbnQiLCJsIiwicmVzcG9uc2l2ZVNldHRpbmdzIiwidHlwZSIsInNwbGljZSIsInNvcnQiLCJjbGVhclRpbWVvdXQiLCJ3aW5kb3dEZWxheSIsInJlbW92ZVNsaWRlIiwic2xpY2tSZW1vdmUiLCJyZW1vdmVCZWZvcmUiLCJyZW1vdmVBbGwiLCJzZXRDU1MiLCJwb3NpdGlvbiIsIngiLCJ5IiwicG9zaXRpb25Qcm9wcyIsInNldERpbWVuc2lvbnMiLCJwYWRkaW5nIiwib2Zmc2V0Iiwic2V0RmFkZSIsInJpZ2h0Iiwic2V0SGVpZ2h0Iiwic2V0T3B0aW9uIiwic2xpY2tTZXRPcHRpb24iLCJpdGVtIiwidmFsdWUiLCJhcmd1bWVudHMiLCJvcHQiLCJib2R5U3R5bGUiLCJib2R5Iiwic3R5bGUiLCJ1bmRlZmluZWQiLCJXZWJraXRUcmFuc2l0aW9uIiwiTW96VHJhbnNpdGlvbiIsIm1zVHJhbnNpdGlvbiIsIk9UcmFuc2Zvcm0iLCJwZXJzcGVjdGl2ZVByb3BlcnR5Iiwid2Via2l0UGVyc3BlY3RpdmUiLCJNb3pUcmFuc2Zvcm0iLCJNb3pQZXJzcGVjdGl2ZSIsIndlYmtpdFRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIiwidHJhbnNmb3JtIiwiYWxsU2xpZGVzIiwicmVtYWluZGVyIiwiZXZlbkNvZWYiLCJpbmZpbml0ZUNvdW50IiwiY2xvbmUiLCJ0b2dnbGUiLCJ0YXJnZXRFbGVtZW50IiwicGFyZW50cyIsInN5bmMiLCJhbmltU2xpZGUiLCJvbGRTbGlkZSIsInNsaWRlTGVmdCIsIm5hdlRhcmdldCIsImhpZGUiLCJzd2lwZURpcmVjdGlvbiIsInhEaXN0IiwieURpc3QiLCJyIiwic3dpcGVBbmdsZSIsInN0YXJ0WCIsImN1clgiLCJzdGFydFkiLCJjdXJZIiwiYXRhbjIiLCJyb3VuZCIsIlBJIiwic3dpcGVFbmQiLCJzd2lwZUxlbmd0aCIsImVkZ2VIaXQiLCJtaW5Td2lwZSIsImZpbmdlckNvdW50Iiwib3JpZ2luYWxFdmVudCIsInRvdWNoZXMiLCJzd2lwZVN0YXJ0Iiwic3dpcGVNb3ZlIiwiY3VyTGVmdCIsInBvc2l0aW9uT2Zmc2V0IiwidmVydGljYWxTd2lwZUxlbmd0aCIsInBhZ2VYIiwiY2xpZW50WCIsInBhZ2VZIiwiY2xpZW50WSIsInNxcnQiLCJwb3ciLCJ1bmZpbHRlclNsaWRlcyIsInNsaWNrVW5maWx0ZXIiLCJmcm9tQnJlYWtwb2ludCIsImZuIiwicmV0IiwiYXJncyIsIkFycmF5IiwiYXBwbHkiLCJjb25zb2xlIiwid2FybiIsImRlZmF1bHRWYWx1ZXMiLCJidXR0b25DbGFzcyIsImNlbnRlckltYWdlcyIsImNsb3NlT25CbHVyQ2xpY2siLCJjb250YWluZXJJZCIsImRpc2FibGVBdXRvcGxheU9uSG92ZXIiLCJkaXNhYmxlVG91Y2hNb3ZlIiwiZW5hYmxlQXV0b3BsYXkiLCJlbmZvcmNlQ2hhaW5pbmciLCJmYWRlRHVyYXRpb24iLCJpZ25vcmVJbnB1dE9uTW92ZSIsImltYWdlQ2xhc3MiLCJpbm5lckNsYXNzIiwibGlzdGVuS2V5cyIsInNsaWRlckRyYWdnYWJsZSIsInNsaWRlckxvb3BlZCIsInNsaWRlck5leHRCdXR0b24iLCJzbGlkZXJQcmV2QnV0dG9uIiwic2xpZGVUcmFuc2l0aW9uIiwic2xpZGVUcmFuc2l0aW9uU3BlZWQiLCJ0ZW1wb3JhcnkiLCJ3cmFwcGVyQ2xhc3MiLCJ6b29tYm94Iiwic2V0dGluZyIsIm92ZXJsYXkiLCJpbm5lciIsImZhZGVPdXQiLCJmb3JjZVNvdXJjZUF0dHIiLCJyZWwiLCJ0bXAiLCJmYWRlSW4iLCJfdGhpcyIsImUiLCJrZXlMaXN0ZW5lciIsImtleSIsIndoaWNoIiwic3VycHJlc3NHYWxsZXJ5SW5pdCJdLCJtYXBwaW5ncyI6IkNBaUJBLFNBQUFBLEdBQ0EsWUFDQSxtQkFBQUMsU0FBQUEsT0FBQUMsSUFDQUQsUUFBQSxVQUFBRCxHQUNBLG1CQUFBRyxTQUNBQyxPQUFBRCxRQUFBSCxFQUFBSyxRQUFBLFdBRUFMLEVB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QUNBaEUsRUFBQWdXLGNBQ0F1QixFQUFBalcsS0FBQSxnQkFBQW1CLEtBQUEsU0FBQS9ILEVBQUFvZCxFQUFBaFMsR0FDQTVNLEVBQUFPLE1BQUFtSyxJQUFBLGNBQUEyVCxFQUFBMVUsY0FBQTNKLEVBQUFPLE1BQUFvSixlQUFBLE1BR0EsSUFFQTNKLEVBQUFFLFFBQUFzTyxRQUFBLFdBR0ExSCxFQUFBc1csZ0JBQ0E3YyxLQUVBUCxFQUFBLElBQUE4RyxFQUFBa1csY0FBQWhkLEVBQUEsSUFBQThHLEVBQUFrVyxZQUFBLFdBSUFqZCxRQ3hPQUMsRUFBQSxZQUNBQSxFQUFBLFlBQUE4SSxRQUFBNUksT0FBQThlLHFCQUFBaGYsRUFBQSxxQkFBQThJLFFBQ0E5SSxFQUFBLFlBQUFrZSxTQUNBSCxxQkFBQSxJQUNBRCxnQkFBQSIsImZpbGUiOiJtYWluLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgIF8gXyAgICAgIF8gICAgICAgX1xuIF9fX3wgKF8pIF9fX3wgfCBfXyAgKF8pX19fXG4vIF9ffCB8IHwvIF9ffCB8LyAvICB8IC8gX198XG5cXF9fIFxcIHwgfCAoX198ICAgPCBfIHwgXFxfXyBcXFxufF9fXy9ffF98XFxfX198X3xcXF8oXykvIHxfX18vXG4gICAgICAgICAgICAgICAgICAgfF9fL1xuXG4gVmVyc2lvbjogMS44LjBcbiAgQXV0aG9yOiBLZW4gV2hlZWxlclxuIFdlYnNpdGU6IGh0dHA6Ly9rZW53aGVlbGVyLmdpdGh1Yi5pb1xuICAgIERvY3M6IGh0dHA6Ly9rZW53aGVlbGVyLmdpdGh1Yi5pby9zbGlja1xuICAgIFJlcG86IGh0dHA6Ly9naXRodWIuY29tL2tlbndoZWVsZXIvc2xpY2tcbiAgSXNzdWVzOiBodHRwOi8vZ2l0aHViLmNvbS9rZW53aGVlbGVyL3NsaWNrL2lzc3Vlc1xuXG4gKi9cbi8qIGdsb2JhbCB3aW5kb3csIGRvY3VtZW50LCBkZWZpbmUsIGpRdWVyeSwgc2V0SW50ZXJ2YWwsIGNsZWFySW50ZXJ2YWwgKi9cbjsoZnVuY3Rpb24oZmFjdG9yeSkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIGRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JykpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZhY3RvcnkoalF1ZXJ5KTtcbiAgICB9XG5cbn0oZnVuY3Rpb24oJCkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICB2YXIgU2xpY2sgPSB3aW5kb3cuU2xpY2sgfHwge307XG5cbiAgICBTbGljayA9IChmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgaW5zdGFuY2VVaWQgPSAwO1xuXG4gICAgICAgIGZ1bmN0aW9uIFNsaWNrKGVsZW1lbnQsIHNldHRpbmdzKSB7XG5cbiAgICAgICAgICAgIHZhciBfID0gdGhpcywgZGF0YVNldHRpbmdzO1xuXG4gICAgICAgICAgICBfLmRlZmF1bHRzID0ge1xuICAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgYWRhcHRpdmVIZWlnaHQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGFwcGVuZEFycm93czogJChlbGVtZW50KSxcbiAgICAgICAgICAgICAgICBhcHBlbmREb3RzOiAkKGVsZW1lbnQpLFxuICAgICAgICAgICAgICAgIGFycm93czogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhc05hdkZvcjogbnVsbCxcbiAgICAgICAgICAgICAgICBwcmV2QXJyb3c6ICc8YnV0dG9uIGNsYXNzPVwic2xpY2stcHJldlwiIGFyaWEtbGFiZWw9XCJQcmV2aW91c1wiIHR5cGU9XCJidXR0b25cIj5QcmV2aW91czwvYnV0dG9uPicsXG4gICAgICAgICAgICAgICAgbmV4dEFycm93OiAnPGJ1dHRvbiBjbGFzcz1cInNsaWNrLW5leHRcIiBhcmlhLWxhYmVsPVwiTmV4dFwiIHR5cGU9XCJidXR0b25cIj5OZXh0PC9idXR0b24+JyxcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsXG4gICAgICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogMzAwMCxcbiAgICAgICAgICAgICAgICBjZW50ZXJNb2RlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjZW50ZXJQYWRkaW5nOiAnNTBweCcsXG4gICAgICAgICAgICAgICAgY3NzRWFzZTogJ2Vhc2UnLFxuICAgICAgICAgICAgICAgIGN1c3RvbVBhZ2luZzogZnVuY3Rpb24oc2xpZGVyLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAvPicpLnRleHQoaSArIDEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZG90czogZmFsc2UsXG4gICAgICAgICAgICAgICAgZG90c0NsYXNzOiAnc2xpY2stZG90cycsXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVhc2luZzogJ2xpbmVhcicsXG4gICAgICAgICAgICAgICAgZWRnZUZyaWN0aW9uOiAwLjM1LFxuICAgICAgICAgICAgICAgIGZhZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvY3VzT25DaGFuZ2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGluZmluaXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGluaXRpYWxTbGlkZTogMCxcbiAgICAgICAgICAgICAgICBsYXp5TG9hZDogJ29uZGVtYW5kJyxcbiAgICAgICAgICAgICAgICBtb2JpbGVGaXJzdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHBhdXNlT25Gb2N1czogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXVzZU9uRG90c0hvdmVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNwb25kVG86ICd3aW5kb3cnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6IG51bGwsXG4gICAgICAgICAgICAgICAgcm93czogMSxcbiAgICAgICAgICAgICAgICBydGw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNsaWRlOiAnJyxcbiAgICAgICAgICAgICAgICBzbGlkZXNQZXJSb3c6IDEsXG4gICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgIHNwZWVkOiA1MDAsXG4gICAgICAgICAgICAgICAgc3dpcGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0b3VjaE1vdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgdG91Y2hUaHJlc2hvbGQ6IDUsXG4gICAgICAgICAgICAgICAgdXNlQ1NTOiB0cnVlLFxuICAgICAgICAgICAgICAgIHVzZVRyYW5zZm9ybTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YXJpYWJsZVdpZHRoOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmVydGljYWxTd2lwaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3YWl0Rm9yQW5pbWF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDBcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIF8uaW5pdGlhbHMgPSB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkcmFnZ2luZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgYXV0b1BsYXlUaW1lcjogbnVsbCxcbiAgICAgICAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiAwLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRMZWZ0OiBudWxsLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRTbGlkZTogMCxcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IDEsXG4gICAgICAgICAgICAgICAgJGRvdHM6IG51bGwsXG4gICAgICAgICAgICAgICAgbGlzdFdpZHRoOiBudWxsLFxuICAgICAgICAgICAgICAgIGxpc3RIZWlnaHQ6IG51bGwsXG4gICAgICAgICAgICAgICAgbG9hZEluZGV4OiAwLFxuICAgICAgICAgICAgICAgICRuZXh0QXJyb3c6IG51bGwsXG4gICAgICAgICAgICAgICAgJHByZXZBcnJvdzogbnVsbCxcbiAgICAgICAgICAgICAgICBzY3JvbGxpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNsaWRlQ291bnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgc2xpZGVXaWR0aDogbnVsbCxcbiAgICAgICAgICAgICAgICAkc2xpZGVUcmFjazogbnVsbCxcbiAgICAgICAgICAgICAgICAkc2xpZGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIHNsaWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNsaWRlT2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgIHN3aXBlTGVmdDogbnVsbCxcbiAgICAgICAgICAgICAgICBzd2lwaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAkbGlzdDogbnVsbCxcbiAgICAgICAgICAgICAgICB0b3VjaE9iamVjdDoge30sXG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHVuc2xpY2tlZDogZmFsc2VcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICQuZXh0ZW5kKF8sIF8uaW5pdGlhbHMpO1xuXG4gICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9IG51bGw7XG4gICAgICAgICAgICBfLmFuaW1Qcm9wID0gbnVsbDtcbiAgICAgICAgICAgIF8uYnJlYWtwb2ludHMgPSBbXTtcbiAgICAgICAgICAgIF8uYnJlYWtwb2ludFNldHRpbmdzID0gW107XG4gICAgICAgICAgICBfLmNzc1RyYW5zaXRpb25zID0gZmFsc2U7XG4gICAgICAgICAgICBfLmZvY3Vzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICBfLmludGVycnVwdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBfLmhpZGRlbiA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgXy5wYXVzZWQgPSB0cnVlO1xuICAgICAgICAgICAgXy5wb3NpdGlvblByb3AgPSBudWxsO1xuICAgICAgICAgICAgXy5yZXNwb25kVG8gPSBudWxsO1xuICAgICAgICAgICAgXy5yb3dDb3VudCA9IDE7XG4gICAgICAgICAgICBfLnNob3VsZENsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgIF8uJHNsaWRlciA9ICQoZWxlbWVudCk7XG4gICAgICAgICAgICBfLiRzbGlkZXNDYWNoZSA9IG51bGw7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSBudWxsO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9IG51bGw7XG4gICAgICAgICAgICBfLnZpc2liaWxpdHlDaGFuZ2UgPSAndmlzaWJpbGl0eWNoYW5nZSc7XG4gICAgICAgICAgICBfLndpbmRvd1dpZHRoID0gMDtcbiAgICAgICAgICAgIF8ud2luZG93VGltZXIgPSBudWxsO1xuXG4gICAgICAgICAgICBkYXRhU2V0dGluZ3MgPSAkKGVsZW1lbnQpLmRhdGEoJ3NsaWNrJykgfHwge307XG5cbiAgICAgICAgICAgIF8ub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBfLmRlZmF1bHRzLCBzZXR0aW5ncywgZGF0YVNldHRpbmdzKTtcblxuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBfLm9wdGlvbnMuaW5pdGlhbFNsaWRlO1xuXG4gICAgICAgICAgICBfLm9yaWdpbmFsU2V0dGluZ3MgPSBfLm9wdGlvbnM7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQubW96SGlkZGVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIF8uaGlkZGVuID0gJ21vekhpZGRlbic7XG4gICAgICAgICAgICAgICAgXy52aXNpYmlsaXR5Q2hhbmdlID0gJ21venZpc2liaWxpdHljaGFuZ2UnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQud2Via2l0SGlkZGVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIF8uaGlkZGVuID0gJ3dlYmtpdEhpZGRlbic7XG4gICAgICAgICAgICAgICAgXy52aXNpYmlsaXR5Q2hhbmdlID0gJ3dlYmtpdHZpc2liaWxpdHljaGFuZ2UnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLmF1dG9QbGF5ID0gJC5wcm94eShfLmF1dG9QbGF5LCBfKTtcbiAgICAgICAgICAgIF8uYXV0b1BsYXlDbGVhciA9ICQucHJveHkoXy5hdXRvUGxheUNsZWFyLCBfKTtcbiAgICAgICAgICAgIF8uYXV0b1BsYXlJdGVyYXRvciA9ICQucHJveHkoXy5hdXRvUGxheUl0ZXJhdG9yLCBfKTtcbiAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUgPSAkLnByb3h5KF8uY2hhbmdlU2xpZGUsIF8pO1xuICAgICAgICAgICAgXy5jbGlja0hhbmRsZXIgPSAkLnByb3h5KF8uY2xpY2tIYW5kbGVyLCBfKTtcbiAgICAgICAgICAgIF8uc2VsZWN0SGFuZGxlciA9ICQucHJveHkoXy5zZWxlY3RIYW5kbGVyLCBfKTtcbiAgICAgICAgICAgIF8uc2V0UG9zaXRpb24gPSAkLnByb3h5KF8uc2V0UG9zaXRpb24sIF8pO1xuICAgICAgICAgICAgXy5zd2lwZUhhbmRsZXIgPSAkLnByb3h5KF8uc3dpcGVIYW5kbGVyLCBfKTtcbiAgICAgICAgICAgIF8uZHJhZ0hhbmRsZXIgPSAkLnByb3h5KF8uZHJhZ0hhbmRsZXIsIF8pO1xuICAgICAgICAgICAgXy5rZXlIYW5kbGVyID0gJC5wcm94eShfLmtleUhhbmRsZXIsIF8pO1xuXG4gICAgICAgICAgICBfLmluc3RhbmNlVWlkID0gaW5zdGFuY2VVaWQrKztcblxuICAgICAgICAgICAgLy8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3NcbiAgICAgICAgICAgIC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uIChtdXN0IHN0YXJ0IHdpdGggPClcbiAgICAgICAgICAgIC8vIEV4dHJhY3RlZCBmcm9tIGpRdWVyeSB2MS4xMSBzb3VyY2VcbiAgICAgICAgICAgIF8uaHRtbEV4cHIgPSAvXig/OlxccyooPFtcXHdcXFddKz4pW14+XSopJC87XG5cblxuICAgICAgICAgICAgXy5yZWdpc3RlckJyZWFrcG9pbnRzKCk7XG4gICAgICAgICAgICBfLmluaXQodHJ1ZSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTbGljaztcblxuICAgIH0oKSk7XG5cbiAgICBTbGljay5wcm90b3R5cGUuYWN0aXZhdGVBREEgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suZmluZCgnLnNsaWNrLWFjdGl2ZScpLmF0dHIoe1xuICAgICAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ2ZhbHNlJ1xuICAgICAgICB9KS5maW5kKCdhLCBpbnB1dCwgYnV0dG9uLCBzZWxlY3QnKS5hdHRyKHtcbiAgICAgICAgICAgICd0YWJpbmRleCc6ICcwJ1xuICAgICAgICB9KTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYWRkU2xpZGUgPSBTbGljay5wcm90b3R5cGUuc2xpY2tBZGQgPSBmdW5jdGlvbihtYXJrdXAsIGluZGV4LCBhZGRCZWZvcmUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHR5cGVvZihpbmRleCkgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgYWRkQmVmb3JlID0gaW5kZXg7XG4gICAgICAgICAgICBpbmRleCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCAwIHx8IChpbmRleCA+PSBfLnNsaWRlQ291bnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgIGlmICh0eXBlb2YoaW5kZXgpID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwICYmIF8uJHNsaWRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuYXBwZW5kVG8oXy4kc2xpZGVUcmFjayk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFkZEJlZm9yZSkge1xuICAgICAgICAgICAgICAgICQobWFya3VwKS5pbnNlcnRCZWZvcmUoXy4kc2xpZGVzLmVxKGluZGV4KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQobWFya3VwKS5pbnNlcnRBZnRlcihfLiRzbGlkZXMuZXEoaW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChhZGRCZWZvcmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkucHJlcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuYXBwZW5kVG8oXy4kc2xpZGVUcmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXMgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSk7XG5cbiAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suYXBwZW5kKF8uJHNsaWRlcyk7XG5cbiAgICAgICAgXy4kc2xpZGVzLmVhY2goZnVuY3Rpb24oaW5kZXgsIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICQoZWxlbWVudCkuYXR0cignZGF0YS1zbGljay1pbmRleCcsIGluZGV4KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBfLiRzbGlkZXM7XG5cbiAgICAgICAgXy5yZWluaXQoKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYW5pbWF0ZUhlaWdodCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgXyA9IHRoaXM7XG4gICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAxICYmIF8ub3B0aW9ucy5hZGFwdGl2ZUhlaWdodCA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0SGVpZ2h0ID0gXy4kc2xpZGVzLmVxKF8uY3VycmVudFNsaWRlKS5vdXRlckhlaWdodCh0cnVlKTtcbiAgICAgICAgICAgIF8uJGxpc3QuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0YXJnZXRIZWlnaHRcbiAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFuaW1hdGVTbGlkZSA9IGZ1bmN0aW9uKHRhcmdldExlZnQsIGNhbGxiYWNrKSB7XG5cbiAgICAgICAgdmFyIGFuaW1Qcm9wcyA9IHt9LFxuICAgICAgICAgICAgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hbmltYXRlSGVpZ2h0KCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUgJiYgXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IC10YXJnZXRMZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLnRyYW5zZm9ybXNFbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0YXJnZXRMZWZ0XG4gICAgICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkLCBfLm9wdGlvbnMuZWFzaW5nLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogdGFyZ2V0TGVmdFxuICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCwgXy5vcHRpb25zLmVhc2luZywgY2FsbGJhY2spO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGlmIChfLmNzc1RyYW5zaXRpb25zID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uY3VycmVudExlZnQgPSAtKF8uY3VycmVudExlZnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkKHtcbiAgICAgICAgICAgICAgICAgICAgYW5pbVN0YXJ0OiBfLmN1cnJlbnRMZWZ0XG4gICAgICAgICAgICAgICAgfSkuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1TdGFydDogdGFyZ2V0TGVmdFxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IF8ub3B0aW9ucy5zcGVlZCxcbiAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBfLm9wdGlvbnMuZWFzaW5nLFxuICAgICAgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlvbihub3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdyA9IE1hdGguY2VpbChub3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlKCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3cgKyAncHgsIDBweCknO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKGFuaW1Qcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1Qcm9wc1tfLmFuaW1UeXBlXSA9ICd0cmFuc2xhdGUoMHB4LCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3cgKyAncHgpJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhhbmltUHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIF8uYXBwbHlUcmFuc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IE1hdGguY2VpbCh0YXJnZXRMZWZ0KTtcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1Qcm9wc1tfLmFuaW1UeXBlXSA9ICd0cmFuc2xhdGUzZCgnICsgdGFyZ2V0TGVmdCArICdweCwgMHB4LCAwcHgpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlM2QoMHB4LCcgKyB0YXJnZXRMZWZ0ICsgJ3B4LCAwcHgpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MoYW5pbVByb3BzKTtcblxuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBfLmRpc2FibGVUcmFuc2l0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldE5hdlRhcmdldCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGFzTmF2Rm9yID0gXy5vcHRpb25zLmFzTmF2Rm9yO1xuXG4gICAgICAgIGlmICggYXNOYXZGb3IgJiYgYXNOYXZGb3IgIT09IG51bGwgKSB7XG4gICAgICAgICAgICBhc05hdkZvciA9ICQoYXNOYXZGb3IpLm5vdChfLiRzbGlkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFzTmF2Rm9yO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5hc05hdkZvciA9IGZ1bmN0aW9uKGluZGV4KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgYXNOYXZGb3IgPSBfLmdldE5hdlRhcmdldCgpO1xuXG4gICAgICAgIGlmICggYXNOYXZGb3IgIT09IG51bGwgJiYgdHlwZW9mIGFzTmF2Rm9yID09PSAnb2JqZWN0JyApIHtcbiAgICAgICAgICAgIGFzTmF2Rm9yLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9ICQodGhpcykuc2xpY2soJ2dldFNsaWNrJyk7XG4gICAgICAgICAgICAgICAgaWYoIXRhcmdldC51bnNsaWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNsaWRlSGFuZGxlcihpbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYXBwbHlUcmFuc2l0aW9uID0gZnVuY3Rpb24oc2xpZGUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICB0cmFuc2l0aW9uID0ge307XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdHJhbnNpdGlvbltfLnRyYW5zaXRpb25UeXBlXSA9IF8udHJhbnNmb3JtVHlwZSArICcgJyArIF8ub3B0aW9ucy5zcGVlZCArICdtcyAnICsgXy5vcHRpb25zLmNzc0Vhc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uW18udHJhbnNpdGlvblR5cGVdID0gJ29wYWNpdHkgJyArIF8ub3B0aW9ucy5zcGVlZCArICdtcyAnICsgXy5vcHRpb25zLmNzc0Vhc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZSkuY3NzKHRyYW5zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmF1dG9QbGF5ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uYXV0b1BsYXlDbGVhcigpO1xuXG4gICAgICAgIGlmICggXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcbiAgICAgICAgICAgIF8uYXV0b1BsYXlUaW1lciA9IHNldEludGVydmFsKCBfLmF1dG9QbGF5SXRlcmF0b3IsIF8ub3B0aW9ucy5hdXRvcGxheVNwZWVkICk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYXV0b1BsYXlDbGVhciA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5hdXRvUGxheVRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKF8uYXV0b1BsYXlUaW1lcik7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYXV0b1BsYXlJdGVyYXRvciA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHNsaWRlVG8gPSBfLmN1cnJlbnRTbGlkZSArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcblxuICAgICAgICBpZiAoICFfLnBhdXNlZCAmJiAhXy5pbnRlcnJ1cHRlZCAmJiAhXy5mb2N1c3NlZCApIHtcblxuICAgICAgICAgICAgaWYgKCBfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlICkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCBfLmRpcmVjdGlvbiA9PT0gMSAmJiAoIF8uY3VycmVudFNsaWRlICsgMSApID09PSAoIF8uc2xpZGVDb3VudCAtIDEgKSkge1xuICAgICAgICAgICAgICAgICAgICBfLmRpcmVjdGlvbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIF8uZGlyZWN0aW9uID09PSAwICkge1xuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlVG8gPSBfLmN1cnJlbnRTbGlkZSAtIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIF8uY3VycmVudFNsaWRlIC0gMSA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uZGlyZWN0aW9uID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uc2xpZGVIYW5kbGVyKCBzbGlkZVRvICk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5idWlsZEFycm93cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFycm93cyA9PT0gdHJ1ZSApIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93ID0gJChfLm9wdGlvbnMucHJldkFycm93KS5hZGRDbGFzcygnc2xpY2stYXJyb3cnKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdyA9ICQoXy5vcHRpb25zLm5leHRBcnJvdykuYWRkQ2xhc3MoJ3NsaWNrLWFycm93Jyk7XG5cbiAgICAgICAgICAgIGlmKCBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICkge1xuXG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93LnJlbW92ZUNsYXNzKCdzbGljay1oaWRkZW4nKS5yZW1vdmVBdHRyKCdhcmlhLWhpZGRlbiB0YWJpbmRleCcpO1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2staGlkZGVuJykucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4gdGFiaW5kZXgnKTtcblxuICAgICAgICAgICAgICAgIGlmIChfLmh0bWxFeHByLnRlc3QoXy5vcHRpb25zLnByZXZBcnJvdykpIHtcbiAgICAgICAgICAgICAgICAgICAgXy4kcHJldkFycm93LnByZXBlbmRUbyhfLm9wdGlvbnMuYXBwZW5kQXJyb3dzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5odG1sRXhwci50ZXN0KF8ub3B0aW9ucy5uZXh0QXJyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5hcHBlbmRUbyhfLm9wdGlvbnMuYXBwZW5kQXJyb3dzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1kaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93LmFkZCggXy4kbmV4dEFycm93IClcblxuICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWhpZGRlbicpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWRpc2FibGVkJzogJ3RydWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RhYmluZGV4JzogJy0xJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGREb3RzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgaSwgZG90O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlci5hZGRDbGFzcygnc2xpY2stZG90dGVkJyk7XG5cbiAgICAgICAgICAgIGRvdCA9ICQoJzx1bCAvPicpLmFkZENsYXNzKF8ub3B0aW9ucy5kb3RzQ2xhc3MpO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IF8uZ2V0RG90Q291bnQoKTsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgZG90LmFwcGVuZCgkKCc8bGkgLz4nKS5hcHBlbmQoXy5vcHRpb25zLmN1c3RvbVBhZ2luZy5jYWxsKHRoaXMsIF8sIGkpKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uJGRvdHMgPSBkb3QuYXBwZW5kVG8oXy5vcHRpb25zLmFwcGVuZERvdHMpO1xuXG4gICAgICAgICAgICBfLiRkb3RzLmZpbmQoJ2xpJykuZmlyc3QoKS5hZGRDbGFzcygnc2xpY2stYWN0aXZlJyk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5idWlsZE91dCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLiRzbGlkZXMgPVxuICAgICAgICAgICAgXy4kc2xpZGVyXG4gICAgICAgICAgICAgICAgLmNoaWxkcmVuKCBfLm9wdGlvbnMuc2xpZGUgKyAnOm5vdCguc2xpY2stY2xvbmVkKScpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1zbGlkZScpO1xuXG4gICAgICAgIF8uc2xpZGVDb3VudCA9IF8uJHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgXy4kc2xpZGVzLmVhY2goZnVuY3Rpb24oaW5kZXgsIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICQoZWxlbWVudClcbiAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1zbGljay1pbmRleCcsIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kYXRhKCdvcmlnaW5hbFN0eWxpbmcnLCAkKGVsZW1lbnQpLmF0dHIoJ3N0eWxlJykgfHwgJycpO1xuICAgICAgICB9KTtcblxuICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLXNsaWRlcicpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2sgPSAoXy5zbGlkZUNvdW50ID09PSAwKSA/XG4gICAgICAgICAgICAkKCc8ZGl2IGNsYXNzPVwic2xpY2stdHJhY2tcIi8+JykuYXBwZW5kVG8oXy4kc2xpZGVyKSA6XG4gICAgICAgICAgICBfLiRzbGlkZXMud3JhcEFsbCgnPGRpdiBjbGFzcz1cInNsaWNrLXRyYWNrXCIvPicpLnBhcmVudCgpO1xuXG4gICAgICAgIF8uJGxpc3QgPSBfLiRzbGlkZVRyYWNrLndyYXAoXG4gICAgICAgICAgICAnPGRpdiBjbGFzcz1cInNsaWNrLWxpc3RcIi8+JykucGFyZW50KCk7XG4gICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKCdvcGFjaXR5JywgMCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlIHx8IF8ub3B0aW9ucy5zd2lwZVRvU2xpZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICAkKCdpbWdbZGF0YS1sYXp5XScsIF8uJHNsaWRlcikubm90KCdbc3JjXScpLmFkZENsYXNzKCdzbGljay1sb2FkaW5nJyk7XG5cbiAgICAgICAgXy5zZXR1cEluZmluaXRlKCk7XG5cbiAgICAgICAgXy5idWlsZEFycm93cygpO1xuXG4gICAgICAgIF8uYnVpbGREb3RzKCk7XG5cbiAgICAgICAgXy51cGRhdGVEb3RzKCk7XG5cblxuICAgICAgICBfLnNldFNsaWRlQ2xhc3Nlcyh0eXBlb2YgXy5jdXJyZW50U2xpZGUgPT09ICdudW1iZXInID8gXy5jdXJyZW50U2xpZGUgOiAwKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRyYWdnYWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kbGlzdC5hZGRDbGFzcygnZHJhZ2dhYmxlJyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGRSb3dzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBhLCBiLCBjLCBuZXdTbGlkZXMsIG51bU9mU2xpZGVzLCBvcmlnaW5hbFNsaWRlcyxzbGlkZXNQZXJTZWN0aW9uO1xuXG4gICAgICAgIG5ld1NsaWRlcyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgb3JpZ2luYWxTbGlkZXMgPSBfLiRzbGlkZXIuY2hpbGRyZW4oKTtcblxuICAgICAgICBpZihfLm9wdGlvbnMucm93cyA+IDApIHtcblxuICAgICAgICAgICAgc2xpZGVzUGVyU2VjdGlvbiA9IF8ub3B0aW9ucy5zbGlkZXNQZXJSb3cgKiBfLm9wdGlvbnMucm93cztcbiAgICAgICAgICAgIG51bU9mU2xpZGVzID0gTWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsU2xpZGVzLmxlbmd0aCAvIHNsaWRlc1BlclNlY3Rpb25cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvcihhID0gMDsgYSA8IG51bU9mU2xpZGVzOyBhKyspe1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIGZvcihiID0gMDsgYiA8IF8ub3B0aW9ucy5yb3dzOyBiKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgICAgICBmb3IoYyA9IDA7IGMgPCBfLm9wdGlvbnMuc2xpZGVzUGVyUm93OyBjKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSAoYSAqIHNsaWRlc1BlclNlY3Rpb24gKyAoKGIgKiBfLm9wdGlvbnMuc2xpZGVzUGVyUm93KSArIGMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5hbFNsaWRlcy5nZXQodGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChvcmlnaW5hbFNsaWRlcy5nZXQodGFyZ2V0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2xpZGUuYXBwZW5kQ2hpbGQocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3U2xpZGVzLmFwcGVuZENoaWxkKHNsaWRlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy4kc2xpZGVyLmVtcHR5KCkuYXBwZW5kKG5ld1NsaWRlcyk7XG4gICAgICAgICAgICBfLiRzbGlkZXIuY2hpbGRyZW4oKS5jaGlsZHJlbigpLmNoaWxkcmVuKClcbiAgICAgICAgICAgICAgICAuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzooMTAwIC8gXy5vcHRpb25zLnNsaWRlc1BlclJvdykgKyAnJScsXG4gICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogJ2lubGluZS1ibG9jaydcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNoZWNrUmVzcG9uc2l2ZSA9IGZ1bmN0aW9uKGluaXRpYWwsIGZvcmNlVXBkYXRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgYnJlYWtwb2ludCwgdGFyZ2V0QnJlYWtwb2ludCwgcmVzcG9uZFRvV2lkdGgsIHRyaWdnZXJCcmVha3BvaW50ID0gZmFsc2U7XG4gICAgICAgIHZhciBzbGlkZXJXaWR0aCA9IF8uJHNsaWRlci53aWR0aCgpO1xuICAgICAgICB2YXIgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCAkKHdpbmRvdykud2lkdGgoKTtcblxuICAgICAgICBpZiAoXy5yZXNwb25kVG8gPT09ICd3aW5kb3cnKSB7XG4gICAgICAgICAgICByZXNwb25kVG9XaWR0aCA9IHdpbmRvd1dpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKF8ucmVzcG9uZFRvID09PSAnc2xpZGVyJykge1xuICAgICAgICAgICAgcmVzcG9uZFRvV2lkdGggPSBzbGlkZXJXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmIChfLnJlc3BvbmRUbyA9PT0gJ21pbicpIHtcbiAgICAgICAgICAgIHJlc3BvbmRUb1dpZHRoID0gTWF0aC5taW4od2luZG93V2lkdGgsIHNsaWRlcldpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy5vcHRpb25zLnJlc3BvbnNpdmUgJiZcbiAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlLmxlbmd0aCAmJlxuICAgICAgICAgICAgXy5vcHRpb25zLnJlc3BvbnNpdmUgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludCA9IG51bGw7XG5cbiAgICAgICAgICAgIGZvciAoYnJlYWtwb2ludCBpbiBfLmJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uYnJlYWtwb2ludHMuaGFzT3duUHJvcGVydHkoYnJlYWtwb2ludCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF8ub3JpZ2luYWxTZXR0aW5ncy5tb2JpbGVGaXJzdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25kVG9XaWR0aCA8IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCcmVha3BvaW50ID0gXy5icmVha3BvaW50c1ticmVha3BvaW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25kVG9XaWR0aCA+IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCcmVha3BvaW50ID0gXy5icmVha3BvaW50c1ticmVha3BvaW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhcmdldEJyZWFrcG9pbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5hY3RpdmVCcmVha3BvaW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRCcmVha3BvaW50ICE9PSBfLmFjdGl2ZUJyZWFrcG9pbnQgfHwgZm9yY2VVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uYWN0aXZlQnJlYWtwb2ludCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfLmJyZWFrcG9pbnRTZXR0aW5nc1t0YXJnZXRCcmVha3BvaW50XSA9PT0gJ3Vuc2xpY2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy51bnNsaWNrKHRhcmdldEJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgXy5vcmlnaW5hbFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJyZWFrcG9pbnRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8ub3B0aW9ucy5pbml0aWFsU2xpZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8ucmVmcmVzaChpbml0aWFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJCcmVha3BvaW50ID0gdGFyZ2V0QnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF8uYWN0aXZlQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfLmJyZWFrcG9pbnRTZXR0aW5nc1t0YXJnZXRCcmVha3BvaW50XSA9PT0gJ3Vuc2xpY2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnVuc2xpY2sodGFyZ2V0QnJlYWtwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgXy5vcmlnaW5hbFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uYnJlYWtwb2ludFNldHRpbmdzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCcmVha3BvaW50XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gXy5vcHRpb25zLmluaXRpYWxTbGlkZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF8ucmVmcmVzaChpbml0aWFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5hY3RpdmVCcmVha3BvaW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uYWN0aXZlQnJlYWtwb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucyA9IF8ub3JpZ2luYWxTZXR0aW5ncztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gXy5vcHRpb25zLmluaXRpYWxTbGlkZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBfLnJlZnJlc2goaW5pdGlhbCk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJCcmVha3BvaW50ID0gdGFyZ2V0QnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG9ubHkgdHJpZ2dlciBicmVha3BvaW50cyBkdXJpbmcgYW4gYWN0dWFsIGJyZWFrLiBub3Qgb24gaW5pdGlhbGl6ZS5cbiAgICAgICAgICAgIGlmKCAhaW5pdGlhbCAmJiB0cmlnZ2VyQnJlYWtwb2ludCAhPT0gZmFsc2UgKSB7XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2JyZWFrcG9pbnQnLCBbXywgdHJpZ2dlckJyZWFrcG9pbnRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5jaGFuZ2VTbGlkZSA9IGZ1bmN0aW9uKGV2ZW50LCBkb250QW5pbWF0ZSkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgICR0YXJnZXQgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLFxuICAgICAgICAgICAgaW5kZXhPZmZzZXQsIHNsaWRlT2Zmc2V0LCB1bmV2ZW5PZmZzZXQ7XG5cbiAgICAgICAgLy8gSWYgdGFyZ2V0IGlzIGEgbGluaywgcHJldmVudCBkZWZhdWx0IGFjdGlvbi5cbiAgICAgICAgaWYoJHRhcmdldC5pcygnYScpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGFyZ2V0IGlzIG5vdCB0aGUgPGxpPiBlbGVtZW50IChpZTogYSBjaGlsZCksIGZpbmQgdGhlIDxsaT4uXG4gICAgICAgIGlmKCEkdGFyZ2V0LmlzKCdsaScpKSB7XG4gICAgICAgICAgICAkdGFyZ2V0ID0gJHRhcmdldC5jbG9zZXN0KCdsaScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdW5ldmVuT2Zmc2V0ID0gKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAhPT0gMCk7XG4gICAgICAgIGluZGV4T2Zmc2V0ID0gdW5ldmVuT2Zmc2V0ID8gMCA6IChfLnNsaWRlQ291bnQgLSBfLmN1cnJlbnRTbGlkZSkgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5kYXRhLm1lc3NhZ2UpIHtcblxuICAgICAgICAgICAgY2FzZSAncHJldmlvdXMnOlxuICAgICAgICAgICAgICAgIHNsaWRlT2Zmc2V0ID0gaW5kZXhPZmZzZXQgPT09IDAgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gaW5kZXhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoXy5jdXJyZW50U2xpZGUgLSBzbGlkZU9mZnNldCwgZmFsc2UsIGRvbnRBbmltYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICAgICAgICAgIHNsaWRlT2Zmc2V0ID0gaW5kZXhPZmZzZXQgPT09IDAgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBpbmRleE9mZnNldDtcbiAgICAgICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgICAgICAgICBfLnNsaWRlSGFuZGxlcihfLmN1cnJlbnRTbGlkZSArIHNsaWRlT2Zmc2V0LCBmYWxzZSwgZG9udEFuaW1hdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnaW5kZXgnOlxuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGV2ZW50LmRhdGEuaW5kZXggPT09IDAgPyAwIDpcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuZGF0YS5pbmRleCB8fCAkdGFyZ2V0LmluZGV4KCkgKiBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgICAgICAgICBfLnNsaWRlSGFuZGxlcihfLmNoZWNrTmF2aWdhYmxlKGluZGV4KSwgZmFsc2UsIGRvbnRBbmltYXRlKTtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0LmNoaWxkcmVuKCkudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2hlY2tOYXZpZ2FibGUgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIG5hdmlnYWJsZXMsIHByZXZOYXZpZ2FibGU7XG5cbiAgICAgICAgbmF2aWdhYmxlcyA9IF8uZ2V0TmF2aWdhYmxlSW5kZXhlcygpO1xuICAgICAgICBwcmV2TmF2aWdhYmxlID0gMDtcbiAgICAgICAgaWYgKGluZGV4ID4gbmF2aWdhYmxlc1tuYXZpZ2FibGVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgICBpbmRleCA9IG5hdmlnYWJsZXNbbmF2aWdhYmxlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAodmFyIG4gaW4gbmF2aWdhYmxlcykge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IG5hdmlnYWJsZXNbbl0pIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwcmV2TmF2aWdhYmxlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJldk5hdmlnYWJsZSA9IG5hdmlnYWJsZXNbbl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5jbGVhblVwRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyAmJiBfLiRkb3RzICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgICQoJ2xpJywgXy4kZG90cylcbiAgICAgICAgICAgICAgICAub2ZmKCdjbGljay5zbGljaycsIF8uY2hhbmdlU2xpZGUpXG4gICAgICAgICAgICAgICAgLm9mZignbW91c2VlbnRlci5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIHRydWUpKVxuICAgICAgICAgICAgICAgIC5vZmYoJ21vdXNlbGVhdmUuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCBmYWxzZSkpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRkb3RzLm9mZigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXIub2ZmKCdmb2N1cy5zbGljayBibHVyLnNsaWNrJyk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy4kcHJldkFycm93ICYmIF8uJHByZXZBcnJvdy5vZmYoJ2NsaWNrLnNsaWNrJywgXy5jaGFuZ2VTbGlkZSk7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cgJiYgXy4kbmV4dEFycm93Lm9mZignY2xpY2suc2xpY2snLCBfLmNoYW5nZVNsaWRlKTtcblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93ICYmIF8uJHByZXZBcnJvdy5vZmYoJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdyAmJiBfLiRuZXh0QXJyb3cub2ZmKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF8uJGxpc3Qub2ZmKCd0b3VjaHN0YXJ0LnNsaWNrIG1vdXNlZG93bi5zbGljaycsIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vZmYoJ3RvdWNobW92ZS5zbGljayBtb3VzZW1vdmUuc2xpY2snLCBfLnN3aXBlSGFuZGxlcik7XG4gICAgICAgIF8uJGxpc3Qub2ZmKCd0b3VjaGVuZC5zbGljayBtb3VzZXVwLnNsaWNrJywgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9mZigndG91Y2hjYW5jZWwuc2xpY2sgbW91c2VsZWF2ZS5zbGljaycsIF8uc3dpcGVIYW5kbGVyKTtcblxuICAgICAgICBfLiRsaXN0Lm9mZignY2xpY2suc2xpY2snLCBfLmNsaWNrSGFuZGxlcik7XG5cbiAgICAgICAgJChkb2N1bWVudCkub2ZmKF8udmlzaWJpbGl0eUNoYW5nZSwgXy52aXNpYmlsaXR5KTtcblxuICAgICAgICBfLmNsZWFuVXBTbGlkZUV2ZW50cygpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kbGlzdC5vZmYoJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mb2N1c09uU2VsZWN0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAkKF8uJHNsaWRlVHJhY2spLmNoaWxkcmVuKCkub2ZmKCdjbGljay5zbGljaycsIF8uc2VsZWN0SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICAkKHdpbmRvdykub2ZmKCdvcmllbnRhdGlvbmNoYW5nZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgXy5vcmllbnRhdGlvbkNoYW5nZSk7XG5cbiAgICAgICAgJCh3aW5kb3cpLm9mZigncmVzaXplLnNsaWNrLnNsaWNrLScgKyBfLmluc3RhbmNlVWlkLCBfLnJlc2l6ZSk7XG5cbiAgICAgICAgJCgnW2RyYWdnYWJsZSE9dHJ1ZV0nLCBfLiRzbGlkZVRyYWNrKS5vZmYoJ2RyYWdzdGFydCcsIF8ucHJldmVudERlZmF1bHQpO1xuXG4gICAgICAgICQod2luZG93KS5vZmYoJ2xvYWQuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsIF8uc2V0UG9zaXRpb24pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5jbGVhblVwU2xpZGVFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy4kbGlzdC5vZmYoJ21vdXNlZW50ZXIuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCB0cnVlKSk7XG4gICAgICAgIF8uJGxpc3Qub2ZmKCdtb3VzZWxlYXZlLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgZmFsc2UpKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xlYW5VcFJvd3MgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsIG9yaWdpbmFsU2xpZGVzO1xuXG4gICAgICAgIGlmKF8ub3B0aW9ucy5yb3dzID4gMCkge1xuICAgICAgICAgICAgb3JpZ2luYWxTbGlkZXMgPSBfLiRzbGlkZXMuY2hpbGRyZW4oKS5jaGlsZHJlbigpO1xuICAgICAgICAgICAgb3JpZ2luYWxTbGlkZXMucmVtb3ZlQXR0cignc3R5bGUnKTtcbiAgICAgICAgICAgIF8uJHNsaWRlci5lbXB0eSgpLmFwcGVuZChvcmlnaW5hbFNsaWRlcyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xpY2tIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uc2hvdWxkQ2xpY2sgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24ocmVmcmVzaCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmF1dG9QbGF5Q2xlYXIoKTtcblxuICAgICAgICBfLnRvdWNoT2JqZWN0ID0ge307XG5cbiAgICAgICAgXy5jbGVhblVwRXZlbnRzKCk7XG5cbiAgICAgICAgJCgnLnNsaWNrLWNsb25lZCcsIF8uJHNsaWRlcikuZGV0YWNoKCk7XG5cbiAgICAgICAgaWYgKF8uJGRvdHMpIHtcbiAgICAgICAgICAgIF8uJGRvdHMucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8uJHByZXZBcnJvdyAmJiBfLiRwcmV2QXJyb3cubGVuZ3RoICkge1xuXG4gICAgICAgICAgICBfLiRwcmV2QXJyb3dcbiAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkIHNsaWNrLWFycm93IHNsaWNrLWhpZGRlbicpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuIGFyaWEtZGlzYWJsZWQgdGFiaW5kZXgnKVxuICAgICAgICAgICAgICAgIC5jc3MoJ2Rpc3BsYXknLCcnKTtcblxuICAgICAgICAgICAgaWYgKCBfLmh0bWxFeHByLnRlc3QoIF8ub3B0aW9ucy5wcmV2QXJyb3cgKSkge1xuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy4kbmV4dEFycm93ICYmIF8uJG5leHRBcnJvdy5sZW5ndGggKSB7XG5cbiAgICAgICAgICAgIF8uJG5leHRBcnJvd1xuICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQgc2xpY2stYXJyb3cgc2xpY2staGlkZGVuJylcbiAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4gYXJpYS1kaXNhYmxlZCB0YWJpbmRleCcpXG4gICAgICAgICAgICAgICAgLmNzcygnZGlzcGxheScsJycpO1xuXG4gICAgICAgICAgICBpZiAoIF8uaHRtbEV4cHIudGVzdCggXy5vcHRpb25zLm5leHRBcnJvdyApKSB7XG4gICAgICAgICAgICAgICAgXy4kbmV4dEFycm93LnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICBpZiAoXy4kc2xpZGVzKSB7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stc2xpZGUgc2xpY2stYWN0aXZlIHNsaWNrLWNlbnRlciBzbGljay12aXNpYmxlIHNsaWNrLWN1cnJlbnQnKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdhcmlhLWhpZGRlbicpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2RhdGEtc2xpY2staW5kZXgnKVxuICAgICAgICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignc3R5bGUnLCAkKHRoaXMpLmRhdGEoJ29yaWdpbmFsU3R5bGluZycpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmRldGFjaCgpO1xuXG4gICAgICAgICAgICBfLiRsaXN0LmRldGFjaCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZXIuYXBwZW5kKF8uJHNsaWRlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBfLmNsZWFuVXBSb3dzKCk7XG5cbiAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay1zbGlkZXInKTtcbiAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay1pbml0aWFsaXplZCcpO1xuICAgICAgICBfLiRzbGlkZXIucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRvdHRlZCcpO1xuXG4gICAgICAgIF8udW5zbGlja2VkID0gdHJ1ZTtcblxuICAgICAgICBpZighcmVmcmVzaCkge1xuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2Rlc3Ryb3knLCBbX10pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmRpc2FibGVUcmFuc2l0aW9uID0gZnVuY3Rpb24oc2xpZGUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICB0cmFuc2l0aW9uID0ge307XG5cbiAgICAgICAgdHJhbnNpdGlvbltfLnRyYW5zaXRpb25UeXBlXSA9ICcnO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKHRyYW5zaXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlKS5jc3ModHJhbnNpdGlvbik7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZmFkZVNsaWRlID0gZnVuY3Rpb24oc2xpZGVJbmRleCwgY2FsbGJhY2spIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uY3NzVHJhbnNpdGlvbnMgPT09IGZhbHNlKSB7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZUluZGV4KS5jc3Moe1xuICAgICAgICAgICAgICAgIHpJbmRleDogXy5vcHRpb25zLnpJbmRleFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZUluZGV4KS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQsIF8ub3B0aW9ucy5lYXNpbmcsIGNhbGxiYWNrKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBfLmFwcGx5VHJhbnNpdGlvbihzbGlkZUluZGV4KTtcblxuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlSW5kZXgpLmNzcyh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXhcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIF8uZGlzYWJsZVRyYW5zaXRpb24oc2xpZGVJbmRleCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCgpO1xuICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5mYWRlU2xpZGVPdXQgPSBmdW5jdGlvbihzbGlkZUluZGV4KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLmNzc1RyYW5zaXRpb25zID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXggLSAyXG4gICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQsIF8ub3B0aW9ucy5lYXNpbmcpO1xuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIF8uYXBwbHlUcmFuc2l0aW9uKHNsaWRlSW5kZXgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuY3NzKHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgIHpJbmRleDogXy5vcHRpb25zLnpJbmRleCAtIDJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZmlsdGVyU2xpZGVzID0gU2xpY2sucHJvdG90eXBlLnNsaWNrRmlsdGVyID0gZnVuY3Rpb24oZmlsdGVyKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChmaWx0ZXIgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBfLiRzbGlkZXM7XG5cbiAgICAgICAgICAgIF8udW5sb2FkKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVzQ2FjaGUuZmlsdGVyKGZpbHRlcikuYXBwZW5kVG8oXy4kc2xpZGVUcmFjayk7XG5cbiAgICAgICAgICAgIF8ucmVpbml0KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5mb2N1c0hhbmRsZXIgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy4kc2xpZGVyXG4gICAgICAgICAgICAub2ZmKCdmb2N1cy5zbGljayBibHVyLnNsaWNrJylcbiAgICAgICAgICAgIC5vbignZm9jdXMuc2xpY2sgYmx1ci5zbGljaycsICcqJywgZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB2YXIgJHNmID0gJCh0aGlzKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmKCBfLm9wdGlvbnMucGF1c2VPbkZvY3VzICkge1xuICAgICAgICAgICAgICAgICAgICBfLmZvY3Vzc2VkID0gJHNmLmlzKCc6Zm9jdXMnKTtcbiAgICAgICAgICAgICAgICAgICAgXy5hdXRvUGxheSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXRDdXJyZW50ID0gU2xpY2sucHJvdG90eXBlLnNsaWNrQ3VycmVudFNsaWRlID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuICAgICAgICByZXR1cm4gXy5jdXJyZW50U2xpZGU7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldERvdENvdW50ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIHZhciBicmVha1BvaW50ID0gMDtcbiAgICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgICB2YXIgcGFnZXJRdHkgPSAwO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgICAgICArK3BhZ2VyUXR5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoYnJlYWtQb2ludCA8IF8uc2xpZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICArK3BhZ2VyUXR5O1xuICAgICAgICAgICAgICAgICAgICBicmVha1BvaW50ID0gY291bnRlciArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlciArPSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwYWdlclF0eSA9IF8uc2xpZGVDb3VudDtcbiAgICAgICAgfSBlbHNlIGlmKCFfLm9wdGlvbnMuYXNOYXZGb3IpIHtcbiAgICAgICAgICAgIHBhZ2VyUXR5ID0gMSArIE1hdGguY2VpbCgoXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgLyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpO1xuICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICB3aGlsZSAoYnJlYWtQb2ludCA8IF8uc2xpZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICsrcGFnZXJRdHk7XG4gICAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGNvdW50ZXIgKyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG4gICAgICAgICAgICAgICAgY291bnRlciArPSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFnZXJRdHkgLSAxO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXRMZWZ0ID0gZnVuY3Rpb24oc2xpZGVJbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHRhcmdldExlZnQsXG4gICAgICAgICAgICB2ZXJ0aWNhbEhlaWdodCxcbiAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgICAgIHRhcmdldFNsaWRlLFxuICAgICAgICAgICAgY29lZjtcblxuICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gMDtcbiAgICAgICAgdmVydGljYWxIZWlnaHQgPSBfLiRzbGlkZXMuZmlyc3QoKS5vdXRlckhlaWdodCh0cnVlKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAoXy5zbGlkZVdpZHRoICogXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgKiAtMTtcbiAgICAgICAgICAgICAgICBjb2VmID0gLTFcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IHRydWUgJiYgXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZWYgPSAtMS41O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZWYgPSAtMlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKHZlcnRpY2FsSGVpZ2h0ICogXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgKiBjb2VmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsID4gXy5zbGlkZUNvdW50ICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNsaWRlSW5kZXggPiBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAoKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSAoc2xpZGVJbmRleCAtIF8uc2xpZGVDb3VudCkpICogXy5zbGlkZVdpZHRoKSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxPZmZzZXQgPSAoKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSAoc2xpZGVJbmRleCAtIF8uc2xpZGVDb3VudCkpICogdmVydGljYWxIZWlnaHQpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpICogXy5zbGlkZVdpZHRoKSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxPZmZzZXQgPSAoKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkgKiB2ZXJ0aWNhbEhlaWdodCkgKiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA+IF8uc2xpZGVDb3VudCkge1xuICAgICAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAoKHNsaWRlSW5kZXggKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSAtIF8uc2xpZGVDb3VudCkgKiBfLnNsaWRlV2lkdGg7XG4gICAgICAgICAgICAgICAgdmVydGljYWxPZmZzZXQgPSAoKHNsaWRlSW5kZXggKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSAtIF8uc2xpZGVDb3VudCkgKiB2ZXJ0aWNhbEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy5zbGlkZU9mZnNldCA9IDA7XG4gICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAoKF8uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdykpIC8gMikgLSAoKF8uc2xpZGVXaWR0aCAqIF8uc2xpZGVDb3VudCkgLyAyKTtcbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgKz0gXy5zbGlkZVdpZHRoICogTWF0aC5mbG9vcihfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMikgLSBfLnNsaWRlV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAwO1xuICAgICAgICAgICAgXy5zbGlkZU9mZnNldCArPSBfLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0YXJnZXRMZWZ0ID0gKChzbGlkZUluZGV4ICogXy5zbGlkZVdpZHRoKSAqIC0xKSArIF8uc2xpZGVPZmZzZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXRMZWZ0ID0gKChzbGlkZUluZGV4ICogdmVydGljYWxIZWlnaHQpICogLTEpICsgdmVydGljYWxPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZhcmlhYmxlV2lkdGggPT09IHRydWUpIHtcblxuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93IHx8IF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmVxKHNsaWRlSW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmVxKHNsaWRlSW5kZXggKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0U2xpZGVbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IChfLiRzbGlkZVRyYWNrLndpZHRoKCkgLSB0YXJnZXRTbGlkZVswXS5vZmZzZXRMZWZ0IC0gdGFyZ2V0U2xpZGUud2lkdGgoKSkgKiAtMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gdGFyZ2V0U2xpZGVbMF0gPyB0YXJnZXRTbGlkZVswXS5vZmZzZXRMZWZ0ICogLTEgOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgfHwgXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmVxKHNsaWRlSW5kZXgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFNsaWRlID0gXy4kc2xpZGVUcmFjay5jaGlsZHJlbignLnNsaWNrLXNsaWRlJykuZXEoc2xpZGVJbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyAxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnJ0bCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0U2xpZGVbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldExlZnQgPSAoXy4kc2xpZGVUcmFjay53aWR0aCgpIC0gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAtIHRhcmdldFNsaWRlLndpZHRoKCkpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gIDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gdGFyZ2V0U2xpZGVbMF0gPyB0YXJnZXRTbGlkZVswXS5vZmZzZXRMZWZ0ICogLTEgOiAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRhcmdldExlZnQgKz0gKF8uJGxpc3Qud2lkdGgoKSAtIHRhcmdldFNsaWRlLm91dGVyV2lkdGgoKSkgLyAyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldExlZnQ7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldE9wdGlvbiA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0dldE9wdGlvbiA9IGZ1bmN0aW9uKG9wdGlvbikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICByZXR1cm4gXy5vcHRpb25zW29wdGlvbl07XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldE5hdmlnYWJsZUluZGV4ZXMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBicmVha1BvaW50ID0gMCxcbiAgICAgICAgICAgIGNvdW50ZXIgPSAwLFxuICAgICAgICAgICAgaW5kZXhlcyA9IFtdLFxuICAgICAgICAgICAgbWF4O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBtYXggPSBfLnNsaWRlQ291bnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVha1BvaW50ID0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICogLTE7XG4gICAgICAgICAgICBjb3VudGVyID0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICogLTE7XG4gICAgICAgICAgICBtYXggPSBfLnNsaWRlQ291bnQgKiAyO1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGJyZWFrUG9pbnQgPCBtYXgpIHtcbiAgICAgICAgICAgIGluZGV4ZXMucHVzaChicmVha1BvaW50KTtcbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBjb3VudGVyICsgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICAgICAgY291bnRlciArPSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXhlcztcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0U2xpY2sgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0U2xpZGVDb3VudCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHNsaWRlc1RyYXZlcnNlZCwgc3dpcGVkU2xpZGUsIGNlbnRlck9mZnNldDtcblxuICAgICAgICBjZW50ZXJPZmZzZXQgPSBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSA/IF8uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpIDogMDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLnN3aXBlVG9TbGlkZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stc2xpZGUnKS5lYWNoKGZ1bmN0aW9uKGluZGV4LCBzbGlkZSkge1xuICAgICAgICAgICAgICAgIGlmIChzbGlkZS5vZmZzZXRMZWZ0IC0gY2VudGVyT2Zmc2V0ICsgKCQoc2xpZGUpLm91dGVyV2lkdGgoKSAvIDIpID4gKF8uc3dpcGVMZWZ0ICogLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXBlZFNsaWRlID0gc2xpZGU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgc2xpZGVzVHJhdmVyc2VkID0gTWF0aC5hYnMoJChzd2lwZWRTbGlkZSkuYXR0cignZGF0YS1zbGljay1pbmRleCcpIC0gXy5jdXJyZW50U2xpZGUpIHx8IDE7XG5cbiAgICAgICAgICAgIHJldHVybiBzbGlkZXNUcmF2ZXJzZWQ7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ29UbyA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0dvVG8gPSBmdW5jdGlvbihzbGlkZSwgZG9udEFuaW1hdGUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ2luZGV4JyxcbiAgICAgICAgICAgICAgICBpbmRleDogcGFyc2VJbnQoc2xpZGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGRvbnRBbmltYXRlKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKGNyZWF0aW9uKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICghJChfLiRzbGlkZXIpLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG5cbiAgICAgICAgICAgICQoXy4kc2xpZGVyKS5hZGRDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKTtcblxuICAgICAgICAgICAgXy5idWlsZFJvd3MoKTtcbiAgICAgICAgICAgIF8uYnVpbGRPdXQoKTtcbiAgICAgICAgICAgIF8uc2V0UHJvcHMoKTtcbiAgICAgICAgICAgIF8uc3RhcnRMb2FkKCk7XG4gICAgICAgICAgICBfLmxvYWRTbGlkZXIoKTtcbiAgICAgICAgICAgIF8uaW5pdGlhbGl6ZUV2ZW50cygpO1xuICAgICAgICAgICAgXy51cGRhdGVBcnJvd3MoKTtcbiAgICAgICAgICAgIF8udXBkYXRlRG90cygpO1xuICAgICAgICAgICAgXy5jaGVja1Jlc3BvbnNpdmUodHJ1ZSk7XG4gICAgICAgICAgICBfLmZvY3VzSGFuZGxlcigpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRpb24pIHtcbiAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdpbml0JywgW19dKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy5pbml0QURBKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8ub3B0aW9ucy5hdXRvcGxheSApIHtcblxuICAgICAgICAgICAgXy5wYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXRBREEgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgICAgIG51bURvdEdyb3VwcyA9IE1hdGguY2VpbChfLnNsaWRlQ291bnQgLyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSxcbiAgICAgICAgICAgICAgICB0YWJDb250cm9sSW5kZXhlcyA9IF8uZ2V0TmF2aWdhYmxlSW5kZXhlcygpLmZpbHRlcihmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh2YWwgPj0gMCkgJiYgKHZhbCA8IF8uc2xpZGVDb3VudCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVzLmFkZChfLiRzbGlkZVRyYWNrLmZpbmQoJy5zbGljay1jbG9uZWQnKSkuYXR0cih7XG4gICAgICAgICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZScsXG4gICAgICAgICAgICAndGFiaW5kZXgnOiAnLTEnXG4gICAgICAgIH0pLmZpbmQoJ2EsIGlucHV0LCBidXR0b24sIHNlbGVjdCcpLmF0dHIoe1xuICAgICAgICAgICAgJ3RhYmluZGV4JzogJy0xJ1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoXy4kZG90cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgXy4kc2xpZGVzLm5vdChfLiRzbGlkZVRyYWNrLmZpbmQoJy5zbGljay1jbG9uZWQnKSkuZWFjaChmdW5jdGlvbihpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNsaWRlQ29udHJvbEluZGV4ID0gdGFiQ29udHJvbEluZGV4ZXMuaW5kZXhPZihpKTtcblxuICAgICAgICAgICAgICAgICQodGhpcykuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICdyb2xlJzogJ3RhYnBhbmVsJyxcbiAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3NsaWNrLXNsaWRlJyArIF8uaW5zdGFuY2VVaWQgKyBpLFxuICAgICAgICAgICAgICAgICAgICAndGFiaW5kZXgnOiAtMVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNsaWRlQ29udHJvbEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgIHZhciBhcmlhQnV0dG9uQ29udHJvbCA9ICdzbGljay1zbGlkZS1jb250cm9sJyArIF8uaW5zdGFuY2VVaWQgKyBzbGlkZUNvbnRyb2xJbmRleFxuICAgICAgICAgICAgICAgICAgIGlmICgkKCcjJyArIGFyaWFCdXR0b25Db250cm9sKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBhcmlhQnV0dG9uQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBfLiRkb3RzLmF0dHIoJ3JvbGUnLCAndGFibGlzdCcpLmZpbmQoJ2xpJykuZWFjaChmdW5jdGlvbihpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1hcHBlZFNsaWRlSW5kZXggPSB0YWJDb250cm9sSW5kZXhlc1tpXTtcblxuICAgICAgICAgICAgICAgICQodGhpcykuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICdyb2xlJzogJ3ByZXNlbnRhdGlvbidcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnYnV0dG9uJykuZmlyc3QoKS5hdHRyKHtcbiAgICAgICAgICAgICAgICAgICAgJ3JvbGUnOiAndGFiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3NsaWNrLXNsaWRlLWNvbnRyb2wnICsgXy5pbnN0YW5jZVVpZCArIGksXG4gICAgICAgICAgICAgICAgICAgICdhcmlhLWNvbnRyb2xzJzogJ3NsaWNrLXNsaWRlJyArIF8uaW5zdGFuY2VVaWQgKyBtYXBwZWRTbGlkZUluZGV4LFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IChpICsgMSkgKyAnIG9mICcgKyBudW1Eb3RHcm91cHMsXG4gICAgICAgICAgICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgJ3RhYmluZGV4JzogJy0xJ1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9KS5lcShfLmN1cnJlbnRTbGlkZSkuZmluZCgnYnV0dG9uJykuYXR0cih7XG4gICAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgJ3RhYmluZGV4JzogJzAnXG4gICAgICAgICAgICB9KS5lbmQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGk9Xy5jdXJyZW50U2xpZGUsIG1heD1pK18ub3B0aW9ucy5zbGlkZXNUb1Nob3c7IGkgPCBtYXg7IGkrKykge1xuICAgICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPbkNoYW5nZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKGkpLmF0dHIoeyd0YWJpbmRleCc6ICcwJ30pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoaSkucmVtb3ZlQXR0cigndGFiaW5kZXgnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfLmFjdGl2YXRlQURBKCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXRBcnJvd0V2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFycm93cyA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBfLiRwcmV2QXJyb3dcbiAgICAgICAgICAgICAgIC5vZmYoJ2NsaWNrLnNsaWNrJylcbiAgICAgICAgICAgICAgIC5vbignY2xpY2suc2xpY2snLCB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdwcmV2aW91cydcbiAgICAgICAgICAgICAgIH0sIF8uY2hhbmdlU2xpZGUpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93XG4gICAgICAgICAgICAgICAub2ZmKCdjbGljay5zbGljaycpXG4gICAgICAgICAgICAgICAub24oJ2NsaWNrLnNsaWNrJywge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnbmV4dCdcbiAgICAgICAgICAgICAgIH0sIF8uY2hhbmdlU2xpZGUpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cub24oJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5vbigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdERvdEV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgJCgnbGknLCBfLiRkb3RzKS5vbignY2xpY2suc2xpY2snLCB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ2luZGV4J1xuICAgICAgICAgICAgfSwgXy5jaGFuZ2VTbGlkZSk7XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uJGRvdHMub24oJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8ub3B0aW9ucy5wYXVzZU9uRG90c0hvdmVyID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgJCgnbGknLCBfLiRkb3RzKVxuICAgICAgICAgICAgICAgIC5vbignbW91c2VlbnRlci5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIHRydWUpKVxuICAgICAgICAgICAgICAgIC5vbignbW91c2VsZWF2ZS5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIGZhbHNlKSk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0U2xpZGVFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMucGF1c2VPbkhvdmVyICkge1xuXG4gICAgICAgICAgICBfLiRsaXN0Lm9uKCdtb3VzZWVudGVyLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgdHJ1ZSkpO1xuICAgICAgICAgICAgXy4kbGlzdC5vbignbW91c2VsZWF2ZS5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIGZhbHNlKSk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0aWFsaXplRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uaW5pdEFycm93RXZlbnRzKCk7XG5cbiAgICAgICAgXy5pbml0RG90RXZlbnRzKCk7XG4gICAgICAgIF8uaW5pdFNsaWRlRXZlbnRzKCk7XG5cbiAgICAgICAgXy4kbGlzdC5vbigndG91Y2hzdGFydC5zbGljayBtb3VzZWRvd24uc2xpY2snLCB7XG4gICAgICAgICAgICBhY3Rpb246ICdzdGFydCdcbiAgICAgICAgfSwgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9uKCd0b3VjaG1vdmUuc2xpY2sgbW91c2Vtb3ZlLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnbW92ZSdcbiAgICAgICAgfSwgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9uKCd0b3VjaGVuZC5zbGljayBtb3VzZXVwLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnZW5kJ1xuICAgICAgICB9LCBfLnN3aXBlSGFuZGxlcik7XG4gICAgICAgIF8uJGxpc3Qub24oJ3RvdWNoY2FuY2VsLnNsaWNrIG1vdXNlbGVhdmUuc2xpY2snLCB7XG4gICAgICAgICAgICBhY3Rpb246ICdlbmQnXG4gICAgICAgIH0sIF8uc3dpcGVIYW5kbGVyKTtcblxuICAgICAgICBfLiRsaXN0Lm9uKCdjbGljay5zbGljaycsIF8uY2xpY2tIYW5kbGVyKTtcblxuICAgICAgICAkKGRvY3VtZW50KS5vbihfLnZpc2liaWxpdHlDaGFuZ2UsICQucHJveHkoXy52aXNpYmlsaXR5LCBfKSk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLiRsaXN0Lm9uKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPblNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgJChfLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9uKCdjbGljay5zbGljaycsIF8uc2VsZWN0SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICAkKHdpbmRvdykub24oJ29yaWVudGF0aW9uY2hhbmdlLnNsaWNrLnNsaWNrLScgKyBfLmluc3RhbmNlVWlkLCAkLnByb3h5KF8ub3JpZW50YXRpb25DaGFuZ2UsIF8pKTtcblxuICAgICAgICAkKHdpbmRvdykub24oJ3Jlc2l6ZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgJC5wcm94eShfLnJlc2l6ZSwgXykpO1xuXG4gICAgICAgICQoJ1tkcmFnZ2FibGUhPXRydWVdJywgXy4kc2xpZGVUcmFjaykub24oJ2RyYWdzdGFydCcsIF8ucHJldmVudERlZmF1bHQpO1xuXG4gICAgICAgICQod2luZG93KS5vbignbG9hZC5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgXy5zZXRQb3NpdGlvbik7XG4gICAgICAgICQoXy5zZXRQb3NpdGlvbik7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXRVSSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFycm93cyA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgIF8uJHByZXZBcnJvdy5zaG93KCk7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cuc2hvdygpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRkb3RzLnNob3coKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmtleUhhbmRsZXIgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcbiAgICAgICAgIC8vRG9udCBzbGlkZSBpZiB0aGUgY3Vyc29yIGlzIGluc2lkZSB0aGUgZm9ybSBmaWVsZHMgYW5kIGFycm93IGtleXMgYXJlIHByZXNzZWRcbiAgICAgICAgaWYoIWV2ZW50LnRhcmdldC50YWdOYW1lLm1hdGNoKCdURVhUQVJFQXxJTlBVVHxTRUxFQ1QnKSkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDM3ICYmIF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IF8ub3B0aW9ucy5ydGwgPT09IHRydWUgPyAnbmV4dCcgOiAgJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IDM5ICYmIF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IF8ub3B0aW9ucy5ydGwgPT09IHRydWUgPyAncHJldmlvdXMnIDogJ25leHQnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5sYXp5TG9hZCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGxvYWRSYW5nZSwgY2xvbmVSYW5nZSwgcmFuZ2VTdGFydCwgcmFuZ2VFbmQ7XG5cbiAgICAgICAgZnVuY3Rpb24gbG9hZEltYWdlcyhpbWFnZXNTY29wZSkge1xuXG4gICAgICAgICAgICAkKCdpbWdbZGF0YS1sYXp5XScsIGltYWdlc1Njb3BlKS5lYWNoKGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGltYWdlID0gJCh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VTb3VyY2UgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtbGF6eScpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVNyY1NldCA9ICQodGhpcykuYXR0cignZGF0YS1zcmNzZXQnKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VTaXplcyAgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtc2l6ZXMnKSB8fCBfLiRzbGlkZXIuYXR0cignZGF0YS1zaXplcycpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVRvTG9hZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXG4gICAgICAgICAgICAgICAgaW1hZ2VUb0xvYWQub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hbmltYXRlKHsgb3BhY2l0eTogMCB9LCAxMDAsIGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlU3JjU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignc3Jjc2V0JywgaW1hZ2VTcmNTZXQgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2VTaXplcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignc2l6ZXMnLCBpbWFnZVNpemVzICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignc3JjJywgaW1hZ2VTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hbmltYXRlKHsgb3BhY2l0eTogMSB9LCAyMDAsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGF0YS1sYXp5IGRhdGEtc3Jjc2V0IGRhdGEtc2l6ZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stbG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignbGF6eUxvYWRlZCcsIFtfLCBpbWFnZSwgaW1hZ2VTb3VyY2VdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGltYWdlVG9Mb2FkLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoICdkYXRhLWxhenknIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcyggJ3NsaWNrLWxvYWRpbmcnIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcyggJ3NsaWNrLWxhenlsb2FkLWVycm9yJyApO1xuXG4gICAgICAgICAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdsYXp5TG9hZEVycm9yJywgWyBfLCBpbWFnZSwgaW1hZ2VTb3VyY2UgXSk7XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaW1hZ2VUb0xvYWQuc3JjID0gaW1hZ2VTb3VyY2U7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByYW5nZVN0YXJ0ID0gXy5jdXJyZW50U2xpZGUgKyAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIgKyAxKTtcbiAgICAgICAgICAgICAgICByYW5nZUVuZCA9IHJhbmdlU3RhcnQgKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmFuZ2VTdGFydCA9IE1hdGgubWF4KDAsIF8uY3VycmVudFNsaWRlIC0gKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyICsgMSkpO1xuICAgICAgICAgICAgICAgIHJhbmdlRW5kID0gMiArIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMiArIDEpICsgXy5jdXJyZW50U2xpZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByYW5nZVN0YXJ0ID0gXy5vcHRpb25zLmluZmluaXRlID8gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyArIF8uY3VycmVudFNsaWRlIDogXy5jdXJyZW50U2xpZGU7XG4gICAgICAgICAgICByYW5nZUVuZCA9IE1hdGguY2VpbChyYW5nZVN0YXJ0ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBpZiAocmFuZ2VTdGFydCA+IDApIHJhbmdlU3RhcnQtLTtcbiAgICAgICAgICAgICAgICBpZiAocmFuZ2VFbmQgPD0gXy5zbGlkZUNvdW50KSByYW5nZUVuZCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9hZFJhbmdlID0gXy4kc2xpZGVyLmZpbmQoJy5zbGljay1zbGlkZScpLnNsaWNlKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmxhenlMb2FkID09PSAnYW50aWNpcGF0ZWQnKSB7XG4gICAgICAgICAgICB2YXIgcHJldlNsaWRlID0gcmFuZ2VTdGFydCAtIDEsXG4gICAgICAgICAgICAgICAgbmV4dFNsaWRlID0gcmFuZ2VFbmQsXG4gICAgICAgICAgICAgICAgJHNsaWRlcyA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stc2xpZGUnKTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChwcmV2U2xpZGUgPCAwKSBwcmV2U2xpZGUgPSBfLnNsaWRlQ291bnQgLSAxO1xuICAgICAgICAgICAgICAgIGxvYWRSYW5nZSA9IGxvYWRSYW5nZS5hZGQoJHNsaWRlcy5lcShwcmV2U2xpZGUpKTtcbiAgICAgICAgICAgICAgICBsb2FkUmFuZ2UgPSBsb2FkUmFuZ2UuYWRkKCRzbGlkZXMuZXEobmV4dFNsaWRlKSk7XG4gICAgICAgICAgICAgICAgcHJldlNsaWRlLS07XG4gICAgICAgICAgICAgICAgbmV4dFNsaWRlKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsb2FkSW1hZ2VzKGxvYWRSYW5nZSk7XG5cbiAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBjbG9uZVJhbmdlID0gXy4kc2xpZGVyLmZpbmQoJy5zbGljay1zbGlkZScpO1xuICAgICAgICAgICAgbG9hZEltYWdlcyhjbG9uZVJhbmdlKTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgIGlmIChfLmN1cnJlbnRTbGlkZSA+PSBfLnNsaWRlQ291bnQgLSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBjbG9uZVJhbmdlID0gXy4kc2xpZGVyLmZpbmQoJy5zbGljay1jbG9uZWQnKS5zbGljZSgwLCBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KTtcbiAgICAgICAgICAgIGxvYWRJbWFnZXMoY2xvbmVSYW5nZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5jdXJyZW50U2xpZGUgPT09IDApIHtcbiAgICAgICAgICAgIGNsb25lUmFuZ2UgPSBfLiRzbGlkZXIuZmluZCgnLnNsaWNrLWNsb25lZCcpLnNsaWNlKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKiAtMSk7XG4gICAgICAgICAgICBsb2FkSW1hZ2VzKGNsb25lUmFuZ2UpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmxvYWRTbGlkZXIgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5zZXRQb3NpdGlvbigpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay1sb2FkaW5nJyk7XG5cbiAgICAgICAgXy5pbml0VUkoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmxhenlMb2FkID09PSAncHJvZ3Jlc3NpdmUnKSB7XG4gICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5uZXh0ID0gU2xpY2sucHJvdG90eXBlLnNsaWNrTmV4dCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmNoYW5nZVNsaWRlKHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnbmV4dCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLm9yaWVudGF0aW9uQ2hhbmdlID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uY2hlY2tSZXNwb25zaXZlKCk7XG4gICAgICAgIF8uc2V0UG9zaXRpb24oKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucGF1c2UgPSBTbGljay5wcm90b3R5cGUuc2xpY2tQYXVzZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmF1dG9QbGF5Q2xlYXIoKTtcbiAgICAgICAgXy5wYXVzZWQgPSB0cnVlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5wbGF5ID0gU2xpY2sucHJvdG90eXBlLnNsaWNrUGxheSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmF1dG9QbGF5KCk7XG4gICAgICAgIF8ub3B0aW9ucy5hdXRvcGxheSA9IHRydWU7XG4gICAgICAgIF8ucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIF8uZm9jdXNzZWQgPSBmYWxzZTtcbiAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IGZhbHNlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5wb3N0U2xpZGUgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiggIV8udW5zbGlja2VkICkge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignYWZ0ZXJDaGFuZ2UnLCBbXywgaW5kZXhdKTtcblxuICAgICAgICAgICAgXy5hbmltYXRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uc3dpcGVMZWZ0ID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG4gICAgICAgICAgICAgICAgXy5hdXRvUGxheSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLmluaXRBREEoKTtcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGN1cnJlbnRTbGlkZSA9ICQoXy4kc2xpZGVzLmdldChfLmN1cnJlbnRTbGlkZSkpO1xuICAgICAgICAgICAgICAgICAgICAkY3VycmVudFNsaWRlLmF0dHIoJ3RhYmluZGV4JywgMCkuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5wcmV2ID0gU2xpY2sucHJvdG90eXBlLnNsaWNrUHJldiA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmNoYW5nZVNsaWRlKHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAncHJldmlvdXMnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucHJvZ3Jlc3NpdmVMYXp5TG9hZCA9IGZ1bmN0aW9uKCB0cnlDb3VudCApIHtcblxuICAgICAgICB0cnlDb3VudCA9IHRyeUNvdW50IHx8IDE7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgJGltZ3NUb0xvYWQgPSAkKCAnaW1nW2RhdGEtbGF6eV0nLCBfLiRzbGlkZXIgKSxcbiAgICAgICAgICAgIGltYWdlLFxuICAgICAgICAgICAgaW1hZ2VTb3VyY2UsXG4gICAgICAgICAgICBpbWFnZVNyY1NldCxcbiAgICAgICAgICAgIGltYWdlU2l6ZXMsXG4gICAgICAgICAgICBpbWFnZVRvTG9hZDtcblxuICAgICAgICBpZiAoICRpbWdzVG9Mb2FkLmxlbmd0aCApIHtcblxuICAgICAgICAgICAgaW1hZ2UgPSAkaW1nc1RvTG9hZC5maXJzdCgpO1xuICAgICAgICAgICAgaW1hZ2VTb3VyY2UgPSBpbWFnZS5hdHRyKCdkYXRhLWxhenknKTtcbiAgICAgICAgICAgIGltYWdlU3JjU2V0ID0gaW1hZ2UuYXR0cignZGF0YS1zcmNzZXQnKTtcbiAgICAgICAgICAgIGltYWdlU2l6ZXMgID0gaW1hZ2UuYXR0cignZGF0YS1zaXplcycpIHx8IF8uJHNsaWRlci5hdHRyKCdkYXRhLXNpemVzJyk7XG4gICAgICAgICAgICBpbWFnZVRvTG9hZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXG4gICAgICAgICAgICBpbWFnZVRvTG9hZC5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpbWFnZVNyY1NldCkge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NyY3NldCcsIGltYWdlU3JjU2V0ICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlU2l6ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NpemVzJywgaW1hZ2VTaXplcyApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoICdzcmMnLCBpbWFnZVNvdXJjZSApXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkYXRhLWxhenkgZGF0YS1zcmNzZXQgZGF0YS1zaXplcycpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBfLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgPT09IHRydWUgKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uc2V0UG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignbGF6eUxvYWRlZCcsIFsgXywgaW1hZ2UsIGltYWdlU291cmNlIF0pO1xuICAgICAgICAgICAgICAgIF8ucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpO1xuXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpbWFnZVRvTG9hZC5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIHRyeUNvdW50IDwgMyApIHtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogdHJ5IHRvIGxvYWQgdGhlIGltYWdlIDMgdGltZXMsXG4gICAgICAgICAgICAgICAgICAgICAqIGxlYXZlIGEgc2xpZ2h0IGRlbGF5IHNvIHdlIGRvbid0IGdldFxuICAgICAgICAgICAgICAgICAgICAgKiBzZXJ2ZXJzIGJsb2NraW5nIHRoZSByZXF1ZXN0LlxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoIHRyeUNvdW50ICsgMSApO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDAgKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCAnZGF0YS1sYXp5JyApXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoICdzbGljay1sb2FkaW5nJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoICdzbGljay1sYXp5bG9hZC1lcnJvcicgKTtcblxuICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignbGF6eUxvYWRFcnJvcicsIFsgXywgaW1hZ2UsIGltYWdlU291cmNlIF0pO1xuXG4gICAgICAgICAgICAgICAgICAgIF8ucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpbWFnZVRvTG9hZC5zcmMgPSBpbWFnZVNvdXJjZTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignYWxsSW1hZ2VzTG9hZGVkJywgWyBfIF0pO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uKCBpbml0aWFsaXppbmcgKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBjdXJyZW50U2xpZGUsIGxhc3RWaXNpYmxlSW5kZXg7XG5cbiAgICAgICAgbGFzdFZpc2libGVJbmRleCA9IF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG5cbiAgICAgICAgLy8gaW4gbm9uLWluZmluaXRlIHNsaWRlcnMsIHdlIGRvbid0IHdhbnQgdG8gZ28gcGFzdCB0aGVcbiAgICAgICAgLy8gbGFzdCB2aXNpYmxlIGluZGV4LlxuICAgICAgICBpZiggIV8ub3B0aW9ucy5pbmZpbml0ZSAmJiAoIF8uY3VycmVudFNsaWRlID4gbGFzdFZpc2libGVJbmRleCApKSB7XG4gICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IGxhc3RWaXNpYmxlSW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBsZXNzIHNsaWRlcyB0aGFuIHRvIHNob3csIGdvIHRvIHN0YXJ0LlxuICAgICAgICBpZiAoIF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICkge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSAwO1xuXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50U2xpZGUgPSBfLmN1cnJlbnRTbGlkZTtcblxuICAgICAgICBfLmRlc3Ryb3kodHJ1ZSk7XG5cbiAgICAgICAgJC5leHRlbmQoXywgXy5pbml0aWFscywgeyBjdXJyZW50U2xpZGU6IGN1cnJlbnRTbGlkZSB9KTtcblxuICAgICAgICBfLmluaXQoKTtcblxuICAgICAgICBpZiggIWluaXRpYWxpemluZyApIHtcblxuICAgICAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogY3VycmVudFNsaWRlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVnaXN0ZXJCcmVha3BvaW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcywgYnJlYWtwb2ludCwgY3VycmVudEJyZWFrcG9pbnQsIGwsXG4gICAgICAgICAgICByZXNwb25zaXZlU2V0dGluZ3MgPSBfLm9wdGlvbnMucmVzcG9uc2l2ZSB8fCBudWxsO1xuXG4gICAgICAgIGlmICggJC50eXBlKHJlc3BvbnNpdmVTZXR0aW5ncykgPT09ICdhcnJheScgJiYgcmVzcG9uc2l2ZVNldHRpbmdzLmxlbmd0aCApIHtcblxuICAgICAgICAgICAgXy5yZXNwb25kVG8gPSBfLm9wdGlvbnMucmVzcG9uZFRvIHx8ICd3aW5kb3cnO1xuXG4gICAgICAgICAgICBmb3IgKCBicmVha3BvaW50IGluIHJlc3BvbnNpdmVTZXR0aW5ncyApIHtcblxuICAgICAgICAgICAgICAgIGwgPSBfLmJyZWFrcG9pbnRzLmxlbmd0aC0xO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNpdmVTZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShicmVha3BvaW50KSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50QnJlYWtwb2ludCA9IHJlc3BvbnNpdmVTZXR0aW5nc1ticmVha3BvaW50XS5icmVha3BvaW50O1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGxvb3AgdGhyb3VnaCB0aGUgYnJlYWtwb2ludHMgYW5kIGN1dCBvdXQgYW55IGV4aXN0aW5nXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uZXMgd2l0aCB0aGUgc2FtZSBicmVha3BvaW50IG51bWJlciwgd2UgZG9uJ3Qgd2FudCBkdXBlcy5cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUoIGwgPj0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBfLmJyZWFrcG9pbnRzW2xdICYmIF8uYnJlYWtwb2ludHNbbF0gPT09IGN1cnJlbnRCcmVha3BvaW50ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uYnJlYWtwb2ludHMuc3BsaWNlKGwsMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsLS07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRzLnB1c2goY3VycmVudEJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5nc1tjdXJyZW50QnJlYWtwb2ludF0gPSByZXNwb25zaXZlU2V0dGluZ3NbYnJlYWtwb2ludF0uc2V0dGluZ3M7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy5icmVha3BvaW50cy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCBfLm9wdGlvbnMubW9iaWxlRmlyc3QgKSA/IGEtYiA6IGItYTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVpbml0ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJHNsaWRlcyA9XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrXG4gICAgICAgICAgICAgICAgLmNoaWxkcmVuKF8ub3B0aW9ucy5zbGlkZSlcbiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLXNsaWRlJyk7XG5cbiAgICAgICAgXy5zbGlkZUNvdW50ID0gXy4kc2xpZGVzLmxlbmd0aDtcblxuICAgICAgICBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50ICYmIF8uY3VycmVudFNsaWRlICE9PSAwKSB7XG4gICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8uY3VycmVudFNsaWRlIC0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBfLnJlZ2lzdGVyQnJlYWtwb2ludHMoKTtcblxuICAgICAgICBfLnNldFByb3BzKCk7XG4gICAgICAgIF8uc2V0dXBJbmZpbml0ZSgpO1xuICAgICAgICBfLmJ1aWxkQXJyb3dzKCk7XG4gICAgICAgIF8udXBkYXRlQXJyb3dzKCk7XG4gICAgICAgIF8uaW5pdEFycm93RXZlbnRzKCk7XG4gICAgICAgIF8uYnVpbGREb3RzKCk7XG4gICAgICAgIF8udXBkYXRlRG90cygpO1xuICAgICAgICBfLmluaXREb3RFdmVudHMoKTtcbiAgICAgICAgXy5jbGVhblVwU2xpZGVFdmVudHMoKTtcbiAgICAgICAgXy5pbml0U2xpZGVFdmVudHMoKTtcblxuICAgICAgICBfLmNoZWNrUmVzcG9uc2l2ZShmYWxzZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mb2N1c09uU2VsZWN0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAkKF8uJHNsaWRlVHJhY2spLmNoaWxkcmVuKCkub24oJ2NsaWNrLnNsaWNrJywgXy5zZWxlY3RIYW5kbGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uc2V0U2xpZGVDbGFzc2VzKHR5cGVvZiBfLmN1cnJlbnRTbGlkZSA9PT0gJ251bWJlcicgPyBfLmN1cnJlbnRTbGlkZSA6IDApO1xuXG4gICAgICAgIF8uc2V0UG9zaXRpb24oKTtcbiAgICAgICAgXy5mb2N1c0hhbmRsZXIoKTtcblxuICAgICAgICBfLnBhdXNlZCA9ICFfLm9wdGlvbnMuYXV0b3BsYXk7XG4gICAgICAgIF8uYXV0b1BsYXkoKTtcblxuICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcigncmVJbml0JywgW19dKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVzaXplID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICgkKHdpbmRvdykud2lkdGgoKSAhPT0gXy53aW5kb3dXaWR0aCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KF8ud2luZG93RGVsYXkpO1xuICAgICAgICAgICAgXy53aW5kb3dEZWxheSA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIF8ud2luZG93V2lkdGggPSAkKHdpbmRvdykud2lkdGgoKTtcbiAgICAgICAgICAgICAgICBfLmNoZWNrUmVzcG9uc2l2ZSgpO1xuICAgICAgICAgICAgICAgIGlmKCAhXy51bnNsaWNrZWQgKSB7IF8uc2V0UG9zaXRpb24oKTsgfVxuICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5yZW1vdmVTbGlkZSA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1JlbW92ZSA9IGZ1bmN0aW9uKGluZGV4LCByZW1vdmVCZWZvcmUsIHJlbW92ZUFsbCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAodHlwZW9mKGluZGV4KSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZW1vdmVCZWZvcmUgPSBpbmRleDtcbiAgICAgICAgICAgIGluZGV4ID0gcmVtb3ZlQmVmb3JlID09PSB0cnVlID8gMCA6IF8uc2xpZGVDb3VudCAtIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHJlbW92ZUJlZm9yZSA9PT0gdHJ1ZSA/IC0taW5kZXggOiBpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPCAxIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+IF8uc2xpZGVDb3VudCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8udW5sb2FkKCk7XG5cbiAgICAgICAgaWYgKHJlbW92ZUFsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbigpLnJlbW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmVxKGluZGV4KS5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uJHNsaWRlcyA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCk7XG5cbiAgICAgICAgXy4kc2xpZGVUcmFjay5hcHBlbmQoXy4kc2xpZGVzKTtcblxuICAgICAgICBfLiRzbGlkZXNDYWNoZSA9IF8uJHNsaWRlcztcblxuICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRDU1MgPSBmdW5jdGlvbihwb3NpdGlvbikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHBvc2l0aW9uUHJvcHMgPSB7fSxcbiAgICAgICAgICAgIHgsIHk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gLXBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHggPSBfLnBvc2l0aW9uUHJvcCA9PSAnbGVmdCcgPyBNYXRoLmNlaWwocG9zaXRpb24pICsgJ3B4JyA6ICcwcHgnO1xuICAgICAgICB5ID0gXy5wb3NpdGlvblByb3AgPT0gJ3RvcCcgPyBNYXRoLmNlaWwocG9zaXRpb24pICsgJ3B4JyA6ICcwcHgnO1xuXG4gICAgICAgIHBvc2l0aW9uUHJvcHNbXy5wb3NpdGlvblByb3BdID0gcG9zaXRpb247XG5cbiAgICAgICAgaWYgKF8udHJhbnNmb3Jtc0VuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhwb3NpdGlvblByb3BzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uUHJvcHMgPSB7fTtcbiAgICAgICAgICAgIGlmIChfLmNzc1RyYW5zaXRpb25zID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlKCcgKyB4ICsgJywgJyArIHkgKyAnKSc7XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MocG9zaXRpb25Qcm9wcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlM2QoJyArIHggKyAnLCAnICsgeSArICcsIDBweCknO1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKHBvc2l0aW9uUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldERpbWVuc2lvbnMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uJGxpc3QuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogKCcwcHggJyArIF8ub3B0aW9ucy5jZW50ZXJQYWRkaW5nKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kbGlzdC5oZWlnaHQoXy4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQodHJ1ZSkgKiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KTtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uJGxpc3QuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogKF8ub3B0aW9ucy5jZW50ZXJQYWRkaW5nICsgJyAwcHgnKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy5saXN0V2lkdGggPSBfLiRsaXN0LndpZHRoKCk7XG4gICAgICAgIF8ubGlzdEhlaWdodCA9IF8uJGxpc3QuaGVpZ2h0KCk7XG5cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSAmJiBfLm9wdGlvbnMudmFyaWFibGVXaWR0aCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uc2xpZGVXaWR0aCA9IE1hdGguY2VpbChfLmxpc3RXaWR0aCAvIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpO1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay53aWR0aChNYXRoLmNlaWwoKF8uc2xpZGVXaWR0aCAqIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmxlbmd0aCkpKTtcblxuICAgICAgICB9IGVsc2UgaWYgKF8ub3B0aW9ucy52YXJpYWJsZVdpZHRoID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLndpZHRoKDUwMDAgKiBfLnNsaWRlQ291bnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy5zbGlkZVdpZHRoID0gTWF0aC5jZWlsKF8ubGlzdFdpZHRoKTtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suaGVpZ2h0KE1hdGguY2VpbCgoXy4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQodHJ1ZSkgKiBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5sZW5ndGgpKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb2Zmc2V0ID0gXy4kc2xpZGVzLmZpcnN0KCkub3V0ZXJXaWR0aCh0cnVlKSAtIF8uJHNsaWRlcy5maXJzdCgpLndpZHRoKCk7XG4gICAgICAgIGlmIChfLm9wdGlvbnMudmFyaWFibGVXaWR0aCA9PT0gZmFsc2UpIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLndpZHRoKF8uc2xpZGVXaWR0aCAtIG9mZnNldCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldEZhZGUgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICB0YXJnZXRMZWZ0O1xuXG4gICAgICAgIF8uJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG4gICAgICAgICAgICB0YXJnZXRMZWZ0ID0gKF8uc2xpZGVXaWR0aCAqIGluZGV4KSAqIC0xO1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogdGFyZ2V0TGVmdCxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXggLSAyLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoZWxlbWVudCkuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IHRhcmdldExlZnQsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMixcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBfLiRzbGlkZXMuZXEoXy5jdXJyZW50U2xpZGUpLmNzcyh7XG4gICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXggLSAxLFxuICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICB9KTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAxICYmIF8ub3B0aW9ucy5hZGFwdGl2ZUhlaWdodCA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0SGVpZ2h0ID0gXy4kc2xpZGVzLmVxKF8uY3VycmVudFNsaWRlKS5vdXRlckhlaWdodCh0cnVlKTtcbiAgICAgICAgICAgIF8uJGxpc3QuY3NzKCdoZWlnaHQnLCB0YXJnZXRIZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldE9wdGlvbiA9XG4gICAgU2xpY2sucHJvdG90eXBlLnNsaWNrU2V0T3B0aW9uID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGFjY2VwdHMgYXJndW1lbnRzIGluIGZvcm1hdCBvZjpcbiAgICAgICAgICpcbiAgICAgICAgICogIC0gZm9yIGNoYW5naW5nIGEgc2luZ2xlIG9wdGlvbidzIHZhbHVlOlxuICAgICAgICAgKiAgICAgLnNsaWNrKFwic2V0T3B0aW9uXCIsIG9wdGlvbiwgdmFsdWUsIHJlZnJlc2ggKVxuICAgICAgICAgKlxuICAgICAgICAgKiAgLSBmb3IgY2hhbmdpbmcgYSBzZXQgb2YgcmVzcG9uc2l2ZSBvcHRpb25zOlxuICAgICAgICAgKiAgICAgLnNsaWNrKFwic2V0T3B0aW9uXCIsICdyZXNwb25zaXZlJywgW3t9LCAuLi5dLCByZWZyZXNoIClcbiAgICAgICAgICpcbiAgICAgICAgICogIC0gZm9yIHVwZGF0aW5nIG11bHRpcGxlIHZhbHVlcyBhdCBvbmNlIChub3QgcmVzcG9uc2l2ZSlcbiAgICAgICAgICogICAgIC5zbGljayhcInNldE9wdGlvblwiLCB7ICdvcHRpb24nOiB2YWx1ZSwgLi4uIH0sIHJlZnJlc2ggKVxuICAgICAgICAgKi9cblxuICAgICAgICB2YXIgXyA9IHRoaXMsIGwsIGl0ZW0sIG9wdGlvbiwgdmFsdWUsIHJlZnJlc2ggPSBmYWxzZSwgdHlwZTtcblxuICAgICAgICBpZiggJC50eXBlKCBhcmd1bWVudHNbMF0gKSA9PT0gJ29iamVjdCcgKSB7XG5cbiAgICAgICAgICAgIG9wdGlvbiA9ICBhcmd1bWVudHNbMF07XG4gICAgICAgICAgICByZWZyZXNoID0gYXJndW1lbnRzWzFdO1xuICAgICAgICAgICAgdHlwZSA9ICdtdWx0aXBsZSc7XG5cbiAgICAgICAgfSBlbHNlIGlmICggJC50eXBlKCBhcmd1bWVudHNbMF0gKSA9PT0gJ3N0cmluZycgKSB7XG5cbiAgICAgICAgICAgIG9wdGlvbiA9ICBhcmd1bWVudHNbMF07XG4gICAgICAgICAgICB2YWx1ZSA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgICAgIHJlZnJlc2ggPSBhcmd1bWVudHNbMl07XG5cbiAgICAgICAgICAgIGlmICggYXJndW1lbnRzWzBdID09PSAncmVzcG9uc2l2ZScgJiYgJC50eXBlKCBhcmd1bWVudHNbMV0gKSA9PT0gJ2FycmF5JyApIHtcblxuICAgICAgICAgICAgICAgIHR5cGUgPSAncmVzcG9uc2l2ZSc7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBhcmd1bWVudHNbMV0gIT09ICd1bmRlZmluZWQnICkge1xuXG4gICAgICAgICAgICAgICAgdHlwZSA9ICdzaW5nbGUnO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggdHlwZSA9PT0gJ3NpbmdsZScgKSB7XG5cbiAgICAgICAgICAgIF8ub3B0aW9uc1tvcHRpb25dID0gdmFsdWU7XG5cblxuICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnbXVsdGlwbGUnICkge1xuXG4gICAgICAgICAgICAkLmVhY2goIG9wdGlvbiAsIGZ1bmN0aW9uKCBvcHQsIHZhbCApIHtcblxuICAgICAgICAgICAgICAgIF8ub3B0aW9uc1tvcHRdID0gdmFsO1xuXG4gICAgICAgICAgICB9KTtcblxuXG4gICAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICdyZXNwb25zaXZlJyApIHtcblxuICAgICAgICAgICAgZm9yICggaXRlbSBpbiB2YWx1ZSApIHtcblxuICAgICAgICAgICAgICAgIGlmKCAkLnR5cGUoIF8ub3B0aW9ucy5yZXNwb25zaXZlICkgIT09ICdhcnJheScgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnJlc3BvbnNpdmUgPSBbIHZhbHVlW2l0ZW1dIF07XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIGwgPSBfLm9wdGlvbnMucmVzcG9uc2l2ZS5sZW5ndGgtMTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBsb29wIHRocm91Z2ggdGhlIHJlc3BvbnNpdmUgb2JqZWN0IGFuZCBzcGxpY2Ugb3V0IGR1cGxpY2F0ZXMuXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlKCBsID49IDAgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBfLm9wdGlvbnMucmVzcG9uc2l2ZVtsXS5icmVha3BvaW50ID09PSB2YWx1ZVtpdGVtXS5icmVha3BvaW50ICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnJlc3BvbnNpdmUuc3BsaWNlKGwsMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgbC0tO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMucmVzcG9uc2l2ZS5wdXNoKCB2YWx1ZVtpdGVtXSApO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggcmVmcmVzaCApIHtcblxuICAgICAgICAgICAgXy51bmxvYWQoKTtcbiAgICAgICAgICAgIF8ucmVpbml0KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRQb3NpdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLnNldERpbWVuc2lvbnMoKTtcblxuICAgICAgICBfLnNldEhlaWdodCgpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uc2V0Q1NTKF8uZ2V0TGVmdChfLmN1cnJlbnRTbGlkZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy5zZXRGYWRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignc2V0UG9zaXRpb24nLCBbX10pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRQcm9wcyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGJvZHlTdHlsZSA9IGRvY3VtZW50LmJvZHkuc3R5bGU7XG5cbiAgICAgICAgXy5wb3NpdGlvblByb3AgPSBfLm9wdGlvbnMudmVydGljYWwgPT09IHRydWUgPyAndG9wJyA6ICdsZWZ0JztcblxuICAgICAgICBpZiAoXy5wb3NpdGlvblByb3AgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLXZlcnRpY2FsJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfLiRzbGlkZXIucmVtb3ZlQ2xhc3MoJ3NsaWNrLXZlcnRpY2FsJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm9keVN0eWxlLldlYmtpdFRyYW5zaXRpb24gIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYm9keVN0eWxlLk1velRyYW5zaXRpb24gIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYm9keVN0eWxlLm1zVHJhbnNpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLnVzZUNTUyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uY3NzVHJhbnNpdGlvbnMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuZmFkZSApIHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIF8ub3B0aW9ucy56SW5kZXggPT09ICdudW1iZXInICkge1xuICAgICAgICAgICAgICAgIGlmKCBfLm9wdGlvbnMuekluZGV4IDwgMyApIHtcbiAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnpJbmRleCA9IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfLm9wdGlvbnMuekluZGV4ID0gXy5kZWZhdWx0cy56SW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm9keVN0eWxlLk9UcmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9ICdPVHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNmb3JtVHlwZSA9ICctby10cmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9ICdPVHJhbnNpdGlvbic7XG4gICAgICAgICAgICBpZiAoYm9keVN0eWxlLnBlcnNwZWN0aXZlUHJvcGVydHkgPT09IHVuZGVmaW5lZCAmJiBib2R5U3R5bGUud2Via2l0UGVyc3BlY3RpdmUgPT09IHVuZGVmaW5lZCkgXy5hbmltVHlwZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5U3R5bGUuTW96VHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSAnTW96VHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNmb3JtVHlwZSA9ICctbW96LXRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zaXRpb25UeXBlID0gJ01velRyYW5zaXRpb24nO1xuICAgICAgICAgICAgaWYgKGJvZHlTdHlsZS5wZXJzcGVjdGl2ZVByb3BlcnR5ID09PSB1bmRlZmluZWQgJiYgYm9keVN0eWxlLk1velBlcnNwZWN0aXZlID09PSB1bmRlZmluZWQpIF8uYW5pbVR5cGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVN0eWxlLndlYmtpdFRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ3dlYmtpdFRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLXdlYmtpdC10cmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9ICd3ZWJraXRUcmFuc2l0aW9uJztcbiAgICAgICAgICAgIGlmIChib2R5U3R5bGUucGVyc3BlY3RpdmVQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkICYmIGJvZHlTdHlsZS53ZWJraXRQZXJzcGVjdGl2ZSA9PT0gdW5kZWZpbmVkKSBfLmFuaW1UeXBlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJvZHlTdHlsZS5tc1RyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ21zVHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNmb3JtVHlwZSA9ICctbXMtdHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAnbXNUcmFuc2l0aW9uJztcbiAgICAgICAgICAgIGlmIChib2R5U3R5bGUubXNUcmFuc2Zvcm0gPT09IHVuZGVmaW5lZCkgXy5hbmltVHlwZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5U3R5bGUudHJhbnNmb3JtICE9PSB1bmRlZmluZWQgJiYgXy5hbmltVHlwZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNmb3JtVHlwZSA9ICd0cmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9ICd0cmFuc2l0aW9uJztcbiAgICAgICAgfVxuICAgICAgICBfLnRyYW5zZm9ybXNFbmFibGVkID0gXy5vcHRpb25zLnVzZVRyYW5zZm9ybSAmJiAoXy5hbmltVHlwZSAhPT0gbnVsbCAmJiBfLmFuaW1UeXBlICE9PSBmYWxzZSk7XG4gICAgfTtcblxuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldFNsaWRlQ2xhc3NlcyA9IGZ1bmN0aW9uKGluZGV4KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgY2VudGVyT2Zmc2V0LCBhbGxTbGlkZXMsIGluZGV4T2Zmc2V0LCByZW1haW5kZXI7XG5cbiAgICAgICAgYWxsU2xpZGVzID0gXy4kc2xpZGVyXG4gICAgICAgICAgICAuZmluZCgnLnNsaWNrLXNsaWRlJylcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stYWN0aXZlIHNsaWNrLWNlbnRlciBzbGljay1jdXJyZW50JylcbiAgICAgICAgICAgIC5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG5cbiAgICAgICAgXy4kc2xpZGVzXG4gICAgICAgICAgICAuZXEoaW5kZXgpXG4gICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWN1cnJlbnQnKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgdmFyIGV2ZW5Db2VmID0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAlIDIgPT09IDAgPyAxIDogMDtcblxuICAgICAgICAgICAgY2VudGVyT2Zmc2V0ID0gTWF0aC5mbG9vcihfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMik7XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBjZW50ZXJPZmZzZXQgJiYgaW5kZXggPD0gKF8uc2xpZGVDb3VudCAtIDEpIC0gY2VudGVyT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4IC0gY2VudGVyT2Zmc2V0ICsgZXZlbkNvZWYsIGluZGV4ICsgY2VudGVyT2Zmc2V0ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICBpbmRleE9mZnNldCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoaW5kZXhPZmZzZXQgLSBjZW50ZXJPZmZzZXQgKyAxICsgZXZlbkNvZWYsIGluZGV4T2Zmc2V0ICsgY2VudGVyT2Zmc2V0ICsgMilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAuZXEoYWxsU2xpZGVzLmxlbmd0aCAtIDEgLSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1jZW50ZXInKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IF8uc2xpZGVDb3VudCAtIDEpIHtcblxuICAgICAgICAgICAgICAgICAgICBhbGxTbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5lcShfLm9wdGlvbnMuc2xpZGVzVG9TaG93KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1jZW50ZXInKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAuZXEoaW5kZXgpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1jZW50ZXInKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8PSAoXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykpIHtcblxuICAgICAgICAgICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAuc2xpY2UoaW5kZXgsIGluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdylcbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChhbGxTbGlkZXMubGVuZ3RoIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgcmVtYWluZGVyID0gXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2hvdztcbiAgICAgICAgICAgICAgICBpbmRleE9mZnNldCA9IF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gdHJ1ZSA/IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyBpbmRleCA6IGluZGV4O1xuXG4gICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPT0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICYmIChfLnNsaWRlQ291bnQgLSBpbmRleCkgPCBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoaW5kZXhPZmZzZXQgLSAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAtIHJlbWFpbmRlciksIGluZGV4T2Zmc2V0ICsgcmVtYWluZGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4T2Zmc2V0LCBpbmRleE9mZnNldCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmxhenlMb2FkID09PSAnb25kZW1hbmQnIHx8IF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ2FudGljaXBhdGVkJykge1xuICAgICAgICAgICAgXy5sYXp5TG9hZCgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXR1cEluZmluaXRlID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgaSwgc2xpZGVJbmRleCwgaW5maW5pdGVDb3VudDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8ub3B0aW9ucy5jZW50ZXJNb2RlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlICYmIF8ub3B0aW9ucy5mYWRlID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICBzbGlkZUluZGV4ID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZUNvdW50ID0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyArIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVDb3VudCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gXy5zbGlkZUNvdW50OyBpID4gKF8uc2xpZGVDb3VudCAtXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZUNvdW50KTsgaSAtPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW5kZXggPSBpIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgJChfLiRzbGlkZXNbc2xpZGVJbmRleF0pLmNsb25lKHRydWUpLmF0dHIoJ2lkJywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1zbGljay1pbmRleCcsIHNsaWRlSW5kZXggLSBfLnNsaWRlQ291bnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAucHJlcGVuZFRvKF8uJHNsaWRlVHJhY2spLmFkZENsYXNzKCdzbGljay1jbG9uZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGluZmluaXRlQ291bnQgICsgXy5zbGlkZUNvdW50OyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgICQoXy4kc2xpZGVzW3NsaWRlSW5kZXhdKS5jbG9uZSh0cnVlKS5hdHRyKCdpZCcsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBzbGlkZUluZGV4ICsgXy5zbGlkZUNvdW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spLmFkZENsYXNzKCdzbGljay1jbG9uZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stY2xvbmVkJykuZmluZCgnW2lkXScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignaWQnLCAnJyk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmludGVycnVwdCA9IGZ1bmN0aW9uKCB0b2dnbGUgKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmKCAhdG9nZ2xlICkge1xuICAgICAgICAgICAgXy5hdXRvUGxheSgpO1xuICAgICAgICB9XG4gICAgICAgIF8uaW50ZXJydXB0ZWQgPSB0b2dnbGU7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNlbGVjdEhhbmRsZXIgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICB2YXIgdGFyZ2V0RWxlbWVudCA9XG4gICAgICAgICAgICAkKGV2ZW50LnRhcmdldCkuaXMoJy5zbGljay1zbGlkZScpID9cbiAgICAgICAgICAgICAgICAkKGV2ZW50LnRhcmdldCkgOlxuICAgICAgICAgICAgICAgICQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCcuc2xpY2stc2xpZGUnKTtcblxuICAgICAgICB2YXIgaW5kZXggPSBwYXJzZUludCh0YXJnZXRFbGVtZW50LmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnKSk7XG5cbiAgICAgICAgaWYgKCFpbmRleCkgaW5kZXggPSAwO1xuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLnNsaWRlSGFuZGxlcihpbmRleCwgZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIH1cblxuICAgICAgICBfLnNsaWRlSGFuZGxlcihpbmRleCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNsaWRlSGFuZGxlciA9IGZ1bmN0aW9uKGluZGV4LCBzeW5jLCBkb250QW5pbWF0ZSkge1xuXG4gICAgICAgIHZhciB0YXJnZXRTbGlkZSwgYW5pbVNsaWRlLCBvbGRTbGlkZSwgc2xpZGVMZWZ0LCB0YXJnZXRMZWZ0ID0gbnVsbCxcbiAgICAgICAgICAgIF8gPSB0aGlzLCBuYXZUYXJnZXQ7XG5cbiAgICAgICAgc3luYyA9IHN5bmMgfHwgZmFsc2U7XG5cbiAgICAgICAgaWYgKF8uYW5pbWF0aW5nID09PSB0cnVlICYmIF8ub3B0aW9ucy53YWl0Rm9yQW5pbWF0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlICYmIF8uY3VycmVudFNsaWRlID09PSBpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN5bmMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLmFzTmF2Rm9yKGluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldFNsaWRlID0gaW5kZXg7XG4gICAgICAgIHRhcmdldExlZnQgPSBfLmdldExlZnQodGFyZ2V0U2xpZGUpO1xuICAgICAgICBzbGlkZUxlZnQgPSBfLmdldExlZnQoXy5jdXJyZW50U2xpZGUpO1xuXG4gICAgICAgIF8uY3VycmVudExlZnQgPSBfLnN3aXBlTGVmdCA9PT0gbnVsbCA/IHNsaWRlTGVmdCA6IF8uc3dpcGVMZWZ0O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlICYmIF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSBmYWxzZSAmJiAoaW5kZXggPCAwIHx8IGluZGV4ID4gXy5nZXREb3RDb3VudCgpICogXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSkge1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFNsaWRlID0gXy5jdXJyZW50U2xpZGU7XG4gICAgICAgICAgICAgICAgaWYgKGRvbnRBbmltYXRlICE9PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5hbmltYXRlU2xpZGUoc2xpZGVMZWZ0LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKHRhcmdldFNsaWRlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUodGFyZ2V0U2xpZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlICYmIF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlICYmIChpbmRleCA8IDAgfHwgaW5kZXggPiAoXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSkpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgICAgIGlmIChkb250QW5pbWF0ZSAhPT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uYW5pbWF0ZVNsaWRlKHNsaWRlTGVmdCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZSh0YXJnZXRTbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKHRhcmdldFNsaWRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8ub3B0aW9ucy5hdXRvcGxheSApIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoXy5hdXRvUGxheVRpbWVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXRTbGlkZSA8IDApIHtcbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBhbmltU2xpZGUgPSBfLnNsaWRlQ291bnQgLSAoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYW5pbVNsaWRlID0gXy5zbGlkZUNvdW50ICsgdGFyZ2V0U2xpZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0U2xpZGUgPj0gXy5zbGlkZUNvdW50KSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgYW5pbVNsaWRlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYW5pbVNsaWRlID0gdGFyZ2V0U2xpZGUgLSBfLnNsaWRlQ291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmltU2xpZGUgPSB0YXJnZXRTbGlkZTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uYW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignYmVmb3JlQ2hhbmdlJywgW18sIF8uY3VycmVudFNsaWRlLCBhbmltU2xpZGVdKTtcblxuICAgICAgICBvbGRTbGlkZSA9IF8uY3VycmVudFNsaWRlO1xuICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IGFuaW1TbGlkZTtcblxuICAgICAgICBfLnNldFNsaWRlQ2xhc3NlcyhfLmN1cnJlbnRTbGlkZSk7XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXNOYXZGb3IgKSB7XG5cbiAgICAgICAgICAgIG5hdlRhcmdldCA9IF8uZ2V0TmF2VGFyZ2V0KCk7XG4gICAgICAgICAgICBuYXZUYXJnZXQgPSBuYXZUYXJnZXQuc2xpY2soJ2dldFNsaWNrJyk7XG5cbiAgICAgICAgICAgIGlmICggbmF2VGFyZ2V0LnNsaWRlQ291bnQgPD0gbmF2VGFyZ2V0Lm9wdGlvbnMuc2xpZGVzVG9TaG93ICkge1xuICAgICAgICAgICAgICAgIG5hdlRhcmdldC5zZXRTbGlkZUNsYXNzZXMoXy5jdXJyZW50U2xpZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBfLnVwZGF0ZURvdHMoKTtcbiAgICAgICAgXy51cGRhdGVBcnJvd3MoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChkb250QW5pbWF0ZSAhPT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAgICAgXy5mYWRlU2xpZGVPdXQob2xkU2xpZGUpO1xuXG4gICAgICAgICAgICAgICAgXy5mYWRlU2xpZGUoYW5pbVNsaWRlLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUoYW5pbVNsaWRlKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZShhbmltU2xpZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXy5hbmltYXRlSGVpZ2h0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZG9udEFuaW1hdGUgIT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy5hbmltYXRlU2xpZGUodGFyZ2V0TGVmdCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUoYW5pbVNsaWRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy5wb3N0U2xpZGUoYW5pbVNsaWRlKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zdGFydExvYWQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRwcmV2QXJyb3cuaGlkZSgpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93LmhpZGUoKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy4kZG90cy5oaWRlKCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIF8uJHNsaWRlci5hZGRDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zd2lwZURpcmVjdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciB4RGlzdCwgeURpc3QsIHIsIHN3aXBlQW5nbGUsIF8gPSB0aGlzO1xuXG4gICAgICAgIHhEaXN0ID0gXy50b3VjaE9iamVjdC5zdGFydFggLSBfLnRvdWNoT2JqZWN0LmN1clg7XG4gICAgICAgIHlEaXN0ID0gXy50b3VjaE9iamVjdC5zdGFydFkgLSBfLnRvdWNoT2JqZWN0LmN1clk7XG4gICAgICAgIHIgPSBNYXRoLmF0YW4yKHlEaXN0LCB4RGlzdCk7XG5cbiAgICAgICAgc3dpcGVBbmdsZSA9IE1hdGgucm91bmQociAqIDE4MCAvIE1hdGguUEkpO1xuICAgICAgICBpZiAoc3dpcGVBbmdsZSA8IDApIHtcbiAgICAgICAgICAgIHN3aXBlQW5nbGUgPSAzNjAgLSBNYXRoLmFicyhzd2lwZUFuZ2xlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoc3dpcGVBbmdsZSA8PSA0NSkgJiYgKHN3aXBlQW5nbGUgPj0gMCkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXy5vcHRpb25zLnJ0bCA9PT0gZmFsc2UgPyAnbGVmdCcgOiAncmlnaHQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHN3aXBlQW5nbGUgPD0gMzYwKSAmJiAoc3dpcGVBbmdsZSA+PSAzMTUpKSB7XG4gICAgICAgICAgICByZXR1cm4gKF8ub3B0aW9ucy5ydGwgPT09IGZhbHNlID8gJ2xlZnQnIDogJ3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChzd2lwZUFuZ2xlID49IDEzNSkgJiYgKHN3aXBlQW5nbGUgPD0gMjI1KSkge1xuICAgICAgICAgICAgcmV0dXJuIChfLm9wdGlvbnMucnRsID09PSBmYWxzZSA/ICdyaWdodCcgOiAnbGVmdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWxTd2lwaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoKHN3aXBlQW5nbGUgPj0gMzUpICYmIChzd2lwZUFuZ2xlIDw9IDEzNSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3VwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAndmVydGljYWwnO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zd2lwZUVuZCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgc2xpZGVDb3VudCxcbiAgICAgICAgICAgIGRpcmVjdGlvbjtcblxuICAgICAgICBfLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIF8uc3dpcGluZyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChfLnNjcm9sbGluZykge1xuICAgICAgICAgICAgXy5zY3JvbGxpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uaW50ZXJydXB0ZWQgPSBmYWxzZTtcbiAgICAgICAgXy5zaG91bGRDbGljayA9ICggXy50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA+IDEwICkgPyBmYWxzZSA6IHRydWU7XG5cbiAgICAgICAgaWYgKCBfLnRvdWNoT2JqZWN0LmN1clggPT09IHVuZGVmaW5lZCApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy50b3VjaE9iamVjdC5lZGdlSGl0ID09PSB0cnVlICkge1xuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2VkZ2UnLCBbXywgXy5zd2lwZURpcmVjdGlvbigpIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID49IF8udG91Y2hPYmplY3QubWluU3dpcGUgKSB7XG5cbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IF8uc3dpcGVEaXJlY3Rpb24oKTtcblxuICAgICAgICAgICAgc3dpdGNoICggZGlyZWN0aW9uICkge1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZG93bic6XG5cbiAgICAgICAgICAgICAgICAgICAgc2xpZGVDb3VudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMuc3dpcGVUb1NsaWRlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmNoZWNrTmF2aWdhYmxlKCBfLmN1cnJlbnRTbGlkZSArIF8uZ2V0U2xpZGVDb3VudCgpICkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudFNsaWRlICsgXy5nZXRTbGlkZUNvdW50KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgXy5jdXJyZW50RGlyZWN0aW9uID0gMDtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICBjYXNlICd1cCc6XG5cbiAgICAgICAgICAgICAgICAgICAgc2xpZGVDb3VudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMuc3dpcGVUb1NsaWRlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmNoZWNrTmF2aWdhYmxlKCBfLmN1cnJlbnRTbGlkZSAtIF8uZ2V0U2xpZGVDb3VudCgpICkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudFNsaWRlIC0gXy5nZXRTbGlkZUNvdW50KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgXy5jdXJyZW50RGlyZWN0aW9uID0gMTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG5cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiggZGlyZWN0aW9uICE9ICd2ZXJ0aWNhbCcgKSB7XG5cbiAgICAgICAgICAgICAgICBfLnNsaWRlSGFuZGxlciggc2xpZGVDb3VudCApO1xuICAgICAgICAgICAgICAgIF8udG91Y2hPYmplY3QgPSB7fTtcbiAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignc3dpcGUnLCBbXywgZGlyZWN0aW9uIF0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgaWYgKCBfLnRvdWNoT2JqZWN0LnN0YXJ0WCAhPT0gXy50b3VjaE9iamVjdC5jdXJYICkge1xuXG4gICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoIF8uY3VycmVudFNsaWRlICk7XG4gICAgICAgICAgICAgICAgXy50b3VjaE9iamVjdCA9IHt9O1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zd2lwZUhhbmRsZXIgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoKF8ub3B0aW9ucy5zd2lwZSA9PT0gZmFsc2UpIHx8ICgnb250b3VjaGVuZCcgaW4gZG9jdW1lbnQgJiYgXy5vcHRpb25zLnN3aXBlID09PSBmYWxzZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuZHJhZ2dhYmxlID09PSBmYWxzZSAmJiBldmVudC50eXBlLmluZGV4T2YoJ21vdXNlJykgIT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBfLnRvdWNoT2JqZWN0LmZpbmdlckNvdW50ID0gZXZlbnQub3JpZ2luYWxFdmVudCAmJiBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMubGVuZ3RoIDogMTtcblxuICAgICAgICBfLnRvdWNoT2JqZWN0Lm1pblN3aXBlID0gXy5saXN0V2lkdGggLyBfLm9wdGlvbnNcbiAgICAgICAgICAgIC50b3VjaFRocmVzaG9sZDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy50b3VjaE9iamVjdC5taW5Td2lwZSA9IF8ubGlzdEhlaWdodCAvIF8ub3B0aW9uc1xuICAgICAgICAgICAgICAgIC50b3VjaFRocmVzaG9sZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuZGF0YS5hY3Rpb24pIHtcblxuICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgIF8uc3dpcGVTdGFydChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ21vdmUnOlxuICAgICAgICAgICAgICAgIF8uc3dpcGVNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICBfLnN3aXBlRW5kKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnN3aXBlTW92ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgZWRnZVdhc0hpdCA9IGZhbHNlLFxuICAgICAgICAgICAgY3VyTGVmdCwgc3dpcGVEaXJlY3Rpb24sIHN3aXBlTGVuZ3RoLCBwb3NpdGlvbk9mZnNldCwgdG91Y2hlcywgdmVydGljYWxTd2lwZUxlbmd0aDtcblxuICAgICAgICB0b3VjaGVzID0gZXZlbnQub3JpZ2luYWxFdmVudCAhPT0gdW5kZWZpbmVkID8gZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzIDogbnVsbDtcblxuICAgICAgICBpZiAoIV8uZHJhZ2dpbmcgfHwgXy5zY3JvbGxpbmcgfHwgdG91Y2hlcyAmJiB0b3VjaGVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VyTGVmdCA9IF8uZ2V0TGVmdChfLmN1cnJlbnRTbGlkZSk7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5jdXJYID0gdG91Y2hlcyAhPT0gdW5kZWZpbmVkID8gdG91Y2hlc1swXS5wYWdlWCA6IGV2ZW50LmNsaWVudFg7XG4gICAgICAgIF8udG91Y2hPYmplY3QuY3VyWSA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXNbMF0ucGFnZVkgOiBldmVudC5jbGllbnRZO1xuXG4gICAgICAgIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPSBNYXRoLnJvdW5kKE1hdGguc3FydChcbiAgICAgICAgICAgIE1hdGgucG93KF8udG91Y2hPYmplY3QuY3VyWCAtIF8udG91Y2hPYmplY3Quc3RhcnRYLCAyKSkpO1xuXG4gICAgICAgIHZlcnRpY2FsU3dpcGVMZW5ndGggPSBNYXRoLnJvdW5kKE1hdGguc3FydChcbiAgICAgICAgICAgIE1hdGgucG93KF8udG91Y2hPYmplY3QuY3VyWSAtIF8udG91Y2hPYmplY3Quc3RhcnRZLCAyKSkpO1xuXG4gICAgICAgIGlmICghXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyAmJiAhXy5zd2lwaW5nICYmIHZlcnRpY2FsU3dpcGVMZW5ndGggPiA0KSB7XG4gICAgICAgICAgICBfLnNjcm9sbGluZyA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA9IHZlcnRpY2FsU3dpcGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBzd2lwZURpcmVjdGlvbiA9IF8uc3dpcGVEaXJlY3Rpb24oKTtcblxuICAgICAgICBpZiAoZXZlbnQub3JpZ2luYWxFdmVudCAhPT0gdW5kZWZpbmVkICYmIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPiA0KSB7XG4gICAgICAgICAgICBfLnN3aXBpbmcgPSB0cnVlO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvc2l0aW9uT2Zmc2V0ID0gKF8ub3B0aW9ucy5ydGwgPT09IGZhbHNlID8gMSA6IC0xKSAqIChfLnRvdWNoT2JqZWN0LmN1clggPiBfLnRvdWNoT2JqZWN0LnN0YXJ0WCA/IDEgOiAtMSk7XG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWxTd2lwaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwb3NpdGlvbk9mZnNldCA9IF8udG91Y2hPYmplY3QuY3VyWSA+IF8udG91Y2hPYmplY3Quc3RhcnRZID8gMSA6IC0xO1xuICAgICAgICB9XG5cblxuICAgICAgICBzd2lwZUxlbmd0aCA9IF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGg7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5lZGdlSGl0ID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmICgoXy5jdXJyZW50U2xpZGUgPT09IDAgJiYgc3dpcGVEaXJlY3Rpb24gPT09ICdyaWdodCcpIHx8IChfLmN1cnJlbnRTbGlkZSA+PSBfLmdldERvdENvdW50KCkgJiYgc3dpcGVEaXJlY3Rpb24gPT09ICdsZWZ0JykpIHtcbiAgICAgICAgICAgICAgICBzd2lwZUxlbmd0aCA9IF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggKiBfLm9wdGlvbnMuZWRnZUZyaWN0aW9uO1xuICAgICAgICAgICAgICAgIF8udG91Y2hPYmplY3QuZWRnZUhpdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy5zd2lwZUxlZnQgPSBjdXJMZWZ0ICsgc3dpcGVMZW5ndGggKiBwb3NpdGlvbk9mZnNldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uc3dpcGVMZWZ0ID0gY3VyTGVmdCArIChzd2lwZUxlbmd0aCAqIChfLiRsaXN0LmhlaWdodCgpIC8gXy5saXN0V2lkdGgpKSAqIHBvc2l0aW9uT2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWxTd2lwaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IGN1ckxlZnQgKyBzd2lwZUxlbmd0aCAqIHBvc2l0aW9uT2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlIHx8IF8ub3B0aW9ucy50b3VjaE1vdmUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5hbmltYXRpbmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uc3dpcGVMZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uc2V0Q1NTKF8uc3dpcGVMZWZ0KTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVTdGFydCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdG91Y2hlcztcblxuICAgICAgICBfLmludGVycnVwdGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoXy50b3VjaE9iamVjdC5maW5nZXJDb3VudCAhPT0gMSB8fCBfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy50b3VjaE9iamVjdCA9IHt9O1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbmFsRXZlbnQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdG91Y2hlcyA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8udG91Y2hPYmplY3Quc3RhcnRYID0gXy50b3VjaE9iamVjdC5jdXJYID0gdG91Y2hlcyAhPT0gdW5kZWZpbmVkID8gdG91Y2hlcy5wYWdlWCA6IGV2ZW50LmNsaWVudFg7XG4gICAgICAgIF8udG91Y2hPYmplY3Quc3RhcnRZID0gXy50b3VjaE9iamVjdC5jdXJZID0gdG91Y2hlcyAhPT0gdW5kZWZpbmVkID8gdG91Y2hlcy5wYWdlWSA6IGV2ZW50LmNsaWVudFk7XG5cbiAgICAgICAgXy5kcmFnZ2luZyA9IHRydWU7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnVuZmlsdGVyU2xpZGVzID0gU2xpY2sucHJvdG90eXBlLnNsaWNrVW5maWx0ZXIgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uJHNsaWRlc0NhY2hlICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIF8udW5sb2FkKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVzQ2FjaGUuYXBwZW5kVG8oXy4kc2xpZGVUcmFjayk7XG5cbiAgICAgICAgICAgIF8ucmVpbml0KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51bmxvYWQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgJCgnLnNsaWNrLWNsb25lZCcsIF8uJHNsaWRlcikucmVtb3ZlKCk7XG5cbiAgICAgICAgaWYgKF8uJGRvdHMpIHtcbiAgICAgICAgICAgIF8uJGRvdHMucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy4kcHJldkFycm93ICYmIF8uaHRtbEV4cHIudGVzdChfLm9wdGlvbnMucHJldkFycm93KSkge1xuICAgICAgICAgICAgXy4kcHJldkFycm93LnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uJG5leHRBcnJvdyAmJiBfLmh0bWxFeHByLnRlc3QoXy5vcHRpb25zLm5leHRBcnJvdykpIHtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzbGljay1zbGlkZSBzbGljay1hY3RpdmUgc2xpY2stdmlzaWJsZSBzbGljay1jdXJyZW50JylcbiAgICAgICAgICAgIC5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJylcbiAgICAgICAgICAgIC5jc3MoJ3dpZHRoJywgJycpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51bnNsaWNrID0gZnVuY3Rpb24oZnJvbUJyZWFrcG9pbnQpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG4gICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCd1bnNsaWNrJywgW18sIGZyb21CcmVha3BvaW50XSk7XG4gICAgICAgIF8uZGVzdHJveSgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51cGRhdGVBcnJvd3MgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBjZW50ZXJPZmZzZXQ7XG5cbiAgICAgICAgY2VudGVyT2Zmc2V0ID0gTWF0aC5mbG9vcihfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMik7XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXJyb3dzID09PSB0cnVlICYmXG4gICAgICAgICAgICBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmXG4gICAgICAgICAgICAhXy5vcHRpb25zLmluZmluaXRlICkge1xuXG4gICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93LnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgaWYgKF8uY3VycmVudFNsaWRlID09PSAwKSB7XG5cbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cuYWRkQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgXy4kbmV4dEFycm93LnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChfLmN1cnJlbnRTbGlkZSA+PSBfLnNsaWRlQ291bnQgLSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICAgICAgXy4kbmV4dEFycm93LmFkZENsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50IC0gMSAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAgICAgXy4kbmV4dEFycm93LmFkZENsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnVwZGF0ZURvdHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uJGRvdHMgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgXy4kZG90c1xuICAgICAgICAgICAgICAgIC5maW5kKCdsaScpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgLmVuZCgpO1xuXG4gICAgICAgICAgICBfLiRkb3RzXG4gICAgICAgICAgICAgICAgLmZpbmQoJ2xpJylcbiAgICAgICAgICAgICAgICAuZXEoTWF0aC5mbG9vcihfLmN1cnJlbnRTbGlkZSAvIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnZpc2liaWxpdHkgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG5cbiAgICAgICAgICAgIGlmICggZG9jdW1lbnRbXy5oaWRkZW5dICkge1xuXG4gICAgICAgICAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBfLmludGVycnVwdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgJC5mbi5zbGljayA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBvcHQgPSBhcmd1bWVudHNbMF0sXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSxcbiAgICAgICAgICAgIGwgPSBfLmxlbmd0aCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICByZXQ7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0ID09ICdvYmplY3QnIHx8IHR5cGVvZiBvcHQgPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgX1tpXS5zbGljayA9IG5ldyBTbGljayhfW2ldLCBvcHQpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldCA9IF9baV0uc2xpY2tbb3B0XS5hcHBseShfW2ldLnNsaWNrLCBhcmdzKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcmV0ICE9ICd1bmRlZmluZWQnKSByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfO1xuICAgIH07XG5cbn0pKTtcbiIsIihmdW5jdGlvbiAoICQgKSB7XG5cbiAgaWYodHlwZW9mICQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYoJ2NvbnNvbGUnIGluIHdpbmRvdykgd2luZG93LmNvbnNvbGUud2FybignWm9vbUJveC5qcyBuZWVkcyBqUXVlcnkhIEFib3J0ZWQgbG9hZGluZy4nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZih0eXBlb2YgJC5mbi5zbGljayA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZignY29uc29sZScgaW4gd2luZG93KSB3aW5kb3cuY29uc29sZS53YXJuKCdab29tQm94LmpzIG5lZWRzIFNsaWNrIENhcm91c2VsIGpRdWVyeSBQbHVnaW4hIEFib3J0ZWQgbG9hZGluZy4nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZGVmYXVsdFZhbHVlcyA9IHtcbiAgICBhdXRvcGxheVNwZWVkOiA1MDAwLFxuICAgIGJ1dHRvbkNsYXNzOiAnem9vbWJveC1jbG9zZS1idG4nLFxuICAgIGNlbnRlckltYWdlczogdHJ1ZSxcbiAgICBjbG9zZU9uQmx1ckNsaWNrOiB0cnVlLFxuICAgIGNvbnRhaW5lcklkOiAnem9vbWJveC1vdmVybGF5JyxcbiAgICBkaXNhYmxlQXV0b3BsYXlPbkhvdmVyOiBmYWxzZSxcbiAgICBkaXNhYmxlVG91Y2hNb3ZlOiBmYWxzZSxcbiAgICBlbmFibGVBdXRvcGxheTogZmFsc2UsXG4gICAgZW5mb3JjZUNoYWluaW5nOiBmYWxzZSxcbiAgICBmYWRlRHVyYXRpb246IDMwMCxcbiAgICBpZ25vcmVJbnB1dE9uTW92ZTogdHJ1ZSxcbiAgICBpbWFnZUNsYXNzOiAnem9vbWJveC1pbWFnZScsXG4gICAgaW5uZXJDbGFzczogJ3pvb21ib3gtaW5uZXInLFxuICAgIGxpc3RlbktleXM6IHRydWUsXG4gICAgc2xpZGVyRHJhZ2dhYmxlOiB0cnVlLFxuICAgIHNsaWRlckxvb3BlZDogdHJ1ZSxcbiAgICBzbGlkZXJOZXh0QnV0dG9uOiAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzbGljay1uZXh0XCI+PHN2ZyB2ZXJzaW9uPVwiMS4xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZpZXdCb3g9XCIwIDAgOCAxNFwiPjxwYXRoIGQ9XCJNNC42NDggNy41cTAgMC4xMDItMC4wNzggMC4xOGwtMy42NDEgMy42NDFxLTAuMDc4IDAuMDc4LTAuMTggMC4wNzh0LTAuMTgtMC4wNzhsLTAuMzkxLTAuMzkxcS0wLjA3OC0wLjA3OC0wLjA3OC0wLjE4dDAuMDc4LTAuMThsMy4wNzAtMy4wNzAtMy4wNzAtMy4wNzBxLTAuMDc4LTAuMDc4LTAuMDc4LTAuMTh0MC4wNzgtMC4xOGwwLjM5MS0wLjM5MXEwLjA3OC0wLjA3OCAwLjE4LTAuMDc4dDAuMTggMC4wNzhsMy42NDEgMy42NDFxMC4wNzggMC4wNzggMC4wNzggMC4xOHpNNy42NDggNy41cTAgMC4xMDItMC4wNzggMC4xOGwtMy42NDEgMy42NDFxLTAuMDc4IDAuMDc4LTAuMTggMC4wNzh0LTAuMTgtMC4wNzhsLTAuMzkxLTAuMzkxcS0wLjA3OC0wLjA3OC0wLjA3OC0wLjE4dDAuMDc4LTAuMThsMy4wNzAtMy4wNzAtMy4wNzAtMy4wNzBxLTAuMDc4LTAuMDc4LTAuMDc4LTAuMTh0MC4wNzgtMC4xOGwwLjM5MS0wLjM5MXEwLjA3OC0wLjA3OCAwLjE4LTAuMDc4dDAuMTggMC4wNzhsMy42NDEgMy42NDFxMC4wNzggMC4wNzggMC4wNzggMC4xOHpcIj48L3BhdGg+PC9zdmc+PC9idXR0b24+JyxcbiAgICBzbGlkZXJQcmV2QnV0dG9uOiAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzbGljay1wcmV2XCI+PHN2ZyB2ZXJzaW9uPVwiMS4xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZpZXdCb3g9XCIwIDAgOCAxNFwiPjxwYXRoIGQ9XCJNNC44OTggMTAuNzVxMCAwLjEwMi0wLjA3OCAwLjE4bC0wLjM5MSAwLjM5MXEtMC4wNzggMC4wNzgtMC4xOCAwLjA3OHQtMC4xOC0wLjA3OGwtMy42NDEtMy42NDFxLTAuMDc4LTAuMDc4LTAuMDc4LTAuMTh0MC4wNzgtMC4xOGwzLjY0MS0zLjY0MXEwLjA3OC0wLjA3OCAwLjE4LTAuMDc4dDAuMTggMC4wNzhsMC4zOTEgMC4zOTFxMC4wNzggMC4wNzggMC4wNzggMC4xOHQtMC4wNzggMC4xOGwtMy4wNzAgMy4wNzAgMy4wNzAgMy4wNzBxMC4wNzggMC4wNzggMC4wNzggMC4xOHpNNy44OTggMTAuNzVxMCAwLjEwMi0wLjA3OCAwLjE4bC0wLjM5MSAwLjM5MXEtMC4wNzggMC4wNzgtMC4xOCAwLjA3OHQtMC4xOC0wLjA3OGwtMy42NDEtMy42NDFxLTAuMDc4LTAuMDc4LTAuMDc4LTAuMTh0MC4wNzgtMC4xOGwzLjY0MS0zLjY0MXEwLjA3OC0wLjA3OCAwLjE4LTAuMDc4dDAuMTggMC4wNzhsMC4zOTEgMC4zOTFxMC4wNzggMC4wNzggMC4wNzggMC4xOHQtMC4wNzggMC4xOGwtMy4wNzAgMy4wNzAgMy4wNzAgMy4wNzBxMC4wNzggMC4wNzggMC4wNzggMC4xOHpcIj48L3BhdGg+PC9zdmc+PC9idXR0b24+JyxcbiAgICBzbGlkZVRyYW5zaXRpb246ICdlYXNlJyxcbiAgICBzbGlkZVRyYW5zaXRpb25TcGVlZDogMzAwLFxuICAgIHRlbXBvcmFyeTogZmFsc2UsXG4gICAgd3JhcHBlckNsYXNzOiAnem9vbWJveC1pbWFnZS13cmFwcGVyJ1xuICB9XG5cbiAgJC5mbi56b29tYm94ID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIGlmKG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGZvcih2YXIgc2V0dGluZyBpbiBkZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgIGlmKGRlZmF1bHRWYWx1ZXMuaGFzT3duUHJvcGVydHkoc2V0dGluZykgJiYgKG9wdGlvbnNbc2V0dGluZ10gPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgZGVmYXVsdFZhbHVlc1tzZXR0aW5nXSAhPT0gdHlwZW9mIG9wdGlvbnNbc2V0dGluZ10pKSB7XG4gICAgICAgICAgaWYob3B0aW9uc1tzZXR0aW5nXSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBkZWZhdWx0VmFsdWVzW3NldHRpbmddICE9PSB0eXBlb2Ygb3B0aW9uc1tzZXR0aW5nXSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbWm9vbUJveC5qc10gUmVwbGFjZWQgaW52YWxpZCBvcHRpb24gJytzZXR0aW5nKycgd2l0aCBkZWZhdWx0IHZhbHVlIScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG9wdGlvbnNbc2V0dGluZ10gPSBkZWZhdWx0VmFsdWVzW3NldHRpbmddO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0VmFsdWVzO1xuICAgIH1cblxuICAgIGlmKG9wdGlvbnMudGVtcG9yYXJ5KSB7XG4gICAgICB2YXIgb3ZlcmxheSA9ICQoZG9jdW1lbnQuYm9keSkuYXBwZW5kKCc8ZGl2IGlkPVwiJyArIG9wdGlvbnMuY29udGFpbmVySWQrJy10ZW1wJyArICdcIj48ZGl2IGNsYXNzPVwiJyArIG9wdGlvbnMuYnV0dG9uQ2xhc3MgKyAnXCI+JnRpbWVzOzwvZGl2PjxkaXYgY2xhc3M9XCInICsgb3B0aW9ucy5pbm5lckNsYXNzICsgJ1wiPjwvZGl2PjwvZGl2PicpLmZpbmQoJyMnK29wdGlvbnMuY29udGFpbmVySWQrJy10ZW1wJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvdmVybGF5ID0gJChkb2N1bWVudC5ib2R5KS5hcHBlbmQoJzxkaXYgaWQ9XCInICsgb3B0aW9ucy5jb250YWluZXJJZCArICdcIj48ZGl2IGNsYXNzPVwiJyArIG9wdGlvbnMuYnV0dG9uQ2xhc3MgKyAnXCI+JnRpbWVzOzwvZGl2PjxkaXYgY2xhc3M9XCInICsgb3B0aW9ucy5pbm5lckNsYXNzICsgJ1wiPjwvZGl2PjwvZGl2PicpLmZpbmQoJyMnK29wdGlvbnMuY29udGFpbmVySWQpO1xuICAgIH1cbiAgICB2YXIgaW5uZXIgPSBvdmVybGF5LmZpbmQoJy4nK29wdGlvbnMuaW5uZXJDbGFzcyk7XG5cbiAgICBpZihvcHRpb25zLmNsb3NlT25CbHVyQ2xpY2spIHtcbiAgICAgIG92ZXJsYXkub24oJ2NsaWNrJyxmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYoISQoZXZlbnQudGFyZ2V0KS5pcygnLnNsaWNrLXNsaWRlICosIC5zbGljay1hcnJvdywgLnNsaWNrLWFycm93IConKSkge1xuICAgICAgICAgIG92ZXJsYXkudHJpZ2dlcignem9vbWJveE92ZXJsYXlIaWRpbmcnKTtcbiAgICAgICAgICBvdmVybGF5LmZhZGVPdXQob3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYob3B0aW9ucy50ZW1wb3JhcnkpIHtcbiAgICAgICAgICAgICAgaW5uZXIuc2xpY2soJ3Vuc2xpY2snKTtcbiAgICAgICAgICAgICAgb3ZlcmxheS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlubmVyLnNsaWNrKCdzbGlja1VuZmlsdGVyJywwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG92ZXJsYXkudHJpZ2dlcignem9vbWJveE92ZXJsYXlIaWRkZW4nKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgb3ZlcmxheS5vbignY2xpY2snLGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBpZigkKGV2ZW50LnRhcmdldCkuaXMoJy4nK29wdGlvbnMuYnV0dG9uQ2xhc3MpKSB7XG4gICAgICAgICAgb3ZlcmxheS50cmlnZ2VyKCd6b29tYm94T3ZlcmxheUhpZGluZycpO1xuICAgICAgICAgIG92ZXJsYXkuZmFkZU91dChvcHRpb25zLmZhZGVEdXJhdGlvbixmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZihvcHRpb25zLnRlbXBvcmFyeSkge1xuICAgICAgICAgICAgICBpbm5lci5zbGljaygndW5zbGljaycpO1xuICAgICAgICAgICAgICBvdmVybGF5LnJlbW92ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaW5uZXIuc2xpY2soJ3NsaWNrVW5maWx0ZXInLDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3ZlcmxheS50cmlnZ2VyKCd6b29tYm94T3ZlcmxheUhpZGRlbicpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYob3B0aW9ucy5mb3JjZVNvdXJjZUF0dHIpIHtcbiAgICAgICAgdmFyIHNyYyA9ICQodGhpc1tpXSkuYXR0cihvcHRpb25zLmZvcmNlU291cmNlQXR0cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZigkKHRoaXNbaV0pLmlzKCdhJykpIHtcbiAgICAgICAgICB2YXIgc3JjID0gJCh0aGlzW2ldKS5hdHRyKCdocmVmJyk7XG4gICAgICAgIH0gZWxzZSBpZigkKHRoaXNbaV0pLmlzKCdpbWcnKSkge1xuICAgICAgICAgIHZhciBzcmMgPSAkKHRoaXNbaV0pLmF0dHIoJ3NyYycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBzcmMgPSAkKHRoaXNbaV0pLmRhdGEoJ3NyYycpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciByZWwgPSAkKHRoaXNbaV0pLmF0dHIoJ3JlbCcpO1xuXG4gICAgICB2YXIgdG1wID0gJzxkaXYgY2xhc3M9XCInICsgb3B0aW9ucy53cmFwcGVyQ2xhc3MgKyAnXCI+PGltZyBzcmM9XCInICsgc3JjICsgJ1wiIGNsYXNzPVwiJyArIG9wdGlvbnMuaW1hZ2VDbGFzcyArICdcIiAnO1xuICAgICAgaWYocmVsICE9PSB1bmRlZmluZWQgJiYgcmVsICE9PSBmYWxzZSAmJiByZWwgIT09ICcnKSB7XG4gICAgICAgIHRtcCArPSAncmVsPVwiJyArIHJlbCArICdcIic7XG4gICAgICB9XG4gICAgICB0bXAgKz0gJy8+PC9kaXY+JztcblxuICAgICAgaW5uZXIuYXBwZW5kKHRtcCk7XG5cbiAgICAgIGlmKCFvcHRpb25zLnRlbXBvcmFyeSkge1xuICAgICAgICAkKHRoaXNbaV0pLmF0dHIoJ2RhdGEtaW5kZXgnLGkpLm9uKCdjbGljaycsZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgaWYoJCh0aGlzKS5pcygnYScpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG92ZXJsYXkudHJpZ2dlcignem9vbWJveE92ZXJsYXlTaG93aW5nJyk7XG5cbiAgICAgICAgICBvdmVybGF5LmZhZGVJbihvcHRpb25zLmZhZGVEdXJhdGlvbixmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvdmVybGF5LnRyaWdnZXIoJ3pvb21ib3hPdmVybGF5U2hvd24nKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlubmVyLnNsaWNrKCdzbGlja0dvVG8nLCQodGhpcykuZGF0YSgnaW5kZXgnKSx0cnVlKTtcblxuICAgICAgICAgIGlmKCQodGhpcykuYXR0cigncmVsJykgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdmFyIHJlbCA9ICQodGhpcykuYXR0cigncmVsJyk7XG5cbiAgICAgICAgICAgIGlubmVyLnNsaWNrKCdzbGlja0ZpbHRlcicsZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXR1cm4gKCQodGhpcykuZmluZCgnaW1nJykuYXR0cigncmVsJykgPT09IHJlbCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgICAgICBpZihvcHRpb25zLmZvcmNlU291cmNlQXR0cikge1xuICAgICAgICAgICAgICB2YXIgc3JjID0gJChfdGhpcykuYXR0cihvcHRpb25zLmZvcmNlU291cmNlQXR0cik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZigkKF90aGlzKS5pcygnYScpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNyYyA9ICQoX3RoaXMpLmF0dHIoJ2hyZWYnKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmKCQoX3RoaXMpLmlzKCdpbWcnKSkge1xuICAgICAgICAgICAgICAgIHZhciBzcmMgPSAkKF90aGlzKS5hdHRyKCdzcmMnKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgc3JjID0gJChfdGhpcykuZGF0YSgnc3JjJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5uZXIuc2xpY2soJ3NsaWNrRmlsdGVyJyxmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHJldHVybiAoJCh0aGlzKS5maW5kKCdpbWcnKS5hdHRyKCdzcmMnKSA9PT0gc3JjKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZihvcHRpb25zLmNlbnRlckltYWdlcykge1xuICAgICAgICAgICAgICBpbm5lci5maW5kKCcuc2xpY2stc2xpZGUnKS5lYWNoKGZ1bmN0aW9uIChpLGUsYSkge1xuICAgICAgICAgICAgICAgICQodGhpcykuY3NzKCdtYXJnaW4tdG9wJywoaW5uZXIub3V0ZXJIZWlnaHQoKSAtICQodGhpcykub3V0ZXJIZWlnaHQoKSkgLyAyKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LDUwKTtcblxuICAgICAgICAgICQod2luZG93KS50cmlnZ2VyKCdyZXNpemUnKTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbm5lci5zbGljayh7XG4gICAgICBhdXRvcGxheTogb3B0aW9ucy5lbmFibGVBdXRvcGxheSxcbiAgICAgIGF1dG9wbGF5U3BlZWQ6IG9wdGlvbnMuYXV0b3BsYXlTcGVlZCxcbiAgICAgIGNzc0Vhc2U6IG9wdGlvbnMuc2xpZGVUcmFuc2l0aW9uLFxuICAgICAgZHJhZ2dhYmxlOiBvcHRpb25zLnNsaWRlckRyYWdnYWJsZSxcbiAgICAgIGluZmluaXRlOiBvcHRpb25zLnNsaWRlckxvb3BlZCxcbiAgICAgIG1vYmlsZUZpcnN0OiBmYWxzZSwgLy9UT0RPOiBUZXN0IHRoaXMgb3B0aW9uXG4gICAgICBuZXh0QXJyb3c6IG9wdGlvbnMuc2xpZGVyTmV4dEJ1dHRvbixcbiAgICAgIHBhdXNlT25Ib3Zlcjogb3B0aW9ucy5kaXNhYmxlQXV0b3BsYXlPbkhvdmVyLFxuICAgICAgcHJldkFycm93OiBvcHRpb25zLnNsaWRlclByZXZCdXR0b24sXG4gICAgICBzcGVlZDogb3B0aW9ucy5zbGlkZVRyYW5zaXRpb25TcGVlZCxcbiAgICAgIHRvdWNoTW92ZTogIW9wdGlvbnMuZGlzYWJsZVRvdWNoTW92ZSxcbiAgICAgIHdhaXRGb3JBbmltYXRlOiBvcHRpb25zLmlnbm9yZUlucHV0T25Nb3ZlXG4gICAgfSkub24oJ2FmdGVyQ2hhbmdlJyxmdW5jdGlvbiAoZSkge1xuICAgICAgb3ZlcmxheS50cmlnZ2VyKCd6b29tYm94Q2hhbmdlZCcpO1xuICAgIH0pXG5cbiAgICBpZihvcHRpb25zLmxpc3RlbktleXMpIHtcbiAgICAgIHZhciBrZXlMaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgIGlmKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgfHwgZXZlbnQud2hpY2ggPT0gMjcpIHtcbiAgICAgICAgICBvdmVybGF5LnRyaWdnZXIoJ3pvb21ib3hPdmVybGF5SGlkaW5nJyk7XG4gICAgICAgICAgb3ZlcmxheS5mYWRlT3V0KG9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmKG9wdGlvbnMudGVtcG9yYXJ5KSB7XG4gICAgICAgICAgICAgIGlubmVyLnNsaWNrKCd1bnNsaWNrJyk7XG4gICAgICAgICAgICAgIG92ZXJsYXkucmVtb3ZlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpbm5lci5zbGljaygnc2xpY2tVbmZpbHRlcicsMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdmVybGF5LnRyaWdnZXIoJ3pvb21ib3hPdmVybGF5SGlkZGVuJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZihldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnIHx8IGV2ZW50LndoaWNoID09IDM3KSB7XG4gICAgICAgICAgaW5uZXIuc2xpY2soJ3NsaWNrUHJldicpO1xuICAgICAgICB9IGVsc2UgaWYoZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZXZlbnQud2hpY2ggPT0gMzkpIHtcbiAgICAgICAgICBpbm5lci5zbGljaygnc2xpY2tOZXh0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJChkb2N1bWVudCkub2ZmKCdrZXl1cCcsa2V5TGlzdGVuZXIpLm9uKCdrZXl1cCcsa2V5TGlzdGVuZXIpO1xuICAgIH1cblxuICAgIGlmKG9wdGlvbnMudGVtcG9yYXJ5KSB7XG4gICAgICBvdmVybGF5LnRyaWdnZXIoJ3pvb21ib3hPdmVybGF5U2hvd2luZycpO1xuXG4gICAgICBvdmVybGF5LmZhZGVJbihvcHRpb25zLmZhZGVEdXJhdGlvbixmdW5jdGlvbiAoKSB7XG4gICAgICAgIG92ZXJsYXkudHJpZ2dlcignem9vbWJveE92ZXJsYXlTaG93bicpO1xuICAgICAgfSk7XG5cbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZihvcHRpb25zLmNlbnRlckltYWdlcykge1xuICAgICAgICAgIGlubmVyLmZpbmQoJy5zbGljay1zbGlkZScpLmVhY2goZnVuY3Rpb24gKGksZSxhKSB7XG4gICAgICAgICAgICAkKHRoaXMpLmNzcygnbWFyZ2luLXRvcCcsKGlubmVyLm91dGVySGVpZ2h0KCkgLSAkKHRoaXMpLm91dGVySGVpZ2h0KCkpIC8gMik7XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSw1MCk7XG5cbiAgICAgICQod2luZG93KS50cmlnZ2VyKCdyZXNpemUnKTtcbiAgICB9XG5cbiAgICBpZihvcHRpb25zLmVuZm9yY2VDaGFpbmluZykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAkKCcjJytvcHRpb25zLmNvbnRhaW5lcklkKSB8fCAkKCcjJytvcHRpb25zLmNvbnRhaW5lcklkKyctdGVtcCcpO1xuICAgIH1cbiAgfTtcblxufSggalF1ZXJ5ICkpO1xuIiwiJChmdW5jdGlvbigpIHtcbiAgaWYoJCgnLnpvb21ib3gnKS5sZW5ndGggJiYgIXdpbmRvdy5zdXJwcmVzc0dhbGxlcnlJbml0ICYmICEkKCcjbmVvcy1hcHBsaWNhdGlvbicpLmxlbmd0aCkge1xuICAgICQoJy56b29tYm94Jykuem9vbWJveCh7XG4gICAgICBzbGlkZVRyYW5zaXRpb25TcGVlZDogNTAwLFxuICAgICAgc2xpZGVUcmFuc2l0aW9uOiAnZWFzZS1pbi1vdXQnXG4gICAgfSk7XG4gIH1cbn0pXG4iXX0= +void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||i.options.useCSS===!0&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&i.animType!==!1&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&i.animType!==!1},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),n.options.centerMode===!0){var r=n.options.slidesToShow%2===0?1:0;e=Math.floor(n.options.slidesToShow/2),n.options.infinite===!0&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=n.options.infinite===!0?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-is.options.slidesToShow)){for(o=s.options.centerMode===!0?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;ed.getDotCount()*d.options.slidesToScroll)?void(d.options.fade===!1&&(o=d.currentSlide,t!==!0&&d.slideCount>d.options.slidesToShow?d.animateSlide(r,function(){d.postSlide(o)}):d.postSlide(o))):d.options.infinite===!1&&d.options.centerMode===!0&&(i<0||i>d.slideCount-d.options.slidesToScroll)?void(d.options.fade===!1&&(o=d.currentSlide,t!==!0&&d.slideCount>d.options.slidesToShow?d.animateSlide(r,function(){d.postSlide(o)}):d.postSlide(o))):(d.options.autoplay&&clearInterval(d.autoPlayTimer),s=o<0?d.slideCount%d.options.slidesToScroll!==0?d.slideCount-d.slideCount%d.options.slidesToScroll:d.slideCount+o:o>=d.slideCount?d.slideCount%d.options.slidesToScroll!==0?0:o-d.slideCount:o,d.animating=!0,d.$slider.trigger("beforeChange",[d,d.currentSlide,s]),n=d.currentSlide,d.currentSlide=s,d.setSlideClasses(d.currentSlide),d.options.asNavFor&&(l=d.getNavTarget(),l=l.slick("getSlick"),l.slideCount<=l.options.slidesToShow&&l.setSlideClasses(d.currentSlide)),d.updateDots(),d.updateArrows(),d.options.fade===!0?(t!==!0?(d.fadeSlideOut(n),d.fadeSlide(s,function(){d.postSlide(s)})):d.postSlide(s),void d.animateHeight()):void(t!==!0&&d.slideCount>d.options.slidesToShow?d.animateSlide(a,function(){d.postSlide(s)}):d.postSlide(s)))},e.prototype.startLoad=function(){var i=this;i.options.arrows===!0&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),i.options.dots===!0&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),o=Math.round(180*t/Math.PI),o<0&&(o=360-Math.abs(o)),o<=45&&o>=0?s.options.rtl===!1?"left":"right":o<=360&&o>=315?s.options.rtl===!1?"left":"right":o>=135&&o<=225?s.options.rtl===!1?"right":"left":s.options.verticalSwiping===!0?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(o.touchObject.edgeHit===!0&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(e.options.swipe===!1||"ontouchend"in document&&e.options.swipe===!1||e.options.draggable===!1&&i.type.indexOf("mouse")!==-1))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,e.options.verticalSwiping===!0&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(l.options.verticalSwiping===!0&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(l.options.rtl===!1?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),l.options.verticalSwiping===!0&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,l.options.infinite===!1&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),l.options.vertical===!1?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,l.options.verticalSwiping===!0&&(l.swipeLeft=e+o*s),l.options.fade!==!0&&l.options.touchMove!==!1&&(l.animating===!0?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;return t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow?(t.touchObject={},!1):(void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,void(t.dragging=!0))},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i,e=this;i=Math.floor(e.options.slidesToShow/2),e.options.arrows===!0&&e.slideCount>e.options.slidesToShow&&!e.options.infinite&&(e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===e.currentSlide?(e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):e.currentSlide>=e.slideCount-e.options.slidesToShow&&e.options.centerMode===!1?(e.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):e.currentSlide>=e.slideCount-1&&e.options.centerMode===!0&&(e.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i',sliderPrevButton:'',slideTransition:"ease",slideTransitionSpeed:300,temporary:!1,wrapperClass:"zoombox-image-wrapper"},t={initialized:!1,visible:!1,currentSlide:void 0,slideCount:void 0};i.fn.zoombox=function(o){if(void 0!==o&&"object"==typeof o)for(var s in e)!e.hasOwnProperty(s)||void 0!==o[s]&&typeof e[s]==typeof o[s]||(void 0!==o[s]&&typeof e[s]!=typeof o[s]&&console.warn("[ZoomBox.js] Replaced invalid option "+s+" with default value!"),o[s]=e[s]);else o=e;if(o.temporary)var n=i(document.body).append('
×
').find("#"+o.containerId+"-temp");else var n=i(document.body).append('
×
').find("#"+o.containerId);var r=n.find("."+o.innerClass);o.closeOnBlurClick?n.on("click",function(e){i(e.target).is(".slick-slide *, .slick-arrow, .slick-arrow *")||(n.trigger("zoomboxOverlayHiding"),n.fadeOut(o.fadeDuration,function(){o.temporary?(r.slick("unslick"),n.remove()):(r.slick("slickUnfilter",0),t.visible=!1),n.trigger("zoomboxOverlayHidden")}))}):n.on("click",function(e){i(e.target).is("."+o.buttonClass)&&(n.trigger("zoomboxOverlayHiding"),n.fadeOut(o.fadeDuration,function(){o.temporary?(r.slick("unslick"),n.remove()):(r.slick("slickUnfilter",0),t.visible=!1),n.trigger("zoomboxOverlayHidden")}))});for(var l=0;l",r.append(c),o.temporary||i(this[l]).attr("data-index",l).on("click",function(e){if(e.preventDefault(),n.trigger("zoomboxOverlayShowing"),n.fadeIn(o.fadeDuration,function(){t.visible=!0,n.trigger("zoomboxOverlayShown")}),r.slick("slickGoTo",i(this).data("index"),!0),t.currentSlide=r.slick("slickCurrentSlide"),void 0!==i(this).attr("rel")){var s=i(this).attr("rel");r.slick("slickFilter",function(){return i(this).find("img").attr("rel")===s})}else{var l=this;if(0==o.showAsGallery){if(o.forceSourceAttr)var a=i(l).attr(o.forceSourceAttr);else if(i(l).is("a"))var a=i(l).attr("href");else if(i(l).is("img"))var a=i(l).attr("src");else var a=i(l).data("src");r.slick("slickFilter",function(){return i(this).find("img").attr("src")===a})}}o.centerImages&&setTimeout(function(){r.find(".slick-slide").each(function(e,t,o){i(this).css("margin-top",(r.outerHeight()-i(this).outerHeight())/2)})},50),i(window).trigger("resize")})}if(r.slick({autoplay:o.enableAutoplay,autoplaySpeed:o.autoplaySpeed,cssEase:o.slideTransition,draggable:o.sliderDraggable,infinite:o.sliderLooped,mobileFirst:!1,nextArrow:'",pauseOnHover:o.disableAutoplayOnHover,prevArrow:'",speed:o.slideTransitionSpeed,touchMove:!o.disableTouchMove,waitForAnimate:o.ignoreInputOnMove}).on("afterChange",function(i){t.currentSlide=r.slick("slickCurrentSlide"),t.visible&&n.trigger("zoomboxChanged")}),o.listenKeys){var p=function(i){"Escape"===i.key||27==i.which?(n.trigger("zoomboxOverlayHiding"),n.fadeOut(o.fadeDuration,function(){o.temporary?(r.slick("unslick"),n.remove()):(t.visible=!1,r.slick("slickUnfilter",0)),n.trigger("zoomboxOverlayHidden")})):"ArrowLeft"===i.key||37==i.which?r.slick("slickPrev"):"ArrowRight"!==i.key&&39!=i.which||r.slick("slickNext")};i(document).off("keyup",p).on("keyup",p)}return o.temporary&&(n.trigger("zoomboxOverlayShowing"),n.fadeIn(o.fadeDuration,function(){n.trigger("zoomboxOverlayShown")}),setTimeout(function(){o.centerImages&&r.find(".slick-slide").each(function(e,t,o){i(this).css("margin-top",(r.outerHeight()-i(this).outerHeight())/2)})},50),i(window).trigger("resize")),t.initialized=!0,o.enforceChaining?this:i("#"+o.containerId)||i("#"+o.containerId+"-temp")},window.zoombox={isInitialized:function(){return t.initialized},isVisible:function(){return t.visible},getCurrentSlide:function(){return t.currentSlide}}}(jQuery),$(function(){!$(".zoombox").length||window.surpressGalleryInit||$("#neos-application").length||$(".zoombox").zoombox({slideTransitionSpeed:500,slideTransition:"ease-in-out"})}); +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNsaWNrLmpzIiwianF1ZXJ5LmpzIiwibWFpbi5qcyJdLCJuYW1lcyI6WyJmYWN0b3J5IiwiZGVmaW5lIiwiYW1kIiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJqUXVlcnkiLCIkIiwiU2xpY2siLCJ3aW5kb3ciLCJlbGVtZW50Iiwic2V0dGluZ3MiLCJkYXRhU2V0dGluZ3MiLCJfIiwidGhpcyIsImRlZmF1bHRzIiwiYWNjZXNzaWJpbGl0eSIsImFkYXB0aXZlSGVpZ2h0IiwiYXBwZW5kQXJyb3dzIiwiYXBwZW5kRG90cyIsImFycm93cyIsImFzTmF2Rm9yIiwicHJldkFycm93IiwibmV4dEFycm93IiwiYXV0b3BsYXkiLCJhdXRvcGxheVNwZWVkIiwiY2VudGVyTW9kZSIsImNlbnRlclBhZGRpbmciLCJjc3NFYXNlIiwiY3VzdG9tUGFnaW5nIiwic2xpZGVyIiwiaSIsInRleHQiLCJkb3RzIiwiZG90c0NsYXNzIiwiZHJhZ2dhYmxlIiwiZWFzaW5nIiwiZWRnZUZyaWN0aW9uIiwiZmFkZSIsImZvY3VzT25TZWxlY3QiLCJmb2N1c09uQ2hhbmdlIiwiaW5maW5pdGUiLCJpbml0aWFsU2xpZGUiLCJsYXp5TG9hZCIsIm1vYmlsZUZpcnN0IiwicGF1c2VPbkhvdmVyIiwicGF1c2VPbkZvY3VzIiwicGF1c2VPbkRvdHNIb3ZlciIsInJlc3BvbmRUbyIsInJlc3BvbnNpdmUiLCJyb3dzIiwicnRsIiwic2xpZGUiLCJzbGlkZXNQZXJSb3ciLCJzbGlkZXNUb1Nob3ciLCJzbGlkZXNUb1Njcm9sbCIsInNwZWVkIiwic3dpcGUiLCJzd2lwZVRvU2xpZGUiLCJ0b3VjaE1vdmUiLCJ0b3VjaFRocmVzaG9sZCIsInVzZUNTUyIsInVzZVRyYW5zZm9ybSIsInZhcmlhYmxlV2lkdGgiLCJ2ZXJ0aWNhbCIsInZlcnRpY2FsU3dpcGluZyIsIndhaXRGb3JBbmltYXRlIiwiekluZGV4IiwiaW5pdGlhbHMiLCJhbmltYXRpbmciLCJkcmFnZ2luZyIsImF1dG9QbGF5VGltZXIiLCJjdXJyZW50RGlyZWN0aW9uIiwiY3VycmVudExlZnQiLCJjdXJyZW50U2xpZGUiLCJkaXJlY3Rpb24iLCIkZG90cyIsImxpc3RXaWR0aCIsImxpc3RIZWlnaHQiLCJsb2FkSW5kZXgiLCIkbmV4dEFycm93IiwiJHByZXZBcnJvdyIsInNjcm9sbGluZyIsInNsaWRlQ291bnQiLCJzbGlkZVdpZHRoIiwiJHNsaWRlVHJhY2siLCIkc2xpZGVzIiwic2xpZGluZyIsInNsaWRlT2Zmc2V0Iiwic3dpcGVMZWZ0Iiwic3dpcGluZyIsIiRsaXN0IiwidG91Y2hPYmplY3QiLCJ0cmFuc2Zvcm1zRW5hYmxlZCIsInVuc2xpY2tlZCIsImV4dGVuZCIsImFjdGl2ZUJyZWFrcG9pbnQiLCJhbmltVHlwZSIsImFuaW1Qcm9wIiwiYnJlYWtwb2ludHMiLCJicmVha3BvaW50U2V0dGluZ3MiLCJjc3NUcmFuc2l0aW9ucyIsImZvY3Vzc2VkIiwiaW50ZXJydXB0ZWQiLCJoaWRkZW4iLCJwYXVzZWQiLCJwb3NpdGlvblByb3AiLCJyb3dDb3VudCIsInNob3VsZENsaWNrIiwiJHNsaWRlciIsIiRzbGlkZXNDYWNoZSIsInRyYW5zZm9ybVR5cGUiLCJ0cmFuc2l0aW9uVHlwZSIsInZpc2liaWxpdHlDaGFuZ2UiLCJ3aW5kb3dXaWR0aCIsIndpbmRvd1RpbWVyIiwiZGF0YSIsIm9wdGlvbnMiLCJvcmlnaW5hbFNldHRpbmdzIiwiZG9jdW1lbnQiLCJtb3pIaWRkZW4iLCJ3ZWJraXRIaWRkZW4iLCJhdXRvUGxheSIsInByb3h5IiwiYXV0b1BsYXlDbGVhciIsImF1dG9QbGF5SXRlcmF0b3IiLCJjaGFuZ2VTbGlkZSIsImNsaWNrSGFuZGxlciIsInNlbGVjdEhhbmRsZXIiLCJzZXRQb3NpdGlvbiIsInN3aXBlSGFuZGxlciIsImRyYWdIYW5kbGVyIiwia2V5SGFuZGxlciIsImluc3RhbmNlVWlkIiwiaHRtbEV4cHIiLCJyZWdpc3RlckJyZWFrcG9pbnRzIiwiaW5pdCIsInByb3RvdHlwZSIsImFjdGl2YXRlQURBIiwiZmluZCIsImF0dHIiLCJhcmlhLWhpZGRlbiIsInRhYmluZGV4IiwiYWRkU2xpZGUiLCJzbGlja0FkZCIsIm1hcmt1cCIsImluZGV4IiwiYWRkQmVmb3JlIiwidW5sb2FkIiwibGVuZ3RoIiwiYXBwZW5kVG8iLCJpbnNlcnRCZWZvcmUiLCJlcSIsImluc2VydEFmdGVyIiwicHJlcGVuZFRvIiwiY2hpbGRyZW4iLCJkZXRhY2giLCJhcHBlbmQiLCJlYWNoIiwicmVpbml0IiwiYW5pbWF0ZUhlaWdodCIsInRhcmdldEhlaWdodCIsIm91dGVySGVpZ2h0IiwiYW5pbWF0ZSIsImhlaWdodCIsImFuaW1hdGVTbGlkZSIsInRhcmdldExlZnQiLCJjYWxsYmFjayIsImFuaW1Qcm9wcyIsImxlZnQiLCJ0b3AiLCJhbmltU3RhcnQiLCJkdXJhdGlvbiIsInN0ZXAiLCJub3ciLCJNYXRoIiwiY2VpbCIsImNzcyIsImNvbXBsZXRlIiwiY2FsbCIsImFwcGx5VHJhbnNpdGlvbiIsInNldFRpbWVvdXQiLCJkaXNhYmxlVHJhbnNpdGlvbiIsImdldE5hdlRhcmdldCIsIm5vdCIsInRhcmdldCIsInNsaWNrIiwic2xpZGVIYW5kbGVyIiwidHJhbnNpdGlvbiIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInNsaWRlVG8iLCJidWlsZEFycm93cyIsImFkZENsYXNzIiwicmVtb3ZlQ2xhc3MiLCJyZW1vdmVBdHRyIiwidGVzdCIsImFkZCIsImFyaWEtZGlzYWJsZWQiLCJidWlsZERvdHMiLCJkb3QiLCJnZXREb3RDb3VudCIsImZpcnN0IiwiYnVpbGRPdXQiLCJ3cmFwQWxsIiwicGFyZW50Iiwid3JhcCIsInNldHVwSW5maW5pdGUiLCJ1cGRhdGVEb3RzIiwic2V0U2xpZGVDbGFzc2VzIiwiYnVpbGRSb3dzIiwiYSIsImIiLCJjIiwibmV3U2xpZGVzIiwibnVtT2ZTbGlkZXMiLCJvcmlnaW5hbFNsaWRlcyIsInNsaWRlc1BlclNlY3Rpb24iLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwiY3JlYXRlRWxlbWVudCIsInJvdyIsImdldCIsImFwcGVuZENoaWxkIiwiZW1wdHkiLCJ3aWR0aCIsImRpc3BsYXkiLCJjaGVja1Jlc3BvbnNpdmUiLCJpbml0aWFsIiwiZm9yY2VVcGRhdGUiLCJicmVha3BvaW50IiwidGFyZ2V0QnJlYWtwb2ludCIsInJlc3BvbmRUb1dpZHRoIiwidHJpZ2dlckJyZWFrcG9pbnQiLCJzbGlkZXJXaWR0aCIsImlubmVyV2lkdGgiLCJtaW4iLCJoYXNPd25Qcm9wZXJ0eSIsInVuc2xpY2siLCJyZWZyZXNoIiwidHJpZ2dlciIsImV2ZW50IiwiZG9udEFuaW1hdGUiLCJpbmRleE9mZnNldCIsInVuZXZlbk9mZnNldCIsIiR0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiaXMiLCJwcmV2ZW50RGVmYXVsdCIsImNsb3Nlc3QiLCJtZXNzYWdlIiwiY2hlY2tOYXZpZ2FibGUiLCJuYXZpZ2FibGVzIiwicHJldk5hdmlnYWJsZSIsImdldE5hdmlnYWJsZUluZGV4ZXMiLCJuIiwiY2xlYW5VcEV2ZW50cyIsIm9mZiIsImludGVycnVwdCIsInZpc2liaWxpdHkiLCJjbGVhblVwU2xpZGVFdmVudHMiLCJvcmllbnRhdGlvbkNoYW5nZSIsInJlc2l6ZSIsImNsZWFuVXBSb3dzIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwic3RvcFByb3BhZ2F0aW9uIiwiZGVzdHJveSIsInJlbW92ZSIsImZhZGVTbGlkZSIsInNsaWRlSW5kZXgiLCJvcGFjaXR5IiwiZmFkZVNsaWRlT3V0IiwiZmlsdGVyU2xpZGVzIiwic2xpY2tGaWx0ZXIiLCJmaWx0ZXIiLCJmb2N1c0hhbmRsZXIiLCJvbiIsIiRzZiIsImdldEN1cnJlbnQiLCJzbGlja0N1cnJlbnRTbGlkZSIsImJyZWFrUG9pbnQiLCJjb3VudGVyIiwicGFnZXJRdHkiLCJnZXRMZWZ0IiwidmVydGljYWxIZWlnaHQiLCJ0YXJnZXRTbGlkZSIsImNvZWYiLCJ2ZXJ0aWNhbE9mZnNldCIsImZsb29yIiwib2Zmc2V0TGVmdCIsIm91dGVyV2lkdGgiLCJnZXRPcHRpb24iLCJzbGlja0dldE9wdGlvbiIsIm9wdGlvbiIsIm1heCIsImluZGV4ZXMiLCJwdXNoIiwiZ2V0U2xpY2siLCJnZXRTbGlkZUNvdW50Iiwic2xpZGVzVHJhdmVyc2VkIiwic3dpcGVkU2xpZGUiLCJjZW50ZXJPZmZzZXQiLCJhYnMiLCJnb1RvIiwic2xpY2tHb1RvIiwicGFyc2VJbnQiLCJjcmVhdGlvbiIsImhhc0NsYXNzIiwic2V0UHJvcHMiLCJzdGFydExvYWQiLCJsb2FkU2xpZGVyIiwiaW5pdGlhbGl6ZUV2ZW50cyIsInVwZGF0ZUFycm93cyIsImluaXRBREEiLCJudW1Eb3RHcm91cHMiLCJ0YWJDb250cm9sSW5kZXhlcyIsInZhbCIsInNsaWRlQ29udHJvbEluZGV4IiwiaW5kZXhPZiIsInJvbGUiLCJpZCIsImFyaWFCdXR0b25Db250cm9sIiwiYXJpYS1kZXNjcmliZWRieSIsIm1hcHBlZFNsaWRlSW5kZXgiLCJhcmlhLWNvbnRyb2xzIiwiYXJpYS1sYWJlbCIsImFyaWEtc2VsZWN0ZWQiLCJlbmQiLCJpbml0QXJyb3dFdmVudHMiLCJpbml0RG90RXZlbnRzIiwiaW5pdFNsaWRlRXZlbnRzIiwiYWN0aW9uIiwiaW5pdFVJIiwic2hvdyIsInRhZ05hbWUiLCJtYXRjaCIsImtleUNvZGUiLCJsb2FkSW1hZ2VzIiwiaW1hZ2VzU2NvcGUiLCJpbWFnZSIsImltYWdlU291cmNlIiwiaW1hZ2VTcmNTZXQiLCJpbWFnZVNpemVzIiwiaW1hZ2VUb0xvYWQiLCJvbmxvYWQiLCJvbmVycm9yIiwic3JjIiwibG9hZFJhbmdlIiwiY2xvbmVSYW5nZSIsInJhbmdlU3RhcnQiLCJyYW5nZUVuZCIsInNsaWNlIiwicHJldlNsaWRlIiwibmV4dFNsaWRlIiwicHJvZ3Jlc3NpdmVMYXp5TG9hZCIsIm5leHQiLCJzbGlja05leHQiLCJwYXVzZSIsInNsaWNrUGF1c2UiLCJwbGF5Iiwic2xpY2tQbGF5IiwicG9zdFNsaWRlIiwiJGN1cnJlbnRTbGlkZSIsImZvY3VzIiwicHJldiIsInNsaWNrUHJldiIsInRyeUNvdW50IiwiJGltZ3NUb0xvYWQiLCJpbml0aWFsaXppbmciLCJsYXN0VmlzaWJsZUluZGV4IiwiY3VycmVudEJyZWFrcG9pbnQiLCJsIiwicmVzcG9uc2l2ZVNldHRpbmdzIiwidHlwZSIsInNwbGljZSIsInNvcnQiLCJjbGVhclRpbWVvdXQiLCJ3aW5kb3dEZWxheSIsInJlbW92ZVNsaWRlIiwic2xpY2tSZW1vdmUiLCJyZW1vdmVCZWZvcmUiLCJyZW1vdmVBbGwiLCJzZXRDU1MiLCJwb3NpdGlvbiIsIngiLCJ5IiwicG9zaXRpb25Qcm9wcyIsInNldERpbWVuc2lvbnMiLCJwYWRkaW5nIiwib2Zmc2V0Iiwic2V0RmFkZSIsInJpZ2h0Iiwic2V0SGVpZ2h0Iiwic2V0T3B0aW9uIiwic2xpY2tTZXRPcHRpb24iLCJpdGVtIiwidmFsdWUiLCJhcmd1bWVudHMiLCJvcHQiLCJib2R5U3R5bGUiLCJib2R5Iiwic3R5bGUiLCJ1bmRlZmluZWQiLCJXZWJraXRUcmFuc2l0aW9uIiwiTW96VHJhbnNpdGlvbiIsIm1zVHJhbnNpdGlvbiIsIk9UcmFuc2Zvcm0iLCJwZXJzcGVjdGl2ZVByb3BlcnR5Iiwid2Via2l0UGVyc3BlY3RpdmUiLCJNb3pUcmFuc2Zvcm0iLCJNb3pQZXJzcGVjdGl2ZSIsIndlYmtpdFRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIiwidHJhbnNmb3JtIiwiYWxsU2xpZGVzIiwicmVtYWluZGVyIiwiZXZlbkNvZWYiLCJpbmZpbml0ZUNvdW50IiwiY2xvbmUiLCJ0b2dnbGUiLCJ0YXJnZXRFbGVtZW50IiwicGFyZW50cyIsInN5bmMiLCJhbmltU2xpZGUiLCJvbGRTbGlkZSIsInNsaWRlTGVmdCIsIm5hdlRhcmdldCIsImhpZGUiLCJzd2lwZURpcmVjdGlvbiIsInhEaXN0IiwieURpc3QiLCJyIiwic3dpcGVBbmdsZSIsInN0YXJ0WCIsImN1clgiLCJzdGFydFkiLCJjdXJZIiwiYXRhbjIiLCJyb3VuZCIsIlBJIiwic3dpcGVFbmQiLCJzd2lwZUxlbmd0aCIsImVkZ2VIaXQiLCJtaW5Td2lwZSIsImZpbmdlckNvdW50Iiwib3JpZ2luYWxFdmVudCIsInRvdWNoZXMiLCJzd2lwZVN0YXJ0Iiwic3dpcGVNb3ZlIiwiY3VyTGVmdCIsInBvc2l0aW9uT2Zmc2V0IiwidmVydGljYWxTd2lwZUxlbmd0aCIsInBhZ2VYIiwiY2xpZW50WCIsInBhZ2VZIiwiY2xpZW50WSIsInNxcnQiLCJwb3ciLCJ1bmZpbHRlclNsaWRlcyIsInNsaWNrVW5maWx0ZXIiLCJmcm9tQnJlYWtwb2ludCIsImZuIiwicmV0IiwiYXJncyIsIkFycmF5IiwiYXBwbHkiLCJjb25zb2xlIiwid2FybiIsImRlZmF1bHRWYWx1ZXMiLCJidXR0b25DbGFzcyIsImNlbnRlckltYWdlcyIsImNsb3NlT25CbHVyQ2xpY2siLCJjb250YWluZXJJZCIsImRpc2FibGVBdXRvcGxheU9uSG92ZXIiLCJkaXNhYmxlVG91Y2hNb3ZlIiwiZW5hYmxlQXV0b3BsYXkiLCJlbmZvcmNlQ2hhaW5pbmciLCJmYWRlRHVyYXRpb24iLCJpZ25vcmVJbnB1dE9uTW92ZSIsImltYWdlQ2xhc3MiLCJpbm5lckNsYXNzIiwibGlzdGVuS2V5cyIsInNob3dBc0dhbGxlcnkiLCJzbGlkZXJEcmFnZ2FibGUiLCJzbGlkZXJMb29wZWQiLCJzbGlkZXJOZXh0QnV0dG9uIiwic2xpZGVyUHJldkJ1dHRvbiIsInNsaWRlVHJhbnNpdGlvbiIsInNsaWRlVHJhbnNpdGlvblNwZWVkIiwidGVtcG9yYXJ5Iiwid3JhcHBlckNsYXNzIiwic3RhdGUiLCJpbml0aWFsaXplZCIsInZpc2libGUiLCJ6b29tYm94Iiwic2V0dGluZyIsIm92ZXJsYXkiLCJpbm5lciIsImZhZGVPdXQiLCJmb3JjZVNvdXJjZUF0dHIiLCJyZWwiLCJ0bXAiLCJmYWRlSW4iLCJfdGhpcyIsImUiLCJrZXlMaXN0ZW5lciIsImtleSIsIndoaWNoIiwiaXNJbml0aWFsaXplZCIsImlzVmlzaWJsZSIsImdldEN1cnJlbnRTbGlkZSIsInN1cnByZXNzR2FsbGVyeUluaXQiXSwibWFwcGluZ3MiOiJDQWlCQSxTQUFBQSxHQUNBLFlBQ0EsbUJBQUFDLFNBQUFBLE9BQUFDLElBQ0FELFFBQUEsVUFBQUQsR0FDQSxtQkFBQUcsU0FDQUMsT0FBQUQsUUFBQUgsRUFBQUssUUFBQSxXQUVBTCxFQUFBTSxTQUdBLFNBQUFDLEdBQ0EsWUFDQSxJQUFBQyxHQUFBQyxPQUFBRCxTQUVBQSxHQUFBLFdBSUEsUUFBQUEsR0FBQUUsRUFBQUMsR0FFQSxHQUFBQyxHQUFBQyxFQUFBQyxJQUVBRCxHQUFBRSxVQUNBQyxlQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGFBQUFYLEVBQUFHLEdBQ0FTLFdBQUFaLEVBQUFHLEdBQ0FVLFFBQUEsRUFDQUMsU0FBQSxLQUNBQyxVQUFBLG1GQUNBQyxVQUFBLDJFQUNBQyxVQUFBLEVBQ0FDLGNBQUEsSUFDQUMsWUFBQSxFQUNBQyxjQUFBLE9BQ0FDLFFBQUEsT0FDQUMsYUFBQSxTQUFBQyxFQUFBQyxHQUNBLE1BQUF4QixHQUFBLDRCQUFBeUIsS0FBQUQsRUFBQSxJQUVBRSxNQUFBLEVBQ0FDLFVBQUEsYUFDQUMsV0FBQSxFQUNBQyxPQUFBLFNBQ0FDLGFBQUEsSUFDQUMsTUFBQSxFQUNBQyxlQUFBLEVBQ0FDLGVBQUEsRUFDQUMsVUFBQSxFQUNBQyxhQUFBLEVBQ0FDLFNBQUEsV0FDQUMsYUFBQSxFQUNBQyxjQUFBLEVBQ0FDLGNBQUEsRUFDQUMsa0JBQUEsRUFDQUMsVUFBQSxTQUNBQyxXQUFBLEtBQ0FDLEtBQUEsRUFDQUMsS0FBQSxFQUNBQyxNQUFBLEdBQ0FDLGFBQUEsRUFDQUMsYUFBQSxFQUNBQyxlQUFBLEVBQ0FDLE1BQUEsSUFDQUMsT0FBQSxFQUNBQyxjQUFBLEVBQ0FDLFdBQUEsRUFDQUMsZUFBQSxFQUNBQyxRQUFBLEVBQ0FDLGNBQUEsRUFDQUMsZUFBQSxFQUNBQyxVQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLE9BQUEsS0FHQXRELEVBQUF1RCxVQUNBQyxXQUFBLEVBQ0FDLFVBQUEsRUFDQUMsY0FBQSxLQUNBQyxpQkFBQSxFQUNBQyxZQUFBLEtBQ0FDLGFBQUEsRUFDQUMsVUFBQSxFQUNBQyxNQUFBLEtBQ0FDLFVBQUEsS0FDQUMsV0FBQSxLQUNBQyxVQUFBLEVBQ0FDLFdBQUEsS0FDQUMsV0FBQSxLQUNBQyxXQUFBLEVBQ0FDLFdBQUEsS0FDQUMsV0FBQSxLQUNBQyxZQUFBLEtBQ0FDLFFBQUEsS0FDQUMsU0FBQSxFQUNBQyxZQUFBLEVBQ0FDLFVBQUEsS0FDQUMsU0FBQSxFQUNBQyxNQUFBLEtBQ0FDLGVBQ0FDLG1CQUFBLEVBQ0FDLFdBQUEsR0FHQXZGLEVBQUF3RixPQUFBbEYsRUFBQUEsRUFBQXVELFVBRUF2RCxFQUFBbUYsaUJBQUEsS0FDQW5GLEVBQUFvRixTQUFBLEtBQ0FwRixFQUFBcUYsU0FBQSxLQUNBckYsRUFBQXNGLGVBQ0F0RixFQUFBdUYsc0JBQ0F2RixFQUFBd0YsZ0JBQUEsRUFDQXhGLEVBQUF5RixVQUFBLEVBQ0F6RixFQUFBMEYsYUFBQSxFQUNBMUYsRUFBQTJGLE9BQUEsU0FDQTNGLEVBQUE0RixRQUFBLEVBQ0E1RixFQUFBNkYsYUFBQSxLQUNBN0YsRUFBQW1DLFVBQUEsS0FDQW5DLEVBQUE4RixTQUFBLEVBQ0E5RixFQUFBK0YsYUFBQSxFQUNBL0YsRUFBQWdHLFFBQUF0RyxFQUFBRyxHQUNBRyxFQUFBaUcsYUFBQSxLQUNBakcsRUFBQWtHLGNBQUEsS0FDQWxHLEVBQUFtRyxlQUFBLEtBQ0FuRyxFQUFBb0csaUJBQUEsbUJBQ0FwRyxFQUFBcUcsWUFBQSxFQUNBckcsRUFBQXNHLFlBQUEsS0FFQXZHLEVBQUFMLEVBQUFHLEdBQUEwRyxLQUFBLGFBRUF2RyxFQUFBd0csUUFBQTlHLEVBQUF3RixVQUFBbEYsRUFBQUUsU0FBQUosRUFBQUMsR0FFQUMsRUFBQTZELGFBQUE3RCxFQUFBd0csUUFBQTNFLGFBRUE3QixFQUFBeUcsaUJBQUF6RyxFQUFBd0csUUFFQSxtQkFBQUUsVUFBQUMsV0FDQTNHLEVBQUEyRixPQUFBLFlBQ0EzRixFQUFBb0csaUJBQUEsdUJBQ0EsbUJBQUFNLFVBQUFFLGVBQ0E1RyxFQUFBMkYsT0FBQSxlQUNBM0YsRUFBQW9HLGlCQUFBLDBCQUdBcEcsRUFBQTZHLFNBQUFuSCxFQUFBb0gsTUFBQTlHLEVBQUE2RyxTQUFBN0csR0FDQUEsRUFBQStHLGNBQUFySCxFQUFBb0gsTUFBQTlHLEVBQUErRyxjQUFBL0csR0FDQUEsRUFBQWdILGlCQUFBdEgsRUFBQW9ILE1BQUE5RyxFQUFBZ0gsaUJBQUFoSCxHQUNBQSxFQUFBaUgsWUFBQXZILEVBQUFvSCxNQUFBOUcsRUFBQWlILFlBQUFqSCxHQUNBQSxFQUFBa0gsYUFBQXhILEVBQUFvSCxNQUFBOUcsRUFBQWtILGFBQUFsSCxHQUNBQSxFQUFBbUgsY0FBQXpILEVBQUFvSCxNQUFBOUcsRUFBQW1ILGNBQUFuSCxHQUNBQSxFQUFBb0gsWUFBQTFILEVBQUFvSCxNQUFBOUcsRUFBQW9ILFlBQUFwSCxHQUNBQSxFQUFBcUgsYUFBQTNILEVBQUFvSCxNQUFBOUcsRUFBQXFILGFBQUFySCxHQUNBQSxFQUFBc0gsWUFBQTVILEVBQUFvSCxNQUFBOUcsRUFBQXNILFlBQUF0SCxHQUNBQSxFQUFBdUgsV0FBQTdILEVBQUFvSCxNQUFBOUcsRUFBQXVILFdBQUF2SCxHQUVBQSxFQUFBd0gsWUFBQUEsSUFLQXhILEVBQUF5SCxTQUFBLDRCQUdBekgsRUFBQTBILHNCQUNBMUgsRUFBQTJILE1BQUEsR0FySkEsR0FBQUgsR0FBQSxDQXlKQSxPQUFBN0gsTUFJQUEsRUFBQWlJLFVBQUFDLFlBQUEsV0FDQSxHQUFBN0gsR0FBQUMsSUFFQUQsR0FBQXdFLFlBQUFzRCxLQUFBLGlCQUFBQyxNQUNBQyxjQUFBLFVBQ0FGLEtBQUEsNEJBQUFDLE1BQ0FFLFNBQUEsT0FLQXRJLEVBQUFpSSxVQUFBTSxTQUFBdkksRUFBQWlJLFVBQUFPLFNBQUEsU0FBQUMsRUFBQUMsRUFBQUMsR0FFQSxHQUFBdEksR0FBQUMsSUFFQSxJQUFBLGlCQUFBLEdBQ0FxSSxFQUFBRCxFQUNBQSxFQUFBLFNBQ0EsSUFBQUEsRUFBQSxHQUFBQSxHQUFBckksRUFBQXNFLFdBQ0EsT0FBQSxDQUdBdEUsR0FBQXVJLFNBRUEsZ0JBQUEsR0FDQSxJQUFBRixHQUFBLElBQUFySSxFQUFBeUUsUUFBQStELE9BQ0E5SSxFQUFBMEksR0FBQUssU0FBQXpJLEVBQUF3RSxhQUNBOEQsRUFDQTVJLEVBQUEwSSxHQUFBTSxhQUFBMUksRUFBQXlFLFFBQUFrRSxHQUFBTixJQUVBM0ksRUFBQTBJLEdBQUFRLFlBQUE1SSxFQUFBeUUsUUFBQWtFLEdBQUFOLElBR0FDLEtBQUEsRUFDQTVJLEVBQUEwSSxHQUFBUyxVQUFBN0ksRUFBQXdFLGFBRUE5RSxFQUFBMEksR0FBQUssU0FBQXpJLEVBQUF3RSxhQUlBeEUsRUFBQXlFLFFBQUF6RSxFQUFBd0UsWUFBQXNFLFNBQUE3SSxLQUFBdUcsUUFBQWpFLE9BRUF2QyxFQUFBd0UsWUFBQXNFLFNBQUE3SSxLQUFBdUcsUUFBQWpFLE9BQUF3RyxTQUVBL0ksRUFBQXdFLFlBQUF3RSxPQUFBaEosRUFBQXlFLFNBRUF6RSxFQUFBeUUsUUFBQXdFLEtBQUEsU0FBQVosRUFBQXhJLEdBQ0FILEVBQUFHLEdBQUFrSSxLQUFBLG1CQUFBTSxLQUdBckksRUFBQWlHLGFBQUFqRyxFQUFBeUUsUUFFQXpFLEVBQUFrSixVQUlBdkosRUFBQWlJLFVBQUF1QixjQUFBLFdBQ0EsR0FBQW5KLEdBQUFDLElBQ0EsSUFBQSxJQUFBRCxFQUFBd0csUUFBQS9ELGNBQUF6QyxFQUFBd0csUUFBQXBHLGtCQUFBLEdBQUFKLEVBQUF3RyxRQUFBckQsWUFBQSxFQUFBLENBQ0EsR0FBQWlHLEdBQUFwSixFQUFBeUUsUUFBQWtFLEdBQUEzSSxFQUFBNkQsY0FBQXdGLGFBQUEsRUFDQXJKLEdBQUE4RSxNQUFBd0UsU0FDQUMsT0FBQUgsR0FDQXBKLEVBQUF3RyxRQUFBN0QsU0FJQWhELEVBQUFpSSxVQUFBNEIsYUFBQSxTQUFBQyxFQUFBQyxHQUVBLEdBQUFDLE1BQ0EzSixFQUFBQyxJQUVBRCxHQUFBbUosZ0JBRUFuSixFQUFBd0csUUFBQWxFLE9BQUEsR0FBQXRDLEVBQUF3RyxRQUFBckQsWUFBQSxJQUNBc0csR0FBQUEsR0FFQXpKLEVBQUFnRixxQkFBQSxFQUNBaEYsRUFBQXdHLFFBQUFyRCxZQUFBLEVBQ0FuRCxFQUFBd0UsWUFBQThFLFNBQ0FNLEtBQUFILEdBQ0F6SixFQUFBd0csUUFBQTdELE1BQUEzQyxFQUFBd0csUUFBQWpGLE9BQUFtSSxHQUVBMUosRUFBQXdFLFlBQUE4RSxTQUNBTyxJQUFBSixHQUNBekosRUFBQXdHLFFBQUE3RCxNQUFBM0MsRUFBQXdHLFFBQUFqRixPQUFBbUksR0FLQTFKLEVBQUF3RixrQkFBQSxHQUNBeEYsRUFBQXdHLFFBQUFsRSxPQUFBLElBQ0F0QyxFQUFBNEQsYUFBQTVELEVBQUEsYUFFQU4sR0FDQW9LLFVBQUE5SixFQUFBNEQsY0FDQTBGLFNBQ0FRLFVBQUFMLElBRUFNLFNBQUEvSixFQUFBd0csUUFBQTdELE1BQ0FwQixPQUFBdkIsRUFBQXdHLFFBQUFqRixPQUNBeUksS0FBQSxTQUFBQyxHQUNBQSxFQUFBQyxLQUFBQyxLQUFBRixHQUNBakssRUFBQXdHLFFBQUFyRCxZQUFBLEdBQ0F3RyxFQUFBM0osRUFBQW9GLFVBQUEsYUFDQTZFLEVBQUEsV0FDQWpLLEVBQUF3RSxZQUFBNEYsSUFBQVQsS0FFQUEsRUFBQTNKLEVBQUFvRixVQUFBLGlCQUNBNkUsRUFBQSxNQUNBakssRUFBQXdFLFlBQUE0RixJQUFBVCxLQUdBVSxTQUFBLFdBQ0FYLEdBQ0FBLEVBQUFZLFlBT0F0SyxFQUFBdUssa0JBQ0FkLEVBQUFTLEtBQUFDLEtBQUFWLEdBRUF6SixFQUFBd0csUUFBQXJELFlBQUEsRUFDQXdHLEVBQUEzSixFQUFBb0YsVUFBQSxlQUFBcUUsRUFBQSxnQkFFQUUsRUFBQTNKLEVBQUFvRixVQUFBLG1CQUFBcUUsRUFBQSxXQUVBekosRUFBQXdFLFlBQUE0RixJQUFBVCxHQUVBRCxHQUNBYyxXQUFBLFdBRUF4SyxFQUFBeUssb0JBRUFmLEVBQUFZLFFBQ0F0SyxFQUFBd0csUUFBQTdELFNBU0FoRCxFQUFBaUksVUFBQThDLGFBQUEsV0FFQSxHQUFBMUssR0FBQUMsS0FDQU8sRUFBQVIsRUFBQXdHLFFBQUFoRyxRQU1BLE9BSkFBLElBQUEsT0FBQUEsSUFDQUEsRUFBQWQsRUFBQWMsR0FBQW1LLElBQUEzSyxFQUFBZ0csVUFHQXhGLEdBSUFiLEVBQUFpSSxVQUFBcEgsU0FBQSxTQUFBNkgsR0FFQSxHQUFBckksR0FBQUMsS0FDQU8sRUFBQVIsRUFBQTBLLGNBRUEsUUFBQWxLLEdBQUEsZ0JBQUFBLElBQ0FBLEVBQUF5SSxLQUFBLFdBQ0EsR0FBQTJCLEdBQUFsTCxFQUFBTyxNQUFBNEssTUFBQSxXQUNBRCxHQUFBM0YsV0FDQTJGLEVBQUFFLGFBQUF6QyxHQUFBLE1BT0ExSSxFQUFBaUksVUFBQTJDLGdCQUFBLFNBQUFoSSxHQUVBLEdBQUF2QyxHQUFBQyxLQUNBOEssSUFFQS9LLEdBQUF3RyxRQUFBL0UsUUFBQSxFQUNBc0osRUFBQS9LLEVBQUFtRyxnQkFBQW5HLEVBQUFrRyxjQUFBLElBQUFsRyxFQUFBd0csUUFBQTdELE1BQUEsTUFBQTNDLEVBQUF3RyxRQUFBekYsUUFFQWdLLEVBQUEvSyxFQUFBbUcsZ0JBQUEsV0FBQW5HLEVBQUF3RyxRQUFBN0QsTUFBQSxNQUFBM0MsRUFBQXdHLFFBQUF6RixRQUdBZixFQUFBd0csUUFBQS9FLFFBQUEsRUFDQXpCLEVBQUF3RSxZQUFBNEYsSUFBQVcsR0FFQS9LLEVBQUF5RSxRQUFBa0UsR0FBQXBHLEdBQUE2SCxJQUFBVyxJQUtBcEwsRUFBQWlJLFVBQUFmLFNBQUEsV0FFQSxHQUFBN0csR0FBQUMsSUFFQUQsR0FBQStHLGdCQUVBL0csRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQS9ELGVBQ0F6QyxFQUFBMEQsY0FBQXNILFlBQUFoTCxFQUFBZ0gsaUJBQUFoSCxFQUFBd0csUUFBQTVGLGlCQUtBakIsRUFBQWlJLFVBQUFiLGNBQUEsV0FFQSxHQUFBL0csR0FBQUMsSUFFQUQsR0FBQTBELGVBQ0F1SCxjQUFBakwsRUFBQTBELGdCQUtBL0QsRUFBQWlJLFVBQUFaLGlCQUFBLFdBRUEsR0FBQWhILEdBQUFDLEtBQ0FpTCxFQUFBbEwsRUFBQTZELGFBQUE3RCxFQUFBd0csUUFBQTlELGNBRUExQyxHQUFBNEYsUUFBQTVGLEVBQUEwRixhQUFBMUYsRUFBQXlGLFdBRUF6RixFQUFBd0csUUFBQTVFLFlBQUEsSUFFQSxJQUFBNUIsRUFBQThELFdBQUE5RCxFQUFBNkQsYUFBQSxJQUFBN0QsRUFBQXNFLFdBQUEsRUFDQXRFLEVBQUE4RCxVQUFBLEVBR0EsSUFBQTlELEVBQUE4RCxZQUVBb0gsRUFBQWxMLEVBQUE2RCxhQUFBN0QsRUFBQXdHLFFBQUE5RCxlQUVBMUMsRUFBQTZELGFBQUEsSUFBQSxJQUNBN0QsRUFBQThELFVBQUEsS0FPQTlELEVBQUE4SyxhQUFBSSxLQU1BdkwsRUFBQWlJLFVBQUF1RCxZQUFBLFdBRUEsR0FBQW5MLEdBQUFDLElBRUFELEdBQUF3RyxRQUFBakcsVUFBQSxJQUVBUCxFQUFBb0UsV0FBQTFFLEVBQUFNLEVBQUF3RyxRQUFBL0YsV0FBQTJLLFNBQUEsZUFDQXBMLEVBQUFtRSxXQUFBekUsRUFBQU0sRUFBQXdHLFFBQUE5RixXQUFBMEssU0FBQSxlQUVBcEwsRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQS9ELGNBRUF6QyxFQUFBb0UsV0FBQWlILFlBQUEsZ0JBQUFDLFdBQUEsd0JBQ0F0TCxFQUFBbUUsV0FBQWtILFlBQUEsZ0JBQUFDLFdBQUEsd0JBRUF0TCxFQUFBeUgsU0FBQThELEtBQUF2TCxFQUFBd0csUUFBQS9GLFlBQ0FULEVBQUFvRSxXQUFBeUUsVUFBQTdJLEVBQUF3RyxRQUFBbkcsY0FHQUwsRUFBQXlILFNBQUE4RCxLQUFBdkwsRUFBQXdHLFFBQUE5RixZQUNBVixFQUFBbUUsV0FBQXNFLFNBQUF6SSxFQUFBd0csUUFBQW5HLGNBR0FMLEVBQUF3RyxRQUFBNUUsWUFBQSxHQUNBNUIsRUFBQW9FLFdBQ0FnSCxTQUFBLGtCQUNBckQsS0FBQSxnQkFBQSxTQUtBL0gsRUFBQW9FLFdBQUFvSCxJQUFBeEwsRUFBQW1FLFlBRUFpSCxTQUFBLGdCQUNBckQsTUFDQTBELGdCQUFBLE9BQ0F4RCxTQUFBLFNBU0F0SSxFQUFBaUksVUFBQThELFVBQUEsV0FFQSxHQUNBeEssR0FBQXlLLEVBREEzTCxFQUFBQyxJQUdBLElBQUFELEVBQUF3RyxRQUFBcEYsUUFBQSxHQUFBcEIsRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQS9ELGFBQUEsQ0FNQSxJQUpBekMsRUFBQWdHLFFBQUFvRixTQUFBLGdCQUVBTyxFQUFBak0sRUFBQSxVQUFBMEwsU0FBQXBMLEVBQUF3RyxRQUFBbkYsV0FFQUgsRUFBQSxFQUFBQSxHQUFBbEIsRUFBQTRMLGNBQUExSyxHQUFBLEVBQ0F5SyxFQUFBM0MsT0FBQXRKLEVBQUEsVUFBQXNKLE9BQUFoSixFQUFBd0csUUFBQXhGLGFBQUFzSixLQUFBckssS0FBQUQsRUFBQWtCLElBR0FsQixHQUFBK0QsTUFBQTRILEVBQUFsRCxTQUFBekksRUFBQXdHLFFBQUFsRyxZQUVBTixFQUFBK0QsTUFBQStELEtBQUEsTUFBQStELFFBQUFULFNBQUEsa0JBTUF6TCxFQUFBaUksVUFBQWtFLFNBQUEsV0FFQSxHQUFBOUwsR0FBQUMsSUFFQUQsR0FBQXlFLFFBQ0F6RSxFQUFBZ0csUUFDQThDLFNBQUE5SSxFQUFBd0csUUFBQWpFLE1BQUEsdUJBQ0E2SSxTQUFBLGVBRUFwTCxFQUFBc0UsV0FBQXRFLEVBQUF5RSxRQUFBK0QsT0FFQXhJLEVBQUF5RSxRQUFBd0UsS0FBQSxTQUFBWixFQUFBeEksR0FDQUgsRUFBQUcsR0FDQWtJLEtBQUEsbUJBQUFNLEdBQ0E5QixLQUFBLGtCQUFBN0csRUFBQUcsR0FBQWtJLEtBQUEsVUFBQSxNQUdBL0gsRUFBQWdHLFFBQUFvRixTQUFBLGdCQUVBcEwsRUFBQXdFLFlBQUEsSUFBQXhFLEVBQUFzRSxXQUNBNUUsRUFBQSw4QkFBQStJLFNBQUF6SSxFQUFBZ0csU0FDQWhHLEVBQUF5RSxRQUFBc0gsUUFBQSw4QkFBQUMsU0FFQWhNLEVBQUE4RSxNQUFBOUUsRUFBQXdFLFlBQUF5SCxLQUNBLDZCQUFBRCxTQUNBaE0sRUFBQXdFLFlBQUE0RixJQUFBLFVBQUEsR0FFQXBLLEVBQUF3RyxRQUFBM0YsY0FBQSxHQUFBYixFQUFBd0csUUFBQTNELGdCQUFBLElBQ0E3QyxFQUFBd0csUUFBQTlELGVBQUEsR0FHQWhELEVBQUEsaUJBQUFNLEVBQUFnRyxTQUFBMkUsSUFBQSxTQUFBUyxTQUFBLGlCQUVBcEwsRUFBQWtNLGdCQUVBbE0sRUFBQW1MLGNBRUFuTCxFQUFBMEwsWUFFQTFMLEVBQUFtTSxhQUdBbk0sRUFBQW9NLGdCQUFBLGdCQUFBcE0sR0FBQTZELGFBQUE3RCxFQUFBNkQsYUFBQSxHQUVBN0QsRUFBQXdHLFFBQUFsRixhQUFBLEdBQ0F0QixFQUFBOEUsTUFBQXNHLFNBQUEsY0FLQXpMLEVBQUFpSSxVQUFBeUUsVUFBQSxXQUVBLEdBQUFDLEdBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEVBQUE1TSxFQUFBQyxJQUtBLElBSEF3TSxFQUFBL0YsU0FBQW1HLHlCQUNBRixFQUFBM00sRUFBQWdHLFFBQUE4QyxXQUVBOUksRUFBQXdHLFFBQUFuRSxLQUFBLEVBQUEsQ0FPQSxJQUxBdUssRUFBQTVNLEVBQUF3RyxRQUFBaEUsYUFBQXhDLEVBQUF3RyxRQUFBbkUsS0FDQXFLLEVBQUF4QyxLQUFBQyxLQUNBd0MsRUFBQW5FLE9BQUFvRSxHQUdBTixFQUFBLEVBQUFBLEVBQUFJLEVBQUFKLElBQUEsQ0FDQSxHQUFBL0osR0FBQW1FLFNBQUFvRyxjQUFBLE1BQ0EsS0FBQVAsRUFBQSxFQUFBQSxFQUFBdk0sRUFBQXdHLFFBQUFuRSxLQUFBa0ssSUFBQSxDQUNBLEdBQUFRLEdBQUFyRyxTQUFBb0csY0FBQSxNQUNBLEtBQUFOLEVBQUEsRUFBQUEsRUFBQXhNLEVBQUF3RyxRQUFBaEUsYUFBQWdLLElBQUEsQ0FDQSxHQUFBNUIsR0FBQTBCLEVBQUFNLEdBQUFMLEVBQUF2TSxFQUFBd0csUUFBQWhFLGFBQUFnSyxFQUNBRyxHQUFBSyxJQUFBcEMsSUFDQW1DLEVBQUFFLFlBQUFOLEVBQUFLLElBQUFwQyxJQUdBckksRUFBQTBLLFlBQUFGLEdBRUFOLEVBQUFRLFlBQUExSyxHQUdBdkMsRUFBQWdHLFFBQUFrSCxRQUFBbEUsT0FBQXlELEdBQ0F6TSxFQUFBZ0csUUFBQThDLFdBQUFBLFdBQUFBLFdBQ0FzQixLQUNBK0MsTUFBQSxJQUFBbk4sRUFBQXdHLFFBQUFoRSxhQUFBLElBQ0E0SyxRQUFBLG1CQU9Bek4sRUFBQWlJLFVBQUF5RixnQkFBQSxTQUFBQyxFQUFBQyxHQUVBLEdBQ0FDLEdBQUFDLEVBQUFDLEVBREExTixFQUFBQyxLQUNBME4sR0FBQSxFQUNBQyxFQUFBNU4sRUFBQWdHLFFBQUFtSCxRQUNBOUcsRUFBQXpHLE9BQUFpTyxZQUFBbk8sRUFBQUUsUUFBQXVOLE9BVUEsSUFSQSxXQUFBbk4sRUFBQW1DLFVBQ0F1TCxFQUFBckgsRUFDQSxXQUFBckcsRUFBQW1DLFVBQ0F1TCxFQUFBRSxFQUNBLFFBQUE1TixFQUFBbUMsWUFDQXVMLEVBQUF4RCxLQUFBNEQsSUFBQXpILEVBQUF1SCxJQUdBNU4sRUFBQXdHLFFBQUFwRSxZQUNBcEMsRUFBQXdHLFFBQUFwRSxXQUFBb0csUUFDQSxPQUFBeEksRUFBQXdHLFFBQUFwRSxXQUFBLENBRUFxTCxFQUFBLElBRUEsS0FBQUQsSUFBQXhOLEdBQUFzRixZQUNBdEYsRUFBQXNGLFlBQUF5SSxlQUFBUCxLQUNBeE4sRUFBQXlHLGlCQUFBMUUsZUFBQSxFQUNBMkwsRUFBQTFOLEVBQUFzRixZQUFBa0ksS0FDQUMsRUFBQXpOLEVBQUFzRixZQUFBa0ksSUFHQUUsRUFBQTFOLEVBQUFzRixZQUFBa0ksS0FDQUMsRUFBQXpOLEVBQUFzRixZQUFBa0ksSUFNQSxRQUFBQyxFQUNBLE9BQUF6TixFQUFBbUYsa0JBQ0FzSSxJQUFBek4sRUFBQW1GLGtCQUFBb0ksS0FDQXZOLEVBQUFtRixpQkFDQXNJLEVBQ0EsWUFBQXpOLEVBQUF1RixtQkFBQWtJLEdBQ0F6TixFQUFBZ08sUUFBQVAsSUFFQXpOLEVBQUF3RyxRQUFBOUcsRUFBQXdGLFVBQUFsRixFQUFBeUcsaUJBQ0F6RyxFQUFBdUYsbUJBQ0FrSSxJQUNBSCxLQUFBLElBQ0F0TixFQUFBNkQsYUFBQTdELEVBQUF3RyxRQUFBM0UsY0FFQTdCLEVBQUFpTyxRQUFBWCxJQUVBSyxFQUFBRixJQUdBek4sRUFBQW1GLGlCQUFBc0ksRUFDQSxZQUFBek4sRUFBQXVGLG1CQUFBa0ksR0FDQXpOLEVBQUFnTyxRQUFBUCxJQUVBek4sRUFBQXdHLFFBQUE5RyxFQUFBd0YsVUFBQWxGLEVBQUF5RyxpQkFDQXpHLEVBQUF1RixtQkFDQWtJLElBQ0FILEtBQUEsSUFDQXROLEVBQUE2RCxhQUFBN0QsRUFBQXdHLFFBQUEzRSxjQUVBN0IsRUFBQWlPLFFBQUFYLElBRUFLLEVBQUFGLEdBR0EsT0FBQXpOLEVBQUFtRixtQkFDQW5GLEVBQUFtRixpQkFBQSxLQUNBbkYsRUFBQXdHLFFBQUF4RyxFQUFBeUcsaUJBQ0E2RyxLQUFBLElBQ0F0TixFQUFBNkQsYUFBQTdELEVBQUF3RyxRQUFBM0UsY0FFQTdCLEVBQUFpTyxRQUFBWCxHQUNBSyxFQUFBRixHQUtBSCxHQUFBSyxLQUFBLEdBQ0EzTixFQUFBZ0csUUFBQWtJLFFBQUEsY0FBQWxPLEVBQUEyTixNQU1BaE8sRUFBQWlJLFVBQUFYLFlBQUEsU0FBQWtILEVBQUFDLEdBRUEsR0FFQUMsR0FBQTFKLEVBQUEySixFQUZBdE8sRUFBQUMsS0FDQXNPLEVBQUE3TyxFQUFBeU8sRUFBQUssY0FnQkEsUUFaQUQsRUFBQUUsR0FBQSxNQUNBTixFQUFBTyxpQkFJQUgsRUFBQUUsR0FBQSxRQUNBRixFQUFBQSxFQUFBSSxRQUFBLE9BR0FMLEVBQUF0TyxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBOUQsaUJBQUEsRUFDQTJMLEVBQUFDLEVBQUEsR0FBQXRPLEVBQUFzRSxXQUFBdEUsRUFBQTZELGNBQUE3RCxFQUFBd0csUUFBQTlELGVBRUF5TCxFQUFBNUgsS0FBQXFJLFNBRUEsSUFBQSxXQUNBakssRUFBQSxJQUFBMEosRUFBQXJPLEVBQUF3RyxRQUFBOUQsZUFBQTFDLEVBQUF3RyxRQUFBL0QsYUFBQTRMLEVBQ0FyTyxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsY0FDQXpDLEVBQUE4SyxhQUFBOUssRUFBQTZELGFBQUFjLEdBQUEsRUFBQXlKLEVBRUEsTUFFQSxLQUFBLE9BQ0F6SixFQUFBLElBQUEwSixFQUFBck8sRUFBQXdHLFFBQUE5RCxlQUFBMkwsRUFDQXJPLEVBQUFzRSxXQUFBdEUsRUFBQXdHLFFBQUEvRCxjQUNBekMsRUFBQThLLGFBQUE5SyxFQUFBNkQsYUFBQWMsR0FBQSxFQUFBeUosRUFFQSxNQUVBLEtBQUEsUUFDQSxHQUFBL0YsR0FBQSxJQUFBOEYsRUFBQTVILEtBQUE4QixNQUFBLEVBQ0E4RixFQUFBNUgsS0FBQThCLE9BQUFrRyxFQUFBbEcsUUFBQXJJLEVBQUF3RyxRQUFBOUQsY0FFQTFDLEdBQUE4SyxhQUFBOUssRUFBQTZPLGVBQUF4RyxJQUFBLEVBQUErRixHQUNBRyxFQUFBekYsV0FBQW9GLFFBQUEsUUFDQSxNQUVBLFNBQ0EsU0FLQXZPLEVBQUFpSSxVQUFBaUgsZUFBQSxTQUFBeEcsR0FFQSxHQUNBeUcsR0FBQUMsRUFEQS9PLEVBQUFDLElBS0EsSUFGQTZPLEVBQUE5TyxFQUFBZ1Asc0JBQ0FELEVBQUEsRUFDQTFHLEVBQUF5RyxFQUFBQSxFQUFBdEcsT0FBQSxHQUNBSCxFQUFBeUcsRUFBQUEsRUFBQXRHLE9BQUEsT0FFQSxLQUFBLEdBQUF5RyxLQUFBSCxHQUFBLENBQ0EsR0FBQXpHLEVBQUF5RyxFQUFBRyxHQUFBLENBQ0E1RyxFQUFBMEcsQ0FDQSxPQUVBQSxFQUFBRCxFQUFBRyxHQUlBLE1BQUE1RyxJQUdBMUksRUFBQWlJLFVBQUFzSCxjQUFBLFdBRUEsR0FBQWxQLEdBQUFDLElBRUFELEdBQUF3RyxRQUFBcEYsTUFBQSxPQUFBcEIsRUFBQStELFFBRUFyRSxFQUFBLEtBQUFNLEVBQUErRCxPQUNBb0wsSUFBQSxjQUFBblAsRUFBQWlILGFBQ0FrSSxJQUFBLG1CQUFBelAsRUFBQW9ILE1BQUE5RyxFQUFBb1AsVUFBQXBQLEdBQUEsSUFDQW1QLElBQUEsbUJBQUF6UCxFQUFBb0gsTUFBQTlHLEVBQUFvUCxVQUFBcFAsR0FBQSxJQUVBQSxFQUFBd0csUUFBQXJHLGlCQUFBLEdBQ0FILEVBQUErRCxNQUFBb0wsSUFBQSxnQkFBQW5QLEVBQUF1SCxhQUlBdkgsRUFBQWdHLFFBQUFtSixJQUFBLDBCQUVBblAsRUFBQXdHLFFBQUFqRyxVQUFBLEdBQUFQLEVBQUFzRSxXQUFBdEUsRUFBQXdHLFFBQUEvRCxlQUNBekMsRUFBQW9FLFlBQUFwRSxFQUFBb0UsV0FBQStLLElBQUEsY0FBQW5QLEVBQUFpSCxhQUNBakgsRUFBQW1FLFlBQUFuRSxFQUFBbUUsV0FBQWdMLElBQUEsY0FBQW5QLEVBQUFpSCxhQUVBakgsRUFBQXdHLFFBQUFyRyxpQkFBQSxJQUNBSCxFQUFBb0UsWUFBQXBFLEVBQUFvRSxXQUFBK0ssSUFBQSxnQkFBQW5QLEVBQUF1SCxZQUNBdkgsRUFBQW1FLFlBQUFuRSxFQUFBbUUsV0FBQWdMLElBQUEsZ0JBQUFuUCxFQUFBdUgsY0FJQXZILEVBQUE4RSxNQUFBcUssSUFBQSxtQ0FBQW5QLEVBQUFxSCxjQUNBckgsRUFBQThFLE1BQUFxSyxJQUFBLGtDQUFBblAsRUFBQXFILGNBQ0FySCxFQUFBOEUsTUFBQXFLLElBQUEsK0JBQUFuUCxFQUFBcUgsY0FDQXJILEVBQUE4RSxNQUFBcUssSUFBQSxxQ0FBQW5QLEVBQUFxSCxjQUVBckgsRUFBQThFLE1BQUFxSyxJQUFBLGNBQUFuUCxFQUFBa0gsY0FFQXhILEVBQUFnSCxVQUFBeUksSUFBQW5QLEVBQUFvRyxpQkFBQXBHLEVBQUFxUCxZQUVBclAsRUFBQXNQLHFCQUVBdFAsRUFBQXdHLFFBQUFyRyxpQkFBQSxHQUNBSCxFQUFBOEUsTUFBQXFLLElBQUEsZ0JBQUFuUCxFQUFBdUgsWUFHQXZILEVBQUF3RyxRQUFBOUUsaUJBQUEsR0FDQWhDLEVBQUFNLEVBQUF3RSxhQUFBc0UsV0FBQXFHLElBQUEsY0FBQW5QLEVBQUFtSCxlQUdBekgsRUFBQUUsUUFBQXVQLElBQUEsaUNBQUFuUCxFQUFBd0gsWUFBQXhILEVBQUF1UCxtQkFFQTdQLEVBQUFFLFFBQUF1UCxJQUFBLHNCQUFBblAsRUFBQXdILFlBQUF4SCxFQUFBd1AsUUFFQTlQLEVBQUEsb0JBQUFNLEVBQUF3RSxhQUFBMkssSUFBQSxZQUFBblAsRUFBQTBPLGdCQUVBaFAsRUFBQUUsUUFBQXVQLElBQUEsb0JBQUFuUCxFQUFBd0gsWUFBQXhILEVBQUFvSCxjQUlBekgsRUFBQWlJLFVBQUEwSCxtQkFBQSxXQUVBLEdBQUF0UCxHQUFBQyxJQUVBRCxHQUFBOEUsTUFBQXFLLElBQUEsbUJBQUF6UCxFQUFBb0gsTUFBQTlHLEVBQUFvUCxVQUFBcFAsR0FBQSxJQUNBQSxFQUFBOEUsTUFBQXFLLElBQUEsbUJBQUF6UCxFQUFBb0gsTUFBQTlHLEVBQUFvUCxVQUFBcFAsR0FBQSxLQUlBTCxFQUFBaUksVUFBQTZILFlBQUEsV0FFQSxHQUFBOUMsR0FBQTNNLEVBQUFDLElBRUFELEdBQUF3RyxRQUFBbkUsS0FBQSxJQUNBc0ssRUFBQTNNLEVBQUF5RSxRQUFBcUUsV0FBQUEsV0FDQTZELEVBQUFyQixXQUFBLFNBQ0F0TCxFQUFBZ0csUUFBQWtILFFBQUFsRSxPQUFBMkQsS0FLQWhOLEVBQUFpSSxVQUFBVixhQUFBLFNBQUFpSCxHQUVBLEdBQUFuTyxHQUFBQyxJQUVBRCxHQUFBK0YsZUFBQSxJQUNBb0ksRUFBQXVCLDJCQUNBdkIsRUFBQXdCLGtCQUNBeEIsRUFBQU8sbUJBS0EvTyxFQUFBaUksVUFBQWdJLFFBQUEsU0FBQTNCLEdBRUEsR0FBQWpPLEdBQUFDLElBRUFELEdBQUErRyxnQkFFQS9HLEVBQUErRSxlQUVBL0UsRUFBQWtQLGdCQUVBeFAsRUFBQSxnQkFBQU0sRUFBQWdHLFNBQUErQyxTQUVBL0ksRUFBQStELE9BQ0EvRCxFQUFBK0QsTUFBQThMLFNBR0E3UCxFQUFBb0UsWUFBQXBFLEVBQUFvRSxXQUFBb0UsU0FFQXhJLEVBQUFvRSxXQUNBaUgsWUFBQSwyQ0FDQUMsV0FBQSxzQ0FDQWxCLElBQUEsVUFBQSxJQUVBcEssRUFBQXlILFNBQUE4RCxLQUFBdkwsRUFBQXdHLFFBQUEvRixZQUNBVCxFQUFBb0UsV0FBQXlMLFVBSUE3UCxFQUFBbUUsWUFBQW5FLEVBQUFtRSxXQUFBcUUsU0FFQXhJLEVBQUFtRSxXQUNBa0gsWUFBQSwyQ0FDQUMsV0FBQSxzQ0FDQWxCLElBQUEsVUFBQSxJQUVBcEssRUFBQXlILFNBQUE4RCxLQUFBdkwsRUFBQXdHLFFBQUE5RixZQUNBVixFQUFBbUUsV0FBQTBMLFVBS0E3UCxFQUFBeUUsVUFFQXpFLEVBQUF5RSxRQUNBNEcsWUFBQSxxRUFDQUMsV0FBQSxlQUNBQSxXQUFBLG9CQUNBckMsS0FBQSxXQUNBdkosRUFBQU8sTUFBQThILEtBQUEsUUFBQXJJLEVBQUFPLE1BQUFzRyxLQUFBLHNCQUdBdkcsRUFBQXdFLFlBQUFzRSxTQUFBN0ksS0FBQXVHLFFBQUFqRSxPQUFBd0csU0FFQS9JLEVBQUF3RSxZQUFBdUUsU0FFQS9JLEVBQUE4RSxNQUFBaUUsU0FFQS9JLEVBQUFnRyxRQUFBZ0QsT0FBQWhKLEVBQUF5RSxVQUdBekUsRUFBQXlQLGNBRUF6UCxFQUFBZ0csUUFBQXFGLFlBQUEsZ0JBQ0FyTCxFQUFBZ0csUUFBQXFGLFlBQUEscUJBQ0FyTCxFQUFBZ0csUUFBQXFGLFlBQUEsZ0JBRUFyTCxFQUFBaUYsV0FBQSxFQUVBZ0osR0FDQWpPLEVBQUFnRyxRQUFBa0ksUUFBQSxXQUFBbE8sS0FLQUwsRUFBQWlJLFVBQUE2QyxrQkFBQSxTQUFBbEksR0FFQSxHQUFBdkMsR0FBQUMsS0FDQThLLElBRUFBLEdBQUEvSyxFQUFBbUcsZ0JBQUEsR0FFQW5HLEVBQUF3RyxRQUFBL0UsUUFBQSxFQUNBekIsRUFBQXdFLFlBQUE0RixJQUFBVyxHQUVBL0ssRUFBQXlFLFFBQUFrRSxHQUFBcEcsR0FBQTZILElBQUFXLElBS0FwTCxFQUFBaUksVUFBQWtJLFVBQUEsU0FBQUMsRUFBQXJHLEdBRUEsR0FBQTFKLEdBQUFDLElBRUFELEdBQUF3RixrQkFBQSxHQUVBeEYsRUFBQXlFLFFBQUFrRSxHQUFBb0gsR0FBQTNGLEtBQ0E5RyxPQUFBdEQsRUFBQXdHLFFBQUFsRCxTQUdBdEQsRUFBQXlFLFFBQUFrRSxHQUFBb0gsR0FBQXpHLFNBQ0EwRyxRQUFBLEdBQ0FoUSxFQUFBd0csUUFBQTdELE1BQUEzQyxFQUFBd0csUUFBQWpGLE9BQUFtSSxLQUlBMUosRUFBQXVLLGdCQUFBd0YsR0FFQS9QLEVBQUF5RSxRQUFBa0UsR0FBQW9ILEdBQUEzRixLQUNBNEYsUUFBQSxFQUNBMU0sT0FBQXRELEVBQUF3RyxRQUFBbEQsU0FHQW9HLEdBQ0FjLFdBQUEsV0FFQXhLLEVBQUF5SyxrQkFBQXNGLEdBRUFyRyxFQUFBWSxRQUNBdEssRUFBQXdHLFFBQUE3RCxTQU9BaEQsRUFBQWlJLFVBQUFxSSxhQUFBLFNBQUFGLEdBRUEsR0FBQS9QLEdBQUFDLElBRUFELEdBQUF3RixrQkFBQSxFQUVBeEYsRUFBQXlFLFFBQUFrRSxHQUFBb0gsR0FBQXpHLFNBQ0EwRyxRQUFBLEVBQ0ExTSxPQUFBdEQsRUFBQXdHLFFBQUFsRCxPQUFBLEdBQ0F0RCxFQUFBd0csUUFBQTdELE1BQUEzQyxFQUFBd0csUUFBQWpGLFNBSUF2QixFQUFBdUssZ0JBQUF3RixHQUVBL1AsRUFBQXlFLFFBQUFrRSxHQUFBb0gsR0FBQTNGLEtBQ0E0RixRQUFBLEVBQ0ExTSxPQUFBdEQsRUFBQXdHLFFBQUFsRCxPQUFBLE1BT0EzRCxFQUFBaUksVUFBQXNJLGFBQUF2USxFQUFBaUksVUFBQXVJLFlBQUEsU0FBQUMsR0FFQSxHQUFBcFEsR0FBQUMsSUFFQSxRQUFBbVEsSUFFQXBRLEVBQUFpRyxhQUFBakcsRUFBQXlFLFFBRUF6RSxFQUFBdUksU0FFQXZJLEVBQUF3RSxZQUFBc0UsU0FBQTdJLEtBQUF1RyxRQUFBakUsT0FBQXdHLFNBRUEvSSxFQUFBaUcsYUFBQW1LLE9BQUFBLEdBQUEzSCxTQUFBekksRUFBQXdFLGFBRUF4RSxFQUFBa0osV0FNQXZKLEVBQUFpSSxVQUFBeUksYUFBQSxXQUVBLEdBQUFyUSxHQUFBQyxJQUVBRCxHQUFBZ0csUUFDQW1KLElBQUEsMEJBQ0FtQixHQUFBLHlCQUFBLElBQUEsU0FBQW5DLEdBRUFBLEVBQUF1QiwwQkFDQSxJQUFBYSxHQUFBN1EsRUFBQU8sS0FFQXVLLFlBQUEsV0FFQXhLLEVBQUF3RyxRQUFBdkUsZUFDQWpDLEVBQUF5RixTQUFBOEssRUFBQTlCLEdBQUEsVUFDQXpPLEVBQUE2RyxhQUdBLE1BS0FsSCxFQUFBaUksVUFBQTRJLFdBQUE3USxFQUFBaUksVUFBQTZJLGtCQUFBLFdBRUEsR0FBQXpRLEdBQUFDLElBQ0EsT0FBQUQsR0FBQTZELGNBSUFsRSxFQUFBaUksVUFBQWdFLFlBQUEsV0FFQSxHQUFBNUwsR0FBQUMsS0FFQXlRLEVBQUEsRUFDQUMsRUFBQSxFQUNBQyxFQUFBLENBRUEsSUFBQTVRLEVBQUF3RyxRQUFBNUUsWUFBQSxFQUNBLEdBQUE1QixFQUFBc0UsWUFBQXRFLEVBQUF3RyxRQUFBL0QsZUFDQW1PLE1BRUEsTUFBQUYsRUFBQTFRLEVBQUFzRSxjQUNBc00sRUFDQUYsRUFBQUMsRUFBQTNRLEVBQUF3RyxRQUFBOUQsZUFDQWlPLEdBQUEzUSxFQUFBd0csUUFBQTlELGdCQUFBMUMsRUFBQXdHLFFBQUEvRCxhQUFBekMsRUFBQXdHLFFBQUE5RCxlQUFBMUMsRUFBQXdHLFFBQUEvRCxpQkFHQSxJQUFBekMsRUFBQXdHLFFBQUEzRixjQUFBLEVBQ0ErUCxFQUFBNVEsRUFBQXNFLGVBQ0EsSUFBQXRFLEVBQUF3RyxRQUFBaEcsU0FHQSxLQUFBa1EsRUFBQTFRLEVBQUFzRSxjQUNBc00sRUFDQUYsRUFBQUMsRUFBQTNRLEVBQUF3RyxRQUFBOUQsZUFDQWlPLEdBQUEzUSxFQUFBd0csUUFBQTlELGdCQUFBMUMsRUFBQXdHLFFBQUEvRCxhQUFBekMsRUFBQXdHLFFBQUE5RCxlQUFBMUMsRUFBQXdHLFFBQUEvRCxpQkFMQW1PLEdBQUEsRUFBQTFHLEtBQUFDLE1BQUFuSyxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsY0FBQXpDLEVBQUF3RyxRQUFBOUQsZUFTQSxPQUFBa08sR0FBQSxHQUlBalIsRUFBQWlJLFVBQUFpSixRQUFBLFNBQUFkLEdBRUEsR0FDQXRHLEdBQ0FxSCxFQUVBQyxFQUNBQyxFQUxBaFIsRUFBQUMsS0FHQWdSLEVBQUEsQ0FrR0EsT0E5RkFqUixHQUFBMkUsWUFBQSxFQUNBbU0sRUFBQTlRLEVBQUF5RSxRQUFBb0gsUUFBQXhDLGFBQUEsR0FFQXJKLEVBQUF3RyxRQUFBNUUsWUFBQSxHQUNBNUIsRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQS9ELGVBQ0F6QyxFQUFBMkUsWUFBQTNFLEVBQUF1RSxXQUFBdkUsRUFBQXdHLFFBQUEvRCxnQkFDQXVPLEtBRUFoUixFQUFBd0csUUFBQXJELFlBQUEsR0FBQW5ELEVBQUF3RyxRQUFBM0YsY0FBQSxJQUNBLElBQUFiLEVBQUF3RyxRQUFBL0QsYUFDQXVPLE9BQ0EsSUFBQWhSLEVBQUF3RyxRQUFBL0QsZUFDQXVPLE9BR0FDLEVBQUFILEVBQUE5USxFQUFBd0csUUFBQS9ELGFBQUF1TyxHQUVBaFIsRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQTlELGlCQUFBLEdBQ0FxTixFQUFBL1AsRUFBQXdHLFFBQUE5RCxlQUFBMUMsRUFBQXNFLFlBQUF0RSxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsZUFDQXNOLEVBQUEvUCxFQUFBc0UsWUFDQXRFLEVBQUEyRSxhQUFBM0UsRUFBQXdHLFFBQUEvRCxjQUFBc04sRUFBQS9QLEVBQUFzRSxhQUFBdEUsRUFBQXVFLGNBQ0EwTSxHQUFBalIsRUFBQXdHLFFBQUEvRCxjQUFBc04sRUFBQS9QLEVBQUFzRSxhQUFBd00sT0FFQTlRLEVBQUEyRSxZQUFBM0UsRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQTlELGVBQUExQyxFQUFBdUUsY0FDQTBNLEVBQUFqUixFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBOUQsZUFBQW9PLFFBS0FmLEVBQUEvUCxFQUFBd0csUUFBQS9ELGFBQUF6QyxFQUFBc0UsYUFDQXRFLEVBQUEyRSxhQUFBb0wsRUFBQS9QLEVBQUF3RyxRQUFBL0QsYUFBQXpDLEVBQUFzRSxZQUFBdEUsRUFBQXVFLFdBQ0EwTSxHQUFBbEIsRUFBQS9QLEVBQUF3RyxRQUFBL0QsYUFBQXpDLEVBQUFzRSxZQUFBd00sR0FJQTlRLEVBQUFzRSxZQUFBdEUsRUFBQXdHLFFBQUEvRCxlQUNBekMsRUFBQTJFLFlBQUEsRUFDQXNNLEVBQUEsR0FHQWpSLEVBQUF3RyxRQUFBM0YsY0FBQSxHQUFBYixFQUFBc0UsWUFBQXRFLEVBQUF3RyxRQUFBL0QsYUFDQXpDLEVBQUEyRSxZQUFBM0UsRUFBQXVFLFdBQUEyRixLQUFBZ0gsTUFBQWxSLEVBQUF3RyxRQUFBL0QsY0FBQSxFQUFBekMsRUFBQXVFLFdBQUF2RSxFQUFBc0UsV0FBQSxFQUNBdEUsRUFBQXdHLFFBQUEzRixjQUFBLEdBQUFiLEVBQUF3RyxRQUFBNUUsWUFBQSxFQUNBNUIsRUFBQTJFLGFBQUEzRSxFQUFBdUUsV0FBQTJGLEtBQUFnSCxNQUFBbFIsRUFBQXdHLFFBQUEvRCxhQUFBLEdBQUF6QyxFQUFBdUUsV0FDQXZFLEVBQUF3RyxRQUFBM0YsY0FBQSxJQUNBYixFQUFBMkUsWUFBQSxFQUNBM0UsRUFBQTJFLGFBQUEzRSxFQUFBdUUsV0FBQTJGLEtBQUFnSCxNQUFBbFIsRUFBQXdHLFFBQUEvRCxhQUFBLElBSUFnSCxFQURBekosRUFBQXdHLFFBQUFyRCxZQUFBLEVBQ0E0TSxFQUFBL1AsRUFBQXVFLGNBQUF2RSxFQUFBMkUsWUFFQW9MLEVBQUFlLEtBQUFHLEVBR0FqUixFQUFBd0csUUFBQXRELGlCQUFBLElBR0E2TixFQURBL1EsRUFBQXNFLFlBQUF0RSxFQUFBd0csUUFBQS9ELGNBQUF6QyxFQUFBd0csUUFBQTVFLFlBQUEsRUFDQTVCLEVBQUF3RSxZQUFBc0UsU0FBQSxnQkFBQUgsR0FBQW9ILEdBRUEvUCxFQUFBd0UsWUFBQXNFLFNBQUEsZ0JBQUFILEdBQUFvSCxFQUFBL1AsRUFBQXdHLFFBQUEvRCxjQUtBZ0gsRUFGQXpKLEVBQUF3RyxRQUFBbEUsT0FBQSxFQUNBeU8sRUFBQSxJQUNBL1EsRUFBQXdFLFlBQUEySSxRQUFBNEQsRUFBQSxHQUFBSSxXQUFBSixFQUFBNUQsWUFFQSxFQUdBNEQsRUFBQSxHQUFBQSxFQUFBLEdBQUFJLGNBQUEsRUFHQW5SLEVBQUF3RyxRQUFBM0YsY0FBQSxJQUVBa1EsRUFEQS9RLEVBQUFzRSxZQUFBdEUsRUFBQXdHLFFBQUEvRCxjQUFBekMsRUFBQXdHLFFBQUE1RSxZQUFBLEVBQ0E1QixFQUFBd0UsWUFBQXNFLFNBQUEsZ0JBQUFILEdBQUFvSCxHQUVBL1AsRUFBQXdFLFlBQUFzRSxTQUFBLGdCQUFBSCxHQUFBb0gsRUFBQS9QLEVBQUF3RyxRQUFBL0QsYUFBQSxHQUtBZ0gsRUFGQXpKLEVBQUF3RyxRQUFBbEUsT0FBQSxFQUNBeU8sRUFBQSxJQUNBL1EsRUFBQXdFLFlBQUEySSxRQUFBNEQsRUFBQSxHQUFBSSxXQUFBSixFQUFBNUQsWUFFQSxFQUdBNEQsRUFBQSxHQUFBQSxFQUFBLEdBQUFJLGNBQUEsRUFHQTFILElBQUF6SixFQUFBOEUsTUFBQXFJLFFBQUE0RCxFQUFBSyxjQUFBLElBSUEzSCxHQUlBOUosRUFBQWlJLFVBQUF5SixVQUFBMVIsRUFBQWlJLFVBQUEwSixlQUFBLFNBQUFDLEdBRUEsR0FBQXZSLEdBQUFDLElBRUEsT0FBQUQsR0FBQXdHLFFBQUErSyxJQUlBNVIsRUFBQWlJLFVBQUFvSCxvQkFBQSxXQUVBLEdBSUF3QyxHQUpBeFIsRUFBQUMsS0FDQXlRLEVBQUEsRUFDQUMsRUFBQSxFQUNBYyxJQVdBLEtBUkF6UixFQUFBd0csUUFBQTVFLFlBQUEsRUFDQTRQLEVBQUF4UixFQUFBc0UsWUFFQW9NLEVBQUExUSxFQUFBd0csUUFBQTlELGtCQUNBaU8sRUFBQTNRLEVBQUF3RyxRQUFBOUQsa0JBQ0E4TyxFQUFBLEVBQUF4UixFQUFBc0UsWUFHQW9NLEVBQUFjLEdBQ0FDLEVBQUFDLEtBQUFoQixHQUNBQSxFQUFBQyxFQUFBM1EsRUFBQXdHLFFBQUE5RCxlQUNBaU8sR0FBQTNRLEVBQUF3RyxRQUFBOUQsZ0JBQUExQyxFQUFBd0csUUFBQS9ELGFBQUF6QyxFQUFBd0csUUFBQTlELGVBQUExQyxFQUFBd0csUUFBQS9ELFlBR0EsT0FBQWdQLElBSUE5UixFQUFBaUksVUFBQStKLFNBQUEsV0FFQSxNQUFBMVIsT0FJQU4sRUFBQWlJLFVBQUFnSyxjQUFBLFdBRUEsR0FDQUMsR0FBQUMsRUFBQUMsRUFEQS9SLEVBQUFDLElBS0EsT0FGQThSLEdBQUEvUixFQUFBd0csUUFBQTNGLGNBQUEsRUFBQWIsRUFBQXVFLFdBQUEyRixLQUFBZ0gsTUFBQWxSLEVBQUF3RyxRQUFBL0QsYUFBQSxHQUFBLEVBRUF6QyxFQUFBd0csUUFBQTNELGdCQUFBLEdBQ0E3QyxFQUFBd0UsWUFBQXNELEtBQUEsZ0JBQUFtQixLQUFBLFNBQUFaLEVBQUE5RixHQUNBLEdBQUFBLEVBQUE0TyxXQUFBWSxFQUFBclMsRUFBQTZDLEdBQUE2TyxhQUFBLEVBQUFwUixFQUFBNEUsYUFFQSxNQURBa04sR0FBQXZQLEdBQ0EsSUFJQXNQLEVBQUEzSCxLQUFBOEgsSUFBQXRTLEVBQUFvUyxHQUFBL0osS0FBQSxvQkFBQS9ILEVBQUE2RCxlQUFBLEdBS0E3RCxFQUFBd0csUUFBQTlELGdCQUtBL0MsRUFBQWlJLFVBQUFxSyxLQUFBdFMsRUFBQWlJLFVBQUFzSyxVQUFBLFNBQUEzUCxFQUFBNkwsR0FFQSxHQUFBcE8sR0FBQUMsSUFFQUQsR0FBQWlILGFBQ0FWLE1BQ0FxSSxRQUFBLFFBQ0F2RyxNQUFBOEosU0FBQTVQLEtBRUE2TCxJQUlBek8sRUFBQWlJLFVBQUFELEtBQUEsU0FBQXlLLEdBRUEsR0FBQXBTLEdBQUFDLElBRUFQLEdBQUFNLEVBQUFnRyxTQUFBcU0sU0FBQSx1QkFFQTNTLEVBQUFNLEVBQUFnRyxTQUFBb0YsU0FBQSxxQkFFQXBMLEVBQUFxTSxZQUNBck0sRUFBQThMLFdBQ0E5TCxFQUFBc1MsV0FDQXRTLEVBQUF1UyxZQUNBdlMsRUFBQXdTLGFBQ0F4UyxFQUFBeVMsbUJBQ0F6UyxFQUFBMFMsZUFDQTFTLEVBQUFtTSxhQUNBbk0sRUFBQXFOLGlCQUFBLEdBQ0FyTixFQUFBcVEsZ0JBSUErQixHQUNBcFMsRUFBQWdHLFFBQUFrSSxRQUFBLFFBQUFsTyxJQUdBQSxFQUFBd0csUUFBQXJHLGlCQUFBLEdBQ0FILEVBQUEyUyxVQUdBM1MsRUFBQXdHLFFBQUE3RixXQUVBWCxFQUFBNEYsUUFBQSxFQUNBNUYsRUFBQTZHLGFBTUFsSCxFQUFBaUksVUFBQStLLFFBQUEsV0FDQSxHQUFBM1MsR0FBQUMsS0FDQTJTLEVBQUExSSxLQUFBQyxLQUFBbkssRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQS9ELGNBQ0FvUSxFQUFBN1MsRUFBQWdQLHNCQUFBb0IsT0FBQSxTQUFBMEMsR0FDQSxNQUFBQSxJQUFBLEdBQUFBLEVBQUE5UyxFQUFBc0UsWUFHQXRFLEdBQUF5RSxRQUFBK0csSUFBQXhMLEVBQUF3RSxZQUFBc0QsS0FBQSxrQkFBQUMsTUFDQUMsY0FBQSxPQUNBQyxTQUFBLE9BQ0FILEtBQUEsNEJBQUFDLE1BQ0FFLFNBQUEsT0FHQSxPQUFBakksRUFBQStELFFBQ0EvRCxFQUFBeUUsUUFBQWtHLElBQUEzSyxFQUFBd0UsWUFBQXNELEtBQUEsa0JBQUFtQixLQUFBLFNBQUEvSCxHQUNBLEdBQUE2UixHQUFBRixFQUFBRyxRQUFBOVIsRUFRQSxJQU5BeEIsRUFBQU8sTUFBQThILE1BQ0FrTCxLQUFBLFdBQ0FDLEdBQUEsY0FBQWxULEVBQUF3SCxZQUFBdEcsRUFDQStHLGNBR0E4SyxPQUFBLENBQ0EsR0FBQUksR0FBQSxzQkFBQW5ULEVBQUF3SCxZQUFBdUwsQ0FDQXJULEdBQUEsSUFBQXlULEdBQUEzSyxRQUNBOUksRUFBQU8sTUFBQThILE1BQ0FxTCxtQkFBQUQsT0FNQW5ULEVBQUErRCxNQUFBZ0UsS0FBQSxPQUFBLFdBQUFELEtBQUEsTUFBQW1CLEtBQUEsU0FBQS9ILEdBQ0EsR0FBQW1TLEdBQUFSLEVBQUEzUixFQUVBeEIsR0FBQU8sTUFBQThILE1BQ0FrTCxLQUFBLGlCQUdBdlQsRUFBQU8sTUFBQTZILEtBQUEsVUFBQStELFFBQUE5RCxNQUNBa0wsS0FBQSxNQUNBQyxHQUFBLHNCQUFBbFQsRUFBQXdILFlBQUF0RyxFQUNBb1MsZ0JBQUEsY0FBQXRULEVBQUF3SCxZQUFBNkwsRUFDQUUsYUFBQXJTLEVBQUEsRUFBQSxPQUFBMFIsRUFDQVksZ0JBQUEsS0FDQXZMLFNBQUEsU0FHQVUsR0FBQTNJLEVBQUE2RCxjQUFBaUUsS0FBQSxVQUFBQyxNQUNBeUwsZ0JBQUEsT0FDQXZMLFNBQUEsTUFDQXdMLE1BR0EsS0FBQSxHQUFBdlMsR0FBQWxCLEVBQUE2RCxhQUFBMk4sRUFBQXRRLEVBQUFsQixFQUFBd0csUUFBQS9ELGFBQUF2QixFQUFBc1EsRUFBQXRRLElBQ0FsQixFQUFBd0csUUFBQTdFLGNBQ0EzQixFQUFBeUUsUUFBQWtFLEdBQUF6SCxHQUFBNkcsTUFBQUUsU0FBQSxNQUVBakksRUFBQXlFLFFBQUFrRSxHQUFBekgsR0FBQW9LLFdBQUEsV0FJQXRMLEdBQUE2SCxlQUlBbEksRUFBQWlJLFVBQUE4TCxnQkFBQSxXQUVBLEdBQUExVCxHQUFBQyxJQUVBRCxHQUFBd0csUUFBQWpHLFVBQUEsR0FBQVAsRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQS9ELGVBQ0F6QyxFQUFBb0UsV0FDQStLLElBQUEsZUFDQW1CLEdBQUEsZUFDQTFCLFFBQUEsWUFDQTVPLEVBQUFpSCxhQUNBakgsRUFBQW1FLFdBQ0FnTCxJQUFBLGVBQ0FtQixHQUFBLGVBQ0ExQixRQUFBLFFBQ0E1TyxFQUFBaUgsYUFFQWpILEVBQUF3RyxRQUFBckcsaUJBQUEsSUFDQUgsRUFBQW9FLFdBQUFrTSxHQUFBLGdCQUFBdFEsRUFBQXVILFlBQ0F2SCxFQUFBbUUsV0FBQW1NLEdBQUEsZ0JBQUF0USxFQUFBdUgsZUFNQTVILEVBQUFpSSxVQUFBK0wsY0FBQSxXQUVBLEdBQUEzVCxHQUFBQyxJQUVBRCxHQUFBd0csUUFBQXBGLFFBQUEsR0FBQXBCLEVBQUFzRSxXQUFBdEUsRUFBQXdHLFFBQUEvRCxlQUNBL0MsRUFBQSxLQUFBTSxFQUFBK0QsT0FBQXVNLEdBQUEsZUFDQTFCLFFBQUEsU0FDQTVPLEVBQUFpSCxhQUVBakgsRUFBQXdHLFFBQUFyRyxpQkFBQSxHQUNBSCxFQUFBK0QsTUFBQXVNLEdBQUEsZ0JBQUF0USxFQUFBdUgsYUFJQXZILEVBQUF3RyxRQUFBcEYsUUFBQSxHQUFBcEIsRUFBQXdHLFFBQUF0RSxvQkFBQSxHQUFBbEMsRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQS9ELGNBRUEvQyxFQUFBLEtBQUFNLEVBQUErRCxPQUNBdU0sR0FBQSxtQkFBQTVRLEVBQUFvSCxNQUFBOUcsRUFBQW9QLFVBQUFwUCxHQUFBLElBQ0FzUSxHQUFBLG1CQUFBNVEsRUFBQW9ILE1BQUE5RyxFQUFBb1AsVUFBQXBQLEdBQUEsS0FNQUwsRUFBQWlJLFVBQUFnTSxnQkFBQSxXQUVBLEdBQUE1VCxHQUFBQyxJQUVBRCxHQUFBd0csUUFBQXhFLGVBRUFoQyxFQUFBOEUsTUFBQXdMLEdBQUEsbUJBQUE1USxFQUFBb0gsTUFBQTlHLEVBQUFvUCxVQUFBcFAsR0FBQSxJQUNBQSxFQUFBOEUsTUFBQXdMLEdBQUEsbUJBQUE1USxFQUFBb0gsTUFBQTlHLEVBQUFvUCxVQUFBcFAsR0FBQSxNQU1BTCxFQUFBaUksVUFBQTZLLGlCQUFBLFdBRUEsR0FBQXpTLEdBQUFDLElBRUFELEdBQUEwVCxrQkFFQTFULEVBQUEyVCxnQkFDQTNULEVBQUE0VCxrQkFFQTVULEVBQUE4RSxNQUFBd0wsR0FBQSxvQ0FDQXVELE9BQUEsU0FDQTdULEVBQUFxSCxjQUNBckgsRUFBQThFLE1BQUF3TCxHQUFBLG1DQUNBdUQsT0FBQSxRQUNBN1QsRUFBQXFILGNBQ0FySCxFQUFBOEUsTUFBQXdMLEdBQUEsZ0NBQ0F1RCxPQUFBLE9BQ0E3VCxFQUFBcUgsY0FDQXJILEVBQUE4RSxNQUFBd0wsR0FBQSxzQ0FDQXVELE9BQUEsT0FDQTdULEVBQUFxSCxjQUVBckgsRUFBQThFLE1BQUF3TCxHQUFBLGNBQUF0USxFQUFBa0gsY0FFQXhILEVBQUFnSCxVQUFBNEosR0FBQXRRLEVBQUFvRyxpQkFBQTFHLEVBQUFvSCxNQUFBOUcsRUFBQXFQLFdBQUFyUCxJQUVBQSxFQUFBd0csUUFBQXJHLGlCQUFBLEdBQ0FILEVBQUE4RSxNQUFBd0wsR0FBQSxnQkFBQXRRLEVBQUF1SCxZQUdBdkgsRUFBQXdHLFFBQUE5RSxpQkFBQSxHQUNBaEMsRUFBQU0sRUFBQXdFLGFBQUFzRSxXQUFBd0gsR0FBQSxjQUFBdFEsRUFBQW1ILGVBR0F6SCxFQUFBRSxRQUFBMFEsR0FBQSxpQ0FBQXRRLEVBQUF3SCxZQUFBOUgsRUFBQW9ILE1BQUE5RyxFQUFBdVAsa0JBQUF2UCxJQUVBTixFQUFBRSxRQUFBMFEsR0FBQSxzQkFBQXRRLEVBQUF3SCxZQUFBOUgsRUFBQW9ILE1BQUE5RyxFQUFBd1AsT0FBQXhQLElBRUFOLEVBQUEsb0JBQUFNLEVBQUF3RSxhQUFBOEwsR0FBQSxZQUFBdFEsRUFBQTBPLGdCQUVBaFAsRUFBQUUsUUFBQTBRLEdBQUEsb0JBQUF0USxFQUFBd0gsWUFBQXhILEVBQUFvSCxhQUNBMUgsRUFBQU0sRUFBQW9ILGNBSUF6SCxFQUFBaUksVUFBQWtNLE9BQUEsV0FFQSxHQUFBOVQsR0FBQUMsSUFFQUQsR0FBQXdHLFFBQUFqRyxVQUFBLEdBQUFQLEVBQUFzRSxXQUFBdEUsRUFBQXdHLFFBQUEvRCxlQUVBekMsRUFBQW9FLFdBQUEyUCxPQUNBL1QsRUFBQW1FLFdBQUE0UCxRQUlBL1QsRUFBQXdHLFFBQUFwRixRQUFBLEdBQUFwQixFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsY0FFQXpDLEVBQUErRCxNQUFBZ1EsUUFNQXBVLEVBQUFpSSxVQUFBTCxXQUFBLFNBQUE0RyxHQUVBLEdBQUFuTyxHQUFBQyxJQUVBa08sR0FBQXZELE9BQUFvSixRQUFBQyxNQUFBLDJCQUNBLEtBQUE5RixFQUFBK0YsU0FBQWxVLEVBQUF3RyxRQUFBckcsaUJBQUEsRUFDQUgsRUFBQWlILGFBQ0FWLE1BQ0FxSSxRQUFBNU8sRUFBQXdHLFFBQUFsRSxPQUFBLEVBQUEsT0FBQSxjQUdBLEtBQUE2TCxFQUFBK0YsU0FBQWxVLEVBQUF3RyxRQUFBckcsaUJBQUEsR0FDQUgsRUFBQWlILGFBQ0FWLE1BQ0FxSSxRQUFBNU8sRUFBQXdHLFFBQUFsRSxPQUFBLEVBQUEsV0FBQSxZQVFBM0MsRUFBQWlJLFVBQUE5RixTQUFBLFdBS0EsUUFBQXFTLEdBQUFDLEdBRUExVSxFQUFBLGlCQUFBMFUsR0FBQW5MLEtBQUEsV0FFQSxHQUFBb0wsR0FBQTNVLEVBQUFPLE1BQ0FxVSxFQUFBNVUsRUFBQU8sTUFBQThILEtBQUEsYUFDQXdNLEVBQUE3VSxFQUFBTyxNQUFBOEgsS0FBQSxlQUNBeU0sRUFBQTlVLEVBQUFPLE1BQUE4SCxLQUFBLGVBQUEvSCxFQUFBZ0csUUFBQStCLEtBQUEsY0FDQTBNLEVBQUEvTixTQUFBb0csY0FBQSxNQUVBMkgsR0FBQUMsT0FBQSxXQUVBTCxFQUNBL0ssU0FBQTBHLFFBQUEsR0FBQSxJQUFBLFdBRUF1RSxJQUNBRixFQUNBdE0sS0FBQSxTQUFBd00sR0FFQUMsR0FDQUgsRUFDQXRNLEtBQUEsUUFBQXlNLElBSUFILEVBQ0F0TSxLQUFBLE1BQUF1TSxHQUNBaEwsU0FBQTBHLFFBQUEsR0FBQSxJQUFBLFdBQ0FxRSxFQUNBL0ksV0FBQSxvQ0FDQUQsWUFBQSxtQkFFQXJMLEVBQUFnRyxRQUFBa0ksUUFBQSxjQUFBbE8sRUFBQXFVLEVBQUFDLE9BS0FHLEVBQUFFLFFBQUEsV0FFQU4sRUFDQS9JLFdBQUEsYUFDQUQsWUFBQSxpQkFDQUQsU0FBQSx3QkFFQXBMLEVBQUFnRyxRQUFBa0ksUUFBQSxpQkFBQWxPLEVBQUFxVSxFQUFBQyxLQUlBRyxFQUFBRyxJQUFBTixJQW5EQSxHQUNBTyxHQUFBQyxFQUFBQyxFQUFBQyxFQURBaFYsRUFBQUMsSUE0RUEsSUFuQkFELEVBQUF3RyxRQUFBM0YsY0FBQSxFQUNBYixFQUFBd0csUUFBQTVFLFlBQUEsR0FDQW1ULEVBQUEvVSxFQUFBNkQsY0FBQTdELEVBQUF3RyxRQUFBL0QsYUFBQSxFQUFBLEdBQ0F1UyxFQUFBRCxFQUFBL1UsRUFBQXdHLFFBQUEvRCxhQUFBLElBRUFzUyxFQUFBN0ssS0FBQXNILElBQUEsRUFBQXhSLEVBQUE2RCxjQUFBN0QsRUFBQXdHLFFBQUEvRCxhQUFBLEVBQUEsSUFDQXVTLEVBQUEsR0FBQWhWLEVBQUF3RyxRQUFBL0QsYUFBQSxFQUFBLEdBQUF6QyxFQUFBNkQsZUFHQWtSLEVBQUEvVSxFQUFBd0csUUFBQTVFLFNBQUE1QixFQUFBd0csUUFBQS9ELGFBQUF6QyxFQUFBNkQsYUFBQTdELEVBQUE2RCxhQUNBbVIsRUFBQTlLLEtBQUFDLEtBQUE0SyxFQUFBL1UsRUFBQXdHLFFBQUEvRCxjQUNBekMsRUFBQXdHLFFBQUEvRSxRQUFBLElBQ0FzVCxFQUFBLEdBQUFBLElBQ0FDLEdBQUFoVixFQUFBc0UsWUFBQTBRLE1BSUFILEVBQUE3VSxFQUFBZ0csUUFBQThCLEtBQUEsZ0JBQUFtTixNQUFBRixFQUFBQyxHQUVBLGdCQUFBaFYsRUFBQXdHLFFBQUExRSxTQUtBLElBQUEsR0FKQW9ULEdBQUFILEVBQUEsRUFDQUksRUFBQUgsRUFDQXZRLEVBQUF6RSxFQUFBZ0csUUFBQThCLEtBQUEsZ0JBRUE1RyxFQUFBLEVBQUFBLEVBQUFsQixFQUFBd0csUUFBQTlELGVBQUF4QixJQUNBZ1UsRUFBQSxJQUFBQSxFQUFBbFYsRUFBQXNFLFdBQUEsR0FDQXVRLEVBQUFBLEVBQUFySixJQUFBL0csRUFBQWtFLEdBQUF1TSxJQUNBTCxFQUFBQSxFQUFBckosSUFBQS9HLEVBQUFrRSxHQUFBd00sSUFDQUQsSUFDQUMsR0FJQWhCLEdBQUFVLEdBRUE3VSxFQUFBc0UsWUFBQXRFLEVBQUF3RyxRQUFBL0QsY0FDQXFTLEVBQUE5VSxFQUFBZ0csUUFBQThCLEtBQUEsZ0JBQ0FxTSxFQUFBVyxJQUVBOVUsRUFBQTZELGNBQUE3RCxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsY0FDQXFTLEVBQUE5VSxFQUFBZ0csUUFBQThCLEtBQUEsaUJBQUFtTixNQUFBLEVBQUFqVixFQUFBd0csUUFBQS9ELGNBQ0EwUixFQUFBVyxJQUNBLElBQUE5VSxFQUFBNkQsZUFDQWlSLEVBQUE5VSxFQUFBZ0csUUFBQThCLEtBQUEsaUJBQUFtTixNQUFBalYsRUFBQXdHLFFBQUEvRCxpQkFDQTBSLEVBQUFXLEtBS0FuVixFQUFBaUksVUFBQTRLLFdBQUEsV0FFQSxHQUFBeFMsR0FBQUMsSUFFQUQsR0FBQW9ILGNBRUFwSCxFQUFBd0UsWUFBQTRGLEtBQ0E0RixRQUFBLElBR0FoUSxFQUFBZ0csUUFBQXFGLFlBQUEsaUJBRUFyTCxFQUFBOFQsU0FFQSxnQkFBQTlULEVBQUF3RyxRQUFBMUUsVUFDQTlCLEVBQUFvVix1QkFLQXpWLEVBQUFpSSxVQUFBeU4sS0FBQTFWLEVBQUFpSSxVQUFBME4sVUFBQSxXQUVBLEdBQUF0VixHQUFBQyxJQUVBRCxHQUFBaUgsYUFDQVYsTUFDQXFJLFFBQUEsV0FNQWpQLEVBQUFpSSxVQUFBMkgsa0JBQUEsV0FFQSxHQUFBdlAsR0FBQUMsSUFFQUQsR0FBQXFOLGtCQUNBck4sRUFBQW9ILGVBSUF6SCxFQUFBaUksVUFBQTJOLE1BQUE1VixFQUFBaUksVUFBQTROLFdBQUEsV0FFQSxHQUFBeFYsR0FBQUMsSUFFQUQsR0FBQStHLGdCQUNBL0csRUFBQTRGLFFBQUEsR0FJQWpHLEVBQUFpSSxVQUFBNk4sS0FBQTlWLEVBQUFpSSxVQUFBOE4sVUFBQSxXQUVBLEdBQUExVixHQUFBQyxJQUVBRCxHQUFBNkcsV0FDQTdHLEVBQUF3RyxRQUFBN0YsVUFBQSxFQUNBWCxFQUFBNEYsUUFBQSxFQUNBNUYsRUFBQXlGLFVBQUEsRUFDQXpGLEVBQUEwRixhQUFBLEdBSUEvRixFQUFBaUksVUFBQStOLFVBQUEsU0FBQXROLEdBRUEsR0FBQXJJLEdBQUFDLElBRUEsS0FBQUQsRUFBQWlGLFlBRUFqRixFQUFBZ0csUUFBQWtJLFFBQUEsZUFBQWxPLEVBQUFxSSxJQUVBckksRUFBQXdELFdBQUEsRUFFQXhELEVBQUFzRSxXQUFBdEUsRUFBQXdHLFFBQUEvRCxjQUNBekMsRUFBQW9ILGNBR0FwSCxFQUFBNEUsVUFBQSxLQUVBNUUsRUFBQXdHLFFBQUE3RixVQUNBWCxFQUFBNkcsV0FHQTdHLEVBQUF3RyxRQUFBckcsaUJBQUEsSUFDQUgsRUFBQTJTLFVBRUEzUyxFQUFBd0csUUFBQTdFLGdCQUFBLENBQ0EsR0FBQWlVLEdBQUFsVyxFQUFBTSxFQUFBeUUsUUFBQXVJLElBQUFoTixFQUFBNkQsY0FDQStSLEdBQUE3TixLQUFBLFdBQUEsR0FBQThOLFVBUUFsVyxFQUFBaUksVUFBQWtPLEtBQUFuVyxFQUFBaUksVUFBQW1PLFVBQUEsV0FFQSxHQUFBL1YsR0FBQUMsSUFFQUQsR0FBQWlILGFBQ0FWLE1BQ0FxSSxRQUFBLGVBTUFqUCxFQUFBaUksVUFBQThHLGVBQUEsU0FBQVAsR0FFQUEsRUFBQU8sa0JBSUEvTyxFQUFBaUksVUFBQXdOLG9CQUFBLFNBQUFZLEdBRUFBLEVBQUFBLEdBQUEsQ0FFQSxJQUVBM0IsR0FDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFOQXpVLEVBQUFDLEtBQ0FnVyxFQUFBdlcsRUFBQSxpQkFBQU0sRUFBQWdHLFFBT0FpUSxHQUFBek4sUUFFQTZMLEVBQUE0QixFQUFBcEssUUFDQXlJLEVBQUFELEVBQUF0TSxLQUFBLGFBQ0F3TSxFQUFBRixFQUFBdE0sS0FBQSxlQUNBeU0sRUFBQUgsRUFBQXRNLEtBQUEsZUFBQS9ILEVBQUFnRyxRQUFBK0IsS0FBQSxjQUNBME0sRUFBQS9OLFNBQUFvRyxjQUFBLE9BRUEySCxFQUFBQyxPQUFBLFdBRUFILElBQ0FGLEVBQ0F0TSxLQUFBLFNBQUF3TSxHQUVBQyxHQUNBSCxFQUNBdE0sS0FBQSxRQUFBeU0sSUFJQUgsRUFDQXRNLEtBQUEsTUFBQXVNLEdBQ0FoSixXQUFBLG9DQUNBRCxZQUFBLGlCQUVBckwsRUFBQXdHLFFBQUFwRyxrQkFBQSxHQUNBSixFQUFBb0gsY0FHQXBILEVBQUFnRyxRQUFBa0ksUUFBQSxjQUFBbE8sRUFBQXFVLEVBQUFDLElBQ0F0VSxFQUFBb1YsdUJBSUFYLEVBQUFFLFFBQUEsV0FFQXFCLEVBQUEsRUFPQXhMLFdBQUEsV0FDQXhLLEVBQUFvVixvQkFBQVksRUFBQSxJQUNBLE1BSUEzQixFQUNBL0ksV0FBQSxhQUNBRCxZQUFBLGlCQUNBRCxTQUFBLHdCQUVBcEwsRUFBQWdHLFFBQUFrSSxRQUFBLGlCQUFBbE8sRUFBQXFVLEVBQUFDLElBRUF0VSxFQUFBb1Ysd0JBTUFYLEVBQUFHLElBQUFOLEdBSUF0VSxFQUFBZ0csUUFBQWtJLFFBQUEsbUJBQUFsTyxLQU1BTCxFQUFBaUksVUFBQXFHLFFBQUEsU0FBQWlJLEdBRUEsR0FBQXJTLEdBQUFzUyxFQUFBblcsRUFBQUMsSUFFQWtXLEdBQUFuVyxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsY0FJQXpDLEVBQUF3RyxRQUFBNUUsVUFBQTVCLEVBQUE2RCxhQUFBc1MsSUFDQW5XLEVBQUE2RCxhQUFBc1MsR0FJQW5XLEVBQUFzRSxZQUFBdEUsRUFBQXdHLFFBQUEvRCxlQUNBekMsRUFBQTZELGFBQUEsR0FJQUEsRUFBQTdELEVBQUE2RCxhQUVBN0QsRUFBQTRQLFNBQUEsR0FFQWxRLEVBQUF3RixPQUFBbEYsRUFBQUEsRUFBQXVELFVBQUFNLGFBQUFBLElBRUE3RCxFQUFBMkgsT0FFQXVPLEdBRUFsVyxFQUFBaUgsYUFDQVYsTUFDQXFJLFFBQUEsUUFDQXZHLE1BQUF4RSxLQUVBLElBTUFsRSxFQUFBaUksVUFBQUYsb0JBQUEsV0FFQSxHQUFBOEYsR0FBQTRJLEVBQUFDLEVBQUFyVyxFQUFBQyxLQUNBcVcsRUFBQXRXLEVBQUF3RyxRQUFBcEUsWUFBQSxJQUVBLElBQUEsVUFBQTFDLEVBQUE2VyxLQUFBRCxJQUFBQSxFQUFBOU4sT0FBQSxDQUVBeEksRUFBQW1DLFVBQUFuQyxFQUFBd0csUUFBQXJFLFdBQUEsUUFFQSxLQUFBcUwsSUFBQThJLEdBSUEsR0FGQUQsRUFBQXJXLEVBQUFzRixZQUFBa0QsT0FBQSxFQUVBOE4sRUFBQXZJLGVBQUFQLEdBQUEsQ0FLQSxJQUpBNEksRUFBQUUsRUFBQTlJLEdBQUFBLFdBSUE2SSxHQUFBLEdBQ0FyVyxFQUFBc0YsWUFBQStRLElBQUFyVyxFQUFBc0YsWUFBQStRLEtBQUFELEdBQ0FwVyxFQUFBc0YsWUFBQWtSLE9BQUFILEVBQUEsR0FFQUEsR0FHQXJXLEdBQUFzRixZQUFBb00sS0FBQTBFLEdBQ0FwVyxFQUFBdUYsbUJBQUE2USxHQUFBRSxFQUFBOUksR0FBQTFOLFNBTUFFLEVBQUFzRixZQUFBbVIsS0FBQSxTQUFBbkssRUFBQUMsR0FDQSxNQUFBdk0sR0FBQXdHLFFBQUEsWUFBQThGLEVBQUFDLEVBQUFBLEVBQUFELE1BT0EzTSxFQUFBaUksVUFBQXNCLE9BQUEsV0FFQSxHQUFBbEosR0FBQUMsSUFFQUQsR0FBQXlFLFFBQ0F6RSxFQUFBd0UsWUFDQXNFLFNBQUE5SSxFQUFBd0csUUFBQWpFLE9BQ0E2SSxTQUFBLGVBRUFwTCxFQUFBc0UsV0FBQXRFLEVBQUF5RSxRQUFBK0QsT0FFQXhJLEVBQUE2RCxjQUFBN0QsRUFBQXNFLFlBQUEsSUFBQXRFLEVBQUE2RCxlQUNBN0QsRUFBQTZELGFBQUE3RCxFQUFBNkQsYUFBQTdELEVBQUF3RyxRQUFBOUQsZ0JBR0ExQyxFQUFBc0UsWUFBQXRFLEVBQUF3RyxRQUFBL0QsZUFDQXpDLEVBQUE2RCxhQUFBLEdBR0E3RCxFQUFBMEgsc0JBRUExSCxFQUFBc1MsV0FDQXRTLEVBQUFrTSxnQkFDQWxNLEVBQUFtTCxjQUNBbkwsRUFBQTBTLGVBQ0ExUyxFQUFBMFQsa0JBQ0ExVCxFQUFBMEwsWUFDQTFMLEVBQUFtTSxhQUNBbk0sRUFBQTJULGdCQUNBM1QsRUFBQXNQLHFCQUNBdFAsRUFBQTRULGtCQUVBNVQsRUFBQXFOLGlCQUFBLEdBQUEsR0FFQXJOLEVBQUF3RyxRQUFBOUUsaUJBQUEsR0FDQWhDLEVBQUFNLEVBQUF3RSxhQUFBc0UsV0FBQXdILEdBQUEsY0FBQXRRLEVBQUFtSCxlQUdBbkgsRUFBQW9NLGdCQUFBLGdCQUFBcE0sR0FBQTZELGFBQUE3RCxFQUFBNkQsYUFBQSxHQUVBN0QsRUFBQW9ILGNBQ0FwSCxFQUFBcVEsZUFFQXJRLEVBQUE0RixRQUFBNUYsRUFBQXdHLFFBQUE3RixTQUNBWCxFQUFBNkcsV0FFQTdHLEVBQUFnRyxRQUFBa0ksUUFBQSxVQUFBbE8sS0FJQUwsRUFBQWlJLFVBQUE0SCxPQUFBLFdBRUEsR0FBQXhQLEdBQUFDLElBRUFQLEdBQUFFLFFBQUF1TixVQUFBbk4sRUFBQXFHLGNBQ0FxUSxhQUFBMVcsRUFBQTJXLGFBQ0EzVyxFQUFBMlcsWUFBQS9XLE9BQUE0SyxXQUFBLFdBQ0F4SyxFQUFBcUcsWUFBQTNHLEVBQUFFLFFBQUF1TixRQUNBbk4sRUFBQXFOLGtCQUNBck4sRUFBQWlGLFdBQUFqRixFQUFBb0gsZUFDQSxNQUlBekgsRUFBQWlJLFVBQUFnUCxZQUFBalgsRUFBQWlJLFVBQUFpUCxZQUFBLFNBQUF4TyxFQUFBeU8sRUFBQUMsR0FFQSxHQUFBL1csR0FBQUMsSUFTQSxPQVBBLGlCQUFBLElBQ0E2VyxFQUFBek8sRUFDQUEsRUFBQXlPLEtBQUEsRUFBQSxFQUFBOVcsRUFBQXNFLFdBQUEsR0FFQStELEVBQUF5TyxLQUFBLElBQUF6TyxFQUFBQSxJQUdBckksRUFBQXNFLFdBQUEsR0FBQStELEVBQUEsR0FBQUEsRUFBQXJJLEVBQUFzRSxXQUFBLEtBSUF0RSxFQUFBdUksU0FFQXdPLEtBQUEsRUFDQS9XLEVBQUF3RSxZQUFBc0UsV0FBQStHLFNBRUE3UCxFQUFBd0UsWUFBQXNFLFNBQUE3SSxLQUFBdUcsUUFBQWpFLE9BQUFvRyxHQUFBTixHQUFBd0gsU0FHQTdQLEVBQUF5RSxRQUFBekUsRUFBQXdFLFlBQUFzRSxTQUFBN0ksS0FBQXVHLFFBQUFqRSxPQUVBdkMsRUFBQXdFLFlBQUFzRSxTQUFBN0ksS0FBQXVHLFFBQUFqRSxPQUFBd0csU0FFQS9JLEVBQUF3RSxZQUFBd0UsT0FBQWhKLEVBQUF5RSxTQUVBekUsRUFBQWlHLGFBQUFqRyxFQUFBeUUsWUFFQXpFLEdBQUFrSixXQUlBdkosRUFBQWlJLFVBQUFvUCxPQUFBLFNBQUFDLEdBRUEsR0FFQUMsR0FBQUMsRUFGQW5YLEVBQUFDLEtBQ0FtWCxJQUdBcFgsR0FBQXdHLFFBQUFsRSxPQUFBLElBQ0EyVSxHQUFBQSxHQUVBQyxFQUFBLFFBQUFsWCxFQUFBNkYsYUFBQXFFLEtBQUFDLEtBQUE4TSxHQUFBLEtBQUEsTUFDQUUsRUFBQSxPQUFBblgsRUFBQTZGLGFBQUFxRSxLQUFBQyxLQUFBOE0sR0FBQSxLQUFBLE1BRUFHLEVBQUFwWCxFQUFBNkYsY0FBQW9SLEVBRUFqWCxFQUFBZ0YscUJBQUEsRUFDQWhGLEVBQUF3RSxZQUFBNEYsSUFBQWdOLElBRUFBLEtBQ0FwWCxFQUFBd0Ysa0JBQUEsR0FDQTRSLEVBQUFwWCxFQUFBb0YsVUFBQSxhQUFBOFIsRUFBQSxLQUFBQyxFQUFBLElBQ0FuWCxFQUFBd0UsWUFBQTRGLElBQUFnTixLQUVBQSxFQUFBcFgsRUFBQW9GLFVBQUEsZUFBQThSLEVBQUEsS0FBQUMsRUFBQSxTQUNBblgsRUFBQXdFLFlBQUE0RixJQUFBZ04sTUFNQXpYLEVBQUFpSSxVQUFBeVAsY0FBQSxXQUVBLEdBQUFyWCxHQUFBQyxJQUVBRCxHQUFBd0csUUFBQXJELFlBQUEsRUFDQW5ELEVBQUF3RyxRQUFBM0YsY0FBQSxHQUNBYixFQUFBOEUsTUFBQXNGLEtBQ0FrTixRQUFBLE9BQUF0WCxFQUFBd0csUUFBQTFGLGlCQUlBZCxFQUFBOEUsTUFBQXlFLE9BQUF2SixFQUFBeUUsUUFBQW9ILFFBQUF4QyxhQUFBLEdBQUFySixFQUFBd0csUUFBQS9ELGNBQ0F6QyxFQUFBd0csUUFBQTNGLGNBQUEsR0FDQWIsRUFBQThFLE1BQUFzRixLQUNBa04sUUFBQXRYLEVBQUF3RyxRQUFBMUYsY0FBQSxVQUtBZCxFQUFBZ0UsVUFBQWhFLEVBQUE4RSxNQUFBcUksUUFDQW5OLEVBQUFpRSxXQUFBakUsRUFBQThFLE1BQUF5RSxTQUdBdkosRUFBQXdHLFFBQUFyRCxZQUFBLEdBQUFuRCxFQUFBd0csUUFBQXRELGlCQUFBLEdBQ0FsRCxFQUFBdUUsV0FBQTJGLEtBQUFDLEtBQUFuSyxFQUFBZ0UsVUFBQWhFLEVBQUF3RyxRQUFBL0QsY0FDQXpDLEVBQUF3RSxZQUFBMkksTUFBQWpELEtBQUFDLEtBQUFuSyxFQUFBdUUsV0FBQXZFLEVBQUF3RSxZQUFBc0UsU0FBQSxnQkFBQU4sVUFFQXhJLEVBQUF3RyxRQUFBdEQsaUJBQUEsRUFDQWxELEVBQUF3RSxZQUFBMkksTUFBQSxJQUFBbk4sRUFBQXNFLGFBRUF0RSxFQUFBdUUsV0FBQTJGLEtBQUFDLEtBQUFuSyxFQUFBZ0UsV0FDQWhFLEVBQUF3RSxZQUFBK0UsT0FBQVcsS0FBQUMsS0FBQW5LLEVBQUF5RSxRQUFBb0gsUUFBQXhDLGFBQUEsR0FBQXJKLEVBQUF3RSxZQUFBc0UsU0FBQSxnQkFBQU4sU0FHQSxJQUFBK08sR0FBQXZYLEVBQUF5RSxRQUFBb0gsUUFBQXVGLFlBQUEsR0FBQXBSLEVBQUF5RSxRQUFBb0gsUUFBQXNCLE9BQ0FuTixHQUFBd0csUUFBQXRELGlCQUFBLEdBQUFsRCxFQUFBd0UsWUFBQXNFLFNBQUEsZ0JBQUFxRSxNQUFBbk4sRUFBQXVFLFdBQUFnVCxJQUlBNVgsRUFBQWlJLFVBQUE0UCxRQUFBLFdBRUEsR0FDQS9OLEdBREF6SixFQUFBQyxJQUdBRCxHQUFBeUUsUUFBQXdFLEtBQUEsU0FBQVosRUFBQXhJLEdBQ0E0SixFQUFBekosRUFBQXVFLFdBQUE4RCxLQUNBckksRUFBQXdHLFFBQUFsRSxPQUFBLEVBQ0E1QyxFQUFBRyxHQUFBdUssS0FDQTZNLFNBQUEsV0FDQVEsTUFBQWhPLEVBQ0FJLElBQUEsRUFDQXZHLE9BQUF0RCxFQUFBd0csUUFBQWxELE9BQUEsRUFDQTBNLFFBQUEsSUFHQXRRLEVBQUFHLEdBQUF1SyxLQUNBNk0sU0FBQSxXQUNBck4sS0FBQUgsRUFDQUksSUFBQSxFQUNBdkcsT0FBQXRELEVBQUF3RyxRQUFBbEQsT0FBQSxFQUNBME0sUUFBQSxNQUtBaFEsRUFBQXlFLFFBQUFrRSxHQUFBM0ksRUFBQTZELGNBQUF1RyxLQUNBOUcsT0FBQXRELEVBQUF3RyxRQUFBbEQsT0FBQSxFQUNBME0sUUFBQSxLQUtBclEsRUFBQWlJLFVBQUE4UCxVQUFBLFdBRUEsR0FBQTFYLEdBQUFDLElBRUEsSUFBQSxJQUFBRCxFQUFBd0csUUFBQS9ELGNBQUF6QyxFQUFBd0csUUFBQXBHLGtCQUFBLEdBQUFKLEVBQUF3RyxRQUFBckQsWUFBQSxFQUFBLENBQ0EsR0FBQWlHLEdBQUFwSixFQUFBeUUsUUFBQWtFLEdBQUEzSSxFQUFBNkQsY0FBQXdGLGFBQUEsRUFDQXJKLEdBQUE4RSxNQUFBc0YsSUFBQSxTQUFBaEIsS0FLQXpKLEVBQUFpSSxVQUFBK1AsVUFDQWhZLEVBQUFpSSxVQUFBZ1EsZUFBQSxXQWVBLEdBQUF2QixHQUFBd0IsRUFBQXRHLEVBQUF1RyxFQUFBdkIsRUFBQXZXLEVBQUFDLEtBQUFnTyxHQUFBLENBMEJBLElBeEJBLFdBQUF2TyxFQUFBNlcsS0FBQXdCLFVBQUEsS0FFQXhHLEVBQUF3RyxVQUFBLEdBQ0E5SixFQUFBOEosVUFBQSxHQUNBeEIsRUFBQSxZQUVBLFdBQUE3VyxFQUFBNlcsS0FBQXdCLFVBQUEsTUFFQXhHLEVBQUF3RyxVQUFBLEdBQ0FELEVBQUFDLFVBQUEsR0FDQTlKLEVBQUE4SixVQUFBLEdBRUEsZUFBQUEsVUFBQSxJQUFBLFVBQUFyWSxFQUFBNlcsS0FBQXdCLFVBQUEsSUFFQXhCLEVBQUEsYUFFQSxtQkFBQXdCLFdBQUEsS0FFQXhCLEVBQUEsV0FNQSxXQUFBQSxFQUVBdlcsRUFBQXdHLFFBQUErSyxHQUFBdUcsTUFHQSxJQUFBLGFBQUF2QixFQUVBN1csRUFBQXVKLEtBQUFzSSxFQUFBLFNBQUF5RyxFQUFBbEYsR0FFQTlTLEVBQUF3RyxRQUFBd1IsR0FBQWxGLFFBS0EsSUFBQSxlQUFBeUQsRUFFQSxJQUFBc0IsSUFBQUMsR0FFQSxHQUFBLFVBQUFwWSxFQUFBNlcsS0FBQXZXLEVBQUF3RyxRQUFBcEUsWUFFQXBDLEVBQUF3RyxRQUFBcEUsWUFBQTBWLEVBQUFELFFBRUEsQ0FLQSxJQUhBeEIsRUFBQXJXLEVBQUF3RyxRQUFBcEUsV0FBQW9HLE9BQUEsRUFHQTZOLEdBQUEsR0FFQXJXLEVBQUF3RyxRQUFBcEUsV0FBQWlVLEdBQUE3SSxhQUFBc0ssRUFBQUQsR0FBQXJLLFlBRUF4TixFQUFBd0csUUFBQXBFLFdBQUFvVSxPQUFBSCxFQUFBLEdBSUFBLEdBSUFyVyxHQUFBd0csUUFBQXBFLFdBQUFzUCxLQUFBb0csRUFBQUQsSUFRQTVKLElBRUFqTyxFQUFBdUksU0FDQXZJLEVBQUFrSixXQU1BdkosRUFBQWlJLFVBQUFSLFlBQUEsV0FFQSxHQUFBcEgsR0FBQUMsSUFFQUQsR0FBQXFYLGdCQUVBclgsRUFBQTBYLFlBRUExWCxFQUFBd0csUUFBQS9FLFFBQUEsRUFDQXpCLEVBQUFnWCxPQUFBaFgsRUFBQTZRLFFBQUE3USxFQUFBNkQsZUFFQTdELEVBQUF3WCxVQUdBeFgsRUFBQWdHLFFBQUFrSSxRQUFBLGVBQUFsTyxLQUlBTCxFQUFBaUksVUFBQTBLLFNBQUEsV0FFQSxHQUFBdFMsR0FBQUMsS0FDQWdZLEVBQUF2UixTQUFBd1IsS0FBQUMsS0FFQW5ZLEdBQUE2RixhQUFBN0YsRUFBQXdHLFFBQUFyRCxZQUFBLEVBQUEsTUFBQSxPQUVBLFFBQUFuRCxFQUFBNkYsYUFDQTdGLEVBQUFnRyxRQUFBb0YsU0FBQSxrQkFFQXBMLEVBQUFnRyxRQUFBcUYsWUFBQTtBQUdBK00sU0FBQUgsRUFBQUksa0JBQ0FELFNBQUFILEVBQUFLLGVBQ0FGLFNBQUFILEVBQUFNLGNBQ0F2WSxFQUFBd0csUUFBQXhELFVBQUEsSUFDQWhELEVBQUF3RixnQkFBQSxHQUlBeEYsRUFBQXdHLFFBQUEvRSxPQUNBLGdCQUFBekIsR0FBQXdHLFFBQUFsRCxPQUNBdEQsRUFBQXdHLFFBQUFsRCxPQUFBLElBQ0F0RCxFQUFBd0csUUFBQWxELE9BQUEsR0FHQXRELEVBQUF3RyxRQUFBbEQsT0FBQXRELEVBQUFFLFNBQUFvRCxRQUlBOFUsU0FBQUgsRUFBQU8sYUFDQXhZLEVBQUFvRixTQUFBLGFBQ0FwRixFQUFBa0csY0FBQSxlQUNBbEcsRUFBQW1HLGVBQUEsY0FDQWlTLFNBQUFILEVBQUFRLHFCQUFBTCxTQUFBSCxFQUFBUyxvQkFBQTFZLEVBQUFvRixVQUFBLElBRUFnVCxTQUFBSCxFQUFBVSxlQUNBM1ksRUFBQW9GLFNBQUEsZUFDQXBGLEVBQUFrRyxjQUFBLGlCQUNBbEcsRUFBQW1HLGVBQUEsZ0JBQ0FpUyxTQUFBSCxFQUFBUSxxQkFBQUwsU0FBQUgsRUFBQVcsaUJBQUE1WSxFQUFBb0YsVUFBQSxJQUVBZ1QsU0FBQUgsRUFBQVksa0JBQ0E3WSxFQUFBb0YsU0FBQSxrQkFDQXBGLEVBQUFrRyxjQUFBLG9CQUNBbEcsRUFBQW1HLGVBQUEsbUJBQ0FpUyxTQUFBSCxFQUFBUSxxQkFBQUwsU0FBQUgsRUFBQVMsb0JBQUExWSxFQUFBb0YsVUFBQSxJQUVBZ1QsU0FBQUgsRUFBQWEsY0FDQTlZLEVBQUFvRixTQUFBLGNBQ0FwRixFQUFBa0csY0FBQSxnQkFDQWxHLEVBQUFtRyxlQUFBLGVBQ0FpUyxTQUFBSCxFQUFBYSxjQUFBOVksRUFBQW9GLFVBQUEsSUFFQWdULFNBQUFILEVBQUFjLFdBQUEvWSxFQUFBb0YsWUFBQSxJQUNBcEYsRUFBQW9GLFNBQUEsWUFDQXBGLEVBQUFrRyxjQUFBLFlBQ0FsRyxFQUFBbUcsZUFBQSxjQUVBbkcsRUFBQWdGLGtCQUFBaEYsRUFBQXdHLFFBQUF2RCxjQUFBLE9BQUFqRCxFQUFBb0YsVUFBQXBGLEVBQUFvRixZQUFBLEdBSUF6RixFQUFBaUksVUFBQXdFLGdCQUFBLFNBQUEvRCxHQUVBLEdBQ0EwSixHQUFBaUgsRUFBQTNLLEVBQUE0SyxFQURBalosRUFBQUMsSUFZQSxJQVRBK1ksRUFBQWhaLEVBQUFnRyxRQUNBOEIsS0FBQSxnQkFDQXVELFlBQUEsMkNBQ0F0RCxLQUFBLGNBQUEsUUFFQS9ILEVBQUF5RSxRQUNBa0UsR0FBQU4sR0FDQStDLFNBQUEsaUJBRUFwTCxFQUFBd0csUUFBQTNGLGNBQUEsRUFBQSxDQUVBLEdBQUFxWSxHQUFBbFosRUFBQXdHLFFBQUEvRCxhQUFBLElBQUEsRUFBQSxFQUFBLENBRUFzUCxHQUFBN0gsS0FBQWdILE1BQUFsUixFQUFBd0csUUFBQS9ELGFBQUEsR0FFQXpDLEVBQUF3RyxRQUFBNUUsWUFBQSxJQUVBeUcsR0FBQTBKLEdBQUExSixHQUFBckksRUFBQXNFLFdBQUEsRUFBQXlOLEVBQ0EvUixFQUFBeUUsUUFDQXdRLE1BQUE1TSxFQUFBMEosRUFBQW1ILEVBQUE3USxFQUFBMEosRUFBQSxHQUNBM0csU0FBQSxnQkFDQXJELEtBQUEsY0FBQSxVQUlBc0csRUFBQXJPLEVBQUF3RyxRQUFBL0QsYUFBQTRGLEVBQ0EyUSxFQUNBL0QsTUFBQTVHLEVBQUEwRCxFQUFBLEVBQUFtSCxFQUFBN0ssRUFBQTBELEVBQUEsR0FDQTNHLFNBQUEsZ0JBQ0FyRCxLQUFBLGNBQUEsVUFJQSxJQUFBTSxFQUVBMlEsRUFDQXJRLEdBQUFxUSxFQUFBeFEsT0FBQSxFQUFBeEksRUFBQXdHLFFBQUEvRCxjQUNBMkksU0FBQSxnQkFFQS9DLElBQUFySSxFQUFBc0UsV0FBQSxHQUVBMFUsRUFDQXJRLEdBQUEzSSxFQUFBd0csUUFBQS9ELGNBQ0EySSxTQUFBLGlCQU1BcEwsRUFBQXlFLFFBQ0FrRSxHQUFBTixHQUNBK0MsU0FBQSxvQkFJQS9DLElBQUEsR0FBQUEsR0FBQXJJLEVBQUFzRSxXQUFBdEUsRUFBQXdHLFFBQUEvRCxhQUVBekMsRUFBQXlFLFFBQ0F3USxNQUFBNU0sRUFBQUEsRUFBQXJJLEVBQUF3RyxRQUFBL0QsY0FDQTJJLFNBQUEsZ0JBQ0FyRCxLQUFBLGNBQUEsU0FFQWlSLEVBQUF4USxRQUFBeEksRUFBQXdHLFFBQUEvRCxhQUVBdVcsRUFDQTVOLFNBQUEsZ0JBQ0FyRCxLQUFBLGNBQUEsVUFJQWtSLEVBQUFqWixFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsYUFDQTRMLEVBQUFyTyxFQUFBd0csUUFBQTVFLFlBQUEsRUFBQTVCLEVBQUF3RyxRQUFBL0QsYUFBQTRGLEVBQUFBLEVBRUFySSxFQUFBd0csUUFBQS9ELGNBQUF6QyxFQUFBd0csUUFBQTlELGdCQUFBMUMsRUFBQXNFLFdBQUErRCxFQUFBckksRUFBQXdHLFFBQUEvRCxhQUVBdVcsRUFDQS9ELE1BQUE1RyxHQUFBck8sRUFBQXdHLFFBQUEvRCxhQUFBd1csR0FBQTVLLEVBQUE0SyxHQUNBN04sU0FBQSxnQkFDQXJELEtBQUEsY0FBQSxTQUlBaVIsRUFDQS9ELE1BQUE1RyxFQUFBQSxFQUFBck8sRUFBQXdHLFFBQUEvRCxjQUNBMkksU0FBQSxnQkFDQXJELEtBQUEsY0FBQSxTQVFBLGNBQUEvSCxFQUFBd0csUUFBQTFFLFVBQUEsZ0JBQUE5QixFQUFBd0csUUFBQTFFLFVBQ0E5QixFQUFBOEIsWUFJQW5DLEVBQUFpSSxVQUFBc0UsY0FBQSxXQUVBLEdBQ0FoTCxHQUFBNk8sRUFBQW9KLEVBREFuWixFQUFBQyxJQU9BLElBSkFELEVBQUF3RyxRQUFBL0UsUUFBQSxJQUNBekIsRUFBQXdHLFFBQUEzRixZQUFBLEdBR0FiLEVBQUF3RyxRQUFBNUUsWUFBQSxHQUFBNUIsRUFBQXdHLFFBQUEvRSxRQUFBLElBRUFzTyxFQUFBLEtBRUEvUCxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsY0FBQSxDQVFBLElBTEEwVyxFQURBblosRUFBQXdHLFFBQUEzRixjQUFBLEVBQ0FiLEVBQUF3RyxRQUFBL0QsYUFBQSxFQUVBekMsRUFBQXdHLFFBQUEvRCxhQUdBdkIsRUFBQWxCLEVBQUFzRSxXQUFBcEQsRUFBQWxCLEVBQUFzRSxXQUNBNlUsRUFBQWpZLEdBQUEsRUFDQTZPLEVBQUE3TyxFQUFBLEVBQ0F4QixFQUFBTSxFQUFBeUUsUUFBQXNMLElBQUFxSixPQUFBLEdBQUFyUixLQUFBLEtBQUEsSUFDQUEsS0FBQSxtQkFBQWdJLEVBQUEvUCxFQUFBc0UsWUFDQXVFLFVBQUE3SSxFQUFBd0UsYUFBQTRHLFNBQUEsZUFFQSxLQUFBbEssRUFBQSxFQUFBQSxFQUFBaVksRUFBQW5aLEVBQUFzRSxXQUFBcEQsR0FBQSxFQUNBNk8sRUFBQTdPLEVBQ0F4QixFQUFBTSxFQUFBeUUsUUFBQXNMLElBQUFxSixPQUFBLEdBQUFyUixLQUFBLEtBQUEsSUFDQUEsS0FBQSxtQkFBQWdJLEVBQUEvUCxFQUFBc0UsWUFDQW1FLFNBQUF6SSxFQUFBd0UsYUFBQTRHLFNBQUEsZUFFQXBMLEdBQUF3RSxZQUFBc0QsS0FBQSxpQkFBQUEsS0FBQSxRQUFBbUIsS0FBQSxXQUNBdkosRUFBQU8sTUFBQThILEtBQUEsS0FBQSxRQVNBcEksRUFBQWlJLFVBQUF3SCxVQUFBLFNBQUFpSyxHQUVBLEdBQUFyWixHQUFBQyxJQUVBb1osSUFDQXJaLEVBQUE2RyxXQUVBN0csRUFBQTBGLFlBQUEyVCxHQUlBMVosRUFBQWlJLFVBQUFULGNBQUEsU0FBQWdILEdBRUEsR0FBQW5PLEdBQUFDLEtBRUFxWixFQUNBNVosRUFBQXlPLEVBQUF2RCxRQUFBNkQsR0FBQSxnQkFDQS9PLEVBQUF5TyxFQUFBdkQsUUFDQWxMLEVBQUF5TyxFQUFBdkQsUUFBQTJPLFFBQUEsZ0JBRUFsUixFQUFBOEosU0FBQW1ILEVBQUF2UixLQUFBLG9CQUlBLE9BRkFNLEtBQUFBLEVBQUEsR0FFQXJJLEVBQUFzRSxZQUFBdEUsRUFBQXdHLFFBQUEvRCxpQkFFQXpDLEdBQUE4SyxhQUFBekMsR0FBQSxHQUFBLE9BS0FySSxHQUFBOEssYUFBQXpDLElBSUExSSxFQUFBaUksVUFBQWtELGFBQUEsU0FBQXpDLEVBQUFtUixFQUFBcEwsR0FFQSxHQUFBMkMsR0FBQTBJLEVBQUFDLEVBQUFDLEVBQ0FDLEVBREFuUSxFQUFBLEtBQ0F6SixFQUFBQyxJQUlBLElBRkF1WixFQUFBQSxJQUFBLElBRUF4WixFQUFBd0QsYUFBQSxHQUFBeEQsRUFBQXdHLFFBQUFuRCxrQkFBQSxHQUlBckQsRUFBQXdHLFFBQUEvRSxRQUFBLEdBQUF6QixFQUFBNkQsZUFBQXdFLEdBY0EsTUFWQW1SLE1BQUEsR0FDQXhaLEVBQUFRLFNBQUE2SCxHQUdBMEksRUFBQTFJLEVBQ0FvQixFQUFBekosRUFBQTZRLFFBQUFFLEdBQ0E0SSxFQUFBM1osRUFBQTZRLFFBQUE3USxFQUFBNkQsY0FFQTdELEVBQUE0RCxZQUFBLE9BQUE1RCxFQUFBNEUsVUFBQStVLEVBQUEzWixFQUFBNEUsVUFFQTVFLEVBQUF3RyxRQUFBNUUsWUFBQSxHQUFBNUIsRUFBQXdHLFFBQUEzRixjQUFBLElBQUF3SCxFQUFBLEdBQUFBLEVBQUFySSxFQUFBNEwsY0FBQTVMLEVBQUF3RyxRQUFBOUQscUJBQ0ExQyxFQUFBd0csUUFBQS9FLFFBQUEsSUFDQXNQLEVBQUEvUSxFQUFBNkQsYUFDQXVLLEtBQUEsR0FBQXBPLEVBQUFzRSxXQUFBdEUsRUFBQXdHLFFBQUEvRCxhQUNBekMsRUFBQXdKLGFBQUFtUSxFQUFBLFdBQ0EzWixFQUFBMlYsVUFBQTVFLEtBR0EvUSxFQUFBMlYsVUFBQTVFLEtBSUEvUSxFQUFBd0csUUFBQTVFLFlBQUEsR0FBQTVCLEVBQUF3RyxRQUFBM0YsY0FBQSxJQUFBd0gsRUFBQSxHQUFBQSxFQUFBckksRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQTlELHFCQUNBMUMsRUFBQXdHLFFBQUEvRSxRQUFBLElBQ0FzUCxFQUFBL1EsRUFBQTZELGFBQ0F1SyxLQUFBLEdBQUFwTyxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsYUFDQXpDLEVBQUF3SixhQUFBbVEsRUFBQSxXQUNBM1osRUFBQTJWLFVBQUE1RSxLQUdBL1EsRUFBQTJWLFVBQUE1RSxNQU1BL1EsRUFBQXdHLFFBQUE3RixVQUNBc0ssY0FBQWpMLEVBQUEwRCxlQUtBK1YsRUFGQTFJLEVBQUEsRUFDQS9RLEVBQUFzRSxXQUFBdEUsRUFBQXdHLFFBQUE5RCxpQkFBQSxFQUNBMUMsRUFBQXNFLFdBQUF0RSxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBOUQsZUFFQTFDLEVBQUFzRSxXQUFBeU0sRUFFQUEsR0FBQS9RLEVBQUFzRSxXQUNBdEUsRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQTlELGlCQUFBLEVBQ0EsRUFFQXFPLEVBQUEvUSxFQUFBc0UsV0FHQXlNLEVBR0EvUSxFQUFBd0QsV0FBQSxFQUVBeEQsRUFBQWdHLFFBQUFrSSxRQUFBLGdCQUFBbE8sRUFBQUEsRUFBQTZELGFBQUE0VixJQUVBQyxFQUFBMVosRUFBQTZELGFBQ0E3RCxFQUFBNkQsYUFBQTRWLEVBRUF6WixFQUFBb00sZ0JBQUFwTSxFQUFBNkQsY0FFQTdELEVBQUF3RyxRQUFBaEcsV0FFQW9aLEVBQUE1WixFQUFBMEssZUFDQWtQLEVBQUFBLEVBQUEvTyxNQUFBLFlBRUErTyxFQUFBdFYsWUFBQXNWLEVBQUFwVCxRQUFBL0QsY0FDQW1YLEVBQUF4TixnQkFBQXBNLEVBQUE2RCxlQUtBN0QsRUFBQW1NLGFBQ0FuTSxFQUFBMFMsZUFFQTFTLEVBQUF3RyxRQUFBL0UsUUFBQSxHQUNBMk0sS0FBQSxHQUVBcE8sRUFBQWlRLGFBQUF5SixHQUVBMVosRUFBQThQLFVBQUEySixFQUFBLFdBQ0F6WixFQUFBMlYsVUFBQThELE1BSUF6WixFQUFBMlYsVUFBQThELE9BRUF6WixHQUFBbUosc0JBSUFpRixLQUFBLEdBQUFwTyxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsYUFDQXpDLEVBQUF3SixhQUFBQyxFQUFBLFdBQ0F6SixFQUFBMlYsVUFBQThELEtBR0F6WixFQUFBMlYsVUFBQThELE1BS0E5WixFQUFBaUksVUFBQTJLLFVBQUEsV0FFQSxHQUFBdlMsR0FBQUMsSUFFQUQsR0FBQXdHLFFBQUFqRyxVQUFBLEdBQUFQLEVBQUFzRSxXQUFBdEUsRUFBQXdHLFFBQUEvRCxlQUVBekMsRUFBQW9FLFdBQUF5VixPQUNBN1osRUFBQW1FLFdBQUEwVixRQUlBN1osRUFBQXdHLFFBQUFwRixRQUFBLEdBQUFwQixFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsY0FFQXpDLEVBQUErRCxNQUFBOFYsT0FJQTdaLEVBQUFnRyxRQUFBb0YsU0FBQSxrQkFJQXpMLEVBQUFpSSxVQUFBa1MsZUFBQSxXQUVBLEdBQUFDLEdBQUFDLEVBQUFDLEVBQUFDLEVBQUFsYSxFQUFBQyxJQVdBLE9BVEE4WixHQUFBL1osRUFBQStFLFlBQUFvVixPQUFBbmEsRUFBQStFLFlBQUFxVixLQUNBSixFQUFBaGEsRUFBQStFLFlBQUFzVixPQUFBcmEsRUFBQStFLFlBQUF1VixLQUNBTCxFQUFBL1AsS0FBQXFRLE1BQUFQLEVBQUFELEdBRUFHLEVBQUFoUSxLQUFBc1EsTUFBQSxJQUFBUCxFQUFBL1AsS0FBQXVRLElBQ0FQLEVBQUEsSUFDQUEsRUFBQSxJQUFBaFEsS0FBQThILElBQUFrSSxJQUdBQSxHQUFBLElBQUFBLEdBQUEsRUFDQWxhLEVBQUF3RyxRQUFBbEUsT0FBQSxFQUFBLE9BQUEsUUFFQTRYLEdBQUEsS0FBQUEsR0FBQSxJQUNBbGEsRUFBQXdHLFFBQUFsRSxPQUFBLEVBQUEsT0FBQSxRQUVBNFgsR0FBQSxLQUFBQSxHQUFBLElBQ0FsYSxFQUFBd0csUUFBQWxFLE9BQUEsRUFBQSxRQUFBLE9BRUF0QyxFQUFBd0csUUFBQXBELG1CQUFBLEVBQ0E4VyxHQUFBLElBQUFBLEdBQUEsSUFDQSxPQUVBLEtBSUEsWUFJQXZhLEVBQUFpSSxVQUFBOFMsU0FBQSxTQUFBdk0sR0FFQSxHQUNBN0osR0FDQVIsRUFGQTlELEVBQUFDLElBT0EsSUFIQUQsRUFBQXlELFVBQUEsRUFDQXpELEVBQUE2RSxTQUFBLEVBRUE3RSxFQUFBcUUsVUFFQSxNQURBckUsR0FBQXFFLFdBQUEsR0FDQSxDQU1BLElBSEFyRSxFQUFBMEYsYUFBQSxFQUNBMUYsRUFBQStGLGNBQUEvRixFQUFBK0UsWUFBQTRWLFlBQUEsSUFFQXZDLFNBQUFwWSxFQUFBK0UsWUFBQXFWLEtBQ0EsT0FBQSxDQU9BLElBSkFwYSxFQUFBK0UsWUFBQTZWLFdBQUEsR0FDQTVhLEVBQUFnRyxRQUFBa0ksUUFBQSxRQUFBbE8sRUFBQUEsRUFBQThaLG1CQUdBOVosRUFBQStFLFlBQUE0VixhQUFBM2EsRUFBQStFLFlBQUE4VixTQUFBLENBSUEsT0FGQS9XLEVBQUE5RCxFQUFBOFosa0JBSUEsSUFBQSxPQUNBLElBQUEsT0FFQXhWLEVBQ0F0RSxFQUFBd0csUUFBQTNELGFBQ0E3QyxFQUFBNk8sZUFBQTdPLEVBQUE2RCxhQUFBN0QsRUFBQTRSLGlCQUNBNVIsRUFBQTZELGFBQUE3RCxFQUFBNFIsZ0JBRUE1UixFQUFBMkQsaUJBQUEsQ0FFQSxNQUVBLEtBQUEsUUFDQSxJQUFBLEtBRUFXLEVBQ0F0RSxFQUFBd0csUUFBQTNELGFBQ0E3QyxFQUFBNk8sZUFBQTdPLEVBQUE2RCxhQUFBN0QsRUFBQTRSLGlCQUNBNVIsRUFBQTZELGFBQUE3RCxFQUFBNFIsZ0JBRUE1UixFQUFBMkQsaUJBQUEsRUFTQSxZQUFBRyxJQUVBOUQsRUFBQThLLGFBQUF4RyxHQUNBdEUsRUFBQStFLGVBQ0EvRSxFQUFBZ0csUUFBQWtJLFFBQUEsU0FBQWxPLEVBQUE4RCxTQU1BOUQsR0FBQStFLFlBQUFvVixTQUFBbmEsRUFBQStFLFlBQUFxVixPQUVBcGEsRUFBQThLLGFBQUE5SyxFQUFBNkQsY0FDQTdELEVBQUErRSxpQkFRQXBGLEVBQUFpSSxVQUFBUCxhQUFBLFNBQUE4RyxHQUVBLEdBQUFuTyxHQUFBQyxJQUVBLE1BQUFELEVBQUF3RyxRQUFBNUQsU0FBQSxHQUFBLGNBQUE4RCxXQUFBMUcsRUFBQXdHLFFBQUE1RCxTQUFBLEdBRUE1QyxFQUFBd0csUUFBQWxGLGFBQUEsR0FBQTZNLEVBQUFvSSxLQUFBdkQsUUFBQSxlQWVBLE9BWEFoVCxFQUFBK0UsWUFBQStWLFlBQUEzTSxFQUFBNE0sZUFBQTNDLFNBQUFqSyxFQUFBNE0sY0FBQUMsUUFDQTdNLEVBQUE0TSxjQUFBQyxRQUFBeFMsT0FBQSxFQUVBeEksRUFBQStFLFlBQUE4VixTQUFBN2EsRUFBQWdFLFVBQUFoRSxFQUFBd0csUUFDQXpELGVBRUEvQyxFQUFBd0csUUFBQXBELG1CQUFBLElBQ0FwRCxFQUFBK0UsWUFBQThWLFNBQUE3YSxFQUFBaUUsV0FBQWpFLEVBQUF3RyxRQUNBekQsZ0JBR0FvTCxFQUFBNUgsS0FBQXNOLFFBRUEsSUFBQSxRQUNBN1QsRUFBQWliLFdBQUE5TSxFQUNBLE1BRUEsS0FBQSxPQUNBbk8sRUFBQWtiLFVBQUEvTSxFQUNBLE1BRUEsS0FBQSxNQUNBbk8sRUFBQTBhLFNBQUF2TSxLQU9BeE8sRUFBQWlJLFVBQUFzVCxVQUFBLFNBQUEvTSxHQUVBLEdBRUFnTixHQUFBckIsRUFBQWEsRUFBQVMsRUFBQUosRUFBQUssRUFGQXJiLEVBQUFDLElBTUEsT0FGQSthLEdBQUE1QyxTQUFBakssRUFBQTRNLGNBQUE1TSxFQUFBNE0sY0FBQUMsUUFBQSxRQUVBaGIsRUFBQXlELFVBQUF6RCxFQUFBcUUsV0FBQTJXLEdBQUEsSUFBQUEsRUFBQXhTLFVBSUEyUyxFQUFBbmIsRUFBQTZRLFFBQUE3USxFQUFBNkQsY0FFQTdELEVBQUErRSxZQUFBcVYsS0FBQWhDLFNBQUE0QyxFQUFBQSxFQUFBLEdBQUFNLE1BQUFuTixFQUFBb04sUUFDQXZiLEVBQUErRSxZQUFBdVYsS0FBQWxDLFNBQUE0QyxFQUFBQSxFQUFBLEdBQUFRLE1BQUFyTixFQUFBc04sUUFFQXpiLEVBQUErRSxZQUFBNFYsWUFBQXpRLEtBQUFzUSxNQUFBdFEsS0FBQXdSLEtBQ0F4UixLQUFBeVIsSUFBQTNiLEVBQUErRSxZQUFBcVYsS0FBQXBhLEVBQUErRSxZQUFBb1YsT0FBQSxLQUVBa0IsRUFBQW5SLEtBQUFzUSxNQUFBdFEsS0FBQXdSLEtBQ0F4UixLQUFBeVIsSUFBQTNiLEVBQUErRSxZQUFBdVYsS0FBQXRhLEVBQUErRSxZQUFBc1YsT0FBQSxNQUVBcmEsRUFBQXdHLFFBQUFwRCxrQkFBQXBELEVBQUE2RSxTQUFBd1csRUFBQSxHQUNBcmIsRUFBQXFFLFdBQUEsR0FDQSxJQUdBckUsRUFBQXdHLFFBQUFwRCxtQkFBQSxJQUNBcEQsRUFBQStFLFlBQUE0VixZQUFBVSxHQUdBdkIsRUFBQTlaLEVBQUE4WixpQkFFQTFCLFNBQUFqSyxFQUFBNE0sZUFBQS9hLEVBQUErRSxZQUFBNFYsWUFBQSxJQUNBM2EsRUFBQTZFLFNBQUEsRUFDQXNKLEVBQUFPLGtCQUdBME0sR0FBQXBiLEVBQUF3RyxRQUFBbEUsT0FBQSxFQUFBLE9BQUF0QyxFQUFBK0UsWUFBQXFWLEtBQUFwYSxFQUFBK0UsWUFBQW9WLE9BQUEsTUFDQW5hLEVBQUF3RyxRQUFBcEQsbUJBQUEsSUFDQWdZLEVBQUFwYixFQUFBK0UsWUFBQXVWLEtBQUF0YSxFQUFBK0UsWUFBQXNWLE9BQUEsTUFJQU0sRUFBQTNhLEVBQUErRSxZQUFBNFYsWUFFQTNhLEVBQUErRSxZQUFBNlYsU0FBQSxFQUVBNWEsRUFBQXdHLFFBQUE1RSxZQUFBLElBQ0EsSUFBQTVCLEVBQUE2RCxjQUFBLFVBQUFpVyxHQUFBOVosRUFBQTZELGNBQUE3RCxFQUFBNEwsZUFBQSxTQUFBa08sS0FDQWEsRUFBQTNhLEVBQUErRSxZQUFBNFYsWUFBQTNhLEVBQUF3RyxRQUFBaEYsYUFDQXhCLEVBQUErRSxZQUFBNlYsU0FBQSxHQUlBNWEsRUFBQXdHLFFBQUFyRCxZQUFBLEVBQ0FuRCxFQUFBNEUsVUFBQXVXLEVBQUFSLEVBQUFTLEVBRUFwYixFQUFBNEUsVUFBQXVXLEVBQUFSLEdBQUEzYSxFQUFBOEUsTUFBQXlFLFNBQUF2SixFQUFBZ0UsV0FBQW9YLEVBRUFwYixFQUFBd0csUUFBQXBELG1CQUFBLElBQ0FwRCxFQUFBNEUsVUFBQXVXLEVBQUFSLEVBQUFTLEdBR0FwYixFQUFBd0csUUFBQS9FLFFBQUEsR0FBQXpCLEVBQUF3RyxRQUFBMUQsYUFBQSxJQUlBOUMsRUFBQXdELGFBQUEsR0FDQXhELEVBQUE0RSxVQUFBLE1BQ0EsT0FHQTVFLEdBQUFnWCxPQUFBaFgsRUFBQTRFLGVBSUFqRixFQUFBaUksVUFBQXFULFdBQUEsU0FBQTlNLEdBRUEsR0FDQTZNLEdBREFoYixFQUFBQyxJQUtBLE9BRkFELEdBQUEwRixhQUFBLEVBRUEsSUFBQTFGLEVBQUErRSxZQUFBK1YsYUFBQTlhLEVBQUFzRSxZQUFBdEUsRUFBQXdHLFFBQUEvRCxjQUNBekMsRUFBQStFLGdCQUNBLElBR0FxVCxTQUFBakssRUFBQTRNLGVBQUEzQyxTQUFBakssRUFBQTRNLGNBQUFDLFVBQ0FBLEVBQUE3TSxFQUFBNE0sY0FBQUMsUUFBQSxJQUdBaGIsRUFBQStFLFlBQUFvVixPQUFBbmEsRUFBQStFLFlBQUFxVixLQUFBaEMsU0FBQTRDLEVBQUFBLEVBQUFNLE1BQUFuTixFQUFBb04sUUFDQXZiLEVBQUErRSxZQUFBc1YsT0FBQXJhLEVBQUErRSxZQUFBdVYsS0FBQWxDLFNBQUE0QyxFQUFBQSxFQUFBUSxNQUFBck4sRUFBQXNOLGFBRUF6YixFQUFBeUQsVUFBQSxLQUlBOUQsRUFBQWlJLFVBQUFnVSxlQUFBamMsRUFBQWlJLFVBQUFpVSxjQUFBLFdBRUEsR0FBQTdiLEdBQUFDLElBRUEsUUFBQUQsRUFBQWlHLGVBRUFqRyxFQUFBdUksU0FFQXZJLEVBQUF3RSxZQUFBc0UsU0FBQTdJLEtBQUF1RyxRQUFBakUsT0FBQXdHLFNBRUEvSSxFQUFBaUcsYUFBQXdDLFNBQUF6SSxFQUFBd0UsYUFFQXhFLEVBQUFrSixXQU1BdkosRUFBQWlJLFVBQUFXLE9BQUEsV0FFQSxHQUFBdkksR0FBQUMsSUFFQVAsR0FBQSxnQkFBQU0sRUFBQWdHLFNBQUE2SixTQUVBN1AsRUFBQStELE9BQ0EvRCxFQUFBK0QsTUFBQThMLFNBR0E3UCxFQUFBb0UsWUFBQXBFLEVBQUF5SCxTQUFBOEQsS0FBQXZMLEVBQUF3RyxRQUFBL0YsWUFDQVQsRUFBQW9FLFdBQUF5TCxTQUdBN1AsRUFBQW1FLFlBQUFuRSxFQUFBeUgsU0FBQThELEtBQUF2TCxFQUFBd0csUUFBQTlGLFlBQ0FWLEVBQUFtRSxXQUFBMEwsU0FHQTdQLEVBQUF5RSxRQUNBNEcsWUFBQSx3REFDQXRELEtBQUEsY0FBQSxRQUNBcUMsSUFBQSxRQUFBLEtBSUF6SyxFQUFBaUksVUFBQW9HLFFBQUEsU0FBQThOLEdBRUEsR0FBQTliLEdBQUFDLElBQ0FELEdBQUFnRyxRQUFBa0ksUUFBQSxXQUFBbE8sRUFBQThiLElBQ0E5YixFQUFBNFAsV0FJQWpRLEVBQUFpSSxVQUFBOEssYUFBQSxXQUVBLEdBQ0FYLEdBREEvUixFQUFBQyxJQUdBOFIsR0FBQTdILEtBQUFnSCxNQUFBbFIsRUFBQXdHLFFBQUEvRCxhQUFBLEdBRUF6QyxFQUFBd0csUUFBQWpHLFVBQUEsR0FDQVAsRUFBQXNFLFdBQUF0RSxFQUFBd0csUUFBQS9ELGVBQ0F6QyxFQUFBd0csUUFBQTVFLFdBRUE1QixFQUFBb0UsV0FBQWlILFlBQUEsa0JBQUF0RCxLQUFBLGdCQUFBLFNBQ0EvSCxFQUFBbUUsV0FBQWtILFlBQUEsa0JBQUF0RCxLQUFBLGdCQUFBLFNBRUEsSUFBQS9ILEVBQUE2RCxjQUVBN0QsRUFBQW9FLFdBQUFnSCxTQUFBLGtCQUFBckQsS0FBQSxnQkFBQSxRQUNBL0gsRUFBQW1FLFdBQUFrSCxZQUFBLGtCQUFBdEQsS0FBQSxnQkFBQSxVQUVBL0gsRUFBQTZELGNBQUE3RCxFQUFBc0UsV0FBQXRFLEVBQUF3RyxRQUFBL0QsY0FBQXpDLEVBQUF3RyxRQUFBM0YsY0FBQSxHQUVBYixFQUFBbUUsV0FBQWlILFNBQUEsa0JBQUFyRCxLQUFBLGdCQUFBLFFBQ0EvSCxFQUFBb0UsV0FBQWlILFlBQUEsa0JBQUF0RCxLQUFBLGdCQUFBLFVBRUEvSCxFQUFBNkQsY0FBQTdELEVBQUFzRSxXQUFBLEdBQUF0RSxFQUFBd0csUUFBQTNGLGNBQUEsSUFFQWIsRUFBQW1FLFdBQUFpSCxTQUFBLGtCQUFBckQsS0FBQSxnQkFBQSxRQUNBL0gsRUFBQW9FLFdBQUFpSCxZQUFBLGtCQUFBdEQsS0FBQSxnQkFBQSxZQVFBcEksRUFBQWlJLFVBQUF1RSxXQUFBLFdBRUEsR0FBQW5NLEdBQUFDLElBRUEsUUFBQUQsRUFBQStELFFBRUEvRCxFQUFBK0QsTUFDQStELEtBQUEsTUFDQXVELFlBQUEsZ0JBQ0FvSSxNQUVBelQsRUFBQStELE1BQ0ErRCxLQUFBLE1BQ0FhLEdBQUF1QixLQUFBZ0gsTUFBQWxSLEVBQUE2RCxhQUFBN0QsRUFBQXdHLFFBQUE5RCxpQkFDQTBJLFNBQUEsa0JBTUF6TCxFQUFBaUksVUFBQXlILFdBQUEsV0FFQSxHQUFBclAsR0FBQUMsSUFFQUQsR0FBQXdHLFFBQUE3RixXQUVBK0YsU0FBQTFHLEVBQUEyRixRQUVBM0YsRUFBQTBGLGFBQUEsRUFJQTFGLEVBQUEwRixhQUFBLElBUUFoRyxFQUFBcWMsR0FBQWxSLE1BQUEsV0FDQSxHQUlBM0osR0FDQThhLEVBTEFoYyxFQUFBQyxLQUNBK1gsRUFBQUQsVUFBQSxHQUNBa0UsRUFBQUMsTUFBQXRVLFVBQUFxTixNQUFBM0ssS0FBQXlOLFVBQUEsR0FDQTFCLEVBQUFyVyxFQUFBd0ksTUFHQSxLQUFBdEgsRUFBQSxFQUFBQSxFQUFBbVYsRUFBQW5WLElBS0EsR0FKQSxnQkFBQThXLElBQUEsbUJBQUFBLEdBQ0FoWSxFQUFBa0IsR0FBQTJKLE1BQUEsR0FBQWxMLEdBQUFLLEVBQUFrQixHQUFBOFcsR0FFQWdFLEVBQUFoYyxFQUFBa0IsR0FBQTJKLE1BQUFtTixHQUFBbUUsTUFBQW5jLEVBQUFrQixHQUFBMkosTUFBQW9SLEdBQ0EsbUJBQUFELEdBQUEsTUFBQUEsRUFFQSxPQUFBaGMsTUMvN0ZBLFNBQUFOLEdBRUEsR0FBQSxtQkFBQUEsR0FFQSxZQURBLFdBQUFFLFNBQUFBLE9BQUF3YyxRQUFBQyxLQUFBLDZDQUlBLElBQUEsbUJBQUEzYyxHQUFBcWMsR0FBQWxSLE1BRUEsWUFEQSxXQUFBakwsU0FBQUEsT0FBQXdjLFFBQUFDLEtBQUEsbUVBSUEsSUFBQUMsSUFDQTFiLGNBQUEsSUFDQTJiLFlBQUEsb0JBQ0FDLGNBQUEsRUFDQUMsa0JBQUEsRUFDQUMsWUFBQSxrQkFDQUMsd0JBQUEsRUFDQUMsa0JBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsaUJBQUEsRUFDQUMsYUFBQSxJQUNBQyxtQkFBQSxFQUNBQyxXQUFBLGdCQUNBQyxXQUFBLGdCQUNBQyxZQUFBLEVBQ0FDLGVBQUEsRUFDQUMsaUJBQUEsRUFDQUMsY0FBQSxFQUNBQyxpQkFBQSxxcUJBQ0FDLGlCQUFBLDJxQkFDQUMsZ0JBQUEsT0FDQUMscUJBQUEsSUFDQUMsV0FBQSxFQUNBQyxhQUFBLHlCQUdBQyxHQUNBQyxhQUFBLEVBQ0FDLFNBQUEsRUFDQWxhLGFBQUF1VSxPQUNBOVQsV0FBQThULE9BR0ExWSxHQUFBcWMsR0FBQWlDLFFBQUEsU0FBQXhYLEdBQ0EsR0FBQTRSLFNBQUE1UixHQUFBLGdCQUFBQSxHQUNBLElBQUEsR0FBQXlYLEtBQUEzQixJQUNBQSxFQUFBdk8sZUFBQWtRLElBQUE3RixTQUFBNVIsRUFBQXlYLFVBQUEzQixHQUFBMkIsVUFBQXpYLEdBQUF5WCxLQUNBN0YsU0FBQTVSLEVBQUF5WCxVQUFBM0IsR0FBQTJCLFVBQUF6WCxHQUFBeVgsSUFDQTdCLFFBQUFDLEtBQUEsd0NBQUE0QixFQUFBLHdCQUdBelgsRUFBQXlYLEdBQUEzQixFQUFBMkIsUUFJQXpYLEdBQUE4VixDQUdBLElBQUE5VixFQUFBbVgsVUFDQSxHQUFBTyxHQUFBeGUsRUFBQWdILFNBQUF3UixNQUFBbFAsT0FBQSxZQUFBeEMsRUFBQWtXLFlBQUEsOENBQUFsVyxFQUFBK1YsWUFBQSw4QkFBQS9WLEVBQUEwVyxXQUFBLGtCQUFBcFYsS0FBQSxJQUFBdEIsRUFBQWtXLFlBQUEsYUFFQSxJQUFBd0IsR0FBQXhlLEVBQUFnSCxTQUFBd1IsTUFBQWxQLE9BQUEsWUFBQXhDLEVBQUFrVyxZQUFBLHlDQUFBbFcsRUFBQStWLFlBQUEsOEJBQUEvVixFQUFBMFcsV0FBQSxrQkFBQXBWLEtBQUEsSUFBQXRCLEVBQUFrVyxZQUVBLElBQUF5QixHQUFBRCxFQUFBcFcsS0FBQSxJQUFBdEIsRUFBQTBXLFdBRUExVyxHQUFBaVcsaUJBQ0F5QixFQUFBNU4sR0FBQSxRQUFBLFNBQUFuQyxHQUNBek8sRUFBQXlPLEVBQUF2RCxRQUFBNkQsR0FBQSxrREFDQXlQLEVBQUFoUSxRQUFBLHdCQUNBZ1EsRUFBQUUsUUFBQTVYLEVBQUF1VyxhQUFBLFdBQ0F2VyxFQUFBbVgsV0FDQVEsRUFBQXRULE1BQUEsV0FDQXFULEVBQUFyTyxXQUVBc08sRUFBQXRULE1BQUEsZ0JBQUEsR0FDQWdULEVBQUFFLFNBQUEsR0FFQUcsRUFBQWhRLFFBQUEsNkJBS0FnUSxFQUFBNU4sR0FBQSxRQUFBLFNBQUFuQyxHQUNBek8sRUFBQXlPLEVBQUF2RCxRQUFBNkQsR0FBQSxJQUFBakksRUFBQStWLGVBQ0EyQixFQUFBaFEsUUFBQSx3QkFDQWdRLEVBQUFFLFFBQUE1WCxFQUFBdVcsYUFBQSxXQUNBdlcsRUFBQW1YLFdBQ0FRLEVBQUF0VCxNQUFBLFdBQ0FxVCxFQUFBck8sV0FFQXNPLEVBQUF0VCxNQUFBLGdCQUFBLEdBQ0FnVCxFQUFBRSxTQUFBLEdBRUFHLEVBQUFoUSxRQUFBLDRCQU1BLEtBQUEsR0FBQWhOLEdBQUEsRUFBQUEsRUFBQWpCLEtBQUF1SSxPQUFBdEgsSUFBQSxDQUNBLEdBQUFzRixFQUFBNlgsZ0JBQ0EsR0FBQXpKLEdBQUFsVixFQUFBTyxLQUFBaUIsSUFBQTZHLEtBQUF2QixFQUFBNlgscUJBRUEsSUFBQTNlLEVBQUFPLEtBQUFpQixJQUFBdU4sR0FBQSxLQUNBLEdBQUFtRyxHQUFBbFYsRUFBQU8sS0FBQWlCLElBQUE2RyxLQUFBLFlBQ0EsSUFBQXJJLEVBQUFPLEtBQUFpQixJQUFBdU4sR0FBQSxPQUNBLEdBQUFtRyxHQUFBbFYsRUFBQU8sS0FBQWlCLElBQUE2RyxLQUFBLFdBRUEsSUFBQTZNLEdBQUFsVixFQUFBTyxLQUFBaUIsSUFBQXFGLEtBQUEsTUFJQSxJQUFBK1gsR0FBQTVlLEVBQUFPLEtBQUFpQixJQUFBNkcsS0FBQSxPQUVBd1csRUFBQSxlQUFBL1gsRUFBQW9YLGFBQUEsZUFBQWhKLEVBQUEsWUFBQXBPLEVBQUF5VyxXQUFBLElBQ0E3RSxVQUFBa0csR0FBQUEsS0FBQSxHQUFBLEtBQUFBLElBQ0FDLEdBQUEsUUFBQUQsRUFBQSxLQUVBQyxHQUFBLFdBRUFKLEVBQUFuVixPQUFBdVYsR0FFQS9YLEVBQUFtWCxXQUNBamUsRUFBQU8sS0FBQWlCLElBQUE2RyxLQUFBLGFBQUE3RyxHQUFBb1AsR0FBQSxRQUFBLFNBQUFuQyxHQWFBLEdBWkFBLEVBQUFPLGlCQUVBd1AsRUFBQWhRLFFBQUEseUJBRUFnUSxFQUFBTSxPQUFBaFksRUFBQXVXLGFBQUEsV0FDQWMsRUFBQUUsU0FBQSxFQUNBRyxFQUFBaFEsUUFBQSx5QkFHQWlRLEVBQUF0VCxNQUFBLFlBQUFuTCxFQUFBTyxNQUFBc0csS0FBQSxVQUFBLEdBQ0FzWCxFQUFBaGEsYUFBQXNhLEVBQUF0VCxNQUFBLHFCQUVBdU4sU0FBQTFZLEVBQUFPLE1BQUE4SCxLQUFBLE9BQUEsQ0FDQSxHQUFBdVcsR0FBQTVlLEVBQUFPLE1BQUE4SCxLQUFBLE1BRUFvVyxHQUFBdFQsTUFBQSxjQUFBLFdBQ0EsTUFBQW5MLEdBQUFPLE1BQUE2SCxLQUFBLE9BQUFDLEtBQUEsU0FBQXVXLFFBRUEsQ0FDQSxHQUFBRyxHQUFBeGUsSUFFQSxJQUFBLEdBQUF1RyxFQUFBNFcsY0FBQSxDQUNBLEdBQUE1VyxFQUFBNlgsZ0JBQ0EsR0FBQXpKLEdBQUFsVixFQUFBK2UsR0FBQTFXLEtBQUF2QixFQUFBNlgscUJBRUEsSUFBQTNlLEVBQUErZSxHQUFBaFEsR0FBQSxLQUNBLEdBQUFtRyxHQUFBbFYsRUFBQStlLEdBQUExVyxLQUFBLFlBQ0EsSUFBQXJJLEVBQUErZSxHQUFBaFEsR0FBQSxPQUNBLEdBQUFtRyxHQUFBbFYsRUFBQStlLEdBQUExVyxLQUFBLFdBRUEsSUFBQTZNLEdBQUFsVixFQUFBK2UsR0FBQWxZLEtBQUEsTUFJQTRYLEdBQUF0VCxNQUFBLGNBQUEsV0FDQSxNQUFBbkwsR0FBQU8sTUFBQTZILEtBQUEsT0FBQUMsS0FBQSxTQUFBNk0sS0FLQXBPLEVBQUFnVyxjQUNBaFMsV0FBQSxXQUNBMlQsRUFBQXJXLEtBQUEsZ0JBQUFtQixLQUFBLFNBQUEvSCxFQUFBd2QsRUFBQXBTLEdBQ0E1TSxFQUFBTyxNQUFBbUssSUFBQSxjQUFBK1QsRUFBQTlVLGNBQUEzSixFQUFBTyxNQUFBb0osZUFBQSxNQUVBLElBR0EzSixFQUFBRSxRQUFBc08sUUFBQSxZQXVCQSxHQWxCQWlRLEVBQUF0VCxPQUNBbEssU0FBQTZGLEVBQUFxVyxlQUNBamMsY0FBQTRGLEVBQUE1RixjQUNBRyxRQUFBeUYsRUFBQWlYLGdCQUNBbmMsVUFBQWtGLEVBQUE2VyxnQkFDQXpiLFNBQUE0RSxFQUFBOFcsYUFDQXZiLGFBQUEsRUFDQXJCLFVBQUEsNENBQUE4RixFQUFBK1csaUJBQUEsWUFDQXZiLGFBQUF3RSxFQUFBbVcsdUJBQ0FsYyxVQUFBLDRDQUFBK0YsRUFBQWdYLGlCQUFBLFlBQ0E3YSxNQUFBNkQsRUFBQWtYLHFCQUNBNWEsV0FBQTBELEVBQUFvVyxpQkFDQXZaLGVBQUFtRCxFQUFBd1csb0JBQ0ExTSxHQUFBLGNBQUEsU0FBQW9PLEdBQ0FiLEVBQUFoYSxhQUFBc2EsRUFBQXRULE1BQUEscUJBQ0FnVCxFQUFBRSxTQUFBRyxFQUFBaFEsUUFBQSxvQkFHQTFILEVBQUEyVyxXQUFBLENBQ0EsR0FBQXdCLEdBQUEsU0FBQXhRLEdBQ0EsV0FBQUEsRUFBQXlRLEtBQUEsSUFBQXpRLEVBQUEwUSxPQUNBWCxFQUFBaFEsUUFBQSx3QkFDQWdRLEVBQUFFLFFBQUE1WCxFQUFBdVcsYUFBQSxXQUNBdlcsRUFBQW1YLFdBQ0FRLEVBQUF0VCxNQUFBLFdBQ0FxVCxFQUFBck8sV0FFQWdPLEVBQUFFLFNBQUEsRUFDQUksRUFBQXRULE1BQUEsZ0JBQUEsSUFFQXFULEVBQUFoUSxRQUFBLDJCQUVBLGNBQUFDLEVBQUF5USxLQUFBLElBQUF6USxFQUFBMFEsTUFDQVYsRUFBQXRULE1BQUEsYUFDQSxlQUFBc0QsRUFBQXlRLEtBQUEsSUFBQXpRLEVBQUEwUSxPQUNBVixFQUFBdFQsTUFBQSxhQUlBbkwsR0FBQWdILFVBQUF5SSxJQUFBLFFBQUF3UCxHQUFBck8sR0FBQSxRQUFBcU8sR0F1QkEsTUFwQkFuWSxHQUFBbVgsWUFDQU8sRUFBQWhRLFFBQUEseUJBRUFnUSxFQUFBTSxPQUFBaFksRUFBQXVXLGFBQUEsV0FDQW1CLEVBQUFoUSxRQUFBLHlCQUdBMUQsV0FBQSxXQUNBaEUsRUFBQWdXLGNBQ0EyQixFQUFBclcsS0FBQSxnQkFBQW1CLEtBQUEsU0FBQS9ILEVBQUF3ZCxFQUFBcFMsR0FDQTVNLEVBQUFPLE1BQUFtSyxJQUFBLGNBQUErVCxFQUFBOVUsY0FBQTNKLEVBQUFPLE1BQUFvSixlQUFBLE1BR0EsSUFFQTNKLEVBQUFFLFFBQUFzTyxRQUFBLFdBR0EyUCxFQUFBQyxhQUFBLEVBRUF0WCxFQUFBc1csZ0JBQ0E3YyxLQUVBUCxFQUFBLElBQUE4RyxFQUFBa1csY0FBQWhkLEVBQUEsSUFBQThHLEVBQUFrVyxZQUFBLFVBSUE5YyxPQUFBb2UsU0FDQWMsY0FBQSxXQUNBLE1BQUFqQixHQUFBQyxhQUVBaUIsVUFBQSxXQUNBLE1BQUFsQixHQUFBRSxTQUVBaUIsZ0JBQUEsV0FDQSxNQUFBbkIsR0FBQWhhLGdCQUlBcEUsUUNwUUFDLEVBQUEsWUFDQUEsRUFBQSxZQUFBOEksUUFBQTVJLE9BQUFxZixxQkFBQXZmLEVBQUEscUJBQUE4SSxRQUNBOUksRUFBQSxZQUFBc2UsU0FDQU4scUJBQUEsSUFDQUQsZ0JBQUEiLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgICBfIF8gICAgICBfICAgICAgIF9cbiBfX198IChfKSBfX198IHwgX18gIChfKV9fX1xuLyBfX3wgfCB8LyBfX3wgfC8gLyAgfCAvIF9ffFxuXFxfXyBcXCB8IHwgKF9ffCAgIDwgXyB8IFxcX18gXFxcbnxfX18vX3xffFxcX19ffF98XFxfKF8pLyB8X19fL1xuICAgICAgICAgICAgICAgICAgIHxfXy9cblxuIFZlcnNpb246IDEuOC4wXG4gIEF1dGhvcjogS2VuIFdoZWVsZXJcbiBXZWJzaXRlOiBodHRwOi8va2Vud2hlZWxlci5naXRodWIuaW9cbiAgICBEb2NzOiBodHRwOi8va2Vud2hlZWxlci5naXRodWIuaW8vc2xpY2tcbiAgICBSZXBvOiBodHRwOi8vZ2l0aHViLmNvbS9rZW53aGVlbGVyL3NsaWNrXG4gIElzc3VlczogaHR0cDovL2dpdGh1Yi5jb20va2Vud2hlZWxlci9zbGljay9pc3N1ZXNcblxuICovXG4vKiBnbG9iYWwgd2luZG93LCBkb2N1bWVudCwgZGVmaW5lLCBqUXVlcnksIHNldEludGVydmFsLCBjbGVhckludGVydmFsICovXG47KGZ1bmN0aW9uKGZhY3RvcnkpIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoJ2pxdWVyeScpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmYWN0b3J5KGpRdWVyeSk7XG4gICAgfVxuXG59KGZ1bmN0aW9uKCQpIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgdmFyIFNsaWNrID0gd2luZG93LlNsaWNrIHx8IHt9O1xuXG4gICAgU2xpY2sgPSAoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIGluc3RhbmNlVWlkID0gMDtcblxuICAgICAgICBmdW5jdGlvbiBTbGljayhlbGVtZW50LCBzZXR0aW5ncykge1xuXG4gICAgICAgICAgICB2YXIgXyA9IHRoaXMsIGRhdGFTZXR0aW5ncztcblxuICAgICAgICAgICAgXy5kZWZhdWx0cyA9IHtcbiAgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGFkYXB0aXZlSGVpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhcHBlbmRBcnJvd3M6ICQoZWxlbWVudCksXG4gICAgICAgICAgICAgICAgYXBwZW5kRG90czogJChlbGVtZW50KSxcbiAgICAgICAgICAgICAgICBhcnJvd3M6IHRydWUsXG4gICAgICAgICAgICAgICAgYXNOYXZGb3I6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJldkFycm93OiAnPGJ1dHRvbiBjbGFzcz1cInNsaWNrLXByZXZcIiBhcmlhLWxhYmVsPVwiUHJldmlvdXNcIiB0eXBlPVwiYnV0dG9uXCI+UHJldmlvdXM8L2J1dHRvbj4nLFxuICAgICAgICAgICAgICAgIG5leHRBcnJvdzogJzxidXR0b24gY2xhc3M9XCJzbGljay1uZXh0XCIgYXJpYS1sYWJlbD1cIk5leHRcIiB0eXBlPVwiYnV0dG9uXCI+TmV4dDwvYnV0dG9uPicsXG4gICAgICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgY2VudGVyTW9kZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzUwcHgnLFxuICAgICAgICAgICAgICAgIGNzc0Vhc2U6ICdlYXNlJyxcbiAgICAgICAgICAgICAgICBjdXN0b21QYWdpbmc6IGZ1bmN0aW9uKHNsaWRlciwgaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgLz4nKS50ZXh0KGkgKyAxKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRvdHM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRvdHNDbGFzczogJ3NsaWNrLWRvdHMnLFxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlYXNpbmc6ICdsaW5lYXInLFxuICAgICAgICAgICAgICAgIGVkZ2VGcmljdGlvbjogMC4zNSxcbiAgICAgICAgICAgICAgICBmYWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb2N1c09uU2VsZWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb2N1c09uQ2hhbmdlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpbmZpbml0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbml0aWFsU2xpZGU6IDAsXG4gICAgICAgICAgICAgICAgbGF6eUxvYWQ6ICdvbmRlbWFuZCcsXG4gICAgICAgICAgICAgICAgbW9iaWxlRmlyc3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXVzZU9uRm9jdXM6IHRydWUsXG4gICAgICAgICAgICAgICAgcGF1c2VPbkRvdHNIb3ZlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzcG9uZFRvOiAnd2luZG93JyxcbiAgICAgICAgICAgICAgICByZXNwb25zaXZlOiBudWxsLFxuICAgICAgICAgICAgICAgIHJvd3M6IDEsXG4gICAgICAgICAgICAgICAgcnRsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbGlkZTogJycsXG4gICAgICAgICAgICAgICAgc2xpZGVzUGVyUm93OiAxLFxuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgICAgICBzcGVlZDogNTAwLFxuICAgICAgICAgICAgICAgIHN3aXBlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdG91Y2hNb3ZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRvdWNoVGhyZXNob2xkOiA1LFxuICAgICAgICAgICAgICAgIHVzZUNTUzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB1c2VUcmFuc2Zvcm06IHRydWUsXG4gICAgICAgICAgICAgICAgdmFyaWFibGVXaWR0aDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmVydGljYWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsU3dpcGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2FpdEZvckFuaW1hdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgekluZGV4OiAxMDAwXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBfLmluaXRpYWxzID0ge1xuICAgICAgICAgICAgICAgIGFuaW1hdGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgZHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGF1dG9QbGF5VGltZXI6IG51bGwsXG4gICAgICAgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogMCxcbiAgICAgICAgICAgICAgICBjdXJyZW50TGVmdDogbnVsbCxcbiAgICAgICAgICAgICAgICBjdXJyZW50U2xpZGU6IDAsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAxLFxuICAgICAgICAgICAgICAgICRkb3RzOiBudWxsLFxuICAgICAgICAgICAgICAgIGxpc3RXaWR0aDogbnVsbCxcbiAgICAgICAgICAgICAgICBsaXN0SGVpZ2h0OiBudWxsLFxuICAgICAgICAgICAgICAgIGxvYWRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAkbmV4dEFycm93OiBudWxsLFxuICAgICAgICAgICAgICAgICRwcmV2QXJyb3c6IG51bGwsXG4gICAgICAgICAgICAgICAgc2Nyb2xsaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbGlkZUNvdW50OiBudWxsLFxuICAgICAgICAgICAgICAgIHNsaWRlV2lkdGg6IG51bGwsXG4gICAgICAgICAgICAgICAgJHNsaWRlVHJhY2s6IG51bGwsXG4gICAgICAgICAgICAgICAgJHNsaWRlczogbnVsbCxcbiAgICAgICAgICAgICAgICBzbGlkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbGlkZU9mZnNldDogMCxcbiAgICAgICAgICAgICAgICBzd2lwZUxlZnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgc3dpcGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJGxpc3Q6IG51bGwsXG4gICAgICAgICAgICAgICAgdG91Y2hPYmplY3Q6IHt9LFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB1bnNsaWNrZWQ6IGZhbHNlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAkLmV4dGVuZChfLCBfLmluaXRpYWxzKTtcblxuICAgICAgICAgICAgXy5hY3RpdmVCcmVha3BvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSBudWxsO1xuICAgICAgICAgICAgXy5hbmltUHJvcCA9IG51bGw7XG4gICAgICAgICAgICBfLmJyZWFrcG9pbnRzID0gW107XG4gICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5ncyA9IFtdO1xuICAgICAgICAgICAgXy5jc3NUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgICAgICAgICAgXy5mb2N1c3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgXy5oaWRkZW4gPSAnaGlkZGVuJztcbiAgICAgICAgICAgIF8ucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIF8ucG9zaXRpb25Qcm9wID0gbnVsbDtcbiAgICAgICAgICAgIF8ucmVzcG9uZFRvID0gbnVsbDtcbiAgICAgICAgICAgIF8ucm93Q291bnQgPSAxO1xuICAgICAgICAgICAgXy5zaG91bGRDbGljayA9IHRydWU7XG4gICAgICAgICAgICBfLiRzbGlkZXIgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBudWxsO1xuICAgICAgICAgICAgXy50cmFuc2Zvcm1UeXBlID0gbnVsbDtcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSBudWxsO1xuICAgICAgICAgICAgXy52aXNpYmlsaXR5Q2hhbmdlID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuICAgICAgICAgICAgXy53aW5kb3dXaWR0aCA9IDA7XG4gICAgICAgICAgICBfLndpbmRvd1RpbWVyID0gbnVsbDtcblxuICAgICAgICAgICAgZGF0YVNldHRpbmdzID0gJChlbGVtZW50KS5kYXRhKCdzbGljaycpIHx8IHt9O1xuXG4gICAgICAgICAgICBfLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgXy5kZWZhdWx0cywgc2V0dGluZ3MsIGRhdGFTZXR0aW5ncyk7XG5cbiAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gXy5vcHRpb25zLmluaXRpYWxTbGlkZTtcblxuICAgICAgICAgICAgXy5vcmlnaW5hbFNldHRpbmdzID0gXy5vcHRpb25zO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50Lm1vekhpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBfLmhpZGRlbiA9ICdtb3pIaWRkZW4nO1xuICAgICAgICAgICAgICAgIF8udmlzaWJpbGl0eUNoYW5nZSA9ICdtb3p2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRvY3VtZW50LndlYmtpdEhpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBfLmhpZGRlbiA9ICd3ZWJraXRIaWRkZW4nO1xuICAgICAgICAgICAgICAgIF8udmlzaWJpbGl0eUNoYW5nZSA9ICd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy5hdXRvUGxheSA9ICQucHJveHkoXy5hdXRvUGxheSwgXyk7XG4gICAgICAgICAgICBfLmF1dG9QbGF5Q2xlYXIgPSAkLnByb3h5KF8uYXV0b1BsYXlDbGVhciwgXyk7XG4gICAgICAgICAgICBfLmF1dG9QbGF5SXRlcmF0b3IgPSAkLnByb3h5KF8uYXV0b1BsYXlJdGVyYXRvciwgXyk7XG4gICAgICAgICAgICBfLmNoYW5nZVNsaWRlID0gJC5wcm94eShfLmNoYW5nZVNsaWRlLCBfKTtcbiAgICAgICAgICAgIF8uY2xpY2tIYW5kbGVyID0gJC5wcm94eShfLmNsaWNrSGFuZGxlciwgXyk7XG4gICAgICAgICAgICBfLnNlbGVjdEhhbmRsZXIgPSAkLnByb3h5KF8uc2VsZWN0SGFuZGxlciwgXyk7XG4gICAgICAgICAgICBfLnNldFBvc2l0aW9uID0gJC5wcm94eShfLnNldFBvc2l0aW9uLCBfKTtcbiAgICAgICAgICAgIF8uc3dpcGVIYW5kbGVyID0gJC5wcm94eShfLnN3aXBlSGFuZGxlciwgXyk7XG4gICAgICAgICAgICBfLmRyYWdIYW5kbGVyID0gJC5wcm94eShfLmRyYWdIYW5kbGVyLCBfKTtcbiAgICAgICAgICAgIF8ua2V5SGFuZGxlciA9ICQucHJveHkoXy5rZXlIYW5kbGVyLCBfKTtcblxuICAgICAgICAgICAgXy5pbnN0YW5jZVVpZCA9IGluc3RhbmNlVWlkKys7XG5cbiAgICAgICAgICAgIC8vIEEgc2ltcGxlIHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzXG4gICAgICAgICAgICAvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAobXVzdCBzdGFydCB3aXRoIDwpXG4gICAgICAgICAgICAvLyBFeHRyYWN0ZWQgZnJvbSBqUXVlcnkgdjEuMTEgc291cmNlXG4gICAgICAgICAgICBfLmh0bWxFeHByID0gL14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qKSQvO1xuXG5cbiAgICAgICAgICAgIF8ucmVnaXN0ZXJCcmVha3BvaW50cygpO1xuICAgICAgICAgICAgXy5pbml0KHRydWUpO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU2xpY2s7XG5cbiAgICB9KCkpO1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFjdGl2YXRlQURBID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmZpbmQoJy5zbGljay1hY3RpdmUnKS5hdHRyKHtcbiAgICAgICAgICAgICdhcmlhLWhpZGRlbic6ICdmYWxzZSdcbiAgICAgICAgfSkuZmluZCgnYSwgaW5wdXQsIGJ1dHRvbiwgc2VsZWN0JykuYXR0cih7XG4gICAgICAgICAgICAndGFiaW5kZXgnOiAnMCdcbiAgICAgICAgfSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFkZFNsaWRlID0gU2xpY2sucHJvdG90eXBlLnNsaWNrQWRkID0gZnVuY3Rpb24obWFya3VwLCBpbmRleCwgYWRkQmVmb3JlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICh0eXBlb2YoaW5kZXgpID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGFkZEJlZm9yZSA9IGluZGV4O1xuICAgICAgICAgICAgaW5kZXggPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGluZGV4IDwgMCB8fCAoaW5kZXggPj0gXy5zbGlkZUNvdW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgXy51bmxvYWQoKTtcblxuICAgICAgICBpZiAodHlwZW9mKGluZGV4KSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCAmJiBfLiRzbGlkZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgJChtYXJrdXApLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhZGRCZWZvcmUpIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuaW5zZXJ0QmVmb3JlKF8uJHNsaWRlcy5lcShpbmRleCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuaW5zZXJ0QWZ0ZXIoXy4kc2xpZGVzLmVxKGluZGV4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWRkQmVmb3JlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgJChtYXJrdXApLnByZXBlbmRUbyhfLiRzbGlkZVRyYWNrKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJChtYXJrdXApLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy4kc2xpZGVzID0gXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmFwcGVuZChfLiRzbGlkZXMpO1xuXG4gICAgICAgIF8uJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQpLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBpbmRleCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF8uJHNsaWRlc0NhY2hlID0gXy4kc2xpZGVzO1xuXG4gICAgICAgIF8ucmVpbml0KCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFuaW1hdGVIZWlnaHQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuICAgICAgICBpZiAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA9PT0gMSAmJiBfLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgPT09IHRydWUgJiYgXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdmFyIHRhcmdldEhlaWdodCA9IF8uJHNsaWRlcy5lcShfLmN1cnJlbnRTbGlkZSkub3V0ZXJIZWlnaHQodHJ1ZSk7XG4gICAgICAgICAgICBfLiRsaXN0LmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0XG4gICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5hbmltYXRlU2xpZGUgPSBmdW5jdGlvbih0YXJnZXRMZWZ0LCBjYWxsYmFjaykge1xuXG4gICAgICAgIHZhciBhbmltUHJvcHMgPSB7fSxcbiAgICAgICAgICAgIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uYW5pbWF0ZUhlaWdodCgpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlICYmIF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRhcmdldExlZnQgPSAtdGFyZ2V0TGVmdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy50cmFuc2Zvcm1zRW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogdGFyZ2V0TGVmdFxuICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCwgXy5vcHRpb25zLmVhc2luZywgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICB0b3A6IHRhcmdldExlZnRcbiAgICAgICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQsIF8ub3B0aW9ucy5lYXNpbmcsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBpZiAoXy5jc3NUcmFuc2l0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnJ0bCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRMZWZ0ID0gLShfLmN1cnJlbnRMZWZ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJCh7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1TdGFydDogXy5jdXJyZW50TGVmdFxuICAgICAgICAgICAgICAgIH0pLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICBhbmltU3RhcnQ6IHRhcmdldExlZnRcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBfLm9wdGlvbnMuc3BlZWQsXG4gICAgICAgICAgICAgICAgICAgIGVhc2luZzogXy5vcHRpb25zLmVhc2luZyxcbiAgICAgICAgICAgICAgICAgICAgc3RlcDogZnVuY3Rpb24obm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3cgPSBNYXRoLmNlaWwobm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbVByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZSgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm93ICsgJ3B4LCAwcHgpJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhhbmltUHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlKDBweCwnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm93ICsgJ3B4KSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MoYW5pbVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBfLmFwcGx5VHJhbnNpdGlvbigpO1xuICAgICAgICAgICAgICAgIHRhcmdldExlZnQgPSBNYXRoLmNlaWwodGFyZ2V0TGVmdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlM2QoJyArIHRhcmdldExlZnQgKyAncHgsIDBweCwgMHB4KSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYW5pbVByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZTNkKDBweCwnICsgdGFyZ2V0TGVmdCArICdweCwgMHB4KSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKGFuaW1Qcm9wcyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgXy5kaXNhYmxlVHJhbnNpdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXROYXZUYXJnZXQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBhc05hdkZvciA9IF8ub3B0aW9ucy5hc05hdkZvcjtcblxuICAgICAgICBpZiAoIGFzTmF2Rm9yICYmIGFzTmF2Rm9yICE9PSBudWxsICkge1xuICAgICAgICAgICAgYXNOYXZGb3IgPSAkKGFzTmF2Rm9yKS5ub3QoXy4kc2xpZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhc05hdkZvcjtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYXNOYXZGb3IgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGFzTmF2Rm9yID0gXy5nZXROYXZUYXJnZXQoKTtcblxuICAgICAgICBpZiAoIGFzTmF2Rm9yICE9PSBudWxsICYmIHR5cGVvZiBhc05hdkZvciA9PT0gJ29iamVjdCcgKSB7XG4gICAgICAgICAgICBhc05hdkZvci5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSAkKHRoaXMpLnNsaWNrKCdnZXRTbGljaycpO1xuICAgICAgICAgICAgICAgIGlmKCF0YXJnZXQudW5zbGlja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zbGlkZUhhbmRsZXIoaW5kZXgsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFwcGx5VHJhbnNpdGlvbiA9IGZ1bmN0aW9uKHNsaWRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdHJhbnNpdGlvbiA9IHt9O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25bXy50cmFuc2l0aW9uVHlwZV0gPSBfLnRyYW5zZm9ybVR5cGUgKyAnICcgKyBfLm9wdGlvbnMuc3BlZWQgKyAnbXMgJyArIF8ub3B0aW9ucy5jc3NFYXNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNpdGlvbltfLnRyYW5zaXRpb25UeXBlXSA9ICdvcGFjaXR5ICcgKyBfLm9wdGlvbnMuc3BlZWQgKyAnbXMgJyArIF8ub3B0aW9ucy5jc3NFYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3ModHJhbnNpdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGUpLmNzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5hdXRvUGxheSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmF1dG9QbGF5Q2xlYXIoKTtcblxuICAgICAgICBpZiAoIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKSB7XG4gICAgICAgICAgICBfLmF1dG9QbGF5VGltZXIgPSBzZXRJbnRlcnZhbCggXy5hdXRvUGxheUl0ZXJhdG9yLCBfLm9wdGlvbnMuYXV0b3BsYXlTcGVlZCApO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmF1dG9QbGF5Q2xlYXIgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uYXV0b1BsYXlUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChfLmF1dG9QbGF5VGltZXIpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmF1dG9QbGF5SXRlcmF0b3IgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBzbGlkZVRvID0gXy5jdXJyZW50U2xpZGUgKyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgaWYgKCAhXy5wYXVzZWQgJiYgIV8uaW50ZXJydXB0ZWQgJiYgIV8uZm9jdXNzZWQgKSB7XG5cbiAgICAgICAgICAgIGlmICggXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSApIHtcblxuICAgICAgICAgICAgICAgIGlmICggXy5kaXJlY3Rpb24gPT09IDEgJiYgKCBfLmN1cnJlbnRTbGlkZSArIDEgKSA9PT0gKCBfLnNsaWRlQ291bnQgLSAxICkpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5kaXJlY3Rpb24gPSAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBfLmRpcmVjdGlvbiA9PT0gMCApIHtcblxuICAgICAgICAgICAgICAgICAgICBzbGlkZVRvID0gXy5jdXJyZW50U2xpZGUgLSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBfLmN1cnJlbnRTbGlkZSAtIDEgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmRpcmVjdGlvbiA9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLnNsaWRlSGFuZGxlciggc2xpZGVUbyApO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGRBcnJvd3MgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgKSB7XG5cbiAgICAgICAgICAgIF8uJHByZXZBcnJvdyA9ICQoXy5vcHRpb25zLnByZXZBcnJvdykuYWRkQ2xhc3MoJ3NsaWNrLWFycm93Jyk7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cgPSAkKF8ub3B0aW9ucy5uZXh0QXJyb3cpLmFkZENsYXNzKCdzbGljay1hcnJvdycpO1xuXG4gICAgICAgICAgICBpZiggXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcblxuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2staGlkZGVuJykucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4gdGFiaW5kZXgnKTtcbiAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWhpZGRlbicpLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuIHRhYmluZGV4Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5odG1sRXhwci50ZXN0KF8ub3B0aW9ucy5wcmV2QXJyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5wcmVwZW5kVG8oXy5vcHRpb25zLmFwcGVuZEFycm93cyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF8uaHRtbEV4cHIudGVzdChfLm9wdGlvbnMubmV4dEFycm93KSkge1xuICAgICAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cuYXBwZW5kVG8oXy5vcHRpb25zLmFwcGVuZEFycm93cyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5hZGQoIF8uJG5leHRBcnJvdyApXG5cbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1oaWRkZW4nKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1kaXNhYmxlZCc6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0YWJpbmRleCc6ICctMSdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmJ1aWxkRG90cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGksIGRvdDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLWRvdHRlZCcpO1xuXG4gICAgICAgICAgICBkb3QgPSAkKCc8dWwgLz4nKS5hZGRDbGFzcyhfLm9wdGlvbnMuZG90c0NsYXNzKTtcblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBfLmdldERvdENvdW50KCk7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIGRvdC5hcHBlbmQoJCgnPGxpIC8+JykuYXBwZW5kKF8ub3B0aW9ucy5jdXN0b21QYWdpbmcuY2FsbCh0aGlzLCBfLCBpKSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLiRkb3RzID0gZG90LmFwcGVuZFRvKF8ub3B0aW9ucy5hcHBlbmREb3RzKTtcblxuICAgICAgICAgICAgXy4kZG90cy5maW5kKCdsaScpLmZpcnN0KCkuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGRPdXQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy4kc2xpZGVzID1cbiAgICAgICAgICAgIF8uJHNsaWRlclxuICAgICAgICAgICAgICAgIC5jaGlsZHJlbiggXy5vcHRpb25zLnNsaWRlICsgJzpub3QoLnNsaWNrLWNsb25lZCknKVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stc2xpZGUnKTtcblxuICAgICAgICBfLnNsaWRlQ291bnQgPSBfLiRzbGlkZXMubGVuZ3RoO1xuXG4gICAgICAgIF8uJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGF0YSgnb3JpZ2luYWxTdHlsaW5nJywgJChlbGVtZW50KS5hdHRyKCdzdHlsZScpIHx8ICcnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVyLmFkZENsYXNzKCdzbGljay1zbGlkZXInKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrID0gKF8uc2xpZGVDb3VudCA9PT0gMCkgP1xuICAgICAgICAgICAgJCgnPGRpdiBjbGFzcz1cInNsaWNrLXRyYWNrXCIvPicpLmFwcGVuZFRvKF8uJHNsaWRlcikgOlxuICAgICAgICAgICAgXy4kc2xpZGVzLndyYXBBbGwoJzxkaXYgY2xhc3M9XCJzbGljay10cmFja1wiLz4nKS5wYXJlbnQoKTtcblxuICAgICAgICBfLiRsaXN0ID0gXy4kc2xpZGVUcmFjay53cmFwKFxuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJzbGljay1saXN0XCIvPicpLnBhcmVudCgpO1xuICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcygnb3BhY2l0eScsIDApO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSB8fCBfLm9wdGlvbnMuc3dpcGVUb1NsaWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgJCgnaW1nW2RhdGEtbGF6eV0nLCBfLiRzbGlkZXIpLm5vdCgnW3NyY10nKS5hZGRDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgICAgIF8uc2V0dXBJbmZpbml0ZSgpO1xuXG4gICAgICAgIF8uYnVpbGRBcnJvd3MoKTtcblxuICAgICAgICBfLmJ1aWxkRG90cygpO1xuXG4gICAgICAgIF8udXBkYXRlRG90cygpO1xuXG5cbiAgICAgICAgXy5zZXRTbGlkZUNsYXNzZXModHlwZW9mIF8uY3VycmVudFNsaWRlID09PSAnbnVtYmVyJyA/IF8uY3VycmVudFNsaWRlIDogMCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kcmFnZ2FibGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJGxpc3QuYWRkQ2xhc3MoJ2RyYWdnYWJsZScpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmJ1aWxkUm93cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcywgYSwgYiwgYywgbmV3U2xpZGVzLCBudW1PZlNsaWRlcywgb3JpZ2luYWxTbGlkZXMsc2xpZGVzUGVyU2VjdGlvbjtcblxuICAgICAgICBuZXdTbGlkZXMgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICAgIG9yaWdpbmFsU2xpZGVzID0gXy4kc2xpZGVyLmNoaWxkcmVuKCk7XG5cbiAgICAgICAgaWYoXy5vcHRpb25zLnJvd3MgPiAwKSB7XG5cbiAgICAgICAgICAgIHNsaWRlc1BlclNlY3Rpb24gPSBfLm9wdGlvbnMuc2xpZGVzUGVyUm93ICogXy5vcHRpb25zLnJvd3M7XG4gICAgICAgICAgICBudW1PZlNsaWRlcyA9IE1hdGguY2VpbChcbiAgICAgICAgICAgICAgICBvcmlnaW5hbFNsaWRlcy5sZW5ndGggLyBzbGlkZXNQZXJTZWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IoYSA9IDA7IGEgPCBudW1PZlNsaWRlczsgYSsrKXtcbiAgICAgICAgICAgICAgICB2YXIgc2xpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBmb3IoYiA9IDA7IGIgPCBfLm9wdGlvbnMucm93czsgYisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGMgPSAwOyBjIDwgXy5vcHRpb25zLnNsaWRlc1BlclJvdzsgYysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gKGEgKiBzbGlkZXNQZXJTZWN0aW9uICsgKChiICogXy5vcHRpb25zLnNsaWRlc1BlclJvdykgKyBjKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JpZ2luYWxTbGlkZXMuZ2V0KHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQob3JpZ2luYWxTbGlkZXMuZ2V0KHRhcmdldCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlLmFwcGVuZENoaWxkKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5ld1NsaWRlcy5hcHBlbmRDaGlsZChzbGlkZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uJHNsaWRlci5lbXB0eSgpLmFwcGVuZChuZXdTbGlkZXMpO1xuICAgICAgICAgICAgXy4kc2xpZGVyLmNoaWxkcmVuKCkuY2hpbGRyZW4oKS5jaGlsZHJlbigpXG4gICAgICAgICAgICAgICAgLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgICd3aWR0aCc6KDEwMCAvIF8ub3B0aW9ucy5zbGlkZXNQZXJSb3cpICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6ICdpbmxpbmUtYmxvY2snXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5jaGVja1Jlc3BvbnNpdmUgPSBmdW5jdGlvbihpbml0aWFsLCBmb3JjZVVwZGF0ZSkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGJyZWFrcG9pbnQsIHRhcmdldEJyZWFrcG9pbnQsIHJlc3BvbmRUb1dpZHRoLCB0cmlnZ2VyQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgICAgICB2YXIgc2xpZGVyV2lkdGggPSBfLiRzbGlkZXIud2lkdGgoKTtcbiAgICAgICAgdmFyIHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGggfHwgJCh3aW5kb3cpLndpZHRoKCk7XG5cbiAgICAgICAgaWYgKF8ucmVzcG9uZFRvID09PSAnd2luZG93Jykge1xuICAgICAgICAgICAgcmVzcG9uZFRvV2lkdGggPSB3aW5kb3dXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmIChfLnJlc3BvbmRUbyA9PT0gJ3NsaWRlcicpIHtcbiAgICAgICAgICAgIHJlc3BvbmRUb1dpZHRoID0gc2xpZGVyV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5yZXNwb25kVG8gPT09ICdtaW4nKSB7XG4gICAgICAgICAgICByZXNwb25kVG9XaWR0aCA9IE1hdGgubWluKHdpbmRvd1dpZHRoLCBzbGlkZXJXaWR0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8ub3B0aW9ucy5yZXNwb25zaXZlICYmXG4gICAgICAgICAgICBfLm9wdGlvbnMucmVzcG9uc2l2ZS5sZW5ndGggJiZcbiAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIHRhcmdldEJyZWFrcG9pbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKGJyZWFrcG9pbnQgaW4gXy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGlmIChfLmJyZWFrcG9pbnRzLmhhc093blByb3BlcnR5KGJyZWFrcG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfLm9yaWdpbmFsU2V0dGluZ3MubW9iaWxlRmlyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uZFRvV2lkdGggPCBfLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludCA9IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uZFRvV2lkdGggPiBfLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludCA9IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0YXJnZXRCcmVha3BvaW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uYWN0aXZlQnJlYWtwb2ludCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0QnJlYWtwb2ludCAhPT0gXy5hY3RpdmVCcmVha3BvaW50IHx8IGZvcmNlVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXy5icmVha3BvaW50U2V0dGluZ3NbdGFyZ2V0QnJlYWtwb2ludF0gPT09ICd1bnNsaWNrJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8udW5zbGljayh0YXJnZXRCcmVha3BvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zID0gJC5leHRlbmQoe30sIF8ub3JpZ2luYWxTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5icmVha3BvaW50U2V0dGluZ3NbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCcmVha3BvaW50XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBfLm9wdGlvbnMuaW5pdGlhbFNsaWRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLnJlZnJlc2goaW5pdGlhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPSB0YXJnZXRCcmVha3BvaW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoXy5icmVha3BvaW50U2V0dGluZ3NbdGFyZ2V0QnJlYWtwb2ludF0gPT09ICd1bnNsaWNrJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy51bnNsaWNrKHRhcmdldEJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zID0gJC5leHRlbmQoe30sIF8ub3JpZ2luYWxTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8ub3B0aW9ucy5pbml0aWFsU2xpZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnJlZnJlc2goaW5pdGlhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQgPSB0YXJnZXRCcmVha3BvaW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uYWN0aXZlQnJlYWtwb2ludCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMgPSBfLm9yaWdpbmFsU2V0dGluZ3M7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbml0aWFsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8ub3B0aW9ucy5pbml0aWFsU2xpZGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXy5yZWZyZXNoKGluaXRpYWwpO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBvbmx5IHRyaWdnZXIgYnJlYWtwb2ludHMgZHVyaW5nIGFuIGFjdHVhbCBicmVhay4gbm90IG9uIGluaXRpYWxpemUuXG4gICAgICAgICAgICBpZiggIWluaXRpYWwgJiYgdHJpZ2dlckJyZWFrcG9pbnQgIT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdicmVha3BvaW50JywgW18sIHRyaWdnZXJCcmVha3BvaW50XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2hhbmdlU2xpZGUgPSBmdW5jdGlvbihldmVudCwgZG9udEFuaW1hdGUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICAkdGFyZ2V0ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KSxcbiAgICAgICAgICAgIGluZGV4T2Zmc2V0LCBzbGlkZU9mZnNldCwgdW5ldmVuT2Zmc2V0O1xuXG4gICAgICAgIC8vIElmIHRhcmdldCBpcyBhIGxpbmssIHByZXZlbnQgZGVmYXVsdCBhY3Rpb24uXG4gICAgICAgIGlmKCR0YXJnZXQuaXMoJ2EnKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRhcmdldCBpcyBub3QgdGhlIDxsaT4gZWxlbWVudCAoaWU6IGEgY2hpbGQpLCBmaW5kIHRoZSA8bGk+LlxuICAgICAgICBpZighJHRhcmdldC5pcygnbGknKSkge1xuICAgICAgICAgICAgJHRhcmdldCA9ICR0YXJnZXQuY2xvc2VzdCgnbGknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVuZXZlbk9mZnNldCA9IChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT09IDApO1xuICAgICAgICBpbmRleE9mZnNldCA9IHVuZXZlbk9mZnNldCA/IDAgOiAoXy5zbGlkZUNvdW50IC0gXy5jdXJyZW50U2xpZGUpICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuZGF0YS5tZXNzYWdlKSB7XG5cbiAgICAgICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICAgICAgICBzbGlkZU9mZnNldCA9IGluZGV4T2Zmc2V0ID09PSAwID8gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAtIGluZGV4T2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uc2xpZGVIYW5kbGVyKF8uY3VycmVudFNsaWRlIC0gc2xpZGVPZmZzZXQsIGZhbHNlLCBkb250QW5pbWF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgICAgICAgICBzbGlkZU9mZnNldCA9IGluZGV4T2Zmc2V0ID09PSAwID8gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogaW5kZXhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoXy5jdXJyZW50U2xpZGUgKyBzbGlkZU9mZnNldCwgZmFsc2UsIGRvbnRBbmltYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2luZGV4JzpcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBldmVudC5kYXRhLmluZGV4ID09PSAwID8gMCA6XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEuaW5kZXggfHwgJHRhcmdldC5pbmRleCgpICogXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuXG4gICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoXy5jaGVja05hdmlnYWJsZShpbmRleCksIGZhbHNlLCBkb250QW5pbWF0ZSk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5jaGlsZHJlbigpLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNoZWNrTmF2aWdhYmxlID0gZnVuY3Rpb24oaW5kZXgpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBuYXZpZ2FibGVzLCBwcmV2TmF2aWdhYmxlO1xuXG4gICAgICAgIG5hdmlnYWJsZXMgPSBfLmdldE5hdmlnYWJsZUluZGV4ZXMoKTtcbiAgICAgICAgcHJldk5hdmlnYWJsZSA9IDA7XG4gICAgICAgIGlmIChpbmRleCA+IG5hdmlnYWJsZXNbbmF2aWdhYmxlcy5sZW5ndGggLSAxXSkge1xuICAgICAgICAgICAgaW5kZXggPSBuYXZpZ2FibGVzW25hdmlnYWJsZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKHZhciBuIGluIG5hdmlnYWJsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBuYXZpZ2FibGVzW25dKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcHJldk5hdmlnYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByZXZOYXZpZ2FibGUgPSBuYXZpZ2FibGVzW25dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xlYW5VcEV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgJiYgXy4kZG90cyAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICAkKCdsaScsIF8uJGRvdHMpXG4gICAgICAgICAgICAgICAgLm9mZignY2xpY2suc2xpY2snLCBfLmNoYW5nZVNsaWRlKVxuICAgICAgICAgICAgICAgIC5vZmYoJ21vdXNlZW50ZXIuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAub2ZmKCdtb3VzZWxlYXZlLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgZmFsc2UpKTtcblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy4kZG90cy5vZmYoJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy4kc2xpZGVyLm9mZignZm9jdXMuc2xpY2sgYmx1ci5zbGljaycpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYXJyb3dzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uJHByZXZBcnJvdyAmJiBfLiRwcmV2QXJyb3cub2ZmKCdjbGljay5zbGljaycsIF8uY2hhbmdlU2xpZGUpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93ICYmIF8uJG5leHRBcnJvdy5vZmYoJ2NsaWNrLnNsaWNrJywgXy5jaGFuZ2VTbGlkZSk7XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdyAmJiBfLiRwcmV2QXJyb3cub2ZmKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cgJiYgXy4kbmV4dEFycm93Lm9mZigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfLiRsaXN0Lm9mZigndG91Y2hzdGFydC5zbGljayBtb3VzZWRvd24uc2xpY2snLCBfLnN3aXBlSGFuZGxlcik7XG4gICAgICAgIF8uJGxpc3Qub2ZmKCd0b3VjaG1vdmUuc2xpY2sgbW91c2Vtb3ZlLnNsaWNrJywgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9mZigndG91Y2hlbmQuc2xpY2sgbW91c2V1cC5zbGljaycsIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vZmYoJ3RvdWNoY2FuY2VsLnNsaWNrIG1vdXNlbGVhdmUuc2xpY2snLCBfLnN3aXBlSGFuZGxlcik7XG5cbiAgICAgICAgXy4kbGlzdC5vZmYoJ2NsaWNrLnNsaWNrJywgXy5jbGlja0hhbmRsZXIpO1xuXG4gICAgICAgICQoZG9jdW1lbnQpLm9mZihfLnZpc2liaWxpdHlDaGFuZ2UsIF8udmlzaWJpbGl0eSk7XG5cbiAgICAgICAgXy5jbGVhblVwU2xpZGVFdmVudHMoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJGxpc3Qub2ZmKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPblNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgJChfLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9mZignY2xpY2suc2xpY2snLCBfLnNlbGVjdEhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJCh3aW5kb3cpLm9mZignb3JpZW50YXRpb25jaGFuZ2Uuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsIF8ub3JpZW50YXRpb25DaGFuZ2UpO1xuXG4gICAgICAgICQod2luZG93KS5vZmYoJ3Jlc2l6ZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgXy5yZXNpemUpO1xuXG4gICAgICAgICQoJ1tkcmFnZ2FibGUhPXRydWVdJywgXy4kc2xpZGVUcmFjaykub2ZmKCdkcmFnc3RhcnQnLCBfLnByZXZlbnREZWZhdWx0KTtcblxuICAgICAgICAkKHdpbmRvdykub2ZmKCdsb2FkLnNsaWNrLnNsaWNrLScgKyBfLmluc3RhbmNlVWlkLCBfLnNldFBvc2l0aW9uKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xlYW5VcFNsaWRlRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJGxpc3Qub2ZmKCdtb3VzZWVudGVyLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgdHJ1ZSkpO1xuICAgICAgICBfLiRsaXN0Lm9mZignbW91c2VsZWF2ZS5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIGZhbHNlKSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNsZWFuVXBSb3dzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBvcmlnaW5hbFNsaWRlcztcblxuICAgICAgICBpZihfLm9wdGlvbnMucm93cyA+IDApIHtcbiAgICAgICAgICAgIG9yaWdpbmFsU2xpZGVzID0gXy4kc2xpZGVzLmNoaWxkcmVuKCkuY2hpbGRyZW4oKTtcbiAgICAgICAgICAgIG9yaWdpbmFsU2xpZGVzLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG4gICAgICAgICAgICBfLiRzbGlkZXIuZW1wdHkoKS5hcHBlbmQob3JpZ2luYWxTbGlkZXMpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNsaWNrSGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLnNob3VsZENsaWNrID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKHJlZnJlc2gpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hdXRvUGxheUNsZWFyKCk7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdCA9IHt9O1xuXG4gICAgICAgIF8uY2xlYW5VcEV2ZW50cygpO1xuXG4gICAgICAgICQoJy5zbGljay1jbG9uZWQnLCBfLiRzbGlkZXIpLmRldGFjaCgpO1xuXG4gICAgICAgIGlmIChfLiRkb3RzKSB7XG4gICAgICAgICAgICBfLiRkb3RzLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLiRwcmV2QXJyb3cgJiYgXy4kcHJldkFycm93Lmxlbmd0aCApIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93XG4gICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCBzbGljay1hcnJvdyBzbGljay1oaWRkZW4nKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdhcmlhLWhpZGRlbiBhcmlhLWRpc2FibGVkIHRhYmluZGV4JylcbiAgICAgICAgICAgICAgICAuY3NzKCdkaXNwbGF5JywnJyk7XG5cbiAgICAgICAgICAgIGlmICggXy5odG1sRXhwci50ZXN0KCBfLm9wdGlvbnMucHJldkFycm93ICkpIHtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8uJG5leHRBcnJvdyAmJiBfLiRuZXh0QXJyb3cubGVuZ3RoICkge1xuXG4gICAgICAgICAgICBfLiRuZXh0QXJyb3dcbiAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkIHNsaWNrLWFycm93IHNsaWNrLWhpZGRlbicpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuIGFyaWEtZGlzYWJsZWQgdGFiaW5kZXgnKVxuICAgICAgICAgICAgICAgIC5jc3MoJ2Rpc3BsYXknLCcnKTtcblxuICAgICAgICAgICAgaWYgKCBfLmh0bWxFeHByLnRlc3QoIF8ub3B0aW9ucy5uZXh0QXJyb3cgKSkge1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKF8uJHNsaWRlcykge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLXNsaWRlIHNsaWNrLWFjdGl2ZSBzbGljay1jZW50ZXIgc2xpY2stdmlzaWJsZSBzbGljay1jdXJyZW50JylcbiAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4nKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkYXRhLXNsaWNrLWluZGV4JylcbiAgICAgICAgICAgICAgICAuZWFjaChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3N0eWxlJywgJCh0aGlzKS5kYXRhKCdvcmlnaW5hbFN0eWxpbmcnKSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kbGlzdC5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVyLmFwcGVuZChfLiRzbGlkZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgXy5jbGVhblVwUm93cygpO1xuXG4gICAgICAgIF8uJHNsaWRlci5yZW1vdmVDbGFzcygnc2xpY2stc2xpZGVyJyk7XG4gICAgICAgIF8uJHNsaWRlci5yZW1vdmVDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKTtcbiAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay1kb3R0ZWQnKTtcblxuICAgICAgICBfLnVuc2xpY2tlZCA9IHRydWU7XG5cbiAgICAgICAgaWYoIXJlZnJlc2gpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdkZXN0cm95JywgW19dKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5kaXNhYmxlVHJhbnNpdGlvbiA9IGZ1bmN0aW9uKHNsaWRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdHJhbnNpdGlvbiA9IHt9O1xuXG4gICAgICAgIHRyYW5zaXRpb25bXy50cmFuc2l0aW9uVHlwZV0gPSAnJztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZSkuY3NzKHRyYW5zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmZhZGVTbGlkZSA9IGZ1bmN0aW9uKHNsaWRlSW5kZXgsIGNhbGxiYWNrKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLmNzc1RyYW5zaXRpb25zID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuY3NzKHtcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXhcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkLCBfLm9wdGlvbnMuZWFzaW5nLCBjYWxsYmFjayk7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgXy5hcHBseVRyYW5zaXRpb24oc2xpZGVJbmRleCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZUluZGV4KS5jc3Moe1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBfLmRpc2FibGVUcmFuc2l0aW9uKHNsaWRlSW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwoKTtcbiAgICAgICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZmFkZVNsaWRlT3V0ID0gZnVuY3Rpb24oc2xpZGVJbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5jc3NUcmFuc2l0aW9ucyA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlSW5kZXgpLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMlxuICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkLCBfLm9wdGlvbnMuZWFzaW5nKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBfLmFwcGx5VHJhbnNpdGlvbihzbGlkZUluZGV4KTtcblxuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlSW5kZXgpLmNzcyh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXggLSAyXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmZpbHRlclNsaWRlcyA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0ZpbHRlciA9IGZ1bmN0aW9uKGZpbHRlcikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoZmlsdGVyICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc0NhY2hlID0gXy4kc2xpZGVzO1xuXG4gICAgICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc0NhY2hlLmZpbHRlcihmaWx0ZXIpLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuXG4gICAgICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZm9jdXNIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJHNsaWRlclxuICAgICAgICAgICAgLm9mZignZm9jdXMuc2xpY2sgYmx1ci5zbGljaycpXG4gICAgICAgICAgICAub24oJ2ZvY3VzLnNsaWNrIGJsdXIuc2xpY2snLCAnKicsIGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdmFyICRzZiA9ICQodGhpcyk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiggXy5vcHRpb25zLnBhdXNlT25Gb2N1cyApIHtcbiAgICAgICAgICAgICAgICAgICAgXy5mb2N1c3NlZCA9ICRzZi5pcygnOmZvY3VzJyk7XG4gICAgICAgICAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sIDApO1xuXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0Q3VycmVudCA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0N1cnJlbnRTbGlkZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF8uY3VycmVudFNsaWRlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXREb3RDb3VudCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICB2YXIgYnJlYWtQb2ludCA9IDA7XG4gICAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgICAgdmFyIHBhZ2VyUXR5ID0gMDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgKytwYWdlclF0eTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGJyZWFrUG9pbnQgPCBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgKytwYWdlclF0eTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGNvdW50ZXIgKyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgKz0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcGFnZXJRdHkgPSBfLnNsaWRlQ291bnQ7XG4gICAgICAgIH0gZWxzZSBpZighXy5vcHRpb25zLmFzTmF2Rm9yKSB7XG4gICAgICAgICAgICBwYWdlclF0eSA9IDEgKyBNYXRoLmNlaWwoKF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIC8gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgd2hpbGUgKGJyZWFrUG9pbnQgPCBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICArK3BhZ2VyUXR5O1xuICAgICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBjb3VudGVyICsgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICAgICAgICAgIGNvdW50ZXIgKz0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhZ2VyUXR5IC0gMTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0TGVmdCA9IGZ1bmN0aW9uKHNsaWRlSW5kZXgpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICB0YXJnZXRMZWZ0LFxuICAgICAgICAgICAgdmVydGljYWxIZWlnaHQsXG4gICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldCA9IDAsXG4gICAgICAgICAgICB0YXJnZXRTbGlkZSxcbiAgICAgICAgICAgIGNvZWY7XG5cbiAgICAgICAgXy5zbGlkZU9mZnNldCA9IDA7XG4gICAgICAgIHZlcnRpY2FsSGVpZ2h0ID0gXy4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKF8uc2xpZGVXaWR0aCAqIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpICogLTE7XG4gICAgICAgICAgICAgICAgY29lZiA9IC0xXG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSB0cnVlICYmIF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2VmID0gLTEuNTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2VmID0gLTJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldCA9ICh2ZXJ0aWNhbEhlaWdodCAqIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpICogY29lZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoc2xpZGVJbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA+IF8uc2xpZGVDb3VudCAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzbGlkZUluZGV4ID4gXy5zbGlkZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gKHNsaWRlSW5kZXggLSBfLnNsaWRlQ291bnQpKSAqIF8uc2xpZGVXaWR0aCkgKiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gKHNsaWRlSW5kZXggLSBfLnNsaWRlQ291bnQpKSAqIHZlcnRpY2FsSGVpZ2h0KSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5zbGlkZU9mZnNldCA9ICgoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSAqIF8uc2xpZGVXaWR0aCkgKiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpICogdmVydGljYWxIZWlnaHQpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2xpZGVJbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPiBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgLSBfLnNsaWRlQ291bnQpICogXy5zbGlkZVdpZHRoO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgLSBfLnNsaWRlQ291bnQpICogdmVydGljYWxIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAwO1xuICAgICAgICAgICAgdmVydGljYWxPZmZzZXQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChfLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpKSAvIDIpIC0gKChfLnNsaWRlV2lkdGggKiBfLnNsaWRlQ291bnQpIC8gMik7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUgJiYgXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ICs9IF8uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpIC0gXy5zbGlkZVdpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgKz0gXy5zbGlkZVdpZHRoICogTWF0aC5mbG9vcihfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICgoc2xpZGVJbmRleCAqIF8uc2xpZGVXaWR0aCkgKiAtMSkgKyBfLnNsaWRlT2Zmc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICgoc2xpZGVJbmRleCAqIHZlcnRpY2FsSGVpZ2h0KSAqIC0xKSArIHZlcnRpY2FsT2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52YXJpYWJsZVdpZHRoID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyB8fCBfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5lcShzbGlkZUluZGV4KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5lcShzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFNsaWRlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldExlZnQgPSAoXy4kc2xpZGVUcmFjay53aWR0aCgpIC0gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAtIHRhcmdldFNsaWRlLndpZHRoKCkpICogLTE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IHRhcmdldFNsaWRlWzBdID8gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAqIC0xIDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93IHx8IF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5lcShzbGlkZUluZGV4KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmVxKHNsaWRlSW5kZXggKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFNsaWRlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gKF8uJHNsaWRlVHJhY2sud2lkdGgoKSAtIHRhcmdldFNsaWRlWzBdLm9mZnNldExlZnQgLSB0YXJnZXRTbGlkZS53aWR0aCgpKSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IHRhcmdldFNsaWRlWzBdID8gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAqIC0xIDogMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ICs9IChfLiRsaXN0LndpZHRoKCkgLSB0YXJnZXRTbGlkZS5vdXRlcldpZHRoKCkpIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRMZWZ0O1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXRPcHRpb24gPSBTbGljay5wcm90b3R5cGUuc2xpY2tHZXRPcHRpb24gPSBmdW5jdGlvbihvcHRpb24pIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIF8ub3B0aW9uc1tvcHRpb25dO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXROYXZpZ2FibGVJbmRleGVzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgYnJlYWtQb2ludCA9IDAsXG4gICAgICAgICAgICBjb3VudGVyID0gMCxcbiAgICAgICAgICAgIGluZGV4ZXMgPSBbXSxcbiAgICAgICAgICAgIG1heDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgbWF4ID0gXy5zbGlkZUNvdW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAqIC0xO1xuICAgICAgICAgICAgY291bnRlciA9IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAqIC0xO1xuICAgICAgICAgICAgbWF4ID0gXy5zbGlkZUNvdW50ICogMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChicmVha1BvaW50IDwgbWF4KSB7XG4gICAgICAgICAgICBpbmRleGVzLnB1c2goYnJlYWtQb2ludCk7XG4gICAgICAgICAgICBicmVha1BvaW50ID0gY291bnRlciArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgICAgICAgIGNvdW50ZXIgKz0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldFNsaWNrID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldFNsaWRlQ291bnQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBzbGlkZXNUcmF2ZXJzZWQsIHN3aXBlZFNsaWRlLCBjZW50ZXJPZmZzZXQ7XG5cbiAgICAgICAgY2VudGVyT2Zmc2V0ID0gXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUgPyBfLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyKSA6IDA7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5zd2lwZVRvU2xpZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suZmluZCgnLnNsaWNrLXNsaWRlJykuZWFjaChmdW5jdGlvbihpbmRleCwgc2xpZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2xpZGUub2Zmc2V0TGVmdCAtIGNlbnRlck9mZnNldCArICgkKHNsaWRlKS5vdXRlcldpZHRoKCkgLyAyKSA+IChfLnN3aXBlTGVmdCAqIC0xKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2lwZWRTbGlkZSA9IHNsaWRlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNsaWRlc1RyYXZlcnNlZCA9IE1hdGguYWJzKCQoc3dpcGVkU2xpZGUpLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnKSAtIF8uY3VycmVudFNsaWRlKSB8fCAxO1xuXG4gICAgICAgICAgICByZXR1cm4gc2xpZGVzVHJhdmVyc2VkO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdvVG8gPSBTbGljay5wcm90b3R5cGUuc2xpY2tHb1RvID0gZnVuY3Rpb24oc2xpZGUsIGRvbnRBbmltYXRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdpbmRleCcsXG4gICAgICAgICAgICAgICAgaW5kZXg6IHBhcnNlSW50KHNsaWRlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBkb250QW5pbWF0ZSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihjcmVhdGlvbikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoISQoXy4kc2xpZGVyKS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuXG4gICAgICAgICAgICAkKF8uJHNsaWRlcikuYWRkQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgICAgIF8uYnVpbGRSb3dzKCk7XG4gICAgICAgICAgICBfLmJ1aWxkT3V0KCk7XG4gICAgICAgICAgICBfLnNldFByb3BzKCk7XG4gICAgICAgICAgICBfLnN0YXJ0TG9hZCgpO1xuICAgICAgICAgICAgXy5sb2FkU2xpZGVyKCk7XG4gICAgICAgICAgICBfLmluaXRpYWxpemVFdmVudHMoKTtcbiAgICAgICAgICAgIF8udXBkYXRlQXJyb3dzKCk7XG4gICAgICAgICAgICBfLnVwZGF0ZURvdHMoKTtcbiAgICAgICAgICAgIF8uY2hlY2tSZXNwb25zaXZlKHRydWUpO1xuICAgICAgICAgICAgXy5mb2N1c0hhbmRsZXIoKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0aW9uKSB7XG4gICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignaW5pdCcsIFtfXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uaW5pdEFEQSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG5cbiAgICAgICAgICAgIF8ucGF1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICBfLmF1dG9QbGF5KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0QURBID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgICAgICBudW1Eb3RHcm91cHMgPSBNYXRoLmNlaWwoXy5zbGlkZUNvdW50IC8gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyksXG4gICAgICAgICAgICAgICAgdGFiQ29udHJvbEluZGV4ZXMgPSBfLmdldE5hdmlnYWJsZUluZGV4ZXMoKS5maWx0ZXIoZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAodmFsID49IDApICYmICh2YWwgPCBfLnNsaWRlQ291bnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIF8uJHNsaWRlcy5hZGQoXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stY2xvbmVkJykpLmF0dHIoe1xuICAgICAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnLFxuICAgICAgICAgICAgJ3RhYmluZGV4JzogJy0xJ1xuICAgICAgICB9KS5maW5kKCdhLCBpbnB1dCwgYnV0dG9uLCBzZWxlY3QnKS5hdHRyKHtcbiAgICAgICAgICAgICd0YWJpbmRleCc6ICctMSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKF8uJGRvdHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5ub3QoXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stY2xvbmVkJykpLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZUNvbnRyb2xJbmRleCA9IHRhYkNvbnRyb2xJbmRleGVzLmluZGV4T2YoaSk7XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICAncm9sZSc6ICd0YWJwYW5lbCcsXG4gICAgICAgICAgICAgICAgICAgICdpZCc6ICdzbGljay1zbGlkZScgKyBfLmluc3RhbmNlVWlkICsgaSxcbiAgICAgICAgICAgICAgICAgICAgJ3RhYmluZGV4JzogLTFcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChzbGlkZUNvbnRyb2xJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICB2YXIgYXJpYUJ1dHRvbkNvbnRyb2wgPSAnc2xpY2stc2xpZGUtY29udHJvbCcgKyBfLmluc3RhbmNlVWlkICsgc2xpZGVDb250cm9sSW5kZXhcbiAgICAgICAgICAgICAgICAgICBpZiAoJCgnIycgKyBhcmlhQnV0dG9uQ29udHJvbCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogYXJpYUJ1dHRvbkNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgXy4kZG90cy5hdHRyKCdyb2xlJywgJ3RhYmxpc3QnKS5maW5kKCdsaScpLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgICAgIHZhciBtYXBwZWRTbGlkZUluZGV4ID0gdGFiQ29udHJvbEluZGV4ZXNbaV07XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICAncm9sZSc6ICdwcmVzZW50YXRpb24nXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJ2J1dHRvbicpLmZpcnN0KCkuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICdyb2xlJzogJ3RhYicsXG4gICAgICAgICAgICAgICAgICAgICdpZCc6ICdzbGljay1zbGlkZS1jb250cm9sJyArIF8uaW5zdGFuY2VVaWQgKyBpLFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1jb250cm9scyc6ICdzbGljay1zbGlkZScgKyBfLmluc3RhbmNlVWlkICsgbWFwcGVkU2xpZGVJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiAoaSArIDEpICsgJyBvZiAnICsgbnVtRG90R3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICd0YWJpbmRleCc6ICctMSdcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSkuZXEoXy5jdXJyZW50U2xpZGUpLmZpbmQoJ2J1dHRvbicpLmF0dHIoe1xuICAgICAgICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogJ3RydWUnLFxuICAgICAgICAgICAgICAgICd0YWJpbmRleCc6ICcwJ1xuICAgICAgICAgICAgfSkuZW5kKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBpPV8uY3VycmVudFNsaWRlLCBtYXg9aStfLm9wdGlvbnMuc2xpZGVzVG9TaG93OyBpIDwgbWF4OyBpKyspIHtcbiAgICAgICAgICBpZiAoXy5vcHRpb25zLmZvY3VzT25DaGFuZ2UpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShpKS5hdHRyKHsndGFiaW5kZXgnOiAnMCd9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKGkpLnJlbW92ZUF0dHIoJ3RhYmluZGV4Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy5hY3RpdmF0ZUFEQSgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0QXJyb3dFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy4kcHJldkFycm93XG4gICAgICAgICAgICAgICAub2ZmKCdjbGljay5zbGljaycpXG4gICAgICAgICAgICAgICAub24oJ2NsaWNrLnNsaWNrJywge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAncHJldmlvdXMnXG4gICAgICAgICAgICAgICB9LCBfLmNoYW5nZVNsaWRlKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvd1xuICAgICAgICAgICAgICAgLm9mZignY2xpY2suc2xpY2snKVxuICAgICAgICAgICAgICAgLm9uKCdjbGljay5zbGljaycsIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ25leHQnXG4gICAgICAgICAgICAgICB9LCBfLmNoYW5nZVNsaWRlKTtcblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93Lm9uKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cub24oJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXREb3RFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICQoJ2xpJywgXy4kZG90cykub24oJ2NsaWNrLnNsaWNrJywge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdpbmRleCdcbiAgICAgICAgICAgIH0sIF8uY2hhbmdlU2xpZGUpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRkb3RzLm9uKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMucGF1c2VPbkRvdHNIb3ZlciA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICQoJ2xpJywgXy4kZG90cylcbiAgICAgICAgICAgICAgICAub24oJ21vdXNlZW50ZXIuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAub24oJ21vdXNlbGVhdmUuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCBmYWxzZSkpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdFNsaWRlRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLnBhdXNlT25Ib3ZlciApIHtcblxuICAgICAgICAgICAgXy4kbGlzdC5vbignbW91c2VlbnRlci5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIHRydWUpKTtcbiAgICAgICAgICAgIF8uJGxpc3Qub24oJ21vdXNlbGVhdmUuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCBmYWxzZSkpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdGlhbGl6ZUV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmluaXRBcnJvd0V2ZW50cygpO1xuXG4gICAgICAgIF8uaW5pdERvdEV2ZW50cygpO1xuICAgICAgICBfLmluaXRTbGlkZUV2ZW50cygpO1xuXG4gICAgICAgIF8uJGxpc3Qub24oJ3RvdWNoc3RhcnQuc2xpY2sgbW91c2Vkb3duLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnc3RhcnQnXG4gICAgICAgIH0sIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vbigndG91Y2htb3ZlLnNsaWNrIG1vdXNlbW92ZS5zbGljaycsIHtcbiAgICAgICAgICAgIGFjdGlvbjogJ21vdmUnXG4gICAgICAgIH0sIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vbigndG91Y2hlbmQuc2xpY2sgbW91c2V1cC5zbGljaycsIHtcbiAgICAgICAgICAgIGFjdGlvbjogJ2VuZCdcbiAgICAgICAgfSwgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9uKCd0b3VjaGNhbmNlbC5zbGljayBtb3VzZWxlYXZlLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnZW5kJ1xuICAgICAgICB9LCBfLnN3aXBlSGFuZGxlcik7XG5cbiAgICAgICAgXy4kbGlzdC5vbignY2xpY2suc2xpY2snLCBfLmNsaWNrSGFuZGxlcik7XG5cbiAgICAgICAgJChkb2N1bWVudCkub24oXy52aXNpYmlsaXR5Q2hhbmdlLCAkLnByb3h5KF8udmlzaWJpbGl0eSwgXykpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kbGlzdC5vbigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZvY3VzT25TZWxlY3QgPT09IHRydWUpIHtcbiAgICAgICAgICAgICQoXy4kc2xpZGVUcmFjaykuY2hpbGRyZW4oKS5vbignY2xpY2suc2xpY2snLCBfLnNlbGVjdEhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJCh3aW5kb3cpLm9uKCdvcmllbnRhdGlvbmNoYW5nZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgJC5wcm94eShfLm9yaWVudGF0aW9uQ2hhbmdlLCBfKSk7XG5cbiAgICAgICAgJCh3aW5kb3cpLm9uKCdyZXNpemUuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsICQucHJveHkoXy5yZXNpemUsIF8pKTtcblxuICAgICAgICAkKCdbZHJhZ2dhYmxlIT10cnVlXScsIF8uJHNsaWRlVHJhY2spLm9uKCdkcmFnc3RhcnQnLCBfLnByZXZlbnREZWZhdWx0KTtcblxuICAgICAgICAkKHdpbmRvdykub24oJ2xvYWQuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsIF8uc2V0UG9zaXRpb24pO1xuICAgICAgICAkKF8uc2V0UG9zaXRpb24pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0VUkgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRwcmV2QXJyb3cuc2hvdygpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93LnNob3coKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy4kZG90cy5zaG93KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5rZXlIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG4gICAgICAgICAvL0RvbnQgc2xpZGUgaWYgdGhlIGN1cnNvciBpcyBpbnNpZGUgdGhlIGZvcm0gZmllbGRzIGFuZCBhcnJvdyBrZXlzIGFyZSBwcmVzc2VkXG4gICAgICAgIGlmKCFldmVudC50YXJnZXQudGFnTmFtZS5tYXRjaCgnVEVYVEFSRUF8SU5QVVR8U0VMRUNUJykpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzNyAmJiBfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBfLm9wdGlvbnMucnRsID09PSB0cnVlID8gJ25leHQnIDogICdwcmV2aW91cydcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSAzOSAmJiBfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBfLm9wdGlvbnMucnRsID09PSB0cnVlID8gJ3ByZXZpb3VzJyA6ICduZXh0J1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUubGF6eUxvYWQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBsb2FkUmFuZ2UsIGNsb25lUmFuZ2UsIHJhbmdlU3RhcnQsIHJhbmdlRW5kO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRJbWFnZXMoaW1hZ2VzU2NvcGUpIHtcblxuICAgICAgICAgICAgJCgnaW1nW2RhdGEtbGF6eV0nLCBpbWFnZXNTY29wZSkuZWFjaChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9ICQodGhpcyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlU291cmNlID0gJCh0aGlzKS5hdHRyKCdkYXRhLWxhenknKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtc3Jjc2V0JyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZXMgID0gJCh0aGlzKS5hdHRyKCdkYXRhLXNpemVzJykgfHwgXy4kc2xpZGVyLmF0dHIoJ2RhdGEtc2l6ZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VUb0xvYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcblxuICAgICAgICAgICAgICAgIGltYWdlVG9Mb2FkLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAuYW5pbWF0ZSh7IG9wYWNpdHk6IDAgfSwgMTAwLCBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZVNyY1NldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NyY3NldCcsIGltYWdlU3JjU2V0ICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlU2l6ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NpemVzJywgaW1hZ2VTaXplcyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NyYycsIGltYWdlU291cmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYW5pbWF0ZSh7IG9wYWNpdHk6IDEgfSwgMjAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2RhdGEtbGF6eSBkYXRhLXNyY3NldCBkYXRhLXNpemVzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWxvYWRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2xhenlMb2FkZWQnLCBbXywgaW1hZ2UsIGltYWdlU291cmNlXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpbWFnZVRvTG9hZC5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCAnZGF0YS1sYXp5JyApXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoICdzbGljay1sb2FkaW5nJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoICdzbGljay1sYXp5bG9hZC1lcnJvcicgKTtcblxuICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignbGF6eUxvYWRFcnJvcicsIFsgXywgaW1hZ2UsIGltYWdlU291cmNlIF0pO1xuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGltYWdlVG9Mb2FkLnNyYyA9IGltYWdlU291cmNlO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmFuZ2VTdGFydCA9IF8uY3VycmVudFNsaWRlICsgKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyICsgMSk7XG4gICAgICAgICAgICAgICAgcmFuZ2VFbmQgPSByYW5nZVN0YXJ0ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyArIDI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJhbmdlU3RhcnQgPSBNYXRoLm1heCgwLCBfLmN1cnJlbnRTbGlkZSAtIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMiArIDEpKTtcbiAgICAgICAgICAgICAgICByYW5nZUVuZCA9IDIgKyAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIgKyAxKSArIF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmFuZ2VTdGFydCA9IF8ub3B0aW9ucy5pbmZpbml0ZSA/IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyBfLmN1cnJlbnRTbGlkZSA6IF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgcmFuZ2VFbmQgPSBNYXRoLmNlaWwocmFuZ2VTdGFydCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpO1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlU3RhcnQgPiAwKSByYW5nZVN0YXJ0LS07XG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlRW5kIDw9IF8uc2xpZGVDb3VudCkgcmFuZ2VFbmQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxvYWRSYW5nZSA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stc2xpZGUnKS5zbGljZShyYW5nZVN0YXJ0LCByYW5nZUVuZCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ2FudGljaXBhdGVkJykge1xuICAgICAgICAgICAgdmFyIHByZXZTbGlkZSA9IHJhbmdlU3RhcnQgLSAxLFxuICAgICAgICAgICAgICAgIG5leHRTbGlkZSA9IHJhbmdlRW5kLFxuICAgICAgICAgICAgICAgICRzbGlkZXMgPSBfLiRzbGlkZXIuZmluZCgnLnNsaWNrLXNsaWRlJyk7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAocHJldlNsaWRlIDwgMCkgcHJldlNsaWRlID0gXy5zbGlkZUNvdW50IC0gMTtcbiAgICAgICAgICAgICAgICBsb2FkUmFuZ2UgPSBsb2FkUmFuZ2UuYWRkKCRzbGlkZXMuZXEocHJldlNsaWRlKSk7XG4gICAgICAgICAgICAgICAgbG9hZFJhbmdlID0gbG9hZFJhbmdlLmFkZCgkc2xpZGVzLmVxKG5leHRTbGlkZSkpO1xuICAgICAgICAgICAgICAgIHByZXZTbGlkZS0tO1xuICAgICAgICAgICAgICAgIG5leHRTbGlkZSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9hZEltYWdlcyhsb2FkUmFuZ2UpO1xuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgY2xvbmVSYW5nZSA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stc2xpZGUnKTtcbiAgICAgICAgICAgIGxvYWRJbWFnZXMoY2xvbmVSYW5nZSk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgY2xvbmVSYW5nZSA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stY2xvbmVkJykuc2xpY2UoMCwgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICBsb2FkSW1hZ2VzKGNsb25lUmFuZ2UpO1xuICAgICAgICB9IGVsc2UgaWYgKF8uY3VycmVudFNsaWRlID09PSAwKSB7XG4gICAgICAgICAgICBjbG9uZVJhbmdlID0gXy4kc2xpZGVyLmZpbmQoJy5zbGljay1jbG9uZWQnKS5zbGljZShfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICogLTEpO1xuICAgICAgICAgICAgbG9hZEltYWdlcyhjbG9uZVJhbmdlKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5sb2FkU2xpZGVyID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uc2V0UG9zaXRpb24oKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyh7XG4gICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgIH0pO1xuXG4gICAgICAgIF8uJHNsaWRlci5yZW1vdmVDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgICAgIF8uaW5pdFVJKCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ3Byb2dyZXNzaXZlJykge1xuICAgICAgICAgICAgXy5wcm9ncmVzc2l2ZUxhenlMb2FkKCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUubmV4dCA9IFNsaWNrLnByb3RvdHlwZS5zbGlja05leHQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ25leHQnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5vcmllbnRhdGlvbkNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmNoZWNrUmVzcG9uc2l2ZSgpO1xuICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnBhdXNlID0gU2xpY2sucHJvdG90eXBlLnNsaWNrUGF1c2UgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hdXRvUGxheUNsZWFyKCk7XG4gICAgICAgIF8ucGF1c2VkID0gdHJ1ZTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucGxheSA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1BsYXkgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hdXRvUGxheSgpO1xuICAgICAgICBfLm9wdGlvbnMuYXV0b3BsYXkgPSB0cnVlO1xuICAgICAgICBfLnBhdXNlZCA9IGZhbHNlO1xuICAgICAgICBfLmZvY3Vzc2VkID0gZmFsc2U7XG4gICAgICAgIF8uaW50ZXJydXB0ZWQgPSBmYWxzZTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucG9zdFNsaWRlID0gZnVuY3Rpb24oaW5kZXgpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYoICFfLnVuc2xpY2tlZCApIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2FmdGVyQ2hhbmdlJywgW18sIGluZGV4XSk7XG5cbiAgICAgICAgICAgIF8uYW5pbWF0aW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgXy5zZXRQb3NpdGlvbigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmICggXy5vcHRpb25zLmF1dG9wbGF5ICkge1xuICAgICAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy5pbml0QURBKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLmZvY3VzT25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRjdXJyZW50U2xpZGUgPSAkKF8uJHNsaWRlcy5nZXQoXy5jdXJyZW50U2xpZGUpKTtcbiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRTbGlkZS5hdHRyKCd0YWJpbmRleCcsIDApLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucHJldiA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1ByZXYgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnByb2dyZXNzaXZlTGF6eUxvYWQgPSBmdW5jdGlvbiggdHJ5Q291bnQgKSB7XG5cbiAgICAgICAgdHJ5Q291bnQgPSB0cnlDb3VudCB8fCAxO1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgICRpbWdzVG9Mb2FkID0gJCggJ2ltZ1tkYXRhLWxhenldJywgXy4kc2xpZGVyICksXG4gICAgICAgICAgICBpbWFnZSxcbiAgICAgICAgICAgIGltYWdlU291cmNlLFxuICAgICAgICAgICAgaW1hZ2VTcmNTZXQsXG4gICAgICAgICAgICBpbWFnZVNpemVzLFxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQ7XG5cbiAgICAgICAgaWYgKCAkaW1nc1RvTG9hZC5sZW5ndGggKSB7XG5cbiAgICAgICAgICAgIGltYWdlID0gJGltZ3NUb0xvYWQuZmlyc3QoKTtcbiAgICAgICAgICAgIGltYWdlU291cmNlID0gaW1hZ2UuYXR0cignZGF0YS1sYXp5Jyk7XG4gICAgICAgICAgICBpbWFnZVNyY1NldCA9IGltYWdlLmF0dHIoJ2RhdGEtc3Jjc2V0Jyk7XG4gICAgICAgICAgICBpbWFnZVNpemVzICA9IGltYWdlLmF0dHIoJ2RhdGEtc2l6ZXMnKSB8fCBfLiRzbGlkZXIuYXR0cignZGF0YS1zaXplcycpO1xuICAgICAgICAgICAgaW1hZ2VUb0xvYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcblxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2VTcmNTZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdzcmNzZXQnLCBpbWFnZVNyY1NldCApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZVNpemVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdzaXplcycsIGltYWdlU2l6ZXMgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCAnc3JjJywgaW1hZ2VTb3VyY2UgKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGF0YS1sYXp5IGRhdGEtc3Jjc2V0IGRhdGEtc2l6ZXMnKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWxvYWRpbmcnKTtcblxuICAgICAgICAgICAgICAgIGlmICggXy5vcHRpb25zLmFkYXB0aXZlSGVpZ2h0ID09PSB0cnVlICkge1xuICAgICAgICAgICAgICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2xhenlMb2FkZWQnLCBbIF8sIGltYWdlLCBpbWFnZVNvdXJjZSBdKTtcbiAgICAgICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoKTtcblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCB0cnlDb3VudCA8IDMgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIHRyeSB0byBsb2FkIHRoZSBpbWFnZSAzIHRpbWVzLFxuICAgICAgICAgICAgICAgICAgICAgKiBsZWF2ZSBhIHNsaWdodCBkZWxheSBzbyB3ZSBkb24ndCBnZXRcbiAgICAgICAgICAgICAgICAgICAgICogc2VydmVycyBibG9ja2luZyB0aGUgcmVxdWVzdC5cbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5wcm9ncmVzc2l2ZUxhenlMb2FkKCB0cnlDb3VudCArIDEgKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwICk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0ciggJ2RhdGEtbGF6eScgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCAnc2xpY2stbG9hZGluZycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCAnc2xpY2stbGF6eWxvYWQtZXJyb3InICk7XG5cbiAgICAgICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2xhenlMb2FkRXJyb3InLCBbIF8sIGltYWdlLCBpbWFnZVNvdXJjZSBdKTtcblxuICAgICAgICAgICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQuc3JjID0gaW1hZ2VTb3VyY2U7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2FsbEltYWdlc0xvYWRlZCcsIFsgXyBdKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbiggaW5pdGlhbGl6aW5nICkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcywgY3VycmVudFNsaWRlLCBsYXN0VmlzaWJsZUluZGV4O1xuXG4gICAgICAgIGxhc3RWaXNpYmxlSW5kZXggPSBfLnNsaWRlQ291bnQgLSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuXG4gICAgICAgIC8vIGluIG5vbi1pbmZpbml0ZSBzbGlkZXJzLCB3ZSBkb24ndCB3YW50IHRvIGdvIHBhc3QgdGhlXG4gICAgICAgIC8vIGxhc3QgdmlzaWJsZSBpbmRleC5cbiAgICAgICAgaWYoICFfLm9wdGlvbnMuaW5maW5pdGUgJiYgKCBfLmN1cnJlbnRTbGlkZSA+IGxhc3RWaXNpYmxlSW5kZXggKSkge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBsYXN0VmlzaWJsZUluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgbGVzcyBzbGlkZXMgdGhhbiB0byBzaG93LCBnbyB0byBzdGFydC5cbiAgICAgICAgaWYgKCBfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcbiAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gMDtcblxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudFNsaWRlID0gXy5jdXJyZW50U2xpZGU7XG5cbiAgICAgICAgXy5kZXN0cm95KHRydWUpO1xuXG4gICAgICAgICQuZXh0ZW5kKF8sIF8uaW5pdGlhbHMsIHsgY3VycmVudFNsaWRlOiBjdXJyZW50U2xpZGUgfSk7XG5cbiAgICAgICAgXy5pbml0KCk7XG5cbiAgICAgICAgaWYoICFpbml0aWFsaXppbmcgKSB7XG5cbiAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ2luZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRTbGlkZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlZ2lzdGVyQnJlYWtwb2ludHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsIGJyZWFrcG9pbnQsIGN1cnJlbnRCcmVha3BvaW50LCBsLFxuICAgICAgICAgICAgcmVzcG9uc2l2ZVNldHRpbmdzID0gXy5vcHRpb25zLnJlc3BvbnNpdmUgfHwgbnVsbDtcblxuICAgICAgICBpZiAoICQudHlwZShyZXNwb25zaXZlU2V0dGluZ3MpID09PSAnYXJyYXknICYmIHJlc3BvbnNpdmVTZXR0aW5ncy5sZW5ndGggKSB7XG5cbiAgICAgICAgICAgIF8ucmVzcG9uZFRvID0gXy5vcHRpb25zLnJlc3BvbmRUbyB8fCAnd2luZG93JztcblxuICAgICAgICAgICAgZm9yICggYnJlYWtwb2ludCBpbiByZXNwb25zaXZlU2V0dGluZ3MgKSB7XG5cbiAgICAgICAgICAgICAgICBsID0gXy5icmVha3BvaW50cy5sZW5ndGgtMTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zaXZlU2V0dGluZ3MuaGFzT3duUHJvcGVydHkoYnJlYWtwb2ludCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEJyZWFrcG9pbnQgPSByZXNwb25zaXZlU2V0dGluZ3NbYnJlYWtwb2ludF0uYnJlYWtwb2ludDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBsb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIGFuZCBjdXQgb3V0IGFueSBleGlzdGluZ1xuICAgICAgICAgICAgICAgICAgICAvLyBvbmVzIHdpdGggdGhlIHNhbWUgYnJlYWtwb2ludCBudW1iZXIsIHdlIGRvbid0IHdhbnQgZHVwZXMuXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlKCBsID49IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggXy5icmVha3BvaW50c1tsXSAmJiBfLmJyZWFrcG9pbnRzW2xdID09PSBjdXJyZW50QnJlYWtwb2ludCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRzLnNwbGljZShsLDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbC0tO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgXy5icmVha3BvaW50cy5wdXNoKGN1cnJlbnRCcmVha3BvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgXy5icmVha3BvaW50U2V0dGluZ3NbY3VycmVudEJyZWFrcG9pbnRdID0gcmVzcG9uc2l2ZVNldHRpbmdzW2JyZWFrcG9pbnRdLnNldHRpbmdzO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uYnJlYWtwb2ludHMuc29ydChmdW5jdGlvbihhLCBiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICggXy5vcHRpb25zLm1vYmlsZUZpcnN0ICkgPyBhLWIgOiBiLWE7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlaW5pdCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLiRzbGlkZXMgPVxuICAgICAgICAgICAgXy4kc2xpZGVUcmFja1xuICAgICAgICAgICAgICAgIC5jaGlsZHJlbihfLm9wdGlvbnMuc2xpZGUpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1zbGlkZScpO1xuXG4gICAgICAgIF8uc2xpZGVDb3VudCA9IF8uJHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKF8uY3VycmVudFNsaWRlID49IF8uc2xpZGVDb3VudCAmJiBfLmN1cnJlbnRTbGlkZSAhPT0gMCkge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBfLmN1cnJlbnRTbGlkZSAtIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgXy5yZWdpc3RlckJyZWFrcG9pbnRzKCk7XG5cbiAgICAgICAgXy5zZXRQcm9wcygpO1xuICAgICAgICBfLnNldHVwSW5maW5pdGUoKTtcbiAgICAgICAgXy5idWlsZEFycm93cygpO1xuICAgICAgICBfLnVwZGF0ZUFycm93cygpO1xuICAgICAgICBfLmluaXRBcnJvd0V2ZW50cygpO1xuICAgICAgICBfLmJ1aWxkRG90cygpO1xuICAgICAgICBfLnVwZGF0ZURvdHMoKTtcbiAgICAgICAgXy5pbml0RG90RXZlbnRzKCk7XG4gICAgICAgIF8uY2xlYW5VcFNsaWRlRXZlbnRzKCk7XG4gICAgICAgIF8uaW5pdFNsaWRlRXZlbnRzKCk7XG5cbiAgICAgICAgXy5jaGVja1Jlc3BvbnNpdmUoZmFsc2UsIHRydWUpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPblNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgJChfLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9uKCdjbGljay5zbGljaycsIF8uc2VsZWN0SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICBfLnNldFNsaWRlQ2xhc3Nlcyh0eXBlb2YgXy5jdXJyZW50U2xpZGUgPT09ICdudW1iZXInID8gXy5jdXJyZW50U2xpZGUgOiAwKTtcblxuICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG4gICAgICAgIF8uZm9jdXNIYW5kbGVyKCk7XG5cbiAgICAgICAgXy5wYXVzZWQgPSAhXy5vcHRpb25zLmF1dG9wbGF5O1xuICAgICAgICBfLmF1dG9QbGF5KCk7XG5cbiAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ3JlSW5pdCcsIFtfXSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlc2l6ZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgIT09IF8ud2luZG93V2lkdGgpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChfLndpbmRvd0RlbGF5KTtcbiAgICAgICAgICAgIF8ud2luZG93RGVsYXkgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBfLndpbmRvd1dpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG4gICAgICAgICAgICAgICAgXy5jaGVja1Jlc3BvbnNpdmUoKTtcbiAgICAgICAgICAgICAgICBpZiggIV8udW5zbGlja2VkICkgeyBfLnNldFBvc2l0aW9uKCk7IH1cbiAgICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVtb3ZlU2xpZGUgPSBTbGljay5wcm90b3R5cGUuc2xpY2tSZW1vdmUgPSBmdW5jdGlvbihpbmRleCwgcmVtb3ZlQmVmb3JlLCByZW1vdmVBbGwpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHR5cGVvZihpbmRleCkgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmVtb3ZlQmVmb3JlID0gaW5kZXg7XG4gICAgICAgICAgICBpbmRleCA9IHJlbW92ZUJlZm9yZSA9PT0gdHJ1ZSA/IDAgOiBfLnNsaWRlQ291bnQgLSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5kZXggPSByZW1vdmVCZWZvcmUgPT09IHRydWUgPyAtLWluZGV4IDogaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDwgMSB8fCBpbmRleCA8IDAgfHwgaW5kZXggPiBfLnNsaWRlQ291bnQgLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgIGlmIChyZW1vdmVBbGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oKS5yZW1vdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5lcShpbmRleCkucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXMgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSk7XG5cbiAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suYXBwZW5kKF8uJHNsaWRlcyk7XG5cbiAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBfLiRzbGlkZXM7XG5cbiAgICAgICAgXy5yZWluaXQoKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0Q1NTID0gZnVuY3Rpb24ocG9zaXRpb24pIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBwb3NpdGlvblByb3BzID0ge30sXG4gICAgICAgICAgICB4LCB5O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IC1wb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICB4ID0gXy5wb3NpdGlvblByb3AgPT0gJ2xlZnQnID8gTWF0aC5jZWlsKHBvc2l0aW9uKSArICdweCcgOiAnMHB4JztcbiAgICAgICAgeSA9IF8ucG9zaXRpb25Qcm9wID09ICd0b3AnID8gTWF0aC5jZWlsKHBvc2l0aW9uKSArICdweCcgOiAnMHB4JztcblxuICAgICAgICBwb3NpdGlvblByb3BzW18ucG9zaXRpb25Qcm9wXSA9IHBvc2l0aW9uO1xuXG4gICAgICAgIGlmIChfLnRyYW5zZm9ybXNFbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MocG9zaXRpb25Qcm9wcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3NpdGlvblByb3BzID0ge307XG4gICAgICAgICAgICBpZiAoXy5jc3NUcmFuc2l0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZSgnICsgeCArICcsICcgKyB5ICsgJyknO1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKHBvc2l0aW9uUHJvcHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZTNkKCcgKyB4ICsgJywgJyArIHkgKyAnLCAwcHgpJztcbiAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhwb3NpdGlvblByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXREaW1lbnNpb25zID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRsaXN0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICgnMHB4ICcgKyBfLm9wdGlvbnMuY2VudGVyUGFkZGluZylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJGxpc3QuaGVpZ2h0KF8uJHNsaWRlcy5maXJzdCgpLm91dGVySGVpZ2h0KHRydWUpICogXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRsaXN0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IChfLm9wdGlvbnMuY2VudGVyUGFkZGluZyArICcgMHB4JylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF8ubGlzdFdpZHRoID0gXy4kbGlzdC53aWR0aCgpO1xuICAgICAgICBfLmxpc3RIZWlnaHQgPSBfLiRsaXN0LmhlaWdodCgpO1xuXG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UgJiYgXy5vcHRpb25zLnZhcmlhYmxlV2lkdGggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLnNsaWRlV2lkdGggPSBNYXRoLmNlaWwoXy5saXN0V2lkdGggLyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KTtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2sud2lkdGgoTWF0aC5jZWlsKChfLnNsaWRlV2lkdGggKiBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5sZW5ndGgpKSk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMudmFyaWFibGVXaWR0aCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay53aWR0aCg1MDAwICogXy5zbGlkZUNvdW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uc2xpZGVXaWR0aCA9IE1hdGguY2VpbChfLmxpc3RXaWR0aCk7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmhlaWdodChNYXRoLmNlaWwoKF8uJHNsaWRlcy5maXJzdCgpLm91dGVySGVpZ2h0KHRydWUpICogXy4kc2xpZGVUcmFjay5jaGlsZHJlbignLnNsaWNrLXNsaWRlJykubGVuZ3RoKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG9mZnNldCA9IF8uJHNsaWRlcy5maXJzdCgpLm91dGVyV2lkdGgodHJ1ZSkgLSBfLiRzbGlkZXMuZmlyc3QoKS53aWR0aCgpO1xuICAgICAgICBpZiAoXy5vcHRpb25zLnZhcmlhYmxlV2lkdGggPT09IGZhbHNlKSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS53aWR0aChfLnNsaWRlV2lkdGggLSBvZmZzZXQpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRGYWRlID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdGFyZ2V0TGVmdDtcblxuICAgICAgICBfLiRzbGlkZXMuZWFjaChmdW5jdGlvbihpbmRleCwgZWxlbWVudCkge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IChfLnNsaWRlV2lkdGggKiBpbmRleCkgKiAtMTtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgJChlbGVtZW50KS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHRhcmdldExlZnQsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMixcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0YXJnZXRMZWZ0LFxuICAgICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogXy5vcHRpb25zLnpJbmRleCAtIDIsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVzLmVxKF8uY3VycmVudFNsaWRlKS5jc3Moe1xuICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgfSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA9PT0gMSAmJiBfLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgPT09IHRydWUgJiYgXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdmFyIHRhcmdldEhlaWdodCA9IF8uJHNsaWRlcy5lcShfLmN1cnJlbnRTbGlkZSkub3V0ZXJIZWlnaHQodHJ1ZSk7XG4gICAgICAgICAgICBfLiRsaXN0LmNzcygnaGVpZ2h0JywgdGFyZ2V0SGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRPcHRpb24gPVxuICAgIFNsaWNrLnByb3RvdHlwZS5zbGlja1NldE9wdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBhY2NlcHRzIGFyZ3VtZW50cyBpbiBmb3JtYXQgb2Y6XG4gICAgICAgICAqXG4gICAgICAgICAqICAtIGZvciBjaGFuZ2luZyBhIHNpbmdsZSBvcHRpb24ncyB2YWx1ZTpcbiAgICAgICAgICogICAgIC5zbGljayhcInNldE9wdGlvblwiLCBvcHRpb24sIHZhbHVlLCByZWZyZXNoIClcbiAgICAgICAgICpcbiAgICAgICAgICogIC0gZm9yIGNoYW5naW5nIGEgc2V0IG9mIHJlc3BvbnNpdmUgb3B0aW9uczpcbiAgICAgICAgICogICAgIC5zbGljayhcInNldE9wdGlvblwiLCAncmVzcG9uc2l2ZScsIFt7fSwgLi4uXSwgcmVmcmVzaCApXG4gICAgICAgICAqXG4gICAgICAgICAqICAtIGZvciB1cGRhdGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgb25jZSAobm90IHJlc3BvbnNpdmUpXG4gICAgICAgICAqICAgICAuc2xpY2soXCJzZXRPcHRpb25cIiwgeyAnb3B0aW9uJzogdmFsdWUsIC4uLiB9LCByZWZyZXNoIClcbiAgICAgICAgICovXG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBsLCBpdGVtLCBvcHRpb24sIHZhbHVlLCByZWZyZXNoID0gZmFsc2UsIHR5cGU7XG5cbiAgICAgICAgaWYoICQudHlwZSggYXJndW1lbnRzWzBdICkgPT09ICdvYmplY3QnICkge1xuXG4gICAgICAgICAgICBvcHRpb24gPSAgYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgcmVmcmVzaCA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgICAgIHR5cGUgPSAnbXVsdGlwbGUnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoICQudHlwZSggYXJndW1lbnRzWzBdICkgPT09ICdzdHJpbmcnICkge1xuXG4gICAgICAgICAgICBvcHRpb24gPSAgYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgdmFsdWUgPSBhcmd1bWVudHNbMV07XG4gICAgICAgICAgICByZWZyZXNoID0gYXJndW1lbnRzWzJdO1xuXG4gICAgICAgICAgICBpZiAoIGFyZ3VtZW50c1swXSA9PT0gJ3Jlc3BvbnNpdmUnICYmICQudHlwZSggYXJndW1lbnRzWzFdICkgPT09ICdhcnJheScgKSB7XG5cbiAgICAgICAgICAgICAgICB0eXBlID0gJ3Jlc3BvbnNpdmUnO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgYXJndW1lbnRzWzFdICE9PSAndW5kZWZpbmVkJyApIHtcblxuICAgICAgICAgICAgICAgIHR5cGUgPSAnc2luZ2xlJztcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHR5cGUgPT09ICdzaW5nbGUnICkge1xuXG4gICAgICAgICAgICBfLm9wdGlvbnNbb3B0aW9uXSA9IHZhbHVlO1xuXG5cbiAgICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJ211bHRpcGxlJyApIHtcblxuICAgICAgICAgICAgJC5lYWNoKCBvcHRpb24gLCBmdW5jdGlvbiggb3B0LCB2YWwgKSB7XG5cbiAgICAgICAgICAgICAgICBfLm9wdGlvbnNbb3B0XSA9IHZhbDtcblxuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAncmVzcG9uc2l2ZScgKSB7XG5cbiAgICAgICAgICAgIGZvciAoIGl0ZW0gaW4gdmFsdWUgKSB7XG5cbiAgICAgICAgICAgICAgICBpZiggJC50eXBlKCBfLm9wdGlvbnMucmVzcG9uc2l2ZSApICE9PSAnYXJyYXknICkge1xuXG4gICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlID0gWyB2YWx1ZVtpdGVtXSBdO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICBsID0gXy5vcHRpb25zLnJlc3BvbnNpdmUubGVuZ3RoLTE7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gbG9vcCB0aHJvdWdoIHRoZSByZXNwb25zaXZlIG9iamVjdCBhbmQgc3BsaWNlIG91dCBkdXBsaWNhdGVzLlxuICAgICAgICAgICAgICAgICAgICB3aGlsZSggbCA+PSAwICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggXy5vcHRpb25zLnJlc3BvbnNpdmVbbF0uYnJlYWtwb2ludCA9PT0gdmFsdWVbaXRlbV0uYnJlYWtwb2ludCApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlLnNwbGljZShsLDEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGwtLTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnJlc3BvbnNpdmUucHVzaCggdmFsdWVbaXRlbV0gKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHJlZnJlc2ggKSB7XG5cbiAgICAgICAgICAgIF8udW5sb2FkKCk7XG4gICAgICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0UG9zaXRpb24gPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5zZXREaW1lbnNpb25zKCk7XG5cbiAgICAgICAgXy5zZXRIZWlnaHQoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLnNldENTUyhfLmdldExlZnQoXy5jdXJyZW50U2xpZGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uc2V0RmFkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ3NldFBvc2l0aW9uJywgW19dKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0UHJvcHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBib2R5U3R5bGUgPSBkb2N1bWVudC5ib2R5LnN0eWxlO1xuXG4gICAgICAgIF8ucG9zaXRpb25Qcm9wID0gXy5vcHRpb25zLnZlcnRpY2FsID09PSB0cnVlID8gJ3RvcCcgOiAnbGVmdCc7XG5cbiAgICAgICAgaWYgKF8ucG9zaXRpb25Qcm9wID09PSAndG9wJykge1xuICAgICAgICAgICAgXy4kc2xpZGVyLmFkZENsYXNzKCdzbGljay12ZXJ0aWNhbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay12ZXJ0aWNhbCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvZHlTdHlsZS5XZWJraXRUcmFuc2l0aW9uICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGJvZHlTdHlsZS5Nb3pUcmFuc2l0aW9uICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGJvZHlTdHlsZS5tc1RyYW5zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy51c2VDU1MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLmNzc1RyYW5zaXRpb25zID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmZhZGUgKSB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBfLm9wdGlvbnMuekluZGV4ID09PSAnbnVtYmVyJyApIHtcbiAgICAgICAgICAgICAgICBpZiggXy5vcHRpb25zLnpJbmRleCA8IDMgKSB7XG4gICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucy56SW5kZXggPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgXy5vcHRpb25zLnpJbmRleCA9IF8uZGVmYXVsdHMuekluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvZHlTdHlsZS5PVHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSAnT1RyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLW8tdHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAnT1RyYW5zaXRpb24nO1xuICAgICAgICAgICAgaWYgKGJvZHlTdHlsZS5wZXJzcGVjdGl2ZVByb3BlcnR5ID09PSB1bmRlZmluZWQgJiYgYm9keVN0eWxlLndlYmtpdFBlcnNwZWN0aXZlID09PSB1bmRlZmluZWQpIF8uYW5pbVR5cGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVN0eWxlLk1velRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ01velRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLW1vei10cmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9ICdNb3pUcmFuc2l0aW9uJztcbiAgICAgICAgICAgIGlmIChib2R5U3R5bGUucGVyc3BlY3RpdmVQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkICYmIGJvZHlTdHlsZS5Nb3pQZXJzcGVjdGl2ZSA9PT0gdW5kZWZpbmVkKSBfLmFuaW1UeXBlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJvZHlTdHlsZS53ZWJraXRUcmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9ICd3ZWJraXRUcmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2Zvcm1UeXBlID0gJy13ZWJraXQtdHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAnd2Via2l0VHJhbnNpdGlvbic7XG4gICAgICAgICAgICBpZiAoYm9keVN0eWxlLnBlcnNwZWN0aXZlUHJvcGVydHkgPT09IHVuZGVmaW5lZCAmJiBib2R5U3R5bGUud2Via2l0UGVyc3BlY3RpdmUgPT09IHVuZGVmaW5lZCkgXy5hbmltVHlwZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5U3R5bGUubXNUcmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9ICdtc1RyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLW1zLXRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zaXRpb25UeXBlID0gJ21zVHJhbnNpdGlvbic7XG4gICAgICAgICAgICBpZiAoYm9keVN0eWxlLm1zVHJhbnNmb3JtID09PSB1bmRlZmluZWQpIF8uYW5pbVR5cGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVN0eWxlLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkICYmIF8uYW5pbVR5cGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ3RyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAndHJhbnNpdGlvbic7XG4gICAgICAgIH1cbiAgICAgICAgXy50cmFuc2Zvcm1zRW5hYmxlZCA9IF8ub3B0aW9ucy51c2VUcmFuc2Zvcm0gJiYgKF8uYW5pbVR5cGUgIT09IG51bGwgJiYgXy5hbmltVHlwZSAhPT0gZmFsc2UpO1xuICAgIH07XG5cblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRTbGlkZUNsYXNzZXMgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGNlbnRlck9mZnNldCwgYWxsU2xpZGVzLCBpbmRleE9mZnNldCwgcmVtYWluZGVyO1xuXG4gICAgICAgIGFsbFNsaWRlcyA9IF8uJHNsaWRlclxuICAgICAgICAgICAgLmZpbmQoJy5zbGljay1zbGlkZScpXG4gICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWFjdGl2ZSBzbGljay1jZW50ZXIgc2xpY2stY3VycmVudCcpXG4gICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuXG4gICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgLmVxKGluZGV4KVxuICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1jdXJyZW50Jyk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIHZhciBldmVuQ29lZiA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgJSAyID09PSAwID8gMSA6IDA7XG5cbiAgICAgICAgICAgIGNlbnRlck9mZnNldCA9IE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gY2VudGVyT2Zmc2V0ICYmIGluZGV4IDw9IChfLnNsaWRlQ291bnQgLSAxKSAtIGNlbnRlck9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZShpbmRleCAtIGNlbnRlck9mZnNldCArIGV2ZW5Db2VmLCBpbmRleCArIGNlbnRlck9mZnNldCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW5kZXhPZmZzZXQgPSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4T2Zmc2V0IC0gY2VudGVyT2Zmc2V0ICsgMSArIGV2ZW5Db2VmLCBpbmRleE9mZnNldCArIGNlbnRlck9mZnNldCArIDIpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLmVxKGFsbFNsaWRlcy5sZW5ndGggLSAxIC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stY2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSBfLnNsaWRlQ291bnQgLSAxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAuZXEoXy5vcHRpb25zLnNsaWRlc1RvU2hvdylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stY2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy4kc2xpZGVzXG4gICAgICAgICAgICAgICAgLmVxKGluZGV4KVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stY2VudGVyJyk7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPD0gKF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpKSB7XG5cbiAgICAgICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4LCBpbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsU2xpZGVzLmxlbmd0aCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICAgICBhbGxTbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgICAgICAgICAgaW5kZXhPZmZzZXQgPSBfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUgPyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgaW5kZXggOiBpbmRleDtcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAmJiAoXy5zbGlkZUNvdW50IC0gaW5kZXgpIDwgXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4T2Zmc2V0IC0gKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSByZW1haW5kZXIpLCBpbmRleE9mZnNldCArIHJlbWFpbmRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICBhbGxTbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZShpbmRleE9mZnNldCwgaW5kZXhPZmZzZXQgKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ29uZGVtYW5kJyB8fCBfLm9wdGlvbnMubGF6eUxvYWQgPT09ICdhbnRpY2lwYXRlZCcpIHtcbiAgICAgICAgICAgIF8ubGF6eUxvYWQoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0dXBJbmZpbml0ZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGksIHNsaWRlSW5kZXgsIGluZmluaXRlQ291bnQ7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLm9wdGlvbnMuY2VudGVyTW9kZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgc2xpZGVJbmRleCA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVDb3VudCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluZmluaXRlQ291bnQgPSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IF8uc2xpZGVDb3VudDsgaSA+IChfLnNsaWRlQ291bnQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVDb3VudCk7IGkgLT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluZGV4ID0gaSAtIDE7XG4gICAgICAgICAgICAgICAgICAgICQoXy4kc2xpZGVzW3NsaWRlSW5kZXhdKS5jbG9uZSh0cnVlKS5hdHRyKCdpZCcsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBzbGlkZUluZGV4IC0gXy5zbGlkZUNvdW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmRUbyhfLiRzbGlkZVRyYWNrKS5hZGRDbGFzcygnc2xpY2stY2xvbmVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbmZpbml0ZUNvdW50ICArIF8uc2xpZGVDb3VudDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICAkKF8uJHNsaWRlc1tzbGlkZUluZGV4XSkuY2xvbmUodHJ1ZSkuYXR0cignaWQnLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLXNsaWNrLWluZGV4Jywgc2xpZGVJbmRleCArIF8uc2xpZGVDb3VudClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyhfLiRzbGlkZVRyYWNrKS5hZGRDbGFzcygnc2xpY2stY2xvbmVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suZmluZCgnLnNsaWNrLWNsb25lZCcpLmZpbmQoJ1tpZF0nKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2lkJywgJycpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbnRlcnJ1cHQgPSBmdW5jdGlvbiggdG9nZ2xlICkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiggIXRvZ2dsZSApIHtcbiAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBfLmludGVycnVwdGVkID0gdG9nZ2xlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZWxlY3RIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHRhcmdldEVsZW1lbnQgPVxuICAgICAgICAgICAgJChldmVudC50YXJnZXQpLmlzKCcuc2xpY2stc2xpZGUnKSA/XG4gICAgICAgICAgICAgICAgJChldmVudC50YXJnZXQpIDpcbiAgICAgICAgICAgICAgICAkKGV2ZW50LnRhcmdldCkucGFyZW50cygnLnNsaWNrLXNsaWRlJyk7XG5cbiAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VJbnQodGFyZ2V0RWxlbWVudC5hdHRyKCdkYXRhLXNsaWNrLWluZGV4JykpO1xuXG4gICAgICAgIGlmICghaW5kZXgpIGluZGV4ID0gMDtcblxuICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoaW5kZXgsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB9XG5cbiAgICAgICAgXy5zbGlkZUhhbmRsZXIoaW5kZXgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zbGlkZUhhbmRsZXIgPSBmdW5jdGlvbihpbmRleCwgc3luYywgZG9udEFuaW1hdGUpIHtcblxuICAgICAgICB2YXIgdGFyZ2V0U2xpZGUsIGFuaW1TbGlkZSwgb2xkU2xpZGUsIHNsaWRlTGVmdCwgdGFyZ2V0TGVmdCA9IG51bGwsXG4gICAgICAgICAgICBfID0gdGhpcywgbmF2VGFyZ2V0O1xuXG4gICAgICAgIHN5bmMgPSBzeW5jIHx8IGZhbHNlO1xuXG4gICAgICAgIGlmIChfLmFuaW1hdGluZyA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMud2FpdEZvckFuaW1hdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gdHJ1ZSAmJiBfLmN1cnJlbnRTbGlkZSA9PT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzeW5jID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy5hc05hdkZvcihpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXRTbGlkZSA9IGluZGV4O1xuICAgICAgICB0YXJnZXRMZWZ0ID0gXy5nZXRMZWZ0KHRhcmdldFNsaWRlKTtcbiAgICAgICAgc2xpZGVMZWZ0ID0gXy5nZXRMZWZ0KF8uY3VycmVudFNsaWRlKTtcblxuICAgICAgICBfLmN1cnJlbnRMZWZ0ID0gXy5zd2lwZUxlZnQgPT09IG51bGwgPyBzbGlkZUxlZnQgOiBfLnN3aXBlTGVmdDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gZmFsc2UgJiYgKGluZGV4IDwgMCB8fCBpbmRleCA+IF8uZ2V0RG90Q291bnQoKSAqIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgICAgIGlmIChkb250QW5pbWF0ZSAhPT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uYW5pbWF0ZVNsaWRlKHNsaWRlTGVmdCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZSh0YXJnZXRTbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKHRhcmdldFNsaWRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSAmJiAoaW5kZXggPCAwIHx8IGluZGV4ID4gKF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLmN1cnJlbnRTbGlkZTtcbiAgICAgICAgICAgICAgICBpZiAoZG9udEFuaW1hdGUgIT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgICAgICAgICBfLmFuaW1hdGVTbGlkZShzbGlkZUxlZnQsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUodGFyZ2V0U2xpZGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZSh0YXJnZXRTbGlkZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKF8uYXV0b1BsYXlUaW1lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0U2xpZGUgPCAwKSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgYW5pbVNsaWRlID0gXy5zbGlkZUNvdW50IC0gKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFuaW1TbGlkZSA9IF8uc2xpZGVDb3VudCArIHRhcmdldFNsaWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldFNsaWRlID49IF8uc2xpZGVDb3VudCkge1xuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGFuaW1TbGlkZSA9IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFuaW1TbGlkZSA9IHRhcmdldFNsaWRlIC0gXy5zbGlkZUNvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5pbVNsaWRlID0gdGFyZ2V0U2xpZGU7XG4gICAgICAgIH1cblxuICAgICAgICBfLmFuaW1hdGluZyA9IHRydWU7XG5cbiAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2JlZm9yZUNoYW5nZScsIFtfLCBfLmN1cnJlbnRTbGlkZSwgYW5pbVNsaWRlXSk7XG5cbiAgICAgICAgb2xkU2xpZGUgPSBfLmN1cnJlbnRTbGlkZTtcbiAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBhbmltU2xpZGU7XG5cbiAgICAgICAgXy5zZXRTbGlkZUNsYXNzZXMoXy5jdXJyZW50U2xpZGUpO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmFzTmF2Rm9yICkge1xuXG4gICAgICAgICAgICBuYXZUYXJnZXQgPSBfLmdldE5hdlRhcmdldCgpO1xuICAgICAgICAgICAgbmF2VGFyZ2V0ID0gbmF2VGFyZ2V0LnNsaWNrKCdnZXRTbGljaycpO1xuXG4gICAgICAgICAgICBpZiAoIG5hdlRhcmdldC5zbGlkZUNvdW50IDw9IG5hdlRhcmdldC5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcbiAgICAgICAgICAgICAgICBuYXZUYXJnZXQuc2V0U2xpZGVDbGFzc2VzKF8uY3VycmVudFNsaWRlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgXy51cGRhdGVEb3RzKCk7XG4gICAgICAgIF8udXBkYXRlQXJyb3dzKCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoZG9udEFuaW1hdGUgIT09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIF8uZmFkZVNsaWRlT3V0KG9sZFNsaWRlKTtcblxuICAgICAgICAgICAgICAgIF8uZmFkZVNsaWRlKGFuaW1TbGlkZSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKGFuaW1TbGlkZSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUoYW5pbVNsaWRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF8uYW5pbWF0ZUhlaWdodCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvbnRBbmltYXRlICE9PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uYW5pbWF0ZVNsaWRlKHRhcmdldExlZnQsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKGFuaW1TbGlkZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8ucG9zdFNsaWRlKGFuaW1TbGlkZSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3RhcnRMb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYXJyb3dzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93LmhpZGUoKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdy5oaWRlKCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgIF8uJGRvdHMuaGlkZSgpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLWxvYWRpbmcnKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVEaXJlY3Rpb24gPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgeERpc3QsIHlEaXN0LCByLCBzd2lwZUFuZ2xlLCBfID0gdGhpcztcblxuICAgICAgICB4RGlzdCA9IF8udG91Y2hPYmplY3Quc3RhcnRYIC0gXy50b3VjaE9iamVjdC5jdXJYO1xuICAgICAgICB5RGlzdCA9IF8udG91Y2hPYmplY3Quc3RhcnRZIC0gXy50b3VjaE9iamVjdC5jdXJZO1xuICAgICAgICByID0gTWF0aC5hdGFuMih5RGlzdCwgeERpc3QpO1xuXG4gICAgICAgIHN3aXBlQW5nbGUgPSBNYXRoLnJvdW5kKHIgKiAxODAgLyBNYXRoLlBJKTtcbiAgICAgICAgaWYgKHN3aXBlQW5nbGUgPCAwKSB7XG4gICAgICAgICAgICBzd2lwZUFuZ2xlID0gMzYwIC0gTWF0aC5hYnMoc3dpcGVBbmdsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHN3aXBlQW5nbGUgPD0gNDUpICYmIChzd2lwZUFuZ2xlID49IDApKSB7XG4gICAgICAgICAgICByZXR1cm4gKF8ub3B0aW9ucy5ydGwgPT09IGZhbHNlID8gJ2xlZnQnIDogJ3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChzd2lwZUFuZ2xlIDw9IDM2MCkgJiYgKHN3aXBlQW5nbGUgPj0gMzE1KSkge1xuICAgICAgICAgICAgcmV0dXJuIChfLm9wdGlvbnMucnRsID09PSBmYWxzZSA/ICdsZWZ0JyA6ICdyaWdodCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoc3dpcGVBbmdsZSA+PSAxMzUpICYmIChzd2lwZUFuZ2xlIDw9IDIyNSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXy5vcHRpb25zLnJ0bCA9PT0gZmFsc2UgPyAncmlnaHQnIDogJ2xlZnQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKChzd2lwZUFuZ2xlID49IDM1KSAmJiAoc3dpcGVBbmdsZSA8PSAxMzUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkb3duJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd1cCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3ZlcnRpY2FsJztcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVFbmQgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHNsaWRlQ291bnQsXG4gICAgICAgICAgICBkaXJlY3Rpb247XG5cbiAgICAgICAgXy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICBfLnN3aXBpbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAoXy5zY3JvbGxpbmcpIHtcbiAgICAgICAgICAgIF8uc2Nyb2xsaW5nID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLmludGVycnVwdGVkID0gZmFsc2U7XG4gICAgICAgIF8uc2hvdWxkQ2xpY2sgPSAoIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPiAxMCApID8gZmFsc2UgOiB0cnVlO1xuXG4gICAgICAgIGlmICggXy50b3VjaE9iamVjdC5jdXJYID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8udG91Y2hPYmplY3QuZWRnZUhpdCA9PT0gdHJ1ZSApIHtcbiAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdlZGdlJywgW18sIF8uc3dpcGVEaXJlY3Rpb24oKSBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA+PSBfLnRvdWNoT2JqZWN0Lm1pblN3aXBlICkge1xuXG4gICAgICAgICAgICBkaXJlY3Rpb24gPSBfLnN3aXBlRGlyZWN0aW9uKCk7XG5cbiAgICAgICAgICAgIHN3aXRjaCAoIGRpcmVjdGlvbiApIHtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlQ291bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnN3aXBlVG9TbGlkZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5jaGVja05hdmlnYWJsZSggXy5jdXJyZW50U2xpZGUgKyBfLmdldFNsaWRlQ291bnQoKSApIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSArIF8uZ2V0U2xpZGVDb3VudCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIF8uY3VycmVudERpcmVjdGlvbiA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndXAnOlxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlQ291bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnN3aXBlVG9TbGlkZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5jaGVja05hdmlnYWJsZSggXy5jdXJyZW50U2xpZGUgLSBfLmdldFNsaWRlQ291bnQoKSApIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSAtIF8uZ2V0U2xpZGVDb3VudCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIF8uY3VycmVudERpcmVjdGlvbiA9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoIGRpcmVjdGlvbiAhPSAndmVydGljYWwnICkge1xuXG4gICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoIHNsaWRlQ291bnQgKTtcbiAgICAgICAgICAgICAgICBfLnRvdWNoT2JqZWN0ID0ge307XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ3N3aXBlJywgW18sIGRpcmVjdGlvbiBdKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGlmICggXy50b3VjaE9iamVjdC5zdGFydFggIT09IF8udG91Y2hPYmplY3QuY3VyWCApIHtcblxuICAgICAgICAgICAgICAgIF8uc2xpZGVIYW5kbGVyKCBfLmN1cnJlbnRTbGlkZSApO1xuICAgICAgICAgICAgICAgIF8udG91Y2hPYmplY3QgPSB7fTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKChfLm9wdGlvbnMuc3dpcGUgPT09IGZhbHNlKSB8fCAoJ29udG91Y2hlbmQnIGluIGRvY3VtZW50ICYmIF8ub3B0aW9ucy5zd2lwZSA9PT0gZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmRyYWdnYWJsZSA9PT0gZmFsc2UgJiYgZXZlbnQudHlwZS5pbmRleE9mKCdtb3VzZScpICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5maW5nZXJDb3VudCA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQgJiYgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzICE9PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aCA6IDE7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5taW5Td2lwZSA9IF8ubGlzdFdpZHRoIC8gXy5vcHRpb25zXG4gICAgICAgICAgICAudG91Y2hUaHJlc2hvbGQ7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8udG91Y2hPYmplY3QubWluU3dpcGUgPSBfLmxpc3RIZWlnaHQgLyBfLm9wdGlvbnNcbiAgICAgICAgICAgICAgICAudG91Y2hUaHJlc2hvbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmRhdGEuYWN0aW9uKSB7XG5cbiAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICBfLnN3aXBlU3RhcnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdtb3ZlJzpcbiAgICAgICAgICAgICAgICBfLnN3aXBlTW92ZShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgXy5zd2lwZUVuZChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zd2lwZU1vdmUgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGVkZ2VXYXNIaXQgPSBmYWxzZSxcbiAgICAgICAgICAgIGN1ckxlZnQsIHN3aXBlRGlyZWN0aW9uLCBzd2lwZUxlbmd0aCwgcG9zaXRpb25PZmZzZXQsIHRvdWNoZXMsIHZlcnRpY2FsU3dpcGVMZW5ndGg7XG5cbiAgICAgICAgdG91Y2hlcyA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQgIT09IHVuZGVmaW5lZCA/IGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlcyA6IG51bGw7XG5cbiAgICAgICAgaWYgKCFfLmRyYWdnaW5nIHx8IF8uc2Nyb2xsaW5nIHx8IHRvdWNoZXMgJiYgdG91Y2hlcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1ckxlZnQgPSBfLmdldExlZnQoXy5jdXJyZW50U2xpZGUpO1xuXG4gICAgICAgIF8udG91Y2hPYmplY3QuY3VyWCA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXNbMF0ucGFnZVggOiBldmVudC5jbGllbnRYO1xuICAgICAgICBfLnRvdWNoT2JqZWN0LmN1clkgPSB0b3VjaGVzICE9PSB1bmRlZmluZWQgPyB0b3VjaGVzWzBdLnBhZ2VZIDogZXZlbnQuY2xpZW50WTtcblxuICAgICAgICBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoXG4gICAgICAgICAgICBNYXRoLnBvdyhfLnRvdWNoT2JqZWN0LmN1clggLSBfLnRvdWNoT2JqZWN0LnN0YXJ0WCwgMikpKTtcblxuICAgICAgICB2ZXJ0aWNhbFN3aXBlTGVuZ3RoID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoXG4gICAgICAgICAgICBNYXRoLnBvdyhfLnRvdWNoT2JqZWN0LmN1clkgLSBfLnRvdWNoT2JqZWN0LnN0YXJ0WSwgMikpKTtcblxuICAgICAgICBpZiAoIV8ub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgJiYgIV8uc3dpcGluZyAmJiB2ZXJ0aWNhbFN3aXBlTGVuZ3RoID4gNCkge1xuICAgICAgICAgICAgXy5zY3JvbGxpbmcgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPSB2ZXJ0aWNhbFN3aXBlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpcGVEaXJlY3Rpb24gPSBfLnN3aXBlRGlyZWN0aW9uKCk7XG5cbiAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbmFsRXZlbnQgIT09IHVuZGVmaW5lZCAmJiBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID4gNCkge1xuICAgICAgICAgICAgXy5zd2lwaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBwb3NpdGlvbk9mZnNldCA9IChfLm9wdGlvbnMucnRsID09PSBmYWxzZSA/IDEgOiAtMSkgKiAoXy50b3VjaE9iamVjdC5jdXJYID4gXy50b3VjaE9iamVjdC5zdGFydFggPyAxIDogLTEpO1xuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcG9zaXRpb25PZmZzZXQgPSBfLnRvdWNoT2JqZWN0LmN1clkgPiBfLnRvdWNoT2JqZWN0LnN0YXJ0WSA/IDEgOiAtMTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgc3dpcGVMZW5ndGggPSBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoO1xuXG4gICAgICAgIF8udG91Y2hPYmplY3QuZWRnZUhpdCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoKF8uY3VycmVudFNsaWRlID09PSAwICYmIHN3aXBlRGlyZWN0aW9uID09PSAncmlnaHQnKSB8fCAoXy5jdXJyZW50U2xpZGUgPj0gXy5nZXREb3RDb3VudCgpICYmIHN3aXBlRGlyZWN0aW9uID09PSAnbGVmdCcpKSB7XG4gICAgICAgICAgICAgICAgc3dpcGVMZW5ndGggPSBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoICogXy5vcHRpb25zLmVkZ2VGcmljdGlvbjtcbiAgICAgICAgICAgICAgICBfLnRvdWNoT2JqZWN0LmVkZ2VIaXQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uc3dpcGVMZWZ0ID0gY3VyTGVmdCArIHN3aXBlTGVuZ3RoICogcG9zaXRpb25PZmZzZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IGN1ckxlZnQgKyAoc3dpcGVMZW5ndGggKiAoXy4kbGlzdC5oZWlnaHQoKSAvIF8ubGlzdFdpZHRoKSkgKiBwb3NpdGlvbk9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy5zd2lwZUxlZnQgPSBjdXJMZWZ0ICsgc3dpcGVMZW5ndGggKiBwb3NpdGlvbk9mZnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gdHJ1ZSB8fCBfLm9wdGlvbnMudG91Y2hNb3ZlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uYW5pbWF0aW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLnNldENTUyhfLnN3aXBlTGVmdCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnN3aXBlU3RhcnQgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHRvdWNoZXM7XG5cbiAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKF8udG91Y2hPYmplY3QuZmluZ2VyQ291bnQgIT09IDEgfHwgXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8udG91Y2hPYmplY3QgPSB7fTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5vcmlnaW5hbEV2ZW50ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRvdWNoZXMgPSBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBfLnRvdWNoT2JqZWN0LnN0YXJ0WCA9IF8udG91Y2hPYmplY3QuY3VyWCA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXMucGFnZVggOiBldmVudC5jbGllbnRYO1xuICAgICAgICBfLnRvdWNoT2JqZWN0LnN0YXJ0WSA9IF8udG91Y2hPYmplY3QuY3VyWSA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXMucGFnZVkgOiBldmVudC5jbGllbnRZO1xuXG4gICAgICAgIF8uZHJhZ2dpbmcgPSB0cnVlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51bmZpbHRlclNsaWRlcyA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1VuZmlsdGVyID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLiRzbGlkZXNDYWNoZSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc0NhY2hlLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuXG4gICAgICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUudW5sb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgICQoJy5zbGljay1jbG9uZWQnLCBfLiRzbGlkZXIpLnJlbW92ZSgpO1xuXG4gICAgICAgIGlmIChfLiRkb3RzKSB7XG4gICAgICAgICAgICBfLiRkb3RzLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uJHByZXZBcnJvdyAmJiBfLmh0bWxFeHByLnRlc3QoXy5vcHRpb25zLnByZXZBcnJvdykpIHtcbiAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLiRuZXh0QXJyb3cgJiYgXy5odG1sRXhwci50ZXN0KF8ub3B0aW9ucy5uZXh0QXJyb3cpKSB7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stc2xpZGUgc2xpY2stYWN0aXZlIHNsaWNrLXZpc2libGUgc2xpY2stY3VycmVudCcpXG4gICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpXG4gICAgICAgICAgICAuY3NzKCd3aWR0aCcsICcnKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUudW5zbGljayA9IGZ1bmN0aW9uKGZyb21CcmVha3BvaW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcigndW5zbGljaycsIFtfLCBmcm9tQnJlYWtwb2ludF0pO1xuICAgICAgICBfLmRlc3Ryb3koKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUudXBkYXRlQXJyb3dzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgY2VudGVyT2Zmc2V0O1xuXG4gICAgICAgIGNlbnRlck9mZnNldCA9IE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmFycm93cyA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJlxuICAgICAgICAgICAgIV8ub3B0aW9ucy5pbmZpbml0ZSApIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93LnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIGlmIChfLmN1cnJlbnRTbGlkZSA9PT0gMCkge1xuXG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93LmFkZENsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5hZGRDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF8uY3VycmVudFNsaWRlID49IF8uc2xpZGVDb3VudCAtIDEgJiYgXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5hZGRDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51cGRhdGVEb3RzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLiRkb3RzICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIF8uJGRvdHNcbiAgICAgICAgICAgICAgICAuZmluZCgnbGknKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgIC5lbmQoKTtcblxuICAgICAgICAgICAgXy4kZG90c1xuICAgICAgICAgICAgICAgIC5maW5kKCdsaScpXG4gICAgICAgICAgICAgICAgLmVxKE1hdGguZmxvb3IoXy5jdXJyZW50U2xpZGUgLyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpKVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJyk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS52aXNpYmlsaXR5ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmF1dG9wbGF5ICkge1xuXG4gICAgICAgICAgICBpZiAoIGRvY3VtZW50W18uaGlkZGVuXSApIHtcblxuICAgICAgICAgICAgICAgIF8uaW50ZXJydXB0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgICQuZm4uc2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgb3B0ID0gYXJndW1lbnRzWzBdLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSksXG4gICAgICAgICAgICBsID0gXy5sZW5ndGgsXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcmV0O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdCA9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb3B0ID09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIF9baV0uc2xpY2sgPSBuZXcgU2xpY2soX1tpXSwgb3B0KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXQgPSBfW2ldLnNsaWNrW29wdF0uYXBwbHkoX1tpXS5zbGljaywgYXJncyk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJldCAhPSAndW5kZWZpbmVkJykgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXztcbiAgICB9O1xuXG59KSk7XG4iLCIoZnVuY3Rpb24gKCAkICkge1xuXG4gIGlmKHR5cGVvZiAkID09PSAndW5kZWZpbmVkJykge1xuICAgIGlmKCdjb25zb2xlJyBpbiB3aW5kb3cpIHdpbmRvdy5jb25zb2xlLndhcm4oJ1pvb21Cb3guanMgbmVlZHMgalF1ZXJ5ISBBYm9ydGVkIGxvYWRpbmcuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYodHlwZW9mICQuZm4uc2xpY2sgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYoJ2NvbnNvbGUnIGluIHdpbmRvdykgd2luZG93LmNvbnNvbGUud2FybignWm9vbUJveC5qcyBuZWVkcyBTbGljayBDYXJvdXNlbCBqUXVlcnkgUGx1Z2luISBBYm9ydGVkIGxvYWRpbmcuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGRlZmF1bHRWYWx1ZXMgPSB7XG4gICAgYXV0b3BsYXlTcGVlZDogNTAwMCxcbiAgICBidXR0b25DbGFzczogJ3pvb21ib3gtY2xvc2UtYnRuJyxcbiAgICBjZW50ZXJJbWFnZXM6IHRydWUsXG4gICAgY2xvc2VPbkJsdXJDbGljazogdHJ1ZSxcbiAgICBjb250YWluZXJJZDogJ3pvb21ib3gtb3ZlcmxheScsXG4gICAgZGlzYWJsZUF1dG9wbGF5T25Ib3ZlcjogZmFsc2UsXG4gICAgZGlzYWJsZVRvdWNoTW92ZTogZmFsc2UsXG4gICAgZW5hYmxlQXV0b3BsYXk6IGZhbHNlLFxuICAgIGVuZm9yY2VDaGFpbmluZzogZmFsc2UsXG4gICAgZmFkZUR1cmF0aW9uOiAzMDAsXG4gICAgaWdub3JlSW5wdXRPbk1vdmU6IHRydWUsXG4gICAgaW1hZ2VDbGFzczogJ3pvb21ib3gtaW1hZ2UnLFxuICAgIGlubmVyQ2xhc3M6ICd6b29tYm94LWlubmVyJyxcbiAgICBsaXN0ZW5LZXlzOiB0cnVlLFxuICAgIHNob3dBc0dhbGxlcnk6IGZhbHNlLFxuICAgIHNsaWRlckRyYWdnYWJsZTogdHJ1ZSxcbiAgICBzbGlkZXJMb29wZWQ6IHRydWUsXG4gICAgc2xpZGVyTmV4dEJ1dHRvbjogJzxzdmcgdmVyc2lvbj1cIjEuMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2aWV3Qm94PVwiMCAwIDggMTRcIj48cGF0aCBkPVwiTTQuNjQ4IDcuNXEwIDAuMTAyLTAuMDc4IDAuMThsLTMuNjQxIDMuNjQxcS0wLjA3OCAwLjA3OC0wLjE4IDAuMDc4dC0wLjE4LTAuMDc4bC0wLjM5MS0wLjM5MXEtMC4wNzgtMC4wNzgtMC4wNzgtMC4xOHQwLjA3OC0wLjE4bDMuMDcwLTMuMDcwLTMuMDcwLTMuMDcwcS0wLjA3OC0wLjA3OC0wLjA3OC0wLjE4dDAuMDc4LTAuMThsMC4zOTEtMC4zOTFxMC4wNzgtMC4wNzggMC4xOC0wLjA3OHQwLjE4IDAuMDc4bDMuNjQxIDMuNjQxcTAuMDc4IDAuMDc4IDAuMDc4IDAuMTh6TTcuNjQ4IDcuNXEwIDAuMTAyLTAuMDc4IDAuMThsLTMuNjQxIDMuNjQxcS0wLjA3OCAwLjA3OC0wLjE4IDAuMDc4dC0wLjE4LTAuMDc4bC0wLjM5MS0wLjM5MXEtMC4wNzgtMC4wNzgtMC4wNzgtMC4xOHQwLjA3OC0wLjE4bDMuMDcwLTMuMDcwLTMuMDcwLTMuMDcwcS0wLjA3OC0wLjA3OC0wLjA3OC0wLjE4dDAuMDc4LTAuMThsMC4zOTEtMC4zOTFxMC4wNzgtMC4wNzggMC4xOC0wLjA3OHQwLjE4IDAuMDc4bDMuNjQxIDMuNjQxcTAuMDc4IDAuMDc4IDAuMDc4IDAuMTh6XCI+PC9wYXRoPjwvc3ZnPicsXG4gICAgc2xpZGVyUHJldkJ1dHRvbjogJzxzdmcgdmVyc2lvbj1cIjEuMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2aWV3Qm94PVwiMCAwIDggMTRcIj48cGF0aCBkPVwiTTQuODk4IDEwLjc1cTAgMC4xMDItMC4wNzggMC4xOGwtMC4zOTEgMC4zOTFxLTAuMDc4IDAuMDc4LTAuMTggMC4wNzh0LTAuMTgtMC4wNzhsLTMuNjQxLTMuNjQxcS0wLjA3OC0wLjA3OC0wLjA3OC0wLjE4dDAuMDc4LTAuMThsMy42NDEtMy42NDFxMC4wNzgtMC4wNzggMC4xOC0wLjA3OHQwLjE4IDAuMDc4bDAuMzkxIDAuMzkxcTAuMDc4IDAuMDc4IDAuMDc4IDAuMTh0LTAuMDc4IDAuMThsLTMuMDcwIDMuMDcwIDMuMDcwIDMuMDcwcTAuMDc4IDAuMDc4IDAuMDc4IDAuMTh6TTcuODk4IDEwLjc1cTAgMC4xMDItMC4wNzggMC4xOGwtMC4zOTEgMC4zOTFxLTAuMDc4IDAuMDc4LTAuMTggMC4wNzh0LTAuMTgtMC4wNzhsLTMuNjQxLTMuNjQxcS0wLjA3OC0wLjA3OC0wLjA3OC0wLjE4dDAuMDc4LTAuMThsMy42NDEtMy42NDFxMC4wNzgtMC4wNzggMC4xOC0wLjA3OHQwLjE4IDAuMDc4bDAuMzkxIDAuMzkxcTAuMDc4IDAuMDc4IDAuMDc4IDAuMTh0LTAuMDc4IDAuMThsLTMuMDcwIDMuMDcwIDMuMDcwIDMuMDcwcTAuMDc4IDAuMDc4IDAuMDc4IDAuMTh6XCI+PC9wYXRoPjwvc3ZnPicsXG4gICAgc2xpZGVUcmFuc2l0aW9uOiAnZWFzZScsXG4gICAgc2xpZGVUcmFuc2l0aW9uU3BlZWQ6IDMwMCxcbiAgICB0ZW1wb3Jhcnk6IGZhbHNlLFxuICAgIHdyYXBwZXJDbGFzczogJ3pvb21ib3gtaW1hZ2Utd3JhcHBlcicsXG4gIH1cblxuICB2YXIgc3RhdGUgPSB7XG4gICAgaW5pdGlhbGl6ZWQ6IGZhbHNlLFxuICAgIHZpc2libGU6IGZhbHNlLFxuICAgIGN1cnJlbnRTbGlkZTogdW5kZWZpbmVkLFxuICAgIHNsaWRlQ291bnQ6IHVuZGVmaW5lZCxcbiAgfVxuXG4gICQuZm4uem9vbWJveCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBpZihvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IodmFyIHNldHRpbmcgaW4gZGVmYXVsdFZhbHVlcykge1xuICAgICAgICBpZihkZWZhdWx0VmFsdWVzLmhhc093blByb3BlcnR5KHNldHRpbmcpICYmIChvcHRpb25zW3NldHRpbmddID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGRlZmF1bHRWYWx1ZXNbc2V0dGluZ10gIT09IHR5cGVvZiBvcHRpb25zW3NldHRpbmddKSkge1xuICAgICAgICAgIGlmKG9wdGlvbnNbc2V0dGluZ10gIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZGVmYXVsdFZhbHVlc1tzZXR0aW5nXSAhPT0gdHlwZW9mIG9wdGlvbnNbc2V0dGluZ10pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW1pvb21Cb3guanNdIFJlcGxhY2VkIGludmFsaWQgb3B0aW9uICcrc2V0dGluZysnIHdpdGggZGVmYXVsdCB2YWx1ZSEnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvcHRpb25zW3NldHRpbmddID0gZGVmYXVsdFZhbHVlc1tzZXR0aW5nXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zID0gZGVmYXVsdFZhbHVlcztcbiAgICB9XG5cbiAgICBpZihvcHRpb25zLnRlbXBvcmFyeSkge1xuICAgICAgdmFyIG92ZXJsYXkgPSAkKGRvY3VtZW50LmJvZHkpLmFwcGVuZCgnPGRpdiBpZD1cIicgKyBvcHRpb25zLmNvbnRhaW5lcklkICsgJy10ZW1wJyArICdcIiBjbGFzcz1cInpvb21ib3gtb3ZlcmxheVwiPjxkaXYgY2xhc3M9XCInICsgb3B0aW9ucy5idXR0b25DbGFzcyArICdcIj4mdGltZXM7PC9kaXY+PGRpdiBjbGFzcz1cIicgKyBvcHRpb25zLmlubmVyQ2xhc3MgKyAnXCI+PC9kaXY+PC9kaXY+JykuZmluZCgnIycgKyBvcHRpb25zLmNvbnRhaW5lcklkICsgJy10ZW1wJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvdmVybGF5ID0gJChkb2N1bWVudC5ib2R5KS5hcHBlbmQoJzxkaXYgaWQ9XCInICsgb3B0aW9ucy5jb250YWluZXJJZCArICdcIiBjbGFzcz1cInpvb21ib3gtb3ZlcmxheVwiPjxkaXYgY2xhc3M9XCInICsgb3B0aW9ucy5idXR0b25DbGFzcyArICdcIj4mdGltZXM7PC9kaXY+PGRpdiBjbGFzcz1cIicgKyBvcHRpb25zLmlubmVyQ2xhc3MgKyAnXCI+PC9kaXY+PC9kaXY+JykuZmluZCgnIycgKyBvcHRpb25zLmNvbnRhaW5lcklkKTtcbiAgICB9XG4gICAgdmFyIGlubmVyID0gb3ZlcmxheS5maW5kKCcuJytvcHRpb25zLmlubmVyQ2xhc3MpO1xuXG4gICAgaWYob3B0aW9ucy5jbG9zZU9uQmx1ckNsaWNrKSB7XG4gICAgICBvdmVybGF5Lm9uKCdjbGljaycsZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmKCEkKGV2ZW50LnRhcmdldCkuaXMoJy5zbGljay1zbGlkZSAqLCAuc2xpY2stYXJyb3csIC5zbGljay1hcnJvdyAqJykpIHtcbiAgICAgICAgICBvdmVybGF5LnRyaWdnZXIoJ3pvb21ib3hPdmVybGF5SGlkaW5nJyk7XG4gICAgICAgICAgb3ZlcmxheS5mYWRlT3V0KG9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmKG9wdGlvbnMudGVtcG9yYXJ5KSB7XG4gICAgICAgICAgICAgIGlubmVyLnNsaWNrKCd1bnNsaWNrJyk7XG4gICAgICAgICAgICAgIG92ZXJsYXkucmVtb3ZlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpbm5lci5zbGljaygnc2xpY2tVbmZpbHRlcicsMCk7XG4gICAgICAgICAgICAgIHN0YXRlLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG92ZXJsYXkudHJpZ2dlcignem9vbWJveE92ZXJsYXlIaWRkZW4nKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgb3ZlcmxheS5vbignY2xpY2snLGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBpZigkKGV2ZW50LnRhcmdldCkuaXMoJy4nK29wdGlvbnMuYnV0dG9uQ2xhc3MpKSB7XG4gICAgICAgICAgb3ZlcmxheS50cmlnZ2VyKCd6b29tYm94T3ZlcmxheUhpZGluZycpO1xuICAgICAgICAgIG92ZXJsYXkuZmFkZU91dChvcHRpb25zLmZhZGVEdXJhdGlvbixmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZihvcHRpb25zLnRlbXBvcmFyeSkge1xuICAgICAgICAgICAgICBpbm5lci5zbGljaygndW5zbGljaycpO1xuICAgICAgICAgICAgICBvdmVybGF5LnJlbW92ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaW5uZXIuc2xpY2soJ3NsaWNrVW5maWx0ZXInLDApO1xuICAgICAgICAgICAgICBzdGF0ZS52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdmVybGF5LnRyaWdnZXIoJ3pvb21ib3hPdmVybGF5SGlkZGVuJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZihvcHRpb25zLmZvcmNlU291cmNlQXR0cikge1xuICAgICAgICB2YXIgc3JjID0gJCh0aGlzW2ldKS5hdHRyKG9wdGlvbnMuZm9yY2VTb3VyY2VBdHRyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKCQodGhpc1tpXSkuaXMoJ2EnKSkge1xuICAgICAgICAgIHZhciBzcmMgPSAkKHRoaXNbaV0pLmF0dHIoJ2hyZWYnKTtcbiAgICAgICAgfSBlbHNlIGlmKCQodGhpc1tpXSkuaXMoJ2ltZycpKSB7XG4gICAgICAgICAgdmFyIHNyYyA9ICQodGhpc1tpXSkuYXR0cignc3JjJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHNyYyA9ICQodGhpc1tpXSkuZGF0YSgnc3JjJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHJlbCA9ICQodGhpc1tpXSkuYXR0cigncmVsJyk7XG5cbiAgICAgIHZhciB0bXAgPSAnPGRpdiBjbGFzcz1cIicgKyBvcHRpb25zLndyYXBwZXJDbGFzcyArICdcIj48aW1nIHNyYz1cIicgKyBzcmMgKyAnXCIgY2xhc3M9XCInICsgb3B0aW9ucy5pbWFnZUNsYXNzICsgJ1wiICc7XG4gICAgICBpZihyZWwgIT09IHVuZGVmaW5lZCAmJiByZWwgIT09IGZhbHNlICYmIHJlbCAhPT0gJycpIHtcbiAgICAgICAgdG1wICs9ICdyZWw9XCInICsgcmVsICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIHRtcCArPSAnLz48L2Rpdj4nO1xuXG4gICAgICBpbm5lci5hcHBlbmQodG1wKTtcblxuICAgICAgaWYoIW9wdGlvbnMudGVtcG9yYXJ5KSB7XG4gICAgICAgICQodGhpc1tpXSkuYXR0cignZGF0YS1pbmRleCcsaSkub24oJ2NsaWNrJyxmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgb3ZlcmxheS50cmlnZ2VyKCd6b29tYm94T3ZlcmxheVNob3dpbmcnKTtcblxuICAgICAgICAgIG92ZXJsYXkuZmFkZUluKG9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0YXRlLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgb3ZlcmxheS50cmlnZ2VyKCd6b29tYm94T3ZlcmxheVNob3duJyk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpbm5lci5zbGljaygnc2xpY2tHb1RvJywkKHRoaXMpLmRhdGEoJ2luZGV4JyksdHJ1ZSk7XG4gICAgICAgICAgc3RhdGUuY3VycmVudFNsaWRlID0gaW5uZXIuc2xpY2soJ3NsaWNrQ3VycmVudFNsaWRlJyk7XG5cbiAgICAgICAgICBpZigkKHRoaXMpLmF0dHIoJ3JlbCcpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciByZWwgPSAkKHRoaXMpLmF0dHIoJ3JlbCcpO1xuXG4gICAgICAgICAgICBpbm5lci5zbGljaygnc2xpY2tGaWx0ZXInLGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICgkKHRoaXMpLmZpbmQoJ2ltZycpLmF0dHIoJ3JlbCcpID09PSByZWwpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvd0FzR2FsbGVyeSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICBpZiAob3B0aW9ucy5mb3JjZVNvdXJjZUF0dHIpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3JjID0gJChfdGhpcykuYXR0cihvcHRpb25zLmZvcmNlU291cmNlQXR0cik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCQoX3RoaXMpLmlzKCdhJykpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBzcmMgPSAkKF90aGlzKS5hdHRyKCdocmVmJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKF90aGlzKS5pcygnaW1nJykpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBzcmMgPSAkKF90aGlzKS5hdHRyKCdzcmMnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9ICQoX3RoaXMpLmRhdGEoJ3NyYycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlubmVyLnNsaWNrKCdzbGlja0ZpbHRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCQodGhpcykuZmluZCgnaW1nJykuYXR0cignc3JjJykgPT09IHNyYyk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvcHRpb25zLmNlbnRlckltYWdlcykge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlubmVyLmZpbmQoJy5zbGljay1zbGlkZScpLmVhY2goZnVuY3Rpb24gKGksIGUsIGEpIHtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcygnbWFyZ2luLXRvcCcsIChpbm5lci5vdXRlckhlaWdodCgpIC0gJCh0aGlzKS5vdXRlckhlaWdodCgpKSAvIDIpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICQod2luZG93KS50cmlnZ2VyKCdyZXNpemUnKTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbm5lci5zbGljayh7XG4gICAgICBhdXRvcGxheTogb3B0aW9ucy5lbmFibGVBdXRvcGxheSxcbiAgICAgIGF1dG9wbGF5U3BlZWQ6IG9wdGlvbnMuYXV0b3BsYXlTcGVlZCxcbiAgICAgIGNzc0Vhc2U6IG9wdGlvbnMuc2xpZGVUcmFuc2l0aW9uLFxuICAgICAgZHJhZ2dhYmxlOiBvcHRpb25zLnNsaWRlckRyYWdnYWJsZSxcbiAgICAgIGluZmluaXRlOiBvcHRpb25zLnNsaWRlckxvb3BlZCxcbiAgICAgIG1vYmlsZUZpcnN0OiBmYWxzZSwgLy9UT0RPOiBUZXN0IHRoaXMgb3B0aW9uXG4gICAgICBuZXh0QXJyb3c6ICc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNsaWNrLW5leHRcIj4nK29wdGlvbnMuc2xpZGVyTmV4dEJ1dHRvbisnPC9idXR0b24+JyxcbiAgICAgIHBhdXNlT25Ib3Zlcjogb3B0aW9ucy5kaXNhYmxlQXV0b3BsYXlPbkhvdmVyLFxuICAgICAgcHJldkFycm93OiAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzbGljay1wcmV2XCI+JytvcHRpb25zLnNsaWRlclByZXZCdXR0b24rJzwvYnV0dG9uPicsXG4gICAgICBzcGVlZDogb3B0aW9ucy5zbGlkZVRyYW5zaXRpb25TcGVlZCxcbiAgICAgIHRvdWNoTW92ZTogIW9wdGlvbnMuZGlzYWJsZVRvdWNoTW92ZSxcbiAgICAgIHdhaXRGb3JBbmltYXRlOiBvcHRpb25zLmlnbm9yZUlucHV0T25Nb3ZlXG4gICAgfSkub24oJ2FmdGVyQ2hhbmdlJyxmdW5jdGlvbiAoZSkge1xuICAgICAgc3RhdGUuY3VycmVudFNsaWRlID0gaW5uZXIuc2xpY2soJ3NsaWNrQ3VycmVudFNsaWRlJyk7XG4gICAgICBpZihzdGF0ZS52aXNpYmxlKSBvdmVybGF5LnRyaWdnZXIoJ3pvb21ib3hDaGFuZ2VkJyk7XG4gICAgfSlcblxuICAgIGlmKG9wdGlvbnMubGlzdGVuS2V5cykge1xuICAgICAgdmFyIGtleUxpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgaWYoZXZlbnQua2V5ID09PSAnRXNjYXBlJyB8fCBldmVudC53aGljaCA9PSAyNykge1xuICAgICAgICAgIG92ZXJsYXkudHJpZ2dlcignem9vbWJveE92ZXJsYXlIaWRpbmcnKTtcbiAgICAgICAgICBvdmVybGF5LmZhZGVPdXQob3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYob3B0aW9ucy50ZW1wb3JhcnkpIHtcbiAgICAgICAgICAgICAgaW5uZXIuc2xpY2soJ3Vuc2xpY2snKTtcbiAgICAgICAgICAgICAgb3ZlcmxheS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0YXRlLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgaW5uZXIuc2xpY2soJ3NsaWNrVW5maWx0ZXInLDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3ZlcmxheS50cmlnZ2VyKCd6b29tYm94T3ZlcmxheUhpZGRlbicpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyB8fCBldmVudC53aGljaCA9PSAzNykge1xuICAgICAgICAgIGlubmVyLnNsaWNrKCdzbGlja1ByZXYnKTtcbiAgICAgICAgfSBlbHNlIGlmKGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnIHx8IGV2ZW50LndoaWNoID09IDM5KSB7XG4gICAgICAgICAgaW5uZXIuc2xpY2soJ3NsaWNrTmV4dCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICQoZG9jdW1lbnQpLm9mZigna2V5dXAnLGtleUxpc3RlbmVyKS5vbigna2V5dXAnLGtleUxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBpZihvcHRpb25zLnRlbXBvcmFyeSkge1xuICAgICAgb3ZlcmxheS50cmlnZ2VyKCd6b29tYm94T3ZlcmxheVNob3dpbmcnKTtcblxuICAgICAgb3ZlcmxheS5mYWRlSW4ob3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24gKCkge1xuICAgICAgICBvdmVybGF5LnRyaWdnZXIoJ3pvb21ib3hPdmVybGF5U2hvd24nKTtcbiAgICAgIH0pO1xuXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYob3B0aW9ucy5jZW50ZXJJbWFnZXMpIHtcbiAgICAgICAgICBpbm5lci5maW5kKCcuc2xpY2stc2xpZGUnKS5lYWNoKGZ1bmN0aW9uIChpLGUsYSkge1xuICAgICAgICAgICAgJCh0aGlzKS5jc3MoJ21hcmdpbi10b3AnLChpbm5lci5vdXRlckhlaWdodCgpIC0gJCh0aGlzKS5vdXRlckhlaWdodCgpKSAvIDIpO1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0sNTApO1xuXG4gICAgICAkKHdpbmRvdykudHJpZ2dlcigncmVzaXplJyk7XG4gICAgfVxuXG4gICAgc3RhdGUuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgaWYob3B0aW9ucy5lbmZvcmNlQ2hhaW5pbmcpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJCgnIycrb3B0aW9ucy5jb250YWluZXJJZCkgfHwgJCgnIycrb3B0aW9ucy5jb250YWluZXJJZCsnLXRlbXAnKTtcbiAgICB9XG4gIH07XG5cbiAgd2luZG93Lnpvb21ib3ggPSB7XG4gICAgaXNJbml0aWFsaXplZDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHN0YXRlLmluaXRpYWxpemVkO1xuICAgIH0sXG4gICAgaXNWaXNpYmxlOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gc3RhdGUudmlzaWJsZTtcbiAgICB9LFxuICAgIGdldEN1cnJlbnRTbGlkZTogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHN0YXRlLmN1cnJlbnRTbGlkZTtcbiAgICB9XG4gIH1cblxufSggalF1ZXJ5ICkpO1xuIiwiJChmdW5jdGlvbigpIHtcbiAgaWYoJCgnLnpvb21ib3gnKS5sZW5ndGggJiYgIXdpbmRvdy5zdXJwcmVzc0dhbGxlcnlJbml0ICYmICEkKCcjbmVvcy1hcHBsaWNhdGlvbicpLmxlbmd0aCkge1xuICAgICQoJy56b29tYm94Jykuem9vbWJveCh7XG4gICAgICBzbGlkZVRyYW5zaXRpb25TcGVlZDogNTAwLFxuICAgICAgc2xpZGVUcmFuc2l0aW9uOiAnZWFzZS1pbi1vdXQnXG4gICAgfSk7XG4gIH1cbn0pXG4iXX0= diff --git a/Resources/Public/Styles/main.css b/Resources/Public/Styles/main.css index 3a9790e..5ea83ce 100644 --- a/Resources/Public/Styles/main.css +++ b/Resources/Public/Styles/main.css @@ -73,7 +73,7 @@ .slick-arrow.slick-hidden { display: none; } -#zoombox-overlay, #zoombox-overlay-temp { +.zoombox-overlay { display: none; position: fixed; top: 0; @@ -81,7 +81,7 @@ width: 100vw; height: 100vh; z-index: 9999; } - #zoombox-overlay > .zoombox-close-btn, #zoombox-overlay-temp > .zoombox-close-btn { + .zoombox-overlay > .zoombox-close-btn { position: absolute; right: 15px; top: 15px; @@ -93,32 +93,32 @@ cursor: pointer; z-index: 10000; color: #333; } - #zoombox-overlay > .zoombox-inner, #zoombox-overlay-temp > .zoombox-inner { + .zoombox-overlay > .zoombox-inner { overflow: hidden; margin: 15px; height: calc(100% - 30px); position: static; } @media (min-width: 768px) { - #zoombox-overlay > .zoombox-inner, #zoombox-overlay-temp > .zoombox-inner { + .zoombox-overlay > .zoombox-inner { margin: 25px 50px; height: calc(100% - 50px); } } - #zoombox-overlay > .zoombox-inner > .zoombox-image, #zoombox-overlay-temp > .zoombox-inner > .zoombox-image { + .zoombox-overlay > .zoombox-inner > .zoombox-image { max-width: 100%; height: auto; } - #zoombox-overlay > .zoombox-inner .slick-slide, #zoombox-overlay-temp > .zoombox-inner .slick-slide { + .zoombox-overlay > .zoombox-inner .slick-slide { float: left; outline: none !important; margin: 5px; } - #zoombox-overlay > .zoombox-inner .slick-slide .zoombox-image, #zoombox-overlay-temp > .zoombox-inner .slick-slide .zoombox-image { + .zoombox-overlay > .zoombox-inner .slick-slide .zoombox-image { display: block; margin: 0 auto; max-width: calc(100vw - 50px); max-height: calc(100vh - 50px); } @media (min-width: 768px) { - #zoombox-overlay > .zoombox-inner .slick-slide .zoombox-image, #zoombox-overlay-temp > .zoombox-inner .slick-slide .zoombox-image { + .zoombox-overlay > .zoombox-inner .slick-slide .zoombox-image { max-width: calc(100vw - 150px); max-height: calc(100vh - 70px); } } - #zoombox-overlay > .zoombox-inner .slick-arrow, #zoombox-overlay-temp > .zoombox-inner .slick-arrow { + .zoombox-overlay > .zoombox-inner .slick-arrow { position: absolute; top: calc(50% - 25px); height: 50px; @@ -129,11 +129,11 @@ border: none; outline: none; cursor: pointer; } - #zoombox-overlay > .zoombox-inner .slick-arrow.slick-prev, #zoombox-overlay-temp > .zoombox-inner .slick-arrow.slick-prev { + .zoombox-overlay > .zoombox-inner .slick-arrow.slick-prev { left: 0; } - #zoombox-overlay > .zoombox-inner .slick-arrow.slick-next, #zoombox-overlay-temp > .zoombox-inner .slick-arrow.slick-next { + .zoombox-overlay > .zoombox-inner .slick-arrow.slick-next { right: 0; } - #zoombox-overlay > .zoombox-inner .slick-arrow > svg, #zoombox-overlay-temp > .zoombox-inner .slick-arrow > svg { + .zoombox-overlay > .zoombox-inner .slick-arrow > svg { max-height: 100%; width: auto; } @@ -146,7 +146,7 @@ float: left; padding: 0 15px 30px; } .gallery .gallery-item img { - width: 100%; + max-width: 100%; height: auto; } .gallery .gallery-item figcaption .caption { display: block; diff --git a/Resources/Public/Styles/main.min.css b/Resources/Public/Styles/main.min.css index d1d4e0b..9605965 100644 --- a/Resources/Public/Styles/main.min.css +++ b/Resources/Public/Styles/main.min.css @@ -1,2 +1,2 @@ -.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{position:relative;left:0;top:0;display:block;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;display:none}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}#zoombox-overlay,#zoombox-overlay-temp{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}#zoombox-overlay-temp>.zoombox-close-btn,#zoombox-overlay>.zoombox-close-btn{position:absolute;right:15px;top:15px;width:30px;height:30px;text-align:center;line-height:30px;font-size:30px;cursor:pointer;z-index:10000;color:#333}#zoombox-overlay-temp>.zoombox-inner,#zoombox-overlay>.zoombox-inner{overflow:hidden;margin:15px;height:calc(100% - 30px);position:static}@media (min-width:768px){#zoombox-overlay-temp>.zoombox-inner,#zoombox-overlay>.zoombox-inner{margin:25px 50px;height:calc(100% - 50px)}}#zoombox-overlay-temp>.zoombox-inner>.zoombox-image,#zoombox-overlay>.zoombox-inner>.zoombox-image{max-width:100%;height:auto}#zoombox-overlay-temp>.zoombox-inner .slick-slide,#zoombox-overlay>.zoombox-inner .slick-slide{float:left;outline:0!important;margin:5px}#zoombox-overlay-temp>.zoombox-inner .slick-slide .zoombox-image,#zoombox-overlay>.zoombox-inner .slick-slide .zoombox-image{display:block;margin:0 auto;max-width:calc(100vw - 50px);max-height:calc(100vh - 50px)}@media (min-width:768px){#zoombox-overlay-temp>.zoombox-inner .slick-slide .zoombox-image,#zoombox-overlay>.zoombox-inner .slick-slide .zoombox-image{max-width:calc(100vw - 150px);max-height:calc(100vh - 70px)}}#zoombox-overlay-temp>.zoombox-inner .slick-arrow,#zoombox-overlay>.zoombox-inner .slick-arrow{position:absolute;top:calc(50% - 25px);height:50px;width:40px;padding:0;z-index:1;background:0 0;border:none;outline:0;cursor:pointer}#zoombox-overlay-temp>.zoombox-inner .slick-arrow.slick-prev,#zoombox-overlay>.zoombox-inner .slick-arrow.slick-prev{left:0}#zoombox-overlay-temp>.zoombox-inner .slick-arrow.slick-next,#zoombox-overlay>.zoombox-inner .slick-arrow.slick-next{right:0}#zoombox-overlay-temp>.zoombox-inner .slick-arrow>svg,#zoombox-overlay>.zoombox-inner .slick-arrow>svg{max-height:100%;width:auto}.zoombox{cursor:pointer}.gallery{margin:0 -15px}.gallery .gallery-item{float:left;padding:0 15px 30px}.gallery .gallery-item img{width:100%;height:auto}.gallery .gallery-item figcaption .caption{display:block;width:100%;text-align:center}.gallery .clearfix{clear:both}#zoombox-overlay{background:rgba(255,255,255,.5)} -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNsaWNrLnNjc3MiLCJtYWluLm1pbi5jc3MiLCJzdHlsZXMuc2NzcyIsImJhc2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUNJLGtCQUNBLGNBQ0Esc0JBQ0EsMkJBQ0EseUJBQ0EsQUFDQSxzQkFDQSxxQkFDQSxpQkFDQSx1QkFDQSxtQkFDQSx1Q0FBNkIsQ0FFakMsWUFDSSxrQkFDQSxnQkFDQSxjQUNBLFNBQ0EsU0FBUyxDQUxiLGtCQVFRLFNBQVMsQ0FSakIscUJBWVEsZUFDQSxXQUFRLENBSWhCLHFEQUdJLGlDQUNBLEFBQ0EsNEJBQVcsQ0FHZixhQUNJLGtCQUNBLE9BQ0EsTUFDQSxjQUNBLGlCQUNBLGlCQUFjLENBTmxCLHVDQVVRLFdBQ0EsYUFBUyxDQVhqQixtQkFlUSxVQUFPLENBZmYsNEJBbUJRLGlCQUFZLENBR3BCLGFBQ0ksV0FDQSxZQUNBLGVBV0EsWUFBUyxDQ3RCWCx1QkRhTSxXQUFPLENBTGYsaUJBUVEsYUFBUyxDQVJqQiwrQkFXUSxZQUFTLENBWGpCLDBCQWlCUSxtQkFBZ0IsQ0FqQnhCLGdDQXFCUSxhQUFTLENBckJqQiw0QkF5QlEsaUJBQVksQ0F6QnBCLDZCQTZCUSxjQUNBLFlBQ0EsNEJBQVEsQ0FHaEIsMEJBQ0ksWUFBUyxDRWxHYix1Q0FDRSxhQUVBLGVBQ0EsTUFDQSxPQUNBLFlBQ0EsYUFDQSxZQUFTLENBUk8sNkVBV2Qsa0JBQ0EsV0FDQSxTQUNBLFdBQ0EsWUFFQSxrQkFDQSxpQkFDQSxlQUNBLGVBQ0EsY0FFQSxVQUFPLENBdkJPLHFFQTJCZCxnQkFDQSxZQUNBLHlCQUNBLGVBQVUsQ0FFVix5QkFoQ2MscUVBaUNaLGlCQUNBLHdCQUFRLENBQUEsQ0FsQ0ksbUdBc0NaLGVBQ0EsV0FBUSxDQXZDSSwrRkEyQ1osV0FDQSxvQkFDQSxVQUFRLENBN0NJLDZIQWdEVixjQUNBLGNBRUEsNkJBQ0EsNkJBQVksQ0FFWix5QkF0RFUsNkhBdURSLDhCQUNBLDZCQUFZLENBQUEsQ0F4REosK0ZBOERaLGtCQUNBLHFCQUNBLFlBQ0EsV0FDQSxVQUNBLFVBQ0EsZUFDQSxZQUNBLFVBQ0EsY0FBUSxDQXZFSSxxSEEwRVYsTUFBTSxDQTFFSSxxSEE4RVYsT0FBTyxDQTlFRyx1R0FrRlYsZ0JBQ0EsVUFBTyxDQU1mLFNBQ0UsY0FBUSxDQzFGVixTQUNFLGNBQVEsQ0FEVix1QkFJSSxXQUNBLG1CQUFTLENBTGIsMkJBUU0sV0FDQSxXQUFRLENBVGQsMkNBYU0sY0FDQSxXQUNBLGlCQUFZLENBZmxCLG1CQW9CSSxVQUFPLENBSVgsaUJBQ0UsK0JBQVksQ0FBQSIsImZpbGUiOiJtYWluLm1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBTbGlkZXIgKi9cblxuLnNsaWNrLXNsaWRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy10b3VjaC1hY3Rpb246IHBhbi15O1xuICAgIHRvdWNoLWFjdGlvbjogcGFuLXk7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5zbGljay1saXN0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cblxuICAgICYuZHJhZ2dpbmcge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGN1cnNvcjogaGFuZDtcbiAgICB9XG59XG4uc2xpY2stc2xpZGVyIC5zbGljay10cmFjayxcbi5zbGljay1zbGlkZXIgLnNsaWNrLWxpc3Qge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xufVxuXG4uc2xpY2stdHJhY2sge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG5cbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cblxuICAgIC5zbGljay1sb2FkaW5nICYge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxufVxuLnNsaWNrLXNsaWRlIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMXB4O1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gICAgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgICYuc2xpY2stbG9hZGluZyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAmLmRyYWdnaW5nIGltZyB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC5zbGljay1pbml0aWFsaXplZCAmIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLnNsaWNrLWxvYWRpbmcgJiB7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAuc2xpY2stdmVydGljYWwgJiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIH1cbn1cbi5zbGljay1hcnJvdy5zbGljay1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIuc2xpY2stc2xpZGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsta2h0bWwtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTstbXMtdG91Y2gtYWN0aW9uOnBhbi15O3RvdWNoLWFjdGlvbjpwYW4teTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LnNsaWNrLWxpc3R7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7cGFkZGluZzowfS5zbGljay1saXN0OmZvY3Vze291dGxpbmU6MH0uc2xpY2stbGlzdC5kcmFnZ2luZ3tjdXJzb3I6cG9pbnRlcjtjdXJzb3I6aGFuZH0uc2xpY2stc2xpZGVyIC5zbGljay1saXN0LC5zbGljay1zbGlkZXIgLnNsaWNrLXRyYWNrey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7LW8tdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfS5zbGljay10cmFja3twb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjA7dG9wOjA7ZGlzcGxheTpibG9jazttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS5zbGljay10cmFjazphZnRlciwuc2xpY2stdHJhY2s6YmVmb3Jle2NvbnRlbnQ6XCJcIjtkaXNwbGF5OnRhYmxlfS5zbGljay10cmFjazphZnRlcntjbGVhcjpib3RofS5zbGljay1sb2FkaW5nIC5zbGljay10cmFja3t2aXNpYmlsaXR5OmhpZGRlbn0uc2xpY2stc2xpZGV7ZmxvYXQ6bGVmdDtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OjFweDtkaXNwbGF5Om5vbmV9W2Rpcj1ydGxdIC5zbGljay1zbGlkZXtmbG9hdDpyaWdodH0uc2xpY2stc2xpZGUgaW1ne2Rpc3BsYXk6YmxvY2t9LnNsaWNrLXNsaWRlLnNsaWNrLWxvYWRpbmcgaW1ne2Rpc3BsYXk6bm9uZX0uc2xpY2stc2xpZGUuZHJhZ2dpbmcgaW1ne3BvaW50ZXItZXZlbnRzOm5vbmV9LnNsaWNrLWluaXRpYWxpemVkIC5zbGljay1zbGlkZXtkaXNwbGF5OmJsb2NrfS5zbGljay1sb2FkaW5nIC5zbGljay1zbGlkZXt2aXNpYmlsaXR5OmhpZGRlbn0uc2xpY2stdmVydGljYWwgLnNsaWNrLXNsaWRle2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OmF1dG87Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudH0uc2xpY2stYXJyb3cuc2xpY2staGlkZGVue2Rpc3BsYXk6bm9uZX0jem9vbWJveC1vdmVybGF5LCN6b29tYm94LW92ZXJsYXktdGVtcHtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMHZ3O2hlaWdodDoxMDB2aDt6LWluZGV4Ojk5OTl9I3pvb21ib3gtb3ZlcmxheS10ZW1wPi56b29tYm94LWNsb3NlLWJ0biwjem9vbWJveC1vdmVybGF5Pi56b29tYm94LWNsb3NlLWJ0bntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxNXB4O3RvcDoxNXB4O3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MzBweDtmb250LXNpemU6MzBweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjEwMDAwO2NvbG9yOiMzMzN9I3pvb21ib3gtb3ZlcmxheS10ZW1wPi56b29tYm94LWlubmVyLCN6b29tYm94LW92ZXJsYXk+Lnpvb21ib3gtaW5uZXJ7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjoxNXB4O2hlaWdodDpjYWxjKDEwMCUgLSAzMHB4KTtwb3NpdGlvbjpzdGF0aWN9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpeyN6b29tYm94LW92ZXJsYXktdGVtcD4uem9vbWJveC1pbm5lciwjem9vbWJveC1vdmVybGF5Pi56b29tYm94LWlubmVye21hcmdpbjoyNXB4IDUwcHg7aGVpZ2h0OmNhbGMoMTAwJSAtIDUwcHgpfX0jem9vbWJveC1vdmVybGF5LXRlbXA+Lnpvb21ib3gtaW5uZXI+Lnpvb21ib3gtaW1hZ2UsI3pvb21ib3gtb3ZlcmxheT4uem9vbWJveC1pbm5lcj4uem9vbWJveC1pbWFnZXttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30jem9vbWJveC1vdmVybGF5LXRlbXA+Lnpvb21ib3gtaW5uZXIgLnNsaWNrLXNsaWRlLCN6b29tYm94LW92ZXJsYXk+Lnpvb21ib3gtaW5uZXIgLnNsaWNrLXNsaWRle2Zsb2F0OmxlZnQ7b3V0bGluZTowIWltcG9ydGFudDttYXJnaW46NXB4fSN6b29tYm94LW92ZXJsYXktdGVtcD4uem9vbWJveC1pbm5lciAuc2xpY2stc2xpZGUgLnpvb21ib3gtaW1hZ2UsI3pvb21ib3gtb3ZlcmxheT4uem9vbWJveC1pbm5lciAuc2xpY2stc2xpZGUgLnpvb21ib3gtaW1hZ2V7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvO21heC13aWR0aDpjYWxjKDEwMHZ3IC0gNTBweCk7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gNTBweCl9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpeyN6b29tYm94LW92ZXJsYXktdGVtcD4uem9vbWJveC1pbm5lciAuc2xpY2stc2xpZGUgLnpvb21ib3gtaW1hZ2UsI3pvb21ib3gtb3ZlcmxheT4uem9vbWJveC1pbm5lciAuc2xpY2stc2xpZGUgLnpvb21ib3gtaW1hZ2V7bWF4LXdpZHRoOmNhbGMoMTAwdncgLSAxNTBweCk7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gNzBweCl9fSN6b29tYm94LW92ZXJsYXktdGVtcD4uem9vbWJveC1pbm5lciAuc2xpY2stYXJyb3csI3pvb21ib3gtb3ZlcmxheT4uem9vbWJveC1pbm5lciAuc2xpY2stYXJyb3d7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoNTAlIC0gMjVweCk7aGVpZ2h0OjUwcHg7d2lkdGg6NDBweDtwYWRkaW5nOjA7ei1pbmRleDoxO2JhY2tncm91bmQ6MCAwO2JvcmRlcjpub25lO291dGxpbmU6MDtjdXJzb3I6cG9pbnRlcn0jem9vbWJveC1vdmVybGF5LXRlbXA+Lnpvb21ib3gtaW5uZXIgLnNsaWNrLWFycm93LnNsaWNrLXByZXYsI3pvb21ib3gtb3ZlcmxheT4uem9vbWJveC1pbm5lciAuc2xpY2stYXJyb3cuc2xpY2stcHJldntsZWZ0OjB9I3pvb21ib3gtb3ZlcmxheS10ZW1wPi56b29tYm94LWlubmVyIC5zbGljay1hcnJvdy5zbGljay1uZXh0LCN6b29tYm94LW92ZXJsYXk+Lnpvb21ib3gtaW5uZXIgLnNsaWNrLWFycm93LnNsaWNrLW5leHR7cmlnaHQ6MH0jem9vbWJveC1vdmVybGF5LXRlbXA+Lnpvb21ib3gtaW5uZXIgLnNsaWNrLWFycm93PnN2Zywjem9vbWJveC1vdmVybGF5Pi56b29tYm94LWlubmVyIC5zbGljay1hcnJvdz5zdmd7bWF4LWhlaWdodDoxMDAlO3dpZHRoOmF1dG99Lnpvb21ib3h7Y3Vyc29yOnBvaW50ZXJ9LmdhbGxlcnl7bWFyZ2luOjAgLTE1cHh9LmdhbGxlcnkgLmdhbGxlcnktaXRlbXtmbG9hdDpsZWZ0O3BhZGRpbmc6MCAxNXB4IDMwcHh9LmdhbGxlcnkgLmdhbGxlcnktaXRlbSBpbWd7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30uZ2FsbGVyeSAuZ2FsbGVyeS1pdGVtIGZpZ2NhcHRpb24gLmNhcHRpb257ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyfS5nYWxsZXJ5IC5jbGVhcmZpeHtjbGVhcjpib3RofSN6b29tYm94LW92ZXJsYXl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC41KX0iLCIjem9vbWJveC1vdmVybGF5LCAjem9vbWJveC1vdmVybGF5LXRlbXAge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMTAwdmg7XG4gIHotaW5kZXg6IDk5OTk7XG5cbiAgJiA+IC56b29tYm94LWNsb3NlLWJ0biB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAxNXB4O1xuICAgIHRvcDogMTVweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgZm9udC1zaXplOiAzMHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB6LWluZGV4OiAxMDAwMDtcblxuICAgIGNvbG9yOiAjMzMzO1xuICB9XG5cbiAgJiA+IC56b29tYm94LWlubmVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbjogMTVweDtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDMwcHgpO1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAgIG1hcmdpbjogMjVweCA1MHB4O1xuICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA1MHB4KTtcbiAgICB9XG5cbiAgICAmID4gLnpvb21ib3gtaW1hZ2Uge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIC5zbGljay1zbGlkZSB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbjogNXB4O1xuXG4gICAgICAuem9vbWJveC1pbWFnZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcblxuICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA1MHB4KTtcbiAgICAgICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDUwcHgpO1xuXG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDE1MHB4KTtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNzBweCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2xpY2stYXJyb3cge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiBjYWxjKDUwJSAtIDI1cHgpO1xuICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgei1pbmRleDogMTtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAmLnNsaWNrLXByZXYge1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgfVxuXG4gICAgICAmLnNsaWNrLW5leHQge1xuICAgICAgICByaWdodDogMDtcbiAgICAgIH1cblxuICAgICAgJiA+IHN2ZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uem9vbWJveCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbiIsIi5nYWxsZXJ5IHtcbiAgbWFyZ2luOiAwIC0xNXB4O1xuXG4gIC5nYWxsZXJ5LWl0ZW0ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgMTVweCAzMHB4O1xuXG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIGZpZ2NhcHRpb24gLmNhcHRpb24ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAuY2xlYXJmaXgge1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG5cbiN6b29tYm94LW92ZXJsYXkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7XG59XG4iXX0= */ +.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{position:relative;left:0;top:0;display:block;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;display:none}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}.zoombox-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.zoombox-overlay>.zoombox-close-btn{position:absolute;right:15px;top:15px;width:30px;height:30px;text-align:center;line-height:30px;font-size:30px;cursor:pointer;z-index:10000;color:#333}.zoombox-overlay>.zoombox-inner{overflow:hidden;margin:15px;height:calc(100% - 30px);position:static}@media (min-width:768px){.zoombox-overlay>.zoombox-inner{margin:25px 50px;height:calc(100% - 50px)}}.zoombox-overlay>.zoombox-inner>.zoombox-image{max-width:100%;height:auto}.zoombox-overlay>.zoombox-inner .slick-slide{float:left;outline:0!important;margin:5px}.zoombox-overlay>.zoombox-inner .slick-slide .zoombox-image{display:block;margin:0 auto;max-width:calc(100vw - 50px);max-height:calc(100vh - 50px)}@media (min-width:768px){.zoombox-overlay>.zoombox-inner .slick-slide .zoombox-image{max-width:calc(100vw - 150px);max-height:calc(100vh - 70px)}}.zoombox-overlay>.zoombox-inner .slick-arrow{position:absolute;top:calc(50% - 25px);height:50px;width:40px;padding:0;z-index:1;background:0 0;border:none;outline:0;cursor:pointer}.zoombox-overlay>.zoombox-inner .slick-arrow.slick-prev{left:0}.zoombox-overlay>.zoombox-inner .slick-arrow.slick-next{right:0}.zoombox-overlay>.zoombox-inner .slick-arrow>svg{max-height:100%;width:auto}.zoombox{cursor:pointer}.gallery{margin:0 -15px}.gallery .gallery-item{float:left;padding:0 15px 30px}.gallery .gallery-item img{max-width:100%;height:auto}.gallery .gallery-item figcaption .caption{display:block;width:100%;text-align:center}.gallery .clearfix{clear:both}#zoombox-overlay{background:rgba(255,255,255,.5)} +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNsaWNrLnNjc3MiLCJtYWluLm1pbi5jc3MiLCJzdHlsZXMuc2NzcyIsImJhc2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUNJLGtCQUNBLGNBQ0Esc0JBQ0EsMkJBQ0EseUJBQ0EsQUFDQSxzQkFDQSxxQkFDQSxpQkFDQSx1QkFDQSxtQkFDQSx1Q0FBNkIsQ0FFakMsWUFDSSxrQkFDQSxnQkFDQSxjQUNBLFNBQ0EsU0FBUyxDQUxiLGtCQVFRLFNBQVMsQ0FSakIscUJBWVEsZUFDQSxXQUFRLENBSWhCLHFEQUdJLGlDQUNBLEFBQ0EsNEJBQVcsQ0FHZixhQUNJLGtCQUNBLE9BQ0EsTUFDQSxjQUNBLGlCQUNBLGlCQUFjLENBTmxCLHVDQVVRLFdBQ0EsYUFBUyxDQVhqQixtQkFlUSxVQUFPLENBZmYsNEJBbUJRLGlCQUFZLENBR3BCLGFBQ0ksV0FDQSxZQUNBLGVBV0EsWUFBUyxDQ3RCWCx1QkRhTSxXQUFPLENBTGYsaUJBUVEsYUFBUyxDQVJqQiwrQkFXUSxZQUFTLENBWGpCLDBCQWlCUSxtQkFBZ0IsQ0FqQnhCLGdDQXFCUSxhQUFTLENBckJqQiw0QkF5QlEsaUJBQVksQ0F6QnBCLDZCQTZCUSxjQUNBLFlBQ0EsNEJBQVEsQ0FHaEIsMEJBQ0ksWUFBUyxDRWxHYixpQkFDRSxhQUVBLGVBQ0EsTUFDQSxPQUNBLFlBQ0EsYUFDQSxZQUFTLENBUlgsb0NBV0ksa0JBQ0EsV0FDQSxTQUNBLFdBQ0EsWUFFQSxrQkFDQSxpQkFDQSxlQUNBLGVBQ0EsY0FFQSxVQUFPLENBdkJYLGdDQTJCSSxnQkFDQSxZQUNBLHlCQUNBLGVBQVUsQ0FFVix5QkFoQ0osZ0NBaUNNLGlCQUNBLHdCQUFRLENBQUEsQ0FsQ2QsK0NBc0NNLGVBQ0EsV0FBUSxDQXZDZCw2Q0EyQ00sV0FDQSxvQkFDQSxVQUFRLENBN0NkLDREQWdEUSxjQUNBLGNBRUEsNkJBQ0EsNkJBQVksQ0FFWix5QkF0RFIsNERBdURVLDhCQUNBLDZCQUFZLENBQUEsQ0F4RHRCLDZDQThETSxrQkFDQSxxQkFDQSxZQUNBLFdBQ0EsVUFDQSxVQUNBLGVBQ0EsWUFDQSxVQUNBLGNBQVEsQ0F2RWQsd0RBMEVRLE1BQU0sQ0ExRWQsd0RBOEVRLE9BQU8sQ0E5RWYsaURBa0ZRLGdCQUNBLFVBQU8sQ0FNZixTQUNFLGNBQVEsQ0MxRlYsU0FDRSxjQUFRLENBRFYsdUJBSUksV0FDQSxtQkFBUyxDQUxiLDJCQVFNLGVBQ0EsV0FBUSxDQVRkLDJDQWFNLGNBQ0EsV0FDQSxpQkFBWSxDQWZsQixtQkFvQkksVUFBTyxDQUlYLGlCQUNFLCtCQUFZLENBQUEiLCJmaWxlIjoibWFpbi5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogU2xpZGVyICovXG5cbi5zbGljay1zbGlkZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdG91Y2gtYWN0aW9uOiBwYW4teTtcbiAgICB0b3VjaC1hY3Rpb246IHBhbi15O1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uc2xpY2stbGlzdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG5cbiAgICAmLmRyYWdnaW5nIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjdXJzb3I6IGhhbmQ7XG4gICAgfVxufVxuLnNsaWNrLXNsaWRlciAuc2xpY2stdHJhY2ssXG4uc2xpY2stc2xpZGVyIC5zbGljay1saXN0IHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuLnNsaWNrLXRyYWNrIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG5cbiAgICAuc2xpY2stbG9hZGluZyAmIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbn1cbi5zbGljay1zbGlkZSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuICAgIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAmLnNsaWNrLWxvYWRpbmcgaW1nIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgJi5kcmFnZ2luZyBpbWcge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG5cbiAgICAuc2xpY2staW5pdGlhbGl6ZWQgJiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5zbGljay1sb2FkaW5nICYge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLnNsaWNrLXZlcnRpY2FsICYge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9XG59XG4uc2xpY2stYXJyb3cuc2xpY2staGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuIiwiLnNsaWNrLXNsaWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LWtodG1sLXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7LW1zLXRvdWNoLWFjdGlvbjpwYW4teTt0b3VjaC1hY3Rpb246cGFuLXk7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5zbGljay1saXN0e3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO21hcmdpbjowO3BhZGRpbmc6MH0uc2xpY2stbGlzdDpmb2N1c3tvdXRsaW5lOjB9LnNsaWNrLWxpc3QuZHJhZ2dpbmd7Y3Vyc29yOnBvaW50ZXI7Y3Vyc29yOmhhbmR9LnNsaWNrLXNsaWRlciAuc2xpY2stbGlzdCwuc2xpY2stc2xpZGVyIC5zbGljay10cmFja3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApOy1vLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX0uc2xpY2stdHJhY2t7cG9zaXRpb246cmVsYXRpdmU7bGVmdDowO3RvcDowO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b30uc2xpY2stdHJhY2s6YWZ0ZXIsLnNsaWNrLXRyYWNrOmJlZm9yZXtjb250ZW50OlwiXCI7ZGlzcGxheTp0YWJsZX0uc2xpY2stdHJhY2s6YWZ0ZXJ7Y2xlYXI6Ym90aH0uc2xpY2stbG9hZGluZyAuc2xpY2stdHJhY2t7dmlzaWJpbGl0eTpoaWRkZW59LnNsaWNrLXNsaWRle2Zsb2F0OmxlZnQ7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDoxcHg7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAuc2xpY2stc2xpZGV7ZmxvYXQ6cmlnaHR9LnNsaWNrLXNsaWRlIGltZ3tkaXNwbGF5OmJsb2NrfS5zbGljay1zbGlkZS5zbGljay1sb2FkaW5nIGltZ3tkaXNwbGF5Om5vbmV9LnNsaWNrLXNsaWRlLmRyYWdnaW5nIGltZ3twb2ludGVyLWV2ZW50czpub25lfS5zbGljay1pbml0aWFsaXplZCAuc2xpY2stc2xpZGV7ZGlzcGxheTpibG9ja30uc2xpY2stbG9hZGluZyAuc2xpY2stc2xpZGV7dmlzaWJpbGl0eTpoaWRkZW59LnNsaWNrLXZlcnRpY2FsIC5zbGljay1zbGlkZXtkaXNwbGF5OmJsb2NrO2hlaWdodDphdXRvO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnR9LnNsaWNrLWFycm93LnNsaWNrLWhpZGRlbntkaXNwbGF5Om5vbmV9Lnpvb21ib3gtb3ZlcmxheXtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMHZ3O2hlaWdodDoxMDB2aDt6LWluZGV4Ojk5OTl9Lnpvb21ib3gtb3ZlcmxheT4uem9vbWJveC1jbG9zZS1idG57cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTVweDt0b3A6MTVweDt3aWR0aDozMHB4O2hlaWdodDozMHB4O3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjMwcHg7Zm9udC1zaXplOjMwcHg7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoxMDAwMDtjb2xvcjojMzMzfS56b29tYm94LW92ZXJsYXk+Lnpvb21ib3gtaW5uZXJ7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjoxNXB4O2hlaWdodDpjYWxjKDEwMCUgLSAzMHB4KTtwb3NpdGlvbjpzdGF0aWN9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey56b29tYm94LW92ZXJsYXk+Lnpvb21ib3gtaW5uZXJ7bWFyZ2luOjI1cHggNTBweDtoZWlnaHQ6Y2FsYygxMDAlIC0gNTBweCl9fS56b29tYm94LW92ZXJsYXk+Lnpvb21ib3gtaW5uZXI+Lnpvb21ib3gtaW1hZ2V7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99Lnpvb21ib3gtb3ZlcmxheT4uem9vbWJveC1pbm5lciAuc2xpY2stc2xpZGV7ZmxvYXQ6bGVmdDtvdXRsaW5lOjAhaW1wb3J0YW50O21hcmdpbjo1cHh9Lnpvb21ib3gtb3ZlcmxheT4uem9vbWJveC1pbm5lciAuc2xpY2stc2xpZGUgLnpvb21ib3gtaW1hZ2V7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvO21heC13aWR0aDpjYWxjKDEwMHZ3IC0gNTBweCk7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gNTBweCl9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey56b29tYm94LW92ZXJsYXk+Lnpvb21ib3gtaW5uZXIgLnNsaWNrLXNsaWRlIC56b29tYm94LWltYWdle21heC13aWR0aDpjYWxjKDEwMHZ3IC0gMTUwcHgpO21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDcwcHgpfX0uem9vbWJveC1vdmVybGF5Pi56b29tYm94LWlubmVyIC5zbGljay1hcnJvd3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYyg1MCUgLSAyNXB4KTtoZWlnaHQ6NTBweDt3aWR0aDo0MHB4O3BhZGRpbmc6MDt6LWluZGV4OjE7YmFja2dyb3VuZDowIDA7Ym9yZGVyOm5vbmU7b3V0bGluZTowO2N1cnNvcjpwb2ludGVyfS56b29tYm94LW92ZXJsYXk+Lnpvb21ib3gtaW5uZXIgLnNsaWNrLWFycm93LnNsaWNrLXByZXZ7bGVmdDowfS56b29tYm94LW92ZXJsYXk+Lnpvb21ib3gtaW5uZXIgLnNsaWNrLWFycm93LnNsaWNrLW5leHR7cmlnaHQ6MH0uem9vbWJveC1vdmVybGF5Pi56b29tYm94LWlubmVyIC5zbGljay1hcnJvdz5zdmd7bWF4LWhlaWdodDoxMDAlO3dpZHRoOmF1dG99Lnpvb21ib3h7Y3Vyc29yOnBvaW50ZXJ9LmdhbGxlcnl7bWFyZ2luOjAgLTE1cHh9LmdhbGxlcnkgLmdhbGxlcnktaXRlbXtmbG9hdDpsZWZ0O3BhZGRpbmc6MCAxNXB4IDMwcHh9LmdhbGxlcnkgLmdhbGxlcnktaXRlbSBpbWd7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99LmdhbGxlcnkgLmdhbGxlcnktaXRlbSBmaWdjYXB0aW9uIC5jYXB0aW9ue2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcn0uZ2FsbGVyeSAuY2xlYXJmaXh7Y2xlYXI6Ym90aH0jem9vbWJveC1vdmVybGF5e2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNSl9IiwiLnpvb21ib3gtb3ZlcmxheSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgei1pbmRleDogOTk5OTtcblxuICAmID4gLnpvb21ib3gtY2xvc2UtYnRuIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDE1cHg7XG4gICAgdG9wOiAxNXB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIGhlaWdodDogMzBweDtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICBmb250LXNpemU6IDMwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHotaW5kZXg6IDEwMDAwO1xuXG4gICAgY29sb3I6ICMzMzM7XG4gIH1cblxuICAmID4gLnpvb21ib3gtaW5uZXIge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luOiAxNXB4O1xuICAgIGhlaWdodDogY2FsYygxMDAlIC0gMzBweCk7XG4gICAgcG9zaXRpb246IHN0YXRpYztcblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgbWFyZ2luOiAyNXB4IDUwcHg7XG4gICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDUwcHgpO1xuICAgIH1cblxuICAgICYgPiAuem9vbWJveC1pbWFnZSB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuXG4gICAgLnNsaWNrLXNsaWRlIHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgbWFyZ2luOiA1cHg7XG5cbiAgICAgIC56b29tYm94LWltYWdlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDUwcHgpO1xuICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNTBweCk7XG5cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gMTUwcHgpO1xuICAgICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA3MHB4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5zbGljay1hcnJvdyB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IGNhbGMoNTAlIC0gMjVweCk7XG4gICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICB3aWR0aDogNDBweDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICYuc2xpY2stcHJldiB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICB9XG5cbiAgICAgICYuc2xpY2stbmV4dCB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgfVxuXG4gICAgICAmID4gc3ZnIHtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi56b29tYm94IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuIiwiLmdhbGxlcnkge1xuICBtYXJnaW46IDAgLTE1cHg7XG5cbiAgLmdhbGxlcnktaXRlbSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgcGFkZGluZzogMCAxNXB4IDMwcHg7XG5cbiAgICBpbWcge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIGZpZ2NhcHRpb24gLmNhcHRpb24ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAuY2xlYXJmaXgge1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG5cbiN6b29tYm94LW92ZXJsYXkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7XG59XG4iXX0= */ diff --git a/bower.json b/bower.json index ed1e1cd..96368c9 100644 --- a/bower.json +++ b/bower.json @@ -16,6 +16,6 @@ "package.json" ], "dependencies": { - "zoombox.js": "^1.3.7" + "zoombox.js": "#b3a47125684289cd6a1d6cbb0da707b2e8c1e71f" } } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..1c65ef7 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,3758 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@gulp-sourcemaps/map-sources@1.X": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" + integrity sha1-iQrnxdjId/bThIYCFazp1+yUW9o= + dependencies: + normalize-path "^2.0.1" + through2 "^2.0.3" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +acorn@4.X: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= + +ajv@^6.5.5: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" + integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= + dependencies: + ansi-wrap "0.1.0" + +ansi-escapes@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo= + dependencies: + arr-flatten "^1.0.1" + array-slice "^0.2.3" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0= + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= + +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async@~0.2.6: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^6.0.0: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak= + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000971" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000971.tgz#5530250a146a8fec0fae3014c94c2aae040c6cbe" + integrity sha512-ubSZfYXO2KMYtCVmDez82mjodeZa+mBYWAnBMAmFBPAn4C2PY4SD0eC/diYQD4Rj1K+WNdp0vr0JDtm0SQ6GNg== + +cardinal@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" + integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU= + dependencies: + ansicolors "~0.3.2" + redeyed "~2.1.0" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@^4.0.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + dependencies: + source-map "~0.6.0" + +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= + dependencies: + colors "1.0.3" + +cli-usage@^0.1.1: + version "0.1.9" + resolved "https://registry.yarnpkg.com/cli-usage/-/cli-usage-0.1.9.tgz#a81d0f78af3999be3f51cb5cb6e8b2d3c02f4a44" + integrity sha512-MIJJnLu89KTRoGN1ix9dwvKYUPUP7tUL+YGKNH/7mFmy8n3aWNznQKK8FU7PsFVQxePW5rxBp0lupzeSjRiXTA== + dependencies: + marked "^0.6.2" + marked-terminal "^3.2.0" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE= + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + integrity sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8= + +clone@^1.0.0, clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + integrity sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-with-sourcemaps@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +convert-source-map@1.X: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +css@2.X: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= + +deap@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deap/-/deap-1.0.1.tgz#0646e9e1a095ffe8a9e404d68d1f76dcf57e66fb" + integrity sha512-k75KYNZMvwAwes2xIPry/QTffXIchjD8QfABvvfTr80P85jv5ZcKqcoDo+vMe71nNnVnXYe8MA28weyqcf/DKw== + +debug-fabulous@0.0.X: + version "0.0.4" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.0.4.tgz#fa071c5d87484685424807421ca4b16b0b1a0763" + integrity sha1-+gccXYdIRoVCSAdCHKSxawsaB2M= + dependencies: + debug "2.X" + lazy-debug-legacy "0.0.X" + object-assign "4.1.0" + +debug@2.X, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +defaults@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +deprecated@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" + integrity sha1-+cmvVGSvoeepcUWKi97yqpTVuxk= + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-newline@2.X: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= + dependencies: + readable-stream "~1.1.9" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +electron-to-chromium@^1.2.7: + version "1.3.137" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.137.tgz#ba7c88024984c038a5c5c434529aabcea7b42944" + integrity sha512-kGi32g42a8vS/WnYE7ELJyejRT7hbr3UeOOu0WeuYuQ29gCpg9Lrf6RdcTQVXSt/v0bjCfnlb/EWOOsiKpTmkw== + +end-of-stream@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" + integrity sha1-jhdyBsPICDfYVjLouTWd/osvbq8= + dependencies: + once "~1.3.0" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +extend-shallow@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE= + dependencies: + kind-of "^1.1.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fancy-log@^1.0.0, fancy-log@^1.1.0, fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + integrity sha1-Wb+1DNkF9g18OUzT2ayqtOatk04= + +first-chunk-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA= + dependencies: + readable-stream "^2.0.2" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fs-minipass@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + dependencies: + minipass "^2.2.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.0.0: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + integrity sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8= + dependencies: + globule "~0.1.0" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-stream@^3.1.5: + version "3.1.18" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" + integrity sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs= + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^1.0.0" + +glob-watcher@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" + integrity sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs= + dependencies: + gaze "^0.5.1" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= + dependencies: + find-index "^0.1.1" + +glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + integrity sha1-xstz0yJsHv7wTePFbQEvAzd+4V8= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@~7.1.1: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + integrity sha1-0p4KBV3qUTj00H7UDomC6DwgZs0= + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globule@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== + dependencies: + glob "~7.1.1" + lodash "~4.17.10" + minimatch "~3.0.2" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + integrity sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU= + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +glogg@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + +graceful-fs@4.X, graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +graceful-fs@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + integrity sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg= + dependencies: + natives "^1.1.0" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + integrity sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q= + +growly@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gulp-autoprefixer@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/gulp-autoprefixer/-/gulp-autoprefixer-3.1.1.tgz#75230051cd0d171343d783b7e9b5d1120eeef9b0" + integrity sha1-dSMAUc0NFxND14O36bXREg7u+bA= + dependencies: + autoprefixer "^6.0.0" + gulp-util "^3.0.0" + postcss "^5.0.4" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-clean-css@^2.0.3: + version "2.4.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-2.4.0.tgz#2ae48109fe83ccc967ff5ad53c044949a4863b36" + integrity sha1-KuSBCf6DzMln/1rVPARJSaSGOzY= + dependencies: + clean-css "^4.0.4" + gulp-util "^3.0.8" + object-assign "^4.1.1" + through2 "^2.0.3" + vinyl-sourcemaps-apply "^0.2.1" + +gulp-concat@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + integrity sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M= + dependencies: + concat-with-sourcemaps "^1.0.0" + through2 "^2.0.0" + vinyl "^2.0.0" + +gulp-notify@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gulp-notify/-/gulp-notify-2.2.0.tgz#046c8285c292e97eed4e15a009c26cbbe5cef135" + integrity sha1-BGyChcKS6X7tThWgCcJsu+XO8TU= + dependencies: + gulp-util "^3.0.2" + lodash.template "^3.0.0" + node-notifier "^4.1.0" + node.extend "^1.1.3" + through2 "^0.6.3" + +gulp-plumber@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/gulp-plumber/-/gulp-plumber-1.2.1.tgz#d38700755a300b9d372318e4ffb5ff7ced0b2c84" + integrity sha512-mctAi9msEAG7XzW5ytDVZ9PxWMzzi1pS2rBH7lA095DhMa6KEXjm+St0GOCc567pJKJ/oCvosVAZEpAey0q2eQ== + dependencies: + chalk "^1.1.3" + fancy-log "^1.3.2" + plugin-error "^0.1.2" + through2 "^2.0.3" + +gulp-rename@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.4.0.tgz#de1c718e7c4095ae861f7296ef4f3248648240bd" + integrity sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg== + +gulp-sass@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-2.3.2.tgz#82b7ab90fe902cdc34c04f180d92f2c34902dd52" + integrity sha1-grerkP6QLNw0wE8YDZLyw0kC3VI= + dependencies: + gulp-util "^3.0" + lodash.clonedeep "^4.3.2" + node-sass "^3.4.2" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-sourcemaps@^1.6.0: + version "1.12.1" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.12.1.tgz#b437d1f3d980cf26e81184823718ce15ae6597b6" + integrity sha1-tDfR89mAzyboEYSCNxjOFa5ll7Y= + dependencies: + "@gulp-sourcemaps/map-sources" "1.X" + acorn "4.X" + convert-source-map "1.X" + css "2.X" + debug-fabulous "0.0.X" + detect-newline "2.X" + graceful-fs "4.X" + source-map "~0.6.0" + strip-bom "2.X" + through2 "2.X" + vinyl "1.X" + +gulp-uglify@^1.5.3: + version "1.5.4" + resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-1.5.4.tgz#524788d87666d09f9d0c21fb2177f90039a658c9" + integrity sha1-UkeI2HZm0J+dDCH7IXf5ADmmWMk= + dependencies: + deap "^1.0.0" + fancy-log "^1.0.0" + gulp-util "^3.0.0" + isobject "^2.0.0" + through2 "^2.0.0" + uglify-js "2.6.4" + uglify-save-license "^0.4.1" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-util@^3.0, gulp-util@^3.0.0, gulp-util@^3.0.2, gulp-util@^3.0.7, gulp-util@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08= + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp-watch@^4.3.8: + version "4.3.11" + resolved "https://registry.yarnpkg.com/gulp-watch/-/gulp-watch-4.3.11.tgz#162fc563de9fc770e91f9a7ce3955513a9a118c0" + integrity sha1-Fi/FY96fx3DpH5p845VVE6mhGMA= + dependencies: + anymatch "^1.3.0" + chokidar "^1.6.1" + glob-parent "^3.0.1" + gulp-util "^3.0.7" + object-assign "^4.1.0" + path-is-absolute "^1.0.1" + readable-stream "^2.2.2" + slash "^1.0.0" + vinyl "^1.2.0" + vinyl-file "^2.0.0" + +gulp@^3.9.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" + integrity sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ= + dependencies: + archy "^1.0.0" + chalk "^1.0.0" + deprecated "^0.0.1" + gulp-util "^3.0.0" + interpret "^1.0.0" + liftoff "^2.1.0" + minimist "^1.1.0" + orchestrator "^0.3.0" + pretty-hrtime "^1.0.0" + semver "^4.1.0" + tildify "^1.0.0" + v8flags "^2.0.2" + vinyl-fs "^0.3.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= + dependencies: + glogg "^1.0.0" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4= + dependencies: + sparkles "^1.0.0" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + integrity sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js= + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +interpret@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz#61cff6dd3c4193db94a3d62582072b44e5645d79" + integrity sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +js-base64@^2.1.8, js-base64@^2.1.9: + version "2.5.1" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" + integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lazy-debug-legacy@0.0.X: + version "0.0.1" + resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1" + integrity sha1-U3cWwHduTPeePtG2IfdljCkRsbE= + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +liftoff@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" + integrity sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew= + dependencies: + extend "^3.0.0" + findup-sync "^2.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lodash._arraycopy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" + integrity sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE= + +lodash._arrayeach@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e" + integrity sha1-urFWsqkNPxu9XGU0AzSeXlkz754= + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._baseclone@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz#303519bf6393fe7e42f34d8b630ef7794e3542b7" + integrity sha1-MDUZv2OT/n5C802LYw73eU41Qrc= + dependencies: + lodash._arraycopy "^3.0.0" + lodash._arrayeach "^3.0.0" + lodash._baseassign "^3.0.0" + lodash._basefor "^3.0.0" + lodash.isarray "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= + +lodash._basefor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2" + integrity sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI= + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U= + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo= + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0= + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= + +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= + +lodash.clonedeep@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz#a0a1e40d82a5ea89ff5b147b8444ed63d92827db" + integrity sha1-oKHkDYKl6on/WxR7hETtY9koJ9s= + dependencies: + lodash._baseclone "^3.0.0" + lodash._bindcallback "^3.0.0" + +lodash.clonedeep@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg= + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8= + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU= + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + +lodash@^4.0.0, lodash@~4.17.10: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + integrity sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE= + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +marked-terminal@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.2.0.tgz#3fc91d54569332bcf096292af178d82219000474" + integrity sha512-Yr1yVS0BbDG55vx7be1D0mdv+jGs9AW563o/Tt/7FTsId2J0yqhrTeXAqq/Q0DyyXltIn6CSxzesQuFqXgafjQ== + dependencies: + ansi-escapes "^3.1.0" + cardinal "^2.1.1" + chalk "^2.4.1" + cli-table "^0.3.1" + node-emoji "^1.4.1" + supports-hyperlinks "^1.0.1" + +marked@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.6.2.tgz#c574be8b545a8b48641456ca1dbe0e37b6dccc1a" + integrity sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA== + +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.0.4, micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mime-db@1.40.0: + version "1.40.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.24" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + dependencies: + mime-db "1.40.0" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + integrity sha1-jQh8OcazjAAbl/ynzm0OHoCvusc= + dependencies: + brace-expansion "^1.0.0" + +minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + integrity sha1-x054BXT2PG+aCQ6Q775u9TpqdWo= + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s= + dependencies: + duplexer2 "0.0.2" + +nan@^2.12.1, nan@^2.3.2: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natives@^1.1.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb" + integrity sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA== + +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +node-emoji@^1.4.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-gyp@^3.3.1: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-notifier@^4.1.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-4.6.1.tgz#056d14244f3dcc1ceadfe68af9cff0c5473a33f3" + integrity sha1-BW0UJE89zBzq3+aK+c/wxUc6M/M= + dependencies: + cli-usage "^0.1.1" + growly "^1.2.0" + lodash.clonedeep "^3.0.0" + minimist "^1.1.1" + semver "^5.1.0" + shellwords "^0.1.0" + which "^1.0.5" + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-sass@^3.4.2: + version "3.13.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-3.13.1.tgz#7240fbbff2396304b4223527ed3020589c004fc2" + integrity sha1-ckD7v/I5YwS0IjUn7TAgWJwAT8I= + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.3.2" + node-gyp "^3.3.1" + npmlog "^4.0.0" + request "^2.61.0" + sass-graph "^2.1.1" + +node.extend@^1.1.3: + version "1.1.8" + resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.8.tgz#0aab3e63789f4e6d68b42bc00073ad1881243cf0" + integrity sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA== + dependencies: + has "^1.0.3" + is "^3.2.1" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: + version "1.4.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" + integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A= + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.2.0, object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA= + dependencies: + wrappy "1" + +orchestrator@^0.3.0: + version "0.3.8" + resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" + integrity sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4= + dependencies: + end-of-stream "~0.1.5" + sequencify "~0.0.7" + stream-consume "~0.1.0" + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + integrity sha1-/VZamvjrRHO6abbtijQ1LLVS8SY= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0, osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4= + dependencies: + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + arr-diff "^1.0.1" + arr-union "^2.0.1" + extend-shallow "^1.1.2" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-value-parser@^3.2.3: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss@^5.0.4, postcss@^5.2.16: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24: + version "1.1.31" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" + integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +"readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redeyed@~2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" + integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs= + dependencies: + esprima "~4.0.0" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ= + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +request@^2.61.0, request@^2.87.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" + integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== + dependencies: + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.6.1: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-graph@^2.1.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +semver@^4.1.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + integrity sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto= + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +sequencify@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" + integrity sha1-kM/xnQLgcCf9dn9erT57ldHnOAw= + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shellwords@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.1, source-map@^0.5.6, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-consume@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.1.tgz#d3bdb598c2bd0ae82b8cac7ac50b1107a7996c48" + integrity sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg== + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-bom-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" + integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco= + dependencies: + first-chunk-stream "^2.0.0" + strip-bom "^2.0.0" + +strip-bom@2.X, strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + integrity sha1-hbiGLzhEtabV7IRnqTWYFzo295Q= + dependencies: + first-chunk-stream "^1.0.0" + is-utf8 "^0.2.0" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.0.0, supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-hyperlinks@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" + integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== + dependencies: + has-flag "^2.0.0" + supports-color "^5.0.0" + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^4: + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.4" + minizlib "^1.1.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +through2@2.X, through2@^2.0.0, through2@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^0.6.1, through2@^0.6.3: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +tildify@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + integrity sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo= + dependencies: + os-homedir "^1.0.0" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +uglify-js@2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.6.4.tgz#65ea2fb3059c9394692f15fed87c2b36c16b9adf" + integrity sha1-ZeovswWck5RpLxX+2HwrNsFrmt8= + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + +uglify-save-license@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/uglify-save-license/-/uglify-save-license-0.4.1.tgz#95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1" + integrity sha1-lXJsF8xv0XHDYX479NjYKqjEzOE= + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" + integrity sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +v8flags@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + dependencies: + user-home "^1.1.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" + integrity sha1-p+v1/779obfRjRQPyweyI++2dRo= + dependencies: + graceful-fs "^4.1.2" + pify "^2.3.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + strip-bom-stream "^2.0.0" + vinyl "^1.1.0" + +vinyl-fs@^0.3.0: + version "0.3.14" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" + integrity sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY= + dependencies: + defaults "^1.0.0" + glob-stream "^3.1.5" + glob-watcher "^0.0.6" + graceful-fs "^3.0.0" + mkdirp "^0.5.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-apply@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= + dependencies: + source-map "^0.5.1" + +vinyl@1.X, vinyl@^1.1.0, vinyl@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + integrity sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ= + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^0.4.0: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + integrity sha1-LzVsh6VQolVGHza76ypbqL94SEc= + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4= + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which@1, which@^1.0.5, which@^1.2.14, which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0"