diff --git a/README.md b/README.md index 1bb7db6..ae5bcf0 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ server { 我的大部分图片都是放在又拍云的CDN上,又拍云已经赞助我的博客几年了,在这里再说一下感谢。图片向来是网络请求的大头,这一次,在图片加载上面做了几个处理。 -A.主要图片均lazyload: +A.主要图片均lazyload:g 延迟加载,只有滑动到可视区域才加载,Ghost改动Markdown渲染引擎不够方便,但是编辑的时候可以直接写html,需要直接把的代码写在编辑器里。 @@ -130,7 +130,7 @@ if (settings.webP_load == true) { C.进一步优化Iconfont -full-img +![](https://luoleiorg.b0.upaiyun.com/blog/2015/12/iconfont.png) 这一次重新用[Sketch](https://www.sketchapp.com)整理了常见的社交网站icon,加入了国内常见的V2EX、知乎、简书等网站的icon,调用起来更加方便。通过阿里云[iconfont.cn](http://iconfont.cn)生成,字体font部署在阿里云CDN上。文章中也依旧增加了自动给引用的URL标识logo的功能。 diff --git a/assets/js/all.min.js b/assets/js/all.min.js index 0fd739e..51d159c 100644 --- a/assets/js/all.min.js +++ b/assets/js/all.min.js @@ -1 +1 @@ -function loadJS(A,e,t){var o=!!window.ActiveXObject,a=o&&!window.XMLHttpRequest,i=document.createElement("script"),n=a?document.documentElement:document.getElementsByTagName("head")[0];i.type="text/javascript",i.async=!0,i.readyState?i.onreadystatechange=function(){("loaded"==i.readyState||"complete"==i.readyState)&&(i.onreadystatechange=null,e&&e())}:i.onload=function(){e&&e()},i.src=A,t?document.getElementById(t).appendChild(i):n.insertBefore(i,n.firstChild)}$.fn.extend({isOnScreenVisible:function(){if(!$("body").hasClass("post-template"))return!1;var A=$(window),e={top:A.scrollTop(),left:A.scrollLeft()};e.right=e.left+A.width(),e.bottom=e.top+A.height();var t=this.offset();return t.right=t.left+this.outerWidth(),t.bottom=t.top+this.outerHeight(),!(e.rightt.right||e.bottomt.bottom)}});var duoshuoQuery={short_name:"luolei"},GlobalConfigue={duoshuoDomain:"https://luolei.org"},General={isMobile:!1,isWechat:!1,viewWidth:$(window).width(),absUrl:location.protocol+"//"+location.host,init:function(){var A=window,e=(A.document,navigator.userAgent.toLowerCase()),t=A.navigator.appVersion.match(/android/gi);A.navigator.appVersion.match(/iphone/gi);"micromessenger"==e.match(/MicroMessenger/i)&&(General.isWechat=!0,$("body").addClass("wechat-webview")),t&&(General.isMobile=!0),$("body").hasClass("post-template")&&(General.updateImageWidth(),General.rewardLoader()),General.webFontLoader(),General.scrollToPos(),General.arrowEvent(),General.commentLoader()},updateImageWidth:function(){function A(){var A=$(this),e=t.outerWidth(),o=this.naturalWidth;o>=e?A.addClass("full-img"):A.removeClass("full-img")}function e(){o.each(A)}var t=$(".post-content"),o=$(".single-post-inner img").on("load",A);e()},webFontLoader:function(){WebFontConfig={loading:function(){console.log("loading font")},custom:{families:["Exo","iconfont"],urls:[General.absUrl+"/assets/css/font.min.css"]}},loadJS(General.absUrl+"/assets/js/webfont.js",function(){console.log("加载字体JS"),WebFont.load({custom:{families:["Exo","iconfont"]}})})},arrowEvent:function(){$(".arrow_down").click(function(){return $("html,body").animate({scrollTop:$(window).height()-20},600,function(){window.location.hash="#"}),!1})},scrollToPos:function(A){var e="我要飞到最高",t=(A||$(window).height(),$('
').appendTo("body"));$(window).scroll(function(){$(window).scrollTop()>$(window).height()?t.fadeIn(500):t.fadeOut(500)}),t.click(function(A){A.preventDefault(),$("html,body").animate({scrollTop:0},666,function(){window.location.hash="#"}),console.log("我跳")})},urlIconlize:function(A){var e,t,o="iconfont",a={twitter:o+"-twitter",qzone:o+"-qzone",weibo:o+"-weibo",facebook:o+"-facebook",github:o+"-github",douban:o+"-douban",google:o+"-google",luolei:o+"-luolei",dribble:o+"-dribble",v2ex:o+"-v2ex",zhihu:o+"-zhihu",wikipedia:o+"-wikipedia",jianshu:o+"-jianshu",youku:o+"-youku",youtube:o+"-youtube"};for(var i in a)if("function"!=typeof a[i]){var n=i;A.indexOf(n)>=0&&(e=n,t=a[n])}return t},addIcons:function(){$(".single-post-inner a:not(:has(img))").each(function(A){var e=$(this).attr("href"),t=document.createElement("a");t.href=e,_selfDomain=t.hostname,General.urlIconlize(_selfDomain),console.log(_selfDomain),$(this).prepend('');var o=$(this).find("i").css("color"),a=$(this).css("color");$(this).hover(function(){$(this).css("color",o),$(this).addClass("animated pulse")},function(){$(this).css("color",a),$(this).removeClass("animated pulse")})})},rewardLoader:function(){var A={alipay:"/assets/images/qr-alipay-256.png",wechat:"/assets/images/qr-wechat-256.png"};General.isWechat&&$(".wechat-code b").html("长按上方二维码打赏作者"),$(".money-like .reward-button").hover(function(){console.log("悬浮"),$("img.wechat-img").attr("src",A.wechat),$("img.alipay-img").attr("src",A.alipay),$(".money-code").fadeIn(),$(this).addClass("active")},function(){$(".money-code").fadeOut(),$(this).removeClass("active")},800),$(".money-like .reward-button").click(function(){$(this).hasClass("active")?($(this).find("img.wechat-img").attr("src",A.wechat),$(this).find("img.alipay-img").attr("src",A.alipay),$(".money-code").fadeOut(),$(this).removeClass("active")):($(".money-code").fadeIn(),$(this).addClass("active"))})},commentLoader:function(){if(!$("body").hasClass("post-template"))return!1;var A=GlobalConfigue.duoshuoDomain+location.pathname;$(window).scroll(function(){return $(".comment-area").has("div").length>0?!1:(console.log("增加评论"),void(($(".author-image").isOnScreenVisible()||$($(".read-next").isOnScreenVisible()))&&0==$(".author-image").hasClass("duoshuo-loaded")&&($(".author-image").addClass("duoshuo-loaded"),loadJS("https://static.duoshuo.com/embed.js",function(){var e=document.createElement("div");e.setAttribute("data-thread-key",A),e.setAttribute("data-url",location.href),e.setAttribute("data-title",$("title").html()),DUOSHUO.EmbedThread(e),scrollStop=!0,setTimeout(function(){$(".comment-area").append(e)},250)}))))})}},ImageSmartLoader={isWebPSupported:!1,isImageCompressed:!1,init:function(){ImageSmartLoader.webPCheck()},isCompressedCheck:function(){},webPCheck:function(A,e){var t={demo:"UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAsAAAABBxAREYiI/gcAAABWUDggGAAAADABAJ0BKgEAAQABABwlpAADcAD+/gbQAA=="};console.log("支持Webp哦");var o=new Image;o.onload=function(){o.width>0&&o.height>0;console.log("支持Webp"),ImageSmartLoader.isWebPSupported=!0,ImageSmartLoader.webPLoader()},o.onerror=function(){console.log("不支持Webp"),ImageSmartLoader.isWebPSupported=!1,ImageSmartLoader.webPLoader()},o.src="data:image/webp;base64,"+t.demo},imgLoader:function(){console.log("加载默认图片")},webPLoader:function(){if(console.log("加载webP"),1==ImageSmartLoader.isWebPSupported){if(console.log("宽度是"+General.viewWidth),768==General.viewWidth)return $(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!1}),!1;General.viewWidth<768?$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!0,scale_width:750}):$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!1})}else{if(768==General.viewWidth)return $(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!0,scale_width:1500}),!1;General.viewWidth<768?$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!0,scale_width:750}):$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!1})}}};$(document).ready(function(){var A=$(window);$.fn.lazyload=function(e){function t(){var A=0;a.each(function(){var e=$(this);if(!i.skip_invisible||e.is(":visible"))if($.abovethetop(this,i)||$.leftofbegin(this,i));else if($.belowthefold(this,i)||$.rightoffold(this,i)){if(++A>i.failure_limit)return!1}else e.trigger("appear"),A=0})}var o,a=this,i={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:window,data_attribute:"original",skip_invisible:!1,appear:null,load:null,placeholder:"data:image/gif;base64,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",advanced_load:!1,webP_load:!1,is_scale:!1,scale_width:750};return e&&(void 0!==e.failurelimit&&(e.failure_limit=e.failurelimit,delete e.failurelimit),void 0!==e.effectspeed&&(e.effect_speed=e.effectspeed,delete e.effectspeed),$.extend(i,e)),o=void 0===i.container||i.container===window?A:$(i.container),0===i.event.indexOf("scroll")&&o.bind(i.event,function(){return t()}),this.each(function(){var A=this,e=$(A);A.loaded=!1,(void 0===e.attr("src")||e.attr("src")===!1)&&e.is("img")&&(e.attr("src",i.placeholder),e.addClass("loading")),e.one("appear",function(){if(!this.loaded){if(i.appear){var t=a.length;i.appear.call(A,t,i)}var o=e.attr("data-"+i.data_attribute);1==i.advanced_load&&(o+="!"),1==i.is_scale&&(o+="/fw/"+i.scale_width),1==i.webP_load&&(o+="/format/webp"),$("").bind("load",function(){e.hide(),e.is("img")?e.attr("src",o):e.css("background-image","url('"+o+"')"),e[i.effect](i.effect_speed),A.loaded=!0;var t=$.grep(a,function(A){return!A.loaded});if(a=$(t),i.load){var n=a.length;i.load.call(A,n,i)}e.removeClass("loading")}).attr("src",o)}}),0!==i.event.indexOf("scroll")&&e.bind(i.event,function(){A.loaded||e.trigger("appear")})}),A.bind("resize",function(){t()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&A.bind("pageshow",function(A){A.originalEvent&&A.originalEvent.persisted&&a.each(function(){$(this).trigger("appear")})}),$(document).ready(function(){t()}),this},$.belowthefold=function(e,t){var o;return o=void 0===t.container||t.container===window?(window.innerHeight?window.innerHeight:A.height())+A.scrollTop():$(t.container).offset().top+$(t.container).height(),o<=$(e).offset().top-t.threshold},$.rightoffold=function(e,t){var o;return o=void 0===t.container||t.container===window?A.width()+A.scrollLeft():$(t.container).offset().left+$(t.container).width(),o<=$(e).offset().left-t.threshold},$.abovethetop=function(e,t){var o;return o=void 0===t.container||t.container===window?A.scrollTop():$(t.container).offset().top,o>=$(e).offset().top+t.threshold+$(e).height()},$.leftofbegin=function(e,t){var o;return o=void 0===t.container||t.container===window?A.scrollLeft():$(t.container).offset().left,o>=$(e).offset().left+t.threshold+$(e).width()},$.inviewport=function(A,e){return!($.rightoffold(A,e)||$.leftofbegin(A,e)||$.belowthefold(A,e)||$.abovethetop(A,e))},$.extend($.expr[":"],{"below-the-fold":function(A){return $.belowthefold(A,{threshold:0})},"above-the-top":function(A){return!$.belowthefold(A,{threshold:0})},"right-of-screen":function(A){return $.rightoffold(A,{threshold:0})},"left-of-screen":function(A){return!$.rightoffold(A,{threshold:0})},"in-viewport":function(A){return $.inviewport(A,{threshold:0})},"above-the-fold":function(A){return!$.belowthefold(A,{threshold:0})},"right-of-fold":function(A){return $.rightoffold(A,{threshold:0})},"left-of-fold":function(A){return!$.rightoffold(A,{threshold:0})}}),General.init(),ImageSmartLoader.init(),$("body").hasClass("post-template")&&(General.addIcons(),General.commentLoader())}); \ No newline at end of file +function loadJS(A,e,t){var o=!!window.ActiveXObject,a=o&&!window.XMLHttpRequest,i=document.createElement("script"),n=a?document.documentElement:document.getElementsByTagName("head")[0];i.type="text/javascript",i.async=!0,i.readyState?i.onreadystatechange=function(){("loaded"==i.readyState||"complete"==i.readyState)&&(i.onreadystatechange=null,e&&e())}:i.onload=function(){e&&e()},i.src=A,t?document.getElementById(t).appendChild(i):n.insertBefore(i,n.firstChild)}$.fn.extend({isOnScreenVisible:function(){if(!$("body").hasClass("post-template"))return!1;var A=$(window),e={top:A.scrollTop(),left:A.scrollLeft()};e.right=e.left+A.width(),e.bottom=e.top+A.height();var t=this.offset();return t.right=t.left+this.outerWidth(),t.bottom=t.top+this.outerHeight(),!(e.rightt.right||e.bottomt.bottom)}});var duoshuoQuery={short_name:"luolei"},GlobalConfigue={duoshuoDomain:"https://luolei.org"},General={isMobile:!1,isWechat:!1,viewWidth:$(window).width(),absUrl:location.protocol+"//"+location.host,init:function(){var A=window,e=(A.document,navigator.userAgent.toLowerCase()),t=A.navigator.appVersion.match(/android/gi);A.navigator.appVersion.match(/iphone/gi);"micromessenger"==e.match(/MicroMessenger/i)&&(General.isWechat=!0,$("body").addClass("wechat-webview")),t&&(General.isMobile=!0),$("body").hasClass("post-template")&&(General.updateImageWidth(),General.rewardLoader()),General.webFontLoader(),General.scrollToPos(),General.arrowEvent(),General.commentLoader()},updateImageWidth:function(){function A(){var A=$(this),e=t.outerWidth(),o=this.naturalWidth;o>=e?A.addClass("full-img"):A.removeClass("full-img")}function e(){o.each(A)}var t=$(".post-content"),o=$(".single-post-inner img").on("load",A);e()},webFontLoader:function(){WebFontConfig={loading:function(){console.log("loading font")},custom:{families:["Exo","iconfont"],urls:[General.absUrl+"/assets/css/font.min.css"]}},loadJS(General.absUrl+"/assets/js/webfont.js",function(){console.log("加载字体JS"),WebFont.load({custom:{families:["Exo","iconfont"]}})})},arrowEvent:function(){$(".arrow_down").click(function(){return $("html,body").animate({scrollTop:$(window).height()-20},600,function(){window.location.hash="#"}),!1})},scrollToPos:function(A){var e="我要飞到最高",t=(A||$(window).height(),$('
').appendTo("body"));$(window).scroll(function(){$(window).scrollTop()>$(window).height()?t.fadeIn(500):t.fadeOut(500)}),t.click(function(A){A.preventDefault(),$("html,body").animate({scrollTop:0},666,function(){window.location.hash="#"}),console.log("我跳")})},urlIconlize:function(A){var e,t,o="iconfont",a={twitter:o+"-twitter",qzone:o+"-qzone",weibo:o+"-weibo",facebook:o+"-facebook",github:o+"-github",douban:o+"-douban",google:o+"-google",luolei:o+"-luolei",dribble:o+"-dribble",v2ex:o+"-v2ex",zhihu:o+"-zhihu",wikipedia:o+"-wikipedia",jianshu:o+"-jianshu",youku:o+"-youku",youtube:o+"-youtube"};for(var i in a)if("function"!=typeof a[i]){var n=i;A.indexOf(n)>=0&&(e=n,t=a[n])}return t},addIcons:function(){$(".single-post-inner a:not(:has(img))").each(function(A){var e=$(this).attr("href"),t=document.createElement("a");t.href=e,_selfDomain=t.hostname,General.urlIconlize(_selfDomain),console.log(_selfDomain),$(this).prepend('');var o=$(this).find("i").css("color"),a=$(this).css("color");$(this).hover(function(){$(this).css("color",o),$(this).addClass("animated pulse")},function(){$(this).css("color",a),$(this).removeClass("animated pulse")})})},rewardLoader:function(){var A={alipay:"/assets/images/qr-alipay-256.png",wechat:"/assets/images/qr-wechat-256.png"};General.isWechat&&$(".wechat-code b").html("长按上方二维码打赏作者"),$(".money-like .reward-button").hover(function(){console.log("悬浮"),$("img.wechat-img").attr("src",A.wechat),$("img.alipay-img").attr("src",A.alipay),$(".money-code").fadeIn(),$(this).addClass("active")},function(){$(".money-code").fadeOut(),$(this).removeClass("active")},800),$(".money-like .reward-button").click(function(){$(this).hasClass("active")?($(this).find("img.wechat-img").attr("src",A.wechat),$(this).find("img.alipay-img").attr("src",A.alipay),$(".money-code").fadeOut(),$(this).removeClass("active")):($(".money-code").fadeIn(),$(this).addClass("active"))})},commentLoader:function(){if(!$("body").hasClass("post-template"))return!1;var A=GlobalConfigue.duoshuoDomain+location.pathname;$(window).scroll(function(){return $(".comment-area").has("div").length>0?!1:(console.log("增加评论"),void(($(".author-image").isOnScreenVisible()||$(".read-next").isOnScreenVisible())&&0==$(".author-image").hasClass("duoshuo-loaded")&&($(".author-image").addClass("duoshuo-loaded"),loadJS("https://static.duoshuo.com/embed.js",function(){var e=document.createElement("div");e.setAttribute("data-thread-key",A),e.setAttribute("data-url",location.href),e.setAttribute("data-title",$("title").html()),DUOSHUO.EmbedThread(e),scrollStop=!0,setTimeout(function(){$(".comment-area").append(e)},250)}))))})}},ImageSmartLoader={isWebPSupported:!1,isImageCompressed:!1,init:function(){ImageSmartLoader.webPCheck()},isCompressedCheck:function(){},webPCheck:function(A,e){var t={demo:"UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAsAAAABBxAREYiI/gcAAABWUDggGAAAADABAJ0BKgEAAQABABwlpAADcAD+/gbQAA=="};console.log("支持Webp哦");var o=new Image;o.onload=function(){o.width>0&&o.height>0;console.log("支持Webp"),ImageSmartLoader.isWebPSupported=!0,ImageSmartLoader.webPLoader()},o.onerror=function(){console.log("不支持Webp"),ImageSmartLoader.isWebPSupported=!1,ImageSmartLoader.webPLoader()},o.src="data:image/webp;base64,"+t.demo},imgLoader:function(){console.log("加载默认图片")},webPLoader:function(){if(console.log("加载webP"),1==ImageSmartLoader.isWebPSupported){if(console.log("宽度是"+General.viewWidth),768==General.viewWidth)return $(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!1}),!1;General.viewWidth<768?$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!0,scale_width:750}):$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!1})}else{if(768==General.viewWidth)return $(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!0,scale_width:1500}),!1;General.viewWidth<768?$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!0,scale_width:750}):$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!1})}}};$(document).ready(function(){var A=$(window);$.fn.lazyload=function(e){function t(){var A=0;a.each(function(){var e=$(this);if(!i.skip_invisible||e.is(":visible"))if($.abovethetop(this,i)||$.leftofbegin(this,i));else if($.belowthefold(this,i)||$.rightoffold(this,i)){if(++A>i.failure_limit)return!1}else e.trigger("appear"),A=0})}var o,a=this,i={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:window,data_attribute:"original",skip_invisible:!1,appear:null,load:null,placeholder:"data:image/gif;base64,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",advanced_load:!1,webP_load:!1,is_scale:!1,scale_width:750};return e&&(void 0!==e.failurelimit&&(e.failure_limit=e.failurelimit,delete e.failurelimit),void 0!==e.effectspeed&&(e.effect_speed=e.effectspeed,delete e.effectspeed),$.extend(i,e)),o=void 0===i.container||i.container===window?A:$(i.container),0===i.event.indexOf("scroll")&&o.bind(i.event,function(){return t()}),this.each(function(){var A=this,e=$(A);A.loaded=!1,(void 0===e.attr("src")||e.attr("src")===!1)&&e.is("img")&&(e.attr("src",i.placeholder),e.addClass("loading")),e.one("appear",function(){if(!this.loaded){if(i.appear){var t=a.length;i.appear.call(A,t,i)}var o=e.attr("data-"+i.data_attribute);1==i.advanced_load&&(o+="!"),1==i.is_scale&&(o+="/fw/"+i.scale_width),1==i.webP_load&&(o+="/format/webp"),$("").bind("load",function(){e.hide(),e.is("img")?e.attr("src",o):e.css("background-image","url('"+o+"')"),e[i.effect](i.effect_speed),A.loaded=!0;var t=$.grep(a,function(A){return!A.loaded});if(a=$(t),i.load){var n=a.length;i.load.call(A,n,i)}e.removeClass("loading")}).attr("src",o)}}),0!==i.event.indexOf("scroll")&&e.bind(i.event,function(){A.loaded||e.trigger("appear")})}),A.bind("resize",function(){t()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&A.bind("pageshow",function(A){A.originalEvent&&A.originalEvent.persisted&&a.each(function(){$(this).trigger("appear")})}),$(document).ready(function(){t()}),this},$.belowthefold=function(e,t){var o;return o=void 0===t.container||t.container===window?(window.innerHeight?window.innerHeight:A.height())+A.scrollTop():$(t.container).offset().top+$(t.container).height(),o<=$(e).offset().top-t.threshold},$.rightoffold=function(e,t){var o;return o=void 0===t.container||t.container===window?A.width()+A.scrollLeft():$(t.container).offset().left+$(t.container).width(),o<=$(e).offset().left-t.threshold},$.abovethetop=function(e,t){var o;return o=void 0===t.container||t.container===window?A.scrollTop():$(t.container).offset().top,o>=$(e).offset().top+t.threshold+$(e).height()},$.leftofbegin=function(e,t){var o;return o=void 0===t.container||t.container===window?A.scrollLeft():$(t.container).offset().left,o>=$(e).offset().left+t.threshold+$(e).width()},$.inviewport=function(A,e){return!($.rightoffold(A,e)||$.leftofbegin(A,e)||$.belowthefold(A,e)||$.abovethetop(A,e))},$.extend($.expr[":"],{"below-the-fold":function(A){return $.belowthefold(A,{threshold:0})},"above-the-top":function(A){return!$.belowthefold(A,{threshold:0})},"right-of-screen":function(A){return $.rightoffold(A,{threshold:0})},"left-of-screen":function(A){return!$.rightoffold(A,{threshold:0})},"in-viewport":function(A){return $.inviewport(A,{threshold:0})},"above-the-fold":function(A){return!$.belowthefold(A,{threshold:0})},"right-of-fold":function(A){return $.rightoffold(A,{threshold:0})},"left-of-fold":function(A){return!$.rightoffold(A,{threshold:0})}}),General.init(),ImageSmartLoader.init(),$("body").hasClass("post-template")&&(General.addIcons(),General.commentLoader())}); \ No newline at end of file diff --git a/assets/js/dev.min.js b/assets/js/dev.min.js index cf33361..c7239d3 100644 --- a/assets/js/dev.min.js +++ b/assets/js/dev.min.js @@ -1,2 +1,2 @@ -function loadJS(A,e,t){var o=!!window.ActiveXObject,a=o&&!window.XMLHttpRequest,i=document.createElement("script"),n=a?document.documentElement:document.getElementsByTagName("head")[0];i.type="text/javascript",i.async=!0,i.readyState?i.onreadystatechange=function(){("loaded"==i.readyState||"complete"==i.readyState)&&(i.onreadystatechange=null,e&&e())}:i.onload=function(){e&&e()},i.src=A,t?document.getElementById(t).appendChild(i):n.insertBefore(i,n.firstChild)}$.fn.extend({isOnScreenVisible:function(){if(!$("body").hasClass("post-template"))return!1;var A=$(window),e={top:A.scrollTop(),left:A.scrollLeft()};e.right=e.left+A.width(),e.bottom=e.top+A.height();var t=this.offset();return t.right=t.left+this.outerWidth(),t.bottom=t.top+this.outerHeight(),!(e.rightt.right||e.bottomt.bottom)}});var duoshuoQuery={short_name:"luolei"},GlobalConfigue={duoshuoDomain:"https://luolei.org"},General={isMobile:!1,isWechat:!1,viewWidth:$(window).width(),absUrl:location.protocol+"//"+location.host,init:function(){var A=window,e=(A.document,navigator.userAgent.toLowerCase()),t=A.navigator.appVersion.match(/android/gi);A.navigator.appVersion.match(/iphone/gi);"micromessenger"==e.match(/MicroMessenger/i)&&(General.isWechat=!0,$("body").addClass("wechat-webview")),t&&(General.isMobile=!0),$("body").hasClass("post-template")&&(General.updateImageWidth(),General.rewardLoader()),General.webFontLoader(),General.scrollToPos(),General.arrowEvent(),General.commentLoader()},updateImageWidth:function(){function A(){var A=$(this),e=t.outerWidth(),o=this.naturalWidth;o>=e?A.addClass("full-img"):A.removeClass("full-img")}function e(){o.each(A)}var t=$(".post-content"),o=$(".single-post-inner img").on("load",A);e()},webFontLoader:function(){WebFontConfig={loading:function(){console.log("loading font")},custom:{families:["Exo","iconfont"],urls:[General.absUrl+"/assets/css/font.min.css"]}},loadJS(General.absUrl+"/assets/js/webfont.js",function(){console.log("加载字体JS"),WebFont.load({custom:{families:["Exo","iconfont"]}})})},arrowEvent:function(){$(".arrow_down").click(function(){return $("html,body").animate({scrollTop:$(window).height()-20},600,function(){window.location.hash="#"}),!1})},scrollToPos:function(A){var e="我要飞到最高",t=(A||$(window).height(),$('
').appendTo("body"));$(window).scroll(function(){$(window).scrollTop()>$(window).height()?t.fadeIn(500):t.fadeOut(500)}),t.click(function(A){A.preventDefault(),$("html,body").animate({scrollTop:0},666,function(){window.location.hash="#"}),console.log("我跳")})},urlIconlize:function(A){var e,t,o="iconfont",a={twitter:o+"-twitter",qzone:o+"-qzone",weibo:o+"-weibo",facebook:o+"-facebook",github:o+"-github",douban:o+"-douban",google:o+"-google",luolei:o+"-luolei",dribble:o+"-dribble",v2ex:o+"-v2ex",zhihu:o+"-zhihu",wikipedia:o+"-wikipedia",jianshu:o+"-jianshu",youku:o+"-youku",youtube:o+"-youtube"};for(var i in a)if("function"!=typeof a[i]){var n=i;A.indexOf(n)>=0&&(e=n,t=a[n])}return t},addIcons:function(){$(".single-post-inner a:not(:has(img))").each(function(A){var e=$(this).attr("href"),t=document.createElement("a");t.href=e,_selfDomain=t.hostname,General.urlIconlize(_selfDomain),console.log(_selfDomain),$(this).prepend('');var o=$(this).find("i").css("color"),a=$(this).css("color");$(this).hover(function(){$(this).css("color",o),$(this).addClass("animated pulse")},function(){$(this).css("color",a),$(this).removeClass("animated pulse")})})},rewardLoader:function(){var A={alipay:"/assets/images/qr-alipay-256.png",wechat:"/assets/images/qr-wechat-256.png"};General.isWechat&&$(".wechat-code b").html("长按上方二维码打赏作者"),$(".money-like .reward-button").hover(function(){console.log("悬浮"),$("img.wechat-img").attr("src",A.wechat),$("img.alipay-img").attr("src",A.alipay),$(".money-code").fadeIn(),$(this).addClass("active")},function(){$(".money-code").fadeOut(),$(this).removeClass("active")},800),$(".money-like .reward-button").click(function(){$(this).hasClass("active")?($(this).find("img.wechat-img").attr("src",A.wechat),$(this).find("img.alipay-img").attr("src",A.alipay),$(".money-code").fadeOut(),$(this).removeClass("active")):($(".money-code").fadeIn(),$(this).addClass("active"))})},commentLoader:function(){if(!$("body").hasClass("post-template"))return!1;var A=GlobalConfigue.duoshuoDomain+location.pathname;$(window).scroll(function(){return $(".comment-area").has("div").length>0?!1:(console.log("增加评论"),void(($(".author-image").isOnScreenVisible()||$($(".read-next").isOnScreenVisible()))&&0==$(".author-image").hasClass("duoshuo-loaded")&&($(".author-image").addClass("duoshuo-loaded"),loadJS("https://static.duoshuo.com/embed.js",function(){var e=document.createElement("div");e.setAttribute("data-thread-key",A),e.setAttribute("data-url",location.href),e.setAttribute("data-title",$("title").html()),DUOSHUO.EmbedThread(e),scrollStop=!0,setTimeout(function(){$(".comment-area").append(e)},250)}))))})}},ImageSmartLoader={isWebPSupported:!1,isImageCompressed:!1,init:function(){ImageSmartLoader.webPCheck()},isCompressedCheck:function(){},webPCheck:function(A,e){var t={demo:"UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAsAAAABBxAREYiI/gcAAABWUDggGAAAADABAJ0BKgEAAQABABwlpAADcAD+/gbQAA=="};console.log("支持Webp哦");var o=new Image;o.onload=function(){o.width>0&&o.height>0;console.log("支持Webp"),ImageSmartLoader.isWebPSupported=!0,ImageSmartLoader.webPLoader()},o.onerror=function(){console.log("不支持Webp"),ImageSmartLoader.isWebPSupported=!1,ImageSmartLoader.webPLoader()},o.src="data:image/webp;base64,"+t.demo},imgLoader:function(){console.log("加载默认图片")},webPLoader:function(){if(console.log("加载webP"),1==ImageSmartLoader.isWebPSupported){if(console.log("宽度是"+General.viewWidth),768==General.viewWidth)return $(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!1}),!1;General.viewWidth<768?$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!0,scale_width:750}):$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!1})}else{if(768==General.viewWidth)return $(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!0,scale_width:1500}),!1;General.viewWidth<768?$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!0,scale_width:750}):$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!1})}}};$(document).ready(function(){var A=$(window);$.fn.lazyload=function(e){function t(){var A=0;a.each(function(){var e=$(this);if(!i.skip_invisible||e.is(":visible"))if($.abovethetop(this,i)||$.leftofbegin(this,i));else if($.belowthefold(this,i)||$.rightoffold(this,i)){if(++A>i.failure_limit)return!1}else e.trigger("appear"),A=0})}var o,a=this,i={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:window,data_attribute:"original",skip_invisible:!1,appear:null,load:null,placeholder:"data:image/gif;base64,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",advanced_load:!1,webP_load:!1,is_scale:!1,scale_width:750};return e&&(void 0!==e.failurelimit&&(e.failure_limit=e.failurelimit,delete e.failurelimit),void 0!==e.effectspeed&&(e.effect_speed=e.effectspeed,delete e.effectspeed),$.extend(i,e)),o=void 0===i.container||i.container===window?A:$(i.container),0===i.event.indexOf("scroll")&&o.bind(i.event,function(){return t()}),this.each(function(){var A=this,e=$(A);A.loaded=!1,(void 0===e.attr("src")||e.attr("src")===!1)&&e.is("img")&&(e.attr("src",i.placeholder),e.addClass("loading")),e.one("appear",function(){if(!this.loaded){if(i.appear){var t=a.length;i.appear.call(A,t,i)}var o=e.attr("data-"+i.data_attribute);1==i.advanced_load&&(o+="!"),1==i.is_scale&&(o+="/fw/"+i.scale_width),1==i.webP_load&&(o+="/format/webp"),$("").bind("load",function(){e.hide(),e.is("img")?e.attr("src",o):e.css("background-image","url('"+o+"')"),e[i.effect](i.effect_speed),A.loaded=!0;var t=$.grep(a,function(A){return!A.loaded});if(a=$(t),i.load){var n=a.length;i.load.call(A,n,i)}e.removeClass("loading")}).attr("src",o)}}),0!==i.event.indexOf("scroll")&&e.bind(i.event,function(){A.loaded||e.trigger("appear")})}),A.bind("resize",function(){t()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&A.bind("pageshow",function(A){A.originalEvent&&A.originalEvent.persisted&&a.each(function(){$(this).trigger("appear")})}),$(document).ready(function(){t()}),this},$.belowthefold=function(e,t){var o;return o=void 0===t.container||t.container===window?(window.innerHeight?window.innerHeight:A.height())+A.scrollTop():$(t.container).offset().top+$(t.container).height(),o<=$(e).offset().top-t.threshold},$.rightoffold=function(e,t){var o;return o=void 0===t.container||t.container===window?A.width()+A.scrollLeft():$(t.container).offset().left+$(t.container).width(),o<=$(e).offset().left-t.threshold},$.abovethetop=function(e,t){var o;return o=void 0===t.container||t.container===window?A.scrollTop():$(t.container).offset().top,o>=$(e).offset().top+t.threshold+$(e).height()},$.leftofbegin=function(e,t){var o;return o=void 0===t.container||t.container===window?A.scrollLeft():$(t.container).offset().left,o>=$(e).offset().left+t.threshold+$(e).width()},$.inviewport=function(A,e){return!($.rightoffold(A,e)||$.leftofbegin(A,e)||$.belowthefold(A,e)||$.abovethetop(A,e))},$.extend($.expr[":"],{"below-the-fold":function(A){return $.belowthefold(A,{threshold:0})},"above-the-top":function(A){return!$.belowthefold(A,{threshold:0})},"right-of-screen":function(A){return $.rightoffold(A,{threshold:0})},"left-of-screen":function(A){return!$.rightoffold(A,{threshold:0})},"in-viewport":function(A){return $.inviewport(A,{threshold:0})},"above-the-fold":function(A){return!$.belowthefold(A,{threshold:0})},"right-of-fold":function(A){return $.rightoffold(A,{threshold:0})},"left-of-fold":function(A){return!$.rightoffold(A,{threshold:0})}}),General.init(),ImageSmartLoader.init(),$("body").hasClass("post-template")&&(General.addIcons(),General.commentLoader())}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJhc2UuanMiXSwibmFtZXMiOlsibG9hZEpTIiwidXJsIiwiY2FsbGJhY2siLCJlbCIsImlzSUUiLCJ3aW5kb3ciLCJBY3RpdmVYT2JqZWN0IiwiaXNJRTYiLCJYTUxIdHRwUmVxdWVzdCIsInNjcmlwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImhlYWQiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInR5cGUiLCJhc3luYyIsInJlYWR5U3RhdGUiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJvbmxvYWQiLCJzcmMiLCJnZXRFbGVtZW50QnlJZCIsImFwcGVuZENoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiZmlyc3RDaGlsZCIsIiQiLCJmbiIsImV4dGVuZCIsImlzT25TY3JlZW5WaXNpYmxlIiwiaGFzQ2xhc3MiLCJ3aW4iLCJ2aWV3cG9ydCIsInRvcCIsInNjcm9sbFRvcCIsImxlZnQiLCJzY3JvbGxMZWZ0IiwicmlnaHQiLCJ3aWR0aCIsImJvdHRvbSIsImhlaWdodCIsImJvdW5kcyIsInRoaXMiLCJvZmZzZXQiLCJvdXRlcldpZHRoIiwib3V0ZXJIZWlnaHQiLCJkdW9zaHVvUXVlcnkiLCJzaG9ydF9uYW1lIiwiR2xvYmFsQ29uZmlndWUiLCJkdW9zaHVvRG9tYWluIiwiR2VuZXJhbCIsImlzTW9iaWxlIiwiaXNXZWNoYXQiLCJ2aWV3V2lkdGgiLCJhYnNVcmwiLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdCIsImluaXQiLCJVQSIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRvTG93ZXJDYXNlIiwiaXNBbmRyb2lkIiwiYXBwVmVyc2lvbiIsIm1hdGNoIiwiYWRkQ2xhc3MiLCJ1cGRhdGVJbWFnZVdpZHRoIiwicmV3YXJkTG9hZGVyIiwid2ViRm9udExvYWRlciIsInNjcm9sbFRvUG9zIiwiYXJyb3dFdmVudCIsImNvbW1lbnRMb2FkZXIiLCIkdGhpcyIsImNvbnRlbnRXaWR0aCIsIiRwb3N0Q29udGVudCIsImltYWdlV2lkdGgiLCJuYXR1cmFsV2lkdGgiLCJyZW1vdmVDbGFzcyIsImNhc3BlckZ1bGxJbWciLCIkaW1nIiwiZWFjaCIsIm9uIiwiV2ViRm9udENvbmZpZyIsImxvYWRpbmciLCJjb25zb2xlIiwibG9nIiwiY3VzdG9tIiwiZmFtaWxpZXMiLCJ1cmxzIiwiV2ViRm9udCIsImxvYWQiLCJjbGljayIsImFuaW1hdGUiLCJoYXNoIiwicG9zaXRpb24iLCJTVFJfVE9fVE9QIiwiYnV0dG9uIiwiYXBwZW5kVG8iLCJzY3JvbGwiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZSIsInByZXZlbnREZWZhdWx0IiwidXJsSWNvbmxpemUiLCJkb21haW4iLCJfb3V0cHV0IiwiaWNvbkZvbnRUYWciLCJpY29uTWFwIiwidHdpdHRlciIsInF6b25lIiwid2VpYm8iLCJmYWNlYm9vayIsImdpdGh1YiIsImRvdWJhbiIsImdvb2dsZSIsImx1b2xlaSIsImRyaWJibGUiLCJ2MmV4IiwiemhpaHUiLCJ3aWtpcGVkaWEiLCJqaWFuc2h1IiwieW91a3UiLCJ5b3V0dWJlIiwibmFtZSIsIk1hcEtleSIsImluZGV4T2YiLCJhZGRJY29ucyIsImkiLCJfc3JjIiwiYXR0ciIsInRtcCIsImhyZWYiLCJfc2VsZkRvbWFpbiIsImhvc3RuYW1lIiwicHJlcGVuZCIsIl9zZWxmQ29sb3IiLCJmaW5kIiwiY3NzIiwiX29yaWdpbmFsQ29sb3IiLCJob3ZlciIsImxvYWRRUiIsImFsaXBheSIsIndlY2hhdCIsImh0bWwiLCJkYXRhVGhyZWFkS2V5IiwicGF0aG5hbWUiLCJoYXMiLCJsZW5ndGgiLCJzZXRBdHRyaWJ1dGUiLCJEVU9TSFVPIiwiRW1iZWRUaHJlYWQiLCJzY3JvbGxTdG9wIiwic2V0VGltZW91dCIsImFwcGVuZCIsIkltYWdlU21hcnRMb2FkZXIiLCJpc1dlYlBTdXBwb3J0ZWQiLCJpc0ltYWdlQ29tcHJlc3NlZCIsIndlYlBDaGVjayIsImlzQ29tcHJlc3NlZENoZWNrIiwiZmVhdHVyZSIsIlRlc3RJbWFnZXMiLCJkZW1vIiwiaW1nIiwiSW1hZ2UiLCJ3ZWJQTG9hZGVyIiwib25lcnJvciIsImltZ0xvYWRlciIsImxhenlsb2FkIiwiYWR2YW5jZWRfbG9hZCIsImRhdGFfYXR0cmlidXRlIiwid2ViUF9sb2FkIiwiaXNfc2NhbGUiLCJzY2FsZV93aWR0aCIsInJlYWR5IiwiJHdpbmRvdyIsIm9wdGlvbnMiLCJ1cGRhdGUiLCJjb3VudGVyIiwiZWxlbWVudHMiLCJzZXR0aW5ncyIsInNraXBfaW52aXNpYmxlIiwiaXMiLCJhYm92ZXRoZXRvcCIsImxlZnRvZmJlZ2luIiwiYmVsb3d0aGVmb2xkIiwicmlnaHRvZmZvbGQiLCJmYWlsdXJlX2xpbWl0IiwidHJpZ2dlciIsIiRjb250YWluZXIiLCJ0aHJlc2hvbGQiLCJldmVudCIsImVmZmVjdCIsImNvbnRhaW5lciIsImFwcGVhciIsInBsYWNlaG9sZGVyIiwidW5kZWZpbmVkIiwiZmFpbHVyZWxpbWl0IiwiZWZmZWN0c3BlZWQiLCJlZmZlY3Rfc3BlZWQiLCJiaW5kIiwic2VsZiIsIiRzZWxmIiwibG9hZGVkIiwib25lIiwiZWxlbWVudHNfbGVmdCIsImNhbGwiLCJ1cGRhdGVkVXJsIiwiaGlkZSIsInRlbXAiLCJncmVwIiwiZWxlbWVudCIsInRlc3QiLCJvcmlnaW5hbEV2ZW50IiwicGVyc2lzdGVkIiwiZm9sZCIsImlubmVySGVpZ2h0IiwiaW52aWV3cG9ydCIsImV4cHIiLCJiZWxvdy10aGUtZm9sZCIsImEiLCJhYm92ZS10aGUtdG9wIiwicmlnaHQtb2Ytc2NyZWVuIiwibGVmdC1vZi1zY3JlZW4iLCJpbi12aWV3cG9ydCIsImFib3ZlLXRoZS1mb2xkIiwicmlnaHQtb2YtZm9sZCIsImxlZnQtb2YtZm9sZCJdLCJtYXBwaW5ncyI6IkFBdUJBLFFBQVNBLFFBQU9DLEVBQUtDLEVBQVVDLEdBQzNCLEdBQUlDLEtBQVNDLE9BQU9DLGNBQ2hCQyxFQUFRSCxJQUFTQyxPQUFPRyxlQUN4QkMsRUFBU0MsU0FBU0MsY0FBYyxVQUNoQ0MsRUFBT0wsRUFBUUcsU0FBU0csZ0JBQWtCSCxTQUFT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QVE3TCxFQUFFeUwsR0FBU3hLLFNBQVNSLEtBQU9pSixFQUFTVSxVQUFZcEssRUFBRXlMLEdBQVM3SyxTQUc5RVosRUFBRStMLFdBQWEsU0FBU04sRUFBUy9CLEdBRTdCLFFBQVExSixFQUFFZ0ssWUFBWXlCLEVBQVMvQixJQUFjMUosRUFBRThKLFlBQVkyQixFQUFTL0IsSUFDL0QxSixFQUFFK0osYUFBYTBCLEVBQVMvQixJQUFjMUosRUFBRTZKLFlBQVk0QixFQUFTL0IsS0FPdEUxSixFQUFFRSxPQUFPRixFQUFFZ00sS0FBSyxNQUNaQyxpQkFBa0IsU0FBU0MsR0FDdkIsTUFBT2xNLEdBQUUrSixhQUFhbUMsR0FDbEI5QixVQUFXLEtBR25CK0IsZ0JBQWlCLFNBQVNELEdBQ3RCLE9BQVFsTSxFQUFFK0osYUFBYW1DLEdBQ25COUIsVUFBVyxLQUduQmdDLGtCQUFtQixTQUFTRixHQUN4QixNQUFPbE0sR0FBRWdLLFlBQVlrQyxHQUNqQjlCLFVBQVcsS0FHbkJpQyxpQkFBa0IsU0FBU0gsR0FDdkIsT0FBUWxNLEVBQUVnSyxZQUFZa0MsR0FDbEI5QixVQUFXLEtBR25Ca0MsY0FBZSxTQUFTSixHQUNwQixNQUFPbE0sR0FBRStMLFdBQVdHLEdBQ2hCOUIsVUFBVyxLQUluQm1DLGlCQUFrQixTQUFTTCxHQUN2QixPQUFRbE0sRUFBRStKLGFBQWFtQyxHQUNuQjlCLFVBQVcsS0FHbkJvQyxnQkFBaUIsU0FBU04sR0FDdEIsTUFBT2xNLEdBQUVnSyxZQUFZa0MsR0FDakI5QixVQUFXLEtBR25CcUMsZUFBZ0IsU0FBU1AsR0FDckIsT0FBUWxNLEVBQUVnSyxZQUFZa0MsR0FDbEI5QixVQUFXLE9BS3ZCNUksUUFBUVEsT0FDUmlHLGlCQUFpQmpHLE9BQ2JoQyxFQUFFLFFBQVFJLFNBQVMsbUJBQ25Cb0IsUUFBUTZFLFdBQ1I3RSxRQUFRc0IiLCJmaWxlIjoiZGV2Lm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIiQuZm4uZXh0ZW5kKHtcblxuICAgIGlzT25TY3JlZW5WaXNpYmxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCEkKCdib2R5JykuaGFzQ2xhc3MoJ3Bvc3QtdGVtcGxhdGUnKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB3aW4gPSAkKHdpbmRvdyk7XG4gICAgICAgIHZhciB2aWV3cG9ydCA9IHtcbiAgICAgICAgICAgIHRvcDogd2luLnNjcm9sbFRvcCgpLFxuICAgICAgICAgICAgbGVmdDogd2luLnNjcm9sbExlZnQoKVxuICAgICAgICB9O1xuICAgICAgICB2aWV3cG9ydC5yaWdodCA9IHZpZXdwb3J0LmxlZnQgKyB3aW4ud2lkdGgoKTtcbiAgICAgICAgdmlld3BvcnQuYm90dG9tID0gdmlld3BvcnQudG9wICsgd2luLmhlaWdodCgpO1xuXG4gICAgICAgIHZhciBib3VuZHMgPSB0aGlzLm9mZnNldCgpO1xuICAgICAgICBib3VuZHMucmlnaHQgPSBib3VuZHMubGVmdCArIHRoaXMub3V0ZXJXaWR0aCgpO1xuICAgICAgICBib3VuZHMuYm90dG9tID0gYm91bmRzLnRvcCArIHRoaXMub3V0ZXJIZWlnaHQoKTtcblxuICAgICAgICByZXR1cm4gKCEodmlld3BvcnQucmlnaHQgPCBib3VuZHMubGVmdCB8fCB2aWV3cG9ydC5sZWZ0ID4gYm91bmRzLnJpZ2h0IHx8IHZpZXdwb3J0LmJvdHRvbSA8IGJvdW5kcy50b3AgfHwgdmlld3BvcnQudG9wID4gYm91bmRzLmJvdHRvbSkpO1xuICAgIH0sXG5cbn0pO1xuXG5mdW5jdGlvbiBsb2FkSlModXJsLCBjYWxsYmFjaywgZWwpIHtcbiAgICB2YXIgaXNJRSA9ICEhd2luZG93LkFjdGl2ZVhPYmplY3QsXG4gICAgICAgIGlzSUU2ID0gaXNJRSAmJiAhd2luZG93LlhNTEh0dHBSZXF1ZXN0LFxuICAgICAgICBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpLFxuICAgICAgICBoZWFkID0gaXNJRTYgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF07XG4gICAgc2NyaXB0LnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiO1xuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlKSB7XG4gICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHQucmVhZHlTdGF0ZSA9PSBcImxvYWRlZFwiIHx8IHNjcmlwdC5yZWFkeVN0YXRlID09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2NyaXB0LnNyYyA9IHVybDtcbiAgICBpZiAoZWwpIHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc2NyaXB0LCBoZWFkLmZpcnN0Q2hpbGQpO1xuICAgIH1cbn07XG5cbi8qKiBcbiAqIFlhc3VrbyDphY3nva7mlofku7ZcbiAqIOWkmuivtOivhOiuuuiwg+eUqOetiVxuICovXG5cbnZhciBkdW9zaHVvUXVlcnkgPSB7XG4gICAgc2hvcnRfbmFtZTogXCJsdW9sZWlcIlxufTtcblxudmFyIEdsb2JhbENvbmZpZ3VlID0ge1xuICAgIGR1b3NodW9Eb21haW46ICdodHRwczovL2x1b2xlaS5vcmcnLFxufVxuXG5cbnZhciBHZW5lcmFsID0ge1xuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICBpc1dlY2hhdDogZmFsc2UsXG4gICAgdmlld1dpZHRoOiAkKHdpbmRvdykud2lkdGgoKSxcbiAgICBhYnNVcmw6IGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3QsXG4gICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB3aW4gPSB3aW5kb3c7XG4gICAgICAgIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gICAgICAgIHZhciBVQSA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKVxuICAgICAgICB2YXIgaXNBbmRyb2lkID0gd2luLm5hdmlnYXRvci5hcHBWZXJzaW9uLm1hdGNoKC9hbmRyb2lkL2dpKTtcbiAgICAgICAgdmFyIGlzSVBob25lID0gd2luLm5hdmlnYXRvci5hcHBWZXJzaW9uLm1hdGNoKC9pcGhvbmUvZ2kpO1xuICAgICAgICBpZiAoVUEubWF0Y2goL01pY3JvTWVzc2VuZ2VyL2kpID09IFwibWljcm9tZXNzZW5nZXJcIikge1xuICAgICAgICAgICAgR2VuZXJhbC5pc1dlY2hhdCA9IHRydWU7XG4gICAgICAgICAgICAkKCdib2R5JykuYWRkQ2xhc3MoJ3dlY2hhdC13ZWJ2aWV3JylcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFpc0FuZHJvaWQpIHtcbiAgICAgICAgICAgIEdlbmVyYWwuaXNNb2JpbGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkKCdib2R5JykuaGFzQ2xhc3MoJ3Bvc3QtdGVtcGxhdGUnKSkge1xuICAgICAgICAgICAgR2VuZXJhbC51cGRhdGVJbWFnZVdpZHRoKCk7XG4gICAgICAgICAgICBHZW5lcmFsLnJld2FyZExvYWRlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgR2VuZXJhbC53ZWJGb250TG9hZGVyKCk7XG4gICAgICAgIEdlbmVyYWwuc2Nyb2xsVG9Qb3MoKTtcbiAgICAgICAgR2VuZXJhbC5hcnJvd0V2ZW50KCk7XG4gICAgICAgIEdlbmVyYWwuY29tbWVudExvYWRlcigpO1xuICAgIH0sXG4gICAgdXBkYXRlSW1hZ2VXaWR0aDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciAkcG9zdENvbnRlbnQgPSAkKFwiLnBvc3QtY29udGVudFwiKTtcbiAgICAgICAgLy8gJHBvc3RDb250ZW50LmZpdFZpZHMoKTtcblxuICAgICAgICBmdW5jdGlvbiB1cGRhdGVJbWFnZVdpZHRoKCkge1xuICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSxcbiAgICAgICAgICAgICAgICBjb250ZW50V2lkdGggPSAkcG9zdENvbnRlbnQub3V0ZXJXaWR0aCgpLCAvLyBXaWR0aCBvZiB0aGUgY29udGVudFxuICAgICAgICAgICAgICAgIGltYWdlV2lkdGggPSB0aGlzLm5hdHVyYWxXaWR0aDsgLy8gT3JpZ2luYWwgaW1hZ2UgcmVzb2x1dGlvblxuXG4gICAgICAgICAgICBpZiAoaW1hZ2VXaWR0aCA+PSBjb250ZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnZnVsbC1pbWcnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2Z1bGwtaW1nJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgJGltZyA9ICQoXCIuc2luZ2xlLXBvc3QtaW5uZXIgaW1nXCIpLm9uKCdsb2FkJywgdXBkYXRlSW1hZ2VXaWR0aCk7XG5cbiAgICAgICAgZnVuY3Rpb24gY2FzcGVyRnVsbEltZygpIHtcbiAgICAgICAgICAgICRpbWcuZWFjaCh1cGRhdGVJbWFnZVdpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc3BlckZ1bGxJbWcoKTtcbiAgICB9LFxuICAgIHdlYkZvbnRMb2FkZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBXZWJGb250Q29uZmlnID0ge1xuICAgICAgICAgICAgbG9hZGluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xvYWRpbmcgZm9udCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3VzdG9tOiB7XG4gICAgICAgICAgICAgICAgZmFtaWxpZXM6IFsnRXhvJywgJ2ljb25mb250J10sXG4gICAgICAgICAgICAgICAgdXJsczogW0dlbmVyYWwuYWJzVXJsICsgJy9hc3NldHMvY3NzL2ZvbnQubWluLmNzcyddXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxvYWRKUyhHZW5lcmFsLmFic1VybCArICcvYXNzZXRzL2pzL3dlYmZvbnQuanMnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfliqDovb3lrZfkvZNKUycpO1xuICAgICAgICAgICAgV2ViRm9udC5sb2FkKHtcbiAgICAgICAgICAgICAgICBjdXN0b206IHtcbiAgICAgICAgICAgICAgICAgICAgZmFtaWxpZXM6IFsnRXhvJywgJ2ljb25mb250J11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcblxuXG5cblxuICAgIH0sXG4gICAgYXJyb3dFdmVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICQoJy5hcnJvd19kb3duJykuY2xpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAkKCdodG1sLGJvZHknKS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICBzY3JvbGxUb3A6ICQod2luZG93KS5oZWlnaHQoKSAtIDIwXG4gICAgICAgICAgICB9LCA2MDAsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyMnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvL+W5s+a7kea7muWKqOWIsOmhtumDqFxuICAgIHNjcm9sbFRvUG9zOiBmdW5jdGlvbihwb3NpdGlvbikge1xuICAgICAgICB2YXIgU1RSX1RPX1RPUCA9ICfmiJHopoHpo57liLDmnIDpq5gnLFxuICAgICAgICAgICAgY292ZXJIZWlnaHQgPSBwb3NpdGlvbiB8fCAkKHdpbmRvdykuaGVpZ2h0KCk7IC8v6I635b6X5Zu+54mH6auY5bqmXG4gICAgICAgIHZhciBidXR0b24gPSAkKCc8YSBocmVmPVwiI1wiIGlkPVwidG8tdG9wXCIgdGl0bGU9XCInICsgU1RSX1RPX1RPUCArICdcIj4gPGRpdiBjbGFzcz1cInRvLXRvcC13cmFwXCI+PC9kaXY+PC9hPicpLmFwcGVuZFRvKCdib2R5Jyk7XG4gICAgICAgICQod2luZG93KS5zY3JvbGwoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoJCh3aW5kb3cpLnNjcm9sbFRvcCgpID4gJCh3aW5kb3cpLmhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgYnV0dG9uLmZhZGVJbig1MDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBidXR0b24uZmFkZU91dCg1MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBidXR0b24uY2xpY2soZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgJCgnaHRtbCxib2R5JykuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAwXG4gICAgICAgICAgICB9LCA2NjYsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyMnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5oiR6LezJyk7XG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvKue7meaWh+eroOS4reeahHVybOa3u+WKoGljb25mb2505pa55L6/6K+G5YirKi9cbiAgICB1cmxJY29ubGl6ZTogZnVuY3Rpb24odXJsKSB7XG4gICAgICAgIHZhciBkb21haW4sXG4gICAgICAgICAgICBfb3V0cHV0O1xuICAgICAgICB2YXIgaWNvbkZvbnRUYWcgPSAnaWNvbmZvbnQnO1xuICAgICAgICB2YXIgaWNvbk1hcCA9IHsgLyrntKLlvJUg5Y+v5Zyo6L+Z6YeM5re75Yqg5Yy56YWN6KeE5YiZKi9cbiAgICAgICAgICAgICd0d2l0dGVyJzogaWNvbkZvbnRUYWcgKyAnLXR3aXR0ZXInLFxuICAgICAgICAgICAgJ3F6b25lJzogaWNvbkZvbnRUYWcgKyAnLXF6b25lJyxcbiAgICAgICAgICAgICd3ZWlibyc6IGljb25Gb250VGFnICsgJy13ZWlibycsXG4gICAgICAgICAgICAnZmFjZWJvb2snOiBpY29uRm9udFRhZyArICctZmFjZWJvb2snLFxuICAgICAgICAgICAgJ2dpdGh1Yic6IGljb25Gb250VGFnICsgJy1naXRodWInLFxuICAgICAgICAgICAgJ2RvdWJhbic6IGljb25Gb250VGFnICsgJy1kb3ViYW4nLFxuICAgICAgICAgICAgJ2dvb2dsZSc6IGljb25Gb250VGFnICsgJy1nb29nbGUnLFxuICAgICAgICAgICAgJ2x1b2xlaSc6IGljb25Gb250VGFnICsgJy1sdW9sZWknLFxuICAgICAgICAgICAgJ2RyaWJibGUnOiBpY29uRm9udFRhZyArICctZHJpYmJsZScsXG4gICAgICAgICAgICAndjJleCc6IGljb25Gb250VGFnICsgJy12MmV4JyxcbiAgICAgICAgICAgICd6aGlodSc6IGljb25Gb250VGFnICsgJy16aGlodScsXG4gICAgICAgICAgICAnd2lraXBlZGlhJzogaWNvbkZvbnRUYWcgKyAnLXdpa2lwZWRpYScsXG4gICAgICAgICAgICAnamlhbnNodSc6IGljb25Gb250VGFnICsgJy1qaWFuc2h1JyxcbiAgICAgICAgICAgICd5b3VrdSc6IGljb25Gb250VGFnICsgJy15b3VrdScsXG4gICAgICAgICAgICAneW91dHViZSc6IGljb25Gb250VGFnICsgJy15b3V0dWJlJ1xuXG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBuYW1lIGluIGljb25NYXApIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaWNvbk1hcFtuYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHZhciBNYXBLZXkgPSBuYW1lO1xuICAgICAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZihNYXBLZXkpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZG9tYWluID0gTWFwS2V5O1xuICAgICAgICAgICAgICAgICAgICBfb3V0cHV0ID0gaWNvbk1hcFtNYXBLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBfb3V0cHV0O1xuICAgIH0sXG4gICAgYWRkSWNvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAvKue7meWNmuWuouaWh+eroOWcsOWdgHVybOa3u+WKoGljb+ivhuWIqyovXG4gICAgICAgICQoJy5zaW5nbGUtcG9zdC1pbm5lciAgYTpub3QoOmhhcyhpbWcpKScpLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgdmFyIF9zcmMgPSAkKHRoaXMpLmF0dHIoJ2hyZWYnKTtcbiAgICAgICAgICAgIHZhciB0bXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICB0bXAuaHJlZiA9IF9zcmM7XG4gICAgICAgICAgICBfc2VsZkRvbWFpbiA9IHRtcC5ob3N0bmFtZTtcbiAgICAgICAgICAgIEdlbmVyYWwudXJsSWNvbmxpemUoX3NlbGZEb21haW4pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coX3NlbGZEb21haW4pO1xuICAgICAgICAgICAgJCh0aGlzKS5wcmVwZW5kKCc8aSBjbGFzcz1cImljb25mb250ICcgKyBHZW5lcmFsLnVybEljb25saXplKF9zZWxmRG9tYWluKSArICdcIj48L2k+Jyk7XG4gICAgICAgICAgICB2YXIgX3NlbGZDb2xvciA9ICQodGhpcykuZmluZCgnaScpLmNzcygnY29sb3InKSxcbiAgICAgICAgICAgICAgICBfb3JpZ2luYWxDb2xvciA9ICQodGhpcykuY3NzKCdjb2xvcicpO1xuXG4gICAgICAgICAgICAvKum8oOagh+aCrOa1ruaXtiovXG4gICAgICAgICAgICAkKHRoaXMpLmhvdmVyKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICQodGhpcykuY3NzKCdjb2xvcicsIF9zZWxmQ29sb3IpO1xuICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2FuaW1hdGVkIHB1bHNlJyk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcygnY29sb3InLCBfb3JpZ2luYWxDb2xvcik7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnYW5pbWF0ZWQgcHVsc2UnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgLy/miZPotY9cbiAgICByZXdhcmRMb2FkZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBsb2FkUVIgPSB7XG4gICAgICAgICAgICBhbGlwYXk6ICcvYXNzZXRzL2ltYWdlcy9xci1hbGlwYXktMjU2LnBuZycsXG4gICAgICAgICAgICB3ZWNoYXQ6ICcvYXNzZXRzL2ltYWdlcy9xci13ZWNoYXQtMjU2LnBuZydcbiAgICAgICAgfVxuICAgICAgICB2YXIgbG9hZFFSVXJsO1xuICAgICAgICBpZighIUdlbmVyYWwuaXNXZWNoYXQpe1xuICAgICAgICAgICAgJCgnLndlY2hhdC1jb2RlIGInKS5odG1sKCfplb/mjInkuIrmlrnkuoznu7TnoIHmiZPotY/kvZzogIUnKTtcbiAgICAgICAgICAgICAvLyAkKCcucXItY29kZScpLmZhZGVPdXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgICQoJy5tb25leS1saWtlIC5yZXdhcmQtYnV0dG9uJykuaG92ZXIoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5oKs5rWuJylcbiAgICAgICAgICAgICQoJ2ltZy53ZWNoYXQtaW1nJykuYXR0cignc3JjJywgbG9hZFFSLndlY2hhdCk7XG4gICAgICAgICAgICAkKCdpbWcuYWxpcGF5LWltZycpLmF0dHIoJ3NyYycsIGxvYWRRUi5hbGlwYXkpO1xuICAgICAgICAgICAgJCgnLm1vbmV5LWNvZGUnKS5mYWRlSW4oKTtcbiAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICQoJy5tb25leS1jb2RlJykuZmFkZU91dCgpO1xuICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgIH0sIDgwMClcblxuICAgICAgICAgICAgJCgnLm1vbmV5LWxpa2UgLnJld2FyZC1idXR0b24nKS5jbGljayhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCdpbWcud2VjaGF0LWltZycpLmF0dHIoJ3NyYycsIGxvYWRRUi53ZWNoYXQpO1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJ2ltZy5hbGlwYXktaW1nJykuYXR0cignc3JjJywgbG9hZFFSLmFsaXBheSk7XG4gICAgICAgICAgICAgICAgICAgICQoJy5tb25leS1jb2RlJykuZmFkZU91dCgpO1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJCgnLm1vbmV5LWNvZGUnKS5mYWRlSW4oKTtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcblxuXG4gICAgfSxcbiAgICBjb21tZW50TG9hZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCEkKCdib2R5JykuaGFzQ2xhc3MoJ3Bvc3QtdGVtcGxhdGUnKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXRhVGhyZWFkS2V5ID0gR2xvYmFsQ29uZmlndWUuZHVvc2h1b0RvbWFpbiArIGxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgICAkKHdpbmRvdykuc2Nyb2xsKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKCQoJy5jb21tZW50LWFyZWEnKS5oYXMoJ2RpdicpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WinuWKoOivhOiuuicpO1xuICAgICAgICAgICAgICAgIGlmICgoJCgnLmF1dGhvci1pbWFnZScpLmlzT25TY3JlZW5WaXNpYmxlKCkgfHwgJCgkKCcucmVhZC1uZXh0JykuaXNPblNjcmVlblZpc2libGUoKSkpICYmICQoJy5hdXRob3ItaW1hZ2UnKS5oYXNDbGFzcygnZHVvc2h1by1sb2FkZWQnKSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAkKCcuYXV0aG9yLWltYWdlJykuYWRkQ2xhc3MoJ2R1b3NodW8tbG9hZGVkJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRKUygnaHR0cHM6Ly9zdGF0aWMuZHVvc2h1by5jb20vZW1iZWQuanMnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLXRocmVhZC1rZXknLCBkYXRhVGhyZWFkS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZGF0YS11cmwnLCBsb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZGF0YS10aXRsZScsICQoJ3RpdGxlJykuaHRtbCgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIERVT1NIVU8uRW1iZWRUaHJlYWQoZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsU3RvcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jb21tZW50LWFyZWEnKS5hcHBlbmQoZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjUwKVxuXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuXG5cbnZhciBJbWFnZVNtYXJ0TG9hZGVyID0ge1xuICAgIGlzV2ViUFN1cHBvcnRlZDogZmFsc2UsXG4gICAgaXNJbWFnZUNvbXByZXNzZWQ6IGZhbHNlLFxuICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBJbWFnZVNtYXJ0TG9hZGVyLndlYlBDaGVjaygpO1xuICAgIH0sXG4gICAgaXNDb21wcmVzc2VkQ2hlY2s6IGZ1bmN0aW9uKCkge1xuXG4gICAgfSxcbiAgICB3ZWJQQ2hlY2s6IGZ1bmN0aW9uKGZlYXR1cmUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBUZXN0SW1hZ2VzID0ge1xuICAgICAgICAgICAgZGVtbzogXCJVa2xHUmtvQUFBQlhSVUpRVmxBNFdBb0FBQUFRQUFBQUFBQUFBQUFBUVV4UVNBc0FBQUFCQnhBUkVZaUkvZ2NBQUFCV1VEZ2dHQUFBQURBQkFKMEJLZ0VBQVFBQkFCd2xwQUFEY0FEKy9nYlFBQT09XCJcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2coJ+aUr+aMgVdlYnDlk6YnKTtcbiAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gKGltZy53aWR0aCA+IDApICYmIChpbWcuaGVpZ2h0ID4gMCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5pSv5oyBV2VicCcpO1xuICAgICAgICAgICAgLy8gYWxlcnQoJ+aUr+aMgScpXG4gICAgICAgICAgICBJbWFnZVNtYXJ0TG9hZGVyLmlzV2ViUFN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgICAgICBJbWFnZVNtYXJ0TG9hZGVyLndlYlBMb2FkZXIoKTtcbiAgICAgICAgfTtcbiAgICAgICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfkuI3mlK/mjIFXZWJwJyk7XG4gICAgICAgICAgICBJbWFnZVNtYXJ0TG9hZGVyLmlzV2ViUFN1cHBvcnRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgSW1hZ2VTbWFydExvYWRlci53ZWJQTG9hZGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgIGltZy5zcmMgPSBcImRhdGE6aW1hZ2Uvd2VicDtiYXNlNjQsXCIgKyBUZXN0SW1hZ2VzWydkZW1vJ107XG5cbiAgICB9LFxuICAgIGltZ0xvYWRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfliqDovb3pu5jorqTlm77niYcnKTtcbiAgICB9LFxuICAgIHdlYlBMb2FkZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBjb25zb2xlLmxvZygn5Yqg6L29d2ViUCcpO1xuICAgICAgICAvLyBhbGVydChJbWFnZVNtYXJ0TG9hZGVyLmlzV2ViUFN1cHBvcnRlZCk7XG4gICAgICAgIGlmIChJbWFnZVNtYXJ0TG9hZGVyLmlzV2ViUFN1cHBvcnRlZCA9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5a695bqm5pivJyArIEdlbmVyYWwudmlld1dpZHRoKTtcbiAgICAgICAgICAgIGlmIChHZW5lcmFsLnZpZXdXaWR0aCA9PSA3NjgpIHtcbiAgICAgICAgICAgICAgICAkKFwiLmxhenlcIikubGF6eWxvYWQoe1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhX2F0dHJpYnV0ZTogJ3VybCcsXG4gICAgICAgICAgICAgICAgICAgIHdlYlBfbG9hZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNfc2NhbGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGlmIChHZW5lcmFsLnZpZXdXaWR0aCA8IDc2OCkge1xuICAgICAgICAgICAgICAgICQoXCIubGF6eVwiKS5sYXp5bG9hZCh7XG4gICAgICAgICAgICAgICAgICAgIGFkdmFuY2VkX2xvYWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfYXR0cmlidXRlOiAndXJsJyxcbiAgICAgICAgICAgICAgICAgICAgd2ViUF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpc19zY2FsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2NhbGVfd2lkdGg6IDc1MFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBhbGVydCgn5pmu6YCa5pSv5oyBJylcbiAgICAgICAgICAgICAgICAkKFwiLmxhenlcIikubGF6eWxvYWQoe1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhX2F0dHJpYnV0ZTogJ3VybCcsXG4gICAgICAgICAgICAgICAgICAgIHdlYlBfbG9hZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNfc2NhbGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChHZW5lcmFsLnZpZXdXaWR0aCA9PSA3NjgpIHtcbiAgICAgICAgICAgICAgICAkKFwiLmxhenlcIikubGF6eWxvYWQoe1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhX2F0dHJpYnV0ZTogJ3VybCcsXG4gICAgICAgICAgICAgICAgICAgIHdlYlBfbG9hZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGlzX3NjYWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzY2FsZV93aWR0aDogMTUwMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICBpZiAoR2VuZXJhbC52aWV3V2lkdGggPCA3NjgpIHtcbiAgICAgICAgICAgICAgICAkKFwiLmxhenlcIikubGF6eWxvYWQoe1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhX2F0dHJpYnV0ZTogJ3VybCcsXG4gICAgICAgICAgICAgICAgICAgIHdlYlBfbG9hZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGlzX3NjYWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzY2FsZV93aWR0aDogNzUwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGFsZXJ0KCfmma7pgJrmlK/mjIEnKVxuICAgICAgICAgICAgICAgICQoXCIubGF6eVwiKS5sYXp5bG9hZCh7XG4gICAgICAgICAgICAgICAgICAgIGFkdmFuY2VkX2xvYWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfYXR0cmlidXRlOiAndXJsJyxcbiAgICAgICAgICAgICAgICAgICAgd2ViUF9sb2FkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaXNfc2NhbGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH0sXG5cblxufVxuXG5cblxuJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XG4gICAgdmFyICR3aW5kb3cgPSAkKHdpbmRvdyk7XG5cbiAgICAkLmZuLmxhenlsb2FkID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICB2YXIgZWxlbWVudHMgPSB0aGlzO1xuICAgICAgICB2YXIgJGNvbnRhaW5lcjtcbiAgICAgICAgdmFyIHNldHRpbmdzID0ge1xuICAgICAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICAgICAgZmFpbHVyZV9saW1pdDogMCxcbiAgICAgICAgICAgIGV2ZW50OiBcInNjcm9sbFwiLFxuICAgICAgICAgICAgZWZmZWN0OiBcInNob3dcIixcbiAgICAgICAgICAgIGNvbnRhaW5lcjogd2luZG93LFxuICAgICAgICAgICAgZGF0YV9hdHRyaWJ1dGU6IFwib3JpZ2luYWxcIixcbiAgICAgICAgICAgIHNraXBfaW52aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGFwcGVhcjogbnVsbCxcbiAgICAgICAgICAgIGxvYWQ6IG51bGwsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhiZ0FLQUlBQUFQLy8vLy8vL3lIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUFBQ0lJeVBxY3Z0RDZPY3ROcUxzOTY4K3crRzRraVc1b21tNnNxMjdndkg4bFVBQUNINUJBZ0pBQUFBTEFBQUFBQnVBQW9BZzdTeXROemEzUFR5OU1UQ3hMeSt2T1RpNVB6Ni9MUzJ0TXpPek9UbTVQeisvUC8vL3dBQUFBQUFBQUFBQUFBQUFBUStjTWxKcTcwNDY4MjcvMkFvam1TSkdjaEJKR2JydmhzQ3pJY0EzM2g3ekhPUS8wQVBnWGNvQkkvSVNnS3dJeWlTVUtRZ1VIaEdyOWlzZHN0OVJRQUFJZmtFQ0FrQUFBQXNBQUFBQUc0QUNnQ0R0TEswM05yYzlQTDB4TUxFdkw2ODVPTGsvUHI4dExhMHpNN001T2JrL1A3OC8vLy9BQUFBQUFBQUFBQUFBQUFBQkQ1d3lVbXJ2VGpyemJ2L1lDaU9aR2xhQm5JUXllbSs4SVVBOUNIRWVFNGVOQjNvd09DRzBEc1VoTWlrSkFIZ0VSVEthRkFRS0VDbDJLeDJ5OTFHQUFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVQbkRKU2F1OU9Pdk51LzlnS0k1a2FaWUdjaERKNmI3d2hRRDBJY1I0VGg0MEhlakE0SWJRT3hTRXlLUWtBZUFSRk1wb1VCQW9RS1hZckhiTGpVVUFBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFRK2NNbEpxNzA0NjgyNy8yQW9qbVJwbnBpQkhFU0N2bkE4SVVCOUNIS3VoMGRkQjd1Z0VFUHdIUXJEWkRJQjZCRVV5bWhRRUNoQXBkaXNkc3NOUlFBQUlma0VDQWtBQUFBc0FBQUFBRzRBQ2dDRHRMSzAzTnJjOVBMMHhNTEV2TDY4NU9May9Qcjh0TGEwek03TTVPYmsvUDc4Ly8vL0FBQUFBQUFBQUFBQUFBQUFCRDV3eVVtcnZUanJ6YnYvWUNpT1pHbWVuWUVjUklLK2NEd2hRSDBJY3E2SFIxMEh1NkFRUS9BZENzTmtNZ0hvRVJUS2FGQVFLRUNsMkt4MnkrVkVBQUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRVVYREpTYXU5T092TnUvOWdLSTVrdVNURWdSaG1pNkVxNjVZQ1lBUElyQy8xbmUraXdBRXdQQUJkQWFMTmVBUVZiZ0JDMC9SVVNxY2VSWXFZd0pJTTIwUFgyMUVVQWdJeXlZeFd1OS93dUh3YUFRQWgrUVFJQ1FBQUFDd0FBQUFBYmdBS0FJTzBzclRjMnR6MDh2VEV3c1M4dnJ6azR1VDgrdnkwdHJUTXpzems1dVQ4L3Z6Ly8vOEFBQUFBQUFBQUFBQUFBQUFFVTNESlNhdTlPT3ZOdS85Z0tJNWtXU2JFZ1JqbVppQUhrYlQwS0FBNGdOUVlraDhDbnBBVE9BQ01oMkVsaHdzb241WUNrd0NWRUk3SFFuV3JTQjFuMVVTT29OaHlDNEdnV1JCSWxNM3d1SHhPaDBjQUFDSDVCQWdKQUFBQUxBQUFBQUJ1QUFvQWc3U3l0TnphM1BUeTlNVEN4THkrdk9UaTVQejYvTFMydE16T3pPVG01UHorL1AvLy93QUFBQUFBQUFBQUFBQUFBQVJRY01sSnE3MDQ2ODI3LzJBb2ptUnBlZ2x4SU1hWXJ1MHB6NWNBM0FBaTJyaE8vN1RBQVRBOGlBTEVteEhJTkJWd0FJTG9tWlEycnlLRmlwZ1FHYmFITG5iOFVSUUNBcElaVFc2NzMvQzRPd0lBSWZrRUNBa0FBQUFzQUFBQUFHNEFDZ0NEdExLMDNOcmM5UEwweE1MRXZMNjg1T0xrL1ByOHRMYTB6TTdNNU9iay9QNzgvLy8vQUFBQUFBQUFBQUFBQUFBQUJGVnd5VW1ydlRqcnpidi9ZQ2lPWkdtZVMwSWNpSkVaeUVFa2FHMS9BcUFEU0lic0I4RnRTS3dFRGdEa0liUFRCWXJRWWFGSnlCQ1N5VUowaTFLc2tqUk1Za2RRY004bFJTRWcxQWdDQ1RONlRxL2I3NllJQUNINUJBZ0pBQUFBTEFBQUFBQnVBQW9BZzdTeXROemEzUFR5OU1UQ3hMeSt2T1RpNVB6Ni9MUzJ0TXpPek9UbTVQeisvUC8vL3dBQUFBQUFBQUFBQUFBQUFBUlNjTWxKcTcwNDY4MjcvMkFvam1ScG5sWkNISWhScWF5THpyUW9BRGlBVUhlKzE4QmdKbkFBRkErVWdCR0hGRHFmaFJ5QVFJa3VxYzhzVUxFeUppaUc3dUdyTGM4VWhZREFnbGFiMy9DNGZINktBQUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRWFYREpTYXU5T092TnUvOWdLSTZrbHhBSFlwU3NaaUFIa1ZSdlBMZWNBT3dBZ3Y4VUJPOGdDQTZMUUV6Z0FHQWVra0RlTGtCaDhxaFFTMEZLeU9JSXpXYUJBdDRkeGw2S0F0VzhwVWtKSGtGQmlUUG5iM1VoZ015VEJBRUpkQldBQllOK2lJbUtpNHh2RVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVZM0RKU2F1OU9Pdk51LzlnS0k1azJTWEVnUmdtaDZvczlhNXRqUWxBRGlEMnJlOFVuSTdYS3k0Q0IwRHlZS3dFbERubTVKbFVObnVGSCtFNnlVSzMzU2dBekRVcFVzcEVlV0ZBSDlTVDloSytMaWtLQVVGOWNjOWIrbnA3Z29PRWhZWkZFUUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRWFYREpTYXU5T092TnUvOWdLSTVrYVZvSmNTREdhQ0FIa1ZSdlBKKzRLUUE4Z0l5STNrRkFDZktHdWFRb2NBQTBENk1lTDBCcDlxaktiS2NnSll3SVRtZUJBajZPdGVpTVF1VzhoUkk5Z29JQ2I4clQrSXVpRUNDU0JBRUpjeFdBQllONWlJbUtpNHlMRVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVaSERKU2F1OU9Pdk51LzlnS0k1a2FZSUpjU0NHbHE0dDliSm5iVjhDb0FOSWx1Kzl5VThYdkJscmdRTkFlY2dFbHJybTVLbGNIcSttd2c1QXlHaWgzY2xYR2NhYVFRclZNcEV4cUEvc2lac1pQOXM3aWtKQXNNbnZMWDU4ZDRPRWhZYUhaeEVBSWZrRUNBa0FBQUFzQUFBQUFHNEFDZ0NEdExLMDNOcmM5UEwweE1MRXZMNjg1T0xrL1ByOHRMYTB6TTdNNU9iay9QNzgvLy8vQUFBQUFBQUFBQUFBQUFBQUJHbHd5VW1ydlRqcnpidi9ZQ2lPWkdtV0NYRWdSbVVnQjVHNHNIemVPQ2NBUElCVWlONUJRQW55aHJta1VoSTRBSnlIU284WG9EaDcxYVgyVkpnU0tvVG5zMEFKSDhuYjlFaWhlczRvaVI1QkFSZlAxZmlRb2hBZ1dnUUJDWFFWZ0FXRGVZaUppb3VNTnhFQUlma0VDQWtBQUFBc0FBQUFBRzRBQ2dDRHRMSzAzTnJjOVBMMHhNTEV2TDY4NU9May9Qcjh0TGEwek03TTVPYmsvUDc4Ly8vL0FBQUFBQUFBQUFBQUFBQUFCSE53eVVtcnZUanJ6YnYvWUNpT3BHYVVxSWtjUkdJbHhJR2NGQ3pUYVlYa1BJVUF3SU9BSWdBQ2Q1T2lFZG1USEpvOUl6QkFDVWlmRTZzUkN5VkFlUVRBUVZ5Z0ZNWmo3NlFnRnF1aHJtOHFZU1FvS0lxWU9DNHg2QUY4Y29JbEFnRUpkeFVLQlFGRGlZdU5nNUdTazVTVmxoUVJBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFTQWNNbEpxNzA0NjgyNy8yQW9qbVJaSmNTQkdDYUhxaXhsSUFlUlZITjl0NlVBL0FBRUwrTURDaWtJNEVHQVZES0hvc0FCTUQxQUx3SHF6MG9CL2dLVUtSQjhCUlc4aEhMbHJFMVRDTnBENGEyY3F6MktGSFYzWHhqMEIzd1NDVUFFQ2hTRVU0WjllQVVCVDR3TENvNlFGQUlCQ1ljVmx3V2FrWitnb2FLam9CRUFJZmtFQ0FrQUFBQXNBQUFBQUc0QUNnQ0R0TEswM05yYzlQTDB4TUxFdkw2ODVPTGsvUHI4dExhMHpNN001T2JrL1A3OC8vLy9BQUFBQUFBQUFBQUFBQUFBQkgxd3lVbXJ2VGpyemJ2L1lDaU9aRWtteElFWW80RWNSR0toS2t2UnE2bDdBdUFEaUJIaWR4QlFlci9nQk9sVDdwNll3QUV3UFl4K3ZnQWxnTFZPdUVTbzJGTEFFa1lFS3JWQUtWUUI1MG01R2gvYkZTbXFUSlQ0RVJRVWVGVjdFZ1o1QUlSMll3b0ZBVVlrQWdFSmdCV01qaGFXajRxYm5KMmVuNkFoRVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVnSERKU2F1OU9Pdk51LzlnS0k1a2FXSUpjU0NHbHE0dFpTQUhrVlJ6Zlo5OEtRQkFBQ0x6Q3c0cGlPQkJnRlF5ZTFCUTRBQ2dIaktCS3ZCS0NRSURGR29RSEMxekNsNUNCcTFWVXdqYVErR3RuSnZ2R0lXcXVyc1k5Z2Q5RWdsQkJBb1VoRlNHZUl3V0NnVUJUeG1Qa1JjQ0FRbUhGWmNGbW8yZm9LR2lvNThSQUNINUJBZ0pBQUFBTEFBQUFBQnVBQW9BZzdTeXROemEzUFR5OU1UQ3hMeSt2T1RpNVB6Ni9MUzJ0TXpPek9UbTVQeisvUC8vL3dBQUFBQUFBQUFBQUFBQUFBUi9jTWxKcTcwNDY4MjcvMkFvam1ScGRnbHhJRVpsSUFlUldPbmFValY3N3Z3aUFFQUFvb0lJSGdTVVgzQTRVUUtadmFnb2NBQlVENVVnTUVBSmFMRVRyMUZLQmhXMGhBckJhaTFRQ2xkQWVuSyt6c3Q0alVKbG5lR0NCQW9VZTFkK0VnWjhBSVo1akJZS0JRRklGZ0lCQ1lJVmo1R09rSktObnArZ29hSlNFUUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRWdIREpTYXU5T092TnUvOWdLSTVrYVhZR2NoQ0psUkFIWWxUcDJtWnZQSjk4aVFEQWc0QWlBQUlSbFY5d2VDa2FrYjFvNkdBRUJDaUI2cUZTdFdLeXhxMTAzQ0dFQzVRQ2xVcW9tTmZvaXhyQUp0czFDVHFBb0tBWVlIUTNFM2xBZkJnS2dBZUNkNHhFQVFWOUZRb0ZBVXdWQWdFSmtZZVVsbzJmb0tHaW8yTVJBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFSOGNNbEpxNzA0NjgyNy8yQW9qbVJwZWdseElFWmxJQWVSV09uYWlqVjc3cHdBL0FCRUJRRThDQ2crb0RDVS9DMTVVRXZnQUtBZUtzQmZnQkxJWGtQZFluUk1LV1FKRlVLMVdpaGJBZWlRMlJvbmp4V3E2b3lTQUJJVUZIaFdleUFHZVFDRWRsRUtCUUZIRmdJQkNZQVZqSTRrbG8rS201eWRucCtLRVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVmSERKU2F1OU9Pdk51LzlnS0k1a2FYb0djaENKbFJBSFlsVHAycDdhZStBbkF2d0hBVVh3K3lFcVBxQ1FaeUgrbUtWREVSQ2dCS1k3eXBRS3JWeWZYUkdoZUNoUUNsSXBvVEpPbThNU05DQUwveVRtQUlLQ1lvRE5ieE4zUDNwMUN3cCtoU0FDQVFWN0ZRb0ZBVXNWaXdtT2haQlZpWnVjblo2ZkZoRUFJZmtFQ0FrQUFBQXNBQUFBQUc0QUNnQ0R0TEswM05yYzlQTDB4TUxFdkw2ODVPTGsvUHI4dExhMHpNN001T2JrL1A3OC8vLy9BQUFBQUFBQUFBQUFBQUFBQkd0d3lVbXJ2VGpyemJ2L1lDaU9aR2wrQ1hFZ1JtVWdCNUZZNmRxZWVLNEpRQThnRllUdklLRHdmRUNkY3JrSUhBRFBROFhYQzFBQ1ZDbHpleXBRQ1JVQ0ZGcWdGS0lBTUhjOVVxaWdNMHJDUjFCUTNORTRlLzlSRkFKRkZnSUJDWFlWZm9COGlvdU1qWTVyRVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVhM0RKU2F1OU9Pdk51LzlnS0k1a2FYNEdjaENKbFJBSFltaHZQSjk0YmlGQWZ3Z1VRYStIeUFpSFJaMHlkeGdDQXBTQTg1Q1JEcW5MYklsd0xWQUt6U1loVXdDRXg5cDBLR0VHRUJRVUE4emN3c2liZ0xwNjN4RUVDbkFWQ2dVQlFCcURoWHlLaTR5Tmpuc1JBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFScGNNbEpxNzA0NjgyNy8yQW9qbVJwZ2dseElFWmxJQWVSa09uYW5uZ3BBRHlBVklqZVFTRGE5WDY1WkNod0FEUVBsUjR2SUFwSW9jcHNweUFsVkFoT1owRlVlQUs4Mm5SR29YTE9LSWtlUVNGaVA5L3FmRVZSQ0JBdEFnRUpkQ044Zm5xSWlZcUxqRm9SQUNINUJBZ0pBQUFBTEFBQUFBQnVBQW9BZzdTeXROemEzUFR5OU1UQ3hMeSt2T1RpNVB6Ni9MUzJ0TXpPek9UbTVQeisvUC8vL3dBQUFBQUFBQUFBQUFBQUFBUnJjTWxKcTcwNDY4MjcvMkFvam1ScGdnWnlFSW1WRUFkaW5Oc2J6M1JlSVVCL0NCUkJyNGZRWFlURG90RjRHQUlDbElEenNLeEloOVJxam9BdFVBck5Ka0U3S1FEQ1kvSXBjUVlRRkJRRDdOeFN5NXVBdXRva0NCVGdGUW9GQVVCN0M0S0Vob3FMakkyT0dCRUFJZmtFQ0FrQUFBQXNBQUFBQUc0QUNnQ0R0TEswM05yYzlQTDB4TUxFdkw2ODVPTGsvUHI4dExhMHpNN001T2JrL1A3OC8vLy9BQUFBQUFBQUFBQUFBQUFBQkZWd3lVbXJ2VGpyemJ2L1lDaU9aR21HQ1hFZ1JtVWdCNUdjZEcwS1FBNGdGYUlmQXB0d3lBa2NBTWREUlpjTEVKL1FTWUZKcUJDUXlFSjBPMVNva0ROS1FrZFFjTTgxUlNFUXRBZ0NDVE42VHEvYjc5c0lBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFSUWNNbEpxNzA0NjgyNy8yQW9qbVJwaGdaeUVJbVdydTBwenlFQzNJZVEyYmhPLzhETDRYWUxaSVpFWTNBWkpCQVBoWXdURjJWYVp3bkFrS0RJRkpEY3EvZ2tDQlM2bW5JQ1BXNjczL0Q0TlFJQUlma0VDQWtBQUFBc0FBQUFBRzRBQ2dDRHRMSzAzTnJjOVBMMHhNTEV2TDY4NU9May9Qcjh0TGEwek03TTVPYmsvUDc4Ly8vL0FBQUFBQUFBQUFBQUFBQUFCRk53eVVtcnZUanJ6YnYvWUNpT1pHbUtDWEVneG1nZ0I1R2NkSTBKUUE0Z0k2SWZBcHZRRmpnQWpJZVJMaGNZT2syRkpXRkVPQjRMejZ4SW9Uck9VRHFDUWt2K0tBcUJJRWtRU0l6TDhMaDhUbjlHQUFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVVSERKU2F1OU9Pdk51LzlnS0k1a2FZb0djaERKdWFWcjY4NGdBdHlIUUY4MnJ1L0F6T0YyQ3dRcFE2THh5SndRaUlkQ2MvSEVTYWZNQkdCSVVFd0x5UzYyS1FnVXZOaHlBajF1dTkvd09DWUNBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFRK2NNbEpxNzA0NjgyNy8yQW9qbVJwamdseElNYnB2ckFsQURTQXhIaE9CZ2ZRSDdxZ2NGT29BUWpEcEZLaVVQa1N5NmhRVVFnSXBOaXNkc3NOUmdBQUlma0VDQWtBQUFBc0FBQUFBRzRBQ2dDRHRMSzAzTnJjOVBMMHhNTEV2TDY4NU9May9Qcjh0TGEwek03TTVPYmsvUDc4Ly8vL0FBQUFBQUFBQUFBQUFBQUFCRDV3eVVtcnZUanJ6YnYvWUNpT1pHbWVTMEljaUlHK2NDd0pRQTBnY3E2SHdRSDRoNTF3aUNuWUFBU2lVcWxZL1JMTHFGQlJDQWlrMkt4Mnk0VkZBQUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRVBuREpTYXU5T092TnUvOWdLSTVrYVo1YlFoeUlnYjV3TEFsQURTQnlyb2ZCQWZpSG5YQ0lLZGdBQktKU3FWajlFc3VvVUZFSUNLVFlySGJMQlVVQUFDSDVCQWdKQUFBQUxBQUFBQUJ1QUFvQWc3U3l0TnphM1BUeTlNVEN4THkrdk9UaTVQejYvTFMydE16T3pPVG01UHorL1AvLy93QUFBQUFBQUFBQUFBQUFBQVErY01sSnE3MDQ2ODI3LzJBb2ptUnBucWlVRUFkaXBIQU1DMEFOSUhLdWg4RUIrSWVkY0lncDJBQUVvbEtwWVAwU3k2aFFVUWdJcE5pc2RzdGRSQUFBSWZrRUNBa0FBQUFzQUFBQUFHNEFDZ0NEdExLMDNOcmM5UEwweE1MRXZMNjg1T0xrL1ByOHRMYTB6TTdNNU9iay9QNzgvLy8vQUFBQUFBQUFBQUFBQUFBQUJEMXd5VW1ydlRqcnpidi9ZQ2lPWkdtZXFKa1FCMktrY0F3TFFBMGdjcTZId1FINGg1MXdpQ25ZQUFTaVVxbGcvUkxMcUZCUkNBaWsyS3gyaTRvQUFEcz1cIixcbiAgICAgICAgICAgIGFkdmFuY2VkX2xvYWQ6IGZhbHNlLFxuICAgICAgICAgICAgd2ViUF9sb2FkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzX3NjYWxlOiBmYWxzZSxcbiAgICAgICAgICAgIHNjYWxlX3dpZHRoOiA3NTBcbiAgICAgICAgfTtcblxuICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgICAgICAgICB2YXIgY291bnRlciA9IDA7XG5cbiAgICAgICAgICAgIGVsZW1lbnRzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3Muc2tpcF9pbnZpc2libGUgJiYgISR0aGlzLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoJC5hYm92ZXRoZXRvcCh0aGlzLCBzZXR0aW5ncykgfHxcbiAgICAgICAgICAgICAgICAgICAgJC5sZWZ0b2ZiZWdpbih0aGlzLCBzZXR0aW5ncykpIHtcbiAgICAgICAgICAgICAgICAgICAgLyogTm90aGluZy4gKi9cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEkLmJlbG93dGhlZm9sZCh0aGlzLCBzZXR0aW5ncykgJiZcbiAgICAgICAgICAgICAgICAgICAgISQucmlnaHRvZmZvbGQodGhpcywgc2V0dGluZ3MpKSB7XG4gICAgICAgICAgICAgICAgICAgICR0aGlzLnRyaWdnZXIoXCJhcHBlYXJcIik7XG4gICAgICAgICAgICAgICAgICAgIC8qIGlmIHdlIGZvdW5kIGFuIGltYWdlIHdlJ2xsIGxvYWQsIHJlc2V0IHRoZSBjb3VudGVyICovXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgrK2NvdW50ZXIgPiBzZXR0aW5ncy5mYWlsdXJlX2xpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8qIE1haW50YWluIEJDIGZvciBhIGNvdXBsZSBvZiB2ZXJzaW9ucy4gKi9cbiAgICAgICAgICAgIGlmICh1bmRlZmluZWQgIT09IG9wdGlvbnMuZmFpbHVyZWxpbWl0KSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5mYWlsdXJlX2xpbWl0ID0gb3B0aW9ucy5mYWlsdXJlbGltaXQ7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnMuZmFpbHVyZWxpbWl0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVuZGVmaW5lZCAhPT0gb3B0aW9ucy5lZmZlY3RzcGVlZCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZWZmZWN0X3NwZWVkID0gb3B0aW9ucy5lZmZlY3RzcGVlZDtcbiAgICAgICAgICAgICAgICBkZWxldGUgb3B0aW9ucy5lZmZlY3RzcGVlZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJC5leHRlbmQoc2V0dGluZ3MsIG9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogQ2FjaGUgY29udGFpbmVyIGFzIGpRdWVyeSBhcyBvYmplY3QuICovXG4gICAgICAgICRjb250YWluZXIgPSAoc2V0dGluZ3MuY29udGFpbmVyID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIHNldHRpbmdzLmNvbnRhaW5lciA9PT0gd2luZG93KSA/ICR3aW5kb3cgOiAkKHNldHRpbmdzLmNvbnRhaW5lcik7XG5cbiAgICAgICAgLyogRmlyZSBvbmUgc2Nyb2xsIGV2ZW50IHBlciBzY3JvbGwuIE5vdCBvbmUgc2Nyb2xsIGV2ZW50IHBlciBpbWFnZS4gKi9cbiAgICAgICAgaWYgKDAgPT09IHNldHRpbmdzLmV2ZW50LmluZGV4T2YoXCJzY3JvbGxcIikpIHtcbiAgICAgICAgICAgICRjb250YWluZXIuYmluZChzZXR0aW5ncy5ldmVudCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+a7muWKqOS6hjExMScpO1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfmu5rliqgnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIHZhciAkc2VsZiA9ICQoc2VsZik7XG5cbiAgICAgICAgICAgIHNlbGYubG9hZGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8qIElmIG5vIHNyYyBhdHRyaWJ1dGUgZ2l2ZW4gdXNlIGRhdGE6dXJpLiAqL1xuICAgICAgICAgICAgaWYgKCRzZWxmLmF0dHIoXCJzcmNcIikgPT09IHVuZGVmaW5lZCB8fCAkc2VsZi5hdHRyKFwic3JjXCIpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGlmICgkc2VsZi5pcyhcImltZ1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5hdHRyKFwic3JjXCIsIHNldHRpbmdzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuYWRkQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyogV2hlbiBhcHBlYXIgaXMgdHJpZ2dlcmVkIGxvYWQgb3JpZ2luYWwgaW1hZ2UuICovXG5cbiAgICAgICAgICAgICRzZWxmLm9uZShcImFwcGVhclwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5hcHBlYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50c19sZWZ0ID0gZWxlbWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuYXBwZWFyLmNhbGwoc2VsZiwgZWxlbWVudHNfbGVmdCwgc2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciB1cGRhdGVkVXJsID0gJHNlbGYuYXR0cihcImRhdGEtXCIgKyBzZXR0aW5ncy5kYXRhX2F0dHJpYnV0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5hZHZhbmNlZF9sb2FkID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRVcmwgKz0gJyEnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5pc19zY2FsZSA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkVXJsICs9ICcvZncvJyArIHNldHRpbmdzLnNjYWxlX3dpZHRoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy53ZWJQX2xvYWQgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZFVybCArPSAnL2Zvcm1hdC93ZWJwJztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHVwZGF0ZWRVcmwpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiPGltZyAvPlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmJpbmQoXCJsb2FkXCIsIGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuaGlkZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxmLmlzKFwiaW1nXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmF0dHIoXCJzcmNcIiwgdXBkYXRlZFVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuY3NzKFwiYmFja2dyb3VuZC1pbWFnZVwiLCBcInVybCgnXCIgKyB1cGRhdGVkVXJsICsgXCInKVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGZbc2V0dGluZ3MuZWZmZWN0XShzZXR0aW5ncy5lZmZlY3Rfc3BlZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmVtb3ZlIGltYWdlIGZyb20gYXJyYXkgc28gaXQgaXMgbm90IGxvb3BlZCBuZXh0IHRpbWUuICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAkLmdyZXAoZWxlbWVudHMsIGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFlbGVtZW50LmxvYWRlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyA9ICQodGVtcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MubG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHNfbGVmdCA9IGVsZW1lbnRzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MubG9hZC5jYWxsKHNlbGYsIGVsZW1lbnRzX2xlZnQsIHNldHRpbmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKFwic3JjXCIsIHVwZGF0ZWRVcmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvKiBXaGVuIHdhbnRlZCBldmVudCBpcyB0cmlnZ2VyZWQgbG9hZCBvcmlnaW5hbCBpbWFnZSAqL1xuICAgICAgICAgICAgLyogYnkgdHJpZ2dlcmluZyBhcHBlYXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmICgwICE9PSBzZXR0aW5ncy5ldmVudC5pbmRleE9mKFwic2Nyb2xsXCIpKSB7XG4gICAgICAgICAgICAgICAgJHNlbGYuYmluZChzZXR0aW5ncy5ldmVudCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2VsZi5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLnRyaWdnZXIoXCJhcHBlYXJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLyogQ2hlY2sgaWYgc29tZXRoaW5nIGFwcGVhcnMgd2hlbiB3aW5kb3cgaXMgcmVzaXplZC4gKi9cbiAgICAgICAgJHdpbmRvdy5iaW5kKFwicmVzaXplXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qIFdpdGggSU9TNSBmb3JjZSBsb2FkaW5nIGltYWdlcyB3aGVuIG5hdmlnYXRpbmcgd2l0aCBiYWNrIGJ1dHRvbi4gKi9cbiAgICAgICAgLyogTm9uIG9wdGltYWwgd29ya2Fyb3VuZC4gKi9cbiAgICAgICAgaWYgKCgvKD86aXBob25lfGlwb2R8aXBhZCkuKm9zIDUvZ2kpLnRlc3QobmF2aWdhdG9yLmFwcFZlcnNpb24pKSB7XG4gICAgICAgICAgICAkd2luZG93LmJpbmQoXCJwYWdlc2hvd1wiLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW5hbEV2ZW50ICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQucGVyc2lzdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIoXCJhcHBlYXJcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogRm9yY2UgaW5pdGlhbCBjaGVjayBpZiBpbWFnZXMgc2hvdWxkIGFwcGVhci4gKi9cbiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8qIENvbnZlbmllbmNlIG1ldGhvZHMgaW4galF1ZXJ5IG5hbWVzcGFjZS4gICAgICAgICAgICovXG4gICAgLyogVXNlIGFzICAkLmJlbG93dGhlZm9sZChlbGVtZW50LCB7dGhyZXNob2xkIDogMTAwLCBjb250YWluZXIgOiB3aW5kb3d9KSAqL1xuXG4gICAgJC5iZWxvd3RoZWZvbGQgPSBmdW5jdGlvbihlbGVtZW50LCBzZXR0aW5ncykge1xuICAgICAgICB2YXIgZm9sZDtcblxuICAgICAgICBpZiAoc2V0dGluZ3MuY29udGFpbmVyID09PSB1bmRlZmluZWQgfHwgc2V0dGluZ3MuY29udGFpbmVyID09PSB3aW5kb3cpIHtcbiAgICAgICAgICAgIGZvbGQgPSAod2luZG93LmlubmVySGVpZ2h0ID8gd2luZG93LmlubmVySGVpZ2h0IDogJHdpbmRvdy5oZWlnaHQoKSkgKyAkd2luZG93LnNjcm9sbFRvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9sZCA9ICQoc2V0dGluZ3MuY29udGFpbmVyKS5vZmZzZXQoKS50b3AgKyAkKHNldHRpbmdzLmNvbnRhaW5lcikuaGVpZ2h0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9sZCA8PSAkKGVsZW1lbnQpLm9mZnNldCgpLnRvcCAtIHNldHRpbmdzLnRocmVzaG9sZDtcbiAgICB9O1xuXG4gICAgJC5yaWdodG9mZm9sZCA9IGZ1bmN0aW9uKGVsZW1lbnQsIHNldHRpbmdzKSB7XG4gICAgICAgIHZhciBmb2xkO1xuXG4gICAgICAgIGlmIChzZXR0aW5ncy5jb250YWluZXIgPT09IHVuZGVmaW5lZCB8fCBzZXR0aW5ncy5jb250YWluZXIgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgZm9sZCA9ICR3aW5kb3cud2lkdGgoKSArICR3aW5kb3cuc2Nyb2xsTGVmdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9sZCA9ICQoc2V0dGluZ3MuY29udGFpbmVyKS5vZmZzZXQoKS5sZWZ0ICsgJChzZXR0aW5ncy5jb250YWluZXIpLndpZHRoKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9sZCA8PSAkKGVsZW1lbnQpLm9mZnNldCgpLmxlZnQgLSBzZXR0aW5ncy50aHJlc2hvbGQ7XG4gICAgfTtcblxuICAgICQuYWJvdmV0aGV0b3AgPSBmdW5jdGlvbihlbGVtZW50LCBzZXR0aW5ncykge1xuICAgICAgICB2YXIgZm9sZDtcblxuICAgICAgICBpZiAoc2V0dGluZ3MuY29udGFpbmVyID09PSB1bmRlZmluZWQgfHwgc2V0dGluZ3MuY29udGFpbmVyID09PSB3aW5kb3cpIHtcbiAgICAgICAgICAgIGZvbGQgPSAkd2luZG93LnNjcm9sbFRvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9sZCA9ICQoc2V0dGluZ3MuY29udGFpbmVyKS5vZmZzZXQoKS50b3A7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9sZCA+PSAkKGVsZW1lbnQpLm9mZnNldCgpLnRvcCArIHNldHRpbmdzLnRocmVzaG9sZCArICQoZWxlbWVudCkuaGVpZ2h0KCk7XG4gICAgfTtcblxuICAgICQubGVmdG9mYmVnaW4gPSBmdW5jdGlvbihlbGVtZW50LCBzZXR0aW5ncykge1xuICAgICAgICB2YXIgZm9sZDtcblxuICAgICAgICBpZiAoc2V0dGluZ3MuY29udGFpbmVyID09PSB1bmRlZmluZWQgfHwgc2V0dGluZ3MuY29udGFpbmVyID09PSB3aW5kb3cpIHtcbiAgICAgICAgICAgIGZvbGQgPSAkd2luZG93LnNjcm9sbExlZnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvbGQgPSAkKHNldHRpbmdzLmNvbnRhaW5lcikub2Zmc2V0KCkubGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb2xkID49ICQoZWxlbWVudCkub2Zmc2V0KCkubGVmdCArIHNldHRpbmdzLnRocmVzaG9sZCArICQoZWxlbWVudCkud2lkdGgoKTtcbiAgICB9O1xuXG4gICAgJC5pbnZpZXdwb3J0ID0gZnVuY3Rpb24oZWxlbWVudCwgc2V0dGluZ3MpIHtcblxuICAgICAgICByZXR1cm4gISQucmlnaHRvZmZvbGQoZWxlbWVudCwgc2V0dGluZ3MpICYmICEkLmxlZnRvZmJlZ2luKGVsZW1lbnQsIHNldHRpbmdzKSAmJlxuICAgICAgICAgICAgISQuYmVsb3d0aGVmb2xkKGVsZW1lbnQsIHNldHRpbmdzKSAmJiAhJC5hYm92ZXRoZXRvcChlbGVtZW50LCBzZXR0aW5ncyk7XG4gICAgfTtcblxuICAgIC8qIEN1c3RvbSBzZWxlY3RvcnMgZm9yIHlvdXIgY29udmVuaWVuY2UuICAgKi9cbiAgICAvKiBVc2UgYXMgJChcImltZzpiZWxvdy10aGUtZm9sZFwiKS5zb21ldGhpbmcoKSBvciAqL1xuICAgIC8qICQoXCJpbWdcIikuZmlsdGVyKFwiOmJlbG93LXRoZS1mb2xkXCIpLnNvbWV0aGluZygpIHdoaWNoIGlzIGZhc3RlciAqL1xuXG4gICAgJC5leHRlbmQoJC5leHByW1wiOlwiXSwge1xuICAgICAgICBcImJlbG93LXRoZS1mb2xkXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAkLmJlbG93dGhlZm9sZChhLCB7XG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJhYm92ZS10aGUtdG9wXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAhJC5iZWxvd3RoZWZvbGQoYSwge1xuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFwicmlnaHQtb2Ytc2NyZWVuXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAkLnJpZ2h0b2Zmb2xkKGEsIHtcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBcImxlZnQtb2Ytc2NyZWVuXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAhJC5yaWdodG9mZm9sZChhLCB7XG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJpbi12aWV3cG9ydFwiOiBmdW5jdGlvbihhKSB7XG4gICAgICAgICAgICByZXR1cm4gJC5pbnZpZXdwb3J0KGEsIHtcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvKiBNYWludGFpbiBCQyBmb3IgY291cGxlIG9mIHZlcnNpb25zLiAqL1xuICAgICAgICBcImFib3ZlLXRoZS1mb2xkXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAhJC5iZWxvd3RoZWZvbGQoYSwge1xuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFwicmlnaHQtb2YtZm9sZFwiOiBmdW5jdGlvbihhKSB7XG4gICAgICAgICAgICByZXR1cm4gJC5yaWdodG9mZm9sZChhLCB7XG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJsZWZ0LW9mLWZvbGRcIjogZnVuY3Rpb24oYSkge1xuICAgICAgICAgICAgcmV0dXJuICEkLnJpZ2h0b2Zmb2xkKGEsIHtcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBHZW5lcmFsLmluaXQoKTtcbiAgICBJbWFnZVNtYXJ0TG9hZGVyLmluaXQoKTtcbiAgICBpZiAoJCgnYm9keScpLmhhc0NsYXNzKCdwb3N0LXRlbXBsYXRlJykpIHtcbiAgICAgICAgR2VuZXJhbC5hZGRJY29ucygpO1xuICAgICAgICBHZW5lcmFsLmNvbW1lbnRMb2FkZXIoKTtcbiAgICB9XG5cbn0pXG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= +function loadJS(A,e,t){var o=!!window.ActiveXObject,a=o&&!window.XMLHttpRequest,i=document.createElement("script"),n=a?document.documentElement:document.getElementsByTagName("head")[0];i.type="text/javascript",i.async=!0,i.readyState?i.onreadystatechange=function(){("loaded"==i.readyState||"complete"==i.readyState)&&(i.onreadystatechange=null,e&&e())}:i.onload=function(){e&&e()},i.src=A,t?document.getElementById(t).appendChild(i):n.insertBefore(i,n.firstChild)}$.fn.extend({isOnScreenVisible:function(){if(!$("body").hasClass("post-template"))return!1;var A=$(window),e={top:A.scrollTop(),left:A.scrollLeft()};e.right=e.left+A.width(),e.bottom=e.top+A.height();var t=this.offset();return t.right=t.left+this.outerWidth(),t.bottom=t.top+this.outerHeight(),!(e.rightt.right||e.bottomt.bottom)}});var duoshuoQuery={short_name:"luolei"},GlobalConfigue={duoshuoDomain:"https://luolei.org"},General={isMobile:!1,isWechat:!1,viewWidth:$(window).width(),absUrl:location.protocol+"//"+location.host,init:function(){var A=window,e=(A.document,navigator.userAgent.toLowerCase()),t=A.navigator.appVersion.match(/android/gi);A.navigator.appVersion.match(/iphone/gi);"micromessenger"==e.match(/MicroMessenger/i)&&(General.isWechat=!0,$("body").addClass("wechat-webview")),t&&(General.isMobile=!0),$("body").hasClass("post-template")&&(General.updateImageWidth(),General.rewardLoader()),General.webFontLoader(),General.scrollToPos(),General.arrowEvent(),General.commentLoader()},updateImageWidth:function(){function A(){var A=$(this),e=t.outerWidth(),o=this.naturalWidth;o>=e?A.addClass("full-img"):A.removeClass("full-img")}function e(){o.each(A)}var t=$(".post-content"),o=$(".single-post-inner img").on("load",A);e()},webFontLoader:function(){WebFontConfig={loading:function(){console.log("loading font")},custom:{families:["Exo","iconfont"],urls:[General.absUrl+"/assets/css/font.min.css"]}},loadJS(General.absUrl+"/assets/js/webfont.js",function(){console.log("加载字体JS"),WebFont.load({custom:{families:["Exo","iconfont"]}})})},arrowEvent:function(){$(".arrow_down").click(function(){return $("html,body").animate({scrollTop:$(window).height()-20},600,function(){window.location.hash="#"}),!1})},scrollToPos:function(A){var e="我要飞到最高",t=(A||$(window).height(),$('
').appendTo("body"));$(window).scroll(function(){$(window).scrollTop()>$(window).height()?t.fadeIn(500):t.fadeOut(500)}),t.click(function(A){A.preventDefault(),$("html,body").animate({scrollTop:0},666,function(){window.location.hash="#"}),console.log("我跳")})},urlIconlize:function(A){var e,t,o="iconfont",a={twitter:o+"-twitter",qzone:o+"-qzone",weibo:o+"-weibo",facebook:o+"-facebook",github:o+"-github",douban:o+"-douban",google:o+"-google",luolei:o+"-luolei",dribble:o+"-dribble",v2ex:o+"-v2ex",zhihu:o+"-zhihu",wikipedia:o+"-wikipedia",jianshu:o+"-jianshu",youku:o+"-youku",youtube:o+"-youtube"};for(var i in a)if("function"!=typeof a[i]){var n=i;A.indexOf(n)>=0&&(e=n,t=a[n])}return t},addIcons:function(){$(".single-post-inner a:not(:has(img))").each(function(A){var e=$(this).attr("href"),t=document.createElement("a");t.href=e,_selfDomain=t.hostname,General.urlIconlize(_selfDomain),console.log(_selfDomain),$(this).prepend('');var o=$(this).find("i").css("color"),a=$(this).css("color");$(this).hover(function(){$(this).css("color",o),$(this).addClass("animated pulse")},function(){$(this).css("color",a),$(this).removeClass("animated pulse")})})},rewardLoader:function(){var A={alipay:"/assets/images/qr-alipay-256.png",wechat:"/assets/images/qr-wechat-256.png"};General.isWechat&&$(".wechat-code b").html("长按上方二维码打赏作者"),$(".money-like .reward-button").hover(function(){console.log("悬浮"),$("img.wechat-img").attr("src",A.wechat),$("img.alipay-img").attr("src",A.alipay),$(".money-code").fadeIn(),$(this).addClass("active")},function(){$(".money-code").fadeOut(),$(this).removeClass("active")},800),$(".money-like .reward-button").click(function(){$(this).hasClass("active")?($(this).find("img.wechat-img").attr("src",A.wechat),$(this).find("img.alipay-img").attr("src",A.alipay),$(".money-code").fadeOut(),$(this).removeClass("active")):($(".money-code").fadeIn(),$(this).addClass("active"))})},commentLoader:function(){if(!$("body").hasClass("post-template"))return!1;var A=GlobalConfigue.duoshuoDomain+location.pathname;$(window).scroll(function(){return $(".comment-area").has("div").length>0?!1:(console.log("增加评论"),void(($(".author-image").isOnScreenVisible()||$(".read-next").isOnScreenVisible())&&0==$(".author-image").hasClass("duoshuo-loaded")&&($(".author-image").addClass("duoshuo-loaded"),loadJS("https://static.duoshuo.com/embed.js",function(){var e=document.createElement("div");e.setAttribute("data-thread-key",A),e.setAttribute("data-url",location.href),e.setAttribute("data-title",$("title").html()),DUOSHUO.EmbedThread(e),scrollStop=!0,setTimeout(function(){$(".comment-area").append(e)},250)}))))})}},ImageSmartLoader={isWebPSupported:!1,isImageCompressed:!1,init:function(){ImageSmartLoader.webPCheck()},isCompressedCheck:function(){},webPCheck:function(A,e){var t={demo:"UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAsAAAABBxAREYiI/gcAAABWUDggGAAAADABAJ0BKgEAAQABABwlpAADcAD+/gbQAA=="};console.log("支持Webp哦");var o=new Image;o.onload=function(){o.width>0&&o.height>0;console.log("支持Webp"),ImageSmartLoader.isWebPSupported=!0,ImageSmartLoader.webPLoader()},o.onerror=function(){console.log("不支持Webp"),ImageSmartLoader.isWebPSupported=!1,ImageSmartLoader.webPLoader()},o.src="data:image/webp;base64,"+t.demo},imgLoader:function(){console.log("加载默认图片")},webPLoader:function(){if(console.log("加载webP"),1==ImageSmartLoader.isWebPSupported){if(console.log("宽度是"+General.viewWidth),768==General.viewWidth)return $(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!1}),!1;General.viewWidth<768?$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!0,scale_width:750}):$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!0,is_scale:!1})}else{if(768==General.viewWidth)return $(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!0,scale_width:1500}),!1;General.viewWidth<768?$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!0,scale_width:750}):$(".lazy").lazyload({advanced_load:!0,data_attribute:"url",webP_load:!1,is_scale:!1})}}};$(document).ready(function(){var A=$(window);$.fn.lazyload=function(e){function t(){var A=0;a.each(function(){var e=$(this);if(!i.skip_invisible||e.is(":visible"))if($.abovethetop(this,i)||$.leftofbegin(this,i));else if($.belowthefold(this,i)||$.rightoffold(this,i)){if(++A>i.failure_limit)return!1}else e.trigger("appear"),A=0})}var o,a=this,i={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:window,data_attribute:"original",skip_invisible:!1,appear:null,load:null,placeholder:"data:image/gif;base64,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",advanced_load:!1,webP_load:!1,is_scale:!1,scale_width:750};return e&&(void 0!==e.failurelimit&&(e.failure_limit=e.failurelimit,delete e.failurelimit),void 0!==e.effectspeed&&(e.effect_speed=e.effectspeed,delete e.effectspeed),$.extend(i,e)),o=void 0===i.container||i.container===window?A:$(i.container),0===i.event.indexOf("scroll")&&o.bind(i.event,function(){return t()}),this.each(function(){var A=this,e=$(A);A.loaded=!1,(void 0===e.attr("src")||e.attr("src")===!1)&&e.is("img")&&(e.attr("src",i.placeholder),e.addClass("loading")),e.one("appear",function(){if(!this.loaded){if(i.appear){var t=a.length;i.appear.call(A,t,i)}var o=e.attr("data-"+i.data_attribute);1==i.advanced_load&&(o+="!"),1==i.is_scale&&(o+="/fw/"+i.scale_width),1==i.webP_load&&(o+="/format/webp"),$("").bind("load",function(){e.hide(),e.is("img")?e.attr("src",o):e.css("background-image","url('"+o+"')"),e[i.effect](i.effect_speed),A.loaded=!0;var t=$.grep(a,function(A){return!A.loaded});if(a=$(t),i.load){var n=a.length;i.load.call(A,n,i)}e.removeClass("loading")}).attr("src",o)}}),0!==i.event.indexOf("scroll")&&e.bind(i.event,function(){A.loaded||e.trigger("appear")})}),A.bind("resize",function(){t()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&A.bind("pageshow",function(A){A.originalEvent&&A.originalEvent.persisted&&a.each(function(){$(this).trigger("appear")})}),$(document).ready(function(){t()}),this},$.belowthefold=function(e,t){var o;return o=void 0===t.container||t.container===window?(window.innerHeight?window.innerHeight:A.height())+A.scrollTop():$(t.container).offset().top+$(t.container).height(),o<=$(e).offset().top-t.threshold},$.rightoffold=function(e,t){var o;return o=void 0===t.container||t.container===window?A.width()+A.scrollLeft():$(t.container).offset().left+$(t.container).width(),o<=$(e).offset().left-t.threshold},$.abovethetop=function(e,t){var o;return o=void 0===t.container||t.container===window?A.scrollTop():$(t.container).offset().top,o>=$(e).offset().top+t.threshold+$(e).height()},$.leftofbegin=function(e,t){var o;return o=void 0===t.container||t.container===window?A.scrollLeft():$(t.container).offset().left,o>=$(e).offset().left+t.threshold+$(e).width()},$.inviewport=function(A,e){return!($.rightoffold(A,e)||$.leftofbegin(A,e)||$.belowthefold(A,e)||$.abovethetop(A,e))},$.extend($.expr[":"],{"below-the-fold":function(A){return $.belowthefold(A,{threshold:0})},"above-the-top":function(A){return!$.belowthefold(A,{threshold:0})},"right-of-screen":function(A){return $.rightoffold(A,{threshold:0})},"left-of-screen":function(A){return!$.rightoffold(A,{threshold:0})},"in-viewport":function(A){return $.inviewport(A,{threshold:0})},"above-the-fold":function(A){return!$.belowthefold(A,{threshold:0})},"right-of-fold":function(A){return $.rightoffold(A,{threshold:0})},"left-of-fold":function(A){return!$.rightoffold(A,{threshold:0})}}),General.init(),ImageSmartLoader.init(),$("body").hasClass("post-template")&&(General.addIcons(),General.commentLoader())}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJhc2UuanMiXSwibmFtZXMiOlsibG9hZEpTIiwidXJsIiwiY2FsbGJhY2siLCJlbCIsImlzSUUiLCJ3aW5kb3ciLCJBY3RpdmVYT2JqZWN0IiwiaXNJRTYiLCJYTUxIdHRwUmVxdWVzdCIsInNjcmlwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImhlYWQiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInR5cGUiLCJhc3luYyIsInJlYWR5U3RhdGUiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJvbmxvYWQiLCJzcmMiLCJnZXRFbGVtZW50QnlJZCIsImFwcGVuZENoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiZmlyc3RDaGlsZCIsIiQiLCJmbiIsImV4dGVuZCIsImlzT25TY3JlZW5WaXNpYmxlIiwiaGFzQ2xhc3MiLCJ3aW4iLCJ2aWV3cG9ydCIsInRvcCIsInNjcm9sbFRvcCIsImxlZnQiLCJzY3JvbGxMZWZ0IiwicmlnaHQiLCJ3aWR0aCIsImJvdHRvbSIsImhlaWdodCIsImJvdW5kcyIsInRoaXMiLCJvZmZzZXQiLCJvdXRlcldpZHRoIiwib3V0ZXJIZWlnaHQiLCJkdW9zaHVvUXVlcnkiLCJzaG9ydF9uYW1lIiwiR2xvYmFsQ29uZmlndWUiLCJkdW9zaHVvRG9tYWluIiwiR2VuZXJhbCIsImlzTW9iaWxlIiwiaXNXZWNoYXQiLCJ2aWV3V2lkdGgiLCJhYnNVcmwiLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdCIsImluaXQiLCJVQSIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRvTG93ZXJDYXNlIiwiaXNBbmRyb2lkIiwiYXBwVmVyc2lvbiIsIm1hdGNoIiwiYWRkQ2xhc3MiLCJ1cGRhdGVJbWFnZVdpZHRoIiwicmV3YXJkTG9hZGVyIiwid2ViRm9udExvYWRlciIsInNjcm9sbFRvUG9zIiwiYXJyb3dFdmVudCIsImNvbW1lbnRMb2FkZXIiLCIkdGhpcyIsImNvbnRlbnRXaWR0aCIsIiRwb3N0Q29udGVudCIsImltYWdlV2lkdGgiLCJuYXR1cmFsV2lkdGgiLCJyZW1vdmVDbGFzcyIsImNhc3BlckZ1bGxJbWciLCIkaW1nIiwiZWFjaCIsIm9uIiwiV2ViRm9udENvbmZpZyIsImxvYWRpbmciLCJjb25zb2xlIiwibG9nIiwiY3VzdG9tIiwiZmFtaWxpZXMiLCJ1cmxzIiwiV2ViRm9udCIsImxvYWQiLCJjbGljayIsImFuaW1hdGUiLCJoYXNoIiwicG9zaXRpb24iLCJTVFJfVE9fVE9QIiwiYnV0dG9uIiwiYXBwZW5kVG8iLCJzY3JvbGwiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZSIsInByZXZlbnREZWZhdWx0IiwidXJsSWNvbmxpemUiLCJkb21haW4iLCJfb3V0cHV0IiwiaWNvbkZvbnRUYWciLCJpY29uTWFwIiwidHdpdHRlciIsInF6b25lIiwid2VpYm8iLCJmYWNlYm9vayIsImdpdGh1YiIsImRvdWJhbiIsImdvb2dsZSIsImx1b2xlaSIsImRyaWJibGUiLCJ2MmV4IiwiemhpaHUiLCJ3aWtpcGVkaWEiLCJqaWFuc2h1IiwieW91a3UiLCJ5b3V0dWJlIiwibmFtZSIsIk1hcEtleSIsImluZGV4T2YiLCJhZGRJY29ucyIsImkiLCJfc3JjIiwiYXR0ciIsInRtcCIsImhyZWYiLCJfc2VsZkRvbWFpbiIsImhvc3RuYW1lIiwicHJlcGVuZCIsIl9zZWxmQ29sb3IiLCJmaW5kIiwiY3NzIiwiX29yaWdpbmFsQ29sb3IiLCJob3ZlciIsImxvYWRRUiIsImFsaXBheSIsIndlY2hhdCIsImh0bWwiLCJkYXRhVGhyZWFkS2V5IiwicGF0aG5hbWUiLCJoYXMiLCJsZW5ndGgiLCJzZXRBdHRyaWJ1dGUiLCJEVU9TSFVPIiwiRW1iZWRUaHJlYWQiLCJzY3JvbGxTdG9wIiwic2V0VGltZW91dCIsImFwcGVuZCIsIkltYWdlU21hcnRMb2FkZXIiLCJpc1dlYlBTdXBwb3J0ZWQiLCJpc0ltYWdlQ29tcHJlc3NlZCIsIndlYlBDaGVjayIsImlzQ29tcHJlc3NlZENoZWNrIiwiZmVhdHVyZSIsIlRlc3RJbWFnZXMiLCJkZW1vIiwiaW1nIiwiSW1hZ2UiLCJ3ZWJQTG9hZGVyIiwib25lcnJvciIsImltZ0xvYWRlciIsImxhenlsb2FkIiwiYWR2YW5jZWRfbG9hZCIsImRhdGFfYXR0cmlidXRlIiwid2ViUF9sb2FkIiwiaXNfc2NhbGUiLCJzY2FsZV93aWR0aCIsInJlYWR5IiwiJHdpbmRvdyIsIm9wdGlvbnMiLCJ1cGRhdGUiLCJjb3VudGVyIiwiZWxlbWVudHMiLCJzZXR0aW5ncyIsInNraXBfaW52aXNpYmxlIiwiaXMiLCJhYm92ZXRoZXRvcCIsImxlZnRvZmJlZ2luIiwiYmVsb3d0aGVmb2xkIiwicmlnaHRvZmZvbGQiLCJmYWlsdXJlX2xpbWl0IiwidHJpZ2dlciIsIiRjb250YWluZXIiLCJ0aHJlc2hvbGQiLCJldmVudCIsImVmZmVjdCIsImNvbnRhaW5lciIsImFwcGVhciIsInBsYWNlaG9sZGVyIiwidW5kZWZpbmVkIiwiZmFpbHVyZWxpbWl0IiwiZWZmZWN0c3BlZWQiLCJlZmZlY3Rfc3BlZWQiLCJiaW5kIiwic2VsZiIsIiRzZWxmIiwibG9hZGVkIiwib25lIiwiZWxlbWVudHNfbGVmdCIsImNhbGwiLCJ1cGRhdGVkVXJsIiwiaGlkZSIsInRlbXAiLCJncmVwIiwiZWxlbWVudCIsInRlc3QiLCJvcmlnaW5hbEV2ZW50IiwicGVyc2lzdGVkIiwiZm9sZCIsImlubmVySGVpZ2h0IiwiaW52aWV3cG9ydCIsImV4cHIiLCJiZWxvdy10aGUtZm9sZCIsImEiLCJhYm92ZS10aGUtdG9wIiwicmlnaHQtb2Ytc2NyZWVuIiwibGVmdC1vZi1zY3JlZW4iLCJpbi12aWV3cG9ydCIsImFib3ZlLXRoZS1mb2xkIiwicmlnaHQtb2YtZm9sZCIsImxlZnQtb2YtZm9sZCJdLCJtYXBwaW5ncyI6IkFBdUJBLFFBQVNBLFFBQU9DLEVBQUtDLEVBQVVDLEdBQzNCLEdBQUlDLEtBQVNDLE9BQU9DLGNBQ2hCQyxFQUFRSCxJQUFTQyxPQUFPRyxlQUN4QkMsRUFBU0MsU0FBU0MsY0FBYyxVQUNoQ0MsRUFBT0wsRUFBUUcsU0FBU0csZ0JBQWtCSCxTQUFTSSxxQkFBcUIsUUFBUSxFQUNwRkwsR0FBT00sS0FBTyxrQkFDZE4sRUFBT08sT0FBUSxFQUNYUCxFQUFPUSxXQUNQUixFQUFPUyxtQkFBcUIsWUFDQyxVQUFyQlQsRUFBT1EsWUFBK0MsWUFBckJSLEVBQU9RLGNBQ3hDUixFQUFPUyxtQkFBcUIsS0FDeEJoQixHQUNBQSxNQUtaTyxFQUFPVSxPQUFTLFdBQ1JqQixHQUNBQSxLQUlaTyxFQUFPVyxJQUFNbkIsRUFDVEUsRUFDQU8sU0FBU1csZUFBZWxCLEdBQUltQixZQUFZYixHQUV4Q0csRUFBS1csYUFBYWQsRUFBUUcsRUFBS1ksWUFsRHZDQyxFQUFFQyxHQUFHQyxRQUVEQyxrQkFBbUIsV0FDZixJQUFLSCxFQUFFLFFBQVFJLFNBQVMsaUJBQ3BCLE9BQU8sQ0FFWCxJQUFJQyxHQUFNTCxFQUFFcEIsUUFDUjBCLEdBQ0FDLElBQUtGLEVBQUlHLFlBQ1RDLEtBQU1KLEVBQUlLLGFBRWRKLEdBQVNLLE1BQVFMLEVBQVNHLEtBQU9KLEVBQUlPLFFBQ3JDTixFQUFTTyxPQUFTUCxFQUFTQyxJQUFNRixFQUFJUyxRQUVyQyxJQUFJQyxHQUFTQyxLQUFLQyxRQUlsQixPQUhBRixHQUFPSixNQUFRSSxFQUFPTixLQUFPTyxLQUFLRSxhQUNsQ0gsRUFBT0YsT0FBU0UsRUFBT1IsSUFBTVMsS0FBS0csZ0JBRXhCYixFQUFTSyxNQUFRSSxFQUFPTixNQUFRSCxFQUFTRyxLQUFPTSxFQUFPSixPQUFTTCxFQUFTTyxPQUFTRSxFQUFPUixLQUFPRCxFQUFTQyxJQUFNUSxFQUFPRixVQXlDeEksSUFBSU8sZUFDQUMsV0FBWSxVQUdaQyxnQkFDQUMsY0FBZSxzQkFJZkMsU0FDQUMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLFVBQVczQixFQUFFcEIsUUFBUWdDLFFBQ3JCZ0IsT0FBUUMsU0FBU0MsU0FBVyxLQUFPRCxTQUFTRSxLQUM1Q0MsS0FBTSxXQUNGLEdBQUkzQixHQUFNekIsT0FFTnFELEdBRE01QixFQUFJcEIsU0FDTGlELFVBQVVDLFVBQVVDLGVBQ3pCQyxFQUFZaEMsRUFBSTZCLFVBQVVJLFdBQVdDLE1BQU0sWUFDaENsQyxHQUFJNkIsVUFBVUksV0FBV0MsTUFBTSxXQUNYLG1CQUEvQk4sRUFBR00sTUFBTSxxQkFDVGYsUUFBUUUsVUFBVyxFQUNuQjFCLEVBQUUsUUFBUXdDLFNBQVMsbUJBRWpCSCxJQUNGYixRQUFRQyxVQUFXLEdBRW5CekIsRUFBRSxRQUFRSSxTQUFTLG1CQUNuQm9CLFFBQVFpQixtQkFDUmpCLFFBQVFrQixnQkFHWmxCLFFBQVFtQixnQkFDUm5CLFFBQVFvQixjQUNScEIsUUFBUXFCLGFBQ1JyQixRQUFRc0IsaUJBRVpMLGlCQUFrQixXQUlkLFFBQVNBLEtBQ0wsR0FBSU0sR0FBUS9DLEVBQUVnQixNQUNWZ0MsRUFBZUMsRUFBYS9CLGFBQzVCZ0MsRUFBYWxDLEtBQUttQyxZQUVsQkQsSUFBY0YsRUFDZEQsRUFBTVAsU0FBUyxZQUVmTyxFQUFNSyxZQUFZLFlBTTFCLFFBQVNDLEtBQ0xDLEVBQUtDLEtBQUtkLEdBbEJkLEdBQUlRLEdBQWVqRCxFQUFFLGlCQWVqQnNELEVBQU90RCxFQUFFLDBCQUEwQndELEdBQUcsT0FBUWYsRUFNbERZLE1BRUpWLGNBQWUsV0FDWGMsZUFDSUMsUUFBUyxXQUNMQyxRQUFRQyxJQUFJLGlCQUVoQkMsUUFDSUMsVUFBVyxNQUFPLFlBQ2xCQyxNQUFPdkMsUUFBUUksT0FBUyw4QkFHaENyRCxPQUFPaUQsUUFBUUksT0FBUyx3QkFBeUIsV0FDN0MrQixRQUFRQyxJQUFJLFVBQ1pJLFFBQVFDLE1BQ0pKLFFBQ0lDLFVBQVcsTUFBTyxrQkFTbENqQixXQUFZLFdBQ1I3QyxFQUFFLGVBQWVrRSxNQUFNLFdBTW5CLE1BTEFsRSxHQUFFLGFBQWFtRSxTQUNYM0QsVUFBV1IsRUFBRXBCLFFBQVFrQyxTQUFXLElBQ2pDLElBQUssV0FDSmxDLE9BQU9pRCxTQUFTdUMsS0FBTyxPQUVwQixLQUlmeEIsWUFBYSxTQUFTeUIsR0FDbEIsR0FBSUMsR0FBYSxTQUViQyxHQURjRixHQUFZckUsRUFBRXBCLFFBQVFrQyxTQUMzQmQsRUFBRSxrQ0FBb0NzRSxFQUFhLDBDQUEwQ0UsU0FBUyxRQUNuSHhFLEdBQUVwQixRQUFRNkYsT0FBTyxXQUNUekUsRUFBRXBCLFFBQVE0QixZQUFjUixFQUFFcEIsUUFBUWtDLFNBQ2xDeUQsRUFBT0csT0FBTyxLQUVkSCxFQUFPSSxRQUFRLE9BSXZCSixFQUFPTCxNQUFNLFNBQVNVLEdBQ2xCQSxFQUFFQyxpQkFDRjdFLEVBQUUsYUFBYW1FLFNBQ1gzRCxVQUFXLEdBQ1osSUFBSyxXQUNKNUIsT0FBT2lELFNBQVN1QyxLQUFPLE1BRTNCVCxRQUFRQyxJQUFJLFNBSXBCa0IsWUFBYSxTQUFTdEcsR0FDbEIsR0FBSXVHLEdBQ0FDLEVBQ0FDLEVBQWMsV0FDZEMsR0FDQUMsUUFBV0YsRUFBYyxXQUN6QkcsTUFBU0gsRUFBYyxTQUN2QkksTUFBU0osRUFBYyxTQUN2QkssU0FBWUwsRUFBYyxZQUMxQk0sT0FBVU4sRUFBYyxVQUN4Qk8sT0FBVVAsRUFBYyxVQUN4QlEsT0FBVVIsRUFBYyxVQUN4QlMsT0FBVVQsRUFBYyxVQUN4QlUsUUFBV1YsRUFBYyxXQUN6QlcsS0FBUVgsRUFBYyxRQUN0QlksTUFBU1osRUFBYyxTQUN2QmEsVUFBYWIsRUFBYyxhQUMzQmMsUUFBV2QsRUFBYyxXQUN6QmUsTUFBU2YsRUFBYyxTQUN2QmdCLFFBQVdoQixFQUFjLFdBSTdCLEtBQUssR0FBSWlCLEtBQVFoQixHQUNiLEdBQTZCLGtCQUFsQkEsR0FBUWdCLEdBQXNCLENBQ3JDLEdBQUlDLEdBQVNELENBQ1QxSCxHQUFJNEgsUUFBUUQsSUFBVyxJQUN2QnBCLEVBQVNvQixFQUNUbkIsRUFBVUUsRUFBUWlCLElBSzlCLE1BQU9uQixJQUVYcUIsU0FBVSxXQUVOckcsRUFBRSx3Q0FBd0N1RCxLQUFLLFNBQVMrQyxHQUNwRCxHQUFJQyxHQUFPdkcsRUFBRWdCLE1BQU13RixLQUFLLFFBQ3BCQyxFQUFNeEgsU0FBU0MsY0FBYyxJQUNqQ3VILEdBQUlDLEtBQU9ILEVBQ1hJLFlBQWNGLEVBQUlHLFNBQ2xCcEYsUUFBUXNELFlBQVk2QixhQUNwQmhELFFBQVFDLElBQUkrQyxhQUNaM0csRUFBRWdCLE1BQU02RixRQUFRLHNCQUF3QnJGLFFBQVFzRCxZQUFZNkIsYUFBZSxTQUMzRSxJQUFJRyxHQUFhOUcsRUFBRWdCLE1BQU0rRixLQUFLLEtBQUtDLElBQUksU0FDbkNDLEVBQWlCakgsRUFBRWdCLE1BQU1nRyxJQUFJLFFBR2pDaEgsR0FBRWdCLE1BQU1rRyxNQUFNLFdBQ1ZsSCxFQUFFZ0IsTUFBTWdHLElBQUksUUFBU0YsR0FDckI5RyxFQUFFZ0IsTUFBTXdCLFNBQVMsbUJBQ2xCLFdBQ0N4QyxFQUFFZ0IsTUFBTWdHLElBQUksUUFBU0MsR0FDckJqSCxFQUFFZ0IsTUFBTW9DLFlBQVksdUJBTWhDVixhQUFjLFdBRVYsR0FBSXlFLElBQ0FDLE9BQVEsbUNBQ1JDLE9BQVEsbUNBR1A3RixTQUFRRSxVQUNUMUIsRUFBRSxrQkFBa0JzSCxLQUFLLGVBSTdCdEgsRUFBRSw4QkFBOEJrSCxNQUFNLFdBQ2xDdkQsUUFBUUMsSUFBSSxNQUNaNUQsRUFBRSxrQkFBa0J3RyxLQUFLLE1BQU9XLEVBQU9FLFFBQ3ZDckgsRUFBRSxrQkFBa0J3RyxLQUFLLE1BQU9XLEVBQU9DLFFBQ3ZDcEgsRUFBRSxlQUFlMEUsU0FDakIxRSxFQUFFZ0IsTUFBTXdCLFNBQVMsV0FDbEIsV0FDQ3hDLEVBQUUsZUFBZTJFLFVBQ2pCM0UsRUFBRWdCLE1BQU1vQyxZQUFZLFdBQ3JCLEtBRUNwRCxFQUFFLDhCQUE4QmtFLE1BQU0sV0FDOUJsRSxFQUFFZ0IsTUFBTVosU0FBUyxXQUNqQkosRUFBRWdCLE1BQU0rRixLQUFLLGtCQUFrQlAsS0FBSyxNQUFPVyxFQUFPRSxRQUNsRHJILEVBQUVnQixNQUFNK0YsS0FBSyxrQkFBa0JQLEtBQUssTUFBT1csRUFBT0MsUUFDbERwSCxFQUFFLGVBQWUyRSxVQUNqQjNFLEVBQUVnQixNQUFNb0MsWUFBWSxZQUdwQnBELEVBQUUsZUFBZTBFLFNBQ2pCMUUsRUFBRWdCLE1BQU13QixTQUFTLGNBTWpDTSxjQUFlLFdBQ1gsSUFBSzlDLEVBQUUsUUFBUUksU0FBUyxpQkFDcEIsT0FBTyxDQUVYLElBQUltSCxHQUFnQmpHLGVBQWVDLGNBQWdCTSxTQUFTMkYsUUFDNUR4SCxHQUFFcEIsUUFBUTZGLE9BQU8sV0FDYixNQUFJekUsR0FBRSxpQkFBaUJ5SCxJQUFJLE9BQU9DLE9BQVMsR0FDaEMsR0FFUC9ELFFBQVFDLElBQUksY0FDUDVELEVBQUUsaUJBQWlCRyxxQkFBdUJILEVBQUUsY0FBY0csc0JBQXlFLEdBQWpESCxFQUFFLGlCQUFpQkksU0FBUyxvQkFDL0dKLEVBQUUsaUJBQWlCd0MsU0FBUyxrQkFDNUJqRSxPQUFPLHNDQUF1QyxXQUMxQyxHQUFJRyxHQUFLTyxTQUFTQyxjQUFjLE1BQ2hDUixHQUFHaUosYUFBYSxrQkFBbUJKLEdBQ25DN0ksRUFBR2lKLGFBQWEsV0FBWTlGLFNBQVM2RSxNQUNyQ2hJLEVBQUdpSixhQUFhLGFBQWMzSCxFQUFFLFNBQVNzSCxRQUN6Q00sUUFBUUMsWUFBWW5KLEdBQ3BCb0osWUFBYSxFQUNiQyxXQUFXLFdBQ1AvSCxFQUFFLGlCQUFpQmdJLE9BQU90SixJQUMzQixjQVl2QnVKLGtCQUNBQyxpQkFBaUIsRUFDakJDLG1CQUFtQixFQUNuQm5HLEtBQU0sV0FDRmlHLGlCQUFpQkcsYUFFckJDLGtCQUFtQixhQUduQkQsVUFBVyxTQUFTRSxFQUFTN0osR0FDekIsR0FBSThKLElBQ0FDLEtBQU0sbUhBRVY3RSxTQUFRQyxJQUFJLFVBQ1osSUFBSTZFLEdBQU0sR0FBSUMsTUFDZEQsR0FBSS9JLE9BQVMsV0FDSytJLEVBQUk3SCxNQUFRLEdBQU82SCxFQUFJM0gsT0FBUyxDQUM5QzZDLFNBQVFDLElBQUksVUFFWnFFLGlCQUFpQkMsaUJBQWtCLEVBQ25DRCxpQkFBaUJVLGNBRXJCRixFQUFJRyxRQUFVLFdBQ1ZqRixRQUFRQyxJQUFJLFdBQ1pxRSxpQkFBaUJDLGlCQUFrQixFQUNuQ0QsaUJBQWlCVSxjQUVyQkYsRUFBSTlJLElBQU0sMEJBQTRCNEksRUFBaUIsTUFHM0RNLFVBQVcsV0FDUGxGLFFBQVFDLElBQUksV0FFaEIrRSxXQUFZLFdBR1IsR0FGQWhGLFFBQVFDLElBQUksVUFFNEIsR0FBcENxRSxpQkFBaUJDLGdCQUF5QixDQUUxQyxHQURBdkUsUUFBUUMsSUFBSSxNQUFRcEMsUUFBUUcsV0FDSCxLQUFyQkgsUUFBUUcsVUFPUixNQU5BM0IsR0FBRSxTQUFTOEksVUFDUEMsZUFBZSxFQUNmQyxlQUFnQixNQUNoQkMsV0FBVyxFQUNYQyxVQUFVLEtBRVAsQ0FFUDFILFNBQVFHLFVBQVksSUFDcEIzQixFQUFFLFNBQVM4SSxVQUNQQyxlQUFlLEVBQ2ZDLGVBQWdCLE1BQ2hCQyxXQUFXLEVBQ1hDLFVBQVUsRUFDVkMsWUFBYSxNQUlqQm5KLEVBQUUsU0FBUzhJLFVBQ1BDLGVBQWUsRUFDZkMsZUFBZ0IsTUFDaEJDLFdBQVcsRUFDWEMsVUFBVSxRQUlmLENBQ0gsR0FBeUIsS0FBckIxSCxRQUFRRyxVQVFSLE1BUEEzQixHQUFFLFNBQVM4SSxVQUNQQyxlQUFlLEVBQ2ZDLGVBQWdCLE1BQ2hCQyxXQUFXLEVBQ1hDLFVBQVUsRUFDVkMsWUFBYSxRQUVWLENBRVAzSCxTQUFRRyxVQUFZLElBQ3BCM0IsRUFBRSxTQUFTOEksVUFDUEMsZUFBZSxFQUNmQyxlQUFnQixNQUNoQkMsV0FBVyxFQUNYQyxVQUFVLEVBQ1ZDLFlBQWEsTUFJakJuSixFQUFFLFNBQVM4SSxVQUNQQyxlQUFlLEVBQ2ZDLGVBQWdCLE1BQ2hCQyxXQUFXLEVBQ1hDLFVBQVUsTUFZOUJsSixHQUFFZixVQUFVbUssTUFBTSxXQUNkLEdBQUlDLEdBQVVySixFQUFFcEIsT0FFaEJvQixHQUFFQyxHQUFHNkksU0FBVyxTQUFTUSxHQW9CckIsUUFBU0MsS0FDTCxHQUFJQyxHQUFVLENBRWRDLEdBQVNsRyxLQUFLLFdBQ1YsR0FBSVIsR0FBUS9DLEVBQUVnQixLQUNkLEtBQUkwSSxFQUFTQyxnQkFBbUI1RyxFQUFNNkcsR0FBRyxZQUd6QyxHQUFJNUosRUFBRTZKLFlBQVk3SSxLQUFNMEksSUFDcEIxSixFQUFFOEosWUFBWTlJLEtBQU0wSSxRQUVqQixJQUFLMUosRUFBRStKLGFBQWEvSSxLQUFNMEksSUFDNUIxSixFQUFFZ0ssWUFBWWhKLEtBQU0wSSxJQUtyQixLQUFNRixFQUFVRSxFQUFTTyxjQUNyQixPQUFPLE1BTFhsSCxHQUFNbUgsUUFBUSxVQUVkVixFQUFVLElBbEN0QixHQUNJVyxHQURBVixFQUFXekksS0FFWDBJLEdBQ0FVLFVBQVcsRUFDWEgsY0FBZSxFQUNmSSxNQUFPLFNBQ1BDLE9BQVEsT0FDUkMsVUFBVzNMLE9BQ1hvSyxlQUFnQixXQUNoQlcsZ0JBQWdCLEVBQ2hCYSxPQUFRLEtBQ1J2RyxLQUFNLEtBQ053RyxZQUFhLGlyUEFDYjFCLGVBQWUsRUFDZkUsV0FBVyxFQUNYQyxVQUFVLEVBQ1ZDLFlBQWEsSUF3SmpCLE9BNUhJRyxLQUVJb0IsU0FBY3BCLEVBQVFxQixlQUN0QnJCLEVBQVFXLGNBQWdCWCxFQUFRcUIsbUJBQ3pCckIsR0FBUXFCLGNBRWZELFNBQWNwQixFQUFRc0IsY0FDdEJ0QixFQUFRdUIsYUFBZXZCLEVBQVFzQixrQkFDeEJ0QixHQUFRc0IsYUFHbkI1SyxFQUFFRSxPQUFPd0osRUFBVUosSUFJdkJhLEVBQXFDTyxTQUF2QmhCLEVBQVNhLFdBQ25CYixFQUFTYSxZQUFjM0wsT0FBVXlLLEVBQVVySixFQUFFMEosRUFBU2EsV0FHdEQsSUFBTWIsRUFBU1csTUFBTWpFLFFBQVEsV0FDN0IrRCxFQUFXVyxLQUFLcEIsRUFBU1csTUFBTyxXQUc1QixNQUFPZCxPQUlmdkksS0FBS3VDLEtBQUssV0FDTixHQUFJd0gsR0FBTy9KLEtBQ1BnSyxFQUFRaEwsRUFBRStLLEVBRWRBLEdBQUtFLFFBQVMsR0FHWVAsU0FBdEJNLEVBQU14RSxLQUFLLFFBQXdCd0UsRUFBTXhFLEtBQUssVUFBVyxJQUNyRHdFLEVBQU1wQixHQUFHLFNBQ1RvQixFQUFNeEUsS0FBSyxNQUFPa0QsRUFBU2UsYUFDM0JPLEVBQU14SSxTQUFTLFlBTXZCd0ksRUFBTUUsSUFBSSxTQUFVLFdBQ2hCLElBQUtsSyxLQUFLaUssT0FBUSxDQUNkLEdBQUl2QixFQUFTYyxPQUFRLENBQ2pCLEdBQUlXLEdBQWdCMUIsRUFBUy9CLE1BQzdCZ0MsR0FBU2MsT0FBT1ksS0FBS0wsRUFBTUksRUFBZXpCLEdBRTlDLEdBQUkyQixHQUFhTCxFQUFNeEUsS0FBSyxRQUFVa0QsRUFBU1YsZUFDakIsSUFBMUJVLEVBQVNYLGdCQUNUc0MsR0FBYyxLQUVPLEdBQXJCM0IsRUFBU1IsV0FDVG1DLEdBQWMsT0FBUzNCLEVBQVNQLGFBRVYsR0FBdEJPLEVBQVNULFlBQ1RvQyxHQUFjLGdCQUlsQnJMLEVBQUUsV0FDRzhLLEtBQUssT0FBUSxXQUVWRSxFQUFNTSxPQUVGTixFQUFNcEIsR0FBRyxPQUNUb0IsRUFBTXhFLEtBQUssTUFBTzZFLEdBRWxCTCxFQUFNaEUsSUFBSSxtQkFBb0IsUUFBVXFFLEVBQWEsTUFFekRMLEVBQU10QixFQUFTWSxRQUFRWixFQUFTbUIsY0FFaENFLEVBQUtFLFFBQVMsQ0FHZCxJQUFJTSxHQUFPdkwsRUFBRXdMLEtBQUsvQixFQUFVLFNBQVNnQyxHQUNqQyxPQUFRQSxFQUFRUixRQUlwQixJQUZBeEIsRUFBV3pKLEVBQUV1TCxHQUVUN0IsRUFBU3pGLEtBQU0sQ0FDZixHQUFJa0gsR0FBZ0IxQixFQUFTL0IsTUFDN0JnQyxHQUFTekYsS0FBS21ILEtBQUtMLEVBQU1JLEVBQWV6QixHQUU1Q3NCLEVBQU01SCxZQUFZLGFBRXJCb0QsS0FBSyxNQUFPNkUsTUFNckIsSUFBTTNCLEVBQVNXLE1BQU1qRSxRQUFRLFdBQzdCNEUsRUFBTUYsS0FBS3BCLEVBQVNXLE1BQU8sV0FDbEJVLEVBQUtFLFFBQ05ELEVBQU1kLFFBQVEsY0FPOUJiLEVBQVF5QixLQUFLLFNBQVUsV0FDbkJ2QixNQUtBLCtCQUFpQ21DLEtBQUt4SixVQUFVSSxhQUNoRCtHLEVBQVF5QixLQUFLLFdBQVksU0FBU1QsR0FDMUJBLEVBQU1zQixlQUFpQnRCLEVBQU1zQixjQUFjQyxXQUMzQ25DLEVBQVNsRyxLQUFLLFdBQ1Z2RCxFQUFFZ0IsTUFBTWtKLFFBQVEsY0FPaENsSyxFQUFFZixVQUFVbUssTUFBTSxXQUNkRyxNQUdHdkksTUFNWGhCLEVBQUUrSixhQUFlLFNBQVMwQixFQUFTL0IsR0FDL0IsR0FBSW1DLEVBUUosT0FMSUEsR0FEdUJuQixTQUF2QmhCLEVBQVNhLFdBQTJCYixFQUFTYSxZQUFjM0wsUUFDbkRBLE9BQU9rTixZQUFjbE4sT0FBT2tOLFlBQWN6QyxFQUFRdkksVUFBWXVJLEVBQVE3SSxZQUV2RVIsRUFBRTBKLEVBQVNhLFdBQVd0SixTQUFTVixJQUFNUCxFQUFFMEosRUFBU2EsV0FBV3pKLFNBRy9EK0ssR0FBUTdMLEVBQUV5TCxHQUFTeEssU0FBU1YsSUFBTW1KLEVBQVNVLFdBR3REcEssRUFBRWdLLFlBQWMsU0FBU3lCLEVBQVMvQixHQUM5QixHQUFJbUMsRUFRSixPQUxJQSxHQUR1Qm5CLFNBQXZCaEIsRUFBU2EsV0FBMkJiLEVBQVNhLFlBQWMzTCxPQUNwRHlLLEVBQVF6SSxRQUFVeUksRUFBUTNJLGFBRTFCVixFQUFFMEosRUFBU2EsV0FBV3RKLFNBQVNSLEtBQU9ULEVBQUUwSixFQUFTYSxXQUFXM0osUUFHaEVpTCxHQUFRN0wsRUFBRXlMLEdBQVN4SyxTQUFTUixLQUFPaUosRUFBU1UsV0FHdkRwSyxFQUFFNkosWUFBYyxTQUFTNEIsRUFBUy9CLEdBQzlCLEdBQUltQyxFQVFKLE9BTElBLEdBRHVCbkIsU0FBdkJoQixFQUFTYSxXQUEyQmIsRUFBU2EsWUFBYzNMLE9BQ3BEeUssRUFBUTdJLFlBRVJSLEVBQUUwSixFQUFTYSxXQUFXdEosU0FBU1YsSUFHbkNzTCxHQUFRN0wsRUFBRXlMLEdBQVN4SyxTQUFTVixJQUFNbUosRUFBU1UsVUFBWXBLLEVBQUV5TCxHQUFTM0ssVUFHN0VkLEVBQUU4SixZQUFjLFNBQVMyQixFQUFTL0IsR0FDOUIsR0FBSW1DLEVBUUosT0FMSUEsR0FEdUJuQixTQUF2QmhCLEVBQVNhLFdBQTJCYixFQUFTYSxZQUFjM0wsT0FDcER5SyxFQUFRM0ksYUFFUlYsRUFBRTBKLEVBQVNhLFdBQVd0SixTQUFTUixLQUduQ29MLEdBQVE3TCxFQUFFeUwsR0FBU3hLLFNBQVNSLEtBQU9pSixFQUFTVSxVQUFZcEssRUFBRXlMLEdBQVM3SyxTQUc5RVosRUFBRStMLFdBQWEsU0FBU04sRUFBUy9CLEdBRTdCLFFBQVExSixFQUFFZ0ssWUFBWXlCLEVBQVMvQixJQUFjMUosRUFBRThKLFlBQVkyQixFQUFTL0IsSUFDL0QxSixFQUFFK0osYUFBYTBCLEVBQVMvQixJQUFjMUosRUFBRTZKLFlBQVk0QixFQUFTL0IsS0FPdEUxSixFQUFFRSxPQUFPRixFQUFFZ00sS0FBSyxNQUNaQyxpQkFBa0IsU0FBU0MsR0FDdkIsTUFBT2xNLEdBQUUrSixhQUFhbUMsR0FDbEI5QixVQUFXLEtBR25CK0IsZ0JBQWlCLFNBQVNELEdBQ3RCLE9BQVFsTSxFQUFFK0osYUFBYW1DLEdBQ25COUIsVUFBVyxLQUduQmdDLGtCQUFtQixTQUFTRixHQUN4QixNQUFPbE0sR0FBRWdLLFlBQVlrQyxHQUNqQjlCLFVBQVcsS0FHbkJpQyxpQkFBa0IsU0FBU0gsR0FDdkIsT0FBUWxNLEVBQUVnSyxZQUFZa0MsR0FDbEI5QixVQUFXLEtBR25Ca0MsY0FBZSxTQUFTSixHQUNwQixNQUFPbE0sR0FBRStMLFdBQVdHLEdBQ2hCOUIsVUFBVyxLQUluQm1DLGlCQUFrQixTQUFTTCxHQUN2QixPQUFRbE0sRUFBRStKLGFBQWFtQyxHQUNuQjlCLFVBQVcsS0FHbkJvQyxnQkFBaUIsU0FBU04sR0FDdEIsTUFBT2xNLEdBQUVnSyxZQUFZa0MsR0FDakI5QixVQUFXLEtBR25CcUMsZUFBZ0IsU0FBU1AsR0FDckIsT0FBUWxNLEVBQUVnSyxZQUFZa0MsR0FDbEI5QixVQUFXLE9BS3ZCNUksUUFBUVEsT0FDUmlHLGlCQUFpQmpHLE9BQ2JoQyxFQUFFLFFBQVFJLFNBQVMsbUJBQ25Cb0IsUUFBUTZFLFdBQ1I3RSxRQUFRc0IiLCJmaWxlIjoiZGV2Lm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIiQuZm4uZXh0ZW5kKHtcblxuICAgIGlzT25TY3JlZW5WaXNpYmxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCEkKCdib2R5JykuaGFzQ2xhc3MoJ3Bvc3QtdGVtcGxhdGUnKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB3aW4gPSAkKHdpbmRvdyk7XG4gICAgICAgIHZhciB2aWV3cG9ydCA9IHtcbiAgICAgICAgICAgIHRvcDogd2luLnNjcm9sbFRvcCgpLFxuICAgICAgICAgICAgbGVmdDogd2luLnNjcm9sbExlZnQoKVxuICAgICAgICB9O1xuICAgICAgICB2aWV3cG9ydC5yaWdodCA9IHZpZXdwb3J0LmxlZnQgKyB3aW4ud2lkdGgoKTtcbiAgICAgICAgdmlld3BvcnQuYm90dG9tID0gdmlld3BvcnQudG9wICsgd2luLmhlaWdodCgpO1xuXG4gICAgICAgIHZhciBib3VuZHMgPSB0aGlzLm9mZnNldCgpO1xuICAgICAgICBib3VuZHMucmlnaHQgPSBib3VuZHMubGVmdCArIHRoaXMub3V0ZXJXaWR0aCgpO1xuICAgICAgICBib3VuZHMuYm90dG9tID0gYm91bmRzLnRvcCArIHRoaXMub3V0ZXJIZWlnaHQoKTtcblxuICAgICAgICByZXR1cm4gKCEodmlld3BvcnQucmlnaHQgPCBib3VuZHMubGVmdCB8fCB2aWV3cG9ydC5sZWZ0ID4gYm91bmRzLnJpZ2h0IHx8IHZpZXdwb3J0LmJvdHRvbSA8IGJvdW5kcy50b3AgfHwgdmlld3BvcnQudG9wID4gYm91bmRzLmJvdHRvbSkpO1xuICAgIH0sXG5cbn0pO1xuXG5mdW5jdGlvbiBsb2FkSlModXJsLCBjYWxsYmFjaywgZWwpIHtcbiAgICB2YXIgaXNJRSA9ICEhd2luZG93LkFjdGl2ZVhPYmplY3QsXG4gICAgICAgIGlzSUU2ID0gaXNJRSAmJiAhd2luZG93LlhNTEh0dHBSZXF1ZXN0LFxuICAgICAgICBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpLFxuICAgICAgICBoZWFkID0gaXNJRTYgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF07XG4gICAgc2NyaXB0LnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiO1xuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlKSB7XG4gICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHQucmVhZHlTdGF0ZSA9PSBcImxvYWRlZFwiIHx8IHNjcmlwdC5yZWFkeVN0YXRlID09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2NyaXB0LnNyYyA9IHVybDtcbiAgICBpZiAoZWwpIHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc2NyaXB0LCBoZWFkLmZpcnN0Q2hpbGQpO1xuICAgIH1cbn07XG5cbi8qKiBcbiAqIFlhc3VrbyDphY3nva7mlofku7ZcbiAqIOWkmuivtOivhOiuuuiwg+eUqOetiVxuICovXG5cbnZhciBkdW9zaHVvUXVlcnkgPSB7XG4gICAgc2hvcnRfbmFtZTogXCJsdW9sZWlcIlxufTtcblxudmFyIEdsb2JhbENvbmZpZ3VlID0ge1xuICAgIGR1b3NodW9Eb21haW46ICdodHRwczovL2x1b2xlaS5vcmcnLFxufVxuXG5cbnZhciBHZW5lcmFsID0ge1xuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICBpc1dlY2hhdDogZmFsc2UsXG4gICAgdmlld1dpZHRoOiAkKHdpbmRvdykud2lkdGgoKSxcbiAgICBhYnNVcmw6IGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3QsXG4gICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB3aW4gPSB3aW5kb3c7XG4gICAgICAgIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gICAgICAgIHZhciBVQSA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKVxuICAgICAgICB2YXIgaXNBbmRyb2lkID0gd2luLm5hdmlnYXRvci5hcHBWZXJzaW9uLm1hdGNoKC9hbmRyb2lkL2dpKTtcbiAgICAgICAgdmFyIGlzSVBob25lID0gd2luLm5hdmlnYXRvci5hcHBWZXJzaW9uLm1hdGNoKC9pcGhvbmUvZ2kpO1xuICAgICAgICBpZiAoVUEubWF0Y2goL01pY3JvTWVzc2VuZ2VyL2kpID09IFwibWljcm9tZXNzZW5nZXJcIikge1xuICAgICAgICAgICAgR2VuZXJhbC5pc1dlY2hhdCA9IHRydWU7XG4gICAgICAgICAgICAkKCdib2R5JykuYWRkQ2xhc3MoJ3dlY2hhdC13ZWJ2aWV3JylcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFpc0FuZHJvaWQpIHtcbiAgICAgICAgICAgIEdlbmVyYWwuaXNNb2JpbGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkKCdib2R5JykuaGFzQ2xhc3MoJ3Bvc3QtdGVtcGxhdGUnKSkge1xuICAgICAgICAgICAgR2VuZXJhbC51cGRhdGVJbWFnZVdpZHRoKCk7XG4gICAgICAgICAgICBHZW5lcmFsLnJld2FyZExvYWRlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgR2VuZXJhbC53ZWJGb250TG9hZGVyKCk7XG4gICAgICAgIEdlbmVyYWwuc2Nyb2xsVG9Qb3MoKTtcbiAgICAgICAgR2VuZXJhbC5hcnJvd0V2ZW50KCk7XG4gICAgICAgIEdlbmVyYWwuY29tbWVudExvYWRlcigpO1xuICAgIH0sXG4gICAgdXBkYXRlSW1hZ2VXaWR0aDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciAkcG9zdENvbnRlbnQgPSAkKFwiLnBvc3QtY29udGVudFwiKTtcbiAgICAgICAgLy8gJHBvc3RDb250ZW50LmZpdFZpZHMoKTtcblxuICAgICAgICBmdW5jdGlvbiB1cGRhdGVJbWFnZVdpZHRoKCkge1xuICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSxcbiAgICAgICAgICAgICAgICBjb250ZW50V2lkdGggPSAkcG9zdENvbnRlbnQub3V0ZXJXaWR0aCgpLCAvLyBXaWR0aCBvZiB0aGUgY29udGVudFxuICAgICAgICAgICAgICAgIGltYWdlV2lkdGggPSB0aGlzLm5hdHVyYWxXaWR0aDsgLy8gT3JpZ2luYWwgaW1hZ2UgcmVzb2x1dGlvblxuXG4gICAgICAgICAgICBpZiAoaW1hZ2VXaWR0aCA+PSBjb250ZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnZnVsbC1pbWcnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3MoJ2Z1bGwtaW1nJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgJGltZyA9ICQoXCIuc2luZ2xlLXBvc3QtaW5uZXIgaW1nXCIpLm9uKCdsb2FkJywgdXBkYXRlSW1hZ2VXaWR0aCk7XG5cbiAgICAgICAgZnVuY3Rpb24gY2FzcGVyRnVsbEltZygpIHtcbiAgICAgICAgICAgICRpbWcuZWFjaCh1cGRhdGVJbWFnZVdpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc3BlckZ1bGxJbWcoKTtcbiAgICB9LFxuICAgIHdlYkZvbnRMb2FkZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBXZWJGb250Q29uZmlnID0ge1xuICAgICAgICAgICAgbG9hZGluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xvYWRpbmcgZm9udCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3VzdG9tOiB7XG4gICAgICAgICAgICAgICAgZmFtaWxpZXM6IFsnRXhvJywgJ2ljb25mb250J10sXG4gICAgICAgICAgICAgICAgdXJsczogW0dlbmVyYWwuYWJzVXJsICsgJy9hc3NldHMvY3NzL2ZvbnQubWluLmNzcyddXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxvYWRKUyhHZW5lcmFsLmFic1VybCArICcvYXNzZXRzL2pzL3dlYmZvbnQuanMnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfliqDovb3lrZfkvZNKUycpO1xuICAgICAgICAgICAgV2ViRm9udC5sb2FkKHtcbiAgICAgICAgICAgICAgICBjdXN0b206IHtcbiAgICAgICAgICAgICAgICAgICAgZmFtaWxpZXM6IFsnRXhvJywgJ2ljb25mb250J11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcblxuXG5cblxuICAgIH0sXG4gICAgYXJyb3dFdmVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICQoJy5hcnJvd19kb3duJykuY2xpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAkKCdodG1sLGJvZHknKS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICBzY3JvbGxUb3A6ICQod2luZG93KS5oZWlnaHQoKSAtIDIwXG4gICAgICAgICAgICB9LCA2MDAsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyMnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvL+W5s+a7kea7muWKqOWIsOmhtumDqFxuICAgIHNjcm9sbFRvUG9zOiBmdW5jdGlvbihwb3NpdGlvbikge1xuICAgICAgICB2YXIgU1RSX1RPX1RPUCA9ICfmiJHopoHpo57liLDmnIDpq5gnLFxuICAgICAgICAgICAgY292ZXJIZWlnaHQgPSBwb3NpdGlvbiB8fCAkKHdpbmRvdykuaGVpZ2h0KCk7IC8v6I635b6X5Zu+54mH6auY5bqmXG4gICAgICAgIHZhciBidXR0b24gPSAkKCc8YSBocmVmPVwiI1wiIGlkPVwidG8tdG9wXCIgdGl0bGU9XCInICsgU1RSX1RPX1RPUCArICdcIj4gPGRpdiBjbGFzcz1cInRvLXRvcC13cmFwXCI+PC9kaXY+PC9hPicpLmFwcGVuZFRvKCdib2R5Jyk7XG4gICAgICAgICQod2luZG93KS5zY3JvbGwoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoJCh3aW5kb3cpLnNjcm9sbFRvcCgpID4gJCh3aW5kb3cpLmhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgYnV0dG9uLmZhZGVJbig1MDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBidXR0b24uZmFkZU91dCg1MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBidXR0b24uY2xpY2soZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgJCgnaHRtbCxib2R5JykuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAwXG4gICAgICAgICAgICB9LCA2NjYsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyMnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5oiR6LezJyk7XG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvKue7meaWh+eroOS4reeahHVybOa3u+WKoGljb25mb2505pa55L6/6K+G5YirKi9cbiAgICB1cmxJY29ubGl6ZTogZnVuY3Rpb24odXJsKSB7XG4gICAgICAgIHZhciBkb21haW4sXG4gICAgICAgICAgICBfb3V0cHV0O1xuICAgICAgICB2YXIgaWNvbkZvbnRUYWcgPSAnaWNvbmZvbnQnO1xuICAgICAgICB2YXIgaWNvbk1hcCA9IHsgLyrntKLlvJUg5Y+v5Zyo6L+Z6YeM5re75Yqg5Yy56YWN6KeE5YiZKi9cbiAgICAgICAgICAgICd0d2l0dGVyJzogaWNvbkZvbnRUYWcgKyAnLXR3aXR0ZXInLFxuICAgICAgICAgICAgJ3F6b25lJzogaWNvbkZvbnRUYWcgKyAnLXF6b25lJyxcbiAgICAgICAgICAgICd3ZWlibyc6IGljb25Gb250VGFnICsgJy13ZWlibycsXG4gICAgICAgICAgICAnZmFjZWJvb2snOiBpY29uRm9udFRhZyArICctZmFjZWJvb2snLFxuICAgICAgICAgICAgJ2dpdGh1Yic6IGljb25Gb250VGFnICsgJy1naXRodWInLFxuICAgICAgICAgICAgJ2RvdWJhbic6IGljb25Gb250VGFnICsgJy1kb3ViYW4nLFxuICAgICAgICAgICAgJ2dvb2dsZSc6IGljb25Gb250VGFnICsgJy1nb29nbGUnLFxuICAgICAgICAgICAgJ2x1b2xlaSc6IGljb25Gb250VGFnICsgJy1sdW9sZWknLFxuICAgICAgICAgICAgJ2RyaWJibGUnOiBpY29uRm9udFRhZyArICctZHJpYmJsZScsXG4gICAgICAgICAgICAndjJleCc6IGljb25Gb250VGFnICsgJy12MmV4JyxcbiAgICAgICAgICAgICd6aGlodSc6IGljb25Gb250VGFnICsgJy16aGlodScsXG4gICAgICAgICAgICAnd2lraXBlZGlhJzogaWNvbkZvbnRUYWcgKyAnLXdpa2lwZWRpYScsXG4gICAgICAgICAgICAnamlhbnNodSc6IGljb25Gb250VGFnICsgJy1qaWFuc2h1JyxcbiAgICAgICAgICAgICd5b3VrdSc6IGljb25Gb250VGFnICsgJy15b3VrdScsXG4gICAgICAgICAgICAneW91dHViZSc6IGljb25Gb250VGFnICsgJy15b3V0dWJlJ1xuXG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBuYW1lIGluIGljb25NYXApIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaWNvbk1hcFtuYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHZhciBNYXBLZXkgPSBuYW1lO1xuICAgICAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZihNYXBLZXkpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZG9tYWluID0gTWFwS2V5O1xuICAgICAgICAgICAgICAgICAgICBfb3V0cHV0ID0gaWNvbk1hcFtNYXBLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBfb3V0cHV0O1xuICAgIH0sXG4gICAgYWRkSWNvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAvKue7meWNmuWuouaWh+eroOWcsOWdgHVybOa3u+WKoGljb+ivhuWIqyovXG4gICAgICAgICQoJy5zaW5nbGUtcG9zdC1pbm5lciAgYTpub3QoOmhhcyhpbWcpKScpLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgdmFyIF9zcmMgPSAkKHRoaXMpLmF0dHIoJ2hyZWYnKTtcbiAgICAgICAgICAgIHZhciB0bXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICB0bXAuaHJlZiA9IF9zcmM7XG4gICAgICAgICAgICBfc2VsZkRvbWFpbiA9IHRtcC5ob3N0bmFtZTtcbiAgICAgICAgICAgIEdlbmVyYWwudXJsSWNvbmxpemUoX3NlbGZEb21haW4pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coX3NlbGZEb21haW4pO1xuICAgICAgICAgICAgJCh0aGlzKS5wcmVwZW5kKCc8aSBjbGFzcz1cImljb25mb250ICcgKyBHZW5lcmFsLnVybEljb25saXplKF9zZWxmRG9tYWluKSArICdcIj48L2k+Jyk7XG4gICAgICAgICAgICB2YXIgX3NlbGZDb2xvciA9ICQodGhpcykuZmluZCgnaScpLmNzcygnY29sb3InKSxcbiAgICAgICAgICAgICAgICBfb3JpZ2luYWxDb2xvciA9ICQodGhpcykuY3NzKCdjb2xvcicpO1xuXG4gICAgICAgICAgICAvKum8oOagh+aCrOa1ruaXtiovXG4gICAgICAgICAgICAkKHRoaXMpLmhvdmVyKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICQodGhpcykuY3NzKCdjb2xvcicsIF9zZWxmQ29sb3IpO1xuICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2FuaW1hdGVkIHB1bHNlJyk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcygnY29sb3InLCBfb3JpZ2luYWxDb2xvcik7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnYW5pbWF0ZWQgcHVsc2UnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgLy/miZPotY9cbiAgICByZXdhcmRMb2FkZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBsb2FkUVIgPSB7XG4gICAgICAgICAgICBhbGlwYXk6ICcvYXNzZXRzL2ltYWdlcy9xci1hbGlwYXktMjU2LnBuZycsXG4gICAgICAgICAgICB3ZWNoYXQ6ICcvYXNzZXRzL2ltYWdlcy9xci13ZWNoYXQtMjU2LnBuZydcbiAgICAgICAgfVxuICAgICAgICB2YXIgbG9hZFFSVXJsO1xuICAgICAgICBpZighIUdlbmVyYWwuaXNXZWNoYXQpe1xuICAgICAgICAgICAgJCgnLndlY2hhdC1jb2RlIGInKS5odG1sKCfplb/mjInkuIrmlrnkuoznu7TnoIHmiZPotY/kvZzogIUnKTtcbiAgICAgICAgICAgICAvLyAkKCcucXItY29kZScpLmZhZGVPdXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgICQoJy5tb25leS1saWtlIC5yZXdhcmQtYnV0dG9uJykuaG92ZXIoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5oKs5rWuJylcbiAgICAgICAgICAgICQoJ2ltZy53ZWNoYXQtaW1nJykuYXR0cignc3JjJywgbG9hZFFSLndlY2hhdCk7XG4gICAgICAgICAgICAkKCdpbWcuYWxpcGF5LWltZycpLmF0dHIoJ3NyYycsIGxvYWRRUi5hbGlwYXkpO1xuICAgICAgICAgICAgJCgnLm1vbmV5LWNvZGUnKS5mYWRlSW4oKTtcbiAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICQoJy5tb25leS1jb2RlJykuZmFkZU91dCgpO1xuICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgIH0sIDgwMClcblxuICAgICAgICAgICAgJCgnLm1vbmV5LWxpa2UgLnJld2FyZC1idXR0b24nKS5jbGljayhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCdpbWcud2VjaGF0LWltZycpLmF0dHIoJ3NyYycsIGxvYWRRUi53ZWNoYXQpO1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJ2ltZy5hbGlwYXktaW1nJykuYXR0cignc3JjJywgbG9hZFFSLmFsaXBheSk7XG4gICAgICAgICAgICAgICAgICAgICQoJy5tb25leS1jb2RlJykuZmFkZU91dCgpO1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJCgnLm1vbmV5LWNvZGUnKS5mYWRlSW4oKTtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcblxuXG4gICAgfSxcbiAgICBjb21tZW50TG9hZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCEkKCdib2R5JykuaGFzQ2xhc3MoJ3Bvc3QtdGVtcGxhdGUnKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXRhVGhyZWFkS2V5ID0gR2xvYmFsQ29uZmlndWUuZHVvc2h1b0RvbWFpbiArIGxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgICAkKHdpbmRvdykuc2Nyb2xsKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKCQoJy5jb21tZW50LWFyZWEnKS5oYXMoJ2RpdicpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WinuWKoOivhOiuuicpO1xuICAgICAgICAgICAgICAgIGlmICgoJCgnLmF1dGhvci1pbWFnZScpLmlzT25TY3JlZW5WaXNpYmxlKCkgfHwgJCgnLnJlYWQtbmV4dCcpLmlzT25TY3JlZW5WaXNpYmxlKCkpICYmICQoJy5hdXRob3ItaW1hZ2UnKS5oYXNDbGFzcygnZHVvc2h1by1sb2FkZWQnKSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAkKCcuYXV0aG9yLWltYWdlJykuYWRkQ2xhc3MoJ2R1b3NodW8tbG9hZGVkJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRKUygnaHR0cHM6Ly9zdGF0aWMuZHVvc2h1by5jb20vZW1iZWQuanMnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLXRocmVhZC1rZXknLCBkYXRhVGhyZWFkS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZGF0YS11cmwnLCBsb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZGF0YS10aXRsZScsICQoJ3RpdGxlJykuaHRtbCgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIERVT1NIVU8uRW1iZWRUaHJlYWQoZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsU3RvcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jb21tZW50LWFyZWEnKS5hcHBlbmQoZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjUwKVxuXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuXG5cbnZhciBJbWFnZVNtYXJ0TG9hZGVyID0ge1xuICAgIGlzV2ViUFN1cHBvcnRlZDogZmFsc2UsXG4gICAgaXNJbWFnZUNvbXByZXNzZWQ6IGZhbHNlLFxuICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBJbWFnZVNtYXJ0TG9hZGVyLndlYlBDaGVjaygpO1xuICAgIH0sXG4gICAgaXNDb21wcmVzc2VkQ2hlY2s6IGZ1bmN0aW9uKCkge1xuXG4gICAgfSxcbiAgICB3ZWJQQ2hlY2s6IGZ1bmN0aW9uKGZlYXR1cmUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBUZXN0SW1hZ2VzID0ge1xuICAgICAgICAgICAgZGVtbzogXCJVa2xHUmtvQUFBQlhSVUpRVmxBNFdBb0FBQUFRQUFBQUFBQUFBQUFBUVV4UVNBc0FBQUFCQnhBUkVZaUkvZ2NBQUFCV1VEZ2dHQUFBQURBQkFKMEJLZ0VBQVFBQkFCd2xwQUFEY0FEKy9nYlFBQT09XCJcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2coJ+aUr+aMgVdlYnDlk6YnKTtcbiAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gKGltZy53aWR0aCA+IDApICYmIChpbWcuaGVpZ2h0ID4gMCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5pSv5oyBV2VicCcpO1xuICAgICAgICAgICAgLy8gYWxlcnQoJ+aUr+aMgScpXG4gICAgICAgICAgICBJbWFnZVNtYXJ0TG9hZGVyLmlzV2ViUFN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgICAgICBJbWFnZVNtYXJ0TG9hZGVyLndlYlBMb2FkZXIoKTtcbiAgICAgICAgfTtcbiAgICAgICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfkuI3mlK/mjIFXZWJwJyk7XG4gICAgICAgICAgICBJbWFnZVNtYXJ0TG9hZGVyLmlzV2ViUFN1cHBvcnRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgSW1hZ2VTbWFydExvYWRlci53ZWJQTG9hZGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgIGltZy5zcmMgPSBcImRhdGE6aW1hZ2Uvd2VicDtiYXNlNjQsXCIgKyBUZXN0SW1hZ2VzWydkZW1vJ107XG5cbiAgICB9LFxuICAgIGltZ0xvYWRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfliqDovb3pu5jorqTlm77niYcnKTtcbiAgICB9LFxuICAgIHdlYlBMb2FkZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBjb25zb2xlLmxvZygn5Yqg6L29d2ViUCcpO1xuICAgICAgICAvLyBhbGVydChJbWFnZVNtYXJ0TG9hZGVyLmlzV2ViUFN1cHBvcnRlZCk7XG4gICAgICAgIGlmIChJbWFnZVNtYXJ0TG9hZGVyLmlzV2ViUFN1cHBvcnRlZCA9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5a695bqm5pivJyArIEdlbmVyYWwudmlld1dpZHRoKTtcbiAgICAgICAgICAgIGlmIChHZW5lcmFsLnZpZXdXaWR0aCA9PSA3NjgpIHtcbiAgICAgICAgICAgICAgICAkKFwiLmxhenlcIikubGF6eWxvYWQoe1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhX2F0dHJpYnV0ZTogJ3VybCcsXG4gICAgICAgICAgICAgICAgICAgIHdlYlBfbG9hZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNfc2NhbGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGlmIChHZW5lcmFsLnZpZXdXaWR0aCA8IDc2OCkge1xuICAgICAgICAgICAgICAgICQoXCIubGF6eVwiKS5sYXp5bG9hZCh7XG4gICAgICAgICAgICAgICAgICAgIGFkdmFuY2VkX2xvYWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfYXR0cmlidXRlOiAndXJsJyxcbiAgICAgICAgICAgICAgICAgICAgd2ViUF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpc19zY2FsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2NhbGVfd2lkdGg6IDc1MFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBhbGVydCgn5pmu6YCa5pSv5oyBJylcbiAgICAgICAgICAgICAgICAkKFwiLmxhenlcIikubGF6eWxvYWQoe1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhX2F0dHJpYnV0ZTogJ3VybCcsXG4gICAgICAgICAgICAgICAgICAgIHdlYlBfbG9hZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNfc2NhbGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChHZW5lcmFsLnZpZXdXaWR0aCA9PSA3NjgpIHtcbiAgICAgICAgICAgICAgICAkKFwiLmxhenlcIikubGF6eWxvYWQoe1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhX2F0dHJpYnV0ZTogJ3VybCcsXG4gICAgICAgICAgICAgICAgICAgIHdlYlBfbG9hZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGlzX3NjYWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzY2FsZV93aWR0aDogMTUwMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICBpZiAoR2VuZXJhbC52aWV3V2lkdGggPCA3NjgpIHtcbiAgICAgICAgICAgICAgICAkKFwiLmxhenlcIikubGF6eWxvYWQoe1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZF9sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhX2F0dHJpYnV0ZTogJ3VybCcsXG4gICAgICAgICAgICAgICAgICAgIHdlYlBfbG9hZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGlzX3NjYWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzY2FsZV93aWR0aDogNzUwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGFsZXJ0KCfmma7pgJrmlK/mjIEnKVxuICAgICAgICAgICAgICAgICQoXCIubGF6eVwiKS5sYXp5bG9hZCh7XG4gICAgICAgICAgICAgICAgICAgIGFkdmFuY2VkX2xvYWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfYXR0cmlidXRlOiAndXJsJyxcbiAgICAgICAgICAgICAgICAgICAgd2ViUF9sb2FkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaXNfc2NhbGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH0sXG5cblxufVxuXG5cblxuJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XG4gICAgdmFyICR3aW5kb3cgPSAkKHdpbmRvdyk7XG5cbiAgICAkLmZuLmxhenlsb2FkID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICB2YXIgZWxlbWVudHMgPSB0aGlzO1xuICAgICAgICB2YXIgJGNvbnRhaW5lcjtcbiAgICAgICAgdmFyIHNldHRpbmdzID0ge1xuICAgICAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICAgICAgZmFpbHVyZV9saW1pdDogMCxcbiAgICAgICAgICAgIGV2ZW50OiBcInNjcm9sbFwiLFxuICAgICAgICAgICAgZWZmZWN0OiBcInNob3dcIixcbiAgICAgICAgICAgIGNvbnRhaW5lcjogd2luZG93LFxuICAgICAgICAgICAgZGF0YV9hdHRyaWJ1dGU6IFwib3JpZ2luYWxcIixcbiAgICAgICAgICAgIHNraXBfaW52aXNpYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGFwcGVhcjogbnVsbCxcbiAgICAgICAgICAgIGxvYWQ6IG51bGwsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhiZ0FLQUlBQUFQLy8vLy8vL3lIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUFBQ0lJeVBxY3Z0RDZPY3ROcUxzOTY4K3crRzRraVc1b21tNnNxMjdndkg4bFVBQUNINUJBZ0pBQUFBTEFBQUFBQnVBQW9BZzdTeXROemEzUFR5OU1UQ3hMeSt2T1RpNVB6Ni9MUzJ0TXpPek9UbTVQeisvUC8vL3dBQUFBQUFBQUFBQUFBQUFBUStjTWxKcTcwNDY4MjcvMkFvam1TSkdjaEJKR2JydmhzQ3pJY0EzM2g3ekhPUS8wQVBnWGNvQkkvSVNnS3dJeWlTVUtRZ1VIaEdyOWlzZHN0OVJRQUFJZmtFQ0FrQUFBQXNBQUFBQUc0QUNnQ0R0TEswM05yYzlQTDB4TUxFdkw2ODVPTGsvUHI4dExhMHpNN001T2JrL1A3OC8vLy9BQUFBQUFBQUFBQUFBQUFBQkQ1d3lVbXJ2VGpyemJ2L1lDaU9aR2xhQm5JUXllbSs4SVVBOUNIRWVFNGVOQjNvd09DRzBEc1VoTWlrSkFIZ0VSVEthRkFRS0VDbDJLeDJ5OTFHQUFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVQbkRKU2F1OU9Pdk51LzlnS0k1a2FaWUdjaERKNmI3d2hRRDBJY1I0VGg0MEhlakE0SWJRT3hTRXlLUWtBZUFSRk1wb1VCQW9RS1hZckhiTGpVVUFBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFRK2NNbEpxNzA0NjgyNy8yQW9qbVJwbnBpQkhFU0N2bkE4SVVCOUNIS3VoMGRkQjd1Z0VFUHdIUXJEWkRJQjZCRVV5bWhRRUNoQXBkaXNkc3NOUlFBQUlma0VDQWtBQUFBc0FBQUFBRzRBQ2dDRHRMSzAzTnJjOVBMMHhNTEV2TDY4NU9May9Qcjh0TGEwek03TTVPYmsvUDc4Ly8vL0FBQUFBQUFBQUFBQUFBQUFCRDV3eVVtcnZUanJ6YnYvWUNpT1pHbWVuWUVjUklLK2NEd2hRSDBJY3E2SFIxMEh1NkFRUS9BZENzTmtNZ0hvRVJUS2FGQVFLRUNsMkt4MnkrVkVBQUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRVVYREpTYXU5T092TnUvOWdLSTVrdVNURWdSaG1pNkVxNjVZQ1lBUElyQy8xbmUraXdBRXdQQUJkQWFMTmVBUVZiZ0JDMC9SVVNxY2VSWXFZd0pJTTIwUFgyMUVVQWdJeXlZeFd1OS93dUh3YUFRQWgrUVFJQ1FBQUFDd0FBQUFBYmdBS0FJTzBzclRjMnR6MDh2VEV3c1M4dnJ6azR1VDgrdnkwdHJUTXpzems1dVQ4L3Z6Ly8vOEFBQUFBQUFBQUFBQUFBQUFFVTNESlNhdTlPT3ZOdS85Z0tJNWtXU2JFZ1JqbVppQUhrYlQwS0FBNGdOUVlraDhDbnBBVE9BQ01oMkVsaHdzb241WUNrd0NWRUk3SFFuV3JTQjFuMVVTT29OaHlDNEdnV1JCSWxNM3d1SHhPaDBjQUFDSDVCQWdKQUFBQUxBQUFBQUJ1QUFvQWc3U3l0TnphM1BUeTlNVEN4THkrdk9UaTVQejYvTFMydE16T3pPVG01UHorL1AvLy93QUFBQUFBQUFBQUFBQUFBQVJRY01sSnE3MDQ2ODI3LzJBb2ptUnBlZ2x4SU1hWXJ1MHB6NWNBM0FBaTJyaE8vN1RBQVRBOGlBTEVteEhJTkJWd0FJTG9tWlEycnlLRmlwZ1FHYmFITG5iOFVSUUNBcElaVFc2NzMvQzRPd0lBSWZrRUNBa0FBQUFzQUFBQUFHNEFDZ0NEdExLMDNOcmM5UEwweE1MRXZMNjg1T0xrL1ByOHRMYTB6TTdNNU9iay9QNzgvLy8vQUFBQUFBQUFBQUFBQUFBQUJGVnd5VW1ydlRqcnpidi9ZQ2lPWkdtZVMwSWNpSkVaeUVFa2FHMS9BcUFEU0lic0I4RnRTS3dFRGdEa0liUFRCWXJRWWFGSnlCQ1N5VUowaTFLc2tqUk1Za2RRY004bFJTRWcxQWdDQ1RONlRxL2I3NllJQUNINUJBZ0pBQUFBTEFBQUFBQnVBQW9BZzdTeXROemEzUFR5OU1UQ3hMeSt2T1RpNVB6Ni9MUzJ0TXpPek9UbTVQeisvUC8vL3dBQUFBQUFBQUFBQUFBQUFBUlNjTWxKcTcwNDY4MjcvMkFvam1ScG5sWkNISWhScWF5THpyUW9BRGlBVUhlKzE4QmdKbkFBRkErVWdCR0hGRHFmaFJ5QVFJa3VxYzhzVUxFeUppaUc3dUdyTGM4VWhZREFnbGFiMy9DNGZINktBQUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRWFYREpTYXU5T092TnUvOWdLSTZrbHhBSFlwU3NaaUFIa1ZSdlBMZWNBT3dBZ3Y4VUJPOGdDQTZMUUV6Z0FHQWVra0RlTGtCaDhxaFFTMEZLeU9JSXpXYUJBdDRkeGw2S0F0VzhwVWtKSGtGQmlUUG5iM1VoZ015VEJBRUpkQldBQllOK2lJbUtpNHh2RVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVZM0RKU2F1OU9Pdk51LzlnS0k1azJTWEVnUmdtaDZvczlhNXRqUWxBRGlEMnJlOFVuSTdYS3k0Q0IwRHlZS3dFbERubTVKbFVObnVGSCtFNnlVSzMzU2dBekRVcFVzcEVlV0ZBSDlTVDloSytMaWtLQVVGOWNjOWIrbnA3Z29PRWhZWkZFUUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRWFYREpTYXU5T092TnUvOWdLSTVrYVZvSmNTREdhQ0FIa1ZSdlBKKzRLUUE4Z0l5STNrRkFDZktHdWFRb2NBQTBENk1lTDBCcDlxaktiS2NnSll3SVRtZUJBajZPdGVpTVF1VzhoUkk5Z29JQ2I4clQrSXVpRUNDU0JBRUpjeFdBQllONWlJbUtpNHlMRVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVaSERKU2F1OU9Pdk51LzlnS0k1a2FZSUpjU0NHbHE0dDliSm5iVjhDb0FOSWx1Kzl5VThYdkJscmdRTkFlY2dFbHJybTVLbGNIcSttd2c1QXlHaWgzY2xYR2NhYVFRclZNcEV4cUEvc2lac1pQOXM3aWtKQXNNbnZMWDU4ZDRPRWhZYUhaeEVBSWZrRUNBa0FBQUFzQUFBQUFHNEFDZ0NEdExLMDNOcmM5UEwweE1MRXZMNjg1T0xrL1ByOHRMYTB6TTdNNU9iay9QNzgvLy8vQUFBQUFBQUFBQUFBQUFBQUJHbHd5VW1ydlRqcnpidi9ZQ2lPWkdtV0NYRWdSbVVnQjVHNHNIemVPQ2NBUElCVWlONUJRQW55aHJta1VoSTRBSnlIU284WG9EaDcxYVgyVkpnU0tvVG5zMEFKSDhuYjlFaWhlczRvaVI1QkFSZlAxZmlRb2hBZ1dnUUJDWFFWZ0FXRGVZaUppb3VNTnhFQUlma0VDQWtBQUFBc0FBQUFBRzRBQ2dDRHRMSzAzTnJjOVBMMHhNTEV2TDY4NU9May9Qcjh0TGEwek03TTVPYmsvUDc4Ly8vL0FBQUFBQUFBQUFBQUFBQUFCSE53eVVtcnZUanJ6YnYvWUNpT3BHYVVxSWtjUkdJbHhJR2NGQ3pUYVlYa1BJVUF3SU9BSWdBQ2Q1T2lFZG1USEpvOUl6QkFDVWlmRTZzUkN5VkFlUVRBUVZ5Z0ZNWmo3NlFnRnF1aHJtOHFZU1FvS0lxWU9DNHg2QUY4Y29JbEFnRUpkeFVLQlFGRGlZdU5nNUdTazVTVmxoUVJBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFTQWNNbEpxNzA0NjgyNy8yQW9qbVJaSmNTQkdDYUhxaXhsSUFlUlZITjl0NlVBL0FBRUwrTURDaWtJNEVHQVZES0hvc0FCTUQxQUx3SHF6MG9CL2dLVUtSQjhCUlc4aEhMbHJFMVRDTnBENGEyY3F6MktGSFYzWHhqMEIzd1NDVUFFQ2hTRVU0WjllQVVCVDR3TENvNlFGQUlCQ1ljVmx3V2FrWitnb2FLam9CRUFJZmtFQ0FrQUFBQXNBQUFBQUc0QUNnQ0R0TEswM05yYzlQTDB4TUxFdkw2ODVPTGsvUHI4dExhMHpNN001T2JrL1A3OC8vLy9BQUFBQUFBQUFBQUFBQUFBQkgxd3lVbXJ2VGpyemJ2L1lDaU9aRWtteElFWW80RWNSR0toS2t2UnE2bDdBdUFEaUJIaWR4QlFlci9nQk9sVDdwNll3QUV3UFl4K3ZnQWxnTFZPdUVTbzJGTEFFa1lFS3JWQUtWUUI1MG01R2gvYkZTbXFUSlQ0RVJRVWVGVjdFZ1o1QUlSMll3b0ZBVVlrQWdFSmdCV01qaGFXajRxYm5KMmVuNkFoRVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVnSERKU2F1OU9Pdk51LzlnS0k1a2FXSUpjU0NHbHE0dFpTQUhrVlJ6Zlo5OEtRQkFBQ0x6Q3c0cGlPQkJnRlF5ZTFCUTRBQ2dIaktCS3ZCS0NRSURGR29RSEMxekNsNUNCcTFWVXdqYVErR3RuSnZ2R0lXcXVyc1k5Z2Q5RWdsQkJBb1VoRlNHZUl3V0NnVUJUeG1Qa1JjQ0FRbUhGWmNGbW8yZm9LR2lvNThSQUNINUJBZ0pBQUFBTEFBQUFBQnVBQW9BZzdTeXROemEzUFR5OU1UQ3hMeSt2T1RpNVB6Ni9MUzJ0TXpPek9UbTVQeisvUC8vL3dBQUFBQUFBQUFBQUFBQUFBUi9jTWxKcTcwNDY4MjcvMkFvam1ScGRnbHhJRVpsSUFlUldPbmFValY3N3Z3aUFFQUFvb0lJSGdTVVgzQTRVUUtadmFnb2NBQlVENVVnTUVBSmFMRVRyMUZLQmhXMGhBckJhaTFRQ2xkQWVuSyt6c3Q0alVKbG5lR0NCQW9VZTFkK0VnWjhBSVo1akJZS0JRRklGZ0lCQ1lJVmo1R09rSktObnArZ29hSlNFUUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRWdIREpTYXU5T092TnUvOWdLSTVrYVhZR2NoQ0psUkFIWWxUcDJtWnZQSjk4aVFEQWc0QWlBQUlSbFY5d2VDa2FrYjFvNkdBRUJDaUI2cUZTdFdLeXhxMTAzQ0dFQzVRQ2xVcW9tTmZvaXhyQUp0czFDVHFBb0tBWVlIUTNFM2xBZkJnS2dBZUNkNHhFQVFWOUZRb0ZBVXdWQWdFSmtZZVVsbzJmb0tHaW8yTVJBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFSOGNNbEpxNzA0NjgyNy8yQW9qbVJwZWdseElFWmxJQWVSV09uYWlqVjc3cHdBL0FCRUJRRThDQ2crb0RDVS9DMTVVRXZnQUtBZUtzQmZnQkxJWGtQZFluUk1LV1FKRlVLMVdpaGJBZWlRMlJvbmp4V3E2b3lTQUJJVUZIaFdleUFHZVFDRWRsRUtCUUZIRmdJQkNZQVZqSTRrbG8rS201eWRucCtLRVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVmSERKU2F1OU9Pdk51LzlnS0k1a2FYb0djaENKbFJBSFlsVHAycDdhZStBbkF2d0hBVVh3K3lFcVBxQ1FaeUgrbUtWREVSQ2dCS1k3eXBRS3JWeWZYUkdoZUNoUUNsSXBvVEpPbThNU05DQUwveVRtQUlLQ1lvRE5ieE4zUDNwMUN3cCtoU0FDQVFWN0ZRb0ZBVXNWaXdtT2haQlZpWnVjblo2ZkZoRUFJZmtFQ0FrQUFBQXNBQUFBQUc0QUNnQ0R0TEswM05yYzlQTDB4TUxFdkw2ODVPTGsvUHI4dExhMHpNN001T2JrL1A3OC8vLy9BQUFBQUFBQUFBQUFBQUFBQkd0d3lVbXJ2VGpyemJ2L1lDaU9aR2wrQ1hFZ1JtVWdCNUZZNmRxZWVLNEpRQThnRllUdklLRHdmRUNkY3JrSUhBRFBROFhYQzFBQ1ZDbHpleXBRQ1JVQ0ZGcWdGS0lBTUhjOVVxaWdNMHJDUjFCUTNORTRlLzlSRkFKRkZnSUJDWFlWZm9COGlvdU1qWTVyRVFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVhM0RKU2F1OU9Pdk51LzlnS0k1a2FYNEdjaENKbFJBSFltaHZQSjk0YmlGQWZ3Z1VRYStIeUFpSFJaMHlkeGdDQXBTQTg1Q1JEcW5MYklsd0xWQUt6U1loVXdDRXg5cDBLR0VHRUJRVUE4emN3c2liZ0xwNjN4RUVDbkFWQ2dVQlFCcURoWHlLaTR5Tmpuc1JBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFScGNNbEpxNzA0NjgyNy8yQW9qbVJwZ2dseElFWmxJQWVSa09uYW5uZ3BBRHlBVklqZVFTRGE5WDY1WkNod0FEUVBsUjR2SUFwSW9jcHNweUFsVkFoT1owRlVlQUs4Mm5SR29YTE9LSWtlUVNGaVA5L3FmRVZSQ0JBdEFnRUpkQ044Zm5xSWlZcUxqRm9SQUNINUJBZ0pBQUFBTEFBQUFBQnVBQW9BZzdTeXROemEzUFR5OU1UQ3hMeSt2T1RpNVB6Ni9MUzJ0TXpPek9UbTVQeisvUC8vL3dBQUFBQUFBQUFBQUFBQUFBUnJjTWxKcTcwNDY4MjcvMkFvam1ScGdnWnlFSW1WRUFkaW5Oc2J6M1JlSVVCL0NCUkJyNGZRWFlURG90RjRHQUlDbElEenNLeEloOVJxam9BdFVBck5Ka0U3S1FEQ1kvSXBjUVlRRkJRRDdOeFN5NXVBdXRva0NCVGdGUW9GQVVCN0M0S0Vob3FMakkyT0dCRUFJZmtFQ0FrQUFBQXNBQUFBQUc0QUNnQ0R0TEswM05yYzlQTDB4TUxFdkw2ODVPTGsvUHI4dExhMHpNN001T2JrL1A3OC8vLy9BQUFBQUFBQUFBQUFBQUFBQkZWd3lVbXJ2VGpyemJ2L1lDaU9aR21HQ1hFZ1JtVWdCNUdjZEcwS1FBNGdGYUlmQXB0d3lBa2NBTWREUlpjTEVKL1FTWUZKcUJDUXlFSjBPMVNva0ROS1FrZFFjTTgxUlNFUXRBZ0NDVE42VHEvYjc5c0lBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFSUWNNbEpxNzA0NjgyNy8yQW9qbVJwaGdaeUVJbVdydTBwenlFQzNJZVEyYmhPLzhETDRYWUxaSVpFWTNBWkpCQVBoWXdURjJWYVp3bkFrS0RJRkpEY3EvZ2tDQlM2bW5JQ1BXNjczL0Q0TlFJQUlma0VDQWtBQUFBc0FBQUFBRzRBQ2dDRHRMSzAzTnJjOVBMMHhNTEV2TDY4NU9May9Qcjh0TGEwek03TTVPYmsvUDc4Ly8vL0FBQUFBQUFBQUFBQUFBQUFCRk53eVVtcnZUanJ6YnYvWUNpT1pHbUtDWEVneG1nZ0I1R2NkSTBKUUE0Z0k2SWZBcHZRRmpnQWpJZVJMaGNZT2syRkpXRkVPQjRMejZ4SW9Uck9VRHFDUWt2K0tBcUJJRWtRU0l6TDhMaDhUbjlHQUFBaCtRUUlDUUFBQUN3QUFBQUFiZ0FLQUlPMHNyVGMydHowOHZURXdzUzh2cnprNHVUOCt2eTB0clRNenN6azV1VDgvdnovLy84QUFBQUFBQUFBQUFBQUFBQUVVSERKU2F1OU9Pdk51LzlnS0k1a2FZb0djaERKdWFWcjY4NGdBdHlIUUY4MnJ1L0F6T0YyQ3dRcFE2THh5SndRaUlkQ2MvSEVTYWZNQkdCSVVFd0x5UzYyS1FnVXZOaHlBajF1dTkvd09DWUNBQ0g1QkFnSkFBQUFMQUFBQUFCdUFBb0FnN1N5dE56YTNQVHk5TVRDeEx5K3ZPVGk1UHo2L0xTMnRNek96T1RtNVB6Ky9QLy8vd0FBQUFBQUFBQUFBQUFBQUFRK2NNbEpxNzA0NjgyNy8yQW9qbVJwamdseElNYnB2ckFsQURTQXhIaE9CZ2ZRSDdxZ2NGT29BUWpEcEZLaVVQa1N5NmhRVVFnSXBOaXNkc3NOUmdBQUlma0VDQWtBQUFBc0FBQUFBRzRBQ2dDRHRMSzAzTnJjOVBMMHhNTEV2TDY4NU9May9Qcjh0TGEwek03TTVPYmsvUDc4Ly8vL0FBQUFBQUFBQUFBQUFBQUFCRDV3eVVtcnZUanJ6YnYvWUNpT1pHbWVTMEljaUlHK2NDd0pRQTBnY3E2SHdRSDRoNTF3aUNuWUFBU2lVcWxZL1JMTHFGQlJDQWlrMkt4Mnk0VkZBQUFoK1FRSUNRQUFBQ3dBQUFBQWJnQUtBSU8wc3JUYzJ0ejA4dlRFd3NTOHZyems0dVQ4K3Z5MHRyVE16c3prNXVUOC92ei8vLzhBQUFBQUFBQUFBQUFBQUFBRVBuREpTYXU5T092TnUvOWdLSTVrYVo1YlFoeUlnYjV3TEFsQURTQnlyb2ZCQWZpSG5YQ0lLZGdBQktKU3FWajlFc3VvVUZFSUNLVFlySGJMQlVVQUFDSDVCQWdKQUFBQUxBQUFBQUJ1QUFvQWc3U3l0TnphM1BUeTlNVEN4THkrdk9UaTVQejYvTFMydE16T3pPVG01UHorL1AvLy93QUFBQUFBQUFBQUFBQUFBQVErY01sSnE3MDQ2ODI3LzJBb2ptUnBucWlVRUFkaXBIQU1DMEFOSUhLdWg4RUIrSWVkY0lncDJBQUVvbEtwWVAwU3k2aFFVUWdJcE5pc2RzdGRSQUFBSWZrRUNBa0FBQUFzQUFBQUFHNEFDZ0NEdExLMDNOcmM5UEwweE1MRXZMNjg1T0xrL1ByOHRMYTB6TTdNNU9iay9QNzgvLy8vQUFBQUFBQUFBQUFBQUFBQUJEMXd5VW1ydlRqcnpidi9ZQ2lPWkdtZXFKa1FCMktrY0F3TFFBMGdjcTZId1FINGg1MXdpQ25ZQUFTaVVxbGcvUkxMcUZCUkNBaWsyS3gyaTRvQUFEcz1cIixcbiAgICAgICAgICAgIGFkdmFuY2VkX2xvYWQ6IGZhbHNlLFxuICAgICAgICAgICAgd2ViUF9sb2FkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzX3NjYWxlOiBmYWxzZSxcbiAgICAgICAgICAgIHNjYWxlX3dpZHRoOiA3NTBcbiAgICAgICAgfTtcblxuICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgICAgICAgICB2YXIgY291bnRlciA9IDA7XG5cbiAgICAgICAgICAgIGVsZW1lbnRzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3Muc2tpcF9pbnZpc2libGUgJiYgISR0aGlzLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoJC5hYm92ZXRoZXRvcCh0aGlzLCBzZXR0aW5ncykgfHxcbiAgICAgICAgICAgICAgICAgICAgJC5sZWZ0b2ZiZWdpbih0aGlzLCBzZXR0aW5ncykpIHtcbiAgICAgICAgICAgICAgICAgICAgLyogTm90aGluZy4gKi9cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEkLmJlbG93dGhlZm9sZCh0aGlzLCBzZXR0aW5ncykgJiZcbiAgICAgICAgICAgICAgICAgICAgISQucmlnaHRvZmZvbGQodGhpcywgc2V0dGluZ3MpKSB7XG4gICAgICAgICAgICAgICAgICAgICR0aGlzLnRyaWdnZXIoXCJhcHBlYXJcIik7XG4gICAgICAgICAgICAgICAgICAgIC8qIGlmIHdlIGZvdW5kIGFuIGltYWdlIHdlJ2xsIGxvYWQsIHJlc2V0IHRoZSBjb3VudGVyICovXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgrK2NvdW50ZXIgPiBzZXR0aW5ncy5mYWlsdXJlX2xpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8qIE1haW50YWluIEJDIGZvciBhIGNvdXBsZSBvZiB2ZXJzaW9ucy4gKi9cbiAgICAgICAgICAgIGlmICh1bmRlZmluZWQgIT09IG9wdGlvbnMuZmFpbHVyZWxpbWl0KSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5mYWlsdXJlX2xpbWl0ID0gb3B0aW9ucy5mYWlsdXJlbGltaXQ7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnMuZmFpbHVyZWxpbWl0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVuZGVmaW5lZCAhPT0gb3B0aW9ucy5lZmZlY3RzcGVlZCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZWZmZWN0X3NwZWVkID0gb3B0aW9ucy5lZmZlY3RzcGVlZDtcbiAgICAgICAgICAgICAgICBkZWxldGUgb3B0aW9ucy5lZmZlY3RzcGVlZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJC5leHRlbmQoc2V0dGluZ3MsIG9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogQ2FjaGUgY29udGFpbmVyIGFzIGpRdWVyeSBhcyBvYmplY3QuICovXG4gICAgICAgICRjb250YWluZXIgPSAoc2V0dGluZ3MuY29udGFpbmVyID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIHNldHRpbmdzLmNvbnRhaW5lciA9PT0gd2luZG93KSA/ICR3aW5kb3cgOiAkKHNldHRpbmdzLmNvbnRhaW5lcik7XG5cbiAgICAgICAgLyogRmlyZSBvbmUgc2Nyb2xsIGV2ZW50IHBlciBzY3JvbGwuIE5vdCBvbmUgc2Nyb2xsIGV2ZW50IHBlciBpbWFnZS4gKi9cbiAgICAgICAgaWYgKDAgPT09IHNldHRpbmdzLmV2ZW50LmluZGV4T2YoXCJzY3JvbGxcIikpIHtcbiAgICAgICAgICAgICRjb250YWluZXIuYmluZChzZXR0aW5ncy5ldmVudCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+a7muWKqOS6hjExMScpO1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfmu5rliqgnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIHZhciAkc2VsZiA9ICQoc2VsZik7XG5cbiAgICAgICAgICAgIHNlbGYubG9hZGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8qIElmIG5vIHNyYyBhdHRyaWJ1dGUgZ2l2ZW4gdXNlIGRhdGE6dXJpLiAqL1xuICAgICAgICAgICAgaWYgKCRzZWxmLmF0dHIoXCJzcmNcIikgPT09IHVuZGVmaW5lZCB8fCAkc2VsZi5hdHRyKFwic3JjXCIpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGlmICgkc2VsZi5pcyhcImltZ1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5hdHRyKFwic3JjXCIsIHNldHRpbmdzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuYWRkQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyogV2hlbiBhcHBlYXIgaXMgdHJpZ2dlcmVkIGxvYWQgb3JpZ2luYWwgaW1hZ2UuICovXG5cbiAgICAgICAgICAgICRzZWxmLm9uZShcImFwcGVhclwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5hcHBlYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50c19sZWZ0ID0gZWxlbWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuYXBwZWFyLmNhbGwoc2VsZiwgZWxlbWVudHNfbGVmdCwgc2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciB1cGRhdGVkVXJsID0gJHNlbGYuYXR0cihcImRhdGEtXCIgKyBzZXR0aW5ncy5kYXRhX2F0dHJpYnV0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5hZHZhbmNlZF9sb2FkID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRVcmwgKz0gJyEnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5pc19zY2FsZSA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkVXJsICs9ICcvZncvJyArIHNldHRpbmdzLnNjYWxlX3dpZHRoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy53ZWJQX2xvYWQgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZFVybCArPSAnL2Zvcm1hdC93ZWJwJztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHVwZGF0ZWRVcmwpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiPGltZyAvPlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmJpbmQoXCJsb2FkXCIsIGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuaGlkZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxmLmlzKFwiaW1nXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmF0dHIoXCJzcmNcIiwgdXBkYXRlZFVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuY3NzKFwiYmFja2dyb3VuZC1pbWFnZVwiLCBcInVybCgnXCIgKyB1cGRhdGVkVXJsICsgXCInKVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGZbc2V0dGluZ3MuZWZmZWN0XShzZXR0aW5ncy5lZmZlY3Rfc3BlZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmVtb3ZlIGltYWdlIGZyb20gYXJyYXkgc28gaXQgaXMgbm90IGxvb3BlZCBuZXh0IHRpbWUuICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAkLmdyZXAoZWxlbWVudHMsIGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFlbGVtZW50LmxvYWRlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyA9ICQodGVtcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MubG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHNfbGVmdCA9IGVsZW1lbnRzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MubG9hZC5jYWxsKHNlbGYsIGVsZW1lbnRzX2xlZnQsIHNldHRpbmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKFwic3JjXCIsIHVwZGF0ZWRVcmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvKiBXaGVuIHdhbnRlZCBldmVudCBpcyB0cmlnZ2VyZWQgbG9hZCBvcmlnaW5hbCBpbWFnZSAqL1xuICAgICAgICAgICAgLyogYnkgdHJpZ2dlcmluZyBhcHBlYXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmICgwICE9PSBzZXR0aW5ncy5ldmVudC5pbmRleE9mKFwic2Nyb2xsXCIpKSB7XG4gICAgICAgICAgICAgICAgJHNlbGYuYmluZChzZXR0aW5ncy5ldmVudCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2VsZi5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLnRyaWdnZXIoXCJhcHBlYXJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLyogQ2hlY2sgaWYgc29tZXRoaW5nIGFwcGVhcnMgd2hlbiB3aW5kb3cgaXMgcmVzaXplZC4gKi9cbiAgICAgICAgJHdpbmRvdy5iaW5kKFwicmVzaXplXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qIFdpdGggSU9TNSBmb3JjZSBsb2FkaW5nIGltYWdlcyB3aGVuIG5hdmlnYXRpbmcgd2l0aCBiYWNrIGJ1dHRvbi4gKi9cbiAgICAgICAgLyogTm9uIG9wdGltYWwgd29ya2Fyb3VuZC4gKi9cbiAgICAgICAgaWYgKCgvKD86aXBob25lfGlwb2R8aXBhZCkuKm9zIDUvZ2kpLnRlc3QobmF2aWdhdG9yLmFwcFZlcnNpb24pKSB7XG4gICAgICAgICAgICAkd2luZG93LmJpbmQoXCJwYWdlc2hvd1wiLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW5hbEV2ZW50ICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQucGVyc2lzdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIoXCJhcHBlYXJcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogRm9yY2UgaW5pdGlhbCBjaGVjayBpZiBpbWFnZXMgc2hvdWxkIGFwcGVhci4gKi9cbiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8qIENvbnZlbmllbmNlIG1ldGhvZHMgaW4galF1ZXJ5IG5hbWVzcGFjZS4gICAgICAgICAgICovXG4gICAgLyogVXNlIGFzICAkLmJlbG93dGhlZm9sZChlbGVtZW50LCB7dGhyZXNob2xkIDogMTAwLCBjb250YWluZXIgOiB3aW5kb3d9KSAqL1xuXG4gICAgJC5iZWxvd3RoZWZvbGQgPSBmdW5jdGlvbihlbGVtZW50LCBzZXR0aW5ncykge1xuICAgICAgICB2YXIgZm9sZDtcblxuICAgICAgICBpZiAoc2V0dGluZ3MuY29udGFpbmVyID09PSB1bmRlZmluZWQgfHwgc2V0dGluZ3MuY29udGFpbmVyID09PSB3aW5kb3cpIHtcbiAgICAgICAgICAgIGZvbGQgPSAod2luZG93LmlubmVySGVpZ2h0ID8gd2luZG93LmlubmVySGVpZ2h0IDogJHdpbmRvdy5oZWlnaHQoKSkgKyAkd2luZG93LnNjcm9sbFRvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9sZCA9ICQoc2V0dGluZ3MuY29udGFpbmVyKS5vZmZzZXQoKS50b3AgKyAkKHNldHRpbmdzLmNvbnRhaW5lcikuaGVpZ2h0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9sZCA8PSAkKGVsZW1lbnQpLm9mZnNldCgpLnRvcCAtIHNldHRpbmdzLnRocmVzaG9sZDtcbiAgICB9O1xuXG4gICAgJC5yaWdodG9mZm9sZCA9IGZ1bmN0aW9uKGVsZW1lbnQsIHNldHRpbmdzKSB7XG4gICAgICAgIHZhciBmb2xkO1xuXG4gICAgICAgIGlmIChzZXR0aW5ncy5jb250YWluZXIgPT09IHVuZGVmaW5lZCB8fCBzZXR0aW5ncy5jb250YWluZXIgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgZm9sZCA9ICR3aW5kb3cud2lkdGgoKSArICR3aW5kb3cuc2Nyb2xsTGVmdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9sZCA9ICQoc2V0dGluZ3MuY29udGFpbmVyKS5vZmZzZXQoKS5sZWZ0ICsgJChzZXR0aW5ncy5jb250YWluZXIpLndpZHRoKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9sZCA8PSAkKGVsZW1lbnQpLm9mZnNldCgpLmxlZnQgLSBzZXR0aW5ncy50aHJlc2hvbGQ7XG4gICAgfTtcblxuICAgICQuYWJvdmV0aGV0b3AgPSBmdW5jdGlvbihlbGVtZW50LCBzZXR0aW5ncykge1xuICAgICAgICB2YXIgZm9sZDtcblxuICAgICAgICBpZiAoc2V0dGluZ3MuY29udGFpbmVyID09PSB1bmRlZmluZWQgfHwgc2V0dGluZ3MuY29udGFpbmVyID09PSB3aW5kb3cpIHtcbiAgICAgICAgICAgIGZvbGQgPSAkd2luZG93LnNjcm9sbFRvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9sZCA9ICQoc2V0dGluZ3MuY29udGFpbmVyKS5vZmZzZXQoKS50b3A7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9sZCA+PSAkKGVsZW1lbnQpLm9mZnNldCgpLnRvcCArIHNldHRpbmdzLnRocmVzaG9sZCArICQoZWxlbWVudCkuaGVpZ2h0KCk7XG4gICAgfTtcblxuICAgICQubGVmdG9mYmVnaW4gPSBmdW5jdGlvbihlbGVtZW50LCBzZXR0aW5ncykge1xuICAgICAgICB2YXIgZm9sZDtcblxuICAgICAgICBpZiAoc2V0dGluZ3MuY29udGFpbmVyID09PSB1bmRlZmluZWQgfHwgc2V0dGluZ3MuY29udGFpbmVyID09PSB3aW5kb3cpIHtcbiAgICAgICAgICAgIGZvbGQgPSAkd2luZG93LnNjcm9sbExlZnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvbGQgPSAkKHNldHRpbmdzLmNvbnRhaW5lcikub2Zmc2V0KCkubGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb2xkID49ICQoZWxlbWVudCkub2Zmc2V0KCkubGVmdCArIHNldHRpbmdzLnRocmVzaG9sZCArICQoZWxlbWVudCkud2lkdGgoKTtcbiAgICB9O1xuXG4gICAgJC5pbnZpZXdwb3J0ID0gZnVuY3Rpb24oZWxlbWVudCwgc2V0dGluZ3MpIHtcblxuICAgICAgICByZXR1cm4gISQucmlnaHRvZmZvbGQoZWxlbWVudCwgc2V0dGluZ3MpICYmICEkLmxlZnRvZmJlZ2luKGVsZW1lbnQsIHNldHRpbmdzKSAmJlxuICAgICAgICAgICAgISQuYmVsb3d0aGVmb2xkKGVsZW1lbnQsIHNldHRpbmdzKSAmJiAhJC5hYm92ZXRoZXRvcChlbGVtZW50LCBzZXR0aW5ncyk7XG4gICAgfTtcblxuICAgIC8qIEN1c3RvbSBzZWxlY3RvcnMgZm9yIHlvdXIgY29udmVuaWVuY2UuICAgKi9cbiAgICAvKiBVc2UgYXMgJChcImltZzpiZWxvdy10aGUtZm9sZFwiKS5zb21ldGhpbmcoKSBvciAqL1xuICAgIC8qICQoXCJpbWdcIikuZmlsdGVyKFwiOmJlbG93LXRoZS1mb2xkXCIpLnNvbWV0aGluZygpIHdoaWNoIGlzIGZhc3RlciAqL1xuXG4gICAgJC5leHRlbmQoJC5leHByW1wiOlwiXSwge1xuICAgICAgICBcImJlbG93LXRoZS1mb2xkXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAkLmJlbG93dGhlZm9sZChhLCB7XG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJhYm92ZS10aGUtdG9wXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAhJC5iZWxvd3RoZWZvbGQoYSwge1xuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFwicmlnaHQtb2Ytc2NyZWVuXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAkLnJpZ2h0b2Zmb2xkKGEsIHtcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBcImxlZnQtb2Ytc2NyZWVuXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAhJC5yaWdodG9mZm9sZChhLCB7XG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJpbi12aWV3cG9ydFwiOiBmdW5jdGlvbihhKSB7XG4gICAgICAgICAgICByZXR1cm4gJC5pbnZpZXdwb3J0KGEsIHtcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvKiBNYWludGFpbiBCQyBmb3IgY291cGxlIG9mIHZlcnNpb25zLiAqL1xuICAgICAgICBcImFib3ZlLXRoZS1mb2xkXCI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAhJC5iZWxvd3RoZWZvbGQoYSwge1xuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFwicmlnaHQtb2YtZm9sZFwiOiBmdW5jdGlvbihhKSB7XG4gICAgICAgICAgICByZXR1cm4gJC5yaWdodG9mZm9sZChhLCB7XG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJsZWZ0LW9mLWZvbGRcIjogZnVuY3Rpb24oYSkge1xuICAgICAgICAgICAgcmV0dXJuICEkLnJpZ2h0b2Zmb2xkKGEsIHtcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBHZW5lcmFsLmluaXQoKTtcbiAgICBJbWFnZVNtYXJ0TG9hZGVyLmluaXQoKTtcbiAgICBpZiAoJCgnYm9keScpLmhhc0NsYXNzKCdwb3N0LXRlbXBsYXRlJykpIHtcbiAgICAgICAgR2VuZXJhbC5hZGRJY29ucygpO1xuICAgICAgICBHZW5lcmFsLmNvbW1lbnRMb2FkZXIoKTtcbiAgICB9XG5cbn0pXG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= diff --git a/dev/js/base.js b/dev/js/base.js index 023c0f3..e96ce84 100644 --- a/dev/js/base.js +++ b/dev/js/base.js @@ -283,7 +283,7 @@ var General = { return false } else { console.log('增加评论'); - if (($('.author-image').isOnScreenVisible() || $($('.read-next').isOnScreenVisible())) && $('.author-image').hasClass('duoshuo-loaded') == false) { + if (($('.author-image').isOnScreenVisible() || $('.read-next').isOnScreenVisible()) && $('.author-image').hasClass('duoshuo-loaded') == false) { $('.author-image').addClass('duoshuo-loaded'); loadJS('https://static.duoshuo.com/embed.js', function() { var el = document.createElement('div'); diff --git a/post.hbs b/post.hbs index 638c380..b6c3a95 100644 --- a/post.hbs +++ b/post.hbs @@ -6,7 +6,7 @@ {{! Everything inside the #post tags pulls data from the post }} {{#post}} {{#if image}} - +