(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{"./js/app/common/views/NewDateFormat.js":function(e,t,n){var i;void 0===(i=function(){var e,t,n,i,r=(e=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,t=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,n=/[^-+\dA-Z]/g,i=function(e,t){for(e=String(e),t=t||2;e.length<t;)e="0"+e;return e},function(o,a,s){var c=r;if(1!=arguments.length||"[object String]"!=Object.prototype.toString.call(o)||/\d/.test(o)||(a=o,o=void 0),o=o?new Date(o):new Date,isNaN(o))throw SyntaxError("invalid date");"UTC:"==(a=String(c.masks[a]||a||c.masks.default)).slice(0,4)&&(a=a.slice(4),s=!0);var l=s?"getUTC":"get",u=o[l+"Date"](),d=o[l+"Day"](),f=o[l+"Month"](),h=o[l+"FullYear"](),g=o[l+"Hours"](),p=o[l+"Minutes"](),m=o[l+"Seconds"](),v=o[l+"Milliseconds"](),y=s?0:o.getTimezoneOffset(),k={d:u,dd:i(u),ddd:c.i18n.dayNames[d],dddd:c.i18n.dayNames[d+7],m:f+1,mm:i(f+1),mmm:c.i18n.monthNames[f],mmmm:c.i18n.monthNames[f+12],yy:String(h).slice(2),yyyy:h,h:g%12||12,hh:i(g%12||12),H:g,HH:i(g),M:p,MM:i(p),s:m,ss:i(m),l:i(v,3),L:i(v>99?Math.round(v/10):v),t:g<12?"a":"p",tt:g<12?"am":"pm",T:g<12?"A":"P",TT:g<12?"AM":"PM",Z:s?"UTC":(String(o).match(t)||[""]).pop().replace(n,""),o:(y>0?"-":"+")+i(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][u%10>3?0:(u%100-u%10!=10)*u%10]};return a.replace(e,(function(e){return e in k?k[e]:e.slice(1,e.length-1)}))});return r.masks={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"},r.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]},r}.apply(t,[]))||(e.exports=i)},"./js/app/common/views/NewDateRangeView.js":function(e,t,n){var i,r;i=[n("./node_modules/jquery/dist/jquery.js"),n("./node_modules/underscore/underscore.js"),n("./node_modules/custom-backbone/backbone-min.js"),n("./js/app/govinfo.js"),n("./js/app/utils.js"),n("./js/app/common/views/NewDateFormat.js")],void 0===(r=function(e,t,n,i,r,o){return i.BaseView.extend({template:"./common/templates/NewDateRangeViewSearch.html",events:{"change #dateRangeSelect":"dateRangeChanged"},initialize:function(e){i.BaseView.prototype.initialize.call(this,e),this.queryType="AD"},parseMMYYYY:function(e){var t=e.split("/");return 2==t.length?("DI"!==this.queryType&&t.splice(1,0,"01"),t.join("/")):e},getDateRange:function(e){var t={t:this.$("#dateRangeSelect").val()};if("AD"==t.t)return t.dateFrom=o(new Date,e||"mm-dd-yyyy"),t;if(this.$("#dateFrom").val()){var n=this.parseMMYYYY(this.$("#dateFrom").val()),i="mm-dd-yyyy",r=new Date(n);if("DI"===this.queryType){var a=n.split("/"),s=2===a.length,c=1===a.length;if(s){var l=parseInt(a[0],10)-1,u=parseInt(a[1],10);r=new Date(u,l),i="mm-yyyy"}else if(c){var d=parseInt(a[0],10);r=new Date(d,0),i="yyyy"}}var f=o(r,e||i);t.dateFrom=f}if(this.$("#dateTo").val()){var h=this.parseMMYYYY(this.$("#dateTo").val()),g=o(new Date(h),e||"mm-dd-yyyy");t.dateTo=g}return t},setDateRange:function(e){var t=e.dateFrom,n=e.dateTo;if(t){var i=(t=t.replace(/\-/g,"/")).split("/");1===i.length||2===i.length||(t=o(new Date(t),"mm/dd/yyyy"))}n&&(n=n.replace(/\-/g,"/"),n=o(new Date(n),"mm/dd/yyyy")),this.$("#dateFrom").val(t),this.$("#dateTo").val(n),this.$("#dateRangeSelect").val(e.t),this.dateRangeChanged()},getQueryString:function(){var e=new Date,t=o(e,"yyyy-mm-dd"),n=this.$("#dateFrom").val(),i=this.$("#dateTo").val(),r=!1;if(2==n.split("/").length)try{var a=n.split("/");r=!0,"DI"==this.queryType?a.splice(1,0,a.splice(0,1)):a.splice(1,0,"01"),n=a.join("/")}catch(e){return"null"}if(2==i.split("/").length)try{(a=i.split("/")).splice(1,0,"01"),i=a.join("/")}catch(e){return"null"}switch(this.queryType){case"AD":return"publishdate:range(,"+t+")";case"DI":try{var s=n,c=new Date(s);if(1==s.split("/").length)return"publishdate:"+s;if(2==s.split("/").length){var l=s.split("/"),u=parseInt(l[0],10),d=parseInt(l[1],10)-1;return"publishdate:"+o(new Date(u,d),"yyyy-mm")}return"publishdate:"+o(c,"yyyy-mm-dd")}catch(e){return"null"}break;case"DA":try{var f=n,h=new Date(f);return h=1==f.split("/").length?new Date(parseInt(f)+1,0,1):1==r?new Date(h.getFullYear(),h.getMonth()+1,1):new Date(h.getFullYear(),h.getMonth(),h.getDate()+1),"publishdate:range("+o(h,"yyyy-mm-dd")+",)"}catch(e){return"null"}break;case"DB":try{var g=n,p=new Date(g);return 3==g.split("/").length&&(p=new Date(p.getFullYear(),p.getMonth(),p.getDate()-1)),"publishdate:range(,"+o(p,"yyyy-mm-dd")+")"}catch(e){return"null"}break;case"DBT":try{var m=n,v=new Date(m);1==m.split("/").length&&(v=new Date(v.getFullYear()+1,0,1));var y=o(v,"yyyy-mm-dd"),k=i,C=new Date(k);return 1==k.split("/").length?C=new Date(C.getFullYear()+1,11,31):3==k.split("/").length&&1==r&&(C=new Date(C.getFullYear(),C.getMonth()+1,0)),"publishdate:range("+y+","+o(C,"yyyy-mm-dd")+")"}catch(e){return"null"}}return"publishdate:range("+e+","+e+")"},render:function(){this.$(".aswv-datepicker").datepicker({todayBtn:"linked",autoclose:!0,clearBtn:!0,orientation:"top auto",todayHighlight:!0}).on("show",(function(t){e(".datepicker").css("z-index","1041")})).on("changeDate",(function(t){e(this).datepicker("hide")})),this.$("#dateToContainer").hide(),this.$("#dateFromContainer").hide()},dateRangeChanged:function(e){switch(this.$("#dateRangeSelect").val()){case"AD":this.queryType="AD",this.$("#dateFromContainer").hide(),this.$("#dateToContainer").hide();break;case"DI":this.queryType="DI",this.$("#dateFromContainer").show(),this.$("#dateToContainer").hide();break;case"DA":this.queryType="DA",this.$("#dateFromContainer").show(),this.$("#dateToContainer").hide();break;case"DB":this.queryType="DB",this.$("#dateFromContainer").show(),this.$("#dateToContainer").hide();break;case"DBT":this.queryType="DBT",this.$("#dateFromContainer").show(),this.$("#dateToContainer").show()}}})}.apply(t,i))||(e.exports=r)},"./js/app/common/views/baseview.js":function(e,t,n){var i,r;i=[n("./node_modules/jquery/dist/jquery.js"),n("./node_modules/underscore/underscore.js"),n("./node_modules/custom-backbone/backbone-min.js"),n("./node_modules/text-loader/index.js!./js/app/common/templates/loadingspinner.html"),n("./node_modules/text-loader/index.js!./js/app/common/templates/blockingspinner.html"),n("./node_modules/text-loader/index.js!./js/app/common/templates/errornotificationpage.html"),n("./node_modules/text-loader/index.js!./js/app/common/templates/errornotificationsection.html")],void 0===(r=function(e,t,n,i,r,o,a){var s=function(e){this.spinnertemplate=t.template(i),this.blockingtemplate=t.template(r),this.errortemplatepage=t.template(o),this.errortemplatesection=t.template(a),n.View.call(this,e)};return t.extend(s.prototype,n.View.prototype,{close:function(){for(var i in this.closing&&this.closing(),void 0!==this.childViews&&t.each(this.childViews,(function(e){void 0!==e&&void 0!==this.$el&&e.close()})),void 0!==this.childViews2&&t.each(this.childViews2,(function(e){void 0!==e&&void 0!==this.$el&&e.close()})),this)this[i]instanceof n.View&&this[i].close();this.onClose&&this.onClose(),e(this).empty,this.unbind(),void 0!==this.$el&&(this.remove(),delete this.$el,delete this.el)},getParameter:function(e){var t=location.hash;if(0==t.length)return null;for(var n=t.substr(1).split("&"),i=0,r=n.length;i<r;i++){var o=n[i].split("=");if(o[0]==e)return o[1]}return null},setParameter:function(e,t){var n=location.hash;0==n.length&&(n="#");var i=n.substr(1).split("&");""==i[0]&&(i=[]);for(var r=!1,o=0,a=i.length;o<a;o++){if(i[o].split("=")[0]==e){i[o]=t?e+"="+t:"",r=!0;break}}!r&&t&&i.push(e+"="+t);var s=[];for(o=0,a=i.length;o<a;o++)i[o]&&s.push(i[o]);location.hash="#"+s.join("&")},getPageTitle:function(e){return"govinfo"},getAppBaseUrl:function(e){return e.substr(6)},getAppBaseUrlWOContext:function(e){return[window.location.protocol,"//",window.location.hostname,e].join("")},getmodelBaseUrl:function(e){return(e=[window.location.protocol,"//",window.location.hostname,e]).join("")},getLocationBaseUrl:function(){var e,t=document.createElement("a"),n=t.hostname;""===n?""===(e=t.href.split("?")[0])&&(e=window.location.href.split("?")[0]):e=[t.protocol,"//",n,t.pathname].join("");return e},getSpinnerTemplate:function(){return this.spinnertemplate},getBlockingTemplate:function(){return this.blockingtemplate},getErrorTemplatePage:function(){return this.errortemplatepage},getErrorTemplateSection:function(){return this.errortemplatesection}}),s.extend=n.View.extend,s}.apply(t,i))||(e.exports=r)},"./js/app/common/views/notificationview.js":function(e,t,n){var i,r;i=[n("./node_modules/jquery/dist/jquery.js"),n("./node_modules/underscore/underscore.js"),n("./node_modules/custom-backbone/backbone-min.js"),n("./js/app/common/views/baseview.js")],void 0===(r=function(e,t,n,i){return i.extend({targetElement:"#errorMessage",tagName:"div",className:"notification",automaticClose:!1,defaultMessages:{success:"Success!",error:"Sorry! An error occurred in the process",warning:"Are you sure you want to take this action?",information:"An unknown event occurred"},cssClasses:{success:"alert alert-success",error:"alert alert-danger",warning:"alert alert-warning",information:"alert alert-info"},events:{click:"closeNotification"},initialize:function(t){var n="information",i=this.defaultMessages[n],r=this.targetElement;t&&t.hasOwnProperty("type")&&(n=t.type),t&&t.hasOwnProperty("text")&&(i=t.text),t&&t.hasOwnProperty("target")&&(r=t.target),t&&t.hasOwnProperty("automaticClose")&&(this.automaticClose=t.automaticClose),0===e(r+":contains("+i+")").length&&this.render(n,i,r)},render:function(e,t,n){"No Results found."!=t&&"No Search Results found."!=t||(console.log('hack - switching "No Results found." error to info message'),e="information",t="No results available."),this.$el.addClass(this.cssClasses[e]),this.$el.text(t),this.$el.prependTo(n)}})}.apply(t,i))||(e.exports=r)},"./js/app/common/views/searchwidgetview.js":function(e,t,n){var i,r;i=[n("./node_modules/jquery/dist/jquery.js"),n("./node_modules/underscore/underscore.js"),n("./node_modules/custom-backbone/backbone-min.js"),n("./js/app/govinfo.js"),n("./js/app/utils.js"),n("./js/app/common/views/notificationview.js"),n("./js/app/search/views/simple/simplesearchview.js"),n("./js/app/search/views/advanced/advancedsearchwidgetview.js"),n("./js/app/search/views/citation/citationsearchwidgetview.js")],void 0===(r=function(e,t,n,i,r,o,a,s,c){return i.TabView.extend({Constructors:{SimpleSearchView:a,AdvancedSearchView:s,CitationSearchView:c},initialize:function(e){var t=location.href.substr((location.protocol+"//"+location.host).length);t=t.substr(0,4),this.isCustomApp="/app"==t,this.isCustomApp||(this.persistBy="root",this.useHash=!0,this.useState=!1,this.doNotleaveHistoryTrail=!0),i.TabView.prototype.initialize.call(this,e)},_change:function(e){switch(e){case"default":case"advanced":case"citation":break;default:e=null}i.TabView.prototype._change.call(this,e)},loadingTemplate:"./common/templates/searchwidget/Loading.html",template:"./common/templates/searchwidget/SearchWidgetView.html",renderView:function(e){i.TabView.prototype.renderView.call(this,e)}})}.apply(t,i))||(e.exports=r)},"./js/app/piwik.js":function(module,exports,__webpack_require__){(function(module,global){var __WEBPACK_AMD_DEFINE_RESULT__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}"object"!=("undefined"==typeof JSON2?"undefined":_typeof(JSON2))&&"object"==_typeof(window.JSON)&&window.JSON.stringify&&window.JSON.parse?JSON2=window.JSON:function(){var e={};(function(){function t(e,n){function r(e){if(r[e]!==m)return r[e];var t;if("bug-string-char-index"==e)t="a"!="a"[0];else if("json"==e)t=r("json-stringify")&&r("json-parse");else{var i,o='{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';if("json-stringify"==e){var c=n.stringify,u="function"==typeof c&&k;if(u){(i=function(){return 1}).toJSON=i;try{u="0"===c(0)&&"0"===c(new a)&&'""'==c(new s)&&c(y)===m&&c(m)===m&&c()===m&&"1"===c(i)&&"[1]"==c([i])&&"[null]"==c([m])&&"null"==c(null)&&"[null,null,null]"==c([m,y,null])&&c({a:[i,!0,!1,null,"\0\b\n\f\r\t"]})==o&&"1"===c(null,i)&&"[\n 1,\n 2\n]"==c([1,2],null,1)&&'"-271821-04-20T00:00:00.000Z"'==c(new l(-864e13))&&'"+275760-09-13T00:00:00.000Z"'==c(new l(864e13))&&'"-000001-01-01T00:00:00.000Z"'==c(new l(-621987552e5))&&'"1969-12-31T23:59:59.999Z"'==c(new l(-1))}catch(e){u=!1}}t=u}if("json-parse"==e){var d=n.parse;if("function"==typeof d)try{if(0===d("0")&&!d(!1)){var f=5==(i=d(o)).a.length&&1===i.a[0];if(f){try{f=!d('"\t"')}catch(e){}if(f)try{f=1!==d("01")}catch(e){}if(f)try{f=1!==d("1.")}catch(e){}}}}catch(e){f=!1}t=f}}return r[e]=!!t}e||(e=o.Object()),n||(n=o.Object());var a=e.Number||o.Number,s=e.String||o.String,c=e.Object||o.Object,l=e.Date||o.Date,u=e.SyntaxError||o.SyntaxError,d=e.TypeError||o.TypeError,f=e.Math||o.Math,h=e.JSON||o.JSON;"object"==_typeof(h)&&h&&(n.stringify=h.stringify,n.parse=h.parse);var g,p,m,v=c.prototype,y=v.toString,k=new l(-0xc782b5b800cec);try{k=-109252==k.getUTCFullYear()&&0===k.getUTCMonth()&&1===k.getUTCDate()&&10==k.getUTCHours()&&37==k.getUTCMinutes()&&6==k.getUTCSeconds()&&708==k.getUTCMilliseconds()}catch(e){}if(!r("json")){var C="[object Function]",T="[object Number]",b="[object String]",w="[object Array]",A=r("bug-string-char-index");if(!k)var N=f.floor,_=[0,31,59,90,120,151,181,212,243,273,304,334],S=function(e,t){return _[t]+365*(e-1970)+N((e-1969+(t=+(t>1)))/4)-N((e-1901+t)/100)+N((e-1601+t)/400)};if((g=v.hasOwnProperty)||(g=function(e){var t,n={};return(n.__proto__=null,n.__proto__={toString:1},n).toString!=y?g=function(e){var t=this.__proto__,n=e in(this.__proto__=null,this);return this.__proto__=t,n}:(t=n.constructor,g=function(e){var n=(this.constructor||t).prototype;return e in this&&!(e in n&&this[e]===n[e])}),n=null,g.call(this,e)}),p=function(e,t){var n,r,o,a=0;for(o in(n=function(){this.valueOf=0}).prototype.valueOf=0,r=new n)g.call(r,o)&&a++;return n=r=null,a?p=2==a?function(e,t){var n,i={},r=y.call(e)==C;for(n in e)r&&"prototype"==n||g.call(i,n)||!(i[n]=1)||!g.call(e,n)||t(n)}:function(e,t){var n,i,r=y.call(e)==C;for(n in e)r&&"prototype"==n||!g.call(e,n)||(i="constructor"===n)||t(n);(i||g.call(e,n="constructor"))&&t(n)}:(r=["valueOf","toString","toLocaleString","propertyIsEnumerable","isPrototypeOf","hasOwnProperty","constructor"],p=function(e,t){var n,o,a=y.call(e)==C,s=!a&&"function"!=typeof e.constructor&&i[_typeof(e.hasOwnProperty)]&&e.hasOwnProperty||g;for(n in e)a&&"prototype"==n||!s.call(e,n)||t(n);for(o=r.length;n=r[--o];s.call(e,n)&&t(n));}),p(e,t)},!r("json-stringify")){var I={92:"\\\\",34:'\\"',8:"\\b",12:"\\f",10:"\\n",13:"\\r",9:"\\t"},D=function(e,t){return("000000"+(t||0)).slice(-e)},E=function(e){for(var t='"',n=0,i=e.length,r=!A||i>10,o=r&&(A?e.split(""):e);n<i;n++){var a=e.charCodeAt(n);switch(a){case 8:case 9:case 10:case 12:case 13:case 34:case 92:t+=I[a];break;default:if(a<32){t+="\\u00"+D(2,a.toString(16));break}t+=r?o[n]:e.charAt(n)}}return t+'"'},R=function e(t,n,i,r,o,a,s){var c,l,u,f,h,v,k,C,A,_,I,R,O,q,x,P;try{c=n[t]}catch(t){}if("object"==_typeof(c)&&c)if("[object Date]"!=(l=y.call(c))||g.call(c,"toJSON"))"function"==typeof c.toJSON&&(l!=T&&l!=b&&l!=w||g.call(c,"toJSON"))&&(c=c.toJSON(t));else if(c>-1/0&&c<1/0){if(S){for(h=N(c/864e5),u=N(h/365.2425)+1970-1;S(u+1,0)<=h;u++);for(f=N((h-S(u,0))/30.42);S(u,f+1)<=h;f++);h=1+h-S(u,f),k=N((v=(c%864e5+864e5)%864e5)/36e5)%24,C=N(v/6e4)%60,A=N(v/1e3)%60,_=v%1e3}else u=c.getUTCFullYear(),f=c.getUTCMonth(),h=c.getUTCDate(),k=c.getUTCHours(),C=c.getUTCMinutes(),A=c.getUTCSeconds(),_=c.getUTCMilliseconds();c=(u<=0||u>=1e4?(u<0?"-":"+")+D(6,u<0?-u:u):D(4,u))+"-"+D(2,f+1)+"-"+D(2,h)+"T"+D(2,k)+":"+D(2,C)+":"+D(2,A)+"."+D(3,_)+"Z"}else c=null;if(i&&(c=i.call(n,t,c)),null===c)return"null";if("[object Boolean]"==(l=y.call(c)))return""+c;if(l==T)return c>-1/0&&c<1/0?""+c:"null";if(l==b)return E(""+c);if("object"==_typeof(c)){for(q=s.length;q--;)if(s[q]===c)throw d();if(s.push(c),I=[],x=a,a+=o,l==w){for(O=0,q=c.length;O<q;O++)R=e(O,c,i,r,o,a,s),I.push(R===m?"null":R);P=I.length?o?"[\n"+a+I.join(",\n"+a)+"\n"+x+"]":"["+I.join(",")+"]":"[]"}else p(r||c,(function(t){var n=e(t,c,i,r,o,a,s);n!==m&&I.push(E(t)+":"+(o?" ":"")+n)})),P=I.length?o?"{\n"+a+I.join(",\n"+a)+"\n"+x+"}":"{"+I.join(",")+"}":"{}";return s.pop(),P}};n.stringify=function(e,t,n){var r,o,a,s;if(i[_typeof(t)]&&t)if((s=y.call(t))==C)o=t;else if(s==w){a={};for(var c,l=0,u=t.length;l<u;c=t[l++],((s=y.call(c))==b||s==T)&&(a[c]=1));}if(n)if((s=y.call(n))==T){if((n-=n%1)>0)for(r="",n>10&&(n=10);r.length<n;r+=" ");}else s==b&&(r=n.length<=10?n:n.slice(0,10));return R("",((c={})[""]=e,c),o,a,r,"",[])}}if(!r("json-parse")){var O,q,x=s.fromCharCode,P={92:"\\",34:'"',47:"/",98:"\b",116:"\t",110:"\n",102:"\f",114:"\r"},j=function(){throw O=q=null,u()},V=function(){for(var e,t,n,i,r,o=q,a=o.length;O<a;)switch(r=o.charCodeAt(O)){case 9:case 10:case 13:case 32:O++;break;case 123:case 125:case 91:case 93:case 58:case 44:return e=A?o.charAt(O):o[O],O++,e;case 34:for(e="@",O++;O<a;)if((r=o.charCodeAt(O))<32)j();else if(92==r)switch(r=o.charCodeAt(++O)){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:e+=P[r],O++;break;case 117:for(t=++O,n=O+4;O<n;O++)(r=o.charCodeAt(O))>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70||j();e+=x("0x"+o.slice(t,O));break;default:j()}else{if(34==r)break;for(r=o.charCodeAt(O),t=O;r>=32&&92!=r&&34!=r;)r=o.charCodeAt(++O);e+=o.slice(t,O)}if(34==o.charCodeAt(O))return O++,e;j();default:if(t=O,45==r&&(i=!0,r=o.charCodeAt(++O)),r>=48&&r<=57){for(48==r&&((r=o.charCodeAt(O+1))>=48&&r<=57)&&j(),i=!1;O<a&&((r=o.charCodeAt(O))>=48&&r<=57);O++);if(46==o.charCodeAt(O)){for(n=++O;n<a&&((r=o.charCodeAt(n))>=48&&r<=57);n++);n==O&&j(),O=n}if(101==(r=o.charCodeAt(O))||69==r){for(43!=(r=o.charCodeAt(++O))&&45!=r||O++,n=O;n<a&&((r=o.charCodeAt(n))>=48&&r<=57);n++);n==O&&j(),O=n}return+o.slice(t,O)}if(i&&j(),"true"==o.slice(O,O+4))return O+=4,!0;if("false"==o.slice(O,O+5))return O+=5,!1;if("null"==o.slice(O,O+4))return O+=4,null;j()}return"$"},U=function(e,t,n){var i=H(e,t,n);i===m?delete e[t]:e[t]=i},H=function(e,t,n){var i,r=e[t];if("object"==_typeof(r)&&r)if(y.call(r)==w)for(i=r.length;i--;)U(r,i,n);else p(r,(function(e){U(r,e,n)}));return n.call(e,t,r)};n.parse=function(e,t){var n,i;return O=0,q=""+e,n=function e(t){var n,i;if("$"==t&&j(),"string"==typeof t){if("@"==(A?t.charAt(0):t[0]))return t.slice(1);if("["==t){for(n=[];"]"!=(t=V());i||(i=!0))i&&(","==t?"]"==(t=V())&&j():j()),","==t&&j(),n.push(e(t));return n}if("{"==t){for(n={};"}"!=(t=V());i||(i=!0))i&&(","==t?"}"==(t=V())&&j():j()),","!=t&&"string"==typeof t&&"@"==(A?t.charAt(0):t[0])&&":"==V()||j(),n[t.slice(1)]=e(V());return n}j()}return t}(V()),"$"!=V()&&j(),O=q=null,t&&y.call(t)==C?H(((i={})[""]=n,i),"",t):n}}}return n.runInContext=t,n}var n=__webpack_require__("./node_modules/webpack/buildin/amd-options.js"),i={function:!0,object:!0},r=i[_typeof(e)]&&e&&!e.nodeType&&e,o=i["undefined"==typeof window?"undefined":_typeof(window)]&&window||this,a=r&&i[_typeof(module)]&&module&&!module.nodeType&&"object"==(void 0===global?"undefined":_typeof(global))&&global;if(!a||a.global!==a&&a.window!==a&&a.self!==a||(o=a),r&&!n)t(o,r);else{var s=o.JSON,c=o.JSON3,l=!1,u=t(o,o.JSON3={noConflict:function(){return l||(l=!0,o.JSON=s,o.JSON3=c,s=c=null),u}});o.JSON={parse:u.parse,stringify:u.stringify}}n&&(void 0===(__WEBPACK_AMD_DEFINE_RESULT__=function(){return u}.call(exports,__webpack_require__,exports,module))||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}).call(this),JSON2=e}(),"object"!=("undefined"==typeof _paq?"undefined":_typeof(_paq))&&(_paq=[]),"object"!=("undefined"==typeof Piwik?"undefined":_typeof(Piwik))&&(Piwik=function(){"use strict";function safeDecodeWrapper(e){try{return decodeWrapper(e)}catch(t){return unescape(e)}}function isDefined(e){return"undefined"!==_typeof(e)}function isFunction(e){return"function"==typeof e}function isObject(e){return"object"==_typeof(e)}function isString(e){return"string"==typeof e||e instanceof String}function apply(){var e,t,n;for(e=0;e<arguments.length;e+=1)isString(t=(n=arguments[e]).shift())?asyncTracker[t].apply(asyncTracker,n):t.apply(asyncTracker,n)}function addEventListener(e,t,n,i){return e.addEventListener?(e.addEventListener(t,n,i),!0):e.attachEvent?e.attachEvent("on"+t,n):void(e["on"+t]=n)}function executePluginMethod(e,t){var n,i,r="";for(n in plugins)Object.prototype.hasOwnProperty.call(plugins,n)&&(isFunction(i=plugins[n][e])&&(r+=i(t)));return r}function beforeUnloadHandler(){var e;if(executePluginMethod("unload"),expireDateTime)do{e=new Date}while(e.getTimeAlias()<expireDateTime)}function loadHandler(){var e;if(!hasLoaded)for(hasLoaded=!0,executePluginMethod("load"),e=0;e<registeredOnLoadHandlers.length;e++)registeredOnLoadHandlers[e]();return!0}function addReadyListener(){var e;documentAlias.addEventListener?addEventListener(documentAlias,"DOMContentLoaded",(function e(){documentAlias.removeEventListener("DOMContentLoaded",e,!1),loadHandler()})):documentAlias.attachEvent&&(documentAlias.attachEvent("onreadystatechange",(function e(){"complete"===documentAlias.readyState&&(documentAlias.detachEvent("onreadystatechange",e),loadHandler())})),documentAlias.documentElement.doScroll&&windowAlias===windowAlias.top&&function e(){if(!hasLoaded){try{documentAlias.documentElement.doScroll("left")}catch(t){return void setTimeout(e,0)}loadHandler()}}()),new RegExp("WebKit").test(navigatorAlias.userAgent)&&(e=setInterval((function(){(hasLoaded||/loaded|complete/.test(documentAlias.readyState))&&(clearInterval(e),loadHandler())}),10)),addEventListener(windowAlias,"load",loadHandler,!1)}function loadScript(e,t){var n=documentAlias.createElement("script");n.type="text/javascript",n.src=e,n.readyState?n.onreadystatechange=function(){var e=this.readyState;"loaded"!==e&&"complete"!==e||(n.onreadystatechange=null,t())}:n.onload=t,documentAlias.getElementsByTagName("head")[0].appendChild(n)}function getReferrer(){var e="";try{e=windowAlias.top.document.referrer}catch(t){if(windowAlias.parent)try{e=windowAlias.parent.document.referrer}catch(t){e=""}}return""===e&&(e=documentAlias.referrer),e}function getProtocolScheme(e){var t=new RegExp("^([a-z]+):").exec(e);return t?t[1]:null}function getHostName(e){var t=new RegExp("^(?:(?:https?|ftp):)/*(?:[^@]+@)?([^:/#]+)").exec(e);return t?t[1]:e}function getParameter(e,t){var n=new RegExp("[\\?&#]"+t+"=([^&#]*)").exec(e);return n?decodeWrapper(n[1]):""}function utf8_encode(e){return unescape(encodeWrapper(e))}function sha1(e){var t,n,i,r,o,a,s,c,l,u,d=function(e,t){return e<<t|e>>>32-t},f=function(e){var t,n="";for(t=7;t>=0;t--)n+=(e>>>4*t&15).toString(16);return n},h=[],g=1732584193,p=4023233417,m=2562383102,v=271733878,y=3285377520,k=[];for(u=(e=utf8_encode(e)).length,n=0;n<u-3;n+=4)i=e.charCodeAt(n)<<24|e.charCodeAt(n+1)<<16|e.charCodeAt(n+2)<<8|e.charCodeAt(n+3),k.push(i);switch(3&u){case 0:n=2147483648;break;case 1:n=e.charCodeAt(u-1)<<24|8388608;break;case 2:n=e.charCodeAt(u-2)<<24|e.charCodeAt(u-1)<<16|32768;break;case 3:n=e.charCodeAt(u-3)<<24|e.charCodeAt(u-2)<<16|e.charCodeAt(u-1)<<8|128}for(k.push(n);14!=(15&k.length);)k.push(0);for(k.push(u>>>29),k.push(u<<3&4294967295),t=0;t<k.length;t+=16){for(n=0;n<16;n++)h[n]=k[t+n];for(n=16;n<=79;n++)h[n]=d(h[n-3]^h[n-8]^h[n-14]^h[n-16],1);for(r=g,o=p,a=m,s=v,c=y,n=0;n<=19;n++)l=d(r,5)+(o&a|~o&s)+c+h[n]+1518500249&4294967295,c=s,s=a,a=d(o,30),o=r,r=l;for(n=20;n<=39;n++)l=d(r,5)+(o^a^s)+c+h[n]+1859775393&4294967295,c=s,s=a,a=d(o,30),o=r,r=l;for(n=40;n<=59;n++)l=d(r,5)+(o&a|o&s|a&s)+c+h[n]+2400959708&4294967295,c=s,s=a,a=d(o,30),o=r,r=l;for(n=60;n<=79;n++)l=d(r,5)+(o^a^s)+c+h[n]+3395469782&4294967295,c=s,s=a,a=d(o,30),o=r,r=l;g=g+r&4294967295,p=p+o&4294967295,m=m+a&4294967295,v=v+s&4294967295,y=y+c&4294967295}return(l=f(g)+f(p)+f(m)+f(v)+f(y)).toLowerCase()}function urlFixup(e,t,n){return"translate.googleusercontent.com"===e?(""===n&&(n=t),e=getHostName(t=getParameter(t,"u"))):"cc.bingj.com"!==e&&"webcache.googleusercontent.com"!==e&&"74.6."!==e.slice(0,5)||(e=getHostName(t=documentAlias.links[0].href)),[e,t,n]}function domainFixup(e){var t=e.length;return"."===e.charAt(--t)&&(e=e.slice(0,t)),"*."===e.slice(0,2)&&(e=e.slice(1)),e}function titleFixup(e){if(!isString(e=e&&e.text?e.text:e)){var t=documentAlias.getElementsByTagName("title");t&&isDefined(t[0])&&(e=t[0].text)}return e}function getChildrenFromNode(e){return e&&(!isDefined(e.children)&&isDefined(e.childNodes)||isDefined(e.children))?e.children:[]}function containsNodeElement(e,t){return!(!e||!t)&&(e.contains?e.contains(t):e===t||!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t)))}function indexOfArray(e,t){if(e&&e.indexOf)return e.indexOf(t);if(!isDefined(e)||null===e)return-1;if(!e.length)return-1;var n=e.length;if(0===n)return-1;for(var i=0;i<n;){if(e[i]===t)return i;i++}return-1}function isVisible(e){function t(e,t){return windowAlias.getComputedStyle?documentAlias.defaultView.getComputedStyle(e,null)[t]:e.currentStyle?e.currentStyle[t]:void 0}return!!e&&function n(i,r,o,a,s,c,l){var u=i.parentNode;return!!function(e){for(e=e.parentNode;e;){if(e===documentAlias)return!0;e=e.parentNode}return!1}(i)&&(9===u.nodeType||"0"!==t(i,"opacity")&&"none"!==t(i,"display")&&"hidden"!==t(i,"visibility")&&(isDefined(r)&&isDefined(o)&&isDefined(a)&&isDefined(s)&&isDefined(c)&&isDefined(l)||(r=i.offsetTop,s=i.offsetLeft,a=r+i.offsetHeight,o=s+i.offsetWidth,c=i.offsetWidth,l=i.offsetHeight),(e!==i||0!==l&&0!==c||"hidden"!==t(i,"overflow"))&&(!u||("hidden"!==t(u,"overflow")&&"scroll"!==t(u,"overflow")||!(s+1>u.offsetWidth+u.scrollLeft||s+c-1<u.scrollLeft||r+1>u.offsetHeight+u.scrollTop||r+l-1<u.scrollTop))&&(i.offsetParent===u&&(s+=u.offsetLeft,r+=u.offsetTop),n(u,r,o,a,s,c,l)))))}(e)}function getPiwikUrlForOverlay(e,t){return t||("piwik.php"===e.slice(-9)&&(e=e.slice(0,e.length-9)),e)}function isOverlaySession(e){var t="Piwik_Overlay",n=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)$").exec(documentAlias.referrer);if(n){if(n[1]!==String(e))return!1;var i=n[2],r=n[3];windowAlias.name=t+"###"+i+"###"+r}var o=windowAlias.name.split("###");return 3===o.length&&o[0]===t}function injectOverlayScripts(e,t,n){var i=windowAlias.name.split("###"),r=i[1],o=i[2],a=getPiwikUrlForOverlay(e,t);loadScript(a+"plugins/Overlay/client/client.js?v=1",(function(){Piwik_Overlay_Client.initialize(a,n,r,o)}))}function Tracker(trackerUrl,siteId){function setCookie(e,t,n,i,r,o){var a;configCookiesDisabled||(n&&(a=new Date).setTime(a.getTime()+n),documentAlias.cookie=e+"="+encodeWrapper(t)+(n?";expires="+a.toGMTString():"")+";path="+(i||"/")+(r?";domain="+r:"")+(o?";secure":""))}function getCookie(e){if(configCookiesDisabled)return 0;var t=new RegExp("(^|;)[ ]*"+e+"=([^;]*)").exec(documentAlias.cookie);return t?decodeWrapper(t[2]):0}function purify(e){var t;return configDiscardHashTag?(t=new RegExp("#.*"),e.replace(t,"")):e}function resolveRelativeReference(e,t){var n;return getProtocolScheme(t)?t:"/"===t.slice(0,1)?getProtocolScheme(e)+"://"+getHostName(e)+t:((n=(e=purify(e)).indexOf("?"))>=0&&(e=e.slice(0,n)),(n=e.lastIndexOf("/"))!==e.length-1&&(e=e.slice(0,n+1)),e+t)}function isSiteHostName(e){var t,n,i;for(t=0;t<configHostsAlias.length;t++){if(e===(n=domainFixup(configHostsAlias[t].toLowerCase())))return!0;if("."===n.slice(0,1)){if(e===n.slice(1))return!0;if((i=e.length-n.length)>0&&e.slice(i)===n)return!0}}return!1}function getImage(e,t){var n=new Image(1,1);n.onload=function(){iterator=0,"function"==typeof t&&t()},n.src=configTrackerUrl+(configTrackerUrl.indexOf("?")<0?"?":"&")+e}function sendXmlHttpRequest(e,t,n){isDefined(n)&&null!==n||(n=!0);try{var i=windowAlias.XMLHttpRequest?new windowAlias.XMLHttpRequest:windowAlias.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;i.open("POST",configTrackerUrl,!0),i.onreadystatechange=function(){4!==this.readyState||this.status>=200&&this.status<300||!n?"function"==typeof t&&t():getImage(e,t)},i.setRequestHeader("Content-Type",configRequestContentType),i.send(e)}catch(i){n&&getImage(e,t)}}function setExpireDateTime(e){var t=(new Date).getTime()+e;(!expireDateTime||t>expireDateTime)&&(expireDateTime=t)}function heartBeatUp(e){!heartBeatTimeout&&configHeartBeatDelay&&(heartBeatTimeout=setTimeout((function(){if(heartBeatTimeout=null,!heartBeatPingIfActivityAlias()){var e=new Date,t=configHeartBeatDelay-(e.getTime()-lastTrackerRequestTime);heartBeatUp(t=Math.min(configHeartBeatDelay,t))}}),e||configHeartBeatDelay))}function heartBeatDown(){heartBeatTimeout&&(clearTimeout(heartBeatTimeout),heartBeatTimeout=null)}function heartBeatOnFocus(){heartBeatPingIfActivityAlias()||heartBeatUp()}function heartBeatOnBlur(){heartBeatDown()}function setUpHeartBeat(){!heartBeatSetUp&&configHeartBeatDelay&&(heartBeatSetUp=!0,addEventListener(windowAlias,"focus",heartBeatOnFocus),addEventListener(windowAlias,"blur",heartBeatOnBlur),heartBeatUp())}function makeSureThereIsAGapAfterFirstTrackingRequestToPreventMultipleVisitorCreation(e){var t=(new Date).getTime();if(lastTrackerRequestTime=t,timeNextTrackingRequestCanBeExecutedImmediately&&t<timeNextTrackingRequestCanBeExecutedImmediately){var n=timeNextTrackingRequestCanBeExecutedImmediately-t;return setTimeout(e,n),setExpireDateTime(n+50),void(timeNextTrackingRequestCanBeExecutedImmediately+=50)}if(!1===timeNextTrackingRequestCanBeExecutedImmediately){timeNextTrackingRequestCanBeExecutedImmediately=t+800}e()}function sendRequest(e,t,n){!configDoNotTrack&&e&&makeSureThereIsAGapAfterFirstTrackingRequestToPreventMultipleVisitorCreation((function(){"POST"===configRequestMethod?sendXmlHttpRequest(e,n):getImage(e,n),setExpireDateTime(t)})),heartBeatSetUp?heartBeatUp():setUpHeartBeat()}function canSendBulkRequest(e){return!configDoNotTrack&&e&&e.length}function sendBulkRequest(e,t){if(canSendBulkRequest(e)){var n='{"requests":["?'+e.join('","?')+'"]}';makeSureThereIsAGapAfterFirstTrackingRequestToPreventMultipleVisitorCreation((function(){sendXmlHttpRequest(n,null,!1),setExpireDateTime(t)}))}}function getCookieName(e){return configCookieNamePrefix+e+"."+configTrackerSiteId+"."+domainHash}function hasCookies(){if(configCookiesDisabled)return"0";if(!isDefined(navigatorAlias.cookieEnabled)){var e=getCookieName("testcookie");return setCookie(e,"1"),"1"===getCookie(e)?"1":"0"}return navigatorAlias.cookieEnabled?"1":"0"}function updateDomainHash(){domainHash=hash((configCookieDomain||domainAlias)+(configCookiePath||"/")).slice(0,4)}function getCustomVariablesFromCookie(){var e=getCookie(getCookieName("cvar"));return e.length&&isObject(e=JSON2.parse(e))?e:{}}function loadCustomVariables(){!1===customVariables&&(customVariables=getCustomVariablesFromCookie())}function generateRandomUuid(){return hash((navigatorAlias.userAgent||"")+(navigatorAlias.platform||"")+JSON2.stringify(browserFeatures)+(new Date).getTime()+Math.random()).slice(0,16)}function loadVisitorIdCookie(){var e,t=new Date,n=Math.round(t.getTime()/1e3),i=getCookie(getCookieName("id"));return i?((e=i.split(".")).unshift("0"),visitorUUID.length&&(e[1]=visitorUUID),e):e=["1",visitorUUID.length?visitorUUID:"0"===hasCookies()?"":generateRandomUuid(),n,0,n,"",""]}function getValuesFromVisitorIdCookie(){var e=loadVisitorIdCookie(),t=e[0],n=e[1],i=e[2],r=e[3],o=e[4],a=e[5];return isDefined(e[6])||(e[6]=""),{newVisitor:t,uuid:n,createTs:i,visitCount:r,currentVisitTs:o,lastVisitTs:a,lastEcommerceOrderTs:e[6]}}function getRemainingVisitorCookieTimeout(){var e=(new Date).getTime(),t=getValuesFromVisitorIdCookie().createTs;return 1e3*parseInt(t,10)+configVisitorCookieTimeout-e}function setVisitorIdCookie(e){if(configTrackerSiteId){var t=new Date,n=Math.round(t.getTime()/1e3);isDefined(e)||(e=getValuesFromVisitorIdCookie());var i=e.uuid+"."+e.createTs+"."+e.visitCount+"."+n+"."+e.lastVisitTs+"."+e.lastEcommerceOrderTs;setCookie(getCookieName("id"),i,getRemainingVisitorCookieTimeout(),configCookiePath,configCookieDomain)}}function loadReferrerAttributionCookie(){var e=getCookie(getCookieName("ref"));if(e.length)try{if(isObject(e=JSON2.parse(e)))return e}catch(e){}return["","",0,""]}function deleteCookie(e,t,n){setCookie(e,"",-86400,t,n)}function isPossibleToSetCookieOnDomain(e){var t="testvalue";return setCookie("test",t,1e4,null,e),getCookie("test")===t&&(deleteCookie("test",null,e),!0)}function _deleteCookies(){var e=configCookiesDisabled;configCookiesDisabled=!1;var t,n,i=["id","ses","cvar","ref"];for(t=0;t<i.length;t++)0!==getCookie(n=getCookieName(i[t]))&&deleteCookie(n,configCookiePath,configCookieDomain);configCookiesDisabled=e}function _setSiteId(e){configTrackerSiteId=e,setVisitorIdCookie()}function sortObjectByKeys(e){if(e&&isObject(e)){var t,n=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&n.push(t);var i={};n.sort();var r,o=n.length;for(r=0;r<o;r++)i[n[r]]=e[n[r]];return i}}function setSessionCookie(){setCookie(getCookieName("ses"),"*",configSessionCookieTimeout,configCookiePath,configCookieDomain)}function _getRequest(e,t,n,i){function r(e,t){var n=JSON2.stringify(e);return n.length>2?"&"+t+"="+encodeWrapper(n):""}var o,a,s,c,l,u,d,f=new Date,h=Math.round(f.getTime()/1e3),g=customVariables,p=getCookieName("ses"),m=getCookieName("ref"),v=getCookieName("cvar"),y=getCookie(p),k=loadReferrerAttributionCookie(),C=configCustomUrl||locationHrefAlias;if(configCookiesDisabled&&_deleteCookies(),configDoNotTrack)return"";var T=getValuesFromVisitorIdCookie();isDefined(i)||(i="");var b=documentAlias.characterSet||documentAlias.charset;if(b&&"utf-8"!==b.toLowerCase()||(b=null),u=k[0],d=k[1],a=k[2],s=k[3],!y){var w=configSessionCookieTimeout/1e3;if((!T.lastVisitTs||h-T.lastVisitTs>w)&&(T.visitCount++,T.lastVisitTs=T.currentVisitTs),!configConversionAttributionFirstReferrer||!u.length){for(o in configCampaignNameParameters)if(Object.prototype.hasOwnProperty.call(configCampaignNameParameters,o)&&(u=getParameter(C,configCampaignNameParameters[o])).length)break;for(o in configCampaignKeywordParameters)if(Object.prototype.hasOwnProperty.call(configCampaignKeywordParameters,o)&&(d=getParameter(C,configCampaignKeywordParameters[o])).length)break}c=getHostName(configReferrerUrl),l=s.length?getHostName(s):"",!c.length||isSiteHostName(c)||configConversionAttributionFirstReferrer&&l.length&&!isSiteHostName(l)||(s=configReferrerUrl),(s.length||u.length)&&(k=[u,d,a=h,purify(s.slice(0,1024))],setCookie(m,JSON2.stringify(k),configReferralCookieTimeout,configCookiePath,configCookieDomain))}for(o in e+="&idsite="+configTrackerSiteId+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+f.getHours()+"&m="+f.getMinutes()+"&s="+f.getSeconds()+"&url="+encodeWrapper(purify(C))+(configReferrerUrl.length?"&urlref="+encodeWrapper(purify(configReferrerUrl)):"")+(configUserId&&configUserId.length?"&uid="+encodeWrapper(configUserId):"")+"&_id="+T.uuid+"&_idts="+T.createTs+"&_idvc="+T.visitCount+"&_idn="+T.newVisitor+(u.length?"&_rcn="+encodeWrapper(u):"")+(d.length?"&_rck="+encodeWrapper(d):"")+"&_refts="+a+"&_viewts="+T.lastVisitTs+(String(T.lastEcommerceOrderTs).length?"&_ects="+T.lastEcommerceOrderTs:"")+(String(s).length?"&_ref="+encodeWrapper(purify(s.slice(0,1024))):"")+(b?"&cs="+encodeWrapper(b):"")+"&send_image=0",browserFeatures)Object.prototype.hasOwnProperty.call(browserFeatures,o)&&(e+="&"+o+"="+browserFeatures[o]);t?e+="&data="+encodeWrapper(JSON2.stringify(t)):configCustomData&&(e+="&data="+encodeWrapper(JSON2.stringify(configCustomData)));var A=sortObjectByKeys(customVariablesPage),N=sortObjectByKeys(customVariablesEvent);if(e+=r(A,"cvar"),e+=r(N,"e_cvar"),customVariables){for(o in e+=r(customVariables,"_cvar"),g)Object.prototype.hasOwnProperty.call(g,o)&&(""!==customVariables[o][0]&&""!==customVariables[o][1]||delete customVariables[o]);configStoreCustomVariablesInCookie&&setCookie(v,JSON2.stringify(customVariables),configSessionCookieTimeout,configCookiePath,configCookieDomain)}return configPerformanceTrackingEnabled&&(configPerformanceGenerationTime?e+=">_ms="+configPerformanceGenerationTime:performanceAlias&&performanceAlias.timing&&performanceAlias.timing.requestStart&&performanceAlias.timing.responseEnd&&(e+=">_ms="+(performanceAlias.timing.responseEnd-performanceAlias.timing.requestStart))),T.lastEcommerceOrderTs=isDefined(i)&&String(i).length?i:T.lastEcommerceOrderTs,setVisitorIdCookie(T),setSessionCookie(),e+=executePluginMethod(n),configAppendToTrackingUrl.length&&(e+="&"+configAppendToTrackingUrl),isFunction(configCustomRequestContentProcessing)&&(e=configCustomRequestContentProcessing(e)),e}function logEcommerce(e,t,n,i,r,o){var a,s,c="idgoal=0",l=new Date,u=[];if(String(e).length&&(c+="&ec_id="+encodeWrapper(e),a=Math.round(l.getTime()/1e3)),c+="&revenue="+t,String(n).length&&(c+="&ec_st="+n),String(i).length&&(c+="&ec_tx="+i),String(r).length&&(c+="&ec_sh="+r),String(o).length&&(c+="&ec_dt="+o),ecommerceItems){for(s in ecommerceItems)Object.prototype.hasOwnProperty.call(ecommerceItems,s)&&(isDefined(ecommerceItems[s][1])||(ecommerceItems[s][1]=""),isDefined(ecommerceItems[s][2])||(ecommerceItems[s][2]=""),isDefined(ecommerceItems[s][3])&&0!==String(ecommerceItems[s][3]).length||(ecommerceItems[s][3]=0),isDefined(ecommerceItems[s][4])&&0!==String(ecommerceItems[s][4]).length||(ecommerceItems[s][4]=1),u.push(ecommerceItems[s]));c+="&ec_items="+encodeWrapper(JSON2.stringify(u))}sendRequest(c=_getRequest(c,configCustomData,"ecommerce",a),configTrackerPause)}function logEcommerceOrder(e,t,n,i,r,o){String(e).length&&isDefined(t)&&logEcommerce(e,t,n,i,r,o)}function logEcommerceCartUpdate(e){isDefined(e)&&logEcommerce("",e,"","","","")}function logPageView(e,t){sendRequest((new Date,_getRequest("action_name="+encodeWrapper(titleFixup(e||configTitle)),t,"log")),configTrackerPause)}function getClassesRegExp(e,t){var n,i="(^| )(piwik[_-]"+t;if(e)for(n=0;n<e.length;n++)i+="|"+e[n];return i+=")( |$)",new RegExp(i)}function startsUrlWithTrackerUrl(e){return configTrackerUrl&&e&&0===String(e).indexOf(configTrackerUrl)}function getLinkType(e,t,n,i){if(startsUrlWithTrackerUrl(t))return 0;var r=getClassesRegExp(configDownloadClasses,"download"),o=getClassesRegExp(configLinkClasses,"link"),a=new RegExp("\\.("+configDownloadExtensions.join("|")+")([?&#]|$)","i");return o.test(e)?"link":i||r.test(e)||a.test(t)?"download":n?0:"link"}function getSourceElement(e){var t;for(t=e.parentNode;null!==t&&isDefined(t)&&!query.isLinkElement(e);)t=(e=t).parentNode;return e}function getLinkIfShouldBeProcessed(e){if((e=getSourceElement(e),query.hasNodeAttribute(e,"href")&&isDefined(e.href))&&!startsUrlWithTrackerUrl(query.getAttributeValueFromNode(e,"href"))){var t=e.hostname||getHostName(e.href),n=t.toLowerCase(),i=e.href.replace(t,n);if(!new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto):","i").test(i)){var r=getLinkType(e.className,i,isSiteHostName(n),query.hasNodeAttribute(e,"download"));if(r)return{type:r,href:i}}}}function buildContentInteractionRequest(e,t,n,i){var r=content.buildInteractionRequestParams(e,t,n,i);if(r)return _getRequest(r,null,"contentInteraction")}function buildContentInteractionTrackingRedirectUrl(e,t,n,i,r){if(isDefined(e)){if(startsUrlWithTrackerUrl(e))return e;var o=content.toAbsoluteUrl(e),a="redirecturl="+encodeWrapper(o)+"&";a+=buildContentInteractionRequest(t,n,i,r||e);var s="&";return configTrackerUrl.indexOf("?")<0&&(s="?"),configTrackerUrl+s+a}}function isNodeAuthorizedToTriggerInteraction(e,t){if(!e||!t)return!1;var n=content.findTargetNode(e);return!(content.shouldIgnoreInteraction(n)||(n=content.findTargetNodeNoDefault(e),n&&!containsNodeElement(n,t)))}function getContentInteractionToRequestIfPossible(e,t,n){if(e){var i=content.findParentContentNode(e);if(i&&isNodeAuthorizedToTriggerInteraction(i,e)){var r=content.buildContentBlock(i);if(r)return!r.target&&n&&(r.target=n),content.buildInteractionRequestParams(t,r.name,r.piece,r.target)}}}function wasContentImpressionAlreadyTracked(e){if(!trackedContentImpressions||!trackedContentImpressions.length)return!1;var t,n;for(t=0;t<trackedContentImpressions.length;t++)if((n=trackedContentImpressions[t])&&n.name===e.name&&n.piece===e.piece&&n.target===e.target)return!0;return!1}function replaceHrefIfInternalLink(e){if(!e)return!1;var t=content.findTargetNode(e);if(!t||content.shouldIgnoreInteraction(t))return!1;var n=getLinkIfShouldBeProcessed(t);if(linkTrackingEnabled&&n&&n.type)return!1;if(query.isLinkElement(t)&&query.hasNodeAttributeWithValue(t,"href")){var i=String(query.getAttributeValueFromNode(t,"href"));if(0===i.indexOf("#"))return!1;if(startsUrlWithTrackerUrl(i))return!0;if(!content.isUrlToCurrentDomain(i))return!1;var r=content.buildContentBlock(e);if(!r)return;var o=r.name,a=r.piece,s=r.target;query.hasNodeAttributeWithValue(t,content.CONTENT_TARGET_ATTR)&&!t.wasContentTargetAttrReplaced||(t.wasContentTargetAttrReplaced=!0,s=content.toAbsoluteUrl(i),query.setAnyAttribute(t,content.CONTENT_TARGET_ATTR,s));var c=buildContentInteractionTrackingRedirectUrl(i,"click",o,a,s);return content.setHrefAttribute(t,c),!0}return!1}function replaceHrefsIfInternalLink(e){var t;if(e&&e.length)for(t=0;t<e.length;t++)replaceHrefIfInternalLink(e[t])}function trackContentImpressionClickInteraction(e){return function(t){if(e){var n,i=content.findParentContentNode(e);if(t&&(n=t.target||t.srcElement),n||(n=e),isNodeAuthorizedToTriggerInteraction(i,n)){if(setExpireDateTime(configTrackerPause),query.isLinkElement(e)&&query.hasNodeAttributeWithValue(e,"href")&&query.hasNodeAttributeWithValue(e,content.CONTENT_TARGET_ATTR))!startsUrlWithTrackerUrl(query.getAttributeValueFromNode(e,"href"))&&e.wasContentTargetAttrReplaced&&query.setAnyAttribute(e,content.CONTENT_TARGET_ATTR,"");var r=getLinkIfShouldBeProcessed(e);if(linkTrackingInstalled&&r&&r.type)return r.type;if(replaceHrefIfInternalLink(i))return"href";var o=content.buildContentBlock(i);if(o){var a=buildContentInteractionRequest("click",o.name,o.piece,o.target);return sendRequest(a,configTrackerPause),a}}}}}function setupInteractionsTracking(e){var t,n;if(e&&e.length)for(t=0;t<e.length;t++)(n=content.findTargetNode(e[t]))&&!n.contentInteractionTrackingSetupDone&&(n.contentInteractionTrackingSetupDone=!0,addEventListener(n,"click",trackContentImpressionClickInteraction(n)))}function buildContentImpressionsRequests(e,t){if(!e||!e.length)return[];var n,i;for(n=0;n<e.length;n++)wasContentImpressionAlreadyTracked(e[n])?(e.splice(n,1),n--):trackedContentImpressions.push(e[n]);if(!e||!e.length)return[];replaceHrefsIfInternalLink(t),setupInteractionsTracking(t);var r=[];for(n=0;n<e.length;n++)i=_getRequest(content.buildImpressionRequestParams(e[n].name,e[n].piece,e[n].target),void 0,"contentImpressions"),r.push(i);return r}function getContentImpressionsRequestsFromNodes(e){return buildContentImpressionsRequests(content.collectContent(e),e)}function getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet(e){if(!e||!e.length)return[];var t;for(t=0;t<e.length;t++)content.isNodeVisible(e[t])||(e.splice(t,1),t--);return e&&e.length?getContentImpressionsRequestsFromNodes(e):[]}function buildContentImpressionRequest(e,t,n){return _getRequest(content.buildImpressionRequestParams(e,t,n),null,"contentImpression")}function buildContentInteractionRequestNode(e,t){if(e){var n=content.findParentContentNode(e),i=content.buildContentBlock(n);if(i)return t||(t="Unknown"),buildContentInteractionRequest(t,i.name,i.piece,i.target)}}function buildEventRequest(e,t,n,i){return"e_c="+encodeWrapper(e)+"&e_a="+encodeWrapper(t)+(isDefined(n)?"&e_n="+encodeWrapper(n):"")+(isDefined(i)?"&e_v="+encodeWrapper(i):"")}function logEvent(e,t,n,i,r){if(0===String(e).length||0===String(t).length)return!1;sendRequest(_getRequest(buildEventRequest(e,t,n,i),r,"event"),configTrackerPause)}function logSiteSearch(e,t,n,i){sendRequest(_getRequest("search="+encodeWrapper(e)+(t?"&search_cat="+encodeWrapper(t):"")+(isDefined(n)?"&search_count="+n:""),i,"sitesearch"),configTrackerPause)}function logGoal(e,t,n){sendRequest(_getRequest("idgoal="+e+(t?"&revenue="+t:""),n,"goal"),configTrackerPause)}function logLink(e,t,n,i,r){var o=t+"="+encodeWrapper(purify(e)),a=getContentInteractionToRequestIfPossible(r,"click",e);a&&(o+="&"+a),sendRequest(_getRequest(o,n,"link"),i?0:configTrackerPause,i)}function prefixPropertyName(e,t){return""!==e?e+t.charAt(0).toUpperCase()+t.slice(1):t}function trackCallback(e){var t,n,i,r=["","webkit","ms","moz"];if(!configCountPreRendered)for(n=0;n<r.length;n++)if(i=r[n],Object.prototype.hasOwnProperty.call(documentAlias,prefixPropertyName(i,"hidden"))){"prerender"===documentAlias[prefixPropertyName(i,"visibilityState")]&&(t=!0);break}return t?void addEventListener(documentAlias,i+"visibilitychange",(function t(){documentAlias.removeEventListener(i+"visibilitychange",t,!1),e()})):void e()}function trackCallbackOnLoad(e){"complete"===documentAlias.readyState?e():windowAlias.addEventListener?windowAlias.addEventListener("load",e):windowAlias.attachEvent&&windowAlias.attachEvent("onLoad",e)}function trackCallbackOnReady(e){(documentAlias.attachEvent?"complete"===documentAlias.readyState:"loading"!==documentAlias.readyState)?e():documentAlias.addEventListener?documentAlias.addEventListener("DOMContentLoaded",e):documentAlias.attachEvent&&documentAlias.attachEvent("onreadystatechange",e)}function processClick(e){var t=getLinkIfShouldBeProcessed(e);t&&t.type&&(t.href=safeDecodeWrapper(t.href),logLink(t.href,t.type,void 0,null,e))}function isIE8orOlder(){return documentAlias.all&&!documentAlias.addEventListener}function getKeyCodeFromEvent(e){var t=e.which,n=_typeof(e.button);return t||"undefined"===n||(isIE8orOlder()?1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2):0===e.button||"0"===e.button?t=1:1&e.button?t=2:2&e.button&&(t=3)),t}function getNameOfClickedButton(e){switch(getKeyCodeFromEvent(e)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function getTargetElementFromEvent(e){return e.target||e.srcElement}function clickHandler(e){return function(t){var n=getNameOfClickedButton(t=t||windowAlias.event),i=getTargetElementFromEvent(t);if("click"===t.type){var r=!1;e&&"middle"===n&&(r=!0),i&&!r&&processClick(i)}else"mousedown"===t.type?"middle"===n&&i?(lastButton=n,lastTarget=i):lastButton=lastTarget=null:"mouseup"===t.type?(n===lastButton&&i===lastTarget&&processClick(i),lastButton=lastTarget=null):"contextmenu"===t.type&&processClick(i)}}function addClickListener(e,t){addEventListener(e,"click",clickHandler(t),!1),t&&(addEventListener(e,"mouseup",clickHandler(t),!1),addEventListener(e,"mousedown",clickHandler(t),!1),addEventListener(e,"contextmenu",clickHandler(t),!1))}function addClickListeners(e){if(!linkTrackingInstalled){linkTrackingInstalled=!0;var t,n=getClassesRegExp(configIgnoreClasses,"ignore"),i=documentAlias.links;if(i)for(t=0;t<i.length;t++)n.test(i[t].className)||addClickListener(i[t],e)}}function _enableTrackOnlyVisibleContent(e,t,n){function i(){a=!0}if(isTrackOnlyVisibleContentEnabled)return!0;isTrackOnlyVisibleContentEnabled=!0;var r,o,a=!1;trackCallbackOnLoad((function(){if(e){for(r=["scroll","resize"],o=0;o<r.length;o++)documentAlias.addEventListener?documentAlias.addEventListener(r[o],i):windowAlias.attachEvent("on"+r[o],i);!function e(t){setTimeout((function(){isTrackOnlyVisibleContentEnabled&&(a&&(a=!1,n.trackVisibleContentImpressions()),e(t))}),t)}(100)}t&&t>0&&function e(t){setTimeout((function(){isTrackOnlyVisibleContentEnabled&&(a=!1,n.trackVisibleContentImpressions(),e(t))}),t)}(t=parseInt(t,10))}))}function detectBrowserFeatures(){var e,t,n={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",dir:"application/x-director",fla:"application/x-shockwave-flash",java:"application/x-java-vm",gears:"application/x-googlegears",ag:"application/x-silverlight"},i=windowAlias.devicePixelRatio||1;if(!new RegExp("MSIE").test(navigatorAlias.userAgent)){if(navigatorAlias.mimeTypes&&navigatorAlias.mimeTypes.length)for(e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t=navigatorAlias.mimeTypes[n[e]],browserFeatures[e]=t&&t.enabledPlugin?"1":"0");"unknown"!=typeof navigator.javaEnabled&&isDefined(navigatorAlias.javaEnabled)&&navigatorAlias.javaEnabled()&&(browserFeatures.java="1"),isFunction(windowAlias.GearsFactory)&&(browserFeatures.gears="1"),browserFeatures.cookie=hasCookies()}browserFeatures.res=screenAlias.width*i+"x"+screenAlias.height*i}function registerHook(hookName,userHook){var hookObj=null;if(isString(hookName)&&!isDefined(registeredHooks[hookName])&&userHook){if(isObject(userHook))hookObj=userHook;else if(isString(userHook))try{eval("hookObj ="+userHook)}catch(e){}registeredHooks[hookName]=hookObj}return hookObj}var registeredHooks={},locationArray=urlFixup(documentAlias.domain,windowAlias.location.href,getReferrer()),domainAlias=domainFixup(locationArray[0]),locationHrefAlias=safeDecodeWrapper(locationArray[1]),configReferrerUrl=safeDecodeWrapper(locationArray[2]),_enableJSErrorTracking=!1,defaultRequestMethod="GET",configRequestMethod=defaultRequestMethod,defaultRequestContentType="application/x-www-form-urlencoded; charset=UTF-8",configRequestContentType=defaultRequestContentType,configTrackerUrl=trackerUrl||"",configApiUrl="",configAppendToTrackingUrl="",configTrackerSiteId=siteId||"",configUserId="",visitorUUID="",configCustomUrl,configTitle=documentAlias.title,configDownloadExtensions=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],configHostsAlias=[domainAlias],configIgnoreClasses=[],configDownloadClasses=[],configLinkClasses=[],configTrackerPause=500,configMinimumVisitTime,configHeartBeatDelay,heartBeatPingIfActivityAlias,configDiscardHashTag,configCustomData,configCampaignNameParameters=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],configCampaignKeywordParameters=["pk_kwd","piwik_kwd","utm_term"],configCookieNamePrefix="_pk_",configCookieDomain,configCookiePath,configCookiesDisabled=!1,configDoNotTrack,configCountPreRendered,configConversionAttributionFirstReferrer,configVisitorCookieTimeout=339552e5,configSessionCookieTimeout=18e5,configReferralCookieTimeout=15768e6,configPerformanceTrackingEnabled=!0,configPerformanceGenerationTime=0,configStoreCustomVariablesInCookie=!1,customVariables=!1,configCustomRequestContentProcessing,customVariablesPage={},customVariablesEvent={},customVariableMaximumLength=200,ecommerceItems={},browserFeatures={},trackedContentImpressions=[],isTrackOnlyVisibleContentEnabled=!1,timeNextTrackingRequestCanBeExecutedImmediately=!1,linkTrackingInstalled=!1,linkTrackingEnabled=!1,heartBeatSetUp=!1,lastTrackerRequestTime=null,heartBeatTimeout,lastButton,lastTarget,hash=sha1,domainHash;return heartBeatPingIfActivityAlias=function(){var e=new Date;return lastTrackerRequestTime+configHeartBeatDelay<=e.getTime()&&(sendRequest(_getRequest("ping=1",null,"ping"),configTrackerPause),!0)},detectBrowserFeatures(),updateDomainHash(),setVisitorIdCookie(),executePluginMethod("run",registerHook),{hook:registeredHooks,getHook:function(e){return registeredHooks[e]},getQuery:function(){return query},getContent:function(){return content},buildContentImpressionRequest:buildContentImpressionRequest,buildContentInteractionRequest:buildContentInteractionRequest,buildContentInteractionRequestNode:buildContentInteractionRequestNode,buildContentInteractionTrackingRedirectUrl:buildContentInteractionTrackingRedirectUrl,getContentImpressionsRequestsFromNodes:getContentImpressionsRequestsFromNodes,getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet:getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet,trackCallbackOnLoad:trackCallbackOnLoad,trackCallbackOnReady:trackCallbackOnReady,buildContentImpressionsRequests:buildContentImpressionsRequests,wasContentImpressionAlreadyTracked:wasContentImpressionAlreadyTracked,appendContentInteractionToRequestIfPossible:getContentInteractionToRequestIfPossible,setupInteractionsTracking:setupInteractionsTracking,trackContentImpressionClickInteraction:trackContentImpressionClickInteraction,internalIsNodeVisible:isVisible,isNodeAuthorizedToTriggerInteraction:isNodeAuthorizedToTriggerInteraction,replaceHrefIfInternalLink:replaceHrefIfInternalLink,getConfigDownloadExtensions:function(){return configDownloadExtensions},enableTrackOnlyVisibleContent:function(e,t){return _enableTrackOnlyVisibleContent(e,t,this)},clearTrackedContentImpressions:function(){trackedContentImpressions=[]},getTrackedContentImpressions:function(){return trackedContentImpressions},clearEnableTrackOnlyVisibleContent:function(){isTrackOnlyVisibleContentEnabled=!1},disableLinkTracking:function(){linkTrackingInstalled=!1,linkTrackingEnabled=!1},getConfigVisitorCookieTimeout:function(){return configVisitorCookieTimeout},getRemainingVisitorCookieTimeout:getRemainingVisitorCookieTimeout,getVisitorId:function(){return getValuesFromVisitorIdCookie().uuid},getVisitorInfo:function(){return loadVisitorIdCookie()},getAttributionInfo:function(){return loadReferrerAttributionCookie()},getAttributionCampaignName:function(){return loadReferrerAttributionCookie()[0]},getAttributionCampaignKeyword:function(){return loadReferrerAttributionCookie()[1]},getAttributionReferrerTimestamp:function(){return loadReferrerAttributionCookie()[2]},getAttributionReferrerUrl:function(){return loadReferrerAttributionCookie()[3]},setTrackerUrl:function(e){configTrackerUrl=e},getTrackerUrl:function(){return configTrackerUrl},getSiteId:function(){return configTrackerSiteId},setSiteId:function(e){_setSiteId(e)},setUserId:function(e){isDefined(e)&&e.length&&(visitorUUID=hash(configUserId=e).substr(0,16))},getUserId:function(){return configUserId},setCustomData:function(e,t){isObject(e)?configCustomData=e:(configCustomData||(configCustomData={}),configCustomData[e]=t)},getCustomData:function(){return configCustomData},setCustomRequestProcessing:function(e){configCustomRequestContentProcessing=e},appendToTrackingUrl:function(e){configAppendToTrackingUrl=e},getRequest:function(e){return _getRequest(e)},addPlugin:function(e,t){plugins[e]=t},setCustomVariable:function(e,t,n,i){var r;isDefined(i)||(i="visit"),isDefined(t)&&(isDefined(n)||(n=""),e>0&&(t=isString(t)?t:String(t),n=isString(n)?n:String(n),r=[t.slice(0,customVariableMaximumLength),n.slice(0,customVariableMaximumLength)],"visit"===i||2===i?(loadCustomVariables(),customVariables[e]=r):"page"===i||3===i?customVariablesPage[e]=r:"event"===i&&(customVariablesEvent[e]=r)))},getCustomVariable:function(e,t){var n;return isDefined(t)||(t="visit"),"page"===t||3===t?n=customVariablesPage[e]:"event"===t?n=customVariablesEvent[e]:"visit"!==t&&2!==t||(loadCustomVariables(),n=customVariables[e]),!(!isDefined(n)||n&&""===n[0])&&n},deleteCustomVariable:function(e,t){this.getCustomVariable(e,t)&&this.setCustomVariable(e,"","",t)},storeCustomVariablesInCookie:function(){configStoreCustomVariablesInCookie=!0},setLinkTrackingTimer:function(e){configTrackerPause=e},setDownloadExtensions:function(e){isString(e)&&(e=e.split("|")),configDownloadExtensions=e},addDownloadExtensions:function(e){var t;for(isString(e)&&(e=e.split("|")),t=0;t<e.length;t++)configDownloadExtensions.push(e[t])},removeDownloadExtensions:function(e){var t,n=[];for(isString(e)&&(e=e.split("|")),t=0;t<configDownloadExtensions.length;t++)-1===indexOfArray(e,configDownloadExtensions[t])&&n.push(configDownloadExtensions[t]);configDownloadExtensions=n},setDomains:function(e){(configHostsAlias=isString(e)?[e]:e).push(domainAlias)},setIgnoreClasses:function(e){configIgnoreClasses=isString(e)?[e]:e},setRequestMethod:function(e){configRequestMethod=e||defaultRequestMethod},setRequestContentType:function(e){configRequestContentType=e||defaultRequestContentType},setReferrerUrl:function(e){configReferrerUrl=e},setCustomUrl:function(e){configCustomUrl=resolveRelativeReference(locationHrefAlias,e)},setDocumentTitle:function(e){configTitle=e},setAPIUrl:function(e){configApiUrl=e},setDownloadClasses:function(e){configDownloadClasses=isString(e)?[e]:e},setLinkClasses:function(e){configLinkClasses=isString(e)?[e]:e},setCampaignNameKey:function(e){configCampaignNameParameters=isString(e)?[e]:e},setCampaignKeywordKey:function(e){configCampaignKeywordParameters=isString(e)?[e]:e},discardHashTag:function(e){configDiscardHashTag=e},setCookieNamePrefix:function(e){configCookieNamePrefix=e,customVariables=getCustomVariablesFromCookie()},setCookieDomain:function(e){var t=domainFixup(e);isPossibleToSetCookieOnDomain(t)&&(configCookieDomain=t,updateDomainHash())},setCookiePath:function(e){configCookiePath=e,updateDomainHash()},setVisitorCookieTimeout:function(e){configVisitorCookieTimeout=1e3*e},setSessionCookieTimeout:function(e){configSessionCookieTimeout=1e3*e},setReferralCookieTimeout:function(e){configReferralCookieTimeout=1e3*e},setConversionAttributionFirstReferrer:function(e){configConversionAttributionFirstReferrer=e},disableCookies:function(){configCookiesDisabled=!0,browserFeatures.cookie="0",configTrackerSiteId&&_deleteCookies()},deleteCookies:function(){_deleteCookies()},setDoNotTrack:function(e){var t=navigatorAlias.doNotTrack||navigatorAlias.msDoNotTrack;(configDoNotTrack=e&&("yes"===t||"1"===t))&&this.disableCookies()},addListener:function(e,t){addClickListener(e,t)},enableLinkTracking:function(e){linkTrackingEnabled=!0,hasLoaded?addClickListeners(e):registeredOnLoadHandlers.push((function(){addClickListeners(e)}))},enableJSErrorTracking:function(){if(!_enableJSErrorTracking){_enableJSErrorTracking=!0;var e=windowAlias.onerror;windowAlias.onerror=function(t,n,i,r,o){return trackCallback((function(){var e=n+":"+i;r&&(e+=":"+r),logEvent("JavaScript Errors",e,t)})),!!e&&e(t,n,i,r,o)}}},disablePerformanceTracking:function(){configPerformanceTrackingEnabled=!1},setGenerationTimeMs:function(e){configPerformanceGenerationTime=parseInt(e,10)},enableHeartBeatTimer:function(e){e=Math.max(e,1),configHeartBeatDelay=1e3*(e||15),null!==lastTrackerRequestTime&&setUpHeartBeat()},disableHeartBeatTimer:function(){heartBeatDown(),configHeartBeatDelay=null,window.removeEventListener("focus",heartBeatOnFocus),window.removeEventListener("blur",heartBeatOnBlur)},killFrame:function(){windowAlias.location!==windowAlias.top.location&&(windowAlias.top.location=windowAlias.location)},redirectFile:function(e){"file:"===windowAlias.location.protocol&&(windowAlias.location=e)},setCountPreRendered:function(e){configCountPreRendered=e},trackGoal:function(e,t,n){trackCallback((function(){logGoal(e,t,n)}))},trackLink:function(e,t,n,i){trackCallback((function(){logLink(e,t,n,i)}))},trackPageView:function(e,t){trackedContentImpressions=[],trackCallback(isOverlaySession(configTrackerSiteId)?function(){injectOverlayScripts(configTrackerUrl,configApiUrl,configTrackerSiteId)}:function(){logPageView(e,t)})},trackAllContentImpressions:function(){isOverlaySession(configTrackerSiteId)||trackCallback((function(){trackCallbackOnReady((function(){sendBulkRequest(getContentImpressionsRequestsFromNodes(content.findContentNodes()),configTrackerPause)}))}))},trackVisibleContentImpressions:function(e,t){isOverlaySession(configTrackerSiteId)||(isDefined(e)||(e=!0),isDefined(t)||(t=750),_enableTrackOnlyVisibleContent(e,t,this),trackCallback((function(){trackCallbackOnLoad((function(){sendBulkRequest(getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet(content.findContentNodes()),configTrackerPause)}))})))},trackContentImpression:function(e,t,n){isOverlaySession(configTrackerSiteId)||e&&(t=t||"Unknown",trackCallback((function(){sendRequest(buildContentImpressionRequest(e,t,n),configTrackerPause)})))},trackContentImpressionsWithinNode:function(e){!isOverlaySession(configTrackerSiteId)&&e&&trackCallback((function(){isTrackOnlyVisibleContentEnabled?trackCallbackOnLoad((function(){sendBulkRequest(getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet(content.findContentNodesWithinNode(e)),configTrackerPause)})):trackCallbackOnReady((function(){sendBulkRequest(getContentImpressionsRequestsFromNodes(content.findContentNodesWithinNode(e)),configTrackerPause)}))}))},trackContentInteraction:function(e,t,n,i){isOverlaySession(configTrackerSiteId)||e&&t&&(n=n||"Unknown",trackCallback((function(){sendRequest(buildContentInteractionRequest(e,t,n,i),configTrackerPause)})))},trackContentInteractionNode:function(e,t){!isOverlaySession(configTrackerSiteId)&&e&&trackCallback((function(){sendRequest(buildContentInteractionRequestNode(e,t),configTrackerPause)}))},logAllContentBlocksOnPage:function(){var e=content.findContentNodes(),t=content.collectContent(e);void 0!==console&&console&&console.log&&console.log(t)},trackEvent:function(e,t,n,i){trackCallback((function(){logEvent(e,t,n,i)}))},trackSiteSearch:function(e,t,n){trackCallback((function(){logSiteSearch(e,t,n)}))},setEcommerceView:function(e,t,n,i){isDefined(n)&&n.length?n instanceof Array&&(n=JSON2.stringify(n)):n="",customVariablesPage[5]=["_pkc",n],isDefined(i)&&String(i).length&&(customVariablesPage[2]=["_pkp",i]),(isDefined(e)&&e.length||isDefined(t)&&t.length)&&(isDefined(e)&&e.length&&(customVariablesPage[3]=["_pks",e]),isDefined(t)&&t.length||(t=""),customVariablesPage[4]=["_pkn",t])},addEcommerceItem:function(e,t,n,i,r){e.length&&(ecommerceItems[e]=[e,t,n,i,r])},trackEcommerceOrder:function(e,t,n,i,r,o){logEcommerceOrder(e,t,n,i,r,o)},trackEcommerceCartUpdate:function(e){logEcommerceCartUpdate(e)}}}function TrackerProxy(){return{push:apply}}function applyMethodsInOrder(e,t){var n,i,r={};for(n=0;n<t.length;n++){var o=t[n];for(r[o]=1,i=0;i<e.length;i++)if(e[i]&&e[i][0]){var a=e[i][0];o===a&&(apply(e[i]),delete e[i],r[a]>1&&void 0!==console&&console&&console.error&&console.error("The method "+a+' is registered more than once in "paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers'),r[a]++)}}return e}var expireDateTime,plugins={},documentAlias=document,navigatorAlias=navigator,screenAlias=screen,windowAlias=window,performanceAlias=windowAlias.performance||windowAlias.mozPerformance||windowAlias.msPerformance||windowAlias.webkitPerformance,hasLoaded=!1,registeredOnLoadHandlers=[],encodeWrapper=windowAlias.encodeURIComponent,decodeWrapper=windowAlias.decodeURIComponent,urldecode=unescape,asyncTracker,iterator,Piwik,query={htmlCollectionToArray:function(e){var t,n=[];if(!e||!e.length)return n;for(t=0;t<e.length;t++)n.push(e[t]);return n},find:function(e){if(!document.querySelectorAll||!e)return[];var t=document.querySelectorAll(e);return this.htmlCollectionToArray(t)},findMultiple:function(e){if(!e||!e.length)return[];var t,n,i=[];for(t=0;t<e.length;t++)n=this.find(e[t]),i=i.concat(n);return this.makeNodesUnique(i)},findNodesByTagName:function(e,t){if(!e||!t||!e.getElementsByTagName)return[];var n=e.getElementsByTagName(t);return this.htmlCollectionToArray(n)},makeNodesUnique:function(e){var t=[].concat(e);if(e.sort((function(e,n){if(e===n)return 0;var i=indexOfArray(t,e),r=indexOfArray(t,n);return i===r?0:i>r?-1:1})),e.length<=1)return e;var n,i=0,r=0,o=[];for(n=e[i++];n;)n===e[i]&&(r=o.push(i)),n=e[i++]||null;for(;r--;)e.splice(o[r],1);return e},getAttributeValueFromNode:function(e,t){if(this.hasNodeAttribute(e,t)){if(e&&e.getAttribute)return e.getAttribute(t);if(e&&e.attributes)if("undefined"!==_typeof(e.attributes[t])){if(e.attributes[t].value)return e.attributes[t].value;if(e.attributes[t].nodeValue)return e.attributes[t].nodeValue;var n,i=e.attributes;if(i){for(n=0;n<i.length;n++)if(i[n].nodeName===t)return i[n].nodeValue;return null}}}},hasNodeAttributeWithValue:function(e,t){return!!this.getAttributeValueFromNode(e,t)},hasNodeAttribute:function(e,t){return e&&e.hasAttribute?e.hasAttribute(t):!(!e||!e.attributes)&&"undefined"!==_typeof(e.attributes[t])},hasNodeCssClass:function(e,t){if(e&&t&&e.className&&-1!==indexOfArray("string"==typeof e.className?e.className.split(" "):[],t))return!0;return!1},findNodesHavingAttribute:function(e,t,n){if(n||(n=[]),!e||!t)return n;var i,r,o=getChildrenFromNode(e);if(!o||!o.length)return n;for(i=0;i<o.length;i++)r=o[i],this.hasNodeAttribute(r,t)&&n.push(r),n=this.findNodesHavingAttribute(r,t,n);return n},findFirstNodeHavingAttribute:function(e,t){if(e&&t){if(this.hasNodeAttribute(e,t))return e;var n=this.findNodesHavingAttribute(e,t);return n&&n.length?n[0]:void 0}},findFirstNodeHavingAttributeWithValue:function(e,t){if(e&&t){if(this.hasNodeAttributeWithValue(e,t))return e;var n,i=this.findNodesHavingAttribute(e,t);if(i&&i.length)for(n=0;n<i.length;n++)if(this.getAttributeValueFromNode(i[n],t))return i[n]}},findNodesHavingCssClass:function(e,t,n){if(n||(n=[]),!e||!t)return n;if(e.getElementsByClassName){var i=e.getElementsByClassName(t);return this.htmlCollectionToArray(i)}var r,o,a=getChildrenFromNode(e);if(!a||!a.length)return[];for(r=0;r<a.length;r++)o=a[r],this.hasNodeCssClass(o,t)&&n.push(o),n=this.findNodesHavingCssClass(o,t,n);return n},findFirstNodeHavingClass:function(e,t){if(e&&t){if(this.hasNodeCssClass(e,t))return e;var n=this.findNodesHavingCssClass(e,t);return n&&n.length?n[0]:void 0}},isLinkElement:function(e){if(!e)return!1;return-1!==indexOfArray(["a","area"],String(e.nodeName).toLowerCase())},setAnyAttribute:function(e,t,n){e&&t&&(e.setAttribute?e.setAttribute(t,n):e[t]=n)}},content={CONTENT_ATTR:"data-track-content",CONTENT_CLASS:"piwikTrackContent",CONTENT_NAME_ATTR:"data-content-name",CONTENT_PIECE_ATTR:"data-content-piece",CONTENT_PIECE_CLASS:"piwikContentPiece",CONTENT_TARGET_ATTR:"data-content-target",CONTENT_TARGET_CLASS:"piwikContentTarget",CONTENT_IGNOREINTERACTION_ATTR:"data-content-ignoreinteraction",CONTENT_IGNOREINTERACTION_CLASS:"piwikContentIgnoreInteraction",location:void 0,findContentNodes:function(){var e="."+this.CONTENT_CLASS,t="["+this.CONTENT_ATTR+"]";return query.findMultiple([e,t])},findContentNodesWithinNode:function(e){if(!e)return[];var t,n=query.findNodesHavingCssClass(e,this.CONTENT_CLASS),i=query.findNodesHavingAttribute(e,this.CONTENT_ATTR);if(i&&i.length)for(t=0;t<i.length;t++)n.push(i[t]);return(query.hasNodeAttribute(e,this.CONTENT_ATTR)||query.hasNodeCssClass(e,this.CONTENT_CLASS))&&n.push(e),query.makeNodesUnique(n)},findParentContentNode:function(e){if(e)for(var t=e,n=0;t&&t!==documentAlias&&t.parentNode;){if(query.hasNodeAttribute(t,this.CONTENT_ATTR))return t;if(query.hasNodeCssClass(t,this.CONTENT_CLASS))return t;if(t=t.parentNode,n>1e3)break;n++}},findPieceNode:function(e){var t;return(t=query.findFirstNodeHavingAttribute(e,this.CONTENT_PIECE_ATTR))||(t=query.findFirstNodeHavingClass(e,this.CONTENT_PIECE_CLASS)),t||e},findTargetNodeNoDefault:function(e){if(e){var t=query.findFirstNodeHavingAttributeWithValue(e,this.CONTENT_TARGET_ATTR);return t||((t=query.findFirstNodeHavingAttribute(e,this.CONTENT_TARGET_ATTR))?t:(t=query.findFirstNodeHavingClass(e,this.CONTENT_TARGET_CLASS))||void 0)}},findTargetNode:function(e){var t=this.findTargetNodeNoDefault(e);return t||e},findContentName:function(e){if(e){var t=query.findFirstNodeHavingAttributeWithValue(e,this.CONTENT_NAME_ATTR);if(t)return query.getAttributeValueFromNode(t,this.CONTENT_NAME_ATTR);var n=this.findContentPiece(e);if(n)return this.removeDomainIfIsInLink(n);if(query.hasNodeAttributeWithValue(e,"title"))return query.getAttributeValueFromNode(e,"title");var i=this.findPieceNode(e);if(query.hasNodeAttributeWithValue(i,"title"))return query.getAttributeValueFromNode(i,"title");var r=this.findTargetNode(e);return query.hasNodeAttributeWithValue(r,"title")?query.getAttributeValueFromNode(r,"title"):void 0}},findContentPiece:function(e){if(e){var t=query.findFirstNodeHavingAttributeWithValue(e,this.CONTENT_PIECE_ATTR);if(t)return query.getAttributeValueFromNode(t,this.CONTENT_PIECE_ATTR);var n=this.findPieceNode(e),i=this.findMediaUrlInNode(n);return i?this.toAbsoluteUrl(i):void 0}},findContentTarget:function(e){if(e){var t,n=this.findTargetNode(e);if(query.hasNodeAttributeWithValue(n,this.CONTENT_TARGET_ATTR))return query.getAttributeValueFromNode(n,this.CONTENT_TARGET_ATTR);if(query.hasNodeAttributeWithValue(n,"href"))return t=query.getAttributeValueFromNode(n,"href"),this.toAbsoluteUrl(t);var i=this.findPieceNode(e);return query.hasNodeAttributeWithValue(i,"href")?(t=query.getAttributeValueFromNode(i,"href"),this.toAbsoluteUrl(t)):void 0}},isSameDomain:function(e){if(!e||!e.indexOf)return!1;if(0===e.indexOf(this.getLocation().origin))return!0;var t=e.indexOf(this.getLocation().host);return 8>=t&&0<=t},removeDomainIfIsInLink:function(e){return e&&e.search&&-1!==e.search(new RegExp("^https?://[^/]+"))&&this.isSameDomain(e)&&((e=e.replace(new RegExp("^.*//[^/]+"),""))||(e="/")),e},findMediaUrlInNode:function(e){if(e){var t=e.nodeName.toLowerCase();if(-1!==indexOfArray(["img","embed","video","audio"],t)&&query.findFirstNodeHavingAttributeWithValue(e,"src")){var n=query.findFirstNodeHavingAttributeWithValue(e,"src");return query.getAttributeValueFromNode(n,"src")}if("object"===t&&query.hasNodeAttributeWithValue(e,"data"))return query.getAttributeValueFromNode(e,"data");if("object"===t){var i,r=query.findNodesByTagName(e,"param");if(r&&r.length)for(i=0;i<r.length;i++)if("movie"===query.getAttributeValueFromNode(r[i],"name")&&query.hasNodeAttributeWithValue(r[i],"value"))return query.getAttributeValueFromNode(r[i],"value");var o=query.findNodesByTagName(e,"embed");if(o&&o.length)return this.findMediaUrlInNode(o[0])}}},trim:function(e){return e&&String(e)===e?e.replace(/^\s+|\s+$/g,""):e},isOrWasNodeInViewport:function(e){if(!e||!e.getBoundingClientRect||1!==e.nodeType)return!0;var t=e.getBoundingClientRect(),n=documentAlias.documentElement||{},i=t.top<0;i&&e.offsetTop&&(i=e.offsetTop+t.height>0);var r=n.clientWidth;windowAlias.innerWidth&&r>windowAlias.innerWidth&&(r=windowAlias.innerWidth);var o=n.clientHeight;return windowAlias.innerHeight&&o>windowAlias.innerHeight&&(o=windowAlias.innerHeight),(t.bottom>0||i)&&t.right>0&&t.left<r&&(t.top<o||i)},isNodeVisible:function(e){var t=isVisible(e),n=this.isOrWasNodeInViewport(e);return t&&n},buildInteractionRequestParams:function(e,t,n,i){var r="";return e&&(r+="c_i="+encodeWrapper(e)),t&&(r&&(r+="&"),r+="c_n="+encodeWrapper(t)),n&&(r&&(r+="&"),r+="c_p="+encodeWrapper(n)),i&&(r&&(r+="&"),r+="c_t="+encodeWrapper(i)),r},buildImpressionRequestParams:function(e,t,n){var i="c_n="+encodeWrapper(e)+"&c_p="+encodeWrapper(t);return n&&(i+="&c_t="+encodeWrapper(n)),i},buildContentBlock:function(e){if(e){var t=this.findContentName(e),n=this.findContentPiece(e),i=this.findContentTarget(e);return{name:(t=this.trim(t))||"Unknown",piece:(n=this.trim(n))||"Unknown",target:(i=this.trim(i))||""}}},collectContent:function(e){if(!e||!e.length)return[];var t,n,i=[];for(t=0;t<e.length;t++)isDefined(n=this.buildContentBlock(e[t]))&&i.push(n);return i},setLocation:function(e){this.location=e},getLocation:function(){var e=this.location||windowAlias.location;return e.origin||(e.origin=e.protocol+"//"+e.hostname+(e.port?":"+e.port:"")),e},toAbsoluteUrl:function(e){if((!e||String(e)!==e)&&""!==e)return e;if(""===e)return this.getLocation().href;if(-1!==e.search(/^\/\//))return this.getLocation().protocol+e;if(-1!==e.search(/:\/\//))return e;if(0===e.indexOf("#"))return this.getLocation().origin+this.getLocation().pathname+e;if(0===e.indexOf("?"))return this.getLocation().origin+this.getLocation().pathname+e;if(0===e.search("^[a-zA-Z]{2,11}:"))return e;if(-1!==e.search(/^\//))return this.getLocation().origin+e;return this.getLocation().origin+this.getLocation().pathname.match(new RegExp("(.*/)"))[0]+e},isUrlToCurrentDomain:function(e){var t=this.toAbsoluteUrl(e);if(!t)return!1;var n=this.getLocation().origin;return n===t||0===String(t).indexOf(n)&&":"!==String(t).substr(n.length,1)},setHrefAttribute:function(e,t){e&&t&&query.setAnyAttribute(e,"href",t)},shouldIgnoreInteraction:function(e){var t=query.hasNodeAttribute(e,this.CONTENT_IGNOREINTERACTION_ATTR),n=query.hasNodeCssClass(e,this.CONTENT_IGNOREINTERACTION_CLASS);return t||n}};addEventListener(windowAlias,"beforeunload",beforeUnloadHandler,!1),addReadyListener(),Date.prototype.getTimeAlias=Date.prototype.getTime,asyncTracker=new Tracker;var applyFirst=["disableCookies","setTrackerUrl","setAPIUrl","setCookiePath","setCookieDomain","setUserId","setSiteId","enableLinkTracking"];for(_paq=applyMethodsInOrder(_paq,applyFirst),iterator=0;iterator<_paq.length;iterator++)_paq[iterator]&&apply(_paq[iterator]);return _paq=new TrackerProxy,Piwik={addPlugin:function(e,t){plugins[e]=t},getTracker:function(e,t){return isDefined(t)||(t=this.getAsyncTracker().getSiteId()),isDefined(e)||(e=this.getAsyncTracker().getTrackerUrl()),new Tracker(e,t)},getAsyncTracker:function(){return asyncTracker}},__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_RESULT__=function(){return Piwik}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),void 0!==__WEBPACK_AMD_DEFINE_RESULT__&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__),Piwik}()),window&&window.piwikAsyncInit&&window.piwikAsyncInit(),"undefined"===("undefined"==typeof AnalyticsTracker?"undefined":_typeof(AnalyticsTracker))&&(AnalyticsTracker=Piwik),"function"!=typeof piwik_log&&(piwik_log=function(e,t,n,i){"use strict";function r(e){try{if(window["piwik_"+e])return window["piwik_"+e]}catch(e){}}var o,a=Piwik.getTracker(n,t);a.setDocumentTitle(e),a.setCustomData(i),(o=r("tracker_pause"))&&a.setLinkTrackingTimer(o),(o=r("download_extensions"))&&a.setDownloadExtensions(o),(o=r("hosts_alias"))&&a.setDomains(o),(o=r("ignore_classes"))&&a.setIgnoreClasses(o),a.trackPageView(),r("install_tracker")&&(piwik_track=function(e,t,n,i){a.setSiteId(t),a.setTrackerUrl(n),a.trackLink(e,i)},a.enableLinkTracking())})}).call(this,__webpack_require__("./node_modules/webpack/buildin/module.js")(module),__webpack_require__("./node_modules/webpack/buildin/global.js"))},"./js/app/search/views/advanced/advancedsearchwidgetview.js":function(e,t,n){var i,r;i=[n("./node_modules/jquery/dist/jquery.js"),n("./node_modules/underscore/underscore.js"),n("./node_modules/custom-backbone/backbone-min.js"),n("./node_modules/bootstrap-datepicker/dist/bootstrap-datepicker.js"),n("./js/app/govinfo.js"),n("./js/app/common/views/NewDateRangeView.js"),n("./js/app/search/views/newSearchConstraintModel.js")],void 0===(r=function(e,t,n,i,r,o,a){return AdvancedSearchView=r.BaseView.extend({loadingTemplate:"./common/templates/searchwidget/Loading.html",template:"./common/templates/searchwidget/AdvancedSearchView.html",doNotleaveHistoryTrail:!0,doNotKillDiv:!0,useHash:!0,useState:!1,statePath:["advanced"],events:{"change .aswv-search-in-select":"onSearchInSelect","change .aswv-collection-cb":"populateByCollection","change #selectAllCollections":"onSelectAllCollections","click #searchButton":"search","click #addcriteriabuttons":"onAddCriteria","click .aswvoc-criteria-remove":"onRemoveCriteria","click #showHistoryUrl":"showHistoryUrl","click .copyBtn":"copyShareUrl"},_getCollections:function(){for(var t=[],n=this.$(".aswv-collection-cb:checked"),i=0,r=n.length;i<r;i++)t.push(e(n[i]).data("value"));return t},getHistoryUrl:function(){var t={},n=this._getCollections();t.collections=n;this.$("#dateRangeSelect").val();"AD"!=this.$("#dateRangeSelect").val()&&(t.date=this.selectDateRangeView.getDateRange());for(var i=this.$(".aswvoc-criteria-holder:visible"),r=[],o=0,a=i.length;o<a;o++){var s=e(i[o]),c={};c.f=s.find(".aswv-search-in-select").val(),c.v=s.find(".aswvoc-criteria-input").val(),c.p=s.data("row"),r.push(c)}t.fields=r;var l=JSON.stringify(t);return l=encodeURI(l)},_showHistoryUrl:!0,putForm:function(e){if(this._stopHistory=!0,e&&e.collections)for(var t=0,n=e.collections.length;t<n;t++){var i=e.collections[t];this.$('.aswv-collection-item [data-value="'+i+'"]').prop("checked",!0)}if(this.populateByCollection(),e&&e.date&&this.selectDateRangeView.setDateRange(e.date),e&&e.fields)for(t=0,n=e.fields.length;t<n;t++){var r=e.fields[t],o=this.$("#holderId"+r.p),a=o.find(".aswv-search-in-select");a.val(r.f),this._onSearchInSelect(a,(function(e,t){e.find(".aswvoc-criteria-input").val(t),o.show()}),o,r.v)}this._stopHistory=!1},getHistory:function(){var e=this.getParameter("ash");return e?(e=decodeURIComponent(e),JSON.parse(e)):null},_getFields:function(t,n,i){var r="/wssearch/search/fieldvalues/"+n;n&&null!=n?e.ajax({type:"POST",url:r,dataType:"json",processData:!1,contentType:"application/json",data:JSON.stringify(t),success:function(e){i&&i(e)},error:function(e){console.log("error happend during fetch in _getFields"),i([])}}):i([])},_onSearchInSelect:function(t,n,i,r){var o=t.val(),a=this._mapFields[o],s=this.$("#"+t.data("holder")),c=e(s.find(".aswvoc-criteria-div-right"));c.empty(),c.html('<i class="fa fa-spinner fa-spin"><i>');var l=this._getCollections(),u=a?a.value:null;this._getFields(l,u,(function(t){if(0==t.length){var o=e('<input type="text" class="aswvoc-criteria-input form-control">');c.html(o)}else{var a=e('<select class="aswvoc-criteria-input form-control">');a.append("<option value=''>Choose Value</option>");for(var s=0,l=t.length;s<l;s++)a.append("<option value='"+t[s].value+"'>"+t[s].display+"</option>");var u=e('<div style="position:relative">'),d=e('<div class="styled-select">');d.append(a),u.append(d),c.html(u)}n&&n(i,r)}))},viaFacets:!1,preloadDataAsync:function(e,n){var i={},r=function(n,r){if(r)n=t.sortBy(n,"display"),i.collections=n;else{n=t.sortBy(n,(function(e){return e.displayValue})),i.fields=n,this._allFields=n,this._mapFields={};for(var o=n.length-1;o>=0;o--)this._mapFields[n[o].value]=n[o]}i.fields&&i.collections&&e(i)}.bind(this);this.getJSON("/wssearch/search/collections",(function(e){r(e,!0)}),n),this.getJSON("/wssearch/search/allfields",(function(e){r(e,!1)}),n)},initialize:function(e){r.BaseView.prototype.initialize.call(this,e),this.selectDateRangeView=this.instantiate(o),this.listenTo(this.getParent(),"simplesearch",this.onSimpleSearch.bind(this))},onSimpleSearch:function(){this.destroy()},render:function(){this.selectDateRangeView.setElement("#newDateRangeView").renderView(function(){var e=this.getHistory();e?this.putForm(e):this.populateByCollection(null,!0)}.bind(this))},putInHolders:function(t){for(var n=0,i=t.length;n<i;n++){var r=e(t[n]);this.tempHolders||(this.tempHolders={}),this.tempHolders[r.data("holder")]||(this.tempHolders[r.data("holder")]=e('<select style="display:none;">'),this.$el.append(this.tempHolders[r.data("holder")])),this.tempHolders[r.data("holder")].append(r)}},putInFields:function(t){for(var n=0,i=t.length;n<i;n++){var r=e(t[n]);this.$('select[data-holder="'+r.data("holder")+'"]').append(r)}},showHistoryUrl:function(e){var t=this.$("#advBookmark_placeholder");t.hide();var n=this.getHistoryUrl(),i='<div class="alert alert-info">Copy and save this link: <a href="#" class="close" data-dismiss="alert" aria-label="close">×</a> <div class="input-group"><input id="advUrlInput" type="text" class="form-control" value="'+(location.protocol+"//"+location.host+"/#advanced?ash="+n)+'"><span class="input-group-btn"><button class="copyBtn btn btn-default" type="button">Copy</button></span></div></div>';t.html(i),t.fadeIn()},copyShareUrl:function(e){var t=document.getElementById("advUrlInput").value;r.BaseView.prototype.copyShareUrl(e,t)}}),AdvancedSearchView.prototype.onSearchInSelect=function(t){var n=e(t.currentTarget);this._onSearchInSelect(n,function(){}.bind(this))},AdvancedSearchView.prototype.populateByCollection=function(t,n){var i=this._getCollections();if(this.$(".aswvoc-criteria-div-right").empty(),0==i)for(var r=this.$(".aswv-collection-cb"),o=0,a=r.length;o<a;o++)i.push(e(r[o]).data("value"));var s=".aswvoc-"+i.join(".aswvoc-"),c=this.$(s);this.putInHolders(this.$(".aswv-search-in-option")),this.putInFields(c),this.$(".aswv-search-in-select").val("content"),this.$(".aswv-search-in-select").change(),this.$(".aswvoc-criteria-holder").hide(),e(this.$(".aswvoc-criteria-holder")[0]).show(),this.$("#addcriteriabuttons").show()},AdvancedSearchView.prototype.onSelectAllCollections=function(t){var n=e(t.currentTarget).prop("checked");this.$(".aswv-collection-cb").prop("checked",n),this.populateByCollection()},AdvancedSearchView.prototype._getSearchInStr=function(){for(var t=this.$(".aswvoc-criteria-holder:visible"),n="",i=[],r=0,o=t.length;r<o;r++){var a=e(t[r]),s=e(a.find(".aswv-search-in-select")).val();if(s&&"None"!=s){var c=e(a.find(".aswvoc-criteria-input")).val();c&&""!=c&&i.push(s+":("+c+")")}}return i.length>0&&(n=i.join(" AND ")),n},AdvancedSearchView.prototype._getCollectionsStr=function(){var e=this._getCollections();return e&&e.length>0?"collection:("+e.join(" OR ")+")":""},AdvancedSearchView.prototype.search=function(){var e=new a;this._getCollections();e.setPageNumber(null);var t=[];if(this.viaFacets){var n=this._getCollections();n&&n.length>0&&(e.constraints.facets={accodenav:n},e.constraints.filterOrder=["accodenav"])}else{var i=this._getCollectionsStr();i&&t.push(i)}var o=this.selectDateRangeView.getQueryString();o&&t.push(o);var s=this._getSearchInStr();s&&t.push(s),e.constraints.query=t.join(" AND "),e.constraints.historical=!0;var c=encodeURIComponent(e.getJSONString());c&&(c=c.replace(/%2F/g,r.apacheEscape)),window.location.href="/app/search/"+c},AdvancedSearchView.prototype.onAddCriteria=function(t){var n=e(t.currentTarget),i=this.$(".aswvoc-criteria-holder:hidden");i.length<=1&&n.hide();var r=e(i[0]);r.show();var o=e(r.find(".aswv-search-in-select")[0]);o.val("content"),o.change(),r.parent().append(r),this.$("#addcriteriabuttons").parent().append(this.$("#addcriteriabuttons"))},AdvancedSearchView.prototype.onRemoveCriteria=function(t){var n=e(t.currentTarget);e("#"+n.data("holder")).hide(),this.$("#addcriteriabuttons").show()},AdvancedSearchView}.apply(t,i))||(e.exports=r)},"./js/app/search/views/citation/citationsearchwidgetview.js":function(e,t,n){var i,r;i=[n("./node_modules/jquery/dist/jquery.js"),n("./node_modules/underscore/underscore.js"),n("./js/app/govinfo.js")],void 0===(r=function(e,t,n){return n.BaseView.extend({template:"./common/templates/searchwidget/CitationSearchView.html",loadingTemplate:"./common/templates/searchwidget/Loading.html",useHash:!0,useState:!1,events:{"change #citationpublist":"onCollectionChange","change .form-control":"onFormControlChange","click #searchButton":"onSearch","click .cs-close-alert":"onCloseAlert","click #showHistoryUrl":"showHistoryUrl","click .copyBtn":"copyShareUrl","click .displayShare":"shareModal","click #closeModal":"removeModal","click #share-modal__inner--copy":"copyLinkUrl"},snippets:{"share-modal":"browse/templates/sharemodal.html"},showHistoryUrl:function(e){var t=this.$("#citationBookmark_placeholder");t.hide();var n=encodeURIComponent(JSON.stringify(this._getSearchJson(!0))),i='<div class="alert alert-info">Copy and save this link: <a href="#" class="close" data-dismiss="alert" aria-label="close">×</a> <div class="input-group"><input id="citationUrlInput" type="text" class="form-control" value="'+(location.protocol+"//"+location.host+"/#citation?csh="+n)+'"><span class="input-group-btn"><button class="copyBtn btn btn-default" type="button">Copy</button></span></div></div>';t.html(i),t.fadeIn()},copyShareUrl:function(e){var t=document.getElementById("citationUrlInput").value;n.BaseView.prototype.copyShareUrl(e,t)},shareModal:function(t){$currentTarget=e(t.target),~e.inArray("displayShare",$currentTarget[0].classList)&&e($currentTarget[0].closest(".copy-container")).after(this.snippet("share-modal")),n.BaseView.prototype.shareModalData()},removeModal:function(t){e(".imgPreview__inner").addClass("modalFadeOut--slower"),e(".dl-modal__inner").addClass("modalFadeOut--slower"),e(".share-modal__inner").addClass("modalFadeOut--slower");["#imgModal-contain","#dl-contain","#share-contain"].forEach((function(t){e(t).fadeOut((function(){e(t).remove()}))})),document.documentElement.style.overflow="auto",document.body.scroll="yes"},copyLinkUrl:function(e){n.BaseView.prototype.copyShareUrl(e)},onFormControlChange:function(n){if(!e(n.currentTarget).hasClass("event-citation-dynamic-control")){var i=null;try{i=this._getSearchJson()}catch(e){}if(i){var r=this.$('.event-citation-dynamic-control[data-collection="'+i.collection+'"]');r.prop("disabled",!0);var o=function(e){r.empty();var n=e.selectOptions;if(n&&n.length>1&&r.prop("disabled",!1),t.each(n,(function(e){r.append("<option value='"+e.value+"'>"+e.displayValue+"</option>")})),void 0!==i)for(var i,o=0;i=this.history.searchCriteria[o];o++)i.value===r.attr("data-name")&&r.val(i.displayValue)};this.postJSON("/wssearch/search/citationsearch/update",o.bind(this),o.bind(this),i)}}},onCloseAlert:function(e){return e.stopPropagation(),this.$("#alertdiv").addClass("hide"),!1},preloadDataAsync:function(e){this.getJSON("/wssearch/search/citationsearch",e)},onCollectionChange:function(t){if(this.$(".cv-collection-content").hide(),this.$("#alertdiv").addClass("hide"),t){var n=e(t.currentTarget);this.$("#collection_"+n.val()).show()}},_getSearchJson:function(t){for(var n=this.$("select:visible,input:visible"),i=null,r=[],o=[],a=0,s=n.length;a<s;a++){var c=e(n[a]),l=c.data("required");if("citationpublist"==c[0].id)i=c.val();else{var u={value:c.data("name"),displayValue:c.val()};if(!(t||!l||c.val()&&"-1"!=c.val()))throw l;c.val()&&r.push(u),c.hasClass("event-citation-dynamic-control")&&o.push(u)}}return{collection:i,searchCriteria:r,selectOptions:o}},onSearch:function(){var e=null;try{e=this._getSearchJson()}catch(e){return this.$("#doctext").html(e),void this.$("#alertdiv").removeClass("hide")}var t=function(e){var t=this;e&&e.length>0&&(this.$("#doctext").html(""),e.forEach((function(e){if(e&&e.length>0&&null!=e[0]){if(msg='<table class="table"><tbody>',msg+='<tr class=""><td class="">',null!=e[4]&&(msg=msg+"<p><b>"+e[4]+"</b></p>"),null!=e[5]&&(msg=msg+'<p class="small"><em>'+e[5]+"</em></p>"),msg+='<div class="btn-group-horizontal">',null!=e[0]&&(msg=msg+'<a class="btn btn-sm btn-format" id ="pdflink" href="/content/pkg/'+e[0]+'" target="_blank">PDF</a>'),null!=e[2]){var n=e[6]+"/"+e[2];msg=msg+'<a class="btn btn-sm btn-format" id ="txtlink" href="/content/pkg/'+n+'" target="_blank">Text</a>'}if(null!=e[8]){var i=e[8].lastIndexOf("."),r=e[8].substring(i+1).toUpperCase();msg=msg+'<a class="btn btn-sm btn-format" id ="xmllink" href="/content/pkg/'+e[6]+"/"+e[8]+'" target="_blank">'+r+"</a>"}if(null!=e[9]){i=e[9].lastIndexOf(".");var o=e[9].substring(i+1).toUpperCase();msg=msg+'<a class="btn btn-sm btn-format" href="/content/pkg/'+e[6]+"/"+e[9]+'" target="_blank">'+o+"</a>"}null!=e[10]&&(-1!=e[10].indexOf("uslm")?msg=msg+'<a class="btn btn-sm btn-format" href="/content/pkg/'+e[6]+"/"+e[10]+'" target="_blank">USLM</a>':msg=msg+'<a class="btn btn-sm btn-format" href="/content/pkg/'+e[6]+"/"+e[10]+'" target="_blank">XML</a>');var a="/app/details/";null!=e[6]&&(a+=e[6]),null!=e[7]&&(a=a+"/"+e[7]),"/app/details/"!=a&&(msg=msg+'<a class="btn btn-sm btn-format " id ="detailslink" href='+a+' target="_blank">Details</a>',msg=msg+'<a class="btn btn-sm btn-default displayShare" addthis:title="'+e[4]+'" addthis:url="'+a+'" href="javascript:;">Share</a>'),msg+=" </div> </td></tr></tbody></table>",t.$("#doctext").append(msg),t.$("#alertdiv").removeClass("hide")}})))}.bind(this);this.setOverlay();this.postJSON("/wssearch/search/citationsearch",function(e){if(this.removeOverlay(),e&&e.result&&null!=e.result[0])t(e.result);else{var n=e&&e.status||"Error occurred while searching for citation.";console.log(JSON.stringify(e)),this.$("#doctext").html(n),this.$("#alertdiv").removeClass("hide")}}.bind(this),function(e){console.log("result in script "+e.redirectUrl),this.removeOverlay(),e&&e.result&&null!=e.result[0]&&t(e.result)}.bind(this),e)},render:function(){this.onCollectionChange();var e=this.getParameter("csh");e&&(e=decodeURIComponent(e),e=JSON.parse(e),this.history=e,this.putForm(e))},putForm:function(e){this.$("#citationpublist").val(e.collection),this.$("#citationpublist").trigger("change");for(var t,n=0;t=e.searchCriteria[n];n++){var i=this.$("#secondcriteria [data-collection='"+e.collection+"'][data-name='"+t.value+"']");i.val(t.displayValue),i.trigger("change")}}})}.apply(t,i))||(e.exports=r)},"./js/app/search/views/newSearchConstraintModel.js":function(e,t,n){var i,r;i=[n("./node_modules/jquery/dist/jquery.js"),n("./node_modules/underscore/underscore.js"),n("./node_modules/custom-backbone/backbone-min.js"),n("./js/app/govinfo.js")],void 0===(r=function(e,t,n,i){return SearchConstraintModel=i.PostConstraintModel.extend({addNavigator:function(e,t){if(this.constraints.navigator)for(var n=this.constraints.navigator,i=!1;n;){if(n.name==e){n.values.push(t),i=!0;break}if(!n.next&&!i){n.next={},n.next.name=e,n.next.values=[t],n.next.next=null;break}n=n.next}else this.constraints.navigator={},this.constraints.navigator.name=e,this.constraints.navigator.values=[t],this.constraints.navigator.next=null;return this.constraints.navigator},setPageNumber:function(e){this.constraints.offset=e||0},getPageNumber:function(){return this.constraints.offset?this.constraints.offset:0},setPageSize:function(e){this.constraints.pageSize=e||10},getPageSize:function(){return this.constraints.pageSize?this.constraints.pageSize:10},_getNavigatorStr:function(){for(var e="&na=",t=[],n=[],i=this.constraints.navigator;i;){t.push(i.name);var r=i.values,o=r.join("!");r.length>1&&(o="!"+o),n.push(o),i=i.next}return e+=t.join("_"),e+="&se=",e+=n.join("_")},getBody:function(){return this.constraints},getUrl:function(e){return JSON.stringify(this.constraints)}}),SearchConstraintModel}.apply(t,i))||(e.exports=r)},"./js/app/search/views/simple/simplesearchview.js":function(e,t,n){var i,r;i=[n("./node_modules/jquery/dist/jquery.js"),n("./node_modules/underscore/underscore.js"),n("./js/app/common/constants/uiprops.js"),n("./node_modules/custom-backbone/backbone-min.js"),n("./js/app/govinfo.js"),n("./js/app/utils.js"),n("./js/app/search/views/newSearchConstraintModel.js")],void 0===(r=function(e,t,n,i,r,o,a){return r.BaseView.extend({template:"./common/templates/searchwidget/SimpleSearchView.html",useState:!0,events:{"click #searchButton":"onSearch","keyup #searchString":"onKeyup","change #searchWithin":"onSearchWithinChange","focus #searchString":"onFocus"},snippets:{errornotification:"common/templates/errornotification.html"},onSearchWithinChange:function(t){e(t.currentTarget).prop("checked")?(this.withinTemp=this.$("#searchString").val(),this.$("#searchString").val("")):this.$("#searchString").val(this.withinTemp)},onFocus:function(t){e(t.currentTarget).select()},onHashChange:function(){if("search"!=this.getParameter(1))this.$("#searchString").val(""),this.$(".search-within-wrap").addClass("hide");else{var t=this.getParameter(2),i=n.messages.error.GENERAL;if(t)try{t=JSON.parse(decodeURIComponent(t))}catch(t){e('div[data-id="search"]').html(this.snippet("errornotification",{errorText:i}))}t&&t.query?(this.$(".search-within-wrap").removeClass("hide"),this.$("#searchString").val(t.query)):(this.$("#searchString").val(""),this.$(".search-within-wrap").addClass("hide"))}},onKeyup:function(e){13==e.keyCode&&this.onSearch()},onSearch:function(){var t=new a,n=null;"search"==this.getParameter(1)&&(n=this.getParameter(2)),n&&(t.constraints=JSON.parse(decodeURIComponent(n)));var i=this.$("#searchString").val(),s=document.getElementById("alertdiv");if(""!==e.trim(i)){this.$("#searchWithin").prop("checked")?(t.constraints.query=/\S/.test(this.withinTemp)?this.withinTemp+" and "+i:i,this.$("#searchWithin").removeAttr("checked")):(t=new a).constraints.query=i,t.setPageNumber(null),this.getParent().trigger("simplesearch");var c=encodeURIComponent(t.getJSONString());c&&(c=c.replace(/%2F/g,r.apacheEscape)),location.href.indexOf("/app")>=0&&!location.href.indexOf("/appropriations")?history.pushState({},"",location.protocol+"//"+location.hostname+"/app/search/"+c):window.location.href="/app/search/"+c}else""===e.trim(i)&&null==s&&o.showalert("#formErrors","Please enter in a valid search term.","alert-info",5e3)},render:function(){this.onHashChange()}})}.apply(t,i))||(e.exports=r)},"./js/app/tracking.js":function(e,t,n){var i,r;i=[n("./js/app/piwik.js"),n("./node_modules/jquery/dist/jquery.js")],void 0===(r=function(e,t){"use strict";return _paq.push(["setTrackerUrl",tracking_server]),_paq.push(["setSiteId",+tracking_id_site]),_paq.push(["disableCookies"]),_paq.push(["trackPageView"]),t((function(){t("body").on("click","#searchButton",(function(){t("#searchString").val()&&_paq.push(["trackSiteSearch",t("#searchString").val()])}));var e=function(e){var t=document.createElement("a");return t.href=e,t.href},n=new RegExp("(pdf|xls|txt|zip|xml)$");t("body").on("click","a",(function(i){t(this).attr("href")&&(n.test(t(this).attr("href"))?_paq.push(["trackLink",e(t(this).attr("href")),"download"]):_paq.push(["trackLink",e(t(this).attr("href")),"link"]))}))})),_paq}.apply(t,i))||(e.exports=r)},"./js/app/utils.js":function(e,t,n){(function(t){e.exports={parseQueryParametersByName:function(e,t){var n=RegExp(t+"=([^&]*)").exec(e);return n&&decodeURIComponent(n[1].replace(/\+/g," "))},updateQueryStringParameter:function(e,t,n){var i=new RegExp("([?|&])"+t+"=.*?(&|#|$)","i");if(e.match(i))return e.replace(i,"$1"+t+"="+n+"$2");var r="",o=-1!==e.indexOf("?")?"&":"?";return-1!==e.indexOf("#")&&(r=e.replace(/.*#/,"#"),e=e.replace(/#.*/,"")),e+o+t+"="+n+r},getBrowsePathAndCollectionCodeFromHash:function(e){var t={};return t.hash=e||window.location.hash,t.href=t.hash.substring(t.hash.indexOf("/")),t.path=t.href.substring(1),t.collectionCode=-1==t.path.indexOf("/")?t.path.toLowerCase():t.path.substr(0,t.path.indexOf("/")).toLowerCase(),t.browsePath=t.path.substr(t.path.indexOf("/")+1),t},returnRefinedURL:function(e,t){var n=t.split("&").filter((function(t){return 0!==t.indexOf(e)})).join("&");return"&".concat(n)},StringUtilsExists:function(e){return void 0!==e&&("NULL"!=e&&null!=e)},spinner:function(e){t(e).after("<img src='/fdsysnew/css/images/image_worms_black.gif' alt='loading' />").fadeIn()},showalert:function(e,n,i,r){t(e).append('<div id="alertdiv" class="alert '+i+'"><span>'+n+"</span></div>"),setTimeout((function(){t("#alertdiv").remove()}),r)},convertDashYYYYMMDDToSlashMMDDYYY:function(e){var t=e.split("-");return t[1]+"/"+t[2]+"/"+t[0]},endsWith:function(e,t){var n=e.length-t.length;return n>=0&&e.lastIndexOf(t)===n},convertSlashMMDDYYYToDashYYYYMMDD:function(e){var t=e.split("/");return t[2]+"/"+t[0]+"/"+t[1]},substringSearchURL:function(e,t){return e.split(t+"=")[1]},isDeviceMobile:function(){var e={Android:function(){return navigator.userAgent.match(/Android/i)&&navigator.userAgent.match(/mobile|Mobile/i)},BlackBerry:function(){return navigator.userAgent.match(/BlackBerry/i)||navigator.userAgent.match(/BB10; Touch/)},iOS:function(){return navigator.userAgent.match(/iPhone|iPod/i)},Opera:function(){return navigator.userAgent.match(/Opera Mini/i)},Windows:function(){return navigator.userAgent.match(/IEMobile/i)||navigator.userAgent.match(/webOS/i)},any:function(){return e.Android()||e.BlackBerry()||e.iOS()||e.Opera()||e.Windows()}};return e.any()}}}).call(this,n("./node_modules/jquery/dist/jquery.js"))}}]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9qcy9hcHAvY29tbW9uL3ZpZXdzL05ld0RhdGVGb3JtYXQuanMiLCJ3ZWJwYWNrOi8vLy4vanMvYXBwL2NvbW1vbi92aWV3cy9OZXdEYXRlUmFuZ2VWaWV3LmpzIiwid2VicGFjazovLy8uL2pzL2FwcC9jb21tb24vdmlld3MvYmFzZXZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vanMvYXBwL2NvbW1vbi92aWV3cy9ub3RpZmljYXRpb252aWV3LmpzIiwid2VicGFjazovLy8uL2pzL2FwcC9jb21tb24vdmlld3Mvc2VhcmNod2lkZ2V0dmlldy5qcyIsIndlYnBhY2s6Ly8vLi9qcy9hcHAvcGl3aWsuanMiLCJ3ZWJwYWNrOi8vLy4vanMvYXBwL3NlYXJjaC92aWV3cy9hZHZhbmNlZC9hZHZhbmNlZHNlYXJjaHdpZGdldHZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vanMvYXBwL3NlYXJjaC92aWV3cy9jaXRhdGlvbi9jaXRhdGlvbnNlYXJjaHdpZGdldHZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vanMvYXBwL3NlYXJjaC92aWV3cy9uZXdTZWFyY2hDb25zdHJhaW50TW9kZWwuanMiLCJ3ZWJwYWNrOi8vLy4vanMvYXBwL3NlYXJjaC92aWV3cy9zaW1wbGUvc2ltcGxlc2VhcmNodmlldy5qcyIsIndlYnBhY2s6Ly8vLi9qcy9hcHAvdHJhY2tpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vanMvYXBwL3V0aWxzLmpzIl0sIm5hbWVzIjpbImRlZmluZSIsInRva2VuIiwidGltZXpvbmUiLCJ0aW1lem9uZUNsaXAiLCJwYWQiLCJkYXRlRm9ybWF0IiwidmFsIiwibGVuIiwiU3RyaW5nIiwibGVuZ3RoIiwiZGF0ZSIsIm1hc2siLCJ1dGMiLCJkRiIsImFyZ3VtZW50cyIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsInRlc3QiLCJ1bmRlZmluZWQiLCJEYXRlIiwiaXNOYU4iLCJTeW50YXhFcnJvciIsIm1hc2tzIiwic2xpY2UiLCJfIiwiZCIsIkQiLCJtIiwieSIsIkgiLCJNIiwicyIsIkwiLCJvIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJmbGFncyIsImRkIiwiZGRkIiwiaTE4biIsImRheU5hbWVzIiwiZGRkZCIsIm1tIiwibW1tIiwibW9udGhOYW1lcyIsIm1tbW0iLCJ5eSIsInl5eXkiLCJoIiwiaGgiLCJISCIsIk1NIiwic3MiLCJsIiwiTWF0aCIsInJvdW5kIiwidCIsInR0IiwiVCIsIlRUIiwiWiIsIm1hdGNoIiwicG9wIiwicmVwbGFjZSIsImZsb29yIiwiYWJzIiwiUyIsIiQwIiwic2hvcnREYXRlIiwibWVkaXVtRGF0ZSIsImxvbmdEYXRlIiwiZnVsbERhdGUiLCJzaG9ydFRpbWUiLCJtZWRpdW1UaW1lIiwibG9uZ1RpbWUiLCJpc29EYXRlIiwiaXNvVGltZSIsImlzb0RhdGVUaW1lIiwiaXNvVXRjRGF0ZVRpbWUiLCIkIiwiQmFja2JvbmUiLCJHb3ZJbmZvIiwidXRpbHMiLCJCYXNlVmlldyIsImV4dGVuZCIsInRlbXBsYXRlIiwiZXZlbnRzIiwiaW5pdGlhbGl6ZSIsIm9wdGlvbnMiLCJ0aGlzIiwicXVlcnlUeXBlIiwicGFyc2VNTVlZWVkiLCJkYXRlU3RyaW5nIiwic3BsaXREYXRlIiwic3BsaXQiLCJzcGxpY2UiLCJqb2luIiwiZ2V0RGF0ZVJhbmdlIiwiZm9ybWF0IiwiZGF0ZVJhbmdlIiwiZGF0ZUZyb20iLCJkZWZhdWx0RGF0ZUZvcm1hdCIsImRhdGVPYmoiLCJkYXRlVG9rZW5zIiwiaXNZZWFyTW9udGgiLCJpc1llYXIiLCJtb250aCIsInBhcnNlSW50IiwieWVhciIsInllYXIxIiwiZm9ybWF0dGVkIiwidmFsMSIsImZvcm1hdHRlZDEiLCJkYXRlVG8iLCJzZXREYXRlUmFuZ2UiLCJmcm9tIiwidG8iLCJkYXRlUmFuZ2VDaGFuZ2VkIiwiZ2V0UXVlcnlTdHJpbmciLCJub3ciLCJ0b2RheSIsImRhdGVGcm9tVmFsIiwiZGF0ZVRvVmFsIiwiZGlkX3BhcnNlX21vbnRoIiwiZGF0ZVNwbGl0IiwiZXhjZXB0aW9uIiwiZGF0ZUlzVmFsdWUiLCJkYXRlSXMiLCJkYXRlQWZ0ZXJWYWx1ZSIsImRhdGVBZnRlciIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZGF0ZUJlZm9yZVZhbHVlIiwiZGF0ZUJlZm9yZSIsImRhdGVGcm9tVmFsdWUiLCJkYXRlRnJvbUZvcm1hdCIsImRhdGVUb1ZhbHVlIiwicmVuZGVyIiwiZGF0ZXBpY2tlciIsInRvZGF5QnRuIiwiYXV0b2Nsb3NlIiwiY2xlYXJCdG4iLCJvcmllbnRhdGlvbiIsInRvZGF5SGlnaGxpZ2h0Iiwib24iLCJlIiwiY3NzIiwiaGlkZSIsImV2ZW50Iiwic2hvdyIsInNwaW5uZXJ0ZW1wbGF0ZSIsImJsb2NraW5ndGVtcGxhdGUiLCJlcnJvcnRlbXBsYXRlcGFnZSIsImVycm9ydGVtcGxhdGVzZWN0aW9uIiwiVmlldyIsImNsb3NlIiwicHJvcCIsImNsb3NpbmciLCJjaGlsZFZpZXdzIiwiZWFjaCIsImNoaWxkIiwiJGVsIiwiY2hpbGRWaWV3czIiLCJvbkNsb3NlIiwiZW1wdHkiLCJ1bmJpbmQiLCJyZW1vdmUiLCJlbCIsImdldFBhcmFtZXRlciIsInBhcmFtZXRlciIsImhhc2giLCJsb2NhdGlvbiIsInBhcmFtcyIsInN1YnN0ciIsImkiLCJ0b2tlbnMiLCJzZXRQYXJhbWV0ZXIiLCJ2YWx1ZSIsInJlcGxhY2VkIiwicHVzaCIsIm5vRW1wdHkiLCJnZXRQYWdlVGl0bGUiLCJnZXRBcHBCYXNlVXJsIiwidXJsIiwiZ2V0QXBwQmFzZVVybFdPQ29udGV4dCIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJnZXRtb2RlbEJhc2VVcmwiLCJnZXRMb2NhdGlvbkJhc2VVcmwiLCJjb21wdXRlZFVybCIsInVybGhvc3QiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJob3N0IiwiaHJlZiIsInBhdGhuYW1lIiwiZ2V0U3Bpbm5lclRlbXBsYXRlIiwiZ2V0QmxvY2tpbmdUZW1wbGF0ZSIsImdldEVycm9yVGVtcGxhdGVQYWdlIiwiZ2V0RXJyb3JUZW1wbGF0ZVNlY3Rpb24iLCJ0YXJnZXRFbGVtZW50IiwidGFnTmFtZSIsImNsYXNzTmFtZSIsImF1dG9tYXRpY0Nsb3NlIiwiZGVmYXVsdE1lc3NhZ2VzIiwiY3NzQ2xhc3NlcyIsInR5cGUiLCJ0ZXh0IiwidGFyZ2V0IiwiaGFzT3duUHJvcGVydHkiLCJjb25zb2xlIiwibG9nIiwiYWRkQ2xhc3MiLCJwcmVwZW5kVG8iLCJOb3RpZmljYXRpb25WaWV3IiwiU2ltcGxlU2VhcmNoVmlldyIsIkFkdmFuY2VkU2VhcmNoVmlldyIsIkNpdGF0aW9uU2VhcmNoVmlldyIsIlRhYlZpZXciLCJDb25zdHJ1Y3RvcnMiLCJwcnVuZWRTdHIiLCJpc0N1c3RvbUFwcCIsInBlcnNpc3RCeSIsInVzZUhhc2giLCJ1c2VTdGF0ZSIsImRvTm90bGVhdmVIaXN0b3J5VHJhaWwiLCJfY2hhbmdlIiwiaWQiLCJsb2FkaW5nVGVtcGxhdGUiLCJyZW5kZXJWaWV3IiwiY2FsbGJhY2siLCJKU09OMiIsIl90eXBlb2YiLCJKU09OIiwic3RyaW5naWZ5IiwicGFyc2UiLCJhIiwiZyIsImIiLCJyIiwiYyIsImoiLCJ0b0pTT04iLCJmIiwiayIsIk51bWJlciIsIlR5cGVFcnJvciIsInAiLCJxIiwibiIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsInUiLCJ3IiwieCIsIkEiLCJCIiwiQyIsIl9fcHJvdG9fXyIsImNvbnN0cnVjdG9yIiwidmFsdWVPZiIsIkUiLCI5MiIsIjM0IiwiOCIsIjEyIiwiMTAiLCIxMyIsIjkiLCJHIiwiSSIsImNoYXJDb2RlQXQiLCJjaGFyQXQiLCJKIiwiRiIsIksiLCJOIiwiZnJvbUNoYXJDb2RlIiwiNDciLCI5OCIsIjExNiIsIjExMCIsIjEwMiIsIjExNCIsIk8iLCJQIiwiUiIsIlEiLCJydW5JbkNvbnRleHQiLCJmdW5jdGlvbiIsIm9iamVjdCIsIm5vZGVUeXBlIiwibW9kdWxlIiwiZ2xvYmFsIiwic2VsZiIsIkpTT04zIiwibm9Db25mbGljdCIsIl9wYXEiLCJQaXdpayIsInNhZmVEZWNvZGVXcmFwcGVyIiwiZGVjb2RlV3JhcHBlciIsInVuZXNjYXBlIiwiaXNEZWZpbmVkIiwiaXNGdW5jdGlvbiIsImlzT2JqZWN0IiwiaXNTdHJpbmciLCJhcHBseSIsInNoaWZ0IiwiYXN5bmNUcmFja2VyIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwiZXhlY3V0ZVBsdWdpbk1ldGhvZCIsInBsdWdpbnMiLCJiZWZvcmVVbmxvYWRIYW5kbGVyIiwiZXhwaXJlRGF0ZVRpbWUiLCJnZXRUaW1lQWxpYXMiLCJsb2FkSGFuZGxlciIsImhhc0xvYWRlZCIsInJlZ2lzdGVyZWRPbkxvYWRIYW5kbGVycyIsImFkZFJlYWR5TGlzdGVuZXIiLCJkb2N1bWVudEFsaWFzIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlYWR5U3RhdGUiLCJkZXRhY2hFdmVudCIsImRvY3VtZW50RWxlbWVudCIsImRvU2Nyb2xsIiwid2luZG93QWxpYXMiLCJ0b3AiLCJzZXRUaW1lb3V0IiwiUmVnRXhwIiwibmF2aWdhdG9yQWxpYXMiLCJ1c2VyQWdlbnQiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJsb2FkU2NyaXB0Iiwic3JjIiwib25yZWFkeXN0YXRlY2hhbmdlIiwib25sb2FkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhcHBlbmRDaGlsZCIsImdldFJlZmVycmVyIiwicmVmZXJyZXIiLCJwYXJlbnQiLCJnZXRQcm90b2NvbFNjaGVtZSIsImV4ZWMiLCJnZXRIb3N0TmFtZSIsInV0ZjhfZW5jb2RlIiwiZW5jb2RlV3JhcHBlciIsInNoYTEiLCJ0b0xvd2VyQ2FzZSIsInVybEZpeHVwIiwibGlua3MiLCJkb21haW5GaXh1cCIsInRpdGxlRml4dXAiLCJnZXRDaGlsZHJlbkZyb21Ob2RlIiwiY2hpbGRyZW4iLCJjaGlsZE5vZGVzIiwiY29udGFpbnNOb2RlRWxlbWVudCIsImNvbnRhaW5zIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJpbmRleE9mQXJyYXkiLCJpbmRleE9mIiwiaXNWaXNpYmxlIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImRlZmF1bHRWaWV3IiwiY3VycmVudFN0eWxlIiwicGFyZW50Tm9kZSIsIm9mZnNldFRvcCIsIm9mZnNldExlZnQiLCJvZmZzZXRIZWlnaHQiLCJvZmZzZXRXaWR0aCIsInNjcm9sbExlZnQiLCJzY3JvbGxUb3AiLCJvZmZzZXRQYXJlbnQiLCJnZXRQaXdpa1VybEZvck92ZXJsYXkiLCJpc092ZXJsYXlTZXNzaW9uIiwibmFtZSIsImluamVjdE92ZXJsYXlTY3JpcHRzIiwiUGl3aWtfT3ZlcmxheV9DbGllbnQiLCJUcmFja2VyIiwidHJhY2tlclVybCIsInNpdGVJZCIsInNldENvb2tpZSIsImNvbmZpZ0Nvb2tpZXNEaXNhYmxlZCIsInNldFRpbWUiLCJnZXRUaW1lIiwiY29va2llIiwidG9HTVRTdHJpbmciLCJnZXRDb29raWUiLCJwdXJpZnkiLCJjb25maWdEaXNjYXJkSGFzaFRhZyIsInJlc29sdmVSZWxhdGl2ZVJlZmVyZW5jZSIsImxhc3RJbmRleE9mIiwiaXNTaXRlSG9zdE5hbWUiLCJjb25maWdIb3N0c0FsaWFzIiwiZ2V0SW1hZ2UiLCJJbWFnZSIsIml0ZXJhdG9yIiwiY29uZmlnVHJhY2tlclVybCIsInNlbmRYbWxIdHRwUmVxdWVzdCIsIlhNTEh0dHBSZXF1ZXN0IiwiQWN0aXZlWE9iamVjdCIsIm9wZW4iLCJzdGF0dXMiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiY29uZmlnUmVxdWVzdENvbnRlbnRUeXBlIiwic2VuZCIsInNldEV4cGlyZURhdGVUaW1lIiwiaGVhcnRCZWF0VXAiLCJoZWFydEJlYXRUaW1lb3V0IiwiY29uZmlnSGVhcnRCZWF0RGVsYXkiLCJoZWFydEJlYXRQaW5nSWZBY3Rpdml0eUFsaWFzIiwibGFzdFRyYWNrZXJSZXF1ZXN0VGltZSIsIm1pbiIsImhlYXJ0QmVhdERvd24iLCJjbGVhclRpbWVvdXQiLCJoZWFydEJlYXRPbkZvY3VzIiwiaGVhcnRCZWF0T25CbHVyIiwic2V0VXBIZWFydEJlYXQiLCJoZWFydEJlYXRTZXRVcCIsIm1ha2VTdXJlVGhlcmVJc0FHYXBBZnRlckZpcnN0VHJhY2tpbmdSZXF1ZXN0VG9QcmV2ZW50TXVsdGlwbGVWaXNpdG9yQ3JlYXRpb24iLCJ0aW1lTmV4dFRyYWNraW5nUmVxdWVzdENhbkJlRXhlY3V0ZWRJbW1lZGlhdGVseSIsInNlbmRSZXF1ZXN0IiwiY29uZmlnRG9Ob3RUcmFjayIsImNvbmZpZ1JlcXVlc3RNZXRob2QiLCJjYW5TZW5kQnVsa1JlcXVlc3QiLCJzZW5kQnVsa1JlcXVlc3QiLCJnZXRDb29raWVOYW1lIiwiY29uZmlnQ29va2llTmFtZVByZWZpeCIsImNvbmZpZ1RyYWNrZXJTaXRlSWQiLCJkb21haW5IYXNoIiwiaGFzQ29va2llcyIsImNvb2tpZUVuYWJsZWQiLCJ1cGRhdGVEb21haW5IYXNoIiwiY29uZmlnQ29va2llRG9tYWluIiwiZG9tYWluQWxpYXMiLCJjb25maWdDb29raWVQYXRoIiwiZ2V0Q3VzdG9tVmFyaWFibGVzRnJvbUNvb2tpZSIsImxvYWRDdXN0b21WYXJpYWJsZXMiLCJjdXN0b21WYXJpYWJsZXMiLCJnZW5lcmF0ZVJhbmRvbVV1aWQiLCJwbGF0Zm9ybSIsImJyb3dzZXJGZWF0dXJlcyIsInJhbmRvbSIsImxvYWRWaXNpdG9ySWRDb29raWUiLCJ1bnNoaWZ0IiwidmlzaXRvclVVSUQiLCJnZXRWYWx1ZXNGcm9tVmlzaXRvcklkQ29va2llIiwibmV3VmlzaXRvciIsInV1aWQiLCJjcmVhdGVUcyIsInZpc2l0Q291bnQiLCJjdXJyZW50VmlzaXRUcyIsImxhc3RWaXNpdFRzIiwibGFzdEVjb21tZXJjZU9yZGVyVHMiLCJnZXRSZW1haW5pbmdWaXNpdG9yQ29va2llVGltZW91dCIsImNvbmZpZ1Zpc2l0b3JDb29raWVUaW1lb3V0Iiwic2V0VmlzaXRvcklkQ29va2llIiwibG9hZFJlZmVycmVyQXR0cmlidXRpb25Db29raWUiLCJkZWxldGVDb29raWUiLCJpc1Bvc3NpYmxlVG9TZXRDb29raWVPbkRvbWFpbiIsImRlbGV0ZUNvb2tpZXMiLCJzZXRTaXRlSWQiLCJzb3J0T2JqZWN0QnlLZXlzIiwic29ydCIsInNldFNlc3Npb25Db29raWUiLCJjb25maWdTZXNzaW9uQ29va2llVGltZW91dCIsImdldFJlcXVlc3QiLCJjb25maWdDdXN0b21VcmwiLCJsb2NhdGlvbkhyZWZBbGlhcyIsInYiLCJjaGFyYWN0ZXJTZXQiLCJjaGFyc2V0IiwiY29uZmlnQ29udmVyc2lvbkF0dHJpYnV0aW9uRmlyc3RSZWZlcnJlciIsImNvbmZpZ0NhbXBhaWduTmFtZVBhcmFtZXRlcnMiLCJjb25maWdDYW1wYWlnbktleXdvcmRQYXJhbWV0ZXJzIiwiY29uZmlnUmVmZXJyZXJVcmwiLCJjb25maWdSZWZlcnJhbENvb2tpZVRpbWVvdXQiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiY29uZmlnVXNlcklkIiwiY29uZmlnQ3VzdG9tRGF0YSIsInoiLCJjdXN0b21WYXJpYWJsZXNQYWdlIiwiY3VzdG9tVmFyaWFibGVzRXZlbnQiLCJjb25maWdTdG9yZUN1c3RvbVZhcmlhYmxlc0luQ29va2llIiwiY29uZmlnUGVyZm9ybWFuY2VUcmFja2luZ0VuYWJsZWQiLCJjb25maWdQZXJmb3JtYW5jZUdlbmVyYXRpb25UaW1lIiwicGVyZm9ybWFuY2VBbGlhcyIsInRpbWluZyIsInJlcXVlc3RTdGFydCIsInJlc3BvbnNlRW5kIiwiY29uZmlnQXBwZW5kVG9UcmFja2luZ1VybCIsImNvbmZpZ0N1c3RvbVJlcXVlc3RDb250ZW50UHJvY2Vzc2luZyIsImxvZ0Vjb21tZXJjZSIsImVjb21tZXJjZUl0ZW1zIiwiY29uZmlnVHJhY2tlclBhdXNlIiwibG9nRWNvbW1lcmNlT3JkZXIiLCJsb2dFY29tbWVyY2VDYXJ0VXBkYXRlIiwibG9nUGFnZVZpZXciLCJjb25maWdUaXRsZSIsImdldENsYXNzZXNSZWdFeHAiLCJzdGFydHNVcmxXaXRoVHJhY2tlclVybCIsImdldExpbmtUeXBlIiwiY29uZmlnRG93bmxvYWRDbGFzc2VzIiwiY29uZmlnTGlua0NsYXNzZXMiLCJjb25maWdEb3dubG9hZEV4dGVuc2lvbnMiLCJnZXRTb3VyY2VFbGVtZW50IiwicXVlcnkiLCJpc0xpbmtFbGVtZW50IiwiZ2V0TGlua0lmU2hvdWxkQmVQcm9jZXNzZWQiLCJoYXNOb2RlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlVmFsdWVGcm9tTm9kZSIsImJ1aWxkQ29udGVudEludGVyYWN0aW9uUmVxdWVzdCIsImNvbnRlbnQiLCJidWlsZEludGVyYWN0aW9uUmVxdWVzdFBhcmFtcyIsImJ1aWxkQ29udGVudEludGVyYWN0aW9uVHJhY2tpbmdSZWRpcmVjdFVybCIsInRvQWJzb2x1dGVVcmwiLCJpc05vZGVBdXRob3JpemVkVG9UcmlnZ2VySW50ZXJhY3Rpb24iLCJmaW5kVGFyZ2V0Tm9kZSIsInNob3VsZElnbm9yZUludGVyYWN0aW9uIiwiZmluZFRhcmdldE5vZGVOb0RlZmF1bHQiLCJnZXRDb250ZW50SW50ZXJhY3Rpb25Ub1JlcXVlc3RJZlBvc3NpYmxlIiwiZmluZFBhcmVudENvbnRlbnROb2RlIiwiYnVpbGRDb250ZW50QmxvY2siLCJwaWVjZSIsIndhc0NvbnRlbnRJbXByZXNzaW9uQWxyZWFkeVRyYWNrZWQiLCJ0cmFja2VkQ29udGVudEltcHJlc3Npb25zIiwicmVwbGFjZUhyZWZJZkludGVybmFsTGluayIsImxpbmtUcmFja2luZ0VuYWJsZWQiLCJoYXNOb2RlQXR0cmlidXRlV2l0aFZhbHVlIiwiaXNVcmxUb0N1cnJlbnREb21haW4iLCJDT05URU5UX1RBUkdFVF9BVFRSIiwid2FzQ29udGVudFRhcmdldEF0dHJSZXBsYWNlZCIsInNldEFueUF0dHJpYnV0ZSIsInNldEhyZWZBdHRyaWJ1dGUiLCJyZXBsYWNlSHJlZnNJZkludGVybmFsTGluayIsInRyYWNrQ29udGVudEltcHJlc3Npb25DbGlja0ludGVyYWN0aW9uIiwic3JjRWxlbWVudCIsImxpbmtUcmFja2luZ0luc3RhbGxlZCIsInNldHVwSW50ZXJhY3Rpb25zVHJhY2tpbmciLCJjb250ZW50SW50ZXJhY3Rpb25UcmFja2luZ1NldHVwRG9uZSIsImJ1aWxkQ29udGVudEltcHJlc3Npb25zUmVxdWVzdHMiLCJidWlsZEltcHJlc3Npb25SZXF1ZXN0UGFyYW1zIiwiZ2V0Q29udGVudEltcHJlc3Npb25zUmVxdWVzdHNGcm9tTm9kZXMiLCJjb2xsZWN0Q29udGVudCIsImdldEN1cnJlbnRseVZpc2libGVDb250ZW50SW1wcmVzc2lvbnNSZXF1ZXN0c0lmTm90VHJhY2tlZFlldCIsImlzTm9kZVZpc2libGUiLCJidWlsZENvbnRlbnRJbXByZXNzaW9uUmVxdWVzdCIsImJ1aWxkQ29udGVudEludGVyYWN0aW9uUmVxdWVzdE5vZGUiLCJidWlsZEV2ZW50UmVxdWVzdCIsImxvZ0V2ZW50IiwibG9nU2l0ZVNlYXJjaCIsImxvZ0dvYWwiLCJsb2dMaW5rIiwicHJlZml4UHJvcGVydHlOYW1lIiwidG9VcHBlckNhc2UiLCJ0cmFja0NhbGxiYWNrIiwiY29uZmlnQ291bnRQcmVSZW5kZXJlZCIsInRyYWNrQ2FsbGJhY2tPbkxvYWQiLCJ0cmFja0NhbGxiYWNrT25SZWFkeSIsInByb2Nlc3NDbGljayIsImlzSUU4b3JPbGRlciIsImFsbCIsImdldEtleUNvZGVGcm9tRXZlbnQiLCJ3aGljaCIsImJ1dHRvbiIsImdldE5hbWVPZkNsaWNrZWRCdXR0b24iLCJnZXRUYXJnZXRFbGVtZW50RnJvbUV2ZW50IiwiY2xpY2tIYW5kbGVyIiwibGFzdEJ1dHRvbiIsImxhc3RUYXJnZXQiLCJhZGRDbGlja0xpc3RlbmVyIiwiYWRkQ2xpY2tMaXN0ZW5lcnMiLCJjb25maWdJZ25vcmVDbGFzc2VzIiwiZW5hYmxlVHJhY2tPbmx5VmlzaWJsZUNvbnRlbnQiLCJpc1RyYWNrT25seVZpc2libGVDb250ZW50RW5hYmxlZCIsInRyYWNrVmlzaWJsZUNvbnRlbnRJbXByZXNzaW9ucyIsImRldGVjdEJyb3dzZXJGZWF0dXJlcyIsInBkZiIsInF0IiwicmVhbHAiLCJ3bWEiLCJkaXIiLCJmbGEiLCJqYXZhIiwiZ2VhcnMiLCJhZyIsImRldmljZVBpeGVsUmF0aW8iLCJtaW1lVHlwZXMiLCJlbmFibGVkUGx1Z2luIiwibmF2aWdhdG9yIiwiamF2YUVuYWJsZWQiLCJHZWFyc0ZhY3RvcnkiLCJyZXMiLCJzY3JlZW5BbGlhcyIsIndpZHRoIiwiaGVpZ2h0IiwicmVnaXN0ZXJIb29rIiwiaG9va05hbWUiLCJ1c2VySG9vayIsImhvb2tPYmoiLCJyZWdpc3RlcmVkSG9va3MiLCJldmFsIiwibG9jYXRpb25BcnJheSIsImRvbWFpbiIsImVuYWJsZUpTRXJyb3JUcmFja2luZyIsImRlZmF1bHRSZXF1ZXN0TWV0aG9kIiwiZGVmYXVsdFJlcXVlc3RDb250ZW50VHlwZSIsImNvbmZpZ0FwaVVybCIsInRpdGxlIiwiY29uZmlnTWluaW11bVZpc2l0VGltZSIsImN1c3RvbVZhcmlhYmxlTWF4aW11bUxlbmd0aCIsImhvb2siLCJnZXRIb29rIiwiZ2V0UXVlcnkiLCJnZXRDb250ZW50IiwiYXBwZW5kQ29udGVudEludGVyYWN0aW9uVG9SZXF1ZXN0SWZQb3NzaWJsZSIsImludGVybmFsSXNOb2RlVmlzaWJsZSIsImdldENvbmZpZ0Rvd25sb2FkRXh0ZW5zaW9ucyIsImNsZWFyVHJhY2tlZENvbnRlbnRJbXByZXNzaW9ucyIsImdldFRyYWNrZWRDb250ZW50SW1wcmVzc2lvbnMiLCJjbGVhckVuYWJsZVRyYWNrT25seVZpc2libGVDb250ZW50IiwiZGlzYWJsZUxpbmtUcmFja2luZyIsImdldENvbmZpZ1Zpc2l0b3JDb29raWVUaW1lb3V0IiwiZ2V0VmlzaXRvcklkIiwiZ2V0VmlzaXRvckluZm8iLCJnZXRBdHRyaWJ1dGlvbkluZm8iLCJnZXRBdHRyaWJ1dGlvbkNhbXBhaWduTmFtZSIsImdldEF0dHJpYnV0aW9uQ2FtcGFpZ25LZXl3b3JkIiwiZ2V0QXR0cmlidXRpb25SZWZlcnJlclRpbWVzdGFtcCIsImdldEF0dHJpYnV0aW9uUmVmZXJyZXJVcmwiLCJzZXRUcmFja2VyVXJsIiwiZ2V0VHJhY2tlclVybCIsImdldFNpdGVJZCIsInNldFVzZXJJZCIsImdldFVzZXJJZCIsInNldEN1c3RvbURhdGEiLCJnZXRDdXN0b21EYXRhIiwic2V0Q3VzdG9tUmVxdWVzdFByb2Nlc3NpbmciLCJhcHBlbmRUb1RyYWNraW5nVXJsIiwiYWRkUGx1Z2luIiwic2V0Q3VzdG9tVmFyaWFibGUiLCJnZXRDdXN0b21WYXJpYWJsZSIsImRlbGV0ZUN1c3RvbVZhcmlhYmxlIiwic3RvcmVDdXN0b21WYXJpYWJsZXNJbkNvb2tpZSIsInNldExpbmtUcmFja2luZ1RpbWVyIiwic2V0RG93bmxvYWRFeHRlbnNpb25zIiwiYWRkRG93bmxvYWRFeHRlbnNpb25zIiwicmVtb3ZlRG93bmxvYWRFeHRlbnNpb25zIiwic2V0RG9tYWlucyIsInNldElnbm9yZUNsYXNzZXMiLCJzZXRSZXF1ZXN0TWV0aG9kIiwic2V0UmVxdWVzdENvbnRlbnRUeXBlIiwic2V0UmVmZXJyZXJVcmwiLCJzZXRDdXN0b21VcmwiLCJzZXREb2N1bWVudFRpdGxlIiwic2V0QVBJVXJsIiwic2V0RG93bmxvYWRDbGFzc2VzIiwic2V0TGlua0NsYXNzZXMiLCJzZXRDYW1wYWlnbk5hbWVLZXkiLCJzZXRDYW1wYWlnbktleXdvcmRLZXkiLCJkaXNjYXJkSGFzaFRhZyIsInNldENvb2tpZU5hbWVQcmVmaXgiLCJzZXRDb29raWVEb21haW4iLCJzZXRDb29raWVQYXRoIiwic2V0VmlzaXRvckNvb2tpZVRpbWVvdXQiLCJzZXRTZXNzaW9uQ29va2llVGltZW91dCIsInNldFJlZmVycmFsQ29va2llVGltZW91dCIsInNldENvbnZlcnNpb25BdHRyaWJ1dGlvbkZpcnN0UmVmZXJyZXIiLCJkaXNhYmxlQ29va2llcyIsInNldERvTm90VHJhY2siLCJkb05vdFRyYWNrIiwibXNEb05vdFRyYWNrIiwiYWRkTGlzdGVuZXIiLCJlbmFibGVMaW5rVHJhY2tpbmciLCJvbmVycm9yIiwiZGlzYWJsZVBlcmZvcm1hbmNlVHJhY2tpbmciLCJzZXRHZW5lcmF0aW9uVGltZU1zIiwiZW5hYmxlSGVhcnRCZWF0VGltZXIiLCJtYXgiLCJkaXNhYmxlSGVhcnRCZWF0VGltZXIiLCJraWxsRnJhbWUiLCJyZWRpcmVjdEZpbGUiLCJzZXRDb3VudFByZVJlbmRlcmVkIiwidHJhY2tHb2FsIiwidHJhY2tMaW5rIiwidHJhY2tQYWdlVmlldyIsInRyYWNrQWxsQ29udGVudEltcHJlc3Npb25zIiwiZmluZENvbnRlbnROb2RlcyIsInRyYWNrQ29udGVudEltcHJlc3Npb24iLCJ0cmFja0NvbnRlbnRJbXByZXNzaW9uc1dpdGhpbk5vZGUiLCJmaW5kQ29udGVudE5vZGVzV2l0aGluTm9kZSIsInRyYWNrQ29udGVudEludGVyYWN0aW9uIiwidHJhY2tDb250ZW50SW50ZXJhY3Rpb25Ob2RlIiwibG9nQWxsQ29udGVudEJsb2Nrc09uUGFnZSIsInRyYWNrRXZlbnQiLCJ0cmFja1NpdGVTZWFyY2giLCJzZXRFY29tbWVyY2VWaWV3IiwiQXJyYXkiLCJhZGRFY29tbWVyY2VJdGVtIiwidHJhY2tFY29tbWVyY2VPcmRlciIsInRyYWNrRWNvbW1lcmNlQ2FydFVwZGF0ZSIsIlRyYWNrZXJQcm94eSIsImFwcGx5TWV0aG9kc0luT3JkZXIiLCJlcnJvciIsInNjcmVlbiIsInBlcmZvcm1hbmNlIiwibW96UGVyZm9ybWFuY2UiLCJtc1BlcmZvcm1hbmNlIiwid2Via2l0UGVyZm9ybWFuY2UiLCJlbmNvZGVVUklDb21wb25lbnQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ1cmxkZWNvZGUiLCJodG1sQ29sbGVjdGlvblRvQXJyYXkiLCJmaW5kIiwicXVlcnlTZWxlY3RvckFsbCIsImZpbmRNdWx0aXBsZSIsImNvbmNhdCIsIm1ha2VOb2Rlc1VuaXF1ZSIsImZpbmROb2Rlc0J5VGFnTmFtZSIsImdldEF0dHJpYnV0ZSIsImF0dHJpYnV0ZXMiLCJub2RlVmFsdWUiLCJub2RlTmFtZSIsImhhc0F0dHJpYnV0ZSIsImhhc05vZGVDc3NDbGFzcyIsImZpbmROb2Rlc0hhdmluZ0F0dHJpYnV0ZSIsImZpbmRGaXJzdE5vZGVIYXZpbmdBdHRyaWJ1dGUiLCJmaW5kRmlyc3ROb2RlSGF2aW5nQXR0cmlidXRlV2l0aFZhbHVlIiwiZmluZE5vZGVzSGF2aW5nQ3NzQ2xhc3MiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiZmluZEZpcnN0Tm9kZUhhdmluZ0NsYXNzIiwic2V0QXR0cmlidXRlIiwiQ09OVEVOVF9BVFRSIiwiQ09OVEVOVF9DTEFTUyIsIkNPTlRFTlRfTkFNRV9BVFRSIiwiQ09OVEVOVF9QSUVDRV9BVFRSIiwiQ09OVEVOVF9QSUVDRV9DTEFTUyIsIkNPTlRFTlRfVEFSR0VUX0NMQVNTIiwiQ09OVEVOVF9JR05PUkVJTlRFUkFDVElPTl9BVFRSIiwiQ09OVEVOVF9JR05PUkVJTlRFUkFDVElPTl9DTEFTUyIsImZpbmRQaWVjZU5vZGUiLCJmaW5kQ29udGVudE5hbWUiLCJmaW5kQ29udGVudFBpZWNlIiwicmVtb3ZlRG9tYWluSWZJc0luTGluayIsImZpbmRNZWRpYVVybEluTm9kZSIsImZpbmRDb250ZW50VGFyZ2V0IiwiaXNTYW1lRG9tYWluIiwiZ2V0TG9jYXRpb24iLCJvcmlnaW4iLCJzZWFyY2giLCJ0cmltIiwiaXNPcldhc05vZGVJblZpZXdwb3J0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xpZW50V2lkdGgiLCJpbm5lcldpZHRoIiwiY2xpZW50SGVpZ2h0IiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJyaWdodCIsImxlZnQiLCJzZXRMb2NhdGlvbiIsInBvcnQiLCJhcHBseUZpcnN0IiwiZ2V0VHJhY2tlciIsImdldEFzeW5jVHJhY2tlciIsInBpd2lrQXN5bmNJbml0IiwiQW5hbHl0aWNzVHJhY2tlciIsInBpd2lrX2xvZyIsInBpd2lrX3RyYWNrIiwiTmV3RGF0ZVJhbmdlVmlldyIsIlNlYXJjaENvbnN0cmFpbnRNb2RlbCIsImRvTm90S2lsbERpdiIsInN0YXRlUGF0aCIsIl9nZXRDb2xsZWN0aW9ucyIsImNvbGxlY3Rpb25zIiwiJGFycmF5IiwiZGF0YSIsImdldEhpc3RvcnlVcmwiLCJoaXN0b3J5Iiwic2VsZWN0RGF0ZVJhbmdlVmlldyIsIiRob2xkZXJzIiwiZmllbGRzIiwiJGgiLCJmaWVsZCIsInN0ciIsImVuY29kZVVSSSIsIl9zaG93SGlzdG9yeVVybCIsInB1dEZvcm0iLCJfc3RvcEhpc3RvcnkiLCJwb3B1bGF0ZUJ5Q29sbGVjdGlvbiIsIiRzIiwiX29uU2VhcmNoSW5TZWxlY3QiLCIkZGF0YSIsImZ2IiwiZ2V0SGlzdG9yeSIsIl9nZXRGaWVsZHMiLCJmaWVsZE5hbWUiLCJhamF4IiwiZGF0YVR5cGUiLCJwcm9jZXNzRGF0YSIsImNvbnRlbnRUeXBlIiwic3VjY2VzcyIsImNiIiwiYXNGaWVsZCIsIl9tYXBGaWVsZHMiLCIkZGl2IiwiJHJpZ2h0IiwiaHRtbCIsIiRpbnB1dCIsIiRzZWxlY3QiLCJhcHBlbmQiLCJkaXNwbGF5IiwiJGRpdjIiLCJ2aWFGYWNldHMiLCJwcmVsb2FkRGF0YUFzeW5jIiwicmVzdWx0IiwiaXNDb2xsZWN0aW9ucyIsInNvcnRCeSIsImRpc3BsYXlWYWx1ZSIsIl9hbGxGaWVsZHMiLCJiaW5kIiwiZ2V0SlNPTiIsImluc3RhbnRpYXRlIiwibGlzdGVuVG8iLCJnZXRQYXJlbnQiLCJvblNpbXBsZVNlYXJjaCIsImRlc3Ryb3kiLCJzZXRFbGVtZW50IiwicHV0SW5Ib2xkZXJzIiwidGVtcEhvbGRlcnMiLCJwdXRJbkZpZWxkcyIsInNob3dIaXN0b3J5VXJsIiwiJGJvb2ttYXJrX3BsYWNlaG9sZGVyIiwiY29weUJveCIsImZhZGVJbiIsImNvcHlTaGFyZVVybCIsImJvb2ttYXJrIiwiZ2V0RWxlbWVudEJ5SWQiLCJjdXJyZW50VGFyZ2V0Iiwibm9IaXN0b3J5IiwiY29sbGVjdGlvbkFycmF5IiwiJGhhemFhIiwiY2xhc3NTdHIiLCJjaGFuZ2UiLCJjaGVja2VkIiwiY3IiLCJjclZhbHVlIiwiY29uc3RyYWludE1vZGVsIiwic2V0UGFnZU51bWJlciIsInF1ZXJ5UGFyYW1zIiwiY29uc3RyYWludHMiLCJmYWNldHMiLCJmaWx0ZXJPcmRlciIsImNvbGxlY3Rpb25TdHIiLCJfZ2V0Q29sbGVjdGlvbnNTdHIiLCJkYXRlUmFuZ2VTdHIiLCJzZWFyY2hJblN0ciIsIl9nZXRTZWFyY2hJblN0ciIsImhpc3RvcmljYWwiLCJjb25zdHJhaW50U3RyIiwiZ2V0SlNPTlN0cmluZyIsImFwYWNoZUVzY2FwZSIsIiRzZWwiLCJzbmlwcGV0cyIsIl9nZXRTZWFyY2hKc29uIiwic2hhcmVNb2RhbCIsIiRjdXJyZW50VGFyZ2V0IiwiaW5BcnJheSIsImNsYXNzTGlzdCIsImNsb3Nlc3QiLCJhZnRlciIsInNuaXBwZXQiLCJzaGFyZU1vZGFsRGF0YSIsInJlbW92ZU1vZGFsIiwiZm9yRWFjaCIsImZhZGVPdXQiLCJzdHlsZSIsIm92ZXJmbG93IiwiYm9keSIsInNjcm9sbCIsImNvcHlMaW5rVXJsIiwib25Gb3JtQ29udHJvbENoYW5nZSIsImhhc0NsYXNzIiwianNvbiIsImVyciIsIiRkeW5hbWljIiwiY29sbGVjdGlvbiIsIm9wdGlvbnNBcnIiLCJzZWxlY3RPcHRpb25zIiwic2VhcmNoQ3JpdGVyaWEiLCJhdHRyIiwicG9zdEpTT04iLCJvbkNsb3NlQWxlcnQiLCJzdG9wUHJvcGFnYXRpb24iLCJvbkNvbGxlY3Rpb25DaGFuZ2UiLCJub1ZvbGFkaXRpb24iLCIkaW5wdXRzIiwiZHluYW1pYyIsInJlcXVpcmVkIiwib25TZWFyY2giLCJyZW1vdmVDbGFzcyIsInNob3dQYW5lbCIsInJlc3VsdHMiLCJfdGhpcyIsIm1zZyIsImh0bWxmaWxlIiwibGFzdGRvdCIsIm90aGVyMWZpbGUiLCJzdWJzdHJpbmciLCJvdGhlcjJmaWxlIiwiZGV0YWlsc3VybCIsInNldE92ZXJsYXkiLCJyZW1vdmVPdmVybGF5IiwicmVkaXJlY3RVcmwiLCJ0cmlnZ2VyIiwic2VsZWN0RmllbGQiLCJQb3N0Q29uc3RyYWludE1vZGVsIiwiYWRkTmF2aWdhdG9yIiwidGVtcCIsImZvdW5kIiwidmFsdWVzIiwibmV4dCIsInBhZ2VOdW1iZXIiLCJvZmZzZXQiLCJnZXRQYWdlTnVtYmVyIiwic2V0UGFnZVNpemUiLCJwYWdlU2l6ZSIsImdldFBhZ2VTaXplIiwiX2dldE5hdmlnYXRvclN0ciIsImZpZWxkQXJyYXkiLCJ2YWx1ZUFycmF5IiwiYXJyYXkiLCJnZXRCb2R5IiwiZ2V0VXJsIiwidWlwcm9wcyIsIm9uU2VhcmNoV2l0aGluQ2hhbmdlIiwid2l0aGluVGVtcCIsIm9uRm9jdXMiLCJzZWxlY3QiLCJvbkhhc2hDaGFuZ2UiLCJlcnJvclRleHQiLCJtZXNzYWdlcyIsIm9uS2V5dXAiLCJrZXlDb2RlIiwic2VhcmNoU3RyaW5nIiwiYWxlcnRJZCIsInJlbW92ZUF0dHIiLCJwdXNoU3RhdGUiLCJzaG93YWxlcnQiLCJwaXdpayIsInRyYWNraW5nX3NlcnZlciIsInRyYWNraW5nX2lkX3NpdGUiLCJhYnNvbHV0ZVBhdGgiLCJsaW5rIiwiZGxfcmV4IiwiJGV2ZW50IiwicGFyc2VRdWVyeVBhcmFtZXRlcnNCeU5hbWUiLCJwYXJhbWV0ZXJuYW1lIiwidXBkYXRlUXVlcnlTdHJpbmdQYXJhbWV0ZXIiLCJ1cmkiLCJrZXkiLCJyZSIsInNlcGFyYXRvciIsImdldEJyb3dzZVBhdGhBbmRDb2xsZWN0aW9uQ29kZUZyb21IYXNoIiwiYnJvd3NlVmFsdWVzIiwicmV0dXJuUmVmaW5lZFVSTCIsInF1ZXJ5c3RyaW5nIiwicmVmaW5lZEtleVZhbHVlcyIsImZpbHRlciIsImtleVZhbHVlUGFpciIsIlN0cmluZ1V0aWxzRXhpc3RzIiwiZWxlbWVudCIsInNwaW5uZXIiLCJhbGVydGRpdiIsIm1lc3NhZ2UiLCJhbGVydHR5cGUiLCJzZWNvbmRzIiwiY29udmVydERhc2hZWVlZTU1ERFRvU2xhc2hNTUREWVlZIiwid3JrZGF0ZSIsImVuZHNXaXRoIiwicGF0dGVybnN0cmluZyIsInBhdHRlcm4iLCJjb252ZXJ0U2xhc2hNTUREWVlZVG9EYXNoWVlZWU1NREQiLCJzdWJzdHJpbmdTZWFyY2hVUkwiLCJxdWVyeVN0cmluZyIsInBhcmFtTmFtZSIsImlzRGV2aWNlTW9iaWxlIiwi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R0FBSyxJQUFNQSxFQUFRLEdBQUssSUFBTUEsRUFBUSxJQUl2REMsU0FBVyxTQUFTQyxFQUFjQyxHQUM5QixJQUFJcjhCLEVBQUlvOEIsRUFBY3Q5QixPQUFTdTlCLEVBQVF2OUIsT0FDdkMsT0FBT2tCLEdBQUssR0FBS284QixFQUFjL2tCLFlBQVlnbEIsS0FBYXI4QixHQUk1RHM4QixrQ0FBb0MsU0FBaUJ2OUIsR0FDbkQsSUFBSW05QixFQUFVbjlCLEVBQUtxRixNQUFNLEtBQ3pCLE9BQU84M0IsRUFBUSxHQUFLLElBQU1BLEVBQVEsR0FBSyxJQUFNQSxFQUFRLElBSXZESyxtQkFBbUIsU0FBU0MsRUFBWUMsR0FFckMsT0FEcUJELEVBQVlwNEIsTUFBTXE0QixFQUFVLEtBQzNCLElBS3pCQyxlQUFlLFdBQ2QsSUFBSUMsRUFBVyxDQUNkQyxRQUFTLFdBQ0wsT0FBTy9ZLFVBQVVyUSxVQUFVclIsTUFBTSxhQUFlMGhCLFVBQVVyUSxVQUFVclIsTUFBTSxtQkFFOUUwNkIsV0FBWSxXQUNSLE9BQU9oWixVQUFVclEsVUFBVXJSLE1BQU0sZ0JBQWlCMGhCLFVBQVVyUSxVQUFVclIsTUFBTSxnQkFFaEYyNkIsSUFBSyxXQUNELE9BQU9qWixVQUFVclEsVUFBVXJSLE1BQU0saUJBRXJDNDZCLE1BQU8sV0FDSCxPQUFPbFosVUFBVXJRLFVBQVVyUixNQUFNLGdCQUVyQzY2QixRQUFTLFdBQ0wsT0FBT25aLFVBQVVyUSxVQUFVclIsTUFBTSxjQUFnQjBoQixVQUFVclEsVUFBVXJSLE1BQU0sV0FFL0U4NkIsSUFBSyxXQUNELE9BQVFOLEVBQVNDLFdBQWFELEVBQVNFLGNBQWdCRixFQUFTRyxPQUFTSCxFQUFTSSxTQUFXSixFQUFTSyxZQUczRyxPQUFPTCxFQUFTTSxVIiwiZmlsZSI6IjMuYnVuZGxlLjYuMjQuMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImRlZmluZShbXSwgZnVuY3Rpb24oKSB7XG4vL3doeSB1c2UgTW9tZW50IHdoZW4gdGhpcyBpcyAxMDAwIHRpbWVzIHNtYWxsZXI/XG4gLypcbiAgICAgKiBEYXRlIEZvcm1hdCAxLjIuM1xuICAgICAqIChjKSAyMDA3LTIwMDkgU3RldmVuIExldml0aGFuIDxzdGV2ZW5sZXZpdGhhbi5jb20+XG4gICAgICogTUlUIGxpY2Vuc2VcbiAgICAgKlxuICAgICAqIEluY2x1ZGVzIGVuaGFuY2VtZW50cyBieSBTY290dCBUcmVuZGEgPHNjb3R0LnRyZW5kYS5uZXQ+XG4gICAgICogYW5kIEtyaXMgS293YWwgPGNpeGFyLmNvbS9+a3Jpcy5rb3dhbC8+XG4gICAgICpcbiAgICAgKiBBY2NlcHRzIGEgZGF0ZSwgYSBtYXNrLCBvciBhIGRhdGUgYW5kIGEgbWFzay5cbiAgICAgKiBSZXR1cm5zIGEgZm9ybWF0dGVkIHZlcnNpb24gb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogVGhlIGRhdGUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZGF0ZS90aW1lLlxuICAgICAqIFRoZSBtYXNrIGRlZmF1bHRzIHRvIGRhdGVGb3JtYXQubWFza3MuZGVmYXVsdC5cbiAgICAgKi9cblxuICAgIHZhciBkYXRlRm9ybWF0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgICAgdG9rZW4gPSAvZHsxLDR9fG17MSw0fXx5eSg/Onl5KT98KFtIaE1zVHRdKVxcMT98W0xsb1NaXXxcIlteXCJdKlwifCdbXiddKicvZyxcbiAgICAgICAgICAgIHRpbWV6b25lID0gL1xcYig/OltQTUNFQV1bU0RQXVR8KD86UGFjaWZpY3xNb3VudGFpbnxDZW50cmFsfEVhc3Rlcm58QXRsYW50aWMpICg/OlN0YW5kYXJkfERheWxpZ2h0fFByZXZhaWxpbmcpIFRpbWV8KD86R01UfFVUQykoPzpbLStdXFxkezR9KT8pXFxiL2csXG4gICAgICAgICAgICB0aW1lem9uZUNsaXAgPSAvW14tK1xcZEEtWl0vZyxcbiAgICAgICAgICAgIHBhZCA9IGZ1bmN0aW9uICh2YWwsIGxlbikge1xuICAgICAgICAgICAgICAgIHZhbCA9IFN0cmluZyh2YWwpO1xuICAgICAgICAgICAgICAgIGxlbiA9IGxlbiB8fCAyO1xuICAgICAgICAgICAgICAgIHdoaWxlICh2YWwubGVuZ3RoIDwgbGVuKSB2YWwgPSBcIjBcIiArIHZhbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgfTtcbiAgICBcbiAgICAgICAgLy8gUmVnZXhlcyBhbmQgc3VwcG9ydGluZyBmdW5jdGlvbnMgYXJlIGNhY2hlZCB0aHJvdWdoIGNsb3N1cmVcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChkYXRlLCBtYXNrLCB1dGMpIHtcbiAgICAgICAgICAgIHZhciBkRiA9IGRhdGVGb3JtYXQ7XG4gICAgXG4gICAgICAgICAgICAvLyBZb3UgY2FuJ3QgcHJvdmlkZSB1dGMgaWYgeW91IHNraXAgb3RoZXIgYXJncyAodXNlIHRoZSBcIlVUQzpcIiBtYXNrIHByZWZpeClcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGRhdGUpID09IFwiW29iamVjdCBTdHJpbmddXCIgJiYgIS9cXGQvLnRlc3QoZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICBtYXNrID0gZGF0ZTtcbiAgICAgICAgICAgICAgICBkYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgLy8gUGFzc2luZyBkYXRlIHRocm91Z2ggRGF0ZSBhcHBsaWVzIERhdGUucGFyc2UsIGlmIG5lY2Vzc2FyeVxuICAgICAgICAgICAgZGF0ZSA9IGRhdGUgPyBuZXcgRGF0ZShkYXRlKSA6IG5ldyBEYXRlO1xuICAgICAgICAgICAgaWYgKGlzTmFOKGRhdGUpKSB0aHJvdyBTeW50YXhFcnJvcihcImludmFsaWQgZGF0ZVwiKTtcbiAgICBcbiAgICAgICAgICAgIG1hc2sgPSBTdHJpbmcoZEYubWFza3NbbWFza10gfHwgbWFzayB8fCBkRi5tYXNrc1tcImRlZmF1bHRcIl0pO1xuICAgIFxuICAgICAgICAgICAgLy8gQWxsb3cgc2V0dGluZyB0aGUgdXRjIGFyZ3VtZW50IHZpYSB0aGUgbWFza1xuICAgICAgICAgICAgaWYgKG1hc2suc2xpY2UoMCwgNCkgPT0gXCJVVEM6XCIpIHtcbiAgICAgICAgICAgICAgICBtYXNrID0gbWFzay5zbGljZSg0KTtcbiAgICAgICAgICAgICAgICB1dGMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgdmFyICAgIF8gPSB1dGMgPyBcImdldFVUQ1wiIDogXCJnZXRcIixcbiAgICAgICAgICAgICAgICBkID0gZGF0ZVtfICsgXCJEYXRlXCJdKCksXG4gICAgICAgICAgICAgICAgRCA9IGRhdGVbXyArIFwiRGF5XCJdKCksXG4gICAgICAgICAgICAgICAgbSA9IGRhdGVbXyArIFwiTW9udGhcIl0oKSxcbiAgICAgICAgICAgICAgICB5ID0gZGF0ZVtfICsgXCJGdWxsWWVhclwiXSgpLFxuICAgICAgICAgICAgICAgIEggPSBkYXRlW18gKyBcIkhvdXJzXCJdKCksXG4gICAgICAgICAgICAgICAgTSA9IGRhdGVbXyArIFwiTWludXRlc1wiXSgpLFxuICAgICAgICAgICAgICAgIHMgPSBkYXRlW18gKyBcIlNlY29uZHNcIl0oKSxcbiAgICAgICAgICAgICAgICBMID0gZGF0ZVtfICsgXCJNaWxsaXNlY29uZHNcIl0oKSxcbiAgICAgICAgICAgICAgICBvID0gdXRjID8gMCA6IGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSxcbiAgICAgICAgICAgICAgICBmbGFncyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZDogICAgZCxcbiAgICAgICAgICAgICAgICAgICAgZGQ6ICAgcGFkKGQpLFxuICAgICAgICAgICAgICAgICAgICBkZGQ6ICBkRi5pMThuLmRheU5hbWVzW0RdLFxuICAgICAgICAgICAgICAgICAgICBkZGRkOiBkRi5pMThuLmRheU5hbWVzW0QgKyA3XSxcbiAgICAgICAgICAgICAgICAgICAgbTogICAgbSArIDEsXG4gICAgICAgICAgICAgICAgICAgIG1tOiAgIHBhZChtICsgMSksXG4gICAgICAgICAgICAgICAgICAgIG1tbTogIGRGLmkxOG4ubW9udGhOYW1lc1ttXSxcbiAgICAgICAgICAgICAgICAgICAgbW1tbTogZEYuaTE4bi5tb250aE5hbWVzW20gKyAxMl0sXG4gICAgICAgICAgICAgICAgICAgIHl5OiAgIFN0cmluZyh5KS5zbGljZSgyKSxcbiAgICAgICAgICAgICAgICAgICAgeXl5eTogeSxcbiAgICAgICAgICAgICAgICAgICAgaDogICAgSCAlIDEyIHx8IDEyLFxuICAgICAgICAgICAgICAgICAgICBoaDogICBwYWQoSCAlIDEyIHx8IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgSDogICAgSCxcbiAgICAgICAgICAgICAgICAgICAgSEg6ICAgcGFkKEgpLFxuICAgICAgICAgICAgICAgICAgICBNOiAgICBNLFxuICAgICAgICAgICAgICAgICAgICBNTTogICBwYWQoTSksXG4gICAgICAgICAgICAgICAgICAgIHM6ICAgIHMsXG4gICAgICAgICAgICAgICAgICAgIHNzOiAgIHBhZChzKSxcbiAgICAgICAgICAgICAgICAgICAgbDogICAgcGFkKEwsIDMpLFxuICAgICAgICAgICAgICAgICAgICBMOiAgICBwYWQoTCA+IDk5ID8gTWF0aC5yb3VuZChMIC8gMTApIDogTCksXG4gICAgICAgICAgICAgICAgICAgIHQ6ICAgIEggPCAxMiA/IFwiYVwiICA6IFwicFwiLFxuICAgICAgICAgICAgICAgICAgICB0dDogICBIIDwgMTIgPyBcImFtXCIgOiBcInBtXCIsXG4gICAgICAgICAgICAgICAgICAgIFQ6ICAgIEggPCAxMiA/IFwiQVwiICA6IFwiUFwiLFxuICAgICAgICAgICAgICAgICAgICBUVDogICBIIDwgMTIgPyBcIkFNXCIgOiBcIlBNXCIsXG4gICAgICAgICAgICAgICAgICAgIFo6ICAgIHV0YyA/IFwiVVRDXCIgOiAoU3RyaW5nKGRhdGUpLm1hdGNoKHRpbWV6b25lKSB8fCBbXCJcIl0pLnBvcCgpLnJlcGxhY2UodGltZXpvbmVDbGlwLCBcIlwiKSxcbiAgICAgICAgICAgICAgICAgICAgbzogICAgKG8gPiAwID8gXCItXCIgOiBcIitcIikgKyBwYWQoTWF0aC5mbG9vcihNYXRoLmFicyhvKSAvIDYwKSAqIDEwMCArIE1hdGguYWJzKG8pICUgNjAsIDQpLFxuICAgICAgICAgICAgICAgICAgICBTOiAgICBbXCJ0aFwiLCBcInN0XCIsIFwibmRcIiwgXCJyZFwiXVtkICUgMTAgPiAzID8gMCA6IChkICUgMTAwIC0gZCAlIDEwICE9IDEwKSAqIGQgJSAxMF1cbiAgICAgICAgICAgICAgICB9O1xuICAgIFxuICAgICAgICAgICAgcmV0dXJuIG1hc2sucmVwbGFjZSh0b2tlbiwgZnVuY3Rpb24gKCQwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQwIGluIGZsYWdzID8gZmxhZ3NbJDBdIDogJDAuc2xpY2UoMSwgJDAubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9KCk7XG4gICAgXG4gICAgLy8gU29tZSBjb21tb24gZm9ybWF0IHN0cmluZ3NcbiAgICBkYXRlRm9ybWF0Lm1hc2tzID0ge1xuICAgICAgICBcImRlZmF1bHRcIjogICAgICBcImRkZCBtbW0gZGQgeXl5eSBISDpNTTpzc1wiLFxuICAgICAgICBzaG9ydERhdGU6ICAgICAgXCJtL2QveXlcIixcbiAgICAgICAgbWVkaXVtRGF0ZTogICAgIFwibW1tIGQsIHl5eXlcIixcbiAgICAgICAgbG9uZ0RhdGU6ICAgICAgIFwibW1tbSBkLCB5eXl5XCIsXG4gICAgICAgIGZ1bGxEYXRlOiAgICAgICBcImRkZGQsIG1tbW0gZCwgeXl5eVwiLFxuICAgICAgICBzaG9ydFRpbWU6ICAgICAgXCJoOk1NIFRUXCIsXG4gICAgICAgIG1lZGl1bVRpbWU6ICAgICBcImg6TU06c3MgVFRcIixcbiAgICAgICAgbG9uZ1RpbWU6ICAgICAgIFwiaDpNTTpzcyBUVCBaXCIsXG4gICAgICAgIGlzb0RhdGU6ICAgICAgICBcInl5eXktbW0tZGRcIixcbiAgICAgICAgaXNvVGltZTogICAgICAgIFwiSEg6TU06c3NcIixcbiAgICAgICAgaXNvRGF0ZVRpbWU6ICAgIFwieXl5eS1tbS1kZCdUJ0hIOk1NOnNzXCIsXG4gICAgICAgIGlzb1V0Y0RhdGVUaW1lOiBcIlVUQzp5eXl5LW1tLWRkJ1QnSEg6TU06c3MnWidcIlxuICAgIH07XG4gICAgXG4gICAgLy8gSW50ZXJuYXRpb25hbGl6YXRpb24gc3RyaW5nc1xuICAgIGRhdGVGb3JtYXQuaTE4biA9IHtcbiAgICAgICAgZGF5TmFtZXM6IFtcbiAgICAgICAgICAgIFwiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCIsXG4gICAgICAgICAgICBcIlN1bmRheVwiLCBcIk1vbmRheVwiLCBcIlR1ZXNkYXlcIiwgXCJXZWRuZXNkYXlcIiwgXCJUaHVyc2RheVwiLCBcIkZyaWRheVwiLCBcIlNhdHVyZGF5XCJcbiAgICAgICAgXSxcbiAgICAgICAgbW9udGhOYW1lczogW1xuICAgICAgICAgICAgXCJKYW5cIiwgXCJGZWJcIiwgXCJNYXJcIiwgXCJBcHJcIiwgXCJNYXlcIiwgXCJKdW5cIiwgXCJKdWxcIiwgXCJBdWdcIiwgXCJTZXBcIiwgXCJPY3RcIiwgXCJOb3ZcIiwgXCJEZWNcIixcbiAgICAgICAgICAgIFwiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIiwgXCJBcHJpbFwiLCBcIk1heVwiLCBcIkp1bmVcIiwgXCJKdWx5XCIsIFwiQXVndXN0XCIsIFwiU2VwdGVtYmVyXCIsIFwiT2N0b2JlclwiLCBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIlxuICAgICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiBkYXRlRm9ybWF0O1xufSk7IiwiZGVmaW5lKFtcbiAgICAgICAgXCJqcXVlcnlcIixcbiAgICAgICAgXCJ1bmRlcnNjb3JlXCIsXG4gICAgICAgIFwiYmFja2JvbmVcIixcbiAgICAgICAgXCJnb3ZpbmZvXCIsXG4gICAgICAgIFwidXRpbHNcIixcbiAgICAgICAgXCJjb21tb24vdmlld3MvTmV3RGF0ZUZvcm1hdFwiXG5cbiAgICBdLFxuICAgIGZ1bmN0aW9uKCQsIF8sIEJhY2tib25lLCBHb3ZJbmZvLCB1dGlscywgZGF0ZUZvcm1hdCkge1xuXG4gICAgICAgIHZhciBOZXdEYXRlUmFuZ2VWaWV3ID0gR292SW5mby5CYXNlVmlldy5leHRlbmQoe1xuICAgICAgICAgICAgdGVtcGxhdGU6ICcuL2NvbW1vbi90ZW1wbGF0ZXMvTmV3RGF0ZVJhbmdlVmlld1NlYXJjaC5odG1sJyxcbiAgICAgICAgICAgIGV2ZW50cyA6IHtcbiAgICAgICAgICAgICAgICAnY2hhbmdlICNkYXRlUmFuZ2VTZWxlY3QnIDogJ2RhdGVSYW5nZUNoYW5nZWQnXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSBcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBHb3ZJbmZvLkJhc2VWaWV3LnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVR5cGUgPSBcIkFEXCI7IC8vYWxsIGRhdGVzXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwYXJzZU1NWVlZWSA6IGZ1bmN0aW9uKGRhdGVTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAvL3RyeSBzcGxpdHRpbmcgb24gYSAvXG4gICAgICAgICAgICAgICAgdmFyIHNwbGl0RGF0ZSA9IGRhdGVTdHJpbmcuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgICAvL2lmIHdlIGhhdmUgMiBleGFjdGx5LCB3ZSBoYXZlIDEgc2xhc2ggYW5kIHNwbGl0IGl0IGluIGhhbGZcbiAgICAgICAgICAgICAgICBpZihzcGxpdERhdGUubGVuZ3RoID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB1c2luZyBcIkRhdGUgSXNcIiBvcHRpb24gYW5kIGVudGVyaW5nIGp1c3QgbW9udGggYW5kIHllYXIsIGRvIG5vdCBhZGQgYSBkZWZhdWx0IGRheVxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnF1ZXJ5VHlwZSAhPT0gJ0RJJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXREYXRlLnNwbGljZSgxLCAwLCAnMDEnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3BsaXREYXRlLmpvaW4oJy8nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZVN0cmluZztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERhdGVSYW5nZTogZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRlUmFuZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgIHQgOiB0aGlzLiQoJyNkYXRlUmFuZ2VTZWxlY3QnKS52YWwoKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYoZGF0ZVJhbmdlLnQgPT0gXCJBRFwiKXtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVJhbmdlLmRhdGVGcm9tID0gZGF0ZUZvcm1hdChuZXcgRGF0ZSgpLCBmb3JtYXQgfHwgXCJtbS1kZC15eXl5XCIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZVJhbmdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih0aGlzLiQoJyNkYXRlRnJvbScpLnZhbCgpKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IHRoaXMucGFyc2VNTVlZWVkodGhpcy4kKCcjZGF0ZUZyb20nKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0RGF0ZUZvcm1hdCA9ICdtbS1kZC15eXl5JztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVPYmogPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnF1ZXJ5VHlwZSA9PT0gJ0RJJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVUb2tlbnMgPSB2YWwuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc1llYXJNb250aCA9IChkYXRlVG9rZW5zLmxlbmd0aCA9PT0gMik7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNZZWFyID0gKGRhdGVUb2tlbnMubGVuZ3RoID09PSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzWWVhck1vbnRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vbnRoID0gcGFyc2VJbnQoZGF0ZVRva2Vuc1swXSwgMTApIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KGRhdGVUb2tlbnNbMV0sIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlT2JqID0gbmV3IERhdGUoeWVhciwgbW9udGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHREYXRlRm9ybWF0ID0gJ21tLXl5eXknXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoaXNZZWFyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHllYXIxID0gcGFyc2VJbnQoZGF0ZVRva2Vuc1swXSwgMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVPYmogPSBuZXcgRGF0ZSh5ZWFyMSwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdERhdGVGb3JtYXQgPSAneXl5eSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVkID0gZGF0ZUZvcm1hdChkYXRlT2JqLCBmb3JtYXQgfHwgZGVmYXVsdERhdGVGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICBkYXRlUmFuZ2UuZGF0ZUZyb20gPSBmb3JtYXR0ZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHRoaXMuJCgnI2RhdGVUbycpLnZhbCgpKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbDEgPSB0aGlzLnBhcnNlTU1ZWVlZKHRoaXMuJCgnI2RhdGVUbycpLnZhbCgpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZvcm1hdHRlZDEgPSBkYXRlRm9ybWF0KG5ldyBEYXRlKHZhbDEpLCBmb3JtYXQgfHwgXCJtbS1kZC15eXl5XCIpO1xuICAgICAgICAgICAgICAgICAgICBkYXRlUmFuZ2UuZGF0ZVRvID0gZm9ybWF0dGVkMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGVSYW5nZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNldERhdGVSYW5nZSA6IGZ1bmN0aW9uKGRhdGVSYW5nZSl7XG4gICAgICAgICAgICAgICAgdmFyIGZyb20gPSBkYXRlUmFuZ2UuZGF0ZUZyb207XG4gICAgICAgICAgICAgICAgdmFyIHRvID0gZGF0ZVJhbmdlLmRhdGVUbztcbiAgICAgICAgICAgICAgICBpZihmcm9tKXtcbiAgICAgICAgICAgICAgICAgICAgZnJvbSA9IGZyb20ucmVwbGFjZSgvXFwtL2csICcvJyk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZVRva2VucyA9IGZyb20uc3BsaXQoJy8nKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBvbmx5IHllYXIgb3IgbW9udGgveWVhciBpcyBwcmVzZW50IGluIHRoZSAnZnJvbScgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nLiBMZXQgJ2Zyb20nIHN0YXkgYXMgaXMuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRlVG9rZW5zLmxlbmd0aCA9PT0gMSB8fCBkYXRlVG9rZW5zLmxlbmd0aCA9PT0gMikgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gZGF0ZUZvcm1hdChuZXcgRGF0ZShmcm9tKSwgXCJtbS9kZC95eXl5XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHRvKXtcbiAgICAgICAgICAgICAgICAgICAgdG8gPSB0by5yZXBsYWNlKC9cXC0vZywgJy8nKTtcbiAgICAgICAgICAgICAgICAgICAgdG8gPSBkYXRlRm9ybWF0KG5ldyBEYXRlKHRvKSwgXCJtbS9kZC95eXl5XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLiQoJyNkYXRlRnJvbScpLnZhbChmcm9tKTtcbiAgICAgICAgICAgICAgICB0aGlzLiQoJyNkYXRlVG8nKS52YWwodG8pO1xuICAgICAgICAgICAgICAgIHRoaXMuJCgnI2RhdGVSYW5nZVNlbGVjdCcpLnZhbChkYXRlUmFuZ2UudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUmFuZ2VDaGFuZ2VkKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXG4gICAgICAgICAgICBnZXRRdWVyeVN0cmluZyA6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgICAgdmFyIHRvZGF5ID0gZGF0ZUZvcm1hdChub3csIFwieXl5eS1tbS1kZFwiKTtcblxuICAgICAgICAgICAgICAgIHZhciBkYXRlRnJvbVZhbCA9IHRoaXMuJCgnI2RhdGVGcm9tJykudmFsKCk7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGVUb1ZhbCA9IHRoaXMuJCgnI2RhdGVUbycpLnZhbCgpO1xuICAgICAgICAgICAgICAgIHZhciBkaWRfcGFyc2VfbW9udGggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBcdC8vc29tZSBjb29sIG1tL3l5eXkgcGFyc2luZzpcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0ZUZyb21WYWwuc3BsaXQoJy8nKS5sZW5ndGggPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRlU3BsaXQgPSBkYXRlRnJvbVZhbC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGFkZCBkYXkgZm9yIERBVEUgSVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRfcGFyc2VfbW9udGggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMucXVlcnlUeXBlID09IFwiRElcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0ZGF0ZVNwbGl0LnNwbGljZSgxLDAsZGF0ZVNwbGl0LnNwbGljZSgwLDEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0ZGF0ZVNwbGl0LnNwbGljZSgxLCAwLCAnMDEnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGcm9tVmFsID0gZGF0ZVNwbGl0LmpvaW4oJy8nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZXhjZXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGVUb1ZhbC5zcGxpdCgnLycpLmxlbmd0aCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRlU3BsaXQgPSBkYXRlVG9WYWwuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlU3BsaXQuc3BsaWNlKDEsIDAsICcwMScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVUb1ZhbCA9IGRhdGVTcGxpdC5qb2luKCcvJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgc3dpdGNoKHRoaXMucXVlcnlUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgY2FzZSBcIkFEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJwdWJsaXNoZGF0ZTpyYW5nZSgsXCIgKyB0b2RheSArIFwiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJESVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZUlzVmFsdWUgPSBkYXRlRnJvbVZhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZUlzID0gbmV3IERhdGUoZGF0ZUlzVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG9ubHkgeWVhciBlbnRlcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0ZUlzVmFsdWUuc3BsaXQoJy8nKS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0cmV0dXJuIFwicHVibGlzaGRhdGU6XCIgKyBkYXRlSXNWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoZGF0ZUlzVmFsdWUuc3BsaXQoJy8nKS5sZW5ndGggPT0gMikgeyAvL2ZvciBwYXJ0aWFsIHllYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGF0ZUlzIHdvdWxkIGJlIGludmFsaWQgaW4gRkYvSUUuIFNvIG5lZWQgdG8gZXh0cmFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB5ZWFyIGFuZCBtb250aCBhbmQgdGhlbiBidWlsZCBhIERhdGUgb2JqZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZVRva2VucyA9IGRhdGVJc1ZhbHVlLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHllYXIgPSBwYXJzZUludChkYXRlVG9rZW5zWzBdLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtb250aCA9IHBhcnNlSW50KGRhdGVUb2tlbnNbMV0sIDEwKSAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHRyZXR1cm4gXCJwdWJsaXNoZGF0ZTpcIiArIGRhdGVGb3JtYXQobmV3IERhdGUoeWVhciwgbW9udGgpLFwieXl5eS1tbVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVJc0Zvcm1hdCA9IGRhdGVGb3JtYXQoZGF0ZUlzLCBcInl5eXktbW0tZGRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwicHVibGlzaGRhdGU6XCIgKyBkYXRlSXNGb3JtYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkRBXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRlQWZ0ZXJWYWx1ZSA9IGRhdGVGcm9tVmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRlQWZ0ZXIgPSBuZXcgRGF0ZShkYXRlQWZ0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0ZUFmdGVyVmFsdWUuc3BsaXQoJy8nKS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBpZiB5b3Ugb25seSBoYXZlIGEgc3BlY2lmaWMgeWVhciwgc2V0IGl0IHRvIHRoZSBlbmQgb2YgdGhlIHllYXIuLi4gKiovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVBZnRlciA9IG5ldyBEYXRlKHBhcnNlSW50KGRhdGVBZnRlclZhbHVlKSsxLCAwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoZGlkX3BhcnNlX21vbnRoID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9hZGQgYSBtb250aCBpZiBtb250aCB3YXMgcGFyc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVBZnRlciA9IG5ldyBEYXRlKGRhdGVBZnRlci5nZXRGdWxsWWVhcigpLCBkYXRlQWZ0ZXIuZ2V0TW9udGgoKSArIDEsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYWRkIGEgZGF5IGlmIGRheSB3YXMgaW5jbHVkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUFmdGVyID0gbmV3IERhdGUoZGF0ZUFmdGVyLmdldEZ1bGxZZWFyKCksIGRhdGVBZnRlci5nZXRNb250aCgpLCBkYXRlQWZ0ZXIuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVBZnRlckZvcm1hdCA9IGRhdGVGb3JtYXQoZGF0ZUFmdGVyLCBcInl5eXktbW0tZGRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwicHVibGlzaGRhdGU6cmFuZ2UoXCIgKyBkYXRlQWZ0ZXJGb3JtYXQgKyBcIiwpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiREJcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVCZWZvcmVWYWx1ZSA9IGRhdGVGcm9tVmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRlQmVmb3JlID0gbmV3IERhdGUoZGF0ZUJlZm9yZVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRlQmVmb3JlVmFsdWUuc3BsaXQoJy8nKS5sZW5ndGggPT0gMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIGlmIHlvdSBoYXZlIGEgc3BlY2lmaWMgbW9udGgsIHNldCB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IG1vbnRoLi4uLioqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUJlZm9yZSA9IG5ldyBEYXRlKGRhdGVCZWZvcmUuZ2V0RnVsbFllYXIoKSwgZGF0ZUJlZm9yZS5nZXRNb250aCgpLCBkYXRlQmVmb3JlLmdldERhdGUoKS0xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVCZWZvcmVGb3JtYXQgPSBkYXRlRm9ybWF0KGRhdGVCZWZvcmUsIFwieXl5eS1tbS1kZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJwdWJsaXNoZGF0ZTpyYW5nZSgsXCIgKyBkYXRlQmVmb3JlRm9ybWF0ICsgXCIpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkRCVFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZUZyb21WYWx1ZSA9IGRhdGVGcm9tVmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVGcm9tID0gbmV3IERhdGUoZGF0ZUZyb21WYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0ZUZyb21WYWx1ZS5zcGxpdCgnLycpLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGcm9tID0gbmV3IERhdGUoZGF0ZUZyb20uZ2V0RnVsbFllYXIoKSsxLCAwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZUZyb21Gb3JtYXQgPSBkYXRlRm9ybWF0KGRhdGVGcm9tLCBcInl5eXktbW0tZGRcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZVRvVmFsdWUgPSBkYXRlVG9WYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVUbyA9IG5ldyBEYXRlKGRhdGVUb1ZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiB0aGVzZSBjb25kaXRpb25zIGRvbid0IG1ha2Ugc2Vuc2UgaW4gdGhlIEVuZ2xpc2ggbGFuZ3VhZ2UgKiovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0ZVRvVmFsdWUuc3BsaXQoJy8nKS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaWYgeW91IG9ubHkgaGF2ZSBhIHNwZWNpZmljIHllYXIsIHNldCBpdCB0byB0aGUgZW5kIG9mIHRoZSB5ZWFyLi4uICoqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlVG8gPSBuZXcgRGF0ZShkYXRlVG8uZ2V0RnVsbFllYXIoKSsxLCAxMSwgMzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZihkYXRlVG9WYWx1ZS5zcGxpdCgnLycpLmxlbmd0aCA9PSAzICYmIGRpZF9wYXJzZV9tb250aCA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBpZiB5b3UgaGF2ZSBhIHNwZWNpZmljIG1vbnRoLCBzZXQgdG8gdGhlIGVuZCBvZiB0aGUgbW9udGguLi4uKiovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVUbyA9IG5ldyBEYXRlKGRhdGVUby5nZXRGdWxsWWVhcigpLCBkYXRlVG8uZ2V0TW9udGgoKSArIDEsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVUb0Zvcm1hdCA9IGRhdGVGb3JtYXQoZGF0ZVRvLCBcInl5eXktbW0tZGRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwicHVibGlzaGRhdGU6cmFuZ2UoXCIgKyBkYXRlRnJvbUZvcm1hdCArIFwiLFwiICArIGRhdGVUb0Zvcm1hdCArIFwiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwicHVibGlzaGRhdGU6cmFuZ2UoXCIgKyBub3cgKyBcIixcIiArIG5vdyArIFwiKVwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmVuZGVyIDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgLy90aGlzLiQoJy5hc3d2LWRhdGVwaWNrZXInKS5kYXRlcGlja2VyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kKCcuYXN3di1kYXRlcGlja2VyJykuZGF0ZXBpY2tlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2RheUJ0bjogXCJsaW5rZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyQnRuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb246IFwidG9wIGF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5SGlnaGxpZ2h0OiB0cnVlXG5cbiAgICAgICAgICAgICAgICB9KS5vbignc2hvdycsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5kYXRlcGlja2VyJykuY3NzKFwiei1pbmRleFwiLCBcIjEwNDFcIik7XG4gICAgICAgICAgICAgICAgfSkub24oJ2NoYW5nZURhdGUnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5kYXRlcGlja2VyKCdoaWRlJyk7XG4gICAgICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICAgICAgICAgIHRoaXMuJCgnI2RhdGVUb0NvbnRhaW5lcicpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLiQoJyNkYXRlRnJvbUNvbnRhaW5lcicpLmhpZGUoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRhdGVSYW5nZUNoYW5nZWQgOiBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLiQoJyNkYXRlUmFuZ2VTZWxlY3QnKS52YWwoKTtcbiAgICAgICAgICAgICAgICBzd2l0Y2godmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkFEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5VHlwZSA9IFwiQURcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCgnI2RhdGVGcm9tQ29udGFpbmVyJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKCcjZGF0ZVRvQ29udGFpbmVyJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJESVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVR5cGUgPSBcIkRJXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQoJyNkYXRlRnJvbUNvbnRhaW5lcicpLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCgnI2RhdGVUb0NvbnRhaW5lcicpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiREFcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlUeXBlID0gXCJEQVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKCcjZGF0ZUZyb21Db250YWluZXInKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiQoJyNkYXRlVG9Db250YWluZXInKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkRCXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5VHlwZSA9IFwiREJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCgnI2RhdGVGcm9tQ29udGFpbmVyJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKCcjZGF0ZVRvQ29udGFpbmVyJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJEQlRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlUeXBlID0gXCJEQlRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCgnI2RhdGVGcm9tQ29udGFpbmVyJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKCcjZGF0ZVRvQ29udGFpbmVyJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBOZXdEYXRlUmFuZ2VWaWV3O1xuICAgIH0pOyIsImRlZmluZShbXG4gICAgICAgIFwianF1ZXJ5XCIsXG4gICAgICAgIFwidW5kZXJzY29yZVwiLFxuICAgICAgICBcImJhY2tib25lXCIsXG4gICAgICAgIFwidGV4dCFjb21tb24vdGVtcGxhdGVzL2xvYWRpbmdzcGlubmVyLmh0bWxcIixcbiAgICAgICAgXCJ0ZXh0IWNvbW1vbi90ZW1wbGF0ZXMvYmxvY2tpbmdzcGlubmVyLmh0bWxcIixcbiAgICAgICAgXCJ0ZXh0IWNvbW1vbi90ZW1wbGF0ZXMvZXJyb3Jub3RpZmljYXRpb25wYWdlLmh0bWxcIixcbiAgICAgICAgXCJ0ZXh0IWNvbW1vbi90ZW1wbGF0ZXMvZXJyb3Jub3RpZmljYXRpb25zZWN0aW9uLmh0bWxcIlxuXG4gICAgXSxcbiAgICBmdW5jdGlvbigkLCBfLCBCYWNrYm9uZSwgc3Bpbm5lcnRlbXBsYXRlLCBibG9ja2luZ3RlbXBsYXRlLCBlcnJvcnRlbXBsYXRlcGFnZSwgZXJyb3J0ZW1wbGF0ZXNlY3Rpb24pIHtcblxuICAgICAgICB2YXIgQmFzZVZpZXcgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnNwaW5uZXJ0ZW1wbGF0ZSA9IF8udGVtcGxhdGUoc3Bpbm5lcnRlbXBsYXRlKTtcbiAgICAgICAgICAgIHRoaXMuYmxvY2tpbmd0ZW1wbGF0ZSA9IF8udGVtcGxhdGUoYmxvY2tpbmd0ZW1wbGF0ZSk7XG4gICAgICAgICAgICB0aGlzLmVycm9ydGVtcGxhdGVwYWdlID0gXy50ZW1wbGF0ZShlcnJvcnRlbXBsYXRlcGFnZSk7XG4gICAgICAgICAgICB0aGlzLmVycm9ydGVtcGxhdGVzZWN0aW9uID0gXy50ZW1wbGF0ZShlcnJvcnRlbXBsYXRlc2VjdGlvbik7XG4gICAgICAgICAgICBCYWNrYm9uZS5WaWV3LmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBfLmV4dGVuZChCYXNlVmlldy5wcm90b3R5cGUsIEJhY2tib25lLlZpZXcucHJvdG90eXBlLCB7XG4gICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7XG5cblxuICAgICAgICAgICAgICAgIC8vIGNhbGxzIHZpZXdzIGNsb3NpbmcgZXZlbnQgaGFuZGxlciBmaXJzdCwgaWYgaW1wbGVtZW50ZWQgKG9wdGlvbmFsKVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zaW5nKCk7IC8vIHRoaXMgZm9yIGN1c3RvbSBjbGVhbnVwIHB1cnBvc2VzXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gZmlyc3QgbG9vcCB0aHJvdWdoIGNoaWxkVmlld3NbXSBpZiBkZWZpbmVkLCBpbiBjb2xsZWN0aW9uIHZpZXdzXG4gICAgICAgICAgICAgICAgLy8gIHBvcHVsYXRlIGFuIGFycmF5IHByb3BlcnR5IGkuZS4gdGhpcy5jaGlsZFZpZXdzW10gPSBuZXcgQ29udHJvbFZpZXdzKClcbiAgICAgICAgICAgICAgICBpZiAoISh0eXBlb2YgdGhpcy5jaGlsZFZpZXdzID09PSBcInVuZGVmaW5lZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICBfLmVhY2godGhpcy5jaGlsZFZpZXdzLCBmdW5jdGlvbihjaGlsZCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh0eXBlb2YgY2hpbGQgPT09IFwidW5kZWZpbmVkXCIpICYmICEodHlwZW9mIHRoaXMuJGVsID09PSBcInVuZGVmaW5lZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghKHR5cGVvZiB0aGlzLmNoaWxkVmlld3MyID09PSBcInVuZGVmaW5lZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICBfLmVhY2godGhpcy5jaGlsZFZpZXdzMiwgZnVuY3Rpb24oY2hpbGQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodHlwZW9mIGNoaWxkID09PSBcInVuZGVmaW5lZFwiKSAmJiAhKHR5cGVvZiB0aGlzLiRlbCA9PT0gXCJ1bmRlZmluZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBjbG9zZSBhbGwgY2hpbGQgdmlld3MgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSBwcm9wZXJ0eSwgaW4gbW9kZWwgdmlld3NcbiAgICAgICAgICAgICAgICAvLyAgYWRkIGEgcHJvcGVydHkgZm9yIHJlZmVyZW5jZSBpLmUuIHRoaXMudG9vbGJhciA9IG5ldyBUb29sYmFyVmlldygpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gdGhpcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1twcm9wXSBpbnN0YW5jZW9mIEJhY2tib25lLlZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbcHJvcF0uY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9uQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAvLyAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAvL3RoaXMuZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuJGVsID0gbnVsbDtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnVuZGVsZWdhdGVFdmVudHMoKTtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmVtcHR5O1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kKCk7XG4gICAgICAgICAgICAgICAgaWYgKCEodHlwZW9mIHRoaXMuJGVsID09PSBcInVuZGVmaW5lZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy4kZWw7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmVsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFBhcmFtZXRlcjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhhc2ggPSBsb2NhdGlvbi5oYXNoO1xuICAgICAgICAgICAgICAgIGlmIChoYXNoLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdmFyIHBhcmFtcyA9IGhhc2guc3Vic3RyKDEpLnNwbGl0KCcmJyk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbnMgPSBwYXJhbXNbaV0uc3BsaXQoJz0nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2Vuc1swXSA9PSBwYXJhbWV0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbnNbMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9LFxuXG5cbiAgICAgICAgICAgIHNldFBhcmFtZXRlcjogZnVuY3Rpb24ocGFyYW1ldGVyLCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBoYXNoID0gbG9jYXRpb24uaGFzaDtcbiAgICAgICAgICAgICAgICBpZiAoaGFzaC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBoYXNoID0gJyMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcGFyYW1zID0gaGFzaC5zdWJzdHIoMSkuc3BsaXQoJyYnKTtcbiAgICAgICAgICAgICAgICBpZiAocGFyYW1zWzBdID09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVwbGFjZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRva2VucyA9IHBhcmFtc1tpXS5zcGxpdCgnPScpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5zWzBdID09IHBhcmFtZXRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSBwYXJhbWV0ZXIgKyAnPScgKyB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghcmVwbGFjZWQgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocGFyYW1ldGVyICsgJz0nICsgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgbm9FbXB0eSA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcGFyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub0VtcHR5LnB1c2gocGFyYW1zW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsb2NhdGlvbi5oYXNoID0gJyMnICsgbm9FbXB0eS5qb2luKCcmJyk7XG4gICAgICAgICAgICB9LFxuXG5cbiAgICAgICAgICAgIGdldFBhZ2VUaXRsZTogZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZ292aW5mbyc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRBcHBCYXNlVXJsOiBmdW5jdGlvbih1cmwpIHtcblxuICAgICAgICAgICAgICAgIC8vdmFyIGNvbXB1dGVkVXJsID0gW3JlcXVpcmUudG9VcmwoJycpLCB1cmxdO1xuICAgICAgICAgICAgICAgIHJldHVybiB1cmwuc3Vic3RyKDYpO1xuICAgICAgICAgICAgfSxcblxuXG4gICAgICAgICAgICBnZXRBcHBCYXNlVXJsV09Db250ZXh0OiBmdW5jdGlvbih1cmwpIHtcblxuICAgICAgICAgICAgICAgIHZhciBjb21wdXRlZFVybCA9IFt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wsICcvLycsIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgdXJsXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRVcmwuam9pbignJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRtb2RlbEJhc2VVcmw6IGZ1bmN0aW9uKHVybCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGNvbXB1dGVkVXJsO1xuICAgICAgICAgICAgICAgIC8qaWYgKCQudHJpbShyZXF1aXJlLnRvVXJsKCcnKSAhPT0gJycpICYmIChyZXF1aXJlLnRvVXJsKCcnKS5zdWJzdHJpbmcoMCwgMikgIT09ICcuLicpICYmIChyZXF1aXJlLnRvVXJsKCcnKSAhPT0gJy4vJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmxob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsaG9zdC5ocmVmID0gcmVxdWlyZS50b1VybCgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG9zdCA9IHVybGhvc3QuaG9zdG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvdG9jb2wgPSB1cmxob3N0LnByb3RvY29sO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRVcmwgPSBwcm90b2NvbC5jb25jYXQoJy8vJykuY29uY2F0KGhvc3QpLmNvbmNhdCgnLycpLmNvbmNhdCh1cmwpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wsICcvLycsIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgJy8nLCB1cmxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRVcmwgPSB1cmwuam9pbignJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSovXG5cbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gW3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCwgJy8vJywgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCB1cmxdO1xuICAgICAgICAgICAgICAgIGNvbXB1dGVkVXJsID0gdXJsLmpvaW4oJycpO1xuXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRVcmw7XG5cblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldExvY2F0aW9uQmFzZVVybDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY29tcHV0ZWRVcmw7XG4gICAgICAgICAgICAgICAgdmFyIHVybGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgaG9zdCA9IHVybGhvc3QuaG9zdG5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKGhvc3QgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRVcmwgPSB1cmxob3N0LmhyZWYuc3BsaXQoJz8nKVswXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcHV0ZWRVcmwgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbdXJsaG9zdC5wcm90b2NvbCwgJy8vJywgaG9zdCwgdXJsaG9zdC5wYXRobmFtZV07XG4gICAgICAgICAgICAgICAgICAgIC8qdmFyIHByb3RvY29sID0gdXJsaG9zdC5wcm90b2NvbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXRobmFtZSA9IHVybGhvc3QucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVXJsID0gcHJvdG9jb2wuY29uY2F0KCcvLycpLmNvbmNhdChob3N0KS5jb25jYXQocGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRVcmwgPSB1cmwuam9pbignJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVkVXJsO1xuXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTcGlubmVyVGVtcGxhdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3Bpbm5lcnRlbXBsYXRlO1xuXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRCbG9ja2luZ1RlbXBsYXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2NraW5ndGVtcGxhdGU7XG5cblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldEVycm9yVGVtcGxhdGVQYWdlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ydGVtcGxhdGVwYWdlO1xuXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRFcnJvclRlbXBsYXRlU2VjdGlvbjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvcnRlbXBsYXRlc2VjdGlvbjtcblxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG5cbiAgICAgICAgQmFzZVZpZXcuZXh0ZW5kID0gQmFja2JvbmUuVmlldy5leHRlbmQ7XG5cbiAgICAgICAgLyogICAgIHZhciBCYXNlVmlldyA9IEJhY2tib25lLlZpZXcuZXh0ZW5kKHtcblxuICAgICAgICAgICAgIGNsb3NlIDogZnVuY3Rpb24oKXtcblxuXG4gICAgICAgICAgICAgLy8gY2FsbHMgdmlld3MgY2xvc2luZyBldmVudCBoYW5kbGVyIGZpcnN0LCBpZiBpbXBsZW1lbnRlZCAob3B0aW9uYWwpXG4gICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2luZykge1xuICAgICAgICAgICAgIHRoaXMuY2xvc2luZygpOyAgLy8gdGhpcyBmb3IgY3VzdG9tIGNsZWFudXAgcHVycG9zZXNcbiAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAvLyBmaXJzdCBsb29wIHRocm91Z2ggY2hpbGRWaWV3c1tdIGlmIGRlZmluZWQsIGluIGNvbGxlY3Rpb24gdmlld3NcbiAgICAgICAgICAgICAvLyAgcG9wdWxhdGUgYW4gYXJyYXkgcHJvcGVydHkgaS5lLiB0aGlzLmNoaWxkVmlld3NbXSA9IG5ldyBDb250cm9sVmlld3MoKVxuICAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkVmlld3MpIHtcbiAgICAgICAgICAgICBfLmVhY2godGhpcy5jaGlsZFZpZXdzLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICBjaGlsZC5jbG9zZSgpO1xuICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgIC8vIGNsb3NlIGFsbCBjaGlsZCB2aWV3cyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IHByb3BlcnR5LCBpbiBtb2RlbCB2aWV3c1xuICAgICAgICAgICAgIC8vICBhZGQgYSBwcm9wZXJ0eSBmb3IgcmVmZXJlbmNlIGkuZS4gdGhpcy50b29sYmFyID0gbmV3IFRvb2xiYXJWaWV3KCk7XG4gICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiB0aGlzKSB7XG4gICAgICAgICAgICAgaWYgKHRoaXNbcHJvcF0gaW5zdGFuY2VvZiBCYWNrYm9uZS5WaWV3KSB7XG4gICAgICAgICAgICAgdGhpc1twcm9wXS5jbG9zZSgpO1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9XG5cblxuXG5cbiAgICAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICAgICAgIHRoaXMudW5iaW5kKCk7XG4gICAgICAgICAgICAgaWYgKHRoaXMub25DbG9zZSl7XG4gICAgICAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgfVxuXG5cblxuICAgICAgICAgICAgIH0pOyAqL1xuXG4gICAgICAgIHJldHVybiBCYXNlVmlldztcbiAgICB9KTtcbiIsImRlZmluZShbXG4gICAgICAgIFwianF1ZXJ5XCIsIFxuICAgICAgICBcInVuZGVyc2NvcmVcIiwgXG4gICAgICAgIFwiYmFja2JvbmVcIixcbiAgICAgICAgXCJjb21tb24vdmlld3MvYmFzZXZpZXdcIl0sIFxuICAgICAgICBmdW5jdGlvbigkLCBfLCBCYWNrYm9uZSxCYXNlVmlldyl7XG52YXIgTm90aWZpY2F0aW9uVmlldyA9IEJhc2VWaWV3LmV4dGVuZCh7XG4gXG4gICAgdGFyZ2V0RWxlbWVudDogJyNlcnJvck1lc3NhZ2UnLCBcbiAgICB0YWdOYW1lOiAnZGl2JywgXG4gICAgY2xhc3NOYW1lOiAnbm90aWZpY2F0aW9uJywgICAgXG4gICAgYXV0b21hdGljQ2xvc2U6IGZhbHNlLCAgICAgXG4gICAvLyBjbGFzc05hbWU6ICdhbGVydCBhbGVydC1tZXNzYWdlJywgICAgICAgIFxuIFxuICAgIGRlZmF1bHRNZXNzYWdlczoge1xuICAgICAgICAnc3VjY2Vzcyc6ICdTdWNjZXNzIScsXG4gICAgICAgICdlcnJvcic6ICdTb3JyeSEgQW4gZXJyb3Igb2NjdXJyZWQgaW4gdGhlIHByb2Nlc3MnLFxuICAgICAgICAnd2FybmluZyc6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFrZSB0aGlzIGFjdGlvbj8nLFxuICAgICAgICAnaW5mb3JtYXRpb24nOiAnQW4gdW5rbm93biBldmVudCBvY2N1cnJlZCdcbiAgICB9LCBcbiBcbiAgICBjc3NDbGFzc2VzOiB7XG4gICAgICAgIC8vJ3N1Y2Nlc3MnOiAnYWNjZXB0ZWQnLFxuICAgICAgICAnc3VjY2Vzcyc6ICdhbGVydCBhbGVydC1zdWNjZXNzJyxcbiAgICAgICAgLy8nZXJyb3InOiAnY2FuY2VsJyxcbiAgICAgICAgJ2Vycm9yJzogJ2FsZXJ0IGFsZXJ0LWRhbmdlcicsXG4gICAgICAgICd3YXJuaW5nJzogJ2FsZXJ0IGFsZXJ0LXdhcm5pbmcnLFxuICAgICAgICAnaW5mb3JtYXRpb24nOiAnYWxlcnQgYWxlcnQtaW5mbydcbiAgICB9LCBcbiBcbiAgICBldmVudHM6IHtcbiAgICAgICAgXCJjbGlja1wiIDogXCJjbG9zZU5vdGlmaWNhdGlvblwiXG4gICAgfSwgICBcbiBcbiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKXsgXG4gICAgICAgIC8vIGRlZmF1bHRzXG4gICAgICAgIHZhciB0eXBlID0gJ2luZm9ybWF0aW9uJztcbiAgICAgICAgdmFyIHRleHQgPSB0aGlzLmRlZmF1bHRNZXNzYWdlc1t0eXBlXTsgXG4gICAgICAgIHZhciB0YXJnZXQgPSB0aGlzLnRhcmdldEVsZW1lbnQ7IFxuIFxuICAgICAgICAvLyBpZiBhbnkgb3B0aW9ucyB3ZXJlIHNldCwgb3ZlcnJpZGUgZGVmYXVsdHNcbiAgICAgICAgaWYob3B0aW9ucyAmJiBvcHRpb25zLmhhc093blByb3BlcnR5KCd0eXBlJykpXG4gICAgICAgICAgICB0eXBlID0gb3B0aW9ucy50eXBlO1xuICAgICAgICBpZihvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ3RleHQnKSlcbiAgICAgICAgICAgIHRleHQgPSBvcHRpb25zLnRleHQ7IFxuICAgICAgICBpZihvcHRpb25zICYmIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ3RhcmdldCcpKSBcbiAgICAgICAgICAgIHRhcmdldCA9IG9wdGlvbnMudGFyZ2V0OyAgICAgICBcbiBcbiAgICAgICAgaWYob3B0aW9ucyAmJiBvcHRpb25zLmhhc093blByb3BlcnR5KCdhdXRvbWF0aWNDbG9zZScpKVxuICAgICAgICB0aGlzLmF1dG9tYXRpY0Nsb3NlID0gb3B0aW9ucy5hdXRvbWF0aWNDbG9zZTtcbiBcbiAgICAgICAvLyB0aGlzLnJlbmRlcih0eXBlLCB0ZXh0LCB0YXJnZXQpO1xuICAgICAgICAvLyBpcyBtZXNzYWdlIGFscmVhZHkgZGlzcGxheWVkIGluIHZpZXc/IGlmIHllcywgZG9uJ3Qgc2hvdyBhZ2FpblxuICAgICAgICBpZigkKCcnK3RhcmdldCsnOmNvbnRhaW5zKCcrdGV4dCsnKScpLmxlbmd0aCA9PT0gMCkgeyBcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKHR5cGUsIHRleHQsIHRhcmdldCk7XG4gICAgICAgIH1cbiBcbiAgICB9LFxuIFxuICAgIHJlbmRlcjogZnVuY3Rpb24odHlwZSwgdGV4dCwgdGFyZ2V0KXtcbiBcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICBcbiAgICAgICAgaWYodGV4dCA9PSAnTm8gUmVzdWx0cyBmb3VuZC4nIHx8IHRleHQgPT0gJ05vIFNlYXJjaCBSZXN1bHRzIGZvdW5kLicpe1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdoYWNrIC0gc3dpdGNoaW5nIFwiTm8gUmVzdWx0cyBmb3VuZC5cIiBlcnJvciB0byBpbmZvIG1lc3NhZ2UnKTtcbiAgICAgICAgICB0eXBlID0gJ2luZm9ybWF0aW9uJztcbiAgICAgICAgICB0ZXh0ID0gJ05vIHJlc3VsdHMgYXZhaWxhYmxlLic7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiRlbC5hZGRDbGFzcyh0aGlzLmNzc0NsYXNzZXNbdHlwZV0pO1xuICAgICAgICB0aGlzLiRlbC50ZXh0KHRleHQpO1xuICAgICAgIC8vIHRoaXMuJGVsLnByZXBlbmRUbyh0aGlzLnRhcmdldEVsZW1lbnQpO1xuICAgICAgICB0aGlzLiRlbC5wcmVwZW5kVG8odGFyZ2V0KTtcbiBcbiAgICAgICAgLy8gQXV0b21hdGljYWxseSBjbG9zZSBhZnRlciBzZXQgdGltZS4gYWxzbyBjbG9zZXMgb24gY2xpY2tcbiAgICAgICAgLyppZih0aGlzLmF1dG9tYXRpY0Nsb3NlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgc2VsZi5jbG9zZU5vdGlmaWNhdGlvbigpO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH0qL1xuICAgIH1cbiBcbn0pO1xuXG5yZXR1cm4gTm90aWZpY2F0aW9uVmlldztcbn0pOyIsImRlZmluZShbXHJcbiAgICAgICAgXCJqcXVlcnlcIixcclxuICAgICAgICBcInVuZGVyc2NvcmVcIixcclxuICAgICAgICBcImJhY2tib25lXCIsXHJcbiAgICAgICAgXCJnb3ZpbmZvXCIsXHJcbiAgICAgICAgXCJ1dGlsc1wiLFxyXG4gICAgICAgIFwiY29tbW9uL3ZpZXdzL25vdGlmaWNhdGlvbnZpZXdcIixcclxuICAgICAgICBcInNlYXJjaC92aWV3cy9zaW1wbGUvc2ltcGxlc2VhcmNodmlld1wiLFxyXG4gICAgICAgIFwic2VhcmNoL3ZpZXdzL2FkdmFuY2VkL2FkdmFuY2Vkc2VhcmNod2lkZ2V0dmlld1wiLFxyXG4gICAgICAgIFwic2VhcmNoL3ZpZXdzL2NpdGF0aW9uL2NpdGF0aW9uc2VhcmNod2lkZ2V0dmlld1wiXHJcbiAgICAgICAgXHJcbiAgICBdLFxyXG4gICAgZnVuY3Rpb24oJCwgXywgQmFja2JvbmUsIEdvdkluZm8sIHV0aWxzLCBOb3RpZmljYXRpb25WaWV3LCBTaW1wbGVTZWFyY2hWaWV3LCBBZHZhbmNlZFNlYXJjaFZpZXcsIENpdGF0aW9uU2VhcmNoVmlldyApIHtcclxuXHJcbiAgICAgICAgdmFyIFNlYXJjaFdpZGdldFZpZXcgPSBHb3ZJbmZvLlRhYlZpZXcuZXh0ZW5kKHtcclxuICAgICAgICAgICAgICAgIENvbnN0cnVjdG9ycyA6IHtcclxuICAgICAgICAgICAgICAgICAgICAnU2ltcGxlU2VhcmNoVmlldycgOiBTaW1wbGVTZWFyY2hWaWV3LFxyXG4gICAgICAgICAgICAgICAgICAgICdBZHZhbmNlZFNlYXJjaFZpZXcnIDogQWR2YW5jZWRTZWFyY2hWaWV3LFxyXG4gICAgICAgICAgICAgICAgICAgICdDaXRhdGlvblNlYXJjaFZpZXcnIDogQ2l0YXRpb25TZWFyY2hWaWV3IFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGluaXRpYWxpemUgOiBmdW5jdGlvbihvcHRpb25zKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJ1bmVkU3RyID0gbG9jYXRpb24uaHJlZi5zdWJzdHIoKGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3QpLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJ1bmVkU3RyID0gcHJ1bmVkU3RyLnN1YnN0cigwLDQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDdXN0b21BcHAgPSAocHJ1bmVkU3RyID09ICcvYXBwJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoIXRoaXMuaXNDdXN0b21BcHApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcnNpc3RCeSA9ICdyb290JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VIYXNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRvTm90bGVhdmVIaXN0b3J5VHJhaWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBHb3ZJbmZvLlRhYlZpZXcucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBvcHRpb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIF9jaGFuZ2U6IGZ1bmN0aW9uKGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGlkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGVmYXVsdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFuY2VkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2l0YXRpb24nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgR292SW5mby5UYWJWaWV3LnByb3RvdHlwZS5fY2hhbmdlLmNhbGwodGhpcywgaWQpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC8vcGVyc2lzdEJ5OiAxMDAsXHJcbiAgICAgICAgICAgICAgICAvL3VzZVN0YXRlIDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIC8vZG9Ob3RsZWF2ZUhpc3RvcnlUcmFpbCA6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nVGVtcGxhdGUgOiAnLi9jb21tb24vdGVtcGxhdGVzL3NlYXJjaHdpZGdldC9Mb2FkaW5nLmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUgOiAnLi9jb21tb24vdGVtcGxhdGVzL3NlYXJjaHdpZGdldC9TZWFyY2hXaWRnZXRWaWV3Lmh0bWwnLFxyXG4gICAgICAgICAgICAgICAgcmVuZGVyVmlldyA6IGZ1bmN0aW9uKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBHb3ZJbmZvLlRhYlZpZXcucHJvdG90eXBlLnJlbmRlclZpZXcuY2FsbCh0aGlzLCBjYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBTZWFyY2hXaWRnZXRWaWV3O1xyXG4gICAgfSk7XHJcbiIsIlwib2JqZWN0XCIhPXR5cGVvZiBKU09OMiYmXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdy5KU09OJiZ3aW5kb3cuSlNPTi5zdHJpbmdpZnkmJndpbmRvdy5KU09OLnBhcnNlP0pTT04yPXdpbmRvdy5KU09OOiFmdW5jdGlvbigpe3ZhciBhPXt9OyhmdW5jdGlvbigpe2Z1bmN0aW9uIGcoYSxiKXtmdW5jdGlvbiB0KGEpe2lmKHRbYV0hPT1yKXJldHVybiB0W2FdO3ZhciBjO2lmKFwiYnVnLXN0cmluZy1jaGFyLWluZGV4XCI9PWEpYz1cImFcIiE9XCJhXCJbMF07ZWxzZSBpZihcImpzb25cIj09YSljPXQoXCJqc29uLXN0cmluZ2lmeVwiKSYmdChcImpzb24tcGFyc2VcIik7ZWxzZXt2YXIgZSxnPSd7XCJhXCI6WzEsdHJ1ZSxmYWxzZSxudWxsLFwiXFxcXHUwMDAwXFxcXGJcXFxcblxcXFxmXFxcXHJcXFxcdFwiXX0nO2lmKFwianNvbi1zdHJpbmdpZnlcIj09YSl7dmFyIGg9Yi5zdHJpbmdpZnksaj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBoJiZzO2lmKGopeyhlPWZ1bmN0aW9uKCl7cmV0dXJuIDF9KS50b0pTT049ZTt0cnl7aj1cIjBcIj09PWgoMCkmJlwiMFwiPT09aChuZXcgZCkmJidcIlwiJz09aChuZXcgZikmJmgobyk9PT1yJiZoKHIpPT09ciYmaCgpPT09ciYmXCIxXCI9PT1oKGUpJiZcIlsxXVwiPT1oKFtlXSkmJlwiW251bGxdXCI9PWgoW3JdKSYmXCJudWxsXCI9PWgobnVsbCkmJlwiW251bGwsbnVsbCxudWxsXVwiPT1oKFtyLG8sbnVsbF0pJiZoKHthOltlLCEwLCExLG51bGwsXCJcXDBcXGJcXG5cXGZcXHJcXHRcIl19KT09ZyYmXCIxXCI9PT1oKG51bGwsZSkmJlwiW1xcbiAxLFxcbiAyXFxuXVwiPT1oKFsxLDJdLG51bGwsMSkmJidcIi0yNzE4MjEtMDQtMjBUMDA6MDA6MDAuMDAwWlwiJz09aChuZXcgaSgoLTg2NGUxMykpKSYmJ1wiKzI3NTc2MC0wOS0xM1QwMDowMDowMC4wMDBaXCInPT1oKG5ldyBpKDg2NGUxMykpJiYnXCItMDAwMDAxLTAxLTAxVDAwOjAwOjAwLjAwMFpcIic9PWgobmV3IGkoKC02MjE5ODc1NTJlNSkpKSYmJ1wiMTk2OS0xMi0zMVQyMzo1OTo1OS45OTlaXCInPT1oKG5ldyBpKCgtMSkpKX1jYXRjaChhKXtqPSExfX1jPWp9aWYoXCJqc29uLXBhcnNlXCI9PWEpe3ZhciBrPWIucGFyc2U7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygayl0cnl7aWYoMD09PWsoXCIwXCIpJiYhayghMSkpe2U9ayhnKTt2YXIgbD01PT1lLmEubGVuZ3RoJiYxPT09ZS5hWzBdO2lmKGwpe3RyeXtsPSFrKCdcIlxcdFwiJyl9Y2F0Y2goYSl7fWlmKGwpdHJ5e2w9MSE9PWsoXCIwMVwiKX1jYXRjaChhKXt9aWYobCl0cnl7bD0xIT09ayhcIjEuXCIpfWNhdGNoKGEpe319fX1jYXRjaChhKXtsPSExfWM9bH19cmV0dXJuIHRbYV09ISFjfWF8fChhPWUuT2JqZWN0KCkpLGJ8fChiPWUuT2JqZWN0KCkpO3ZhciBkPWEuTnVtYmVyfHxlLk51bWJlcixmPWEuU3RyaW5nfHxlLlN0cmluZyxoPWEuT2JqZWN0fHxlLk9iamVjdCxpPWEuRGF0ZXx8ZS5EYXRlLGo9YS5TeW50YXhFcnJvcnx8ZS5TeW50YXhFcnJvcixrPWEuVHlwZUVycm9yfHxlLlR5cGVFcnJvcixsPWEuTWF0aHx8ZS5NYXRoLG09YS5KU09OfHxlLkpTT047XCJvYmplY3RcIj09dHlwZW9mIG0mJm0mJihiLnN0cmluZ2lmeT1tLnN0cmluZ2lmeSxiLnBhcnNlPW0ucGFyc2UpO3ZhciBwLHEscixuPWgucHJvdG90eXBlLG89bi50b1N0cmluZyxzPW5ldyBpKCgtMHhjNzgyYjViODAwY2VjKSk7dHJ5e3M9cy5nZXRVVENGdWxsWWVhcigpPT0tMTA5MjUyJiYwPT09cy5nZXRVVENNb250aCgpJiYxPT09cy5nZXRVVENEYXRlKCkmJjEwPT1zLmdldFVUQ0hvdXJzKCkmJjM3PT1zLmdldFVUQ01pbnV0ZXMoKSYmNj09cy5nZXRVVENTZWNvbmRzKCkmJjcwOD09cy5nZXRVVENNaWxsaXNlY29uZHMoKX1jYXRjaChhKXt9aWYoIXQoXCJqc29uXCIpKXt2YXIgdT1cIltvYmplY3QgRnVuY3Rpb25dXCIsdj1cIltvYmplY3QgRGF0ZV1cIix3PVwiW29iamVjdCBOdW1iZXJdXCIseD1cIltvYmplY3QgU3RyaW5nXVwiLHk9XCJbb2JqZWN0IEFycmF5XVwiLHo9XCJbb2JqZWN0IEJvb2xlYW5dXCIsQT10KFwiYnVnLXN0cmluZy1jaGFyLWluZGV4XCIpO2lmKCFzKXZhciBCPWwuZmxvb3IsQz1bMCwzMSw1OSw5MCwxMjAsMTUxLDE4MSwyMTIsMjQzLDI3MywzMDQsMzM0XSxEPWZ1bmN0aW9uKGEsYil7cmV0dXJuIENbYl0rMzY1KihhLTE5NzApK0IoKGEtMTk2OSsoYj0rKGI+MSkpKS80KS1CKChhLTE5MDErYikvMTAwKStCKChhLTE2MDErYikvNDAwKX07aWYoKHA9bi5oYXNPd25Qcm9wZXJ0eSl8fChwPWZ1bmN0aW9uKGEpe3ZhciBjLGI9e307cmV0dXJuKGIuX19wcm90b19fPW51bGwsYi5fX3Byb3RvX189e3RvU3RyaW5nOjF9LGIpLnRvU3RyaW5nIT1vP3A9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fX3Byb3RvX18sYz1hIGluKHRoaXMuX19wcm90b19fPW51bGwsdGhpcyk7cmV0dXJuIHRoaXMuX19wcm90b19fPWIsY306KGM9Yi5jb25zdHJ1Y3RvcixwPWZ1bmN0aW9uKGEpe3ZhciBiPSh0aGlzLmNvbnN0cnVjdG9yfHxjKS5wcm90b3R5cGU7cmV0dXJuIGEgaW4gdGhpcyYmIShhIGluIGImJnRoaXNbYV09PT1iW2FdKX0pLGI9bnVsbCxwLmNhbGwodGhpcyxhKX0pLHE9ZnVuY3Rpb24oYSxiKXt2YXIgZSxmLGcsZD0wOyhlPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZU9mPTB9KS5wcm90b3R5cGUudmFsdWVPZj0wLGY9bmV3IGU7Zm9yKGcgaW4gZilwLmNhbGwoZixnKSYmZCsrO3JldHVybiBlPWY9bnVsbCxkP3E9Mj09ZD9mdW5jdGlvbihhLGIpe3ZhciBlLGM9e30sZD1vLmNhbGwoYSk9PXU7Zm9yKGUgaW4gYSlkJiZcInByb3RvdHlwZVwiPT1lfHxwLmNhbGwoYyxlKXx8IShjW2VdPTEpfHwhcC5jYWxsKGEsZSl8fGIoZSl9OmZ1bmN0aW9uKGEsYil7dmFyIGQsZSxjPW8uY2FsbChhKT09dTtmb3IoZCBpbiBhKWMmJlwicHJvdG90eXBlXCI9PWR8fCFwLmNhbGwoYSxkKXx8KGU9XCJjb25zdHJ1Y3RvclwiPT09ZCl8fGIoZCk7KGV8fHAuY2FsbChhLGQ9XCJjb25zdHJ1Y3RvclwiKSkmJmIoZCl9OihmPVtcInZhbHVlT2ZcIixcInRvU3RyaW5nXCIsXCJ0b0xvY2FsZVN0cmluZ1wiLFwicHJvcGVydHlJc0VudW1lcmFibGVcIixcImlzUHJvdG90eXBlT2ZcIixcImhhc093blByb3BlcnR5XCIsXCJjb25zdHJ1Y3RvclwiXSxxPWZ1bmN0aW9uKGEsYil7dmFyIGUsZyxkPW8uY2FsbChhKT09dSxoPSFkJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmNvbnN0cnVjdG9yJiZjW3R5cGVvZiBhLmhhc093blByb3BlcnR5XSYmYS5oYXNPd25Qcm9wZXJ0eXx8cDtmb3IoZSBpbiBhKWQmJlwicHJvdG90eXBlXCI9PWV8fCFoLmNhbGwoYSxlKXx8YihlKTtmb3IoZz1mLmxlbmd0aDtlPWZbLS1nXTtoLmNhbGwoYSxlKSYmYihlKSk7fSkscShhLGIpfSwhdChcImpzb24tc3RyaW5naWZ5XCIpKXt2YXIgRT17OTI6XCJcXFxcXFxcXFwiLDM0OidcXFxcXCInLDg6XCJcXFxcYlwiLDEyOlwiXFxcXGZcIiwxMDpcIlxcXFxuXCIsMTM6XCJcXFxcclwiLDk6XCJcXFxcdFwifSxGPVwiMDAwMDAwXCIsRz1mdW5jdGlvbihhLGIpe3JldHVybihGKyhifHwwKSkuc2xpY2UoLWEpfSxIPVwiXFxcXHUwMFwiLEk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSdcIicsYz0wLGQ9YS5sZW5ndGgsZT0hQXx8ZD4xMCxmPWUmJihBP2Euc3BsaXQoXCJcIik6YSk7YzxkO2MrKyl7dmFyIGc9YS5jaGFyQ29kZUF0KGMpO3N3aXRjaChnKXtjYXNlIDg6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMjpjYXNlIDEzOmNhc2UgMzQ6Y2FzZSA5MjpiKz1FW2ddO2JyZWFrO2RlZmF1bHQ6aWYoZzwzMil7Yis9SCtHKDIsZy50b1N0cmluZygxNikpO2JyZWFrfWIrPWU/ZltjXTphLmNoYXJBdChjKX19cmV0dXJuIGIrJ1wiJ30sSj1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaCxpLGosbCxtLG4scyx0LHUsQSxDLEUsRixILEssTDt0cnl7aD1iW2FdfWNhdGNoKGEpe31pZihcIm9iamVjdFwiPT10eXBlb2YgaCYmaClpZihpPW8uY2FsbChoKSxpIT12fHxwLmNhbGwoaCxcInRvSlNPTlwiKSlcImZ1bmN0aW9uXCI9PXR5cGVvZiBoLnRvSlNPTiYmKGkhPXcmJmkhPXgmJmkhPXl8fHAuY2FsbChoLFwidG9KU09OXCIpKSYmKGg9aC50b0pTT04oYSkpO2Vsc2UgaWYoaD4tMS8wJiZoPDEvMCl7aWYoRCl7Zm9yKG09QihoLzg2NGU1KSxqPUIobS8zNjUuMjQyNSkrMTk3MC0xO0QoaisxLDApPD1tO2orKyk7Zm9yKGw9QigobS1EKGosMCkpLzMwLjQyKTtEKGosbCsxKTw9bTtsKyspO209MSttLUQoaixsKSxuPShoJTg2NGU1Kzg2NGU1KSU4NjRlNSxzPUIobi8zNmU1KSUyNCx0PUIobi82ZTQpJTYwLHU9QihuLzFlMyklNjAsQT1uJTFlM31lbHNlIGo9aC5nZXRVVENGdWxsWWVhcigpLGw9aC5nZXRVVENNb250aCgpLG09aC5nZXRVVENEYXRlKCkscz1oLmdldFVUQ0hvdXJzKCksdD1oLmdldFVUQ01pbnV0ZXMoKSx1PWguZ2V0VVRDU2Vjb25kcygpLEE9aC5nZXRVVENNaWxsaXNlY29uZHMoKTtoPShqPD0wfHxqPj0xZTQ/KGo8MD9cIi1cIjpcIitcIikrRyg2LGo8MD8tajpqKTpHKDQsaikpK1wiLVwiK0coMixsKzEpK1wiLVwiK0coMixtKStcIlRcIitHKDIscykrXCI6XCIrRygyLHQpK1wiOlwiK0coMix1KStcIi5cIitHKDMsQSkrXCJaXCJ9ZWxzZSBoPW51bGw7aWYoYyYmKGg9Yy5jYWxsKGIsYSxoKSksbnVsbD09PWgpcmV0dXJuXCJudWxsXCI7aWYoaT1vLmNhbGwoaCksaT09eilyZXR1cm5cIlwiK2g7aWYoaT09dylyZXR1cm4gaD4tMS8wJiZoPDEvMD9cIlwiK2g6XCJudWxsXCI7aWYoaT09eClyZXR1cm4gSShcIlwiK2gpO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBoKXtmb3IoSD1nLmxlbmd0aDtILS07KWlmKGdbSF09PT1oKXRocm93IGsoKTtpZihnLnB1c2goaCksQz1bXSxLPWYsZis9ZSxpPT15KXtmb3IoRj0wLEg9aC5sZW5ndGg7RjxIO0YrKylFPUooRixoLGMsZCxlLGYsZyksQy5wdXNoKEU9PT1yP1wibnVsbFwiOkUpO0w9Qy5sZW5ndGg/ZT9cIltcXG5cIitmK0Muam9pbihcIixcXG5cIitmKStcIlxcblwiK0srXCJdXCI6XCJbXCIrQy5qb2luKFwiLFwiKStcIl1cIjpcIltdXCJ9ZWxzZSBxKGR8fGgsZnVuY3Rpb24oYSl7dmFyIGI9SihhLGgsYyxkLGUsZixnKTtiIT09ciYmQy5wdXNoKEkoYSkrXCI6XCIrKGU/XCIgXCI6XCJcIikrYil9KSxMPUMubGVuZ3RoP2U/XCJ7XFxuXCIrZitDLmpvaW4oXCIsXFxuXCIrZikrXCJcXG5cIitLK1wifVwiOlwie1wiK0Muam9pbihcIixcIikrXCJ9XCI6XCJ7fVwiO3JldHVybiBnLnBvcCgpLEx9fTtiLnN0cmluZ2lmeT1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZixnLGg7aWYoY1t0eXBlb2YgYl0mJmIpaWYoKGg9by5jYWxsKGIpKT09dSlmPWI7ZWxzZSBpZihoPT15KXtnPXt9O2Zvcih2YXIgayxpPTAsaj1iLmxlbmd0aDtpPGo7az1iW2krK10saD1vLmNhbGwoayksKGg9PXh8fGg9PXcpJiYoZ1trXT0xKSk7fWlmKGQpaWYoKGg9by5jYWxsKGQpKT09dyl7aWYoKGQtPWQlMSk+MClmb3IoZT1cIlwiLGQ+MTAmJihkPTEwKTtlLmxlbmd0aDxkO2UrPVwiIFwiKTt9ZWxzZSBoPT14JiYoZT1kLmxlbmd0aDw9MTA/ZDpkLnNsaWNlKDAsMTApKTtyZXR1cm4gSihcIlwiLChrPXt9LGtbXCJcIl09YSxrKSxmLGcsZSxcIlwiLFtdKX19aWYoIXQoXCJqc29uLXBhcnNlXCIpKXt2YXIgTSxOLEs9Zi5mcm9tQ2hhckNvZGUsTD17OTI6XCJcXFxcXCIsMzQ6J1wiJyw0NzpcIi9cIiw5ODpcIlxcYlwiLDExNjpcIlxcdFwiLDExMDpcIlxcblwiLDEwMjpcIlxcZlwiLDExNDpcIlxcclwifSxPPWZ1bmN0aW9uKCl7dGhyb3cgTT1OPW51bGwsaigpfSxQPWZ1bmN0aW9uKCl7Zm9yKHZhciBjLGQsZSxmLGcsYT1OLGI9YS5sZW5ndGg7TTxiOylzd2l0Y2goZz1hLmNoYXJDb2RlQXQoTSkpe2Nhc2UgOTpjYXNlIDEwOmNhc2UgMTM6Y2FzZSAzMjpNKys7YnJlYWs7Y2FzZSAxMjM6Y2FzZSAxMjU6Y2FzZSA5MTpjYXNlIDkzOmNhc2UgNTg6Y2FzZSA0NDpyZXR1cm4gYz1BP2EuY2hhckF0KE0pOmFbTV0sTSsrLGM7Y2FzZSAzNDpmb3IoYz1cIkBcIixNKys7TTxiOylpZihnPWEuY2hhckNvZGVBdChNKSxnPDMyKU8oKTtlbHNlIGlmKDkyPT1nKXN3aXRjaChnPWEuY2hhckNvZGVBdCgrK00pKXtjYXNlIDkyOmNhc2UgMzQ6Y2FzZSA0NzpjYXNlIDk4OmNhc2UgMTE2OmNhc2UgMTEwOmNhc2UgMTAyOmNhc2UgMTE0OmMrPUxbZ10sTSsrO2JyZWFrO2Nhc2UgMTE3OmZvcihkPSsrTSxlPU0rNDtNPGU7TSsrKWc9YS5jaGFyQ29kZUF0KE0pLGc+PTQ4JiZnPD01N3x8Zz49OTcmJmc8PTEwMnx8Zz49NjUmJmc8PTcwfHxPKCk7Yys9SyhcIjB4XCIrYS5zbGljZShkLE0pKTticmVhaztkZWZhdWx0Ok8oKX1lbHNle2lmKDM0PT1nKWJyZWFrO2ZvcihnPWEuY2hhckNvZGVBdChNKSxkPU07Zz49MzImJjkyIT1nJiYzNCE9ZzspZz1hLmNoYXJDb2RlQXQoKytNKTtjKz1hLnNsaWNlKGQsTSl9aWYoMzQ9PWEuY2hhckNvZGVBdChNKSlyZXR1cm4gTSsrLGM7TygpO2RlZmF1bHQ6aWYoZD1NLDQ1PT1nJiYoZj0hMCxnPWEuY2hhckNvZGVBdCgrK00pKSxnPj00OCYmZzw9NTcpe2Zvcig0OD09ZyYmKGc9YS5jaGFyQ29kZUF0KE0rMSksZz49NDgmJmc8PTU3KSYmTygpLGY9ITE7TTxiJiYoZz1hLmNoYXJDb2RlQXQoTSksZz49NDgmJmc8PTU3KTtNKyspO2lmKDQ2PT1hLmNoYXJDb2RlQXQoTSkpe2ZvcihlPSsrTTtlPGImJihnPWEuY2hhckNvZGVBdChlKSxnPj00OCYmZzw9NTcpO2UrKyk7ZT09TSYmTygpLE09ZX1pZihnPWEuY2hhckNvZGVBdChNKSwxMDE9PWd8fDY5PT1nKXtmb3IoZz1hLmNoYXJDb2RlQXQoKytNKSw0MyE9ZyYmNDUhPWd8fE0rKyxlPU07ZTxiJiYoZz1hLmNoYXJDb2RlQXQoZSksZz49NDgmJmc8PTU3KTtlKyspO2U9PU0mJk8oKSxNPWV9cmV0dXJuK2Euc2xpY2UoZCxNKX1pZihmJiZPKCksXCJ0cnVlXCI9PWEuc2xpY2UoTSxNKzQpKXJldHVybiBNKz00LCEwO2lmKFwiZmFsc2VcIj09YS5zbGljZShNLE0rNSkpcmV0dXJuIE0rPTUsITE7aWYoXCJudWxsXCI9PWEuc2xpY2UoTSxNKzQpKXJldHVybiBNKz00LG51bGw7TygpfXJldHVyblwiJFwifSxRPWZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYoXCIkXCI9PWEmJk8oKSxcInN0cmluZ1wiPT10eXBlb2YgYSl7aWYoXCJAXCI9PShBP2EuY2hhckF0KDApOmFbMF0pKXJldHVybiBhLnNsaWNlKDEpO2lmKFwiW1wiPT1hKXtmb3IoYj1bXTthPVAoKSxcIl1cIiE9YTtjfHwoYz0hMCkpYyYmKFwiLFwiPT1hPyhhPVAoKSxcIl1cIj09YSYmTygpKTpPKCkpLFwiLFwiPT1hJiZPKCksYi5wdXNoKFEoYSkpO3JldHVybiBifWlmKFwie1wiPT1hKXtmb3IoYj17fTthPVAoKSxcIn1cIiE9YTtjfHwoYz0hMCkpYyYmKFwiLFwiPT1hPyhhPVAoKSxcIn1cIj09YSYmTygpKTpPKCkpLFwiLFwiIT1hJiZcInN0cmluZ1wiPT10eXBlb2YgYSYmXCJAXCI9PShBP2EuY2hhckF0KDApOmFbMF0pJiZcIjpcIj09UCgpfHxPKCksYlthLnNsaWNlKDEpXT1RKFAoKSk7cmV0dXJuIGJ9TygpfXJldHVybiBhfSxSPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1TKGEsYixjKTtkPT09cj9kZWxldGUgYVtiXTphW2JdPWR9LFM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGQ9YVtiXTtpZihcIm9iamVjdFwiPT10eXBlb2YgZCYmZClpZihvLmNhbGwoZCk9PXkpZm9yKGU9ZC5sZW5ndGg7ZS0tOylSKGQsZSxjKTtlbHNlIHEoZCxmdW5jdGlvbihhKXtSKGQsYSxjKX0pO3JldHVybiBjLmNhbGwoYSxiLGQpfTtiLnBhcnNlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtyZXR1cm4gTT0wLE49XCJcIithLGM9UShQKCkpLFwiJFwiIT1QKCkmJk8oKSxNPU49bnVsbCxiJiZvLmNhbGwoYik9PXU/UygoZD17fSxkW1wiXCJdPWMsZCksXCJcIixiKTpjfX19cmV0dXJuIGIucnVuSW5Db250ZXh0PWcsYn12YXIgYj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQsYz17ZnVuY3Rpb246ITAsb2JqZWN0OiEwfSxkPWNbdHlwZW9mIGFdJiZhJiYhYS5ub2RlVHlwZSYmYSxlPWNbdHlwZW9mIHdpbmRvd10mJndpbmRvd3x8dGhpcyxmPWQmJmNbdHlwZW9mIG1vZHVsZV0mJm1vZHVsZSYmIW1vZHVsZS5ub2RlVHlwZSYmXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsO2lmKCFmfHxmLmdsb2JhbCE9PWYmJmYud2luZG93IT09ZiYmZi5zZWxmIT09Znx8KGU9ZiksZCYmIWIpZyhlLGQpO2Vsc2V7dmFyIGg9ZS5KU09OLGk9ZS5KU09OMyxqPSExLGs9ZyhlLGUuSlNPTjM9e25vQ29uZmxpY3Q6ZnVuY3Rpb24oKXtyZXR1cm4ganx8KGo9ITAsZS5KU09OPWgsZS5KU09OMz1pLGg9aT1udWxsKSxrfX0pO2UuSlNPTj17cGFyc2U6ay5wYXJzZSxzdHJpbmdpZnk6ay5zdHJpbmdpZnl9fWImJmRlZmluZShmdW5jdGlvbigpe3JldHVybiBrfSl9KS5jYWxsKHRoaXMpLEpTT04yPWF9KCksXCJvYmplY3RcIiE9dHlwZW9mIF9wYXEmJihfcGFxPVtdKSxcIm9iamVjdFwiIT10eXBlb2YgUGl3aWsmJihQaXdpaz1mdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHNhZmVEZWNvZGVXcmFwcGVyKGEpe3RyeXtyZXR1cm4gZGVjb2RlV3JhcHBlcihhKX1jYXRjaChiKXtyZXR1cm4gdW5lc2NhcGUoYSl9fWZ1bmN0aW9uIGlzRGVmaW5lZChhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm5cInVuZGVmaW5lZFwiIT09Yn1mdW5jdGlvbiBpc0Z1bmN0aW9uKGEpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGF9ZnVuY3Rpb24gaXNPYmplY3QoYSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGF9ZnVuY3Rpb24gaXNTdHJpbmcoYSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGF8fGEgaW5zdGFuY2VvZiBTdHJpbmd9ZnVuY3Rpb24gYXBwbHkoKXt2YXIgYSxiLGM7Zm9yKGE9MDthPGFyZ3VtZW50cy5sZW5ndGg7YSs9MSljPWFyZ3VtZW50c1thXSxiPWMuc2hpZnQoKSxpc1N0cmluZyhiKT9hc3luY1RyYWNrZXJbYl0uYXBwbHkoYXN5bmNUcmFja2VyLGMpOmIuYXBwbHkoYXN5bmNUcmFja2VyLGMpfWZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIoYSxiLGMsZCl7cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcj8oYS5hZGRFdmVudExpc3RlbmVyKGIsYyxkKSwhMCk6YS5hdHRhY2hFdmVudD9hLmF0dGFjaEV2ZW50KFwib25cIitiLGMpOnZvaWQoYVtcIm9uXCIrYl09Yyl9ZnVuY3Rpb24gZXhlY3V0ZVBsdWdpbk1ldGhvZChhLGIpe3ZhciBkLGUsYz1cIlwiO2ZvcihkIGluIHBsdWdpbnMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBsdWdpbnMsZCkmJihlPXBsdWdpbnNbZF1bYV0saXNGdW5jdGlvbihlKSYmKGMrPWUoYikpKTtyZXR1cm4gY31mdW5jdGlvbiBiZWZvcmVVbmxvYWRIYW5kbGVyKCl7dmFyIGE7aWYoZXhlY3V0ZVBsdWdpbk1ldGhvZChcInVubG9hZFwiKSxleHBpcmVEYXRlVGltZSlkbyBhPW5ldyBEYXRlO3doaWxlKGEuZ2V0VGltZUFsaWFzKCk8ZXhwaXJlRGF0ZVRpbWUpfWZ1bmN0aW9uIGxvYWRIYW5kbGVyKCl7dmFyIGE7aWYoIWhhc0xvYWRlZClmb3IoaGFzTG9hZGVkPSEwLGV4ZWN1dGVQbHVnaW5NZXRob2QoXCJsb2FkXCIpLGE9MDthPHJlZ2lzdGVyZWRPbkxvYWRIYW5kbGVycy5sZW5ndGg7YSsrKXJlZ2lzdGVyZWRPbkxvYWRIYW5kbGVyc1thXSgpO3JldHVybiEwfWZ1bmN0aW9uIGFkZFJlYWR5TGlzdGVuZXIoKXt2YXIgYTtkb2N1bWVudEFsaWFzLmFkZEV2ZW50TGlzdGVuZXI/YWRkRXZlbnRMaXN0ZW5lcihkb2N1bWVudEFsaWFzLFwiRE9NQ29udGVudExvYWRlZFwiLGZ1bmN0aW9uIGEoKXtkb2N1bWVudEFsaWFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsYSwhMSksbG9hZEhhbmRsZXIoKX0pOmRvY3VtZW50QWxpYXMuYXR0YWNoRXZlbnQmJihkb2N1bWVudEFsaWFzLmF0dGFjaEV2ZW50KFwib25yZWFkeXN0YXRlY2hhbmdlXCIsZnVuY3Rpb24gYSgpe1wiY29tcGxldGVcIj09PWRvY3VtZW50QWxpYXMucmVhZHlTdGF0ZSYmKGRvY3VtZW50QWxpYXMuZGV0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixhKSxsb2FkSGFuZGxlcigpKX0pLGRvY3VtZW50QWxpYXMuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsJiZ3aW5kb3dBbGlhcz09PXdpbmRvd0FsaWFzLnRvcCYmIWZ1bmN0aW9uIGEoKXtpZighaGFzTG9hZGVkKXt0cnl7ZG9jdW1lbnRBbGlhcy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoXCJsZWZ0XCIpfWNhdGNoKGIpe3JldHVybiB2b2lkIHNldFRpbWVvdXQoYSwwKX1sb2FkSGFuZGxlcigpfX0oKSksbmV3IFJlZ0V4cChcIldlYktpdFwiKS50ZXN0KG5hdmlnYXRvckFsaWFzLnVzZXJBZ2VudCkmJihhPXNldEludGVydmFsKGZ1bmN0aW9uKCl7KGhhc0xvYWRlZHx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChkb2N1bWVudEFsaWFzLnJlYWR5U3RhdGUpKSYmKGNsZWFySW50ZXJ2YWwoYSksbG9hZEhhbmRsZXIoKSl9LDEwKSksYWRkRXZlbnRMaXN0ZW5lcih3aW5kb3dBbGlhcyxcImxvYWRcIixsb2FkSGFuZGxlciwhMSl9ZnVuY3Rpb24gbG9hZFNjcmlwdChhLGIpe3ZhciBjPWRvY3VtZW50QWxpYXMuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtjLnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIixjLnNyYz1hLGMucmVhZHlTdGF0ZT9jLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZHlTdGF0ZTtcImxvYWRlZFwiIT09YSYmXCJjb21wbGV0ZVwiIT09YXx8KGMub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsYigpKX06Yy5vbmxvYWQ9Yixkb2N1bWVudEFsaWFzLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChjKX1mdW5jdGlvbiBnZXRSZWZlcnJlcigpe3ZhciBhPVwiXCI7dHJ5e2E9d2luZG93QWxpYXMudG9wLmRvY3VtZW50LnJlZmVycmVyfWNhdGNoKGIpe2lmKHdpbmRvd0FsaWFzLnBhcmVudCl0cnl7YT13aW5kb3dBbGlhcy5wYXJlbnQuZG9jdW1lbnQucmVmZXJyZXJ9Y2F0Y2goYil7YT1cIlwifX1yZXR1cm5cIlwiPT09YSYmKGE9ZG9jdW1lbnRBbGlhcy5yZWZlcnJlciksYX1mdW5jdGlvbiBnZXRQcm90b2NvbFNjaGVtZShhKXt2YXIgYj1uZXcgUmVnRXhwKFwiXihbYS16XSspOlwiKSxjPWIuZXhlYyhhKTtyZXR1cm4gYz9jWzFdOm51bGx9ZnVuY3Rpb24gZ2V0SG9zdE5hbWUoYSl7dmFyIGI9bmV3IFJlZ0V4cChcIl4oPzooPzpodHRwcz98ZnRwKTopLyooPzpbXkBdK0ApPyhbXjovI10rKVwiKSxjPWIuZXhlYyhhKTtyZXR1cm4gYz9jWzFdOmF9ZnVuY3Rpb24gZ2V0UGFyYW1ldGVyKGEsYil7dmFyIGM9XCJbXFxcXD8mI11cIitiK1wiPShbXiYjXSopXCIsZD1uZXcgUmVnRXhwKGMpLGU9ZC5leGVjKGEpO3JldHVybiBlP2RlY29kZVdyYXBwZXIoZVsxXSk6XCJcIn1mdW5jdGlvbiB1dGY4X2VuY29kZShhKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlV3JhcHBlcihhKSl9ZnVuY3Rpb24gc2hhMShhKXt2YXIgZCxlLGYsbSxuLG8scCxxLHIscyxiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8PGJ8YT4+PjMyLWJ9LGM9ZnVuY3Rpb24oYSl7dmFyIGMsZCxiPVwiXCI7Zm9yKGM9NztjPj0wO2MtLSlkPWE+Pj40KmMmMTUsYis9ZC50b1N0cmluZygxNik7cmV0dXJuIGJ9LGc9W10saD0xNzMyNTg0MTkzLGk9NDAyMzIzMzQxNyxqPTI1NjIzODMxMDIsaz0yNzE3MzM4NzgsbD0zMjg1Mzc3NTIwLHQ9W107Zm9yKGE9dXRmOF9lbmNvZGUoYSkscz1hLmxlbmd0aCxlPTA7ZTxzLTM7ZSs9NClmPWEuY2hhckNvZGVBdChlKTw8MjR8YS5jaGFyQ29kZUF0KGUrMSk8PDE2fGEuY2hhckNvZGVBdChlKzIpPDw4fGEuY2hhckNvZGVBdChlKzMpLHQucHVzaChmKTtzd2l0Y2goMyZzKXtjYXNlIDA6ZT0yMTQ3NDgzNjQ4O2JyZWFrO2Nhc2UgMTplPWEuY2hhckNvZGVBdChzLTEpPDwyNHw4Mzg4NjA4O2JyZWFrO2Nhc2UgMjplPWEuY2hhckNvZGVBdChzLTIpPDwyNHxhLmNoYXJDb2RlQXQocy0xKTw8MTZ8MzI3Njg7YnJlYWs7Y2FzZSAzOmU9YS5jaGFyQ29kZUF0KHMtMyk8PDI0fGEuY2hhckNvZGVBdChzLTIpPDwxNnxhLmNoYXJDb2RlQXQocy0xKTw8OHwxMjh9Zm9yKHQucHVzaChlKTsxNCE9PSgxNSZ0Lmxlbmd0aCk7KXQucHVzaCgwKTtmb3IodC5wdXNoKHM+Pj4yOSksdC5wdXNoKHM8PDMmNDI5NDk2NzI5NSksZD0wO2Q8dC5sZW5ndGg7ZCs9MTYpe2ZvcihlPTA7ZTwxNjtlKyspZ1tlXT10W2QrZV07Zm9yKGU9MTY7ZTw9Nzk7ZSsrKWdbZV09YihnW2UtM11eZ1tlLThdXmdbZS0xNF1eZ1tlLTE2XSwxKTtmb3IobT1oLG49aSxvPWoscD1rLHE9bCxlPTA7ZTw9MTk7ZSsrKXI9YihtLDUpKyhuJm98fm4mcCkrcStnW2VdKzE1MTg1MDAyNDkmNDI5NDk2NzI5NSxxPXAscD1vLG89YihuLDMwKSxuPW0sbT1yO2ZvcihlPTIwO2U8PTM5O2UrKylyPWIobSw1KSsobl5vXnApK3ErZ1tlXSsxODU5Nzc1MzkzJjQyOTQ5NjcyOTUscT1wLHA9byxvPWIobiwzMCksbj1tLG09cjtmb3IoZT00MDtlPD01OTtlKyspcj1iKG0sNSkrKG4mb3xuJnB8byZwKStxK2dbZV0rMjQwMDk1OTcwOCY0Mjk0OTY3Mjk1LHE9cCxwPW8sbz1iKG4sMzApLG49bSxtPXI7Zm9yKGU9NjA7ZTw9Nzk7ZSsrKXI9YihtLDUpKyhuXm9ecCkrcStnW2VdKzMzOTU0Njk3ODImNDI5NDk2NzI5NSxxPXAscD1vLG89YihuLDMwKSxuPW0sbT1yO2g9aCttJjQyOTQ5NjcyOTUsaT1pK24mNDI5NDk2NzI5NSxqPWorbyY0Mjk0OTY3Mjk1LGs9aytwJjQyOTQ5NjcyOTUsbD1sK3EmNDI5NDk2NzI5NX1yZXR1cm4gcj1jKGgpK2MoaSkrYyhqKStjKGspK2MobCksci50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIHVybEZpeHVwKGEsYixjKXtyZXR1cm5cInRyYW5zbGF0ZS5nb29nbGV1c2VyY29udGVudC5jb21cIj09PWE/KFwiXCI9PT1jJiYoYz1iKSxiPWdldFBhcmFtZXRlcihiLFwidVwiKSxhPWdldEhvc3ROYW1lKGIpKTpcImNjLmJpbmdqLmNvbVwiIT09YSYmXCJ3ZWJjYWNoZS5nb29nbGV1c2VyY29udGVudC5jb21cIiE9PWEmJlwiNzQuNi5cIiE9PWEuc2xpY2UoMCw1KXx8KGI9ZG9jdW1lbnRBbGlhcy5saW5rc1swXS5ocmVmLGE9Z2V0SG9zdE5hbWUoYikpLFthLGIsY119ZnVuY3Rpb24gZG9tYWluRml4dXAoYSl7dmFyIGI9YS5sZW5ndGg7cmV0dXJuXCIuXCI9PT1hLmNoYXJBdCgtLWIpJiYoYT1hLnNsaWNlKDAsYikpLFwiKi5cIj09PWEuc2xpY2UoMCwyKSYmKGE9YS5zbGljZSgxKSksYX1mdW5jdGlvbiB0aXRsZUZpeHVwKGEpe2lmKGE9YSYmYS50ZXh0P2EudGV4dDphLCFpc1N0cmluZyhhKSl7dmFyIGI9ZG9jdW1lbnRBbGlhcy5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRpdGxlXCIpO2ImJmlzRGVmaW5lZChiWzBdKSYmKGE9YlswXS50ZXh0KX1yZXR1cm4gYX1mdW5jdGlvbiBnZXRDaGlsZHJlbkZyb21Ob2RlKGEpe3JldHVybiBhPyFpc0RlZmluZWQoYS5jaGlsZHJlbikmJmlzRGVmaW5lZChhLmNoaWxkTm9kZXMpP2EuY2hpbGRyZW46aXNEZWZpbmVkKGEuY2hpbGRyZW4pP2EuY2hpbGRyZW46W106W119ZnVuY3Rpb24gY29udGFpbnNOb2RlRWxlbWVudChhLGIpe3JldHVybiEoIWF8fCFiKSYmKGEuY29udGFpbnM/YS5jb250YWlucyhiKTphPT09Ynx8ISFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYhISgxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpKSl9ZnVuY3Rpb24gaW5kZXhPZkFycmF5KGEsYil7aWYoYSYmYS5pbmRleE9mKXJldHVybiBhLmluZGV4T2YoYik7aWYoIWlzRGVmaW5lZChhKXx8bnVsbD09PWEpcmV0dXJuLTE7aWYoIWEubGVuZ3RoKXJldHVybi0xO3ZhciBjPWEubGVuZ3RoO2lmKDA9PT1jKXJldHVybi0xO2Zvcih2YXIgZD0wO2Q8Yzspe2lmKGFbZF09PT1iKXJldHVybiBkO2QrK31yZXR1cm4tMX1mdW5jdGlvbiBpc1Zpc2libGUoYSl7ZnVuY3Rpb24gYihhLGIpe3JldHVybiB3aW5kb3dBbGlhcy5nZXRDb21wdXRlZFN0eWxlP2RvY3VtZW50QWxpYXMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpW2JdOmEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlW2JdOnZvaWQgMH1mdW5jdGlvbiBjKGEpe2ZvcihhPWEucGFyZW50Tm9kZTthOyl7aWYoYT09PWRvY3VtZW50QWxpYXMpcmV0dXJuITA7YT1hLnBhcmVudE5vZGV9cmV0dXJuITF9ZnVuY3Rpb24gZChlLGYsZyxoLGksaixrKXt2YXIgbD1lLnBhcmVudE5vZGUsbT0xO3JldHVybiEhYyhlKSYmKDk9PT1sLm5vZGVUeXBlfHxcIjBcIiE9PWIoZSxcIm9wYWNpdHlcIikmJlwibm9uZVwiIT09YihlLFwiZGlzcGxheVwiKSYmXCJoaWRkZW5cIiE9PWIoZSxcInZpc2liaWxpdHlcIikmJihpc0RlZmluZWQoZikmJmlzRGVmaW5lZChnKSYmaXNEZWZpbmVkKGgpJiZpc0RlZmluZWQoaSkmJmlzRGVmaW5lZChqKSYmaXNEZWZpbmVkKGspfHwoZj1lLm9mZnNldFRvcCxpPWUub2Zmc2V0TGVmdCxoPWYrZS5vZmZzZXRIZWlnaHQsZz1pK2Uub2Zmc2V0V2lkdGgsaj1lLm9mZnNldFdpZHRoLGs9ZS5vZmZzZXRIZWlnaHQpLChhIT09ZXx8MCE9PWsmJjAhPT1qfHxcImhpZGRlblwiIT09YihlLFwib3ZlcmZsb3dcIikpJiYoIWx8fChcImhpZGRlblwiIT09YihsLFwib3ZlcmZsb3dcIikmJlwic2Nyb2xsXCIhPT1iKGwsXCJvdmVyZmxvd1wiKXx8IShpK20+bC5vZmZzZXRXaWR0aCtsLnNjcm9sbExlZnR8fGkrai1tPGwuc2Nyb2xsTGVmdHx8ZittPmwub2Zmc2V0SGVpZ2h0K2wuc2Nyb2xsVG9wfHxmK2stbTxsLnNjcm9sbFRvcCkpJiYoZS5vZmZzZXRQYXJlbnQ9PT1sJiYoaSs9bC5vZmZzZXRMZWZ0LGYrPWwub2Zmc2V0VG9wKSxkKGwsZixnLGgsaSxqLGspKSkpKX1yZXR1cm4hIWEmJmQoYSl9ZnVuY3Rpb24gZ2V0UGl3aWtVcmxGb3JPdmVybGF5KGEsYil7cmV0dXJuIGI/YjooXCJwaXdpay5waHBcIj09PWEuc2xpY2UoLTkpJiYoYT1hLnNsaWNlKDAsYS5sZW5ndGgtOSkpLGEpfWZ1bmN0aW9uIGlzT3ZlcmxheVNlc3Npb24oYSl7dmFyIGI9XCJQaXdpa19PdmVybGF5XCIsYz1uZXcgUmVnRXhwKFwiaW5kZXhcXFxcLnBocFxcXFw/bW9kdWxlPU92ZXJsYXkmYWN0aW9uPXN0YXJ0T3ZlcmxheVNlc3Npb24maWRTaXRlPShbMC05XSspJnBlcmlvZD0oW14mXSspJmRhdGU9KFteJl0rKSRcIiksZD1jLmV4ZWMoZG9jdW1lbnRBbGlhcy5yZWZlcnJlcik7aWYoZCl7dmFyIGU9ZFsxXTtpZihlIT09U3RyaW5nKGEpKXJldHVybiExO3ZhciBmPWRbMl0sZz1kWzNdO3dpbmRvd0FsaWFzLm5hbWU9YitcIiMjI1wiK2YrXCIjIyNcIitnfXZhciBoPXdpbmRvd0FsaWFzLm5hbWUuc3BsaXQoXCIjIyNcIik7cmV0dXJuIDM9PT1oLmxlbmd0aCYmaFswXT09PWJ9ZnVuY3Rpb24gaW5qZWN0T3ZlcmxheVNjcmlwdHMoYSxiLGMpe3ZhciBkPXdpbmRvd0FsaWFzLm5hbWUuc3BsaXQoXCIjIyNcIiksZT1kWzFdLGY9ZFsyXSxnPWdldFBpd2lrVXJsRm9yT3ZlcmxheShhLGIpO2xvYWRTY3JpcHQoZytcInBsdWdpbnMvT3ZlcmxheS9jbGllbnQvY2xpZW50LmpzP3Y9MVwiLGZ1bmN0aW9uKCl7UGl3aWtfT3ZlcmxheV9DbGllbnQuaW5pdGlhbGl6ZShnLGMsZSxmKX0pfWZ1bmN0aW9uIFRyYWNrZXIodHJhY2tlclVybCxzaXRlSWQpe2Z1bmN0aW9uIHNldENvb2tpZShhLGIsYyxkLGUsZil7aWYoIWNvbmZpZ0Nvb2tpZXNEaXNhYmxlZCl7dmFyIGc7YyYmKGc9bmV3IERhdGUsZy5zZXRUaW1lKGcuZ2V0VGltZSgpK2MpKSxkb2N1bWVudEFsaWFzLmNvb2tpZT1hK1wiPVwiK2VuY29kZVdyYXBwZXIoYikrKGM/XCI7ZXhwaXJlcz1cIitnLnRvR01UU3RyaW5nKCk6XCJcIikrXCI7cGF0aD1cIisoZHx8XCIvXCIpKyhlP1wiO2RvbWFpbj1cIitlOlwiXCIpKyhmP1wiO3NlY3VyZVwiOlwiXCIpfX1mdW5jdGlvbiBnZXRDb29raWUoYSl7aWYoY29uZmlnQ29va2llc0Rpc2FibGVkKXJldHVybiAwO3ZhciBiPW5ldyBSZWdFeHAoXCIoXnw7KVsgXSpcIithK1wiPShbXjtdKilcIiksYz1iLmV4ZWMoZG9jdW1lbnRBbGlhcy5jb29raWUpO3JldHVybiBjP2RlY29kZVdyYXBwZXIoY1syXSk6MH1mdW5jdGlvbiBwdXJpZnkoYSl7dmFyIGI7cmV0dXJuIGNvbmZpZ0Rpc2NhcmRIYXNoVGFnPyhiPW5ldyBSZWdFeHAoXCIjLipcIiksYS5yZXBsYWNlKGIsXCJcIikpOmF9ZnVuY3Rpb24gcmVzb2x2ZVJlbGF0aXZlUmVmZXJlbmNlKGEsYil7dmFyIGQsYz1nZXRQcm90b2NvbFNjaGVtZShiKTtyZXR1cm4gYz9iOlwiL1wiPT09Yi5zbGljZSgwLDEpP2dldFByb3RvY29sU2NoZW1lKGEpK1wiOi8vXCIrZ2V0SG9zdE5hbWUoYSkrYjooYT1wdXJpZnkoYSksZD1hLmluZGV4T2YoXCI/XCIpLGQ+PTAmJihhPWEuc2xpY2UoMCxkKSksZD1hLmxhc3RJbmRleE9mKFwiL1wiKSxkIT09YS5sZW5ndGgtMSYmKGE9YS5zbGljZSgwLGQrMSkpLGErYil9ZnVuY3Rpb24gaXNTaXRlSG9zdE5hbWUoYSl7dmFyIGIsYyxkO2ZvcihiPTA7Yjxjb25maWdIb3N0c0FsaWFzLmxlbmd0aDtiKyspe2lmKGM9ZG9tYWluRml4dXAoY29uZmlnSG9zdHNBbGlhc1tiXS50b0xvd2VyQ2FzZSgpKSxhPT09YylyZXR1cm4hMDtpZihcIi5cIj09PWMuc2xpY2UoMCwxKSl7aWYoYT09PWMuc2xpY2UoMSkpcmV0dXJuITA7aWYoZD1hLmxlbmd0aC1jLmxlbmd0aCxkPjAmJmEuc2xpY2UoZCk9PT1jKXJldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBnZXRJbWFnZShhLGIpe3ZhciBjPW5ldyBJbWFnZSgxLDEpO2Mub25sb2FkPWZ1bmN0aW9uKCl7aXRlcmF0b3I9MCxcImZ1bmN0aW9uXCI9PXR5cGVvZiBiJiZiKCl9LGMuc3JjPWNvbmZpZ1RyYWNrZXJVcmwrKGNvbmZpZ1RyYWNrZXJVcmwuaW5kZXhPZihcIj9cIik8MD9cIj9cIjpcIiZcIikrYX1mdW5jdGlvbiBzZW5kWG1sSHR0cFJlcXVlc3QoYSxiLGMpe2lzRGVmaW5lZChjKSYmbnVsbCE9PWN8fChjPSEwKTt0cnl7dmFyIGQ9d2luZG93QWxpYXMuWE1MSHR0cFJlcXVlc3Q/bmV3IHdpbmRvd0FsaWFzLlhNTEh0dHBSZXF1ZXN0OndpbmRvd0FsaWFzLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKTpudWxsO2Qub3BlbihcIlBPU1RcIixjb25maWdUcmFja2VyVXJsLCEwKSxkLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT10aGlzLnJlYWR5U3RhdGV8fHRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMHx8IWM/XCJmdW5jdGlvblwiPT10eXBlb2YgYiYmYigpOmdldEltYWdlKGEsYil9LGQuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLGNvbmZpZ1JlcXVlc3RDb250ZW50VHlwZSksZC5zZW5kKGEpfWNhdGNoKGQpe2MmJmdldEltYWdlKGEsYil9fWZ1bmN0aW9uIHNldEV4cGlyZURhdGVUaW1lKGEpe3ZhciBiPW5ldyBEYXRlLGM9Yi5nZXRUaW1lKCkrYTsoIWV4cGlyZURhdGVUaW1lfHxjPmV4cGlyZURhdGVUaW1lKSYmKGV4cGlyZURhdGVUaW1lPWMpfWZ1bmN0aW9uIGhlYXJ0QmVhdFVwKGEpeyFoZWFydEJlYXRUaW1lb3V0JiZjb25maWdIZWFydEJlYXREZWxheSYmKGhlYXJ0QmVhdFRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2lmKGhlYXJ0QmVhdFRpbWVvdXQ9bnVsbCwhaGVhcnRCZWF0UGluZ0lmQWN0aXZpdHlBbGlhcygpKXt2YXIgYj1uZXcgRGF0ZSxjPWNvbmZpZ0hlYXJ0QmVhdERlbGF5LShiLmdldFRpbWUoKS1sYXN0VHJhY2tlclJlcXVlc3RUaW1lKTtjPU1hdGgubWluKGNvbmZpZ0hlYXJ0QmVhdERlbGF5LGMpLGhlYXJ0QmVhdFVwKGMpfX0sYXx8Y29uZmlnSGVhcnRCZWF0RGVsYXkpKX1mdW5jdGlvbiBoZWFydEJlYXREb3duKCl7aGVhcnRCZWF0VGltZW91dCYmKGNsZWFyVGltZW91dChoZWFydEJlYXRUaW1lb3V0KSxoZWFydEJlYXRUaW1lb3V0PW51bGwpfWZ1bmN0aW9uIGhlYXJ0QmVhdE9uRm9jdXMoKXtoZWFydEJlYXRQaW5nSWZBY3Rpdml0eUFsaWFzKCl8fGhlYXJ0QmVhdFVwKCl9ZnVuY3Rpb24gaGVhcnRCZWF0T25CbHVyKCl7aGVhcnRCZWF0RG93bigpfWZ1bmN0aW9uIHNldFVwSGVhcnRCZWF0KCl7IWhlYXJ0QmVhdFNldFVwJiZjb25maWdIZWFydEJlYXREZWxheSYmKGhlYXJ0QmVhdFNldFVwPSEwLGFkZEV2ZW50TGlzdGVuZXIod2luZG93QWxpYXMsXCJmb2N1c1wiLGhlYXJ0QmVhdE9uRm9jdXMpLGFkZEV2ZW50TGlzdGVuZXIod2luZG93QWxpYXMsXCJibHVyXCIsaGVhcnRCZWF0T25CbHVyKSxoZWFydEJlYXRVcCgpKX1mdW5jdGlvbiBtYWtlU3VyZVRoZXJlSXNBR2FwQWZ0ZXJGaXJzdFRyYWNraW5nUmVxdWVzdFRvUHJldmVudE11bHRpcGxlVmlzaXRvckNyZWF0aW9uKGEpe3ZhciBiPW5ldyBEYXRlLGM9Yi5nZXRUaW1lKCk7aWYobGFzdFRyYWNrZXJSZXF1ZXN0VGltZT1jLHRpbWVOZXh0VHJhY2tpbmdSZXF1ZXN0Q2FuQmVFeGVjdXRlZEltbWVkaWF0ZWx5JiZjPHRpbWVOZXh0VHJhY2tpbmdSZXF1ZXN0Q2FuQmVFeGVjdXRlZEltbWVkaWF0ZWx5KXt2YXIgZD10aW1lTmV4dFRyYWNraW5nUmVxdWVzdENhbkJlRXhlY3V0ZWRJbW1lZGlhdGVseS1jO3JldHVybiBzZXRUaW1lb3V0KGEsZCksc2V0RXhwaXJlRGF0ZVRpbWUoZCs1MCksdm9pZCh0aW1lTmV4dFRyYWNraW5nUmVxdWVzdENhbkJlRXhlY3V0ZWRJbW1lZGlhdGVseSs9NTApfWlmKHRpbWVOZXh0VHJhY2tpbmdSZXF1ZXN0Q2FuQmVFeGVjdXRlZEltbWVkaWF0ZWx5PT09ITEpe3ZhciBlPTgwMDt0aW1lTmV4dFRyYWNraW5nUmVxdWVzdENhbkJlRXhlY3V0ZWRJbW1lZGlhdGVseT1jK2V9YSgpfWZ1bmN0aW9uIHNlbmRSZXF1ZXN0KGEsYixjKXshY29uZmlnRG9Ob3RUcmFjayYmYSYmbWFrZVN1cmVUaGVyZUlzQUdhcEFmdGVyRmlyc3RUcmFja2luZ1JlcXVlc3RUb1ByZXZlbnRNdWx0aXBsZVZpc2l0b3JDcmVhdGlvbihmdW5jdGlvbigpe1wiUE9TVFwiPT09Y29uZmlnUmVxdWVzdE1ldGhvZD9zZW5kWG1sSHR0cFJlcXVlc3QoYSxjKTpnZXRJbWFnZShhLGMpLHNldEV4cGlyZURhdGVUaW1lKGIpfSksaGVhcnRCZWF0U2V0VXA/aGVhcnRCZWF0VXAoKTpzZXRVcEhlYXJ0QmVhdCgpfWZ1bmN0aW9uIGNhblNlbmRCdWxrUmVxdWVzdChhKXtyZXR1cm4hY29uZmlnRG9Ob3RUcmFjayYmKGEmJmEubGVuZ3RoKX1mdW5jdGlvbiBzZW5kQnVsa1JlcXVlc3QoYSxiKXtpZihjYW5TZW5kQnVsa1JlcXVlc3QoYSkpe3ZhciBjPSd7XCJyZXF1ZXN0c1wiOltcIj8nK2Euam9pbignXCIsXCI/JykrJ1wiXX0nO21ha2VTdXJlVGhlcmVJc0FHYXBBZnRlckZpcnN0VHJhY2tpbmdSZXF1ZXN0VG9QcmV2ZW50TXVsdGlwbGVWaXNpdG9yQ3JlYXRpb24oZnVuY3Rpb24oKXtzZW5kWG1sSHR0cFJlcXVlc3QoYyxudWxsLCExKSxzZXRFeHBpcmVEYXRlVGltZShiKX0pfX1mdW5jdGlvbiBnZXRDb29raWVOYW1lKGEpe3JldHVybiBjb25maWdDb29raWVOYW1lUHJlZml4K2ErXCIuXCIrY29uZmlnVHJhY2tlclNpdGVJZCtcIi5cIitkb21haW5IYXNofWZ1bmN0aW9uIGhhc0Nvb2tpZXMoKXtpZihjb25maWdDb29raWVzRGlzYWJsZWQpcmV0dXJuXCIwXCI7aWYoIWlzRGVmaW5lZChuYXZpZ2F0b3JBbGlhcy5jb29raWVFbmFibGVkKSl7dmFyIGE9Z2V0Q29va2llTmFtZShcInRlc3Rjb29raWVcIik7cmV0dXJuIHNldENvb2tpZShhLFwiMVwiKSxcIjFcIj09PWdldENvb2tpZShhKT9cIjFcIjpcIjBcIn1yZXR1cm4gbmF2aWdhdG9yQWxpYXMuY29va2llRW5hYmxlZD9cIjFcIjpcIjBcIn1mdW5jdGlvbiB1cGRhdGVEb21haW5IYXNoKCl7ZG9tYWluSGFzaD1oYXNoKChjb25maWdDb29raWVEb21haW58fGRvbWFpbkFsaWFzKSsoY29uZmlnQ29va2llUGF0aHx8XCIvXCIpKS5zbGljZSgwLDQpfWZ1bmN0aW9uIGdldEN1c3RvbVZhcmlhYmxlc0Zyb21Db29raWUoKXt2YXIgYT1nZXRDb29raWVOYW1lKFwiY3ZhclwiKSxiPWdldENvb2tpZShhKTtyZXR1cm4gYi5sZW5ndGgmJihiPUpTT04yLnBhcnNlKGIpLGlzT2JqZWN0KGIpKT9iOnt9fWZ1bmN0aW9uIGxvYWRDdXN0b21WYXJpYWJsZXMoKXtjdXN0b21WYXJpYWJsZXM9PT0hMSYmKGN1c3RvbVZhcmlhYmxlcz1nZXRDdXN0b21WYXJpYWJsZXNGcm9tQ29va2llKCkpfWZ1bmN0aW9uIGdlbmVyYXRlUmFuZG9tVXVpZCgpe3JldHVybiBoYXNoKChuYXZpZ2F0b3JBbGlhcy51c2VyQWdlbnR8fFwiXCIpKyhuYXZpZ2F0b3JBbGlhcy5wbGF0Zm9ybXx8XCJcIikrSlNPTjIuc3RyaW5naWZ5KGJyb3dzZXJGZWF0dXJlcykrKG5ldyBEYXRlKS5nZXRUaW1lKCkrTWF0aC5yYW5kb20oKSkuc2xpY2UoMCwxNil9ZnVuY3Rpb24gbG9hZFZpc2l0b3JJZENvb2tpZSgpe3ZhciBlLGYsYT1uZXcgRGF0ZSxiPU1hdGgucm91bmQoYS5nZXRUaW1lKCkvMWUzKSxjPWdldENvb2tpZU5hbWUoXCJpZFwiKSxkPWdldENvb2tpZShjKTtyZXR1cm4gZD8oZT1kLnNwbGl0KFwiLlwiKSxlLnVuc2hpZnQoXCIwXCIpLHZpc2l0b3JVVUlELmxlbmd0aCYmKGVbMV09dmlzaXRvclVVSUQpLGUpOihmPXZpc2l0b3JVVUlELmxlbmd0aD92aXNpdG9yVVVJRDpcIjBcIj09PWhhc0Nvb2tpZXMoKT9cIlwiOmdlbmVyYXRlUmFuZG9tVXVpZCgpLGU9W1wiMVwiLGYsYiwwLGIsXCJcIixcIlwiXSl9ZnVuY3Rpb24gZ2V0VmFsdWVzRnJvbVZpc2l0b3JJZENvb2tpZSgpe3ZhciBhPWxvYWRWaXNpdG9ySWRDb29raWUoKSxiPWFbMF0sYz1hWzFdLGQ9YVsyXSxlPWFbM10sZj1hWzRdLGc9YVs1XTtpc0RlZmluZWQoYVs2XSl8fChhWzZdPVwiXCIpO3ZhciBoPWFbNl07cmV0dXJue25ld1Zpc2l0b3I6Yix1dWlkOmMsY3JlYXRlVHM6ZCx2aXNpdENvdW50OmUsY3VycmVudFZpc2l0VHM6ZixsYXN0VmlzaXRUczpnLGxhc3RFY29tbWVyY2VPcmRlclRzOmh9fWZ1bmN0aW9uIGdldFJlbWFpbmluZ1Zpc2l0b3JDb29raWVUaW1lb3V0KCl7dmFyIGE9bmV3IERhdGUsYj1hLmdldFRpbWUoKSxjPWdldFZhbHVlc0Zyb21WaXNpdG9ySWRDb29raWUoKS5jcmVhdGVUcyxkPXBhcnNlSW50KGMsMTApLGU9MWUzKmQrY29uZmlnVmlzaXRvckNvb2tpZVRpbWVvdXQtYjtyZXR1cm4gZX1mdW5jdGlvbiBzZXRWaXNpdG9ySWRDb29raWUoYSl7aWYoY29uZmlnVHJhY2tlclNpdGVJZCl7dmFyIGI9bmV3IERhdGUsYz1NYXRoLnJvdW5kKGIuZ2V0VGltZSgpLzFlMyk7aXNEZWZpbmVkKGEpfHwoYT1nZXRWYWx1ZXNGcm9tVmlzaXRvcklkQ29va2llKCkpO3ZhciBkPWEudXVpZCtcIi5cIithLmNyZWF0ZVRzK1wiLlwiK2EudmlzaXRDb3VudCtcIi5cIitjK1wiLlwiK2EubGFzdFZpc2l0VHMrXCIuXCIrYS5sYXN0RWNvbW1lcmNlT3JkZXJUcztzZXRDb29raWUoZ2V0Q29va2llTmFtZShcImlkXCIpLGQsZ2V0UmVtYWluaW5nVmlzaXRvckNvb2tpZVRpbWVvdXQoKSxjb25maWdDb29raWVQYXRoLGNvbmZpZ0Nvb2tpZURvbWFpbil9fWZ1bmN0aW9uIGxvYWRSZWZlcnJlckF0dHJpYnV0aW9uQ29va2llKCl7dmFyIGE9Z2V0Q29va2llKGdldENvb2tpZU5hbWUoXCJyZWZcIikpO2lmKGEubGVuZ3RoKXRyeXtpZihhPUpTT04yLnBhcnNlKGEpLGlzT2JqZWN0KGEpKXJldHVybiBhfWNhdGNoKGEpe31yZXR1cm5bXCJcIixcIlwiLDAsXCJcIl19ZnVuY3Rpb24gZGVsZXRlQ29va2llKGEsYixjKXtzZXRDb29raWUoYSxcIlwiLC04NjQwMCxiLGMpfWZ1bmN0aW9uIGlzUG9zc2libGVUb1NldENvb2tpZU9uRG9tYWluKGEpe3ZhciBiPVwidGVzdHZhbHVlXCI7cmV0dXJuIHNldENvb2tpZShcInRlc3RcIixiLDFlNCxudWxsLGEpLGdldENvb2tpZShcInRlc3RcIik9PT1iJiYoZGVsZXRlQ29va2llKFwidGVzdFwiLG51bGwsYSksITApfWZ1bmN0aW9uIGRlbGV0ZUNvb2tpZXMoKXt2YXIgYT1jb25maWdDb29raWVzRGlzYWJsZWQ7Y29uZmlnQ29va2llc0Rpc2FibGVkPSExO3ZhciBjLGQsYj1bXCJpZFwiLFwic2VzXCIsXCJjdmFyXCIsXCJyZWZcIl07Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylkPWdldENvb2tpZU5hbWUoYltjXSksMCE9PWdldENvb2tpZShkKSYmZGVsZXRlQ29va2llKGQsY29uZmlnQ29va2llUGF0aCxjb25maWdDb29raWVEb21haW4pO2NvbmZpZ0Nvb2tpZXNEaXNhYmxlZD1hfWZ1bmN0aW9uIHNldFNpdGVJZChhKXtjb25maWdUcmFja2VyU2l0ZUlkPWEsc2V0VmlzaXRvcklkQ29va2llKCl9ZnVuY3Rpb24gc29ydE9iamVjdEJ5S2V5cyhhKXtpZihhJiZpc09iamVjdChhKSl7dmFyIGMsYj1bXTtmb3IoYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiZiLnB1c2goYyk7dmFyIGQ9e307Yi5zb3J0KCk7dmFyIGYsZT1iLmxlbmd0aDtmb3IoZj0wO2Y8ZTtmKyspZFtiW2ZdXT1hW2JbZl1dO3JldHVybiBkfX1mdW5jdGlvbiBzZXRTZXNzaW9uQ29va2llKCl7c2V0Q29va2llKGdldENvb2tpZU5hbWUoXCJzZXNcIiksXCIqXCIsY29uZmlnU2Vzc2lvbkNvb2tpZVRpbWVvdXQsY29uZmlnQ29va2llUGF0aCxjb25maWdDb29raWVEb21haW4pfWZ1bmN0aW9uIGdldFJlcXVlc3QoYSxiLGMsZCl7ZnVuY3Rpb24geShhLGIpe3ZhciBjPUpTT04yLnN0cmluZ2lmeShhKTtyZXR1cm4gYy5sZW5ndGg+Mj9cIiZcIitiK1wiPVwiK2VuY29kZVdyYXBwZXIoYyk6XCJcIn12YXIgZSxoLGksayxsLHQsdSxmPW5ldyBEYXRlLGc9TWF0aC5yb3VuZChmLmdldFRpbWUoKS8xZTMpLGo9MTAyNCxtPWN1c3RvbVZhcmlhYmxlcyxuPWdldENvb2tpZU5hbWUoXCJzZXNcIiksbz1nZXRDb29raWVOYW1lKFwicmVmXCIpLHA9Z2V0Q29va2llTmFtZShcImN2YXJcIikscT1nZXRDb29raWUobikscj1sb2FkUmVmZXJyZXJBdHRyaWJ1dGlvbkNvb2tpZSgpLHM9Y29uZmlnQ3VzdG9tVXJsfHxsb2NhdGlvbkhyZWZBbGlhcztpZihjb25maWdDb29raWVzRGlzYWJsZWQmJmRlbGV0ZUNvb2tpZXMoKSxjb25maWdEb05vdFRyYWNrKXJldHVyblwiXCI7dmFyIHY9Z2V0VmFsdWVzRnJvbVZpc2l0b3JJZENvb2tpZSgpO2lzRGVmaW5lZChkKXx8KGQ9XCJcIik7dmFyIHc9ZG9jdW1lbnRBbGlhcy5jaGFyYWN0ZXJTZXR8fGRvY3VtZW50QWxpYXMuY2hhcnNldDtpZih3JiZcInV0Zi04XCIhPT13LnRvTG93ZXJDYXNlKCl8fCh3PW51bGwpLHQ9clswXSx1PXJbMV0saD1yWzJdLGk9clszXSwhcSl7dmFyIHg9Y29uZmlnU2Vzc2lvbkNvb2tpZVRpbWVvdXQvMWUzO2lmKCghdi5sYXN0VmlzaXRUc3x8Zy12Lmxhc3RWaXNpdFRzPngpJiYodi52aXNpdENvdW50Kyssdi5sYXN0VmlzaXRUcz12LmN1cnJlbnRWaXNpdFRzKSwhY29uZmlnQ29udmVyc2lvbkF0dHJpYnV0aW9uRmlyc3RSZWZlcnJlcnx8IXQubGVuZ3RoKXtmb3IoZSBpbiBjb25maWdDYW1wYWlnbk5hbWVQYXJhbWV0ZXJzKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjb25maWdDYW1wYWlnbk5hbWVQYXJhbWV0ZXJzLGUpJiYodD1nZXRQYXJhbWV0ZXIocyxjb25maWdDYW1wYWlnbk5hbWVQYXJhbWV0ZXJzW2VdKSx0Lmxlbmd0aCkpYnJlYWs7Zm9yKGUgaW4gY29uZmlnQ2FtcGFpZ25LZXl3b3JkUGFyYW1ldGVycylpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY29uZmlnQ2FtcGFpZ25LZXl3b3JkUGFyYW1ldGVycyxlKSYmKHU9Z2V0UGFyYW1ldGVyKHMsY29uZmlnQ2FtcGFpZ25LZXl3b3JkUGFyYW1ldGVyc1tlXSksdS5sZW5ndGgpKWJyZWFrfWs9Z2V0SG9zdE5hbWUoY29uZmlnUmVmZXJyZXJVcmwpLGw9aS5sZW5ndGg/Z2V0SG9zdE5hbWUoaSk6XCJcIiwhay5sZW5ndGh8fGlzU2l0ZUhvc3ROYW1lKGspfHxjb25maWdDb252ZXJzaW9uQXR0cmlidXRpb25GaXJzdFJlZmVycmVyJiZsLmxlbmd0aCYmIWlzU2l0ZUhvc3ROYW1lKGwpfHwoaT1jb25maWdSZWZlcnJlclVybCksKGkubGVuZ3RofHx0Lmxlbmd0aCkmJihoPWcscj1bdCx1LGgscHVyaWZ5KGkuc2xpY2UoMCxqKSldLHNldENvb2tpZShvLEpTT04yLnN0cmluZ2lmeShyKSxjb25maWdSZWZlcnJhbENvb2tpZVRpbWVvdXQsY29uZmlnQ29va2llUGF0aCxjb25maWdDb29raWVEb21haW4pKX1hKz1cIiZpZHNpdGU9XCIrY29uZmlnVHJhY2tlclNpdGVJZCtcIiZyZWM9MSZyPVwiK1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyLDgpK1wiJmg9XCIrZi5nZXRIb3VycygpK1wiJm09XCIrZi5nZXRNaW51dGVzKCkrXCImcz1cIitmLmdldFNlY29uZHMoKStcIiZ1cmw9XCIrZW5jb2RlV3JhcHBlcihwdXJpZnkocykpKyhjb25maWdSZWZlcnJlclVybC5sZW5ndGg/XCImdXJscmVmPVwiK2VuY29kZVdyYXBwZXIocHVyaWZ5KGNvbmZpZ1JlZmVycmVyVXJsKSk6XCJcIikrKGNvbmZpZ1VzZXJJZCYmY29uZmlnVXNlcklkLmxlbmd0aD9cIiZ1aWQ9XCIrZW5jb2RlV3JhcHBlcihjb25maWdVc2VySWQpOlwiXCIpK1wiJl9pZD1cIit2LnV1aWQrXCImX2lkdHM9XCIrdi5jcmVhdGVUcytcIiZfaWR2Yz1cIit2LnZpc2l0Q291bnQrXCImX2lkbj1cIit2Lm5ld1Zpc2l0b3IrKHQubGVuZ3RoP1wiJl9yY249XCIrZW5jb2RlV3JhcHBlcih0KTpcIlwiKSsodS5sZW5ndGg/XCImX3Jjaz1cIitlbmNvZGVXcmFwcGVyKHUpOlwiXCIpK1wiJl9yZWZ0cz1cIitoK1wiJl92aWV3dHM9XCIrdi5sYXN0VmlzaXRUcysoU3RyaW5nKHYubGFzdEVjb21tZXJjZU9yZGVyVHMpLmxlbmd0aD9cIiZfZWN0cz1cIit2Lmxhc3RFY29tbWVyY2VPcmRlclRzOlwiXCIpKyhTdHJpbmcoaSkubGVuZ3RoP1wiJl9yZWY9XCIrZW5jb2RlV3JhcHBlcihwdXJpZnkoaS5zbGljZSgwLGopKSk6XCJcIikrKHc/XCImY3M9XCIrZW5jb2RlV3JhcHBlcih3KTpcIlwiKStcIiZzZW5kX2ltYWdlPTBcIjtmb3IoZSBpbiBicm93c2VyRmVhdHVyZXMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJyb3dzZXJGZWF0dXJlcyxlKSYmKGErPVwiJlwiK2UrXCI9XCIrYnJvd3NlckZlYXR1cmVzW2VdKTtiP2ErPVwiJmRhdGE9XCIrZW5jb2RlV3JhcHBlcihKU09OMi5zdHJpbmdpZnkoYikpOmNvbmZpZ0N1c3RvbURhdGEmJihhKz1cIiZkYXRhPVwiK2VuY29kZVdyYXBwZXIoSlNPTjIuc3RyaW5naWZ5KGNvbmZpZ0N1c3RvbURhdGEpKSk7dmFyIHo9c29ydE9iamVjdEJ5S2V5cyhjdXN0b21WYXJpYWJsZXNQYWdlKSxBPXNvcnRPYmplY3RCeUtleXMoY3VzdG9tVmFyaWFibGVzRXZlbnQpO2lmKGErPXkoeixcImN2YXJcIiksYSs9eShBLFwiZV9jdmFyXCIpLGN1c3RvbVZhcmlhYmxlcyl7YSs9eShjdXN0b21WYXJpYWJsZXMsXCJfY3ZhclwiKTtmb3IoZSBpbiBtKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtLGUpJiYoXCJcIiE9PWN1c3RvbVZhcmlhYmxlc1tlXVswXSYmXCJcIiE9PWN1c3RvbVZhcmlhYmxlc1tlXVsxXXx8ZGVsZXRlIGN1c3RvbVZhcmlhYmxlc1tlXSk7Y29uZmlnU3RvcmVDdXN0b21WYXJpYWJsZXNJbkNvb2tpZSYmc2V0Q29va2llKHAsSlNPTjIuc3RyaW5naWZ5KGN1c3RvbVZhcmlhYmxlcyksY29uZmlnU2Vzc2lvbkNvb2tpZVRpbWVvdXQsY29uZmlnQ29va2llUGF0aCxjb25maWdDb29raWVEb21haW4pfXJldHVybiBjb25maWdQZXJmb3JtYW5jZVRyYWNraW5nRW5hYmxlZCYmKGNvbmZpZ1BlcmZvcm1hbmNlR2VuZXJhdGlvblRpbWU/YSs9XCImZ3RfbXM9XCIrY29uZmlnUGVyZm9ybWFuY2VHZW5lcmF0aW9uVGltZTpwZXJmb3JtYW5jZUFsaWFzJiZwZXJmb3JtYW5jZUFsaWFzLnRpbWluZyYmcGVyZm9ybWFuY2VBbGlhcy50aW1pbmcucmVxdWVzdFN0YXJ0JiZwZXJmb3JtYW5jZUFsaWFzLnRpbWluZy5yZXNwb25zZUVuZCYmKGErPVwiJmd0X21zPVwiKyhwZXJmb3JtYW5jZUFsaWFzLnRpbWluZy5yZXNwb25zZUVuZC1wZXJmb3JtYW5jZUFsaWFzLnRpbWluZy5yZXF1ZXN0U3RhcnQpKSksdi5sYXN0RWNvbW1lcmNlT3JkZXJUcz1pc0RlZmluZWQoZCkmJlN0cmluZyhkKS5sZW5ndGg/ZDp2Lmxhc3RFY29tbWVyY2VPcmRlclRzLHNldFZpc2l0b3JJZENvb2tpZSh2KSxzZXRTZXNzaW9uQ29va2llKCksYSs9ZXhlY3V0ZVBsdWdpbk1ldGhvZChjKSxjb25maWdBcHBlbmRUb1RyYWNraW5nVXJsLmxlbmd0aCYmKGErPVwiJlwiK2NvbmZpZ0FwcGVuZFRvVHJhY2tpbmdVcmwpLGlzRnVuY3Rpb24oY29uZmlnQ3VzdG9tUmVxdWVzdENvbnRlbnRQcm9jZXNzaW5nKSYmKGE9Y29uZmlnQ3VzdG9tUmVxdWVzdENvbnRlbnRQcm9jZXNzaW5nKGEpKSxhfWZ1bmN0aW9uIGxvZ0Vjb21tZXJjZShhLGIsYyxkLGUsZil7dmFyIGgsayxnPVwiaWRnb2FsPTBcIixpPW5ldyBEYXRlLGo9W107aWYoU3RyaW5nKGEpLmxlbmd0aCYmKGcrPVwiJmVjX2lkPVwiK2VuY29kZVdyYXBwZXIoYSksaD1NYXRoLnJvdW5kKGkuZ2V0VGltZSgpLzFlMykpLGcrPVwiJnJldmVudWU9XCIrYixTdHJpbmcoYykubGVuZ3RoJiYoZys9XCImZWNfc3Q9XCIrYyksU3RyaW5nKGQpLmxlbmd0aCYmKGcrPVwiJmVjX3R4PVwiK2QpLFN0cmluZyhlKS5sZW5ndGgmJihnKz1cIiZlY19zaD1cIitlKSxTdHJpbmcoZikubGVuZ3RoJiYoZys9XCImZWNfZHQ9XCIrZiksZWNvbW1lcmNlSXRlbXMpe2ZvcihrIGluIGVjb21tZXJjZUl0ZW1zKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlY29tbWVyY2VJdGVtcyxrKSYmKGlzRGVmaW5lZChlY29tbWVyY2VJdGVtc1trXVsxXSl8fChlY29tbWVyY2VJdGVtc1trXVsxXT1cIlwiKSxpc0RlZmluZWQoZWNvbW1lcmNlSXRlbXNba11bMl0pfHwoZWNvbW1lcmNlSXRlbXNba11bMl09XCJcIiksaXNEZWZpbmVkKGVjb21tZXJjZUl0ZW1zW2tdWzNdKSYmMCE9PVN0cmluZyhlY29tbWVyY2VJdGVtc1trXVszXSkubGVuZ3RofHwoZWNvbW1lcmNlSXRlbXNba11bM109MCksaXNEZWZpbmVkKGVjb21tZXJjZUl0ZW1zW2tdWzRdKSYmMCE9PVN0cmluZyhlY29tbWVyY2VJdGVtc1trXVs0XSkubGVuZ3RofHwoZWNvbW1lcmNlSXRlbXNba11bNF09MSksai5wdXNoKGVjb21tZXJjZUl0ZW1zW2tdKSk7Zys9XCImZWNfaXRlbXM9XCIrZW5jb2RlV3JhcHBlcihKU09OMi5zdHJpbmdpZnkoaikpfWc9Z2V0UmVxdWVzdChnLGNvbmZpZ0N1c3RvbURhdGEsXCJlY29tbWVyY2VcIixoKSxzZW5kUmVxdWVzdChnLGNvbmZpZ1RyYWNrZXJQYXVzZSl9ZnVuY3Rpb24gbG9nRWNvbW1lcmNlT3JkZXIoYSxiLGMsZCxlLGYpe1N0cmluZyhhKS5sZW5ndGgmJmlzRGVmaW5lZChiKSYmbG9nRWNvbW1lcmNlKGEsYixjLGQsZSxmKX1mdW5jdGlvbiBsb2dFY29tbWVyY2VDYXJ0VXBkYXRlKGEpe2lzRGVmaW5lZChhKSYmbG9nRWNvbW1lcmNlKFwiXCIsYSxcIlwiLFwiXCIsXCJcIixcIlwiKX1mdW5jdGlvbiBsb2dQYWdlVmlldyhhLGIpe3ZhciBkPShuZXcgRGF0ZSxnZXRSZXF1ZXN0KFwiYWN0aW9uX25hbWU9XCIrZW5jb2RlV3JhcHBlcih0aXRsZUZpeHVwKGF8fGNvbmZpZ1RpdGxlKSksYixcImxvZ1wiKSk7c2VuZFJlcXVlc3QoZCxjb25maWdUcmFja2VyUGF1c2UpfWZ1bmN0aW9uIGdldENsYXNzZXNSZWdFeHAoYSxiKXt2YXIgYyxkPVwiKF58ICkocGl3aWtbXy1dXCIrYjtpZihhKWZvcihjPTA7YzxhLmxlbmd0aDtjKyspZCs9XCJ8XCIrYVtjXTtyZXR1cm4gZCs9XCIpKCB8JClcIixuZXcgUmVnRXhwKGQpfWZ1bmN0aW9uIHN0YXJ0c1VybFdpdGhUcmFja2VyVXJsKGEpe3JldHVybiBjb25maWdUcmFja2VyVXJsJiZhJiYwPT09U3RyaW5nKGEpLmluZGV4T2YoY29uZmlnVHJhY2tlclVybCl9ZnVuY3Rpb24gZ2V0TGlua1R5cGUoYSxiLGMsZCl7aWYoc3RhcnRzVXJsV2l0aFRyYWNrZXJVcmwoYikpcmV0dXJuIDA7dmFyIGU9Z2V0Q2xhc3Nlc1JlZ0V4cChjb25maWdEb3dubG9hZENsYXNzZXMsXCJkb3dubG9hZFwiKSxmPWdldENsYXNzZXNSZWdFeHAoY29uZmlnTGlua0NsYXNzZXMsXCJsaW5rXCIpLGc9bmV3IFJlZ0V4cChcIlxcXFwuKFwiK2NvbmZpZ0Rvd25sb2FkRXh0ZW5zaW9ucy5qb2luKFwifFwiKStcIikoWz8mI118JClcIixcImlcIik7cmV0dXJuIGYudGVzdChhKT9cImxpbmtcIjpkfHxlLnRlc3QoYSl8fGcudGVzdChiKT9cImRvd25sb2FkXCI6Yz8wOlwibGlua1wifWZ1bmN0aW9uIGdldFNvdXJjZUVsZW1lbnQoYSl7dmFyIGI7Zm9yKGI9YS5wYXJlbnROb2RlO251bGwhPT1iJiZpc0RlZmluZWQoYikmJiFxdWVyeS5pc0xpbmtFbGVtZW50KGEpOylhPWIsYj1hLnBhcmVudE5vZGU7cmV0dXJuIGF9ZnVuY3Rpb24gZ2V0TGlua0lmU2hvdWxkQmVQcm9jZXNzZWQoYSl7aWYoYT1nZXRTb3VyY2VFbGVtZW50KGEpLHF1ZXJ5Lmhhc05vZGVBdHRyaWJ1dGUoYSxcImhyZWZcIikmJmlzRGVmaW5lZChhLmhyZWYpKXt2YXIgYj1xdWVyeS5nZXRBdHRyaWJ1dGVWYWx1ZUZyb21Ob2RlKGEsXCJocmVmXCIpO2lmKCFzdGFydHNVcmxXaXRoVHJhY2tlclVybChiKSl7dmFyIGM9YS5ob3N0bmFtZXx8Z2V0SG9zdE5hbWUoYS5ocmVmKSxkPWMudG9Mb3dlckNhc2UoKSxlPWEuaHJlZi5yZXBsYWNlKGMsZCksZj1uZXcgUmVnRXhwKFwiXihqYXZhc2NyaXB0fHZic2NyaXB0fGpzY3JpcHR8bW9jaGF8bGl2ZXNjcmlwdHxlY21hc2NyaXB0fG1haWx0byk6XCIsXCJpXCIpO2lmKCFmLnRlc3QoZSkpe3ZhciBnPWdldExpbmtUeXBlKGEuY2xhc3NOYW1lLGUsaXNTaXRlSG9zdE5hbWUoZCkscXVlcnkuaGFzTm9kZUF0dHJpYnV0ZShhLFwiZG93bmxvYWRcIikpO2lmKGcpcmV0dXJue3R5cGU6ZyxocmVmOmV9fX19fWZ1bmN0aW9uIGJ1aWxkQ29udGVudEludGVyYWN0aW9uUmVxdWVzdChhLGIsYyxkKXt2YXIgZT1jb250ZW50LmJ1aWxkSW50ZXJhY3Rpb25SZXF1ZXN0UGFyYW1zKGEsYixjLGQpO2lmKGUpcmV0dXJuIGdldFJlcXVlc3QoZSxudWxsLFwiY29udGVudEludGVyYWN0aW9uXCIpfWZ1bmN0aW9uIGJ1aWxkQ29udGVudEludGVyYWN0aW9uVHJhY2tpbmdSZWRpcmVjdFVybChhLGIsYyxkLGUpe2lmKGlzRGVmaW5lZChhKSl7aWYoc3RhcnRzVXJsV2l0aFRyYWNrZXJVcmwoYSkpcmV0dXJuIGE7dmFyIGY9Y29udGVudC50b0Fic29sdXRlVXJsKGEpLGc9XCJyZWRpcmVjdHVybD1cIitlbmNvZGVXcmFwcGVyKGYpK1wiJlwiO2crPWJ1aWxkQ29udGVudEludGVyYWN0aW9uUmVxdWVzdChiLGMsZCxlfHxhKTt2YXIgaD1cIiZcIjtyZXR1cm4gY29uZmlnVHJhY2tlclVybC5pbmRleE9mKFwiP1wiKTwwJiYoaD1cIj9cIiksY29uZmlnVHJhY2tlclVybCtoK2d9fWZ1bmN0aW9uIGlzTm9kZUF1dGhvcml6ZWRUb1RyaWdnZXJJbnRlcmFjdGlvbihhLGIpe2lmKCFhfHwhYilyZXR1cm4hMTt2YXIgYz1jb250ZW50LmZpbmRUYXJnZXROb2RlKGEpO3JldHVybiFjb250ZW50LnNob3VsZElnbm9yZUludGVyYWN0aW9uKGMpJiYoYz1jb250ZW50LmZpbmRUYXJnZXROb2RlTm9EZWZhdWx0KGEpLCEoYyYmIWNvbnRhaW5zTm9kZUVsZW1lbnQoYyxiKSkpfWZ1bmN0aW9uIGdldENvbnRlbnRJbnRlcmFjdGlvblRvUmVxdWVzdElmUG9zc2libGUoYSxiLGMpe2lmKGEpe3ZhciBkPWNvbnRlbnQuZmluZFBhcmVudENvbnRlbnROb2RlKGEpO2lmKGQmJmlzTm9kZUF1dGhvcml6ZWRUb1RyaWdnZXJJbnRlcmFjdGlvbihkLGEpKXt2YXIgZT1jb250ZW50LmJ1aWxkQ29udGVudEJsb2NrKGQpO2lmKGUpcmV0dXJuIWUudGFyZ2V0JiZjJiYoZS50YXJnZXQ9YyksY29udGVudC5idWlsZEludGVyYWN0aW9uUmVxdWVzdFBhcmFtcyhiLGUubmFtZSxlLnBpZWNlLGUudGFyZ2V0KX19fWZ1bmN0aW9uIHdhc0NvbnRlbnRJbXByZXNzaW9uQWxyZWFkeVRyYWNrZWQoYSl7aWYoIXRyYWNrZWRDb250ZW50SW1wcmVzc2lvbnN8fCF0cmFja2VkQ29udGVudEltcHJlc3Npb25zLmxlbmd0aClyZXR1cm4hMTt2YXIgYixjO2ZvcihiPTA7Yjx0cmFja2VkQ29udGVudEltcHJlc3Npb25zLmxlbmd0aDtiKyspaWYoYz10cmFja2VkQ29udGVudEltcHJlc3Npb25zW2JdLGMmJmMubmFtZT09PWEubmFtZSYmYy5waWVjZT09PWEucGllY2UmJmMudGFyZ2V0PT09YS50YXJnZXQpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcmVwbGFjZUhyZWZJZkludGVybmFsTGluayhhKXtpZighYSlyZXR1cm4hMTt2YXIgYj1jb250ZW50LmZpbmRUYXJnZXROb2RlKGEpO2lmKCFifHxjb250ZW50LnNob3VsZElnbm9yZUludGVyYWN0aW9uKGIpKXJldHVybiExO3ZhciBjPWdldExpbmtJZlNob3VsZEJlUHJvY2Vzc2VkKGIpO2lmKGxpbmtUcmFja2luZ0VuYWJsZWQmJmMmJmMudHlwZSlyZXR1cm4hMTtpZihxdWVyeS5pc0xpbmtFbGVtZW50KGIpJiZxdWVyeS5oYXNOb2RlQXR0cmlidXRlV2l0aFZhbHVlKGIsXCJocmVmXCIpKXt2YXIgZD1TdHJpbmcocXVlcnkuZ2V0QXR0cmlidXRlVmFsdWVGcm9tTm9kZShiLFwiaHJlZlwiKSk7aWYoMD09PWQuaW5kZXhPZihcIiNcIikpcmV0dXJuITE7aWYoc3RhcnRzVXJsV2l0aFRyYWNrZXJVcmwoZCkpcmV0dXJuITA7aWYoIWNvbnRlbnQuaXNVcmxUb0N1cnJlbnREb21haW4oZCkpcmV0dXJuITE7dmFyIGU9Y29udGVudC5idWlsZENvbnRlbnRCbG9jayhhKTtpZighZSlyZXR1cm47dmFyIGY9ZS5uYW1lLGc9ZS5waWVjZSxoPWUudGFyZ2V0O3F1ZXJ5Lmhhc05vZGVBdHRyaWJ1dGVXaXRoVmFsdWUoYixjb250ZW50LkNPTlRFTlRfVEFSR0VUX0FUVFIpJiYhYi53YXNDb250ZW50VGFyZ2V0QXR0clJlcGxhY2VkfHwoYi53YXNDb250ZW50VGFyZ2V0QXR0clJlcGxhY2VkPSEwLGg9Y29udGVudC50b0Fic29sdXRlVXJsKGQpLHF1ZXJ5LnNldEFueUF0dHJpYnV0ZShiLGNvbnRlbnQuQ09OVEVOVF9UQVJHRVRfQVRUUixoKSk7dmFyIGk9YnVpbGRDb250ZW50SW50ZXJhY3Rpb25UcmFja2luZ1JlZGlyZWN0VXJsKGQsXCJjbGlja1wiLGYsZyxoKTtyZXR1cm4gY29udGVudC5zZXRIcmVmQXR0cmlidXRlKGIsaSksITB9cmV0dXJuITF9ZnVuY3Rpb24gcmVwbGFjZUhyZWZzSWZJbnRlcm5hbExpbmsoYSl7aWYoYSYmYS5sZW5ndGgpe3ZhciBiO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspcmVwbGFjZUhyZWZJZkludGVybmFsTGluayhhW2JdKX19ZnVuY3Rpb24gdHJhY2tDb250ZW50SW1wcmVzc2lvbkNsaWNrSW50ZXJhY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2lmKGEpe3ZhciBkLGM9Y29udGVudC5maW5kUGFyZW50Q29udGVudE5vZGUoYSk7aWYoYiYmKGQ9Yi50YXJnZXR8fGIuc3JjRWxlbWVudCksZHx8KGQ9YSksaXNOb2RlQXV0aG9yaXplZFRvVHJpZ2dlckludGVyYWN0aW9uKGMsZCkpe2lmKHNldEV4cGlyZURhdGVUaW1lKGNvbmZpZ1RyYWNrZXJQYXVzZSkscXVlcnkuaXNMaW5rRWxlbWVudChhKSYmcXVlcnkuaGFzTm9kZUF0dHJpYnV0ZVdpdGhWYWx1ZShhLFwiaHJlZlwiKSYmcXVlcnkuaGFzTm9kZUF0dHJpYnV0ZVdpdGhWYWx1ZShhLGNvbnRlbnQuQ09OVEVOVF9UQVJHRVRfQVRUUikpe3ZhciBlPXF1ZXJ5LmdldEF0dHJpYnV0ZVZhbHVlRnJvbU5vZGUoYSxcImhyZWZcIik7IXN0YXJ0c1VybFdpdGhUcmFja2VyVXJsKGUpJiZhLndhc0NvbnRlbnRUYXJnZXRBdHRyUmVwbGFjZWQmJnF1ZXJ5LnNldEFueUF0dHJpYnV0ZShhLGNvbnRlbnQuQ09OVEVOVF9UQVJHRVRfQVRUUixcIlwiKX12YXIgZj1nZXRMaW5rSWZTaG91bGRCZVByb2Nlc3NlZChhKTtpZihsaW5rVHJhY2tpbmdJbnN0YWxsZWQmJmYmJmYudHlwZSlyZXR1cm4gZi50eXBlO2lmKHJlcGxhY2VIcmVmSWZJbnRlcm5hbExpbmsoYykpcmV0dXJuXCJocmVmXCI7dmFyIGc9Y29udGVudC5idWlsZENvbnRlbnRCbG9jayhjKTtpZihnKXt2YXIgaD1nLm5hbWUsaT1nLnBpZWNlLGo9Zy50YXJnZXQsaz1idWlsZENvbnRlbnRJbnRlcmFjdGlvblJlcXVlc3QoXCJjbGlja1wiLGgsaSxqKTtyZXR1cm4gc2VuZFJlcXVlc3Qoayxjb25maWdUcmFja2VyUGF1c2UpLGt9fX19fWZ1bmN0aW9uIHNldHVwSW50ZXJhY3Rpb25zVHJhY2tpbmcoYSl7aWYoYSYmYS5sZW5ndGgpe3ZhciBiLGM7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKyljPWNvbnRlbnQuZmluZFRhcmdldE5vZGUoYVtiXSksYyYmIWMuY29udGVudEludGVyYWN0aW9uVHJhY2tpbmdTZXR1cERvbmUmJihjLmNvbnRlbnRJbnRlcmFjdGlvblRyYWNraW5nU2V0dXBEb25lPSEwLGFkZEV2ZW50TGlzdGVuZXIoYyxcImNsaWNrXCIsdHJhY2tDb250ZW50SW1wcmVzc2lvbkNsaWNrSW50ZXJhY3Rpb24oYykpKX19ZnVuY3Rpb24gYnVpbGRDb250ZW50SW1wcmVzc2lvbnNSZXF1ZXN0cyhhLGIpe2lmKCFhfHwhYS5sZW5ndGgpcmV0dXJuW107dmFyIGMsZDtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKXdhc0NvbnRlbnRJbXByZXNzaW9uQWxyZWFkeVRyYWNrZWQoYVtjXSk/KGEuc3BsaWNlKGMsMSksYy0tKTp0cmFja2VkQ29udGVudEltcHJlc3Npb25zLnB1c2goYVtjXSk7aWYoIWF8fCFhLmxlbmd0aClyZXR1cm5bXTtyZXBsYWNlSHJlZnNJZkludGVybmFsTGluayhiKSxzZXR1cEludGVyYWN0aW9uc1RyYWNraW5nKGIpO3ZhciBlPVtdO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspZD1nZXRSZXF1ZXN0KGNvbnRlbnQuYnVpbGRJbXByZXNzaW9uUmVxdWVzdFBhcmFtcyhhW2NdLm5hbWUsYVtjXS5waWVjZSxhW2NdLnRhcmdldCksdm9pZCAwLFwiY29udGVudEltcHJlc3Npb25zXCIpLGUucHVzaChkKTtyZXR1cm4gZX1mdW5jdGlvbiBnZXRDb250ZW50SW1wcmVzc2lvbnNSZXF1ZXN0c0Zyb21Ob2RlcyhhKXt2YXIgYj1jb250ZW50LmNvbGxlY3RDb250ZW50KGEpO3JldHVybiBidWlsZENvbnRlbnRJbXByZXNzaW9uc1JlcXVlc3RzKGIsYSl9ZnVuY3Rpb24gZ2V0Q3VycmVudGx5VmlzaWJsZUNvbnRlbnRJbXByZXNzaW9uc1JlcXVlc3RzSWZOb3RUcmFja2VkWWV0KGEpe2lmKCFhfHwhYS5sZW5ndGgpcmV0dXJuW107dmFyIGI7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKyljb250ZW50LmlzTm9kZVZpc2libGUoYVtiXSl8fChhLnNwbGljZShiLDEpLGItLSk7cmV0dXJuIGEmJmEubGVuZ3RoP2dldENvbnRlbnRJbXByZXNzaW9uc1JlcXVlc3RzRnJvbU5vZGVzKGEpOltdfWZ1bmN0aW9uIGJ1aWxkQ29udGVudEltcHJlc3Npb25SZXF1ZXN0KGEsYixjKXt2YXIgZD1jb250ZW50LmJ1aWxkSW1wcmVzc2lvblJlcXVlc3RQYXJhbXMoYSxiLGMpO3JldHVybiBnZXRSZXF1ZXN0KGQsbnVsbCxcImNvbnRlbnRJbXByZXNzaW9uXCIpfWZ1bmN0aW9uIGJ1aWxkQ29udGVudEludGVyYWN0aW9uUmVxdWVzdE5vZGUoYSxiKXtpZihhKXt2YXIgYz1jb250ZW50LmZpbmRQYXJlbnRDb250ZW50Tm9kZShhKSxkPWNvbnRlbnQuYnVpbGRDb250ZW50QmxvY2soYyk7aWYoZClyZXR1cm4gYnx8KGI9XCJVbmtub3duXCIpLGJ1aWxkQ29udGVudEludGVyYWN0aW9uUmVxdWVzdChiLGQubmFtZSxkLnBpZWNlLGQudGFyZ2V0KX19ZnVuY3Rpb24gYnVpbGRFdmVudFJlcXVlc3QoYSxiLGMsZCl7cmV0dXJuXCJlX2M9XCIrZW5jb2RlV3JhcHBlcihhKStcIiZlX2E9XCIrZW5jb2RlV3JhcHBlcihiKSsoaXNEZWZpbmVkKGMpP1wiJmVfbj1cIitlbmNvZGVXcmFwcGVyKGMpOlwiXCIpKyhpc0RlZmluZWQoZCk/XCImZV92PVwiK2VuY29kZVdyYXBwZXIoZCk6XCJcIik7XG59ZnVuY3Rpb24gbG9nRXZlbnQoYSxiLGMsZCxlKXtpZigwPT09U3RyaW5nKGEpLmxlbmd0aHx8MD09PVN0cmluZyhiKS5sZW5ndGgpcmV0dXJuITE7dmFyIGY9Z2V0UmVxdWVzdChidWlsZEV2ZW50UmVxdWVzdChhLGIsYyxkKSxlLFwiZXZlbnRcIik7c2VuZFJlcXVlc3QoZixjb25maWdUcmFja2VyUGF1c2UpfWZ1bmN0aW9uIGxvZ1NpdGVTZWFyY2goYSxiLGMsZCl7dmFyIGU9Z2V0UmVxdWVzdChcInNlYXJjaD1cIitlbmNvZGVXcmFwcGVyKGEpKyhiP1wiJnNlYXJjaF9jYXQ9XCIrZW5jb2RlV3JhcHBlcihiKTpcIlwiKSsoaXNEZWZpbmVkKGMpP1wiJnNlYXJjaF9jb3VudD1cIitjOlwiXCIpLGQsXCJzaXRlc2VhcmNoXCIpO3NlbmRSZXF1ZXN0KGUsY29uZmlnVHJhY2tlclBhdXNlKX1mdW5jdGlvbiBsb2dHb2FsKGEsYixjKXt2YXIgZD1nZXRSZXF1ZXN0KFwiaWRnb2FsPVwiK2ErKGI/XCImcmV2ZW51ZT1cIitiOlwiXCIpLGMsXCJnb2FsXCIpO3NlbmRSZXF1ZXN0KGQsY29uZmlnVHJhY2tlclBhdXNlKX1mdW5jdGlvbiBsb2dMaW5rKGEsYixjLGQsZSl7dmFyIGY9YitcIj1cIitlbmNvZGVXcmFwcGVyKHB1cmlmeShhKSksZz1nZXRDb250ZW50SW50ZXJhY3Rpb25Ub1JlcXVlc3RJZlBvc3NpYmxlKGUsXCJjbGlja1wiLGEpO2cmJihmKz1cIiZcIitnKTt2YXIgaD1nZXRSZXF1ZXN0KGYsYyxcImxpbmtcIik7c2VuZFJlcXVlc3QoaCxkPzA6Y29uZmlnVHJhY2tlclBhdXNlLGQpfWZ1bmN0aW9uIHByZWZpeFByb3BlcnR5TmFtZShhLGIpe3JldHVyblwiXCIhPT1hP2ErYi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStiLnNsaWNlKDEpOmJ9ZnVuY3Rpb24gdHJhY2tDYWxsYmFjayhhKXt2YXIgYixjLGUsZD1bXCJcIixcIndlYmtpdFwiLFwibXNcIixcIm1velwiXTtpZighY29uZmlnQ291bnRQcmVSZW5kZXJlZClmb3IoYz0wO2M8ZC5sZW5ndGg7YysrKWlmKGU9ZFtjXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZG9jdW1lbnRBbGlhcyxwcmVmaXhQcm9wZXJ0eU5hbWUoZSxcImhpZGRlblwiKSkpe1wicHJlcmVuZGVyXCI9PT1kb2N1bWVudEFsaWFzW3ByZWZpeFByb3BlcnR5TmFtZShlLFwidmlzaWJpbGl0eVN0YXRlXCIpXSYmKGI9ITApO2JyZWFrfXJldHVybiBiP3ZvaWQgYWRkRXZlbnRMaXN0ZW5lcihkb2N1bWVudEFsaWFzLGUrXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsZnVuY3Rpb24gYigpe2RvY3VtZW50QWxpYXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihlK1widmlzaWJpbGl0eWNoYW5nZVwiLGIsITEpLGEoKX0pOnZvaWQgYSgpfWZ1bmN0aW9uIHRyYWNrQ2FsbGJhY2tPbkxvYWQoYSl7XCJjb21wbGV0ZVwiPT09ZG9jdW1lbnRBbGlhcy5yZWFkeVN0YXRlP2EoKTp3aW5kb3dBbGlhcy5hZGRFdmVudExpc3RlbmVyP3dpbmRvd0FsaWFzLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsYSk6d2luZG93QWxpYXMuYXR0YWNoRXZlbnQmJndpbmRvd0FsaWFzLmF0dGFjaEV2ZW50KFwib25Mb2FkXCIsYSl9ZnVuY3Rpb24gdHJhY2tDYWxsYmFja09uUmVhZHkoYSl7dmFyIGI9ITE7Yj1kb2N1bWVudEFsaWFzLmF0dGFjaEV2ZW50P1wiY29tcGxldGVcIj09PWRvY3VtZW50QWxpYXMucmVhZHlTdGF0ZTpcImxvYWRpbmdcIiE9PWRvY3VtZW50QWxpYXMucmVhZHlTdGF0ZSxiP2EoKTpkb2N1bWVudEFsaWFzLmFkZEV2ZW50TGlzdGVuZXI/ZG9jdW1lbnRBbGlhcy5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLGEpOmRvY3VtZW50QWxpYXMuYXR0YWNoRXZlbnQmJmRvY3VtZW50QWxpYXMuYXR0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixhKX1mdW5jdGlvbiBwcm9jZXNzQ2xpY2soYSl7dmFyIGI9Z2V0TGlua0lmU2hvdWxkQmVQcm9jZXNzZWQoYSk7YiYmYi50eXBlJiYoYi5ocmVmPXNhZmVEZWNvZGVXcmFwcGVyKGIuaHJlZiksbG9nTGluayhiLmhyZWYsYi50eXBlLHZvaWQgMCxudWxsLGEpKX1mdW5jdGlvbiBpc0lFOG9yT2xkZXIoKXtyZXR1cm4gZG9jdW1lbnRBbGlhcy5hbGwmJiFkb2N1bWVudEFsaWFzLmFkZEV2ZW50TGlzdGVuZXJ9ZnVuY3Rpb24gZ2V0S2V5Q29kZUZyb21FdmVudChhKXt2YXIgYj1hLndoaWNoLGM9dHlwZW9mIGEuYnV0dG9uO3JldHVybiBifHxcInVuZGVmaW5lZFwiPT09Y3x8KGlzSUU4b3JPbGRlcigpPzEmYS5idXR0b24/Yj0xOjImYS5idXR0b24/Yj0zOjQmYS5idXR0b24mJihiPTIpOjA9PT1hLmJ1dHRvbnx8XCIwXCI9PT1hLmJ1dHRvbj9iPTE6MSZhLmJ1dHRvbj9iPTI6MiZhLmJ1dHRvbiYmKGI9MykpLGJ9ZnVuY3Rpb24gZ2V0TmFtZU9mQ2xpY2tlZEJ1dHRvbihhKXtzd2l0Y2goZ2V0S2V5Q29kZUZyb21FdmVudChhKSl7Y2FzZSAxOnJldHVyblwibGVmdFwiO2Nhc2UgMjpyZXR1cm5cIm1pZGRsZVwiO2Nhc2UgMzpyZXR1cm5cInJpZ2h0XCJ9fWZ1bmN0aW9uIGdldFRhcmdldEVsZW1lbnRGcm9tRXZlbnQoYSl7cmV0dXJuIGEudGFyZ2V0fHxhLnNyY0VsZW1lbnR9ZnVuY3Rpb24gY2xpY2tIYW5kbGVyKGEpe3JldHVybiBmdW5jdGlvbihiKXtiPWJ8fHdpbmRvd0FsaWFzLmV2ZW50O3ZhciBjPWdldE5hbWVPZkNsaWNrZWRCdXR0b24oYiksZD1nZXRUYXJnZXRFbGVtZW50RnJvbUV2ZW50KGIpO2lmKFwiY2xpY2tcIj09PWIudHlwZSl7dmFyIGU9ITE7YSYmXCJtaWRkbGVcIj09PWMmJihlPSEwKSxkJiYhZSYmcHJvY2Vzc0NsaWNrKGQpfWVsc2VcIm1vdXNlZG93blwiPT09Yi50eXBlP1wibWlkZGxlXCI9PT1jJiZkPyhsYXN0QnV0dG9uPWMsbGFzdFRhcmdldD1kKTpsYXN0QnV0dG9uPWxhc3RUYXJnZXQ9bnVsbDpcIm1vdXNldXBcIj09PWIudHlwZT8oYz09PWxhc3RCdXR0b24mJmQ9PT1sYXN0VGFyZ2V0JiZwcm9jZXNzQ2xpY2soZCksbGFzdEJ1dHRvbj1sYXN0VGFyZ2V0PW51bGwpOlwiY29udGV4dG1lbnVcIj09PWIudHlwZSYmcHJvY2Vzc0NsaWNrKGQpfX1mdW5jdGlvbiBhZGRDbGlja0xpc3RlbmVyKGEsYil7YWRkRXZlbnRMaXN0ZW5lcihhLFwiY2xpY2tcIixjbGlja0hhbmRsZXIoYiksITEpLGImJihhZGRFdmVudExpc3RlbmVyKGEsXCJtb3VzZXVwXCIsY2xpY2tIYW5kbGVyKGIpLCExKSxhZGRFdmVudExpc3RlbmVyKGEsXCJtb3VzZWRvd25cIixjbGlja0hhbmRsZXIoYiksITEpLGFkZEV2ZW50TGlzdGVuZXIoYSxcImNvbnRleHRtZW51XCIsY2xpY2tIYW5kbGVyKGIpLCExKSl9ZnVuY3Rpb24gYWRkQ2xpY2tMaXN0ZW5lcnMoYSl7aWYoIWxpbmtUcmFja2luZ0luc3RhbGxlZCl7bGlua1RyYWNraW5nSW5zdGFsbGVkPSEwO3ZhciBiLGM9Z2V0Q2xhc3Nlc1JlZ0V4cChjb25maWdJZ25vcmVDbGFzc2VzLFwiaWdub3JlXCIpLGQ9ZG9jdW1lbnRBbGlhcy5saW5rcztpZihkKWZvcihiPTA7YjxkLmxlbmd0aDtiKyspYy50ZXN0KGRbYl0uY2xhc3NOYW1lKXx8YWRkQ2xpY2tMaXN0ZW5lcihkW2JdLGEpfX1mdW5jdGlvbiBlbmFibGVUcmFja09ubHlWaXNpYmxlQ29udGVudChhLGIsYyl7ZnVuY3Rpb24gZygpe2Q9ITB9aWYoaXNUcmFja09ubHlWaXNpYmxlQ29udGVudEVuYWJsZWQpcmV0dXJuITA7aXNUcmFja09ubHlWaXNpYmxlQ29udGVudEVuYWJsZWQ9ITA7dmFyIGUsZixkPSExO3RyYWNrQ2FsbGJhY2tPbkxvYWQoZnVuY3Rpb24oKXtmdW5jdGlvbiBoKGEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpc1RyYWNrT25seVZpc2libGVDb250ZW50RW5hYmxlZCYmKGQ9ITEsYy50cmFja1Zpc2libGVDb250ZW50SW1wcmVzc2lvbnMoKSxoKGEpKX0sYSl9ZnVuY3Rpb24gaShhKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aXNUcmFja09ubHlWaXNpYmxlQ29udGVudEVuYWJsZWQmJihkJiYoZD0hMSxjLnRyYWNrVmlzaWJsZUNvbnRlbnRJbXByZXNzaW9ucygpKSxpKGEpKX0sYSl9aWYoYSl7Zm9yKGU9W1wic2Nyb2xsXCIsXCJyZXNpemVcIl0sZj0wO2Y8ZS5sZW5ndGg7ZisrKWRvY3VtZW50QWxpYXMuYWRkRXZlbnRMaXN0ZW5lcj9kb2N1bWVudEFsaWFzLmFkZEV2ZW50TGlzdGVuZXIoZVtmXSxnKTp3aW5kb3dBbGlhcy5hdHRhY2hFdmVudChcIm9uXCIrZVtmXSxnKTtpKDEwMCl9YiYmYj4wJiYoYj1wYXJzZUludChiLDEwKSxoKGIpKX0pfWZ1bmN0aW9uIGRldGVjdEJyb3dzZXJGZWF0dXJlcygpe3ZhciBhLGIsYz17cGRmOlwiYXBwbGljYXRpb24vcGRmXCIscXQ6XCJ2aWRlby9xdWlja3RpbWVcIixyZWFscDpcImF1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdpblwiLHdtYTpcImFwcGxpY2F0aW9uL3gtbXBsYXllcjJcIixkaXI6XCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yXCIsZmxhOlwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIixqYXZhOlwiYXBwbGljYXRpb24veC1qYXZhLXZtXCIsZ2VhcnM6XCJhcHBsaWNhdGlvbi94LWdvb2dsZWdlYXJzXCIsYWc6XCJhcHBsaWNhdGlvbi94LXNpbHZlcmxpZ2h0XCJ9LGQ9d2luZG93QWxpYXMuZGV2aWNlUGl4ZWxSYXRpb3x8MTtpZighbmV3IFJlZ0V4cChcIk1TSUVcIikudGVzdChuYXZpZ2F0b3JBbGlhcy51c2VyQWdlbnQpKXtpZihuYXZpZ2F0b3JBbGlhcy5taW1lVHlwZXMmJm5hdmlnYXRvckFsaWFzLm1pbWVUeXBlcy5sZW5ndGgpZm9yKGEgaW4gYylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxhKSYmKGI9bmF2aWdhdG9yQWxpYXMubWltZVR5cGVzW2NbYV1dLGJyb3dzZXJGZWF0dXJlc1thXT1iJiZiLmVuYWJsZWRQbHVnaW4/XCIxXCI6XCIwXCIpO1widW5rbm93blwiIT10eXBlb2YgbmF2aWdhdG9yLmphdmFFbmFibGVkJiZpc0RlZmluZWQobmF2aWdhdG9yQWxpYXMuamF2YUVuYWJsZWQpJiZuYXZpZ2F0b3JBbGlhcy5qYXZhRW5hYmxlZCgpJiYoYnJvd3NlckZlYXR1cmVzLmphdmE9XCIxXCIpLGlzRnVuY3Rpb24od2luZG93QWxpYXMuR2VhcnNGYWN0b3J5KSYmKGJyb3dzZXJGZWF0dXJlcy5nZWFycz1cIjFcIiksYnJvd3NlckZlYXR1cmVzLmNvb2tpZT1oYXNDb29raWVzKCl9YnJvd3NlckZlYXR1cmVzLnJlcz1zY3JlZW5BbGlhcy53aWR0aCpkK1wieFwiK3NjcmVlbkFsaWFzLmhlaWdodCpkfWZ1bmN0aW9uIHJlZ2lzdGVySG9vayhob29rTmFtZSx1c2VySG9vayl7dmFyIGhvb2tPYmo9bnVsbDtpZihpc1N0cmluZyhob29rTmFtZSkmJiFpc0RlZmluZWQocmVnaXN0ZXJlZEhvb2tzW2hvb2tOYW1lXSkmJnVzZXJIb29rKXtpZihpc09iamVjdCh1c2VySG9vaykpaG9va09iaj11c2VySG9vaztlbHNlIGlmKGlzU3RyaW5nKHVzZXJIb29rKSl0cnl7ZXZhbChcImhvb2tPYmogPVwiK3VzZXJIb29rKX1jYXRjaChhKXt9cmVnaXN0ZXJlZEhvb2tzW2hvb2tOYW1lXT1ob29rT2JqfXJldHVybiBob29rT2JqfXZhciByZWdpc3RlcmVkSG9va3M9e30sbG9jYXRpb25BcnJheT11cmxGaXh1cChkb2N1bWVudEFsaWFzLmRvbWFpbix3aW5kb3dBbGlhcy5sb2NhdGlvbi5ocmVmLGdldFJlZmVycmVyKCkpLGRvbWFpbkFsaWFzPWRvbWFpbkZpeHVwKGxvY2F0aW9uQXJyYXlbMF0pLGxvY2F0aW9uSHJlZkFsaWFzPXNhZmVEZWNvZGVXcmFwcGVyKGxvY2F0aW9uQXJyYXlbMV0pLGNvbmZpZ1JlZmVycmVyVXJsPXNhZmVEZWNvZGVXcmFwcGVyKGxvY2F0aW9uQXJyYXlbMl0pLGVuYWJsZUpTRXJyb3JUcmFja2luZz0hMSxkZWZhdWx0UmVxdWVzdE1ldGhvZD1cIkdFVFwiLGNvbmZpZ1JlcXVlc3RNZXRob2Q9ZGVmYXVsdFJlcXVlc3RNZXRob2QsZGVmYXVsdFJlcXVlc3RDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiLGNvbmZpZ1JlcXVlc3RDb250ZW50VHlwZT1kZWZhdWx0UmVxdWVzdENvbnRlbnRUeXBlLGNvbmZpZ1RyYWNrZXJVcmw9dHJhY2tlclVybHx8XCJcIixjb25maWdBcGlVcmw9XCJcIixjb25maWdBcHBlbmRUb1RyYWNraW5nVXJsPVwiXCIsY29uZmlnVHJhY2tlclNpdGVJZD1zaXRlSWR8fFwiXCIsY29uZmlnVXNlcklkPVwiXCIsdmlzaXRvclVVSUQ9XCJcIixjb25maWdDdXN0b21VcmwsY29uZmlnVGl0bGU9ZG9jdW1lbnRBbGlhcy50aXRsZSxjb25maWdEb3dubG9hZEV4dGVuc2lvbnM9W1wiN3pcIixcImFhY1wiLFwiYXBrXCIsXCJhcmNcIixcImFyalwiLFwiYXNmXCIsXCJhc3hcIixcImF2aVwiLFwiYXp3M1wiLFwiYmluXCIsXCJjc3ZcIixcImRlYlwiLFwiZG1nXCIsXCJkb2NcIixcImRvY3hcIixcImVwdWJcIixcImV4ZVwiLFwiZmx2XCIsXCJnaWZcIixcImd6XCIsXCJnemlwXCIsXCJocXhcIixcImlib29rc1wiLFwiamFyXCIsXCJqcGdcIixcImpwZWdcIixcImpzXCIsXCJtb2JpXCIsXCJtcDJcIixcIm1wM1wiLFwibXA0XCIsXCJtcGdcIixcIm1wZWdcIixcIm1vdlwiLFwibW92aWVcIixcIm1zaVwiLFwibXNwXCIsXCJvZGJcIixcIm9kZlwiLFwib2RnXCIsXCJvZHNcIixcIm9kdFwiLFwib2dnXCIsXCJvZ3ZcIixcInBkZlwiLFwicGhwc1wiLFwicG5nXCIsXCJwcHRcIixcInBwdHhcIixcInF0XCIsXCJxdG1cIixcInJhXCIsXCJyYW1cIixcInJhclwiLFwicnBtXCIsXCJzZWFcIixcInNpdFwiLFwidGFyXCIsXCJ0YnpcIixcInRiejJcIixcImJ6XCIsXCJiejJcIixcInRnelwiLFwidG9ycmVudFwiLFwidHh0XCIsXCJ3YXZcIixcIndtYVwiLFwid212XCIsXCJ3cGRcIixcInhsc1wiLFwieGxzeFwiLFwieG1sXCIsXCJ6XCIsXCJ6aXBcIl0sY29uZmlnSG9zdHNBbGlhcz1bZG9tYWluQWxpYXNdLGNvbmZpZ0lnbm9yZUNsYXNzZXM9W10sY29uZmlnRG93bmxvYWRDbGFzc2VzPVtdLGNvbmZpZ0xpbmtDbGFzc2VzPVtdLGNvbmZpZ1RyYWNrZXJQYXVzZT01MDAsY29uZmlnTWluaW11bVZpc2l0VGltZSxjb25maWdIZWFydEJlYXREZWxheSxoZWFydEJlYXRQaW5nSWZBY3Rpdml0eUFsaWFzLGNvbmZpZ0Rpc2NhcmRIYXNoVGFnLGNvbmZpZ0N1c3RvbURhdGEsY29uZmlnQ2FtcGFpZ25OYW1lUGFyYW1ldGVycz1bXCJwa19jYW1wYWlnblwiLFwicGl3aWtfY2FtcGFpZ25cIixcInV0bV9jYW1wYWlnblwiLFwidXRtX3NvdXJjZVwiLFwidXRtX21lZGl1bVwiXSxjb25maWdDYW1wYWlnbktleXdvcmRQYXJhbWV0ZXJzPVtcInBrX2t3ZFwiLFwicGl3aWtfa3dkXCIsXCJ1dG1fdGVybVwiXSxjb25maWdDb29raWVOYW1lUHJlZml4PVwiX3BrX1wiLGNvbmZpZ0Nvb2tpZURvbWFpbixjb25maWdDb29raWVQYXRoLGNvbmZpZ0Nvb2tpZXNEaXNhYmxlZD0hMSxjb25maWdEb05vdFRyYWNrLGNvbmZpZ0NvdW50UHJlUmVuZGVyZWQsY29uZmlnQ29udmVyc2lvbkF0dHJpYnV0aW9uRmlyc3RSZWZlcnJlcixjb25maWdWaXNpdG9yQ29va2llVGltZW91dD0zMzk1NTJlNSxjb25maWdTZXNzaW9uQ29va2llVGltZW91dD0xOGU1LGNvbmZpZ1JlZmVycmFsQ29va2llVGltZW91dD0xNTc2OGU2LGNvbmZpZ1BlcmZvcm1hbmNlVHJhY2tpbmdFbmFibGVkPSEwLGNvbmZpZ1BlcmZvcm1hbmNlR2VuZXJhdGlvblRpbWU9MCxjb25maWdTdG9yZUN1c3RvbVZhcmlhYmxlc0luQ29va2llPSExLGN1c3RvbVZhcmlhYmxlcz0hMSxjb25maWdDdXN0b21SZXF1ZXN0Q29udGVudFByb2Nlc3NpbmcsY3VzdG9tVmFyaWFibGVzUGFnZT17fSxjdXN0b21WYXJpYWJsZXNFdmVudD17fSxjdXN0b21WYXJpYWJsZU1heGltdW1MZW5ndGg9MjAwLGVjb21tZXJjZUl0ZW1zPXt9LGJyb3dzZXJGZWF0dXJlcz17fSx0cmFja2VkQ29udGVudEltcHJlc3Npb25zPVtdLGlzVHJhY2tPbmx5VmlzaWJsZUNvbnRlbnRFbmFibGVkPSExLHRpbWVOZXh0VHJhY2tpbmdSZXF1ZXN0Q2FuQmVFeGVjdXRlZEltbWVkaWF0ZWx5PSExLGxpbmtUcmFja2luZ0luc3RhbGxlZD0hMSxsaW5rVHJhY2tpbmdFbmFibGVkPSExLGhlYXJ0QmVhdFNldFVwPSExLGxhc3RUcmFja2VyUmVxdWVzdFRpbWU9bnVsbCxoZWFydEJlYXRUaW1lb3V0LGxhc3RCdXR0b24sbGFzdFRhcmdldCxoYXNoPXNoYTEsZG9tYWluSGFzaDtyZXR1cm4gaGVhcnRCZWF0UGluZ0lmQWN0aXZpdHlBbGlhcz1mdW5jdGlvbigpe3ZhciBiPW5ldyBEYXRlO2lmKGxhc3RUcmFja2VyUmVxdWVzdFRpbWUrY29uZmlnSGVhcnRCZWF0RGVsYXk8PWIuZ2V0VGltZSgpKXt2YXIgYz1nZXRSZXF1ZXN0KFwicGluZz0xXCIsbnVsbCxcInBpbmdcIik7cmV0dXJuIHNlbmRSZXF1ZXN0KGMsY29uZmlnVHJhY2tlclBhdXNlKSwhMH1yZXR1cm4hMX0sZGV0ZWN0QnJvd3NlckZlYXR1cmVzKCksdXBkYXRlRG9tYWluSGFzaCgpLHNldFZpc2l0b3JJZENvb2tpZSgpLGV4ZWN1dGVQbHVnaW5NZXRob2QoXCJydW5cIixyZWdpc3Rlckhvb2spLHtob29rOnJlZ2lzdGVyZWRIb29rcyxnZXRIb29rOmZ1bmN0aW9uKGEpe3JldHVybiByZWdpc3RlcmVkSG9va3NbYV19LGdldFF1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHF1ZXJ5fSxnZXRDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnRlbnR9LGJ1aWxkQ29udGVudEltcHJlc3Npb25SZXF1ZXN0OmJ1aWxkQ29udGVudEltcHJlc3Npb25SZXF1ZXN0LGJ1aWxkQ29udGVudEludGVyYWN0aW9uUmVxdWVzdDpidWlsZENvbnRlbnRJbnRlcmFjdGlvblJlcXVlc3QsYnVpbGRDb250ZW50SW50ZXJhY3Rpb25SZXF1ZXN0Tm9kZTpidWlsZENvbnRlbnRJbnRlcmFjdGlvblJlcXVlc3ROb2RlLGJ1aWxkQ29udGVudEludGVyYWN0aW9uVHJhY2tpbmdSZWRpcmVjdFVybDpidWlsZENvbnRlbnRJbnRlcmFjdGlvblRyYWNraW5nUmVkaXJlY3RVcmwsZ2V0Q29udGVudEltcHJlc3Npb25zUmVxdWVzdHNGcm9tTm9kZXM6Z2V0Q29udGVudEltcHJlc3Npb25zUmVxdWVzdHNGcm9tTm9kZXMsZ2V0Q3VycmVudGx5VmlzaWJsZUNvbnRlbnRJbXByZXNzaW9uc1JlcXVlc3RzSWZOb3RUcmFja2VkWWV0OmdldEN1cnJlbnRseVZpc2libGVDb250ZW50SW1wcmVzc2lvbnNSZXF1ZXN0c0lmTm90VHJhY2tlZFlldCx0cmFja0NhbGxiYWNrT25Mb2FkOnRyYWNrQ2FsbGJhY2tPbkxvYWQsdHJhY2tDYWxsYmFja09uUmVhZHk6dHJhY2tDYWxsYmFja09uUmVhZHksYnVpbGRDb250ZW50SW1wcmVzc2lvbnNSZXF1ZXN0czpidWlsZENvbnRlbnRJbXByZXNzaW9uc1JlcXVlc3RzLHdhc0NvbnRlbnRJbXByZXNzaW9uQWxyZWFkeVRyYWNrZWQ6d2FzQ29udGVudEltcHJlc3Npb25BbHJlYWR5VHJhY2tlZCxhcHBlbmRDb250ZW50SW50ZXJhY3Rpb25Ub1JlcXVlc3RJZlBvc3NpYmxlOmdldENvbnRlbnRJbnRlcmFjdGlvblRvUmVxdWVzdElmUG9zc2libGUsc2V0dXBJbnRlcmFjdGlvbnNUcmFja2luZzpzZXR1cEludGVyYWN0aW9uc1RyYWNraW5nLHRyYWNrQ29udGVudEltcHJlc3Npb25DbGlja0ludGVyYWN0aW9uOnRyYWNrQ29udGVudEltcHJlc3Npb25DbGlja0ludGVyYWN0aW9uLGludGVybmFsSXNOb2RlVmlzaWJsZTppc1Zpc2libGUsaXNOb2RlQXV0aG9yaXplZFRvVHJpZ2dlckludGVyYWN0aW9uOmlzTm9kZUF1dGhvcml6ZWRUb1RyaWdnZXJJbnRlcmFjdGlvbixyZXBsYWNlSHJlZklmSW50ZXJuYWxMaW5rOnJlcGxhY2VIcmVmSWZJbnRlcm5hbExpbmssZ2V0Q29uZmlnRG93bmxvYWRFeHRlbnNpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbmZpZ0Rvd25sb2FkRXh0ZW5zaW9uc30sZW5hYmxlVHJhY2tPbmx5VmlzaWJsZUNvbnRlbnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZW5hYmxlVHJhY2tPbmx5VmlzaWJsZUNvbnRlbnQoYSxiLHRoaXMpfSxjbGVhclRyYWNrZWRDb250ZW50SW1wcmVzc2lvbnM6ZnVuY3Rpb24oKXt0cmFja2VkQ29udGVudEltcHJlc3Npb25zPVtdfSxnZXRUcmFja2VkQ29udGVudEltcHJlc3Npb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHRyYWNrZWRDb250ZW50SW1wcmVzc2lvbnN9LGNsZWFyRW5hYmxlVHJhY2tPbmx5VmlzaWJsZUNvbnRlbnQ6ZnVuY3Rpb24oKXtpc1RyYWNrT25seVZpc2libGVDb250ZW50RW5hYmxlZD0hMX0sZGlzYWJsZUxpbmtUcmFja2luZzpmdW5jdGlvbigpe2xpbmtUcmFja2luZ0luc3RhbGxlZD0hMSxsaW5rVHJhY2tpbmdFbmFibGVkPSExfSxnZXRDb25maWdWaXNpdG9yQ29va2llVGltZW91dDpmdW5jdGlvbigpe3JldHVybiBjb25maWdWaXNpdG9yQ29va2llVGltZW91dH0sZ2V0UmVtYWluaW5nVmlzaXRvckNvb2tpZVRpbWVvdXQ6Z2V0UmVtYWluaW5nVmlzaXRvckNvb2tpZVRpbWVvdXQsZ2V0VmlzaXRvcklkOmZ1bmN0aW9uKCl7cmV0dXJuIGdldFZhbHVlc0Zyb21WaXNpdG9ySWRDb29raWUoKS51dWlkfSxnZXRWaXNpdG9ySW5mbzpmdW5jdGlvbigpe3JldHVybiBsb2FkVmlzaXRvcklkQ29va2llKCl9LGdldEF0dHJpYnV0aW9uSW5mbzpmdW5jdGlvbigpe3JldHVybiBsb2FkUmVmZXJyZXJBdHRyaWJ1dGlvbkNvb2tpZSgpfSxnZXRBdHRyaWJ1dGlvbkNhbXBhaWduTmFtZTpmdW5jdGlvbigpe3JldHVybiBsb2FkUmVmZXJyZXJBdHRyaWJ1dGlvbkNvb2tpZSgpWzBdfSxnZXRBdHRyaWJ1dGlvbkNhbXBhaWduS2V5d29yZDpmdW5jdGlvbigpe3JldHVybiBsb2FkUmVmZXJyZXJBdHRyaWJ1dGlvbkNvb2tpZSgpWzFdfSxnZXRBdHRyaWJ1dGlvblJlZmVycmVyVGltZXN0YW1wOmZ1bmN0aW9uKCl7cmV0dXJuIGxvYWRSZWZlcnJlckF0dHJpYnV0aW9uQ29va2llKClbMl19LGdldEF0dHJpYnV0aW9uUmVmZXJyZXJVcmw6ZnVuY3Rpb24oKXtyZXR1cm4gbG9hZFJlZmVycmVyQXR0cmlidXRpb25Db29raWUoKVszXX0sc2V0VHJhY2tlclVybDpmdW5jdGlvbihhKXtjb25maWdUcmFja2VyVXJsPWF9LGdldFRyYWNrZXJVcmw6ZnVuY3Rpb24oKXtyZXR1cm4gY29uZmlnVHJhY2tlclVybH0sZ2V0U2l0ZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbmZpZ1RyYWNrZXJTaXRlSWR9LHNldFNpdGVJZDpmdW5jdGlvbihhKXtzZXRTaXRlSWQoYSl9LHNldFVzZXJJZDpmdW5jdGlvbihhKXtpc0RlZmluZWQoYSkmJmEubGVuZ3RoJiYoY29uZmlnVXNlcklkPWEsdmlzaXRvclVVSUQ9aGFzaChjb25maWdVc2VySWQpLnN1YnN0cigwLDE2KSl9LGdldFVzZXJJZDpmdW5jdGlvbigpe3JldHVybiBjb25maWdVc2VySWR9LHNldEN1c3RvbURhdGE6ZnVuY3Rpb24oYSxiKXtpc09iamVjdChhKT9jb25maWdDdXN0b21EYXRhPWE6KGNvbmZpZ0N1c3RvbURhdGF8fChjb25maWdDdXN0b21EYXRhPXt9KSxjb25maWdDdXN0b21EYXRhW2FdPWIpfSxnZXRDdXN0b21EYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbmZpZ0N1c3RvbURhdGF9LHNldEN1c3RvbVJlcXVlc3RQcm9jZXNzaW5nOmZ1bmN0aW9uKGEpe2NvbmZpZ0N1c3RvbVJlcXVlc3RDb250ZW50UHJvY2Vzc2luZz1hfSxhcHBlbmRUb1RyYWNraW5nVXJsOmZ1bmN0aW9uKGEpe2NvbmZpZ0FwcGVuZFRvVHJhY2tpbmdVcmw9YX0sZ2V0UmVxdWVzdDpmdW5jdGlvbihhKXtyZXR1cm4gZ2V0UmVxdWVzdChhKX0sYWRkUGx1Z2luOmZ1bmN0aW9uKGEsYil7cGx1Z2luc1thXT1ifSxzZXRDdXN0b21WYXJpYWJsZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZTtpc0RlZmluZWQoZCl8fChkPVwidmlzaXRcIiksaXNEZWZpbmVkKGIpJiYoaXNEZWZpbmVkKGMpfHwoYz1cIlwiKSxhPjAmJihiPWlzU3RyaW5nKGIpP2I6U3RyaW5nKGIpLGM9aXNTdHJpbmcoYyk/YzpTdHJpbmcoYyksZT1bYi5zbGljZSgwLGN1c3RvbVZhcmlhYmxlTWF4aW11bUxlbmd0aCksYy5zbGljZSgwLGN1c3RvbVZhcmlhYmxlTWF4aW11bUxlbmd0aCldLFwidmlzaXRcIj09PWR8fDI9PT1kPyhsb2FkQ3VzdG9tVmFyaWFibGVzKCksY3VzdG9tVmFyaWFibGVzW2FdPWUpOlwicGFnZVwiPT09ZHx8Mz09PWQ/Y3VzdG9tVmFyaWFibGVzUGFnZVthXT1lOlwiZXZlbnRcIj09PWQmJihjdXN0b21WYXJpYWJsZXNFdmVudFthXT1lKSkpfSxnZXRDdXN0b21WYXJpYWJsZTpmdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBpc0RlZmluZWQoYil8fChiPVwidmlzaXRcIiksXCJwYWdlXCI9PT1ifHwzPT09Yj9jPWN1c3RvbVZhcmlhYmxlc1BhZ2VbYV06XCJldmVudFwiPT09Yj9jPWN1c3RvbVZhcmlhYmxlc0V2ZW50W2FdOlwidmlzaXRcIiE9PWImJjIhPT1ifHwobG9hZEN1c3RvbVZhcmlhYmxlcygpLGM9Y3VzdG9tVmFyaWFibGVzW2FdKSwhKCFpc0RlZmluZWQoYyl8fGMmJlwiXCI9PT1jWzBdKSYmY30sZGVsZXRlQ3VzdG9tVmFyaWFibGU6ZnVuY3Rpb24oYSxiKXt0aGlzLmdldEN1c3RvbVZhcmlhYmxlKGEsYikmJnRoaXMuc2V0Q3VzdG9tVmFyaWFibGUoYSxcIlwiLFwiXCIsYil9LHN0b3JlQ3VzdG9tVmFyaWFibGVzSW5Db29raWU6ZnVuY3Rpb24oKXtjb25maWdTdG9yZUN1c3RvbVZhcmlhYmxlc0luQ29va2llPSEwfSxzZXRMaW5rVHJhY2tpbmdUaW1lcjpmdW5jdGlvbihhKXtjb25maWdUcmFja2VyUGF1c2U9YX0sc2V0RG93bmxvYWRFeHRlbnNpb25zOmZ1bmN0aW9uKGEpe2lzU3RyaW5nKGEpJiYoYT1hLnNwbGl0KFwifFwiKSksY29uZmlnRG93bmxvYWRFeHRlbnNpb25zPWF9LGFkZERvd25sb2FkRXh0ZW5zaW9uczpmdW5jdGlvbihhKXt2YXIgYjtmb3IoaXNTdHJpbmcoYSkmJihhPWEuc3BsaXQoXCJ8XCIpKSxiPTA7YjxhLmxlbmd0aDtiKyspY29uZmlnRG93bmxvYWRFeHRlbnNpb25zLnB1c2goYVtiXSl9LHJlbW92ZURvd25sb2FkRXh0ZW5zaW9uczpmdW5jdGlvbihhKXt2YXIgYixjPVtdO2Zvcihpc1N0cmluZyhhKSYmKGE9YS5zcGxpdChcInxcIikpLGI9MDtiPGNvbmZpZ0Rvd25sb2FkRXh0ZW5zaW9ucy5sZW5ndGg7YisrKWluZGV4T2ZBcnJheShhLGNvbmZpZ0Rvd25sb2FkRXh0ZW5zaW9uc1tiXSk9PT0tMSYmYy5wdXNoKGNvbmZpZ0Rvd25sb2FkRXh0ZW5zaW9uc1tiXSk7Y29uZmlnRG93bmxvYWRFeHRlbnNpb25zPWN9LHNldERvbWFpbnM6ZnVuY3Rpb24oYSl7Y29uZmlnSG9zdHNBbGlhcz1pc1N0cmluZyhhKT9bYV06YSxjb25maWdIb3N0c0FsaWFzLnB1c2goZG9tYWluQWxpYXMpfSxzZXRJZ25vcmVDbGFzc2VzOmZ1bmN0aW9uKGEpe2NvbmZpZ0lnbm9yZUNsYXNzZXM9aXNTdHJpbmcoYSk/W2FdOmF9LHNldFJlcXVlc3RNZXRob2Q6ZnVuY3Rpb24oYSl7Y29uZmlnUmVxdWVzdE1ldGhvZD1hfHxkZWZhdWx0UmVxdWVzdE1ldGhvZH0sc2V0UmVxdWVzdENvbnRlbnRUeXBlOmZ1bmN0aW9uKGEpe2NvbmZpZ1JlcXVlc3RDb250ZW50VHlwZT1hfHxkZWZhdWx0UmVxdWVzdENvbnRlbnRUeXBlfSxzZXRSZWZlcnJlclVybDpmdW5jdGlvbihhKXtjb25maWdSZWZlcnJlclVybD1hfSxzZXRDdXN0b21Vcmw6ZnVuY3Rpb24oYSl7Y29uZmlnQ3VzdG9tVXJsPXJlc29sdmVSZWxhdGl2ZVJlZmVyZW5jZShsb2NhdGlvbkhyZWZBbGlhcyxhKX0sc2V0RG9jdW1lbnRUaXRsZTpmdW5jdGlvbihhKXtjb25maWdUaXRsZT1hfSxzZXRBUElVcmw6ZnVuY3Rpb24oYSl7Y29uZmlnQXBpVXJsPWF9LHNldERvd25sb2FkQ2xhc3NlczpmdW5jdGlvbihhKXtjb25maWdEb3dubG9hZENsYXNzZXM9aXNTdHJpbmcoYSk/W2FdOmF9LHNldExpbmtDbGFzc2VzOmZ1bmN0aW9uKGEpe2NvbmZpZ0xpbmtDbGFzc2VzPWlzU3RyaW5nKGEpP1thXTphfSxzZXRDYW1wYWlnbk5hbWVLZXk6ZnVuY3Rpb24oYSl7Y29uZmlnQ2FtcGFpZ25OYW1lUGFyYW1ldGVycz1pc1N0cmluZyhhKT9bYV06YX0sc2V0Q2FtcGFpZ25LZXl3b3JkS2V5OmZ1bmN0aW9uKGEpe2NvbmZpZ0NhbXBhaWduS2V5d29yZFBhcmFtZXRlcnM9aXNTdHJpbmcoYSk/W2FdOmF9LGRpc2NhcmRIYXNoVGFnOmZ1bmN0aW9uKGEpe2NvbmZpZ0Rpc2NhcmRIYXNoVGFnPWF9LHNldENvb2tpZU5hbWVQcmVmaXg6ZnVuY3Rpb24oYSl7Y29uZmlnQ29va2llTmFtZVByZWZpeD1hLGN1c3RvbVZhcmlhYmxlcz1nZXRDdXN0b21WYXJpYWJsZXNGcm9tQ29va2llKCl9LHNldENvb2tpZURvbWFpbjpmdW5jdGlvbihhKXt2YXIgYj1kb21haW5GaXh1cChhKTtpc1Bvc3NpYmxlVG9TZXRDb29raWVPbkRvbWFpbihiKSYmKGNvbmZpZ0Nvb2tpZURvbWFpbj1iLHVwZGF0ZURvbWFpbkhhc2goKSl9LHNldENvb2tpZVBhdGg6ZnVuY3Rpb24oYSl7Y29uZmlnQ29va2llUGF0aD1hLHVwZGF0ZURvbWFpbkhhc2goKX0sc2V0VmlzaXRvckNvb2tpZVRpbWVvdXQ6ZnVuY3Rpb24oYSl7Y29uZmlnVmlzaXRvckNvb2tpZVRpbWVvdXQ9MWUzKmF9LHNldFNlc3Npb25Db29raWVUaW1lb3V0OmZ1bmN0aW9uKGEpe2NvbmZpZ1Nlc3Npb25Db29raWVUaW1lb3V0PTFlMyphfSxzZXRSZWZlcnJhbENvb2tpZVRpbWVvdXQ6ZnVuY3Rpb24oYSl7Y29uZmlnUmVmZXJyYWxDb29raWVUaW1lb3V0PTFlMyphfSxzZXRDb252ZXJzaW9uQXR0cmlidXRpb25GaXJzdFJlZmVycmVyOmZ1bmN0aW9uKGEpe2NvbmZpZ0NvbnZlcnNpb25BdHRyaWJ1dGlvbkZpcnN0UmVmZXJyZXI9YX0sZGlzYWJsZUNvb2tpZXM6ZnVuY3Rpb24oKXtjb25maWdDb29raWVzRGlzYWJsZWQ9ITAsYnJvd3NlckZlYXR1cmVzLmNvb2tpZT1cIjBcIixjb25maWdUcmFja2VyU2l0ZUlkJiZkZWxldGVDb29raWVzKCl9LGRlbGV0ZUNvb2tpZXM6ZnVuY3Rpb24oKXtkZWxldGVDb29raWVzKCl9LHNldERvTm90VHJhY2s6ZnVuY3Rpb24oYSl7dmFyIGI9bmF2aWdhdG9yQWxpYXMuZG9Ob3RUcmFja3x8bmF2aWdhdG9yQWxpYXMubXNEb05vdFRyYWNrO2NvbmZpZ0RvTm90VHJhY2s9YSYmKFwieWVzXCI9PT1ifHxcIjFcIj09PWIpLGNvbmZpZ0RvTm90VHJhY2smJnRoaXMuZGlzYWJsZUNvb2tpZXMoKX0sYWRkTGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXthZGRDbGlja0xpc3RlbmVyKGEsYil9LGVuYWJsZUxpbmtUcmFja2luZzpmdW5jdGlvbihhKXtsaW5rVHJhY2tpbmdFbmFibGVkPSEwLGhhc0xvYWRlZD9hZGRDbGlja0xpc3RlbmVycyhhKTpyZWdpc3RlcmVkT25Mb2FkSGFuZGxlcnMucHVzaChmdW5jdGlvbigpe2FkZENsaWNrTGlzdGVuZXJzKGEpfSl9LGVuYWJsZUpTRXJyb3JUcmFja2luZzpmdW5jdGlvbigpe2lmKCFlbmFibGVKU0Vycm9yVHJhY2tpbmcpe2VuYWJsZUpTRXJyb3JUcmFja2luZz0hMDt2YXIgYT13aW5kb3dBbGlhcy5vbmVycm9yO3dpbmRvd0FsaWFzLm9uZXJyb3I9ZnVuY3Rpb24oYixjLGQsZSxmKXtyZXR1cm4gdHJhY2tDYWxsYmFjayhmdW5jdGlvbigpe3ZhciBhPVwiSmF2YVNjcmlwdCBFcnJvcnNcIixmPWMrXCI6XCIrZDtlJiYoZis9XCI6XCIrZSksbG9nRXZlbnQoYSxmLGIpfSksISFhJiZhKGIsYyxkLGUsZil9fX0sZGlzYWJsZVBlcmZvcm1hbmNlVHJhY2tpbmc6ZnVuY3Rpb24oKXtjb25maWdQZXJmb3JtYW5jZVRyYWNraW5nRW5hYmxlZD0hMX0sc2V0R2VuZXJhdGlvblRpbWVNczpmdW5jdGlvbihhKXtjb25maWdQZXJmb3JtYW5jZUdlbmVyYXRpb25UaW1lPXBhcnNlSW50KGEsMTApfSxlbmFibGVIZWFydEJlYXRUaW1lcjpmdW5jdGlvbihhKXthPU1hdGgubWF4KGEsMSksY29uZmlnSGVhcnRCZWF0RGVsYXk9MWUzKihhfHwxNSksbnVsbCE9PWxhc3RUcmFja2VyUmVxdWVzdFRpbWUmJnNldFVwSGVhcnRCZWF0KCl9LGRpc2FibGVIZWFydEJlYXRUaW1lcjpmdW5jdGlvbigpe2hlYXJ0QmVhdERvd24oKSxjb25maWdIZWFydEJlYXREZWxheT1udWxsLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIixoZWFydEJlYXRPbkZvY3VzKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJsdXJcIixoZWFydEJlYXRPbkJsdXIpfSxraWxsRnJhbWU6ZnVuY3Rpb24oKXt3aW5kb3dBbGlhcy5sb2NhdGlvbiE9PXdpbmRvd0FsaWFzLnRvcC5sb2NhdGlvbiYmKHdpbmRvd0FsaWFzLnRvcC5sb2NhdGlvbj13aW5kb3dBbGlhcy5sb2NhdGlvbil9LHJlZGlyZWN0RmlsZTpmdW5jdGlvbihhKXtcImZpbGU6XCI9PT13aW5kb3dBbGlhcy5sb2NhdGlvbi5wcm90b2NvbCYmKHdpbmRvd0FsaWFzLmxvY2F0aW9uPWEpfSxzZXRDb3VudFByZVJlbmRlcmVkOmZ1bmN0aW9uKGEpe2NvbmZpZ0NvdW50UHJlUmVuZGVyZWQ9YX0sdHJhY2tHb2FsOmZ1bmN0aW9uKGEsYixjKXt0cmFja0NhbGxiYWNrKGZ1bmN0aW9uKCl7bG9nR29hbChhLGIsYyl9KX0sdHJhY2tMaW5rOmZ1bmN0aW9uKGEsYixjLGQpe3RyYWNrQ2FsbGJhY2soZnVuY3Rpb24oKXtsb2dMaW5rKGEsYixjLGQpfSl9LHRyYWNrUGFnZVZpZXc6ZnVuY3Rpb24oYSxiKXt0cmFja2VkQ29udGVudEltcHJlc3Npb25zPVtdLHRyYWNrQ2FsbGJhY2soaXNPdmVybGF5U2Vzc2lvbihjb25maWdUcmFja2VyU2l0ZUlkKT9mdW5jdGlvbigpe2luamVjdE92ZXJsYXlTY3JpcHRzKGNvbmZpZ1RyYWNrZXJVcmwsY29uZmlnQXBpVXJsLGNvbmZpZ1RyYWNrZXJTaXRlSWQpfTpmdW5jdGlvbigpe2xvZ1BhZ2VWaWV3KGEsYil9KX0sdHJhY2tBbGxDb250ZW50SW1wcmVzc2lvbnM6ZnVuY3Rpb24oKXtpc092ZXJsYXlTZXNzaW9uKGNvbmZpZ1RyYWNrZXJTaXRlSWQpfHx0cmFja0NhbGxiYWNrKGZ1bmN0aW9uKCl7dHJhY2tDYWxsYmFja09uUmVhZHkoZnVuY3Rpb24oKXt2YXIgYT1jb250ZW50LmZpbmRDb250ZW50Tm9kZXMoKSxiPWdldENvbnRlbnRJbXByZXNzaW9uc1JlcXVlc3RzRnJvbU5vZGVzKGEpO3NlbmRCdWxrUmVxdWVzdChiLGNvbmZpZ1RyYWNrZXJQYXVzZSl9KX0pfSx0cmFja1Zpc2libGVDb250ZW50SW1wcmVzc2lvbnM6ZnVuY3Rpb24oYSxiKXtpc092ZXJsYXlTZXNzaW9uKGNvbmZpZ1RyYWNrZXJTaXRlSWQpfHwoaXNEZWZpbmVkKGEpfHwoYT0hMCksaXNEZWZpbmVkKGIpfHwoYj03NTApLGVuYWJsZVRyYWNrT25seVZpc2libGVDb250ZW50KGEsYix0aGlzKSx0cmFja0NhbGxiYWNrKGZ1bmN0aW9uKCl7dHJhY2tDYWxsYmFja09uTG9hZChmdW5jdGlvbigpe3ZhciBhPWNvbnRlbnQuZmluZENvbnRlbnROb2RlcygpLGI9Z2V0Q3VycmVudGx5VmlzaWJsZUNvbnRlbnRJbXByZXNzaW9uc1JlcXVlc3RzSWZOb3RUcmFja2VkWWV0KGEpO3NlbmRCdWxrUmVxdWVzdChiLGNvbmZpZ1RyYWNrZXJQYXVzZSl9KX0pKX0sdHJhY2tDb250ZW50SW1wcmVzc2lvbjpmdW5jdGlvbihhLGIsYyl7aXNPdmVybGF5U2Vzc2lvbihjb25maWdUcmFja2VyU2l0ZUlkKXx8YSYmKGI9Ynx8XCJVbmtub3duXCIsdHJhY2tDYWxsYmFjayhmdW5jdGlvbigpe3ZhciBkPWJ1aWxkQ29udGVudEltcHJlc3Npb25SZXF1ZXN0KGEsYixjKTtzZW5kUmVxdWVzdChkLGNvbmZpZ1RyYWNrZXJQYXVzZSl9KSl9LHRyYWNrQ29udGVudEltcHJlc3Npb25zV2l0aGluTm9kZTpmdW5jdGlvbihhKXshaXNPdmVybGF5U2Vzc2lvbihjb25maWdUcmFja2VyU2l0ZUlkKSYmYSYmdHJhY2tDYWxsYmFjayhmdW5jdGlvbigpe2lzVHJhY2tPbmx5VmlzaWJsZUNvbnRlbnRFbmFibGVkP3RyYWNrQ2FsbGJhY2tPbkxvYWQoZnVuY3Rpb24oKXt2YXIgYj1jb250ZW50LmZpbmRDb250ZW50Tm9kZXNXaXRoaW5Ob2RlKGEpLGM9Z2V0Q3VycmVudGx5VmlzaWJsZUNvbnRlbnRJbXByZXNzaW9uc1JlcXVlc3RzSWZOb3RUcmFja2VkWWV0KGIpO3NlbmRCdWxrUmVxdWVzdChjLGNvbmZpZ1RyYWNrZXJQYXVzZSl9KTp0cmFja0NhbGxiYWNrT25SZWFkeShmdW5jdGlvbigpe3ZhciBiPWNvbnRlbnQuZmluZENvbnRlbnROb2Rlc1dpdGhpbk5vZGUoYSksYz1nZXRDb250ZW50SW1wcmVzc2lvbnNSZXF1ZXN0c0Zyb21Ob2RlcyhiKTtzZW5kQnVsa1JlcXVlc3QoYyxjb25maWdUcmFja2VyUGF1c2UpfSl9KX0sdHJhY2tDb250ZW50SW50ZXJhY3Rpb246ZnVuY3Rpb24oYSxiLGMsZCl7aXNPdmVybGF5U2Vzc2lvbihjb25maWdUcmFja2VyU2l0ZUlkKXx8YSYmYiYmKGM9Y3x8XCJVbmtub3duXCIsdHJhY2tDYWxsYmFjayhmdW5jdGlvbigpe3ZhciBlPWJ1aWxkQ29udGVudEludGVyYWN0aW9uUmVxdWVzdChhLGIsYyxkKTtzZW5kUmVxdWVzdChlLGNvbmZpZ1RyYWNrZXJQYXVzZSl9KSl9LHRyYWNrQ29udGVudEludGVyYWN0aW9uTm9kZTpmdW5jdGlvbihhLGIpeyFpc092ZXJsYXlTZXNzaW9uKGNvbmZpZ1RyYWNrZXJTaXRlSWQpJiZhJiZ0cmFja0NhbGxiYWNrKGZ1bmN0aW9uKCl7dmFyIGM9YnVpbGRDb250ZW50SW50ZXJhY3Rpb25SZXF1ZXN0Tm9kZShhLGIpO3NlbmRSZXF1ZXN0KGMsY29uZmlnVHJhY2tlclBhdXNlKX0pfSxsb2dBbGxDb250ZW50QmxvY2tzT25QYWdlOmZ1bmN0aW9uKCl7dmFyIGE9Y29udGVudC5maW5kQ29udGVudE5vZGVzKCksYj1jb250ZW50LmNvbGxlY3RDb250ZW50KGEpO3ZvaWQgMCE9PWNvbnNvbGUmJmNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZyhiKX0sdHJhY2tFdmVudDpmdW5jdGlvbihhLGIsYyxkKXt0cmFja0NhbGxiYWNrKGZ1bmN0aW9uKCl7bG9nRXZlbnQoYSxiLGMsZCl9KX0sdHJhY2tTaXRlU2VhcmNoOmZ1bmN0aW9uKGEsYixjKXt0cmFja0NhbGxiYWNrKGZ1bmN0aW9uKCl7bG9nU2l0ZVNlYXJjaChhLGIsYyl9KX0sc2V0RWNvbW1lcmNlVmlldzpmdW5jdGlvbihhLGIsYyxkKXtpc0RlZmluZWQoYykmJmMubGVuZ3RoP2MgaW5zdGFuY2VvZiBBcnJheSYmKGM9SlNPTjIuc3RyaW5naWZ5KGMpKTpjPVwiXCIsY3VzdG9tVmFyaWFibGVzUGFnZVs1XT1bXCJfcGtjXCIsY10saXNEZWZpbmVkKGQpJiZTdHJpbmcoZCkubGVuZ3RoJiYoY3VzdG9tVmFyaWFibGVzUGFnZVsyXT1bXCJfcGtwXCIsZF0pLChpc0RlZmluZWQoYSkmJmEubGVuZ3RofHxpc0RlZmluZWQoYikmJmIubGVuZ3RoKSYmKGlzRGVmaW5lZChhKSYmYS5sZW5ndGgmJihjdXN0b21WYXJpYWJsZXNQYWdlWzNdPVtcIl9wa3NcIixhXSksaXNEZWZpbmVkKGIpJiZiLmxlbmd0aHx8KGI9XCJcIiksY3VzdG9tVmFyaWFibGVzUGFnZVs0XT1bXCJfcGtuXCIsYl0pfSxhZGRFY29tbWVyY2VJdGVtOmZ1bmN0aW9uKGEsYixjLGQsZSl7YS5sZW5ndGgmJihlY29tbWVyY2VJdGVtc1thXT1bYSxiLGMsZCxlXSl9LHRyYWNrRWNvbW1lcmNlT3JkZXI6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2xvZ0Vjb21tZXJjZU9yZGVyKGEsYixjLGQsZSxmKX0sdHJhY2tFY29tbWVyY2VDYXJ0VXBkYXRlOmZ1bmN0aW9uKGEpe2xvZ0Vjb21tZXJjZUNhcnRVcGRhdGUoYSl9fX1mdW5jdGlvbiBUcmFja2VyUHJveHkoKXtyZXR1cm57cHVzaDphcHBseX19ZnVuY3Rpb24gYXBwbHlNZXRob2RzSW5PcmRlcihhLGIpe3ZhciBkLGUsYz17fTtmb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZj1iW2RdO2ZvcihjW2ZdPTEsZT0wO2U8YS5sZW5ndGg7ZSsrKWlmKGFbZV0mJmFbZV1bMF0pe3ZhciBnPWFbZV1bMF07Zj09PWcmJihhcHBseShhW2VdKSxkZWxldGUgYVtlXSxjW2ddPjEmJnZvaWQgMCE9PWNvbnNvbGUmJmNvbnNvbGUmJmNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoXCJUaGUgbWV0aG9kIFwiK2crJyBpcyByZWdpc3RlcmVkIG1vcmUgdGhhbiBvbmNlIGluIFwicGFxXCIgdmFyaWFibGUuIE9ubHkgdGhlIGxhc3QgY2FsbCBoYXMgYW4gZWZmZWN0LiBQbGVhc2UgaGF2ZSBhIGxvb2sgYXQgdGhlIG11bHRpcGxlIFBpd2lrIHRyYWNrZXJzIGRvY3VtZW50YXRpb246IGh0dHA6Ly9kZXZlbG9wZXIucGl3aWsub3JnL2d1aWRlcy90cmFja2luZy1qYXZhc2NyaXB0LWd1aWRlI211bHRpcGxlLXBpd2lrLXRyYWNrZXJzJyksY1tnXSsrKX19cmV0dXJuIGF9dmFyIGV4cGlyZURhdGVUaW1lLHBsdWdpbnM9e30sZG9jdW1lbnRBbGlhcz1kb2N1bWVudCxuYXZpZ2F0b3JBbGlhcz1uYXZpZ2F0b3Isc2NyZWVuQWxpYXM9c2NyZWVuLHdpbmRvd0FsaWFzPXdpbmRvdyxwZXJmb3JtYW5jZUFsaWFzPXdpbmRvd0FsaWFzLnBlcmZvcm1hbmNlfHx3aW5kb3dBbGlhcy5tb3pQZXJmb3JtYW5jZXx8d2luZG93QWxpYXMubXNQZXJmb3JtYW5jZXx8d2luZG93QWxpYXMud2Via2l0UGVyZm9ybWFuY2UsaGFzTG9hZGVkPSExLHJlZ2lzdGVyZWRPbkxvYWRIYW5kbGVycz1bXSxlbmNvZGVXcmFwcGVyPXdpbmRvd0FsaWFzLmVuY29kZVVSSUNvbXBvbmVudCxkZWNvZGVXcmFwcGVyPXdpbmRvd0FsaWFzLmRlY29kZVVSSUNvbXBvbmVudCx1cmxkZWNvZGU9dW5lc2NhcGUsYXN5bmNUcmFja2VyLGl0ZXJhdG9yLFBpd2lrLHF1ZXJ5PXtodG1sQ29sbGVjdGlvblRvQXJyYXk6ZnVuY3Rpb24oYSl7dmFyIGMsYj1bXTtpZighYXx8IWEubGVuZ3RoKXJldHVybiBiO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspYi5wdXNoKGFbY10pO3JldHVybiBifSxmaW5kOmZ1bmN0aW9uKGEpe2lmKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsfHwhYSlyZXR1cm5bXTt2YXIgYj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGEpO3JldHVybiB0aGlzLmh0bWxDb2xsZWN0aW9uVG9BcnJheShiKX0sZmluZE11bHRpcGxlOmZ1bmN0aW9uKGEpe2lmKCFhfHwhYS5sZW5ndGgpcmV0dXJuW107dmFyIGIsYyxkPVtdO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYz10aGlzLmZpbmQoYVtiXSksZD1kLmNvbmNhdChjKTtyZXR1cm4gZD10aGlzLm1ha2VOb2Rlc1VuaXF1ZShkKX0sZmluZE5vZGVzQnlUYWdOYW1lOmZ1bmN0aW9uKGEsYil7aWYoIWF8fCFifHwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSlyZXR1cm5bXTt2YXIgYz1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGIpO3JldHVybiB0aGlzLmh0bWxDb2xsZWN0aW9uVG9BcnJheShjKX0sbWFrZU5vZGVzVW5pcXVlOmZ1bmN0aW9uKGEpe3ZhciBiPVtdLmNvbmNhdChhKTtpZihhLnNvcnQoZnVuY3Rpb24oYSxjKXtpZihhPT09YylyZXR1cm4gMDt2YXIgZD1pbmRleE9mQXJyYXkoYixhKSxlPWluZGV4T2ZBcnJheShiLGMpO3JldHVybiBkPT09ZT8wOmQ+ZT8tMToxfSksYS5sZW5ndGg8PTEpcmV0dXJuIGE7dmFyIGYsYz0wLGQ9MCxlPVtdO2ZvcihmPWFbYysrXTtmOylmPT09YVtjXSYmKGQ9ZS5wdXNoKGMpKSxmPWFbYysrXXx8bnVsbDtmb3IoO2QtLTspYS5zcGxpY2UoZVtkXSwxKTtyZXR1cm4gYX0sZ2V0QXR0cmlidXRlVmFsdWVGcm9tTm9kZTpmdW5jdGlvbihhLGIpe2lmKHRoaXMuaGFzTm9kZUF0dHJpYnV0ZShhLGIpKXtpZihhJiZhLmdldEF0dHJpYnV0ZSlyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoYik7aWYoYSYmYS5hdHRyaWJ1dGVzKXt2YXIgYz10eXBlb2YgYS5hdHRyaWJ1dGVzW2JdO2lmKFwidW5kZWZpbmVkXCIhPT1jKXtpZihhLmF0dHJpYnV0ZXNbYl0udmFsdWUpcmV0dXJuIGEuYXR0cmlidXRlc1tiXS52YWx1ZTtpZihhLmF0dHJpYnV0ZXNbYl0ubm9kZVZhbHVlKXJldHVybiBhLmF0dHJpYnV0ZXNbYl0ubm9kZVZhbHVlO3ZhciBkLGU9YS5hdHRyaWJ1dGVzO2lmKGUpe2ZvcihkPTA7ZDxlLmxlbmd0aDtkKyspaWYoZVtkXS5ub2RlTmFtZT09PWIpcmV0dXJuIGVbZF0ubm9kZVZhbHVlO3JldHVybiBudWxsfX19fX0saGFzTm9kZUF0dHJpYnV0ZVdpdGhWYWx1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0QXR0cmlidXRlVmFsdWVGcm9tTm9kZShhLGIpO3JldHVybiEhY30saGFzTm9kZUF0dHJpYnV0ZTpmdW5jdGlvbihhLGIpe2lmKGEmJmEuaGFzQXR0cmlidXRlKXJldHVybiBhLmhhc0F0dHJpYnV0ZShiKTtpZihhJiZhLmF0dHJpYnV0ZXMpe3ZhciBjPXR5cGVvZiBhLmF0dHJpYnV0ZXNbYl07cmV0dXJuXCJ1bmRlZmluZWRcIiE9PWN9cmV0dXJuITF9LGhhc05vZGVDc3NDbGFzczpmdW5jdGlvbihhLGIpe2lmKGEmJmImJmEuY2xhc3NOYW1lKXt2YXIgYz1cInN0cmluZ1wiPT10eXBlb2YgYS5jbGFzc05hbWU/YS5jbGFzc05hbWUuc3BsaXQoXCIgXCIpOltdO2lmKC0xIT09aW5kZXhPZkFycmF5KGMsYikpcmV0dXJuITB9cmV0dXJuITF9LGZpbmROb2Rlc0hhdmluZ0F0dHJpYnV0ZTpmdW5jdGlvbihhLGIsYyl7aWYoY3x8KGM9W10pLCFhfHwhYilyZXR1cm4gYzt2YXIgZD1nZXRDaGlsZHJlbkZyb21Ob2RlKGEpO2lmKCFkfHwhZC5sZW5ndGgpcmV0dXJuIGM7dmFyIGUsZjtmb3IoZT0wO2U8ZC5sZW5ndGg7ZSsrKWY9ZFtlXSx0aGlzLmhhc05vZGVBdHRyaWJ1dGUoZixiKSYmYy5wdXNoKGYpLGM9dGhpcy5maW5kTm9kZXNIYXZpbmdBdHRyaWJ1dGUoZixiLGMpO3JldHVybiBjfSxmaW5kRmlyc3ROb2RlSGF2aW5nQXR0cmlidXRlOmZ1bmN0aW9uKGEsYil7aWYoYSYmYil7aWYodGhpcy5oYXNOb2RlQXR0cmlidXRlKGEsYikpcmV0dXJuIGE7dmFyIGM9dGhpcy5maW5kTm9kZXNIYXZpbmdBdHRyaWJ1dGUoYSxiKTtyZXR1cm4gYyYmYy5sZW5ndGg/Y1swXTp2b2lkIDB9fSxmaW5kRmlyc3ROb2RlSGF2aW5nQXR0cmlidXRlV2l0aFZhbHVlOmZ1bmN0aW9uKGEsYil7aWYoYSYmYil7aWYodGhpcy5oYXNOb2RlQXR0cmlidXRlV2l0aFZhbHVlKGEsYikpcmV0dXJuIGE7dmFyIGM9dGhpcy5maW5kTm9kZXNIYXZpbmdBdHRyaWJ1dGUoYSxiKTtpZihjJiZjLmxlbmd0aCl7dmFyIGQ7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKylpZih0aGlzLmdldEF0dHJpYnV0ZVZhbHVlRnJvbU5vZGUoY1tkXSxiKSlyZXR1cm4gY1tkXX19fSxmaW5kTm9kZXNIYXZpbmdDc3NDbGFzczpmdW5jdGlvbihhLGIsYyl7aWYoY3x8KGM9W10pLCFhfHwhYilyZXR1cm4gYztpZihhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpe3ZhciBkPWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShiKTtyZXR1cm4gdGhpcy5odG1sQ29sbGVjdGlvblRvQXJyYXkoZCl9dmFyIGU9Z2V0Q2hpbGRyZW5Gcm9tTm9kZShhKTtpZighZXx8IWUubGVuZ3RoKXJldHVybltdO3ZhciBmLGc7Zm9yKGY9MDtmPGUubGVuZ3RoO2YrKylnPWVbZl0sdGhpcy5oYXNOb2RlQ3NzQ2xhc3MoZyxiKSYmYy5wdXNoKGcpLGM9dGhpcy5maW5kTm9kZXNIYXZpbmdDc3NDbGFzcyhnLGIsYyk7cmV0dXJuIGN9LGZpbmRGaXJzdE5vZGVIYXZpbmdDbGFzczpmdW5jdGlvbihhLGIpe2lmKGEmJmIpe2lmKHRoaXMuaGFzTm9kZUNzc0NsYXNzKGEsYikpcmV0dXJuIGE7dmFyIGM9dGhpcy5maW5kTm9kZXNIYXZpbmdDc3NDbGFzcyhhLGIpO3JldHVybiBjJiZjLmxlbmd0aD9jWzBdOnZvaWQgMH19LGlzTGlua0VsZW1lbnQ6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuITE7dmFyIGI9U3RyaW5nKGEubm9kZU5hbWUpLnRvTG93ZXJDYXNlKCksYz1bXCJhXCIsXCJhcmVhXCJdLGQ9aW5kZXhPZkFycmF5KGMsYik7cmV0dXJuIGQhPT0tMX0sc2V0QW55QXR0cmlidXRlOmZ1bmN0aW9uKGEsYixjKXthJiZiJiYoYS5zZXRBdHRyaWJ1dGU/YS5zZXRBdHRyaWJ1dGUoYixjKTphW2JdPWMpfX0sY29udGVudD17Q09OVEVOVF9BVFRSOlwiZGF0YS10cmFjay1jb250ZW50XCIsQ09OVEVOVF9DTEFTUzpcInBpd2lrVHJhY2tDb250ZW50XCIsQ09OVEVOVF9OQU1FX0FUVFI6XCJkYXRhLWNvbnRlbnQtbmFtZVwiLENPTlRFTlRfUElFQ0VfQVRUUjpcImRhdGEtY29udGVudC1waWVjZVwiLENPTlRFTlRfUElFQ0VfQ0xBU1M6XCJwaXdpa0NvbnRlbnRQaWVjZVwiLENPTlRFTlRfVEFSR0VUX0FUVFI6XCJkYXRhLWNvbnRlbnQtdGFyZ2V0XCIsQ09OVEVOVF9UQVJHRVRfQ0xBU1M6XCJwaXdpa0NvbnRlbnRUYXJnZXRcIixDT05URU5UX0lHTk9SRUlOVEVSQUNUSU9OX0FUVFI6XCJkYXRhLWNvbnRlbnQtaWdub3JlaW50ZXJhY3Rpb25cIixDT05URU5UX0lHTk9SRUlOVEVSQUNUSU9OX0NMQVNTOlwicGl3aWtDb250ZW50SWdub3JlSW50ZXJhY3Rpb25cIixsb2NhdGlvbjp2b2lkIDAsZmluZENvbnRlbnROb2RlczpmdW5jdGlvbigpe3ZhciBhPVwiLlwiK3RoaXMuQ09OVEVOVF9DTEFTUyxiPVwiW1wiK3RoaXMuQ09OVEVOVF9BVFRSK1wiXVwiLGM9cXVlcnkuZmluZE11bHRpcGxlKFthLGJdKTtyZXR1cm4gY30sZmluZENvbnRlbnROb2Rlc1dpdGhpbk5vZGU6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuW107dmFyIGI9cXVlcnkuZmluZE5vZGVzSGF2aW5nQ3NzQ2xhc3MoYSx0aGlzLkNPTlRFTlRfQ0xBU1MpLGM9cXVlcnkuZmluZE5vZGVzSGF2aW5nQXR0cmlidXRlKGEsdGhpcy5DT05URU5UX0FUVFIpO2lmKGMmJmMubGVuZ3RoKXt2YXIgZDtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKWIucHVzaChjW2RdKX1yZXR1cm4gcXVlcnkuaGFzTm9kZUF0dHJpYnV0ZShhLHRoaXMuQ09OVEVOVF9BVFRSKT9iLnB1c2goYSk6cXVlcnkuaGFzTm9kZUNzc0NsYXNzKGEsdGhpcy5DT05URU5UX0NMQVNTKSYmYi5wdXNoKGEpLGI9cXVlcnkubWFrZU5vZGVzVW5pcXVlKGIpfSxmaW5kUGFyZW50Q29udGVudE5vZGU6ZnVuY3Rpb24oYSl7aWYoYSlmb3IodmFyIGI9YSxjPTA7YiYmYiE9PWRvY3VtZW50QWxpYXMmJmIucGFyZW50Tm9kZTspe2lmKHF1ZXJ5Lmhhc05vZGVBdHRyaWJ1dGUoYix0aGlzLkNPTlRFTlRfQVRUUikpcmV0dXJuIGI7aWYocXVlcnkuaGFzTm9kZUNzc0NsYXNzKGIsdGhpcy5DT05URU5UX0NMQVNTKSlyZXR1cm4gYjtpZihiPWIucGFyZW50Tm9kZSxjPjFlMylicmVhaztjKyt9fSxmaW5kUGllY2VOb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiBiPXF1ZXJ5LmZpbmRGaXJzdE5vZGVIYXZpbmdBdHRyaWJ1dGUoYSx0aGlzLkNPTlRFTlRfUElFQ0VfQVRUUiksYnx8KGI9cXVlcnkuZmluZEZpcnN0Tm9kZUhhdmluZ0NsYXNzKGEsdGhpcy5DT05URU5UX1BJRUNFX0NMQVNTKSksYj9iOmF9LGZpbmRUYXJnZXROb2RlTm9EZWZhdWx0OmZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPXF1ZXJ5LmZpbmRGaXJzdE5vZGVIYXZpbmdBdHRyaWJ1dGVXaXRoVmFsdWUoYSx0aGlzLkNPTlRFTlRfVEFSR0VUX0FUVFIpO3JldHVybiBiP2I6KGI9cXVlcnkuZmluZEZpcnN0Tm9kZUhhdmluZ0F0dHJpYnV0ZShhLHRoaXMuQ09OVEVOVF9UQVJHRVRfQVRUUikpP2I6KGI9cXVlcnkuZmluZEZpcnN0Tm9kZUhhdmluZ0NsYXNzKGEsdGhpcy5DT05URU5UX1RBUkdFVF9DTEFTUyksYj9iOnZvaWQgMCl9fSxmaW5kVGFyZ2V0Tm9kZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmZpbmRUYXJnZXROb2RlTm9EZWZhdWx0KGEpO3JldHVybiBiP2I6YX0sZmluZENvbnRlbnROYW1lOmZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPXF1ZXJ5LmZpbmRGaXJzdE5vZGVIYXZpbmdBdHRyaWJ1dGVXaXRoVmFsdWUoYSx0aGlzLkNPTlRFTlRfTkFNRV9BVFRSKTtpZihiKXJldHVybiBxdWVyeS5nZXRBdHRyaWJ1dGVWYWx1ZUZyb21Ob2RlKGIsdGhpcy5DT05URU5UX05BTUVfQVRUUik7dmFyIGM9dGhpcy5maW5kQ29udGVudFBpZWNlKGEpO2lmKGMpcmV0dXJuIHRoaXMucmVtb3ZlRG9tYWluSWZJc0luTGluayhjKTtpZihxdWVyeS5oYXNOb2RlQXR0cmlidXRlV2l0aFZhbHVlKGEsXCJ0aXRsZVwiKSlyZXR1cm4gcXVlcnkuZ2V0QXR0cmlidXRlVmFsdWVGcm9tTm9kZShhLFwidGl0bGVcIik7dmFyIGQ9dGhpcy5maW5kUGllY2VOb2RlKGEpO2lmKHF1ZXJ5Lmhhc05vZGVBdHRyaWJ1dGVXaXRoVmFsdWUoZCxcInRpdGxlXCIpKXJldHVybiBxdWVyeS5nZXRBdHRyaWJ1dGVWYWx1ZUZyb21Ob2RlKGQsXCJ0aXRsZVwiKTt2YXIgZT10aGlzLmZpbmRUYXJnZXROb2RlKGEpO3JldHVybiBxdWVyeS5oYXNOb2RlQXR0cmlidXRlV2l0aFZhbHVlKGUsXCJ0aXRsZVwiKT9xdWVyeS5nZXRBdHRyaWJ1dGVWYWx1ZUZyb21Ob2RlKGUsXCJ0aXRsZVwiKTp2b2lkIDB9fSxmaW5kQ29udGVudFBpZWNlOmZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPXF1ZXJ5LmZpbmRGaXJzdE5vZGVIYXZpbmdBdHRyaWJ1dGVXaXRoVmFsdWUoYSx0aGlzLkNPTlRFTlRfUElFQ0VfQVRUUik7aWYoYilyZXR1cm4gcXVlcnkuZ2V0QXR0cmlidXRlVmFsdWVGcm9tTm9kZShiLHRoaXMuQ09OVEVOVF9QSUVDRV9BVFRSKTt2YXIgYz10aGlzLmZpbmRQaWVjZU5vZGUoYSksZD10aGlzLmZpbmRNZWRpYVVybEluTm9kZShjKTtyZXR1cm4gZD90aGlzLnRvQWJzb2x1dGVVcmwoZCk6dm9pZCAwfX0sZmluZENvbnRlbnRUYXJnZXQ6ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI9dGhpcy5maW5kVGFyZ2V0Tm9kZShhKTtpZihxdWVyeS5oYXNOb2RlQXR0cmlidXRlV2l0aFZhbHVlKGIsdGhpcy5DT05URU5UX1RBUkdFVF9BVFRSKSlyZXR1cm4gcXVlcnkuZ2V0QXR0cmlidXRlVmFsdWVGcm9tTm9kZShiLHRoaXMuQ09OVEVOVF9UQVJHRVRfQVRUUik7dmFyIGM7aWYocXVlcnkuaGFzTm9kZUF0dHJpYnV0ZVdpdGhWYWx1ZShiLFwiaHJlZlwiKSlyZXR1cm4gYz1xdWVyeS5nZXRBdHRyaWJ1dGVWYWx1ZUZyb21Ob2RlKGIsXCJocmVmXCIpLHRoaXMudG9BYnNvbHV0ZVVybChjKTt2YXIgZD10aGlzLmZpbmRQaWVjZU5vZGUoYSk7cmV0dXJuIHF1ZXJ5Lmhhc05vZGVBdHRyaWJ1dGVXaXRoVmFsdWUoZCxcImhyZWZcIik/KGM9cXVlcnkuZ2V0QXR0cmlidXRlVmFsdWVGcm9tTm9kZShkLFwiaHJlZlwiKSx0aGlzLnRvQWJzb2x1dGVVcmwoYykpOnZvaWQgMH19LGlzU2FtZURvbWFpbjpmdW5jdGlvbihhKXtpZighYXx8IWEuaW5kZXhPZilyZXR1cm4hMTtpZigwPT09YS5pbmRleE9mKHRoaXMuZ2V0TG9jYXRpb24oKS5vcmlnaW4pKXJldHVybiEwO3ZhciBiPWEuaW5kZXhPZih0aGlzLmdldExvY2F0aW9uKCkuaG9zdCk7cmV0dXJuIDg+PWImJjA8PWJ9LHJlbW92ZURvbWFpbklmSXNJbkxpbms6ZnVuY3Rpb24oYSl7dmFyIGI9XCJeaHR0cHM/Oi8vW14vXStcIixjPVwiXi4qLy9bXi9dK1wiO3JldHVybiBhJiZhLnNlYXJjaCYmLTEhPT1hLnNlYXJjaChuZXcgUmVnRXhwKGIpKSYmdGhpcy5pc1NhbWVEb21haW4oYSkmJihhPWEucmVwbGFjZShuZXcgUmVnRXhwKGMpLFwiXCIpLGF8fChhPVwiL1wiKSksYX0sZmluZE1lZGlhVXJsSW5Ob2RlOmZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPVtcImltZ1wiLFwiZW1iZWRcIixcInZpZGVvXCIsXCJhdWRpb1wiXSxjPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZigtMSE9PWluZGV4T2ZBcnJheShiLGMpJiZxdWVyeS5maW5kRmlyc3ROb2RlSGF2aW5nQXR0cmlidXRlV2l0aFZhbHVlKGEsXCJzcmNcIikpe3ZhciBkPXF1ZXJ5LmZpbmRGaXJzdE5vZGVIYXZpbmdBdHRyaWJ1dGVXaXRoVmFsdWUoYSxcInNyY1wiKTtyZXR1cm4gcXVlcnkuZ2V0QXR0cmlidXRlVmFsdWVGcm9tTm9kZShkLFwic3JjXCIpfWlmKFwib2JqZWN0XCI9PT1jJiZxdWVyeS5oYXNOb2RlQXR0cmlidXRlV2l0aFZhbHVlKGEsXCJkYXRhXCIpKXJldHVybiBxdWVyeS5nZXRBdHRyaWJ1dGVWYWx1ZUZyb21Ob2RlKGEsXCJkYXRhXCIpO2lmKFwib2JqZWN0XCI9PT1jKXt2YXIgZT1xdWVyeS5maW5kTm9kZXNCeVRhZ05hbWUoYSxcInBhcmFtXCIpO2lmKGUmJmUubGVuZ3RoKXt2YXIgZjtmb3IoZj0wO2Y8ZS5sZW5ndGg7ZisrKWlmKFwibW92aWVcIj09PXF1ZXJ5LmdldEF0dHJpYnV0ZVZhbHVlRnJvbU5vZGUoZVtmXSxcIm5hbWVcIikmJnF1ZXJ5Lmhhc05vZGVBdHRyaWJ1dGVXaXRoVmFsdWUoZVtmXSxcInZhbHVlXCIpKXJldHVybiBxdWVyeS5nZXRBdHRyaWJ1dGVWYWx1ZUZyb21Ob2RlKGVbZl0sXCJ2YWx1ZVwiKX12YXIgZz1xdWVyeS5maW5kTm9kZXNCeVRhZ05hbWUoYSxcImVtYmVkXCIpO2lmKGcmJmcubGVuZ3RoKXJldHVybiB0aGlzLmZpbmRNZWRpYVVybEluTm9kZShnWzBdKX19fSx0cmltOmZ1bmN0aW9uKGEpe3JldHVybiBhJiZTdHJpbmcoYSk9PT1hP2EucmVwbGFjZSgvXlxccyt8XFxzKyQvZyxcIlwiKTphfSxpc09yV2FzTm9kZUluVmlld3BvcnQ6ZnVuY3Rpb24oYSl7aWYoIWF8fCFhLmdldEJvdW5kaW5nQ2xpZW50UmVjdHx8MSE9PWEubm9kZVR5cGUpcmV0dXJuITA7dmFyIGI9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxjPWRvY3VtZW50QWxpYXMuZG9jdW1lbnRFbGVtZW50fHx7fSxkPWIudG9wPDA7ZCYmYS5vZmZzZXRUb3AmJihkPWEub2Zmc2V0VG9wK2IuaGVpZ2h0PjApO3ZhciBlPWMuY2xpZW50V2lkdGg7d2luZG93QWxpYXMuaW5uZXJXaWR0aCYmZT53aW5kb3dBbGlhcy5pbm5lcldpZHRoJiYoZT13aW5kb3dBbGlhcy5pbm5lcldpZHRoKTt2YXIgZj1jLmNsaWVudEhlaWdodDtyZXR1cm4gd2luZG93QWxpYXMuaW5uZXJIZWlnaHQmJmY+d2luZG93QWxpYXMuaW5uZXJIZWlnaHQmJihmPXdpbmRvd0FsaWFzLmlubmVySGVpZ2h0KSwoYi5ib3R0b20+MHx8ZCkmJmIucmlnaHQ+MCYmYi5sZWZ0PGUmJihiLnRvcDxmfHxkKX0saXNOb2RlVmlzaWJsZTpmdW5jdGlvbihhKXt2YXIgYj1pc1Zpc2libGUoYSksYz10aGlzLmlzT3JXYXNOb2RlSW5WaWV3cG9ydChhKTtyZXR1cm4gYiYmY30sYnVpbGRJbnRlcmFjdGlvblJlcXVlc3RQYXJhbXM6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9XCJcIjtyZXR1cm4gYSYmKGUrPVwiY19pPVwiK2VuY29kZVdyYXBwZXIoYSkpLGImJihlJiYoZSs9XCImXCIpLGUrPVwiY19uPVwiK2VuY29kZVdyYXBwZXIoYikpLGMmJihlJiYoZSs9XCImXCIpLGUrPVwiY19wPVwiK2VuY29kZVdyYXBwZXIoYykpLGQmJihlJiYoZSs9XCImXCIpLGUrPVwiY190PVwiK2VuY29kZVdyYXBwZXIoZCkpLGV9LGJ1aWxkSW1wcmVzc2lvblJlcXVlc3RQYXJhbXM6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVwiY19uPVwiK2VuY29kZVdyYXBwZXIoYSkrXCImY19wPVwiK2VuY29kZVdyYXBwZXIoYik7cmV0dXJuIGMmJihkKz1cIiZjX3Q9XCIrZW5jb2RlV3JhcHBlcihjKSksZH0sYnVpbGRDb250ZW50QmxvY2s6ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI9dGhpcy5maW5kQ29udGVudE5hbWUoYSksYz10aGlzLmZpbmRDb250ZW50UGllY2UoYSksZD10aGlzLmZpbmRDb250ZW50VGFyZ2V0KGEpO3JldHVybiBiPXRoaXMudHJpbShiKSxjPXRoaXMudHJpbShjKSxkPXRoaXMudHJpbShkKSx7bmFtZTpifHxcIlVua25vd25cIixwaWVjZTpjfHxcIlVua25vd25cIix0YXJnZXQ6ZHx8XCJcIn19fSxjb2xsZWN0Q29udGVudDpmdW5jdGlvbihhKXtpZighYXx8IWEubGVuZ3RoKXJldHVybltdO3ZhciBjLGQsYj1bXTtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKWQ9dGhpcy5idWlsZENvbnRlbnRCbG9jayhhW2NdKSxpc0RlZmluZWQoZCkmJmIucHVzaChkKTtyZXR1cm4gYn0sc2V0TG9jYXRpb246ZnVuY3Rpb24oYSl7dGhpcy5sb2NhdGlvbj1hfSxnZXRMb2NhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMubG9jYXRpb258fHdpbmRvd0FsaWFzLmxvY2F0aW9uO3JldHVybiBhLm9yaWdpbnx8KGEub3JpZ2luPWEucHJvdG9jb2wrXCIvL1wiK2EuaG9zdG5hbWUrKGEucG9ydD9cIjpcIithLnBvcnQ6XCJcIikpLGF9LHRvQWJzb2x1dGVVcmw6ZnVuY3Rpb24oYSl7aWYoKCFhfHxTdHJpbmcoYSkhPT1hKSYmXCJcIiE9PWEpcmV0dXJuIGE7aWYoXCJcIj09PWEpcmV0dXJuIHRoaXMuZ2V0TG9jYXRpb24oKS5ocmVmO2lmKGEuc2VhcmNoKC9eXFwvXFwvLykhPT0tMSlyZXR1cm4gdGhpcy5nZXRMb2NhdGlvbigpLnByb3RvY29sK2E7aWYoYS5zZWFyY2goLzpcXC9cXC8vKSE9PS0xKXJldHVybiBhO2lmKDA9PT1hLmluZGV4T2YoXCIjXCIpKXJldHVybiB0aGlzLmdldExvY2F0aW9uKCkub3JpZ2luK3RoaXMuZ2V0TG9jYXRpb24oKS5wYXRobmFtZSthO2lmKDA9PT1hLmluZGV4T2YoXCI/XCIpKXJldHVybiB0aGlzLmdldExvY2F0aW9uKCkub3JpZ2luK3RoaXMuZ2V0TG9jYXRpb24oKS5wYXRobmFtZSthO2lmKDA9PT1hLnNlYXJjaChcIl5bYS16QS1aXXsyLDExfTpcIikpcmV0dXJuIGE7aWYoYS5zZWFyY2goL15cXC8vKSE9PS0xKXJldHVybiB0aGlzLmdldExvY2F0aW9uKCkub3JpZ2luK2E7dmFyIGI9XCIoLiovKVwiLGM9dGhpcy5nZXRMb2NhdGlvbigpLm9yaWdpbit0aGlzLmdldExvY2F0aW9uKCkucGF0aG5hbWUubWF0Y2gobmV3IFJlZ0V4cChiKSlbMF07cmV0dXJuIGMrYX0saXNVcmxUb0N1cnJlbnREb21haW46ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50b0Fic29sdXRlVXJsKGEpO2lmKCFiKXJldHVybiExO3ZhciBjPXRoaXMuZ2V0TG9jYXRpb24oKS5vcmlnaW47cmV0dXJuIGM9PT1ifHwwPT09U3RyaW5nKGIpLmluZGV4T2YoYykmJlwiOlwiIT09U3RyaW5nKGIpLnN1YnN0cihjLmxlbmd0aCwxKX0sc2V0SHJlZkF0dHJpYnV0ZTpmdW5jdGlvbihhLGIpe2EmJmImJnF1ZXJ5LnNldEFueUF0dHJpYnV0ZShhLFwiaHJlZlwiLGIpfSxzaG91bGRJZ25vcmVJbnRlcmFjdGlvbjpmdW5jdGlvbihhKXt2YXIgYj1xdWVyeS5oYXNOb2RlQXR0cmlidXRlKGEsdGhpcy5DT05URU5UX0lHTk9SRUlOVEVSQUNUSU9OX0FUVFIpLGM9cXVlcnkuaGFzTm9kZUNzc0NsYXNzKGEsdGhpcy5DT05URU5UX0lHTk9SRUlOVEVSQUNUSU9OX0NMQVNTKTtyZXR1cm4gYnx8Y319O2FkZEV2ZW50TGlzdGVuZXIod2luZG93QWxpYXMsXCJiZWZvcmV1bmxvYWRcIixiZWZvcmVVbmxvYWRIYW5kbGVyLCExKSxhZGRSZWFkeUxpc3RlbmVyKCksRGF0ZS5wcm90b3R5cGUuZ2V0VGltZUFsaWFzPURhdGUucHJvdG90eXBlLmdldFRpbWUsYXN5bmNUcmFja2VyPW5ldyBUcmFja2VyO3ZhciBhcHBseUZpcnN0PVtcImRpc2FibGVDb29raWVzXCIsXCJzZXRUcmFja2VyVXJsXCIsXCJzZXRBUElVcmxcIixcInNldENvb2tpZVBhdGhcIixcInNldENvb2tpZURvbWFpblwiLFwic2V0VXNlcklkXCIsXCJzZXRTaXRlSWRcIixcImVuYWJsZUxpbmtUcmFja2luZ1wiXTtmb3IoX3BhcT1hcHBseU1ldGhvZHNJbk9yZGVyKF9wYXEsYXBwbHlGaXJzdCksaXRlcmF0b3I9MDtpdGVyYXRvcjxfcGFxLmxlbmd0aDtpdGVyYXRvcisrKV9wYXFbaXRlcmF0b3JdJiZhcHBseShfcGFxW2l0ZXJhdG9yXSk7cmV0dXJuIF9wYXE9bmV3IFRyYWNrZXJQcm94eSxQaXdpaz17YWRkUGx1Z2luOmZ1bmN0aW9uKGEsYil7cGx1Z2luc1thXT1ifSxnZXRUcmFja2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGlzRGVmaW5lZChiKXx8KGI9dGhpcy5nZXRBc3luY1RyYWNrZXIoKS5nZXRTaXRlSWQoKSksaXNEZWZpbmVkKGEpfHwoYT10aGlzLmdldEFzeW5jVHJhY2tlcigpLmdldFRyYWNrZXJVcmwoKSksbmV3IFRyYWNrZXIoYSxiKX0sZ2V0QXN5bmNUcmFja2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGFzeW5jVHJhY2tlcn19LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKFwicGl3aWtcIixbXSxmdW5jdGlvbigpe3JldHVybiBQaXdpa30pLFBpd2lrfSgpKSx3aW5kb3cmJndpbmRvdy5waXdpa0FzeW5jSW5pdCYmd2luZG93LnBpd2lrQXN5bmNJbml0KCksZnVuY3Rpb24oKXt2YXIgYT10eXBlb2YgQW5hbHl0aWNzVHJhY2tlcjtcInVuZGVmaW5lZFwiPT09YSYmKEFuYWx5dGljc1RyYWNrZXI9UGl3aWspfSgpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIHBpd2lrX2xvZyYmKHBpd2lrX2xvZz1mdW5jdGlvbihhLGIsYyxkKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBlKGEpe3RyeXtpZih3aW5kb3dbXCJwaXdpa19cIithXSlyZXR1cm4gd2luZG93W1wicGl3aWtfXCIrYV19Y2F0Y2goYSl7fX12YXIgZixnPVBpd2lrLmdldFRyYWNrZXIoYyxiKTtnLnNldERvY3VtZW50VGl0bGUoYSksZy5zZXRDdXN0b21EYXRhKGQpLGY9ZShcInRyYWNrZXJfcGF1c2VcIiksZiYmZy5zZXRMaW5rVHJhY2tpbmdUaW1lcihmKSxmPWUoXCJkb3dubG9hZF9leHRlbnNpb25zXCIpLGYmJmcuc2V0RG93bmxvYWRFeHRlbnNpb25zKGYpLGY9ZShcImhvc3RzX2FsaWFzXCIpLGYmJmcuc2V0RG9tYWlucyhmKSxmPWUoXCJpZ25vcmVfY2xhc3Nlc1wiKSxmJiZnLnNldElnbm9yZUNsYXNzZXMoZiksZy50cmFja1BhZ2VWaWV3KCksZShcImluc3RhbGxfdHJhY2tlclwiKSYmKHBpd2lrX3RyYWNrPWZ1bmN0aW9uKGEsYixjLGQpe2cuc2V0U2l0ZUlkKGIpLGcuc2V0VHJhY2tlclVybChjKSxnLnRyYWNrTGluayhhLGQpfSxnLmVuYWJsZUxpbmtUcmFja2luZygpKX0pOyIsImRlZmluZShbXCJqcXVlcnlcIiwgXCJ1bmRlcnNjb3JlXCIsIFwiYmFja2JvbmVcIiwgXCJib290c3RyYXAtZGF0ZXBpY2tlclwiLCBcImdvdmluZm9cIiwgXCJjb21tb24vdmlld3MvTmV3RGF0ZVJhbmdlVmlld1wiLCBcInNlYXJjaC92aWV3cy9uZXdTZWFyY2hDb25zdHJhaW50TW9kZWxcIl0sIGZ1bmN0aW9uKCQsIF8sIEJhY2tib25lLCBkYXRlcGlja2VyLCBHb3ZJbmZvLCBOZXdEYXRlUmFuZ2VWaWV3LCBTZWFyY2hDb25zdHJhaW50TW9kZWwpIHtcbiAgICBBZHZhbmNlZFNlYXJjaFZpZXcgPSBHb3ZJbmZvLkJhc2VWaWV3LmV4dGVuZCgvKiogQGxlbmRzIEFkdmFuY2VkU2VhcmNoVmlldy5wcm90b3R5cGUgKi9cbiAgICB7XG4gICAgICAgIGxvYWRpbmdUZW1wbGF0ZTogJy4vY29tbW9uL3RlbXBsYXRlcy9zZWFyY2h3aWRnZXQvTG9hZGluZy5odG1sJyxcbiAgICAgICAgdGVtcGxhdGU6ICcuL2NvbW1vbi90ZW1wbGF0ZXMvc2VhcmNod2lkZ2V0L0FkdmFuY2VkU2VhcmNoVmlldy5odG1sJyxcbiAgICAgICAgZG9Ob3RsZWF2ZUhpc3RvcnlUcmFpbDogdHJ1ZSxcbiAgICAgICAgZG9Ob3RLaWxsRGl2IDogdHJ1ZSxcbiAgICAgICAgdXNlSGFzaCA6IHRydWUsXG4gICAgICAgIHVzZVN0YXRlIDogZmFsc2UsXG4gICAgICAgIHN0YXRlUGF0aCA6IFsnYWR2YW5jZWQnXSxcbiAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgICAnY2hhbmdlIC5hc3d2LXNlYXJjaC1pbi1zZWxlY3QnOiAnb25TZWFyY2hJblNlbGVjdCcsXG4gICAgICAgICAgICAnY2hhbmdlIC5hc3d2LWNvbGxlY3Rpb24tY2InOiAncG9wdWxhdGVCeUNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgJ2NoYW5nZSAjc2VsZWN0QWxsQ29sbGVjdGlvbnMnOiAnb25TZWxlY3RBbGxDb2xsZWN0aW9ucycsXG4gICAgICAgICAgICBcImNsaWNrICAjc2VhcmNoQnV0dG9uXCI6IFwic2VhcmNoXCIsXG4gICAgICAgICAgICAnY2xpY2sgI2FkZGNyaXRlcmlhYnV0dG9ucyc6ICdvbkFkZENyaXRlcmlhJyxcbiAgICAgICAgICAgICdjbGljayAuYXN3dm9jLWNyaXRlcmlhLXJlbW92ZSc6ICdvblJlbW92ZUNyaXRlcmlhJyxcbiAgICAgICAgICAgICdjbGljayAjc2hvd0hpc3RvcnlVcmwnOiAnc2hvd0hpc3RvcnlVcmwnLFxuICAgICAgICAgICAgJ2NsaWNrIC5jb3B5QnRuJzogJ2NvcHlTaGFyZVVybCdcbiAgICAgICAgfSxcbiAgICAgICAgX2dldENvbGxlY3Rpb25zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBjb2xsZWN0aW9ucyA9IFtdO1xuICAgICAgICAgICAgdmFyICRhcnJheSA9IHRoaXMuJCgnLmFzd3YtY29sbGVjdGlvbi1jYjpjaGVja2VkJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9ICRhcnJheS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9ucy5wdXNoKCQoJGFycmF5W2ldKS5kYXRhKCd2YWx1ZScpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SGlzdG9yeVVybDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgaGlzdG9yeSA9IHt9O1xuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb25zID0gdGhpcy5fZ2V0Q29sbGVjdGlvbnMoKTtcbiAgICAgICAgICAgIGhpc3RvcnkuY29sbGVjdGlvbnMgPSBjb2xsZWN0aW9ucztcbiAgICAgICAgICAgIHZhciB0ID0gdGhpcy4kKCcjZGF0ZVJhbmdlU2VsZWN0JykudmFsKCk7XG4gICAgICAgICAgICBpZiAodGhpcy4kKCcjZGF0ZVJhbmdlU2VsZWN0JykudmFsKCkgIT0gXCJBRFwiKSB7XG4gICAgICAgICAgICAgICAgaGlzdG9yeS5kYXRlID0gdGhpcy5zZWxlY3REYXRlUmFuZ2VWaWV3LmdldERhdGVSYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyICRob2xkZXJzID0gdGhpcy4kKCcuYXN3dm9jLWNyaXRlcmlhLWhvbGRlcjp2aXNpYmxlJyk7XG4gICAgICAgICAgICB2YXIgZmllbGRzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9ICRob2xkZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciAkaCA9ICQoJGhvbGRlcnNbaV0pO1xuICAgICAgICAgICAgICAgIHZhciBmaWVsZCA9IHt9O1xuICAgICAgICAgICAgICAgIGZpZWxkLmYgPSAkaC5maW5kKCcuYXN3di1zZWFyY2gtaW4tc2VsZWN0JykudmFsKCk7XG4gICAgICAgICAgICAgICAgZmllbGQudiA9ICRoLmZpbmQoJy5hc3d2b2MtY3JpdGVyaWEtaW5wdXQnKS52YWwoKTtcbiAgICAgICAgICAgICAgICBmaWVsZC5wID0gJGguZGF0YSgncm93Jyk7XG4gICAgICAgICAgICAgICAgZmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGlzdG9yeS5maWVsZHMgPSBmaWVsZHM7XG4gICAgICAgICAgICB2YXIgc3RyID0gSlNPTi5zdHJpbmdpZnkoaGlzdG9yeSk7XG4gICAgICAgICAgICBzdHIgPSBlbmNvZGVVUkkoc3RyKTtcbiAgICAgICAgICAgIHJldHVybiBzdHI7XG4gICAgICAgIH0sXG4gICAgICAgIF9zaG93SGlzdG9yeVVybDogdHJ1ZSxcbiAgICAgICAgcHV0Rm9ybTogZnVuY3Rpb24oaGlzdG9yeSkge1xuICAgICAgICAgICAgdGhpcy5fc3RvcEhpc3RvcnkgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKGhpc3RvcnkgJiYgaGlzdG9yeS5jb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gaGlzdG9yeS5jb2xsZWN0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBoaXN0b3J5LmNvbGxlY3Rpb25zW2ldO1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gdGhpcy4kKCcuYXN3di1jb2xsZWN0aW9uLWl0ZW0gW2RhdGEtdmFsdWU9XCInICsgYyArICdcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgJGVsLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlQnlDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgICBpZiAoaGlzdG9yeSAmJiBoaXN0b3J5LmRhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERhdGVSYW5nZVZpZXcuc2V0RGF0ZVJhbmdlKGhpc3RvcnkuZGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGlzdG9yeSAmJiBoaXN0b3J5LmZpZWxkcykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gaGlzdG9yeS5maWVsZHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmID0gaGlzdG9yeS5maWVsZHNbaV07XG4gICAgICAgICAgICAgICAgICAgIHZhciAkaCA9IHRoaXMuJCgnI2hvbGRlcklkJyArIGYucCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkcyA9ICRoLmZpbmQoJy5hc3d2LXNlYXJjaC1pbi1zZWxlY3QnKTtcbiAgICAgICAgICAgICAgICAgICAgJHMudmFsKGYuZik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uU2VhcmNoSW5TZWxlY3QoJHMsIGZ1bmN0aW9uKCRkYXRhLCBmdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyICRpID0gJGRhdGEuZmluZCgnLmFzd3ZvYy1jcml0ZXJpYS1pbnB1dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJGkudmFsKGZ2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRoLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgJGgsIGYudik7XG4gICAgICAgICAgICAgICAgICAgIC8vIHBpZ2d5IGJhY2sgJGggYW5kIGYudiAgLS0gIGhhY2sgZm9yIGNsb3N1cmUsIG11c3QgYmUgYmV0dGVyIHdheVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3N0b3BIaXN0b3J5ID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGdldEhpc3Rvcnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHN0ciA9IHRoaXMuZ2V0UGFyYW1ldGVyKCdhc2gnKTtcbiAgICAgICAgICAgIGlmIChzdHIpIHtcbiAgICAgICAgICAgICAgICBzdHIgPSBkZWNvZGVVUklDb21wb25lbnQoc3RyKTtcbiAgICAgICAgICAgICAgICB2YXIgaGlzdG9yeSA9IEpTT04ucGFyc2Uoc3RyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGlzdG9yeTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBfZ2V0RmllbGRzOiBmdW5jdGlvbihjb2xsZWN0aW9ucywgZmllbGROYW1lLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgdmFyIHVybCA9ICcvd3NzZWFyY2gvc2VhcmNoL2ZpZWxkdmFsdWVzLycgKyBmaWVsZE5hbWU7XG4gICAgICAgICAgICBpZiAoIWZpZWxkTmFtZSB8fCBmaWVsZE5hbWUgPT0gbnVsbCApIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhbXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoY29sbGVjdGlvbnMpLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIGhhcHBlbmQgZHVyaW5nIGZldGNoIGluIF9nZXRGaWVsZHMnKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soW10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBfb25TZWFyY2hJblNlbGVjdDogZnVuY3Rpb24oJGVsLCBjYiwgJGgsIGZ2KSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSAkZWwudmFsKCk7XG4gICAgICAgICAgICB2YXIgYXNGaWVsZCA9IHRoaXMuX21hcEZpZWxkc1t2YWx1ZV07XG4gICAgICAgICAgICB2YXIgJGRpdiA9IHRoaXMuJCgnIycgKyAkZWwuZGF0YSgnaG9sZGVyJykpO1xuICAgICAgICAgICAgLy8gdG9kbyAtLSBncmFiIGhvbGRlciBieSBpZDtcbiAgICAgICAgICAgIHZhciAkcmlnaHQgPSAkKCRkaXYuZmluZCgnLmFzd3ZvYy1jcml0ZXJpYS1kaXYtcmlnaHQnKSk7XG4gICAgICAgICAgICAkcmlnaHQuZW1wdHkoKTtcbiAgICAgICAgICAgICRyaWdodC5odG1sKCc8aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiPjxpPicpO1xuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb25zID0gdGhpcy5fZ2V0Q29sbGVjdGlvbnMoKTtcbiAgICAgICAgICAgIHZhciBmaWVsZE5hbWUgPSBhc0ZpZWxkID8gYXNGaWVsZC52YWx1ZSA6IG51bGwgO1xuICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkaW5wdXQgPSAkKCc8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImFzd3ZvYy1jcml0ZXJpYS1pbnB1dCBmb3JtLWNvbnRyb2xcIj4nKTtcbiAgICAgICAgICAgICAgICAgICAgJHJpZ2h0Lmh0bWwoJGlucHV0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHNlbGVjdCA9ICQoJzxzZWxlY3QgY2xhc3M9XCJhc3d2b2MtY3JpdGVyaWEtaW5wdXQgZm9ybS1jb250cm9sXCI+Jyk7XG4gICAgICAgICAgICAgICAgICAgICRzZWxlY3QuYXBwZW5kKFwiPG9wdGlvbiB2YWx1ZT0nJz5DaG9vc2UgVmFsdWU8L29wdGlvbj5cIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gZGF0YS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxlY3QuYXBwZW5kKFwiPG9wdGlvbiB2YWx1ZT0nXCIgKyBkYXRhW2ldLnZhbHVlICsgXCInPlwiICsgZGF0YVtpXS5kaXNwbGF5ICsgXCI8L29wdGlvbj5cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyICRkaXYyID0gJCgnPGRpdiBzdHlsZT1cInBvc2l0aW9uOnJlbGF0aXZlXCI+Jyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkZGl2ID0gJCgnPGRpdiBjbGFzcz1cInN0eWxlZC1zZWxlY3RcIj4nKTtcbiAgICAgICAgICAgICAgICAgICAgJGRpdi5hcHBlbmQoJHNlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgICRkaXYyLmFwcGVuZCgkZGl2KTtcbiAgICAgICAgICAgICAgICAgICAgJHJpZ2h0Lmh0bWwoJGRpdjIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2IpIHtcbiAgICAgICAgICAgICAgICAgICAgY2IoJGgsIGZ2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9nZXRGaWVsZHMoY29sbGVjdGlvbnMsIGZpZWxkTmFtZSwgY2FsbGJhY2spO1xuICAgICAgICB9LFxuXG4gICAgICAgIHZpYUZhY2V0cyA6IGZhbHNlLFxuXG4gICAgICAgIHByZWxvYWREYXRhQXN5bmM6IGZ1bmN0aW9uKGNhbGxiYWNrLCBlcnJvcikge1xuICAgICAgICAgICAgdmFyIHVybCA9ICcvd3NzZWFyY2gvc2VhcmNoL2NvbGxlY3Rpb25zJztcbiAgICAgICAgICAgIHZhciBhbGxGaWVsZHMgPSAnL3dzc2VhcmNoL3NlYXJjaC9hbGxmaWVsZHMnO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgICAgICAgdmFyIGNiID0gZnVuY3Rpb24oZGF0YSwgaXNDb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmICghaXNDb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBkYXRhID0gXy5zb3J0QnkoZGF0YSwgZnVuY3Rpb24odikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYuZGlzcGxheVZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmllbGRzID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxsRmllbGRzID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWFwRmllbGRzID0ge307XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBkYXRhLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXBGaWVsZHNbZGF0YVtpXS52YWx1ZV0gPSBkYXRhW2ldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IF8uc29ydEJ5KGRhdGEsICdkaXNwbGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb2xsZWN0aW9ucyA9IGRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZmllbGRzICYmIHJlc3VsdC5jb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5nZXRKU09OKHVybCwgZnVuY3Rpb24oZCkgeyBjYihkLCB0cnVlKSB9LCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLmdldEpTT04oYWxsRmllbGRzLCBmdW5jdGlvbihkKSB7IGNiKGQsIGZhbHNlKSB9LCBlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIEdvdkluZm8uQmFzZVZpZXcucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZVJhbmdlVmlldyA9IHRoaXMuaW5zdGFudGlhdGUoTmV3RGF0ZVJhbmdlVmlldyk7XG4gICAgICAgICAgICB0aGlzLmxpc3RlblRvKHRoaXMuZ2V0UGFyZW50KCksICdzaW1wbGVzZWFyY2gnLCB0aGlzLm9uU2ltcGxlU2VhcmNoLmJpbmQodGhpcykpO1xuICAgICAgICB9LFxuICAgICAgICBvblNpbXBsZVNlYXJjaCA6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZVJhbmdlVmlldy5zZXRFbGVtZW50KCcjbmV3RGF0ZVJhbmdlVmlldycpLnJlbmRlclZpZXcoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhpc3RvcnkgPSB0aGlzLmdldEhpc3RvcnkoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGlzdG9yeSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1dEZvcm0oaGlzdG9yeSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUJ5Q29sbGVjdGlvbihudWxsICwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmJpbmQodGhpcykpO1xuICAgICAgICB9LFxuICAgICAgICBwdXRJbkhvbGRlcnMgOiBmdW5jdGlvbigkYXJyYXkpe1xuICAgICAgICAgICAgZm9yKHZhciBpID0gMCwgbCA9ICRhcnJheS5sZW5ndGg7IGkgPCBsOyBpKyspe1xuICAgICAgICAgICAgICAgIHZhciAkZWwgPSAkKCRhcnJheVtpXSk7XG4gICAgICAgICAgICAgICAgaWYoIXRoaXMudGVtcEhvbGRlcnMpe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBIb2xkZXJzID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLnRlbXBIb2xkZXJzWyRlbC5kYXRhKCdob2xkZXInKV0pe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBIb2xkZXJzWyRlbC5kYXRhKCdob2xkZXInKV0gPSAkKCc8c2VsZWN0IHN0eWxlPVwiZGlzcGxheTpub25lO1wiPicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbC5hcHBlbmQodGhpcy50ZW1wSG9sZGVyc1skZWwuZGF0YSgnaG9sZGVyJyldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wSG9sZGVyc1skZWwuZGF0YSgnaG9sZGVyJyldLmFwcGVuZCgkZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwdXRJbkZpZWxkcyA6IGZ1bmN0aW9uKCRhcnJheSl7XG4gICAgICAgICAgICBmb3IodmFyIGkgPSAwLCBsID0gJGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKyl7XG4gICAgICAgICAgICAgICAgdmFyICRlbCA9ICQoJGFycmF5W2ldKTtcbiAgICAgICAgICAgICAgICB0aGlzLiQoJ3NlbGVjdFtkYXRhLWhvbGRlcj1cIicgKyAkZWwuZGF0YSgnaG9sZGVyJykgKyAnXCJdJykuYXBwZW5kKCRlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2hvd0hpc3RvcnlVcmw6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHZhciAkYm9va21hcmtfcGxhY2Vob2xkZXIgPSB0aGlzLiQoJyNhZHZCb29rbWFya19wbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgJGJvb2ttYXJrX3BsYWNlaG9sZGVyLmhpZGUoKTtcbiAgICAgICAgICAgIHZhciBzdHIgPSB0aGlzLmdldEhpc3RvcnlVcmwoKTtcbiAgICAgICAgICAgIHZhciB1cmwgPSBsb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyBsb2NhdGlvbi5ob3N0ICsgJy8jYWR2YW5jZWQ/YXNoPScgKyBzdHI7XG4gICAgICAgICAgICB2YXIgY29weUJveCA9ICc8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mb1wiPkNvcHkgYW5kIHNhdmUgdGhpcyBsaW5rOiA8YSBocmVmPVwiI1wiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJhbGVydFwiIGFyaWEtbGFiZWw9XCJjbG9zZVwiPiZ0aW1lczs8L2E+ICcgKyAnPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+PGlucHV0IGlkPVwiYWR2VXJsSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdmFsdWU9XCInICsgdXJsICsgJ1wiPjxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+PGJ1dHRvbiBjbGFzcz1cImNvcHlCdG4gYnRuIGJ0bi1kZWZhdWx0XCIgdHlwZT1cImJ1dHRvblwiPkNvcHk8L2J1dHRvbj48L3NwYW4+PC9kaXY+PC9kaXY+JztcbiAgICAgICAgICAgICRib29rbWFya19wbGFjZWhvbGRlci5odG1sKGNvcHlCb3gpO1xuICAgICAgICAgICAgJGJvb2ttYXJrX3BsYWNlaG9sZGVyLmZhZGVJbigpO1xuICAgICAgICB9LFxuICAgICAgICBjb3B5U2hhcmVVcmw6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHZhciBib29rbWFyayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWR2VXJsSW5wdXRcIikudmFsdWU7XG4gICAgICAgICAgICBHb3ZJbmZvLkJhc2VWaWV3LnByb3RvdHlwZS5jb3B5U2hhcmVVcmwoZSwgYm9va21hcmspO1xuICAgICAgICB9LFxuICAgIH0pO1xuICAgIC8qZXZlbnRzKi9cbiAgICBBZHZhbmNlZFNlYXJjaFZpZXcucHJvdG90eXBlWydvblNlYXJjaEluU2VsZWN0J10gPSBmdW5jdGlvbihlKSB7XG4gICAgICAgIHZhciAkZWwgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgIHRoaXMuX29uU2VhcmNoSW5TZWxlY3QoJGVsLCBmdW5jdGlvbigpIHt9XG4gICAgICAgIC5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgQWR2YW5jZWRTZWFyY2hWaWV3LnByb3RvdHlwZVsncG9wdWxhdGVCeUNvbGxlY3Rpb24nXSA9IGZ1bmN0aW9uKGV2ZW50LCBub0hpc3RvcnkpIHtcbiAgICAgICAgdmFyIGNvbGxlY3Rpb25BcnJheSA9IHRoaXMuX2dldENvbGxlY3Rpb25zKCk7XG4gICAgICAgIHRoaXMuJCgnLmFzd3ZvYy1jcml0ZXJpYS1kaXYtcmlnaHQnKS5lbXB0eSgpO1xuICAgICAgICBpZiAoY29sbGVjdGlvbkFycmF5ID09IDApIHtcbiAgICAgICAgICAgIHZhciAkaGF6YWEgPSB0aGlzLiQoJy5hc3d2LWNvbGxlY3Rpb24tY2InKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gJGhhemFhLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25BcnJheS5wdXNoKCQoJGhhemFhW2ldKS5kYXRhKCd2YWx1ZScpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgY2xhc3NTdHIgPSAnLmFzd3ZvYy0nICsgY29sbGVjdGlvbkFycmF5LmpvaW4oJy5hc3d2b2MtJyk7XG4gICAgICAgIHZhciAkYXJyYXkgPSB0aGlzLiQoY2xhc3NTdHIpO1xuICAgICAgICB0aGlzLnB1dEluSG9sZGVycyh0aGlzLiQoJy5hc3d2LXNlYXJjaC1pbi1vcHRpb24nKSk7XG4gICAgICAgIHRoaXMucHV0SW5GaWVsZHMoJGFycmF5KTtcbiAgICAgICAgdGhpcy4kKCcuYXN3di1zZWFyY2gtaW4tc2VsZWN0JykudmFsKFwiY29udGVudFwiKTtcbiAgICAgICAgdGhpcy4kKCcuYXN3di1zZWFyY2gtaW4tc2VsZWN0JykuY2hhbmdlKCk7XG4gICAgICAgIHRoaXMuJCgnLmFzd3ZvYy1jcml0ZXJpYS1ob2xkZXInKS5oaWRlKCk7XG4gICAgICAgICQodGhpcy4kKCcuYXN3dm9jLWNyaXRlcmlhLWhvbGRlcicpWzBdKS5zaG93KCk7XG4gICAgICAgIHRoaXMuJCgnI2FkZGNyaXRlcmlhYnV0dG9ucycpLnNob3coKTtcbiAgICB9XG4gICAgQWR2YW5jZWRTZWFyY2hWaWV3LnByb3RvdHlwZVsnb25TZWxlY3RBbGxDb2xsZWN0aW9ucyddID0gZnVuY3Rpb24oZSkge1xuICAgICAgICB2YXIgJGVsID0gJChlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICB2YXIgY2hlY2tlZCA9ICRlbC5wcm9wKCdjaGVja2VkJyk7XG4gICAgICAgIHZhciAkYXJyYXkgPSB0aGlzLiQoJy5hc3d2LWNvbGxlY3Rpb24tY2InKTtcbiAgICAgICAgJGFycmF5LnByb3AoJ2NoZWNrZWQnLCBjaGVja2VkKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUJ5Q29sbGVjdGlvbigpO1xuICAgIH1cbiAgICBBZHZhbmNlZFNlYXJjaFZpZXcucHJvdG90eXBlWydfZ2V0U2VhcmNoSW5TdHInXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgJGFycmF5ID0gdGhpcy4kKCcuYXN3dm9jLWNyaXRlcmlhLWhvbGRlcjp2aXNpYmxlJyk7XG4gICAgICAgIC8vICAgICB2YXIgX2luZGV4ID0gMDtcbiAgICAgICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgICAgIHZhciBmaWVsZHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSAkYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgJGVsID0gJCgkYXJyYXlbaV0pO1xuICAgICAgICAgICAgdmFyIGNyID0gJCgkZWwuZmluZCgnLmFzd3Ytc2VhcmNoLWluLXNlbGVjdCcpKS52YWwoKTtcbiAgICAgICAgICAgIGlmIChjciAmJiBjciAhPSBcIk5vbmVcIikge1xuICAgICAgICAgICAgICAgIHZhciBjclZhbHVlID0gJCgkZWwuZmluZCgnLmFzd3ZvYy1jcml0ZXJpYS1pbnB1dCcpKS52YWwoKTtcbiAgICAgICAgICAgICAgICBpZiAoY3JWYWx1ZSAmJiBjclZhbHVlICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzLnB1c2goY3IgKyBcIjooXCIgKyBjclZhbHVlICsgXCIpXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHN0ciA9IGZpZWxkcy5qb2luKFwiIEFORCBcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9LFxuICAgIEFkdmFuY2VkU2VhcmNoVmlldy5wcm90b3R5cGVbJ19nZXRDb2xsZWN0aW9uc1N0ciddID0gZnVuY3Rpb24oKSB7IFxuICAgICAgICB2YXIgY29sbGVjdGlvbnMgPSB0aGlzLl9nZXRDb2xsZWN0aW9ucygpO1xuICAgICAgICBpZihjb2xsZWN0aW9ucyAmJiBjb2xsZWN0aW9ucy5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIHJldHVybiBcImNvbGxlY3Rpb246KFwiICsgY29sbGVjdGlvbnMuam9pbignIE9SICcpICsgXCIpXCI7XG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIEFkdmFuY2VkU2VhcmNoVmlldy5wcm90b3R5cGVbJ3NlYXJjaCddID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjb25zdHJhaW50TW9kZWwgPSBuZXcgU2VhcmNoQ29uc3RyYWludE1vZGVsKCk7XG4gICAgICAgIHZhciBzZWxlY3RlZENvbGxlY3Rpb25zID0gdGhpcy5fZ2V0Q29sbGVjdGlvbnMoKTtcbiAgICAgICAgY29uc3RyYWludE1vZGVsLnNldFBhZ2VOdW1iZXIobnVsbCk7XG4gICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IFtdO1xuICAgICAgICBpZighdGhpcy52aWFGYWNldHMpe1xuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb25TdHIgPSB0aGlzLl9nZXRDb2xsZWN0aW9uc1N0cigpO1xuICAgICAgICAgICAgaWYoY29sbGVjdGlvblN0cil7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXMucHVzaChjb2xsZWN0aW9uU3RyKTtcbiAgICAgICAgICAgIH0gICAgICAgICAgICBcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb25zID0gdGhpcy5fZ2V0Q29sbGVjdGlvbnMoKTtcbiAgICAgICAgICAgIGlmKGNvbGxlY3Rpb25zICYmIGNvbGxlY3Rpb25zLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRNb2RlbC5jb25zdHJhaW50cy5mYWNldHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIFwiYWNjb2RlbmF2XCIgOiBjb2xsZWN0aW9uc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdHJhaW50TW9kZWwuY29uc3RyYWludHMuZmlsdGVyT3JkZXIgPSBbXCJhY2NvZGVuYXZcIl07XG4gICAgICAgICAgICB9ICAgICAgICAgICAgXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGF0ZVJhbmdlU3RyID0gdGhpcy5zZWxlY3REYXRlUmFuZ2VWaWV3LmdldFF1ZXJ5U3RyaW5nKCk7XG4gICAgICAgIGlmKGRhdGVSYW5nZVN0cil7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5wdXNoKGRhdGVSYW5nZVN0cik7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICB2YXIgc2VhcmNoSW5TdHIgPSB0aGlzLl9nZXRTZWFyY2hJblN0cigpO1xuICAgICAgICBcbiAgICAgICAgaWYoc2VhcmNoSW5TdHIpe1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMucHVzaChzZWFyY2hJblN0cik7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vcHVibGlzaGRhdGU6cmFuZ2UoMjAxNi0wMi0wMiwpIEFORCBnb3Zlcm5tZW50YXV0aG9yOihDYW5hbCBab25lIEdvdmVybm1lbnQpIEFORCBjb250ZW50OnRlc3QgQU5EIGNvbGxlY3Rpb246KEJVREdFVCBPUiBHT1ZQVUIgT1IgQ1pJQylcblxuICAgICAgICBjb25zdHJhaW50TW9kZWwuY29uc3RyYWludHMucXVlcnkgPSBxdWVyeVBhcmFtcy5qb2luKFwiIEFORCBcIik7XG4gICAgICAgIGNvbnN0cmFpbnRNb2RlbC5jb25zdHJhaW50cy5oaXN0b3JpY2FsID0gdHJ1ZTtcblxuICAgICAgICB2YXIgY29uc3RyYWludFN0ciA9IGVuY29kZVVSSUNvbXBvbmVudChjb25zdHJhaW50TW9kZWwuZ2V0SlNPTlN0cmluZygpKTtcbiAgICAgICAgaWYoY29uc3RyYWludFN0cil7XG4gICAgICAgICAgY29uc3RyYWludFN0ciA9IGNvbnN0cmFpbnRTdHIucmVwbGFjZSgvJTJGL2csIEdvdkluZm8uYXBhY2hlRXNjYXBlKTsgLy8gaXNzdWUgIzQ2OVxuICAgICAgICB9XG4gICAgICBcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FwcC9zZWFyY2gvJyArIGNvbnN0cmFpbnRTdHI7XG4gICAgICBcbiAgICB9XG4gICAgQWR2YW5jZWRTZWFyY2hWaWV3LnByb3RvdHlwZVsnb25BZGRDcml0ZXJpYSddID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgdmFyICRlbCA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgIHZhciAkYXJyYXkgPSB0aGlzLiQoJy5hc3d2b2MtY3JpdGVyaWEtaG9sZGVyOmhpZGRlbicpO1xuICAgICAgICBpZiAoJGFycmF5Lmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAkZWwuaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciAkcyA9ICQoJGFycmF5WzBdKTtcbiAgICAgICAgJHMuc2hvdygpO1xuICAgICAgICB2YXIgJHNlbCA9ICQoJHMuZmluZCgnLmFzd3Ytc2VhcmNoLWluLXNlbGVjdCcpWzBdKTtcbiAgICAgICAgJHNlbC52YWwoXCJjb250ZW50XCIpO1xuICAgICAgICAkc2VsLmNoYW5nZSgpO1xuICAgICAgICAkcy5wYXJlbnQoKS5hcHBlbmQoJHMpO1xuICAgICAgICB0aGlzLiQoJyNhZGRjcml0ZXJpYWJ1dHRvbnMnKS5wYXJlbnQoKS5hcHBlbmQodGhpcy4kKCcjYWRkY3JpdGVyaWFidXR0b25zJykpO1xuICAgIH1cbiAgICBBZHZhbmNlZFNlYXJjaFZpZXcucHJvdG90eXBlWydvblJlbW92ZUNyaXRlcmlhJ10gPSBmdW5jdGlvbihlKSB7XG4gICAgICAgIHZhciAkZWwgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICQoJyMnICsgJGVsLmRhdGEoJ2hvbGRlcicpKS5oaWRlKCk7XG4gICAgICAgIHRoaXMuJCgnI2FkZGNyaXRlcmlhYnV0dG9ucycpLnNob3coKTtcbiAgICB9XG4gICAgcmV0dXJuIEFkdmFuY2VkU2VhcmNoVmlldztcbn0pO1xuIiwiZGVmaW5lKFtcblwianF1ZXJ5XCIsXG5cInVuZGVyc2NvcmVcIiwgXG5cImdvdmluZm9cIlxuXSwgXG5mdW5jdGlvbigkLCBfLCBHb3ZJbmZvKSB7XG4gICAgXG4gICAgXG4gICAgdmFyIENpdGF0aW9uU2VhcmNoV2lkZ2V0VmlldyA9IEdvdkluZm8uQmFzZVZpZXcuZXh0ZW5kKHtcbiAgICAgICAgdGVtcGxhdGU6ICcuL2NvbW1vbi90ZW1wbGF0ZXMvc2VhcmNod2lkZ2V0L0NpdGF0aW9uU2VhcmNoVmlldy5odG1sJyxcbiAgICAgICAgbG9hZGluZ1RlbXBsYXRlOiAnLi9jb21tb24vdGVtcGxhdGVzL3NlYXJjaHdpZGdldC9Mb2FkaW5nLmh0bWwnLFxuICAgICAgICB1c2VIYXNoIDogdHJ1ZSxcbiAgICAgICAgdXNlU3RhdGUgOiBmYWxzZSxcbiAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgICAnY2hhbmdlICNjaXRhdGlvbnB1Ymxpc3QnOiAnb25Db2xsZWN0aW9uQ2hhbmdlJyxcbiAgICAgICAgICAgICdjaGFuZ2UgLmZvcm0tY29udHJvbCc6ICdvbkZvcm1Db250cm9sQ2hhbmdlJyxcbiAgICAgICAgICAgICdjbGljayAjc2VhcmNoQnV0dG9uJzogJ29uU2VhcmNoJyxcbiAgICAgICAgICAgICdjbGljayAuY3MtY2xvc2UtYWxlcnQnOiAnb25DbG9zZUFsZXJ0JyxcbiAgICAgICAgICAgICdjbGljayAjc2hvd0hpc3RvcnlVcmwnOiAnc2hvd0hpc3RvcnlVcmwnLFxuICAgICAgICAgICAgJ2NsaWNrIC5jb3B5QnRuJzogJ2NvcHlTaGFyZVVybCcsXG4gICAgICAgICAgICAgJ2NsaWNrIC5kaXNwbGF5U2hhcmUnOiAnc2hhcmVNb2RhbCcsXG4gICAgICAgICAgICAgJ2NsaWNrICNjbG9zZU1vZGFsJyA6ICdyZW1vdmVNb2RhbCcsXG4gICAgICAgICAgICAgJ2NsaWNrICNzaGFyZS1tb2RhbF9faW5uZXItLWNvcHknOiAnY29weUxpbmtVcmwnXG5cbiAgICAgICAgfSxcbiAgICAgICAgc25pcHBldHM6IHtcbiAgICAgICAgICAgJ3NoYXJlLW1vZGFsJzogJ2Jyb3dzZS90ZW1wbGF0ZXMvc2hhcmVtb2RhbC5odG1sJ1xuICAgICAgICAgfSxcbiAgICAgICAgXG4gICAgICAgIHNob3dIaXN0b3J5VXJsOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICB2YXIgJGJvb2ttYXJrX3BsYWNlaG9sZGVyID0gdGhpcy4kKCcjY2l0YXRpb25Cb29rbWFya19wbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgJGJvb2ttYXJrX3BsYWNlaG9sZGVyLmhpZGUoKTtcbiAgICAgICAgICAgIHZhciBzdHIgPSBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodGhpcy5fZ2V0U2VhcmNoSnNvbih0cnVlKSkpO1xuICAgICAgICAgICAgdmFyIHVybCA9IGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3QgKyAnLyNjaXRhdGlvbj9jc2g9JyArIHN0cjtcbiAgICAgICAgICAgIHZhciBjb3B5Qm94ID0gJzxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvXCI+Q29weSBhbmQgc2F2ZSB0aGlzIGxpbms6IDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cImFsZXJ0XCIgYXJpYS1sYWJlbD1cImNsb3NlXCI+JnRpbWVzOzwvYT4gJyArIFxuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPjxpbnB1dCBpZD1cImNpdGF0aW9uVXJsSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdmFsdWU9XCInICsgdXJsICsgXG4gICAgICAgICAgICAnXCI+PHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj48YnV0dG9uIGNsYXNzPVwiY29weUJ0biBidG4gYnRuLWRlZmF1bHRcIiB0eXBlPVwiYnV0dG9uXCI+Q29weTwvYnV0dG9uPjwvc3Bhbj48L2Rpdj48L2Rpdj4nO1xuICAgICAgICAgICAgJGJvb2ttYXJrX3BsYWNlaG9sZGVyLmh0bWwoY29weUJveCk7XG4gICAgICAgICAgICAkYm9va21hcmtfcGxhY2Vob2xkZXIuZmFkZUluKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvcHlTaGFyZVVybDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgdmFyIGJvb2ttYXJrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjaXRhdGlvblVybElucHV0XCIpLnZhbHVlO1xuICAgICAgICAgICAgR292SW5mby5CYXNlVmlldy5wcm90b3R5cGUuY29weVNoYXJlVXJsKGUsIGJvb2ttYXJrKTtcbiAgICAgICAgfSxcbiAgICAgICAgIHNoYXJlTW9kYWw6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgJGN1cnJlbnRUYXJnZXQgPSAkKGUudGFyZ2V0KTtcbiAgICAgICAgICAgICAgaWYgKH4kLmluQXJyYXkoXCJkaXNwbGF5U2hhcmVcIiwgJGN1cnJlbnRUYXJnZXRbMF0uY2xhc3NMaXN0KSkge1xuICAgICAgICAgICAgICAgIC8vIHRha2VzIHRoZSBzaGFyZSBtb2RhbCBtYXJrdXAgYW5kIGluc2VydHMgaXQgYWZ0ZXIgdGhlIGN1cnJlbnQgcGFuZWwsIGhlbHBzIHdpdGgga2V5Ym9hcmQgbmF2aWdhdGlvbi4gSGFkIHRvIHdyYXAgJGN1cnJlbnRUYXJnZXRbMF0gaW4gYSBqUXVlcnkgc2VsZWN0b3IgZm9yIElFMTFcbiAgICAgICAgICAgICAgICAkKCRjdXJyZW50VGFyZ2V0WzBdLmNsb3Nlc3QoXCIuY29weS1jb250YWluZXJcIikpLmFmdGVyKHRoaXMuc25pcHBldCgnc2hhcmUtbW9kYWwnKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgR292SW5mby5CYXNlVmlldy5wcm90b3R5cGUuc2hhcmVNb2RhbERhdGEoKTtcbiAgICAgICAgfSxcbiAgICAgICAgIHJlbW92ZU1vZGFsOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgICQoXCIuaW1nUHJldmlld19faW5uZXJcIikuYWRkQ2xhc3MoXCJtb2RhbEZhZGVPdXQtLXNsb3dlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgJCgnLmRsLW1vZGFsX19pbm5lcicpLmFkZENsYXNzKFwibW9kYWxGYWRlT3V0LS1zbG93ZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICQoJy5zaGFyZS1tb2RhbF9faW5uZXInKS5hZGRDbGFzcyhcIm1vZGFsRmFkZU91dC0tc2xvd2VyXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGFsSXRlbXMgPSBbXCIjaW1nTW9kYWwtY29udGFpblwiLCBcIiNkbC1jb250YWluXCIsIFwiI3NoYXJlLWNvbnRhaW5cIl07XG4gICAgICAgICAgICAgICAgICAgIG1vZGFsSXRlbXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAkKHgpLmZhZGVPdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHgpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAvLyBhZGRzIGJhY2sgc2Nyb2xsaW5nXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGwgPSBcInllc1wiOyAvL2ZvciBJRVxuICAgICAgICB9LFxuICAgICAgICBjb3B5TGlua1VybDogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgLy8gc2VwYXJhdGUgZXZlbnQgZm9yIGNvcHlpbmcgdXJscyBpbnNpZGUgbW9kYWwsIHNlcGFyYXRlIGJlY2F1c2UgaXQncyBhIGRpZmZlcmVudCBjbGljayBldmVudFxuICAgICAgICAgICAgR292SW5mby5CYXNlVmlldy5wcm90b3R5cGUuY29weVNoYXJlVXJsKGUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uRm9ybUNvbnRyb2xDaGFuZ2U6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHZhciAkZWwgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBpZiAoISRlbC5oYXNDbGFzcygnZXZlbnQtY2l0YXRpb24tZHluYW1pYy1jb250cm9sJykpIHtcbiAgICAgICAgICAgICAgICB2YXIganNvbiA9IG51bGwgO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGpzb24gPSB0aGlzLl9nZXRTZWFyY2hKc29uKCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgICAgICAgICAgICAgIGlmIChqc29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkZHluYW1pYyA9IHRoaXMuJCgnLmV2ZW50LWNpdGF0aW9uLWR5bmFtaWMtY29udHJvbFtkYXRhLWNvbGxlY3Rpb249XCInICsganNvbi5jb2xsZWN0aW9uICsgJ1wiXScpO1xuICAgICAgICAgICAgICAgICAgICAkZHluYW1pYy5wcm9wKFwiZGlzYWJsZWRcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB2YXIgc3VjY2VzcyA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRkeW5hbWljLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3B0aW9uc0FyciA9IGRhdGEuc2VsZWN0T3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zQXJyICYmIG9wdGlvbnNBcnIubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkeW5hbWljLnByb3AoXCJkaXNhYmxlZFwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmVhY2gob3B0aW9uc0FyciwgZnVuY3Rpb24oZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZHluYW1pYy5hcHBlbmQoXCI8b3B0aW9uIHZhbHVlPSdcIiArIGZpZWxkLnZhbHVlICsgXCInPlwiICsgZmllbGQuZGlzcGxheVZhbHVlICsgXCI8L29wdGlvbj5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZCAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBmaWVsZDsgZmllbGQgPSB0aGlzLmhpc3Rvcnkuc2VhcmNoQ3JpdGVyaWFbaV07IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmaWVsZC52YWx1ZSA9PT0gJGR5bmFtaWMuYXR0cihcImRhdGEtbmFtZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZHluYW1pYy52YWwoZmllbGQuZGlzcGxheVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9ICcvd3NzZWFyY2gvc2VhcmNoL2NpdGF0aW9uc2VhcmNoL3VwZGF0ZSc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zdEpTT04odXJsLCBzdWNjZXNzLmJpbmQodGhpcyksIHN1Y2Nlc3MuYmluZCh0aGlzKSwganNvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNsb3NlQWxlcnQ6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLiQoJyNhbGVydGRpdicpLmFkZENsYXNzKCdoaWRlJyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIHByZWxvYWREYXRhQXN5bmM6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICB2YXIgdXJsID0gJy93c3NlYXJjaC9zZWFyY2gvY2l0YXRpb25zZWFyY2gnO1xuICAgICAgICAgICAgdGhpcy5nZXRKU09OKHVybCwgY2FsbGJhY2spO1xuICAgICAgICB9LFxuICAgICAgICBvbkNvbGxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHRoaXMuJCgnLmN2LWNvbGxlY3Rpb24tY29udGVudCcpLmhpZGUoKTtcbiAgICAgICAgICAgIHRoaXMuJCgnI2FsZXJ0ZGl2JykuYWRkQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyICRlbCA9ICQoZS5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB2YXIgJGNvbnRlbnQgPSB0aGlzLiQoJyNjb2xsZWN0aW9uXycgKyAkZWwudmFsKCkpO1xuICAgICAgICAgICAgICAgICRjb250ZW50LnNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgX2dldFNlYXJjaEpzb246IGZ1bmN0aW9uKG5vVm9sYWRpdGlvbikge1xuICAgICAgICAgICAgdmFyICRpbnB1dHMgPSB0aGlzLiQoJ3NlbGVjdDp2aXNpYmxlLGlucHV0OnZpc2libGUnKTtcbiAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbnVsbCA7XG4gICAgICAgICAgICB2YXIgc2VhcmNoQ3JpdGVyaWEgPSBbXTtcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgdmFyIGR5bmFtaWMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gJGlucHV0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgJGVsID0gJCgkaW5wdXRzW2ldKTtcbiAgICAgICAgICAgICAgICB2YXIgcmVxdWlyZWQgPSAkZWwuZGF0YSgncmVxdWlyZWQnKTtcbiAgICAgICAgICAgICAgICBpZiAoJGVsWzBdLmlkID09ICdjaXRhdGlvbnB1Ymxpc3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24gPSAkZWwudmFsKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpZWxkID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiAkZWwuZGF0YSgnbmFtZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXNwbGF5VmFsdWVcIjogJGVsLnZhbCgpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbm9Wb2xhZGl0aW9uICYmIChyZXF1aXJlZCAmJiAoISRlbC52YWwoKSB8fCAkZWwudmFsKCkgPT0gXCItMVwiKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlcXVpcmVkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRlbC52YWwoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQ3JpdGVyaWEucHVzaChmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCRlbC5oYXNDbGFzcygnZXZlbnQtY2l0YXRpb24tZHluYW1pYy1jb250cm9sJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWMucHVzaChmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgc2VhcmNoQ3JpdGVyaWE6IHNlYXJjaENyaXRlcmlhLFxuICAgICAgICAgICAgICAgIHNlbGVjdE9wdGlvbnM6IGR5bmFtaWMsXG4gICAgICAgICAgICAgICAgLy9yZXN1bHQ6IHJlc3VsdFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvblNlYXJjaDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIganNvbiA9IG51bGwgO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBqc29uID0gdGhpcy5fZ2V0U2VhcmNoSnNvbigpO1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJvbnNlYXJjaCBqc29uIDpcIitKU09OLnN0cmluZ2lmeSgpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHRoaXMuJCgnI2RvY3RleHQnKS5odG1sKGVycik7XG4gICAgICAgICAgICAgICAgdGhpcy4kKCcjYWxlcnRkaXYnKS5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLyp2YXIgb25SZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCkge1xuICAgICAgICAgICAgICAgIHZhciBwb3ByZXMgPSB3aW5kb3cub3Blbih1cmwpO1xuICAgICAgICAgICAgICAgIGlmIChwb3ByZXMgPT0gbnVsbCApIHtcbiAgICAgICAgICAgICAgICAgICAgbXNnID0gJzxhIHN0eWxlPVwiY29sb3I6Ymx1ZTtcIiBocmVmPVwiJyArIHVybCArICdcIiB0YXJnZXQ9XFwnX2JsYW5rXFwnID5DbGljayBoZXJlPC9hPiBpZiBjb250ZW50IGRvZXMgbm90IG9wZW4uIFRoaXMgY291bGQgaGFwcGVuIGJlY2F1c2Ugb2YgYSBwb3AtdXAgYmxvY2tlci4nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiQoJyNkb2N0ZXh0JykuaHRtbChtc2cpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiQoJyNhbGVydGRpdicpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBzaG93UGFuZWwgPSBmdW5jdGlvbihyZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInJlc3VsdC5sZW5ndGhcIiArcmVzdWx0Lmxlbmd0aCk7XG5cbiAgICAgICAgICAgICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHMubGVuZ3RoID4wICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiQoJyNkb2N0ZXh0JykuaHRtbCgnJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCggcmVzdWx0ID0+IHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoPjAgJiYgcmVzdWx0WzBdIT1udWxsICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJzx0YWJsZSBjbGFzcz1cXFwidGFibGVcXFwiPjx0Ym9keT4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9bXNnICsnPHRyIGNsYXNzPVxcXCJcXFwiPjx0ZCBjbGFzcz1cXFwiXFxcIj4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdFs0XSAhPW51bGwpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9bXNnKyc8cD48Yj4nK3Jlc3VsdFs0XSsnPC9iPjwvcD4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHRbNV0gIT1udWxsKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1tc2crJzxwIGNsYXNzPVxcXCJzbWFsbFxcXCI+PGVtPicrcmVzdWx0WzVdKyc8L2VtPjwvcD4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9bXNnKyc8ZGl2IGNsYXNzPVxcXCJidG4tZ3JvdXAtaG9yaXpvbnRhbFxcXCI+JztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdFswXSAhPW51bGwpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9bXNnKyc8YSBjbGFzcz1cXFwiYnRuIGJ0bi1zbSBidG4tZm9ybWF0XFxcIiBpZCA9XFxcInBkZmxpbmtcXFwiIGhyZWY9XCIvY29udGVudC9wa2cvJytyZXN1bHRbMF0rJ1wiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj5QREY8L2E+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0WzJdICE9bnVsbCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWxmaWxlPXJlc3VsdFs2XStcIi9cIityZXN1bHRbMl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1tc2crJzxhIGNsYXNzPVxcXCJidG4gYnRuLXNtIGJ0bi1mb3JtYXRcXFwiIGlkID1cXFwidHh0bGlua1xcXCIgaHJlZj1cIi9jb250ZW50L3BrZy8nK2h0bWxmaWxlKydcIiB0YXJnZXQ9XFxcIl9ibGFua1xcXCI+VGV4dDwvYT4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHRbOF0gIT1udWxsKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhc3Rkb3QgPXJlc3VsdFs4XS5sYXN0SW5kZXhPZihcIi5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdGhlcjFmaWxlID0gcmVzdWx0WzhdLnN1YnN0cmluZyhsYXN0ZG90KzEpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1tc2crJzxhIGNsYXNzPVxcXCJidG4gYnRuLXNtIGJ0bi1mb3JtYXRcXFwiIGlkID1cXFwieG1sbGlua1xcXCIgaHJlZj1cIi9jb250ZW50L3BrZy8nK3Jlc3VsdFs2XSsnLycrcmVzdWx0WzhdKydcIiB0YXJnZXQ9XFxcIl9ibGFua1xcXCI+JytvdGhlcjFmaWxlKyc8L2E+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHRbOV0gIT1udWxsKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ZG90ID1yZXN1bHRbOV0ubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG90aGVyMmZpbGUgPSByZXN1bHRbOV0uc3Vic3RyaW5nKGxhc3Rkb3QrMSkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1tc2crJzxhIGNsYXNzPVxcXCJidG4gYnRuLXNtIGJ0bi1mb3JtYXRcXFwiICBocmVmPVwiL2NvbnRlbnQvcGtnLycrcmVzdWx0WzZdKycvJytyZXN1bHRbOV0rJ1wiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj4nK290aGVyMmZpbGUrJzwvYT4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdFsxMF0gIT1udWxsKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHRbMTBdLmluZGV4T2YoJ3VzbG0nKSAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1tc2crJzxhIGNsYXNzPVxcXCJidG4gYnRuLXNtIGJ0bi1mb3JtYXRcXFwiICBocmVmPVwiL2NvbnRlbnQvcGtnLycrcmVzdWx0WzZdKycvJytyZXN1bHRbMTBdKydcIiAgdGFyZ2V0PVwiX2JsYW5rXCI+VVNMTTwvYT4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1tc2crJzxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZm9ybWF0XCIgIGhyZWY9XCIvY29udGVudC9wa2cvJytyZXN1bHRbNl0rJy8nK3Jlc3VsdFsxMF0rJ1wiICB0YXJnZXQ9XCJfYmxhbmtcIj5YTUw8L2E+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXRhaWxzdXJsID0nL2FwcC9kZXRhaWxzLyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0WzZdICE9bnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc3VybD1kZXRhaWxzdXJsK3Jlc3VsdFs2XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHRbN10gIT1udWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzdXJsPWRldGFpbHN1cmwrXCIvXCIrcmVzdWx0WzddO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGV0YWlsc3VybCE9Jy9hcHAvZGV0YWlscy8nKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1tc2crJzxhIGNsYXNzPVxcXCJidG4gYnRuLXNtIGJ0bi1mb3JtYXQgXFxcIiAgaWQgPVxcXCJkZXRhaWxzbGlua1xcXCIgaHJlZj0nK2RldGFpbHN1cmwrJyB0YXJnZXQ9XFxcIl9ibGFua1xcXCI+RGV0YWlsczwvYT4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPW1zZysnPGEgY2xhc3M9XFxcImJ0biBidG4tc20gYnRuLWRlZmF1bHQgZGlzcGxheVNoYXJlXFxcIiBhZGR0aGlzOnRpdGxlPVwiJytyZXN1bHRbNF0rJ1wiIGFkZHRoaXM6dXJsPVwiJytkZXRhaWxzdXJsKydcIiBocmVmPVxcXCJqYXZhc2NyaXB0OjtcXFwiPlNoYXJlPC9hPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9bXNnKycgPC9kaXY+IDwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+JztcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kKCcjZG9jdGV4dCcpLmFwcGVuZChtc2cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJCgnI2FsZXJ0ZGl2JykucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9KVxuXG5cbiAgICAgICAgICAgICAgIH0gXG5cblxuXG5cbiAgICAgICAgICAgIH0uYmluZCh0aGlzKTtcblxuICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInJlc3VsdCBpbiBzY3JpcHQgXCIrZGF0YS5yZWRpcmVjdFVybCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5yZXN1bHQgJiYgZGF0YS5yZXN1bHRbMF0hPW51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgc2hvd1BhbmVsKGRhdGEucmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIC8qIGlmIChkYXRhICYmIGRhdGEucmVkaXJlY3RVcmwpIHtcbiAgICAgICAgICAgICAgICAgICAgb25SZWRpcmVjdChkYXRhLnJlZGlyZWN0VXJsKTtcblxuICAgICAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgdmFyIGVycm9yID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgIC8qaWYgKGRhdGEgJiYgZGF0YS5yZWRpcmVjdFVybCkge1xuICAgICAgICAgICAgICAgICAgICBvblJlZGlyZWN0KGRhdGEucmVkaXJlY3RVcmwpO1xuICAgICAgICAgICAgICAgIH0gKi9cbiAgICAgICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnJlc3VsdCAmJiBkYXRhLnJlc3VsdFswXSE9bnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBzaG93UGFuZWwoZGF0YS5yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy92YXIgZXJyb3IgPSAoZGF0YSAmJiBkYXRhLnN0YXR1cykgfHwgXCJFcnJvciBvY2N1cnJlZCB3aGlsZSBzZWFyY2hpbmcgZm9yIGNpdGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3IgPSAoZGF0YSAmJiBkYXRhLnN0YXR1cykgfHwgXCJFcnJvciBvY2N1cnJlZCB3aGlsZSBzZWFyY2hpbmcgZm9yIGNpdGF0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCgnI2RvY3RleHQnKS5odG1sKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kKCcjYWxlcnRkaXYnKS5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIHRoaXMuc2V0T3ZlcmxheSgpO1xuICAgICAgICAgICAgdmFyIHVybCA9ICcvd3NzZWFyY2gvc2VhcmNoL2NpdGF0aW9uc2VhcmNoJztcbiAgICAgICAgICAgIHRoaXMucG9zdEpTT04odXJsLCBlcnJvci5iaW5kKHRoaXMpLCBzdWNjZXNzLmJpbmQodGhpcyksIGpzb24pO1xuICAgICAgICB9LFxuICAgICAgICBcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIFxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLm9uQ29sbGVjdGlvbkNoYW5nZSgpO1xuICAgICAgICAgICAgdmFyIGhpc3RvcnkgPSB0aGlzLmdldFBhcmFtZXRlcignY3NoJyk7XG4gICAgICAgICAgICBpZiAoaGlzdG9yeSkge1xuICAgICAgICAgICAgICAgIGhpc3RvcnkgPSBkZWNvZGVVUklDb21wb25lbnQoaGlzdG9yeSk7XG4gICAgICAgICAgICAgICAgaGlzdG9yeSA9IEpTT04ucGFyc2UoaGlzdG9yeSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5PWhpc3Rvcnk7XG4gICAgICAgICAgICAgICAgdGhpcy5wdXRGb3JtKGhpc3RvcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcbiAgICAgICAgcHV0Rm9ybTogZnVuY3Rpb24oaGlzdG9yeSkge1xuICAgICAgICAgICAgdGhpcy4kKCcjY2l0YXRpb25wdWJsaXN0JykudmFsKGhpc3RvcnkuY29sbGVjdGlvbik7XG4gICAgICAgICAgICB0aGlzLiQoJyNjaXRhdGlvbnB1Ymxpc3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBmaWVsZDsgZmllbGQgPSBoaXN0b3J5LnNlYXJjaENyaXRlcmlhW2ldOyBpKyspIHtcbiAgICAgICAgICAgICAgICAvLyBjYWNoZSB0aGUgc2VsZWN0b3IgYmVmb3JlIGFzc2lnbmluZyB2YWx1ZVxuICAgICAgICAgICAgICAgIHZhciBzZWxlY3RGaWVsZD10aGlzLiQoXCIjc2Vjb25kY3JpdGVyaWEgW2RhdGEtY29sbGVjdGlvbj0nXCIgKyBoaXN0b3J5LmNvbGxlY3Rpb24gKyBcIiddW2RhdGEtbmFtZT0nXCIgKyBmaWVsZC52YWx1ZSArIFwiJ11cIik7XG4gICAgICAgICAgICAgICAgc2VsZWN0RmllbGQudmFsKGZpZWxkLmRpc3BsYXlWYWx1ZSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0RmllbGQudHJpZ2dlcignY2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBcbiAgICB9KTtcbiAgICBcbiAgICByZXR1cm4gQ2l0YXRpb25TZWFyY2hXaWRnZXRWaWV3O1xufVxuKTtcblxuIiwiZGVmaW5lKFtcImpxdWVyeVwiLCBcInVuZGVyc2NvcmVcIiwgXCJiYWNrYm9uZVwiLCBcImdvdmluZm9cIl0sIGZ1bmN0aW9uKCQsIF8sIEJhY2tib25lLCBHb3ZJbmZvKSB7XG4gICAgU2VhcmNoQ29uc3RyYWludE1vZGVsID0gR292SW5mby5Qb3N0Q29uc3RyYWludE1vZGVsLmV4dGVuZCh7XG5cbiAgICAgICAgYWRkTmF2aWdhdG9yOiBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnN0cmFpbnRzLm5hdmlnYXRvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uc3RyYWludHMubmF2aWdhdG9yID0ge307XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHJhaW50cy5uYXZpZ2F0b3IubmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHJhaW50cy5uYXZpZ2F0b3IudmFsdWVzID0gW3ZhbHVlXTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cmFpbnRzLm5hdmlnYXRvci5uZXh0ID0gbnVsbCA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gdGhpcy5jb25zdHJhaW50cy5uYXZpZ2F0b3I7XG4gICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRlbXApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAubmFtZSA9PSBuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGVtcC5uZXh0ICYmICFmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5uZXh0ID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLm5leHQubmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLm5leHQudmFsdWVzID0gW3ZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAubmV4dC5uZXh0ID0gbnVsbCA7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGVtcC5uZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cmFpbnRzLm5hdmlnYXRvcjtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0UGFnZU51bWJlciA6IGZ1bmN0aW9uKHBhZ2VOdW1iZXIpe1xuICAgICAgICAgICAgaWYocGFnZU51bWJlcil7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHJhaW50cy5vZmZzZXQgPSBwYWdlTnVtYmVyO1xuICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uc3RyYWludHMub2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICB9LFxuICAgICAgICBnZXRQYWdlTnVtYmVyIDogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cmFpbnRzLm9mZnNldCA/IHRoaXMuY29uc3RyYWludHMub2Zmc2V0IDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIHNldFBhZ2VTaXplIDogZnVuY3Rpb24ocGFnZVNpemUpe1xuICAgICAgICAgICAgaWYocGFnZVNpemUpe1xuICAgICAgICAgICAgICAgIHRoaXMuY29uc3RyYWludHMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cmFpbnRzLnBhZ2VTaXplID0gMTA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0UGFnZVNpemUgOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RyYWludHMucGFnZVNpemUgPyB0aGlzLmNvbnN0cmFpbnRzLnBhZ2VTaXplIDogMTBcbiAgICAgICAgfSxcbiAgICAgICAgX2dldE5hdmlnYXRvclN0cjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgc3RyID0gXCImbmE9XCI7XG4gICAgICAgICAgICB2YXIgZmllbGRBcnJheSA9IFtdO1xuICAgICAgICAgICAgdmFyIHZhbHVlQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIHZhciB0ZW1wID0gdGhpcy5jb25zdHJhaW50cy5uYXZpZ2F0b3I7XG4gICAgICAgICAgICB3aGlsZSAodGVtcCkge1xuICAgICAgICAgICAgICAgIGZpZWxkQXJyYXkucHVzaCh0ZW1wLm5hbWUpO1xuICAgICAgICAgICAgICAgIHZhciBhcnJheSA9IHRlbXAudmFsdWVzO1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSBhcnJheS5qb2luKFwiIVwiKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSBcIiFcIiArIHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFsdWVBcnJheS5wdXNoKHZhbCk7XG4gICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAubmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0ciArPSBmaWVsZEFycmF5LmpvaW4oXCJfXCIpO1xuICAgICAgICAgICAgc3RyICs9IFwiJnNlPVwiO1xuICAgICAgICAgICAgc3RyICs9IHZhbHVlQXJyYXkuam9pbihcIl9cIik7XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICB9LFxuICAgICAgICBnZXRCb2R5OiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RyYWludHM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldFVybDogZnVuY3Rpb24ob3B0aW9ucykge1xuLy8gICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zIDoge307XG4vLyAgICAgICAgICAgICBzdHIgPSAnc2I9Jztcbi8vICAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzLnNvcnRCeSkge1xuLy8gICAgICAgICAgICAgICAgIHN0ciArPSB0aGlzLmNvbnN0cmFpbnRzLnNvcnRCeTtcbi8vICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzLmJkZikge1xuLy8gICAgICAgICAgICAgICAgIHN0ciArPSAnJmJyb3dzZWRhdGVmbGFnPScgKyB0aGlzLmNvbnN0cmFpbnRzLmJkZjtcbi8vICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzLmhpc3RvcmljYWwpIHtcbi8vICAgICAgICAgICAgICAgICBzdHIgKz0gJyZpc0hpc3RvcmljYWw9JyArIHRoaXMuY29uc3RyYWludHMuaGlzdG9yaWNhbDtcbi8vICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgIHN0ciArPSAnJnBzPScgKyB0aGlzLmdldFBhZ2VTaXplKCkgKyAnJnNyPScgKyAodGhpcy5nZXRQYWdlTnVtYmVyKCkgKyAxKTtcbi8vICAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzLnF1ZXJ5KSB7XG4vLyAgICAgICAgICAgICAgICAgc3RyICs9IFwiJnN0PVwiICsgdGhpcy5jb25zdHJhaW50cy5xdWVyeTtcbi8vICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMubm9TZWFyY2hXaXRoaW4gJiYgdGhpcy5jb25zdHJhaW50cy5zZWFyY2hXaXRoaW4pIHtcbi8vICAgICAgICAgICAgICAgICAgICAgc3RyICs9IFwiIGFuZCBcIiArIHRoaXMuY29uc3RyYWludHMuc2VhcmNoV2l0aGluO1xuLy8gICAgICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzLm5hdmlnYXRvciAmJiAhXy5pc0VtcHR5KHRoaXMuY29uc3RyYWludHMubmF2aWdhdG9yKSkge1xuLy8gICAgICAgICAgICAgICAgIHN0ciArPSB0aGlzLl9nZXROYXZpZ2F0b3JTdHIoKTtcbi8vICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnN0cmFpbnRzKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBTZWFyY2hDb25zdHJhaW50TW9kZWw7XG59KTtcbiIsImRlZmluZShbXCJqcXVlcnlcIiwgXCJ1bmRlcnNjb3JlXCIsIFwiY29tbW9uL2NvbnN0YW50cy91aXByb3BzXCIsIFwiYmFja2JvbmVcIiwgXCJnb3ZpbmZvXCIsIFwidXRpbHNcIiwgXCJzZWFyY2gvdmlld3MvbmV3U2VhcmNoQ29uc3RyYWludE1vZGVsXCJdLCBmdW5jdGlvbigkLCBfLCB1aXByb3BzLCBCYWNrYm9uZSwgR292SW5mbywgdXRpbHMsIFNlYXJjaENvbnN0cmFpbnRNb2RlbCkge1xuICAgIHZhciBTaW1wbGVTZWFyY2hWaWV3ID0gR292SW5mby5CYXNlVmlldy5leHRlbmQoe1xuICAgICAgICB0ZW1wbGF0ZTogJy4vY29tbW9uL3RlbXBsYXRlcy9zZWFyY2h3aWRnZXQvU2ltcGxlU2VhcmNoVmlldy5odG1sJyxcbiAgICAgICAgdXNlU3RhdGU6IHRydWUsXG4gICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgJ2NsaWNrICNzZWFyY2hCdXR0b24nOiAnb25TZWFyY2gnLFxuICAgICAgICAgICAgJ2tleXVwICNzZWFyY2hTdHJpbmcnOiAnb25LZXl1cCcsXG4gICAgICAgICAgICAnY2hhbmdlICNzZWFyY2hXaXRoaW4nOiAnb25TZWFyY2hXaXRoaW5DaGFuZ2UnLFxuICAgICAgICAgICAgJ2ZvY3VzICNzZWFyY2hTdHJpbmcnOiAnb25Gb2N1cydcbiAgICAgICAgfSxcbiAgICAgICAgc25pcHBldHM6IHtcbiAgICAgICAgICAgICdlcnJvcm5vdGlmaWNhdGlvbic6ICdjb21tb24vdGVtcGxhdGVzL2Vycm9ybm90aWZpY2F0aW9uLmh0bWwnXG4gICAgICAgIH0sXG4gICAgICAgIG9uU2VhcmNoV2l0aGluQ2hhbmdlOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBpZiAoJChlLmN1cnJlbnRUYXJnZXQpLnByb3AoJ2NoZWNrZWQnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMud2l0aGluVGVtcCA9IHRoaXMuJCgnI3NlYXJjaFN0cmluZycpLnZhbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuJCgnI3NlYXJjaFN0cmluZycpLnZhbChcIlwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kKCcjc2VhcmNoU3RyaW5nJykudmFsKHRoaXMud2l0aGluVGVtcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uRm9jdXM6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHZhciAkZWwgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICAkZWwuc2VsZWN0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uSGFzaENoYW5nZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgcm9vdCA9IHRoaXMuZ2V0UGFyYW1ldGVyKDEpO1xuXG4gICAgICAgICAgICBpZiAocm9vdCAhPSAnc2VhcmNoJykge1xuICAgICAgICAgICAgICAgIHRoaXMuJCgnI3NlYXJjaFN0cmluZycpLnZhbChcIlwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLiQoJy5zZWFyY2gtd2l0aGluLXdyYXAnKS5hZGRDbGFzcygnaGlkZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgY29uc3RyYWludHMgPSB0aGlzLmdldFBhcmFtZXRlcigyKTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JUZXh0ID0gdWlwcm9wcy5tZXNzYWdlcy5lcnJvclsnR0VORVJBTCddO1xuICAgICAgICAgICAgICAgIGlmIChjb25zdHJhaW50cykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMgPSBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChjb25zdHJhaW50cykpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2RpdltkYXRhLWlkPVwic2VhcmNoXCJdJykuaHRtbCh0aGlzLnNuaXBwZXQoJ2Vycm9ybm90aWZpY2F0aW9uJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yVGV4dDogZXJyb3JUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnRzICYmIGNvbnN0cmFpbnRzLnF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCgnLnNlYXJjaC13aXRoaW4td3JhcCcpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCgnI3NlYXJjaFN0cmluZycpLnZhbChjb25zdHJhaW50cy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kKCcjc2VhcmNoU3RyaW5nJykudmFsKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiQoJy5zZWFyY2gtd2l0aGluLXdyYXAnKS5hZGRDbGFzcygnaGlkZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25LZXl1cDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgZS5rZXlDb2RlID09IDEzICYmIHRoaXMub25TZWFyY2goKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TZWFyY2g6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGNvbnN0cmFpbnRNb2RlbCA9IG5ldyBTZWFyY2hDb25zdHJhaW50TW9kZWwoKTtcbiAgICAgICAgICAgIHZhciBjb25zdHJhaW50cyA9IG51bGw7XG4gICAgICAgICAgICBpZih0aGlzLmdldFBhcmFtZXRlcigxKSA9PSAnc2VhcmNoJyl7XG4gICAgICAgICAgICAgICAgY29uc3RyYWludHMgPSB0aGlzLmdldFBhcmFtZXRlcigyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb25zdHJhaW50cykge1xuICAgICAgICAgICAgICAgIC8vIFByZXNlcnZlIGN1cnJlbnQgc2VhcmNoIGNyaXRlcmlhXG4gICAgICAgICAgICAgICAgY29uc3RyYWludE1vZGVsLmNvbnN0cmFpbnRzID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoY29uc3RyYWludHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzZWFyY2hTdHJpbmcgPSB0aGlzLiQoJyNzZWFyY2hTdHJpbmcnKS52YWwoKTtcbiAgICAgICAgICAgIHZhciBhbGVydElkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhbGVydGRpdlwiKTtcbiAgICAgICAgICAgIGlmICgkLnRyaW0oc2VhcmNoU3RyaW5nKSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLiQoJyNzZWFyY2hXaXRoaW4nKS5wcm9wKCdjaGVja2VkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9SZWdFeDogaWYgbGFzdCBzdHJpbmcgaXMgTk9UIGVtcHR5IEFORCBOT1QgYWxsIHdoaXRlc3BhY2UsIHRoZW4gdW5pb24sIG90aGVyd2lzZSBqdXN0IHVzZSBuZXcgc3RyaW5nOyAtQVxuICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50TW9kZWwuY29uc3RyYWludHMucXVlcnkgPSAvXFxTLy50ZXN0KHRoaXMud2l0aGluVGVtcCkgPyB0aGlzLndpdGhpblRlbXAgKyBcIiBhbmQgXCIgKyBzZWFyY2hTdHJpbmcgOiBzZWFyY2hTdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCgnI3NlYXJjaFdpdGhpbicpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50TW9kZWwgPSBuZXcgU2VhcmNoQ29uc3RyYWludE1vZGVsKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRNb2RlbC5jb25zdHJhaW50cy5xdWVyeSA9IHNlYXJjaFN0cmluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3RyYWludE1vZGVsLnNldFBhZ2VOdW1iZXIobnVsbCApO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGFyZW50KCkudHJpZ2dlcignc2ltcGxlc2VhcmNoJyk7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycyh7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAxIDogXCJzZWFyY2hcIixcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIDIgOiBlbmNvZGVVUklDb21wb25lbnQoY29uc3RyYWludE1vZGVsLmdldEpTT05TdHJpbmcoKSlcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnN0cmFpbnRTdHIgPSBlbmNvZGVVUklDb21wb25lbnQoY29uc3RyYWludE1vZGVsLmdldEpTT05TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgaWYoY29uc3RyYWludFN0cil7XG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50U3RyID0gY29uc3RyYWludFN0ci5yZXBsYWNlKC8lMkYvZywgR292SW5mby5hcGFjaGVFc2NhcGUpOyAvLyBpc3N1ZSAjNDY5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJy9hcHAnKSA+PSAwICYmICFsb2NhdGlvbi5ocmVmLmluZGV4T2YoXCIvYXBwcm9wcmlhdGlvbnNcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUoe30sICcnLCBsb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyBsb2NhdGlvbi5ob3N0bmFtZSArICcvYXBwL3NlYXJjaC8nICsgY29uc3RyYWludFN0cik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FwcC9zZWFyY2gvJyArIGNvbnN0cmFpbnRTdHI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vd2luZG93LmxvY2F0aW9uLmhyZWYgPSA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICgkLnRyaW0oc2VhcmNoU3RyaW5nKSA9PT0gXCJcIiAmJiBhbGVydElkID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdXRpbHMuc2hvd2FsZXJ0KFwiI2Zvcm1FcnJvcnNcIiwgXCJQbGVhc2UgZW50ZXIgaW4gYSB2YWxpZCBzZWFyY2ggdGVybS5cIiwgXCJhbGVydC1pbmZvXCIsIDUwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMub25IYXNoQ2hhbmdlKCk7XG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIFNpbXBsZVNlYXJjaFZpZXc7XG59KTtcbiIsIi8vZXhwb3J0IGdsb2JhbCBfcGFxIGFycmF5IHVwb24gd2hpY2ggY2hhbmdlcyB3aWxsIGJlIHRyYWNrZWQuXG5kZWZpbmUoWydwaXdpaycgLCAnanF1ZXJ5J10sIGZ1bmN0aW9uIChwaXdpayAsICQpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICBcbiAgICAgXG4gICAgXG4vKiAgICBpZiAodHlwZW9mIEpTT04yID09ICdvYmplY3QnICYmIHR5cGVvZiBKU09OMi5zdHJpbmdpZnkgPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5KU09OID09PSAnb2JqZWN0JyAmJiB3aW5kb3cuSlNPTi5zdHJpbmdpZnkgJiYgd2luZG93LkpTT04ucGFyc2UpIHtcbiAgICBcdHdpbmRvdy5KU09OMiA9IHdpbmRvdy5KU09OO1xuICAgIH0qL1xuICAgIF9wYXEucHVzaChbXCJzZXRUcmFja2VyVXJsXCIsIHRyYWNraW5nX3NlcnZlcl0pO1xuICAgIF9wYXEucHVzaChbXCJzZXRTaXRlSWRcIiwgK3RyYWNraW5nX2lkX3NpdGVdKTtcbiAgICBfcGFxLnB1c2goWydkaXNhYmxlQ29va2llcyddKTtcbiAgICBfcGFxLnB1c2goW1widHJhY2tQYWdlVmlld1wiXSk7XG5cblxuICAvLyAgX3BhcS5wdXNoKFtcImVuYWJsZUxpbmtUcmFja2luZ1wiXSk7XG4gICAgJChmdW5jdGlvbigpe1xuXG5cbiAgICAgICAgLy8gdGhpcyBpcyB0byB0cmFjayBzaXRlIHNlYXJjaC5cbiAgICAgICAgJCgnYm9keScpLm9uKCdjbGljaycgLCcjc2VhcmNoQnV0dG9uJywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGlmKCQoJyNzZWFyY2hTdHJpbmcnKS52YWwoKSl7XG4gICAgICAgICAgICAgICAgX3BhcS5wdXNoKFsndHJhY2tTaXRlU2VhcmNoJyAsJCgnI3NlYXJjaFN0cmluZycpLnZhbCgpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgYWJzb2x1dGVQYXRoID0gZnVuY3Rpb24oaHJlZikge1xuICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IGhyZWY7XG4gICAgICAgICAgICAvLyB3b3JraW5nIGluIGNocm9tZSwgIElFMTEgYW5kIElFMTBcbiAgICAgICAgICAgIHJldHVybiBsaW5rLmhyZWY7XG4gICAgICAgIH1cbiAgICAgICB2YXIgZGxfcmV4ID0gbmV3IFJlZ0V4cChcIihwZGZ8eGxzfHR4dHx6aXB8eG1sKSRcIik7XG5cbiAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJ2EnICxmdW5jdGlvbigkZXZlbnQpe1xuXG4gICAgICAgICAgIGlmKCQodGhpcykuYXR0cignaHJlZicpKXsgLy8gaHMgaHJlZiBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgIGlmKGRsX3JleC50ZXN0KCAkKHRoaXMpLmF0dHIoJ2hyZWYnKSkpe1xuICAgICAgICAgICAgICAgIF9wYXEucHVzaChbJ3RyYWNrTGluaycgLCBhYnNvbHV0ZVBhdGgoJCh0aGlzKS5hdHRyKCdocmVmJykpICwgJ2Rvd25sb2FkJ10pO1xuICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgX3BhcS5wdXNoKFsndHJhY2tMaW5rJyAsIGFic29sdXRlUGF0aCgkKHRoaXMpLmF0dHIoJ2hyZWYnKSkgLCAnbGluayddKTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIC8vIHRyYWNrIGFzIGV2ZW50ICwgZXhhbXBsZSBmb3Igc2hhcmUgbGlua3MuXG4gICAgICAgICAgICB9XG4gICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIF9wYXE7XG59KTtcbiIsImRlZmluZSh7XG5cblxuXG5wYXJzZVF1ZXJ5UGFyYW1ldGVyc0J5TmFtZTogZnVuY3Rpb24gKHF1ZXJ5LHBhcmFtZXRlcm5hbWUpIHsgXG5cdFx0XHRcdHZhciBtYXRjaCA9IFJlZ0V4cChwYXJhbWV0ZXJuYW1lICsgJz0oW14mXSopJylcbiAgICAgICAgICAgICAgICAgICAgLmV4ZWMocXVlcnkpO1xuXHRcdFx0XHRyZXR1cm4gbWF0Y2ggJiYgZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzFdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcblx0XG5cdFx0XG59LFxuXG51cGRhdGVRdWVyeVN0cmluZ1BhcmFtZXRlcjogZnVuY3Rpb24gICh1cmksIGtleSwgdmFsdWUpIHtcbiAgdmFyIHJlID0gbmV3IFJlZ0V4cChcIihbP3wmXSlcIiArIGtleSArIFwiPS4qPygmfCN8JClcIiwgXCJpXCIpO1xuXHQgIGlmICh1cmkubWF0Y2gocmUpKSB7XG5cdFx0cmV0dXJuIHVyaS5yZXBsYWNlKHJlLCAnJDEnICsga2V5ICsgXCI9XCIgKyB2YWx1ZSArICckMicpO1xuXHQgIH0gZWxzZSB7XG5cdFx0dmFyIGhhc2ggPSAgJyc7XG5cdFx0dmFyIHNlcGFyYXRvciA9IHVyaS5pbmRleE9mKCc/JykgIT09IC0xID8gXCImXCIgOiBcIj9cIjsgICAgXG5cdFx0aWYoIHVyaS5pbmRleE9mKCcjJykgIT09IC0xICl7XG5cdFx0XHRoYXNoID0gdXJpLnJlcGxhY2UoLy4qIy8sICcjJyk7XG5cdFx0XHR1cmkgPSB1cmkucmVwbGFjZSgvIy4qLywgJycpO1xuXHRcdH1cblx0XHRyZXR1cm4gdXJpICsgc2VwYXJhdG9yICsga2V5ICsgXCI9XCIgKyB2YWx1ZSArIGhhc2g7XG5cdCAgfVxufSxcblxuZ2V0QnJvd3NlUGF0aEFuZENvbGxlY3Rpb25Db2RlRnJvbUhhc2g6ZnVuY3Rpb24oaGFzaCl7XG5cdHZhciBicm93c2VWYWx1ZXMgPSB7fTtcblx0YnJvd3NlVmFsdWVzWydoYXNoJ10gID0gaGFzaCA/IGhhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0YnJvd3NlVmFsdWVzWydocmVmJ10gID0gYnJvd3NlVmFsdWVzWydoYXNoJ10gLnN1YnN0cmluZyhicm93c2VWYWx1ZXNbJ2hhc2gnXS5pbmRleE9mKCcvJykpO1xuXHRicm93c2VWYWx1ZXNbJ3BhdGgnXSA9IGJyb3dzZVZhbHVlc1snaHJlZiddLnN1YnN0cmluZygxKTtcblx0YnJvd3NlVmFsdWVzWydjb2xsZWN0aW9uQ29kZSddID0gKGJyb3dzZVZhbHVlc1sncGF0aCddLmluZGV4T2YoXCIvXCIpID09IC0xKSA/ICBicm93c2VWYWx1ZXNbJ3BhdGgnXS50b0xvd2VyQ2FzZSgpIDogYnJvd3NlVmFsdWVzWydwYXRoJ10uc3Vic3RyKDAsYnJvd3NlVmFsdWVzWydwYXRoJ10uaW5kZXhPZihcIi9cIikpLnRvTG93ZXJDYXNlKCk7XG5cdGJyb3dzZVZhbHVlc1snYnJvd3NlUGF0aCddICA9IGJyb3dzZVZhbHVlc1sncGF0aCddLnN1YnN0cihicm93c2VWYWx1ZXNbJ3BhdGgnXS5pbmRleE9mKFwiL1wiKSArIDEpO1xuXG5cdHJldHVybiAgYnJvd3NlVmFsdWVzO1xuXHR9LFxuXG5cblxucmV0dXJuUmVmaW5lZFVSTDpmdW5jdGlvbiAgKGtleSwgcXVlcnlzdHJpbmcpIHsgICAgICAgXG4gICAgICAgIHZhciBrZXlWYWx1ZXMgPSBxdWVyeXN0cmluZy5zcGxpdCgnJicpLFxuICAgICAgICAvLyBmaWx0ZXJpbmcgdGhhdCBhcnJheTpcbiAgICAgICAgICAgIHJlZmluZWRLZXlWYWx1ZXMgPSBrZXlWYWx1ZXMuZmlsdGVyKGZ1bmN0aW9uIChrZXlWYWx1ZVBhaXIpIHtcbiAgICAgICAgICAgICAgICAvLyBrZWVwaW5nIG9ubHkgdGhvc2UgYXJyYXkgZWxlbWVudHMgdGhhdCBkb24ndCAvc3RhcnQgd2l0aC9cbiAgICAgICAgICAgICAgICAvLyB0aGUga2V5IHRvIGJlIHJlbW92ZWQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleVZhbHVlUGFpci5pbmRleE9mKGtleSkgIT09IDA7XG4gICAgICAgICAgICAvLyBqb2luaW5nIHRoZSBrZXk9dmFsdWUgcGFpcnMgYmFjayBpbnRvIGEgc3RyaW5nOlxuICAgICAgICAgICAgfSkuam9pbignJicpO1xuICAgIC8vIHJldHVybmluZyB0aGUgcmVmaW5lZCBVUkw6XG4gICAgcmV0dXJuICAnJicuY29uY2F0KHJlZmluZWRLZXlWYWx1ZXMpO1xufSxcbi8qZm9ybWF0U3RyaW5nOiBmdW5jdGlvbihzdHJpbmdUb0Zvcm1hdCxhcmd1bWVudHMpIHtcblx0dmFyIGZvcm1hdHRlZFN0cmluZyA9IHN0cmluZ1RvRm9ybWF0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByZWdleHAgPSBuZXcgUmVnRXhwKCdcXFxceycraSsnXFxcXH0nLCAnZ2knKTtcbiAgICAgICAgZm9ybWF0dGVkU3RyaW5nID0gZm9ybWF0dGVkU3RyaW5nLnJlcGxhY2UocmVnZXhwLCBhcmd1bWVudHNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGVkU3RyaW5nO1xufSwqL1xuXG5TdHJpbmdVdGlsc0V4aXN0czpmdW5jdGlvbihlbGVtZW50KSB7XG5cblx0XG5cdFx0XHRpZiAodHlwZW9mIGVsZW1lbnQgPT0gXCJ1bmRlZmluZWRcIilcblx0XHRcdHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmIChlbGVtZW50ID09IFwiTlVMTFwiICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKGVsZW1lbnQgPT0gbnVsbCApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9IFxuXHRcdFx0XG5cdFxufSxcblxuc3Bpbm5lcjogZnVuY3Rpb24gcGFnZUxvYWRpbmdHcmFwaGljKGVsZW1lbnQpIHtcblx0XHRcdCQoZWxlbWVudCkuYWZ0ZXIoXCI8aW1nIHNyYz0nL2Zkc3lzbmV3L2Nzcy9pbWFnZXMvaW1hZ2Vfd29ybXNfYmxhY2suZ2lmJyBhbHQ9J2xvYWRpbmcnIC8+XCIpLmZhZGVJbigpO1xuXHRcdFxuXG59LFxuXG5cblxuc2hvd2FsZXJ0OiBmdW5jdGlvbiAoYWxlcnRkaXYsbWVzc2FnZSxhbGVydHR5cGUsc2Vjb25kcykge1xuXHQkKGFsZXJ0ZGl2KS5hcHBlbmQoJzxkaXYgaWQ9XCJhbGVydGRpdlwiIGNsYXNzPVwiYWxlcnQgJyArICBhbGVydHR5cGUgKyAnXCI+PHNwYW4+JysgbWVzc2FnZSArJzwvc3Bhbj48L2Rpdj4nKVxuXHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyAkKFwiI2FsZXJ0ZGl2XCIpLnJlbW92ZSgpOyB9LCBzZWNvbmRzKTtcbn0sXG5cblxuY29udmVydERhc2hZWVlZTU1ERFRvU2xhc2hNTUREWVlZOiBmdW5jdGlvbiBjb252ZXJ0KGRhdGUpIHtcblx0XHR2YXIgd3JrZGF0ZSA9IGRhdGUuc3BsaXQoXCItXCIpO1xuXHRcdHJldHVybiB3cmtkYXRlWzFdICsgXCIvXCIgKyB3cmtkYXRlWzJdICsgXCIvXCIgKyB3cmtkYXRlWzBdO1xuXHRcbn0sXG5cbmVuZHNXaXRoIDogZnVuY3Rpb24ocGF0dGVybnN0cmluZyxwYXR0ZXJuKSB7XG4gICAgdmFyIGQgPSBwYXR0ZXJuc3RyaW5nLmxlbmd0aCAtIHBhdHRlcm4ubGVuZ3RoO1xuICAgIHJldHVybiBkID49IDAgJiYgcGF0dGVybnN0cmluZy5sYXN0SW5kZXhPZihwYXR0ZXJuKSA9PT0gZDtcbn0sXG5cblx0XG5jb252ZXJ0U2xhc2hNTUREWVlZVG9EYXNoWVlZWU1NREQgOiBmdW5jdGlvbiBjb252ZXJ0KGRhdGUpIHtcblx0XHR2YXIgd3JrZGF0ZSA9IGRhdGUuc3BsaXQoXCIvXCIpO1xuXHRcdHJldHVybiB3cmtkYXRlWzJdICsgXCIvXCIgKyB3cmtkYXRlWzBdICsgXCIvXCIgKyB3cmtkYXRlWzFdO1xuXHRcbn0sXG5cbnN1YnN0cmluZ1NlYXJjaFVSTDpmdW5jdGlvbihxdWVyeVN0cmluZyxwYXJhbU5hbWUpe1xuXHRcdFx0dmFyIHNlYXJjaFVybEFycmF5ID0gcXVlcnlTdHJpbmcuc3BsaXQocGFyYW1OYW1lK1wiPVwiKTtcblx0XHRcdHJldHVybiBzZWFyY2hVcmxBcnJheVsxXTtcbn0sXG5cblxuXG5pc0RldmljZU1vYmlsZTpmdW5jdGlvbigpe1xuIHZhciBpc01vYmlsZSA9IHtcbiAgQW5kcm9pZDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQW5kcm9pZC9pKSAmJiBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9tb2JpbGV8TW9iaWxlL2kpO1xuICB9LFxuICBCbGFja0JlcnJ5OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9CbGFja0JlcnJ5L2kpfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQkIxMDsgVG91Y2gvKTtcbiAgfSxcbiAgaU9TOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmV8aVBvZC9pKTtcbiAgfSxcbiAgT3BlcmE6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL09wZXJhIE1pbmkvaSk7XG4gIH0sXG4gIFdpbmRvd3M6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0lFTW9iaWxlL2kpIHx8IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL3dlYk9TL2kpIDtcbiAgfSxcbiAgYW55OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAoaXNNb2JpbGUuQW5kcm9pZCgpIHx8IGlzTW9iaWxlLkJsYWNrQmVycnkoKSB8fCBpc01vYmlsZS5pT1MoKSB8fCBpc01vYmlsZS5PcGVyYSgpIHx8IGlzTW9iaWxlLldpbmRvd3MoKSk7XG4gIH1cbn07ICAgICAgXG4gcmV0dXJuIGlzTW9iaWxlLmFueSgpO1xufVxuXG5cblxuXG5cblxufSk7XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=