diff options
author | 2018-06-26 15:08:49 -0400 | |
---|---|---|
committer | 2018-06-26 15:08:49 -0400 | |
commit | e5bd8bbd8543ec00ae88d433721b4051174235da (patch) | |
tree | 2014d7388d44a2205fc098257055411e07f1023a | |
parent | Merge remote-tracking branch 'origin/master' (diff) |
[Jams/Teams] Show pushes creating new branches in GitLab activity
-rw-r--r-- | static/js/script.js | 4 | ||||
-rw-r--r-- | templates/main/jams/team_view.html | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/static/js/script.js b/static/js/script.js index b2fd1499..c5508765 100644 --- a/static/js/script.js +++ b/static/js/script.js @@ -1,2 +1,2 @@ -"use strict";function getScript(url,integrity,cross_origin){const script=document.createElement("script");script.type="text/javascript",script.src=url,script.defer=!0,void 0!==integrity&&(script.integrity=integrity),void 0!==cross_origin&&(script.crossOrigin=cross_origin),document.getElementsByTagName("head")[0].appendChild(script)}function setClass(selector,my_class){document.querySelector(selector).className=my_class}function removeClass(selector,my_class){const element=document.querySelector(selector),reg=new RegExp(`(^| )${my_class}($| )`,"g");element.className=element.className.replace(reg," ")}function error_typewriter(){const app=document.getElementById("error"),typewriter=new Typewriter(app,{loop:!1,deleteSpeed:40,typingSpeed:"natural",devMode:!1});document.getElementById("terminal-close").onclick=function(){const app=document.getElementById("win"),current_class=app.getAttribute("class");app.setAttribute("class",`${current_class} uk-animation-scale-up uk-animation-reverse`),typewriter.stop()},typewriter.appendText("Python 3.6.4 (default, Jan 5 2018, 02:35:40)\n").appendText("[GCC 7.2.1 20171224] on darwin\n").appendText('Type "help", "copyright", "credits" or "license" for more information.\n').appendText(">>> ").pauseFor(1e3).typeString("impor requests").deleteChars(9).typeString("t requests\n").appendText(">>> ").pauseFor(750).changeSettings({typingSpeed:"natural"}).typeString(`response = requests.${window._RequestMethod}('https://pythim`).deleteChars(2).typeString("ondiscord.con/").deleteChars(2).typeString(`m${window._Path}')\n`).pauseFor(1e3).appendText(`<Response [${window._Code}]>\n>>> `).typeString("# hmmmm").pauseFor(1e3).deleteChars(7).pauseFor(1e3).typeString("response.text\n").appendText(`${window._ErrorMsg}\n>>> `).start()}setClass("html","prevent-fouc"),document.onreadystatechange=function(){"interactive"===document.readyState&&(removeClass("html","prevent-fouc"),getScript("https://pro.fontawesome.com/releases/v5.1.0/js/all.js","sha384-E5SpgaZcbSJx0Iabb3Jr2AfTRiFnrdOw1mhO19DzzrT9L+wCpDyHUG2q07aQdO6E","anonymous"),getScript("https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js"),getScript("https://cdn.jsdelivr.net/npm/flatpickr"))},function(){const startjam=new Date(Date.UTC(2018,2,23)),endjam=new Date(Date.UTC(2018,2,26)),now=Date.now();let goal;if(now+1e3<endjam.getTime()){UIkit.notification({message:'<div class=\'uk-text-center\'> <span id="countdown-title" class="uk-text-center"> <a href="/info/jams">Code Jam</a> Countdown </span> <p class=\'uk-text-large\' id="countdown-remaining">...</p><small style=\'font-size: 0.6em;\'>(Tap/click to dismiss)</small></div>',pos:"bottom-right",timeout:endjam-now});const heading=document.getElementById("countdown-title");now>startjam.getTime()?(heading.innerHTML='Current <a href="/info/jams">code jam</a> ends in...',goal=endjam.getTime()):(heading.innerHTML='Next <a href="/info/jams">code jam</a> starts in...',goal=startjam.getTime());const refreshCountdown=setInterval(()=>{let delta=goal-Date.now();if(delta<=1e3)return clearInterval(refreshCountdown),location.reload();let days=Math.floor(delta/864e5);delta-=864e5*days;let hours=Math.floor(delta/36e5);delta-=36e5*hours;let minutes=Math.floor(delta/6e4);delta-=6e4*minutes;let seconds=Math.floor(delta/1e3);days<10&&(days=`0${days}`),hours<10&&(hours=`0${hours}`),minutes<10&&(minutes=`0${minutes}`),seconds<10&&(seconds=`0${seconds}`);try{document.getElementById("countdown-remaining").innerHTML=`${days}:${hours}:${minutes}:${seconds}`}catch(e){return clearInterval(refreshCountdown)}},500)}}();class JamActions{constructor(url,csrf_token){this.url=url,this.csrf_token=csrf_token}send(action,method,data,callback){data.action=action,$.ajax(this.url,{data:data,dataType:"json",headers:{"X-CSRFToken":this.csrf_token},method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}send_json(action,method,data,callback){data.action=action,$.ajax(this.url,{data:JSON.stringify(data),dataType:"json",headers:{"X-CSRFToken":this.csrf_token},contentType:"application/json",method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}set_state(jam,state,callback){this.send("state","POST",{jam:jam,state:state},callback)}get_questions(callback){this.send("questions","GET",{},callback)}create_question(data,callback){this.send_json("questions","POST",data,callback)}delete_question(id,callback){this.send("question","DELETE",{id:id},callback)}associate_question(form,question,callback){this.send("associate_question","POST",{form:form,question:question},callback)}disassociate_question(form,question,callback){this.send("disassociate_question","POST",{form:form,question:question},callback)}create_infraction(id,reason,number,callback){this.send("infraction","POST",{participant:id,reason:reason,number:number},callback)}delete_infraction(id,callback){this.send("infraction","DELETE",{id:id},callback)}approve_application(id,callback){this.send("approve_application","POST",{id:id},callback)}unapprove_application(id,callback){this.send("unapprove_application","POST",{id:id},callback)}generate_teams(jam,callback){this.send("generate_teams","POST",{jam:jam},callback)}create_team(jam,callback){this.send("create_team","POST",{jam:jam},callback)}reroll_team(team,callback){this.send("reroll_team","POST",{team:team},callback)}delete_team(team,callback){this.send("team","DELETE",{team:team},callback)}set_team_member(jam,member,team,callback){this.send("set_team_member","POST",{jam:jam,member:member,team:team},callback)}}function revision_diff(revisions){const buttons=document.querySelectorAll("td input"),id_reg=/compare-(before|after)-([\w|-]+)/;function getRevisionId(element){const e=element.id.match(id_reg);return[e[1],e[2]]}function getRevision(id){return revisions.filter(x=>x.id===id)[0]}buttons.forEach(button=>{button.checked=!1,button.onchange=function(){!function(element){const id=getRevisionId(element),rev=getRevision(id[1]);let aft,bef;"after"===id[0]?(document.querySelector(`#compare-before-${id[1]}`).checked=!1,buttons.forEach(e=>{"after"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1)})):(document.querySelector(`#compare-after-${id[1]}`).checked=!1,buttons.forEach(e=>{"before"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1),"after"===getRevisionId(e)[0]&&(getRevision(getRevisionId(e)[1]).date<=rev.date?document.querySelector(`#${e.id}`).setAttribute("disabled",""):document.querySelector(`#${e.id}`).removeAttribute("disabled"))})),buttons.forEach(button=>{const id=getRevisionId(button);button.checked&&"before"===id[0]&&(bef=id[1]),button.checked&&"after"===id[0]&&(aft=id[1])}),document.getElementById("compare-submit").href=`/history/compare/${bef}/${aft}`}(button)}})}function wiki_sidebar(){const sidebar=document.getElementById("wiki-sidebar");document.getElementById("wiki-sidebar-button").onclick=function(){sidebar.classList.contains("uk-visible@s")?sidebar.classList.remove("uk-visible@s"):sidebar.classList.add("uk-visible@s")}}!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.moment=factory()}(this,function(){var hookCallback,some;function hooks(){return hookCallback.apply(null,arguments)}function isArray(input){return input instanceof Array||"[object Array]"===Object.prototype.toString.call(input)}function isObject(input){return null!=input&&"[object Object]"===Object.prototype.toString.call(input)}function isUndefined(input){return void 0===input}function isNumber(input){return"number"==typeof input||"[object Number]"===Object.prototype.toString.call(input)}function isDate(input){return input instanceof Date||"[object Date]"===Object.prototype.toString.call(input)}function map(arr,fn){var i,res=[];for(i=0;i<arr.length;++i)res.push(fn(arr[i],i));return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b)hasOwnProp(b,i)&&(a[i]=b[i]);return hasOwnProp(b,"toString")&&(a.toString=b.toString),hasOwnProp(b,"valueOf")&&(a.valueOf=b.valueOf),a}function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!0).utc()}function getParsingFlags(m){return null==m._pf&&(m._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),m._pf}function isValid(m){if(null==m._isValid){var flags=getParsingFlags(m),parsedParts=some.call(flags.parsedDateParts,function(i){return null!=i}),isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||flags.meridiem&&parsedParts);if(m._strict&&(isNowValid=isNowValid&&0===flags.charsLeftOver&&0===flags.unusedTokens.length&&void 0===flags.bigHour),null!=Object.isFrozen&&Object.isFrozen(m))return isNowValid;m._isValid=isNowValid}return m._isValid}function createInvalid(flags){var m=createUTC(NaN);return null!=flags?extend(getParsingFlags(m),flags):getParsingFlags(m).userInvalidated=!0,m}some=Array.prototype.some?Array.prototype.some:function(fun){for(var t=Object(this),len=t.length>>>0,i=0;i<len;i++)if(i in t&&fun.call(this,t[i],i,t))return!0;return!1};var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(isUndefined(from._isAMomentObject)||(to._isAMomentObject=from._isAMomentObject),isUndefined(from._i)||(to._i=from._i),isUndefined(from._f)||(to._f=from._f),isUndefined(from._l)||(to._l=from._l),isUndefined(from._strict)||(to._strict=from._strict),isUndefined(from._tzm)||(to._tzm=from._tzm),isUndefined(from._isUTC)||(to._isUTC=from._isUTC),isUndefined(from._offset)||(to._offset=from._offset),isUndefined(from._pf)||(to._pf=getParsingFlags(from)),isUndefined(from._locale)||(to._locale=from._locale),momentProperties.length>0)for(i=0;i<momentProperties.length;i++)isUndefined(val=from[prop=momentProperties[i]])||(to[prop]=val);return to}var updateInProgress=!1;function Moment(config){copyConfig(this,config),this._d=new Date(null!=config._d?config._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===updateInProgress&&(updateInProgress=!0,hooks.updateOffset(this),updateInProgress=!1)}function isMoment(obj){return obj instanceof Moment||null!=obj&&null!=obj._isAMomentObject}function absFloor(number){return number<0?Math.ceil(number)||0:Math.floor(number)}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;return 0!==coercedNumber&&isFinite(coercedNumber)&&(value=absFloor(coercedNumber)),value}function compareArrays(array1,array2,dontConvert){var i,len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0;for(i=0;i<len;i++)(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i]))&&diffs++;return diffs+lengthDiff}function warn(msg){!1===hooks.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+msg)}function deprecate(msg,fn){var firstTime=!0;return extend(function(){if(null!=hooks.deprecationHandler&&hooks.deprecationHandler(null,msg),firstTime){for(var arg,args=[],i=0;i<arguments.length;i++){if(arg="","object"==typeof arguments[i]){for(var key in arg+="\n["+i+"] ",arguments[0])arg+=key+": "+arguments[0][key]+", ";arg=arg.slice(0,-2)}else arg=arguments[i];args.push(arg)}warn(msg+"\nArguments: "+Array.prototype.slice.call(args).join("")+"\n"+(new Error).stack),firstTime=!1}return fn.apply(this,arguments)},fn)}var keys,deprecations={};function deprecateSimple(name,msg){null!=hooks.deprecationHandler&&hooks.deprecationHandler(name,msg),deprecations[name]||(warn(msg),deprecations[name]=!0)}function isFunction(input){return input instanceof Function||"[object Function]"===Object.prototype.toString.call(input)}function mergeConfigs(parentConfig,childConfig){var prop,res=extend({},parentConfig);for(prop in childConfig)hasOwnProp(childConfig,prop)&&(isObject(parentConfig[prop])&&isObject(childConfig[prop])?(res[prop]={},extend(res[prop],parentConfig[prop]),extend(res[prop],childConfig[prop])):null!=childConfig[prop]?res[prop]=childConfig[prop]:delete res[prop]);for(prop in parentConfig)hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])&&(res[prop]=extend({},res[prop]));return res}function Locale(config){null!=config&&this.set(config)}hooks.suppressDeprecationWarnings=!1,hooks.deprecationHandler=null,keys=Object.keys?Object.keys:function(obj){var i,res=[];for(i in obj)hasOwnProp(obj,i)&&res.push(i);return res};var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+"s"]=aliases[shorthand]=unit}function normalizeUnits(units){return"string"==typeof units?aliases[units]||aliases[units.toLowerCase()]:void 0}function normalizeObjectUnits(inputObject){var normalizedProp,prop,normalizedInput={};for(prop in inputObject)hasOwnProp(inputObject,prop)&&(normalizedProp=normalizeUnits(prop))&&(normalizedInput[normalizedProp]=inputObject[prop]);return normalizedInput}var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority}function zeroFill(number,targetLength,forceSign){var absNumber=""+Math.abs(number),zerosToFill=targetLength-absNumber.length;return(number>=0?forceSign?"+":"":"-")+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber}var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,formatFunctions={},formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;"string"==typeof callback&&(func=function(){return this[callback]()}),token&&(formatTokenFunctions[token]=func),padded&&(formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}),ordinal&&(formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)})}function formatMoment(m,format){return m.isValid()?(format=expandFormat(format,m.localeData()),formatFunctions[format]=formatFunctions[format]||function(format){var i,length,input,array=format.match(formattingTokens);for(i=0,length=array.length;i<length;i++)formatTokenFunctions[array[i]]?array[i]=formatTokenFunctions[array[i]]:array[i]=(input=array[i]).match(/\[[\s\S]/)?input.replace(/^\[|\]$/g,""):input.replace(/\\/g,"");return function(mom){var i,output="";for(i=0;i<length;i++)output+=isFunction(array[i])?array[i].call(mom,format):array[i];return output}}(format),formatFunctions[format](m)):m.localeData().invalidDate()}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}for(localFormattingTokens.lastIndex=0;i>=0&&localFormattingTokens.test(format);)format=format.replace(localFormattingTokens,replaceLongDateFormatTokens),localFormattingTokens.lastIndex=0,i-=1;return format}var match1=/\d/,match2=/\d\d/,match3=/\d{3}/,match4=/\d{4}/,match6=/[+-]?\d{6}/,match1to2=/\d\d?/,match3to4=/\d\d\d\d?/,match5to6=/\d\d\d\d\d\d?/,match1to3=/\d{1,3}/,match1to4=/\d{1,4}/,match1to6=/[+-]?\d{1,6}/,matchUnsigned=/\d+/,matchSigned=/[+-]?\d+/,matchOffset=/Z|[+-]\d\d:?\d\d/gi,matchShortOffset=/Z|[+-]\d\d(?::?\d\d)?/gi,matchWord=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){return hasOwnProp(regexes,token)?regexes[token](config._strict,config._locale):new RegExp(regexEscape(token.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4})))}function regexEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var tokens={};function addParseToken(token,callback){var i,func=callback;for("string"==typeof token&&(token=[token]),isNumber(callback)&&(func=function(input,array){array[callback]=toInt(input)}),i=0;i<token.length;i++)tokens[token[i]]=func}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{},callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){null!=input&&hasOwnProp(tokens,token)&&tokens[token](input,config._a,config,token)}var YEAR=0,MONTH=1,DATE=2,HOUR=3,MINUTE=4,SECOND=5,MILLISECOND=6,WEEK=7,WEEKDAY=8;function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4==0&&year%100!=0||year%400==0}addFormatToken("Y",0,0,function(){var y=this.year();return y<=9999?""+y:"+"+y}),addFormatToken(0,["YY",2],0,function(){return this.year()%100}),addFormatToken(0,["YYYY",4],0,"year"),addFormatToken(0,["YYYYY",5],0,"year"),addFormatToken(0,["YYYYYY",6,!0],0,"year"),addUnitAlias("year","y"),addUnitPriority("year",1),addRegexToken("Y",matchSigned),addRegexToken("YY",match1to2,match2),addRegexToken("YYYY",match1to4,match4),addRegexToken("YYYYY",match1to6,match6),addRegexToken("YYYYYY",match1to6,match6),addParseToken(["YYYYY","YYYYYY"],YEAR),addParseToken("YYYY",function(input,array){array[YEAR]=2===input.length?hooks.parseTwoDigitYear(input):toInt(input)}),addParseToken("YY",function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input)}),addParseToken("Y",function(input,array){array[YEAR]=parseInt(input,10)}),hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var indexOf,getSetYear=makeGetSet("FullYear",!0);function makeGetSet(unit,keepTime){return function(value){return null!=value?(set$1(this,unit,value),hooks.updateOffset(this,keepTime),this):get(this,unit)}}function get(mom,unit){return mom.isValid()?mom._d["get"+(mom._isUTC?"UTC":"")+unit]():NaN}function set$1(mom,unit,value){mom.isValid()&&!isNaN(value)&&("FullYear"===unit&&isLeapYear(mom.year())&&1===mom.month()&&29===mom.date()?mom._d["set"+(mom._isUTC?"UTC":"")+unit](value,mom.month(),daysInMonth(value,mom.month())):mom._d["set"+(mom._isUTC?"UTC":"")+unit](value))}function daysInMonth(year,month){if(isNaN(year)||isNaN(month))return NaN;var x,modMonth=(month%(x=12)+x)%x;return year+=(month-modMonth)/12,1===modMonth?isLeapYear(year)?29:28:31-modMonth%7%2}indexOf=Array.prototype.indexOf?Array.prototype.indexOf:function(o){var i;for(i=0;i<this.length;++i)if(this[i]===o)return i;return-1},addFormatToken("M",["MM",2],"Mo",function(){return this.month()+1}),addFormatToken("MMM",0,0,function(format){return this.localeData().monthsShort(this,format)}),addFormatToken("MMMM",0,0,function(format){return this.localeData().months(this,format)}),addUnitAlias("month","M"),addUnitPriority("month",8),addRegexToken("M",match1to2),addRegexToken("MM",match1to2,match2),addRegexToken("MMM",function(isStrict,locale){return locale.monthsShortRegex(isStrict)}),addRegexToken("MMMM",function(isStrict,locale){return locale.monthsRegex(isStrict)}),addParseToken(["M","MM"],function(input,array){array[MONTH]=toInt(input)-1}),addParseToken(["MMM","MMMM"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);null!=month?array[MONTH]=month:getParsingFlags(config).invalidMonth=input});var MONTHS_IN_FORMAT=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,defaultLocaleMonths="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var defaultLocaleMonthsShort="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function setMonth(mom,value){var dayOfMonth;if(!mom.isValid())return mom;if("string"==typeof value)if(/^\d+$/.test(value))value=toInt(value);else if(!isNumber(value=mom.localeData().monthsParse(value)))return mom;return dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value)),mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth),mom}function getSetMonth(value){return null!=value?(setMonth(this,value),hooks.updateOffset(this,!0),this):get(this,"Month")}var defaultMonthsShortRegex=matchWord;var defaultMonthsRegex=matchWord;function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<12;i++)mom=createUTC([2e3,i]),shortPieces.push(this.monthsShort(mom,"")),longPieces.push(this.months(mom,"")),mixedPieces.push(this.months(mom,"")),mixedPieces.push(this.monthsShort(mom,""));for(shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<12;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]);for(i=0;i<24;i++)mixedPieces[i]=regexEscape(mixedPieces[i]);this._monthsRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i")}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));return y<100&&y>=0&&isFinite(date.getUTCFullYear())&&date.setUTCFullYear(y),date}function firstWeekOffset(year,dow,doy){var fwd=7+dow-doy;return-((7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7)+fwd-1}function dayOfYearFromWeeks(year,week,weekday,dow,doy){var resYear,resDayOfYear,dayOfYear=1+7*(week-1)+(7+weekday-dow)%7+firstWeekOffset(year,dow,doy);return dayOfYear<=0?resDayOfYear=daysInYear(resYear=year-1)+dayOfYear:dayOfYear>daysInYear(year)?(resYear=year+1,resDayOfYear=dayOfYear-daysInYear(year)):(resYear=year,resDayOfYear=dayOfYear),{year:resYear,dayOfYear:resDayOfYear}}function weekOfYear(mom,dow,doy){var resWeek,resYear,weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1;return week<1?resWeek=week+weeksInYear(resYear=mom.year()-1,dow,doy):week>weeksInYear(mom.year(),dow,doy)?(resWeek=week-weeksInYear(mom.year(),dow,doy),resYear=mom.year()+1):(resYear=mom.year(),resWeek=week),{week:resWeek,year:resYear}}function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7}addFormatToken("w",["ww",2],"wo","week"),addFormatToken("W",["WW",2],"Wo","isoWeek"),addUnitAlias("week","w"),addUnitAlias("isoWeek","W"),addUnitPriority("week",5),addUnitPriority("isoWeek",5),addRegexToken("w",match1to2),addRegexToken("ww",match1to2,match2),addRegexToken("W",match1to2),addRegexToken("WW",match1to2,match2),addWeekParseToken(["w","ww","W","WW"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});addFormatToken("d",0,"do","day"),addFormatToken("dd",0,0,function(format){return this.localeData().weekdaysMin(this,format)}),addFormatToken("ddd",0,0,function(format){return this.localeData().weekdaysShort(this,format)}),addFormatToken("dddd",0,0,function(format){return this.localeData().weekdays(this,format)}),addFormatToken("e",0,0,"weekday"),addFormatToken("E",0,0,"isoWeekday"),addUnitAlias("day","d"),addUnitAlias("weekday","e"),addUnitAlias("isoWeekday","E"),addUnitPriority("day",11),addUnitPriority("weekday",11),addUnitPriority("isoWeekday",11),addRegexToken("d",match1to2),addRegexToken("e",match1to2),addRegexToken("E",match1to2),addRegexToken("dd",function(isStrict,locale){return locale.weekdaysMinRegex(isStrict)}),addRegexToken("ddd",function(isStrict,locale){return locale.weekdaysShortRegex(isStrict)}),addRegexToken("dddd",function(isStrict,locale){return locale.weekdaysRegex(isStrict)}),addWeekParseToken(["dd","ddd","dddd"],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);null!=weekday?week.d=weekday:getParsingFlags(config).invalidWeekday=input}),addWeekParseToken(["d","e","E"],function(input,week,config,token){week[token]=toInt(input)});var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var defaultWeekdaysRegex=matchWord;var defaultWeekdaysShortRegex=matchWord;var defaultWeekdaysMinRegex=matchWord;function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,minp,shortp,longp,minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<7;i++)mom=createUTC([2e3,1]).day(i),minp=this.weekdaysMin(mom,""),shortp=this.weekdaysShort(mom,""),longp=this.weekdays(mom,""),minPieces.push(minp),shortPieces.push(shortp),longPieces.push(longp),mixedPieces.push(minp),mixedPieces.push(shortp),mixedPieces.push(longp);for(minPieces.sort(cmpLenRev),shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<7;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]),mixedPieces[i]=regexEscape(mixedPieces[i]);this._weekdaysRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+minPieces.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}function matchMeridiem(isStrict,locale){return locale._meridiemParse}addFormatToken("H",["HH",2],0,"hour"),addFormatToken("h",["hh",2],0,hFormat),addFormatToken("k",["kk",2],0,function(){return this.hours()||24}),addFormatToken("hmm",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)}),addFormatToken("hmmss",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),addFormatToken("Hmm",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)}),addFormatToken("Hmmss",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),meridiem("a",!0),meridiem("A",!1),addUnitAlias("hour","h"),addUnitPriority("hour",13),addRegexToken("a",matchMeridiem),addRegexToken("A",matchMeridiem),addRegexToken("H",match1to2),addRegexToken("h",match1to2),addRegexToken("k",match1to2),addRegexToken("HH",match1to2,match2),addRegexToken("hh",match1to2,match2),addRegexToken("kk",match1to2,match2),addRegexToken("hmm",match3to4),addRegexToken("hmmss",match5to6),addRegexToken("Hmm",match3to4),addRegexToken("Hmmss",match5to6),addParseToken(["H","HH"],HOUR),addParseToken(["k","kk"],function(input,array,config){var kInput=toInt(input);array[HOUR]=24===kInput?0:kInput}),addParseToken(["a","A"],function(input,array,config){config._isPm=config._locale.isPM(input),config._meridiem=input}),addParseToken(["h","hh"],function(input,array,config){array[HOUR]=toInt(input),getParsingFlags(config).bigHour=!0}),addParseToken("hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos)),getParsingFlags(config).bigHour=!0}),addParseToken("hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2)),getParsingFlags(config).bigHour=!0}),addParseToken("Hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos))}),addParseToken("Hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2))});var globalLocale,getSetHour=makeGetSet("Hours",!0),baseConfig={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:{dow:0,doy:6},weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:/[ap]\.?m?\.?/i},locales={},localeFamilies={};function normalizeLocale(key){return key?key.toLowerCase().replace("_","-"):key}function loadLocale(name){var oldLocale=null;if(!locales[name]&&"undefined"!=typeof module&&module&&module.exports)try{oldLocale=globalLocale._abbr,require("./locale/"+name),getSetGlobalLocale(oldLocale)}catch(e){}return locales[name]}function getSetGlobalLocale(key,values){var data;return key&&((data=isUndefined(values)?getLocale(key):defineLocale(key,values))?globalLocale=data:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+key+" not found. Did you forget to load it?")),globalLocale._abbr}function defineLocale(name,config){if(null!==config){var locale,parentConfig=baseConfig;if(config.abbr=name,null!=locales[name])deprecateSimple("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),parentConfig=locales[name]._config;else if(null!=config.parentLocale)if(null!=locales[config.parentLocale])parentConfig=locales[config.parentLocale]._config;else{if(null==(locale=loadLocale(config.parentLocale)))return localeFamilies[config.parentLocale]||(localeFamilies[config.parentLocale]=[]),localeFamilies[config.parentLocale].push({name:name,config:config}),null;parentConfig=locale._config}return locales[name]=new Locale(mergeConfigs(parentConfig,config)),localeFamilies[name]&&localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config)}),getSetGlobalLocale(name),locales[name]}return delete locales[name],null}function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr&&(key=key._locale._abbr),!key)return globalLocale;if(!isArray(key)){if(locale=loadLocale(key))return locale;key=[key]}return function(names){for(var j,next,locale,split,i=0;i<names.length;){for(j=(split=normalizeLocale(names[i]).split("-")).length,next=(next=normalizeLocale(names[i+1]))?next.split("-"):null;j>0;){if(locale=loadLocale(split.slice(0,j).join("-")))return locale;if(next&&next.length>=j&&compareArrays(split,next,!0)>=j-1)break;j--}i++}return globalLocale}(key)}function checkOverflow(m){var overflow,a=m._a;return a&&-2===getParsingFlags(m).overflow&&(overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||24===a[HOUR]&&(0!==a[MINUTE]||0!==a[SECOND]||0!==a[MILLISECOND])?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1,getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)&&(overflow=DATE),getParsingFlags(m)._overflowWeeks&&-1===overflow&&(overflow=WEEK),getParsingFlags(m)._overflowWeekday&&-1===overflow&&(overflow=WEEKDAY),getParsingFlags(m).overflow=overflow),m}function defaults(a,b,c){return null!=a?a:null!=b?b:c}function configFromArray(config){var i,date,currentDate,expectedWeekday,yearToUse,input=[];if(!config._d){for(currentDate=function(config){var nowValue=new Date(hooks.now());return config._useUTC?[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()]:[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()]}(config),config._w&&null==config._a[DATE]&&null==config._a[MONTH]&&function(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;if(null!=(w=config._w).GG||null!=w.W||null!=w.E)dow=1,doy=4,weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year),week=defaults(w.W,1),((weekday=defaults(w.E,1))<1||weekday>7)&&(weekdayOverflow=!0);else{dow=config._locale._week.dow,doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year),week=defaults(w.w,curWeek.week),null!=w.d?((weekday=w.d)<0||weekday>6)&&(weekdayOverflow=!0):null!=w.e?(weekday=w.e+dow,(w.e<0||w.e>6)&&(weekdayOverflow=!0)):weekday=dow}week<1||week>weeksInYear(weekYear,dow,doy)?getParsingFlags(config)._overflowWeeks=!0:null!=weekdayOverflow?getParsingFlags(config)._overflowWeekday=!0:(temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),config._a[YEAR]=temp.year,config._dayOfYear=temp.dayOfYear)}(config),null!=config._dayOfYear&&(yearToUse=defaults(config._a[YEAR],currentDate[YEAR]),(config._dayOfYear>daysInYear(yearToUse)||0===config._dayOfYear)&&(getParsingFlags(config)._overflowDayOfYear=!0),date=createUTCDate(yearToUse,0,config._dayOfYear),config._a[MONTH]=date.getUTCMonth(),config._a[DATE]=date.getUTCDate()),i=0;i<3&&null==config._a[i];++i)config._a[i]=input[i]=currentDate[i];for(;i<7;i++)config._a[i]=input[i]=null==config._a[i]?2===i?1:0:config._a[i];24===config._a[HOUR]&&0===config._a[MINUTE]&&0===config._a[SECOND]&&0===config._a[MILLISECOND]&&(config._nextDay=!0,config._a[HOUR]=0),config._d=(config._useUTC?createUTCDate:function(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);return y<100&&y>=0&&isFinite(date.getFullYear())&&date.setFullYear(y),date}).apply(null,input),expectedWeekday=config._useUTC?config._d.getUTCDay():config._d.getDay(),null!=config._tzm&&config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),config._nextDay&&(config._a[HOUR]=24),config._w&&void 0!==config._w.d&&config._w.d!==expectedWeekday&&(getParsingFlags(config).weekdayMismatch=!0)}}var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tzRegex=/Z|[+-]\d\d(?::?\d\d)?/,isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],isoTimes=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,allowTime,dateFormat,timeFormat,tzFormat,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string);if(match){for(getParsingFlags(config).iso=!0,i=0,l=isoDates.length;i<l;i++)if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0],allowTime=!1!==isoDates[i][2];break}if(null==dateFormat)return void(config._isValid=!1);if(match[3]){for(i=0,l=isoTimes.length;i<l;i++)if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||" ")+isoTimes[i][0];break}if(null==timeFormat)return void(config._isValid=!1)}if(!allowTime&&null!=timeFormat)return void(config._isValid=!1);if(match[4]){if(!tzRegex.exec(match[4]))return void(config._isValid=!1);tzFormat="Z"}config._f=dateFormat+(timeFormat||"")+(tzFormat||""),configFromStringAndFormat(config)}else config._isValid=!1}var rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[function(yearStr){var year=parseInt(yearStr,10);if(year<=49)return 2e3+year;if(year<=999)return 1900+year;return year}(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];return secondStr&&result.push(parseInt(secondStr,10)),result}var obsOffsets={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function configFromRFC2822(config){var match=rfc2822.exec(config._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!function(weekdayStr,parsedInput,config){return!weekdayStr||defaultLocaleWeekdaysShort.indexOf(weekdayStr)===new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay()||(getParsingFlags(config).weekdayMismatch=!0,config._isValid=!1,!1)}(match[1],parsedArray,config))return;config._a=parsedArray,config._tzm=function(obsOffset,militaryOffset,numOffset){if(obsOffset)return obsOffsets[obsOffset];if(militaryOffset)return 0;var hm=parseInt(numOffset,10),m=hm%100;return(hm-m)/100*60+m}(match[8],match[9],match[10]),config._d=createUTCDate.apply(null,config._a),config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),getParsingFlags(config).rfc2822=!0}else config._isValid=!1}function configFromStringAndFormat(config){if(config._f!==hooks.ISO_8601)if(config._f!==hooks.RFC_2822){config._a=[],getParsingFlags(config).empty=!0;var i,parsedInput,tokens,token,skipped,string=""+config._i,stringLength=string.length,totalParsedInputLength=0;for(tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[],i=0;i<tokens.length;i++)token=tokens[i],(parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0])&&((skipped=string.substr(0,string.indexOf(parsedInput))).length>0&&getParsingFlags(config).unusedInput.push(skipped),string=string.slice(string.indexOf(parsedInput)+parsedInput.length),totalParsedInputLength+=parsedInput.length),formatTokenFunctions[token]?(parsedInput?getParsingFlags(config).empty=!1:getParsingFlags(config).unusedTokens.push(token),addTimeToArrayFromToken(token,parsedInput,config)):config._strict&&!parsedInput&&getParsingFlags(config).unusedTokens.push(token);getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength,string.length>0&&getParsingFlags(config).unusedInput.push(string),config._a[HOUR]<=12&&!0===getParsingFlags(config).bigHour&&config._a[HOUR]>0&&(getParsingFlags(config).bigHour=void 0),getParsingFlags(config).parsedDateParts=config._a.slice(0),getParsingFlags(config).meridiem=config._meridiem,config._a[HOUR]=function(locale,hour,meridiem){var isPm;if(null==meridiem)return hour;return null!=locale.meridiemHour?locale.meridiemHour(hour,meridiem):null!=locale.isPM?((isPm=locale.isPM(meridiem))&&hour<12&&(hour+=12),isPm||12!==hour||(hour=0),hour):hour}(config._locale,config._a[HOUR],config._meridiem),configFromArray(config),checkOverflow(config)}else configFromRFC2822(config);else configFromISO(config)}function prepareConfig(config){var input=config._i,format=config._f;return config._locale=config._locale||getLocale(config._l),null===input||void 0===format&&""===input?createInvalid({nullInput:!0}):("string"==typeof input&&(config._i=input=config._locale.preparse(input)),isMoment(input)?new Moment(checkOverflow(input)):(isDate(input)?config._d=input:isArray(format)?function(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(0===config._f.length)return getParsingFlags(config).invalidFormat=!0,void(config._d=new Date(NaN));for(i=0;i<config._f.length;i++)currentScore=0,tempConfig=copyConfig({},config),null!=config._useUTC&&(tempConfig._useUTC=config._useUTC),tempConfig._f=config._f[i],configFromStringAndFormat(tempConfig),isValid(tempConfig)&&(currentScore+=getParsingFlags(tempConfig).charsLeftOver,currentScore+=10*getParsingFlags(tempConfig).unusedTokens.length,getParsingFlags(tempConfig).score=currentScore,(null==scoreToBeat||currentScore<scoreToBeat)&&(scoreToBeat=currentScore,bestMoment=tempConfig));extend(config,bestMoment||tempConfig)}(config):format?configFromStringAndFormat(config):function(config){var input=config._i;isUndefined(input)?config._d=new Date(hooks.now()):isDate(input)?config._d=new Date(input.valueOf()):"string"==typeof input?function(config){var matched=aspNetJsonRegex.exec(config._i);null===matched?(configFromISO(config),!1===config._isValid&&(delete config._isValid,configFromRFC2822(config),!1===config._isValid&&(delete config._isValid,hooks.createFromInputFallback(config)))):config._d=new Date(+matched[1])}(config):isArray(input)?(config._a=map(input.slice(0),function(obj){return parseInt(obj,10)}),configFromArray(config)):isObject(input)?function(config){if(!config._d){var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10)}),configFromArray(config)}}(config):isNumber(input)?config._d=new Date(input):hooks.createFromInputFallback(config)}(config),isValid(config)||(config._d=null),config))}function createLocalOrUTC(input,format,locale,strict,isUTC){var res,c={};return!0!==locale&&!1!==locale||(strict=locale,locale=void 0),(isObject(input)&&function(obj){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(obj).length;var k;for(k in obj)if(obj.hasOwnProperty(k))return!1;return!0}(input)||isArray(input)&&0===input.length)&&(input=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=isUTC,c._l=locale,c._i=input,c._f=format,c._strict=strict,(res=new Moment(checkOverflow(prepareConfig(c))))._nextDay&&(res.add(1,"d"),res._nextDay=void 0),res}function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!1)}hooks.createFromInputFallback=deprecate("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(config){config._d=new Date(config._i+(config._useUTC?" UTC":""))}),hooks.ISO_8601=function(){},hooks.RFC_2822=function(){};var prototypeMin=deprecate("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other<this?this:other:createInvalid()}),prototypeMax=deprecate("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other>this?this:other:createInvalid()});function pickBy(fn,moments){var res,i;if(1===moments.length&&isArray(moments[0])&&(moments=moments[0]),!moments.length)return createLocal();for(res=moments[0],i=1;i<moments.length;++i)moments[i].isValid()&&!moments[i][fn](res)||(res=moments[i]);return res}var ordering=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=function(m){for(var key in m)if(-1===indexOf.call(ordering,key)||null!=m[key]&&isNaN(m[key]))return!1;for(var unitHasDecimal=!1,i=0;i<ordering.length;++i)if(m[ordering[i]]){if(unitHasDecimal)return!1;parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])&&(unitHasDecimal=!0)}return!0}(normalizedInput),this._milliseconds=+milliseconds+1e3*seconds+6e4*minutes+1e3*hours*60*60,this._days=+days+7*weeks,this._months=+months+3*quarters+12*years,this._data={},this._locale=getLocale(),this._bubble()}function isDuration(obj){return obj instanceof Duration}function absRound(number){return number<0?-1*Math.round(-1*number):Math.round(number)}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset(),sign="+";return offset<0&&(offset=-offset,sign="-"),sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset("Z",":"),offset("ZZ",""),addRegexToken("Z",matchShortOffset),addRegexToken("ZZ",matchShortOffset),addParseToken(["Z","ZZ"],function(input,array,config){config._useUTC=!0,config._tzm=offsetFromString(matchShortOffset,input)});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||"").match(matcher);if(null===matches)return null;var parts=((matches[matches.length-1]||[])+"").match(chunkOffset)||["-",0,0],minutes=60*parts[1]+toInt(parts[2]);return 0===minutes?0:"+"===parts[0]?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;return model._isUTC?(res=model.clone(),diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf(),res._d.setTime(res._d.valueOf()+diff),hooks.updateOffset(res,!1),res):createLocal(input).local()}function getDateOffset(m){return 15*-Math.round(m._d.getTimezoneOffset()/15)}function isUtc(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}hooks.updateOffset=function(){};var aspNetRegex=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var sign,ret,diffRes,duration=input,match=null;return isDuration(input)?duration={ms:input._milliseconds,d:input._days,M:input._months}:isNumber(input)?(duration={},key?duration[key]=input:duration.milliseconds=input):(match=aspNetRegex.exec(input))?(sign="-"===match[1]?-1:1,duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(1e3*match[MILLISECOND]))*sign}):(match=isoRegex.exec(input))?(sign="-"===match[1]?-1:(match[1],1),duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)}):null==duration?duration={}:"object"==typeof duration&&("from"in duration||"to"in duration)&&(diffRes=function(base,other){var res;if(!base.isValid()||!other.isValid())return{milliseconds:0,months:0};other=cloneWithOffset(other,base),base.isBefore(other)?res=positiveMomentsDifference(base,other):((res=positiveMomentsDifference(other,base)).milliseconds=-res.milliseconds,res.months=-res.months);return res}(createLocal(duration.from),createLocal(duration.to)),(duration={}).ms=diffRes.milliseconds,duration.M=diffRes.months),ret=new Duration(duration),isDuration(input)&&hasOwnProp(input,"_locale")&&(ret._locale=input._locale),ret}function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};return res.months=other.month()-base.month()+12*(other.year()-base.year()),base.clone().add(res.months,"M").isAfter(other)&&--res.months,res.milliseconds=+other-+base.clone().add(res.months,"M"),res}function createAdder(direction,name){return function(val,period){var tmp;return null===period||isNaN(+period)||(deprecateSimple(name,"moment()."+name+"(period, number) is deprecated. Please use moment()."+name+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),tmp=val,val=period,period=tmp),addSubtract(this,createDuration(val="string"==typeof val?+val:val,period),direction),this}}function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);mom.isValid()&&(updateOffset=null==updateOffset||updateOffset,months&&setMonth(mom,get(mom,"Month")+months*isAdding),days&&set$1(mom,"Date",get(mom,"Date")+days*isAdding),milliseconds&&mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding),updateOffset&&hooks.updateOffset(mom,days||months))}createDuration.fn=Duration.prototype,createDuration.invalid=function(){return createDuration(NaN)};var add=createAdder(1,"add"),subtract=createAdder(-1,"subtract");function monthDiff(a,b){var wholeMonthDiff=12*(b.year()-a.year())+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,"months");return-(wholeMonthDiff+(b-anchor<0?(b-anchor)/(anchor-a.clone().add(wholeMonthDiff-1,"months")):(b-anchor)/(a.clone().add(wholeMonthDiff+1,"months")-anchor)))||0}function locale(key){var newLocaleData;return void 0===key?this._locale._abbr:(null!=(newLocaleData=getLocale(key))&&(this._locale=newLocaleData),this)}hooks.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",hooks.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(key){return void 0===key?this.localeData():this.locale(key)});function localeData(){return this._locale}function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;return null==input?weekOfYear(this,dow,doy).year:(week>(weeksTarget=weeksInYear(input,dow,doy))&&(week=weeksTarget),function(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);return this.year(date.getUTCFullYear()),this.month(date.getUTCMonth()),this.date(date.getUTCDate()),this}.call(this,input,week,weekday,dow,doy))}addFormatToken(0,["gg",2],0,function(){return this.weekYear()%100}),addFormatToken(0,["GG",2],0,function(){return this.isoWeekYear()%100}),addWeekYearFormatToken("gggg","weekYear"),addWeekYearFormatToken("ggggg","weekYear"),addWeekYearFormatToken("GGGG","isoWeekYear"),addWeekYearFormatToken("GGGGG","isoWeekYear"),addUnitAlias("weekYear","gg"),addUnitAlias("isoWeekYear","GG"),addUnitPriority("weekYear",1),addUnitPriority("isoWeekYear",1),addRegexToken("G",matchSigned),addRegexToken("g",matchSigned),addRegexToken("GG",match1to2,match2),addRegexToken("gg",match1to2,match2),addRegexToken("GGGG",match1to4,match4),addRegexToken("gggg",match1to4,match4),addRegexToken("GGGGG",match1to6,match6),addRegexToken("ggggg",match1to6,match6),addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)}),addWeekParseToken(["gg","GG"],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input)}),addFormatToken("Q",0,"Qo","quarter"),addUnitAlias("quarter","Q"),addUnitPriority("quarter",7),addRegexToken("Q",match1),addParseToken("Q",function(input,array){array[MONTH]=3*(toInt(input)-1)}),addFormatToken("D",["DD",2],"Do","date"),addUnitAlias("date","D"),addUnitPriority("date",9),addRegexToken("D",match1to2),addRegexToken("DD",match1to2,match2),addRegexToken("Do",function(isStrict,locale){return isStrict?locale._dayOfMonthOrdinalParse||locale._ordinalParse:locale._dayOfMonthOrdinalParseLenient}),addParseToken(["D","DD"],DATE),addParseToken("Do",function(input,array){array[DATE]=toInt(input.match(match1to2)[0])});var getSetDayOfMonth=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear"),addUnitAlias("dayOfYear","DDD"),addUnitPriority("dayOfYear",4),addRegexToken("DDD",match1to3),addRegexToken("DDDD",match3),addParseToken(["DDD","DDDD"],function(input,array,config){config._dayOfYear=toInt(input)}),addFormatToken("m",["mm",2],0,"minute"),addUnitAlias("minute","m"),addUnitPriority("minute",14),addRegexToken("m",match1to2),addRegexToken("mm",match1to2,match2),addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second"),addUnitAlias("second","s"),addUnitPriority("second",15),addRegexToken("s",match1to2),addRegexToken("ss",match1to2,match2),addParseToken(["s","ss"],SECOND);var token,getSetSecond=makeGetSet("Seconds",!1);for(addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)}),addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),addFormatToken(0,["SSS",3],0,"millisecond"),addFormatToken(0,["SSSS",4],0,function(){return 10*this.millisecond()}),addFormatToken(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),addFormatToken(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),addFormatToken(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),addFormatToken(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),addFormatToken(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),addUnitAlias("millisecond","ms"),addUnitPriority("millisecond",16),addRegexToken("S",match1to3,match1),addRegexToken("SS",match1to3,match2),addRegexToken("SSS",match1to3,match3),token="SSSS";token.length<=9;token+="S")addRegexToken(token,matchUnsigned);function parseMs(input,array){array[MILLISECOND]=toInt(1e3*("0."+input))}for(token="S";token.length<=9;token+="S")addParseToken(token,parseMs);var getSetMillisecond=makeGetSet("Milliseconds",!1);addFormatToken("z",0,0,"zoneAbbr"),addFormatToken("zz",0,0,"zoneName");var proto=Moment.prototype;function preParsePostFormat(string){return string}proto.add=add,proto.calendar=function(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf("day"),format=hooks.calendarFormat(this,sod)||"sameElse",output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)))},proto.clone=function(){return new Moment(this)},proto.diff=function(input,units,asFloat){var that,zoneDelta,output;if(!this.isValid())return NaN;if(!(that=cloneWithOffset(input,this)).isValid())return NaN;switch(zoneDelta=6e4*(that.utcOffset()-this.utcOffset()),units=normalizeUnits(units)){case"year":output=monthDiff(this,that)/12;break;case"month":output=monthDiff(this,that);break;case"quarter":output=monthDiff(this,that)/3;break;case"second":output=(this-that)/1e3;break;case"minute":output=(this-that)/6e4;break;case"hour":output=(this-that)/36e5;break;case"day":output=(this-that-zoneDelta)/864e5;break;case"week":output=(this-that-zoneDelta)/6048e5;break;default:output=this-that}return asFloat?output:absFloor(output)},proto.endOf=function(units){return void 0===(units=normalizeUnits(units))||"millisecond"===units?this:("date"===units&&(units="day"),this.startOf(units).add(1,"isoWeek"===units?"week":units).subtract(1,"ms"))},proto.format=function(inputString){inputString||(inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var output=formatMoment(this,inputString);return this.localeData().postformat(output)},proto.from=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.fromNow=function(withoutSuffix){return this.from(createLocal(),withoutSuffix)},proto.to=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.toNow=function(withoutSuffix){return this.to(createLocal(),withoutSuffix)},proto.get=function(units){return isFunction(this[units=normalizeUnits(units)])?this[units]():this},proto.invalidAt=function(){return getParsingFlags(this).overflow},proto.isAfter=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()>localInput.valueOf():localInput.valueOf()<this.clone().startOf(units).valueOf())},proto.isBefore=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()<localInput.valueOf():this.clone().endOf(units).valueOf()<localInput.valueOf())},proto.isBetween=function(from,to,units,inclusivity){return("("===(inclusivity=inclusivity||"()")[0]?this.isAfter(from,units):!this.isBefore(from,units))&&(")"===inclusivity[1]?this.isBefore(to,units):!this.isAfter(to,units))},proto.isSame=function(input,units){var inputMs,localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(units||"millisecond"))?this.valueOf()===localInput.valueOf():(inputMs=localInput.valueOf(),this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf()))},proto.isSameOrAfter=function(input,units){return this.isSame(input,units)||this.isAfter(input,units)},proto.isSameOrBefore=function(input,units){return this.isSame(input,units)||this.isBefore(input,units)},proto.isValid=function(){return isValid(this)},proto.lang=lang,proto.locale=locale,proto.localeData=localeData,proto.max=prototypeMax,proto.min=prototypeMin,proto.parsingFlags=function(){return extend({},getParsingFlags(this))},proto.set=function(units,value){if("object"==typeof units)for(var prioritized=function(unitsObj){var units=[];for(var u in unitsObj)units.push({unit:u,priority:priorities[u]});return units.sort(function(a,b){return a.priority-b.priority}),units}(units=normalizeObjectUnits(units)),i=0;i<prioritized.length;i++)this[prioritized[i].unit](units[prioritized[i].unit]);else if(isFunction(this[units=normalizeUnits(units)]))return this[units](value);return this},proto.startOf=function(units){switch(units=normalizeUnits(units)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===units&&this.weekday(0),"isoWeek"===units&&this.isoWeekday(1),"quarter"===units&&this.month(3*Math.floor(this.month()/3)),this},proto.subtract=subtract,proto.toArray=function(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]},proto.toObject=function(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()}},proto.toDate=function(){return new Date(this.valueOf())},proto.toISOString=function(keepOffset){if(!this.isValid())return null;var utc=!0!==keepOffset,m=utc?this.clone().utc():this;return m.year()<0||m.year()>9999?formatMoment(m,utc?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction(Date.prototype.toISOString)?utc?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",formatMoment(m,"Z")):formatMoment(m,utc?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},proto.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var func="moment",zone="";this.isLocal()||(func=0===this.utcOffset()?"moment.utc":"moment.parseZone",zone="Z");var prefix="["+func+'("]',year=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",suffix=zone+'[")]';return this.format(prefix+year+"-MM-DD[T]HH:mm:ss.SSS"+suffix)},proto.toJSON=function(){return this.isValid()?this.toISOString():null},proto.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},proto.unix=function(){return Math.floor(this.valueOf()/1e3)},proto.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},proto.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},proto.year=getSetYear,proto.isLeapYear=function(){return isLeapYear(this.year())},proto.weekYear=function(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},proto.isoWeekYear=function(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4)},proto.quarter=proto.quarters=function(input){return null==input?Math.ceil((this.month()+1)/3):this.month(3*(input-1)+this.month()%3)},proto.month=getSetMonth,proto.daysInMonth=function(){return daysInMonth(this.year(),this.month())},proto.week=proto.weeks=function(input){var week=this.localeData().week(this);return null==input?week:this.add(7*(input-week),"d")},proto.isoWeek=proto.isoWeeks=function(input){var week=weekOfYear(this,1,4).week;return null==input?week:this.add(7*(input-week),"d")},proto.weeksInYear=function(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)},proto.isoWeeksInYear=function(){return weeksInYear(this.year(),1,4)},proto.date=getSetDayOfMonth,proto.day=proto.days=function(input){if(!this.isValid())return null!=input?this:NaN;var day=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=input?(input=function(input,locale){return"string"!=typeof input?input:isNaN(input)?"number"==typeof(input=locale.weekdaysParse(input))?input:null:parseInt(input,10)}(input,this.localeData()),this.add(input-day,"d")):day},proto.weekday=function(input){if(!this.isValid())return null!=input?this:NaN;var weekday=(this.day()+7-this.localeData()._week.dow)%7;return null==input?weekday:this.add(input-weekday,"d")},proto.isoWeekday=function(input){if(!this.isValid())return null!=input?this:NaN;if(null!=input){var weekday=function(input,locale){return"string"==typeof input?locale.weekdaysParse(input)%7||7:isNaN(input)?null:input}(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7)}return this.day()||7},proto.dayOfYear=function(input){var dayOfYear=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==input?dayOfYear:this.add(input-dayOfYear,"d")},proto.hour=proto.hours=getSetHour,proto.minute=proto.minutes=getSetMinute,proto.second=proto.seconds=getSetSecond,proto.millisecond=proto.milliseconds=getSetMillisecond,proto.utcOffset=function(input,keepLocalTime,keepMinutes){var localAdjust,offset=this._offset||0;if(!this.isValid())return null!=input?this:NaN;if(null!=input){if("string"==typeof input){if(null===(input=offsetFromString(matchShortOffset,input)))return this}else Math.abs(input)<16&&!keepMinutes&&(input*=60);return!this._isUTC&&keepLocalTime&&(localAdjust=getDateOffset(this)),this._offset=input,this._isUTC=!0,null!=localAdjust&&this.add(localAdjust,"m"),offset!==input&&(!keepLocalTime||this._changeInProgress?addSubtract(this,createDuration(input-offset,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,hooks.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?offset:getDateOffset(this)},proto.utc=function(keepLocalTime){return this.utcOffset(0,keepLocalTime)},proto.local=function(keepLocalTime){return this._isUTC&&(this.utcOffset(0,keepLocalTime),this._isUTC=!1,keepLocalTime&&this.subtract(getDateOffset(this),"m")),this},proto.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var tZone=offsetFromString(matchOffset,this._i);null!=tZone?this.utcOffset(tZone):this.utcOffset(0,!0)}return this},proto.hasAlignedHourOffset=function(input){return!!this.isValid()&&(input=input?createLocal(input).utcOffset():0,(this.utcOffset()-input)%60==0)},proto.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},proto.isLocal=function(){return!!this.isValid()&&!this._isUTC},proto.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},proto.isUtc=isUtc,proto.isUTC=isUtc,proto.zoneAbbr=function(){return this._isUTC?"UTC":""},proto.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth),proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth),proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear),proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(input,keepLocalTime){return null!=input?("string"!=typeof input&&(input=-input),this.utcOffset(input,keepLocalTime),this):-this.utcOffset()}),proto.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var c={};if(copyConfig(c,this),(c=prepareConfig(c))._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var proto$1=Locale.prototype;function get$1(format,index,field,setter){var locale=getLocale(),utc=createUTC().set(setter,index);return locale[field](utc,format)}function listMonthsImpl(format,index,field){if(isNumber(format)&&(index=format,format=void 0),format=format||"",null!=index)return get$1(format,index,field,"month");var i,out=[];for(i=0;i<12;i++)out[i]=get$1(format,i,field,"month");return out}function listWeekdaysImpl(localeSorted,format,index,field){"boolean"==typeof localeSorted?(isNumber(format)&&(index=format,format=void 0),format=format||""):(index=format=localeSorted,localeSorted=!1,isNumber(format)&&(index=format,format=void 0),format=format||"");var i,locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(null!=index)return get$1(format,(index+shift)%7,field,"day");var out=[];for(i=0;i<7;i++)out[i]=get$1(format,(i+shift)%7,field,"day");return out}proto$1.calendar=function(key,mom,now){var output=this._calendar[key]||this._calendar.sameElse;return isFunction(output)?output.call(mom,now):output},proto$1.longDateFormat=function(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];return format||!formatUpper?format:(this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)}),this._longDateFormat[key])},proto$1.invalidDate=function(){return this._invalidDate},proto$1.ordinal=function(number){return this._ordinal.replace("%d",number)},proto$1.preparse=preParsePostFormat,proto$1.postformat=preParsePostFormat,proto$1.relativeTime=function(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return isFunction(output)?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)},proto$1.pastFuture=function(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return isFunction(format)?format(output):format.replace(/%s/i,output)},proto$1.set=function(config){var prop,i;for(i in config)isFunction(prop=config[i])?this[i]=prop:this["_"+i]=prop;this._config=config,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},proto$1.months=function(m,format){return m?isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?"format":"standalone"][m.month()]:isArray(this._months)?this._months:this._months.standalone},proto$1.monthsShort=function(m,format){return m?isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?"format":"standalone"][m.month()]:isArray(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},proto$1.monthsParse=function(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact)return function(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)mom=createUTC([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(mom,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(mom,"").toLocaleLowerCase();return strict?"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null}.call(this,monthName,format,strict);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(mom=createUTC([2e3,i]),strict&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(mom,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(mom,"").replace(".","")+"$","i")),strict||this._monthsParse[i]||(regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,""),this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"MMMM"===format&&this._longMonthsParse[i].test(monthName))return i;if(strict&&"MMM"===format&&this._shortMonthsParse[i].test(monthName))return i;if(!strict&&this._monthsParse[i].test(monthName))return i}},proto$1.monthsRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsStrictRegex:this._monthsRegex):(hasOwnProp(this,"_monthsRegex")||(this._monthsRegex=defaultMonthsRegex),this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex)},proto$1.monthsShortRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsShortStrictRegex:this._monthsShortRegex):(hasOwnProp(this,"_monthsShortRegex")||(this._monthsShortRegex=defaultMonthsShortRegex),this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex)},proto$1.week=function(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week},proto$1.firstDayOfYear=function(){return this._week.doy},proto$1.firstDayOfWeek=function(){return this._week.dow},proto$1.weekdays=function(m,format){return m?isArray(this._weekdays)?this._weekdays[m.day()]:this._weekdays[this._weekdays.isFormat.test(format)?"format":"standalone"][m.day()]:isArray(this._weekdays)?this._weekdays:this._weekdays.standalone},proto$1.weekdaysMin=function(m){return m?this._weekdaysMin[m.day()]:this._weekdaysMin},proto$1.weekdaysShort=function(m){return m?this._weekdaysShort[m.day()]:this._weekdaysShort},proto$1.weekdaysParse=function(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact)return function(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)mom=createUTC([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(mom,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(mom,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(mom,"").toLocaleLowerCase();return strict?"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null}.call(this,weekdayName,format,strict);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(mom=createUTC([2e3,1]).day(i),strict&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(mom,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(mom,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(mom,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,""),this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"dddd"===format&&this._fullWeekdaysParse[i].test(weekdayName))return i;if(strict&&"ddd"===format&&this._shortWeekdaysParse[i].test(weekdayName))return i;if(strict&&"dd"===format&&this._minWeekdaysParse[i].test(weekdayName))return i;if(!strict&&this._weekdaysParse[i].test(weekdayName))return i}},proto$1.weekdaysRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=defaultWeekdaysRegex),this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex)},proto$1.weekdaysShortRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=defaultWeekdaysShortRegex),this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},proto$1.weekdaysMinRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=defaultWeekdaysMinRegex),this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},proto$1.isPM=function(input){return"p"===(input+"").toLowerCase().charAt(0)},proto$1.meridiem=function(hours,minutes,isLower){return hours>11?isLower?"pm":"PM":isLower?"am":"AM"},getSetGlobalLocale("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10;return number+(1===toInt(number%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th")}}),hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale),hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var mathAbs=Math.abs;function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);return duration._milliseconds+=direction*other._milliseconds,duration._days+=direction*other._days,duration._months+=direction*other._months,duration._bubble()}function absCeil(number){return number<0?Math.floor(number):Math.ceil(number)}function daysToMonths(days){return 4800*days/146097}function monthsToDays(months){return 146097*months/4800}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs("ms"),asSeconds=makeAs("s"),asMinutes=makeAs("m"),asHours=makeAs("h"),asDays=makeAs("d"),asWeeks=makeAs("w"),asMonths=makeAs("M"),asYears=makeAs("y");function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN}}var milliseconds=makeGetter("milliseconds"),seconds=makeGetter("seconds"),minutes=makeGetter("minutes"),hours=makeGetter("hours"),days=makeGetter("days"),months=makeGetter("months"),years=makeGetter("years");var round=Math.round,thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};var abs$1=Math.abs;function sign(x){return(x>0)-(x<0)||+x}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var minutes,hours,seconds=abs$1(this._milliseconds)/1e3,days=abs$1(this._days),months=abs$1(this._months);hours=absFloor((minutes=absFloor(seconds/60))/60),seconds%=60,minutes%=60;var Y=absFloor(months/12),M=months%=12,D=days,h=hours,m=minutes,s=seconds?seconds.toFixed(3).replace(/\.?0+$/,""):"",total=this.asSeconds();if(!total)return"P0D";var totalSign=total<0?"-":"",ymSign=sign(this._months)!==sign(total)?"-":"",daysSign=sign(this._days)!==sign(total)?"-":"",hmsSign=sign(this._milliseconds)!==sign(total)?"-":"";return totalSign+"P"+(Y?ymSign+Y+"Y":"")+(M?ymSign+M+"M":"")+(D?daysSign+D+"D":"")+(h||m||s?"T":"")+(h?hmsSign+h+"H":"")+(m?hmsSign+m+"M":"")+(s?hmsSign+s+"S":"")}var proto$2=Duration.prototype;return proto$2.isValid=function(){return this._isValid},proto$2.abs=function(){var data=this._data;return this._milliseconds=mathAbs(this._milliseconds),this._days=mathAbs(this._days),this._months=mathAbs(this._months),data.milliseconds=mathAbs(data.milliseconds),data.seconds=mathAbs(data.seconds),data.minutes=mathAbs(data.minutes),data.hours=mathAbs(data.hours),data.months=mathAbs(data.months),data.years=mathAbs(data.years),this},proto$2.add=function(input,value){return addSubtract$1(this,input,value,1)},proto$2.subtract=function(input,value){return addSubtract$1(this,input,value,-1)},proto$2.as=function(units){if(!this.isValid())return NaN;var days,months,milliseconds=this._milliseconds;if("month"===(units=normalizeUnits(units))||"year"===units)return days=this._days+milliseconds/864e5,months=this._months+daysToMonths(days),"month"===units?months:months/12;switch(days=this._days+Math.round(monthsToDays(this._months)),units){case"week":return days/7+milliseconds/6048e5;case"day":return days+milliseconds/864e5;case"hour":return 24*days+milliseconds/36e5;case"minute":return 1440*days+milliseconds/6e4;case"second":return 86400*days+milliseconds/1e3;case"millisecond":return Math.floor(864e5*days)+milliseconds;default:throw new Error("Unknown unit "+units)}},proto$2.asMilliseconds=asMilliseconds,proto$2.asSeconds=asSeconds,proto$2.asMinutes=asMinutes,proto$2.asHours=asHours,proto$2.asDays=asDays,proto$2.asWeeks=asWeeks,proto$2.asMonths=asMonths,proto$2.asYears=asYears,proto$2.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*toInt(this._months/12):NaN},proto$2._bubble=function(){var seconds,minutes,hours,years,monthsFromDays,milliseconds=this._milliseconds,days=this._days,months=this._months,data=this._data;return milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0||(milliseconds+=864e5*absCeil(monthsToDays(months)+days),days=0,months=0),data.milliseconds=milliseconds%1e3,seconds=absFloor(milliseconds/1e3),data.seconds=seconds%60,minutes=absFloor(seconds/60),data.minutes=minutes%60,hours=absFloor(minutes/60),data.hours=hours%24,months+=monthsFromDays=absFloor(daysToMonths(days+=absFloor(hours/24))),days-=absCeil(monthsToDays(monthsFromDays)),years=absFloor(months/12),months%=12,data.days=days,data.months=months,data.years=years,this},proto$2.clone=function(){return createDuration(this)},proto$2.get=function(units){return units=normalizeUnits(units),this.isValid()?this[units+"s"]():NaN},proto$2.milliseconds=milliseconds,proto$2.seconds=seconds,proto$2.minutes=minutes,proto$2.hours=hours,proto$2.days=days,proto$2.weeks=function(){return absFloor(this.days()/7)},proto$2.months=months,proto$2.years=years,proto$2.humanize=function(withSuffix){if(!this.isValid())return this.localeData().invalidDate();var locale=this.localeData(),output=function(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs(),seconds=round(duration.as("s")),minutes=round(duration.as("m")),hours=round(duration.as("h")),days=round(duration.as("d")),months=round(duration.as("M")),years=round(duration.as("y")),a=seconds<=thresholds.ss&&["s",seconds]||seconds<thresholds.s&&["ss",seconds]||minutes<=1&&["m"]||minutes<thresholds.m&&["mm",minutes]||hours<=1&&["h"]||hours<thresholds.h&&["hh",hours]||days<=1&&["d"]||days<thresholds.d&&["dd",days]||months<=1&&["M"]||months<thresholds.M&&["MM",months]||years<=1&&["y"]||["yy",years];return a[2]=withoutSuffix,a[3]=+posNegDuration>0,a[4]=locale,function(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}.apply(null,a)}(this,!withSuffix,locale);return withSuffix&&(output=locale.pastFuture(+this,output)),locale.postformat(output)},proto$2.toISOString=toISOString$1,proto$2.toString=toISOString$1,proto$2.toJSON=toISOString$1,proto$2.locale=locale,proto$2.localeData=localeData,proto$2.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1),proto$2.lang=lang,addFormatToken("X",0,0,"unix"),addFormatToken("x",0,0,"valueOf"),addRegexToken("x",matchSigned),addRegexToken("X",/[+-]?\d+(\.\d{1,3})?/),addParseToken("X",function(input,array,config){config._d=new Date(1e3*parseFloat(input,10))}),addParseToken("x",function(input,array,config){config._d=new Date(toInt(input))}),hooks.version="2.22.2",hookCallback=createLocal,hooks.fn=proto,hooks.min=function(){return pickBy("isBefore",[].slice.call(arguments,0))},hooks.max=function(){return pickBy("isAfter",[].slice.call(arguments,0))},hooks.now=function(){return Date.now?Date.now():+new Date},hooks.utc=createUTC,hooks.unix=function(input){return createLocal(1e3*input)},hooks.months=function(format,index){return listMonthsImpl(format,index,"months")},hooks.isDate=isDate,hooks.locale=getSetGlobalLocale,hooks.invalid=createInvalid,hooks.duration=createDuration,hooks.isMoment=isMoment,hooks.weekdays=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdays")},hooks.parseZone=function(){return createLocal.apply(null,arguments).parseZone()},hooks.localeData=getLocale,hooks.isDuration=isDuration,hooks.monthsShort=function(format,index){return listMonthsImpl(format,index,"monthsShort")},hooks.weekdaysMin=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysMin")},hooks.defineLocale=defineLocale,hooks.updateLocale=function(name,config){if(null!=config){var locale,tmpLocale,parentConfig=baseConfig;null!=(tmpLocale=loadLocale(name))&&(parentConfig=tmpLocale._config),(locale=new Locale(config=mergeConfigs(parentConfig,config))).parentLocale=locales[name],locales[name]=locale,getSetGlobalLocale(name)}else null!=locales[name]&&(null!=locales[name].parentLocale?locales[name]=locales[name].parentLocale:null!=locales[name]&&delete locales[name]);return locales[name]},hooks.locales=function(){return keys(locales)},hooks.weekdaysShort=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysShort")},hooks.normalizeUnits=normalizeUnits,hooks.relativeTimeRounding=function(roundingFunction){return void 0===roundingFunction?round:"function"==typeof roundingFunction&&(round=roundingFunction,!0)},hooks.relativeTimeThreshold=function(threshold,limit){return void 0!==thresholds[threshold]&&(void 0===limit?thresholds[threshold]:(thresholds[threshold]=limit,"s"===threshold&&(thresholds.ss=limit-1),!0))},hooks.calendarFormat=function(myMoment,now){var diff=myMoment.diff(now,"days",!0);return diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse"},hooks.prototype=proto,hooks.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},hooks}),function(global,factory){"object"==typeof module&&"object"==typeof module.exports?module.exports=global.document?factory(global,!0):function(w){if(!w.document)throw new Error("jQuery requires a window with a document");return factory(w)}:factory(global)}("undefined"!=typeof window?window:this,function(window,noGlobal){var arr=[],document=window.document,getProto=Object.getPrototypeOf,slice=arr.slice,concat=arr.concat,push=arr.push,indexOf=arr.indexOf,class2type={},toString=class2type.toString,hasOwn=class2type.hasOwnProperty,fnToString=hasOwn.toString,ObjectFunctionString=fnToString.call(Object),support={},isFunction=function(obj){return"function"==typeof obj&&"number"!=typeof obj.nodeType},isWindow=function(obj){return null!=obj&&obj===obj.window},preservedScriptAttributes={type:!0,src:!0,noModule:!0};function DOMEval(code,doc,node){var i,script=(doc=doc||document).createElement("script");if(script.text=code,node)for(i in preservedScriptAttributes)node[i]&&(script[i]=node[i]);doc.head.appendChild(script).parentNode.removeChild(script)}function toType(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj}var jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);return!isFunction(obj)&&!isWindow(obj)&&("array"===type||0===length||"number"==typeof length&&length>0&&length-1 in obj)}jQuery.fn=jQuery.prototype={jquery:"3.3.1",constructor:jQuery,length:0,toArray:function(){return slice.call(this)},get:function(num){return null==num?slice.call(this):num<0?this[num+this.length]:this[num]},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);return ret.prevObject=this,ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:arr.sort,splice:arr.splice},jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=!1;for("boolean"==typeof target&&(deep=target,target=arguments[i]||{},i++),"object"==typeof target||isFunction(target)||(target={}),i===length&&(target=this,i--);i<length;i++)if(null!=(options=arguments[i]))for(name in options)src=target[name],target!==(copy=options[name])&&(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))?(copyIsArray?(copyIsArray=!1,clone=src&&Array.isArray(src)?src:[]):clone=src&&jQuery.isPlainObject(src)?src:{},target[name]=jQuery.extend(deep,clone,copy)):void 0!==copy&&(target[name]=copy));return target},jQuery.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(msg){throw new Error(msg)},noop:function(){},isPlainObject:function(obj){var proto,Ctor;return!(!obj||"[object Object]"!==toString.call(obj))&&(!(proto=getProto(obj))||"function"==typeof(Ctor=hasOwn.call(proto,"constructor")&&proto.constructor)&&fnToString.call(Ctor)===ObjectFunctionString)},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},globalEval:function(code){DOMEval(code)},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;i<length&&!1!==callback.call(obj[i],i,obj[i]);i++);else for(i in obj)if(!1===callback.call(obj[i],i,obj[i]))break;return obj},trim:function(text){return null==text?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];return null!=arr&&(isArrayLike(Object(arr))?jQuery.merge(ret,"string"==typeof arr?[arr]:arr):push.call(ret,arr)),ret},inArray:function(elem,arr,i){return null==arr?-1:indexOf.call(arr,elem,i)},merge:function(first,second){for(var len=+second.length,j=0,i=first.length;j<len;j++)first[i++]=second[j];return first.length=i,first},grep:function(elems,callback,invert){for(var matches=[],i=0,length=elems.length,callbackExpect=!invert;i<length;i++)!callback(elems[i],i)!==callbackExpect&&matches.push(elems[i]);return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems))for(length=elems.length;i<length;i++)null!=(value=callback(elems[i],i,arg))&&ret.push(value);else for(i in elems)null!=(value=callback(elems[i],i,arg))&&ret.push(value);return concat.apply([],ret)},guid:1,support:support}),"function"==typeof Symbol&&(jQuery.fn[Symbol.iterator]=arr[Symbol.iterator]),jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i<len;i++)if(list[i]===elem)return i;return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|.*)\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!=high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){return asCodePoint?"\0"===ch?"�":ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ":"\\"+ch},unloadHandler=function(){setDocument()},disabledAncestor=addCombinator(function(elem){return!0===elem.disabled&&("form"in elem||"label"in elem)},{dir:"parentNode",next:"legend"});try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;if(results=results||[],"string"!=typeof selector||!selector||1!==nodeType&&9!==nodeType&&11!==nodeType)return results;if(!seed&&((context?context.ownerDocument||context:preferredDoc)!==document&&setDocument(context),context=context||document,documentIsHTML)){if(11!==nodeType&&(match=rquickExpr.exec(selector)))if(m=match[1]){if(9===nodeType){if(!(elem=context.getElementById(m)))return results;if(elem.id===m)return results.push(elem),results}else if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m)return results.push(elem),results}else{if(match[2])return push.apply(results,context.getElementsByTagName(selector)),results;if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName)return push.apply(results,context.getElementsByClassName(m)),results}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(1!==nodeType)newContext=context,newSelector=selector;else if("object"!==context.nodeName.toLowerCase()){for((nid=context.getAttribute("id"))?nid=nid.replace(rcssescape,fcssescape):context.setAttribute("id",nid=expando),i=(groups=tokenize(selector)).length;i--;)groups[i]="#"+nid+" "+toSelector(groups[i]);newSelector=groups.join(","),newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector)try{return push.apply(results,newContext.querySelectorAll(newSelector)),results}catch(qsaError){}finally{nid===expando&&context.removeAttribute("id")}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];return function cache(key,value){return keys.push(key+" ")>Expr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el)}catch(e){return!1}finally{el.parentNode&&el.parentNode.removeChild(el),el=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){return"input"===elem.nodeName.toLowerCase()&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createDisabledPseudo(disabled){return function(elem){return"form"in elem?elem.parentNode&&!1===elem.disabled?"label"in elem?"label"in elem.parentNode?elem.parentNode.disabled===disabled:elem.disabled===disabled:elem.isDisabled===disabled||elem.isDisabled!==!disabled&&disabledAncestor(elem)===disabled:elem.disabled===disabled:"label"in elem&&elem.disabled===disabled}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&void 0!==context.getElementsByTagName&&context}for(i in support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement?(docElem=(document=doc).documentElement,documentIsHTML=!isXML(document),preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow&&(subWindow.addEventListener?subWindow.addEventListener("unload",unloadHandler,!1):subWindow.attachEvent&&subWindow.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(el){return el.className="i",!el.getAttribute("className")}),support.getElementsByTagName=assert(function(el){return el.appendChild(document.createComment("")),!el.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(el){return docElem.appendChild(el).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[]}}):(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=void 0!==elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem];for(elems=context.getElementsByName(id),i=0;elem=elems[i++];)if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem]}return[]}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return void 0!==context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"===tag){for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp}return results},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if(void 0!==context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(el){docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a><select id='"+expando+"-\r\\' msallowcapture=''><option selected=''></option></select>",el.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),el.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),el.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),el.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),el.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden"),el.appendChild(input).setAttribute("name","D"),el.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),2!==el.querySelectorAll(":enabled").length&&rbuggyQSA.push(":enabled",":disabled"),docElem.appendChild(el).disabled=!0,2!==el.querySelectorAll(":disabled").length&&rbuggyQSA.push(":enabled",":disabled"),el.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(el){support.disconnectedMatch=matches.call(el,"*"),matches.call(el,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare||(1&(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1)||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0},document):document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return Sizzle(expr,document,null,[elem]).length>0},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):void 0;return void 0!==val?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape)},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},(Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||void 0!==elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&result.indexOf(check)>-1:"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(diff=(nodeIndex=(cache=(uniqueCache=(outerCache=(node=parent)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1])&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(diff=nodeIndex=(cache=(uniqueCache=(outerCache=(node=elem)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1]),!1===diff)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&((uniqueCache=(outerCache=node[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]=[dirruns,diff]),node!==elem)););return(diff-=last)===first||diff%first==0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):fn.length>1?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)seed[idx=indexOf(seed,matched[i])]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return(elemLang=elemLang.toLowerCase())===lang||0===elemLang.indexOf(lang+"-")}while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:createDisabledPseudo(!1),disabled:createDisabledPseudo(!0),checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,!0===elem.selected},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){for(var i=1;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;--i>=0;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i<length;)matchIndexes.push(i);return matchIndexes})}}).pseudos.nth=Expr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Expr.pseudos[i]=createInputPseudo(i);for(i in{submit:!0,reset:!0})Expr.pseudos[i]=createButtonPseudo(i);function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i<len;i++)selector+=tokens[i].value;return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&"parentNode"===key,doneName=done++;return combinator.first?function(elem,context,xml){for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)return matcher(elem,context,xml);return!1}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){for(;elem=elem[dir];)if((1===elem.nodeType||checkNonElements)&&matcher(elem,context,xml))return!0}else for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)if(uniqueCache=(outerCache=elem[expando]||(elem[expando]={}))[elem.uniqueID]||(outerCache[elem.uniqueID]={}),skip&&skip===elem.nodeName.toLowerCase())elem=elem[dir]||elem;else{if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName)return newCache[2]=oldCache[2];if(uniqueCache[key]=newCache,newCache[2]=matcher(elem,context,xml))return!0}return!1}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function condense(unmatched,map,filter,context,xml){for(var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=null!=map;i<len;i++)(elem=unmatched[i])&&(filter&&!filter(elem,context,xml)||(newUnmatched.push(elem),mapped&&map.push(i)));return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){return postFilter&&!postFilter[expando]&&(postFilter=setMatcher(postFilter)),postFinder&&!postFinder[expando]&&(postFinder=setMatcher(postFinder,postSelector)),markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||function(selector,contexts,results){for(var i=0,len=contexts.length;i<len;i++)Sizzle(selector,contexts[i],results);return results}(selector||"*",context.nodeType?[context]:context,[]),matcherIn=!preFilter||!seed&&selector?elems:condense(elems,preMap,preFilter,context,xml),matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher&&matcher(matcherIn,matcherOut,context,xml),postFilter)for(temp=condense(matcherOut,postMap),postFilter(temp,[],context,xml),i=temp.length;i--;)(elem=temp[i])&&(matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem));if(seed){if(postFinder||preFilter){if(postFinder){for(temp=[],i=matcherOut.length;i--;)(elem=matcherOut[i])&&temp.push(matcherIn[i]=elem);postFinder(null,matcherOut=[],temp,xml)}for(i=matcherOut.length;i--;)(elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i<len;i++)if(matcher=Expr.relative[tokens[i].type])matchers=[addCombinator(elementMatcher(matchers),matcher)];else{if((matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches))[expando]){for(j=++i;j<len&&!Expr.relative[tokens[j].type];j++);return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}return elementMatcher(matchers)}return setFilters.prototype=Expr.filters=Expr.pseudos,Expr.setFilters=new setFilters,tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached)return parseOnly?0:cached.slice(0);for(soFar=selector,groups=[],preFilters=Expr.preFilter;soFar;){for(type in matched&&!(match=rcomma.exec(soFar))||(match&&(soFar=soFar.slice(match[0].length)||soFar),groups.push(tokens=[])),matched=!1,(match=rcombinators.exec(soFar))&&(matched=match.shift(),tokens.push({value:matched,type:match[0].replace(rtrim," ")}),soFar=soFar.slice(matched.length)),Expr.filter)!(match=matchExpr[type].exec(soFar))||preFilters[type]&&!(match=preFilters[type](match))||(matched=match.shift(),tokens.push({value:matched,type:type,matches:match}),soFar=soFar.slice(matched.length));if(!matched)break}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)},compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){for(match||(match=tokenize(selector)),i=match.length;i--;)(cached=matcherFromTokens(match[i]))[expando]?setMatchers.push(cached):elementMatchers.push(cached);(cached=compilerCache(selector,function(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(matchedCount>0)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}(elementMatchers,setMatchers))).selector=selector}return cached},select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled="function"==typeof selector&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);if(results=results||[],1===match.length){if((tokens=match[0]=match[0].slice(0)).length>2&&"ID"===(token=tokens[0]).type&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(!(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0]))return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),!(selector=seed.length&&toSelector(tokens)))return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(el){return 1&el.compareDocumentPosition(document.createElement("fieldset"))}),assert(function(el){return el.innerHTML="<a href='#'></a>","#"===el.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(el){return el.innerHTML="<input/>",el.firstChild.setAttribute("value",""),""===el.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(el){return null==el.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return!0===elem[name]?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains,jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){for(var matched=[],truncate=void 0!==until;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()}var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(elements,qualifier,not){return isFunction(qualifier)?jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not}):qualifier.nodeType?jQuery.grep(elements,function(elem){return elem===qualifier!==not}):"string"!=typeof qualifier?jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not}):jQuery.filter(qualifier,elements,not)}jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++)if(jQuery.contains(self[i],this))return!0}));for(ret=this.pushStack([]),i=0;i<len;i++)jQuery.find(selector,self[i],ret);return len>1?jQuery.uniqueSort(ret):ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"==typeof selector){if(!(match="<"===selector[0]&&">"===selector[selector.length-1]&&selector.length>=3?[null,selector,null]:rquickExpr.exec(selector))||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}return(elem=document.getElementById(match[2]))&&(this[0]=elem,this.length=1),this}return selector.nodeType?(this[0]=selector,this.length=1,this):isFunction(selector)?void 0!==root.ready?root.ready(selector):selector(jQuery):jQuery.makeArray(selector,this)}).prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};function sibling(cur,dir){for(;(cur=cur[dir])&&1!==cur.nodeType;);return cur}jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){for(var i=0;i<l;i++)if(jQuery.contains(this,targets[i]))return!0})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets="string"!=typeof selectors&&jQuery(selectors);if(!rneedsContext.test(selectors))for(;i<l;i++)for(cur=this[i];cur&&cur!==context;cur=cur.parentNode)if(cur.nodeType<11&&(targets?targets.index(cur)>-1:1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?indexOf.call(jQuery(elem),this[0]):indexOf.call(this,elem.jquery?elem[0]:elem):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return nodeName(elem,"iframe")?elem.contentDocument:(nodeName(elem,"template")&&(elem=elem.content||elem),jQuery.merge([],elem.childNodes))}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(matched=jQuery.filter(selector,matched)),this.length>1&&(guaranteedUnique[name]||jQuery.uniqueSort(matched),rparentsprev.test(name)&&matched.reverse()),this.pushStack(matched)}});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;function Identity(v){return v}function Thrower(ex){throw ex}function adoptValue(value,resolve,reject,noValue){var method;try{value&&isFunction(method=value.promise)?method.call(value).done(resolve).fail(reject):value&&isFunction(method=value.then)?method.call(value,resolve,reject):resolve.apply(void 0,[value].slice(noValue))}catch(value){reject.apply(void 0,[value])}}jQuery.Callbacks=function(options){options="string"==typeof options?function(options){var object={};return jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=!0}),object}(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=locked||options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex<list.length;)!1===list[firingIndex].apply(memory[0],memory[1])&&options.stopOnFalse&&(firingIndex=list.length,memory=!1);options.memory||(memory=!1),firing=!1,locked&&(list=memory?[]:"")},self={add:function(){return list&&(memory&&!firing&&(firingIndex=list.length-1,queue.push(memory)),function add(args){jQuery.each(args,function(_,arg){isFunction(arg)?options.unique&&self.has(arg)||list.push(arg):arg&&arg.length&&"string"!==toType(arg)&&add(arg)})}(arguments),memory&&!firing&&fire()),this},remove:function(){return jQuery.each(arguments,function(_,arg){for(var index;(index=jQuery.inArray(arg,list,index))>-1;)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=queue=[],memory||firing||(list=memory=""),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=[context,(args=args||[]).slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},catch:function(fn){return promise.then(null,fn)},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this,fn?[returned]:arguments)})}),fns=null}).promise()},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(!(depth<maxDepth)){if((returned=handler.apply(that,args))===deferred.promise())throw new TypeError("Thenable self-resolution");then=returned&&("object"==typeof returned||"function"==typeof returned)&&returned.then,isFunction(then)?special?then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special)):(maxDepth++,then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith))):(handler!==Identity&&(that=void 0,args=[returned]),(special||deferred.resolveWith)(that,args))}},process=special?mightThrow:function(){try{mightThrow()}catch(e){jQuery.Deferred.exceptionHook&&jQuery.Deferred.exceptionHook(e,process.stackTrace),depth+1>=maxDepth&&(handler!==Thrower&&(that=void 0,args=[e]),deferred.rejectWith(that,args))}};depth?process():(jQuery.Deferred.getStackHook&&(process.stackTrace=jQuery.Deferred.getStackHook()),window.setTimeout(process))}}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith)),tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity)),tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower))}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock),list.add(tuple[3].fire),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?void 0:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this,resolveValues[i]=arguments.length>1?slice.call(arguments):value,--remaining||master.resolveWith(resolveContexts,resolveValues)}};if(remaining<=1&&(adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining),"pending"===master.state()||isFunction(resolveValues[i]&&resolveValues[i].then)))return master.then();for(;i--;)adoptValue(resolveValues[i],updateFunc(i),master.reject);return master.promise()}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){window.console&&window.console.warn&&error&&rerrorNames.test(error.name)&&window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack)},jQuery.readyException=function(error){window.setTimeout(function(){throw error})};var readyList=jQuery.Deferred();function completed(){document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed),jQuery.ready()}jQuery.fn.ready=function(fn){return readyList.then(fn).catch(function(error){jQuery.readyException(error)}),this},jQuery.extend({isReady:!1,readyWait:1,ready:function(wait){(!0===wait?--jQuery.readyWait:jQuery.isReady)||(jQuery.isReady=!0,!0!==wait&&--jQuery.readyWait>0||readyList.resolveWith(document,[jQuery]))}}),jQuery.ready.then=readyList.then,"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(jQuery.ready):(document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed));var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=null==key;if("object"===toType(key))for(i in chainable=!0,key)access(elems,fn,i,key[i],!0,emptyGet,raw);else if(void 0!==value&&(chainable=!0,isFunction(value)||(raw=!0),bulk&&(raw?(fn.call(elems,value),fn=null):(bulk=fn,fn=function(elem,key,value){return bulk.call(jQuery(elem),value)})),fn))for(;i<len;i++)fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));return chainable?elems:bulk?fn.call(elems):len?fn(elems[0],key):emptyGet},rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(all,letter){return letter.toUpperCase()}function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)}var acceptData=function(owner){return 1===owner.nodeType||9===owner.nodeType||!+owner.nodeType};function Data(){this.expando=jQuery.expando+Data.uid++}Data.uid=1,Data.prototype={cache:function(owner){var value=owner[this.expando];return value||(value={},acceptData(owner)&&(owner.nodeType?owner[this.expando]=value:Object.defineProperty(owner,this.expando,{value:value,configurable:!0}))),value},set:function(owner,data,value){var prop,cache=this.cache(owner);if("string"==typeof data)cache[camelCase(data)]=value;else for(prop in data)cache[camelCase(prop)]=data[prop];return cache},get:function(owner,key){return void 0===key?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)]},access:function(owner,key,value){return void 0===key||key&&"string"==typeof key&&void 0===value?this.get(owner,key):(this.set(owner,key,value),void 0!==value?value:key)},remove:function(owner,key){var i,cache=owner[this.expando];if(void 0!==cache){if(void 0!==key){i=(key=Array.isArray(key)?key.map(camelCase):(key=camelCase(key))in cache?[key]:key.match(rnothtmlwhite)||[]).length;for(;i--;)delete cache[key[i]]}(void 0===key||jQuery.isEmptyObject(cache))&&(owner.nodeType?owner[this.expando]=void 0:delete owner[this.expando])}},hasData:function(owner){var cache=owner[this.expando];return void 0!==cache&&!jQuery.isEmptyObject(cache)}};var dataPriv=new Data,dataUser=new Data,rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function dataAttr(elem,key,data){var name;if(void 0===data&&1===elem.nodeType)if(name="data-"+key.replace(rmultiDash,"-$&").toLowerCase(),"string"==typeof(data=elem.getAttribute(name))){try{data=function(data){return"true"===data||"false"!==data&&("null"===data?null:data===+data+""?+data:rbrace.test(data)?JSON.parse(data):data)}(data)}catch(e){}dataUser.set(elem,key,data)}else data=void 0;return data}jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem)},data:function(elem,name,data){return dataUser.access(elem,name,data)},removeData:function(elem,name){dataUser.remove(elem,name)},_data:function(elem,name,data){return dataPriv.access(elem,name,data)},_removeData:function(elem,name){dataPriv.remove(elem,name)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(void 0===key){if(this.length&&(data=dataUser.get(elem),1===elem.nodeType&&!dataPriv.get(elem,"hasDataAttrs"))){for(i=attrs.length;i--;)attrs[i]&&0===(name=attrs[i].name).indexOf("data-")&&(name=camelCase(name.slice(5)),dataAttr(elem,name,data[name]));dataPriv.set(elem,"hasDataAttrs",!0)}return data}return"object"==typeof key?this.each(function(){dataUser.set(this,key)}):access(this,function(value){var data;if(elem&&void 0===value)return void 0!==(data=dataUser.get(elem,key))?data:void 0!==(data=dataAttr(elem,key))?data:void 0;this.each(function(){dataUser.set(this,key,value)})},null,value,arguments.length>1,null,!0)},removeData:function(key){return this.each(function(){dataUser.remove(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=dataPriv.get(elem,type),data&&(!queue||Array.isArray(data)?queue=dataPriv.access(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type);"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,function(){jQuery.dequeue(elem,type)},hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key])})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.length<setter?jQuery.queue(this[0],type):void 0===data?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type),"fx"===type&&"inprogress"!==queue[0]&&jQuery.dequeue(this,type)})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){--count||defer.resolveWith(elements,[elements])};for("string"!=typeof type&&(obj=type,type=void 0),type=type||"fx";i--;)(tmp=dataPriv.get(elements[i],type+"queueHooks"))&&tmp.empty&&(count++,tmp.empty.add(resolve));return resolve(),defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),cssExpand=["Top","Right","Bottom","Left"],isHiddenWithinTree=function(elem,el){return"none"===(elem=el||elem).style.display||""===elem.style.display&&jQuery.contains(elem.ownerDocument,elem)&&"none"===jQuery.css(elem,"display")},swap=function(elem,options,callback,args){var ret,name,old={};for(name in options)old[name]=elem.style[name],elem.style[name]=options[name];for(name in ret=callback.apply(elem,args||[]),options)elem.style[name]=old[name];return ret};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){for(initial/=2,unit=unit||initialInUnit[3],initialInUnit=+initial||1;maxIterations--;)jQuery.style(elem,prop,initialInUnit+unit),(1-scale)*(1-(scale=currentValue()/initial||.5))<=0&&(maxIterations=0),initialInUnit/=scale;initialInUnit*=2,jQuery.style(elem,prop,initialInUnit+unit),valueParts=valueParts||[]}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];return display||(temp=doc.body.appendChild(doc.createElement(nodeName)),display=jQuery.css(temp,"display"),temp.parentNode.removeChild(temp),"none"===display&&(display="block"),defaultDisplayMap[nodeName]=display,display)}function showHide(elements,show){for(var display,elem,values=[],index=0,length=elements.length;index<length;index++)(elem=elements[index]).style&&(display=elem.style.display,show?("none"===display&&(values[index]=dataPriv.get(elem,"display")||null,values[index]||(elem.style.display="")),""===elem.style.display&&isHiddenWithinTree(elem)&&(values[index]=getDefaultDisplay(elem))):"none"!==display&&(values[index]="none",dataPriv.set(elem,"display",display)));for(index=0;index<length;index++)null!=values[index]&&(elements[index].style.display=values[index]);return elements}jQuery.fn.extend({show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHiddenWithinTree(this)?jQuery(this).show():jQuery(this).hide()})}});var rcheckableType=/^(?:checkbox|radio)$/i,rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,rscriptType=/^$|^module$|\/(?:java|ecma)script/i,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function getAll(context,tag){var ret;return ret=void 0!==context.getElementsByTagName?context.getElementsByTagName(tag||"*"):void 0!==context.querySelectorAll?context.querySelectorAll(tag||"*"):[],void 0===tag||tag&&nodeName(context,tag)?jQuery.merge([context],ret):ret}function setGlobalEval(elems,refElements){for(var i=0,l=elems.length;i<l;i++)dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"))}wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var div,input,rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){for(var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;i<l;i++)if((elem=elems[i])||0===elem)if("object"===toType(elem))jQuery.merge(nodes,elem.nodeType?[elem]:elem);else if(rhtml.test(elem)){for(tmp=tmp||fragment.appendChild(context.createElement("div")),tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2],j=wrap[0];j--;)tmp=tmp.lastChild;jQuery.merge(nodes,tmp.childNodes),(tmp=fragment.firstChild).textContent=""}else nodes.push(context.createTextNode(elem));for(fragment.textContent="",i=0;elem=nodes[i++];)if(selection&&jQuery.inArray(elem,selection)>-1)ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(fragment.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return fragment}div=document.createDocumentFragment().appendChild(document.createElement("div")),(input=document.createElement("input")).setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,div.innerHTML="<textarea>x</textarea>",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue;var documentElement=document.documentElement,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){for(type in"string"!=typeof selector&&(data=data||selector,selector=void 0),types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=void 0):null==fn&&("string"==typeof selector?(fn=data,data=void 0):(fn=data,data=selector,selector=void 0)),!1===fn)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,(fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)}).guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(elemData)for(handler.handler&&(handler=(handleObjIn=handler).handler,selector=handleObjIn.selector),selector&&jQuery.find.matchesSelector(documentElement,selector),handler.guid||(handler.guid=jQuery.guid++),(events=elemData.events)||(events=elemData.events={}),(eventHandle=elemData.handle)||(eventHandle=elemData.handle=function(e){return void 0!==jQuery&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):void 0}),t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type&&(special=jQuery.event.special[type]||{},type=(selector?special.delegateType:special.bindType)||type,special=jQuery.event.special[type]||{},handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn),(handlers=events[type])||((handlers=events[type]=[]).delegateCount=0,special.setup&&!1!==special.setup.call(elem,data,namespaces,eventHandle)||elem.addEventListener&&elem.addEventListener(type,eventHandle)),special.add&&(special.add.call(elem,handleObj),handleObj.handler.guid||(handleObj.handler.guid=handler.guid)),selector?handlers.splice(handlers.delegateCount++,0,handleObj):handlers.push(handleObj),jQuery.event.global[type]=!0)},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(elemData&&(events=elemData.events)){for(t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)if(type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type){for(special=jQuery.event.special[type]||{},handlers=events[type=(selector?special.delegateType:special.bindType)||type]||[],tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"),origCount=j=handlers.length;j--;)handleObj=handlers[j],!mappedTypes&&origType!==handleObj.origType||handler&&handler.guid!==handleObj.guid||tmp&&!tmp.test(handleObj.namespace)||selector&&selector!==handleObj.selector&&("**"!==selector||!handleObj.selector)||(handlers.splice(j,1),handleObj.selector&&handlers.delegateCount--,special.remove&&special.remove.call(elem,handleObj));origCount&&!handlers.length&&(special.teardown&&!1!==special.teardown.call(elem,namespaces,elemData.handle)||jQuery.removeEvent(elem,type,elemData.handle),delete events[type])}else for(type in events)jQuery.event.remove(elem,type+types[t],handler,selector,!0);jQuery.isEmptyObject(events)&&dataPriv.remove(elem,"handle events")}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,event=jQuery.event.fix(nativeEvent),args=new Array(arguments.length),handlers=(dataPriv.get(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};for(args[0]=event,i=1;i<arguments.length;i++)args[i]=arguments[i];if(event.delegateTarget=this,!special.preDispatch||!1!==special.preDispatch.call(this,event)){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,void 0!==(ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args))&&!1===(event.result=ret)&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!("click"===event.type&&event.button>=1))for(;cur!==this;cur=cur.parentNode||this)if(1===cur.nodeType&&("click"!==event.type||!0!==cur.disabled)){for(matchedHandlers=[],matchedSelectors={},i=0;i<delegateCount;i++)void 0===matchedSelectors[sel=(handleObj=handlers[i]).selector+" "]&&(matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length),matchedSelectors[sel]&&matchedHandlers.push(handleObj);matchedHandlers.length&&handlerQueue.push({elem:cur,handlers:matchedHandlers})}return cur=this,delegateCount<handlers.length&&handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)}),handlerQueue},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:!0,configurable:!0,get:isFunction(hook)?function(){if(this.originalEvent)return hook(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[name]},set:function(value){Object.defineProperty(this,name,{enumerable:!0,configurable:!0,writable:!0,value:value})}})},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&nodeName(this,"input"))return this.click(),!1},_default:function(event){return nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){void 0!==event.result&&event.originalEvent&&(event.originalEvent.returnValue=event.result)}}}},jQuery.removeEvent=function(elem,type,handle){elem.removeEventListener&&elem.removeEventListener(type,handle)},jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event))return new jQuery.Event(src,props);src&&src.type?(this.originalEvent=src,this.type=src.type,this.isDefaultPrevented=src.defaultPrevented||void 0===src.defaultPrevented&&!1===src.returnValue?returnTrue:returnFalse,this.target=src.target&&3===src.target.nodeType?src.target.parentNode:src.target,this.currentTarget=src.currentTarget,this.relatedTarget=src.relatedTarget):this.type=src,props&&jQuery.extend(this,props),this.timeStamp=src&&src.timeStamp||Date.now(),this[jQuery.expando]=!0},jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},jQuery.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(event){var button=event.button;return null==event.which&&rkeyEvent.test(event.type)?null!=event.charCode?event.charCode:event.keyCode:!event.which&&void 0!==button&&rmouseEvent.test(event.type)?1&button?1:2&button?3:4&button?2:0:event.which}},jQuery.event.addProp),jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,related=event.relatedTarget,handleObj=event.handleObj;return related&&(related===this||jQuery.contains(this,related))||(event.type=handleObj.origType,ret=handleObj.handler.apply(this,arguments),event.type=fix),ret}}}),jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj)return handleObj=types.handleObj,jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler),this;if("object"==typeof types){for(type in types)this.off(type,selector,types[type]);return this}return!1!==selector&&"function"!=typeof selector||(fn=selector,selector=void 0),!1===fn&&(fn=returnFalse),this.each(function(){jQuery.event.remove(this,types,fn,selector)})}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){return nodeName(elem,"table")&&nodeName(11!==content.nodeType?content:content.firstChild,"tr")&&jQuery(elem).children("tbody")[0]||elem}function disableScript(elem){return elem.type=(null!==elem.getAttribute("type"))+"/"+elem.type,elem}function restoreScript(elem){return"true/"===(elem.type||"").slice(0,5)?elem.type=elem.type.slice(5):elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(1===dest.nodeType){if(dataPriv.hasData(src)&&(pdataOld=dataPriv.access(src),pdataCur=dataPriv.set(dest,pdataOld),events=pdataOld.events))for(type in delete pdataCur.handle,pdataCur.events={},events)for(i=0,l=events[type].length;i<l;i++)jQuery.event.add(dest,type,events[type][i]);dataUser.hasData(src)&&(udataOld=dataUser.access(src),udataCur=jQuery.extend({},udataOld),dataUser.set(dest,udataCur))}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||l>1&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);valueIsFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(first=(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored)).firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(hasScripts=(scripts=jQuery.map(getAll(fragment,"script"),disableScript)).length;i<l;i++)node=fragment,i!==iNoClone&&(node=jQuery.clone(node,!0,!0),hasScripts&&jQuery.merge(scripts,getAll(node,"script"))),callback.call(collection[i],node,i);if(hasScripts)for(doc=scripts[scripts.length-1].ownerDocument,jQuery.map(scripts,restoreScript),i=0;i<hasScripts;i++)node=scripts[i],rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)&&(node.src&&"module"!==(node.type||"").toLowerCase()?jQuery._evalUrl&&jQuery._evalUrl(node.src):DOMEval(node.textContent.replace(rcleanScript,""),doc,node))}return collection}function remove(elem,selector,keepData){for(var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;null!=(node=nodes[i]);i++)keepData||1!==node.nodeType||jQuery.cleanData(getAll(node)),node.parentNode&&(keepData&&jQuery.contains(node.ownerDocument,node)&&setGlobalEval(getAll(node,"script")),node.parentNode.removeChild(node));return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,src,dest,nodeName,clone=elem.cloneNode(!0),inPage=jQuery.contains(elem.ownerDocument,elem);if(!(support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),i=0,l=(srcElements=getAll(elem)).length;i<l;i++)src=srcElements[i],dest=destElements[i],void 0,"input"===(nodeName=dest.nodeName.toLowerCase())&&rcheckableType.test(src.type)?dest.checked=src.checked:"input"!==nodeName&&"textarea"!==nodeName||(dest.defaultValue=src.defaultValue);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0,l=srcElements.length;i<l;i++)cloneCopyEvent(srcElements[i],destElements[i]);else cloneCopyEvent(elem,clone);return(destElements=getAll(clone,"script")).length>0&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),clone},cleanData:function(elems){for(var data,elem,type,special=jQuery.event.special,i=0;void 0!==(elem=elems[i]);i++)if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);elem[dataPriv.expando]=void 0}elem[dataUser.expando]&&(elem[dataUser.expando]=void 0)}}}),jQuery.fn.extend({detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return void 0===value?jQuery.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=value)})},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||manipulationTarget(this,elem).appendChild(elem)})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++)1===elem.nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.textContent="");return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(void 0===value&&1===elem.nodeType)return elem.innerHTML;if("string"==typeof value&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++)1===(elem=this[i]||{}).nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.innerHTML=value);elem=0}catch(e){}}elem&&this.empty().append(value)},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;jQuery.inArray(this,ignored)<0&&(jQuery.cleanData(getAll(this)),parent&&parent.replaceChild(elem,this))},ignored)}}),jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){for(var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;i<=last;i++)elems=i===last?this:this.clone(!0),jQuery(insert[i])[original](elems),push.apply(ret,elems.get());return this.pushStack(ret)}});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i"),getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},rboxStyle=new RegExp(cssExpand.join("|"),"i");function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return(computed=computed||getStyles(elem))&&(""!==(ret=computed.getPropertyValue(name)||computed[name])||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth)),void 0!==ret?ret+"":ret}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(!conditionFn())return(this.get=hookFn).apply(this,arguments);delete this.get}}}!function(){function computeStyleTests(){if(div){container.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal="1%"!==divStyle.top,reliableMarginLeftVal=12===roundPixelMeasures(divStyle.marginLeft),div.style.right="60%",pixelBoxStylesVal=36===roundPixelMeasures(divStyle.right),boxSizingReliableVal=36===roundPixelMeasures(divStyle.width),div.style.position="absolute",scrollboxSizeVal=36===div.offsetWidth||"absolute",documentElement.removeChild(container),div=null}}function roundPixelMeasures(measure){return Math.round(parseFloat(measure))}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,jQuery.extend(support,{boxSizingReliable:function(){return computeStyleTests(),boxSizingReliableVal},pixelBoxStyles:function(){return computeStyleTests(),pixelBoxStylesVal},pixelPosition:function(){return computeStyleTests(),pixelPositionVal},reliableMarginLeft:function(){return computeStyleTests(),reliableMarginLeftVal},scrollboxSize:function(){return computeStyleTests(),scrollboxSizeVal}}))}();var rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style;function finalPropName(name){var ret=jQuery.cssProps[name];return ret||(ret=jQuery.cssProps[name]=function(name){if(name in emptyStyle)return name;for(var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if((name=cssPrefixes[i]+capName)in emptyStyle)return name}(name)||name),ret}function setPositiveNumber(elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i="width"===dimension?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content"))return 0;for(;i<4;i+=2)"margin"===box&&(delta+=jQuery.css(elem,box+cssExpand[i],!0,styles)),isBorderBox?("content"===box&&(delta-=jQuery.css(elem,"padding"+cssExpand[i],!0,styles)),"margin"!==box&&(delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles))):(delta+=jQuery.css(elem,"padding"+cssExpand[i],!0,styles),"padding"!==box?delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles):extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles));return!isBorderBox&&computedVal>=0&&(delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-.5))),delta}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),val=curCSS(elem,dimension,styles),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),valueIsBorderBox=isBorderBox;if(rnumnonpx.test(val)){if(!extra)return val;val="auto"}return valueIsBorderBox=valueIsBorderBox&&(support.boxSizingReliable()||val===elem.style[dimension]),("auto"===val||!parseFloat(val)&&"inline"===jQuery.css(elem,"display",!1,styles))&&(val=elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)],valueIsBorderBox=!0),(val=parseFloat(val)||0)+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val)+"px"}function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(isCustomProp||(name=finalPropName(origName)),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],void 0===value)return hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,!1,extra))?ret:style[name];"string"===(type=typeof value)&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value==value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),hooks&&"set"in hooks&&void 0===(value=hooks.set(elem,value,extra))||(isCustomProp?style.setProperty(name,value):style[name]=value))}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name);return rcustomProp.test(name)||(name=finalPropName(origName)),(hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName])&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),void 0===val&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),!0===extra||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed)return!rdisplayswap.test(jQuery.css(elem,"display"))||elem.getClientRects().length&&elem.getBoundingClientRect().width?getWidthOrHeight(elem,dimension,extra):swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra)})},set:function(elem,value,extra){var matches,styles=getStyles(elem),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),subtract=extra&&boxModelAdjustment(elem,dimension,extra,isBorderBox,styles);return isBorderBox&&support.scrollboxSize()===styles.position&&(subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",!1,styles)-.5)),subtract&&(matches=rcssNum.exec(value))&&"px"!==(matches[3]||"px")&&(elem.style[dimension]=value,value=jQuery.css(elem,dimension)),setPositiveNumber(0,value,subtract)}}}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},"margin"!==prefix&&(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){for(styles=getStyles(elem),len=name.length;i<len;i++)map[name[i]]=jQuery.css(elem,name[i],!1,styles);return map}return void 0!==value?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""))&&"auto"!==result?result:0},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){inProgress&&(!1===document.hidden&&window.requestAnimationFrame?window.requestAnimationFrame(schedule):window.setTimeout(schedule,jQuery.fx.interval),jQuery.fx.tick())}function createFxNow(){return window.setTimeout(function(){fxNow=void 0}),fxNow=Date.now()}function genFx(type,includeWidth){var which,i=0,attrs={height:type};for(includeWidth=includeWidth?1:0;i<4;i+=2-includeWidth)attrs["margin"+(which=cssExpand[i])]=attrs["padding"+which]=type;return includeWidth&&(attrs.opacity=attrs.width=type),attrs}function createTween(value,prop,animation){for(var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;index<length;index++)if(tween=collection[index].call(animation,prop,value))return tween}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped)return!1;for(var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),percent=1-(remaining/animation.duration||0),index=0,length=animation.tweens.length;index<length;index++)animation.tweens[index].run(percent);return deferred.notifyWith(elem,[animation,percent,remaining]),percent<1&&length?remaining:(length||deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation]),!1)},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(!0,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);return animation.tweens.push(tween),tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped)return this;for(stopped=!0;index<length;index++)animation.tweens[index].run(1);return gotoEnd?(deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation,gotoEnd])):deferred.rejectWith(elem,[animation,gotoEnd]),this}}),props=animation.props;for(!function(props,specialEasing){var index,name,easing,value,hooks;for(index in props)if(easing=specialEasing[name=camelCase(index)],value=props[index],Array.isArray(value)&&(easing=value[1],value=props[index]=value[0]),index!==name&&(props[name]=value,delete props[index]),(hooks=jQuery.cssHooks[name])&&"expand"in hooks)for(index in value=hooks.expand(value),delete props[name],value)index in props||(props[index]=value[index],specialEasing[index]=easing);else specialEasing[name]=easing}(props,animation.opts.specialEasing);index<length;index++)if(result=Animation.prefilters[index].call(animation,elem,props,animation.opts))return isFunction(result.stop)&&(jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result)),result;return jQuery.map(props,createTween,animation),isFunction(animation.opts.start)&&animation.opts.start.call(elem,animation),animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always),jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue})),animation}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){isFunction(props)?(callback=props,props=["*"]):props=props.match(rnothtmlwhite);for(var prop,index=0,length=props.length;index<length;index++)prop=props[index],Animation.tweeners[prop]=Animation.tweeners[prop]||[],Animation.tweeners[prop].unshift(callback)},prefilters:[function(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");for(prop in opts.queue||(null==(hooks=jQuery._queueHooks(elem,"fx")).unqueued&&(hooks.unqueued=0,oldfire=hooks.empty.fire,hooks.empty.fire=function(){hooks.unqueued||oldfire()}),hooks.unqueued++,anim.always(function(){anim.always(function(){hooks.unqueued--,jQuery.queue(elem,"fx").length||hooks.empty.fire()})})),props)if(value=props[prop],rfxtypes.test(value)){if(delete props[prop],toggle=toggle||"toggle"===value,value===(hidden?"hide":"show")){if("show"!==value||!dataShow||void 0===dataShow[prop])continue;hidden=!0}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}if((propTween=!jQuery.isEmptyObject(props))||!jQuery.isEmptyObject(orig))for(prop in isBox&&1===elem.nodeType&&(opts.overflow=[style.overflow,style.overflowX,style.overflowY],null==(restoreDisplay=dataShow&&dataShow.display)&&(restoreDisplay=dataPriv.get(elem,"display")),"none"===(display=jQuery.css(elem,"display"))&&(restoreDisplay?display=restoreDisplay:(showHide([elem],!0),restoreDisplay=elem.style.display||restoreDisplay,display=jQuery.css(elem,"display"),showHide([elem]))),("inline"===display||"inline-block"===display&&null!=restoreDisplay)&&"none"===jQuery.css(elem,"float")&&(propTween||(anim.done(function(){style.display=restoreDisplay}),null==restoreDisplay&&(display=style.display,restoreDisplay="none"===display?"":display)),style.display="inline-block")),opts.overflow&&(style.overflow="hidden",anim.always(function(){style.overflow=opts.overflow[0],style.overflowX=opts.overflow[1],style.overflowY=opts.overflow[2]})),propTween=!1,orig)propTween||(dataShow?"hidden"in dataShow&&(hidden=dataShow.hidden):dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay}),toggle&&(dataShow.hidden=!hidden),hidden&&showHide([elem],!0),anim.done(function(){for(prop in hidden||showHide([elem]),dataPriv.remove(elem,"fxshow"),orig)jQuery.style(elem,prop,orig[prop])})),propTween=createTween(hidden?dataShow[prop]:0,prop,anim),prop in dataShow||(dataShow[prop]=propTween.start,hidden&&(propTween.end=propTween.start,propTween.start=0))}],prefilter:function(callback,prepend){prepend?Animation.prefilters.unshift(callback):Animation.prefilters.push(callback)}}),jQuery.speed=function(speed,easing,fn){var opt=speed&&"object"==typeof speed?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};return jQuery.fx.off?opt.duration=0:"number"!=typeof opt.duration&&(opt.duration in jQuery.fx.speeds?opt.duration=jQuery.fx.speeds[opt.duration]:opt.duration=jQuery.fx.speeds._default),null!=opt.queue&&!0!==opt.queue||(opt.queue="fx"),opt.old=opt.complete,opt.complete=function(){isFunction(opt.old)&&opt.old.call(this),opt.queue&&jQuery.dequeue(this,opt.queue)},opt},jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);(empty||dataPriv.get(this,"finish"))&&anim.stop(!0)};return doAnimation.finish=doAnimation,empty||!1===optall.queue?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop,stop(gotoEnd)};return"string"!=typeof type&&(gotoEnd=clearQueue,clearQueue=type,type=void 0),clearQueue&&!1!==type&&this.queue(type||"fx",[]),this.each(function(){var dequeue=!0,index=null!=type&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index)data[index]&&data[index].stop&&stopQueue(data[index]);else for(index in data)data[index]&&data[index].stop&&rrun.test(index)&&stopQueue(data[index]);for(index=timers.length;index--;)timers[index].elem!==this||null!=type&&timers[index].queue!==type||(timers[index].anim.stop(gotoEnd),dequeue=!1,timers.splice(index,1));!dequeue&&gotoEnd||jQuery.dequeue(this,type)})},finish:function(type){return!1!==type&&(type=type||"fx"),this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;for(data.finish=!0,jQuery.queue(this,type,[]),hooks&&hooks.stop&&hooks.stop.call(this,!0),index=timers.length;index--;)timers[index].elem===this&&timers[index].queue===type&&(timers[index].anim.stop(!0),timers.splice(index,1));for(index=0;index<length;index++)queue[index]&&queue[index].finish&&queue[index].finish.call(this);delete data.finish})}}),jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return null==speed||"boolean"==typeof speed?cssFn.apply(this,arguments):this.animate(genFx(name,!0),speed,easing,callback)}}),jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}}),jQuery.timers=[],jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;for(fxNow=Date.now();i<timers.length;i++)(timer=timers[i])()||timers[i]!==timer||timers.splice(i--,1);timers.length||jQuery.fx.stop(),fxNow=void 0},jQuery.fx.timer=function(timer){jQuery.timers.push(timer),jQuery.fx.start()},jQuery.fx.interval=13,jQuery.fx.start=function(){inProgress||(inProgress=!0,schedule())},jQuery.fx.stop=function(){inProgress=null},jQuery.fx.speeds={slow:600,fast:200,_default:400},jQuery.fn.delay=function(time,type){return time=jQuery.fx&&jQuery.fx.speeds[time]||time,type=type||"fx",this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})},function(){var input=document.createElement("input"),opt=document.createElement("select").appendChild(document.createElement("option"));input.type="checkbox",support.checkOn=""!==input.value,support.optSelected=opt.selected,(input=document.createElement("input")).value="t",input.type="radio",support.radioValue="t"===input.value}();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return void 0===elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:void 0)),void 0!==value?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:null==(ret=jQuery.find.attr(elem,name))?void 0:ret)},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)elem.removeAttribute(name)}}),boolHook={set:function(elem,value,name){return!1===value?jQuery.removeAttr(elem,name):elem.setAttribute(name,name),name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();return isXML||(handle=attrHandle[lowercaseName],attrHandle[lowercaseName]=ret,ret=null!=getter(elem,name,isXML)?lowercaseName:null,attrHandle[lowercaseName]=handle),ret}});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;function stripAndCollapse(value){return(value.match(rnothtmlwhite)||[]).join(" ")}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||""}function classesToArray(value){return Array.isArray(value)?value:"string"==typeof value&&value.match(rnothtmlwhite)||[]}jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name]})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),void 0!==value?hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&parent.parentNode&&parent.parentNode.selectedIndex,null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)for(;cur.indexOf(" "+clazz+" ")>-1;)cur=cur.replace(" "+clazz+" "," ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value,isValidValue="string"===type||Array.isArray(value);return"boolean"==typeof stateVal&&isValidValue?stateVal?this.addClass(value):this.removeClass(value):isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if(isValidValue)for(i=0,self=jQuery(this),classNames=classesToArray(value);className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else void 0!==value&&"boolean"!==type||((className=getClass(this))&&dataPriv.set(this,"__className__",className),this.setAttribute&&this.setAttribute("class",className||!1===value?"":dataPriv.get(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1)return!0;return!1}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];return arguments.length?(valueIsFunction=isFunction(value),this.each(function(i){var val;1===this.nodeType&&(null==(val=valueIsFunction?value.call(this,i,jQuery(this).val()):value)?val="":"number"==typeof val?val+="":Array.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),(hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in hooks&&void 0!==hooks.set(this,val,"value")||(this.value=val))})):elem?(hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()])&&"get"in hooks&&void 0!==(ret=hooks.get(elem,"value"))?ret:"string"==typeof(ret=elem.value)?ret.replace(rreturn,""):null==ret?"":ret:void 0}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:stripAndCollapse(jQuery.text(elem))}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type,values=one?null:[],max=one?index+1:options.length;for(i=index<0?max:one?index:0;i<max;i++)if(((option=options[i]).selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){if(value=jQuery(option).val(),one)return value;values.push(value)}return values},set:function(elem,value){for(var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;i--;)((option=options[i]).selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1)&&(optionSet=!0);return optionSet||(elem.selectedIndex=-1),values}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value))return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})}),support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];if(cur=lastElement=tmp=elem=elem||document,3!==elem.nodeType&&8!==elem.nodeType&&!rfocusMorph.test(type+jQuery.event.triggered)&&(type.indexOf(".")>-1&&(type=(namespaces=type.split(".")).shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,(event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event)).isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=void 0,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||!1!==special.trigger.apply(elem,data))){if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)lastElement=cur,event.type=i>1?bubbleType:special.bindType||type,(handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle"))&&handle.apply(cur,data),(handle=ontype&&cur[ontype])&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),!1===event.result&&event.preventDefault());return event.type=type,onlyHandlers||event.isDefaultPrevented()||special._default&&!1!==special._default.apply(eventPath.pop(),data)||!acceptData(elem)||ontype&&isFunction(elem[type])&&!isWindow(elem)&&((tmp=elem[ontype])&&(elem[ontype]=null),jQuery.event.triggered=type,event.isPropagationStopped()&&lastElement.addEventListener(type,stopPropagationCallback),elem[type](),event.isPropagationStopped()&&lastElement.removeEventListener(type,stopPropagationCallback),jQuery.event.triggered=void 0,tmp&&(elem[ontype]=tmp)),event.result}},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:!0});jQuery.event.trigger(e,null,elem)}}),jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem)return jQuery.event.trigger(type,data,elem,!0)}}),support.focusin||jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);attaches||doc.addEventListener(orig,handler,!0),dataPriv.access(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;attaches?dataPriv.access(doc,fix,attaches):(doc.removeEventListener(orig,handler,!0),dataPriv.remove(doc,fix))}}});var location=window.location,nonce=Date.now(),rquery=/\?/;jQuery.parseXML=function(data){var xml;if(!data||"string"!=typeof data)return null;try{xml=(new window.DOMParser).parseFromString(data,"text/xml")}catch(e){xml=void 0}return xml&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj))jQuery.each(obj,function(i,v){traditional||rbracket.test(prefix)?add(prefix,v):buildParams(prefix+"["+("object"==typeof v&&null!=v?i:"")+"]",v,traditional,add)});else if(traditional||"object"!==toType(obj))add(prefix,obj);else for(name in obj)buildParams(prefix+"["+name+"]",obj[name],traditional,add)}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(null==value?"":value)};if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:Array.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/gm,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){"string"!=typeof dataTypeExpression&&(func=dataTypeExpression,dataTypeExpression="*");var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func))for(;dataType=dataTypes[i++];)"+"===dataType[0]?(dataType=dataType.slice(1)||"*",(structure[dataType]=structure[dataType]||[]).unshift(func)):(structure[dataType]=structure[dataType]||[]).push(func)}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;return inspected[dataType]=!0,jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);return"string"!=typeof dataTypeOrTransport||seekingTransport||inspected[dataTypeOrTransport]?seekingTransport?!(selected=dataTypeOrTransport):void 0:(options.dataTypes.unshift(dataTypeOrTransport),inspect(dataTypeOrTransport),!1)}),selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src)void 0!==src[key]&&((flatOptions[key]?target:deep||(deep={}))[key]=src[key]);return deep&&jQuery.extend(!0,target,deep),target}originAnchor.href=location.href,jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(location.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){"object"==typeof url&&(options=url,url=void 0),options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return completed?responseHeadersString:null},setRequestHeader:function(name,value){return null==completed&&(name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return null==completed&&(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(completed)jqXHR.always(map[jqXHR.status]);else for(code in map)statusCode[code]=[statusCode[code],map[code]];return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR),s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""],null==s.crossDomain){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url,urlAnchor.href=urlAnchor.href,s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!=urlAnchor.protocol+"//"+urlAnchor.host}catch(e){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),completed)return jqXHR;for(i in(fireGlobals=jQuery.event&&s.global)&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url.replace(rhash,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(r20,"+")):(uncached=s.url.slice(cacheURL.length),s.data&&(s.processData||"string"==typeof s.data)&&(cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),!1===s.cache&&(cacheURL=cacheURL.replace(rantiCache,"$1"),uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce+++uncached),s.url=cacheURL+uncached),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&!1!==s.contentType||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]),s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(callbackContext,jqXHR,s)||completed))return jqXHR.abort();if(strAbort="abort",completeDeferred.add(s.complete),jqXHR.done(s.success),jqXHR.fail(s.error),transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),completed)return jqXHR;s.async&&s.timeout>0&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{completed=!1,transport.send(requestHeaders,done)}catch(e){if(completed)throw e;done(-1,e)}}else done(-1,"No Transport");function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;completed||(completed=!0,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=void 0,responseHeadersString=headers||"",jqXHR.readyState=status>0?4:0,isSuccess=status>=200&&status<300||304===status,responses&&(response=function(s,jqXHR,responses){for(var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;"*"===dataTypes[0];)dataTypes.shift(),void 0===ct&&(ct=s.mimeType||jqXHR.getResponseHeader("Content-Type"));if(ct)for(type in contents)if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}if(dataTypes[0]in responses)finalDataType=dataTypes[0];else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}firstDataType||(firstDataType=type)}finalDataType=finalDataType||firstDataType}if(finalDataType)return finalDataType!==dataTypes[0]&&dataTypes.unshift(finalDataType),responses[finalDataType]}(s,jqXHR,responses)),response=function(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1])for(conv in s.converters)converters[conv.toLowerCase()]=s.converters[conv];for(current=dataTypes.shift();current;)if(s.responseFields[current]&&(jqXHR[s.responseFields[current]]=response),!prev&&isSuccess&&s.dataFilter&&(response=s.dataFilter(response,s.dataType)),prev=current,current=dataTypes.shift())if("*"===current)current=prev;else if("*"!==prev&&prev!==current){if(!(conv=converters[prev+" "+current]||converters["* "+current]))for(conv2 in converters)if((tmp=conv2.split(" "))[1]===current&&(conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]])){!0===conv?conv=converters[conv2]:!0!==converters[conv2]&&(current=tmp[0],dataTypes.unshift(tmp[1]));break}if(!0!==conv)if(conv&&s.throws)response=conv(response);else try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}return{state:"success",data:response}}(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&((modified=jqXHR.getResponseHeader("Last-Modified"))&&(jQuery.lastModified[cacheURL]=modified),(modified=jqXHR.getResponseHeader("etag"))&&(jQuery.etag[cacheURL]=modified)),204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,isSuccess=!(error=response.error))):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=void 0,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,void 0,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return isFunction(data)&&(type=type||callback,callback=data,data=void 0),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},jQuery.fn.extend({wrapAll:function(html){var wrap;return this[0]&&(isFunction(html)&&(html=html.call(this[0])),wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstElementChild;)elem=elem.firstElementChild;return elem}).append(this)),this},wrapInner:function(html){return isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html)})},unwrap:function(selector){return this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes)}),this}}),jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem)},jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length)},jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,support.ajax=xhrSupported=!!xhrSupported,jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain)return{send:function(headers,complete){var i,xhr=options.xhr();if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];for(i in options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest"),headers)xhr.setRequestHeader(i,headers[i]);callback=function(type){return function(){callback&&(callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null,"abort"===type?xhr.abort():"error"===type?"number"!=typeof xhr.status?complete(0,"error"):complete(xhr.status,xhr.statusText):complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,"text"!==(xhr.responseType||"text")||"string"!=typeof xhr.responseText?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders()))}},xhr.onload=callback(),errorCallback=xhr.onerror=xhr.ontimeout=callback("error"),void 0!==xhr.onabort?xhr.onabort=errorCallback:xhr.onreadystatechange=function(){4===xhr.readyState&&window.setTimeout(function(){callback&&errorCallback()})},callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null)}catch(e){if(callback)throw e}},abort:function(){callback&&callback()}}}),jQuery.ajaxPrefilter(function(s){s.crossDomain&&(s.contents.script=!1)}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){void 0===s.cache&&(s.cache=!1),s.crossDomain&&(s.type="GET")}),jQuery.ajaxTransport("script",function(s){var script,callback;if(s.crossDomain)return{send:function(_,complete){script=jQuery("<script>").prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove(),callback=null,evt&&complete("error"===evt.type?404:200,evt.type)}),document.head.appendChild(script[0])},abort:function(){callback&&callback()}}});var body,oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=!1!==s.jsonp&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):!1!==s.jsonp&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){void 0===overwritten?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=void 0}),"script"}),support.createHTMLDocument=((body=document.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===body.childNodes.length),jQuery.parseHTML=function(data,context,keepScripts){return"string"!=typeof data?[]:("boolean"==typeof context&&(keepScripts=context,context=!1),context||(support.createHTMLDocument?((base=(context=document.implementation.createHTMLDocument("")).createElement("base")).href=document.location.href,context.head.appendChild(base)):context=document),parsed=rsingleTag.exec(data),scripts=!keepScripts&&[],parsed?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes)));var base,parsed,scripts},jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");return off>-1&&(selector=stripAndCollapse(url.slice(off)),url=url.slice(0,off)),isFunction(params)?(callback=params,params=void 0):params&&"object"==typeof params&&(type="POST"),self.length>0&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),("absolute"===position||"fixed"===position)&&(curCSSTop+curCSSLeft).indexOf("auto")>-1?(curTop=(curPosition=curElem.position()).top,curLeft=curPosition.left):(curTop=parseFloat(curCSSTop)||0,curLeft=parseFloat(curCSSLeft)||0),isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return void 0===options?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var rect,win,elem=this[0];return elem?elem.getClientRects().length?(rect=elem.getBoundingClientRect(),win=elem.ownerDocument.defaultView,{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if("fixed"===jQuery.css(elem,"position"))offset=elem.getBoundingClientRect();else{for(offset=this.offset(),doc=elem.ownerDocument,offsetParent=elem.offsetParent||doc.documentElement;offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.parentNode;offsetParent&&offsetParent!==elem&&1===offsetParent.nodeType&&((parentOffset=jQuery(offsetParent).offset()).top+=jQuery.css(offsetParent,"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",!0))}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)?win=elem:9===elem.nodeType&&(win=elem.defaultView),void 0===val)return win?win[prop]:elem[method];win?win.scrollTo(top?win.pageXOffset:val,top?val:win.pageYOffset):elem[method]=val},method,val,arguments.length)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(!0===margin||!0===value?"margin":"border");return access(this,function(elem,type,value){var doc;return isWindow(elem)?0===funcName.indexOf("outer")?elem["inner"+name]:elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):void 0===value?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:void 0,chainable)}})}),jQuery.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.proxy=function(fn,context){var tmp,args,proxy;if("string"==typeof context&&(tmp=fn[context],context=fn,fn=tmp),isFunction(fn))return args=slice.call(arguments,2),(proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))}).guid=fn.guid=fn.guid||jQuery.guid++,proxy},jQuery.holdReady=function(hold){hold?jQuery.readyWait++:jQuery.ready(!0)},jQuery.isArray=Array.isArray,jQuery.parseJSON=JSON.parse,jQuery.nodeName=nodeName,jQuery.isFunction=isFunction,jQuery.isWindow=isWindow,jQuery.camelCase=camelCase,jQuery.type=toType,jQuery.now=Date.now,jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return("number"===type||"string"===type)&&!isNaN(obj-parseFloat(obj))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return jQuery});var _jQuery=window.jQuery,_$=window.$;return jQuery.noConflict=function(deep){return window.$===jQuery&&(window.$=_$),deep&&window.jQuery===jQuery&&(window.jQuery=_jQuery),jQuery},noGlobal||(window.jQuery=window.$=jQuery),jQuery}),function(){!function(){for(var lastTime=0,vendors=["ms","moz","webkit","o"],x=0;x<vendors.length&&!window.requestAnimationFrame;++x)window.requestAnimationFrame=window[vendors[x]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[vendors[x]+"CancelAnimationFrame"]||window[vendors[x]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(callback,element){var currTime=(new Date).getTime(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=window.setTimeout(function(){callback(currTime+timeToCall)},timeToCall);return lastTime=currTime+timeToCall,id}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(id){clearTimeout(id)})}(),window.Typewriter=function(element,options){return this._settings={cursorAnimationPaused:!1,opacityIncreasing:!1,currentOpacity:1,delayedQue:[],delayItemsCount:0,eventQue:[],calledEvents:[],eventRunning:!1,timeout:!1,delayExecution:!1,fps:.06,typingFrameCount:0,stringToTypeHTMLArray:[],currentTypedCharacters:[],typing:!1,usedIDs:[],charAmountToDelete:!1,userOptions:{},eventLoopRerun:0},element?"object"!=typeof options?console.error("Typewriter only accepts the options as an object."):(this._settings.userOptions=options,this.default_options={strings:!1,cursorClassName:"typewriter-cursor",cursor:"|",animateCursor:!0,blinkSpeed:50,typingSpeed:"natural",deleteSpeed:"natural",charSpanClassName:"typewriter-char",wrapperClassName:"typewriter-wrapper",loop:!1,autoStart:!1,devMode:!1},this.options=this._setupOptions(options),this.el=element,this._setupTypwriterWrapper(),this._startCursorAnimation(),void(!0===this.options.autoStart&&this.options.strings&&this.typeOutAllStrings())):console.error("Please choose an DOM element so that type writer can display itself.")};var TypewriterPrototype=window.Typewriter.prototype;TypewriterPrototype.stop=function(){return this._addToEventQue(this._stopEventLoop),this},TypewriterPrototype.start=function(){return this._startEventLoop(),this},TypewriterPrototype.rerun=function(){return this._addToEventQue(this._rerunCalledEvents),this},TypewriterPrototype.typeString=function(string){if(!string||"string"!=typeof string)return console.error("Please enter a string as the paramater.");var string_chars=this._getCharacters(string);return this._addToEventQue([this._typeCharacters,[string_chars]]),this},TypewriterPrototype.deleteAll=function(){return this._addToEventQue([this._deleteChars,["all"]]),this},TypewriterPrototype.deleteChars=function(amount){return this._addToEventQue([this._deleteChars,[amount]]),this},TypewriterPrototype.pauseFor=function(ms){return this._addToEventQue([this._pauseFor,[ms]]),this},TypewriterPrototype.typeOutAllStrings=function(){var characters_array=this._getStringsAsCharsArray();if(1===characters_array.length)this._typeCharacters(characters_array[0]);else for(var i=0,length=characters_array.length;i<length;i++)this._addToEventQue([this._typeCharacters,[characters_array[i]]]),this.pauseFor(this._randomInteger(1500,2500)),this.deleteAll(),this.pauseFor(this._randomInteger(1500,2500));return this},TypewriterPrototype.changeSettings=function(new_settings){return new_settings||"object"==typeof new_settings?(this._addToEventQue([this._changeSettings,[JSON.stringify(new_settings)]]),this):console.error("Typewriter will only accept an object as the settings.")},TypewriterPrototype.changeBlinkSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({blinkSpeed:new_speed}),this):console.error("Please enter a number for the new blink speed.")},TypewriterPrototype.changeTypingSpeed=function(new_speed){if(!new_speed&&"number"!=typeof new_speed)return console.error("Please enter a number for the new typing speed.");return this.changeSettings({typingSpeed:new_speed}),this},TypewriterPrototype.changeDeleteSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({changeDeleteSpeed:new_speed}),this):console.error("Please enter a number for the new delete speed.")},TypewriterPrototype._rerunCalledEvents=function(){this._settings.currentTypedCharacters.length>0?(this.deleteAll(),this._resetEventLoop("rerunCalledEvents")):(this._settings.eventQue=this._settings.calledEvents,this._settings.calledEvents=[],this.options=this._setupOptions(this._settings.userOptions),this._settings.usedIDs=[],this.charAmountToDelete=!1,this._startEventLoop())},TypewriterPrototype._deleteChars=function(amount){return amount&&(this._settings.charAmountToDelete=amount),this._deletingCharIdsAnimation=window.requestAnimationFrame(this._deletingCharAnimationFrame.bind(this)),this},TypewriterPrototype._pauseFor=function(ms){var self=this;self._settings.eventRunning=!0,setTimeout(function(){self._resetEventLoop("pauseFor")},ms)},TypewriterPrototype._changeSettings=function(new_settings){this.options=this._setupOptions(JSON.parse(new_settings[0])),this._resetEventLoop("changeSettings"),this.options.devMode&&console.log("New settings",this.options)},TypewriterPrototype._deletingCharAnimationFrame=function(){var self=this,delete_speed=this.options.deleteSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName,current_typed_char_ids=self._settings.currentTypedCharacters,char_amount_to_delete=self._settings.charAmountToDelete;if(!self._settings.charAmountToDelete||0===self._settings.charAmountToDelete||0===current_typed_char_ids)return self._resetEventLoop("deletingCharAnimationFrame"),!0;"natural"==delete_speed&&(delete_speed=self._randomInteger(50,150)),"all"==char_amount_to_delete&&(char_amount_to_delete=current_typed_char_ids.length,self._settings.charAmountToDelete=char_amount_to_delete),setTimeout(function(){if(self._settings.charAmountToDelete){var last_typed_char_index=current_typed_char_ids.length-1,get_last_typed_char=current_typed_char_ids[last_typed_char_index];self._settings.currentTypedCharacters.splice(last_typed_char_index,1);var char_to_delete_el=document.getElementById(get_last_typed_char);if(char_to_delete_el)self.el.querySelector("."+typewriter_wrapper_class_name).removeChild(char_to_delete_el),self._settings.charAmountToDelete=char_amount_to_delete-1,self.options.devMode&&console.log("Deleted char with ID",get_last_typed_char)}self._deletingCharIdsAnimation=window.requestAnimationFrame(self._deletingCharAnimationFrame.bind(self))},delete_speed)},TypewriterPrototype._setupOptions=function(new_options){var merged_options={};for(var attrname in this.default_options)merged_options[attrname]=this.default_options[attrname];if(this._settings.userOptions)for(var attrname in this._settings.userOptions)merged_options[attrname]=this._settings.userOptions[attrname];for(var attrname in new_options)merged_options[attrname]=new_options[attrname];return merged_options},TypewriterPrototype._addToEventQue=function(event){this._settings.eventQue.push(event),this._settings.eventQue.length>0&&!this._settings.eventRunning&&this.options.autoStart&&this._startEventLoop()},TypewriterPrototype._startEventLoop=function(){if(this.options.devMode&&console.log("Event loop started."),!this._settings.eventRunning){if(this._settings.eventQue.length>0){this.eventLoopRerun=0;var first_event=this._settings.eventQue[0];"function"==typeof first_event?(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event.call(this),this.options.devMode&&console.log("Event started.")):first_event instanceof Array&&"function"==typeof first_event[0]&&first_event[1]instanceof Array&&(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event[0].call(this,first_event[1]),this.options.devMode&&console.log("Event started."))}this._eventQueAnimation=window.requestAnimationFrame(this._startEventLoop.bind(this))}if(!this._settings.eventRunning&&this._settings.eventQue.length<=0){var self=this;return self._stopEventLoop(),void setTimeout(function(){self.options.loop&&(self.eventLoopRerun++,self.options.devMode&&console.log("Before Loop State",self._settings),self.eventLoopRerun>4?(console.error("Maximum amount of loop retries reached."),self._stopEventLoop()):(self.options.devMode&&console.log("Looping events."),self._rerunCalledEvents()))},1e3)}},TypewriterPrototype._resetEventLoop=function(name){var event_name=name||"Event";this._settings.eventRunning=!1,this._startEventLoop(),this.options.devMode&&console.log(event_name,"Finished")},TypewriterPrototype._stopEventLoop=function(){window.cancelAnimationFrame(this._eventQueAnimation),this.options.devMode&&console.log("Event loop stopped.")},TypewriterPrototype._setupTypwriterWrapper=function(){var typewriter_wrapper_class_name=this.options.wrapperClassName,typewriter_wrapper=document.createElement("span");typewriter_wrapper.className=typewriter_wrapper_class_name,this.el.innerHTML="",this.el.appendChild(typewriter_wrapper)},TypewriterPrototype._typeCharacters=function(characters_array){return this._settings.stringToTypeHTMLArray=this._convertCharsToHTML(characters_array),this._typingAnimation=window.requestAnimationFrame(this._typingAnimationFrame.bind(this,characters_array.length)),this},TypewriterPrototype._typingAnimationFrame=function(total_items){var self=this,typing_speed=this.options.typingSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName;if(0==self._settings.stringToTypeHTMLArray.length)return window.cancelAnimationFrame(self._typingAnimation),this._resetEventLoop("typingAnimationFrame"),!0;"natural"==typing_speed&&(typing_speed=this._randomInteger(50,150)),setTimeout(function(){self.el.innerHTML;var item_to_type=self._settings.stringToTypeHTMLArray[0];self.el.querySelector("."+typewriter_wrapper_class_name).appendChild(item_to_type.el),self._settings.currentTypedCharacters.push(item_to_type.id),self._settings.stringToTypeHTMLArray.splice(0,1),self._typingAnimation=window.requestAnimationFrame(self._typingAnimationFrame.bind(self,total_items)),self.options.devMode&&console.log("Typed",item_to_type)},typing_speed)},TypewriterPrototype._convertCharsToHTML=function(chars){for(var chars_html_wrap_array=[],char_class_name=this.options.charSpanClassName,chars_array=chars[0],i=0,length=chars_array.length;i<length;i++){var char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" typewriter-item-"+i,char_element.innerHTML=chars_array[i],chars_html_wrap_array.push({id:char_id,el:char_element})}return chars_html_wrap_array},TypewriterPrototype._getCharacters=function(string){return"string"==typeof string&&string.split("")},TypewriterPrototype._getStringsAsCharsArray=function(){var strings_array_check=this.options.strings instanceof Array,strings_string_check="string"==typeof this.options.strings;if(!strings_array_check)return strings_string_check?[this.options.strings.split("")]:console.error("Typewriter only accepts strings or an array of strings as the input.");for(var strings_chars_array=[],i=0,length=this.options.strings.length;i<length;i++){var string_chars=this._getCharacters(this.options.strings[i]);if(!string_chars){console.error("Please enter only strings.");break}strings_chars_array.push(string_chars)}return strings_chars_array},TypewriterPrototype._cursorAnimationFrame=function(){if(!this._settings.cursorAnimationPaused){var opacity_amount=.001*this.options.blinkSpeed,cursor_el=this.el.querySelector(".typewriter-cursor");1==this._settings.opacityIncreasing&&(this._settings.currentOpacity>=1&&(this._settings.opacityIncreasing=!1,this._settings.currentOpacity=1),this._settings.currentOpacity+=opacity_amount),0==this._settings.opacityIncreasing&&(this._settings.currentOpacity<=0&&(this._settings.opacityIncreasing=!0,this._settings.currentOpacity=0),this._settings.currentOpacity-=opacity_amount),cursor_el.style.opacity=this._settings.currentOpacity,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))}},TypewriterPrototype.appendText=function(text){return this._addToEventQue([this._appendText,[text]]),this},TypewriterPrototype._appendText=function(text){var char_class_name=this.options.charSpanClassName,char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" dom-appended",char_element.innerHTML=text;var items=[];items.push({id:char_id,el:char_element}),this._settings.stringToTypeHTMLArray=items,window.requestAnimationFrame(this._typingAnimationFrame.bind(this,1))},TypewriterPrototype._startCursorAnimation=function(){var cursor=this.options.cursor,cursor_class_name=this.options.cursorClassName,cursor_element=document.createElement("span");cursor_element.className=cursor_class_name,cursor_element.innerHTML=cursor,this.el.appendChild(cursor_element),this.options.animateCursor&&(this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this)))},TypewriterPrototype._pauseCursorAnimation=function(){this._settings.cursorAnimationPaused||(window.cancelAnimationFrame(this._cursorAnimation),this._settings.cursorAnimationPaused=!0)},TypewriterPrototype._restartCursorAnimation=function(){if(!this._settings.cursorAnimationPaused)return console.error("Cursor animation is already running.");this._settings.cursorAnimationPaused=!1,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))},TypewriterPrototype._randomInteger=function(min,max){return Math.floor(Math.random()*(max-min+1))+min},TypewriterPrototype._randomID=function(){for(var text="",possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",i=0;i<this._randomInteger(5,15);i++)text+=possible.charAt(Math.floor(Math.random()*possible.length));return text},TypewriterPrototype._generateUniqueID=function(){var temp_id=this._randomID();return-1==this._settings.usedIDs.indexOf(temp_id)?(this._settings.usedIDs.push(temp_id),temp_id):this._generateUniqueID.call(this)}}(),function(root,factory){"function"==typeof define&&define.amd?define(["moment"],factory):"object"==typeof module&&module.exports?module.exports=factory(require("moment")):factory(root.moment)}(this,function(moment){var cachedGuess,zones={},links={},names={},guesses={},momentVersion=moment.version.split("."),major=+momentVersion[0],minor=+momentVersion[1];function charCodeToInt(charCode){return charCode>96?charCode-87:charCode>64?charCode-29:charCode-48}function unpackBase60(string){var i=0,parts=string.split("."),whole=parts[0],fractional=parts[1]||"",multiplier=1,out=0,sign=1;for(45===string.charCodeAt(0)&&(i=1,sign=-1);i<whole.length;i++)out=60*out+charCodeToInt(whole.charCodeAt(i));for(i=0;i<fractional.length;i++)multiplier/=60,out+=charCodeToInt(fractional.charCodeAt(i))*multiplier;return out*sign}function arrayToInt(array){for(var i=0;i<array.length;i++)array[i]=unpackBase60(array[i])}function mapIndices(source,indices){var i,out=[];for(i=0;i<indices.length;i++)out[i]=source[indices[i]];return out}function unpack(string){var data=string.split("|"),offsets=data[2].split(" "),indices=data[3].split(""),untils=data[4].split(" ");return arrayToInt(offsets),arrayToInt(indices),arrayToInt(untils),function(array,length){for(var i=0;i<length;i++)array[i]=Math.round((array[i-1]||0)+6e4*array[i]);array[length-1]=1/0}(untils,indices.length),{name:data[0],abbrs:mapIndices(data[1].split(" "),indices),offsets:mapIndices(offsets,indices),untils:untils,population:0|data[5]}}function Zone(packedString){packedString&&this._set(unpack(packedString))}function OffsetAt(at){var timeString=at.toTimeString(),abbr=timeString.match(/\([a-z ]+\)/i);"GMT"===(abbr=abbr&&abbr[0]?(abbr=abbr[0].match(/[A-Z]/g))?abbr.join(""):void 0:(abbr=timeString.match(/[A-Z]{3,5}/g))?abbr[0]:void 0)&&(abbr=void 0),this.at=+at,this.abbr=abbr,this.offset=at.getTimezoneOffset()}function ZoneScore(zone){this.zone=zone,this.offsetScore=0,this.abbrScore=0}function findChange(low,high){for(var mid,diff;diff=6e4*((high.at-low.at)/12e4|0);)(mid=new OffsetAt(new Date(low.at+diff))).offset===low.offset?low=mid:high=mid;return low}function sortZoneScores(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function addToGuesses(name,offsets){var i,offset;for(arrayToInt(offsets),i=0;i<offsets.length;i++)offset=offsets[i],guesses[offset]=guesses[offset]||{},guesses[offset][name]=!0}function guessesForUserOffsets(offsets){var i,j,guessesOffset,offsetsLength=offsets.length,filteredGuesses={},out=[];for(i=0;i<offsetsLength;i++)for(j in guessesOffset=guesses[offsets[i].offset]||{})guessesOffset.hasOwnProperty(j)&&(filteredGuesses[j]=!0);for(i in filteredGuesses)filteredGuesses.hasOwnProperty(i)&&out.push(names[i]);return out}function rebuildGuess(){try{var intlName=Intl.DateTimeFormat().resolvedOptions().timeZone;if(intlName&&intlName.length>3){var name=names[normalizeName(intlName)];if(name)return name;logError("Moment Timezone found "+intlName+" from the Intl api, but did not have that data loaded.")}}catch(e){}var zoneScore,i,j,offsets=function(){var change,next,i,startYear=(new Date).getFullYear()-2,last=new OffsetAt(new Date(startYear,0,1)),offsets=[last];for(i=1;i<48;i++)(next=new OffsetAt(new Date(startYear,i,1))).offset!==last.offset&&(change=findChange(last,next),offsets.push(change),offsets.push(new OffsetAt(new Date(change.at+6e4)))),last=next;for(i=0;i<4;i++)offsets.push(new OffsetAt(new Date(startYear+i,0,1))),offsets.push(new OffsetAt(new Date(startYear+i,6,1)));return offsets}(),offsetsLength=offsets.length,guesses=guessesForUserOffsets(offsets),zoneScores=[];for(i=0;i<guesses.length;i++){for(zoneScore=new ZoneScore(getZone(guesses[i]),offsetsLength),j=0;j<offsetsLength;j++)zoneScore.scoreOffsetAt(offsets[j]);zoneScores.push(zoneScore)}return zoneScores.sort(sortZoneScores),zoneScores.length>0?zoneScores[0].zone.name:void 0}function normalizeName(name){return(name||"").toLowerCase().replace(/\//g,"_")}function addZone(packed){var i,name,split,normalized;for("string"==typeof packed&&(packed=[packed]),i=0;i<packed.length;i++)normalized=normalizeName(name=(split=packed[i].split("|"))[0]),zones[normalized]=packed[i],names[normalized]=name,addToGuesses(normalized,split[2].split(" "))}function getZone(name,caller){name=normalizeName(name);var link,zone=zones[name];return zone instanceof Zone?zone:"string"==typeof zone?(zone=new Zone(zone),zones[name]=zone,zone):links[name]&&caller!==getZone&&(link=getZone(links[name],getZone))?((zone=zones[name]=new Zone)._set(link),zone.name=names[name],zone):null}function addLink(aliases){var i,alias,normal0,normal1;for("string"==typeof aliases&&(aliases=[aliases]),i=0;i<aliases.length;i++)normal0=normalizeName((alias=aliases[i].split("|"))[0]),normal1=normalizeName(alias[1]),links[normal0]=normal1,names[normal0]=alias[0],links[normal1]=normal0,names[normal1]=alias[1]}function loadData(data){addZone(data.zones),addLink(data.links),tz.dataVersion=data.version}function needsOffset(m){var isUnixTimestamp="X"===m._f||"x"===m._f;return!(!m._a||void 0!==m._tzm||isUnixTimestamp)}function logError(message){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(message)}function tz(input){var args=Array.prototype.slice.call(arguments,0,-1),name=arguments[arguments.length-1],zone=getZone(name),out=moment.utc.apply(null,args);return zone&&!moment.isMoment(input)&&needsOffset(out)&&out.add(zone.parse(out),"minutes"),out.tz(name),out}(major<2||2===major&&minor<6)&&logError("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+moment.version+". See momentjs.com"),Zone.prototype={_set:function(unpacked){this.name=unpacked.name,this.abbrs=unpacked.abbrs,this.untils=unpacked.untils,this.offsets=unpacked.offsets,this.population=unpacked.population},_index:function(timestamp){var i,target=+timestamp,untils=this.untils;for(i=0;i<untils.length;i++)if(target<untils[i])return i},parse:function(timestamp){var offset,offsetNext,offsetPrev,i,target=+timestamp,offsets=this.offsets,untils=this.untils,max=untils.length-1;for(i=0;i<max;i++)if(offset=offsets[i],offsetNext=offsets[i+1],offsetPrev=offsets[i?i-1:i],offset<offsetNext&&tz.moveAmbiguousForward?offset=offsetNext:offset>offsetPrev&&tz.moveInvalidForward&&(offset=offsetPrev),target<untils[i]-6e4*offset)return offsets[i];return offsets[max]},abbr:function(mom){return this.abbrs[this._index(mom)]},offset:function(mom){return logError("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(mom)]},utcOffset:function(mom){return this.offsets[this._index(mom)]}},ZoneScore.prototype.scoreOffsetAt=function(offsetAt){this.offsetScore+=Math.abs(this.zone.utcOffset(offsetAt.at)-offsetAt.offset),this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g,"")!==offsetAt.abbr&&this.abbrScore++},tz.version="0.5.17",tz.dataVersion="",tz._zones=zones,tz._links=links,tz._names=names,tz.add=addZone,tz.link=addLink,tz.load=loadData,tz.zone=getZone,tz.zoneExists=function zoneExists(name){return zoneExists.didShowError||(zoneExists.didShowError=!0,logError("moment.tz.zoneExists('"+name+"') has been deprecated in favor of !moment.tz.zone('"+name+"')")),!!getZone(name)},tz.guess=function(ignoreCache){return cachedGuess&&!ignoreCache||(cachedGuess=rebuildGuess()),cachedGuess},tz.names=function(){var i,out=[];for(i in names)names.hasOwnProperty(i)&&(zones[i]||zones[links[i]])&&names[i]&&out.push(names[i]);return out.sort()},tz.Zone=Zone,tz.unpack=unpack,tz.unpackBase60=unpackBase60,tz.needsOffset=needsOffset,tz.moveInvalidForward=!0,tz.moveAmbiguousForward=!1;var old,fn=moment.fn;function abbrWrap(old){return function(){return this._z?this._z.abbr(this):old.call(this)}}moment.tz=tz,moment.defaultZone=null,moment.updateOffset=function(mom,keepTime){var offset,zone=moment.defaultZone;void 0===mom._z&&(zone&&needsOffset(mom)&&!mom._isUTC&&(mom._d=moment.utc(mom._a)._d,mom.utc().add(zone.parse(mom),"minutes")),mom._z=zone),mom._z&&(offset=mom._z.utcOffset(mom),Math.abs(offset)<16&&(offset/=60),void 0!==mom.utcOffset?mom.utcOffset(-offset,keepTime):mom.zone(offset,keepTime))},fn.tz=function(name,keepTime){return name?(this._z=getZone(name),this._z?moment.updateOffset(this,keepTime):logError("Moment Timezone has no data for "+name+". See http://momentjs.com/timezone/docs/#/data-loading/."),this):this._z?this._z.name:void 0},fn.zoneName=abbrWrap(fn.zoneName),fn.zoneAbbr=abbrWrap(fn.zoneAbbr),fn.utc=(old=fn.utc,function(){return this._z=null,old.apply(this,arguments)}),moment.tz.setDefault=function(name){return(major<2||2===major&&minor<9)&&logError("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+moment.version+"."),moment.defaultZone=name?getZone(name):null,moment};var momentProperties=moment.momentProperties;return"[object Array]"===Object.prototype.toString.call(momentProperties)?(momentProperties.push("_z"),momentProperties.push("_a")):momentProperties&&(momentProperties._z=null),loadData({version:"2018e",zones:["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5","Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6","Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4","Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT -01 WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|012|-2le00 4i6N0","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3","America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0","America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0","America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0","America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0","America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0","America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0","America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0","America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4","America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2","America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT -04 -03|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|77e4","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2","America/Cuiaba|LMT -04 -03|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|54e4","America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|012342525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 XQp0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5","America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5","America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5","America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5","America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4","America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5","America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842","America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5","America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT -03 -02|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|20e6","America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80","Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25","Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4","Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0","Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4","Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4","Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|18e5","Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|25e4","Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5","Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4","Asia/Macau|LMT CST CDT|-7y.k -80 -90|012121212121212121212121212121212121212121|-2le80 1XO3u 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|+08 +09|-80 -90|010101010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BAu|29e5","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4","Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rb0 1ld0 14n0 1zd0 On0 1zd0 On0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4","Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4","Atlantic/South_Georgia|-02|20|0||30","Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4","Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","EST|EST|50|0|","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Etc/GMT-0|GMT|0|0|","Etc/GMT-1|+01|-10|0|","Pacific/Port_Moresby|+10|-a0|0||25e4","Pacific/Pohnpei|+11|-b0|0||34e3","Pacific/Tarawa|+12|-c0|0||29e3","Etc/GMT-13|+13|-d0|0|","Etc/GMT-14|+14|-e0|0|","Etc/GMT-2|+02|-20|0|","Etc/GMT-3|+03|-30|0|","Etc/GMT-4|+04|-40|0|","Etc/GMT-5|+05|-50|0|","Etc/GMT-6|+06|-60|0|","Indian/Christmas|+07|-70|0||21e2","Etc/GMT-8|+08|-80|0|","Pacific/Palau|+09|-90|0||21e3","Etc/GMT+1|-01|10|0|","Etc/GMT+10|-10|a0|0|","Etc/GMT+11|-11|b0|0|","Etc/GMT+12|-12|c0|0|","Etc/GMT+3|-03|30|0|","Etc/GMT+4|-04|40|0|","Etc/GMT+5|-05|50|0|","Etc/GMT+6|-06|60|0|","Etc/GMT+7|-07|70|0|","Etc/GMT+8|-08|80|0|","Etc/GMT+9|-09|90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5","Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3","Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4","HST|HST|a0|0|","Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Cocos|+0630|-6u|0||596","Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130","Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3","Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4","Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4","Pacific/Kwajalein|+11 -12 +12|-b0 c0 -c0|012|-AX0 W9X0|14e3","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","MST|MST|70|0|","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4","Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1","Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483","Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0|88e4","Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3","Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4","Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4","Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2","Pacific/Kosrae|+11 +12|-b0 -c0|010|-AX0 1bdz0|66e2","Pacific/Majuro|+11 +12|-b0 -c0|01|-AX0|28e3","Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2","Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3","Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2","Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4","Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56","Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4","Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00"],links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Curacao|America/Aruba","America/Curacao|America/Kralendijk","America/Curacao|America/Lower_Princes","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Cayman","America/Phoenix|US/Arizona","America/Port_of_Spain|America/Anguilla","America/Port_of_Spain|America/Antigua","America/Port_of_Spain|America/Dominica","America/Port_of_Spain|America/Grenada","America/Port_of_Spain|America/Guadeloupe","America/Port_of_Spain|America/Marigot","America/Port_of_Spain|America/Montserrat","America/Port_of_Spain|America/St_Barthelemy","America/Port_of_Spain|America/St_Kitts","America/Port_of_Spain|America/St_Lucia","America/Port_of_Spain|America/St_Thomas","America/Port_of_Spain|America/St_Vincent","America/Port_of_Spain|America/Tortola","America/Port_of_Spain|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/Reykjavik|Iceland","Atlantic/South_Georgia|Etc/GMT+2","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT-0|Etc/GMT","Etc/GMT-0|Etc/GMT+0","Etc/GMT-0|Etc/GMT0","Etc/GMT-0|Etc/Greenwich","Etc/GMT-0|GMT","Etc/GMT-0|GMT+0","Etc/GMT-0|GMT-0","Etc/GMT-0|GMT0","Etc/GMT-0|Greenwich","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Portugal","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Oslo|Arctic/Longyearbyen","Europe/Oslo|Atlantic/Jan_Mayen","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Christmas|Etc/GMT-7","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Palau|Etc/GMT-9","Pacific/Pohnpei|Etc/GMT-11","Pacific/Pohnpei|Pacific/Ponape","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tarawa|Etc/GMT-12","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"]}),moment}),function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define("uikit",factory):global.UIkit=factory()}(this,function(){function bind(fn,context){return function(a){var l=arguments.length;return l?l>1?fn.apply(context,arguments):fn.call(context,a):fn.call(context)}}var hasOwnProperty=Object.prototype.hasOwnProperty;function hasOwn(obj,key){return hasOwnProperty.call(obj,key)}var hyphenateCache={},hyphenateRe=/([a-z\d])([A-Z])/g;function hyphenate(str){return str in hyphenateCache||(hyphenateCache[str]=str.replace(hyphenateRe,"$1-$2").toLowerCase()),hyphenateCache[str]}var camelizeRe=/-(\w)/g;function camelize(str){return str.replace(camelizeRe,toUpper)}function toUpper(_,c){return c?c.toUpperCase():""}function ucfirst(str){return str.length?toUpper(0,str.charAt(0))+str.slice(1):""}var strPrototype=String.prototype,startsWithFn=strPrototype.startsWith||function(search){return 0===this.lastIndexOf(search,0)};function startsWith(str,search){return startsWithFn.call(str,search)}var endsWithFn=strPrototype.endsWith||function(search){return this.substr(-search.length)===search};function endsWith(str,search){return endsWithFn.call(str,search)}var includesFn=function(search){return~this.indexOf(search)},includesStr=strPrototype.includes||includesFn,includesArray=Array.prototype.includes||includesFn;function includes(obj,search){return obj&&(isString(obj)?includesStr:includesArray).call(obj,search)}var isArray=Array.isArray;function isFunction(obj){return"function"==typeof obj}function isObject(obj){return null!==obj&&"object"==typeof obj}function isPlainObject(obj){return isObject(obj)&&Object.getPrototypeOf(obj)===Object.prototype}function isWindow(obj){return isObject(obj)&&obj===obj.window}function isDocument(obj){return isObject(obj)&&9===obj.nodeType}function isJQuery(obj){return isObject(obj)&&!!obj.jquery}function isNode(element){return element instanceof Node||isObject(element)&&1===element.nodeType}function isNodeCollection(element){return element instanceof NodeList||element instanceof HTMLCollection}function isBoolean(value){return"boolean"==typeof value}function isString(value){return"string"==typeof value}function isNumber(value){return"number"==typeof value}function isNumeric(value){return isNumber(value)||isString(value)&&!isNaN(value-parseFloat(value))}function isUndefined(value){return void 0===value}function toBoolean(value){return isBoolean(value)?value:"true"===value||"1"===value||""===value||"false"!==value&&"0"!==value&&value}function toNumber(value){var number=Number(value);return!isNaN(number)&&number}function toFloat(value){return parseFloat(value)||0}function toNode(element){return isNode(element)||isWindow(element)||isDocument(element)?element:isNodeCollection(element)||isJQuery(element)?element[0]:isArray(element)?toNode(element[0]):null}var arrayProto=Array.prototype;function toNodes(element){return isNode(element)?[element]:isNodeCollection(element)?arrayProto.slice.call(element):isArray(element)?element.map(toNode).filter(Boolean):isJQuery(element)?element.toArray():[]}function toList(value){return isArray(value)?value:isString(value)?value.split(/,(?![^(]*\))/).map(function(value){return isNumeric(value)?toNumber(value):toBoolean(value.trim())}):[value]}function toMs(time){return time?endsWith(time,"ms")?toFloat(time):1e3*toFloat(time):0}function swap(value,a,b){return value.replace(new RegExp(a+"|"+b,"mg"),function(match){return match===a?b:a})}var assign=Object.assign||function(target){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];target=Object(target);for(var i=0;i<args.length;i++){var source=args[i];if(null!==source)for(var key in source)hasOwn(source,key)&&(target[key]=source[key])}return target};function each(obj,cb){for(var key in obj)cb.call(obj[key],obj[key],key)}function sortBy(collection,prop){return collection.sort(function(a,b){return a[prop]>b[prop]?1:b[prop]>a[prop]?-1:0})}function clamp(number,min,max){return void 0===min&&(min=0),void 0===max&&(max=1),Math.min(Math.max(number,min),max)}function noop(){}function intersectRect(r1,r2){return r1.left<=r2.right&&r2.left<=r1.right&&r1.top<=r2.bottom&&r2.top<=r1.bottom}function pointInRect(point,rect){return intersectRect({top:point.y,bottom:point.y,left:point.x,right:point.x},rect)}var Dimensions={ratio:function(dimensions,prop,value){var obj,aProp="width"===prop?"height":"width";return(obj={})[aProp]=Math.round(value*dimensions[aProp]/dimensions[prop]),obj[prop]=value,obj},contain:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=assign({},dimensions),function(_,prop){return dimensions=dimensions[prop]>maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions},cover:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=this.contain(dimensions,maxDimensions),function(_,prop){return dimensions=dimensions[prop]<maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions}};function attr(element,name,value){if(isObject(name))for(var key in name)attr(element,key,name[key]);else{if(isUndefined(value))return(element=toNode(element))&&element.getAttribute(name);toNodes(element).forEach(function(element){isFunction(value)&&(value=value.call(element,attr(element,name))),null===value?removeAttr(element,name):element.setAttribute(name,value)})}}function hasAttr(element,name){return toNodes(element).some(function(element){return element.hasAttribute(name)})}function removeAttr(element,name){element=toNodes(element),name.split(" ").forEach(function(name){return element.forEach(function(element){return element.removeAttribute(name)})})}function filterAttr(element,attribute,pattern,replacement){attr(element,attribute,function(value){return value?value.replace(pattern,replacement):value})}function data(element,attribute){for(var i=0,attrs=[attribute,"data-"+attribute];i<attrs.length;i++)if(hasAttr(element,attrs[i]))return attr(element,attrs[i])}function query(selector,context){return toNode(selector)||find(selector,isContextSelector(selector)?context:document)}function queryAll(selector,context){var nodes=toNodes(selector);return nodes.length&&nodes||findAll(selector,isContextSelector(selector)?context:document)}function find(selector,context){return toNode(_query(selector,context,"querySelector"))}function findAll(selector,context){return toNodes(_query(selector,context,"querySelectorAll"))}function _query(selector,context,queryFn){if(void 0===context&&(context=document),!selector||!isString(selector))return null;var removes;isContextSelector(selector=selector.replace(contextSanitizeRe,"$1 *"))&&(removes=[],selector=selector.split(",").map(function(selector,i){var ctx=context;if("!"===(selector=selector.trim())[0]){var selectors=selector.substr(1).trim().split(" ");ctx=closest(context.parentNode,selectors[0]),selector=selectors.slice(1).join(" ").trim()}if("-"===selector[0]){var selectors$1=selector.substr(1).trim().split(" "),prev=(ctx||context).previousElementSibling;ctx=matches(prev,selector.substr(1))?prev:null,selector=selectors$1.slice(1).join(" ")}return ctx?(ctx.id||(ctx.id="uk-"+Date.now()+i,removes.push(function(){return removeAttr(ctx,"id")})),"#"+escape(ctx.id)+" "+selector):null}).filter(Boolean).join(","),context=document);try{return context[queryFn](selector)}catch(e){return null}finally{removes&&removes.forEach(function(remove){return remove()})}}var contextSelectorRe=/(^|,)\s*[!>+~-]/,contextSanitizeRe=/([!>+~-])(?=\s+[!>+~-]|\s*$)/g;function isContextSelector(selector){return isString(selector)&&selector.match(contextSelectorRe)}var elProto=Element.prototype,matchesFn=elProto.matches||elProto.webkitMatchesSelector||elProto.msMatchesSelector;function matches(element,selector){return toNodes(element).some(function(element){return matchesFn.call(element,selector)})}var closestFn=elProto.closest||function(selector){var ancestor=this;do{if(matches(ancestor,selector))return ancestor;ancestor=ancestor.parentNode}while(ancestor&&1===ancestor.nodeType)};function closest(element,selector){return startsWith(selector,">")&&(selector=selector.slice(1)),isNode(element)?element.parentNode&&closestFn.call(element,selector):toNodes(element).map(function(element){return element.parentNode&&closestFn.call(element,selector)}).filter(Boolean)}function parents(element,selector){for(var elements=[],parent=toNode(element).parentNode;parent&&1===parent.nodeType;)matches(parent,selector)&&elements.push(parent),parent=parent.parentNode;return elements}var escapeFn=window.CSS&&CSS.escape||function(css){return css.replace(/([^\x7f-\uFFFF\w-])/g,function(match){return"\\"+match})};function escape(css){return isString(css)?escapeFn.call(null,css):""}var voidElements={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function isVoidElement(element){return toNodes(element).some(function(element){return voidElements[element.tagName.toLowerCase()]})}function isVisible(element){return toNodes(element).some(function(element){return element.offsetWidth||element.offsetHeight||element.getClientRects().length})}var selInput="input,select,textarea,button";function isInput(element){return toNodes(element).some(function(element){return matches(element,selInput)})}function filter(element,selector){return toNodes(element).filter(function(element){return matches(element,selector)})}function within(element,selector){return isString(selector)?matches(element,selector)||closest(element,selector):element===selector||(isDocument(selector)?selector.documentElement:toNode(selector)).contains(toNode(element))}function on(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),target=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4];return target=toEventTarget(target),selector&&(listener=function(element,selector,listener){var this$1=this;return function(e){var target=e.target,current=">"===selector[0]?findAll(selector,element).reverse().filter(function(element){return within(target,element)})[0]:closest(target,selector);current&&(e.delegate=element,e.current=current,listener.call(this$1,e))}}(target,selector,listener)),listener.length>1&&(listener=function(listener){return function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)}}(listener)),type.split(" ").forEach(function(type){return target&&target.addEventListener(type,listener,useCapture)}),function(){return off(target,type,listener,useCapture)}}function off(target,type,listener,useCapture){void 0===useCapture&&(useCapture=!1),(target=toEventTarget(target))&&type.split(" ").forEach(function(type){return target.removeEventListener(type,listener,useCapture)})}function once(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),element=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4],condition=ref[5],off=on(element,type,selector,function(e){var result=!condition||condition(e);result&&(off(),listener(e,result))},useCapture);return off}function trigger(target,event,detail){return toEventTargets(target).reduce(function(notCanceled,target){return notCanceled&&target.dispatchEvent(createEvent(event,!0,!0,detail))},!0)}function createEvent(e,bubbles,cancelable,detail){if(void 0===bubbles&&(bubbles=!0),void 0===cancelable&&(cancelable=!1),isString(e)){var event=document.createEvent("CustomEvent");event.initCustomEvent(e,bubbles,cancelable,detail),e=event}return e}function getArgs(args){return isString(args[0])&&(args[0]=find(args[0])),isFunction(args[2])&&args.splice(2,0,!1),args}function isEventTarget(target){return"EventTarget"in window?target instanceof EventTarget:target&&"addEventListener"in target}function toEventTarget(target){return isEventTarget(target)?target:toNode(target)}function toEventTargets(target){return isEventTarget(target)?[target]:isArray(target)?target.map(toEventTarget).filter(Boolean):toNodes(target)}function preventClick(){var timer=setTimeout(once(document,"click",function(e){e.preventDefault(),e.stopImmediatePropagation(),clearTimeout(timer)},!0));trigger(document,"touchcancel")}var Promise$1="Promise"in window?window.Promise:PromiseFn,Deferred=function(){var this$1=this;this.promise=new Promise$1(function(resolve,reject){this$1.reject=reject,this$1.resolve=resolve})},PENDING=2,async="setImmediate"in window?setImmediate:setTimeout;function PromiseFn(executor){this.state=PENDING,this.value=void 0,this.deferred=[];var promise=this;try{executor(function(x){promise.resolve(x)},function(r){promise.reject(r)})}catch(e){promise.reject(e)}}PromiseFn.reject=function(r){return new PromiseFn(function(resolve,reject){reject(r)})},PromiseFn.resolve=function(x){return new PromiseFn(function(resolve,reject){resolve(x)})},PromiseFn.all=function(iterable){return new PromiseFn(function(resolve,reject){var result=[],count=0;function resolver(i){return function(x){result[i]=x,(count+=1)===iterable.length&&resolve(result)}}0===iterable.length&&resolve(result);for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolver(i),reject)})},PromiseFn.race=function(iterable){return new PromiseFn(function(resolve,reject){for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolve,reject)})};var p=PromiseFn.prototype;function ajax(url,options){return new Promise$1(function(resolve,reject){var env=assign({data:null,method:"GET",headers:{},xhr:new XMLHttpRequest,beforeSend:noop,responseType:""},options);env.beforeSend(env);var xhr=env.xhr;for(var prop in env)if(prop in xhr)try{xhr[prop]=env[prop]}catch(e){}for(var header in xhr.open(env.method.toUpperCase(),url),env.headers)xhr.setRequestHeader(header,env.headers[header]);on(xhr,"load",function(){0===xhr.status||xhr.status>=200&&xhr.status<300||304===xhr.status?resolve(xhr):reject(assign(Error(xhr.statusText),{xhr:xhr,status:xhr.status}))}),on(xhr,"error",function(){return reject(assign(Error("Network Error"),{xhr:xhr}))}),on(xhr,"timeout",function(){return reject(assign(Error("Network Timeout"),{xhr:xhr}))}),xhr.send(env.data)})}function getImage(src,srcset,sizes){return new Promise$1(function(resolve,reject){var img=new Image;img.onerror=reject,img.onload=function(){return resolve(img)},img.src=src,srcset&&(img.srcset=srcset),sizes&&(img.sizes=sizes)})}function isReady(){return"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll}function ready(fn){if(isReady())fn();else var handle=function(){unbind1(),unbind2(),fn()},unbind1=on(document,"DOMContentLoaded",handle),unbind2=on(window,"load",handle)}function index(element,ref){return ref?toNodes(element).indexOf(toNode(ref)):toNodes((element=toNode(element))&&element.parentNode.children).indexOf(element)}function getIndex(i,elements,current,finite){void 0===current&&(current=0),void 0===finite&&(finite=!1);var length=(elements=toNodes(elements)).length;return i=isNumeric(i)?toNumber(i):"next"===i?current+1:"previous"===i?current-1:index(elements,i),finite?clamp(i,0,length-1):(i%=length)<0?i+length:i}function empty(element){return(element=toNode(element)).innerHTML="",element}function html(parent,html){return parent=toNode(parent),isUndefined(html)?parent.innerHTML:append(parent.hasChildNodes()?empty(parent):parent,html)}function append(parent,element){return parent=toNode(parent),insertNodes(element,function(element){return parent.appendChild(element)})}function before(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.parentNode.insertBefore(element,ref)})}function after(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.nextSibling?before(ref.nextSibling,element):append(ref.parentNode,element)})}function insertNodes(element,fn){return(element=isString(element)?fragment(element):element)?"length"in element?toNodes(element).map(fn):fn(element):null}function remove(element){toNodes(element).map(function(element){return element.parentNode&&element.parentNode.removeChild(element)})}function wrapAll(element,structure){for(structure=toNode(before(element,structure));structure.firstChild;)structure=structure.firstChild;return append(structure,element),structure}function wrapInner(element,structure){return toNodes(toNodes(element).map(function(element){return element.hasChildNodes?wrapAll(toNodes(element.childNodes),structure):append(element,structure)}))}function unwrap(element){toNodes(element).map(function(element){return element.parentNode}).filter(function(value,index,self){return self.indexOf(value)===index}).forEach(function(parent){before(parent,parent.childNodes),remove(parent)})}p.resolve=function(x){var promise=this;if(promise.state===PENDING){if(x===promise)throw new TypeError("Promise settled with itself.");var called=!1;try{var then=x&&x.then;if(null!==x&&isObject(x)&&isFunction(then))return void then.call(x,function(x){called||promise.resolve(x),called=!0},function(r){called||promise.reject(r),called=!0})}catch(e){return void(called||promise.reject(e))}promise.state=0,promise.value=x,promise.notify()}},p.reject=function(reason){if(this.state===PENDING){if(reason===this)throw new TypeError("Promise settled with itself.");this.state=1,this.value=reason,this.notify()}},p.notify=function(){var this$1=this;async(function(){if(this$1.state!==PENDING)for(;this$1.deferred.length;){var ref=this$1.deferred.shift(),onResolved=ref[0],onRejected=ref[1],resolve=ref[2],reject=ref[3];try{0===this$1.state?isFunction(onResolved)?resolve(onResolved.call(void 0,this$1.value)):resolve(this$1.value):1===this$1.state&&(isFunction(onRejected)?resolve(onRejected.call(void 0,this$1.value)):reject(this$1.value))}catch(e){reject(e)}}})},p.then=function(onResolved,onRejected){var this$1=this;return new PromiseFn(function(resolve,reject){this$1.deferred.push([onResolved,onRejected,resolve,reject]),this$1.notify()})},p.catch=function(onRejected){return this.then(void 0,onRejected)};var fragmentRe=/^\s*<(\w+|!)[^>]*>/,singleTagRe=/^<(\w+)\s*\/?>(?:<\/\1>)?$/;function fragment(html){var matches=singleTagRe.exec(html);if(matches)return document.createElement(matches[1]);var container=document.createElement("div");return fragmentRe.test(html)?container.insertAdjacentHTML("beforeend",html.trim()):container.textContent=html,container.childNodes.length>1?toNodes(container.childNodes):container.firstChild}function apply(node,fn){if(node&&1===node.nodeType)for(fn(node),node=node.firstElementChild;node;)apply(node,fn),node=node.nextElementSibling}function addClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"add")}function removeClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"remove")}function removeClasses(element,cls){filterAttr(element,"class",new RegExp("(^|\\s)"+cls+"(?!\\S)","g"),"")}function replaceClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];args[0]&&removeClass(element,args[0]),args[1]&&addClass(element,args[1])}function hasClass(element,cls){return toNodes(element).some(function(element){return element.classList.contains(cls)})}function toggleClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];if(args.length){var force=isString((args=getArgs$1(args))[args.length-1])?[]:args.pop();args=args.filter(Boolean),toNodes(element).forEach(function(ref){for(var classList=ref.classList,i=0;i<args.length;i++)supports.Force?classList.toggle.apply(classList,[args[i]].concat(force)):classList[(isUndefined(force)?!classList.contains(args[i]):force)?"add":"remove"](args[i])})}}function apply$1(element,args,fn){(args=getArgs$1(args).filter(Boolean)).length&&toNodes(element).forEach(function(ref){var classList=ref.classList;supports.Multiple?classList[fn].apply(classList,args):args.forEach(function(cls){return classList[fn](cls)})})}function getArgs$1(args){return args.reduce(function(args,arg){return args.concat.call(args,isString(arg)&&includes(arg," ")?arg.trim().split(" "):arg)},[])}var list,supports={};(list=document.createElement("_").classList)&&(list.add("a","b"),list.toggle("c",!1),supports.Multiple=list.contains("b"),supports.Force=!list.contains("c")),list=null;var cssNumber={"animation-iteration-count":!0,"column-count":!0,"fill-opacity":!0,"flex-grow":!0,"flex-shrink":!0,"font-weight":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,widows:!0,"z-index":!0,zoom:!0};function css(element,property,value){return toNodes(element).map(function(element){if(isString(property)){if(property=propName(property),isUndefined(value))return getStyle(element,property);value||0===value?element.style[property]=isNumeric(value)&&!cssNumber[property]?value+"px":value:element.style.removeProperty(property)}else{if(isArray(property)){var styles=getStyles(element);return property.reduce(function(props,property){return props[property]=styles[propName(property)],props},{})}isObject(property)&&each(property,function(value,property){return css(element,property,value)})}return element})[0]}function getStyles(element,pseudoElt){return(element=toNode(element)).ownerDocument.defaultView.getComputedStyle(element,pseudoElt)}function getStyle(element,property,pseudoElt){return getStyles(element,pseudoElt)[property]}var vars={};function getCssVar(name){if(!(name in vars)){var element=append(document.documentElement,document.createElement("div"));addClass(element,"var-"+name);try{vars[name]=getStyle(element,"content",":before").replace(/^["'](.*)["']$/,"$1"),vars[name]=JSON.parse(vars[name])}catch(e){}document.documentElement.removeChild(element)}return vars[name]}var cssProps={};function propName(name){var ret=cssProps[name];return ret||(ret=cssProps[name]=function(name){if((name=hyphenate(name))in style)return name;var prefixedName,i=cssPrefixes.length;for(;i--;)if((prefixedName="-"+cssPrefixes[i]+"-"+name)in style)return prefixedName}(name)||name),ret}var cssPrefixes=["webkit","moz","ms"],style=document.createElement("_").style;function transition(element,props,duration,timing){return void 0===duration&&(duration=400),void 0===timing&&(timing="linear"),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){for(var name in props){var value=css(element,name);""===value&&css(element,name,value)}var timer=setTimeout(function(){return trigger(element,"transitionend")},duration);once(element,"transitionend transitioncanceled",function(ref){var type=ref.type;clearTimeout(timer),removeClass(element,"uk-transition"),css(element,{"transition-property":"","transition-duration":"","transition-timing-function":""}),"transitioncanceled"===type?reject():resolve()},!1,function(ref){var target=ref.target;return element===target}),addClass(element,"uk-transition"),css(element,assign({"transition-property":Object.keys(props).map(propName).join(","),"transition-duration":duration+"ms","transition-timing-function":timing},props))})}))}var Transition={start:transition,stop:function(element){return trigger(element,"transitionend"),Promise$1.resolve()},cancel:function(element){trigger(element,"transitioncanceled")},inProgress:function(element){return hasClass(element,"uk-transition")}},animationPrefix="uk-animation-",clsCancelAnimation="uk-cancel-animation";function animate(element,animation,duration,origin,out){var arguments$1=arguments;return void 0===duration&&(duration=200),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){if(hasClass(element,clsCancelAnimation))requestAnimationFrame(function(){return Promise$1.resolve().then(function(){return animate.apply(void 0,arguments$1).then(resolve,reject)})});else{var cls=animation+" "+animationPrefix+(out?"leave":"enter");startsWith(animation,animationPrefix)&&(origin&&(cls+=" uk-transform-origin-"+origin),out&&(cls+=" "+animationPrefix+"reverse")),reset(),once(element,"animationend animationcancel",function(ref){var hasReset=!1;"animationcancel"===ref.type?(reject(),reset()):(resolve(),Promise$1.resolve().then(function(){hasReset=!0,reset()})),requestAnimationFrame(function(){hasReset||(addClass(element,clsCancelAnimation),requestAnimationFrame(function(){return removeClass(element,clsCancelAnimation)}))})},!1,function(ref){var target=ref.target;return element===target}),css(element,"animationDuration",duration+"ms"),addClass(element,cls)}function reset(){css(element,"animationDuration",""),removeClasses(element,animationPrefix+"\\S*")}})}))}var inProgress=new RegExp(animationPrefix+"(enter|leave)"),Animation={in:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!1)},out:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!0)},inProgress:function(element){return inProgress.test(attr(element,"class"))},cancel:function(element){trigger(element,"animationcancel")}};function $(selector,context){return isString(selector)?isHtml(selector)?toNode(fragment(selector)):find(selector,context):toNode(selector)}function $$(selector,context){return isString(selector)?isHtml(selector)?toNodes(fragment(selector)):findAll(selector,context):toNodes(selector)}function isHtml(str){return"<"===str[0]||str.match(/^\s*</)}var dirs={width:["x","left","right"],height:["y","top","bottom"]};function positionAt(element,target,elAttach,targetAttach,elOffset,targetOffset,flip,boundary){elAttach=getPos(elAttach),targetAttach=getPos(targetAttach);var flipped={element:elAttach,target:targetAttach};if(!element||!target)return flipped;var dim=getDimensions(element),targetDim=getDimensions(target),position=targetDim;return moveTo(position,elAttach,dim,-1),moveTo(position,targetAttach,targetDim,1),elOffset=getOffsets(elOffset,dim.width,dim.height),targetOffset=getOffsets(targetOffset,targetDim.width,targetDim.height),elOffset.x+=targetOffset.x,elOffset.y+=targetOffset.y,position.left+=elOffset.x,position.top+=elOffset.y,boundary=getDimensions(boundary||window$1(element)),flip&&each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];if(!0===flip||includes(flip,dir)){var elemOffset=elAttach[dir]===align?-dim[prop]:elAttach[dir]===alignFlip?dim[prop]:0,targetOffset=targetAttach[dir]===align?targetDim[prop]:targetAttach[dir]===alignFlip?-targetDim[prop]:0;if(position[align]<boundary[align]||position[align]+dim[prop]>boundary[alignFlip]){var centerOffset=dim[prop]/2,centerTargetOffset="center"===targetAttach[dir]?-targetDim[prop]/2:0;"center"===elAttach[dir]&&(apply(centerOffset,centerTargetOffset)||apply(-centerOffset,-centerTargetOffset))||apply(elemOffset,targetOffset)}}function apply(elemOffset,targetOffset){var newVal=position[align]+elemOffset+targetOffset-2*elOffset[dir];if(newVal>=boundary[align]&&newVal+dim[prop]<=boundary[alignFlip])return position[align]=newVal,["element","target"].forEach(function(el){flipped[el][dir]=elemOffset?flipped[el][dir]===dirs[prop][1]?dirs[prop][2]:dirs[prop][1]:flipped[el][dir]}),!0}}),offset(element,position),flipped}function offset(element,coordinates){if(element=toNode(element),!coordinates)return getDimensions(element);var currentOffset=offset(element),pos=css(element,"position");["left","top"].forEach(function(prop){if(prop in coordinates){var value=css(element,prop);css(element,prop,coordinates[prop]-currentOffset[prop]+toFloat("absolute"===pos&&"auto"===value?position(element)[prop]:value))}})}function getDimensions(element){var style,hidden,ref=window$1(element=toNode(element)),top=ref.pageYOffset,left=ref.pageXOffset;if(isWindow(element)){var height=element.innerHeight,width=element.innerWidth;return{top:top,left:left,height:height,width:width,bottom:top+height,right:left+width}}isVisible(element)||(style=attr(element,"style"),hidden=attr(element,"hidden"),attr(element,{style:(style||"")+";display:block !important;",hidden:null}));var rect=element.getBoundingClientRect();return isUndefined(style)||attr(element,{style:style,hidden:hidden}),{height:rect.height,width:rect.width,top:rect.top+top,left:rect.left+left,bottom:rect.bottom+top,right:rect.right+left}}function position(element){var parent=function(element){var parent=toNode(element).offsetParent;for(;parent&&"static"===css(parent,"position");)parent=parent.offsetParent;return parent||docEl(element)}(element=toNode(element)),parentOffset=parent===docEl(element)?{top:0,left:0}:offset(parent),ref=["top","left"].reduce(function(props,prop){var propName$$1=ucfirst(prop);return props[prop]-=parentOffset[prop]+(toFloat(css(element,"margin"+propName$$1))||0)+(toFloat(css(parent,"border"+propName$$1+"Width"))||0),props},offset(element));return{top:ref.top,left:ref.left}}var height=dimension("height"),width=dimension("width");function dimension(prop){var propName$$1=ucfirst(prop);return function(element,value){if(element=toNode(element),isUndefined(value)){if(isWindow(element))return element["inner"+propName$$1];if(isDocument(element)){var doc=element.documentElement;return Math.max(doc["offset"+propName$$1],doc["scroll"+propName$$1])}return(value="auto"===(value=css(element,prop))?element["offset"+propName$$1]:toFloat(value)||0)-boxModelAdjust(prop,element)}css(element,prop,value||0===value?+value+boxModelAdjust(prop,element)+"px":"")}}function boxModelAdjust(prop,element){return"border-box"===css(element,"boxSizing")?dirs[prop].slice(1).map(ucfirst).reduce(function(value,prop){return value+toFloat(css(element,"padding"+prop))+toFloat(css(element,"border"+prop+"Width"))},0):0}function moveTo(position,attach,dim,factor){each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];attach[dir]===alignFlip?position[align]+=dim[prop]*factor:"center"===attach[dir]&&(position[align]+=dim[prop]*factor/2)})}function getPos(pos){var x=/left|center|right/,y=/top|center|bottom/;return 1===(pos=(pos||"").split(" ")).length&&(pos=x.test(pos[0])?pos.concat(["center"]):y.test(pos[0])?["center"].concat(pos):["center","center"]),{x:x.test(pos[0])?pos[0]:"center",y:y.test(pos[1])?pos[1]:"center"}}function getOffsets(offsets,width,height){var ref=(offsets||"").split(" "),x=ref[0],y=ref[1];return{x:x?toFloat(x)*(endsWith(x,"%")?width/100:1):0,y:y?toFloat(y)*(endsWith(y,"%")?height/100:1):0}}function flipPosition(pos){switch(pos){case"left":return"right";case"right":return"left";case"top":return"bottom";case"bottom":return"top";default:return pos}}function isInView(element,topOffset,leftOffset,relativeToViewport){if(void 0===topOffset&&(topOffset=0),void 0===leftOffset&&(leftOffset=0),!isVisible(element))return!1;var win=window$1(element=toNode(element));if(relativeToViewport)return intersectRect(element.getBoundingClientRect(),{top:-topOffset,left:-leftOffset,bottom:topOffset+height(win),right:leftOffset+width(win)});var ref=offsetPosition(element),elTop=ref[0],elLeft=ref[1],top=win.pageYOffset,left=win.pageXOffset;return intersectRect({top:elTop,left:elLeft,bottom:elTop+element.offsetHeight,right:elTop+element.offsetWidth},{top:top-topOffset,left:left-leftOffset,bottom:top+topOffset+height(win),right:left+leftOffset+width(win)})}function scrolledOver(element,heightOffset){if(void 0===heightOffset&&(heightOffset=0),!isVisible(element))return 0;var win=window$1(element=toNode(element)),doc=document$1(element),elHeight=element.offsetHeight+heightOffset,top=offsetPosition(element)[0],vp=height(win),vh=vp+Math.min(0,top-vp),diff=Math.max(0,vp-(height(doc)+heightOffset-(top+elHeight)));return clamp((vh+win.pageYOffset-top)/((vh+(elHeight-(diff<vp?diff:0)))/100)/100)}function offsetPosition(element){var offset=[0,0];do{if(offset[0]+=element.offsetTop,offset[1]+=element.offsetLeft,"fixed"===css(element,"position")){var win=window$1(element);return offset[0]+=win.pageYOffset,offset[1]+=win.pageXOffset,offset}}while(element=element.offsetParent);return offset}function window$1(element){return isWindow(element)?element:document$1(element).defaultView}function document$1(element){return toNode(element).ownerDocument}function docEl(element){return document$1(element).documentElement}var isRtl="rtl"===attr(document.documentElement,"dir"),hasTouchEvents="ontouchstart"in window,hasPointerEvents=window.PointerEvent,hasTouch=hasTouchEvents||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,pointerDown=hasTouch?"mousedown "+(hasTouchEvents?"touchstart":"pointerdown"):"mousedown",pointerMove=hasTouch?"mousemove "+(hasTouchEvents?"touchmove":"pointermove"):"mousemove",pointerUp=hasTouch?"mouseup "+(hasTouchEvents?"touchend":"pointerup"):"mouseup",pointerEnter=hasTouch&&hasPointerEvents?"pointerenter":"mouseenter",pointerLeave=hasTouch&&hasPointerEvents?"pointerleave":"mouseleave",fastdom={reads:[],writes:[],read:function(task){return this.reads.push(task),scheduleFlush(),task},write:function(task){return this.writes.push(task),scheduleFlush(),task},clear:function(task){return remove$1(this.reads,task)||remove$1(this.writes,task)},flush:function(){runTasks(this.reads),runTasks(this.writes.splice(0,this.writes.length)),this.scheduled=!1,(this.reads.length||this.writes.length)&&scheduleFlush()}};function scheduleFlush(){fastdom.scheduled||(fastdom.scheduled=!0,requestAnimationFrame(fastdom.flush.bind(fastdom)))}function runTasks(tasks){for(var task;task=tasks.shift();)task()}function remove$1(array,item){var index=array.indexOf(item);return!!~index&&!!array.splice(index,1)}function MouseTracker(){}function slope(a,b){return(b.y-a.y)/(b.x-a.x)}MouseTracker.prototype={positions:[],position:null,init:function(){var this$1=this;this.positions=[],this.position=null;var ticking=!1;this.unbind=on(document,"mousemove",function(e){ticking||(setTimeout(function(){var time=Date.now(),length=this$1.positions.length;length&&time-this$1.positions[length-1].time>100&&this$1.positions.splice(0,length),this$1.positions.push({time:time,x:e.pageX,y:e.pageY}),this$1.positions.length>5&&this$1.positions.shift(),ticking=!1},5),ticking=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(target){if(this.positions.length<2)return!1;var p=offset(target),position$$1=this.positions[this.positions.length-1],prevPos=this.positions[0];if(p.left<=position$$1.x&&position$$1.x<=p.right&&p.top<=position$$1.y&&position$$1.y<=p.bottom)return!1;var points=[[{x:p.left,y:p.top},{x:p.right,y:p.bottom}],[{x:p.right,y:p.top},{x:p.left,y:p.bottom}]];return p.right<=position$$1.x||(p.left>=position$$1.x?(points[0].reverse(),points[1].reverse()):p.bottom<=position$$1.y?points[0].reverse():p.top>=position$$1.y&&points[1].reverse()),!!points.reduce(function(result,point){return result+(slope(prevPos,point[0])<slope(position$$1,point[0])&&slope(prevPos,point[1])>slope(position$$1,point[1]))},0)}};var strats={};function mergeFnData(parentVal,childVal,vm){return strats.computed(isFunction(parentVal)?parentVal.call(vm,vm):parentVal,isFunction(childVal)?childVal.call(vm,vm):childVal)}strats.args=strats.events=strats.init=strats.created=strats.beforeConnect=strats.connected=strats.ready=strats.beforeDisconnect=strats.disconnected=strats.destroy=function(parentVal,childVal){return parentVal=parentVal&&!isArray(parentVal)?[parentVal]:parentVal,childVal?parentVal?parentVal.concat(childVal):isArray(childVal)?childVal:[childVal]:parentVal},strats.update=function(parentVal,childVal){return strats.args(parentVal,isFunction(childVal)?{read:childVal}:childVal)},strats.props=function(parentVal,childVal){return isArray(childVal)&&(childVal=childVal.reduce(function(value,key){return value[key]=String,value},{})),strats.methods(parentVal,childVal)},strats.computed=strats.methods=function(parentVal,childVal){return childVal?parentVal?assign({},parentVal,childVal):childVal:parentVal},strats.data=function(parentVal,childVal,vm){return vm?mergeFnData(parentVal,childVal,vm):childVal?parentVal?function(vm){return mergeFnData(parentVal,childVal,vm)}:childVal:parentVal};var defaultStrat=function(parentVal,childVal){return isUndefined(childVal)?parentVal:childVal};function mergeOptions(parent,child,vm){var options={};if(isFunction(child)&&(child=child.options),child.extends&&(parent=mergeOptions(parent,child.extends,vm)),child.mixins)for(var i=0,l=child.mixins.length;i<l;i++)parent=mergeOptions(parent,child.mixins[i],vm);for(var key in parent)mergeKey(key);for(var key$1 in child)hasOwn(parent,key$1)||mergeKey(key$1);function mergeKey(key){options[key]=(strats[key]||defaultStrat)(parent[key],child[key],vm)}return options}function parseOptions(options,args){var obj;void 0===args&&(args=[]);try{return options?startsWith(options,"{")?JSON.parse(options):args.length&&!includes(options,":")?((obj={})[args[0]]=options,obj):options.split(";").reduce(function(options,option){var ref=option.split(/:(.*)/),key=ref[0],value=ref[1];return key&&!isUndefined(value)&&(options[key.trim()]=value.trim()),options},{}):{}}catch(e){return{}}}var id=0,Player=function(el){this.id=++id,this.el=toNode(el)};function post(el,cmd){try{el.contentWindow.postMessage(JSON.stringify(assign({event:"command"},cmd)),"*")}catch(e){}}Player.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},Player.prototype.isHTML5=function(){return"VIDEO"===this.el.tagName},Player.prototype.isIFrame=function(){return"IFRAME"===this.el.tagName},Player.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/)},Player.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\.com\/video\/.*/)},Player.prototype.enableApi=function(){var this$1=this;if(this.ready)return this.ready;var poller,youtube=this.isYoutube(),vimeo=this.isVimeo();return youtube||vimeo?this.ready=new Promise$1(function(resolve){var cb;once(this$1.el,"load",function(){if(youtube){var listener=function(){return post(this$1.el,{event:"listening",id:this$1.id})};poller=setInterval(listener,100),listener()}}),(cb=function(data$$1){return youtube&&data$$1.id===this$1.id&&"onReady"===data$$1.event||vimeo&&Number(data$$1.player_id)===this$1.id},new Promise$1(function(resolve){once(window,"message",function(_,data$$1){return resolve(data$$1)},!1,function(ref){var data$$1=ref.data;if(data$$1&&isString(data$$1)){try{data$$1=JSON.parse(data$$1)}catch(e){return}return data$$1&&cb(data$$1)}})})).then(function(){resolve(),poller&&clearInterval(poller)}),attr(this$1.el,"src",this$1.el.src+(includes(this$1.el.src,"?")?"&":"?")+(youtube?"enablejsapi=1":"api=1&player_id="+this$1.id))}):Promise$1.resolve()},Player.prototype.play=function(){var this$1=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return post(this$1.el,{func:"playVideo",method:"play"})});else if(this.isHTML5())try{var promise=this.el.play();promise&&promise.catch(noop)}catch(e){}},Player.prototype.pause=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"pauseVideo",method:"pause"})}):this.isHTML5()&&this.el.pause())},Player.prototype.mute=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"mute",method:"setVolume",value:0})}):this.isHTML5()&&(this.el.muted=!0,attr(this.el,"muted","")))};var clickTimeout,swipeTimeout,tapTimeout,clicked,touch={};function cancelAll(){clickTimeout&&clearTimeout(clickTimeout),swipeTimeout&&clearTimeout(swipeTimeout),tapTimeout&&clearTimeout(tapTimeout),clickTimeout=swipeTimeout=tapTimeout=null,touch={}}ready(function(){on(document,"click",function(){return clicked=!0},!0),on(document,pointerDown,function(e){var target=e.target,ref=getPos$1(e),x=ref.x,y=ref.y,now=Date.now(),type=getType(e.type);touch.type&&touch.type!==type||(touch.el="tagName"in target?target:target.parentNode,clickTimeout&&clearTimeout(clickTimeout),touch.x1=x,touch.y1=y,touch.last&&now-touch.last<=250&&(touch={}),touch.type=type,touch.last=now,clicked=e.button>0)}),on(document,pointerMove,function(e){if(!e.defaultPrevented){var ref=getPos$1(e),x=ref.x,y=ref.y;touch.x2=x,touch.y2=y}}),on(document,pointerUp,function(ref){var type=ref.type,target=ref.target;touch.type===getType(type)&&(touch.x2&&Math.abs(touch.x1-touch.x2)>30||touch.y2&&Math.abs(touch.y1-touch.y2)>30?swipeTimeout=setTimeout(function(){var ref,x1,x2,y1,y2;touch.el&&(trigger(touch.el,"swipe"),trigger(touch.el,"swipe"+(x1=(ref=touch).x1,x2=ref.x2,y1=ref.y1,y2=ref.y2,Math.abs(x1-x2)>=Math.abs(y1-y2)?x1-x2>0?"Left":"Right":y1-y2>0?"Up":"Down"))),touch={}}):"last"in touch?(tapTimeout=setTimeout(function(){return trigger(touch.el,"tap")}),touch.el&&"mouseup"!==type&&within(target,touch.el)&&(clickTimeout=setTimeout(function(){clickTimeout=null,touch.el&&!clicked&&trigger(touch.el,"click"),touch={}},350))):touch={})}),on(document,"touchcancel",cancelAll),on(window,"scroll",cancelAll)});var touching=!1;function isTouch(e){return touching||"touch"===e.pointerType}function getPos$1(e){var touches=e.touches,changedTouches=e.changedTouches,ref=touches&&touches[0]||changedTouches&&changedTouches[0]||e;return{x:ref.pageX,y:ref.pageY}}function getType(type){return type.slice(0,5)}function getComponentName(attribute){return!(!startsWith(attribute,"uk-")&&!startsWith(attribute,"data-uk-"))&&camelize(attribute.replace("data-uk-","").replace("uk-",""))}on(document,"touchstart",function(){return touching=!0},!0),on(document,"click",function(){touching=!1}),on(document,"touchcancel",function(){return touching=!1},!0);var UIkit=function(options){this._init(options)};UIkit.util=Object.freeze({ajax:ajax,getImage:getImage,transition:transition,Transition:Transition,animate:animate,Animation:Animation,attr:attr,hasAttr:hasAttr,removeAttr:removeAttr,filterAttr:filterAttr,data:data,addClass:addClass,removeClass:removeClass,removeClasses:removeClasses,replaceClass:replaceClass,hasClass:hasClass,toggleClass:toggleClass,$:$,$$:$$,positionAt:positionAt,offset:offset,position:position,height:height,width:width,flipPosition:flipPosition,isInView:isInView,scrolledOver:scrolledOver,isReady:isReady,ready:ready,index:index,getIndex:getIndex,empty:empty,html:html,prepend:function(parent,element){return(parent=toNode(parent)).hasChildNodes()?insertNodes(element,function(element){return parent.insertBefore(element,parent.firstChild)}):append(parent,element)},append:append,before:before,after:after,remove:remove,wrapAll:wrapAll,wrapInner:wrapInner,unwrap:unwrap,fragment:fragment,apply:apply,isRtl:isRtl,hasTouch:hasTouch,pointerDown:pointerDown,pointerMove:pointerMove,pointerUp:pointerUp,pointerEnter:pointerEnter,pointerLeave:pointerLeave,on:on,off:off,once:once,trigger:trigger,createEvent:createEvent,toEventTargets:toEventTargets,preventClick:preventClick,fastdom:fastdom,isVoidElement:isVoidElement,isVisible:isVisible,selInput:selInput,isInput:isInput,filter:filter,within:within,bind:bind,hasOwn:hasOwn,hyphenate:hyphenate,camelize:camelize,ucfirst:ucfirst,startsWith:startsWith,endsWith:endsWith,includes:includes,isArray:isArray,isFunction:isFunction,isObject:isObject,isPlainObject:isPlainObject,isWindow:isWindow,isDocument:isDocument,isJQuery:isJQuery,isNode:isNode,isNodeCollection:isNodeCollection,isBoolean:isBoolean,isString:isString,isNumber:isNumber,isNumeric:isNumeric,isUndefined:isUndefined,toBoolean:toBoolean,toNumber:toNumber,toFloat:toFloat,toNode:toNode,toNodes:toNodes,toList:toList,toMs:toMs,swap:swap,assign:assign,each:each,sortBy:sortBy,clamp:clamp,noop:noop,intersectRect:intersectRect,pointInRect:pointInRect,Dimensions:Dimensions,MouseTracker:MouseTracker,mergeOptions:mergeOptions,parseOptions:parseOptions,Player:Player,Promise:Promise$1,Deferred:Deferred,query:query,queryAll:queryAll,find:find,findAll:findAll,matches:matches,closest:closest,parents:parents,escape:escape,css:css,getStyles:getStyles,getStyle:getStyle,getCssVar:getCssVar,propName:propName,isTouch:isTouch,getPos:getPos$1}),UIkit.data="__uikit__",UIkit.prefix="uk-",UIkit.options={},function(UIkit){var container,DATA=UIkit.data;function update(data$$1,e){if(data$$1)for(var name in data$$1)data$$1[name]._isReady&&data$$1[name]._callUpdate(e)}UIkit.use=function(plugin){if(!plugin.installed)return plugin.call(null,this),plugin.installed=!0,this},UIkit.mixin=function(mixin,component){component=(isString(component)?UIkit.component(component):component)||this,(mixin=mergeOptions({},mixin)).mixins=component.options.mixins,delete component.options.mixins,component.options=mergeOptions(mixin,component.options)},UIkit.extend=function(options){options=options||{};var Sub=function(options){this._init(options)};return(Sub.prototype=Object.create(this.prototype)).constructor=Sub,Sub.options=mergeOptions(this.options,options),Sub.super=this,Sub.extend=this.extend,Sub},UIkit.update=function(element,e){e=createEvent(e||"update"),function(element){for(var path=[];element&&element!==document.body&&element.parentNode;)element=element.parentNode,path.unshift(element);return path}(element=element?toNode(element):document.body).map(function(element){return update(element[DATA],e)}),apply(element,function(element){return update(element[DATA],e)})},Object.defineProperty(UIkit,"container",{get:function(){return container||document.body},set:function(element){container=$(element)}})}(UIkit),function(UIkit){UIkit.prototype._callHook=function(hook){var this$1=this,handlers=this.$options[hook];handlers&&handlers.forEach(function(handler){return handler.call(this$1)})},UIkit.prototype._callConnected=function(){var this$1=this;this._connected||(this._data={},this._initProps(),this._callHook("beforeConnect"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook("connected"),this._isReady||ready(function(){return this$1._callReady()}),this._callUpdate())},UIkit.prototype._callDisconnected=function(){this._connected&&(this._callHook("beforeDisconnect"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook("disconnected"),this._connected=!1)},UIkit.prototype._callReady=function(){this._isReady||(this._isReady=!0,this._callHook("ready"),this._resetComputeds(),this._callUpdate())},UIkit.prototype._callUpdate=function(e){var this$1=this,type=(e=createEvent(e||"update")).type;includes(["update","load","resize"],type)&&this._resetComputeds();var updates=this.$options.update,ref=this._frames,reads=ref.reads,writes=ref.writes;updates&&updates.forEach(function(ref,i){var read=ref.read,write=ref.write,events=ref.events;("update"===type||includes(events,type))&&(read&&!includes(fastdom.reads,reads[i])&&(reads[i]=fastdom.read(function(){var result=this$1._connected&&read.call(this$1,this$1._data,e);!1===result&&write?(fastdom.clear(writes[i]),delete writes[i]):isPlainObject(result)&&assign(this$1._data,result),delete reads[i]})),write&&!includes(fastdom.writes,writes[i])&&(writes[i]=fastdom.write(function(){this$1._connected&&write.call(this$1,this$1._data,e),delete writes[i]})))})}}(UIkit),function(UIkit){var uid=0;function getProps(opts,name){var data$$1={},args=opts.args;void 0===args&&(args=[]);var props=opts.props;void 0===props&&(props={});var el=opts.el;if(!props)return data$$1;for(var key in props){var prop=hyphenate(key);if(hasAttr(el,prop)){var value=coerce(props[key],attr(el,prop));if("target"===prop&&(!value||startsWith(value,"_")))continue;data$$1[key]=value}}var options=parseOptions(data(el,name),args);for(var key$1 in options){var prop$1=camelize(key$1);void 0!==props[prop$1]&&(data$$1[prop$1]=coerce(props[prop$1],options[key$1]))}return data$$1}function registerComputed(component,key,cb){Object.defineProperty(component,key,{enumerable:!0,get:function(){var _computeds=component._computeds,$props=component.$props,$el=component.$el;return hasOwn(_computeds,key)||(_computeds[key]=cb.call(component,$props,$el)),_computeds[key]},set:function(value){component._computeds[key]=value}})}function registerEvent(component,event,key){isPlainObject(event)||(event={name:key,handler:event});var listener,name=event.name,el=event.el,handler=event.handler,capture=event.capture,delegate=event.delegate,filter$$1=event.filter,self=event.self;el=isFunction(el)?el.call(component):el||component.$el,isArray(el)?el.forEach(function(el){return registerEvent(component,assign({},event,{el:el}),key)}):!el||filter$$1&&!filter$$1.call(component)||(listener=isString(handler)?component[handler]:bind(handler,component),handler=function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)},self&&(handler=function(handler){return function(e){if(e.target===e.currentTarget||e.target===e.current)return handler.call(null,e)}}(handler)),component._events.push(on(el,name,delegate?isString(delegate)?delegate:delegate.call(component):null,handler,capture)))}function notIn(options,key){return options.every(function(arr){return!arr||!hasOwn(arr,key)})}function coerce(type,value){return type===Boolean?toBoolean(value):type===Number?toNumber(value):"list"===type?toList(value):"media"===type?function(value){if(isString(value))if("@"===value[0]){var name="media-"+value.substr(1);value=toFloat(getCssVar(name))}else if(isNaN(value))return value;return!(!value||isNaN(value))&&"(min-width: "+value+"px)"}(value):type?type(value):value}UIkit.prototype._init=function(options){(options=options||{}).data=function(ref,ref$1){var data$$1=ref.data,args=(ref.el,ref$1.args),props=ref$1.props;if(void 0===props&&(props={}),data$$1=isArray(data$$1)?args&&args.length?data$$1.slice(0,args.length).reduce(function(data$$1,value,index$$1){return isPlainObject(value)?assign(data$$1,value):data$$1[args[index$$1]]=value,data$$1},{}):void 0:data$$1)for(var key in data$$1)isUndefined(data$$1[key])?delete data$$1[key]:data$$1[key]=props[key]?coerce(props[key],data$$1[key]):data$$1[key];return data$$1}(options,this.constructor.options),this.$options=mergeOptions(this.constructor.options,options,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=uid++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook("created"),options.el&&this.$mount(options.el)},UIkit.prototype._initData=function(){var data$$1=this.$options.data;for(var key in void 0===data$$1&&(data$$1={}),data$$1)this.$props[key]=this[key]=data$$1[key]},UIkit.prototype._initMethods=function(){var methods=this.$options.methods;if(methods)for(var key in methods)this[key]=bind(methods[key],this)},UIkit.prototype._initComputeds=function(){var computed=this.$options.computed;if(this._resetComputeds(),computed)for(var key in computed)registerComputed(this,key,computed[key])},UIkit.prototype._resetComputeds=function(){this._computeds={}},UIkit.prototype._initProps=function(props){var key;for(key in this._resetComputeds(),props=props||getProps(this.$options,this.$name))isUndefined(props[key])||(this.$props[key]=props[key]);var exclude=[this.$options.computed,this.$options.methods];for(key in this.$props)key in props&¬In(exclude,key)&&(this[key]=this.$props[key])},UIkit.prototype._initEvents=function(){var this$1=this,events=this.$options.events;events&&events.forEach(function(event){if(hasOwn(event,"handler"))registerEvent(this$1,event);else for(var key in event)registerEvent(this$1,event[key],key)})},UIkit.prototype._unbindEvents=function(){this._events.forEach(function(unbind){return unbind()}),this._events=[]},UIkit.prototype._initObserver=function(){var this$1=this,ref=this.$options,attrs=ref.attrs,props=ref.props,el=ref.el;!this._observer&&props&&attrs&&(attrs=isArray(attrs)?attrs:Object.keys(props).map(function(key){return hyphenate(key)}),this._observer=new MutationObserver(function(){var data$$1=getProps(this$1.$options,this$1.$name);attrs.some(function(key){return!isUndefined(data$$1[key])&&data$$1[key]!==this$1.$props[key]})&&this$1.$reset()}),this._observer.observe(el,{attributes:!0,attributeFilter:attrs.concat([this.$name,"data-"+this.$name])}))}}(UIkit),function(UIkit){var DATA=UIkit.data,components={};UIkit.component=function(name,options){if(!options)return isPlainObject(components[name])&&(components[name]=UIkit.extend(components[name])),components[name];UIkit[name]=function(element,data$$1){for(var i=arguments.length,argsArray=Array(i);i--;)argsArray[i]=arguments[i];var component=UIkit.component(name);return isPlainObject(element)?new component({data:element}):component.options.functional?new component({data:[].concat(argsArray)}):element&&element.nodeType?init(element):$$(element).map(init)[0];function init(element){var instance=UIkit.getComponent(element,name);if(instance){if(!data$$1)return instance;instance.$destroy()}return new component({el:element,data:data$$1})}};var opt=isPlainObject(options)?assign({},options):options.options;if(opt.name=name,opt.install&&opt.install(UIkit,opt,name),UIkit._initialized&&!opt.functional){var id=hyphenate(name);fastdom.read(function(){return UIkit[name]("[uk-"+id+"],[data-uk-"+id+"]")})}return components[name]=isPlainObject(options)?opt:options},UIkit.getComponents=function(element){return element&&element[DATA]||{}},UIkit.getComponent=function(element,name){return UIkit.getComponents(element)[name]},UIkit.connect=function(node){if(node[DATA])for(var name in node[DATA])node[DATA][name]._callConnected();for(var i=0;i<node.attributes.length;i++){var name$1=getComponentName(node.attributes[i].name);name$1&&name$1 in components&&UIkit[name$1](node)}},UIkit.disconnect=function(node){for(var name in node[DATA])node[DATA][name]._callDisconnected()}}(UIkit),function(UIkit){var DATA=UIkit.data;UIkit.prototype.$mount=function(el){var name=this.$options.name;el[DATA]||(el[DATA]={}),el[DATA][name]||(el[DATA][name]=this,this.$el=this.$options.el=this.$options.el||el,this._callHook("init"),within(el,document)&&this._callConnected())},UIkit.prototype.$emit=function(e){this._callUpdate(e)},UIkit.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},UIkit.prototype.$destroy=function(removeEl){void 0===removeEl&&(removeEl=!1);var ref=this.$options,el=ref.el,name=ref.name;el&&this._callDisconnected(),this._callHook("destroy"),el&&el[DATA]&&(delete el[DATA][name],Object.keys(el[DATA]).length||delete el[DATA],removeEl&&remove(this.$el))},UIkit.prototype.$create=function(component,element,data$$1){return UIkit[component](element,data$$1)},UIkit.prototype.$update=UIkit.update,UIkit.prototype.$getComponent=UIkit.getComponent;var names={};Object.defineProperties(UIkit.prototype,{$container:Object.getOwnPropertyDescriptor(UIkit,"container"),$name:{get:function(){var name=this.$options.name;return names[name]||(names[name]=UIkit.prefix+hyphenate(name)),names[name]}}})}(UIkit);var Class={connected:function(){addClass(this.$el,this.$name)}},Togglable={props:{cls:Boolean,animation:"list",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:"linear",queued:!1,initProps:{overflow:"",height:"",paddingTop:"",paddingBottom:"",marginTop:"",marginBottom:""},hideProps:{overflow:"hidden",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(ref){return!!ref.animation[0]},hasTransition:function(ref){var animation=ref.animation;return this.hasAnimation&&!0===animation[0]}},methods:{toggleElement:function(targets,show,animate$$1){var this$1=this;return new Promise$1(function(resolve){var p,all=function(targets){return Promise$1.all(targets.map(function(el){return this$1._toggleElement(el,show,animate$$1)}))},toggled=(targets=toNodes(targets)).filter(function(el){return this$1.isToggled(el)}),untoggled=targets.filter(function(el){return!includes(toggled,el)});if(this$1.queued&&isUndefined(animate$$1)&&isUndefined(show)&&this$1.hasAnimation&&!(targets.length<2)){var body=document.body,scroll=body.scrollTop,el=toggled[0],inProgress=Animation.inProgress(el)&&hasClass(el,"uk-animation-leave")||Transition.inProgress(el)&&"0px"===el.style.height;p=all(toggled),inProgress||(p=p.then(function(){var p=all(untoggled);return body.scrollTop=scroll,p}))}else p=all(untoggled.concat(toggled));p.then(resolve,noop)})},toggleNow:function(targets,show){var this$1=this;return new Promise$1(function(resolve){return Promise$1.all(toNodes(targets).map(function(el){return this$1._toggleElement(el,show,!1)})).then(resolve,noop)})},isToggled:function(el){var nodes=toNodes(el||this.$el);return this.cls?hasClass(nodes,this.cls.split(" ")[0]):!hasAttr(nodes,"hidden")},updateAria:function(el){!1===this.cls&&attr(el,"aria-hidden",!this.isToggled(el))},_toggleElement:function(el,show,animate$$1){var this$1=this;if(show=isBoolean(show)?show:Animation.inProgress(el)?hasClass(el,"uk-animation-leave"):Transition.inProgress(el)?"0px"===el.style.height:!this.isToggled(el),!trigger(el,"before"+(show?"show":"hide"),[this]))return Promise$1.reject();var promise=(!1!==animate$$1&&this.hasAnimation?this.hasTransition?this._toggleHeight:this._toggleAnimation:this._toggleImmediate)(el,show);return trigger(el,show?"show":"hide",[this]),promise.then(function(){trigger(el,show?"shown":"hidden",[this$1]),this$1.$update(el)})},_toggle:function(el,toggled){var changed;el&&(this.cls?(changed=includes(this.cls," ")||Boolean(toggled)!==hasClass(el,this.cls))&&toggleClass(el,this.cls,includes(this.cls," ")?void 0:toggled):(changed=Boolean(toggled)===hasAttr(el,"hidden"))&&attr(el,"hidden",toggled?null:""),$$("[autofocus]",el).some(function(el){return isVisible(el)&&(el.focus()||!0)}),this.updateAria(el),changed&&this.$update(el))},_toggleImmediate:function(el,show){return this._toggle(el,show),Promise$1.resolve()},_toggleHeight:function(el,show){var this$1=this,inProgress=Transition.inProgress(el),inner=el.hasChildNodes?toFloat(css(el.firstElementChild,"marginTop"))+toFloat(css(el.lastElementChild,"marginBottom")):0,currentHeight=isVisible(el)?height(el)+(inProgress?0:inner):0;Transition.cancel(el),this.isToggled(el)||this._toggle(el,!0),height(el,""),fastdom.flush();var endHeight=height(el)+(inProgress?0:inner);return height(el,currentHeight),(show?Transition.start(el,assign({},this.initProps,{overflow:"hidden",height:endHeight}),Math.round(this.duration*(1-currentHeight/endHeight)),this.transition):Transition.start(el,this.hideProps,Math.round(this.duration*(currentHeight/endHeight)),this.transition).then(function(){return this$1._toggle(el,!1)})).then(function(){return css(el,this$1.initProps)})},_toggleAnimation:function(el,show){var this$1=this;return Animation.cancel(el),show?(this._toggle(el,!0),Animation.in(el,this.animation[0],this.duration,this.origin)):Animation.out(el,this.animation[1]||this.animation[0],this.duration,this.origin).then(function(){return this$1._toggle(el,!1)})}}},Accordion={mixins:[Class,Togglable],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:"> *",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:"uk-open",toggle:"> .uk-accordion-title",content:"> .uk-accordion-content",transition:"ease"},computed:{items:function(ref,$el){return $$(ref.targets,$el)}},events:[{name:"click",delegate:function(){return this.targets+" "+this.$props.toggle},handler:function(e){e.preventDefault(),this.toggle(index($$(this.targets+" "+this.$props.toggle,this.$el),e.current))}}],connected:function(){if(!1!==this.active){var active=this.items[Number(this.active)];active&&!hasClass(active,this.clsOpen)&&this.toggle(active,!1)}},update:function(){var this$1=this;this.items.forEach(function(el){return this$1._toggleImmediate($(this$1.content,el),hasClass(el,this$1.clsOpen))});var active=!this.collapsible&&!hasClass(this.items,this.clsOpen)&&this.items[0];active&&this.toggle(active,!1)},methods:{toggle:function(item,animate$$1){var this$1=this,index$$1=getIndex(item,this.items),active=filter(this.items,"."+this.clsOpen);(item=this.items[index$$1])&&[item].concat(!this.multiple&&!includes(active,item)&&active||[]).forEach(function(el){var isItem=el===item,state=isItem&&!hasClass(el,this$1.clsOpen);if(state||!isItem||this$1.collapsible||!(active.length<2)){toggleClass(el,this$1.clsOpen,state);var content=el._wrapper?el._wrapper.firstElementChild:$(this$1.content,el);el._wrapper||(el._wrapper=wrapAll(content,"<div>"),attr(el._wrapper,"hidden",state?"":null)),this$1._toggleImmediate(content,!0),this$1.toggleElement(el._wrapper,state,animate$$1).then(function(){hasClass(el,this$1.clsOpen)===state&&(state||this$1._toggleImmediate(content,!1),el._wrapper=null,unwrap(content))})}})}}},Alert={attrs:!0,mixins:[Class,Togglable],args:"animation",props:{close:String},data:{animation:[!0],selClose:".uk-alert-close",duration:150,hideProps:assign({opacity:0},Togglable.data.hideProps)},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.close()}}],methods:{close:function(){var this$1=this;this.toggleElement(this.$el).then(function(){return this$1.$destroy(!0)})}}};function Core(UIkit){ready(function(){var scroll=0,started=0;if(on(window,"load resize",function(e){return UIkit.update(null,e)}),on(window,"scroll",function(e){e.dir=scroll<=window.pageYOffset?"down":"up",e.pageYOffset=scroll=window.pageYOffset,UIkit.update(null,e)},{capture:!0,passive:!1}),on(document,"animationstart",function(ref){var target=ref.target;(css(target,"animationName")||"").match(/^uk-.*(left|right)/)&&(started++,css(document.body,"overflowX","hidden"),setTimeout(function(){--started||css(document.body,"overflowX","")},toMs(css(target,"animationDuration"))+100))},!0),hasTouch){var cls="uk-hover";on(document,"tap",function(ref){var target=ref.target;return $$("."+cls).forEach(function(el){return!within(target,el)&&removeClass(el,cls)})}),Object.defineProperty(UIkit,"hoverSelector",{set:function(selector){on(document,"tap",selector,function(ref){return addClass(ref.current,cls)})}}),UIkit.hoverSelector=".uk-animation-toggle, .uk-transition-toggle, [uk-hover]"}})}var active,registered,Video={args:"autoplay",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(ref){return"inview"===ref.autoplay}},connected:function(){this.inView&&!hasAttr(this.$el,"preload")&&(this.$el.preload="none")},ready:function(){this.player=new Player(this.$el),this.automute&&this.player.mute()},update:[{read:function(_,ref){var type=ref.type;return!(!this.player||!("scroll"!==type&&"resize"!==type||this.inView))&&{visible:isVisible(this.$el)&&"hidden"!==css(this.$el,"visibility"),inView:this.inView&&isInView(this.$el)}},write:function(ref){var visible=ref.visible,inView=ref.inView;!visible||this.inView&&!inView?this.player.pause():(!0===this.autoplay||this.inView&&inView)&&this.player.play()},events:["load","resize","scroll"]}]},Cover={mixins:[Class,Video],props:{width:Number,height:Number},data:{automute:!0},update:{write:function(){var el=this.$el;if(isVisible(el)){var ref=el.parentNode,height$$1=ref.offsetHeight,width$$1=ref.offsetWidth;css(css(el,{width:"",height:""}),Dimensions.cover({width:this.width||el.clientWidth,height:this.height||el.clientHeight},{width:width$$1+(width$$1%2?1:0),height:height$$1+(height$$1%2?1:0)}))}},events:["load","resize"]},events:{loadedmetadata:function(){this.$emit()}}},Position={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:"bottom-"+(isRtl?"right":"left"),flip:!0,offset:!1,clsPos:""},computed:{pos:function(ref){var pos=ref.pos;return(pos+(includes(pos,"-")?"":"-center")).split("-")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(element,target,boundary){var node;removeClasses(element,this.clsPos+"-(top|bottom|left|right)(-[a-z]+)?"),css(element,{top:"",left:""});var offset$$1=this.offset;offset$$1=isNumeric(offset$$1)?offset$$1:(node=$(offset$$1))?offset(node)["x"===axis?"left":"top"]-offset(target)["x"===axis?"right":"bottom"]:0;var axis=this.getAxis(),ref$1=positionAt(element,target,"x"===axis?flipPosition(this.dir)+" "+this.align:this.align+" "+flipPosition(this.dir),"x"===axis?this.dir+" "+this.align:this.align+" "+this.dir,"x"===axis?""+("left"===this.dir?-offset$$1:offset$$1):" "+("top"===this.dir?-offset$$1:offset$$1),null,this.flip,boundary).target,x=ref$1.x,y=ref$1.y;this.dir="x"===axis?x:y,this.align="x"===axis?y:x,toggleClass(element,this.clsPos+"-"+this.dir+"-"+this.align,!1===this.offset)},getAxis:function(){return"top"===this.dir||"bottom"===this.dir?"y":"x"}}},Drop={mixins:[Position,Togglable],args:"pos",props:{mode:"list",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:["click","hover"],toggle:"- *",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:["uk-animation-fade"],cls:"uk-open"},computed:{boundary:function(ref,$el){return query(ref.boundary,$el)},clsDrop:function(ref){return ref.clsDrop||"uk-"+this.$options.name},clsPos:function(){return this.clsDrop}},init:function(){this.tracker=new MouseTracker},connected:function(){addClass(this.$el,this.clsDrop);var toggle=this.$props.toggle;this.toggle=toggle&&this.$create("toggle",query(toggle,this.$el),{target:this.$el,mode:this.mode}),this.updateAria(this.$el)},events:[{name:"click",delegate:function(){return"."+this.clsDrop+"-close"},handler:function(e){e.preventDefault(),this.hide(!1)}},{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(e){if(!e.defaultPrevented){var id=e.target.hash;id||e.preventDefault(),id&&within(id,this.$el)||this.hide(!1)}}},{name:"beforescroll",handler:function(){this.hide(!1)}},{name:"toggle",self:!0,handler:function(e,toggle){e.preventDefault(),this.isToggled()?this.hide(!1):this.show(toggle,!1)}},{name:pointerEnter,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||(active&&active!==this&&active.toggle&&includes(active.toggle.mode,"hover")&&!within(e.target,active.toggle.$el)&&!pointInRect({x:e.pageX,y:e.pageY},offset(active.$el))&&active.hide(!1),e.preventDefault(),this.show(this.toggle))}},{name:"toggleshow",handler:function(e,toggle){toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.show(toggle||this.toggle))}},{name:"togglehide "+pointerLeave,handler:function(e,toggle){isTouch(e)||toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.toggle&&includes(this.toggle.mode,"hover")&&this.hide())}},{name:"beforeshow",self:!0,handler:function(){this.clearTimers(),Animation.cancel(this.$el),this.position()}},{name:"show",self:!0,handler:function(){this.tracker.init(),this.toggle&&(addClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","true")),function(){if(registered)return;registered=!0,on(document,"click",function(ref){var prev,target=ref.target,defaultPrevented=ref.defaultPrevented;if(!defaultPrevented)for(;active&&active!==prev&&!within(target,active.$el)&&(!active.toggle||!within(target,active.toggle.$el));)prev=active,active.hide(!1)})}()}},{name:"beforehide",self:!0,handler:function(){this.clearTimers()}},{name:"hide",handler:function(ref){var target=ref.target;this.$el===target?(active=this.isActive()?null:active,this.toggle&&(removeClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","false"),this.toggle.$el.blur(),$$("a, button",this.toggle.$el).forEach(function(el){return el.blur()})),this.tracker.cancel()):active=null===active&&within(target,this.$el)&&this.isToggled()?this:active}}],update:{write:function(){this.isToggled()&&!Animation.inProgress(this.$el)&&this.position()},events:["resize"]},methods:{show:function(toggle,delay){var this$1=this;void 0===delay&&(delay=!0);var show=function(){return!this$1.isToggled()&&this$1.toggleElement(this$1.$el,!0)},tryShow=function(){if(this$1.toggle=toggle||this$1.toggle,this$1.clearTimers(),!this$1.isActive())if(delay&&active&&active!==this$1&&active.isDelaying)this$1.showTimer=setTimeout(this$1.show,10);else{if(this$1.isParentOf(active)){if(!active.hideTimer)return;active.hide(!1)}else if(active&&!this$1.isChildOf(active)&&!this$1.isParentOf(active))for(var prev;active&&active!==prev&&!this$1.isChildOf(active);)prev=active,active.hide(!1);delay&&this$1.delayShow?this$1.showTimer=setTimeout(show,this$1.delayShow):show(),active=this$1}};toggle&&this.toggle&&toggle.$el!==this.toggle.$el?(once(this.$el,"hide",tryShow),this.hide(!1)):tryShow()},hide:function(delay){var this$1=this;void 0===delay&&(delay=!0);var hide=function(){return this$1.toggleNow(this$1.$el,!1)};this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),delay&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):delay&&this.delayHide?this.hideTimer=setTimeout(hide,this.delayHide):hide()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return active===this},isChildOf:function(drop){return drop&&drop!==this&&within(this.$el,drop.$el)},isParentOf:function(drop){return drop&&drop!==this&&within(drop.$el,this.$el)},position:function(){removeClasses(this.$el,this.clsDrop+"-(stack|boundary)"),css(this.$el,{top:"",left:"",display:"block"}),toggleClass(this.$el,this.clsDrop+"-boundary",this.boundaryAlign);var boundary=offset(this.boundary),alignTo=this.boundaryAlign?boundary:offset(this.toggle.$el);if("justify"===this.align){var prop="y"===this.getAxis()?"width":"height";css(this.$el,prop,alignTo[prop])}else this.$el.offsetWidth>Math.max(boundary.right-alignTo.left,alignTo.right-boundary.left)&&addClass(this.$el,this.clsDrop+"-stack");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),css(this.$el,"display","")}}};var Dropdown={extends:Drop},FormCustom={mixins:[Class],args:"target",props:{target:Boolean},data:{target:!1},computed:{input:function(_,$el){return $(selInput,$el)},state:function(){return this.input.nextElementSibling},target:function(ref,$el){var target=ref.target;return target&&(!0===target&&this.input.parentNode===$el&&this.input.nextElementSibling||query(target,$el))}},update:function(){var target=this.target,input=this.input;if(target){var option,prop=isInput(target)?"value":"textContent",prev=target[prop],value=input.files&&input.files[0]?input.files[0].name:matches(input,"select")&&(option=$$("option",input).filter(function(el){return el.selected})[0])?option.textContent:input.value;prev!==value&&(target[prop]=value)}},events:[{name:"focusin focusout mouseenter mouseleave",delegate:selInput,handler:function(ref){var type=ref.type;ref.current===this.input&&toggleClass(this.state,"uk-"+(includes(type,"focus")?"focus":"hover"),includes(["focusin","mouseenter"],type))}},{name:"change",handler:function(){this.$emit()}}]},Gif={update:{read:function(data$$1){var inview=isInView(this.$el);if(!inview||data$$1.isInView===inview)return!1;data$$1.isInView=inview},write:function(){this.$el.src=this.$el.src},events:["scroll","load","resize"]}},Margin={props:{margin:String,firstColumn:Boolean},data:{margin:"uk-margin-small-top",firstColumn:"uk-first-column"},update:{read:function(data$$1){var items=this.$el.children;if(!items.length||!isVisible(this.$el))return data$$1.rows=[[]];data$$1.rows=getRows(items),data$$1.stacks=!data$$1.rows.some(function(row){return row.length>1})},write:function(ref){var this$1=this;ref.rows.forEach(function(row,i){return row.forEach(function(el,j){toggleClass(el,this$1.margin,0!==i),toggleClass(el,this$1.firstColumn,0===j)})})},events:["load","resize"]}};function getRows(items){for(var rows=[[]],i=0;i<items.length;i++){var el=items[i],dim=getOffset(el);if(dim.height)for(var j=rows.length-1;j>=0;j--){var row=rows[j];if(!row[0]){row.push(el);break}var leftDim=getOffset(row[0]);if(dim.top>=leftDim.bottom-1){rows.push([el]);break}if(dim.bottom>leftDim.top){if(dim.left<leftDim.left&&!isRtl){row.unshift(el);break}row.push(el);break}if(0===j){rows.unshift([el]);break}}}return rows}function getOffset(element){var offsetTop=element.offsetTop,offsetLeft=element.offsetLeft,offsetHeight=element.offsetHeight;return{top:offsetTop,left:offsetLeft,height:offsetHeight,bottom:offsetTop+offsetHeight}}var Grid={extends:Margin,mixins:[Class],attrs:!0,name:"grid",props:{masonry:Boolean,parallax:Number},data:{margin:"uk-grid-margin",clsStack:"uk-grid-stack",masonry:!1,parallax:0},computed:{parallax:function(ref){var parallax=ref.parallax;return Math.abs(parallax)}},connected:function(){this.masonry&&addClass(this.$el,"uk-flex-top uk-flex-wrap-top")},update:[{read:function(ref){var rows=ref.rows;(this.masonry||this.parallax)&&(rows=rows.map(function(elements){return sortBy(elements,"offsetLeft")}));var root,cls,nodes,node,translates=!1,elHeight=!1;if(this.masonry){var height$$1=0;translates=rows.reduce(function(translates,row,i){return translates[i]=row.map(function(_,j){return 0===i?0:toFloat(translates[i-1][j])+(height$$1-toFloat(rows[i-1][j]&&rows[i-1][j].offsetHeight))}),height$$1=row.reduce(function(height$$1,el){return Math.max(height$$1,el.offsetHeight)},0),translates},[]),elHeight=function(rows){return Math.max.apply(Math,rows.reduce(function(sum,row){return row.forEach(function(el,i){return sum[i]=(sum[i]||0)+el.offsetHeight}),sum},[]))}(rows)+(root=this.$el,cls=this.margin,nodes=toNodes(root.children),toFloat((node=nodes.filter(function(el){return hasClass(el,cls)})[0])?css(node,"marginTop"):css(nodes[0],"paddingLeft"))*(rows.length-1))}return{rows:rows,translates:translates,height:elHeight}},write:function(ref){var rows=ref.rows,stacks=ref.stacks,height$$1=ref.height;toggleClass(this.$el,this.clsStack,stacks),css(this.$el,"paddingBottom",this.parallax&&rows.some(function(row){return row.length>1})?this.parallax:""),height$$1&&css(this.$el,"minHeight",height$$1)},events:["load","resize"]},{read:function(ref){var rows=ref.rows,height$$1=ref.height;return{scrolled:!(!this.parallax||!rows.some(function(row){return row.length>1}))&&scrolledOver(this.$el,height$$1?height$$1-height(this.$el):0)*this.parallax}},write:function(ref){var rows=ref.rows,scrolled=ref.scrolled,translates=ref.translates;(!1!==scrolled||translates)&&rows.forEach(function(row,i){return row.forEach(function(el,j){return css(el,"transform",scrolled||translates?"translateY("+((translates&&-translates[i][j])+(scrolled?j%2?scrolled:scrolled/8:0))+"px)":"")})})},events:["scroll","load","resize"]}]};var HeightMatch={args:"target",props:{target:String,row:Boolean},data:{target:"> *",row:!0},computed:{elements:function(ref,$el){return $$(ref.target,$el)}},update:{read:function(){var this$1=this;return css(this.elements,{minHeight:"",boxSizing:""}),{rows:this.row?getRows(this.elements).map(function(elements){return this$1.match(elements)}):[this.match(this.elements)]}},write:function(ref){ref.rows.forEach(function(ref){var height$$1=ref.height;return css(ref.elements,{minHeight:height$$1,boxSizing:"border-box"})})},events:["load","resize"]},methods:{match:function(elements){if(elements.length<2)return{};var heights=[],max=0;return elements.forEach(function(el){var height$$1=offset(el).height;max=Math.max(max,height$$1),heights.push(height$$1)}),elements=elements.filter(function(el,i){return heights[i]<max}),{height:max,elements:elements}}}},HeightViewport={props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{write:function(){css(this.$el,"boxSizing","border-box");var minHeight,viewport=height(window),offsetTop=0;if(this.expand){css(this.$el,{height:"",minHeight:""});var diff=viewport-offsetHeight(document.documentElement);diff>0&&(minHeight=offsetHeight(this.$el)+diff)}else{var top=offset(this.$el).top;top<viewport/2&&this.offsetTop&&(offsetTop+=top),!0===this.offsetBottom?offsetTop+=offsetHeight(this.$el.nextElementSibling):isNumeric(this.offsetBottom)?offsetTop+=viewport/100*this.offsetBottom:this.offsetBottom&&endsWith(this.offsetBottom,"px")?offsetTop+=toFloat(this.offsetBottom):isString(this.offsetBottom)&&(offsetTop+=offsetHeight(query(this.offsetBottom,this.$el))),minHeight=offsetTop?"calc(100vh - "+offsetTop+"px)":"100vh"}if(minHeight){css(this.$el,{height:"",minHeight:minHeight});var elHeight=this.$el.offsetHeight;this.minHeight&&this.minHeight>elHeight&&css(this.$el,"minHeight",this.minHeight),viewport-offsetTop>=elHeight&&css(this.$el,"height",minHeight)}},events:["load","resize"]}};function offsetHeight(el){return el&&el.offsetHeight||0}var svgs={},SVG={attrs:!0,props:{id:String,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String},data:{ratio:1,id:!1,exclude:["ratio","src","icon"],class:""},connected:function(){var assign$$1,this$1=this;if(this.class+=" uk-svg",!this.icon&&includes(this.src,"#")){var parts=this.src.split("#");parts.length>1&&(assign$$1=parts,this.src=assign$$1[0],this.icon=assign$$1[1])}this.svg=this.getSvg().then(function(svg){var el;if(isString(svg)?(this$1.icon&&includes(svg,"<symbol")&&(svg=function(svg,icon){if(!symbols[svg]){var match;for(symbols[svg]={};match=symbolRe.exec(svg);)symbols[svg][match[3]]='<svg xmlns="http://www.w3.org/2000/svg"'+match[1]+"svg>";symbolRe.lastIndex=0}return symbols[svg][icon]}(svg,this$1.icon)||svg),el=$(svg.substr(svg.indexOf("<svg")))):el=svg.cloneNode(!0),!el)return Promise$1.reject("SVG not found.");var dimensions=attr(el,"viewBox");for(var prop in dimensions&&(dimensions=dimensions.split(" "),this$1.width=this$1.$props.width||dimensions[2],this$1.height=this$1.$props.height||dimensions[3]),this$1.width*=this$1.ratio,this$1.height*=this$1.ratio,this$1.$options.props)this$1[prop]&&!includes(this$1.exclude,prop)&&attr(el,prop,this$1[prop]);this$1.id||removeAttr(el,"id"),this$1.width&&!this$1.height&&removeAttr(el,"height"),this$1.height&&!this$1.width&&removeAttr(el,"width");var root=this$1.$el;if(isVoidElement(root)||"CANVAS"===root.tagName){attr(root,{hidden:!0,id:null});var next=root.nextElementSibling;next&&el.isEqualNode(next)?el=next:after(root,el)}else{var last=root.lastElementChild;last&&el.isEqualNode(last)?el=last:append(root,el)}return this$1.svgEl=el,el},noop)},disconnected:function(){var this$1=this;isVoidElement(this.$el)&&attr(this.$el,{hidden:null,id:this.id||null}),this.svg&&this.svg.then(function(svg){return(!this$1._connected||svg!==this$1.svgEl)&&remove(svg)},noop),this.svg=this.svgEl=null},methods:{getSvg:function(){var this$1=this;return this.src?svgs[this.src]?svgs[this.src]:(svgs[this.src]=new Promise$1(function(resolve,reject){startsWith(this$1.src,"data:")?resolve(decodeURIComponent(this$1.src.split(",")[1])):ajax(this$1.src).then(function(xhr){return resolve(xhr.response)},function(){return reject("SVG not found.")})}),svgs[this.src]):Promise$1.reject()}}},symbolRe=/<symbol(.*?id=(['"])(.*?)\2[^]*?<\/)symbol>/g,symbols={};var parsed={},icons={spinner:'<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" cx="15" cy="15" r="14"/></svg>',totop:'<svg width="18" height="10" viewBox="0 0 18 10" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 9 9 1 17 9 "/></svg>',marker:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="9" y="4" width="1" height="11"/><rect x="4" y="9" width="11" height="1"/></svg>',"close-icon":'<svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.1" x1="1" y1="1" x2="13" y2="13"/><line fill="none" stroke="#000" stroke-width="1.1" x1="13" y1="1" x2="1" y2="13"/></svg>',"close-large":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.4" x1="1" y1="1" x2="19" y2="19"/><line fill="none" stroke="#000" stroke-width="1.4" x1="19" y1="1" x2="1" y2="19"/></svg>',"navbar-toggle-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect y="9" width="20" height="2"/><rect y="3" width="20" height="2"/><rect y="15" width="20" height="2"/></svg>',"overlay-icon":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><rect x="19" y="0" width="1" height="40"/><rect x="0" y="19" width="40" height="1"/></svg>',"pagination-next":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 1 6 6 1 11"/></svg>',"pagination-previous":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="6 1 1 6 6 11"/></svg>',"search-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9" cy="9" r="7"/><path fill="none" stroke="#000" stroke-width="1.1" d="M14,14 L18,18 L14,14 Z"/></svg>',"search-large":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.8" cx="17.5" cy="17.5" r="16.5"/><line fill="none" stroke="#000" stroke-width="1.8" x1="38" y1="39" x2="29" y2="30"/></svg>',"search-navbar":'<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10.5" cy="10.5" r="9.5"/><line fill="none" stroke="#000" stroke-width="1.1" x1="23" y1="23" x2="17" y2="17"/></svg>',"slidenav-next":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="1.225,23 12.775,12 1.225,1 "/></svg>',"slidenav-next-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="4.002,38.547 22.527,20.024 4,1.5 "/></svg>',"slidenav-previous":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="12.775,1 1.225,12 12.775,23 "/></svg>',"slidenav-previous-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="20.527,1.5 2,20.024 20.525,38.547 "/></svg>'},Icon={install:function(UIkit){UIkit.icon.add=function(name,svg){var obj,added=isString(name)?((obj={})[name]=svg,obj):name;each(added,function(svg,name){icons[name]=svg,delete parsed[name]}),UIkit._initialized&&apply(document.body,function(el){return each(UIkit.getComponents(el),function(cmp){return cmp.$options.isIcon&&cmp.icon in added&&cmp.$reset()})})}},attrs:["icon","ratio"],mixins:[Class,SVG],args:"icon",props:["icon"],data:{exclude:["id","style","class","src","icon","ratio"]},isIcon:!0,connected:function(){addClass(this.$el,"uk-icon")},methods:{getSvg:function(){var icon=function(icon){if(!icons[icon])return null;parsed[icon]||(parsed[icon]=$(icons[icon].trim()));return parsed[icon]}(function(icon){return isRtl?swap(swap(icon,"left","right"),"previous","next"):icon}(this.icon));return icon?Promise$1.resolve(icon):Promise$1.reject("Icon not found.")}}},IconComponent={extends:Icon,data:function(vm){return{icon:hyphenate(vm.constructor.options.name)}}},Slidenav={extends:IconComponent,connected:function(){addClass(this.$el,"uk-slidenav")},computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-slidenav-large")?icon+"-large":icon}}},Search={extends:IconComponent,computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-search-icon")&&parents($el,".uk-search-large").length?"search-large":parents($el,".uk-search-navbar").length?"search-navbar":icon}}},Close={extends:IconComponent,computed:{icon:function(){return"close-"+(hasClass(this.$el,"uk-close-large")?"large":"icon")}}},Spinner={extends:IconComponent,connected:function(){var this$1=this;this.svg.then(function(svg){return 1!==this$1.ratio&&css($("circle",svg),"strokeWidth",1/this$1.ratio)},noop)}};var Img={attrs:!0,props:{dataSrc:String,dataSrcset:Boolean,dataSizes:Boolean,sizes:String,width:Number,height:Number,dataWidth:Number,dataHeight:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:"",dataSrcset:!1,dataSizes:!1,sizes:!1,width:!1,height:!1,offsetTop:"50vh",offsetLeft:0,target:!1},computed:{cacheKey:function(ref){var dataSrc=ref.dataSrc;return this.$name+"."+dataSrc},width:function(ref){var width$$1=ref.width,dataWidth=ref.dataWidth;return width$$1||dataWidth},height:function(ref){var height$$1=ref.height,dataHeight=ref.dataHeight;return height$$1||dataHeight},sizes:function(ref){var sizes=ref.sizes,dataSizes=ref.dataSizes;return sizes||dataSizes},isImg:function(_,$el){return isImg($el)},target:function(ref){var target=ref.target;return[this.$el].concat(queryAll(target,this.$el))},offsetTop:function(ref){return toPx(ref.offsetTop,"height")},offsetLeft:function(ref){return toPx(ref.offsetLeft,"width")}},connected:function(){storage[this.cacheKey]?setSrcAttrs(this.$el,storage[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&setSrcAttrs(this.$el,function(width$$1,height$$1,sizes,color){var assign$$1;void 0===color&&(color="transparent");if(sizes){for(var matches$$1;matches$$1=sizesRe.exec(sizes);)if(!matches$$1[1]||window.matchMedia(matches$$1[1]).matches){size=matches$$1[2],matches$$1=startsWith(size,"calc")?size.substring(5,size.length-1).replace(sizeRe,function(size){return toPx(size)}).replace(/ /g,"").match(additionRe).reduce(function(a,b){return a+ +b},0):size;break}sizesRe.lastIndex=0,assign$$1=Dimensions.ratio({width:width$$1,height:height$$1},"width",toPx(matches$$1||"100vw")),width$$1=assign$$1.width,height$$1=assign$$1.height}var size;var key=width$$1+"."+height$$1+"."+color;if(urlCache[key])return urlCache[key];var canvas=fragment("<canvas>");canvas.width=width$$1,canvas.height=height$$1;var context=canvas.getContext("2d");return context.fillStyle=color,context.fillRect(0,0,width$$1,height$$1),urlCache[key]=canvas.toDataURL("image/png")}(this.width,this.height,this.sizes))},update:[{read:function(ref){var this$1=this,delay=ref.delay,image=ref.image;if(delay){if(!image&&this.target.some(function(el){return isInView(el,this$1.offsetTop,this$1.offsetLeft,!0)}))return{image:getImage(this.dataSrc,this.dataSrcset,this.sizes).then(function(img){return setSrcAttrs(this$1.$el,currentSrc(img),img.srcset,img.sizes),storage[this$1.cacheKey]=currentSrc(img),img},noop)};!this.isImg&&image&&image.then(function(img){return img&&setSrcAttrs(this$1.$el,currentSrc(img))})}},write:function(data$$1){if(!data$$1.delay)return this.$emit(),data$$1.delay=!0},events:["scroll","load","resize"]}]};function setSrcAttrs(el,src,srcset,sizes){isImg(el)?(src&&(el.src=src),srcset&&(el.srcset=srcset),sizes&&(el.sizes=sizes)):src&&css(el,"backgroundImage","url("+src+")")}var urlCache={},sizesRe=/\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;var sizeRe=/\d+(?:\w+|%)/g,additionRe=/[+-]?(\d+)/g;function toPx(value,property,element){return void 0===property&&(property="width"),void 0===element&&(element=window),isNumeric(value)?+value:endsWith(value,"vw")?percent(element,"width",value):endsWith(value,"vh")?percent(element,"height",value):endsWith(value,"%")?percent(element,property,value):toFloat(value)}var dimensions={height:height,width:width};function percent(element,property,value){return dimensions[property](element)*toFloat(value)/100}function isImg(el){return"IMG"===el.tagName}function currentSrc(el){return el.currentSrc||el.src}var storage;try{(storage=window.sessionStorage||{}).__test__=1,delete storage.__test__}catch(e){storage={}}var active$1,events,Leader={mixins:[Class],props:{fill:String,media:"media"},data:{fill:"",media:!1,clsWrapper:"uk-leader-fill",clsHide:"uk-leader-hide",attrFill:"data-fill"},computed:{fill:function(ref){return ref.fill||getCssVar("leader-fill")}},connected:function(){var assign$$1;assign$$1=wrapInner(this.$el,'<span class="'+this.clsWrapper+'">'),this.wrapper=assign$$1[0]},disconnected:function(){unwrap(this.wrapper.childNodes)},update:[{read:function(ref){var changed=ref.changed,width$$1=ref.width,prev=width$$1;return{width:width$$1=Math.floor(this.$el.offsetWidth/2),changed:changed||prev!==width$$1,hide:this.media&&!window.matchMedia(this.media).matches}},write:function(data$$1){toggleClass(this.wrapper,this.clsHide,data$$1.hide),data$$1.changed&&(data$$1.changed=!1,attr(this.wrapper,this.attrFill,new Array(data$$1.width).join(this.fill)))},events:["load","resize"]}]},Container={props:{container:Boolean},data:{container:!0},computed:{container:function(ref){var container=ref.container;return!0===container&&this.$container||container&&$(container)}}},Modal={mixins:[Class,Container,Togglable],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:"uk-open",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(ref,$el){return $(ref.selPanel,$el)},transitionElement:function(){return this.panel},transitionDuration:function(){return toMs(css(this.transitionElement,"transitionDuration"))},bgClose:function(ref){return ref.bgClose&&this.panel}},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.hide()}},{name:"toggle",self:!0,handler:function(e){e.defaultPrevented||(e.preventDefault(),this.toggle())}},{name:"beforeshow",self:!0,handler:function(e){var prev=active$1&&active$1!==this&&active$1;if(active$1=this,prev){if(!this.stack)return prev.hide().then(this.show),void e.preventDefault();this.prev=prev}!function(){if(events)return;events=[on(document,"click",function(ref){var target=ref.target,defaultPrevented=ref.defaultPrevented;!active$1||!active$1.bgClose||defaultPrevented||active$1.overlay&&!within(target,active$1.$el)||within(target,active$1.panel)||active$1.hide()}),on(document,"keydown",function(e){27===e.keyCode&&active$1&&active$1.escClose&&(e.preventDefault(),active$1.hide())})]}()}},{name:"beforehide",self:!0,handler:function(){(active$1=active$1&&active$1!==this&&active$1||this.prev)||(events&&events.forEach(function(unbind){return unbind()}),events=null)}},{name:"show",self:!0,handler:function(){hasClass(document.documentElement,this.clsPage)||(this.scrollbarWidth=width(window)-width(document),css(document.body,"overflowY",this.scrollbarWidth&&this.overlay?"scroll":"")),addClass(document.documentElement,this.clsPage)}},{name:"hidden",self:!0,handler:function(){for(var found,prev=this.prev;prev;){if(prev.clsPage===this.clsPage){found=!0;break}prev=prev.prev}found||removeClass(document.documentElement,this.clsPage),!this.prev&&css(document.body,"overflowY","")}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){return this.isToggled()?Promise$1.resolve():(this.container&&this.$el.parentNode!==this.container&&(append(this.container,this.$el),this._callConnected()),this.toggleNow(this.$el,!0))},hide:function(){return this.isToggled()?this.toggleNow(this.$el,!1):Promise$1.resolve()},getActive:function(){return active$1},_toggleImmediate:function(el,show){var this$1=this;return new Promise$1(function(resolve){return requestAnimationFrame(function(){this$1._toggle(el,show),this$1.transitionDuration?once(this$1.transitionElement,"transitionend",resolve,!1,function(e){return e.target===this$1.transitionElement}):resolve()})})}}};var Modal$1={install:function(UIkit){UIkit.modal.dialog=function(content,options){var dialog=UIkit.modal(' <div class="uk-modal"> <div class="uk-modal-dialog">'+content+"</div> </div> ",options);return dialog.show(),on(dialog.$el,"hidden",function(ref){var target=ref.target,currentTarget=ref.currentTarget;target===currentTarget&&dialog.$destroy(!0)}),dialog},UIkit.modal.alert=function(message,options){return options=assign({bgClose:!1,escClose:!1,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){return on(UIkit.modal.dialog(' <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-primary uk-modal-close" autofocus>'+options.labels.ok+"</button> </div> ",options).$el,"hide",resolve)})},UIkit.modal.confirm=function(message,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve,reject){var confirm=UIkit.modal.dialog(' <form> <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary" autofocus>'+options.labels.ok+"</button> </div> </form> ",options),resolved=!1;on(confirm.$el,"submit","form",function(e){e.preventDefault(),resolve(),resolved=!0,confirm.hide()}),on(confirm.$el,"hide",function(){resolved||reject()})})},UIkit.modal.prompt=function(message,value,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){var prompt=UIkit.modal.dialog(' <form class="uk-form-stacked"> <div class="uk-modal-body"> <label>'+(isString(message)?message:html(message))+'</label> <input class="uk-input" autofocus> </div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary">'+options.labels.ok+"</button> </div> </form> ",options),input=$("input",prompt.$el);input.value=value;var resolved=!1;on(prompt.$el,"submit","form",function(e){e.preventDefault(),resolve(input.value),resolved=!0,prompt.hide()}),on(prompt.$el,"hide",function(){resolved||resolve(null)})})},UIkit.modal.labels={ok:"Ok",cancel:"Cancel"}},mixins:[Modal],data:{clsPage:"uk-modal-page",selPanel:".uk-modal-dialog",selClose:".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full"},events:[{name:"show",self:!0,handler:function(){hasClass(this.panel,"uk-margin-auto-vertical")?addClass(this.$el,"uk-flex"):css(this.$el,"display","block"),height(this.$el)}},{name:"hidden",self:!0,handler:function(){css(this.$el,"display",""),removeClass(this.$el,"uk-flex")}}]};var scroll,Nav={extends:Accordion,data:{targets:"> .uk-parent",toggle:"> a",content:"> ul"}},Navbar={mixins:[Class],props:{dropdown:String,mode:"list",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:".uk-navbar-nav > li",align:isRtl?"right":"left",clsDrop:"uk-navbar-dropdown",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:"x",boundary:!0,dropbar:!1,dropbarMode:"slide",dropbarAnchor:!1,duration:200},computed:{boundary:function(ref,$el){var boundary=ref.boundary,boundaryAlign=ref.boundaryAlign;return!0===boundary||boundaryAlign?$el:boundary},dropbarAnchor:function(ref,$el){return query(ref.dropbarAnchor,$el)},pos:function(ref){return"bottom-"+ref.align},dropdowns:function(ref,$el){return $$(ref.dropdown+" ."+ref.clsDrop,$el)}},beforeConnect:function(){var dropbar=this.$props.dropbar;this.dropbar=dropbar&&(query(dropbar,this.$el)||$("+ .uk-navbar-dropbar",this.$el)||$("<div></div>")),this.dropbar&&(addClass(this.dropbar,"uk-navbar-dropbar"),"slide"===this.dropbarMode&&addClass(this.dropbar,"uk-navbar-dropbar-slide"))},disconnected:function(){this.dropbar&&remove(this.dropbar)},update:function(){var this$1=this;this.$create("drop",this.dropdowns.filter(function(el){return!this$1.getDropdown(el)}),assign({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:"mouseover",delegate:function(){return this.dropdown},handler:function(ref){var current=ref.current,active=this.getActive();active&&active.toggle&&!within(active.toggle.$el,current)&&!active.tracker.movesTo(active.$el)&&active.hide(!1)}},{name:"mouseleave",el:function(){return this.dropbar},handler:function(){var active=this.getActive();active&&!matches(this.dropbar,":hover")&&active.hide()}},{name:"beforeshow",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||after(this.dropbarAnchor||this.$el,this.dropbar)}},{name:"show",capture:!0,filter:function(){return this.dropbar},handler:function(_,drop){var $el=drop.$el,dir=drop.dir;this.clsDrop&&addClass($el,this.clsDrop+"-dropbar"),"bottom"===dir&&this.transitionTo($el.offsetHeight+toFloat(css($el,"marginTop"))+toFloat(css($el,"marginBottom")),$el)}},{name:"beforehide",filter:function(){return this.dropbar},handler:function(e,ref){var $el=ref.$el,active=this.getActive();matches(this.dropbar,":hover")&&active&&active.$el===$el&&e.preventDefault()}},{name:"hide",filter:function(){return this.dropbar},handler:function(_,ref){var $el=ref.$el,active=this.getActive();(!active||active&&active.$el===$el)&&this.transitionTo(0)}}],methods:{getActive:function(){var active=this.dropdowns.map(this.getDropdown).filter(function(drop){return drop.isActive()})[0];return active&&includes(active.mode,"hover")&&within(active.toggle.$el,this.$el)&&active},transitionTo:function(newHeight,el){var dropbar=this.dropbar,oldHeight=isVisible(dropbar)?height(dropbar):0;return css(el=oldHeight<newHeight&&el,"clip","rect(0,"+el.offsetWidth+"px,"+oldHeight+"px,0)"),height(dropbar,oldHeight),Transition.cancel([el,dropbar]),Promise.all([Transition.start(dropbar,{height:newHeight},this.duration),Transition.start(el,{clip:"rect(0,"+el.offsetWidth+"px,"+newHeight+"px,0)"},this.duration)]).catch(noop).then(function(){return css(el,{clip:""})})},getDropdown:function(el){return this.$getComponent(el,"drop")||this.$getComponent(el,"dropdown")}}},Offcanvas={mixins:[Modal],args:"mode",props:{content:String,mode:String,flip:Boolean,overlay:Boolean},data:{content:".uk-offcanvas-content",mode:"slide",flip:!1,overlay:!1,clsPage:"uk-offcanvas-page",clsContainer:"uk-offcanvas-container",selPanel:".uk-offcanvas-bar",clsFlip:"uk-offcanvas-flip",clsContent:"uk-offcanvas-content",clsContentAnimation:"uk-offcanvas-content-animation",clsSidebarAnimation:"uk-offcanvas-bar-animation",clsMode:"uk-offcanvas",clsOverlay:"uk-offcanvas-overlay",selClose:".uk-offcanvas-close"},computed:{content:function(ref){return $(ref.content)||document.body},clsFlip:function(ref){var flip=ref.flip,clsFlip=ref.clsFlip;return flip?clsFlip:""},clsOverlay:function(ref){var overlay=ref.overlay,clsOverlay=ref.clsOverlay;return overlay?clsOverlay:""},clsMode:function(ref){var mode=ref.mode;return ref.clsMode+"-"+mode},clsSidebarAnimation:function(ref){var mode=ref.mode,clsSidebarAnimation=ref.clsSidebarAnimation;return"none"===mode||"reveal"===mode?"":clsSidebarAnimation},clsContentAnimation:function(ref){var mode=ref.mode,clsContentAnimation=ref.clsContentAnimation;return"push"!==mode&&"reveal"!==mode?"":clsContentAnimation},transitionElement:function(ref){return"reveal"===ref.mode?this.panel.parentNode:this.panel}},update:{write:function(){this.getActive()===this&&((this.overlay||this.clsContentAnimation)&&width(this.content,width(window)-this.scrollbarWidth),this.overlay&&(height(this.content,height(window)),scroll&&(this.content.scrollTop=scroll.y)))},events:["resize"]},events:[{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(ref){var current=ref.current;current.hash&&$(current.hash,this.content)&&(scroll=null,this.hide())}},{name:"beforescroll",filter:function(){return this.overlay},handler:function(e,scroll,target){scroll&&target&&this.isToggled()&&$(target,this.content)&&(once(this.$el,"hidden",function(){return scroll.scrollTo(target)}),e.preventDefault())}},{name:"show",self:!0,handler:function(){scroll=scroll||{x:window.pageXOffset,y:window.pageYOffset},"reveal"!==this.mode||hasClass(this.panel,this.clsMode)||(wrapAll(this.panel,"<div>"),addClass(this.panel.parentNode,this.clsMode)),css(document.documentElement,"overflowY",(!this.clsContentAnimation||this.flip)&&this.scrollbarWidth&&this.overlay?"scroll":""),addClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),height(document.body),addClass(this.content,this.clsContentAnimation),addClass(this.panel,this.clsSidebarAnimation,"reveal"!==this.mode?this.clsMode:""),addClass(this.$el,this.clsOverlay),css(this.$el,"display","block"),height(this.$el)}},{name:"hide",self:!0,handler:function(){removeClass(this.content,this.clsContentAnimation);var active=this.getActive();("none"===this.mode||active&&active!==this&&active!==this.prev)&&trigger(this.panel,"transitionend")}},{name:"hidden",self:!0,handler:function(){if("reveal"===this.mode&&unwrap(this.panel),this.overlay){if(!scroll){var ref=this.content,x=ref.scrollLeft,y=ref.scrollTop;scroll={x:x,y:y}}}else scroll={x:window.pageXOffset,y:window.pageYOffset};removeClass(this.panel,this.clsSidebarAnimation,this.clsMode),removeClass(this.$el,this.clsOverlay),css(this.$el,"display",""),removeClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),document.body.scrollTop=scroll.y,css(document.documentElement,"overflowY",""),width(this.content,""),height(this.content,""),window.scroll(scroll.x,scroll.y),scroll=null}},{name:"swipeLeft swipeRight",handler:function(e){this.isToggled()&&isTouch(e)&&("swipeLeft"===e.type&&!this.flip||"swipeRight"===e.type&&this.flip)&&this.hide()}}]},OverflowAuto={mixins:[Class],computed:{modal:function(_,$el){return closest($el,".uk-modal")},panel:function(_,$el){return closest($el,".uk-modal-dialog")}},connected:function(){css(this.$el,"minHeight",150)},update:{write:function(){if(this.panel&&this.modal){var current=css(this.$el,"maxHeight");css(css(this.$el,"maxHeight",150),"maxHeight",Math.max(150,150+height(this.modal)-this.panel.offsetHeight)),current!==css(this.$el,"maxHeight")&&trigger(this.$el,"resize")}},events:["load","resize"]}},Responsive={props:["width","height"],connected:function(){addClass(this.$el,"uk-responsive-width")},update:{read:function(){return!!(isVisible(this.$el)&&this.width&&this.height)&&{width:width(this.$el.parentNode),height:this.height}},write:function(dim){height(this.$el,Dimensions.contain({height:this.height,width:this.width},dim).height)},events:["load","resize"]}},Scroll={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(el){var this$1=this;el=el&&$(el)||document.body;var docHeight=height(document),winHeight=height(window),target=offset(el).top-this.offset;if(target+winHeight>docHeight&&(target=docHeight-winHeight),trigger(this.$el,"beforescroll",[this,el])){var start=Date.now(),startY=window.pageYOffset,step=function(){var k,currentY=startY+(target-startY)*(k=clamp((Date.now()-start)/this$1.duration),.5*(1-Math.cos(Math.PI*k)));window.scroll(window.pageXOffset,currentY),currentY!==target?requestAnimationFrame(step):trigger(this$1.$el,"scrolled",[this$1,el])};step()}}},events:{click:function(e){e.defaultPrevented||(e.preventDefault(),this.scrollTo(escape(this.$el.hash).substr(1)))}}};var Scrollspy={args:"cls",props:{cls:"list",target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:[],target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:"uk-scrollspy-inview"}},computed:{elements:function(ref,$el){var target=ref.target;return target?$$(target,$el):[$el]}},update:[{write:function(){this.hidden&&css(filter(this.elements,":not(."+this.inViewClass+")"),"visibility","hidden")}},{read:function(els){var this$1=this;els.delay&&this.elements.forEach(function(el,i){var elData=els[i];if(!elData||elData.el!==el){var cls=data(el,"uk-scrollspy-class");elData={el:el,toggles:cls&&cls.split(",")||this$1.cls}}elData.show=isInView(el,this$1.offsetTop,this$1.offsetLeft),els[i]=elData})},write:function(els){var this$1=this;if(!els.delay)return this.$emit(),els.delay=!0;var index$$1=1===this.elements.length?1:0;this.elements.forEach(function(el,i){var elData=els[i],cls=elData.toggles[i]||elData.toggles[0];if(!elData.show||elData.inview||elData.timer)!elData.show&&elData.inview&&this$1.repeat&&(elData.timer&&(clearTimeout(elData.timer),delete elData.timer),css(el,"visibility",this$1.hidden?"hidden":""),removeClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"outview"),this$1.$update(el),elData.inview=!1);else{var show=function(){css(el,"visibility",""),addClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"inview"),this$1.$update(el),elData.inview=!0,delete elData.timer};this$1.delay&&index$$1?elData.timer=setTimeout(show,this$1.delay*index$$1):show(),index$$1++}})},events:["scroll","load","resize"]}]},ScrollspyNav={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:"uk-active",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(_,$el){return $$('a[href^="#"]',$el).filter(function(el){return el.hash})},elements:function(){return this.closest?closest(this.links,this.closest):this.links},targets:function(){return $$(this.links.map(function(el){return el.hash}).join(","))}},update:[{read:function(){this.scroll&&this.$create("scroll",this.links,{offset:this.offset||0})}},{read:function(data$$1){var this$1=this,scroll=window.pageYOffset+this.offset+1,max=height(document)-height(window)+this.offset;data$$1.active=!1,this.targets.every(function(el,i){var top=offset(el).top,last=i+1===this$1.targets.length;if(!this$1.overflow&&(0===i&&top>scroll||last&&top+el.offsetTop<scroll))return!1;if(!last&&offset(this$1.targets[i+1]).top<=scroll)return!0;if(scroll>=max)for(var j=this$1.targets.length-1;j>i;j--)if(isInView(this$1.targets[j])){el=this$1.targets[j];break}return!(data$$1.active=$(filter(this$1.links,'[href="#'+el.id+'"]')))})},write:function(ref){var active=ref.active;this.links.forEach(function(el){return el.blur()}),removeClass(this.elements,this.cls),active&&trigger(this.$el,"active",[active,addClass(this.closest?closest(active,this.closest):active,this.cls)])},events:["scroll","load","resize"]}]},Sticky={mixins:[Class],attrs:!0,props:{top:null,bottom:Boolean,offset:Number,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,media:"media",targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:"",clsActive:"uk-active",clsInactive:"",clsFixed:"uk-sticky-fixed",clsBelow:"uk-sticky-below",selTarget:"",widthElement:!1,showOnUp:!1,media:!1,targetOffset:!1},computed:{selTarget:function(ref,$el){var selTarget=ref.selTarget;return selTarget&&$(selTarget,$el)||$el},widthElement:function(ref,$el){return query(ref.widthElement,$el)||this.placeholder}},connected:function(){this.placeholder=$("+ .uk-sticky-placeholder",this.$el)||$('<div class="uk-sticky-placeholder"></div>'),this.isActive||this.hide()},disconnected:function(){this.isActive&&(this.isActive=!1,this.hide(),removeClass(this.selTarget,this.clsInactive)),remove(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:"active",self:!0,handler:function(){replaceClass(this.selTarget,this.clsInactive,this.clsActive)}},{name:"inactive",self:!0,handler:function(){replaceClass(this.selTarget,this.clsActive,this.clsInactive)}},{name:"load hashchange popstate",el:window,handler:function(){var this$1=this;if(!1!==this.targetOffset&&location.hash&&window.pageYOffset>0){var target=$(location.hash);target&&fastdom.read(function(){var top=offset(target).top,elTop=offset(this$1.$el).top,elHeight=this$1.$el.offsetHeight;this$1.isActive&&elTop+elHeight>=top&&elTop<=top+target.offsetHeight&&window.scroll(0,top-elHeight-(isNumeric(this$1.targetOffset)?this$1.targetOffset:0)-this$1.offset)})}}}],update:[{write:function(){var placeholder=this.placeholder,offsetHeight=this.$el.offsetHeight;css(placeholder,assign({height:"absolute"!==css(this.$el,"position")?offsetHeight:""},css(this.$el,["marginTop","marginBottom","marginLeft","marginRight"]))),within(placeholder,document)||(after(this.$el,placeholder),attr(placeholder,"hidden","")),this.topOffset=offset(this.isActive?placeholder:this.$el).top,this.bottomOffset=this.topOffset+offsetHeight;var bottom=parseProp("bottom",this);this.top=Math.max(toFloat(parseProp("top",this)),this.topOffset)-this.offset,this.bottom=bottom&&bottom-offsetHeight,this.inactive=this.media&&!window.matchMedia(this.media).matches},events:["load","resize"]},{read:function(_,ref){var scrollY=ref.scrollY;return void 0===scrollY&&(scrollY=window.pageYOffset),this.width=(isVisible(this.widthElement)?this.widthElement:this.$el).offsetWidth,{scroll:this.scroll=scrollY,visible:isVisible(this.$el)}},write:function(ref,ref$1){var this$1=this,visible=ref.visible,scroll=ref.scroll;void 0===ref$1&&(ref$1={});var dir=ref$1.dir;if(!(scroll<0||!visible||this.disabled||this.showOnUp&&!dir))if(this.inactive||scroll<this.top||this.showOnUp&&(scroll<=this.top||"down"===dir||"up"===dir&&!this.isActive&&scroll<=this.bottomOffset)){if(!this.isActive)return;this.isActive=!1,this.animation&&scroll>this.topOffset?(Animation.cancel(this.$el),Animation.out(this.$el,this.animation).then(function(){return this$1.hide()},noop)):this.hide()}else this.isActive?this.update():this.animation?(Animation.cancel(this.$el),this.show(),Animation.in(this.$el,this.animation).catch(noop)):this.show()},events:["load","resize","scroll"]}],methods:{show:function(){this.isActive=!0,this.update(),attr(this.placeholder,"hidden",null)},hide:function(){this.isActive&&!hasClass(this.selTarget,this.clsActive)||trigger(this.$el,"inactive"),removeClass(this.$el,this.clsFixed,this.clsBelow),css(this.$el,{position:"",top:"",width:""}),attr(this.placeholder,"hidden","")},update:function(){var active=0!==this.top||this.scroll>this.top,top=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(top=this.bottom-this.scroll),css(this.$el,{position:"fixed",top:top+"px",width:this.width}),hasClass(this.selTarget,this.clsActive)?active||trigger(this.$el,"inactive"):active&&trigger(this.$el,"active"),toggleClass(this.$el,this.clsBelow,this.scroll>this.bottomOffset),addClass(this.$el,this.clsFixed)}}};function parseProp(prop,ref){var $props=ref.$props,$el=ref.$el,propOffset=ref[prop+"Offset"],value=$props[prop];if(value){if(isNumeric(value))return propOffset+toFloat(value);if(isString(value)&&value.match(/^-?\d+vh$/))return height(window)*toFloat(value)/100;var el=!0===value?$el.parentNode:query(value,$el);return el?offset(el).top+el.offsetHeight:void 0}}var Switcher={mixins:[Togglable],args:"connect",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:"~.uk-switcher",toggle:"> *",active:0,swiping:!0,cls:"uk-active",clsContainer:"uk-switcher",attrItem:"uk-switcher-item",queued:!0},computed:{connects:function(ref,$el){return queryAll(ref.connect,$el)},toggles:function(ref,$el){return $$(ref.toggle,$el)}},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),this.show(e.current)}},{name:"click",el:function(){return this.connects},delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.show(data(e.current,this.attrItem))}},{name:"swipeRight swipeLeft",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(e){isTouch(e)&&(e.preventDefault(),window.getSelection().toString()||this.show("swipeLeft"===e.type?"next":"previous"))}}],update:function(){var this$1=this;this.connects.forEach(function(list){return this$1.updateAria(list.children)}),this.show(filter(this.toggles,"."+this.cls)[0]||this.toggles[this.active]||this.toggles[0])},methods:{show:function(item){for(var toggle,this$1=this,length=this.toggles.length,prev=!!this.connects.length&&index(filter(this.connects[0].children,"."+this.cls)[0]),hasPrev=prev>=0,dir="previous"===item?-1:1,next=getIndex(item,this.toggles,prev),i=0;i<length;i++,next=(next+dir+length)%length)if(!matches(this$1.toggles[next],".uk-disabled, [disabled]")){toggle=this$1.toggles[next];break}!toggle||prev>=0&&hasClass(toggle,this.cls)||prev===next||(removeClass(this.toggles,this.cls),attr(this.toggles,"aria-expanded",!1),addClass(toggle,this.cls),attr(toggle,"aria-expanded",!0),this.connects.forEach(function(list){hasPrev?this$1.toggleElement([list.children[prev],list.children[next]]):this$1.toggleNow(list.children[next])}))}}},Tab={mixins:[Class],extends:Switcher,props:{media:"media"},data:{media:960,attrItem:"uk-tab-item"},connected:function(){var cls=hasClass(this.$el,"uk-tab-left")?"uk-tab-left":!!hasClass(this.$el,"uk-tab-right")&&"uk-tab-right";cls&&this.$create("toggle",this.$el,{cls:cls,mode:"media",media:this.media})}},Toggle={mixins:[Togglable],args:"target",props:{href:String,target:null,mode:"list",media:"media"},data:{href:!1,target:!1,mode:"click",queued:!0,media:!1},computed:{target:function(ref,$el){var href=ref.href,target=ref.target;return(target=queryAll(target||href,$el)).length&&target||[$el]}},events:[{name:pointerEnter+" "+pointerLeave,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||this.toggle("toggle"+(e.type===pointerEnter?"show":"hide"))}},{name:"click",filter:function(){return includes(this.mode,"click")||hasTouch&&includes(this.mode,"hover")},handler:function(e){var link;(isTouch(e)||includes(this.mode,"click"))&&((closest(e.target,'a[href="#"], button')||(link=closest(e.target,"a[href]"))&&(this.cls||!isVisible(this.target)||link.hash&&matches(this.target,link.hash)))&&once(document,"click",function(e){return e.preventDefault()}),this.toggle())}}],update:{write:function(){if(includes(this.mode,"media")&&this.media){var toggled=this.isToggled(this.target);(window.matchMedia(this.media).matches?!toggled:toggled)&&this.toggle()}},events:["load","resize"]},methods:{toggle:function(type){trigger(this.target,type||"toggle",[this])&&this.toggleElement(this.target)}}};UIkit.version="3.0.0-rc.5",function(UIkit){UIkit.component("accordion",Accordion),UIkit.component("alert",Alert),UIkit.component("cover",Cover),UIkit.component("drop",Drop),UIkit.component("dropdown",Dropdown),UIkit.component("formCustom",FormCustom),UIkit.component("gif",Gif),UIkit.component("grid",Grid),UIkit.component("heightMatch",HeightMatch),UIkit.component("heightViewport",HeightViewport),UIkit.component("icon",Icon),UIkit.component("img",Img),UIkit.component("leader",Leader),UIkit.component("margin",Margin),UIkit.component("modal",Modal$1),UIkit.component("nav",Nav),UIkit.component("navbar",Navbar),UIkit.component("offcanvas",Offcanvas),UIkit.component("overflowAuto",OverflowAuto),UIkit.component("responsive",Responsive),UIkit.component("scroll",Scroll),UIkit.component("scrollspy",Scrollspy),UIkit.component("scrollspyNav",ScrollspyNav),UIkit.component("sticky",Sticky),UIkit.component("svg",SVG),UIkit.component("switcher",Switcher),UIkit.component("tab",Tab),UIkit.component("toggle",Toggle),UIkit.component("video",Video),UIkit.component("close",Close),UIkit.component("marker",IconComponent),UIkit.component("navbarToggleIcon",IconComponent),UIkit.component("overlayIcon",IconComponent),UIkit.component("paginationNext",IconComponent),UIkit.component("paginationPrevious",IconComponent),UIkit.component("searchIcon",Search),UIkit.component("slidenavNext",Slidenav),UIkit.component("slidenavPrevious",Slidenav),UIkit.component("spinner",Spinner),UIkit.component("totop",IconComponent),UIkit.use(Core)}(UIkit);var Countdown={mixins:[Class],attrs:!0,props:{date:String,clsWrapper:String},data:{date:"",clsWrapper:".uk-countdown-%unit%"},computed:{date:function(ref){var date=ref.date;return Date.parse(date)},days:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","days"),$el)},hours:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","hours"),$el)},minutes:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","minutes"),$el)},seconds:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","seconds"),$el)},units:function(){var this$1=this;return["days","hours","minutes","seconds"].filter(function(unit){return this$1[unit]})}},connected:function(){this.start()},disconnected:function(){var this$1=this;this.stop(),this.units.forEach(function(unit){return empty(this$1[unit])})},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var date,total,this$1=this,timespan=(date=this.date,{total:total=date-Date.now(),seconds:total/1e3%60,minutes:total/1e3/60%60,hours:total/1e3/60/60%24,days:total/1e3/60/60/24});timespan.total<=0&&(this.stop(),timespan.days=timespan.hours=timespan.minutes=timespan.seconds=0),this.units.forEach(function(unit){var digits=String(Math.floor(timespan[unit]));digits=digits.length<2?"0"+digits:digits;var el=this$1[unit];el.textContent!==digits&&((digits=digits.split("")).length!==el.children.length&&html(el,digits.map(function(){return"<span></span>"}).join("")),digits.forEach(function(digit,i){return el.children[i].textContent=digit}))})}},methods:{start:function(){var this$1=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return this$1.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var style$1,targetClass="uk-animation-target",Animate={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(action){var this$1=this;style$1||(style$1=append(document.head,"<style>").sheet).insertRule("."+targetClass+" > * {\n margin-top: 0 !important;\n transform: none !important;\n }");var children=toNodes(this.target.children),propsFrom=children.map(function(el){return getProps(el,!0)}),oldHeight=height(this.target),oldScrollY=window.pageYOffset;action(),Transition.cancel(this.target),children.forEach(Transition.cancel),reset(this.target),this.$update(this.target),fastdom.flush();var newHeight=height(this.target),propsTo=(children=children.concat(toNodes(this.target.children).filter(function(el){return!includes(children,el)}))).map(function(el,i){return!!(el.parentNode&&i in propsFrom)&&(propsFrom[i]?isVisible(el)?getPositionWithMargin(el):{opacity:0}:{opacity:isVisible(el)?1:0})});return propsFrom=propsTo.map(function(props,i){var from=children[i].parentNode===this$1.target&&(propsFrom[i]||getProps(children[i]));if(from)if(props){if(!("opacity"in props)){from.opacity%1?props.opacity=1:delete from.opacity}}else delete from.opacity;return from}),addClass(this.target,targetClass),children.forEach(function(el,i){return propsFrom[i]&&css(el,propsFrom[i])}),css(this.target,"minHeight",oldHeight),window.scroll(window.pageXOffset,oldScrollY),Promise$1.all(children.map(function(el,i){return propsFrom[i]&&propsTo[i]?Transition.start(el,propsTo[i],this$1.animation,"ease"):Promise$1.resolve()}).concat(Transition.start(this.target,{minHeight:newHeight},this.animation,"ease"))).then(function(){children.forEach(function(el,i){return css(el,{display:0===propsTo[i].opacity?"none":"",zIndex:""})}),reset(this$1.target),this$1.$update(this$1.target)},noop)}}};function getProps(el,opacity){var zIndex=css(el,"zIndex");return!!isVisible(el)&&assign({display:"",opacity:opacity?css(el,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:"auto"===zIndex?index(el):zIndex},getPositionWithMargin(el))}function reset(el){css(el.children,{height:"",left:"",opacity:"",pointerEvents:"",position:"",top:"",width:""}),removeClass(el,targetClass),css(el,"minHeight","")}function getPositionWithMargin(el){var ref=el.getBoundingClientRect(),height$$1=ref.height,width$$1=ref.width,ref$1=position(el),top=ref$1.top,left=ref$1.left;return{top:top+=toFloat(css(el,"marginTop")),left:left,height:height$$1,width:width$$1}}var Filter={mixins:[Animate],args:"target",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",animation:250},computed:{toggles:function(ref,$el){ref.attrItem;return $$("["+this.attrItem+"],[data-"+this.attrItem+"]",$el)},target:function(ref,$el){return $(ref.target,$el)}},events:[{name:"click",delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.apply(e.current)}}],connected:function(){var this$1=this;if(!1!==this.selActive){var actives=$$(this.selActive,this.$el);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,includes(actives,el))})}},update:function(data$$1){var toggles=data$$1.toggles,children=data$$1.children;isEqualList(toggles,this.toggles,!1)&&isEqualList(children,this.target.children,!1)||(data$$1.toggles=this.toggles,data$$1.children=this.target.children,this.setState(this.getState(),!1))},methods:{apply:function(el){this.setState(mergeState(el,this.attrItem,this.getState()))},getState:function(){var this$1=this;return this.toggles.filter(function(item){return hasClass(item,this$1.cls)}).reduce(function(state,el){return mergeState(el,this$1.attrItem,state)},{filter:{"":""},sort:[]})},setState:function(state,animate$$1){var this$1=this;void 0===animate$$1&&(animate$$1=!0),state=assign({filter:{"":""},sort:[]},state),trigger(this.$el,"beforeFilter",[this,state]);var children=toNodes(this.target.children);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,function(el,attr$$1,ref){var stateFilter=ref.filter,ref_sort=ref.sort,stateSort=ref_sort[0],stateOrder=ref_sort[1],ref$1=getFilter(el,attr$$1),filter$$1=ref$1.filter,group=ref$1.group;void 0===group&&(group="");var sort=ref$1.sort,order=ref$1.order;void 0===order&&(order="asc");return Boolean((filter$$1||isUndefined(sort))&&group in stateFilter&&(filter$$1===stateFilter[group]||isUndefined(filter$$1)&&!stateFilter[group])||stateSort&&sort&&stateSort===sort&&stateOrder===order)}(el,this$1.attrItem,state))});var apply$$1=function(){var selector=function(ref){var selector="";return each(ref.filter,function(value){return selector+=value||""}),selector}(state);children.forEach(function(el){return css(el,"display",selector&&!matches(el,selector)?"none":"")});var ref=state.sort,sort=ref[0],order=ref[1];if(sort){var sorted=function(nodes,sort,order){return toNodes(nodes).sort(function(a,b){return data(a,sort).localeCompare(data(b,sort))*("asc"===order||-1)})}(children,sort,order);isEqualList(sorted,children)||sorted.forEach(function(el){return append(this$1.target,el)})}};animate$$1?this.animate(apply$$1).then(function(){return trigger(this$1.$el,"afterFilter",[this$1])}):(apply$$1(),trigger(this.$el,"afterFilter",[this]))}}};function getFilter(el,attr$$1){return parseOptions(data(el,attr$$1),["filter"])}function mergeState(el,attr$$1,state){return toNodes(el).forEach(function(el){var filterBy=getFilter(el,attr$$1),filter$$1=filterBy.filter,group=filterBy.group,sort=filterBy.sort,order=filterBy.order;void 0===order&&(order="asc"),(filter$$1||isUndefined(sort))&&(group?(delete state.filter[""],state.filter[group]=filter$$1):state.filter={"":filter$$1}),isUndefined(sort)||(state.sort=[sort,order])}),state}function isEqualList(listA,listB,strict){return void 0===strict&&(strict=!0),listA=toNodes(listA),listB=toNodes(listB),listA.length===listB.length&&listA.every(function(el,i){return strict?el===listB[i]:~listB.indexOf(el)})}var Animations={slide:{show:function(dir){return[{transform:translate(-100*dir)},{transform:translate()}]},percent:function(current){return translated(current)},translate:function(percent,dir){return[{transform:translate(-100*dir*percent)},{transform:translate(100*dir*(1-percent))}]}}};function translated(el){return Math.abs(css(el,"transform").split(",")[4]/el.offsetWidth)||0}function translate(value,unit){return void 0===value&&(value=0),void 0===unit&&(unit="%"),"translateX("+value+(value?unit:"")+")"}function scale3d(value){return"scale3d("+value+", "+value+", 1)"}var Animations$1=assign({},Animations,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent},{opacity:percent}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(.8)},{opacity:1,transform:scale3d(1)}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1-.2*percent)},{opacity:percent,transform:scale3d(.8+.2*percent)}]}}});function triggerUpdate(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}var Slider={attrs:!0,mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.startAutoplay()},disconnected:function(){this.stopAutoplay()},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}},{name:pointerDown,handler:"stopAutoplay"},{name:"mouseenter",filter:function(){return this.autoplay},handler:function(){this.isHovering=!0}},{name:"mouseleave",filter:function(){return this.autoplay},handler:function(){this.isHovering=!1}}],methods:{startAutoplay:function(){var this$1=this;this.stopAutoplay(),this.autoplay&&(this.interval=setInterval(function(){return!(this$1.isHovering&&this$1.pauseOnHover)&&!this$1.stack.length&&this$1.show("next")},this.autoplayInterval))},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{data:{threshold:10,preventCatch:!1},init:function(){var this$1=this;["start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){var pos=getPos$1(e).x*(isRtl?-1:1);this$1.prevPos=pos!==this$1.pos?this$1.pos:this$1.prevPos,this$1.pos=pos,fn(e)}})},events:[{name:pointerDown,delegate:function(){return this.slidesSelector},handler:function(e){var el;!isTouch(e)&&(el=e.target,!el.children.length&&el.childNodes.length)||e.button>0||this.length<2||this.preventCatch||this.start(e)}},{name:"dragstart",handler:function(e){e.preventDefault()}}],methods:{start:function(){this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.translate(this.percent),this._transitioner.cancel(),this.dragging=!0,this.stack=[]):this.prevIndex=this.index,this.unbindMove=on(document,pointerMove,this.move,{capture:!0,passive:!1}),on(window,"scroll",this.unbindMove),on(document,pointerUp,this.end,!0)},move:function(e){var this$1=this,distance=this.pos-this.drag;if(!(0===distance||this.prevPos===this.pos||!this.dragging&&Math.abs(distance)<this.threshold)){e.cancelable&&e.preventDefault(),this.dragging=!0,this.dir=distance<0?1:-1;for(var slides=this.slides,prevIndex=this.prevIndex,dis=Math.abs(distance),nextIndex=this.getIndex(prevIndex+this.dir,prevIndex),width$$1=this._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;nextIndex!==prevIndex&&dis>width$$1;)this$1.drag-=width$$1*this$1.dir,prevIndex=nextIndex,dis-=width$$1,nextIndex=this$1.getIndex(prevIndex+this$1.dir,prevIndex),width$$1=this$1._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;this.percent=dis/width$$1;var itemShown,prev=slides[prevIndex],next=slides[nextIndex],changed=this.index!==nextIndex,edge=prevIndex===nextIndex;[this.index,this.prevIndex].filter(function(i){return!includes([nextIndex,prevIndex],i)}).forEach(function(i){trigger(slides[i],"itemhidden",[this$1]),edge&&(itemShown=!0,this$1.prevIndex=prevIndex)}),(this.index===prevIndex&&this.prevIndex!==prevIndex||itemShown)&&trigger(slides[this.index],"itemshown",[this]),changed&&(this.prevIndex=prevIndex,this.index=nextIndex,!edge&&trigger(prev,"beforeitemhide",[this]),trigger(next,"beforeitemshow",[this])),this._transitioner=this._translate(Math.abs(this.percent),prev,!edge&&next),changed&&(!edge&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]))}},end:function(){if(off(window,"scroll",this.unbindMove),this.unbindMove(),off(document,pointerUp,this.end,!0),this.dragging){if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var dirChange=(isRtl?this.dir*(isRtl?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=dirChange?this.index:this.prevIndex,dirChange&&(this.percent=1-this.percent),this.show(this.dir>0&&!dirChange||this.dir<0&&dirChange?"next":"previous",!0)}preventClick()}this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(ref,$el){return $(ref.selNav,$el)},navItemSelector:function(ref){var attrItem=ref.attrItem;return"["+attrItem+"],[data-"+attrItem+"]"},navItems:function(_,$el){return $$(this.navItemSelector,$el)}},update:[{write:function(){var this$1=this;this.nav&&this.length!==this.nav.children.length&&html(this.nav,this.slides.map(function(_,i){return"<li "+this$1.attrItem+'="'+i+'"><a href="#"></a></li>'}).join("")),toggleClass($$(this.navItemSelector,this.$el).concat(this.nav),"uk-hidden",!this.maxIndex),this.updateNav()},events:["load","resize"]}],events:[{name:"click",delegate:function(){return this.navItemSelector},handler:function(e){e.preventDefault(),e.current.blur(),this.show(data(e.current,this.attrItem))}},{name:"itemshow",handler:"updateNav"}],methods:{updateNav:function(){var this$1=this,i=this.getValidIndex();this.navItems.forEach(function(el){var cmd=data(el,this$1.attrItem);toggleClass(el,this$1.clsActive,toNumber(cmd)===i),toggleClass(el,"uk-invisible",this$1.finite&&("previous"===cmd&&0===i||"next"===cmd&&i>=this$1.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:"ease",finite:!1,velocity:1,index:0,stack:[],percent:0,clsActive:"uk-active",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},computed:{duration:function(ref,$el){var velocity=ref.velocity;return speedUp($el.offsetWidth/velocity)},length:function(){return this.slides.length},list:function(ref,$el){return $(ref.selList,$el)},maxIndex:function(){return this.length-1},slidesSelector:function(ref){return ref.selList+" > *"},slides:function(){return toNodes(this.list.children)}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(index$$1,force){var this$1=this;if(void 0===force&&(force=!1),!this.dragging&&this.length){var stack=this.stack,queueIndex=force?0:stack.length,reset=function(){stack.splice(queueIndex,1),stack.length&&this$1.show(stack.shift(),!0)};if(stack[force?"unshift":"push"](index$$1),!force&&stack.length>1)2===stack.length&&this._transitioner.forward(Math.min(this.duration,200));else{var prevIndex=this.index,prev=hasClass(this.slides,this.clsActive)&&this.slides[prevIndex],nextIndex=this.getIndex(index$$1,this.index),next=this.slides[nextIndex];if(prev!==next){if(this.dir=function(index$$1,prevIndex){return"next"===index$$1?1:"previous"===index$$1?-1:index$$1<prevIndex?-1:1}(index$$1,prevIndex),this.prevIndex=prevIndex,this.index=nextIndex,prev&&trigger(prev,"beforeitemhide",[this]),!trigger(next,"beforeitemshow",[this,prev]))return this.index=this.prevIndex,void reset();var promise=this._show(prev,next,force).then(function(){return prev&&trigger(prev,"itemhidden",[this$1]),trigger(next,"itemshown",[this$1]),new Promise$1(function(resolve){fastdom.write(function(){stack.shift(),stack.length?this$1.show(stack.shift(),!0):this$1._transitioner=null,resolve()})})});return prev&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]),promise}reset()}}},getIndex:function(index$$1,prev){return void 0===index$$1&&(index$$1=this.index),void 0===prev&&(prev=this.index),clamp(getIndex(index$$1,this.slides,prev,this.finite),0,this.maxIndex)},getValidIndex:function(index$$1,prevIndex){return void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),this.getIndex(index$$1,prevIndex)},_show:function(prev,next,force){if(this._transitioner=this._getTransitioner(prev,next,this.dir,assign({easing:force?next.offsetWidth<600?"cubic-bezier(0.25, 0.46, 0.45, 0.94)":"cubic-bezier(0.165, 0.84, 0.44, 1)":this.easing},this.transitionOptions)),!force&&!prev)return this._transitioner.translate(1),Promise$1.resolve();var length=this.stack.length;return this._transitioner[length>1?"forward":"show"](length>1?Math.min(this.duration,75+75/(length-1)):this.duration,this.percent)},_getDistance:function(prev,next){return new this._getTransitioner(prev,prev!==next&&next).getDistance()},_translate:function(percent,prev,next){void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index);var transitioner=this._getTransitioner(prev!==next&&prev,next);return transitioner.translate(percent),transitioner},_getTransitioner:function(prev,next,dir,options){return void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index),void 0===dir&&(dir=this.dir||1),void 0===options&&(options=this.transitionOptions),new this.Transitioner(isNumber(prev)?this.slides[prev]:prev,isNumber(next)?this.slides[next]:next,dir*(isRtl?-1:1),options)}}};function speedUp(x){return.5*x+300}var Slideshow={mixins:[Slider],props:{animation:String},data:{animation:"slide",clsActivated:"uk-transition-active",Animations:Animations,Transitioner:function(prev,next,dir,ref){var animation=ref.animation,easing=ref.easing,percent=animation.percent,translate=animation.translate,show=animation.show;void 0===show&&(show=noop);var props=show(dir),deferred=new Deferred;return{dir:dir,show:function(duration,percent,linear){var this$1=this;void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),triggerUpdate(next,"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),triggerUpdate(prev,"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Promise$1.all([Transition.start(next,props[1],duration,timing),Transition.start(prev,props[0],duration,timing)]).then(function(){this$1.reset(),deferred.resolve()},noop),deferred.promise},stop:function(){return Transition.stop([next,prev])},cancel:function(){Transition.cancel([next,prev])},reset:function(){for(var prop in props[0])css([next,prev],prop,"")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel([next,prev]),this.show(duration,percent,!0)},translate:function(percent){this.reset();var props=translate(percent,dir);css(next,props[1]),css(prev,props[0]),triggerUpdate(next,"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate(prev,"itemtranslateout",{percent:1-percent,dir:dir})},percent:function(){return percent(prev||next,next,dir)},getDistance:function(){return prev.offsetWidth}}}},computed:{animation:function(ref){var animation=ref.animation,Animations$$1=ref.Animations;return assign(animation in Animations$$1?Animations$$1[animation]:Animations$$1.slide,{name:animation})},transitionOptions:function(){return{animation:this.animation}}},events:{"itemshow itemhide itemshown itemhidden":function(ref){var target=ref.target;this.$update(target)},itemshow:function(){isNumber(this.prevIndex)&&fastdom.flush()},beforeitemshow:function(ref){addClass(ref.target,this.clsActive)},itemshown:function(ref){addClass(ref.target,this.clsActivated)},itemhidden:function(ref){removeClass(ref.target,this.clsActive,this.clsActivated)}}},LightboxPanel={mixins:[Container,Modal,Togglable,Slideshow],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:"uk-open",clsPage:"uk-lightbox-page",selList:".uk-lightbox-items",attrItem:"uk-lightbox-item",selClose:".uk-close-large",pauseOnHover:!1,velocity:2,Animations:Animations$1,template:'<div class="uk-lightbox uk-overflow-hidden"> <ul class="uk-lightbox-items"></ul> <div class="uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque"> <button class="uk-lightbox-toolbar-icon uk-close-large" type="button" uk-close></button> </div> <a class="uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade" href="#" uk-slidenav-previous uk-lightbox-item="previous"></a> <a class="uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade" href="#" uk-slidenav-next uk-lightbox-item="next"></a> <div class="uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque"></div> </div>'}},created:function(){var this$1=this;this.$mount(append(this.container,this.template)),this.caption=$(".uk-lightbox-caption",this.$el),this.items.forEach(function(){return append(this$1.list,"<li></li>")})},events:[{name:pointerMove+" "+pointerDown+" keydown",handler:"showControls"},{name:"click",self:!0,delegate:function(){return this.slidesSelector},handler:function(e){e.preventDefault(),this.hide()}},{name:"shown",self:!0,handler:"showControls"},{name:"hide",self:!0,handler:function(){this.hideControls(),removeClass(this.slides,this.clsActive),Transition.stop(this.slides)}},{name:"keyup",el:document,handler:function(e){if(this.isToggled(this.$el))switch(e.keyCode){case 37:this.show("previous");break;case 39:this.show("next")}}},{name:"beforeitemshow",handler:function(e){this.isToggled()||(this.preventCatch=!0,e.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Animations$1.scale,removeClass(e.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:"itemshow",handler:function(ref){var i=index(ref.target),caption=this.getItem(i).caption;css(this.caption,"display",caption?"":"none"),html(this.caption,caption);for(var j=0;j<=this.preload;j++)this.loadItem(this.getIndex(i+j)),this.loadItem(this.getIndex(i-j))}},{name:"itemshown",handler:function(){this.preventCatch=!1}},{name:"itemload",handler:function(_,item){var matches$$1,this$1=this,source=item.source,type=item.type,alt=item.alt;if(this.setItem(item,"<span uk-spinner></span>"),source)if("image"===type||source.match(/\.(jp(e)?g|png|gif|svg)($|\?)/i))getImage(source).then(function(img){return this$1.setItem(item,'<img width="'+img.width+'" height="'+img.height+'" src="'+source+'" alt="'+(alt||"")+'">')},function(){return this$1.setError(item)});else if("video"===type||source.match(/\.(mp4|webm|ogv)($|\?)/i)){var video=$("<video controls playsinline"+(item.poster?' poster="'+item.poster+'"':"")+' uk-video="'+this.videoAutoplay+'"></video>');attr(video,"src",source),on(video,"error",function(){return this$1.setError(item)}),on(video,"loadedmetadata",function(){attr(video,{width:video.videoWidth,height:video.videoHeight}),this$1.setItem(item,video)})}else if("iframe"===type||source.match(/\.(html|php)($|\?)/i))this.setItem(item,'<iframe class="uk-lightbox-iframe" src="'+source+'" frameborder="0" allowfullscreen></iframe>');else if(matches$$1=source.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/watch\?v=([^&\s]+)/)||source.match(/()youtu\.be\/(.*)/)){var id=matches$$1[2],setIframe=function(width$$1,height$$1){return void 0===width$$1&&(width$$1=640),void 0===height$$1&&(height$$1=450),this$1.setItem(item,getIframe("https://www.youtube"+(matches$$1[1]||"")+".com/embed/"+id,width$$1,height$$1,this$1.videoAutoplay))};getImage("https://img.youtube.com/vi/"+id+"/maxresdefault.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;120===width$$1&&90===height$$1?getImage("https://img.youtube.com/vi/"+id+"/0.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;return setIframe(width$$1,height$$1)},setIframe):setIframe(width$$1,height$$1)},setIframe)}else(matches$$1=source.match(/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/))&&ajax("https://vimeo.com/api/oembed.json?maxwidth=1920&url="+encodeURI(source),{responseType:"json",withCredentials:!1}).then(function(ref){var ref_response=ref.response,height$$1=ref_response.height,width$$1=ref_response.width;return this$1.setItem(item,getIframe("https://player.vimeo.com/video/"+matches$$1[2],width$$1,height$$1,this$1.videoAutoplay))},function(){return this$1.setError(item)})}}],methods:{loadItem:function(index$$1){void 0===index$$1&&(index$$1=this.index);var item=this.getItem(index$$1);item.content||trigger(this.$el,"itemload",[item])},getItem:function(index$$1){return void 0===index$$1&&(index$$1=this.index),this.items[index$$1]||{}},setItem:function(item,content){assign(item,{content:content});var el=html(this.slides[this.items.indexOf(item)],content);trigger(this.$el,"itemloaded",[this,el]),this.$update(el)},setError:function(item){this.setItem(item,'<span uk-icon="icon: bolt; ratio: 2"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),addClass(this.$el,"uk-active","uk-transition-active")},hideControls:function(){removeClass(this.$el,"uk-active","uk-transition-active")}}};function getIframe(src,width$$1,height$$1,autoplay){return'<iframe src="'+src+'" width="'+width$$1+'" height="'+height$$1+'" style="max-width: 100%; box-sizing: border-box;" frameborder="0" allowfullscreen uk-video="autoplay: '+autoplay+'" uk-responsive></iframe>'}var obj,props=merge(LightboxPanel,"props"),defaults=merge(LightboxPanel,"data"),Lightbox={install:function(UIkit){UIkit.lightboxPanel||UIkit.component("lightboxPanel",LightboxPanel)},attrs:!0,props:assign({toggle:String},props),data:assign({toggle:"a"},Object.keys(props).reduce(function(data$$1,key){return data$$1[key]=defaults[key],data$$1},{})),computed:{toggles:function(ref,$el){return $$(ref.toggle,$el)}},disconnected:function(){this._destroy()},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),e.current.blur(),this.show(index(this.toggles,e.current))}}],update:function(data$$1){var listA,listB;(data$$1.toggles=data$$1.toggles||this.toggles,this.panel&&this.animation&&(this.panel.$props.animation=this.animation,this.panel.$emit()),this.panel&&(listA=data$$1.toggles,listB=this.toggles,listA.length!==listB.length||!listA.every(function(el,i){return el===listB[i]})))&&(data$$1.toggles=this.toggles,this._destroy(),this._init())},methods:{_init:function(){return this.panel=this.panel||this.$create("lightboxPanel",assign({},this.$props,{items:this.toggles.reduce(function(items,el){return items.push(["href","caption","type","poster","alt"].reduce(function(obj,attr$$1){return obj["href"===attr$$1?"source":attr$$1]=data(el,attr$$1),obj},{})),items},[])}))},_destroy:function(){this.panel&&(this.panel.$destroy(!0),this.panel=null)},show:function(index$$1){return this.panel||this._init(),this.panel.show(index$$1)},hide:function(){return this.panel&&this.panel.hide()}}};function merge(options,prop){return assign.apply(void 0,[{}].concat(options.mixins?options.mixins.map(function(mixin){return merge(mixin,prop)}):[],[isFunction(options[prop])?options[prop]():options[prop]]))}var containers={},Notification={functional:!0,args:["message","status"],data:{message:"",status:"",timeout:5e3,group:null,pos:"top-center",clsClose:"uk-notification-close",clsMsg:"uk-notification-message"},install:function(UIkit){UIkit.notification.closeAll=function(group,immediate){apply(document.body,function(el){var notification=UIkit.getComponent(el,"notification");!notification||group&&group!==notification.group||notification.close(immediate)})}},created:function(){containers[this.pos]||(containers[this.pos]=append(this.$container,'<div class="uk-notification uk-notification-'+this.pos+'"></div>'));var container=css(containers[this.pos],"display","block");this.$mount(append(container,'<div class="'+this.clsMsg+(this.status?" "+this.clsMsg+"-"+this.status:"")+'"> <a href="#" class="'+this.clsClose+'" data-uk-close></a> <div>'+this.message+"</div> </div>"))},ready:function(){var this$1=this,marginBottom=toFloat(css(this.$el,"marginBottom"));Transition.start(css(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}),{opacity:1,marginTop:0,marginBottom:marginBottom}).then(function(){this$1.timeout&&(this$1.timer=setTimeout(this$1.close,this$1.timeout))})},events:(obj={click:function(e){closest(e.target,'a[href="#"]')&&e.preventDefault(),this.close()}},obj[pointerEnter]=function(){this.timer&&clearTimeout(this.timer)},obj[pointerLeave]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},obj),methods:{close:function(immediate){var this$1=this,removeFn=function(){trigger(this$1.$el,"close",[this$1]),remove(this$1.$el),containers[this$1.pos].children.length||css(containers[this$1.pos],"display","none")};this.timer&&clearTimeout(this.timer),immediate?removeFn():Transition.start(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}).then(removeFn)}}};var props$1=["x","y","bgx","bgy","rotate","scale","color","backgroundColor","borderColor","opacity","blur","hue","grayscale","invert","saturate","sepia","fopacity"],Parallax={props:props$1.reduce(function(props,prop){return props[prop]="list",props},{media:"media"}),data:props$1.reduce(function(data$$1,prop){return data$$1[prop]=void 0,data$$1},{media:!1}),computed:{props:function(properties,$el){var this$1=this;return props$1.reduce(function(props,prop){if(isUndefined(properties[prop]))return props;var pos,bgPos,diff,isColor=prop.match(/color/i),isCssProp=isColor||"opacity"===prop,steps=properties[prop].slice(0);isCssProp&&css($el,prop,""),steps.length<2&&steps.unshift(("scale"===prop?1:isCssProp?css($el,prop):0)||0);var unit=includes(steps.join(""),"%")?"%":"px";if(isColor){var color=$el.style.color;steps=steps.map(function(step){return css(css($el,"color",step),"color").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(function(n){return toFloat(n)})}),$el.style.color=color}else steps=steps.map(toFloat);if(prop.match(/^bg/))if(css($el,"background-position-"+prop[2],""),bgPos=css($el,"backgroundPosition").split(" ")["x"===prop[2]?0:1],this$1.covers){var min=Math.min.apply(Math,steps),max=Math.max.apply(Math,steps),down=steps.indexOf(min)<steps.indexOf(max);diff=max-min,steps=steps.map(function(step){return step-(down?min:max)}),pos=(down?-diff:0)+"px"}else pos=bgPos;return props[prop]={steps:steps,unit:unit,pos:pos,bgPos:bgPos,diff:diff},props},{})},bgProps:function(){var this$1=this;return["bgx","bgy"].filter(function(bg){return bg in this$1.props})},covers:function(_,$el){return function(el){var backgroundSize=el.style.backgroundSize,covers="cover"===css(css(el,"backgroundSize",""),"backgroundSize");return el.style.backgroundSize=backgroundSize,covers}($el)}},disconnected:function(){delete this._image},update:[{read:function(data$$1){var this$1=this;if(data$$1.active=!this.media||window.matchMedia(this.media).matches,data$$1.image&&(data$$1.image.dimEl={width:this.$el.offsetWidth,height:this.$el.offsetHeight}),!("image"in data$$1)&&this.covers&&this.bgProps.length){var src=css(this.$el,"backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/,"$1");src&&(data$$1.image=!1,getImage(src).then(function(img){data$$1.image={width:img.naturalWidth,height:img.naturalHeight},this$1.$emit()}))}},write:function(ref){var this$1=this,image=ref.image,active=ref.active;if(image)if(active){var dimEl=image.dimEl,dim=Dimensions.cover(image,dimEl);this.bgProps.forEach(function(prop){var ref=this$1.props[prop],diff=ref.diff,bgPos=ref.bgPos,steps=ref.steps,attr$$1="bgy"===prop?"height":"width",span=dim[attr$$1]-dimEl[attr$$1];if(bgPos.match(/%$|0px/)){if(span<diff)dimEl[attr$$1]=dim[attr$$1]+diff-span;else if(span>diff){var bgPosFloat=parseFloat(bgPos);bgPosFloat&&(this$1.props[prop].steps=steps.map(function(step){return step-(span-diff)/(100/bgPosFloat)}))}dim=Dimensions.cover(image,dimEl)}}),css(this.$el,{backgroundSize:dim.width+"px "+dim.height+"px",backgroundRepeat:"no-repeat"})}else css(this.$el,{backgroundSize:"",backgroundRepeat:""})},events:["load","resize"]}],methods:{reset:function(){var this$1=this;each(this.getCss(0),function(_,prop){return css(this$1.$el,prop,"")})},getCss:function(percent){var props=this.props,translated=!1;return Object.keys(props).reduce(function(css$$1,prop){var ref=props[prop],steps=ref.steps,unit=ref.unit,pos=ref.pos,value=getValue(steps,percent);switch(prop){case"x":case"y":if(translated)break;var ref$1=["x","y"].map(function(dir){return prop===dir?value+unit:props[dir]?getValue(props[dir].steps,percent)+props[dir].unit:0}),x=ref$1[0],y=ref$1[1];translated=css$$1.transform+=" translate3d("+x+", "+y+", 0)";break;case"rotate":css$$1.transform+=" rotate("+value+"deg)";break;case"scale":css$$1.transform+=" scale("+value+")";break;case"bgy":case"bgx":css$$1["background-position-"+prop[2]]="calc("+pos+" + "+(value+unit)+")";break;case"color":case"backgroundColor":case"borderColor":var ref$2=getStep(steps,percent),start=ref$2[0],end=ref$2[1],p=ref$2[2];css$$1[prop]="rgba("+start.map(function(value,i){return value+=p*(end[i]-value),3===i?toFloat(value):parseInt(value,10)}).join(",")+")";break;case"blur":css$$1.filter+=" blur("+value+"px)";break;case"hue":css$$1.filter+=" hue-rotate("+value+"deg)";break;case"fopacity":css$$1.filter+=" opacity("+value+"%)";break;case"grayscale":case"invert":case"saturate":case"sepia":css$$1.filter+=" "+prop+"("+value+"%)";break;default:css$$1[prop]=value}return css$$1},{transform:"",filter:""})}}};function getStep(steps,percent){var count=steps.length-1,index$$1=Math.min(Math.floor(count*percent),count-1),step=steps.slice(index$$1,index$$1+2);return step.push(1===percent?1:percent%(1/count)*count),step}function getValue(steps,percent){var ref=getStep(steps,percent),start=ref[0],end=ref[1],p=ref[2];return(isNumber(start)?start+Math.abs(start-end)*p*(start<end?1:-1):+end).toFixed(2)}var Parallax$1={mixins:[Parallax],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(ref,$el){var target=ref.target;return target&&query(target,$el)||$el}},update:[{read:function(ref){return{prev:ref.percent,percent:function(percent,easing){return clamp(percent*(1-(easing-easing*percent)))}(scrolledOver(this.target)/(this.viewport||1),this.easing)}},write:function(ref,ref$1){var prev=ref.prev,percent=ref.percent,active=ref.active;"scroll"!==ref$1.type&&(prev=!1),active?prev!==percent&&css(this.$el,this.getCss(percent)):this.reset()},events:["scroll","load","resize"]}]};var SliderReactive={update:[{write:function(){if(!this.stack.length&&!this.dragging){var index$$1=this.getValidIndex();delete this.index,removeClass(this.slides,this.clsActive,this.clsActivated),this.show(index$$1)}},events:["load","resize"]}]};function getLeft(el,list,center){var left=getElLeft(el,list);return center?left-function(el,list){return list.offsetWidth/2-el.offsetWidth/2}(el,list):Math.min(left,getMax(list))}function getMax(list){return Math.max(0,getWidth(list)-list.offsetWidth)}function getWidth(list){return slides(list).reduce(function(right,el){return el.offsetWidth+right},0)}function getElLeft(el,list){return(el.offsetLeft+(isRtl?el.offsetWidth-list.offsetWidth:0))*(isRtl?-1:1)}function triggerUpdate$1(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}function slides(list){return toNodes(list.children)}var Slider$1={mixins:[Class,Slider,SliderReactive],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:"uk-slider-item",selList:".uk-slider-items",selNav:".uk-slider-nav",clsContainer:"uk-slider-container",Transitioner:function(prev,next,dir,ref){var center=ref.center,easing=ref.easing,list=ref.list,deferred=new Deferred,from=prev?getLeft(prev,list,center):getLeft(next,list,center)+next.offsetWidth*dir,to=next?getLeft(next,list,center):from+prev.offsetWidth*dir*(isRtl?-1:1);return{dir:dir,show:function(duration,percent,linear){void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),prev&&this.updateTranslates(),percent=prev?percent:clamp(percent,0,1),triggerUpdate$1(this.getItemIn(),"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),prev&&triggerUpdate$1(this.getItemIn(!0),"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Transition.start(list,{transform:translate(-to*(isRtl?-1:1),"px")},duration,timing).then(deferred.resolve,noop),deferred.promise},stop:function(){return Transition.stop(list)},cancel:function(){Transition.cancel(list)},reset:function(){css(list,"transform","")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel(list),this.show(duration,percent,!0)},translate:function(percent){var distance=this.getDistance()*dir*(isRtl?-1:1);css(list,"transform",translate(clamp(distance-distance*percent-to,-getWidth(list),list.offsetWidth)*(isRtl?-1:1),"px")),this.updateTranslates(),prev&&(percent=clamp(percent,-1,1),triggerUpdate$1(this.getItemIn(),"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate$1(this.getItemIn(!0),"itemtranslateout",{percent:1-percent,dir:dir}))},percent:function(){return Math.abs((css(list,"transform").split(",")[4]*(isRtl?-1:1)+from)/(to-from))},getDistance:function(){return Math.abs(to-from)},getItemIn:function(out){void 0===out&&(out=!1);var actives=this.getActives(),all=sortBy(slides(list),"offsetLeft"),i=index(all,actives[dir*(out?-1:1)>0?actives.length-1:0]);return~i&&all[i+(prev&&!out?dir:0)]},getActives:function(){var left=getLeft(prev||next,list,center);return sortBy(slides(list).filter(function(slide){var slideLeft=getElLeft(slide,list);return slideLeft>=left&&slideLeft+slide.offsetWidth<=list.offsetWidth+left}),"offsetLeft")},updateTranslates:function(){var actives=this.getActives();slides(list).forEach(function(slide){var isActive=includes(actives,slide);triggerUpdate$1(slide,"itemtranslate"+(isActive?"in":"out"),{percent:isActive?1:0,dir:slide.offsetLeft<=next.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return getWidth(this.list)/this.length},finite:function(ref){return ref.finite||getWidth(this.list)<this.list.offsetWidth+slides(this.list).reduce(function(right,el){return Math.max(right,el.offsetWidth)},0)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return this.sets[this.sets.length-1];css(this.slides,"order","");for(var max=getMax(this.list),i=this.length;i--;)if(getElLeft(this.list.children[i],this.list)<max)return Math.min(i+1,this.length-1);return 0},sets:function(ref){var this$1=this,sets=ref.sets,width$$1=this.list.offsetWidth/(this.center?2:1),left=0,leftCenter=width$$1,slideLeft=0;return(sets=sets&&this.slides.reduce(function(sets,slide,i){var slideWidth=offset(slide).width;if(slideLeft+slideWidth>left&&(!this$1.center&&i>this$1.maxIndex&&(i=this$1.maxIndex),!includes(sets,i))){var cmp=this$1.slides[i+1];this$1.center&&cmp&&slideWidth<leftCenter-offset(cmp).width/2?leftCenter-=slideWidth:(leftCenter=width$$1,sets.push(i),left=slideLeft+width$$1+(this$1.center?slideWidth/2:0))}return slideLeft+=slideWidth,sets},[]))&&sets.length&&sets},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){toggleClass(this.$el,this.clsContainer,!$("."+this.clsContainer,this.$el))},update:{write:function(){var this$1=this;$$("["+this.attrItem+"],[data-"+this.attrItem+"]",this.$el).forEach(function(el){var index$$1=data(el,this$1.attrItem);this$1.maxIndex&&toggleClass(el,"uk-hidden",isNumeric(index$$1)&&(this$1.sets&&!includes(this$1.sets,toFloat(index$$1))||index$$1>this$1.maxIndex))})},events:["load","resize"]},events:{beforeitemshow:function(e){!this.dragging&&this.sets&&this.stack.length<2&&!includes(this.sets,this.index)&&(this.index=this.getValidIndex());var diff=Math.abs(this.index-this.prevIndex+(this.dir>0&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&diff>1){for(var i=0;i<diff;i++)this.stack.splice(1,0,this.dir>0?"next":"previous");e.preventDefault()}else this.duration=speedUp(this.avgWidth/this.velocity)*((this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).offsetWidth/this.avgWidth),this.reorder()},itemshow:function(){!isUndefined(this.prevIndex)&&addClass(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var this$1=this,actives=this._getTransitioner(this.index).getActives();this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActive,includes(actives,slide))}),(!this.sets||includes(this.sets,toFloat(this.index)))&&this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActivated,includes(actives,slide))})}},methods:{reorder:function(){var this$1=this;if(css(this.slides,"order",""),!this.finite){var index$$1=this.dir>0&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(slide,i){return css(slide,"order",this$1.dir>0&&i<index$$1?1:this$1.dir<0&&i>=this$1.index?-1:"")}),this.center)for(var next=this.slides[index$$1],width$$1=this.list.offsetWidth/2-next.offsetWidth/2,j=0;width$$1>0;){var slideIndex=this$1.getIndex(--j+index$$1,index$$1),slide=this$1.slides[slideIndex];css(slide,"order",slideIndex>index$$1?-2:-1),width$$1-=slide.offsetWidth}}},getValidIndex:function(index$$1,prevIndex){var prev;if(void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),index$$1=this.getIndex(index$$1,prevIndex),!this.sets)return index$$1;do{if(includes(this.sets,index$$1))return index$$1;prev=index$$1,index$$1=this.getIndex(index$$1+this.dir,prevIndex)}while(index$$1!==prev);return index$$1}}},SliderParallax={mixins:[Parallax],data:{selItem:"!li"},computed:{item:function(ref,$el){return query(ref.selItem,$el)}},events:[{name:"itemshown",self:!0,el:function(){return this.item},handler:function(){css(this.$el,this.getCss(.5))}},{name:"itemin itemout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,duration=ref_detail.duration,timing=ref_detail.timing,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent))),Transition.start(this.$el,this.getCss(isIn(type)?.5:dir>0?1:0),duration,timing).catch(noop)}},{name:"transitioncanceled transitionend",self:!0,el:function(){return this.item},handler:function(){Transition.cancel(this.$el)}},{name:"itemtranslatein itemtranslateout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent)))}}]};function isIn(type){return endsWith(type,"in")}function getCurrent(type,dir,percent){return percent/=2,isIn(type)?dir<0?1-percent:percent:dir<0?percent:1-percent}var obj$1,obj$2,Animations$2=assign({},Animations,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(1.5),zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1+.5*percent),zIndex:0},{zIndex:-1}]}},pull:{show:function(dir){return dir<0?[{transform:translate(30),zIndex:-1},{transform:translate(),zIndex:0}]:[{transform:translate(-100),zIndex:0},{transform:translate(),zIndex:-1}]},percent:function(current,next,dir){return dir<0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(30*percent),zIndex:-1},{transform:translate(-100*(1-percent)),zIndex:0}]:[{transform:translate(100*-percent),zIndex:0},{transform:translate(30*(1-percent)),zIndex:-1}]}},push:{show:function(dir){return dir<0?[{transform:translate(100),zIndex:0},{transform:translate(),zIndex:-1}]:[{transform:translate(-30),zIndex:-1},{transform:translate(),zIndex:0}]},percent:function(current,next,dir){return dir>0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(100*percent),zIndex:0},{transform:translate(-30*(1-percent)),zIndex:-1}]:[{transform:translate(-30*percent),zIndex:-1},{transform:translate(100*(1-percent)),zIndex:0}]}}}),Slideshow$1={mixins:[Class,Slideshow,SliderReactive],props:{ratio:String,minHeight:Boolean,maxHeight:Boolean},data:{ratio:"16:9",minHeight:!1,maxHeight:!1,selList:".uk-slideshow-items",attrItem:"uk-slideshow-item",selNav:".uk-slideshow-nav",Animations:Animations$2},update:{read:function(){var ref=this.ratio.split(":").map(Number),width$$1=ref[0],height$$1=ref[1];return height$$1=height$$1*this.$el.offsetWidth/width$$1,this.minHeight&&(height$$1=Math.max(this.minHeight,height$$1)),this.maxHeight&&(height$$1=Math.min(this.maxHeight,height$$1)),{height:height$$1}},write:function(ref){var hgt=ref.height;height(this.list,Math.floor(hgt))},events:["load","resize"]}},Sortable={mixins:[Class,Animate],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:"uk-sortable-item",clsPlaceholder:"uk-sortable-placeholder",clsDrag:"uk-sortable-drag",clsDragState:"uk-drag",clsBase:"uk-sortable",clsNoDrag:"uk-sortable-nodrag",clsEmpty:"uk-sortable-empty",clsCustom:"",handle:!1},init:function(){var this$1=this;["init","start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){this$1.scrollY=window.pageYOffset;var ref=getPos$1(e),x=ref.x,y=ref.y;this$1.pos={x:x,y:y},fn(e)}})},events:(obj$1={},obj$1[pointerDown]="init",obj$1),update:{write:function(){if(this.clsEmpty&&toggleClass(this.$el,this.clsEmpty,!this.$el.children.length),this.drag){offset(this.drag,{top:this.pos.y+this.origin.top,left:this.pos.x+this.origin.left});var scroll,top=offset(this.drag).top,bottom=top+this.drag.offsetHeight;top>0&&top<this.scrollY?scroll=this.scrollY-5:bottom<height(document)&&bottom>height(window)+this.scrollY&&(scroll=this.scrollY+5),scroll&&setTimeout(function(){return window.scroll(window.pageXOffset,scroll)},5)}}},methods:{init:function(e){var target=e.target,button=e.button,defaultPrevented=e.defaultPrevented,placeholder=toNodes(this.$el.children).filter(function(el){return within(target,el)})[0];!placeholder||isInput(e.target)||this.handle&&!within(target,this.handle)||button>0||within(target,"."+this.clsNoDrag)||defaultPrevented||(e.preventDefault(),this.touched=[this],this.placeholder=placeholder,this.origin=assign({target:target,index:index(placeholder)},this.pos),on(document,pointerMove,this.move),on(document,pointerUp,this.end),on(window,"scroll",this.scroll),this.threshold||this.start(e))},start:function(e){this.drag=append(this.$container,this.placeholder.outerHTML.replace(/^<li/i,"<div").replace(/li>$/i,"div>")),css(this.drag,assign({boxSizing:"border-box",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight},css(this.placeholder,["paddingLeft","paddingRight","paddingTop","paddingBottom"]))),attr(this.drag,"uk-no-boot",""),addClass(this.drag,this.clsDrag,this.clsCustom),height(this.drag.firstElementChild,height(this.placeholder.firstElementChild));var ref=offset(this.placeholder),left=ref.left,top=ref.top;assign(this.origin,{left:left-this.pos.x,top:top-this.pos.y}),addClass(this.placeholder,this.clsPlaceholder),addClass(this.$el.children,this.clsItem),addClass(document.documentElement,this.clsDragState),trigger(this.$el,"start",[this,this.placeholder]),this.move(e)},move:function(e){if(this.drag){this.$emit();var target="mousemove"===e.type?e.target:document.elementFromPoint(this.pos.x-document.body.scrollLeft,this.pos.y-document.body.scrollTop),sortable=this.getSortable(target),previous=this.getSortable(this.placeholder),move=sortable!==previous;if(sortable&&!within(target,this.placeholder)&&(!move||sortable.group&&sortable.group===previous.group)){if(target=sortable.$el===target.parentNode&&target||toNodes(sortable.$el.children).filter(function(element){return within(target,element)})[0],move)previous.remove(this.placeholder);else if(!target)return;sortable.insert(this.placeholder,target),includes(this.touched,sortable)||this.touched.push(sortable)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(e)},scroll:function(){var scroll=window.pageYOffset;scroll!==this.scrollY&&(this.pos.y+=scroll-this.scrollY,this.scrollY=scroll,this.$emit())},end:function(e){if(off(document,pointerMove,this.move),off(document,pointerUp,this.end),off(window,"scroll",this.scroll),this.drag){preventClick();var sortable=this.getSortable(this.placeholder);this===sortable?this.origin.index!==index(this.placeholder)&&trigger(this.$el,"moved",[this,this.placeholder]):(trigger(sortable.$el,"added",[sortable,this.placeholder]),trigger(this.$el,"removed",[this,this.placeholder])),trigger(this.$el,"stop",[this,this.placeholder]),remove(this.drag),this.drag=null;var classes=this.touched.map(function(sortable){return sortable.clsPlaceholder+" "+sortable.clsItem}).join(" ");this.touched.forEach(function(sortable){return removeClass(sortable.$el.children,classes)}),removeClass(document.documentElement,this.clsDragState)}else"mouseup"!==e.type&&within(e.target,"a[href]")&&(location.href=closest(e.target,"a[href]").href)},insert:function(element,target){var this$1=this;addClass(this.$el.children,this.clsItem);var insert=function(){target?!within(element,this$1.$el)||function(element,target){return element.parentNode===target.parentNode&&index(element)>index(target)}(element,target)?before(target,element):after(target,element):append(this$1.$el,element)};this.animation?this.animate(insert):insert()},remove:function(element){within(element,this.$el)&&(this.animation?this.animate(function(){return remove(element)}):remove(element))},getSortable:function(element){return element&&(this.$getComponent(element,"sortable")||this.getSortable(element.parentNode))}}};var actives=[],Tooltip={attrs:!0,args:"title",mixins:[Container,Togglable,Position],props:{delay:Number,title:String},data:{pos:"top",title:"",delay:0,animation:["uk-animation-scale-up"],duration:100,cls:"uk-active",clsPos:"uk-tooltip"},beforeConnect:function(){this._hasTitle=hasAttr(this.$el,"title"),attr(this.$el,{title:"","aria-expanded":!1})},disconnected:function(){this.hide(),attr(this.$el,{title:this._hasTitle?this.title:null,"aria-expanded":null})},methods:{show:function(){var this$1=this;includes(actives,this)||(actives.forEach(function(active){return active.hide()}),actives.push(this),this._unbind=on(document,"click",function(e){return!within(e.target,this$1.$el)&&this$1.hide()}),clearTimeout(this.showTimer),this.tooltip=append(this.container,'<div class="'+this.clsPos+'" aria-hidden><div class="'+this.clsPos+'-inner">'+this.title+"</div></div>"),attr(this.$el,"aria-expanded",!0),this.positionAt(this.tooltip,this.$el),this.origin="y"===this.getAxis()?flipPosition(this.dir)+"-"+this.align:this.align+"-"+flipPosition(this.dir),this.showTimer=setTimeout(function(){this$1.toggleElement(this$1.tooltip,!0),this$1.hideTimer=setInterval(function(){isVisible(this$1.$el)||this$1.hide()},150)},this.delay))},hide:function(){var index$$1=actives.indexOf(this);!~index$$1||matches(this.$el,"input")&&this.$el===document.activeElement||(actives.splice(index$$1,1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),attr(this.$el,"aria-expanded",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&remove(this.tooltip),this.tooltip=!1,this._unbind())}},events:(obj$2={},obj$2["focus "+pointerEnter+" "+pointerDown]=function(e){e.type===pointerDown&&isTouch(e)||this.show()},obj$2.blur="hide",obj$2[pointerLeave]=function(e){isTouch(e)||this.hide()},obj$2)},Upload={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:"uk-dragover",concurrent:1,maxSize:0,method:"POST",mime:!1,msgInvalidMime:"Invalid File Type: %s",msgInvalidName:"Invalid File Name: %s",msgInvalidSize:"Invalid File Size: %s Kilobytes Max",multiple:!1,name:"files[]",params:{},type:"",url:"",abort:noop,beforeAll:noop,beforeSend:noop,complete:noop,completeAll:noop,error:noop,fail:noop,load:noop,loadEnd:noop,loadStart:noop,progress:noop},events:{change:function(e){matches(e.target,'input[type="file"]')&&(e.preventDefault(),e.target.files&&this.upload(e.target.files),e.target.value="")},drop:function(e){stop(e);var transfer=e.dataTransfer;transfer&&transfer.files&&(removeClass(this.$el,this.clsDragover),this.upload(transfer.files))},dragenter:function(e){stop(e)},dragover:function(e){stop(e),addClass(this.$el,this.clsDragover)},dragleave:function(e){stop(e),removeClass(this.$el,this.clsDragover)}},methods:{upload:function(files){var this$1=this;if(files.length){trigger(this.$el,"upload",[files]);for(var i=0;i<files.length;i++){if(this$1.maxSize&&1e3*this$1.maxSize<files[i].size)return void this$1.fail(this$1.msgInvalidSize.replace("%s",this$1.maxSize));if(this$1.allow&&!match(this$1.allow,files[i].name))return void this$1.fail(this$1.msgInvalidName.replace("%s",this$1.allow));if(this$1.mime&&!match(this$1.mime,files[i].type))return void this$1.fail(this$1.msgInvalidMime.replace("%s",this$1.mime))}this.multiple||(files=[files[0]]),this.beforeAll(this,files);var chunks=function(files,size){for(var chunks=[],i=0;i<files.length;i+=size){for(var chunk=[],j=0;j<size;j++)chunk.push(files[i+j]);chunks.push(chunk)}return chunks}(files,this.concurrent),upload=function(files){var data$$1=new FormData;for(var key in files.forEach(function(file){return data$$1.append(this$1.name,file)}),this$1.params)data$$1.append(key,this$1.params[key]);ajax(this$1.url,{data:data$$1,method:this$1.method,responseType:this$1.type,beforeSend:function(env){var xhr=env.xhr;xhr.upload&&on(xhr.upload,"progress",this$1.progress),["loadStart","load","loadEnd","abort"].forEach(function(type){return on(xhr,type.toLowerCase(),this$1[type])}),this$1.beforeSend(env)}}).then(function(xhr){this$1.complete(xhr),chunks.length?upload(chunks.shift()):this$1.completeAll(xhr)},function(e){return this$1.error(e.message)})};upload(chunks.shift())}}}};function match(pattern,path){return path.match(new RegExp("^"+pattern.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$","i"))}function stop(e){e.preventDefault(),e.stopPropagation()}return UIkit.component("countdown",Countdown),UIkit.component("filter",Filter),UIkit.component("lightbox",Lightbox),UIkit.component("lightboxPanel",LightboxPanel),UIkit.component("notification",Notification),UIkit.component("parallax",Parallax$1),UIkit.component("slider",Slider$1),UIkit.component("sliderParallax",SliderParallax),UIkit.component("slideshow",Slideshow$1),UIkit.component("slideshowParallax",SliderParallax),UIkit.component("sortable",Sortable),UIkit.component("tooltip",Tooltip),UIkit.component("upload",Upload),function(UIkit){var connect=UIkit.connect,disconnect=UIkit.disconnect;function init(){apply$$1(document.body,connect),fastdom.flush(),new MutationObserver(function(mutations){return mutations.forEach(applyMutation)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),UIkit._initialized=!0}function applyMutation(mutation){var target=mutation.target;("attributes"!==mutation.type?function(ref){for(var addedNodes=ref.addedNodes,removedNodes=ref.removedNodes,i=0;i<addedNodes.length;i++)apply$$1(addedNodes[i],connect);for(var i$1=0;i$1<removedNodes.length;i$1++)apply$$1(removedNodes[i$1],disconnect);return!0}(mutation):function(ref){var target=ref.target,attributeName=ref.attributeName;if("href"===attributeName)return!0;var name=getComponentName(attributeName);if(name&&name in UIkit){if(hasAttr(target,attributeName))return UIkit[name](target),!0;var component=UIkit.getComponent(target,name);return component?(component.$destroy(),!0):void 0}}(mutation))&&UIkit.update(target)}function apply$$1(node,fn){if(1===node.nodeType&&!hasAttr(node,"uk-no-boot"))for(fn(node),node=node.firstElementChild;node;){var next=node.nextElementSibling;apply$$1(node,fn),node=next}}"MutationObserver"in window&&(document.body?init():new MutationObserver(function(){document.body&&(this.disconnect(),init())}).observe(document,{childList:!0,subtree:!0}))}(UIkit),UIkit}); -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2pzL3NyYy9mb3VjLmpzIiwiLi4vanMvc3JjL2Vycm9ycy5qcyIsIi4uL2pzL3NyYy9jb3VudGRvd24uanMiLCIuLi9qcy9zcmMvamFtcy5qcyIsIi4uL2pzL3NyYy9yZXZpc2lvbl9kaWZmLmpzIiwiLi4vanMvc3JjL3dpa2kuanMiLCIuLi9qcy92ZW5kb3IvbW9tZW50L21vbWVudC5qcyIsIi4uL2pzL3ZlbmRvci9qcXVlcnkvanF1ZXJ5LTMuMy4xLmpzIiwiLi4vanMvdmVuZG9yL3R5cGV3cml0ZXIvdHlwZXdyaXRlci5qcyIsIi4uL2pzL3ZlbmRvci9tb21lbnQvbW9tZW50LXRpbWV6b25lLmpzIiwiLi4vanMvdmVuZG9yL3Vpa2l0L3Vpa2l0LmpzIl0sIm5hbWVzIjpbImdldFNjcmlwdCIsInVybCIsImludGVncml0eSIsImNyb3NzX29yaWdpbiIsInNjcmlwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJzcmMiLCJkZWZlciIsInVuZGVmaW5lZCIsImNyb3NzT3JpZ2luIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhcHBlbmRDaGlsZCIsInNldENsYXNzIiwic2VsZWN0b3IiLCJteV9jbGFzcyIsInF1ZXJ5U2VsZWN0b3IiLCJjbGFzc05hbWUiLCJyZW1vdmVDbGFzcyIsImVsZW1lbnQiLCJyZWciLCJSZWdFeHAiLCJyZXBsYWNlIiwiZXJyb3JfdHlwZXdyaXRlciIsImFwcCIsImdldEVsZW1lbnRCeUlkIiwidHlwZXdyaXRlciIsIlR5cGV3cml0ZXIiLCJsb29wIiwiZGVsZXRlU3BlZWQiLCJ0eXBpbmdTcGVlZCIsImRldk1vZGUiLCJvbmNsaWNrIiwiY3VycmVudF9jbGFzcyIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInN0b3AiLCJhcHBlbmRUZXh0IiwicGF1c2VGb3IiLCJ0eXBlU3RyaW5nIiwiZGVsZXRlQ2hhcnMiLCJjaGFuZ2VTZXR0aW5ncyIsIndpbmRvdyIsIl9SZXF1ZXN0TWV0aG9kIiwiX1BhdGgiLCJfQ29kZSIsIl9FcnJvck1zZyIsInN0YXJ0Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInN0YXJ0amFtIiwiRGF0ZSIsIlVUQyIsImVuZGphbSIsIm5vdyIsImdvYWwiLCJnZXRUaW1lIiwiVUlraXQiLCJub3RpZmljYXRpb24iLCJtZXNzYWdlIiwicG9zIiwidGltZW91dCIsImhlYWRpbmciLCJpbm5lckhUTUwiLCJyZWZyZXNoQ291bnRkb3duIiwic2V0SW50ZXJ2YWwiLCJkZWx0YSIsImNsZWFySW50ZXJ2YWwiLCJsb2NhdGlvbiIsInJlbG9hZCIsImRheXMiLCJNYXRoIiwiZmxvb3IiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwiZSIsIkphbUFjdGlvbnMiLCJbb2JqZWN0IE9iamVjdF0iLCJjc3JmX3Rva2VuIiwidGhpcyIsImFjdGlvbiIsIm1ldGhvZCIsImRhdGEiLCJjYWxsYmFjayIsIiQiLCJhamF4IiwiZGF0YVR5cGUiLCJoZWFkZXJzIiwiWC1DU1JGVG9rZW4iLCJkb25lIiwiZmFpbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb250ZW50VHlwZSIsImphbSIsInN0YXRlIiwic2VuZCIsInNlbmRfanNvbiIsImlkIiwiZm9ybSIsInF1ZXN0aW9uIiwicmVhc29uIiwibnVtYmVyIiwicGFydGljaXBhbnQiLCJ0ZWFtIiwibWVtYmVyIiwicmV2aXNpb25fZGlmZiIsInJldmlzaW9ucyIsImJ1dHRvbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaWRfcmVnIiwiZ2V0UmV2aXNpb25JZCIsIm1hdGNoIiwiZ2V0UmV2aXNpb24iLCJmaWx0ZXIiLCJ4IiwiZm9yRWFjaCIsImJ1dHRvbiIsImNoZWNrZWQiLCJvbmNoYW5nZSIsInJldiIsImFmdCIsImJlZiIsImRhdGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJocmVmIiwicmFkaW9CdXR0b25DaGVja2VkIiwid2lraV9zaWRlYmFyIiwic2lkZWJhciIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwiYWRkIiwiZ2xvYmFsIiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJtb21lbnQiLCJob29rQ2FsbGJhY2siLCJzb21lIiwiaG9va3MiLCJhcHBseSIsImFyZ3VtZW50cyIsImlzQXJyYXkiLCJpbnB1dCIsIkFycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiaXNPYmplY3QiLCJpc1VuZGVmaW5lZCIsImlzTnVtYmVyIiwiaXNEYXRlIiwibWFwIiwiYXJyIiwiZm4iLCJpIiwicmVzIiwibGVuZ3RoIiwicHVzaCIsImhhc093blByb3AiLCJhIiwiYiIsImhhc093blByb3BlcnR5IiwiZXh0ZW5kIiwidmFsdWVPZiIsImNyZWF0ZVVUQyIsImZvcm1hdCIsImxvY2FsZSIsInN0cmljdCIsImNyZWF0ZUxvY2FsT3JVVEMiLCJ1dGMiLCJnZXRQYXJzaW5nRmxhZ3MiLCJtIiwiX3BmIiwiZW1wdHkiLCJ1bnVzZWRUb2tlbnMiLCJ1bnVzZWRJbnB1dCIsIm92ZXJmbG93IiwiY2hhcnNMZWZ0T3ZlciIsIm51bGxJbnB1dCIsImludmFsaWRNb250aCIsImludmFsaWRGb3JtYXQiLCJ1c2VySW52YWxpZGF0ZWQiLCJpc28iLCJwYXJzZWREYXRlUGFydHMiLCJtZXJpZGllbSIsInJmYzI4MjIiLCJ3ZWVrZGF5TWlzbWF0Y2giLCJpc1ZhbGlkIiwiX2lzVmFsaWQiLCJmbGFncyIsInBhcnNlZFBhcnRzIiwiaXNOb3dWYWxpZCIsImlzTmFOIiwiX2QiLCJpbnZhbGlkV2Vla2RheSIsIl9zdHJpY3QiLCJiaWdIb3VyIiwiaXNGcm96ZW4iLCJjcmVhdGVJbnZhbGlkIiwiTmFOIiwiZnVuIiwidCIsImxlbiIsIm1vbWVudFByb3BlcnRpZXMiLCJjb3B5Q29uZmlnIiwidG8iLCJmcm9tIiwicHJvcCIsInZhbCIsIl9pc0FNb21lbnRPYmplY3QiLCJfaSIsIl9mIiwiX2wiLCJfdHptIiwiX2lzVVRDIiwiX29mZnNldCIsIl9sb2NhbGUiLCJ1cGRhdGVJblByb2dyZXNzIiwiTW9tZW50IiwiY29uZmlnIiwidXBkYXRlT2Zmc2V0IiwiaXNNb21lbnQiLCJvYmoiLCJhYnNGbG9vciIsImNlaWwiLCJ0b0ludCIsImFyZ3VtZW50Rm9yQ29lcmNpb24iLCJjb2VyY2VkTnVtYmVyIiwidmFsdWUiLCJpc0Zpbml0ZSIsImNvbXBhcmVBcnJheXMiLCJhcnJheTEiLCJhcnJheTIiLCJkb250Q29udmVydCIsIm1pbiIsImxlbmd0aERpZmYiLCJhYnMiLCJkaWZmcyIsIndhcm4iLCJtc2ciLCJzdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MiLCJjb25zb2xlIiwiZGVwcmVjYXRlIiwiZmlyc3RUaW1lIiwiZGVwcmVjYXRpb25IYW5kbGVyIiwiYXJnIiwiYXJncyIsImtleSIsInNsaWNlIiwiam9pbiIsIkVycm9yIiwic3RhY2siLCJrZXlzIiwiZGVwcmVjYXRpb25zIiwiZGVwcmVjYXRlU2ltcGxlIiwibmFtZSIsImlzRnVuY3Rpb24iLCJGdW5jdGlvbiIsIm1lcmdlQ29uZmlncyIsInBhcmVudENvbmZpZyIsImNoaWxkQ29uZmlnIiwiTG9jYWxlIiwic2V0IiwiYWxpYXNlcyIsImFkZFVuaXRBbGlhcyIsInVuaXQiLCJzaG9ydGhhbmQiLCJsb3dlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVVuaXRzIiwidW5pdHMiLCJub3JtYWxpemVPYmplY3RVbml0cyIsImlucHV0T2JqZWN0Iiwibm9ybWFsaXplZFByb3AiLCJub3JtYWxpemVkSW5wdXQiLCJwcmlvcml0aWVzIiwiYWRkVW5pdFByaW9yaXR5IiwicHJpb3JpdHkiLCJ6ZXJvRmlsbCIsInRhcmdldExlbmd0aCIsImZvcmNlU2lnbiIsImFic051bWJlciIsInplcm9zVG9GaWxsIiwicG93IiwibWF4Iiwic3Vic3RyIiwiZm9ybWF0dGluZ1Rva2VucyIsImxvY2FsRm9ybWF0dGluZ1Rva2VucyIsImZvcm1hdEZ1bmN0aW9ucyIsImZvcm1hdFRva2VuRnVuY3Rpb25zIiwiYWRkRm9ybWF0VG9rZW4iLCJ0b2tlbiIsInBhZGRlZCIsIm9yZGluYWwiLCJmdW5jIiwibG9jYWxlRGF0YSIsImZvcm1hdE1vbWVudCIsImV4cGFuZEZvcm1hdCIsImFycmF5IiwibW9tIiwib3V0cHV0IiwibWFrZUZvcm1hdEZ1bmN0aW9uIiwiaW52YWxpZERhdGUiLCJyZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnMiLCJsb25nRGF0ZUZvcm1hdCIsImxhc3RJbmRleCIsInRlc3QiLCJtYXRjaDEiLCJtYXRjaDIiLCJtYXRjaDMiLCJtYXRjaDQiLCJtYXRjaDYiLCJtYXRjaDF0bzIiLCJtYXRjaDN0bzQiLCJtYXRjaDV0bzYiLCJtYXRjaDF0bzMiLCJtYXRjaDF0bzQiLCJtYXRjaDF0bzYiLCJtYXRjaFVuc2lnbmVkIiwibWF0Y2hTaWduZWQiLCJtYXRjaE9mZnNldCIsIm1hdGNoU2hvcnRPZmZzZXQiLCJtYXRjaFdvcmQiLCJyZWdleGVzIiwiYWRkUmVnZXhUb2tlbiIsInJlZ2V4Iiwic3RyaWN0UmVnZXgiLCJpc1N0cmljdCIsImdldFBhcnNlUmVnZXhGb3JUb2tlbiIsInJlZ2V4RXNjYXBlIiwibWF0Y2hlZCIsInAxIiwicDIiLCJwMyIsInA0IiwicyIsInRva2VucyIsImFkZFBhcnNlVG9rZW4iLCJhZGRXZWVrUGFyc2VUb2tlbiIsIl93IiwiYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4iLCJfYSIsIllFQVIiLCJNT05USCIsIkRBVEUiLCJIT1VSIiwiTUlOVVRFIiwiU0VDT05EIiwiTUlMTElTRUNPTkQiLCJXRUVLIiwiV0VFS0RBWSIsImRheXNJblllYXIiLCJ5ZWFyIiwiaXNMZWFwWWVhciIsInkiLCJwYXJzZVR3b0RpZ2l0WWVhciIsInBhcnNlSW50IiwiaW5kZXhPZiIsImdldFNldFllYXIiLCJtYWtlR2V0U2V0Iiwia2VlcFRpbWUiLCJzZXQkMSIsImdldCIsIm1vbnRoIiwiZGF5c0luTW9udGgiLCJtb2RNb250aCIsIm8iLCJtb250aHNTaG9ydCIsIm1vbnRocyIsIm1vbnRoc1Nob3J0UmVnZXgiLCJtb250aHNSZWdleCIsIm1vbnRoc1BhcnNlIiwiTU9OVEhTX0lOX0ZPUk1BVCIsImRlZmF1bHRMb2NhbGVNb250aHMiLCJzcGxpdCIsImRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCIsInNldE1vbnRoIiwiZGF5T2ZNb250aCIsImdldFNldE1vbnRoIiwiZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXgiLCJkZWZhdWx0TW9udGhzUmVnZXgiLCJjb21wdXRlTW9udGhzUGFyc2UiLCJjbXBMZW5SZXYiLCJzaG9ydFBpZWNlcyIsImxvbmdQaWVjZXMiLCJtaXhlZFBpZWNlcyIsInNvcnQiLCJfbW9udGhzUmVnZXgiLCJfbW9udGhzU2hvcnRSZWdleCIsIl9tb250aHNTdHJpY3RSZWdleCIsIl9tb250aHNTaG9ydFN0cmljdFJlZ2V4IiwiY3JlYXRlVVRDRGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwic2V0VVRDRnVsbFllYXIiLCJmaXJzdFdlZWtPZmZzZXQiLCJkb3ciLCJkb3kiLCJmd2QiLCJnZXRVVENEYXkiLCJkYXlPZlllYXJGcm9tV2Vla3MiLCJ3ZWVrIiwid2Vla2RheSIsInJlc1llYXIiLCJyZXNEYXlPZlllYXIiLCJkYXlPZlllYXIiLCJ3ZWVrT2ZZZWFyIiwicmVzV2VlayIsIndlZWtPZmZzZXQiLCJ3ZWVrc0luWWVhciIsIndlZWtPZmZzZXROZXh0Iiwid2Vla2RheXNNaW4iLCJ3ZWVrZGF5c1Nob3J0Iiwid2Vla2RheXMiLCJ3ZWVrZGF5c01pblJlZ2V4Iiwid2Vla2RheXNTaG9ydFJlZ2V4Iiwid2Vla2RheXNSZWdleCIsIndlZWtkYXlzUGFyc2UiLCJkIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQiLCJkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4iLCJkZWZhdWx0V2Vla2RheXNSZWdleCIsImRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXgiLCJkZWZhdWx0V2Vla2RheXNNaW5SZWdleCIsImNvbXB1dGVXZWVrZGF5c1BhcnNlIiwibWlucCIsInNob3J0cCIsImxvbmdwIiwibWluUGllY2VzIiwiZGF5IiwiX3dlZWtkYXlzUmVnZXgiLCJfd2Vla2RheXNTaG9ydFJlZ2V4IiwiX3dlZWtkYXlzTWluUmVnZXgiLCJfd2Vla2RheXNTdHJpY3RSZWdleCIsIl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgiLCJfd2Vla2RheXNNaW5TdHJpY3RSZWdleCIsImhGb3JtYXQiLCJsb3dlcmNhc2UiLCJtYXRjaE1lcmlkaWVtIiwiX21lcmlkaWVtUGFyc2UiLCJrSW5wdXQiLCJfaXNQbSIsImlzUE0iLCJfbWVyaWRpZW0iLCJwb3MxIiwicG9zMiIsImdsb2JhbExvY2FsZSIsImdldFNldEhvdXIiLCJiYXNlQ29uZmlnIiwiY2FsZW5kYXIiLCJzYW1lRGF5IiwibmV4dERheSIsIm5leHRXZWVrIiwibGFzdERheSIsImxhc3RXZWVrIiwic2FtZUVsc2UiLCJMVFMiLCJMVCIsIkwiLCJMTCIsIkxMTCIsIkxMTEwiLCJkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIiwicmVsYXRpdmVUaW1lIiwiZnV0dXJlIiwicGFzdCIsInNzIiwibW0iLCJoIiwiaGgiLCJkZCIsIk0iLCJNTSIsInl5IiwibWVyaWRpZW1QYXJzZSIsImxvY2FsZXMiLCJsb2NhbGVGYW1pbGllcyIsIm5vcm1hbGl6ZUxvY2FsZSIsImxvYWRMb2NhbGUiLCJvbGRMb2NhbGUiLCJfYWJiciIsInJlcXVpcmUiLCJnZXRTZXRHbG9iYWxMb2NhbGUiLCJ2YWx1ZXMiLCJnZXRMb2NhbGUiLCJkZWZpbmVMb2NhbGUiLCJhYmJyIiwiX2NvbmZpZyIsInBhcmVudExvY2FsZSIsIm5hbWVzIiwiaiIsIm5leHQiLCJjaG9vc2VMb2NhbGUiLCJjaGVja092ZXJmbG93IiwiX292ZXJmbG93RGF5T2ZZZWFyIiwiX292ZXJmbG93V2Vla3MiLCJfb3ZlcmZsb3dXZWVrZGF5IiwiZGVmYXVsdHMiLCJjIiwiY29uZmlnRnJvbUFycmF5IiwiY3VycmVudERhdGUiLCJleHBlY3RlZFdlZWtkYXkiLCJ5ZWFyVG9Vc2UiLCJub3dWYWx1ZSIsIl91c2VVVEMiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImN1cnJlbnREYXRlQXJyYXkiLCJ3Iiwid2Vla1llYXIiLCJ0ZW1wIiwid2Vla2RheU92ZXJmbG93IiwiR0ciLCJXIiwiRSIsImNyZWF0ZUxvY2FsIiwiX3dlZWsiLCJjdXJXZWVrIiwiZ2ciLCJfZGF5T2ZZZWFyIiwiZGF5T2ZZZWFyRnJvbVdlZWtJbmZvIiwiX25leHREYXkiLCJtcyIsInNldEZ1bGxZZWFyIiwiZ2V0RGF5Iiwic2V0VVRDTWludXRlcyIsImdldFVUQ01pbnV0ZXMiLCJleHRlbmRlZElzb1JlZ2V4IiwiYmFzaWNJc29SZWdleCIsInR6UmVnZXgiLCJpc29EYXRlcyIsImlzb1RpbWVzIiwiYXNwTmV0SnNvblJlZ2V4IiwiY29uZmlnRnJvbUlTTyIsImwiLCJhbGxvd1RpbWUiLCJkYXRlRm9ybWF0IiwidGltZUZvcm1hdCIsInR6Rm9ybWF0Iiwic3RyaW5nIiwiZXhlYyIsImNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQiLCJleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzIiwieWVhclN0ciIsIm1vbnRoU3RyIiwiZGF5U3RyIiwiaG91clN0ciIsIm1pbnV0ZVN0ciIsInNlY29uZFN0ciIsInJlc3VsdCIsInVudHJ1bmNhdGVZZWFyIiwib2JzT2Zmc2V0cyIsIlVUIiwiR01UIiwiRURUIiwiRVNUIiwiQ0RUIiwiQ1NUIiwiTURUIiwiTVNUIiwiUERUIiwiUFNUIiwiY29uZmlnRnJvbVJGQzI4MjIiLCJwYXJzZWRBcnJheSIsIndlZWtkYXlTdHIiLCJwYXJzZWRJbnB1dCIsImNoZWNrV2Vla2RheSIsIm9ic09mZnNldCIsIm1pbGl0YXJ5T2Zmc2V0IiwibnVtT2Zmc2V0IiwiaG0iLCJjYWxjdWxhdGVPZmZzZXQiLCJJU09fODYwMSIsIlJGQ18yODIyIiwic2tpcHBlZCIsInN0cmluZ0xlbmd0aCIsInRvdGFsUGFyc2VkSW5wdXRMZW5ndGgiLCJob3VyIiwiaXNQbSIsIm1lcmlkaWVtSG91ciIsIm1lcmlkaWVtRml4V3JhcCIsInByZXBhcmVDb25maWciLCJwcmVwYXJzZSIsInRlbXBDb25maWciLCJiZXN0TW9tZW50Iiwic2NvcmVUb0JlYXQiLCJjdXJyZW50U2NvcmUiLCJzY29yZSIsImNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheSIsImNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrIiwiY29uZmlnRnJvbVN0cmluZyIsIm1pbnV0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIiwiY29uZmlnRnJvbU9iamVjdCIsImNvbmZpZ0Zyb21JbnB1dCIsImlzVVRDIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImsiLCJpc09iamVjdEVtcHR5IiwicHJvdG90eXBlTWluIiwib3RoZXIiLCJwcm90b3R5cGVNYXgiLCJwaWNrQnkiLCJtb21lbnRzIiwib3JkZXJpbmciLCJEdXJhdGlvbiIsImR1cmF0aW9uIiwieWVhcnMiLCJxdWFydGVycyIsInF1YXJ0ZXIiLCJ3ZWVrcyIsIm1pbGxpc2Vjb25kcyIsInVuaXRIYXNEZWNpbWFsIiwicGFyc2VGbG9hdCIsImlzRHVyYXRpb25WYWxpZCIsIl9taWxsaXNlY29uZHMiLCJfZGF5cyIsIl9tb250aHMiLCJfZGF0YSIsIl9idWJibGUiLCJpc0R1cmF0aW9uIiwiYWJzUm91bmQiLCJyb3VuZCIsIm9mZnNldCIsInNlcGFyYXRvciIsInV0Y09mZnNldCIsInNpZ24iLCJvZmZzZXRGcm9tU3RyaW5nIiwiY2h1bmtPZmZzZXQiLCJtYXRjaGVyIiwibWF0Y2hlcyIsInBhcnRzIiwiY2xvbmVXaXRoT2Zmc2V0IiwibW9kZWwiLCJkaWZmIiwiY2xvbmUiLCJzZXRUaW1lIiwibG9jYWwiLCJnZXREYXRlT2Zmc2V0IiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJpc1V0YyIsImFzcE5ldFJlZ2V4IiwiaXNvUmVnZXgiLCJjcmVhdGVEdXJhdGlvbiIsInJldCIsImRpZmZSZXMiLCJwYXJzZUlzbyIsImJhc2UiLCJpc0JlZm9yZSIsInBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UiLCJtb21lbnRzRGlmZmVyZW5jZSIsImlucCIsImlzQWZ0ZXIiLCJjcmVhdGVBZGRlciIsImRpcmVjdGlvbiIsInBlcmlvZCIsInRtcCIsImFkZFN1YnRyYWN0IiwiaXNBZGRpbmciLCJpbnZhbGlkIiwic3VidHJhY3QiLCJtb250aERpZmYiLCJ3aG9sZU1vbnRoRGlmZiIsImFuY2hvciIsIm5ld0xvY2FsZURhdGEiLCJkZWZhdWx0Rm9ybWF0IiwiZGVmYXVsdEZvcm1hdFV0YyIsImxhbmciLCJhZGRXZWVrWWVhckZvcm1hdFRva2VuIiwiZ2V0dGVyIiwiZ2V0U2V0V2Vla1llYXJIZWxwZXIiLCJ3ZWVrc1RhcmdldCIsImRheU9mWWVhckRhdGEiLCJpc29XZWVrWWVhciIsIl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlIiwiX29yZGluYWxQYXJzZSIsIl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCIsImdldFNldERheU9mTW9udGgiLCJnZXRTZXRNaW51dGUiLCJnZXRTZXRTZWNvbmQiLCJwYXJzZU1zIiwiZ2V0U2V0TWlsbGlzZWNvbmQiLCJwcm90byIsInByZVBhcnNlUG9zdEZvcm1hdCIsInRpbWUiLCJmb3JtYXRzIiwic29kIiwic3RhcnRPZiIsImNhbGVuZGFyRm9ybWF0IiwiYXNGbG9hdCIsInRoYXQiLCJ6b25lRGVsdGEiLCJlbmRPZiIsImlucHV0U3RyaW5nIiwicG9zdGZvcm1hdCIsIndpdGhvdXRTdWZmaXgiLCJodW1hbml6ZSIsImZyb21Ob3ciLCJ0b05vdyIsImludmFsaWRBdCIsImxvY2FsSW5wdXQiLCJpc0JldHdlZW4iLCJpbmNsdXNpdml0eSIsImlzU2FtZSIsImlucHV0TXMiLCJpc1NhbWVPckFmdGVyIiwiaXNTYW1lT3JCZWZvcmUiLCJwYXJzaW5nRmxhZ3MiLCJwcmlvcml0aXplZCIsInVuaXRzT2JqIiwidSIsImdldFByaW9yaXRpemVkVW5pdHMiLCJpc29XZWVrZGF5IiwidG9BcnJheSIsInRvT2JqZWN0IiwidG9EYXRlIiwidG9JU09TdHJpbmciLCJrZWVwT2Zmc2V0IiwiaW5zcGVjdCIsInpvbmUiLCJpc0xvY2FsIiwicHJlZml4Iiwic3VmZml4IiwidG9KU09OIiwidW5peCIsImNyZWF0aW9uRGF0YSIsImlzb1dlZWsiLCJpc29XZWVrcyIsIndlZWtJbmZvIiwiaXNvV2Vla3NJblllYXIiLCJwYXJzZVdlZWtkYXkiLCJwYXJzZUlzb1dlZWtkYXkiLCJrZWVwTG9jYWxUaW1lIiwia2VlcE1pbnV0ZXMiLCJsb2NhbEFkanVzdCIsIl9jaGFuZ2VJblByb2dyZXNzIiwicGFyc2Vab25lIiwidFpvbmUiLCJoYXNBbGlnbmVkSG91ck9mZnNldCIsImlzRFNUIiwiaXNVdGNPZmZzZXQiLCJ6b25lQWJiciIsInpvbmVOYW1lIiwiZGF0ZXMiLCJpc0RTVFNoaWZ0ZWQiLCJfaXNEU1RTaGlmdGVkIiwicHJvdG8kMSIsImdldCQxIiwiaW5kZXgiLCJmaWVsZCIsInNldHRlciIsImxpc3RNb250aHNJbXBsIiwib3V0IiwibGlzdFdlZWtkYXlzSW1wbCIsImxvY2FsZVNvcnRlZCIsInNoaWZ0IiwiX2NhbGVuZGFyIiwiX2xvbmdEYXRlRm9ybWF0IiwiZm9ybWF0VXBwZXIiLCJ0b1VwcGVyQ2FzZSIsIl9pbnZhbGlkRGF0ZSIsIl9vcmRpbmFsIiwiaXNGdXR1cmUiLCJfcmVsYXRpdmVUaW1lIiwicGFzdEZ1dHVyZSIsInNvdXJjZSIsImlzRm9ybWF0IiwiX21vbnRoc1Nob3J0IiwibW9udGhOYW1lIiwiX21vbnRoc1BhcnNlRXhhY3QiLCJpaSIsImxsYyIsInRvTG9jYWxlTG93ZXJDYXNlIiwiX21vbnRoc1BhcnNlIiwiX2xvbmdNb250aHNQYXJzZSIsIl9zaG9ydE1vbnRoc1BhcnNlIiwiZmlyc3REYXlPZlllYXIiLCJmaXJzdERheU9mV2VlayIsIl93ZWVrZGF5cyIsIl93ZWVrZGF5c01pbiIsIl93ZWVrZGF5c1Nob3J0Iiwid2Vla2RheU5hbWUiLCJfd2Vla2RheXNQYXJzZUV4YWN0IiwiX3dlZWtkYXlzUGFyc2UiLCJfc2hvcnRXZWVrZGF5c1BhcnNlIiwiX21pbldlZWtkYXlzUGFyc2UiLCJfZnVsbFdlZWtkYXlzUGFyc2UiLCJjaGFyQXQiLCJpc0xvd2VyIiwibGFuZ0RhdGEiLCJtYXRoQWJzIiwiYWRkU3VidHJhY3QkMSIsImFic0NlaWwiLCJkYXlzVG9Nb250aHMiLCJtb250aHNUb0RheXMiLCJtYWtlQXMiLCJhbGlhcyIsImFzIiwiYXNNaWxsaXNlY29uZHMiLCJhc1NlY29uZHMiLCJhc01pbnV0ZXMiLCJhc0hvdXJzIiwiYXNEYXlzIiwiYXNXZWVrcyIsImFzTW9udGhzIiwiYXNZZWFycyIsIm1ha2VHZXR0ZXIiLCJ0aHJlc2hvbGRzIiwiYWJzJDEiLCJ0b0lTT1N0cmluZyQxIiwiWSIsIkQiLCJ0b0ZpeGVkIiwidG90YWwiLCJ0b3RhbFNpZ24iLCJ5bVNpZ24iLCJkYXlzU2lnbiIsImhtc1NpZ24iLCJwcm90byQyIiwibW9udGhzRnJvbURheXMiLCJ3aXRoU3VmZml4IiwicG9zTmVnRHVyYXRpb24iLCJyZWxhdGl2ZVRpbWUkMSIsInRvSXNvU3RyaW5nIiwidmVyc2lvbiIsInVwZGF0ZUxvY2FsZSIsInRtcExvY2FsZSIsInJlbGF0aXZlVGltZVJvdW5kaW5nIiwicm91bmRpbmdGdW5jdGlvbiIsInJlbGF0aXZlVGltZVRocmVzaG9sZCIsInRocmVzaG9sZCIsImxpbWl0IiwibXlNb21lbnQiLCJIVE1MNV9GTVQiLCJEQVRFVElNRV9MT0NBTCIsIkRBVEVUSU1FX0xPQ0FMX1NFQ09ORFMiLCJEQVRFVElNRV9MT0NBTF9NUyIsIlRJTUUiLCJUSU1FX1NFQ09ORFMiLCJUSU1FX01TIiwibm9HbG9iYWwiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiY29uY2F0IiwiY2xhc3MydHlwZSIsImhhc093biIsImZuVG9TdHJpbmciLCJPYmplY3RGdW5jdGlvblN0cmluZyIsInN1cHBvcnQiLCJub2RlVHlwZSIsImlzV2luZG93IiwicHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyIsIm5vTW9kdWxlIiwiRE9NRXZhbCIsImNvZGUiLCJkb2MiLCJub2RlIiwidGV4dCIsImhlYWQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJ0b1R5cGUiLCJqUXVlcnkiLCJjb250ZXh0IiwiaW5pdCIsInJ0cmltIiwiaXNBcnJheUxpa2UiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsIm51bSIsInB1c2hTdGFjayIsImVsZW1zIiwibWVyZ2UiLCJwcmV2T2JqZWN0IiwiZWFjaCIsImVsZW0iLCJmaXJzdCIsImVxIiwibGFzdCIsImVuZCIsInNwbGljZSIsIm9wdGlvbnMiLCJjb3B5IiwiY29weUlzQXJyYXkiLCJ0YXJnZXQiLCJkZWVwIiwiaXNQbGFpbk9iamVjdCIsImV4cGFuZG8iLCJyYW5kb20iLCJpc1JlYWR5IiwiZXJyb3IiLCJub29wIiwiQ3RvciIsImlzRW1wdHlPYmplY3QiLCJnbG9iYWxFdmFsIiwidHJpbSIsIm1ha2VBcnJheSIsInJlc3VsdHMiLCJpbkFycmF5IiwiZ3JlcCIsImludmVydCIsImNhbGxiYWNrRXhwZWN0IiwiZ3VpZCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiU2l6emxlIiwiRXhwciIsImdldFRleHQiLCJpc1hNTCIsInRva2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENvbnRleHQiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0iLCJkb2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJwcmVmZXJyZWREb2MiLCJkaXJydW5zIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwidG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJzb3J0T3JkZXIiLCJwb3AiLCJwdXNoX25hdGl2ZSIsImxpc3QiLCJib29sZWFucyIsIndoaXRlc3BhY2UiLCJpZGVudGlmaWVyIiwiYXR0cmlidXRlcyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJhdHRyaWJ1dGVRdW90ZXMiLCJycHNldWRvIiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIsIkNMQVNTIiwiVEFHIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJxdWlja0V4cHIiLCJyc2libGluZyIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsIl8iLCJlc2NhcGVkIiwiZXNjYXBlZFdoaXRlc3BhY2UiLCJoaWdoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwicmNzc2VzY2FwZSIsImZjc3Nlc2NhcGUiLCJjaCIsImFzQ29kZVBvaW50IiwiY2hhckNvZGVBdCIsInVubG9hZEhhbmRsZXIiLCJkaXNhYmxlZEFuY2VzdG9yIiwiYWRkQ29tYmluYXRvciIsImRpc2FibGVkIiwiZGlyIiwiY2hpbGROb2RlcyIsImVscyIsInNlZWQiLCJuaWQiLCJncm91cHMiLCJuZXdTZWxlY3RvciIsIm5ld0NvbnRleHQiLCJvd25lckRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFzYSIsIm5vZGVOYW1lIiwidG9TZWxlY3RvciIsInRlc3RDb250ZXh0IiwicXNhRXJyb3IiLCJjYWNoZSIsImNhY2hlTGVuZ3RoIiwibWFya0Z1bmN0aW9uIiwiYXNzZXJ0IiwiZWwiLCJhZGRIYW5kbGUiLCJhdHRycyIsImhhbmRsZXIiLCJhdHRySGFuZGxlIiwic2libGluZ0NoZWNrIiwiY3VyIiwic291cmNlSW5kZXgiLCJuZXh0U2libGluZyIsImNyZWF0ZUlucHV0UHNldWRvIiwiY3JlYXRlQnV0dG9uUHNldWRvIiwiY3JlYXRlRGlzYWJsZWRQc2V1ZG8iLCJpc0Rpc2FibGVkIiwiY3JlYXRlUG9zaXRpb25hbFBzZXVkbyIsImFyZ3VtZW50IiwibWF0Y2hJbmRleGVzIiwiZG9jdW1lbnRFbGVtZW50IiwiaGFzQ29tcGFyZSIsInN1YldpbmRvdyIsImRlZmF1bHRWaWV3IiwidG9wIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwiY3JlYXRlQ29tbWVudCIsImdldEJ5SWQiLCJnZXRFbGVtZW50c0J5TmFtZSIsImF0dHJJZCIsImZpbmQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwidGFnIiwibWF0Y2hlc1NlbGVjdG9yIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibW96TWF0Y2hlc1NlbGVjdG9yIiwib01hdGNoZXNTZWxlY3RvciIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwiZGlzY29ubmVjdGVkTWF0Y2giLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsImFkb3duIiwiYnVwIiwiY29tcGFyZSIsInNvcnREZXRhY2hlZCIsImF1cCIsImFwIiwiYnAiLCJ1bnNoaWZ0IiwiZXhwciIsImVsZW1lbnRzIiwiYXR0ciIsInNwZWNpZmllZCIsImVzY2FwZSIsInNlbCIsInVuaXF1ZVNvcnQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsImZpcnN0Q2hpbGQiLCJub2RlVmFsdWUiLCJzZWxlY3RvcnMiLCJjcmVhdGVQc2V1ZG8iLCJyZWxhdGl2ZSIsIj4iLCIgIiwiKyIsIn4iLCJwcmVGaWx0ZXIiLCJleGNlc3MiLCJ1bnF1b3RlZCIsIm5vZGVOYW1lU2VsZWN0b3IiLCJwYXR0ZXJuIiwib3BlcmF0b3IiLCJjaGVjayIsIndoYXQiLCJzaW1wbGUiLCJmb3J3YXJkIiwib2ZUeXBlIiwieG1sIiwidW5pcXVlQ2FjaGUiLCJvdXRlckNhY2hlIiwibm9kZUluZGV4IiwicGFyZW50IiwidXNlQ2FjaGUiLCJsYXN0Q2hpbGQiLCJ1bmlxdWVJRCIsInBzZXVkbyIsInNldEZpbHRlcnMiLCJpZHgiLCJub3QiLCJ1bm1hdGNoZWQiLCJoYXMiLCJpbm5lclRleHQiLCJlbGVtTGFuZyIsImhhc2giLCJyb290IiwiZm9jdXMiLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJ0YWJJbmRleCIsImVuYWJsZWQiLCJzZWxlY3RlZCIsInNlbGVjdGVkSW5kZXgiLCJoZWFkZXIiLCJldmVuIiwib2RkIiwibHQiLCJndCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxlIiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiY29tYmluYXRvciIsInNraXAiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0NhY2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBvc3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwicHJlTWFwIiwicG9zdE1hcCIsInByZWV4aXN0aW5nIiwiY29udGV4dHMiLCJtdWx0aXBsZUNvbnRleHRzIiwibWF0Y2hlckluIiwibWF0Y2hlck91dCIsIm1hdGNoZXJGcm9tVG9rZW5zIiwiY2hlY2tDb250ZXh0IiwibGVhZGluZ1JlbGF0aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsImZpbHRlcnMiLCJwYXJzZU9ubHkiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJzZXRNYXRjaGVycyIsImVsZW1lbnRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwibWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzIiwiY29tcGlsZWQiLCJkZWZhdWx0VmFsdWUiLCJ1bmlxdWUiLCJpc1hNTERvYyIsImVzY2FwZVNlbGVjdG9yIiwidW50aWwiLCJ0cnVuY2F0ZSIsImlzIiwic2libGluZ3MiLCJuIiwicm5lZWRzQ29udGV4dCIsInJzaW5nbGVUYWciLCJ3aW5ub3ciLCJxdWFsaWZpZXIiLCJzZWxmIiwicm9vdGpRdWVyeSIsInBhcnNlSFRNTCIsInJlYWR5IiwicnBhcmVudHNwcmV2IiwiZ3VhcmFudGVlZFVuaXF1ZSIsImNoaWxkcmVuIiwiY29udGVudHMiLCJwcmV2Iiwic2libGluZyIsInRhcmdldHMiLCJjbG9zZXN0IiwicHJldkFsbCIsImFkZEJhY2siLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZVbnRpbCIsImNvbnRlbnREb2N1bWVudCIsImNvbnRlbnQiLCJyZXZlcnNlIiwicm5vdGh0bWx3aGl0ZSIsIklkZW50aXR5IiwidiIsIlRocm93ZXIiLCJleCIsImFkb3B0VmFsdWUiLCJyZXNvbHZlIiwicmVqZWN0Iiwibm9WYWx1ZSIsInByb21pc2UiLCJ0aGVuIiwiQ2FsbGJhY2tzIiwib2JqZWN0IiwiZmxhZyIsImNyZWF0ZU9wdGlvbnMiLCJmaXJpbmciLCJtZW1vcnkiLCJmaXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5kZXgiLCJmaXJlIiwib25jZSIsInN0b3BPbkZhbHNlIiwiZGlzYWJsZSIsImxvY2siLCJmaXJlV2l0aCIsIkRlZmVycmVkIiwidHVwbGVzIiwiYWx3YXlzIiwiZGVmZXJyZWQiLCJjYXRjaCIsInBpcGUiLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJtYXhEZXB0aCIsImRlcHRoIiwic3BlY2lhbCIsIm1pZ2h0VGhyb3ciLCJUeXBlRXJyb3IiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9jZXNzIiwiZXhjZXB0aW9uSG9vayIsInN0YWNrVHJhY2UiLCJyZWplY3RXaXRoIiwiZ2V0U3RhY2tIb29rIiwic2V0VGltZW91dCIsInN0YXRlU3RyaW5nIiwid2hlbiIsInNpbmdsZVZhbHVlIiwicmVtYWluaW5nIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsIm1hc3RlciIsInVwZGF0ZUZ1bmMiLCJyZXJyb3JOYW1lcyIsInJlYWR5RXhjZXB0aW9uIiwicmVhZHlMaXN0IiwiY29tcGxldGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlYWR5V2FpdCIsIndhaXQiLCJkb1Njcm9sbCIsImFjY2VzcyIsImNoYWluYWJsZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsInJtc1ByZWZpeCIsInJkYXNoQWxwaGEiLCJmY2FtZWxDYXNlIiwiYWxsIiwibGV0dGVyIiwiY2FtZWxDYXNlIiwiYWNjZXB0RGF0YSIsIm93bmVyIiwiRGF0YSIsInVpZCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiaGFzRGF0YSIsImRhdGFQcml2IiwiZGF0YVVzZXIiLCJyYnJhY2UiLCJybXVsdGlEYXNoIiwiZGF0YUF0dHIiLCJwYXJzZSIsImdldERhdGEiLCJyZW1vdmVEYXRhIiwiX3JlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJfcXVldWVIb29rcyIsImNsZWFyUXVldWUiLCJjb3VudCIsInBudW0iLCJyY3NzTnVtIiwiY3NzRXhwYW5kIiwiaXNIaWRkZW5XaXRoaW5UcmVlIiwic3R5bGUiLCJkaXNwbGF5IiwiY3NzIiwic3dhcCIsIm9sZCIsImFkanVzdENTUyIsInZhbHVlUGFydHMiLCJ0d2VlbiIsImFkanVzdGVkIiwic2NhbGUiLCJtYXhJdGVyYXRpb25zIiwiY3VycmVudFZhbHVlIiwiaW5pdGlhbCIsImNzc051bWJlciIsImluaXRpYWxJblVuaXQiLCJkZWZhdWx0RGlzcGxheU1hcCIsImdldERlZmF1bHREaXNwbGF5IiwiYm9keSIsInNob3dIaWRlIiwic2hvdyIsImhpZGUiLCJ0b2dnbGUiLCJyY2hlY2thYmxlVHlwZSIsInJ0YWdOYW1lIiwicnNjcmlwdFR5cGUiLCJ3cmFwTWFwIiwib3B0aW9uIiwidGhlYWQiLCJjb2wiLCJ0ciIsInRkIiwiX2RlZmF1bHQiLCJnZXRBbGwiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMiLCJvcHRncm91cCIsInRib2R5IiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImRpdiIsInJodG1sIiwiYnVpbGRGcmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJpZ25vcmVkIiwid3JhcCIsImZyYWdtZW50IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsIm5vZGVzIiwiaHRtbFByZWZpbHRlciIsImNyZWF0ZVRleHROb2RlIiwiY2hlY2tDbG9uZSIsImNsb25lTm9kZSIsIm5vQ2xvbmVDaGVja2VkIiwicmtleUV2ZW50Iiwicm1vdXNlRXZlbnQiLCJydHlwZW5hbWVzcGFjZSIsInJldHVyblRydWUiLCJyZXR1cm5GYWxzZSIsInNhZmVBY3RpdmVFbGVtZW50IiwiZXJyIiwib24iLCJ0eXBlcyIsIm9uZSIsIm9yaWdGbiIsImV2ZW50Iiwib2ZmIiwiaGFuZGxlT2JqSW4iLCJldmVudEhhbmRsZSIsImV2ZW50cyIsImhhbmRsZU9iaiIsImhhbmRsZXJzIiwibmFtZXNwYWNlcyIsIm9yaWdUeXBlIiwiZWxlbURhdGEiLCJoYW5kbGUiLCJ0cmlnZ2VyZWQiLCJkaXNwYXRjaCIsImRlbGVnYXRlVHlwZSIsImJpbmRUeXBlIiwibmFtZXNwYWNlIiwiZGVsZWdhdGVDb3VudCIsInNldHVwIiwibWFwcGVkVHlwZXMiLCJvcmlnQ291bnQiLCJ0ZWFyZG93biIsInJlbW92ZUV2ZW50IiwibmF0aXZlRXZlbnQiLCJoYW5kbGVyUXVldWUiLCJmaXgiLCJkZWxlZ2F0ZVRhcmdldCIsInByZURpc3BhdGNoIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJjdXJyZW50VGFyZ2V0IiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJybmFtZXNwYWNlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJwb3N0RGlzcGF0Y2giLCJtYXRjaGVkSGFuZGxlcnMiLCJtYXRjaGVkU2VsZWN0b3JzIiwiYWRkUHJvcCIsImhvb2siLCJFdmVudCIsImVudW1lcmFibGUiLCJvcmlnaW5hbEV2ZW50Iiwid3JpdGFibGUiLCJsb2FkIiwibm9CdWJibGUiLCJ0cmlnZ2VyIiwiYmx1ciIsImNsaWNrIiwiYmVmb3JldW5sb2FkIiwicmV0dXJuVmFsdWUiLCJwcm9wcyIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZWxhdGVkVGFyZ2V0IiwidGltZVN0YW1wIiwiaXNTaW11bGF0ZWQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJhbHRLZXkiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImNoYW5nZWRUb3VjaGVzIiwiY3RybEtleSIsImRldGFpbCIsImV2ZW50UGhhc2UiLCJtZXRhS2V5IiwicGFnZVgiLCJwYWdlWSIsInNoaWZ0S2V5IiwidmlldyIsImNoYXIiLCJjaGFyQ29kZSIsImtleUNvZGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm9mZnNldFgiLCJvZmZzZXRZIiwicG9pbnRlcklkIiwicG9pbnRlclR5cGUiLCJzY3JlZW5YIiwic2NyZWVuWSIsInRhcmdldFRvdWNoZXMiLCJ0b0VsZW1lbnQiLCJ0b3VjaGVzIiwid2hpY2giLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsIm9yaWciLCJyZWxhdGVkIiwicnhodG1sVGFnIiwicm5vSW5uZXJodG1sIiwicmNoZWNrZWQiLCJyY2xlYW5TY3JpcHQiLCJtYW5pcHVsYXRpb25UYXJnZXQiLCJkaXNhYmxlU2NyaXB0IiwicmVzdG9yZVNjcmlwdCIsImNsb25lQ29weUV2ZW50IiwiZGVzdCIsInBkYXRhT2xkIiwicGRhdGFDdXIiLCJ1ZGF0YU9sZCIsInVkYXRhQ3VyIiwiZG9tTWFuaXAiLCJjb2xsZWN0aW9uIiwiaGFzU2NyaXB0cyIsImlOb0Nsb25lIiwidmFsdWVJc0Z1bmN0aW9uIiwiaHRtbCIsIl9ldmFsVXJsIiwia2VlcERhdGEiLCJjbGVhbkRhdGEiLCJkYXRhQW5kRXZlbnRzIiwiZGVlcERhdGFBbmRFdmVudHMiLCJzcmNFbGVtZW50cyIsImRlc3RFbGVtZW50cyIsImluUGFnZSIsImRldGFjaCIsImFwcGVuZCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJhZnRlciIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiYXBwZW5kVG8iLCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJvcmlnaW5hbCIsImluc2VydCIsInJudW1ub25weCIsImdldFN0eWxlcyIsIm9wZW5lciIsImdldENvbXB1dGVkU3R5bGUiLCJyYm94U3R5bGUiLCJjdXJDU1MiLCJjb21wdXRlZCIsIndpZHRoIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImdldFByb3BlcnR5VmFsdWUiLCJwaXhlbEJveFN0eWxlcyIsImFkZEdldEhvb2tJZiIsImNvbmRpdGlvbkZuIiwiaG9va0ZuIiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJjb250YWluZXIiLCJjc3NUZXh0IiwiZGl2U3R5bGUiLCJwaXhlbFBvc2l0aW9uVmFsIiwicmVsaWFibGVNYXJnaW5MZWZ0VmFsIiwicm91bmRQaXhlbE1lYXN1cmVzIiwibWFyZ2luTGVmdCIsInJpZ2h0IiwicGl4ZWxCb3hTdHlsZXNWYWwiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsInBvc2l0aW9uIiwic2Nyb2xsYm94U2l6ZVZhbCIsIm9mZnNldFdpZHRoIiwibWVhc3VyZSIsImJhY2tncm91bmRDbGlwIiwiY2xlYXJDbG9uZVN0eWxlIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbFBvc2l0aW9uIiwicmVsaWFibGVNYXJnaW5MZWZ0Iiwic2Nyb2xsYm94U2l6ZSIsInJkaXNwbGF5c3dhcCIsInJjdXN0b21Qcm9wIiwiY3NzU2hvdyIsInZpc2liaWxpdHkiLCJjc3NOb3JtYWxUcmFuc2Zvcm0iLCJsZXR0ZXJTcGFjaW5nIiwiZm9udFdlaWdodCIsImNzc1ByZWZpeGVzIiwiZW1wdHlTdHlsZSIsImZpbmFsUHJvcE5hbWUiLCJjc3NQcm9wcyIsImNhcE5hbWUiLCJ2ZW5kb3JQcm9wTmFtZSIsInNldFBvc2l0aXZlTnVtYmVyIiwiYm94TW9kZWxBZGp1c3RtZW50IiwiZGltZW5zaW9uIiwiYm94IiwiaXNCb3JkZXJCb3giLCJzdHlsZXMiLCJjb21wdXRlZFZhbCIsImV4dHJhIiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNCb3JkZXJCb3giLCJUd2VlbiIsImVhc2luZyIsImNzc0hvb2tzIiwib3BhY2l0eSIsImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhHcm93IiwiZmxleFNocmluayIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJ6b29tIiwib3JpZ05hbWUiLCJpc0N1c3RvbVByb3AiLCJzZXRQcm9wZXJ0eSIsImdldENsaWVudFJlY3RzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3JkZXIiLCJleHBhbmQiLCJleHBhbmRlZCIsInByb3BIb29rcyIsInJ1biIsInBlcmNlbnQiLCJlYXNlZCIsInN0ZXAiLCJmeCIsInNjcm9sbFRvcCIsInNjcm9sbExlZnQiLCJsaW5lYXIiLCJwIiwic3dpbmciLCJjb3MiLCJQSSIsImZ4Tm93IiwiaW5Qcm9ncmVzcyIsInJmeHR5cGVzIiwicnJ1biIsInNjaGVkdWxlIiwiaGlkZGVuIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaW50ZXJ2YWwiLCJ0aWNrIiwiY3JlYXRlRnhOb3ciLCJnZW5GeCIsImluY2x1ZGVXaWR0aCIsImhlaWdodCIsImNyZWF0ZVR3ZWVuIiwiYW5pbWF0aW9uIiwiQW5pbWF0aW9uIiwidHdlZW5lcnMiLCJwcm9wZXJ0aWVzIiwic3RvcHBlZCIsInByZWZpbHRlcnMiLCJjdXJyZW50VGltZSIsInN0YXJ0VGltZSIsInR3ZWVucyIsIm9wdHMiLCJzcGVjaWFsRWFzaW5nIiwib3JpZ2luYWxQcm9wZXJ0aWVzIiwib3JpZ2luYWxPcHRpb25zIiwiZ290b0VuZCIsInByb3BGaWx0ZXIiLCJiaW5kIiwiY29tcGxldGUiLCJ0aW1lciIsImFuaW0iLCIqIiwidHdlZW5lciIsIm9sZGZpcmUiLCJwcm9wVHdlZW4iLCJyZXN0b3JlRGlzcGxheSIsImlzQm94IiwiZGF0YVNob3ciLCJ1bnF1ZXVlZCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsInByZWZpbHRlciIsInNwZWVkIiwib3B0Iiwic3BlZWRzIiwiZmFkZVRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwiZmluaXNoIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVwIiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsInNsb3ciLCJmYXN0IiwiZGVsYXkiLCJjbGVhclRpbWVvdXQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJyYWRpb1ZhbHVlIiwiYm9vbEhvb2siLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJhdHRyTmFtZXMiLCJsb3dlcmNhc2VOYW1lIiwicmZvY3VzYWJsZSIsInJjbGlja2FibGUiLCJzdHJpcEFuZENvbGxhcHNlIiwiZ2V0Q2xhc3MiLCJjbGFzc2VzVG9BcnJheSIsInJlbW92ZVByb3AiLCJwcm9wRml4IiwidGFiaW5kZXgiLCJmb3IiLCJjbGFzcyIsImFkZENsYXNzIiwiY2xhc3NlcyIsImN1clZhbHVlIiwiY2xhenoiLCJmaW5hbFZhbHVlIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImlzVmFsaWRWYWx1ZSIsImNsYXNzTmFtZXMiLCJoYXNDbGFzcyIsInJyZXR1cm4iLCJ2YWxIb29rcyIsIm9wdGlvblNldCIsImZvY3VzaW4iLCJyZm9jdXNNb3JwaCIsInN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrIiwib25seUhhbmRsZXJzIiwiYnViYmxlVHlwZSIsIm9udHlwZSIsImxhc3RFbGVtZW50IiwiZXZlbnRQYXRoIiwiaXNUcmlnZ2VyIiwicGFyZW50V2luZG93Iiwic2ltdWxhdGUiLCJ0cmlnZ2VySGFuZGxlciIsImF0dGFjaGVzIiwibm9uY2UiLCJycXVlcnkiLCJwYXJzZVhNTCIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsInJicmFja2V0IiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJidWlsZFBhcmFtcyIsInRyYWRpdGlvbmFsIiwicGFyYW0iLCJ2YWx1ZU9yRnVuY3Rpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVBcnJheSIsInIyMCIsInJoYXNoIiwicmFudGlDYWNoZSIsInJoZWFkZXJzIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInRyYW5zcG9ydHMiLCJhbGxUeXBlcyIsIm9yaWdpbkFuY2hvciIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImRhdGFUeXBlcyIsImluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzIiwianFYSFIiLCJpbnNwZWN0ZWQiLCJzZWVraW5nVHJhbnNwb3J0IiwicHJlZmlsdGVyT3JGYWN0b3J5IiwiZGF0YVR5cGVPclRyYW5zcG9ydCIsImFqYXhFeHRlbmQiLCJmbGF0T3B0aW9ucyIsImFqYXhTZXR0aW5ncyIsImFjdGl2ZSIsImxhc3RNb2RpZmllZCIsImV0YWciLCJwcm90b2NvbCIsInByb2Nlc3NEYXRhIiwiYXN5bmMiLCJhY2NlcHRzIiwianNvbiIsInJlc3BvbnNlRmllbGRzIiwiY29udmVydGVycyIsIiogdGV4dCIsInRleHQgaHRtbCIsInRleHQganNvbiIsInRleHQgeG1sIiwiYWpheFNldHVwIiwic2V0dGluZ3MiLCJhamF4UHJlZmlsdGVyIiwiYWpheFRyYW5zcG9ydCIsInRyYW5zcG9ydCIsImNhY2hlVVJMIiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwicmVzcG9uc2VIZWFkZXJzIiwidGltZW91dFRpbWVyIiwidXJsQW5jaG9yIiwiZmlyZUdsb2JhbHMiLCJ1bmNhY2hlZCIsImNhbGxiYWNrQ29udGV4dCIsImdsb2JhbEV2ZW50Q29udGV4dCIsImNvbXBsZXRlRGVmZXJyZWQiLCJzdGF0dXNDb2RlIiwicmVxdWVzdEhlYWRlcnMiLCJyZXF1ZXN0SGVhZGVyc05hbWVzIiwic3RyQWJvcnQiLCJnZXRSZXNwb25zZUhlYWRlciIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJvdmVycmlkZU1pbWVUeXBlIiwibWltZVR5cGUiLCJzdGF0dXMiLCJhYm9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJjcm9zc0RvbWFpbiIsImhvc3QiLCJoYXNDb250ZW50IiwiaWZNb2RpZmllZCIsImJlZm9yZVNlbmQiLCJzdWNjZXNzIiwibmF0aXZlU3RhdHVzVGV4dCIsInJlc3BvbnNlcyIsImlzU3VjY2VzcyIsInJlc3BvbnNlIiwibW9kaWZpZWQiLCJjdCIsImZpbmFsRGF0YVR5cGUiLCJmaXJzdERhdGFUeXBlIiwiYWpheEhhbmRsZVJlc3BvbnNlcyIsImNvbnYyIiwiY3VycmVudCIsImNvbnYiLCJkYXRhRmlsdGVyIiwidGhyb3dzIiwiYWpheENvbnZlcnQiLCJnZXRKU09OIiwid3JhcEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3JhcElubmVyIiwiaHRtbElzRnVuY3Rpb24iLCJ1bndyYXAiLCJ2aXNpYmxlIiwib2Zmc2V0SGVpZ2h0IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJ4aHJTdWNjZXNzU3RhdHVzIiwiMCIsIjEyMjMiLCJ4aHJTdXBwb3J0ZWQiLCJjb3JzIiwiZXJyb3JDYWxsYmFjayIsIm9wZW4iLCJ1c2VybmFtZSIsInhockZpZWxkcyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib250aW1lb3V0IiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2VUZXh0IiwiYmluYXJ5IiwidGV4dCBzY3JpcHQiLCJjaGFyc2V0Iiwic2NyaXB0Q2hhcnNldCIsImV2dCIsIm9sZENhbGxiYWNrcyIsInJqc29ucCIsImpzb25wIiwianNvbnBDYWxsYmFjayIsIm9yaWdpbmFsU2V0dGluZ3MiLCJjYWxsYmFja05hbWUiLCJvdmVyd3JpdHRlbiIsInJlc3BvbnNlQ29udGFpbmVyIiwianNvblByb3AiLCJjcmVhdGVIVE1MRG9jdW1lbnQiLCJpbXBsZW1lbnRhdGlvbiIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwicGFyYW1zIiwiYW5pbWF0ZWQiLCJzZXRPZmZzZXQiLCJjdXJQb3NpdGlvbiIsImN1ckxlZnQiLCJjdXJDU1NUb3AiLCJjdXJUb3AiLCJjdXJPZmZzZXQiLCJjdXJDU1NMZWZ0IiwiY3VyRWxlbSIsInVzaW5nIiwicmVjdCIsIndpbiIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwidW5iaW5kIiwiZGVsZWdhdGUiLCJ1bmRlbGVnYXRlIiwicHJveHkiLCJob2xkUmVhZHkiLCJob2xkIiwicGFyc2VKU09OIiwiaXNOdW1lcmljIiwiX2pRdWVyeSIsIl8kIiwibm9Db25mbGljdCIsImxhc3RUaW1lIiwidmVuZG9ycyIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiY3VyclRpbWUiLCJ0aW1lVG9DYWxsIiwiX3NldHRpbmdzIiwiY3Vyc29yQW5pbWF0aW9uUGF1c2VkIiwib3BhY2l0eUluY3JlYXNpbmciLCJjdXJyZW50T3BhY2l0eSIsImRlbGF5ZWRRdWUiLCJkZWxheUl0ZW1zQ291bnQiLCJldmVudFF1ZSIsImNhbGxlZEV2ZW50cyIsImV2ZW50UnVubmluZyIsImRlbGF5RXhlY3V0aW9uIiwiZnBzIiwidHlwaW5nRnJhbWVDb3VudCIsInN0cmluZ1RvVHlwZUhUTUxBcnJheSIsImN1cnJlbnRUeXBlZENoYXJhY3RlcnMiLCJ0eXBpbmciLCJ1c2VkSURzIiwiY2hhckFtb3VudFRvRGVsZXRlIiwidXNlck9wdGlvbnMiLCJldmVudExvb3BSZXJ1biIsImRlZmF1bHRfb3B0aW9ucyIsInN0cmluZ3MiLCJjdXJzb3JDbGFzc05hbWUiLCJjdXJzb3IiLCJhbmltYXRlQ3Vyc29yIiwiYmxpbmtTcGVlZCIsImNoYXJTcGFuQ2xhc3NOYW1lIiwid3JhcHBlckNsYXNzTmFtZSIsImF1dG9TdGFydCIsIl9zZXR1cE9wdGlvbnMiLCJfc2V0dXBUeXB3cml0ZXJXcmFwcGVyIiwiX3N0YXJ0Q3Vyc29yQW5pbWF0aW9uIiwidHlwZU91dEFsbFN0cmluZ3MiLCJUeXBld3JpdGVyUHJvdG90eXBlIiwiX2FkZFRvRXZlbnRRdWUiLCJfc3RvcEV2ZW50TG9vcCIsIl9zdGFydEV2ZW50TG9vcCIsInJlcnVuIiwiX3JlcnVuQ2FsbGVkRXZlbnRzIiwic3RyaW5nX2NoYXJzIiwiX2dldENoYXJhY3RlcnMiLCJfdHlwZUNoYXJhY3RlcnMiLCJkZWxldGVBbGwiLCJfZGVsZXRlQ2hhcnMiLCJhbW91bnQiLCJfcGF1c2VGb3IiLCJjaGFyYWN0ZXJzX2FycmF5IiwiX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkiLCJfcmFuZG9tSW50ZWdlciIsIm5ld19zZXR0aW5ncyIsIl9jaGFuZ2VTZXR0aW5ncyIsImNoYW5nZUJsaW5rU3BlZWQiLCJuZXdfc3BlZWQiLCJjaGFuZ2VUeXBpbmdTcGVlZCIsImNoYW5nZURlbGV0ZVNwZWVkIiwiX3Jlc2V0RXZlbnRMb29wIiwiX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiIsIl9kZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZSIsImxvZyIsImRlbGV0ZV9zcGVlZCIsInR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lIiwiY3VycmVudF90eXBlZF9jaGFyX2lkcyIsImNoYXJfYW1vdW50X3RvX2RlbGV0ZSIsImxhc3RfdHlwZWRfY2hhcl9pbmRleCIsImdldF9sYXN0X3R5cGVkX2NoYXIiLCJjaGFyX3RvX2RlbGV0ZV9lbCIsIm5ld19vcHRpb25zIiwibWVyZ2VkX29wdGlvbnMiLCJhdHRybmFtZSIsImZpcnN0X2V2ZW50IiwiX2V2ZW50UXVlQW5pbWF0aW9uIiwiZXZlbnRfbmFtZSIsInR5cGV3cml0ZXJfd3JhcHBlciIsIl9jb252ZXJ0Q2hhcnNUb0hUTUwiLCJfdHlwaW5nQW5pbWF0aW9uIiwiX3R5cGluZ0FuaW1hdGlvbkZyYW1lIiwidG90YWxfaXRlbXMiLCJ0eXBpbmdfc3BlZWQiLCJpdGVtX3RvX3R5cGUiLCJjaGFycyIsImNoYXJzX2h0bWxfd3JhcF9hcnJheSIsImNoYXJfY2xhc3NfbmFtZSIsImNoYXJzX2FycmF5IiwiY2hhcl9lbGVtZW50IiwiY2hhcl9pZCIsIl9nZW5lcmF0ZVVuaXF1ZUlEIiwic3RyaW5nc19hcnJheV9jaGVjayIsInN0cmluZ3Nfc3RyaW5nX2NoZWNrIiwic3RyaW5nc19jaGFyc19hcnJheSIsIl9jdXJzb3JBbmltYXRpb25GcmFtZSIsIm9wYWNpdHlfYW1vdW50IiwiY3Vyc29yX2VsIiwiX2N1cnNvckFuaW1hdGlvbiIsIl9hcHBlbmRUZXh0IiwiaXRlbXMiLCJjdXJzb3JfY2xhc3NfbmFtZSIsImN1cnNvcl9lbGVtZW50IiwiX3BhdXNlQ3Vyc29yQW5pbWF0aW9uIiwiX3Jlc3RhcnRDdXJzb3JBbmltYXRpb24iLCJfcmFuZG9tSUQiLCJwb3NzaWJsZSIsInRlbXBfaWQiLCJjYWNoZWRHdWVzcyIsInpvbmVzIiwibGlua3MiLCJndWVzc2VzIiwibW9tZW50VmVyc2lvbiIsIm1ham9yIiwibWlub3IiLCJjaGFyQ29kZVRvSW50IiwidW5wYWNrQmFzZTYwIiwid2hvbGUiLCJmcmFjdGlvbmFsIiwibXVsdGlwbGllciIsImFycmF5VG9JbnQiLCJtYXBJbmRpY2VzIiwiaW5kaWNlcyIsInVucGFjayIsIm9mZnNldHMiLCJ1bnRpbHMiLCJJbmZpbml0eSIsImludFRvVW50aWwiLCJhYmJycyIsInBvcHVsYXRpb24iLCJab25lIiwicGFja2VkU3RyaW5nIiwiX3NldCIsIk9mZnNldEF0IiwiYXQiLCJ0aW1lU3RyaW5nIiwidG9UaW1lU3RyaW5nIiwiWm9uZVNjb3JlIiwib2Zmc2V0U2NvcmUiLCJhYmJyU2NvcmUiLCJmaW5kQ2hhbmdlIiwibG93IiwibWlkIiwic29ydFpvbmVTY29yZXMiLCJhZGRUb0d1ZXNzZXMiLCJndWVzc2VzRm9yVXNlck9mZnNldHMiLCJndWVzc2VzT2Zmc2V0Iiwib2Zmc2V0c0xlbmd0aCIsImZpbHRlcmVkR3Vlc3NlcyIsInJlYnVpbGRHdWVzcyIsImludGxOYW1lIiwiSW50bCIsIkRhdGVUaW1lRm9ybWF0IiwicmVzb2x2ZWRPcHRpb25zIiwidGltZVpvbmUiLCJub3JtYWxpemVOYW1lIiwibG9nRXJyb3IiLCJ6b25lU2NvcmUiLCJjaGFuZ2UiLCJzdGFydFllYXIiLCJ1c2VyT2Zmc2V0cyIsInpvbmVTY29yZXMiLCJnZXRab25lIiwic2NvcmVPZmZzZXRBdCIsImFkZFpvbmUiLCJwYWNrZWQiLCJub3JtYWxpemVkIiwiY2FsbGVyIiwibGluayIsImFkZExpbmsiLCJub3JtYWwwIiwibm9ybWFsMSIsImxvYWREYXRhIiwidHoiLCJkYXRhVmVyc2lvbiIsIm5lZWRzT2Zmc2V0IiwiaXNVbml4VGltZXN0YW1wIiwidW5wYWNrZWQiLCJfaW5kZXgiLCJ0aW1lc3RhbXAiLCJvZmZzZXROZXh0Iiwib2Zmc2V0UHJldiIsIm1vdmVBbWJpZ3VvdXNGb3J3YXJkIiwibW92ZUludmFsaWRGb3J3YXJkIiwib2Zmc2V0QXQiLCJfem9uZXMiLCJfbGlua3MiLCJfbmFtZXMiLCJ6b25lRXhpc3RzIiwiZGlkU2hvd0Vycm9yIiwiZ3Vlc3MiLCJpZ25vcmVDYWNoZSIsImFiYnJXcmFwIiwiX3oiLCJkZWZhdWx0Wm9uZSIsInNldERlZmF1bHQiLCJoeXBoZW5hdGVDYWNoZSIsImh5cGhlbmF0ZVJlIiwiaHlwaGVuYXRlIiwic3RyIiwiY2FtZWxpemVSZSIsImNhbWVsaXplIiwidG9VcHBlciIsInVjZmlyc3QiLCJzdHJQcm90b3R5cGUiLCJzdGFydHNXaXRoRm4iLCJzdGFydHNXaXRoIiwic2VhcmNoIiwibGFzdEluZGV4T2YiLCJlbmRzV2l0aEZuIiwiZW5kc1dpdGgiLCJpbmNsdWRlc0ZuIiwiaW5jbHVkZXNTdHIiLCJpbmNsdWRlcyIsImluY2x1ZGVzQXJyYXkiLCJpc1N0cmluZyIsImlzRG9jdW1lbnQiLCJpc0pRdWVyeSIsImlzTm9kZSIsIk5vZGUiLCJpc05vZGVDb2xsZWN0aW9uIiwiTm9kZUxpc3QiLCJIVE1MQ29sbGVjdGlvbiIsImlzQm9vbGVhbiIsInRvQm9vbGVhbiIsInRvTnVtYmVyIiwiTnVtYmVyIiwidG9GbG9hdCIsInRvTm9kZSIsImFycmF5UHJvdG8iLCJ0b05vZGVzIiwiQm9vbGVhbiIsInRvTGlzdCIsInRvTXMiLCJhc3NpZ24iLCJjYiIsInNvcnRCeSIsImNsYW1wIiwiaW50ZXJzZWN0UmVjdCIsInIxIiwicjIiLCJib3R0b20iLCJwb2ludEluUmVjdCIsInBvaW50IiwiRGltZW5zaW9ucyIsInJhdGlvIiwiZGltZW5zaW9ucyIsImFQcm9wIiwiY29udGFpbiIsIm1heERpbWVuc2lvbnMiLCJ0aGlzJDEiLCJjb3ZlciIsImhhc0F0dHIiLCJoYXNBdHRyaWJ1dGUiLCJmaWx0ZXJBdHRyIiwiYXR0cmlidXRlIiwicmVwbGFjZW1lbnQiLCJxdWVyeSIsImlzQ29udGV4dFNlbGVjdG9yIiwicXVlcnlBbGwiLCJmaW5kQWxsIiwiX3F1ZXJ5IiwicXVlcnlGbiIsInJlbW92ZXMiLCJjb250ZXh0U2FuaXRpemVSZSIsImN0eCIsInNlbGVjdG9ycyQxIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsImNvbnRleHRTZWxlY3RvclJlIiwiZWxQcm90byIsIkVsZW1lbnQiLCJtYXRjaGVzRm4iLCJjbG9zZXN0Rm4iLCJhbmNlc3RvciIsImVzY2FwZUZuIiwiQ1NTIiwidm9pZEVsZW1lbnRzIiwiYXJlYSIsImJyIiwiZW1iZWQiLCJociIsImltZyIsImtleWdlbiIsIm1lbnVpdGVtIiwibWV0YSIsInRyYWNrIiwid2JyIiwiaXNWb2lkRWxlbWVudCIsInRhZ05hbWUiLCJpc1Zpc2libGUiLCJzZWxJbnB1dCIsImlzSW5wdXQiLCJ3aXRoaW4iLCJyZWYiLCJnZXRBcmdzIiwibGlzdGVuZXIiLCJ1c2VDYXB0dXJlIiwidG9FdmVudFRhcmdldCIsImNvbmRpdGlvbiIsInRvRXZlbnRUYXJnZXRzIiwicmVkdWNlIiwibm90Q2FuY2VsZWQiLCJkaXNwYXRjaEV2ZW50IiwiY3JlYXRlRXZlbnQiLCJpbml0Q3VzdG9tRXZlbnQiLCJpc0V2ZW50VGFyZ2V0IiwiRXZlbnRUYXJnZXQiLCJwcmV2ZW50Q2xpY2siLCJQcm9taXNlJDEiLCJQcm9taXNlIiwiUHJvbWlzZUZuIiwiUEVORElORyIsInNldEltbWVkaWF0ZSIsImV4ZWN1dG9yIiwiciIsIml0ZXJhYmxlIiwicmVzb2x2ZXIiLCJyYWNlIiwiZW52IiwiZ2V0SW1hZ2UiLCJzcmNzZXQiLCJzaXplcyIsIkltYWdlIiwidW5iaW5kMSIsInVuYmluZDIiLCJnZXRJbmRleCIsImZpbml0ZSIsImhhc0NoaWxkTm9kZXMiLCJpbnNlcnROb2RlcyIsImNhbGxlZCIsIm9uUmVzb2x2ZWQiLCJmcmFnbWVudFJlIiwic2luZ2xlVGFnUmUiLCJpbnNlcnRBZGphY2VudEhUTUwiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJhcHBseSQxIiwicmVtb3ZlQ2xhc3NlcyIsImNscyIsInJlcGxhY2VDbGFzcyIsImZvcmNlIiwiZ2V0QXJncyQxIiwic3VwcG9ydHMiLCJGb3JjZSIsIk11bHRpcGxlIiwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsImNvbHVtbi1jb3VudCIsImZpbGwtb3BhY2l0eSIsImZsZXgtZ3JvdyIsImZsZXgtc2hyaW5rIiwiZm9udC13ZWlnaHQiLCJsaW5lLWhlaWdodCIsInotaW5kZXgiLCJwcm9wZXJ0eSIsInByb3BOYW1lIiwiZ2V0U3R5bGUiLCJyZW1vdmVQcm9wZXJ0eSIsInBzZXVkb0VsdCIsInZhcnMiLCJnZXRDc3NWYXIiLCJwcmVmaXhlZE5hbWUiLCJ0cmFuc2l0aW9uIiwidGltaW5nIiwidHJhbnNpdGlvbi1wcm9wZXJ0eSIsInRyYW5zaXRpb24tZHVyYXRpb24iLCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsIlRyYW5zaXRpb24iLCJjYW5jZWwiLCJhbmltYXRpb25QcmVmaXgiLCJjbHNDYW5jZWxBbmltYXRpb24iLCJvcmlnaW4iLCJhcmd1bWVudHMkMSIsImhhc1Jlc2V0IiwiaW4iLCJpc0h0bWwiLCIkJCIsImRpcnMiLCJwb3NpdGlvbkF0IiwiZWxBdHRhY2giLCJ0YXJnZXRBdHRhY2giLCJlbE9mZnNldCIsInRhcmdldE9mZnNldCIsImZsaXAiLCJib3VuZGFyeSIsImdldFBvcyIsImZsaXBwZWQiLCJkaW0iLCJnZXREaW1lbnNpb25zIiwidGFyZ2V0RGltIiwibW92ZVRvIiwiZ2V0T2Zmc2V0cyIsIndpbmRvdyQxIiwiYWxpZ24iLCJhbGlnbkZsaXAiLCJlbGVtT2Zmc2V0IiwiY2VudGVyT2Zmc2V0IiwiY2VudGVyVGFyZ2V0T2Zmc2V0IiwibmV3VmFsIiwiY29vcmRpbmF0ZXMiLCJjdXJyZW50T2Zmc2V0IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZG9jRWwiLCJwcm9wTmFtZSQkMSIsImJveE1vZGVsQWRqdXN0IiwiYXR0YWNoIiwiZmFjdG9yIiwiZmxpcFBvc2l0aW9uIiwiaXNJblZpZXciLCJ0b3BPZmZzZXQiLCJsZWZ0T2Zmc2V0IiwicmVsYXRpdmVUb1ZpZXdwb3J0Iiwib2Zmc2V0UG9zaXRpb24iLCJlbFRvcCIsImVsTGVmdCIsInNjcm9sbGVkT3ZlciIsImhlaWdodE9mZnNldCIsImRvY3VtZW50JDEiLCJlbEhlaWdodCIsInZwIiwidmgiLCJvZmZzZXRUb3AiLCJvZmZzZXRMZWZ0IiwiaXNSdGwiLCJoYXNUb3VjaEV2ZW50cyIsImhhc1BvaW50ZXJFdmVudHMiLCJQb2ludGVyRXZlbnQiLCJoYXNUb3VjaCIsIkRvY3VtZW50VG91Y2giLCJuYXZpZ2F0b3IiLCJtYXhUb3VjaFBvaW50cyIsInBvaW50ZXJEb3duIiwicG9pbnRlck1vdmUiLCJwb2ludGVyVXAiLCJwb2ludGVyRW50ZXIiLCJwb2ludGVyTGVhdmUiLCJmYXN0ZG9tIiwicmVhZHMiLCJ3cml0ZXMiLCJyZWFkIiwidGFzayIsInNjaGVkdWxlRmx1c2giLCJ3cml0ZSIsImNsZWFyIiwicmVtb3ZlJDEiLCJmbHVzaCIsInJ1blRhc2tzIiwic2NoZWR1bGVkIiwidGFza3MiLCJpdGVtIiwiTW91c2VUcmFja2VyIiwic2xvcGUiLCJwb3NpdGlvbnMiLCJ0aWNraW5nIiwibW92ZXNUbyIsInBvc2l0aW9uJCQxIiwicHJldlBvcyIsInBvaW50cyIsInN0cmF0cyIsIm1lcmdlRm5EYXRhIiwicGFyZW50VmFsIiwiY2hpbGRWYWwiLCJ2bSIsImNyZWF0ZWQiLCJiZWZvcmVDb25uZWN0IiwiY29ubmVjdGVkIiwiYmVmb3JlRGlzY29ubmVjdCIsImRpc2Nvbm5lY3RlZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJtZXRob2RzIiwiZGVmYXVsdFN0cmF0IiwibWVyZ2VPcHRpb25zIiwiY2hpbGQiLCJleHRlbmRzIiwibWl4aW5zIiwibWVyZ2VLZXkiLCJrZXkkMSIsInBhcnNlT3B0aW9ucyIsIlBsYXllciIsInBvc3QiLCJjbWQiLCJjb250ZW50V2luZG93IiwicG9zdE1lc3NhZ2UiLCJpc1ZpZGVvIiwiaXNZb3V0dWJlIiwiaXNWaW1lbyIsImlzSFRNTDUiLCJpc0lGcmFtZSIsImVuYWJsZUFwaSIsInBvbGxlciIsInlvdXR1YmUiLCJ2aW1lbyIsImRhdGEkJDEiLCJwbGF5ZXJfaWQiLCJwbGF5IiwicGF1c2UiLCJtdXRlIiwibXV0ZWQiLCJjbGlja1RpbWVvdXQiLCJzd2lwZVRpbWVvdXQiLCJ0YXBUaW1lb3V0IiwiY2xpY2tlZCIsInRvdWNoIiwiY2FuY2VsQWxsIiwiZ2V0UG9zJDEiLCJnZXRUeXBlIiwieDEiLCJ5MSIsIngyIiwieTIiLCJ0b3VjaGluZyIsImlzVG91Y2giLCJnZXRDb21wb25lbnROYW1lIiwiX2luaXQiLCJ1dGlsIiwiZnJlZXplIiwiREFUQSIsIl9pc1JlYWR5IiwiX2NhbGxVcGRhdGUiLCJ1c2UiLCJwbHVnaW4iLCJpbnN0YWxsZWQiLCJtaXhpbiIsImNvbXBvbmVudCIsIlN1YiIsImNyZWF0ZSIsInBhdGgiLCJnbG9iYWxBUEkiLCJfY2FsbEhvb2siLCIkb3B0aW9ucyIsIl9jYWxsQ29ubmVjdGVkIiwiX2Nvbm5lY3RlZCIsIl9pbml0UHJvcHMiLCJfaW5pdEV2ZW50cyIsIl9pbml0T2JzZXJ2ZXIiLCJfY2FsbFJlYWR5IiwiX2NhbGxEaXNjb25uZWN0ZWQiLCJfb2JzZXJ2ZXIiLCJkaXNjb25uZWN0IiwiX3VuYmluZEV2ZW50cyIsIl9yZXNldENvbXB1dGVkcyIsInVwZGF0ZXMiLCJfZnJhbWVzIiwiaG9va3NBUEkiLCJnZXRQcm9wcyIsImNvZXJjZSIsInByb3AkMSIsInJlZ2lzdGVyQ29tcHV0ZWQiLCJfY29tcHV0ZWRzIiwiJHByb3BzIiwiJGVsIiwicmVnaXN0ZXJFdmVudCIsImNhcHR1cmUiLCJmaWx0ZXIkJDEiLCJzZWxmRmlsdGVyIiwiX2V2ZW50cyIsIm5vdEluIiwiZXZlcnkiLCJ0b01lZGlhIiwicmVmJDEiLCJpbmRleCQkMSIsIm5vcm1hbGl6ZURhdGEiLCJfdWlkIiwiX2luaXREYXRhIiwiX2luaXRNZXRob2RzIiwiX2luaXRDb21wdXRlZHMiLCIkbW91bnQiLCIkbmFtZSIsImV4Y2x1ZGUiLCJNdXRhdGlvbk9ic2VydmVyIiwiJHJlc2V0Iiwib2JzZXJ2ZSIsImF0dHJpYnV0ZUZpbHRlciIsInN0YXRlQVBJIiwiY29tcG9uZW50cyIsImFyZ3NBcnJheSIsImZ1bmN0aW9uYWwiLCJpbnN0YW5jZSIsImdldENvbXBvbmVudCIsIiRkZXN0cm95IiwiaW5zdGFsbCIsIl9pbml0aWFsaXplZCIsImdldENvbXBvbmVudHMiLCJjb25uZWN0IiwibmFtZSQxIiwiY29tcG9uZW50QVBJIiwiJGVtaXQiLCJyZW1vdmVFbCIsIiRjcmVhdGUiLCIkdXBkYXRlIiwiJGdldENvbXBvbmVudCIsImRlZmluZVByb3BlcnRpZXMiLCIkY29udGFpbmVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiaW5zdGFuY2VBUEkiLCJDbGFzcyIsIlRvZ2dsYWJsZSIsInF1ZXVlZCIsImluaXRQcm9wcyIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwiaGlkZVByb3BzIiwiaGFzQW5pbWF0aW9uIiwiaGFzVHJhbnNpdGlvbiIsInRvZ2dsZUVsZW1lbnQiLCJhbmltYXRlJCQxIiwiX3RvZ2dsZUVsZW1lbnQiLCJ0b2dnbGVkIiwiaXNUb2dnbGVkIiwidW50b2dnbGVkIiwic2Nyb2xsIiwidG9nZ2xlTm93IiwidXBkYXRlQXJpYSIsIl90b2dnbGVIZWlnaHQiLCJfdG9nZ2xlQW5pbWF0aW9uIiwiX3RvZ2dsZUltbWVkaWF0ZSIsIl90b2dnbGUiLCJjaGFuZ2VkIiwiaW5uZXIiLCJsYXN0RWxlbWVudENoaWxkIiwiY3VycmVudEhlaWdodCIsImVuZEhlaWdodCIsIkFjY29yZGlvbiIsImNvbGxhcHNpYmxlIiwibXVsdGlwbGUiLCJjbHNPcGVuIiwiaXNJdGVtIiwiX3dyYXBwZXIiLCJBbGVydCIsImNsb3NlIiwic2VsQ2xvc2UiLCJDb3JlIiwic3RhcnRlZCIsInBhc3NpdmUiLCJob3ZlclNlbGVjdG9yIiwicmVnaXN0ZXJlZCIsIlZpZGVvIiwiYXV0b211dGUiLCJhdXRvcGxheSIsImluVmlldyIsInByZWxvYWQiLCJwbGF5ZXIiLCJDb3ZlciIsImhlaWdodCQkMSIsIndpZHRoJCQxIiwiY2xpZW50V2lkdGgiLCJjbGllbnRIZWlnaHQiLCJsb2FkZWRtZXRhZGF0YSIsIlBvc2l0aW9uIiwiY2xzUG9zIiwib2Zmc2V0JCQxIiwiYXhpcyIsImdldEF4aXMiLCJEcm9wIiwibW9kZSIsImJvdW5kYXJ5QWxpZ24iLCJkZWxheVNob3ciLCJkZWxheUhpZGUiLCJjbHNEcm9wIiwiaG92ZXJJZGxlIiwidHJhY2tlciIsImNsZWFyVGltZXJzIiwiaXNBY3RpdmUiLCJ0cnlTaG93IiwiaXNEZWxheWluZyIsInNob3dUaW1lciIsImlzUGFyZW50T2YiLCJoaWRlVGltZXIiLCJpc0NoaWxkT2YiLCJkcm9wIiwiYWxpZ25UbyIsIkRyb3Bkb3duIiwiRm9ybUN1c3RvbSIsImZpbGVzIiwiR2lmIiwiaW52aWV3IiwiTWFyZ2luIiwiZmlyc3RDb2x1bW4iLCJyb3dzIiwiZ2V0Um93cyIsInN0YWNrcyIsInJvdyIsImdldE9mZnNldCIsImxlZnREaW0iLCJHcmlkIiwibWFzb25yeSIsInBhcmFsbGF4IiwiY2xzU3RhY2siLCJ0cmFuc2xhdGVzIiwic3VtIiwibWF4Q29sdW1uSGVpZ2h0Iiwic2Nyb2xsZWQiLCJIZWlnaHRNYXRjaCIsIm1pbkhlaWdodCIsImJveFNpemluZyIsImhlaWdodHMiLCJIZWlnaHRWaWV3cG9ydCIsIm9mZnNldEJvdHRvbSIsInZpZXdwb3J0Iiwic3ZncyIsIlNWRyIsImljb24iLCJhc3NpZ24kJDEiLCJzdmciLCJnZXRTdmciLCJzeW1ib2xzIiwic3ltYm9sUmUiLCJwYXJzZVN5bWJvbHMiLCJpc0VxdWFsTm9kZSIsInN2Z0VsIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaWNvbnMiLCJzcGlubmVyIiwidG90b3AiLCJtYXJrZXIiLCJjbG9zZS1pY29uIiwiY2xvc2UtbGFyZ2UiLCJuYXZiYXItdG9nZ2xlLWljb24iLCJvdmVybGF5LWljb24iLCJwYWdpbmF0aW9uLW5leHQiLCJwYWdpbmF0aW9uLXByZXZpb3VzIiwic2VhcmNoLWljb24iLCJzZWFyY2gtbGFyZ2UiLCJzZWFyY2gtbmF2YmFyIiwic2xpZGVuYXYtbmV4dCIsInNsaWRlbmF2LW5leHQtbGFyZ2UiLCJzbGlkZW5hdi1wcmV2aW91cyIsInNsaWRlbmF2LXByZXZpb3VzLWxhcmdlIiwiSWNvbiIsImFkZGVkIiwiY21wIiwiaXNJY29uIiwiZ2V0SWNvbiIsImFwcGx5UnRsIiwiSWNvbkNvbXBvbmVudCIsIlNsaWRlbmF2IiwiU2VhcmNoIiwiQ2xvc2UiLCJTcGlubmVyIiwiSW1nIiwiZGF0YVNyYyIsImRhdGFTcmNzZXQiLCJkYXRhU2l6ZXMiLCJkYXRhV2lkdGgiLCJkYXRhSGVpZ2h0IiwiY2FjaGVLZXkiLCJpc0ltZyIsInRvUHgiLCJzdG9yYWdlIiwic2V0U3JjQXR0cnMiLCJjb2xvciIsIm1hdGNoZXMkJDEiLCJzaXplc1JlIiwibWF0Y2hNZWRpYSIsInNpemUiLCJzdWJzdHJpbmciLCJzaXplUmUiLCJhZGRpdGlvblJlIiwidXJsQ2FjaGUiLCJjYW52YXMiLCJnZXRDb250ZXh0IiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJ0b0RhdGFVUkwiLCJnZXRQbGFjZWhvbGRlckltYWdlIiwiY3VycmVudFNyYyIsInNlc3Npb25TdG9yYWdlIiwiYWN0aXZlJDEiLCJMZWFkZXIiLCJmaWxsIiwibWVkaWEiLCJjbHNXcmFwcGVyIiwiY2xzSGlkZSIsImF0dHJGaWxsIiwid3JhcHBlciIsIkNvbnRhaW5lciIsIk1vZGFsIiwic2VsUGFuZWwiLCJlc2NDbG9zZSIsImJnQ2xvc2UiLCJvdmVybGF5IiwicGFuZWwiLCJ0cmFuc2l0aW9uRWxlbWVudCIsInRyYW5zaXRpb25EdXJhdGlvbiIsInJlZ2lzdGVyRXZlbnRzIiwiY2xzUGFnZSIsInNjcm9sbGJhcldpZHRoIiwiZm91bmQiLCJnZXRBY3RpdmUiLCJNb2RhbCQxIiwibW9kYWwiLCJkaWFsb2ciLCJhbGVydCIsImxhYmVscyIsImNvbmZpcm0iLCJyZXNvbHZlZCIsInByb21wdCIsIm9rIiwiTmF2IiwiTmF2YmFyIiwiZHJvcGRvd24iLCJkcm9wYmFyIiwiZHJvcGJhck1vZGUiLCJkcm9wYmFyQW5jaG9yIiwiZHJvcGRvd25zIiwiZ2V0RHJvcGRvd24iLCJ0cmFuc2l0aW9uVG8iLCJuZXdIZWlnaHQiLCJvbGRIZWlnaHQiLCJjbGlwIiwiT2ZmY2FudmFzIiwiY2xzQ29udGFpbmVyIiwiY2xzRmxpcCIsImNsc0NvbnRlbnQiLCJjbHNDb250ZW50QW5pbWF0aW9uIiwiY2xzU2lkZWJhckFuaW1hdGlvbiIsImNsc01vZGUiLCJjbHNPdmVybGF5IiwiT3ZlcmZsb3dBdXRvIiwiUmVzcG9uc2l2ZSIsIlNjcm9sbCIsImRvY0hlaWdodCIsIndpbkhlaWdodCIsInN0YXJ0WSIsImN1cnJlbnRZIiwiU2Nyb2xsc3B5IiwicmVwZWF0IiwiaW5WaWV3Q2xhc3MiLCJlbERhdGEiLCJ0b2dnbGVzIiwiU2Nyb2xsc3B5TmF2IiwiU3RpY2t5IiwiY2xzQWN0aXZlIiwiY2xzSW5hY3RpdmUiLCJjbHNGaXhlZCIsImNsc0JlbG93Iiwic2VsVGFyZ2V0Iiwid2lkdGhFbGVtZW50Iiwic2hvd09uVXAiLCJwbGFjZWhvbGRlciIsImJvdHRvbU9mZnNldCIsInBhcnNlUHJvcCIsImluYWN0aXZlIiwic2Nyb2xsWSIsInByb3BPZmZzZXQiLCJTd2l0Y2hlciIsInN3aXBpbmciLCJhdHRySXRlbSIsImNvbm5lY3RzIiwiZ2V0U2VsZWN0aW9uIiwiaGFzUHJldiIsIlRhYiIsIlRvZ2dsZSIsImNvcmUiLCJDb3VudGRvd24iLCJ0aW1lc3BhbiIsImRpZ2l0cyIsImRpZ2l0Iiwic3R5bGUkMSIsInRhcmdldENsYXNzIiwiQW5pbWF0ZSIsInNoZWV0IiwiaW5zZXJ0UnVsZSIsInByb3BzRnJvbSIsIm9sZFNjcm9sbFkiLCJwcm9wc1RvIiwiZ2V0UG9zaXRpb25XaXRoTWFyZ2luIiwicG9pbnRlckV2ZW50cyIsIkZpbHRlciIsInNlbEFjdGl2ZSIsImFjdGl2ZXMiLCJpc0VxdWFsTGlzdCIsInNldFN0YXRlIiwiZ2V0U3RhdGUiLCJtZXJnZVN0YXRlIiwiYXR0ciQkMSIsInN0YXRlRmlsdGVyIiwicmVmX3NvcnQiLCJzdGF0ZVNvcnQiLCJzdGF0ZU9yZGVyIiwiZ2V0RmlsdGVyIiwiZ3JvdXAiLCJtYXRjaEZpbHRlciIsImFwcGx5JCQxIiwiZ2V0U2VsZWN0b3IiLCJzb3J0ZWQiLCJsb2NhbGVDb21wYXJlIiwic29ydEl0ZW1zIiwiZmlsdGVyQnkiLCJsaXN0QSIsImxpc3RCIiwiQW5pbWF0aW9ucyIsInNsaWRlIiwidHJhbnNmb3JtIiwidHJhbnNsYXRlIiwidHJhbnNsYXRlZCIsInNjYWxlM2QiLCJBbmltYXRpb25zJDEiLCJmYWRlIiwidHJpZ2dlclVwZGF0ZSIsIlNsaWRlciIsImF1dG9wbGF5SW50ZXJ2YWwiLCJwYXVzZU9uSG92ZXIiLCJzdGFydEF1dG9wbGF5Iiwic3RvcEF1dG9wbGF5IiwiaXNIb3ZlcmluZyIsInByZXZlbnRDYXRjaCIsInNsaWRlc1NlbGVjdG9yIiwiZHJhZyIsIl90cmFuc2l0aW9uZXIiLCJnZXREaXN0YW5jZSIsImRyYWdnaW5nIiwicHJldkluZGV4IiwidW5iaW5kTW92ZSIsIm1vdmUiLCJkaXN0YW5jZSIsInNsaWRlcyIsImRpcyIsIm5leHRJbmRleCIsIl9nZXREaXN0YW5jZSIsIml0ZW1TaG93biIsImVkZ2UiLCJfdHJhbnNsYXRlIiwiX3Nob3ciLCJkaXJDaGFuZ2UiLCJzZWxOYXYiLCJuYXYiLCJuYXZJdGVtU2VsZWN0b3IiLCJuYXZJdGVtcyIsIm1heEluZGV4IiwidXBkYXRlTmF2IiwiZ2V0VmFsaWRJbmRleCIsImNsc0FjdGl2YXRlZCIsInZlbG9jaXR5IiwiVHJhbnNpdGlvbmVyIiwidHJhbnNpdGlvbk9wdGlvbnMiLCJzcGVlZFVwIiwic2VsTGlzdCIsIml0ZW1zaG93biIsInF1ZXVlSW5kZXgiLCJnZXREaXJlY3Rpb24iLCJfZ2V0VHJhbnNpdGlvbmVyIiwidHJhbnNpdGlvbmVyIiwiU2xpZGVzaG93IiwiQW5pbWF0aW9ucyQkMSIsIml0ZW1zaG93IGl0ZW1oaWRlIGl0ZW1zaG93biBpdGVtaGlkZGVuIiwiaXRlbXNob3ciLCJiZWZvcmVpdGVtc2hvdyIsIml0ZW1oaWRkZW4iLCJMaWdodGJveFBhbmVsIiwiZGVsYXlDb250cm9scyIsInZpZGVvQXV0b3BsYXkiLCJ0ZW1wbGF0ZSIsImhpZGVDb250cm9scyIsImdldEl0ZW0iLCJsb2FkSXRlbSIsImFsdCIsInNldEl0ZW0iLCJzZXRFcnJvciIsInZpZGVvIiwicG9zdGVyIiwidmlkZW9XaWR0aCIsInZpZGVvSGVpZ2h0Iiwic2V0SWZyYW1lIiwiZ2V0SWZyYW1lIiwiZW5jb2RlVVJJIiwid2l0aENyZWRlbnRpYWxzIiwicmVmX3Jlc3BvbnNlIiwic2hvd0NvbnRyb2xzIiwiY29udHJvbHNUaW1lciIsIkxpZ2h0Ym94IiwibGlnaHRib3hQYW5lbCIsIl9kZXN0cm95IiwiY29udGFpbmVycyIsIk5vdGlmaWNhdGlvbiIsImNsc0Nsb3NlIiwiY2xzTXNnIiwiY2xvc2VBbGwiLCJpbW1lZGlhdGUiLCJyZW1vdmVGbiIsInByb3BzJDEiLCJQYXJhbGxheCIsImJnUG9zIiwiaXNDb2xvciIsImlzQ3NzUHJvcCIsInN0ZXBzIiwiY292ZXJzIiwiZG93biIsImJnUHJvcHMiLCJiZyIsImJhY2tncm91bmRTaXplIiwiX2ltYWdlIiwiZGltRWwiLCJuYXR1cmFsV2lkdGgiLCJuYXR1cmFsSGVpZ2h0Iiwic3BhbiIsImJnUG9zRmxvYXQiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiZ2V0Q3NzIiwiY3NzJCQxIiwiZ2V0VmFsdWUiLCJyZWYkMiIsImdldFN0ZXAiLCJQYXJhbGxheCQxIiwiZWFzZSQxIiwiU2xpZGVyUmVhY3RpdmUiLCJnZXRMZWZ0IiwiY2VudGVyIiwiZ2V0RWxMZWZ0IiwiY2VudGVyRWwiLCJnZXRNYXgiLCJnZXRXaWR0aCIsInRyaWdnZXJVcGRhdGUkMSIsIlNsaWRlciQxIiwic2V0cyIsInVwZGF0ZVRyYW5zbGF0ZXMiLCJnZXRJdGVtSW4iLCJnZXRBY3RpdmVzIiwic2xpZGVMZWZ0IiwiYXZnV2lkdGgiLCJsZWZ0Q2VudGVyIiwic2xpZGVXaWR0aCIsInJlb3JkZXIiLCJzbGlkZUluZGV4IiwiU2xpZGVyUGFyYWxsYXgiLCJzZWxJdGVtIiwicmVmX2RldGFpbCIsImdldEN1cnJlbnQiLCJpc0luIiwib2JqJDEiLCJvYmokMiIsIkFuaW1hdGlvbnMkMiIsInB1bGwiLCJTbGlkZXNob3ckMSIsIm1heEhlaWdodCIsImhndCIsIlNvcnRhYmxlIiwiY2xzSXRlbSIsImNsc1BsYWNlaG9sZGVyIiwiY2xzRHJhZyIsImNsc0RyYWdTdGF0ZSIsImNsc0Jhc2UiLCJjbHNOb0RyYWciLCJjbHNFbXB0eSIsImNsc0N1c3RvbSIsInRvdWNoZWQiLCJvdXRlckhUTUwiLCJlbGVtZW50RnJvbVBvaW50Iiwic29ydGFibGUiLCJnZXRTb3J0YWJsZSIsInByZXZpb3VzIiwiaXNQcmVkZWNlc3NvciIsIlRvb2x0aXAiLCJ0aXRsZSIsIl9oYXNUaXRsZSIsImFyaWEtZXhwYW5kZWQiLCJfdW5iaW5kIiwidG9vbHRpcCIsIlVwbG9hZCIsImFsbG93IiwiY2xzRHJhZ292ZXIiLCJjb25jdXJyZW50IiwibWF4U2l6ZSIsIm1pbWUiLCJtc2dJbnZhbGlkTWltZSIsIm1zZ0ludmFsaWROYW1lIiwibXNnSW52YWxpZFNpemUiLCJiZWZvcmVBbGwiLCJjb21wbGV0ZUFsbCIsImxvYWRFbmQiLCJsb2FkU3RhcnQiLCJ1cGxvYWQiLCJ0cmFuc2ZlciIsImRhdGFUcmFuc2ZlciIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiY2h1bmtzIiwiY2h1bmsiLCJGb3JtRGF0YSIsIm11dGF0aW9ucyIsImFwcGx5TXV0YXRpb24iLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiY2hhcmFjdGVyRGF0YSIsIm11dGF0aW9uIiwiYWRkZWROb2RlcyIsInJlbW92ZWROb2RlcyIsImkkMSIsImFwcGx5Q2hpbGRMaXN0IiwiYXR0cmlidXRlTmFtZSIsImFwcGx5QXR0cmlidXRlIiwiYm9vdCJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQSxTQUFBQSxVQUFBQyxJQUFBQyxVQUFBQyxjQUNBLE1BQUFDLE9BQUFDLFNBQUFDLGNBQUEsVUFDQUYsT0FBQUcsS0FBQSxrQkFDQUgsT0FBQUksSUFBQVAsSUFDQUcsT0FBQUssT0FBQSxPQUVBQyxJQUFBUixZQUNBRSxPQUFBRixVQUFBQSxnQkFHQVEsSUFBQVAsZUFDQUMsT0FBQU8sWUFBQVIsY0FHQUUsU0FBQU8scUJBQUEsUUFBQSxHQUFBQyxZQUFBVCxRQUdBLFNBQUFVLFNBQUFDLFNBQUFDLFVBQ0FYLFNBQUFZLGNBQUFGLFVBRUFHLFVBQUFGLFNBR0EsU0FBQUcsWUFBQUosU0FBQUMsVUFDQSxNQUFBSSxRQUFBZixTQUFBWSxjQUFBRixVQUNBTSxJQUFBLElBQUFDLGVBQUFOLGdCQUFBLEtBQ0FJLFFBQUFGLFVBQUFFLFFBQUFGLFVBQUFLLFFBQUFGLElBQUEsS0N4QkEsU0FBQUcsbUJBQ0EsTUFBQUMsSUFBQXBCLFNBQUFxQixlQUFBLFNBRUFDLFdBQUEsSUFBQUMsV0FBQUgsS0FDQUksTUFBQSxFQUNBQyxZQUFBLEdBQ0FDLFlBQUEsVUFDQUMsU0FBQSxJQVVBM0IsU0FBQXFCLGVBQUEsa0JBQUFPLFFBUEEsV0FDQSxN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QUNBLG1EQUNBLHFEQUNBLDBGQUNBLDZEQUNBLHdGQUNBLGdHQUNBLCtDQUNBLG1NQUNBLGtEQUNBLDJHQUNBLHM0QkFDQSxvdUJBRUFDLE9BQ0EsK0JBQ0EsK0JBQ0EsZ0NBQ0EsOEJBQ0EsaUNBQ0EsNkJBQ0EsbUNBQ0Esb0NBQ0EsaUNBQ0Esb0NBQ0EscUJBQ0Esb0NBQ0EscUNBQ0EsNkJBQ0Esa0NBQ0EsNkJBQ0EsK0JBQ0EsaUNBQ0EsNkJBQ0EsNkJBQ0EsNkJBQ0EsaUNBQ0EsZ0NBQ0EsaUNBQ0EsZ0NBQ0EsOEJBQ0EsOEJBQ0Esa0NBQ0EsOEJBQ0Esb0NBQ0EsK0JBQ0EsK0JBQ0Esc0NBQ0EsaUNBQ0EsZ0NBQ0Esa0NBQ0EscUNBQ0EsK0JBQ0EsZ0NBQ0EsdUJBQ0EsNEJBQ0EsMkJBQ0EsOEJBQ0Esc0RBQ0EsK0RBQ0EsZ0RBQ0EsNENBQ0EsNENBQ0Esd0NBQ0EsNENBQ0EseUNBQ0EsNkJBQ0EsZ0NBQ0EscUNBQ0Esd0NBQ0Esa0NBQ0Esd0JBQ0EsNkJBQ0EsOEJBQ0EsbUNBQ0Esa0RBQ0EsMENBQ0EscUNBQ0Esa0NBQ0Esc0JBQ0EsdUNBQ0EseUNBQ0EsMEJBQ0EsaURBQ0EsaUNBQ0EscUNBQ0EsNkJBQ0Esa0NBQ0EscUNBQ0EsOEJBQ0EsbUNBQ0EsZ0NBQ0EsNkJBQ0EseUNBQ0Esd0NBQ0EseUNBQ0Esd0NBQ0EsMkNBQ0Esd0NBQ0EsMkNBQ0EsOENBQ0EseUNBQ0EseUNBQ0EsMENBQ0EsMkNBQ0Esd0NBQ0EsdUNBQ0EscUNBQ0Esd0NBQ0EsaUNBQ0EscUNBQ0EsZ0NBQ0EsdUNBQ0EsbUNBQ0EsdUNBQ0EsbUNBQ0EsbUNBQ0EsaUNBQ0EsbUNBQ0Esa0NBQ0Esa0NBQ0EsK0JBQ0EsK0JBQ0EsOEJBQ0Esd0JBQ0EseUJBQ0EsK0JBQ0EsMEJBQ0EsK0JBQ0Esd0JBQ0EsK0JBQ0EsNkJBQ0EsbUNBQ0EsOEJBQ0Esd0JBQ0EsbUNBQ0EsOEJBQ0EsMEJBQ0EsMkJBQ0Esd0JBQ0EsMEJBQ0EsaUJBQ0EsK0JBQ0EsK0JBQ0EsNEJBQ0Esb0JBQ0Esa0JBQ0EsbUJBQ0EsMkJBQ0EsbUJBQ0EsbUNBQ0Es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QUNBLFFBRkEsR0E1QkFrZ0IsQ0FBQU4sWUFFQW4yRixNQUFBd3ZFLE9BQUFuN0MsUUFpREEsU0FBQW8xRCxTQUFBaDNELEtBQUFuc0IsSUFFQSxHQUFBLElBQUFtc0IsS0FBQVAsV0FBQTh2QyxRQUFBdnZDLEtBQUEsY0FNQSxJQUZBbnNCLEdBQUFtc0IsTUFDQUEsS0FBQUEsS0FBQSs2QixrQkFDQS82QixNQUFBLENBQ0EsSUFBQWpYLEtBQUFpWCxLQUFBeTBDLG1CQUNBdWlCLFNBQUFoM0QsS0FBQW5zQixJQUNBbXNCLEtBQUFqWCxNQTFHQSxxQkFBQXZjLFNBSUF0QyxTQUFBa3lDLEtBRUE1YixPQUlBLElBQUE0aUQsaUJBQUEsV0FFQWw1RSxTQUFBa3lDLE9BQ0F0dEMsS0FBQXV5RSxhQUNBN2dELFVBR0E4aUQsUUFBQXA1RSxVQUFBcTVGLFdBQUEsRUFBQUMsU0FBQSxLQTh2UkFTLENBQUExMkYsT0FHQUEiLCJmaWxlIjoic2NyaXB0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIGdldFNjcmlwdCh1cmwsIGludGVncml0eSwgY3Jvc3Nfb3JpZ2luKSB7XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICBzY3JpcHQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgc2NyaXB0LnNyYyA9IHVybDtcbiAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuXG4gICAgaWYgKGludGVncml0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNjcmlwdC5pbnRlZ3JpdHkgPSBpbnRlZ3JpdHk7XG4gICAgfVxuXG4gICAgaWYgKGNyb3NzX29yaWdpbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNjcmlwdC5jcm9zc09yaWdpbiA9IGNyb3NzX29yaWdpbjtcbiAgICB9XG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbn1cblxuZnVuY3Rpb24gc2V0Q2xhc3Moc2VsZWN0b3IsIG15X2NsYXNzKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIC8vIGNvbnNvbGUubG9nKGVsZW1lbnQpO1xuICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gbXlfY2xhc3M7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzKHNlbGVjdG9yLCBteV9jbGFzcykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGAoXnwgKSR7bXlfY2xhc3N9KCR8IClgLCBcImdcIik7XG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKHJlZywgXCIgXCIpO1xufVxuXG4vLyBoaWRlIHRoZSBodG1sIHdoZW4gdGhlIHBhZ2UgbG9hZHMsIGJ1dCBvbmx5IGlmIGpzIGlzIHR1cm5lZCBvbi5cbnNldENsYXNzKFwiaHRtbFwiLCBcInByZXZlbnQtZm91Y1wiKTtcblxuLy8gd2hlbiB0aGUgRE9NIGhhcyBmaW5pc2hlZCBsb2FkaW5nLCB1bmhpZGUgdGhlIGh0bWxcbmRvY3VtZW50Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJpbnRlcmFjdGl2ZVwiKSB7XG4gICAgICAgIHJlbW92ZUNsYXNzKFwiaHRtbFwiLCBcInByZXZlbnQtZm91Y1wiKTtcbiAgICAgICAgZ2V0U2NyaXB0KFxuICAgICAgICAgICAgXCJodHRwczovL3Byby5mb250YXdlc29tZS5jb20vcmVsZWFzZXMvdjUuMS4wL2pzL2FsbC5qc1wiLCAvLyBVUkxcbiAgICAgICAgICAgIFwic2hhMzg0LUU1U3BnYVpjYlNKeDBJYWJiM0pyMkFmVFJpRm5yZE93MW1oTzE5RHp6clQ5TCt3Q3BEeUhVRzJxMDdhUWRPNkVcIiwgLy8gSW50ZWdyaXR5XG4gICAgICAgICAgICBcImFub255bW91c1wiIC8vIENyb3NzLW9yaWdpblxuICAgICAgICApO1xuICAgICAgICBnZXRTY3JpcHQoXG4gICAgICAgICAgICBcImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2FjZS8xLjMuMy9hY2UuanNcIlxuICAgICAgICApO1xuICAgICAgICBnZXRTY3JpcHQoXG4gICAgICAgICAgICBcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vZmxhdHBpY2tyXCJcbiAgICAgICAgKTtcbiAgICB9XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGV4cG9ydGVkIGVycm9yX3R5cGV3cml0ZXIgKi9cblxuZnVuY3Rpb24gZXJyb3JfdHlwZXdyaXRlcigpIHtcbiAgICBjb25zdCBhcHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVycm9yXCIpO1xuXG4gICAgY29uc3QgdHlwZXdyaXRlciA9IG5ldyBUeXBld3JpdGVyKGFwcCwge1xuICAgICAgICBcImxvb3BcIjogZmFsc2UsXG4gICAgICAgIFwiZGVsZXRlU3BlZWRcIjogNDAsXG4gICAgICAgIFwidHlwaW5nU3BlZWRcIjogXCJuYXR1cmFsXCIsXG4gICAgICAgIFwiZGV2TW9kZVwiOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gY2xvc2VXaW5kb3coKSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2luXCIpO1xuICAgICAgICBjb25zdCBjdXJyZW50X2NsYXNzID0gYXBwLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpO1xuICAgICAgICBhcHAuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgYCR7Y3VycmVudF9jbGFzcyB9IHVrLWFuaW1hdGlvbi1zY2FsZS11cCB1ay1hbmltYXRpb24tcmV2ZXJzZWApO1xuICAgICAgICB0eXBld3JpdGVyLnN0b3AoKTtcbiAgICB9XG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRlcm1pbmFsLWNsb3NlXCIpLm9uY2xpY2sgPSBjbG9zZVdpbmRvdztcblxuICAgIHR5cGV3cml0ZXIuYXBwZW5kVGV4dChcIlB5dGhvbiAzLjYuNCAoZGVmYXVsdCwgSmFuICA1IDIwMTgsIDAyOjM1OjQwKVxcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIltHQ0MgNy4yLjEgMjAxNzEyMjRdIG9uIGRhcndpblxcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIlR5cGUgXFxcImhlbHBcXFwiLCBcXFwiY29weXJpZ2h0XFxcIiwgXFxcImNyZWRpdHNcXFwiIG9yIFxcXCJsaWNlbnNlXFxcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoXCI+Pj4gXCIpXG4gICAgICAgIC5wYXVzZUZvcigxMDAwKVxuICAgICAgICAudHlwZVN0cmluZyhcImltcG9yIHJlcXVlc3RzXCIpXG4gICAgICAgIC5kZWxldGVDaGFycyg5KVxuICAgICAgICAudHlwZVN0cmluZyhcInQgcmVxdWVzdHNcXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoXCI+Pj4gXCIpXG4gICAgICAgIC5wYXVzZUZvcig3NTApXG4gICAgICAgIC5jaGFuZ2VTZXR0aW5ncyh7XCJ0eXBpbmdTcGVlZFwiOiBcIm5hdHVyYWxcIn0pXG4gICAgICAgIC50eXBlU3RyaW5nKGByZXNwb25zZSA9IHJlcXVlc3RzLiR7IHdpbmRvdy5fUmVxdWVzdE1ldGhvZCB9KCdodHRwczovL3B5dGhpbWApXG4gICAgICAgIC5kZWxldGVDaGFycygyKVxuICAgICAgICAudHlwZVN0cmluZyhcIm9uZGlzY29yZC5jb24vXCIpXG4gICAgICAgIC5kZWxldGVDaGFycygyKVxuICAgICAgICAudHlwZVN0cmluZyhgbSR7IHdpbmRvdy5fUGF0aCB9JylcXG5gKVxuICAgICAgICAucGF1c2VGb3IoMTAwMClcbiAgICAgICAgLmFwcGVuZFRleHQoYCZsdDtSZXNwb25zZSBbJHsgd2luZG93Ll9Db2RlIH1dJmd0O1xcbj4+PiBgKVxuICAgICAgICAudHlwZVN0cmluZyhcIiMgaG1tbW1cIilcbiAgICAgICAgLnBhdXNlRm9yKDEwMDApXG4gICAgICAgIC5kZWxldGVDaGFycyg3KVxuICAgICAgICAucGF1c2VGb3IoMTAwMClcbiAgICAgICAgLnR5cGVTdHJpbmcoXCJyZXNwb25zZS50ZXh0XFxuXCIpXG4gICAgICAgIC5hcHBlbmRUZXh0KGAkeyB3aW5kb3cuX0Vycm9yTXNnIH1cXG4+Pj4gYClcbiAgICAgICAgLnN0YXJ0KCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuKGZ1bmN0aW9uKCl7IC8vIFVzZSBhIGNsb3N1cmUgdG8gYXZvaWQgcG9sbHV0aW5nIGdsb2JhbCBzY29wZVxuICAgIC8vIFRPRE86IFRoaXMgbmVlZHMgdG8gYmUgYnVpbHQgaW50byB0aGUgamFtcyBzeXN0ZW1cbiAgICBjb25zdCBzdGFydGphbSA9IG5ldyBEYXRlKERhdGUuVVRDKDIwMTgsIDIsIDIzKSk7XG4gICAgY29uc3QgZW5kamFtID0gbmV3IERhdGUoRGF0ZS5VVEMoMjAxOCwgMiwgMjYpKTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgbGV0IGdvYWw7XG5cbiAgICBpZiAobm93ICsgMTAwMCA8IGVuZGphbS5nZXRUaW1lKCkpIHsgLy8gT25seSBkbyBhbnl0aGluZyBpZiB0aGUgamFtIGhhc24ndCBlbmRlZFxuICAgICAgICBVSWtpdC5ub3RpZmljYXRpb24oIC8vIFNwYXduIHRoZSBub3RpZmljYXRpb25cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcIm1lc3NhZ2VcIjogXCJcIlxuICAgICAgICAgICAgICAgICAgKyBcIjxkaXYgY2xhc3M9J3VrLXRleHQtY2VudGVyJz5cIlxuICAgICAgICAgICAgICAgICAgKyBcIiAgICA8c3BhbiBpZD1cXFwiY291bnRkb3duLXRpdGxlXFxcIiBjbGFzcz1cXFwidWstdGV4dC1jZW50ZXJcXFwiPlwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgICAgICA8YSBocmVmPVxcXCIvaW5mby9qYW1zXFxcIj5Db2RlIEphbTwvYT4gQ291bnRkb3duXCJcbiAgICAgICAgICAgICAgICAgICsgXCIgICAgPC9zcGFuPlwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgIDxwIGNsYXNzPSd1ay10ZXh0LWxhcmdlJyBpZD1cXFwiY291bnRkb3duLXJlbWFpbmluZ1xcXCI+Li4uPC9wPlwiXG4gICAgICAgICAgICAgICAgICArIFwiPHNtYWxsIHN0eWxlPSdmb250LXNpemU6IDAuNmVtOyc+KFRhcC9jbGljayB0byBkaXNtaXNzKTwvc21hbGw+XCJcbiAgICAgICAgICAgICAgICAgICsgXCI8L2Rpdj5cIixcbiAgICAgICAgICAgICAgICBcInBvc1wiOiBcImJvdHRvbS1yaWdodFwiLFxuICAgICAgICAgICAgICAgIFwidGltZW91dFwiOiBlbmRqYW0gLSBub3dcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBoZWFkaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb3VudGRvd24tdGl0bGVcIik7XG5cbiAgICAgICAgaWYgKG5vdyA+IHN0YXJ0amFtLmdldFRpbWUoKSkgeyAvLyBKYW0ncyBhbHJlYWR5IHN0YXJ0ZWRcbiAgICAgICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gXCJDdXJyZW50IDxhIGhyZWY9XFxcIi9pbmZvL2phbXNcXFwiPmNvZGUgamFtPC9hPiBlbmRzIGluLi4uXCI7XG4gICAgICAgICAgICBnb2FsID0gZW5kamFtLmdldFRpbWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gXCJOZXh0IDxhIGhyZWY9XFxcIi9pbmZvL2phbXNcXFwiPmNvZGUgamFtPC9hPiBzdGFydHMgaW4uLi5cIjtcbiAgICAgICAgICAgIGdvYWwgPSBzdGFydGphbS5nZXRUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWZyZXNoQ291bnRkb3duID0gc2V0SW50ZXJ2YWwoKCkgPT4geyAvLyBDcmVhdGUgYSByZXBlYXRpbmcgdGFza1xuICAgICAgICAgICAgbGV0IGRlbHRhID0gZ29hbCAtIERhdGUubm93KCk7IC8vIFRpbWUgdW50aWwgdGhlIGdvYWwgaXMgbWV0XG5cbiAgICAgICAgICAgIGlmIChkZWx0YSA8PSAxMDAwKSB7IC8vIEdvYWwgaGFzIGJlZW4gbWV0LCBiZXN0IHJlbG9hZFxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVmcmVzaENvdW50ZG93bik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZGF5cyA9IE1hdGguZmxvb3IoZGVsdGEgLyAoMjQgKiA2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgICAgZGVsdGEgLT0gZGF5cyAqICgyNCAqIDYwICogNjAgKiAxMDAwKTtcblxuICAgICAgICAgICAgbGV0IGhvdXJzID0gTWF0aC5mbG9vcihkZWx0YSAvICg2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgICAgZGVsdGEgLT0gaG91cnMgKiAoNjAgKiA2MCAqIDEwMDApO1xuXG4gICAgICAgICAgICBsZXQgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGEgLyAoNjAgKiAxMDAwKSk7XG4gICAgICAgICAgICBkZWx0YSAtPSBtaW51dGVzICogKDYwICogMTAwMCk7XG5cbiAgICAgICAgICAgIGxldCBzZWNvbmRzID0gTWF0aC5mbG9vcihkZWx0YSAvIDEwMDApO1xuXG4gICAgICAgICAgICBpZiAoZGF5cyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgZGF5cyA9IGAwJHtkYXlzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChob3VycyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgaG91cnMgPSBgMCR7aG91cnN9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1pbnV0ZXMgPCAxMCkge1xuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBgMCR7bWludXRlc31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2Vjb25kcyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA9IGAwJHtzZWNvbmRzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb3VudGRvd24tcmVtYWluaW5nXCIpLmlubmVySFRNTCA9IGAke2RheXN9OiR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfWA7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IC8vIE5vdGlmaWNhdGlvbiB3YXMgcHJvYmFibHkgY2xvc2VkLCBzbyB3ZSBjYW4gc3RvcCBjb3VudGluZ1xuICAgICAgICAgICAgICAgIHJldHVybiBjbGVhckludGVydmFsKHJlZnJlc2hDb3VudGRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCA1MDApO1xuICAgIH1cbn0pKCk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXhwb3J0ZWQgSmFtQWN0aW9ucyAqL1xuXG5jbGFzcyBKYW1BY3Rpb25zIHtcbiAgICBjb25zdHJ1Y3Rvcih1cmwsIGNzcmZfdG9rZW4pIHtcbiAgICAgICAgdGhpcy51cmwgPSB1cmw7XG4gICAgICAgIHRoaXMuY3NyZl90b2tlbiA9IGNzcmZfdG9rZW47XG4gICAgfVxuXG4gICAgc2VuZChhY3Rpb24sIG1ldGhvZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgZGF0YVtcImFjdGlvblwiXSA9IGFjdGlvbjtcblxuICAgICAgICAkLmFqYXgodGhpcy51cmwsIHtcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhLFxuICAgICAgICAgICAgXCJkYXRhVHlwZVwiOiBcImpzb25cIixcbiAgICAgICAgICAgIFwiaGVhZGVyc1wiOiB7XCJYLUNTUkZUb2tlblwiOiB0aGlzLmNzcmZfdG9rZW59LFxuICAgICAgICAgICAgXCJtZXRob2RcIjogbWV0aG9kLFxuICAgICAgICB9KS5kb25lKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKFwiZXJyb3JfY29kZVwiIGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZmFsc2UsIGRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sodHJ1ZSwgZGF0YSk7XG4gICAgICAgIH0pLmZhaWwoKCkgPT4gY2FsbGJhY2soZmFsc2UpKTtcbiAgICB9XG5cbiAgICBzZW5kX2pzb24oYWN0aW9uLCBtZXRob2QsIGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgIGRhdGFbXCJhY3Rpb25cIl0gPSBhY3Rpb247XG5cbiAgICAgICAgJC5hamF4KHRoaXMudXJsLCB7XG4gICAgICAgICAgICBcImRhdGFcIjogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICAgICAgICBcImRhdGFUeXBlXCI6IFwianNvblwiLFxuICAgICAgICAgICAgXCJoZWFkZXJzXCI6IHtcIlgtQ1NSRlRva2VuXCI6IHRoaXMuY3NyZl90b2tlbn0sXG4gICAgICAgICAgICBcImNvbnRlbnRUeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgXCJtZXRob2RcIjogbWV0aG9kXG4gICAgICAgIH0pLmRvbmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAoXCJlcnJvcl9jb2RlXCIgaW4gZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhmYWxzZSwgZGF0YSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayh0cnVlLCBkYXRhKTtcbiAgICAgICAgfSkuZmFpbCgoKSA9PiBjYWxsYmFjayhmYWxzZSkpO1xuICAgIH1cblxuICAgIHNldF9zdGF0ZShqYW0sIHN0YXRlLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcInN0YXRlXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImphbVwiOiBqYW0sXG4gICAgICAgICAgICAgICAgXCJzdGF0ZVwiOiBzdGF0ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0X3F1ZXN0aW9ucyhjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcInF1ZXN0aW9uc1wiLFxuICAgICAgICAgICAgXCJHRVRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVfcXVlc3Rpb24oZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kX2pzb24oXG4gICAgICAgICAgICBcInF1ZXN0aW9uc1wiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWxldGVfcXVlc3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwicXVlc3Rpb25cIixcbiAgICAgICAgICAgIFwiREVMRVRFXCIsXG4gICAgICAgICAgICB7XCJpZFwiOiBpZH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGFzc29jaWF0ZV9xdWVzdGlvbihmb3JtLCBxdWVzdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJhc3NvY2lhdGVfcXVlc3Rpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiZm9ybVwiOiBmb3JtLFxuICAgICAgICAgICAgICAgIFwicXVlc3Rpb25cIjogcXVlc3Rpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkaXNhc3NvY2lhdGVfcXVlc3Rpb24oZm9ybSwgcXVlc3Rpb24sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiZGlzYXNzb2NpYXRlX3F1ZXN0aW9uXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImZvcm1cIjogZm9ybSxcbiAgICAgICAgICAgICAgICBcInF1ZXN0aW9uXCI6IHF1ZXN0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY3JlYXRlX2luZnJhY3Rpb24oaWQsIHJlYXNvbiwgbnVtYmVyLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImluZnJhY3Rpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwicGFydGljaXBhbnRcIjogaWQsXG4gICAgICAgICAgICAgICAgXCJyZWFzb25cIjogcmVhc29uLFxuICAgICAgICAgICAgICAgIFwibnVtYmVyXCI6IG51bWJlclxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGVsZXRlX2luZnJhY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiaW5mcmFjdGlvblwiLFxuICAgICAgICAgICAgXCJERUxFVEVcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXBwcm92ZV9hcHBsaWNhdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJhcHByb3ZlX2FwcGxpY2F0aW9uXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdW5hcHByb3ZlX2FwcGxpY2F0aW9uKGlkLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcInVuYXBwcm92ZV9hcHBsaWNhdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XCJpZFwiOiBpZH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGdlbmVyYXRlX3RlYW1zKGphbSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJnZW5lcmF0ZV90ZWFtc1wiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XCJqYW1cIjogamFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY3JlYXRlX3RlYW0oamFtLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImNyZWF0ZV90ZWFtXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImphbVwiOiBqYW19LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXJvbGxfdGVhbSh0ZWFtLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcInJlcm9sbF90ZWFtXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcInRlYW1cIjogdGVhbX0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZV90ZWFtKHRlYW0sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwidGVhbVwiLFxuICAgICAgICAgICAgXCJERUxFVEVcIixcbiAgICAgICAgICAgIHtcInRlYW1cIjogdGVhbX0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldF90ZWFtX21lbWJlcihqYW0sIG1lbWJlciwgdGVhbSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJzZXRfdGVhbV9tZW1iZXJcIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiamFtXCI6IGphbSwgXCJtZW1iZXJcIjogbWVtYmVyLCBcInRlYW1cIjogdGVhbX0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBleHBvcnRlZCByZXZpc2lvbl9kaWZmICovXG5cbmZ1bmN0aW9uIHJldmlzaW9uX2RpZmYocmV2aXNpb25zKSB7XG4gICAgY29uc3QgYnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0ZCBpbnB1dFwiKTsgLy8gRmV0Y2ggYWxsIHJhZGlvIGJ1dHRvbnNcbiAgICBjb25zdCBpZF9yZWcgPSAvY29tcGFyZS0oYmVmb3JlfGFmdGVyKS0oW1xcd3wtXSspLzsgLy8gTWF0Y2hlcyBjb21wYXJlLWFmdGVyL2JlZm9yZS1JRFxuXG5cbiAgICBmdW5jdGlvbiBnZXRSZXZpc2lvbklkKGVsZW1lbnQpe1xuICAgICAgICBjb25zdCBlID0gZWxlbWVudC5pZC5tYXRjaChpZF9yZWcpOyAvLyBNYXRjaCBJRCB3aXRoIFJlZ0V4cFxuICAgICAgICByZXR1cm4gW2VbMV0sIGVbMl1dOyAvLyBlIGlzIGluIGZvcm1hdCBvZiBbZnVsbCBpZCwgYWZ0ZXIvYmVmb3JlLCBJRF0gd2Ugb25seSB3YW50IElEICYgbW9kZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFJldmlzaW9uKGlkKSB7XG4gICAgICAgIGNvbnN0IGUgPSByZXZpc2lvbnMuZmlsdGVyKCh4KSA9PiB7XG4gICAgICAgICAgICAvLyBGaWx0ZXIgdGhyb3VnaCBhbGwgcmV2aXNpb25zIHRvIGZpbmQgdGhlIHNlbGVjdGVkIG9uZSAocmV2aXNpb25zIGluIGRlY2xhcmVkIGluIHRoZSB0ZW1wbGF0ZSlcbiAgICAgICAgICAgIHJldHVybiB4LmlkID09PSBpZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlWzBdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJhZGlvQnV0dG9uQ2hlY2tlZChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGlkID0gZ2V0UmV2aXNpb25JZChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgcmV2ID0gZ2V0UmV2aXNpb24oaWRbMV0pO1xuICAgICAgICBpZiAoaWRbMF0gPT09IFwiYWZ0ZXJcIil7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICogRGVzZWxlY3QgdGhlIG9wcG9zaXRlIGNoZWNrYm94IHRvIHRoZSBvbmUgd2hpY2ggaGFzIGJlZW4gY2hlY2tlZFxuICAgICAgICAgICAgICogYmVjYXVzZSB3ZSBkb24ndCB3YW50IGNoZWNraW5nIG9mIHRoZSBzYW1lIHJldmlzaW9uXG4gICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI2NvbXBhcmUtYmVmb3JlLSR7aWRbMV19YCkuY2hlY2tlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBidXR0b25zLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0UmV2aXNpb25JZChlKVswXSA9PT0gXCJhZnRlclwiICYmIGUuaWQgIT09IGVsZW1lbnQuaWQpIHsgLy8gRGVzZWxlY3QgYWxsIGNoZWNrYm94ZXMgaW4gdGhlIHNhbWUgcm93XG4gICAgICAgICAgICAgICAgICAgIGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgeyAvLyBUaGlzIGVsc2UgZG9lcyB0aGUgc2FtZSBhcyBhYm92ZSBidXQgZm9yIHRoZSBiZWZvcmUgY29sdW1uXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjY29tcGFyZS1hZnRlci0ke2lkWzFdfWApLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChnZXRSZXZpc2lvbklkKGUpWzBdID09PSBcImJlZm9yZVwiICYmIGUuaWQgIT09IGVsZW1lbnQuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoYXQgeW91IGRvIG5vdCBjb21wYXJlIGEgbmV3IHJldmlzaW9uIHdpdGggYW4gb2xkIG9uZVxuICAgICAgICAgICAgICAgIGlmIChnZXRSZXZpc2lvbklkKGUpWzBdID09PSBcImFmdGVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG1wcmV2ID0gZ2V0UmV2aXNpb24oZ2V0UmV2aXNpb25JZChlKVsxXSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRtcHJldik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0bXByZXYuZGF0ZSA8PSByZXYuZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7ZS5pZH1gKS5zZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2UuaWR9YCkucmVtb3ZlQXR0cmlidXRlKFwiZGlzYWJsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhZnQsIGJlZjtcblxuICAgICAgICBidXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4geyAvLyBGaW5kIHRoZSBzZWxlY3RlZCBwb3N0c1xuICAgICAgICAgICAgY29uc3QgaWQgPSBnZXRSZXZpc2lvbklkKGJ1dHRvbik7XG4gICAgICAgICAgICBpZiAoYnV0dG9uLmNoZWNrZWQgJiYgaWRbMF0gPT09IFwiYmVmb3JlXCIpIHtcbiAgICAgICAgICAgICAgICBiZWYgPSBpZFsxXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGJ1dHRvbi5jaGVja2VkICYmIGlkWzBdID09PSBcImFmdGVyXCIpIHtcbiAgICAgICAgICAgICAgICBhZnQgPSBpZFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3dpdGNoIHRoZSBidXR0b25zIEhSRUYgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgY29tcGFyZSBVUkxcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb21wYXJlLXN1Ym1pdFwiKS5ocmVmID0gYC9oaXN0b3J5L2NvbXBhcmUvJHtiZWZ9LyR7YWZ0fWA7XG5cbiAgICB9XG5cbiAgICBidXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4ge1xuICAgICAgICBidXR0b24uY2hlY2tlZCA9IGZhbHNlOyAvLyBTb21lIGJyb3dzZXJzIHJlbWVtYmVyIGlmIGEgYnV0dG9uIGlzIGNoZWNrZWQuXG4gICAgICAgIGJ1dHRvbi5vbmNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmFkaW9CdXR0b25DaGVja2VkKGJ1dHRvbik7XG4gICAgICAgIH07XG4gICAgfSk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXhwb3J0ZWQgd2lraV9zaWRlYmFyICovXG5cbmZ1bmN0aW9uIHdpa2lfc2lkZWJhcigpe1xuICAgIGNvbnN0IHZpc2libGVfY2xhc3MgPSBcInVrLXZpc2libGVAc1wiO1xuICAgIGNvbnN0IHNpZGViYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIndpa2ktc2lkZWJhclwiKTtcbiAgICBjb25zdCBkaXNwbGF5X2J1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2lraS1zaWRlYmFyLWJ1dHRvblwiKTtcblxuICAgIGRpc3BsYXlfYnV0dG9uLm9uY2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHNpZGViYXIuY2xhc3NMaXN0LmNvbnRhaW5zKHZpc2libGVfY2xhc3MpKSB7XG4gICAgICAgICAgICBzaWRlYmFyLmNsYXNzTGlzdC5yZW1vdmUodmlzaWJsZV9jbGFzcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaWRlYmFyLmNsYXNzTGlzdC5hZGQodmlzaWJsZV9jbGFzcyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuIiwiLy8hIG1vbWVudC5qc1xuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgICBnbG9iYWwubW9tZW50ID0gZmFjdG9yeSgpXG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBob29rQ2FsbGJhY2s7XG5cbiAgICBmdW5jdGlvbiBob29rcyAoKSB7XG4gICAgICAgIHJldHVybiBob29rQ2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGRvbmUgdG8gcmVnaXN0ZXIgdGhlIG1ldGhvZCBjYWxsZWQgd2l0aCBtb21lbnQoKVxuICAgIC8vIHdpdGhvdXQgY3JlYXRpbmcgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICAgIGZ1bmN0aW9uIHNldEhvb2tDYWxsYmFjayAoY2FsbGJhY2spIHtcbiAgICAgICAgaG9va0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBcnJheShpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBBcnJheSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0KGlucHV0KSB7XG4gICAgICAgIC8vIElFOCB3aWxsIHRyZWF0IHVuZGVmaW5lZCBhbmQgbnVsbCBhcyBvYmplY3QgaWYgaXQgd2Fzbid0IGZvclxuICAgICAgICAvLyBpbnB1dCAhPSBudWxsXG4gICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0RW1wdHkob2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcykge1xuICAgICAgICAgICAgcmV0dXJuIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaztcbiAgICAgICAgICAgIGZvciAoayBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IE51bWJlcl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF0ZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBEYXRlIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IERhdGVdJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXAoYXJyLCBmbikge1xuICAgICAgICB2YXIgcmVzID0gW10sIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGZuKGFycltpXSwgaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzT3duUHJvcChhLCBiKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZW5kKGEsIGIpIHtcbiAgICAgICAgZm9yICh2YXIgaSBpbiBiKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChiLCBpKSkge1xuICAgICAgICAgICAgICAgIGFbaV0gPSBiW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3RvU3RyaW5nJykpIHtcbiAgICAgICAgICAgIGEudG9TdHJpbmcgPSBiLnRvU3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3ZhbHVlT2YnKSkge1xuICAgICAgICAgICAgYS52YWx1ZU9mID0gYi52YWx1ZU9mO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgdHJ1ZSkudXRjKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmYXVsdFBhcnNpbmdGbGFncygpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBkZWVwIGNsb25lIHRoaXMgb2JqZWN0LlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1wdHkgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICB1bnVzZWRUb2tlbnMgICAgOiBbXSxcbiAgICAgICAgICAgIHVudXNlZElucHV0ICAgICA6IFtdLFxuICAgICAgICAgICAgb3ZlcmZsb3cgICAgICAgIDogLTIsXG4gICAgICAgICAgICBjaGFyc0xlZnRPdmVyICAgOiAwLFxuICAgICAgICAgICAgbnVsbElucHV0ICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICBpbnZhbGlkTW9udGggICAgOiBudWxsLFxuICAgICAgICAgICAgaW52YWxpZEZvcm1hdCAgIDogZmFsc2UsXG4gICAgICAgICAgICB1c2VySW52YWxpZGF0ZWQgOiBmYWxzZSxcbiAgICAgICAgICAgIGlzbyAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgcGFyc2VkRGF0ZVBhcnRzIDogW10sXG4gICAgICAgICAgICBtZXJpZGllbSAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgcmZjMjgyMiAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICB3ZWVrZGF5TWlzbWF0Y2ggOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBhcnNpbmdGbGFncyhtKSB7XG4gICAgICAgIGlmIChtLl9wZiA9PSBudWxsKSB7XG4gICAgICAgICAgICBtLl9wZiA9IGRlZmF1bHRQYXJzaW5nRmxhZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5fcGY7XG4gICAgfVxuXG4gICAgdmFyIHNvbWU7XG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5zb21lKSB7XG4gICAgICAgIHNvbWUgPSBBcnJheS5wcm90b3R5cGUuc29tZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzb21lID0gZnVuY3Rpb24gKGZ1bikge1xuICAgICAgICAgICAgdmFyIHQgPSBPYmplY3QodGhpcyk7XG4gICAgICAgICAgICB2YXIgbGVuID0gdC5sZW5ndGggPj4+IDA7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSBpbiB0ICYmIGZ1bi5jYWxsKHRoaXMsIHRbaV0sIGksIHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQobSkge1xuICAgICAgICBpZiAobS5faXNWYWxpZCA9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgZmxhZ3MgPSBnZXRQYXJzaW5nRmxhZ3MobSk7XG4gICAgICAgICAgICB2YXIgcGFyc2VkUGFydHMgPSBzb21lLmNhbGwoZmxhZ3MucGFyc2VkRGF0ZVBhcnRzLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBpc05vd1ZhbGlkID0gIWlzTmFOKG0uX2QuZ2V0VGltZSgpKSAmJlxuICAgICAgICAgICAgICAgIGZsYWdzLm92ZXJmbG93IDwgMCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5lbXB0eSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkTW9udGggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZFdlZWtkYXkgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3Mud2Vla2RheU1pc21hdGNoICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLm51bGxJbnB1dCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkRm9ybWF0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLnVzZXJJbnZhbGlkYXRlZCAmJlxuICAgICAgICAgICAgICAgICghZmxhZ3MubWVyaWRpZW0gfHwgKGZsYWdzLm1lcmlkaWVtICYmIHBhcnNlZFBhcnRzKSk7XG5cbiAgICAgICAgICAgIGlmIChtLl9zdHJpY3QpIHtcbiAgICAgICAgICAgICAgICBpc05vd1ZhbGlkID0gaXNOb3dWYWxpZCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5jaGFyc0xlZnRPdmVyID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLnVudXNlZFRva2Vucy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYmlnSG91ciA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoT2JqZWN0LmlzRnJvemVuID09IG51bGwgfHwgIU9iamVjdC5pc0Zyb3plbihtKSkge1xuICAgICAgICAgICAgICAgIG0uX2lzVmFsaWQgPSBpc05vd1ZhbGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG0uX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52YWxpZCAoZmxhZ3MpIHtcbiAgICAgICAgdmFyIG0gPSBjcmVhdGVVVEMoTmFOKTtcbiAgICAgICAgaWYgKGZsYWdzICE9IG51bGwpIHtcbiAgICAgICAgICAgIGV4dGVuZChnZXRQYXJzaW5nRmxhZ3MobSksIGZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS51c2VySW52YWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGx1Z2lucyB0aGF0IGFkZCBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGFkZCB0aGUga2V5IGhlcmUgKG51bGwgdmFsdWUpLFxuICAgIC8vIHNvIHdlIGNhbiBwcm9wZXJseSBjbG9uZSBvdXJzZWx2ZXMuXG4gICAgdmFyIG1vbWVudFByb3BlcnRpZXMgPSBob29rcy5tb21lbnRQcm9wZXJ0aWVzID0gW107XG5cbiAgICBmdW5jdGlvbiBjb3B5Q29uZmlnKHRvLCBmcm9tKSB7XG4gICAgICAgIHZhciBpLCBwcm9wLCB2YWw7XG5cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc0FNb21lbnRPYmplY3QpKSB7XG4gICAgICAgICAgICB0by5faXNBTW9tZW50T2JqZWN0ID0gZnJvbS5faXNBTW9tZW50T2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faSkpIHtcbiAgICAgICAgICAgIHRvLl9pID0gZnJvbS5faTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2YpKSB7XG4gICAgICAgICAgICB0by5fZiA9IGZyb20uX2Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sKSkge1xuICAgICAgICAgICAgdG8uX2wgPSBmcm9tLl9sO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fc3RyaWN0KSkge1xuICAgICAgICAgICAgdG8uX3N0cmljdCA9IGZyb20uX3N0cmljdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3R6bSkpIHtcbiAgICAgICAgICAgIHRvLl90em0gPSBmcm9tLl90em07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pc1VUQykpIHtcbiAgICAgICAgICAgIHRvLl9pc1VUQyA9IGZyb20uX2lzVVRDO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fb2Zmc2V0KSkge1xuICAgICAgICAgICAgdG8uX29mZnNldCA9IGZyb20uX29mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3BmKSkge1xuICAgICAgICAgICAgdG8uX3BmID0gZ2V0UGFyc2luZ0ZsYWdzKGZyb20pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbG9jYWxlKSkge1xuICAgICAgICAgICAgdG8uX2xvY2FsZSA9IGZyb20uX2xvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb21lbnRQcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtb21lbnRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcHJvcCA9IG1vbWVudFByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICAgICAgdmFsID0gZnJvbVtwcm9wXTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9bcHJvcF0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvO1xuICAgIH1cblxuICAgIHZhciB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG5cbiAgICAvLyBNb21lbnQgcHJvdG90eXBlIG9iamVjdFxuICAgIGZ1bmN0aW9uIE1vbWVudChjb25maWcpIHtcbiAgICAgICAgY29weUNvbmZpZyh0aGlzLCBjb25maWcpO1xuICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoY29uZmlnLl9kICE9IG51bGwgPyBjb25maWcuX2QuZ2V0VGltZSgpIDogTmFOKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5fZCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJldmVudCBpbmZpbml0ZSBsb29wIGluIGNhc2UgdXBkYXRlT2Zmc2V0IGNyZWF0ZXMgbmV3IG1vbWVudFxuICAgICAgICAvLyBvYmplY3RzLlxuICAgICAgICBpZiAodXBkYXRlSW5Qcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNNb21lbnQgKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgTW9tZW50IHx8IChvYmogIT0gbnVsbCAmJiBvYmouX2lzQU1vbWVudE9iamVjdCAhPSBudWxsKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNGbG9vciAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICAvLyAtMCAtPiAwXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKG51bWJlcikgfHwgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0ludChhcmd1bWVudEZvckNvZXJjaW9uKSB7XG4gICAgICAgIHZhciBjb2VyY2VkTnVtYmVyID0gK2FyZ3VtZW50Rm9yQ29lcmNpb24sXG4gICAgICAgICAgICB2YWx1ZSA9IDA7XG5cbiAgICAgICAgaWYgKGNvZXJjZWROdW1iZXIgIT09IDAgJiYgaXNGaW5pdGUoY29lcmNlZE51bWJlcikpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYWJzRmxvb3IoY29lcmNlZE51bWJlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gY29tcGFyZSB0d28gYXJyYXlzLCByZXR1cm4gdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlc1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVBcnJheXMoYXJyYXkxLCBhcnJheTIsIGRvbnRDb252ZXJ0KSB7XG4gICAgICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcnJheTEubGVuZ3RoLCBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGxlbmd0aERpZmYgPSBNYXRoLmFicyhhcnJheTEubGVuZ3RoIC0gYXJyYXkyLmxlbmd0aCksXG4gICAgICAgICAgICBkaWZmcyA9IDAsXG4gICAgICAgICAgICBpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgoZG9udENvbnZlcnQgJiYgYXJyYXkxW2ldICE9PSBhcnJheTJbaV0pIHx8XG4gICAgICAgICAgICAgICAgKCFkb250Q29udmVydCAmJiB0b0ludChhcnJheTFbaV0pICE9PSB0b0ludChhcnJheTJbaV0pKSkge1xuICAgICAgICAgICAgICAgIGRpZmZzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpZmZzICsgbGVuZ3RoRGlmZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3YXJuKG1zZykge1xuICAgICAgICBpZiAoaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgY29uc29sZSAhPT0gICd1bmRlZmluZWQnKSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRGVwcmVjYXRpb24gd2FybmluZzogJyArIG1zZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGUobXNnLCBmbikge1xuICAgICAgICB2YXIgZmlyc3RUaW1lID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gZXh0ZW5kKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLCBtc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpcnN0VGltZSkge1xuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICAgICAgdmFyIGFyZztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBhcmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbaV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0gJ1xcblsnICsgaSArICddICc7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnICs9IGtleSArICc6ICcgKyBhcmd1bWVudHNbMF1ba2V5XSArICcsICc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMCwgLTIpOyAvLyBSZW1vdmUgdHJhaWxpbmcgY29tbWEgYW5kIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhcm4obXNnICsgJ1xcbkFyZ3VtZW50czogJyArIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpLmpvaW4oJycpICsgJ1xcbicgKyAobmV3IEVycm9yKCkpLnN0YWNrKTtcbiAgICAgICAgICAgICAgICBmaXJzdFRpbWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9LCBmbik7XG4gICAgfVxuXG4gICAgdmFyIGRlcHJlY2F0aW9ucyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlU2ltcGxlKG5hbWUsIG1zZykge1xuICAgICAgICBpZiAoaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgIGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihuYW1lLCBtc2cpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVwcmVjYXRpb25zW25hbWVdKSB7XG4gICAgICAgICAgICB3YXJuKG1zZyk7XG4gICAgICAgICAgICBkZXByZWNhdGlvbnNbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID0gZmFsc2U7XG4gICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyID0gbnVsbDtcblxuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgRnVuY3Rpb24gfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXQgKGNvbmZpZykge1xuICAgICAgICB2YXIgcHJvcCwgaTtcbiAgICAgICAgZm9yIChpIGluIGNvbmZpZykge1xuICAgICAgICAgICAgcHJvcCA9IGNvbmZpZ1tpXTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgdGhpc1tpXSA9IHByb3A7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXNbJ18nICsgaV0gPSBwcm9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgLy8gTGVuaWVudCBvcmRpbmFsIHBhcnNpbmcgYWNjZXB0cyBqdXN0IGEgbnVtYmVyIGluIGFkZGl0aW9uIHRvXG4gICAgICAgIC8vIG51bWJlciArIChwb3NzaWJseSkgc3R1ZmYgY29taW5nIGZyb20gX2RheU9mTW9udGhPcmRpbmFsUGFyc2UuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgdGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQgPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgKHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2Uuc291cmNlIHx8IHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UpICtcbiAgICAgICAgICAgICAgICAnfCcgKyAoL1xcZHsxLDJ9Lykuc291cmNlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjaGlsZENvbmZpZykge1xuICAgICAgICB2YXIgcmVzID0gZXh0ZW5kKHt9LCBwYXJlbnRDb25maWcpLCBwcm9wO1xuICAgICAgICBmb3IgKHByb3AgaW4gY2hpbGRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pICYmIGlzT2JqZWN0KGNoaWxkQ29uZmlnW3Byb3BdKSkge1xuICAgICAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJlc1twcm9wXSwgcGFyZW50Q29uZmlnW3Byb3BdKTtcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJlc1twcm9wXSwgY2hpbGRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGRDb25maWdbcHJvcF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSBjaGlsZENvbmZpZ1twcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVzW3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHByb3AgaW4gcGFyZW50Q29uZmlnKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChwYXJlbnRDb25maWcsIHByb3ApICYmXG4gICAgICAgICAgICAgICAgICAgICFoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSAmJlxuICAgICAgICAgICAgICAgICAgICBpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIGNoYW5nZXMgdG8gcHJvcGVydGllcyBkb24ndCBtb2RpZnkgcGFyZW50IGNvbmZpZ1xuICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGV4dGVuZCh7fSwgcmVzW3Byb3BdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIExvY2FsZShjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNldChjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXM7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMpIHtcbiAgICAgICAga2V5cyA9IE9iamVjdC5rZXlzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGtleXMgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICB2YXIgaSwgcmVzID0gW107XG4gICAgICAgICAgICBmb3IgKGkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc093blByb3Aob2JqLCBpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0Q2FsZW5kYXIgPSB7XG4gICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIgKGtleSwgbW9tLCBub3cpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyW2tleV0gfHwgdGhpcy5fY2FsZW5kYXJbJ3NhbWVFbHNlJ107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG91dHB1dCkgPyBvdXRwdXQuY2FsbChtb20sIG5vdykgOiBvdXRwdXQ7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb25nRGF0ZUZvcm1hdCA9IHtcbiAgICAgICAgTFRTICA6ICdoOm1tOnNzIEEnLFxuICAgICAgICBMVCAgIDogJ2g6bW0gQScsXG4gICAgICAgIEwgICAgOiAnTU0vREQvWVlZWScsXG4gICAgICAgIExMICAgOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgTExMICA6ICdNTU1NIEQsIFlZWVkgaDptbSBBJyxcbiAgICAgICAgTExMTCA6ICdkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb25nRGF0ZUZvcm1hdCAoa2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldLFxuICAgICAgICAgICAgZm9ybWF0VXBwZXIgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXkudG9VcHBlckNhc2UoKV07XG5cbiAgICAgICAgaWYgKGZvcm1hdCB8fCAhZm9ybWF0VXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldID0gZm9ybWF0VXBwZXIucmVwbGFjZSgvTU1NTXxNTXxERHxkZGRkL2csIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWwuc2xpY2UoMSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0SW52YWxpZERhdGUgPSAnSW52YWxpZCBkYXRlJztcblxuICAgIGZ1bmN0aW9uIGludmFsaWREYXRlICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludmFsaWREYXRlO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0T3JkaW5hbCA9ICclZCc7XG4gICAgdmFyIGRlZmF1bHREYXlPZk1vbnRoT3JkaW5hbFBhcnNlID0gL1xcZHsxLDJ9LztcblxuICAgIGZ1bmN0aW9uIG9yZGluYWwgKG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCclZCcsIG51bWJlcik7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRSZWxhdGl2ZVRpbWUgPSB7XG4gICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgIHBhc3QgICA6ICclcyBhZ28nLFxuICAgICAgICBzICA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgIG0gIDogJ2EgbWludXRlJyxcbiAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgIGggIDogJ2FuIGhvdXInLFxuICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgIGQgIDogJ2EgZGF5JyxcbiAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgIE0gIDogJ2EgbW9udGgnLFxuICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICB5ICA6ICdhIHllYXInLFxuICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX3JlbGF0aXZlVGltZVtzdHJpbmddO1xuICAgICAgICByZXR1cm4gKGlzRnVuY3Rpb24ob3V0cHV0KSkgP1xuICAgICAgICAgICAgb3V0cHV0KG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkgOlxuICAgICAgICAgICAgb3V0cHV0LnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFzdEZ1dHVyZSAoZGlmZiwgb3V0cHV0KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbZGlmZiA+IDAgPyAnZnV0dXJlJyA6ICdwYXN0J107XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKGZvcm1hdCkgPyBmb3JtYXQob3V0cHV0KSA6IGZvcm1hdC5yZXBsYWNlKC8lcy9pLCBvdXRwdXQpO1xuICAgIH1cblxuICAgIHZhciBhbGlhc2VzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0QWxpYXMgKHVuaXQsIHNob3J0aGFuZCkge1xuICAgICAgICB2YXIgbG93ZXJDYXNlID0gdW5pdC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBhbGlhc2VzW2xvd2VyQ2FzZV0gPSBhbGlhc2VzW2xvd2VyQ2FzZSArICdzJ10gPSBhbGlhc2VzW3Nob3J0aGFuZF0gPSB1bml0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdW5pdHMgPT09ICdzdHJpbmcnID8gYWxpYXNlc1t1bml0c10gfHwgYWxpYXNlc1t1bml0cy50b0xvd2VyQ2FzZSgpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVPYmplY3RVbml0cyhpbnB1dE9iamVjdCkge1xuICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0ge30sXG4gICAgICAgICAgICBub3JtYWxpemVkUHJvcCxcbiAgICAgICAgICAgIHByb3A7XG5cbiAgICAgICAgZm9yIChwcm9wIGluIGlucHV0T2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcChpbnB1dE9iamVjdCwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkUHJvcCA9IG5vcm1hbGl6ZVVuaXRzKHByb3ApO1xuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkUHJvcCkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkSW5wdXRbbm9ybWFsaXplZFByb3BdID0gaW5wdXRPYmplY3RbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRJbnB1dDtcbiAgICB9XG5cbiAgICB2YXIgcHJpb3JpdGllcyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gYWRkVW5pdFByaW9yaXR5KHVuaXQsIHByaW9yaXR5KSB7XG4gICAgICAgIHByaW9yaXRpZXNbdW5pdF0gPSBwcmlvcml0eTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzT2JqKSB7XG4gICAgICAgIHZhciB1bml0cyA9IFtdO1xuICAgICAgICBmb3IgKHZhciB1IGluIHVuaXRzT2JqKSB7XG4gICAgICAgICAgICB1bml0cy5wdXNoKHt1bml0OiB1LCBwcmlvcml0eTogcHJpb3JpdGllc1t1XX0pO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnByaW9yaXR5IC0gYi5wcmlvcml0eTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1bml0cztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB6ZXJvRmlsbChudW1iZXIsIHRhcmdldExlbmd0aCwgZm9yY2VTaWduKSB7XG4gICAgICAgIHZhciBhYnNOdW1iZXIgPSAnJyArIE1hdGguYWJzKG51bWJlciksXG4gICAgICAgICAgICB6ZXJvc1RvRmlsbCA9IHRhcmdldExlbmd0aCAtIGFic051bWJlci5sZW5ndGgsXG4gICAgICAgICAgICBzaWduID0gbnVtYmVyID49IDA7XG4gICAgICAgIHJldHVybiAoc2lnbiA/IChmb3JjZVNpZ24gPyAnKycgOiAnJykgOiAnLScpICtcbiAgICAgICAgICAgIE1hdGgucG93KDEwLCBNYXRoLm1heCgwLCB6ZXJvc1RvRmlsbCkpLnRvU3RyaW5nKCkuc3Vic3RyKDEpICsgYWJzTnVtYmVyO1xuICAgIH1cblxuICAgIHZhciBmb3JtYXR0aW5nVG9rZW5zID0gLyhcXFtbXlxcW10qXFxdKXwoXFxcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xZWVlZWVl8WVlZWVl8WVlZWXxZWXxnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZztcblxuICAgIHZhciBsb2NhbEZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nO1xuXG4gICAgdmFyIGZvcm1hdEZ1bmN0aW9ucyA9IHt9O1xuXG4gICAgdmFyIGZvcm1hdFRva2VuRnVuY3Rpb25zID0ge307XG5cbiAgICAvLyB0b2tlbjogICAgJ00nXG4gICAgLy8gcGFkZGVkOiAgIFsnTU0nLCAyXVxuICAgIC8vIG9yZGluYWw6ICAnTW8nXG4gICAgLy8gY2FsbGJhY2s6IGZ1bmN0aW9uICgpIHsgdGhpcy5tb250aCgpICsgMSB9XG4gICAgZnVuY3Rpb24gYWRkRm9ybWF0VG9rZW4gKHRva2VuLCBwYWRkZWQsIG9yZGluYWwsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBmdW5jID0gY2FsbGJhY2s7XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBmdW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW2NhbGxiYWNrXSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhZGRlZCkge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbcGFkZGVkWzBdXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gemVyb0ZpbGwoZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBwYWRkZWRbMV0sIHBhZGRlZFsyXSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcmRpbmFsKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1tvcmRpbmFsXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkub3JkaW5hbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRva2VuKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVGb3JtYXR0aW5nVG9rZW5zKGlucHV0KSB7XG4gICAgICAgIGlmIChpbnB1dC5tYXRjaCgvXFxbW1xcc1xcU10vKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL15cXFt8XFxdJC9nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1xcXFwvZywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VGb3JtYXRGdW5jdGlvbihmb3JtYXQpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gZm9ybWF0Lm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpLCBpLCBsZW5ndGg7XG5cbiAgICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXRUb2tlbkZ1bmN0aW9uc1thcnJheVtpXV0pIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSByZW1vdmVGb3JtYXR0aW5nVG9rZW5zKGFycmF5W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobW9tKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gJycsIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gaXNGdW5jdGlvbihhcnJheVtpXSkgPyBhcnJheVtpXS5jYWxsKG1vbSwgZm9ybWF0KSA6IGFycmF5W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBmb3JtYXQgZGF0ZSB1c2luZyBuYXRpdmUgZGF0ZSBvYmplY3RcbiAgICBmdW5jdGlvbiBmb3JtYXRNb21lbnQobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBtLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybWF0ID0gZXhwYW5kRm9ybWF0KGZvcm1hdCwgbS5sb2NhbGVEYXRhKCkpO1xuICAgICAgICBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSA9IGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdIHx8IG1ha2VGb3JtYXRGdW5jdGlvbihmb3JtYXQpO1xuXG4gICAgICAgIHJldHVybiBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XShtKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHBhbmRGb3JtYXQoZm9ybWF0LCBsb2NhbGUpIHtcbiAgICAgICAgdmFyIGkgPSA1O1xuXG4gICAgICAgIGZ1bmN0aW9uIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2VucyhpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5sb25nRGF0ZUZvcm1hdChpbnB1dCkgfHwgaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMubGFzdEluZGV4ID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBsb2NhbEZvcm1hdHRpbmdUb2tlbnMudGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShsb2NhbEZvcm1hdHRpbmdUb2tlbnMsIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2Vucyk7XG4gICAgICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoMSAgICAgICAgID0gL1xcZC87ICAgICAgICAgICAgLy8gICAgICAgMCAtIDlcbiAgICB2YXIgbWF0Y2gyICAgICAgICAgPSAvXFxkXFxkLzsgICAgICAgICAgLy8gICAgICAwMCAtIDk5XG4gICAgdmFyIG1hdGNoMyAgICAgICAgID0gL1xcZHszfS87ICAgICAgICAgLy8gICAgIDAwMCAtIDk5OVxuICAgIHZhciBtYXRjaDQgICAgICAgICA9IC9cXGR7NH0vOyAgICAgICAgIC8vICAgIDAwMDAgLSA5OTk5XG4gICAgdmFyIG1hdGNoNiAgICAgICAgID0gL1srLV0/XFxkezZ9LzsgICAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuICAgIHZhciBtYXRjaDF0bzIgICAgICA9IC9cXGRcXGQ/LzsgICAgICAgICAvLyAgICAgICAwIC0gOTlcbiAgICB2YXIgbWF0Y2gzdG80ICAgICAgPSAvXFxkXFxkXFxkXFxkPy87ICAgICAvLyAgICAgOTk5IC0gOTk5OVxuICAgIHZhciBtYXRjaDV0bzYgICAgICA9IC9cXGRcXGRcXGRcXGRcXGRcXGQ/LzsgLy8gICA5OTk5OSAtIDk5OTk5OVxuICAgIHZhciBtYXRjaDF0bzMgICAgICA9IC9cXGR7MSwzfS87ICAgICAgIC8vICAgICAgIDAgLSA5OTlcbiAgICB2YXIgbWF0Y2gxdG80ICAgICAgPSAvXFxkezEsNH0vOyAgICAgICAvLyAgICAgICAwIC0gOTk5OVxuICAgIHZhciBtYXRjaDF0bzYgICAgICA9IC9bKy1dP1xcZHsxLDZ9LzsgIC8vIC05OTk5OTkgLSA5OTk5OTlcblxuICAgIHZhciBtYXRjaFVuc2lnbmVkICA9IC9cXGQrLzsgICAgICAgICAgIC8vICAgICAgIDAgLSBpbmZcbiAgICB2YXIgbWF0Y2hTaWduZWQgICAgPSAvWystXT9cXGQrLzsgICAgICAvLyAgICAtaW5mIC0gaW5mXG5cbiAgICB2YXIgbWF0Y2hPZmZzZXQgICAgPSAvWnxbKy1dXFxkXFxkOj9cXGRcXGQvZ2k7IC8vICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWlxuICAgIHZhciBtYXRjaFNob3J0T2Zmc2V0ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vZ2k7IC8vICswMCAtMDAgKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG5cbiAgICB2YXIgbWF0Y2hUaW1lc3RhbXAgPSAvWystXT9cXGQrKFxcLlxcZHsxLDN9KT8vOyAvLyAxMjM0NTY3ODkgMTIzNDU2Nzg5LjEyM1xuXG4gICAgLy8gYW55IHdvcmQgKG9yIHR3bykgY2hhcmFjdGVycyBvciBudW1iZXJzIGluY2x1ZGluZyB0d28vdGhyZWUgd29yZCBtb250aCBpbiBhcmFiaWMuXG4gICAgLy8gaW5jbHVkZXMgc2NvdHRpc2ggZ2FlbGljIHR3byB3b3JkIGFuZCBoeXBoZW5hdGVkIG1vbnRoc1xuICAgIHZhciBtYXRjaFdvcmQgPSAvWzAtOV17MCwyNTZ9WydhLXpcXHUwMEEwLVxcdTA1RkZcXHUwNzAwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGMDdcXHVGRjEwLVxcdUZGRUZdezEsMjU2fXxbXFx1MDYwMC1cXHUwNkZGXFwvXXsxLDI1Nn0oXFxzKj9bXFx1MDYwMC1cXHUwNkZGXXsxLDI1Nn0pezEsMn0vaTtcblxuICAgIHZhciByZWdleGVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRSZWdleFRva2VuICh0b2tlbiwgcmVnZXgsIHN0cmljdFJlZ2V4KSB7XG4gICAgICAgIHJlZ2V4ZXNbdG9rZW5dID0gaXNGdW5jdGlvbihyZWdleCkgPyByZWdleCA6IGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIChpc1N0cmljdCAmJiBzdHJpY3RSZWdleCkgPyBzdHJpY3RSZWdleCA6IHJlZ2V4O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBhcnNlUmVnZXhGb3JUb2tlbiAodG9rZW4sIGNvbmZpZykge1xuICAgICAgICBpZiAoIWhhc093blByb3AocmVnZXhlcywgdG9rZW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh1bmVzY2FwZUZvcm1hdCh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZ2V4ZXNbdG9rZW5dKGNvbmZpZy5fc3RyaWN0LCBjb25maWcuX2xvY2FsZSk7XG4gICAgfVxuXG4gICAgLy8gQ29kZSBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdFxuICAgIGZ1bmN0aW9uIHVuZXNjYXBlRm9ybWF0KHMpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2V4RXNjYXBlKHMucmVwbGFjZSgnXFxcXCcsICcnKS5yZXBsYWNlKC9cXFxcKFxcWyl8XFxcXChcXF0pfFxcWyhbXlxcXVxcW10qKVxcXXxcXFxcKC4pL2csIGZ1bmN0aW9uIChtYXRjaGVkLCBwMSwgcDIsIHAzLCBwNCkge1xuICAgICAgICAgICAgcmV0dXJuIHAxIHx8IHAyIHx8IHAzIHx8IHA0O1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVnZXhFc2NhcGUocykge1xuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcbiAgICB9XG5cbiAgICB2YXIgdG9rZW5zID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRQYXJzZVRva2VuICh0b2tlbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGksIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRva2VuID0gW3Rva2VuXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1iZXIoY2FsbGJhY2spKSB7XG4gICAgICAgICAgICBmdW5jID0gZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2NhbGxiYWNrXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2VuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5baV1dID0gZnVuYztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFdlZWtQYXJzZVRva2VuICh0b2tlbiwgY2FsbGJhY2spIHtcbiAgICAgICAgYWRkUGFyc2VUb2tlbih0b2tlbiwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikge1xuICAgICAgICAgICAgY29uZmlnLl93ID0gY29uZmlnLl93IHx8IHt9O1xuICAgICAgICAgICAgY2FsbGJhY2soaW5wdXQsIGNvbmZpZy5fdywgY29uZmlnLCB0b2tlbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFRpbWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBpbnB1dCwgY29uZmlnKSB7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsICYmIGhhc093blByb3AodG9rZW5zLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbl0oaW5wdXQsIGNvbmZpZy5fYSwgY29uZmlnLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgWUVBUiA9IDA7XG4gICAgdmFyIE1PTlRIID0gMTtcbiAgICB2YXIgREFURSA9IDI7XG4gICAgdmFyIEhPVVIgPSAzO1xuICAgIHZhciBNSU5VVEUgPSA0O1xuICAgIHZhciBTRUNPTkQgPSA1O1xuICAgIHZhciBNSUxMSVNFQ09ORCA9IDY7XG4gICAgdmFyIFdFRUsgPSA3O1xuICAgIHZhciBXRUVLREFZID0gODtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdZJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgeSA9IHRoaXMueWVhcigpO1xuICAgICAgICByZXR1cm4geSA8PSA5OTk5ID8gJycgKyB5IDogJysnICsgeTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVknLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVknLCAgIDRdLCAgICAgICAwLCAneWVhcicpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWVknLCAgNV0sICAgICAgIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWVknLCA2LCB0cnVlXSwgMCwgJ3llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygneWVhcicsICd5Jyk7XG5cbiAgICAvLyBQUklPUklUSUVTXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3llYXInLCAxKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1knLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWScsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWScsICAgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZWVknLCBtYXRjaDF0bzYsIG1hdGNoNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnWVlZWVknLCAnWVlZWVlZJ10sIFlFQVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gaW5wdXQubGVuZ3RoID09PSAyID8gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpIDogdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1lZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdZJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtZRUFSXSA9IHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBkYXlzSW5ZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIoeWVhcikgPyAzNjYgOiAzNjU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gICAgICAgIHJldHVybiAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCkgfHwgeWVhciAlIDQwMCA9PT0gMDtcbiAgICB9XG5cbiAgICAvLyBIT09LU1xuXG4gICAgaG9va3MucGFyc2VUd29EaWdpdFllYXIgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRvSW50KGlucHV0KSArICh0b0ludChpbnB1dCkgPiA2OCA/IDE5MDAgOiAyMDAwKTtcbiAgICB9O1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFllYXIgPSBtYWtlR2V0U2V0KCdGdWxsWWVhcicsIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gZ2V0SXNMZWFwWWVhciAoKSB7XG4gICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcigpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlR2V0U2V0ICh1bml0LCBrZWVwVGltZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldCQxKHRoaXMsIHVuaXQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywga2VlcFRpbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0KHRoaXMsIHVuaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldCAobW9tLCB1bml0KSB7XG4gICAgICAgIHJldHVybiBtb20uaXNWYWxpZCgpID9cbiAgICAgICAgICAgIG1vbS5fZFsnZ2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSgpIDogTmFOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCQxIChtb20sIHVuaXQsIHZhbHVlKSB7XG4gICAgICAgIGlmIChtb20uaXNWYWxpZCgpICYmICFpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh1bml0ID09PSAnRnVsbFllYXInICYmIGlzTGVhcFllYXIobW9tLnllYXIoKSkgJiYgbW9tLm1vbnRoKCkgPT09IDEgJiYgbW9tLmRhdGUoKSA9PT0gMjkpIHtcbiAgICAgICAgICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0odmFsdWUsIG1vbS5tb250aCgpLCBkYXlzSW5Nb250aCh2YWx1ZSwgbW9tLm1vbnRoKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdHZXQgKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzW3VuaXRzXSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gc3RyaW5nU2V0ICh1bml0cywgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1bml0cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplT2JqZWN0VW5pdHModW5pdHMpO1xuICAgICAgICAgICAgdmFyIHByaW9yaXRpemVkID0gZ2V0UHJpb3JpdGl6ZWRVbml0cyh1bml0cyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByaW9yaXRpemVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpc1twcmlvcml0aXplZFtpXS51bml0XSh1bml0c1twcmlvcml0aXplZFtpXS51bml0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW3VuaXRzXSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9kKG4sIHgpIHtcbiAgICAgICAgcmV0dXJuICgobiAlIHgpICsgeCkgJSB4O1xuICAgIH1cblxuICAgIHZhciBpbmRleE9mO1xuXG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7XG4gICAgICAgIGluZGV4T2YgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleE9mID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgICAgIC8vIEkga25vd1xuICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzW2ldID09PSBvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkge1xuICAgICAgICBpZiAoaXNOYU4oeWVhcikgfHwgaXNOYU4obW9udGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtb2RNb250aCA9IG1vZChtb250aCwgMTIpO1xuICAgICAgICB5ZWFyICs9IChtb250aCAtIG1vZE1vbnRoKSAvIDEyO1xuICAgICAgICByZXR1cm4gbW9kTW9udGggPT09IDEgPyAoaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDogMjgpIDogKDMxIC0gbW9kTW9udGggJSA3ICUgMik7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ00nLCBbJ01NJywgMl0sICdNbycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGgoKSArIDE7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21vbnRoJywgJ00nKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21vbnRoJywgOCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdNJywgICAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdNTScsICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTScsICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NTU0nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNJywgJ01NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTU9OVEhdID0gdG9JbnQoaW5wdXQpIC0gMTtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydNTU0nLCAnTU1NTSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciBtb250aCA9IGNvbmZpZy5fbG9jYWxlLm1vbnRoc1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpO1xuICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhIG1vbnRoIG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZC5cbiAgICAgICAgaWYgKG1vbnRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIGFycmF5W01PTlRIXSA9IG1vbnRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZE1vbnRoID0gaW5wdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIHZhciBNT05USFNfSU5fRk9STUFUID0gL0Rbb0RdPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrTU1NTT8vO1xuICAgIHZhciBkZWZhdWx0TG9jYWxlTW9udGhzID0gJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzIChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpID8gdGhpcy5fbW9udGhzIDpcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpID8gdGhpcy5fbW9udGhzW20ubW9udGgoKV0gOlxuICAgICAgICAgICAgdGhpcy5fbW9udGhzWyh0aGlzLl9tb250aHMuaXNGb3JtYXQgfHwgTU9OVEhTX0lOX0ZPUk1BVCkudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCA9ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNTaG9ydCAobSwgZm9ybWF0KSB7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpID8gdGhpcy5fbW9udGhzU2hvcnQgOlxuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0WydzdGFuZGFsb25lJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpID8gdGhpcy5fbW9udGhzU2hvcnRbbS5tb250aCgpXSA6XG4gICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFtNT05USFNfSU5fRk9STUFULnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLm1vbnRoKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVN0cmljdFBhcnNlKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IG1vbnRoTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCB1c2VkXG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7ICsraSkge1xuICAgICAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldID0gdGhpcy5tb250aHMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdNTU0nKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzUGFyc2UgKG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIG1vbSwgcmVnZXg7XG5cbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZS5jYWxsKHRoaXMsIG1vbnRoTmFtZSwgZm9ybWF0LCBzdHJpY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9tb250aHNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogYWRkIHNvcnRpbmdcbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlclxuICAgICAgICAvLyBzZWUgc29ydGluZyBpbiBjb21wdXRlTW9udGhzUGFyc2VcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdHJpY3QgJiYgIXRoaXMuX21vbnRoc1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgcmVnZXggPSAnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKSArICd8XicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnTU1NTScgJiYgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnTU1NJyAmJiB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX21vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gc2V0TW9udGggKG1vbSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGRheU9mTW9udGg7XG5cbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAvLyBObyBvcFxuICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoL15cXGQrJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvSW50KHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBtb20ubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBBbm90aGVyIHNpbGVudCBmYWlsdXJlP1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGF5T2ZNb250aCA9IE1hdGgubWluKG1vbS5kYXRlKCksIGRheXNJbk1vbnRoKG1vbS55ZWFyKCksIHZhbHVlKSk7XG4gICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyAnTW9udGgnXSh2YWx1ZSwgZGF5T2ZNb250aCk7XG4gICAgICAgIHJldHVybiBtb207XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0TW9udGggKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZXRNb250aCh0aGlzLCB2YWx1ZSk7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgJ01vbnRoJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXlzSW5Nb250aCAoKSB7XG4gICAgICAgIHJldHVybiBkYXlzSW5Nb250aCh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gbW9udGhzU2hvcnRSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1Nob3J0UmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSBkZWZhdWx0TW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fbW9udGhzU2hvcnRSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TW9udGhzUmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gbW9udGhzUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgY29tcHV0ZU1vbnRoc1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNSZWdleCA9IGRlZmF1bHRNb250aHNSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVNb250aHNQYXJzZSAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLCBtb207XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgaV0pO1xuICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaCh0aGlzLm1vbnRocyhtb20sICcnKSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHNTaG9ydChtb20sICcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdFxuICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuXG4gICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHNob3J0UGllY2VzW2ldID0gcmVnZXhFc2NhcGUoc2hvcnRQaWVjZXNbaV0pO1xuICAgICAgICAgICAgbG9uZ1BpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKGxvbmdQaWVjZXNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNDsgaSsrKSB7XG4gICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1peGVkUGllY2VzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl9tb250aHNTaG9ydFJlZ2V4ID0gdGhpcy5fbW9udGhzUmVnZXg7XG4gICAgICAgIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbG9uZ1BpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRGF0ZSAoeSwgbSwgZCwgaCwgTSwgcywgbXMpIHtcbiAgICAgICAgLy8gY2FuJ3QganVzdCBhcHBseSgpIHRvIGNyZWF0ZSBhIGRhdGU6XG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8xODEzNDhcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh5LCBtLCBkLCBoLCBNLCBzLCBtcyk7XG5cbiAgICAgICAgLy8gdGhlIGRhdGUgY29uc3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCAmJiBpc0Zpbml0ZShkYXRlLmdldEZ1bGxZZWFyKCkpKSB7XG4gICAgICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVUQ0RhdGUgKHkpIHtcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcblxuICAgICAgICAvLyB0aGUgRGF0ZS5VVEMgZnVuY3Rpb24gcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCAmJiBpc0Zpbml0ZShkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpKSB7XG4gICAgICAgICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIC8vIHN0YXJ0LW9mLWZpcnN0LXdlZWsgLSBzdGFydC1vZi15ZWFyXG4gICAgZnVuY3Rpb24gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSB7XG4gICAgICAgIHZhciAvLyBmaXJzdC13ZWVrIGRheSAtLSB3aGljaCBqYW51YXJ5IGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayAoNCBmb3IgaXNvLCAxIGZvciBvdGhlcilcbiAgICAgICAgICAgIGZ3ZCA9IDcgKyBkb3cgLSBkb3ksXG4gICAgICAgICAgICAvLyBmaXJzdC13ZWVrIGRheSBsb2NhbCB3ZWVrZGF5IC0tIHdoaWNoIGxvY2FsIHdlZWtkYXkgaXMgZndkXG4gICAgICAgICAgICBmd2RsdyA9ICg3ICsgY3JlYXRlVVRDRGF0ZSh5ZWFyLCAwLCBmd2QpLmdldFVUQ0RheSgpIC0gZG93KSAlIDc7XG5cbiAgICAgICAgcmV0dXJuIC1md2RsdyArIGZ3ZCAtIDE7XG4gICAgfVxuXG4gICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSNDYWxjdWxhdGluZ19hX2RhdGVfZ2l2ZW5fdGhlX3llYXIuMkNfd2Vla19udW1iZXJfYW5kX3dlZWtkYXlcbiAgICBmdW5jdGlvbiBkYXlPZlllYXJGcm9tV2Vla3MoeWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGxvY2FsV2Vla2RheSA9ICg3ICsgd2Vla2RheSAtIGRvdykgJSA3LFxuICAgICAgICAgICAgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICBkYXlPZlllYXIgPSAxICsgNyAqICh3ZWVrIC0gMSkgKyBsb2NhbFdlZWtkYXkgKyB3ZWVrT2Zmc2V0LFxuICAgICAgICAgICAgcmVzWWVhciwgcmVzRGF5T2ZZZWFyO1xuXG4gICAgICAgIGlmIChkYXlPZlllYXIgPD0gMCkge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXIgLSAxO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5c0luWWVhcihyZXNZZWFyKSArIGRheU9mWWVhcjtcbiAgICAgICAgfSBlbHNlIGlmIChkYXlPZlllYXIgPiBkYXlzSW5ZZWFyKHllYXIpKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciArIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlPZlllYXIgLSBkYXlzSW5ZZWFyKHllYXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXI7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlPZlllYXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcjogcmVzWWVhcixcbiAgICAgICAgICAgIGRheU9mWWVhcjogcmVzRGF5T2ZZZWFyXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla09mWWVhcihtb20sIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KG1vbS55ZWFyKCksIGRvdywgZG95KSxcbiAgICAgICAgICAgIHdlZWsgPSBNYXRoLmZsb29yKChtb20uZGF5T2ZZZWFyKCkgLSB3ZWVrT2Zmc2V0IC0gMSkgLyA3KSArIDEsXG4gICAgICAgICAgICByZXNXZWVrLCByZXNZZWFyO1xuXG4gICAgICAgIGlmICh3ZWVrIDwgMSkge1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCkgLSAxO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWsgKyB3ZWVrc0luWWVhcihyZXNZZWFyLCBkb3csIGRveSk7XG4gICAgICAgIH0gZWxzZSBpZiAod2VlayA+IHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KSkge1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWsgLSB3ZWVrc0luWWVhcihtb20ueWVhcigpLCBkb3csIGRveSk7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKTtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdlZWs6IHJlc1dlZWssXG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2Vla3NJblllYXIoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2Vla09mZnNldE5leHQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciArIDEsIGRvdywgZG95KTtcbiAgICAgICAgcmV0dXJuIChkYXlzSW5ZZWFyKHllYXIpIC0gd2Vla09mZnNldCArIHdlZWtPZmZzZXROZXh0KSAvIDc7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3cnLCBbJ3d3JywgMl0sICd3bycsICd3ZWVrJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ1cnLCBbJ1dXJywgMl0sICdXbycsICdpc29XZWVrJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ3dlZWsnLCAndycpO1xuICAgIGFkZFVuaXRBbGlhcygnaXNvV2VlaycsICdXJyk7XG5cbiAgICAvLyBQUklPUklUSUVTXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWsnLCA1KTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2lzb1dlZWsnLCA1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3cnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCd3dycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdXJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignV1cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ3cnLCAnd3cnLCAnVycsICdXVyddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbi5zdWJzdHIoMCwgMSldID0gdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2VlayAobW9tKSB7XG4gICAgICAgIHJldHVybiB3ZWVrT2ZZZWFyKG1vbSwgdGhpcy5fd2Vlay5kb3csIHRoaXMuX3dlZWsuZG95KS53ZWVrO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2VlayA9IHtcbiAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRmlyc3REYXlPZldlZWsgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2Vlay5kb3c7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlRmlyc3REYXlPZlllYXIgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2Vlay5kb3k7XG4gICAgfVxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0V2VlayAoaW5wdXQpIHtcbiAgICAgICAgdmFyIHdlZWsgPSB0aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFkZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPV2VlayAoaW5wdXQpIHtcbiAgICAgICAgdmFyIHdlZWsgPSB3ZWVrT2ZZZWFyKHRoaXMsIDEsIDQpLndlZWs7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignZCcsIDAsICdkbycsICdkYXknKTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzTWluKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2UnLCAwLCAwLCAnd2Vla2RheScpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdFJywgMCwgMCwgJ2lzb1dlZWtkYXknKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF5JywgJ2QnKTtcbiAgICBhZGRVbml0QWxpYXMoJ3dlZWtkYXknLCAnZScpO1xuICAgIGFkZFVuaXRBbGlhcygnaXNvV2Vla2RheScsICdFJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnZGF5JywgMTEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnd2Vla2RheScsIDExKTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2lzb1dlZWtkYXknLCAxMSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdkJywgICAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdlJywgICAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdFJywgICAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c01pblJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcbiAgICBhZGRSZWdleFRva2VuKCdkZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNTaG9ydFJlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcbiAgICBhZGRSZWdleFRva2VuKCdkZGRkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkZCcsICdkZGQnLCAnZGRkZCddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIHdlZWtkYXkgPSBjb25maWcuX2xvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpO1xuICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZ2V0IGEgd2Vla2RheSBuYW1lLCBtYXJrIHRoZSBkYXRlIGFzIGludmFsaWRcbiAgICAgICAgaWYgKHdlZWtkYXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgd2Vlay5kID0gd2Vla2RheTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRXZWVrZGF5ID0gaW5wdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZCcsICdlJywgJ0UnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW5dID0gdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgZnVuY3Rpb24gcGFyc2VXZWVrZGF5KGlucHV0LCBsb2NhbGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNOYU4oaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0ID0gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpO1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VJc29XZWVrZGF5KGlucHV0LCBsb2NhbGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCkgJSA3IHx8IDc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTmFOKGlucHV0KSA/IG51bGwgOiBpbnB1dDtcbiAgICB9XG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzID0gJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzIChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl93ZWVrZGF5cykgPyB0aGlzLl93ZWVrZGF5cyA6XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl93ZWVrZGF5cykgPyB0aGlzLl93ZWVrZGF5c1ttLmRheSgpXSA6XG4gICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1t0aGlzLl93ZWVrZGF5cy5pc0Zvcm1hdC50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5kYXkoKV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0ID0gJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c1Nob3J0IChtKSB7XG4gICAgICAgIHJldHVybiAobSkgPyB0aGlzLl93ZWVrZGF5c1Nob3J0W20uZGF5KCldIDogdGhpcy5fd2Vla2RheXNTaG9ydDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluID0gJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzTWluIChtKSB7XG4gICAgICAgIHJldHVybiAobSkgPyB0aGlzLl93ZWVrZGF5c01pblttLmRheSgpXSA6IHRoaXMuX3dlZWtkYXlzTWluO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVN0cmljdFBhcnNlJDEod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBpaSwgbW9tLCBsbGMgPSB3ZWVrZGF5TmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGRkZCcpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzUGFyc2UgKHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlU3RyaWN0UGFyc2UkMS5jYWxsKHRoaXMsIHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2UgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuXG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXFxcXC4/JykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9ICdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpICsgJ3xeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAocmVnZXgucmVwbGFjZSgnLicsICcnKSwgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgdGhlIHJlZ2V4XG4gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZGQnICYmIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZGQnICYmIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGQnICYmIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXREYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5ID0gdGhpcy5faXNVVEMgPyB0aGlzLl9kLmdldFVUQ0RheSgpIDogdGhpcy5fZC5nZXREYXkoKTtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlucHV0ID0gcGFyc2VXZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQoaW5wdXQgLSBkYXksICdkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGF5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0TG9jYWxlRGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdlZWtkYXkgPSAodGhpcy5kYXkoKSArIDcgLSB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3cpICUgNztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrZGF5IDogdGhpcy5hZGQoaW5wdXQgLSB3ZWVrZGF5LCAnZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT0RheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYmVoYXZlcyB0aGUgc2FtZSBhcyBtb21lbnQjZGF5IGV4Y2VwdFxuICAgICAgICAvLyBhcyBhIGdldHRlciwgcmV0dXJucyA3IGluc3RlYWQgb2YgMCAoMS03IHJhbmdlIGluc3RlYWQgb2YgMC02KVxuICAgICAgICAvLyBhcyBhIHNldHRlciwgc3VuZGF5IHNob3VsZCBiZWxvbmcgdG8gdGhlIHByZXZpb3VzIHdlZWsuXG5cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciB3ZWVrZGF5ID0gcGFyc2VJc29XZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSAlIDcgPyB3ZWVrZGF5IDogd2Vla2RheSAtIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgfHwgNztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0V2Vla2RheXNSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1JlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IGRlZmF1bHRXZWVrZGF5c1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXggPSBtYXRjaFdvcmQ7XG4gICAgZnVuY3Rpb24gd2Vla2RheXNTaG9ydFJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0V2Vla2RheXNNaW5SZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c01pblJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNNaW5SZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBjb21wdXRlV2Vla2RheXNQYXJzZSAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBtaW5QaWVjZXMgPSBbXSwgc2hvcnRQaWVjZXMgPSBbXSwgbG9uZ1BpZWNlcyA9IFtdLCBtaXhlZFBpZWNlcyA9IFtdLFxuICAgICAgICAgICAgaSwgbW9tLCBtaW5wLCBzaG9ydHAsIGxvbmdwO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHlcbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIG1pbnAgPSB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpO1xuICAgICAgICAgICAgc2hvcnRwID0gdGhpcy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpO1xuICAgICAgICAgICAgbG9uZ3AgPSB0aGlzLndlZWtkYXlzKG1vbSwgJycpO1xuICAgICAgICAgICAgbWluUGllY2VzLnB1c2gobWlucCk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHNob3J0cCk7XG4gICAgICAgICAgICBsb25nUGllY2VzLnB1c2gobG9uZ3ApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2gobG9uZ3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgd2Vla2RheSAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdFxuICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuXG4gICAgICAgIG1pblBpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7XG4gICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1peGVkUGllY2VzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluUmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4O1xuXG4gICAgICAgIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgc2hvcnRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWluUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBoRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpICUgMTIgfHwgMTI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga0Zvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKSB8fCAyNDtcbiAgICB9XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSCcsIFsnSEgnLCAyXSwgMCwgJ2hvdXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignaCcsIFsnaGgnLCAyXSwgMCwgaEZvcm1hdCk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ2snLCBbJ2trJywgMl0sIDAsIGtGb3JtYXQpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgaEZvcm1hdC5hcHBseSh0aGlzKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdobW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgaEZvcm1hdC5hcHBseSh0aGlzKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyB0aGlzLmhvdXJzKCkgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignSG1tc3MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKSArXG4gICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMik7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBtZXJpZGllbSAodG9rZW4sIGxvd2VyY2FzZSkge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1lcmlkaWVtKHRoaXMuaG91cnMoKSwgdGhpcy5taW51dGVzKCksIGxvd2VyY2FzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1lcmlkaWVtKCdhJywgdHJ1ZSk7XG4gICAgbWVyaWRpZW0oJ0EnLCBmYWxzZSk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2hvdXInLCAnaCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2hvdXInLCAxMyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBmdW5jdGlvbiBtYXRjaE1lcmlkaWVtIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUuX21lcmlkaWVtUGFyc2U7XG4gICAgfVxuXG4gICAgYWRkUmVnZXhUb2tlbignYScsICBtYXRjaE1lcmlkaWVtKTtcbiAgICBhZGRSZWdleFRva2VuKCdBJywgIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0gnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdoJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignaycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0hIJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2hoJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2trJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkUmVnZXhUb2tlbignaG1tJywgbWF0Y2gzdG80KTtcbiAgICBhZGRSZWdleFRva2VuKCdobW1zcycsIG1hdGNoNXRvNik7XG4gICAgYWRkUmVnZXhUb2tlbignSG1tJywgbWF0Y2gzdG80KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW1zcycsIG1hdGNoNXRvNik7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnSCcsICdISCddLCBIT1VSKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnaycsICdrayddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIGtJbnB1dCA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSBrSW5wdXQgPT09IDI0ID8gMCA6IGtJbnB1dDtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnYScsICdBJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2lzUG0gPSBjb25maWcuX2xvY2FsZS5pc1BNKGlucHV0KTtcbiAgICAgICAgY29uZmlnLl9tZXJpZGllbSA9IGlucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydoJywgJ2hoJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0KTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignaG1tJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MpKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignaG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0O1xuICAgICAgICB2YXIgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdIbW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIHZhciBwb3MxID0gaW5wdXQubGVuZ3RoIC0gNDtcbiAgICAgICAgdmFyIHBvczIgPSBpbnB1dC5sZW5ndGggLSAyO1xuICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMSwgMikpO1xuICAgICAgICBhcnJheVtTRUNPTkRdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczIpKTtcbiAgICB9KTtcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUlzUE0gKGlucHV0KSB7XG4gICAgICAgIC8vIElFOCBRdWlya3MgTW9kZSAmIElFNyBTdGFuZGFyZHMgTW9kZSBkbyBub3QgYWxsb3cgYWNjZXNzaW5nIHN0cmluZ3MgbGlrZSBhcnJheXNcbiAgICAgICAgLy8gVXNpbmcgY2hhckF0IHNob3VsZCBiZSBtb3JlIGNvbXBhdGlibGUuXG4gICAgICAgIHJldHVybiAoKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApID09PSAncCcpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZSA9IC9bYXBdXFwuP20/XFwuPy9pO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1lcmlkaWVtIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncG0nIDogJ1BNJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2FtJyA6ICdBTSc7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIFNldHRpbmcgdGhlIGhvdXIgc2hvdWxkIGtlZXAgdGhlIHRpbWUsIGJlY2F1c2UgdGhlIHVzZXIgZXhwbGljaXRseVxuICAgIC8vIHNwZWNpZmllZCB3aGljaCBob3VyIHRoZXkgd2FudC4gU28gdHJ5aW5nIHRvIG1haW50YWluIHRoZSBzYW1lIGhvdXIgKGluXG4gICAgLy8gYSBuZXcgdGltZXpvbmUpIG1ha2VzIHNlbnNlLiBBZGRpbmcvc3VidHJhY3RpbmcgaG91cnMgZG9lcyBub3QgZm9sbG93XG4gICAgLy8gdGhpcyBydWxlLlxuICAgIHZhciBnZXRTZXRIb3VyID0gbWFrZUdldFNldCgnSG91cnMnLCB0cnVlKTtcblxuICAgIHZhciBiYXNlQ29uZmlnID0ge1xuICAgICAgICBjYWxlbmRhcjogZGVmYXVsdENhbGVuZGFyLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDogZGVmYXVsdExvbmdEYXRlRm9ybWF0LFxuICAgICAgICBpbnZhbGlkRGF0ZTogZGVmYXVsdEludmFsaWREYXRlLFxuICAgICAgICBvcmRpbmFsOiBkZWZhdWx0T3JkaW5hbCxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UsXG4gICAgICAgIHJlbGF0aXZlVGltZTogZGVmYXVsdFJlbGF0aXZlVGltZSxcblxuICAgICAgICBtb250aHM6IGRlZmF1bHRMb2NhbGVNb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQsXG5cbiAgICAgICAgd2VlazogZGVmYXVsdExvY2FsZVdlZWssXG5cbiAgICAgICAgd2Vla2RheXM6IGRlZmF1bHRMb2NhbGVXZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW46IGRlZmF1bHRMb2NhbGVXZWVrZGF5c01pbixcbiAgICAgICAgd2Vla2RheXNTaG9ydDogZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQsXG5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogZGVmYXVsdExvY2FsZU1lcmlkaWVtUGFyc2VcbiAgICB9O1xuXG4gICAgLy8gaW50ZXJuYWwgc3RvcmFnZSBmb3IgbG9jYWxlIGNvbmZpZyBmaWxlc1xuICAgIHZhciBsb2NhbGVzID0ge307XG4gICAgdmFyIGxvY2FsZUZhbWlsaWVzID0ge307XG4gICAgdmFyIGdsb2JhbExvY2FsZTtcblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUxvY2FsZShrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleSA/IGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ18nLCAnLScpIDoga2V5O1xuICAgIH1cblxuICAgIC8vIHBpY2sgdGhlIGxvY2FsZSBmcm9tIHRoZSBhcnJheVxuICAgIC8vIHRyeSBbJ2VuLWF1JywgJ2VuLWdiJ10gYXMgJ2VuLWF1JywgJ2VuLWdiJywgJ2VuJywgYXMgaW4gbW92ZSB0aHJvdWdoIHRoZSBsaXN0IHRyeWluZyBlYWNoXG4gICAgLy8gc3Vic3RyaW5nIGZyb20gbW9zdCBzcGVjaWZpYyB0byBsZWFzdCwgYnV0IG1vdmUgdG8gdGhlIG5leHQgYXJyYXkgaXRlbSBpZiBpdCdzIGEgbW9yZSBzcGVjaWZpYyB2YXJpYW50IHRoYW4gdGhlIGN1cnJlbnQgcm9vdFxuICAgIGZ1bmN0aW9uIGNob29zZUxvY2FsZShuYW1lcykge1xuICAgICAgICB2YXIgaSA9IDAsIGosIG5leHQsIGxvY2FsZSwgc3BsaXQ7XG5cbiAgICAgICAgd2hpbGUgKGkgPCBuYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNwbGl0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2ldKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgaiA9IHNwbGl0Lmxlbmd0aDtcbiAgICAgICAgICAgIG5leHQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaSArIDFdKTtcbiAgICAgICAgICAgIG5leHQgPSBuZXh0ID8gbmV4dC5zcGxpdCgnLScpIDogbnVsbDtcbiAgICAgICAgICAgIHdoaWxlIChqID4gMCkge1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoc3BsaXQuc2xpY2UoMCwgaikuam9pbignLScpKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQubGVuZ3RoID49IGogJiYgY29tcGFyZUFycmF5cyhzcGxpdCwgbmV4dCwgdHJ1ZSkgPj0gaiAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy90aGUgbmV4dCBhcnJheSBpdGVtIGlzIGJldHRlciB0aGFuIGEgc2hhbGxvd2VyIHN1YnN0cmluZyBvZiB0aGlzIG9uZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgai0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9hZExvY2FsZShuYW1lKSB7XG4gICAgICAgIHZhciBvbGRMb2NhbGUgPSBudWxsO1xuICAgICAgICAvLyBUT0RPOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWdpc3RlciBhbmQgbG9hZCBhbGwgdGhlIGxvY2FsZXMgaW4gTm9kZVxuICAgICAgICBpZiAoIWxvY2FsZXNbbmFtZV0gJiYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSAmJlxuICAgICAgICAgICAgICAgIG1vZHVsZSAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBvbGRMb2NhbGUgPSBnbG9iYWxMb2NhbGUuX2FiYnI7XG4gICAgICAgICAgICAgICAgdmFyIGFsaWFzZWRSZXF1aXJlID0gcmVxdWlyZTtcbiAgICAgICAgICAgICAgICBhbGlhc2VkUmVxdWlyZSgnLi9sb2NhbGUvJyArIG5hbWUpO1xuICAgICAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShvbGRMb2NhbGUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgbG9hZCBsb2NhbGUgYW5kIHRoZW4gc2V0IHRoZSBnbG9iYWwgbG9jYWxlLiAgSWZcbiAgICAvLyBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCBpbiwgaXQgd2lsbCBzaW1wbHkgcmV0dXJuIHRoZSBjdXJyZW50IGdsb2JhbFxuICAgIC8vIGxvY2FsZSBrZXkuXG4gICAgZnVuY3Rpb24gZ2V0U2V0R2xvYmFsTG9jYWxlIChrZXksIHZhbHVlcykge1xuICAgICAgICB2YXIgZGF0YTtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZGVmaW5lTG9jYWxlKGtleSwgdmFsdWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAvLyBtb21lbnQuZHVyYXRpb24uX2xvY2FsZSA9IG1vbWVudC5fbG9jYWxlID0gZGF0YTtcbiAgICAgICAgICAgICAgICBnbG9iYWxMb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgY29uc29sZSAhPT0gICd1bmRlZmluZWQnKSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICAgICAgICAgICAgLy93YXJuIHVzZXIgaWYgYXJndW1lbnRzIGFyZSBwYXNzZWQgYnV0IHRoZSBsb2NhbGUgY291bGQgbm90IGJlIHNldFxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0xvY2FsZSAnICsga2V5ICsgICcgbm90IGZvdW5kLiBEaWQgeW91IGZvcmdldCB0byBsb2FkIGl0PycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGUuX2FiYnI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVmaW5lTG9jYWxlIChuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZSwgcGFyZW50Q29uZmlnID0gYmFzZUNvbmZpZztcbiAgICAgICAgICAgIGNvbmZpZy5hYmJyID0gbmFtZTtcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUoJ2RlZmluZUxvY2FsZU92ZXJyaWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgbW9tZW50LnVwZGF0ZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHRvIGNoYW5nZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbiBleGlzdGluZyBsb2NhbGUuIG1vbWVudC5kZWZpbmVMb2NhbGUobG9jYWxlTmFtZSwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnKSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGUgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZGVmaW5lLWxvY2FsZS8gZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW25hbWVdLl9jb25maWc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tjb25maWcucGFyZW50TG9jYWxlXS5fY29uZmlnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvYWRMb2NhbGUoY29uZmlnLnBhcmVudExvY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlLl9jb25maWc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZUZhbWlsaWVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBjb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbmV3IExvY2FsZShtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjb25maWcpKTtcblxuICAgICAgICAgICAgaWYgKGxvY2FsZUZhbWlsaWVzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbbmFtZV0uZm9yRWFjaChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBkZWZpbmVMb2NhbGUoeC5uYW1lLCB4LmNvbmZpZyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZVxuICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIHNldCB0aGUgbG9jYWxlIEFGVEVSIGFsbCBjaGlsZCBsb2NhbGVzIGhhdmUgYmVlblxuICAgICAgICAgICAgLy8gY3JlYXRlZCwgc28gd2Ugd29uJ3QgZW5kIHVwIHdpdGggdGhlIGNoaWxkIGxvY2FsZSBzZXQuXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG5cblxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB1c2VmdWwgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVMb2NhbGUobmFtZSwgY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZSwgdG1wTG9jYWxlLCBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgLy8gTUVSR0VcbiAgICAgICAgICAgIHRtcExvY2FsZSA9IGxvYWRMb2NhbGUobmFtZSk7XG4gICAgICAgICAgICBpZiAodG1wTG9jYWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSB0bXBMb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZyA9IG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZyk7XG4gICAgICAgICAgICBsb2NhbGUgPSBuZXcgTG9jYWxlKGNvbmZpZyk7XG4gICAgICAgICAgICBsb2NhbGUucGFyZW50TG9jYWxlID0gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGU7XG5cbiAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZVxuICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcGFzcyBudWxsIGZvciBjb25maWcgdG8gdW51cGRhdGUsIHVzZWZ1bCBmb3IgdGVzdHNcbiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIHJldHVybnMgbG9jYWxlIGRhdGFcbiAgICBmdW5jdGlvbiBnZXRMb2NhbGUgKGtleSkge1xuICAgICAgICB2YXIgbG9jYWxlO1xuXG4gICAgICAgIGlmIChrZXkgJiYga2V5Ll9sb2NhbGUgJiYga2V5Ll9sb2NhbGUuX2FiYnIpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS5fbG9jYWxlLl9hYmJyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxMb2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQXJyYXkoa2V5KSkge1xuICAgICAgICAgICAgLy9zaG9ydC1jaXJjdWl0IGV2ZXJ5dGhpbmcgZWxzZVxuICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShrZXkpO1xuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXkgPSBba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaG9vc2VMb2NhbGUoa2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TG9jYWxlcygpIHtcbiAgICAgICAgcmV0dXJuIGtleXMobG9jYWxlcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tPdmVyZmxvdyAobSkge1xuICAgICAgICB2YXIgb3ZlcmZsb3c7XG4gICAgICAgIHZhciBhID0gbS5fYTtcblxuICAgICAgICBpZiAoYSAmJiBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPT09IC0yKSB7XG4gICAgICAgICAgICBvdmVyZmxvdyA9XG4gICAgICAgICAgICAgICAgYVtNT05USF0gICAgICAgPCAwIHx8IGFbTU9OVEhdICAgICAgID4gMTEgID8gTU9OVEggOlxuICAgICAgICAgICAgICAgIGFbREFURV0gICAgICAgIDwgMSB8fCBhW0RBVEVdICAgICAgICA+IGRheXNJbk1vbnRoKGFbWUVBUl0sIGFbTU9OVEhdKSA/IERBVEUgOlxuICAgICAgICAgICAgICAgIGFbSE9VUl0gICAgICAgIDwgMCB8fCBhW0hPVVJdICAgICAgICA+IDI0IHx8IChhW0hPVVJdID09PSAyNCAmJiAoYVtNSU5VVEVdICE9PSAwIHx8IGFbU0VDT05EXSAhPT0gMCB8fCBhW01JTExJU0VDT05EXSAhPT0gMCkpID8gSE9VUiA6XG4gICAgICAgICAgICAgICAgYVtNSU5VVEVdICAgICAgPCAwIHx8IGFbTUlOVVRFXSAgICAgID4gNTkgID8gTUlOVVRFIDpcbiAgICAgICAgICAgICAgICBhW1NFQ09ORF0gICAgICA8IDAgfHwgYVtTRUNPTkRdICAgICAgPiA1OSAgPyBTRUNPTkQgOlxuICAgICAgICAgICAgICAgIGFbTUlMTElTRUNPTkRdIDwgMCB8fCBhW01JTExJU0VDT05EXSA+IDk5OSA/IE1JTExJU0VDT05EIDpcbiAgICAgICAgICAgICAgICAtMTtcblxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dEYXlPZlllYXIgJiYgKG92ZXJmbG93IDwgWUVBUiB8fCBvdmVyZmxvdyA+IERBVEUpKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBEQVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldFBhcnNpbmdGbGFncyhtKS5fb3ZlcmZsb3dXZWVrcyAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtkYXkgJiYgb3ZlcmZsb3cgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBXRUVLREFZO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPSBvdmVyZmxvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIC8vIFBpY2sgdGhlIGZpcnN0IGRlZmluZWQgb2YgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy5cbiAgICBmdW5jdGlvbiBkZWZhdWx0cyhhLCBiLCBjKSB7XG4gICAgICAgIGlmIChhICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKSB7XG4gICAgICAgIC8vIGhvb2tzIGlzIGFjdHVhbGx5IHRoZSBleHBvcnRlZCBtb21lbnQgb2JqZWN0XG4gICAgICAgIHZhciBub3dWYWx1ZSA9IG5ldyBEYXRlKGhvb2tzLm5vdygpKTtcbiAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDKSB7XG4gICAgICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksIG5vd1ZhbHVlLmdldFVUQ01vbnRoKCksIG5vd1ZhbHVlLmdldFVUQ0RhdGUoKV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtub3dWYWx1ZS5nZXRGdWxsWWVhcigpLCBub3dWYWx1ZS5nZXRNb250aCgpLCBub3dWYWx1ZS5nZXREYXRlKCldO1xuICAgIH1cblxuICAgIC8vIGNvbnZlcnQgYW4gYXJyYXkgdG8gYSBkYXRlLlxuICAgIC8vIHRoZSBhcnJheSBzaG91bGQgbWlycm9yIHRoZSBwYXJhbWV0ZXJzIGJlbG93XG4gICAgLy8gbm90ZTogYWxsIHZhbHVlcyBwYXN0IHRoZSB5ZWFyIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBsb3dlc3QgcG9zc2libGUgdmFsdWUuXG4gICAgLy8gW3llYXIsIG1vbnRoLCBkYXkgLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUFycmF5IChjb25maWcpIHtcbiAgICAgICAgdmFyIGksIGRhdGUsIGlucHV0ID0gW10sIGN1cnJlbnREYXRlLCBleHBlY3RlZFdlZWtkYXksIHllYXJUb1VzZTtcblxuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKTtcblxuICAgICAgICAvL2NvbXB1dGUgZGF5IG9mIHRoZSB5ZWFyIGZyb20gd2Vla3MgYW5kIHdlZWtkYXlzXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgY29uZmlnLl9hW0RBVEVdID09IG51bGwgJiYgY29uZmlnLl9hW01PTlRIXSA9PSBudWxsKSB7XG4gICAgICAgICAgICBkYXlPZlllYXJGcm9tV2Vla0luZm8oY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vaWYgdGhlIGRheSBvZiB0aGUgeWVhciBpcyBzZXQsIGZpZ3VyZSBvdXQgd2hhdCBpdCBpc1xuICAgICAgICBpZiAoY29uZmlnLl9kYXlPZlllYXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgeWVhclRvVXNlID0gZGVmYXVsdHMoY29uZmlnLl9hW1lFQVJdLCBjdXJyZW50RGF0ZVtZRUFSXSk7XG5cbiAgICAgICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciA+IGRheXNJblllYXIoeWVhclRvVXNlKSB8fCBjb25maWcuX2RheU9mWWVhciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd0RheU9mWWVhciA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKHllYXJUb1VzZSwgMCwgY29uZmlnLl9kYXlPZlllYXIpO1xuICAgICAgICAgICAgY29uZmlnLl9hW01PTlRIXSA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtEQVRFXSA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IGRhdGUuXG4gICAgICAgIC8vICogaWYgbm8geWVhciwgbW9udGgsIGRheSBvZiBtb250aCBhcmUgZ2l2ZW4sIGRlZmF1bHQgdG8gdG9kYXlcbiAgICAgICAgLy8gKiBpZiBkYXkgb2YgbW9udGggaXMgZ2l2ZW4sIGRlZmF1bHQgbW9udGggYW5kIHllYXJcbiAgICAgICAgLy8gKiBpZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBvbmx5IHllYXJcbiAgICAgICAgLy8gKiBpZiB5ZWFyIGlzIGdpdmVuLCBkb24ndCBkZWZhdWx0IGFueXRoaW5nXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAzICYmIGNvbmZpZy5fYVtpXSA9PSBudWxsOyArK2kpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gY3VycmVudERhdGVbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBaZXJvIG91dCB3aGF0ZXZlciB3YXMgbm90IGRlZmF1bHRlZCwgaW5jbHVkaW5nIHRpbWVcbiAgICAgICAgZm9yICg7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gKGNvbmZpZy5fYVtpXSA9PSBudWxsKSA/IChpID09PSAyID8gMSA6IDApIDogY29uZmlnLl9hW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIDI0OjAwOjAwLjAwMFxuICAgICAgICBpZiAoY29uZmlnLl9hW0hPVVJdID09PSAyNCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtNSU5VVEVdID09PSAwICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW1NFQ09ORF0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbTUlMTElTRUNPTkRdID09PSAwKSB7XG4gICAgICAgICAgICBjb25maWcuX25leHREYXkgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZy5fZCA9IChjb25maWcuX3VzZVVUQyA/IGNyZWF0ZVVUQ0RhdGUgOiBjcmVhdGVEYXRlKS5hcHBseShudWxsLCBpbnB1dCk7XG4gICAgICAgIGV4cGVjdGVkV2Vla2RheSA9IGNvbmZpZy5fdXNlVVRDID8gY29uZmlnLl9kLmdldFVUQ0RheSgpIDogY29uZmlnLl9kLmdldERheSgpO1xuXG4gICAgICAgIC8vIEFwcGx5IHRpbWV6b25lIG9mZnNldCBmcm9tIGlucHV0LiBUaGUgYWN0dWFsIHV0Y09mZnNldCBjYW4gYmUgY2hhbmdlZFxuICAgICAgICAvLyB3aXRoIHBhcnNlWm9uZS5cbiAgICAgICAgaWYgKGNvbmZpZy5fdHptICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLl9uZXh0RGF5KSB7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAyNDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNoZWNrIGZvciBtaXNtYXRjaGluZyBkYXkgb2Ygd2Vla1xuICAgICAgICBpZiAoY29uZmlnLl93ICYmIHR5cGVvZiBjb25maWcuX3cuZCAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uZmlnLl93LmQgIT09IGV4cGVjdGVkV2Vla2RheSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykud2Vla2RheU1pc21hdGNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpIHtcbiAgICAgICAgdmFyIHcsIHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSwgdGVtcCwgd2Vla2RheU92ZXJmbG93O1xuXG4gICAgICAgIHcgPSBjb25maWcuX3c7XG4gICAgICAgIGlmICh3LkdHICE9IG51bGwgfHwgdy5XICE9IG51bGwgfHwgdy5FICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRvdyA9IDE7XG4gICAgICAgICAgICBkb3kgPSA0O1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBXZSBuZWVkIHRvIHRha2UgdGhlIGN1cnJlbnQgaXNvV2Vla1llYXIsIGJ1dCB0aGF0IGRlcGVuZHMgb25cbiAgICAgICAgICAgIC8vIGhvdyB3ZSBpbnRlcnByZXQgbm93IChsb2NhbCwgdXRjLCBmaXhlZCBvZmZzZXQpLiBTbyBjcmVhdGVcbiAgICAgICAgICAgIC8vIGEgbm93IHZlcnNpb24gb2YgY3VycmVudCBjb25maWcgKHRha2UgbG9jYWwvdXRjL29mZnNldCBmbGFncywgYW5kXG4gICAgICAgICAgICAvLyBjcmVhdGUgbm93KS5cbiAgICAgICAgICAgIHdlZWtZZWFyID0gZGVmYXVsdHMody5HRywgY29uZmlnLl9hW1lFQVJdLCB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIDEsIDQpLnllYXIpO1xuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcuVywgMSk7XG4gICAgICAgICAgICB3ZWVrZGF5ID0gZGVmYXVsdHMody5FLCAxKTtcbiAgICAgICAgICAgIGlmICh3ZWVrZGF5IDwgMSB8fCB3ZWVrZGF5ID4gNykge1xuICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkb3cgPSBjb25maWcuX2xvY2FsZS5fd2Vlay5kb3c7XG4gICAgICAgICAgICBkb3kgPSBjb25maWcuX2xvY2FsZS5fd2Vlay5kb3k7XG5cbiAgICAgICAgICAgIHZhciBjdXJXZWVrID0gd2Vla09mWWVhcihjcmVhdGVMb2NhbCgpLCBkb3csIGRveSk7XG5cbiAgICAgICAgICAgIHdlZWtZZWFyID0gZGVmYXVsdHMody5nZywgY29uZmlnLl9hW1lFQVJdLCBjdXJXZWVrLnllYXIpO1xuXG4gICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgd2Vlay5cbiAgICAgICAgICAgIHdlZWsgPSBkZWZhdWx0cyh3LncsIGN1cldlZWsud2Vlayk7XG5cbiAgICAgICAgICAgIGlmICh3LmQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIHdlZWtkYXkgLS0gbG93IGRheSBudW1iZXJzIGFyZSBjb25zaWRlcmVkIG5leHQgd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3LmQ7XG4gICAgICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAwIHx8IHdlZWtkYXkgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh3LmUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIGxvY2FsIHdlZWtkYXkgLS0gY291bnRpbmcgc3RhcnRzIGZyb20gYmVnaW5pbmcgb2Ygd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3LmUgKyBkb3c7XG4gICAgICAgICAgICAgICAgaWYgKHcuZSA8IDAgfHwgdy5lID4gNikge1xuICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBiZWdpbmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IGRvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod2VlayA8IDEgfHwgd2VlayA+IHdlZWtzSW5ZZWFyKHdlZWtZZWFyLCBkb3csIGRveSkpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtzID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrZGF5T3ZlcmZsb3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla2RheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ZW1wID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSk7XG4gICAgICAgICAgICBjb25maWcuX2FbWUVBUl0gPSB0ZW1wLnllYXI7XG4gICAgICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRlbXAuZGF5T2ZZZWFyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gaXNvIDg2MDEgcmVnZXhcbiAgICAvLyAwMDAwLTAwLTAwIDAwMDAtVzAwIG9yIDAwMDAtVzAwLTAgKyBUICsgMDAgb3IgMDA6MDAgb3IgMDA6MDA6MDAgb3IgMDA6MDA6MDAuMDAwICsgKzAwOjAwIG9yICswMDAwIG9yICswMClcbiAgICB2YXIgZXh0ZW5kZWRJc29SZWdleCA9IC9eXFxzKigoPzpbKy1dXFxkezZ9fFxcZHs0fSktKD86XFxkXFxkLVxcZFxcZHxXXFxkXFxkLVxcZHxXXFxkXFxkfFxcZFxcZFxcZHxcXGRcXGQpKSg/OihUfCApKFxcZFxcZCg/OjpcXGRcXGQoPzo6XFxkXFxkKD86Wy4sXVxcZCspPyk/KT8pKFtcXCtcXC1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLztcbiAgICB2YXIgYmFzaWNJc29SZWdleCA9IC9eXFxzKigoPzpbKy1dXFxkezZ9fFxcZHs0fSkoPzpcXGRcXGRcXGRcXGR8V1xcZFxcZFxcZHxXXFxkXFxkfFxcZFxcZFxcZHxcXGRcXGQpKSg/OihUfCApKFxcZFxcZCg/OlxcZFxcZCg/OlxcZFxcZCg/OlsuLF1cXGQrKT8pPyk/KShbXFwrXFwtXVxcZFxcZCg/Ojo/XFxkXFxkKT98XFxzKlopPyk/JC87XG5cbiAgICB2YXIgdHpSZWdleCA9IC9afFsrLV1cXGRcXGQoPzo6P1xcZFxcZCk/LztcblxuICAgIHZhciBpc29EYXRlcyA9IFtcbiAgICAgICAgWydZWVlZWVktTU0tREQnLCAvWystXVxcZHs2fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgIFsnWVlZWS1NTS1ERCcsIC9cXGR7NH0tXFxkXFxkLVxcZFxcZC9dLFxuICAgICAgICBbJ0dHR0ctW1ddV1ctRScsIC9cXGR7NH0tV1xcZFxcZC1cXGQvXSxcbiAgICAgICAgWydHR0dHLVtXXVdXJywgL1xcZHs0fS1XXFxkXFxkLywgZmFsc2VdLFxuICAgICAgICBbJ1lZWVktREREJywgL1xcZHs0fS1cXGR7M30vXSxcbiAgICAgICAgWydZWVlZLU1NJywgL1xcZHs0fS1cXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgIFsnWVlZWVlZTU1ERCcsIC9bKy1dXFxkezEwfS9dLFxuICAgICAgICBbJ1lZWVlNTUREJywgL1xcZHs4fS9dLFxuICAgICAgICAvLyBZWVlZTU0gaXMgTk9UIGFsbG93ZWQgYnkgdGhlIHN0YW5kYXJkXG4gICAgICAgIFsnR0dHR1tXXVdXRScsIC9cXGR7NH1XXFxkezN9L10sXG4gICAgICAgIFsnR0dHR1tXXVdXJywgL1xcZHs0fVdcXGR7Mn0vLCBmYWxzZV0sXG4gICAgICAgIFsnWVlZWURERCcsIC9cXGR7N30vXVxuICAgIF07XG5cbiAgICAvLyBpc28gdGltZSBmb3JtYXRzIGFuZCByZWdleGVzXG4gICAgdmFyIGlzb1RpbWVzID0gW1xuICAgICAgICBbJ0hIOm1tOnNzLlNTU1MnLCAvXFxkXFxkOlxcZFxcZDpcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgIFsnSEg6bW06c3MsU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZCxcXGQrL10sXG4gICAgICAgIFsnSEg6bW06c3MnLCAvXFxkXFxkOlxcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgWydISDptbScsIC9cXGRcXGQ6XFxkXFxkL10sXG4gICAgICAgIFsnSEhtbXNzLlNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkXFwuXFxkKy9dLFxuICAgICAgICBbJ0hIbW1zcyxTU1NTJywgL1xcZFxcZFxcZFxcZFxcZFxcZCxcXGQrL10sXG4gICAgICAgIFsnSEhtbXNzJywgL1xcZFxcZFxcZFxcZFxcZFxcZC9dLFxuICAgICAgICBbJ0hIbW0nLCAvXFxkXFxkXFxkXFxkL10sXG4gICAgICAgIFsnSEgnLCAvXFxkXFxkL11cbiAgICBdO1xuXG4gICAgdmFyIGFzcE5ldEpzb25SZWdleCA9IC9eXFwvP0RhdGVcXCgoXFwtP1xcZCspL2k7XG5cbiAgICAvLyBkYXRlIGZyb20gaXNvIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21JU08oY29uZmlnKSB7XG4gICAgICAgIHZhciBpLCBsLFxuICAgICAgICAgICAgc3RyaW5nID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgbWF0Y2ggPSBleHRlbmRlZElzb1JlZ2V4LmV4ZWMoc3RyaW5nKSB8fCBiYXNpY0lzb1JlZ2V4LmV4ZWMoc3RyaW5nKSxcbiAgICAgICAgICAgIGFsbG93VGltZSwgZGF0ZUZvcm1hdCwgdGltZUZvcm1hdCwgdHpGb3JtYXQ7XG5cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pc28gPSB0cnVlO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvRGF0ZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzb0RhdGVzW2ldWzFdLmV4ZWMobWF0Y2hbMV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgPSBpc29EYXRlc1tpXVswXTtcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dUaW1lID0gaXNvRGF0ZXNbaV1bMl0gIT09IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0ZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzNdKSB7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb1RpbWVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNvVGltZXNbaV1bMV0uZXhlYyhtYXRjaFszXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoWzJdIHNob3VsZCBiZSAnVCcgb3Igc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQgPSAobWF0Y2hbMl0gfHwgJyAnKSArIGlzb1RpbWVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRpbWVGb3JtYXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYWxsb3dUaW1lICYmIHRpbWVGb3JtYXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaFs0XSkge1xuICAgICAgICAgICAgICAgIGlmICh0elJlZ2V4LmV4ZWMobWF0Y2hbNF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHR6Rm9ybWF0ID0gJ1onO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnLl9mID0gZGF0ZUZvcm1hdCArICh0aW1lRm9ybWF0IHx8ICcnKSArICh0ekZvcm1hdCB8fCAnJyk7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJGQyAyODIyIHJlZ2V4OiBGb3IgZGV0YWlscyBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI4MjIjc2VjdGlvbi0zLjNcbiAgICB2YXIgcmZjMjgyMiA9IC9eKD86KE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksP1xccyk/KFxcZHsxLDJ9KVxccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylcXHMoXFxkezIsNH0pXFxzKFxcZFxcZCk6KFxcZFxcZCkoPzo6KFxcZFxcZCkpP1xccyg/OihVVHxHTVR8W0VDTVBdW1NEXVQpfChbWnpdKXwoWystXVxcZHs0fSkpJC87XG5cbiAgICBmdW5jdGlvbiBleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzKHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXG4gICAgICAgICAgICB1bnRydW5jYXRlWWVhcih5ZWFyU3RyKSxcbiAgICAgICAgICAgIGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydC5pbmRleE9mKG1vbnRoU3RyKSxcbiAgICAgICAgICAgIHBhcnNlSW50KGRheVN0ciwgMTApLFxuICAgICAgICAgICAgcGFyc2VJbnQoaG91clN0ciwgMTApLFxuICAgICAgICAgICAgcGFyc2VJbnQobWludXRlU3RyLCAxMClcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoc2Vjb25kU3RyKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUludChzZWNvbmRTdHIsIDEwKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpIHtcbiAgICAgICAgdmFyIHllYXIgPSBwYXJzZUludCh5ZWFyU3RyLCAxMCk7XG4gICAgICAgIGlmICh5ZWFyIDw9IDQ5KSB7XG4gICAgICAgICAgICByZXR1cm4gMjAwMCArIHllYXI7XG4gICAgICAgIH0gZWxzZSBpZiAoeWVhciA8PSA5OTkpIHtcbiAgICAgICAgICAgIHJldHVybiAxOTAwICsgeWVhcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geWVhcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7XG4gICAgICAgIC8vIFJlbW92ZSBjb21tZW50cyBhbmQgZm9sZGluZyB3aGl0ZXNwYWNlIGFuZCByZXBsYWNlIG11bHRpcGxlLXNwYWNlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1xcKFteKV0qXFwpfFtcXG5cXHRdL2csICcgJykucmVwbGFjZSgvKFxcc1xccyspL2csICcgJykucmVwbGFjZSgvXlxcc1xccyovLCAnJykucmVwbGFjZSgvXFxzXFxzKiQvLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tXZWVrZGF5KHdlZWtkYXlTdHIsIHBhcnNlZElucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKHdlZWtkYXlTdHIpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IFJlcGxhY2UgdGhlIHZhbmlsbGEgSlMgRGF0ZSBvYmplY3Qgd2l0aCBhbiBpbmRlcGVudGVudCBkYXktb2Ytd2VlayBjaGVjay5cbiAgICAgICAgICAgIHZhciB3ZWVrZGF5UHJvdmlkZWQgPSBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydC5pbmRleE9mKHdlZWtkYXlTdHIpLFxuICAgICAgICAgICAgICAgIHdlZWtkYXlBY3R1YWwgPSBuZXcgRGF0ZShwYXJzZWRJbnB1dFswXSwgcGFyc2VkSW5wdXRbMV0sIHBhcnNlZElucHV0WzJdKS5nZXREYXkoKTtcbiAgICAgICAgICAgIGlmICh3ZWVrZGF5UHJvdmlkZWQgIT09IHdlZWtkYXlBY3R1YWwpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgb2JzT2Zmc2V0cyA9IHtcbiAgICAgICAgVVQ6IDAsXG4gICAgICAgIEdNVDogMCxcbiAgICAgICAgRURUOiAtNCAqIDYwLFxuICAgICAgICBFU1Q6IC01ICogNjAsXG4gICAgICAgIENEVDogLTUgKiA2MCxcbiAgICAgICAgQ1NUOiAtNiAqIDYwLFxuICAgICAgICBNRFQ6IC02ICogNjAsXG4gICAgICAgIE1TVDogLTcgKiA2MCxcbiAgICAgICAgUERUOiAtNyAqIDYwLFxuICAgICAgICBQU1Q6IC04ICogNjBcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY2FsY3VsYXRlT2Zmc2V0KG9ic09mZnNldCwgbWlsaXRhcnlPZmZzZXQsIG51bU9mZnNldCkge1xuICAgICAgICBpZiAob2JzT2Zmc2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gb2JzT2Zmc2V0c1tvYnNPZmZzZXRdO1xuICAgICAgICB9IGVsc2UgaWYgKG1pbGl0YXJ5T2Zmc2V0KSB7XG4gICAgICAgICAgICAvLyB0aGUgb25seSBhbGxvd2VkIG1pbGl0YXJ5IHR6IGlzIFpcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGhtID0gcGFyc2VJbnQobnVtT2Zmc2V0LCAxMCk7XG4gICAgICAgICAgICB2YXIgbSA9IGhtICUgMTAwLCBoID0gKGhtIC0gbSkgLyAxMDA7XG4gICAgICAgICAgICByZXR1cm4gaCAqIDYwICsgbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgYW5kIHRpbWUgZnJvbSByZWYgMjgyMiBmb3JtYXRcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tUkZDMjgyMihjb25maWcpIHtcbiAgICAgICAgdmFyIG1hdGNoID0gcmZjMjgyMi5leGVjKHByZXByb2Nlc3NSRkMyODIyKGNvbmZpZy5faSkpO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIHZhciBwYXJzZWRBcnJheSA9IGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MobWF0Y2hbNF0sIG1hdGNoWzNdLCBtYXRjaFsyXSwgbWF0Y2hbNV0sIG1hdGNoWzZdLCBtYXRjaFs3XSk7XG4gICAgICAgICAgICBpZiAoIWNoZWNrV2Vla2RheShtYXRjaFsxXSwgcGFyc2VkQXJyYXksIGNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbmZpZy5fYSA9IHBhcnNlZEFycmF5O1xuICAgICAgICAgICAgY29uZmlnLl90em0gPSBjYWxjdWxhdGVPZmZzZXQobWF0Y2hbOF0sIG1hdGNoWzldLCBtYXRjaFsxMF0pO1xuXG4gICAgICAgICAgICBjb25maWcuX2QgPSBjcmVhdGVVVENEYXRlLmFwcGx5KG51bGwsIGNvbmZpZy5fYSk7XG4gICAgICAgICAgICBjb25maWcuX2Quc2V0VVRDTWludXRlcyhjb25maWcuX2QuZ2V0VVRDTWludXRlcygpIC0gY29uZmlnLl90em0pO1xuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5yZmMyODIyID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXQgb3IgZmFsbGJhY2tcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2hlZCA9IGFzcE5ldEpzb25SZWdleC5leGVjKGNvbmZpZy5faSk7XG5cbiAgICAgICAgaWYgKG1hdGNoZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKCttYXRjaGVkWzFdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21JU08oY29uZmlnKTtcbiAgICAgICAgaWYgKGNvbmZpZy5faXNWYWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb25maWcuX2lzVmFsaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbmFsIGF0dGVtcHQsIHVzZSBJbnB1dCBGYWxsYmFja1xuICAgICAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhjb25maWcpO1xuICAgIH1cblxuICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrID0gZGVwcmVjYXRlKFxuICAgICAgICAndmFsdWUgcHJvdmlkZWQgaXMgbm90IGluIGEgcmVjb2duaXplZCBSRkMyODIyIG9yIElTTyBmb3JtYXQuIG1vbWVudCBjb25zdHJ1Y3Rpb24gZmFsbHMgYmFjayB0byBqcyBEYXRlKCksICcgK1xuICAgICAgICAnd2hpY2ggaXMgbm90IHJlbGlhYmxlIGFjcm9zcyBhbGwgYnJvd3NlcnMgYW5kIHZlcnNpb25zLiBOb24gUkZDMjgyMi9JU08gZGF0ZSBmb3JtYXRzIGFyZSAnICtcbiAgICAgICAgJ2Rpc2NvdXJhZ2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgbWFqb3IgcmVsZWFzZS4gUGxlYXNlIHJlZmVyIHRvICcgK1xuICAgICAgICAnaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9qcy1kYXRlLyBmb3IgbW9yZSBpbmZvLicsXG4gICAgICAgIGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGNvbmZpZy5faSArIChjb25maWcuX3VzZVVUQyA/ICcgVVRDJyA6ICcnKSk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gdGhlIElTTyBzdGFuZGFyZFxuICAgIGhvb2tzLklTT184NjAxID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgUkZDIDI4MjIgZm9ybVxuICAgIGhvb2tzLlJGQ18yODIyID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBmb3JtYXQgc3RyaW5nXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpIHtcbiAgICAgICAgLy8gVE9ETzogTW92ZSB0aGlzIHRvIGFub3RoZXIgcGFydCBvZiB0aGUgY3JlYXRpb24gZmxvdyB0byBwcmV2ZW50IGNpcmN1bGFyIGRlcHNcbiAgICAgICAgaWYgKGNvbmZpZy5fZiA9PT0gaG9va3MuSVNPXzg2MDEpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21JU08oY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5SRkNfMjgyMikge1xuICAgICAgICAgICAgY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25maWcuX2EgPSBbXTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZW1wdHkgPSB0cnVlO1xuXG4gICAgICAgIC8vIFRoaXMgYXJyYXkgaXMgdXNlZCB0byBtYWtlIGEgRGF0ZSwgZWl0aGVyIHdpdGggYG5ldyBEYXRlYCBvciBgRGF0ZS5VVENgXG4gICAgICAgIHZhciBzdHJpbmcgPSAnJyArIGNvbmZpZy5faSxcbiAgICAgICAgICAgIGksIHBhcnNlZElucHV0LCB0b2tlbnMsIHRva2VuLCBza2lwcGVkLFxuICAgICAgICAgICAgc3RyaW5nTGVuZ3RoID0gc3RyaW5nLmxlbmd0aCxcbiAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggPSAwO1xuXG4gICAgICAgIHRva2VucyA9IGV4cGFuZEZvcm1hdChjb25maWcuX2YsIGNvbmZpZy5fbG9jYWxlKS5tYXRjaChmb3JtYXR0aW5nVG9rZW5zKSB8fCBbXTtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICAgICAgICAgIHBhcnNlZElucHV0ID0gKHN0cmluZy5tYXRjaChnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykpIHx8IFtdKVswXTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd0b2tlbicsIHRva2VuLCAncGFyc2VkSW5wdXQnLCBwYXJzZWRJbnB1dCxcbiAgICAgICAgICAgIC8vICAgICAgICAgJ3JlZ2V4JywgZ2V0UGFyc2VSZWdleEZvclRva2VuKHRva2VuLCBjb25maWcpKTtcbiAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgIHNraXBwZWQgPSBzdHJpbmcuc3Vic3RyKDAsIHN0cmluZy5pbmRleE9mKHBhcnNlZElucHV0KSk7XG4gICAgICAgICAgICAgICAgaWYgKHNraXBwZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRJbnB1dC5wdXNoKHNraXBwZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdHJpbmcgPSBzdHJpbmcuc2xpY2Uoc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpICsgcGFyc2VkSW5wdXQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoICs9IHBhcnNlZElucHV0Lmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGRvbid0IHBhcnNlIGlmIGl0J3Mgbm90IGEga25vd24gdG9rZW5cbiAgICAgICAgICAgIGlmIChmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0pIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZW1wdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZFRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIHBhcnNlZElucHV0LCBjb25maWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlnLl9zdHJpY3QgJiYgIXBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkVG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gYWRkIHJlbWFpbmluZyB1bnBhcnNlZCBpbnB1dCBsZW5ndGggdG8gdGhlIHN0cmluZ1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5jaGFyc0xlZnRPdmVyID0gc3RyaW5nTGVuZ3RoIC0gdG90YWxQYXJzZWRJbnB1dExlbmd0aDtcbiAgICAgICAgaWYgKHN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRJbnB1dC5wdXNoKHN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjbGVhciBfMTJoIGZsYWcgaWYgaG91ciBpcyA8PSAxMlxuICAgICAgICBpZiAoY29uZmlnLl9hW0hPVVJdIDw9IDEyICYmXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID09PSB0cnVlICYmXG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPiAwKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykucGFyc2VkRGF0ZVBhcnRzID0gY29uZmlnLl9hLnNsaWNlKDApO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5tZXJpZGllbSA9IGNvbmZpZy5fbWVyaWRpZW07XG4gICAgICAgIC8vIGhhbmRsZSBtZXJpZGllbVxuICAgICAgICBjb25maWcuX2FbSE9VUl0gPSBtZXJpZGllbUZpeFdyYXAoY29uZmlnLl9sb2NhbGUsIGNvbmZpZy5fYVtIT1VSXSwgY29uZmlnLl9tZXJpZGllbSk7XG5cbiAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgICAgIGNoZWNrT3ZlcmZsb3coY29uZmlnKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtRml4V3JhcCAobG9jYWxlLCBob3VyLCBtZXJpZGllbSkge1xuICAgICAgICB2YXIgaXNQbTtcblxuICAgICAgICBpZiAobWVyaWRpZW0gPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gbm90aGluZyB0byBkb1xuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZS5tZXJpZGllbUhvdXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5tZXJpZGllbUhvdXIoaG91ciwgbWVyaWRpZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZS5pc1BNICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEZhbGxiYWNrXG4gICAgICAgICAgICBpc1BtID0gbG9jYWxlLmlzUE0obWVyaWRpZW0pO1xuICAgICAgICAgICAgaWYgKGlzUG0gJiYgaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciArPSAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNQbSAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBzdXBwb3NlZCB0byBoYXBwZW5cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBmcm9tIHN0cmluZyBhbmQgYXJyYXkgb2YgZm9ybWF0IHN0cmluZ3NcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKSB7XG4gICAgICAgIHZhciB0ZW1wQ29uZmlnLFxuICAgICAgICAgICAgYmVzdE1vbWVudCxcblxuICAgICAgICAgICAgc2NvcmVUb0JlYXQsXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgY3VycmVudFNjb3JlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2YubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkRm9ybWF0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKE5hTik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29uZmlnLl9mLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgPSAwO1xuICAgICAgICAgICAgdGVtcENvbmZpZyA9IGNvcHlDb25maWcoe30sIGNvbmZpZyk7XG4gICAgICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRlbXBDb25maWcuX3VzZVVUQyA9IGNvbmZpZy5fdXNlVVRDO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGVtcENvbmZpZy5fZiA9IGNvbmZpZy5fZltpXTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQodGVtcENvbmZpZyk7XG5cbiAgICAgICAgICAgIGlmICghaXNWYWxpZCh0ZW1wQ29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhbnkgaW5wdXQgdGhhdCB3YXMgbm90IHBhcnNlZCBhZGQgYSBwZW5hbHR5IGZvciB0aGF0IGZvcm1hdFxuICAgICAgICAgICAgY3VycmVudFNjb3JlICs9IGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS5jaGFyc0xlZnRPdmVyO1xuXG4gICAgICAgICAgICAvL29yIHRva2Vuc1xuICAgICAgICAgICAgY3VycmVudFNjb3JlICs9IGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS51bnVzZWRUb2tlbnMubGVuZ3RoICogMTA7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS5zY29yZSA9IGN1cnJlbnRTY29yZTtcblxuICAgICAgICAgICAgaWYgKHNjb3JlVG9CZWF0ID09IG51bGwgfHwgY3VycmVudFNjb3JlIDwgc2NvcmVUb0JlYXQpIHtcbiAgICAgICAgICAgICAgICBzY29yZVRvQmVhdCA9IGN1cnJlbnRTY29yZTtcbiAgICAgICAgICAgICAgICBiZXN0TW9tZW50ID0gdGVtcENvbmZpZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV4dGVuZChjb25maWcsIGJlc3RNb21lbnQgfHwgdGVtcENvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbU9iamVjdChjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZy5fZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGkgPSBub3JtYWxpemVPYmplY3RVbml0cyhjb25maWcuX2kpO1xuICAgICAgICBjb25maWcuX2EgPSBtYXAoW2kueWVhciwgaS5tb250aCwgaS5kYXkgfHwgaS5kYXRlLCBpLmhvdXIsIGkubWludXRlLCBpLnNlY29uZCwgaS5taWxsaXNlY29uZF0sIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHJldHVybiBvYmogJiYgcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUZyb21Db25maWcgKGNvbmZpZykge1xuICAgICAgICB2YXIgcmVzID0gbmV3IE1vbWVudChjaGVja092ZXJmbG93KHByZXBhcmVDb25maWcoY29uZmlnKSkpO1xuICAgICAgICBpZiAocmVzLl9uZXh0RGF5KSB7XG4gICAgICAgICAgICAvLyBBZGRpbmcgaXMgc21hcnQgZW5vdWdoIGFyb3VuZCBEU1RcbiAgICAgICAgICAgIHJlcy5hZGQoMSwgJ2QnKTtcbiAgICAgICAgICAgIHJlcy5fbmV4dERheSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcGFyZUNvbmZpZyAoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faSxcbiAgICAgICAgICAgIGZvcm1hdCA9IGNvbmZpZy5fZjtcblxuICAgICAgICBjb25maWcuX2xvY2FsZSA9IGNvbmZpZy5fbG9jYWxlIHx8IGdldExvY2FsZShjb25maWcuX2wpO1xuXG4gICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCB8fCAoZm9ybWF0ID09PSB1bmRlZmluZWQgJiYgaW5wdXQgPT09ICcnKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoe251bGxJbnB1dDogdHJ1ZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbmZpZy5faSA9IGlucHV0ID0gY29uZmlnLl9sb2NhbGUucHJlcGFyc2UoaW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTW9tZW50KGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQoY2hlY2tPdmVyZmxvdyhpbnB1dCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGlucHV0O1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZm9ybWF0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0KSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZyk7XG4gICAgICAgIH0gIGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlucHV0KGNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzVmFsaWQoY29uZmlnKSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlucHV0KGNvbmZpZykge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2k7XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGhvb2tzLm5vdygpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShpbnB1dC52YWx1ZU9mKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9hID0gbWFwKGlucHV0LnNsaWNlKDApLCBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KG9iaiwgMTApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21PYmplY3QoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHtcbiAgICAgICAgICAgIC8vIGZyb20gbWlsbGlzZWNvbmRzXG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShpbnB1dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWxPclVUQyAoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIGlzVVRDKSB7XG4gICAgICAgIHZhciBjID0ge307XG5cbiAgICAgICAgaWYgKGxvY2FsZSA9PT0gdHJ1ZSB8fCBsb2NhbGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzdHJpY3QgPSBsb2NhbGU7XG4gICAgICAgICAgICBsb2NhbGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKGlzT2JqZWN0KGlucHV0KSAmJiBpc09iamVjdEVtcHR5KGlucHV0KSkgfHxcbiAgICAgICAgICAgICAgICAoaXNBcnJheShpbnB1dCkgJiYgaW5wdXQubGVuZ3RoID09PSAwKSkge1xuICAgICAgICAgICAgaW5wdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiBtdXN0IGJlIGRvbmUgdGhpcyB3YXkuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8xNDIzXG4gICAgICAgIGMuX2lzQU1vbWVudE9iamVjdCA9IHRydWU7XG4gICAgICAgIGMuX3VzZVVUQyA9IGMuX2lzVVRDID0gaXNVVEM7XG4gICAgICAgIGMuX2wgPSBsb2NhbGU7XG4gICAgICAgIGMuX2kgPSBpbnB1dDtcbiAgICAgICAgYy5fZiA9IGZvcm1hdDtcbiAgICAgICAgYy5fc3RyaWN0ID0gc3RyaWN0O1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVGcm9tQ29uZmlnKGMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUxvY2FsIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHZhciBwcm90b3R5cGVNaW4gPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5taW4gaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5tYXggaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyIDwgdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICB2YXIgcHJvdG90eXBlTWF4ID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkubWF4IGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWluIGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8nLFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA+IHRoaXMgPyB0aGlzIDogb3RoZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gUGljayBhIG1vbWVudCBtIGZyb20gbW9tZW50cyBzbyB0aGF0IG1bZm5dKG90aGVyKSBpcyB0cnVlIGZvciBhbGxcbiAgICAvLyBvdGhlci4gVGhpcyByZWxpZXMgb24gdGhlIGZ1bmN0aW9uIGZuIHRvIGJlIHRyYW5zaXRpdmUuXG4gICAgLy9cbiAgICAvLyBtb21lbnRzIHNob3VsZCBlaXRoZXIgYmUgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMgb3IgYW4gYXJyYXksIHdob3NlXG4gICAgLy8gZmlyc3QgZWxlbWVudCBpcyBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cy5cbiAgICBmdW5jdGlvbiBwaWNrQnkoZm4sIG1vbWVudHMpIHtcbiAgICAgICAgdmFyIHJlcywgaTtcbiAgICAgICAgaWYgKG1vbWVudHMubGVuZ3RoID09PSAxICYmIGlzQXJyYXkobW9tZW50c1swXSkpIHtcbiAgICAgICAgICAgIG1vbWVudHMgPSBtb21lbnRzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbW9tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVMb2NhbCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlcyA9IG1vbWVudHNbMF07XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBtb21lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAoIW1vbWVudHNbaV0uaXNWYWxpZCgpIHx8IG1vbWVudHNbaV1bZm5dKHJlcykpIHtcbiAgICAgICAgICAgICAgICByZXMgPSBtb21lbnRzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIFtdLnNvcnQgaW5zdGVhZD9cbiAgICBmdW5jdGlvbiBtaW4gKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICByZXR1cm4gcGlja0J5KCdpc0JlZm9yZScsIGFyZ3MpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1heCAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQWZ0ZXInLCBhcmdzKTtcbiAgICB9XG5cbiAgICB2YXIgbm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gRGF0ZS5ub3cgPyBEYXRlLm5vdygpIDogKyhuZXcgRGF0ZSgpKTtcbiAgICB9O1xuXG4gICAgdmFyIG9yZGVyaW5nID0gWyd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJywgJ21pbGxpc2Vjb25kJ107XG5cbiAgICBmdW5jdGlvbiBpc0R1cmF0aW9uVmFsaWQobSkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gbSkge1xuICAgICAgICAgICAgaWYgKCEoaW5kZXhPZi5jYWxsKG9yZGVyaW5nLCBrZXkpICE9PSAtMSAmJiAobVtrZXldID09IG51bGwgfHwgIWlzTmFOKG1ba2V5XSkpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB1bml0SGFzRGVjaW1hbCA9IGZhbHNlO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9yZGVyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAobVtvcmRlcmluZ1tpXV0pIHtcbiAgICAgICAgICAgICAgICBpZiAodW5pdEhhc0RlY2ltYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBvbmx5IGFsbG93IG5vbi1pbnRlZ2VycyBmb3Igc21hbGxlc3QgdW5pdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocGFyc2VGbG9hdChtW29yZGVyaW5nW2ldXSkgIT09IHRvSW50KG1bb3JkZXJpbmdbaV1dKSkge1xuICAgICAgICAgICAgICAgICAgICB1bml0SGFzRGVjaW1hbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZCQxKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbihOYU4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIER1cmF0aW9uIChkdXJhdGlvbikge1xuICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0gbm9ybWFsaXplT2JqZWN0VW5pdHMoZHVyYXRpb24pLFxuICAgICAgICAgICAgeWVhcnMgPSBub3JtYWxpemVkSW5wdXQueWVhciB8fCAwLFxuICAgICAgICAgICAgcXVhcnRlcnMgPSBub3JtYWxpemVkSW5wdXQucXVhcnRlciB8fCAwLFxuICAgICAgICAgICAgbW9udGhzID0gbm9ybWFsaXplZElucHV0Lm1vbnRoIHx8IDAsXG4gICAgICAgICAgICB3ZWVrcyA9IG5vcm1hbGl6ZWRJbnB1dC53ZWVrIHx8IDAsXG4gICAgICAgICAgICBkYXlzID0gbm9ybWFsaXplZElucHV0LmRheSB8fCAwLFxuICAgICAgICAgICAgaG91cnMgPSBub3JtYWxpemVkSW5wdXQuaG91ciB8fCAwLFxuICAgICAgICAgICAgbWludXRlcyA9IG5vcm1hbGl6ZWRJbnB1dC5taW51dGUgfHwgMCxcbiAgICAgICAgICAgIHNlY29uZHMgPSBub3JtYWxpemVkSW5wdXQuc2Vjb25kIHx8IDAsXG4gICAgICAgICAgICBtaWxsaXNlY29uZHMgPSBub3JtYWxpemVkSW5wdXQubWlsbGlzZWNvbmQgfHwgMDtcblxuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNEdXJhdGlvblZhbGlkKG5vcm1hbGl6ZWRJbnB1dCk7XG5cbiAgICAgICAgLy8gcmVwcmVzZW50YXRpb24gZm9yIGRhdGVBZGRSZW1vdmVcbiAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzID0gK21pbGxpc2Vjb25kcyArXG4gICAgICAgICAgICBzZWNvbmRzICogMWUzICsgLy8gMTAwMFxuICAgICAgICAgICAgbWludXRlcyAqIDZlNCArIC8vIDEwMDAgKiA2MFxuICAgICAgICAgICAgaG91cnMgKiAxMDAwICogNjAgKiA2MDsgLy91c2luZyAxMDAwICogNjAgKiA2MCBpbnN0ZWFkIG9mIDM2ZTUgdG8gYXZvaWQgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgZXJyb3JzIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8yOTc4XG4gICAgICAgIC8vIEJlY2F1c2Ugb2YgZGF0ZUFkZFJlbW92ZSB0cmVhdHMgMjQgaG91cnMgYXMgZGlmZmVyZW50IGZyb20gYVxuICAgICAgICAvLyBkYXkgd2hlbiB3b3JraW5nIGFyb3VuZCBEU1QsIHdlIG5lZWQgdG8gc3RvcmUgdGhlbSBzZXBhcmF0ZWx5XG4gICAgICAgIHRoaXMuX2RheXMgPSArZGF5cyArXG4gICAgICAgICAgICB3ZWVrcyAqIDc7XG4gICAgICAgIC8vIEl0IGlzIGltcG9zc2libGUgdG8gdHJhbnNsYXRlIG1vbnRocyBpbnRvIGRheXMgd2l0aG91dCBrbm93aW5nXG4gICAgICAgIC8vIHdoaWNoIG1vbnRocyB5b3UgYXJlIGFyZSB0YWxraW5nIGFib3V0LCBzbyB3ZSBoYXZlIHRvIHN0b3JlXG4gICAgICAgIC8vIGl0IHNlcGFyYXRlbHkuXG4gICAgICAgIHRoaXMuX21vbnRocyA9ICttb250aHMgK1xuICAgICAgICAgICAgcXVhcnRlcnMgKiAzICtcbiAgICAgICAgICAgIHllYXJzICogMTI7XG5cbiAgICAgICAgdGhpcy5fZGF0YSA9IHt9O1xuXG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IGdldExvY2FsZSgpO1xuXG4gICAgICAgIHRoaXMuX2J1YmJsZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb24gKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRHVyYXRpb247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWJzUm91bmQgKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoLTEgKiBudW1iZXIpICogLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0ICh0b2tlbiwgc2VwYXJhdG9yKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgICAgIHZhciBzaWduID0gJysnO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA8IDApIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHNpZ24gPSAnLSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2lnbiArIHplcm9GaWxsKH5+KG9mZnNldCAvIDYwKSwgMikgKyBzZXBhcmF0b3IgKyB6ZXJvRmlsbCh+fihvZmZzZXQpICUgNjAsIDIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvZmZzZXQoJ1onLCAnOicpO1xuICAgIG9mZnNldCgnWlonLCAnJyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdaJywgIG1hdGNoU2hvcnRPZmZzZXQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1paJywgbWF0Y2hTaG9ydE9mZnNldCk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ1onLCAnWlonXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fdXNlVVRDID0gdHJ1ZTtcbiAgICAgICAgY29uZmlnLl90em0gPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIHRpbWV6b25lIGNodW5rZXJcbiAgICAvLyAnKzEwOjAwJyA+IFsnMTAnLCAgJzAwJ11cbiAgICAvLyAnLTE1MzAnICA+IFsnLTE1JywgJzMwJ11cbiAgICB2YXIgY2h1bmtPZmZzZXQgPSAvKFtcXCtcXC1dfFxcZFxcZCkvZ2k7XG5cbiAgICBmdW5jdGlvbiBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoZXIsIHN0cmluZykge1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IChzdHJpbmcgfHwgJycpLm1hdGNoKG1hdGNoZXIpO1xuXG4gICAgICAgIGlmIChtYXRjaGVzID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjaHVuayAgID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdIHx8IFtdO1xuICAgICAgICB2YXIgcGFydHMgICA9IChjaHVuayArICcnKS5tYXRjaChjaHVua09mZnNldCkgfHwgWyctJywgMCwgMF07XG4gICAgICAgIHZhciBtaW51dGVzID0gKyhwYXJ0c1sxXSAqIDYwKSArIHRvSW50KHBhcnRzWzJdKTtcblxuICAgICAgICByZXR1cm4gbWludXRlcyA9PT0gMCA/XG4gICAgICAgICAgMCA6XG4gICAgICAgICAgcGFydHNbMF0gPT09ICcrJyA/IG1pbnV0ZXMgOiAtbWludXRlcztcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYSBtb21lbnQgZnJvbSBpbnB1dCwgdGhhdCBpcyBsb2NhbC91dGMvem9uZSBlcXVpdmFsZW50IHRvIG1vZGVsLlxuICAgIGZ1bmN0aW9uIGNsb25lV2l0aE9mZnNldChpbnB1dCwgbW9kZWwpIHtcbiAgICAgICAgdmFyIHJlcywgZGlmZjtcbiAgICAgICAgaWYgKG1vZGVsLl9pc1VUQykge1xuICAgICAgICAgICAgcmVzID0gbW9kZWwuY2xvbmUoKTtcbiAgICAgICAgICAgIGRpZmYgPSAoaXNNb21lbnQoaW5wdXQpIHx8IGlzRGF0ZShpbnB1dCkgPyBpbnB1dC52YWx1ZU9mKCkgOiBjcmVhdGVMb2NhbChpbnB1dCkudmFsdWVPZigpKSAtIHJlcy52YWx1ZU9mKCk7XG4gICAgICAgICAgICAvLyBVc2UgbG93LWxldmVsIGFwaSwgYmVjYXVzZSB0aGlzIGZuIGlzIGxvdy1sZXZlbCBhcGkuXG4gICAgICAgICAgICByZXMuX2Quc2V0VGltZShyZXMuX2QudmFsdWVPZigpICsgZGlmZik7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQocmVzLCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKGlucHV0KS5sb2NhbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RGF0ZU9mZnNldCAobSkge1xuICAgICAgICAvLyBPbiBGaXJlZm94LjI0IERhdGUjZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyBhIGZsb2F0aW5nIHBvaW50LlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9wdWxsLzE4NzFcbiAgICAgICAgcmV0dXJuIC1NYXRoLnJvdW5kKG0uX2QuZ2V0VGltZXpvbmVPZmZzZXQoKSAvIDE1KSAqIDE1O1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgbW9tZW50IGlzIG11dGF0ZWQuXG4gICAgLy8gSXQgaXMgaW50ZW5kZWQgdG8ga2VlcCB0aGUgb2Zmc2V0IGluIHN5bmMgd2l0aCB0aGUgdGltZXpvbmUuXG4gICAgaG9va3MudXBkYXRlT2Zmc2V0ID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICAvLyBrZWVwTG9jYWxUaW1lID0gdHJ1ZSBtZWFucyBvbmx5IGNoYW5nZSB0aGUgdGltZXpvbmUsIHdpdGhvdXRcbiAgICAvLyBhZmZlY3RpbmcgdGhlIGxvY2FsIGhvdXIuIFNvIDU6MzE6MjYgKzAzMDAgLS1bdXRjT2Zmc2V0KDIsIHRydWUpXS0tPlxuICAgIC8vIDU6MzE6MjYgKzAyMDAgSXQgaXMgcG9zc2libGUgdGhhdCA1OjMxOjI2IGRvZXNuJ3QgZXhpc3Qgd2l0aCBvZmZzZXRcbiAgICAvLyArMDIwMCwgc28gd2UgYWRqdXN0IHRoZSB0aW1lIGFzIG5lZWRlZCwgdG8gYmUgdmFsaWQuXG4gICAgLy9cbiAgICAvLyBLZWVwaW5nIHRoZSB0aW1lIGFjdHVhbGx5IGFkZHMvc3VidHJhY3RzIChvbmUgaG91cilcbiAgICAvLyBmcm9tIHRoZSBhY3R1YWwgcmVwcmVzZW50ZWQgdGltZS4gVGhhdCBpcyB3aHkgd2UgY2FsbCB1cGRhdGVPZmZzZXRcbiAgICAvLyBhIHNlY29uZCB0aW1lLiBJbiBjYXNlIGl0IHdhbnRzIHVzIHRvIGNoYW5nZSB0aGUgb2Zmc2V0IGFnYWluXG4gICAgLy8gX2NoYW5nZUluUHJvZ3Jlc3MgPT0gdHJ1ZSBjYXNlLCB0aGVuIHdlIGhhdmUgdG8gYWRqdXN0LCBiZWNhdXNlXG4gICAgLy8gdGhlcmUgaXMgbm8gc3VjaCB0aW1lIGluIHRoZSBnaXZlbiB0aW1lem9uZS5cbiAgICBmdW5jdGlvbiBnZXRTZXRPZmZzZXQgKGlucHV0LCBrZWVwTG9jYWxUaW1lLCBrZWVwTWludXRlcykge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0IHx8IDAsXG4gICAgICAgICAgICBsb2NhbEFkanVzdDtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoaW5wdXQpIDwgMTYgJiYgIWtlZXBNaW51dGVzKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCAqIDYwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1VUQyAmJiBrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxBZGp1c3QgPSBnZXREYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0ID0gaW5wdXQ7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IHRydWU7XG4gICAgICAgICAgICBpZiAobG9jYWxBZGp1c3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkKGxvY2FsQWRqdXN0LCAnbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9mZnNldCAhPT0gaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWtlZXBMb2NhbFRpbWUgfHwgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICBhZGRTdWJ0cmFjdCh0aGlzLCBjcmVhdGVEdXJhdGlvbihpbnB1dCAtIG9mZnNldCwgJ20nKSwgMSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyBvZmZzZXQgOiBnZXREYXRlT2Zmc2V0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0Wm9uZSAoaW5wdXQsIGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSAtaW5wdXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KGlucHV0LCBrZWVwTG9jYWxUaW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gLXRoaXMudXRjT2Zmc2V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1VUQyAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICByZXR1cm4gdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9Mb2NhbCAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAodGhpcy5faXNVVEMpIHtcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgICAgICAgICAgdGhpcy5faXNVVEMgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnRyYWN0KGdldERhdGVPZmZzZXQodGhpcyksICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQgKCkge1xuICAgICAgICBpZiAodGhpcy5fdHptICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KHRoaXMuX3R6bSwgZmFsc2UsIHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9pID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFyIHRab25lID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaE9mZnNldCwgdGhpcy5faSk7XG4gICAgICAgICAgICBpZiAodFpvbmUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KHRab25lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KDAsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0FsaWduZWRIb3VyT2Zmc2V0IChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQgPSBpbnB1dCA/IGNyZWF0ZUxvY2FsKGlucHV0KS51dGNPZmZzZXQoKSA6IDA7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLnV0Y09mZnNldCgpIC0gaW5wdXQpICUgNjAgPT09IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWUgKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoKSA+IHRoaXMuY2xvbmUoKS5tb250aCgwKS51dGNPZmZzZXQoKSB8fFxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoKSA+IHRoaXMuY2xvbmUoKS5tb250aCg1KS51dGNPZmZzZXQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCAoKSB7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQodGhpcy5faXNEU1RTaGlmdGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjID0ge307XG5cbiAgICAgICAgY29weUNvbmZpZyhjLCB0aGlzKTtcbiAgICAgICAgYyA9IHByZXBhcmVDb25maWcoYyk7XG5cbiAgICAgICAgaWYgKGMuX2EpIHtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IGMuX2lzVVRDID8gY3JlYXRlVVRDKGMuX2EpIDogY3JlYXRlTG9jYWwoYy5fYSk7XG4gICAgICAgICAgICB0aGlzLl9pc0RTVFNoaWZ0ZWQgPSB0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgIGNvbXBhcmVBcnJheXMoYy5fYSwgb3RoZXIudG9BcnJheSgpKSA+IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pc0RTVFNoaWZ0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNMb2NhbCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/ICF0aGlzLl9pc1VUQyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVXRjT2Zmc2V0ICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0YyAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2lzVVRDICYmIHRoaXMuX29mZnNldCA9PT0gMCA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEFTUC5ORVQganNvbiBkYXRlIGZvcm1hdCByZWdleFxuICAgIHZhciBhc3BOZXRSZWdleCA9IC9eKFxcLXxcXCspPyg/OihcXGQqKVsuIF0pPyhcXGQrKVxcOihcXGQrKSg/OlxcOihcXGQrKShcXC5cXGQqKT8pPyQvO1xuXG4gICAgLy8gZnJvbSBodHRwOi8vZG9jcy5jbG9zdXJlLWxpYnJhcnkuZ29vZ2xlY29kZS5jb20vZ2l0L2Nsb3N1cmVfZ29vZ19kYXRlX2RhdGUuanMuc291cmNlLmh0bWxcbiAgICAvLyBzb21ld2hhdCBtb3JlIGluIGxpbmUgd2l0aCA0LjQuMy4yIDIwMDQgc3BlYywgYnV0IGFsbG93cyBkZWNpbWFsIGFueXdoZXJlXG4gICAgLy8gYW5kIGZ1cnRoZXIgbW9kaWZpZWQgdG8gYWxsb3cgZm9yIHN0cmluZ3MgY29udGFpbmluZyBib3RoIHdlZWsgYW5kIGRheVxuICAgIHZhciBpc29SZWdleCA9IC9eKC18XFwrKT9QKD86KFstK10/WzAtOSwuXSopWSk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopVyk/KD86KFstK10/WzAtOSwuXSopRCk/KD86VCg/OihbLStdP1swLTksLl0qKUgpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVMpPyk/JC87XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEdXJhdGlvbiAoaW5wdXQsIGtleSkge1xuICAgICAgICB2YXIgZHVyYXRpb24gPSBpbnB1dCxcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIGFnYWluc3QgcmVnZXhwIGlzIGV4cGVuc2l2ZSwgZG8gaXQgb24gZGVtYW5kXG4gICAgICAgICAgICBtYXRjaCA9IG51bGwsXG4gICAgICAgICAgICBzaWduLFxuICAgICAgICAgICAgcmV0LFxuICAgICAgICAgICAgZGlmZlJlcztcblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkpIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIG1zIDogaW5wdXQuX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgICAgICBkICA6IGlucHV0Ll9kYXlzLFxuICAgICAgICAgICAgICAgIE0gIDogaW5wdXQuX21vbnRoc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb25ba2V5XSA9IGlucHV0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbi5taWxsaXNlY29uZHMgPSBpbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghIShtYXRjaCA9IGFzcE5ldFJlZ2V4LmV4ZWMoaW5wdXQpKSkge1xuICAgICAgICAgICAgc2lnbiA9IChtYXRjaFsxXSA9PT0gJy0nKSA/IC0xIDogMTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHkgIDogMCxcbiAgICAgICAgICAgICAgICBkICA6IHRvSW50KG1hdGNoW0RBVEVdKSAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgaCAgOiB0b0ludChtYXRjaFtIT1VSXSkgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIG0gIDogdG9JbnQobWF0Y2hbTUlOVVRFXSkgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBzICA6IHRvSW50KG1hdGNoW1NFQ09ORF0pICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbXMgOiB0b0ludChhYnNSb3VuZChtYXRjaFtNSUxMSVNFQ09ORF0gKiAxMDAwKSkgKiBzaWduIC8vIHRoZSBtaWxsaXNlY29uZCBkZWNpbWFsIHBvaW50IGlzIGluY2x1ZGVkIGluIHRoZSBtYXRjaFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmICghIShtYXRjaCA9IGlzb1JlZ2V4LmV4ZWMoaW5wdXQpKSkge1xuICAgICAgICAgICAgc2lnbiA9IChtYXRjaFsxXSA9PT0gJy0nKSA/IC0xIDogKG1hdGNoWzFdID09PSAnKycpID8gMSA6IDE7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB5IDogcGFyc2VJc28obWF0Y2hbMl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIE0gOiBwYXJzZUlzbyhtYXRjaFszXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgdyA6IHBhcnNlSXNvKG1hdGNoWzRdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBkIDogcGFyc2VJc28obWF0Y2hbNV0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGggOiBwYXJzZUlzbyhtYXRjaFs2XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgbSA6IHBhcnNlSXNvKG1hdGNoWzddLCBzaWduKSxcbiAgICAgICAgICAgICAgICBzIDogcGFyc2VJc28obWF0Y2hbOF0sIHNpZ24pXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGR1cmF0aW9uID09IG51bGwpIHsvLyBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkdXJhdGlvbiA9PT0gJ29iamVjdCcgJiYgKCdmcm9tJyBpbiBkdXJhdGlvbiB8fCAndG8nIGluIGR1cmF0aW9uKSkge1xuICAgICAgICAgICAgZGlmZlJlcyA9IG1vbWVudHNEaWZmZXJlbmNlKGNyZWF0ZUxvY2FsKGR1cmF0aW9uLmZyb20pLCBjcmVhdGVMb2NhbChkdXJhdGlvbi50bykpO1xuXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgZHVyYXRpb24ubXMgPSBkaWZmUmVzLm1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgIGR1cmF0aW9uLk0gPSBkaWZmUmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldCA9IG5ldyBEdXJhdGlvbihkdXJhdGlvbik7XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpICYmIGhhc093blByb3AoaW5wdXQsICdfbG9jYWxlJykpIHtcbiAgICAgICAgICAgIHJldC5fbG9jYWxlID0gaW5wdXQuX2xvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgY3JlYXRlRHVyYXRpb24uZm4gPSBEdXJhdGlvbi5wcm90b3R5cGU7XG4gICAgY3JlYXRlRHVyYXRpb24uaW52YWxpZCA9IGNyZWF0ZUludmFsaWQkMTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvIChpbnAsIHNpZ24pIHtcbiAgICAgICAgLy8gV2UnZCBub3JtYWxseSB1c2Ugfn5pbnAgZm9yIHRoaXMsIGJ1dCB1bmZvcnR1bmF0ZWx5IGl0IGFsc29cbiAgICAgICAgLy8gY29udmVydHMgZmxvYXRzIHRvIGludHMuXG4gICAgICAgIC8vIGlucCBtYXkgYmUgdW5kZWZpbmVkLCBzbyBjYXJlZnVsIGNhbGxpbmcgcmVwbGFjZSBvbiBpdC5cbiAgICAgICAgdmFyIHJlcyA9IGlucCAmJiBwYXJzZUZsb2F0KGlucC5yZXBsYWNlKCcsJywgJy4nKSk7XG4gICAgICAgIC8vIGFwcGx5IHNpZ24gd2hpbGUgd2UncmUgYXQgaXRcbiAgICAgICAgcmV0dXJuIChpc05hTihyZXMpID8gMCA6IHJlcykgKiBzaWduO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpIHtcbiAgICAgICAgdmFyIHJlcyA9IHttaWxsaXNlY29uZHM6IDAsIG1vbnRoczogMH07XG5cbiAgICAgICAgcmVzLm1vbnRocyA9IG90aGVyLm1vbnRoKCkgLSBiYXNlLm1vbnRoKCkgK1xuICAgICAgICAgICAgKG90aGVyLnllYXIoKSAtIGJhc2UueWVhcigpKSAqIDEyO1xuICAgICAgICBpZiAoYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpLmlzQWZ0ZXIob3RoZXIpKSB7XG4gICAgICAgICAgICAtLXJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXMubWlsbGlzZWNvbmRzID0gK290aGVyIC0gKyhiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykpO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpIHtcbiAgICAgICAgdmFyIHJlcztcbiAgICAgICAgaWYgKCEoYmFzZS5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHttaWxsaXNlY29uZHM6IDAsIG1vbnRoczogMH07XG4gICAgICAgIH1cblxuICAgICAgICBvdGhlciA9IGNsb25lV2l0aE9mZnNldChvdGhlciwgYmFzZSk7XG4gICAgICAgIGlmIChiYXNlLmlzQmVmb3JlKG90aGVyKSkge1xuICAgICAgICAgICAgcmVzID0gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKG90aGVyLCBiYXNlKTtcbiAgICAgICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSAtcmVzLm1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgIHJlcy5tb250aHMgPSAtcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogcmVtb3ZlICduYW1lJyBhcmcgYWZ0ZXIgZGVwcmVjYXRpb24gaXMgcmVtb3ZlZFxuICAgIGZ1bmN0aW9uIGNyZWF0ZUFkZGVyKGRpcmVjdGlvbiwgbmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbCwgcGVyaW9kKSB7XG4gICAgICAgICAgICB2YXIgZHVyLCB0bXA7XG4gICAgICAgICAgICAvL2ludmVydCB0aGUgYXJndW1lbnRzLCBidXQgY29tcGxhaW4gYWJvdXQgaXRcbiAgICAgICAgICAgIGlmIChwZXJpb2QgIT09IG51bGwgJiYgIWlzTmFOKCtwZXJpb2QpKSB7XG4gICAgICAgICAgICAgICAgZGVwcmVjYXRlU2ltcGxlKG5hbWUsICdtb21lbnQoKS4nICsgbmFtZSAgKyAnKHBlcmlvZCwgbnVtYmVyKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIG1vbWVudCgpLicgKyBuYW1lICsgJyhudW1iZXIsIHBlcmlvZCkuICcgK1xuICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9hZGQtaW52ZXJ0ZWQtcGFyYW0vIGZvciBtb3JlIGluZm8uJyk7XG4gICAgICAgICAgICAgICAgdG1wID0gdmFsOyB2YWwgPSBwZXJpb2Q7IHBlcmlvZCA9IHRtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFsID0gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyArdmFsIDogdmFsO1xuICAgICAgICAgICAgZHVyID0gY3JlYXRlRHVyYXRpb24odmFsLCBwZXJpb2QpO1xuICAgICAgICAgICAgYWRkU3VidHJhY3QodGhpcywgZHVyLCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QgKG1vbSwgZHVyYXRpb24sIGlzQWRkaW5nLCB1cGRhdGVPZmZzZXQpIHtcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IGR1cmF0aW9uLl9taWxsaXNlY29uZHMsXG4gICAgICAgICAgICBkYXlzID0gYWJzUm91bmQoZHVyYXRpb24uX2RheXMpLFxuICAgICAgICAgICAgbW9udGhzID0gYWJzUm91bmQoZHVyYXRpb24uX21vbnRocyk7XG5cbiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAvLyBObyBvcFxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlT2Zmc2V0ID0gdXBkYXRlT2Zmc2V0ID09IG51bGwgPyB0cnVlIDogdXBkYXRlT2Zmc2V0O1xuXG4gICAgICAgIGlmIChtb250aHMpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKG1vbSwgZ2V0KG1vbSwgJ01vbnRoJykgKyBtb250aHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRheXMpIHtcbiAgICAgICAgICAgIHNldCQxKG1vbSwgJ0RhdGUnLCBnZXQobW9tLCAnRGF0ZScpICsgZGF5cyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgICAgICBtb20uX2Quc2V0VGltZShtb20uX2QudmFsdWVPZigpICsgbWlsbGlzZWNvbmRzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1cGRhdGVPZmZzZXQpIHtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChtb20sIGRheXMgfHwgbW9udGhzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBhZGQgICAgICA9IGNyZWF0ZUFkZGVyKDEsICdhZGQnKTtcbiAgICB2YXIgc3VidHJhY3QgPSBjcmVhdGVBZGRlcigtMSwgJ3N1YnRyYWN0Jyk7XG5cbiAgICBmdW5jdGlvbiBnZXRDYWxlbmRhckZvcm1hdChteU1vbWVudCwgbm93KSB7XG4gICAgICAgIHZhciBkaWZmID0gbXlNb21lbnQuZGlmZihub3csICdkYXlzJywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBkaWZmIDwgLTYgPyAnc2FtZUVsc2UnIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgLTEgPyAnbGFzdFdlZWsnIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMCA/ICdsYXN0RGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDEgPyAnc2FtZURheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAyID8gJ25leHREYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgNyA/ICduZXh0V2VlaycgOiAnc2FtZUVsc2UnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbGVuZGFyJDEgKHRpbWUsIGZvcm1hdHMpIHtcbiAgICAgICAgLy8gV2Ugd2FudCB0byBjb21wYXJlIHRoZSBzdGFydCBvZiB0b2RheSwgdnMgdGhpcy5cbiAgICAgICAgLy8gR2V0dGluZyBzdGFydC1vZi10b2RheSBkZXBlbmRzIG9uIHdoZXRoZXIgd2UncmUgbG9jYWwvdXRjL29mZnNldCBvciBub3QuXG4gICAgICAgIHZhciBub3cgPSB0aW1lIHx8IGNyZWF0ZUxvY2FsKCksXG4gICAgICAgICAgICBzb2QgPSBjbG9uZVdpdGhPZmZzZXQobm93LCB0aGlzKS5zdGFydE9mKCdkYXknKSxcbiAgICAgICAgICAgIGZvcm1hdCA9IGhvb2tzLmNhbGVuZGFyRm9ybWF0KHRoaXMsIHNvZCkgfHwgJ3NhbWVFbHNlJztcblxuICAgICAgICB2YXIgb3V0cHV0ID0gZm9ybWF0cyAmJiAoaXNGdW5jdGlvbihmb3JtYXRzW2Zvcm1hdF0pID8gZm9ybWF0c1tmb3JtYXRdLmNhbGwodGhpcywgbm93KSA6IGZvcm1hdHNbZm9ybWF0XSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KG91dHB1dCB8fCB0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihmb3JtYXQsIHRoaXMsIGNyZWF0ZUxvY2FsKG5vdykpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTW9tZW50KHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQWZ0ZXIgKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKCFpc1VuZGVmaW5lZCh1bml0cykgPyB1bml0cyA6ICdtaWxsaXNlY29uZCcpO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA+IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsSW5wdXQudmFsdWVPZigpIDwgdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQmVmb3JlIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KTtcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyghaXNVbmRlZmluZWQodW5pdHMpID8gdW5pdHMgOiAnbWlsbGlzZWNvbmQnKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPCBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkuZW5kT2YodW5pdHMpLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZXR3ZWVuIChmcm9tLCB0bywgdW5pdHMsIGluY2x1c2l2aXR5KSB7XG4gICAgICAgIGluY2x1c2l2aXR5ID0gaW5jbHVzaXZpdHkgfHwgJygpJztcbiAgICAgICAgcmV0dXJuIChpbmNsdXNpdml0eVswXSA9PT0gJygnID8gdGhpcy5pc0FmdGVyKGZyb20sIHVuaXRzKSA6ICF0aGlzLmlzQmVmb3JlKGZyb20sIHVuaXRzKSkgJiZcbiAgICAgICAgICAgIChpbmNsdXNpdml0eVsxXSA9PT0gJyknID8gdGhpcy5pc0JlZm9yZSh0bywgdW5pdHMpIDogIXRoaXMuaXNBZnRlcih0bywgdW5pdHMpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWUgKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpLFxuICAgICAgICAgICAgaW5wdXRNcztcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyB8fCAnbWlsbGlzZWNvbmQnKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPT09IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5wdXRNcyA9IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKS52YWx1ZU9mKCkgPD0gaW5wdXRNcyAmJiBpbnB1dE1zIDw9IHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lT3JBZnRlciAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNBZnRlcihpbnB1dCx1bml0cyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lT3JCZWZvcmUgKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQmVmb3JlKGlucHV0LHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaWZmIChpbnB1dCwgdW5pdHMsIGFzRmxvYXQpIHtcbiAgICAgICAgdmFyIHRoYXQsXG4gICAgICAgICAgICB6b25lRGVsdGEsXG4gICAgICAgICAgICBvdXRwdXQ7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoYXQgPSBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIHRoaXMpO1xuXG4gICAgICAgIGlmICghdGhhdC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB6b25lRGVsdGEgPSAodGhhdC51dGNPZmZzZXQoKSAtIHRoaXMudXRjT2Zmc2V0KCkpICogNmU0O1xuXG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAxMjsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMzsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gMWUzOyBicmVhazsgLy8gMTAwMFxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDZlNDsgYnJlYWs7IC8vIDEwMDAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnaG91cic6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAzNmU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjBcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA4NjRlNTsgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQgLSB6b25lRGVsdGEpIC8gNjA0OGU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCAqIDcsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGRlZmF1bHQ6IG91dHB1dCA9IHRoaXMgLSB0aGF0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFzRmxvYXQgPyBvdXRwdXQgOiBhYnNGbG9vcihvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoRGlmZiAoYSwgYikge1xuICAgICAgICAvLyBkaWZmZXJlbmNlIGluIG1vbnRoc1xuICAgICAgICB2YXIgd2hvbGVNb250aERpZmYgPSAoKGIueWVhcigpIC0gYS55ZWFyKCkpICogMTIpICsgKGIubW9udGgoKSAtIGEubW9udGgoKSksXG4gICAgICAgICAgICAvLyBiIGlzIGluIChhbmNob3IgLSAxIG1vbnRoLCBhbmNob3IgKyAxIG1vbnRoKVxuICAgICAgICAgICAgYW5jaG9yID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiwgJ21vbnRocycpLFxuICAgICAgICAgICAgYW5jaG9yMiwgYWRqdXN0O1xuXG4gICAgICAgIGlmIChiIC0gYW5jaG9yIDwgMCkge1xuICAgICAgICAgICAgYW5jaG9yMiA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYgLSAxLCAnbW9udGhzJyk7XG4gICAgICAgICAgICAvLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aFxuICAgICAgICAgICAgYWRqdXN0ID0gKGIgLSBhbmNob3IpIC8gKGFuY2hvciAtIGFuY2hvcjIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5jaG9yMiA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYgKyAxLCAnbW9udGhzJyk7XG4gICAgICAgICAgICAvLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aFxuICAgICAgICAgICAgYWRqdXN0ID0gKGIgLSBhbmNob3IpIC8gKGFuY2hvcjIgLSBhbmNob3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9jaGVjayBmb3IgbmVnYXRpdmUgemVybywgcmV0dXJuIHplcm8gaWYgbmVnYXRpdmUgemVyb1xuICAgICAgICByZXR1cm4gLSh3aG9sZU1vbnRoRGlmZiArIGFkanVzdCkgfHwgMDtcbiAgICB9XG5cbiAgICBob29rcy5kZWZhdWx0Rm9ybWF0ID0gJ1lZWVktTU0tRERUSEg6bW06c3NaJztcbiAgICBob29rcy5kZWZhdWx0Rm9ybWF0VXRjID0gJ1lZWVktTU0tRERUSEg6bW06c3NbWl0nO1xuXG4gICAgZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWSBISDptbTpzcyBbR01UXVpaJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmcoa2VlcE9mZnNldCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdXRjID0ga2VlcE9mZnNldCAhPT0gdHJ1ZTtcbiAgICAgICAgdmFyIG0gPSB1dGMgPyB0aGlzLmNsb25lKCkudXRjKCkgOiB0aGlzO1xuICAgICAgICBpZiAobS55ZWFyKCkgPCAwIHx8IG0ueWVhcigpID4gOTk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChtLCB1dGMgPyAnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyA6ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpKSB7XG4gICAgICAgICAgICAvLyBuYXRpdmUgaW1wbGVtZW50YXRpb24gaXMgfjUweCBmYXN0ZXIsIHVzZSBpdCB3aGVuIHdlIGNhblxuICAgICAgICAgICAgaWYgKHV0Yykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSArIHRoaXMudXRjT2Zmc2V0KCkgKiA2MCAqIDEwMDApLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgnWicsIGZvcm1hdE1vbWVudChtLCAnWicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sIHV0YyA/ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyA6ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGh1bWFuIHJlYWRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIGEgbW9tZW50IHRoYXQgY2FuXG4gICAgICogYWxzbyBiZSBldmFsdWF0ZWQgdG8gZ2V0IGEgbmV3IG1vbWVudCB3aGljaCBpcyB0aGUgc2FtZVxuICAgICAqXG4gICAgICogQGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0L2RvY3MvYXBpL3V0aWwuaHRtbCN1dGlsX2N1c3RvbV9pbnNwZWN0X2Z1bmN0aW9uX29uX29iamVjdHNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuICdtb21lbnQuaW52YWxpZCgvKiAnICsgdGhpcy5faSArICcgKi8pJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgZnVuYyA9ICdtb21lbnQnO1xuICAgICAgICB2YXIgem9uZSA9ICcnO1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2NhbCgpKSB7XG4gICAgICAgICAgICBmdW5jID0gdGhpcy51dGNPZmZzZXQoKSA9PT0gMCA/ICdtb21lbnQudXRjJyA6ICdtb21lbnQucGFyc2Vab25lJztcbiAgICAgICAgICAgIHpvbmUgPSAnWic7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZWZpeCA9ICdbJyArIGZ1bmMgKyAnKFwiXSc7XG4gICAgICAgIHZhciB5ZWFyID0gKDAgPD0gdGhpcy55ZWFyKCkgJiYgdGhpcy55ZWFyKCkgPD0gOTk5OSkgPyAnWVlZWScgOiAnWVlZWVlZJztcbiAgICAgICAgdmFyIGRhdGV0aW1lID0gJy1NTS1ERFtUXUhIOm1tOnNzLlNTUyc7XG4gICAgICAgIHZhciBzdWZmaXggPSB6b25lICsgJ1tcIildJztcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQocHJlZml4ICsgeWVhciArIGRhdGV0aW1lICsgc3VmZml4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmb3JtYXQgKGlucHV0U3RyaW5nKSB7XG4gICAgICAgIGlmICghaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgICAgIGlucHV0U3RyaW5nID0gdGhpcy5pc1V0YygpID8gaG9va3MuZGVmYXVsdEZvcm1hdFV0YyA6IGhvb2tzLmRlZmF1bHRGb3JtYXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdE1vbWVudCh0aGlzLCBpbnB1dFN0cmluZyk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbSAodGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fFxuICAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oe3RvOiB0aGlzLCBmcm9tOiB0aW1lfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbU5vdyAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvICh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8XG4gICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7ZnJvbTogdGhpcywgdG86IHRpbWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b05vdyAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy50byhjcmVhdGVMb2NhbCgpLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG5cbiAgICAvLyBJZiBwYXNzZWQgYSBsb2NhbGUga2V5LCBpdCB3aWxsIHNldCB0aGUgbG9jYWxlIGZvciB0aGlzXG4gICAgLy8gaW5zdGFuY2UuICBPdGhlcndpc2UsIGl0IHdpbGwgcmV0dXJuIHRoZSBsb2NhbGUgY29uZmlndXJhdGlvblxuICAgIC8vIHZhcmlhYmxlcyBmb3IgdGhpcyBpbnN0YW5jZS5cbiAgICBmdW5jdGlvbiBsb2NhbGUgKGtleSkge1xuICAgICAgICB2YXIgbmV3TG9jYWxlRGF0YTtcblxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdMb2NhbGVEYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobmV3TG9jYWxlRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9jYWxlID0gbmV3TG9jYWxlRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLicsXG4gICAgICAgIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRGF0YSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RhcnRPZiAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIC8vIHRoZSBmb2xsb3dpbmcgc3dpdGNoIGludGVudGlvbmFsbHkgb21pdHMgYnJlYWsga2V5d29yZHNcbiAgICAgICAgLy8gdG8gdXRpbGl6ZSBmYWxsaW5nIHRocm91Z2ggdGhlIGNhc2VzLlxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm1vbnRoKDApO1xuICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSgxKTtcbiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuaG91cnMoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgdGhpcy5taW51dGVzKDApO1xuICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRzKDApO1xuICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5taWxsaXNlY29uZHMoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3ZWVrcyBhcmUgYSBzcGVjaWFsIGNhc2VcbiAgICAgICAgaWYgKHVuaXRzID09PSAnd2VlaycpIHtcbiAgICAgICAgICAgIHRoaXMud2Vla2RheSgwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodW5pdHMgPT09ICdpc29XZWVrJykge1xuICAgICAgICAgICAgdGhpcy5pc29XZWVrZGF5KDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcXVhcnRlcnMgYXJlIGFsc28gc3BlY2lhbFxuICAgICAgICBpZiAodW5pdHMgPT09ICdxdWFydGVyJykge1xuICAgICAgICAgICAgdGhpcy5tb250aChNYXRoLmZsb29yKHRoaXMubW9udGgoKSAvIDMpICogMyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbmRPZiAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICdkYXRlJyBpcyBhbiBhbGlhcyBmb3IgJ2RheScsIHNvIGl0IHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIHN1Y2guXG4gICAgICAgIGlmICh1bml0cyA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICB1bml0cyA9ICdkYXknO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRPZih1bml0cykuYWRkKDEsICh1bml0cyA9PT0gJ2lzb1dlZWsnID8gJ3dlZWsnIDogdW5pdHMpKS5zdWJ0cmFjdCgxLCAnbXMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWx1ZU9mICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2QudmFsdWVPZigpIC0gKCh0aGlzLl9vZmZzZXQgfHwgMCkgKiA2MDAwMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW5peCAoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMudmFsdWVPZigpIC8gMTAwMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9EYXRlICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0FycmF5ICgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gW20ueWVhcigpLCBtLm1vbnRoKCksIG0uZGF0ZSgpLCBtLmhvdXIoKSwgbS5taW51dGUoKSwgbS5zZWNvbmQoKSwgbS5taWxsaXNlY29uZCgpXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b09iamVjdCAoKSB7XG4gICAgICAgIHZhciBtID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHllYXJzOiBtLnllYXIoKSxcbiAgICAgICAgICAgIG1vbnRoczogbS5tb250aCgpLFxuICAgICAgICAgICAgZGF0ZTogbS5kYXRlKCksXG4gICAgICAgICAgICBob3VyczogbS5ob3VycygpLFxuICAgICAgICAgICAgbWludXRlczogbS5taW51dGVzKCksXG4gICAgICAgICAgICBzZWNvbmRzOiBtLnNlY29uZHMoKSxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kczogbS5taWxsaXNlY29uZHMoKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gICAgICAgIC8vIG5ldyBEYXRlKE5hTikudG9KU09OKCkgPT09IG51bGxcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy50b0lTT1N0cmluZygpIDogbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDIgKCkge1xuICAgICAgICByZXR1cm4gaXNWYWxpZCh0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzaW5nRmxhZ3MgKCkge1xuICAgICAgICByZXR1cm4gZXh0ZW5kKHt9LCBnZXRQYXJzaW5nRmxhZ3ModGhpcykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGludmFsaWRBdCAoKSB7XG4gICAgICAgIHJldHVybiBnZXRQYXJzaW5nRmxhZ3ModGhpcykub3ZlcmZsb3c7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRpb25EYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5wdXQ6IHRoaXMuX2ksXG4gICAgICAgICAgICBmb3JtYXQ6IHRoaXMuX2YsXG4gICAgICAgICAgICBsb2NhbGU6IHRoaXMuX2xvY2FsZSxcbiAgICAgICAgICAgIGlzVVRDOiB0aGlzLl9pc1VUQyxcbiAgICAgICAgICAgIHN0cmljdDogdGhpcy5fc3RyaWN0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydnZycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndlZWtZZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ0dHJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4gKHRva2VuLCBnZXR0ZXIpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4oMCwgW3Rva2VuLCB0b2tlbi5sZW5ndGhdLCAwLCBnZXR0ZXIpO1xuICAgIH1cblxuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ2dnZ2cnLCAgICAgJ3dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZ2cnLCAgICAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdHR0dHJywgICdpc29XZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0dHJywgJ2lzb1dlZWtZZWFyJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ3dlZWtZZWFyJywgJ2dnJyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrWWVhcicsICdHRycpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnd2Vla1llYXInLCAxKTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2lzb1dlZWtZZWFyJywgMSk7XG5cblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0cnLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdnJywgICAgICBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdHR0dHJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignZ2dnZycsICAgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0dHJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnZycsICBtYXRjaDF0bzYsIG1hdGNoNik7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnZ2cnLCAnZ2dnZ2cnLCAnR0dHRycsICdHR0dHRyddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbi5zdWJzdHIoMCwgMildID0gdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydnZycsICdHRyddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhciAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGdldFNldFdlZWtZZWFySGVscGVyLmNhbGwodGhpcyxcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICB0aGlzLndlZWsoKSxcbiAgICAgICAgICAgICAgICB0aGlzLndlZWtkYXkoKSxcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrWWVhciAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGdldFNldFdlZWtZZWFySGVscGVyLmNhbGwodGhpcyxcbiAgICAgICAgICAgICAgICBpbnB1dCwgdGhpcy5pc29XZWVrKCksIHRoaXMuaXNvV2Vla2RheSgpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJU09XZWVrc0luWWVhciAoKSB7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLnllYXIoKSwgMSwgNCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0V2Vla3NJblllYXIgKCkge1xuICAgICAgICB2YXIgd2Vla0luZm8gPSB0aGlzLmxvY2FsZURhdGEoKS5fd2VlaztcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCB3ZWVrSW5mby5kb3csIHdlZWtJbmZvLmRveSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0V2Vla1llYXJIZWxwZXIoaW5wdXQsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrc1RhcmdldDtcbiAgICAgICAgaWYgKGlucHV0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWVrT2ZZZWFyKHRoaXMsIGRvdywgZG95KS55ZWFyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2Vla3NUYXJnZXQgPSB3ZWVrc0luWWVhcihpbnB1dCwgZG93LCBkb3kpO1xuICAgICAgICAgICAgaWYgKHdlZWsgPiB3ZWVrc1RhcmdldCkge1xuICAgICAgICAgICAgICAgIHdlZWsgPSB3ZWVrc1RhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZXRXZWVrQWxsLmNhbGwodGhpcywgaW5wdXQsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldFdlZWtBbGwod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciBkYXlPZlllYXJEYXRhID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSksXG4gICAgICAgICAgICBkYXRlID0gY3JlYXRlVVRDRGF0ZShkYXlPZlllYXJEYXRhLnllYXIsIDAsIGRheU9mWWVhckRhdGEuZGF5T2ZZZWFyKTtcblxuICAgICAgICB0aGlzLnllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpKTtcbiAgICAgICAgdGhpcy5tb250aChkYXRlLmdldFVUQ01vbnRoKCkpO1xuICAgICAgICB0aGlzLmRhdGUoZGF0ZS5nZXRVVENEYXRlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUScsIDAsICdRbycsICdxdWFydGVyJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ3F1YXJ0ZXInLCAnUScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgncXVhcnRlcicsIDcpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignUScsIG1hdGNoMSk7XG4gICAgYWRkUGFyc2VUb2tlbignUScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTU9OVEhdID0gKHRvSW50KGlucHV0KSAtIDEpICogMztcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFF1YXJ0ZXIgKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gTWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkgKyAxKSAvIDMpIDogdGhpcy5tb250aCgoaW5wdXQgLSAxKSAqIDMgKyB0aGlzLm1vbnRoKCkgJSAzKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignRCcsIFsnREQnLCAyXSwgJ0RvJywgJ2RhdGUnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF0ZScsICdEJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnZGF0ZScsIDkpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRCcsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0REJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0RvJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICByZXR1cm4gaXNTdHJpY3QgP1xuICAgICAgICAgIChsb2NhbGUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2UgfHwgbG9jYWxlLl9vcmRpbmFsUGFyc2UpIDpcbiAgICAgICAgICBsb2NhbGUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50O1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ0QnLCAnREQnXSwgREFURSk7XG4gICAgYWRkUGFyc2VUb2tlbignRG8nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W0RBVEVdID0gdG9JbnQoaW5wdXQubWF0Y2gobWF0Y2gxdG8yKVswXSk7XG4gICAgfSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0RGF5T2ZNb250aCA9IG1ha2VHZXRTZXQoJ0RhdGUnLCB0cnVlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEREQnLCBbJ0REREQnLCAzXSwgJ0RERG8nLCAnZGF5T2ZZZWFyJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RheU9mWWVhcicsICdEREQnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXlPZlllYXInLCA0KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0RERCcsICBtYXRjaDF0bzMpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0REREQnLCBtYXRjaDMpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydEREQnLCAnRERERCddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXREYXlPZlllYXIgKGlucHV0KSB7XG4gICAgICAgIHZhciBkYXlPZlllYXIgPSBNYXRoLnJvdW5kKCh0aGlzLmNsb25lKCkuc3RhcnRPZignZGF5JykgLSB0aGlzLmNsb25lKCkuc3RhcnRPZigneWVhcicpKSAvIDg2NGU1KSArIDE7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gZGF5T2ZZZWFyIDogdGhpcy5hZGQoKGlucHV0IC0gZGF5T2ZZZWFyKSwgJ2QnKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignbScsIFsnbW0nLCAyXSwgMCwgJ21pbnV0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdtaW51dGUnLCAnbScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbWludXRlJywgMTQpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignbScsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ21tJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydtJywgJ21tJ10sIE1JTlVURSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0TWludXRlID0gbWFrZUdldFNldCgnTWludXRlcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdzJywgWydzcycsIDJdLCAwLCAnc2Vjb25kJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ3NlY29uZCcsICdzJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdzZWNvbmQnLCAxNSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdzJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignc3MnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ3MnLCAnc3MnXSwgU0VDT05EKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRTZWNvbmQgPSBtYWtlR2V0U2V0KCdTZWNvbmRzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1MnLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB+fih0aGlzLm1pbGxpc2Vjb25kKCkgLyAxMDApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTUycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB+fih0aGlzLm1pbGxpc2Vjb25kKCkgLyAxMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTUycsIDNdLCAwLCAnbWlsbGlzZWNvbmQnKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1MnLCA0XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTUycsIDVdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1MnLCA2XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1MnLCA3XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTUycsIDhdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTU1MnLCA5XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDAwMDtcbiAgICB9KTtcblxuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdtaWxsaXNlY29uZCcsICdtcycpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbWlsbGlzZWNvbmQnLCAxNik7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdTJywgICAgbWF0Y2gxdG8zLCBtYXRjaDEpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1NTJywgICBtYXRjaDF0bzMsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignU1NTJywgIG1hdGNoMXRvMywgbWF0Y2gzKTtcblxuICAgIHZhciB0b2tlbjtcbiAgICBmb3IgKHRva2VuID0gJ1NTU1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFJlZ2V4VG9rZW4odG9rZW4sIG1hdGNoVW5zaWduZWQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlTXMoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W01JTExJU0VDT05EXSA9IHRvSW50KCgnMC4nICsgaW5wdXQpICogMTAwMCk7XG4gICAgfVxuXG4gICAgZm9yICh0b2tlbiA9ICdTJzsgdG9rZW4ubGVuZ3RoIDw9IDk7IHRva2VuICs9ICdTJykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBwYXJzZU1zKTtcbiAgICB9XG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldE1pbGxpc2Vjb25kID0gbWFrZUdldFNldCgnTWlsbGlzZWNvbmRzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3onLCAgMCwgMCwgJ3pvbmVBYmJyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3p6JywgMCwgMCwgJ3pvbmVOYW1lJyk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRab25lQWJiciAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICdVVEMnIDogJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Wm9uZU5hbWUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUnIDogJyc7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvID0gTW9tZW50LnByb3RvdHlwZTtcblxuICAgIHByb3RvLmFkZCAgICAgICAgICAgICAgID0gYWRkO1xuICAgIHByb3RvLmNhbGVuZGFyICAgICAgICAgID0gY2FsZW5kYXIkMTtcbiAgICBwcm90by5jbG9uZSAgICAgICAgICAgICA9IGNsb25lO1xuICAgIHByb3RvLmRpZmYgICAgICAgICAgICAgID0gZGlmZjtcbiAgICBwcm90by5lbmRPZiAgICAgICAgICAgICA9IGVuZE9mO1xuICAgIHByb3RvLmZvcm1hdCAgICAgICAgICAgID0gZm9ybWF0O1xuICAgIHByb3RvLmZyb20gICAgICAgICAgICAgID0gZnJvbTtcbiAgICBwcm90by5mcm9tTm93ICAgICAgICAgICA9IGZyb21Ob3c7XG4gICAgcHJvdG8udG8gICAgICAgICAgICAgICAgPSB0bztcbiAgICBwcm90by50b05vdyAgICAgICAgICAgICA9IHRvTm93O1xuICAgIHByb3RvLmdldCAgICAgICAgICAgICAgID0gc3RyaW5nR2V0O1xuICAgIHByb3RvLmludmFsaWRBdCAgICAgICAgID0gaW52YWxpZEF0O1xuICAgIHByb3RvLmlzQWZ0ZXIgICAgICAgICAgID0gaXNBZnRlcjtcbiAgICBwcm90by5pc0JlZm9yZSAgICAgICAgICA9IGlzQmVmb3JlO1xuICAgIHByb3RvLmlzQmV0d2VlbiAgICAgICAgID0gaXNCZXR3ZWVuO1xuICAgIHByb3RvLmlzU2FtZSAgICAgICAgICAgID0gaXNTYW1lO1xuICAgIHByb3RvLmlzU2FtZU9yQWZ0ZXIgICAgID0gaXNTYW1lT3JBZnRlcjtcbiAgICBwcm90by5pc1NhbWVPckJlZm9yZSAgICA9IGlzU2FtZU9yQmVmb3JlO1xuICAgIHByb3RvLmlzVmFsaWQgICAgICAgICAgID0gaXNWYWxpZCQyO1xuICAgIHByb3RvLmxhbmcgICAgICAgICAgICAgID0gbGFuZztcbiAgICBwcm90by5sb2NhbGUgICAgICAgICAgICA9IGxvY2FsZTtcbiAgICBwcm90by5sb2NhbGVEYXRhICAgICAgICA9IGxvY2FsZURhdGE7XG4gICAgcHJvdG8ubWF4ICAgICAgICAgICAgICAgPSBwcm90b3R5cGVNYXg7XG4gICAgcHJvdG8ubWluICAgICAgICAgICAgICAgPSBwcm90b3R5cGVNaW47XG4gICAgcHJvdG8ucGFyc2luZ0ZsYWdzICAgICAgPSBwYXJzaW5nRmxhZ3M7XG4gICAgcHJvdG8uc2V0ICAgICAgICAgICAgICAgPSBzdHJpbmdTZXQ7XG4gICAgcHJvdG8uc3RhcnRPZiAgICAgICAgICAgPSBzdGFydE9mO1xuICAgIHByb3RvLnN1YnRyYWN0ICAgICAgICAgID0gc3VidHJhY3Q7XG4gICAgcHJvdG8udG9BcnJheSAgICAgICAgICAgPSB0b0FycmF5O1xuICAgIHByb3RvLnRvT2JqZWN0ICAgICAgICAgID0gdG9PYmplY3Q7XG4gICAgcHJvdG8udG9EYXRlICAgICAgICAgICAgPSB0b0RhdGU7XG4gICAgcHJvdG8udG9JU09TdHJpbmcgICAgICAgPSB0b0lTT1N0cmluZztcbiAgICBwcm90by5pbnNwZWN0ICAgICAgICAgICA9IGluc3BlY3Q7XG4gICAgcHJvdG8udG9KU09OICAgICAgICAgICAgPSB0b0pTT047XG4gICAgcHJvdG8udG9TdHJpbmcgICAgICAgICAgPSB0b1N0cmluZztcbiAgICBwcm90by51bml4ICAgICAgICAgICAgICA9IHVuaXg7XG4gICAgcHJvdG8udmFsdWVPZiAgICAgICAgICAgPSB2YWx1ZU9mO1xuICAgIHByb3RvLmNyZWF0aW9uRGF0YSAgICAgID0gY3JlYXRpb25EYXRhO1xuICAgIHByb3RvLnllYXIgICAgICAgPSBnZXRTZXRZZWFyO1xuICAgIHByb3RvLmlzTGVhcFllYXIgPSBnZXRJc0xlYXBZZWFyO1xuICAgIHByb3RvLndlZWtZZWFyICAgID0gZ2V0U2V0V2Vla1llYXI7XG4gICAgcHJvdG8uaXNvV2Vla1llYXIgPSBnZXRTZXRJU09XZWVrWWVhcjtcbiAgICBwcm90by5xdWFydGVyID0gcHJvdG8ucXVhcnRlcnMgPSBnZXRTZXRRdWFydGVyO1xuICAgIHByb3RvLm1vbnRoICAgICAgID0gZ2V0U2V0TW9udGg7XG4gICAgcHJvdG8uZGF5c0luTW9udGggPSBnZXREYXlzSW5Nb250aDtcbiAgICBwcm90by53ZWVrICAgICAgICAgICA9IHByb3RvLndlZWtzICAgICAgICA9IGdldFNldFdlZWs7XG4gICAgcHJvdG8uaXNvV2VlayAgICAgICAgPSBwcm90by5pc29XZWVrcyAgICAgPSBnZXRTZXRJU09XZWVrO1xuICAgIHByb3RvLndlZWtzSW5ZZWFyICAgID0gZ2V0V2Vla3NJblllYXI7XG4gICAgcHJvdG8uaXNvV2Vla3NJblllYXIgPSBnZXRJU09XZWVrc0luWWVhcjtcbiAgICBwcm90by5kYXRlICAgICAgID0gZ2V0U2V0RGF5T2ZNb250aDtcbiAgICBwcm90by5kYXkgICAgICAgID0gcHJvdG8uZGF5cyAgICAgICAgICAgICA9IGdldFNldERheU9mV2VlaztcbiAgICBwcm90by53ZWVrZGF5ICAgID0gZ2V0U2V0TG9jYWxlRGF5T2ZXZWVrO1xuICAgIHByb3RvLmlzb1dlZWtkYXkgPSBnZXRTZXRJU09EYXlPZldlZWs7XG4gICAgcHJvdG8uZGF5T2ZZZWFyICA9IGdldFNldERheU9mWWVhcjtcbiAgICBwcm90by5ob3VyID0gcHJvdG8uaG91cnMgPSBnZXRTZXRIb3VyO1xuICAgIHByb3RvLm1pbnV0ZSA9IHByb3RvLm1pbnV0ZXMgPSBnZXRTZXRNaW51dGU7XG4gICAgcHJvdG8uc2Vjb25kID0gcHJvdG8uc2Vjb25kcyA9IGdldFNldFNlY29uZDtcbiAgICBwcm90by5taWxsaXNlY29uZCA9IHByb3RvLm1pbGxpc2Vjb25kcyA9IGdldFNldE1pbGxpc2Vjb25kO1xuICAgIHByb3RvLnV0Y09mZnNldCAgICAgICAgICAgID0gZ2V0U2V0T2Zmc2V0O1xuICAgIHByb3RvLnV0YyAgICAgICAgICAgICAgICAgID0gc2V0T2Zmc2V0VG9VVEM7XG4gICAgcHJvdG8ubG9jYWwgICAgICAgICAgICAgICAgPSBzZXRPZmZzZXRUb0xvY2FsO1xuICAgIHByb3RvLnBhcnNlWm9uZSAgICAgICAgICAgID0gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQ7XG4gICAgcHJvdG8uaGFzQWxpZ25lZEhvdXJPZmZzZXQgPSBoYXNBbGlnbmVkSG91ck9mZnNldDtcbiAgICBwcm90by5pc0RTVCAgICAgICAgICAgICAgICA9IGlzRGF5bGlnaHRTYXZpbmdUaW1lO1xuICAgIHByb3RvLmlzTG9jYWwgICAgICAgICAgICAgID0gaXNMb2NhbDtcbiAgICBwcm90by5pc1V0Y09mZnNldCAgICAgICAgICA9IGlzVXRjT2Zmc2V0O1xuICAgIHByb3RvLmlzVXRjICAgICAgICAgICAgICAgID0gaXNVdGM7XG4gICAgcHJvdG8uaXNVVEMgICAgICAgICAgICAgICAgPSBpc1V0YztcbiAgICBwcm90by56b25lQWJiciA9IGdldFpvbmVBYmJyO1xuICAgIHByb3RvLnpvbmVOYW1lID0gZ2V0Wm9uZU5hbWU7XG4gICAgcHJvdG8uZGF0ZXMgID0gZGVwcmVjYXRlKCdkYXRlcyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLicsIGdldFNldERheU9mTW9udGgpO1xuICAgIHByb3RvLm1vbnRocyA9IGRlcHJlY2F0ZSgnbW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkJywgZ2V0U2V0TW9udGgpO1xuICAgIHByb3RvLnllYXJzICA9IGRlcHJlY2F0ZSgneWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCcsIGdldFNldFllYXIpO1xuICAgIHByb3RvLnpvbmUgICA9IGRlcHJlY2F0ZSgnbW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8nLCBnZXRTZXRab25lKTtcbiAgICBwcm90by5pc0RTVFNoaWZ0ZWQgPSBkZXByZWNhdGUoJ2lzRFNUU2hpZnRlZCBpcyBkZXByZWNhdGVkLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kc3Qtc2hpZnRlZC8gZm9yIG1vcmUgaW5mb3JtYXRpb24nLCBpc0RheWxpZ2h0U2F2aW5nVGltZVNoaWZ0ZWQpO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlVW5peCAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKGlucHV0ICogMTAwMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW5ab25lICgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cykucGFyc2Vab25lKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlUGFyc2VQb3N0Rm9ybWF0IChzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMSA9IExvY2FsZS5wcm90b3R5cGU7XG5cbiAgICBwcm90byQxLmNhbGVuZGFyICAgICAgICA9IGNhbGVuZGFyO1xuICAgIHByb3RvJDEubG9uZ0RhdGVGb3JtYXQgID0gbG9uZ0RhdGVGb3JtYXQ7XG4gICAgcHJvdG8kMS5pbnZhbGlkRGF0ZSAgICAgPSBpbnZhbGlkRGF0ZTtcbiAgICBwcm90byQxLm9yZGluYWwgICAgICAgICA9IG9yZGluYWw7XG4gICAgcHJvdG8kMS5wcmVwYXJzZSAgICAgICAgPSBwcmVQYXJzZVBvc3RGb3JtYXQ7XG4gICAgcHJvdG8kMS5wb3N0Zm9ybWF0ICAgICAgPSBwcmVQYXJzZVBvc3RGb3JtYXQ7XG4gICAgcHJvdG8kMS5yZWxhdGl2ZVRpbWUgICAgPSByZWxhdGl2ZVRpbWU7XG4gICAgcHJvdG8kMS5wYXN0RnV0dXJlICAgICAgPSBwYXN0RnV0dXJlO1xuICAgIHByb3RvJDEuc2V0ICAgICAgICAgICAgID0gc2V0O1xuXG4gICAgcHJvdG8kMS5tb250aHMgICAgICAgICAgICA9ICAgICAgICBsb2NhbGVNb250aHM7XG4gICAgcHJvdG8kMS5tb250aHNTaG9ydCAgICAgICA9ICAgICAgICBsb2NhbGVNb250aHNTaG9ydDtcbiAgICBwcm90byQxLm1vbnRoc1BhcnNlICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRoc1BhcnNlO1xuICAgIHByb3RvJDEubW9udGhzUmVnZXggICAgICAgPSBtb250aHNSZWdleDtcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0UmVnZXggID0gbW9udGhzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWsgPSBsb2NhbGVXZWVrO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZlllYXIgPSBsb2NhbGVGaXJzdERheU9mWWVhcjtcbiAgICBwcm90byQxLmZpcnN0RGF5T2ZXZWVrID0gbG9jYWxlRmlyc3REYXlPZldlZWs7XG5cbiAgICBwcm90byQxLndlZWtkYXlzICAgICAgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzO1xuICAgIHByb3RvJDEud2Vla2RheXNNaW4gICAgPSAgICAgICAgbG9jYWxlV2Vla2RheXNNaW47XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0ICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c1Nob3J0O1xuICAgIHByb3RvJDEud2Vla2RheXNQYXJzZSAgPSAgICAgICAgbG9jYWxlV2Vla2RheXNQYXJzZTtcblxuICAgIHByb3RvJDEud2Vla2RheXNSZWdleCAgICAgICA9ICAgICAgICB3ZWVrZGF5c1JlZ2V4O1xuICAgIHByb3RvJDEud2Vla2RheXNTaG9ydFJlZ2V4ICA9ICAgICAgICB3ZWVrZGF5c1Nob3J0UmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pblJlZ2V4ICAgID0gICAgICAgIHdlZWtkYXlzTWluUmVnZXg7XG5cbiAgICBwcm90byQxLmlzUE0gPSBsb2NhbGVJc1BNO1xuICAgIHByb3RvJDEubWVyaWRpZW0gPSBsb2NhbGVNZXJpZGllbTtcblxuICAgIGZ1bmN0aW9uIGdldCQxIChmb3JtYXQsIGluZGV4LCBmaWVsZCwgc2V0dGVyKSB7XG4gICAgICAgIHZhciBsb2NhbGUgPSBnZXRMb2NhbGUoKTtcbiAgICAgICAgdmFyIHV0YyA9IGNyZWF0ZVVUQygpLnNldChzZXR0ZXIsIGluZGV4KTtcbiAgICAgICAgcmV0dXJuIGxvY2FsZVtmaWVsZF0odXRjLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNJbXBsIChmb3JtYXQsIGluZGV4LCBmaWVsZCkge1xuICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQkMShmb3JtYXQsIGluZGV4LCBmaWVsZCwgJ21vbnRoJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaTtcbiAgICAgICAgdmFyIG91dCA9IFtdO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gZ2V0JDEoZm9ybWF0LCBpLCBmaWVsZCwgJ21vbnRoJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICAvLyAoKVxuICAgIC8vICg1KVxuICAgIC8vIChmbXQsIDUpXG4gICAgLy8gKGZtdClcbiAgICAvLyAodHJ1ZSlcbiAgICAvLyAodHJ1ZSwgNSlcbiAgICAvLyAodHJ1ZSwgZm10LCA1KVxuICAgIC8vICh0cnVlLCBmbXQpXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzSW1wbCAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCBmaWVsZCkge1xuICAgICAgICBpZiAodHlwZW9mIGxvY2FsZVNvcnRlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0ID0gbG9jYWxlU29ydGVkO1xuICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICBsb2NhbGVTb3J0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsb2NhbGUgPSBnZXRMb2NhbGUoKSxcbiAgICAgICAgICAgIHNoaWZ0ID0gbG9jYWxlU29ydGVkID8gbG9jYWxlLl93ZWVrLmRvdyA6IDA7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQkMShmb3JtYXQsIChpbmRleCArIHNoaWZ0KSAlIDcsIGZpZWxkLCAnZGF5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaTtcbiAgICAgICAgdmFyIG91dCA9IFtdO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIChpICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHMgKGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsICdtb250aHMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzU2hvcnQgKGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsICdtb250aHNTaG9ydCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5cyAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzU2hvcnQgKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzTWluIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXNNaW4nKTtcbiAgICB9XG5cbiAgICBnZXRTZXRHbG9iYWxMb2NhbGUoJ2VuJywge1xuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0odGh8c3R8bmR8cmQpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRvSW50KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuICAgIGhvb2tzLmxhbmcgPSBkZXByZWNhdGUoJ21vbWVudC5sYW5nIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlIGluc3RlYWQuJywgZ2V0U2V0R2xvYmFsTG9jYWxlKTtcbiAgICBob29rcy5sYW5nRGF0YSA9IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLicsIGdldExvY2FsZSk7XG5cbiAgICB2YXIgbWF0aEFicyA9IE1hdGguYWJzO1xuXG4gICAgZnVuY3Rpb24gYWJzICgpIHtcbiAgICAgICAgdmFyIGRhdGEgICAgICAgICAgID0gdGhpcy5fZGF0YTtcblxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSBtYXRoQWJzKHRoaXMuX21pbGxpc2Vjb25kcyk7XG4gICAgICAgIHRoaXMuX2RheXMgICAgICAgICA9IG1hdGhBYnModGhpcy5fZGF5cyk7XG4gICAgICAgIHRoaXMuX21vbnRocyAgICAgICA9IG1hdGhBYnModGhpcy5fbW9udGhzKTtcblxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyAgPSBtYXRoQWJzKGRhdGEubWlsbGlzZWNvbmRzKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzICAgICAgID0gbWF0aEFicyhkYXRhLnNlY29uZHMpO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgICAgICAgPSBtYXRoQWJzKGRhdGEubWludXRlcyk7XG4gICAgICAgIGRhdGEuaG91cnMgICAgICAgICA9IG1hdGhBYnMoZGF0YS5ob3Vycyk7XG4gICAgICAgIGRhdGEubW9udGhzICAgICAgICA9IG1hdGhBYnMoZGF0YS5tb250aHMpO1xuICAgICAgICBkYXRhLnllYXJzICAgICAgICAgPSBtYXRoQWJzKGRhdGEueWVhcnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFN1YnRyYWN0JDEgKGR1cmF0aW9uLCBpbnB1dCwgdmFsdWUsIGRpcmVjdGlvbikge1xuICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVEdXJhdGlvbihpbnB1dCwgdmFsdWUpO1xuXG4gICAgICAgIGR1cmF0aW9uLl9taWxsaXNlY29uZHMgKz0gZGlyZWN0aW9uICogb3RoZXIuX21pbGxpc2Vjb25kcztcbiAgICAgICAgZHVyYXRpb24uX2RheXMgICAgICAgICArPSBkaXJlY3Rpb24gKiBvdGhlci5fZGF5cztcbiAgICAgICAgZHVyYXRpb24uX21vbnRocyAgICAgICArPSBkaXJlY3Rpb24gKiBvdGhlci5fbW9udGhzO1xuXG4gICAgICAgIHJldHVybiBkdXJhdGlvbi5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydHMgb25seSAyLjAtc3R5bGUgYWRkKDEsICdzJykgb3IgYWRkKGR1cmF0aW9uKVxuICAgIGZ1bmN0aW9uIGFkZCQxIChpbnB1dCwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGFkZFN1YnRyYWN0JDEodGhpcywgaW5wdXQsIHZhbHVlLCAxKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBzdWJ0cmFjdCgxLCAncycpIG9yIHN1YnRyYWN0KGR1cmF0aW9uKVxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0JDEgKGlucHV0LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYWRkU3VidHJhY3QkMSh0aGlzLCBpbnB1dCwgdmFsdWUsIC0xKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNDZWlsIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bWJlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWJibGUgKCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5fbWlsbGlzZWNvbmRzO1xuICAgICAgICB2YXIgZGF5cyAgICAgICAgID0gdGhpcy5fZGF5cztcbiAgICAgICAgdmFyIG1vbnRocyAgICAgICA9IHRoaXMuX21vbnRocztcbiAgICAgICAgdmFyIGRhdGEgICAgICAgICA9IHRoaXMuX2RhdGE7XG4gICAgICAgIHZhciBzZWNvbmRzLCBtaW51dGVzLCBob3VycywgeWVhcnMsIG1vbnRoc0Zyb21EYXlzO1xuXG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSBtaXggb2YgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcywgYnViYmxlIGRvd24gZmlyc3RcbiAgICAgICAgLy8gY2hlY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8yMTY2XG4gICAgICAgIGlmICghKChtaWxsaXNlY29uZHMgPj0gMCAmJiBkYXlzID49IDAgJiYgbW9udGhzID49IDApIHx8XG4gICAgICAgICAgICAgICAgKG1pbGxpc2Vjb25kcyA8PSAwICYmIGRheXMgPD0gMCAmJiBtb250aHMgPD0gMCkpKSB7XG4gICAgICAgICAgICBtaWxsaXNlY29uZHMgKz0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzKSArIGRheXMpICogODY0ZTU7XG4gICAgICAgICAgICBkYXlzID0gMDtcbiAgICAgICAgICAgIG1vbnRocyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgYnViYmxlcyB1cCB2YWx1ZXMsIHNlZSB0aGUgdGVzdHMgZm9yXG4gICAgICAgIC8vIGV4YW1wbGVzIG9mIHdoYXQgdGhhdCBtZWFucy5cbiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgPSBtaWxsaXNlY29uZHMgJSAxMDAwO1xuXG4gICAgICAgIHNlY29uZHMgICAgICAgICAgID0gYWJzRmxvb3IobWlsbGlzZWNvbmRzIC8gMTAwMCk7XG4gICAgICAgIGRhdGEuc2Vjb25kcyAgICAgID0gc2Vjb25kcyAlIDYwO1xuXG4gICAgICAgIG1pbnV0ZXMgICAgICAgICAgID0gYWJzRmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICAgICAgZGF0YS5taW51dGVzICAgICAgPSBtaW51dGVzICUgNjA7XG5cbiAgICAgICAgaG91cnMgICAgICAgICAgICAgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApO1xuICAgICAgICBkYXRhLmhvdXJzICAgICAgICA9IGhvdXJzICUgMjQ7XG5cbiAgICAgICAgZGF5cyArPSBhYnNGbG9vcihob3VycyAvIDI0KTtcblxuICAgICAgICAvLyBjb252ZXJ0IGRheXMgdG8gbW9udGhzXG4gICAgICAgIG1vbnRoc0Zyb21EYXlzID0gYWJzRmxvb3IoZGF5c1RvTW9udGhzKGRheXMpKTtcbiAgICAgICAgbW9udGhzICs9IG1vbnRoc0Zyb21EYXlzO1xuICAgICAgICBkYXlzIC09IGFic0NlaWwobW9udGhzVG9EYXlzKG1vbnRoc0Zyb21EYXlzKSk7XG5cbiAgICAgICAgLy8gMTIgbW9udGhzIC0+IDEgeWVhclxuICAgICAgICB5ZWFycyA9IGFic0Zsb29yKG1vbnRocyAvIDEyKTtcbiAgICAgICAgbW9udGhzICU9IDEyO1xuXG4gICAgICAgIGRhdGEuZGF5cyAgID0gZGF5cztcbiAgICAgICAgZGF0YS5tb250aHMgPSBtb250aHM7XG4gICAgICAgIGRhdGEueWVhcnMgID0geWVhcnM7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5c1RvTW9udGhzIChkYXlzKSB7XG4gICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDE0NjA5NyBkYXlzICh0YWtpbmcgaW50byBhY2NvdW50IGxlYXAgeWVhciBydWxlcylcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTIgbW9udGhzID09PSA0ODAwXG4gICAgICAgIHJldHVybiBkYXlzICogNDgwMCAvIDE0NjA5NztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb250aHNUb0RheXMgKG1vbnRocykge1xuICAgICAgICAvLyB0aGUgcmV2ZXJzZSBvZiBkYXlzVG9Nb250aHNcbiAgICAgICAgcmV0dXJuIG1vbnRocyAqIDE0NjA5NyAvIDQ4MDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXMgKHVuaXRzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRheXM7XG4gICAgICAgIHZhciBtb250aHM7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7XG5cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG5cbiAgICAgICAgaWYgKHVuaXRzID09PSAnbW9udGgnIHx8IHVuaXRzID09PSAneWVhcicpIHtcbiAgICAgICAgICAgIGRheXMgICA9IHRoaXMuX2RheXMgICArIG1pbGxpc2Vjb25kcyAvIDg2NGU1O1xuICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzICsgZGF5c1RvTW9udGhzKGRheXMpO1xuICAgICAgICAgICAgcmV0dXJuIHVuaXRzID09PSAnbW9udGgnID8gbW9udGhzIDogbW9udGhzIC8gMTI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBoYW5kbGUgbWlsbGlzZWNvbmRzIHNlcGFyYXRlbHkgYmVjYXVzZSBvZiBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyAoaXNzdWUgIzE4NjcpXG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIE1hdGgucm91bmQobW9udGhzVG9EYXlzKHRoaXMuX21vbnRocykpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3dlZWsnICAgOiByZXR1cm4gZGF5cyAvIDcgICAgICsgbWlsbGlzZWNvbmRzIC8gNjA0OGU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RheScgICAgOiByZXR1cm4gZGF5cyAgICAgICAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnaG91cicgICA6IHJldHVybiBkYXlzICogMjQgICAgKyBtaWxsaXNlY29uZHMgLyAzNmU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ21pbnV0ZScgOiByZXR1cm4gZGF5cyAqIDE0NDAgICsgbWlsbGlzZWNvbmRzIC8gNmU0O1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlY29uZCcgOiByZXR1cm4gZGF5cyAqIDg2NDAwICsgbWlsbGlzZWNvbmRzIC8gMTAwMDtcbiAgICAgICAgICAgICAgICAvLyBNYXRoLmZsb29yIHByZXZlbnRzIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIGhlcmVcbiAgICAgICAgICAgICAgICBjYXNlICdtaWxsaXNlY29uZCc6IHJldHVybiBNYXRoLmZsb29yKGRheXMgKiA4NjRlNSkgKyBtaWxsaXNlY29uZHM7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHVuaXQgJyArIHVuaXRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSB0aGlzLmFzKCdtcycpP1xuICAgIGZ1bmN0aW9uIHZhbHVlT2YkMSAoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyArXG4gICAgICAgICAgICB0aGlzLl9kYXlzICogODY0ZTUgK1xuICAgICAgICAgICAgKHRoaXMuX21vbnRocyAlIDEyKSAqIDI1OTJlNiArXG4gICAgICAgICAgICB0b0ludCh0aGlzLl9tb250aHMgLyAxMikgKiAzMTUzNmU2XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUFzIChhbGlhcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXMoYWxpYXMpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBhc01pbGxpc2Vjb25kcyA9IG1ha2VBcygnbXMnKTtcbiAgICB2YXIgYXNTZWNvbmRzICAgICAgPSBtYWtlQXMoJ3MnKTtcbiAgICB2YXIgYXNNaW51dGVzICAgICAgPSBtYWtlQXMoJ20nKTtcbiAgICB2YXIgYXNIb3VycyAgICAgICAgPSBtYWtlQXMoJ2gnKTtcbiAgICB2YXIgYXNEYXlzICAgICAgICAgPSBtYWtlQXMoJ2QnKTtcbiAgICB2YXIgYXNXZWVrcyAgICAgICAgPSBtYWtlQXMoJ3cnKTtcbiAgICB2YXIgYXNNb250aHMgICAgICAgPSBtYWtlQXMoJ00nKTtcbiAgICB2YXIgYXNZZWFycyAgICAgICAgPSBtYWtlQXMoJ3knKTtcblxuICAgIGZ1bmN0aW9uIGNsb25lJDEgKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24odGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0JDIgKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzW3VuaXRzICsgJ3MnXSgpIDogTmFOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXR0ZXIobmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5fZGF0YVtuYW1lXSA6IE5hTjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gbWFrZUdldHRlcignbWlsbGlzZWNvbmRzJyk7XG4gICAgdmFyIHNlY29uZHMgICAgICA9IG1ha2VHZXR0ZXIoJ3NlY29uZHMnKTtcbiAgICB2YXIgbWludXRlcyAgICAgID0gbWFrZUdldHRlcignbWludXRlcycpO1xuICAgIHZhciBob3VycyAgICAgICAgPSBtYWtlR2V0dGVyKCdob3VycycpO1xuICAgIHZhciBkYXlzICAgICAgICAgPSBtYWtlR2V0dGVyKCdkYXlzJyk7XG4gICAgdmFyIG1vbnRocyAgICAgICA9IG1ha2VHZXR0ZXIoJ21vbnRocycpO1xuICAgIHZhciB5ZWFycyAgICAgICAgPSBtYWtlR2V0dGVyKCd5ZWFycycpO1xuXG4gICAgZnVuY3Rpb24gd2Vla3MgKCkge1xuICAgICAgICByZXR1cm4gYWJzRmxvb3IodGhpcy5kYXlzKCkgLyA3KTtcbiAgICB9XG5cbiAgICB2YXIgcm91bmQgPSBNYXRoLnJvdW5kO1xuICAgIHZhciB0aHJlc2hvbGRzID0ge1xuICAgICAgICBzczogNDQsICAgICAgICAgLy8gYSBmZXcgc2Vjb25kcyB0byBzZWNvbmRzXG4gICAgICAgIHMgOiA0NSwgICAgICAgICAvLyBzZWNvbmRzIHRvIG1pbnV0ZVxuICAgICAgICBtIDogNDUsICAgICAgICAgLy8gbWludXRlcyB0byBob3VyXG4gICAgICAgIGggOiAyMiwgICAgICAgICAvLyBob3VycyB0byBkYXlcbiAgICAgICAgZCA6IDI2LCAgICAgICAgIC8vIGRheXMgdG8gbW9udGhcbiAgICAgICAgTSA6IDExICAgICAgICAgIC8vIG1vbnRocyB0byB5ZWFyXG4gICAgfTtcblxuICAgIC8vIGhlbHBlciBmdW5jdGlvbiBmb3IgbW9tZW50LmZuLmZyb20sIG1vbWVudC5mbi5mcm9tTm93LCBhbmQgbW9tZW50LmR1cmF0aW9uLmZuLmh1bWFuaXplXG4gICAgZnVuY3Rpb24gc3Vic3RpdHV0ZVRpbWVBZ28oc3RyaW5nLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGlzRnV0dXJlLCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5yZWxhdGl2ZVRpbWUobnVtYmVyIHx8IDEsICEhd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lJDEgKHBvc05lZ0R1cmF0aW9uLCB3aXRob3V0U3VmZml4LCBsb2NhbGUpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gY3JlYXRlRHVyYXRpb24ocG9zTmVnRHVyYXRpb24pLmFicygpO1xuICAgICAgICB2YXIgc2Vjb25kcyAgPSByb3VuZChkdXJhdGlvbi5hcygncycpKTtcbiAgICAgICAgdmFyIG1pbnV0ZXMgID0gcm91bmQoZHVyYXRpb24uYXMoJ20nKSk7XG4gICAgICAgIHZhciBob3VycyAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdoJykpO1xuICAgICAgICB2YXIgZGF5cyAgICAgPSByb3VuZChkdXJhdGlvbi5hcygnZCcpKTtcbiAgICAgICAgdmFyIG1vbnRocyAgID0gcm91bmQoZHVyYXRpb24uYXMoJ00nKSk7XG4gICAgICAgIHZhciB5ZWFycyAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCd5JykpO1xuXG4gICAgICAgIHZhciBhID0gc2Vjb25kcyA8PSB0aHJlc2hvbGRzLnNzICYmIFsncycsIHNlY29uZHNdICB8fFxuICAgICAgICAgICAgICAgIHNlY29uZHMgPCB0aHJlc2hvbGRzLnMgICAmJiBbJ3NzJywgc2Vjb25kc10gfHxcbiAgICAgICAgICAgICAgICBtaW51dGVzIDw9IDEgICAgICAgICAgICAgJiYgWydtJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgbWludXRlcyA8IHRocmVzaG9sZHMubSAgICYmIFsnbW0nLCBtaW51dGVzXSB8fFxuICAgICAgICAgICAgICAgIGhvdXJzICAgPD0gMSAgICAgICAgICAgICAmJiBbJ2gnXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBob3VycyAgIDwgdGhyZXNob2xkcy5oICAgJiYgWydoaCcsIGhvdXJzXSAgIHx8XG4gICAgICAgICAgICAgICAgZGF5cyAgICA8PSAxICAgICAgICAgICAgICYmIFsnZCddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIGRheXMgICAgPCB0aHJlc2hvbGRzLmQgICAmJiBbJ2RkJywgZGF5c10gICAgfHxcbiAgICAgICAgICAgICAgICBtb250aHMgIDw9IDEgICAgICAgICAgICAgJiYgWydNJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgbW9udGhzICA8IHRocmVzaG9sZHMuTSAgICYmIFsnTU0nLCBtb250aHNdICB8fFxuICAgICAgICAgICAgICAgIHllYXJzICAgPD0gMSAgICAgICAgICAgICAmJiBbJ3knXSAgICAgICAgICAgfHwgWyd5eScsIHllYXJzXTtcblxuICAgICAgICBhWzJdID0gd2l0aG91dFN1ZmZpeDtcbiAgICAgICAgYVszXSA9ICtwb3NOZWdEdXJhdGlvbiA+IDA7XG4gICAgICAgIGFbNF0gPSBsb2NhbGU7XG4gICAgICAgIHJldHVybiBzdWJzdGl0dXRlVGltZUFnby5hcHBseShudWxsLCBhKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IHRoZSByb3VuZGluZyBmdW5jdGlvbiBmb3IgcmVsYXRpdmUgdGltZSBzdHJpbmdzXG4gICAgZnVuY3Rpb24gZ2V0U2V0UmVsYXRpdmVUaW1lUm91bmRpbmcgKHJvdW5kaW5nRnVuY3Rpb24pIHtcbiAgICAgICAgaWYgKHJvdW5kaW5nRnVuY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdW5kO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Yocm91bmRpbmdGdW5jdGlvbikgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJvdW5kID0gcm91bmRpbmdGdW5jdGlvbjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IGEgdGhyZXNob2xkIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQgKHRocmVzaG9sZCwgbGltaXQpIHtcbiAgICAgICAgaWYgKHRocmVzaG9sZHNbdGhyZXNob2xkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbWl0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJlc2hvbGRzW3RocmVzaG9sZF07XG4gICAgICAgIH1cbiAgICAgICAgdGhyZXNob2xkc1t0aHJlc2hvbGRdID0gbGltaXQ7XG4gICAgICAgIGlmICh0aHJlc2hvbGQgPT09ICdzJykge1xuICAgICAgICAgICAgdGhyZXNob2xkcy5zcyA9IGxpbWl0IC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBodW1hbml6ZSAod2l0aFN1ZmZpeCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsb2NhbGUgPSB0aGlzLmxvY2FsZURhdGEoKTtcbiAgICAgICAgdmFyIG91dHB1dCA9IHJlbGF0aXZlVGltZSQxKHRoaXMsICF3aXRoU3VmZml4LCBsb2NhbGUpO1xuXG4gICAgICAgIGlmICh3aXRoU3VmZml4KSB7XG4gICAgICAgICAgICBvdXRwdXQgPSBsb2NhbGUucGFzdEZ1dHVyZSgrdGhpcywgb3V0cHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhbGUucG9zdGZvcm1hdChvdXRwdXQpO1xuICAgIH1cblxuICAgIHZhciBhYnMkMSA9IE1hdGguYWJzO1xuXG4gICAgZnVuY3Rpb24gc2lnbih4KSB7XG4gICAgICAgIHJldHVybiAoKHggPiAwKSAtICh4IDwgMCkpIHx8ICt4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nJDEoKSB7XG4gICAgICAgIC8vIGZvciBJU08gc3RyaW5ncyB3ZSBkbyBub3QgdXNlIHRoZSBub3JtYWwgYnViYmxpbmcgcnVsZXM6XG4gICAgICAgIC8vICAqIG1pbGxpc2Vjb25kcyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgaG91cnNcbiAgICAgICAgLy8gICogZGF5cyBkbyBub3QgYnViYmxlIGF0IGFsbFxuICAgICAgICAvLyAgKiBtb250aHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVjb21lIHllYXJzXG4gICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB0aGVyZSBpcyBubyBjb250ZXh0LWZyZWUgY29udmVyc2lvbiBiZXR3ZWVuIGhvdXJzIGFuZCBkYXlzXG4gICAgICAgIC8vICh0aGluayBvZiBjbG9jayBjaGFuZ2VzKVxuICAgICAgICAvLyBhbmQgYWxzbyBub3QgYmV0d2VlbiBkYXlzIGFuZCBtb250aHMgKDI4LTMxIGRheXMgcGVyIG1vbnRoKVxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZWNvbmRzID0gYWJzJDEodGhpcy5fbWlsbGlzZWNvbmRzKSAvIDEwMDA7XG4gICAgICAgIHZhciBkYXlzICAgICAgICAgPSBhYnMkMSh0aGlzLl9kYXlzKTtcbiAgICAgICAgdmFyIG1vbnRocyAgICAgICA9IGFicyQxKHRoaXMuX21vbnRocyk7XG4gICAgICAgIHZhciBtaW51dGVzLCBob3VycywgeWVhcnM7XG5cbiAgICAgICAgLy8gMzYwMCBzZWNvbmRzIC0+IDYwIG1pbnV0ZXMgLT4gMSBob3VyXG4gICAgICAgIG1pbnV0ZXMgICAgICAgICAgID0gYWJzRmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICAgICAgaG91cnMgICAgICAgICAgICAgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApO1xuICAgICAgICBzZWNvbmRzICU9IDYwO1xuICAgICAgICBtaW51dGVzICU9IDYwO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cblxuICAgICAgICAvLyBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZG9yZGlsbGUvbW9tZW50LWlzb2R1cmF0aW9uL2Jsb2IvbWFzdGVyL21vbWVudC5pc29kdXJhdGlvbi5qc1xuICAgICAgICB2YXIgWSA9IHllYXJzO1xuICAgICAgICB2YXIgTSA9IG1vbnRocztcbiAgICAgICAgdmFyIEQgPSBkYXlzO1xuICAgICAgICB2YXIgaCA9IGhvdXJzO1xuICAgICAgICB2YXIgbSA9IG1pbnV0ZXM7XG4gICAgICAgIHZhciBzID0gc2Vjb25kcyA/IHNlY29uZHMudG9GaXhlZCgzKS5yZXBsYWNlKC9cXC4/MCskLywgJycpIDogJyc7XG4gICAgICAgIHZhciB0b3RhbCA9IHRoaXMuYXNTZWNvbmRzKCk7XG5cbiAgICAgICAgaWYgKCF0b3RhbCkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgc2FtZSBhcyBDIydzIChOb2RhKSBhbmQgcHl0aG9uIChpc29kYXRlKS4uLlxuICAgICAgICAgICAgLy8gYnV0IG5vdCBvdGhlciBKUyAoZ29vZy5kYXRlKVxuICAgICAgICAgICAgcmV0dXJuICdQMEQnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRvdGFsU2lnbiA9IHRvdGFsIDwgMCA/ICctJyA6ICcnO1xuICAgICAgICB2YXIgeW1TaWduID0gc2lnbih0aGlzLl9tb250aHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICB2YXIgZGF5c1NpZ24gPSBzaWduKHRoaXMuX2RheXMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICB2YXIgaG1zU2lnbiA9IHNpZ24odGhpcy5fbWlsbGlzZWNvbmRzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcblxuICAgICAgICByZXR1cm4gdG90YWxTaWduICsgJ1AnICtcbiAgICAgICAgICAgIChZID8geW1TaWduICsgWSArICdZJyA6ICcnKSArXG4gICAgICAgICAgICAoTSA/IHltU2lnbiArIE0gKyAnTScgOiAnJykgK1xuICAgICAgICAgICAgKEQgPyBkYXlzU2lnbiArIEQgKyAnRCcgOiAnJykgK1xuICAgICAgICAgICAgKChoIHx8IG0gfHwgcykgPyAnVCcgOiAnJykgK1xuICAgICAgICAgICAgKGggPyBobXNTaWduICsgaCArICdIJyA6ICcnKSArXG4gICAgICAgICAgICAobSA/IGhtc1NpZ24gKyBtICsgJ00nIDogJycpICtcbiAgICAgICAgICAgIChzID8gaG1zU2lnbiArIHMgKyAnUycgOiAnJyk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDIgPSBEdXJhdGlvbi5wcm90b3R5cGU7XG5cbiAgICBwcm90byQyLmlzVmFsaWQgICAgICAgID0gaXNWYWxpZCQxO1xuICAgIHByb3RvJDIuYWJzICAgICAgICAgICAgPSBhYnM7XG4gICAgcHJvdG8kMi5hZGQgICAgICAgICAgICA9IGFkZCQxO1xuICAgIHByb3RvJDIuc3VidHJhY3QgICAgICAgPSBzdWJ0cmFjdCQxO1xuICAgIHByb3RvJDIuYXMgICAgICAgICAgICAgPSBhcztcbiAgICBwcm90byQyLmFzTWlsbGlzZWNvbmRzID0gYXNNaWxsaXNlY29uZHM7XG4gICAgcHJvdG8kMi5hc1NlY29uZHMgICAgICA9IGFzU2Vjb25kcztcbiAgICBwcm90byQyLmFzTWludXRlcyAgICAgID0gYXNNaW51dGVzO1xuICAgIHByb3RvJDIuYXNIb3VycyAgICAgICAgPSBhc0hvdXJzO1xuICAgIHByb3RvJDIuYXNEYXlzICAgICAgICAgPSBhc0RheXM7XG4gICAgcHJvdG8kMi5hc1dlZWtzICAgICAgICA9IGFzV2Vla3M7XG4gICAgcHJvdG8kMi5hc01vbnRocyAgICAgICA9IGFzTW9udGhzO1xuICAgIHByb3RvJDIuYXNZZWFycyAgICAgICAgPSBhc1llYXJzO1xuICAgIHByb3RvJDIudmFsdWVPZiAgICAgICAgPSB2YWx1ZU9mJDE7XG4gICAgcHJvdG8kMi5fYnViYmxlICAgICAgICA9IGJ1YmJsZTtcbiAgICBwcm90byQyLmNsb25lICAgICAgICAgID0gY2xvbmUkMTtcbiAgICBwcm90byQyLmdldCAgICAgICAgICAgID0gZ2V0JDI7XG4gICAgcHJvdG8kMi5taWxsaXNlY29uZHMgICA9IG1pbGxpc2Vjb25kcztcbiAgICBwcm90byQyLnNlY29uZHMgICAgICAgID0gc2Vjb25kcztcbiAgICBwcm90byQyLm1pbnV0ZXMgICAgICAgID0gbWludXRlcztcbiAgICBwcm90byQyLmhvdXJzICAgICAgICAgID0gaG91cnM7XG4gICAgcHJvdG8kMi5kYXlzICAgICAgICAgICA9IGRheXM7XG4gICAgcHJvdG8kMi53ZWVrcyAgICAgICAgICA9IHdlZWtzO1xuICAgIHByb3RvJDIubW9udGhzICAgICAgICAgPSBtb250aHM7XG4gICAgcHJvdG8kMi55ZWFycyAgICAgICAgICA9IHllYXJzO1xuICAgIHByb3RvJDIuaHVtYW5pemUgICAgICAgPSBodW1hbml6ZTtcbiAgICBwcm90byQyLnRvSVNPU3RyaW5nICAgID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvU3RyaW5nICAgICAgID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvSlNPTiAgICAgICAgID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLmxvY2FsZSAgICAgICAgID0gbG9jYWxlO1xuICAgIHByb3RvJDIubG9jYWxlRGF0YSAgICAgPSBsb2NhbGVEYXRhO1xuXG4gICAgcHJvdG8kMi50b0lzb1N0cmluZyA9IGRlcHJlY2F0ZSgndG9Jc29TdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRvSVNPU3RyaW5nKCkgaW5zdGVhZCAobm90aWNlIHRoZSBjYXBpdGFscyknLCB0b0lTT1N0cmluZyQxKTtcbiAgICBwcm90byQyLmxhbmcgPSBsYW5nO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1gnLCAwLCAwLCAndW5peCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd4JywgMCwgMCwgJ3ZhbHVlT2YnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3gnLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignWCcsIG1hdGNoVGltZXN0YW1wKTtcbiAgICBhZGRQYXJzZVRva2VuKCdYJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHBhcnNlRmxvYXQoaW5wdXQsIDEwKSAqIDEwMDApO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ3gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUodG9JbnQoaW5wdXQpKTtcbiAgICB9KTtcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuXG4gICAgaG9va3MudmVyc2lvbiA9ICcyLjIyLjInO1xuXG4gICAgc2V0SG9va0NhbGxiYWNrKGNyZWF0ZUxvY2FsKTtcblxuICAgIGhvb2tzLmZuICAgICAgICAgICAgICAgICAgICA9IHByb3RvO1xuICAgIGhvb2tzLm1pbiAgICAgICAgICAgICAgICAgICA9IG1pbjtcbiAgICBob29rcy5tYXggICAgICAgICAgICAgICAgICAgPSBtYXg7XG4gICAgaG9va3Mubm93ICAgICAgICAgICAgICAgICAgID0gbm93O1xuICAgIGhvb2tzLnV0YyAgICAgICAgICAgICAgICAgICA9IGNyZWF0ZVVUQztcbiAgICBob29rcy51bml4ICAgICAgICAgICAgICAgICAgPSBjcmVhdGVVbml4O1xuICAgIGhvb2tzLm1vbnRocyAgICAgICAgICAgICAgICA9IGxpc3RNb250aHM7XG4gICAgaG9va3MuaXNEYXRlICAgICAgICAgICAgICAgID0gaXNEYXRlO1xuICAgIGhvb2tzLmxvY2FsZSAgICAgICAgICAgICAgICA9IGdldFNldEdsb2JhbExvY2FsZTtcbiAgICBob29rcy5pbnZhbGlkICAgICAgICAgICAgICAgPSBjcmVhdGVJbnZhbGlkO1xuICAgIGhvb2tzLmR1cmF0aW9uICAgICAgICAgICAgICA9IGNyZWF0ZUR1cmF0aW9uO1xuICAgIGhvb2tzLmlzTW9tZW50ICAgICAgICAgICAgICA9IGlzTW9tZW50O1xuICAgIGhvb2tzLndlZWtkYXlzICAgICAgICAgICAgICA9IGxpc3RXZWVrZGF5cztcbiAgICBob29rcy5wYXJzZVpvbmUgICAgICAgICAgICAgPSBjcmVhdGVJblpvbmU7XG4gICAgaG9va3MubG9jYWxlRGF0YSAgICAgICAgICAgID0gZ2V0TG9jYWxlO1xuICAgIGhvb2tzLmlzRHVyYXRpb24gICAgICAgICAgICA9IGlzRHVyYXRpb247XG4gICAgaG9va3MubW9udGhzU2hvcnQgICAgICAgICAgID0gbGlzdE1vbnRoc1Nob3J0O1xuICAgIGhvb2tzLndlZWtkYXlzTWluICAgICAgICAgICA9IGxpc3RXZWVrZGF5c01pbjtcbiAgICBob29rcy5kZWZpbmVMb2NhbGUgICAgICAgICAgPSBkZWZpbmVMb2NhbGU7XG4gICAgaG9va3MudXBkYXRlTG9jYWxlICAgICAgICAgID0gdXBkYXRlTG9jYWxlO1xuICAgIGhvb2tzLmxvY2FsZXMgICAgICAgICAgICAgICA9IGxpc3RMb2NhbGVzO1xuICAgIGhvb2tzLndlZWtkYXlzU2hvcnQgICAgICAgICA9IGxpc3RXZWVrZGF5c1Nob3J0O1xuICAgIGhvb2tzLm5vcm1hbGl6ZVVuaXRzICAgICAgICA9IG5vcm1hbGl6ZVVuaXRzO1xuICAgIGhvb2tzLnJlbGF0aXZlVGltZVJvdW5kaW5nICA9IGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nO1xuICAgIGhvb2tzLnJlbGF0aXZlVGltZVRocmVzaG9sZCA9IGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZDtcbiAgICBob29rcy5jYWxlbmRhckZvcm1hdCAgICAgICAgPSBnZXRDYWxlbmRhckZvcm1hdDtcbiAgICBob29rcy5wcm90b3R5cGUgICAgICAgICAgICAgPSBwcm90bztcblxuICAgIC8vIGN1cnJlbnRseSBIVE1MNSBpbnB1dCB0eXBlIG9ubHkgc3VwcG9ydHMgMjQtaG91ciBmb3JtYXRzXG4gICAgaG9va3MuSFRNTDVfRk1UID0ge1xuICAgICAgICBEQVRFVElNRV9MT0NBTDogJ1lZWVktTU0tRERUSEg6bW0nLCAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgLz5cbiAgICAgICAgREFURVRJTUVfTE9DQUxfU0VDT05EUzogJ1lZWVktTU0tRERUSEg6bW06c3MnLCAgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgREFURVRJTUVfTE9DQUxfTVM6ICdZWVlZLU1NLUREVEhIOm1tOnNzLlNTUycsICAgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIERBVEU6ICdZWVlZLU1NLUREJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIC8+XG4gICAgICAgIFRJTUU6ICdISDptbScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIC8+XG4gICAgICAgIFRJTUVfU0VDT05EUzogJ0hIOm1tOnNzJywgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgVElNRV9NUzogJ0hIOm1tOnNzLlNTUycsICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgV0VFSzogJ1lZWVktW1ddV1cnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ3ZWVrXCIgLz5cbiAgICAgICAgTU9OVEg6ICdZWVlZLU1NJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJtb250aFwiIC8+XG4gICAgfTtcblxuICAgIHJldHVybiBob29rcztcblxufSkpKTsiLCIvKiFcbiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjMuMy4xXG4gKiBodHRwczovL2pxdWVyeS5jb20vXG4gKlxuICogSW5jbHVkZXMgU2l6emxlLmpzXG4gKiBodHRwczovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHBzOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICogRGF0ZTogMjAxOC0wMS0yMFQxNzoyNFpcbiAqL1xuKCBmdW5jdGlvbiggZ2xvYmFsLCBmYWN0b3J5ICkge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdGlmICggdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyBGb3IgQ29tbW9uSlMgYW5kIENvbW1vbkpTLWxpa2UgZW52aXJvbm1lbnRzIHdoZXJlIGEgcHJvcGVyIGB3aW5kb3dgXG5cdFx0Ly8gaXMgcHJlc2VudCwgZXhlY3V0ZSB0aGUgZmFjdG9yeSBhbmQgZ2V0IGpRdWVyeS5cblx0XHQvLyBGb3IgZW52aXJvbm1lbnRzIHRoYXQgZG8gbm90IGhhdmUgYSBgd2luZG93YCB3aXRoIGEgYGRvY3VtZW50YFxuXHRcdC8vIChzdWNoIGFzIE5vZGUuanMpLCBleHBvc2UgYSBmYWN0b3J5IGFzIG1vZHVsZS5leHBvcnRzLlxuXHRcdC8vIFRoaXMgYWNjZW50dWF0ZXMgdGhlIG5lZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIHJlYWwgYHdpbmRvd2AuXG5cdFx0Ly8gZS5nLiB2YXIgalF1ZXJ5ID0gcmVxdWlyZShcImpxdWVyeVwiKSh3aW5kb3cpO1xuXHRcdC8vIFNlZSB0aWNrZXQgIzE0NTQ5IGZvciBtb3JlIGluZm8uXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBnbG9iYWwuZG9jdW1lbnQgP1xuXHRcdFx0ZmFjdG9yeSggZ2xvYmFsLCB0cnVlICkgOlxuXHRcdFx0ZnVuY3Rpb24oIHcgKSB7XG5cdFx0XHRcdGlmICggIXcuZG9jdW1lbnQgKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCBcImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnRcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWN0b3J5KCB3ICk7XG5cdFx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdGZhY3RvcnkoIGdsb2JhbCApO1xuXHR9XG5cbi8vIFBhc3MgdGhpcyBpZiB3aW5kb3cgaXMgbm90IGRlZmluZWQgeWV0XG59ICkoIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB0aGlzLCBmdW5jdGlvbiggd2luZG93LCBub0dsb2JhbCApIHtcblxuLy8gRWRnZSA8PSAxMiAtIDEzKywgRmlyZWZveCA8PTE4IC0gNDUrLCBJRSAxMCAtIDExLCBTYWZhcmkgNS4xIC0gOSssIGlPUyA2IC0gOS4xXG4vLyB0aHJvdyBleGNlcHRpb25zIHdoZW4gbm9uLXN0cmljdCBjb2RlIChlLmcuLCBBU1AuTkVUIDQuNSkgYWNjZXNzZXMgc3RyaWN0IG1vZGVcbi8vIGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyICh0cmFjLTEzMzM1KS4gQnV0IGFzIG9mIGpRdWVyeSAzLjAgKDIwMTYpLCBzdHJpY3QgbW9kZSBzaG91bGQgYmUgY29tbW9uXG4vLyBlbm91Z2ggdGhhdCBhbGwgc3VjaCBhdHRlbXB0cyBhcmUgZ3VhcmRlZCBpbiBhIHRyeSBibG9jay5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgYXJyID0gW107XG5cbnZhciBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDtcblxudmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG52YXIgc2xpY2UgPSBhcnIuc2xpY2U7XG5cbnZhciBjb25jYXQgPSBhcnIuY29uY2F0O1xuXG52YXIgcHVzaCA9IGFyci5wdXNoO1xuXG52YXIgaW5kZXhPZiA9IGFyci5pbmRleE9mO1xuXG52YXIgY2xhc3MydHlwZSA9IHt9O1xuXG52YXIgdG9TdHJpbmcgPSBjbGFzczJ0eXBlLnRvU3RyaW5nO1xuXG52YXIgaGFzT3duID0gY2xhc3MydHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIGZuVG9TdHJpbmcgPSBoYXNPd24udG9TdHJpbmc7XG5cbnZhciBPYmplY3RGdW5jdGlvblN0cmluZyA9IGZuVG9TdHJpbmcuY2FsbCggT2JqZWN0ICk7XG5cbnZhciBzdXBwb3J0ID0ge307XG5cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbiggb2JqICkge1xuXG4gICAgICAvLyBTdXBwb3J0OiBDaHJvbWUgPD01NywgRmlyZWZveCA8PTUyXG4gICAgICAvLyBJbiBzb21lIGJyb3dzZXJzLCB0eXBlb2YgcmV0dXJucyBcImZ1bmN0aW9uXCIgZm9yIEhUTUwgPG9iamVjdD4gZWxlbWVudHNcbiAgICAgIC8vIChpLmUuLCBgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib2JqZWN0XCIgKSA9PT0gXCJmdW5jdGlvblwiYCkuXG4gICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNsYXNzaWZ5ICphbnkqIERPTSBub2RlIGFzIGEgZnVuY3Rpb24uXG4gICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBvYmoubm9kZVR5cGUgIT09IFwibnVtYmVyXCI7XG4gIH07XG5cblxudmFyIGlzV2luZG93ID0gZnVuY3Rpb24gaXNXaW5kb3coIG9iaiApIHtcblx0XHRyZXR1cm4gb2JqICE9IG51bGwgJiYgb2JqID09PSBvYmoud2luZG93O1xuXHR9O1xuXG5cblxuXG5cdHZhciBwcmVzZXJ2ZWRTY3JpcHRBdHRyaWJ1dGVzID0ge1xuXHRcdHR5cGU6IHRydWUsXG5cdFx0c3JjOiB0cnVlLFxuXHRcdG5vTW9kdWxlOiB0cnVlXG5cdH07XG5cblx0ZnVuY3Rpb24gRE9NRXZhbCggY29kZSwgZG9jLCBub2RlICkge1xuXHRcdGRvYyA9IGRvYyB8fCBkb2N1bWVudDtcblxuXHRcdHZhciBpLFxuXHRcdFx0c2NyaXB0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoIFwic2NyaXB0XCIgKTtcblxuXHRcdHNjcmlwdC50ZXh0ID0gY29kZTtcblx0XHRpZiAoIG5vZGUgKSB7XG5cdFx0XHRmb3IgKCBpIGluIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgKSB7XG5cdFx0XHRcdGlmICggbm9kZVsgaSBdICkge1xuXHRcdFx0XHRcdHNjcmlwdFsgaSBdID0gbm9kZVsgaSBdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGRvYy5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHQgKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBzY3JpcHQgKTtcblx0fVxuXG5cbmZ1bmN0aW9uIHRvVHlwZSggb2JqICkge1xuXHRpZiAoIG9iaiA9PSBudWxsICkge1xuXHRcdHJldHVybiBvYmogKyBcIlwiO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5IChmdW5jdGlvbmlzaCBSZWdFeHApXG5cdHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIiA/XG5cdFx0Y2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbCggb2JqICkgXSB8fCBcIm9iamVjdFwiIDpcblx0XHR0eXBlb2Ygb2JqO1xufVxuLyogZ2xvYmFsIFN5bWJvbCAqL1xuLy8gRGVmaW5pbmcgdGhpcyBnbG9iYWwgaW4gLmVzbGludHJjLmpzb24gd291bGQgY3JlYXRlIGEgZGFuZ2VyIG9mIHVzaW5nIHRoZSBnbG9iYWxcbi8vIHVuZ3VhcmRlZCBpbiBhbm90aGVyIHBsYWNlLCBpdCBzZWVtcyBzYWZlciB0byBkZWZpbmUgZ2xvYmFsIG9ubHkgZm9yIHRoaXMgbW9kdWxlXG5cblxuXG52YXJcblx0dmVyc2lvbiA9IFwiMy4zLjFcIixcblxuXHQvLyBEZWZpbmUgYSBsb2NhbCBjb3B5IG9mIGpRdWVyeVxuXHRqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7XG5cblx0XHQvLyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBpbml0IGNvbnN0cnVjdG9yICdlbmhhbmNlZCdcblx0XHQvLyBOZWVkIGluaXQgaWYgalF1ZXJ5IGlzIGNhbGxlZCAoanVzdCBhbGxvdyBlcnJvciB0byBiZSB0aHJvd24gaWYgbm90IGluY2x1ZGVkKVxuXHRcdHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBjb250ZXh0ICk7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5XG5cdC8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUFxuXHRydHJpbSA9IC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZztcblxualF1ZXJ5LmZuID0galF1ZXJ5LnByb3RvdHlwZSA9IHtcblxuXHQvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkXG5cdGpxdWVyeTogdmVyc2lvbixcblxuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LFxuXG5cdC8vIFRoZSBkZWZhdWx0IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMFxuXHRsZW5ndGg6IDAsXG5cblx0dG9BcnJheTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTtcblx0fSxcblxuXHQvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0IE9SXG5cdC8vIEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5XG5cdGdldDogZnVuY3Rpb24oIG51bSApIHtcblxuXHRcdC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGluIGEgY2xlYW4gYXJyYXlcblx0XHRpZiAoIG51bSA9PSBudWxsICkge1xuXHRcdFx0cmV0dXJuIHNsaWNlLmNhbGwoIHRoaXMgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4ganVzdCB0aGUgb25lIGVsZW1lbnQgZnJvbSB0aGUgc2V0XG5cdFx0cmV0dXJuIG51bSA8IDAgPyB0aGlzWyBudW0gKyB0aGlzLmxlbmd0aCBdIDogdGhpc1sgbnVtIF07XG5cdH0sXG5cblx0Ly8gVGFrZSBhbiBhcnJheSBvZiBlbGVtZW50cyBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFja1xuXHQvLyAocmV0dXJuaW5nIHRoZSBuZXcgbWF0Y2hlZCBlbGVtZW50IHNldClcblx0cHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cblx0XHQvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNldFxuXHRcdHZhciByZXQgPSBqUXVlcnkubWVyZ2UoIHRoaXMuY29uc3RydWN0b3IoKSwgZWxlbXMgKTtcblxuXHRcdC8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpXG5cdFx0cmV0LnByZXZPYmplY3QgPSB0aGlzO1xuXG5cdFx0Ly8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXRcblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBzZXQuXG5cdGVhY2g6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrICk7XG5cdH0sXG5cblx0bWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVtICk7XG5cdFx0fSApICk7XG5cdH0sXG5cblx0c2xpY2U6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApICk7XG5cdH0sXG5cblx0Zmlyc3Q6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVxKCAwICk7XG5cdH0sXG5cblx0bGFzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIC0xICk7XG5cdH0sXG5cblx0ZXE6IGZ1bmN0aW9uKCBpICkge1xuXHRcdHZhciBsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdGogPSAraSArICggaSA8IDAgPyBsZW4gOiAwICk7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhpc1sgaiBdIF0gOiBbXSApO1xuXHR9LFxuXG5cdGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVjdG9yKCk7XG5cdH0sXG5cblx0Ly8gRm9yIGludGVybmFsIHVzZSBvbmx5LlxuXHQvLyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5IG1ldGhvZC5cblx0cHVzaDogcHVzaCxcblx0c29ydDogYXJyLnNvcnQsXG5cdHNwbGljZTogYXJyLnNwbGljZVxufTtcblxualF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlvbigpIHtcblx0dmFyIG9wdGlvbnMsIG5hbWUsIHNyYywgY29weSwgY29weUlzQXJyYXksIGNsb25lLFxuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sgMCBdIHx8IHt9LFxuXHRcdGkgPSAxLFxuXHRcdGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0ZGVlcCA9IGZhbHNlO1xuXG5cdC8vIEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb25cblx0aWYgKCB0eXBlb2YgdGFyZ2V0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXG5cdFx0Ly8gU2tpcCB0aGUgYm9vbGVhbiBhbmQgdGhlIHRhcmdldFxuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sgaSBdIHx8IHt9O1xuXHRcdGkrKztcblx0fVxuXG5cdC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KVxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgIT09IFwib2JqZWN0XCIgJiYgIWlzRnVuY3Rpb24oIHRhcmdldCApICkge1xuXHRcdHRhcmdldCA9IHt9O1xuXHR9XG5cblx0Ly8gRXh0ZW5kIGpRdWVyeSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkXG5cdGlmICggaSA9PT0gbGVuZ3RoICkge1xuXHRcdHRhcmdldCA9IHRoaXM7XG5cdFx0aS0tO1xuXHR9XG5cblx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cblx0XHQvLyBPbmx5IGRlYWwgd2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzXG5cdFx0aWYgKCAoIG9wdGlvbnMgPSBhcmd1bWVudHNbIGkgXSApICE9IG51bGwgKSB7XG5cblx0XHRcdC8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3Rcblx0XHRcdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRcdFx0c3JjID0gdGFyZ2V0WyBuYW1lIF07XG5cdFx0XHRcdGNvcHkgPSBvcHRpb25zWyBuYW1lIF07XG5cblx0XHRcdFx0Ly8gUHJldmVudCBuZXZlci1lbmRpbmcgbG9vcFxuXHRcdFx0XHRpZiAoIHRhcmdldCA9PT0gY29weSApIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlY3Vyc2UgaWYgd2UncmUgbWVyZ2luZyBwbGFpbiBvYmplY3RzIG9yIGFycmF5c1xuXHRcdFx0XHRpZiAoIGRlZXAgJiYgY29weSAmJiAoIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb3B5ICkgfHxcblx0XHRcdFx0XHQoIGNvcHlJc0FycmF5ID0gQXJyYXkuaXNBcnJheSggY29weSApICkgKSApIHtcblxuXHRcdFx0XHRcdGlmICggY29weUlzQXJyYXkgKSB7XG5cdFx0XHRcdFx0XHRjb3B5SXNBcnJheSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgQXJyYXkuaXNBcnJheSggc3JjICkgPyBzcmMgOiBbXTtcblxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggc3JjICkgPyBzcmMgOiB7fTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW1cblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIGNsb25lLCBjb3B5ICk7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHR9IGVsc2UgaWYgKCBjb3B5ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBjb3B5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBVbmlxdWUgZm9yIGVhY2ggY29weSBvZiBqUXVlcnkgb24gdGhlIHBhZ2Vcblx0ZXhwYW5kbzogXCJqUXVlcnlcIiArICggdmVyc2lvbiArIE1hdGgucmFuZG9tKCkgKS5yZXBsYWNlKCAvXFxEL2csIFwiXCIgKSxcblxuXHQvLyBBc3N1bWUgalF1ZXJ5IGlzIHJlYWR5IHdpdGhvdXQgdGhlIHJlYWR5IG1vZHVsZVxuXHRpc1JlYWR5OiB0cnVlLFxuXG5cdGVycm9yOiBmdW5jdGlvbiggbXNnICkge1xuXHRcdHRocm93IG5ldyBFcnJvciggbXNnICk7XG5cdH0sXG5cblx0bm9vcDogZnVuY3Rpb24oKSB7fSxcblxuXHRpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdHZhciBwcm90bywgQ3RvcjtcblxuXHRcdC8vIERldGVjdCBvYnZpb3VzIG5lZ2F0aXZlc1xuXHRcdC8vIFVzZSB0b1N0cmluZyBpbnN0ZWFkIG9mIGpRdWVyeS50eXBlIHRvIGNhdGNoIGhvc3Qgb2JqZWN0c1xuXHRcdGlmICggIW9iaiB8fCB0b1N0cmluZy5jYWxsKCBvYmogKSAhPT0gXCJbb2JqZWN0IE9iamVjdF1cIiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRwcm90byA9IGdldFByb3RvKCBvYmogKTtcblxuXHRcdC8vIE9iamVjdHMgd2l0aCBubyBwcm90b3R5cGUgKGUuZy4sIGBPYmplY3QuY3JlYXRlKCBudWxsIClgKSBhcmUgcGxhaW5cblx0XHRpZiAoICFwcm90byApIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIE9iamVjdHMgd2l0aCBwcm90b3R5cGUgYXJlIHBsYWluIGlmZiB0aGV5IHdlcmUgY29uc3RydWN0ZWQgYnkgYSBnbG9iYWwgT2JqZWN0IGZ1bmN0aW9uXG5cdFx0Q3RvciA9IGhhc093bi5jYWxsKCBwcm90bywgXCJjb25zdHJ1Y3RvclwiICkgJiYgcHJvdG8uY29uc3RydWN0b3I7XG5cdFx0cmV0dXJuIHR5cGVvZiBDdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgZm5Ub1N0cmluZy5jYWxsKCBDdG9yICkgPT09IE9iamVjdEZ1bmN0aW9uU3RyaW5nO1xuXHR9LFxuXG5cdGlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cblx0XHQvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXHRcdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvNjEyNVxuXHRcdHZhciBuYW1lO1xuXG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdC8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250ZXh0XG5cdGdsb2JhbEV2YWw6IGZ1bmN0aW9uKCBjb2RlICkge1xuXHRcdERPTUV2YWwoIGNvZGUgKTtcblx0fSxcblxuXHRlYWNoOiBmdW5jdGlvbiggb2JqLCBjYWxsYmFjayApIHtcblx0XHR2YXIgbGVuZ3RoLCBpID0gMDtcblxuXHRcdGlmICggaXNBcnJheUxpa2UoIG9iaiApICkge1xuXHRcdFx0bGVuZ3RoID0gb2JqLmxlbmd0aDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIG9iaiApIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb2JqO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seVxuXHR0cmltOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRyZXR1cm4gdGV4dCA9PSBudWxsID9cblx0XHRcdFwiXCIgOlxuXHRcdFx0KCB0ZXh0ICsgXCJcIiApLnJlcGxhY2UoIHJ0cmltLCBcIlwiICk7XG5cdH0sXG5cblx0Ly8gcmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7XG5cdFx0dmFyIHJldCA9IHJlc3VsdHMgfHwgW107XG5cblx0XHRpZiAoIGFyciAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBpc0FycmF5TGlrZSggT2JqZWN0KCBhcnIgKSApICkge1xuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHJldCxcblx0XHRcdFx0XHR0eXBlb2YgYXJyID09PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRbIGFyciBdIDogYXJyXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmNhbGwoIHJldCwgYXJyICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHRpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkge1xuXHRcdHJldHVybiBhcnIgPT0gbnVsbCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7XG5cdFx0dmFyIGxlbiA9ICtzZWNvbmQubGVuZ3RoLFxuXHRcdFx0aiA9IDAsXG5cdFx0XHRpID0gZmlyc3QubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTtcblx0XHR9XG5cblx0XHRmaXJzdC5sZW5ndGggPSBpO1xuXG5cdFx0cmV0dXJuIGZpcnN0O1xuXHR9LFxuXG5cdGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHtcblx0XHR2YXIgY2FsbGJhY2tJbnZlcnNlLFxuXHRcdFx0bWF0Y2hlcyA9IFtdLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXG5cdFx0XHRjYWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zXG5cdFx0Ly8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25cblx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdGNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApO1xuXHRcdFx0aWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkge1xuXHRcdFx0XHRtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbWF0Y2hlcztcblx0fSxcblxuXHQvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7XG5cdFx0dmFyIGxlbmd0aCwgdmFsdWUsXG5cdFx0XHRpID0gMCxcblx0XHRcdHJldCA9IFtdO1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyIG5ldyB2YWx1ZXNcblx0XHRpZiAoIGlzQXJyYXlMaWtlKCBlbGVtcyApICkge1xuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCxcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICggaSBpbiBlbGVtcyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRcdHJldHVybiBjb25jYXQuYXBwbHkoIFtdLCByZXQgKTtcblx0fSxcblxuXHQvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVjdHNcblx0Z3VpZDogMSxcblxuXHQvLyBqUXVlcnkuc3VwcG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXJcblx0Ly8gcHJvcGVydGllcyB0byBpdCBzbyBpdCBuZWVkcyB0byBleGlzdC5cblx0c3VwcG9ydDogc3VwcG9ydFxufSApO1xuXG5pZiAoIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiApIHtcblx0alF1ZXJ5LmZuWyBTeW1ib2wuaXRlcmF0b3IgXSA9IGFyclsgU3ltYm9sLml0ZXJhdG9yIF07XG59XG5cbi8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1hcFxualF1ZXJ5LmVhY2goIFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2xcIi5zcGxpdCggXCIgXCIgKSxcbmZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHRjbGFzczJ0eXBlWyBcIltvYmplY3QgXCIgKyBuYW1lICsgXCJdXCIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbn0gKTtcblxuZnVuY3Rpb24gaXNBcnJheUxpa2UoIG9iaiApIHtcblxuXHQvLyBTdXBwb3J0OiByZWFsIGlPUyA4LjIgb25seSAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpXG5cdC8vIGBpbmAgY2hlY2sgdXNlZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSlcblx0Ly8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUgdG8gZmFsc2UgbmVnYXRpdmVzXG5cdC8vIHJlZ2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUVcblx0dmFyIGxlbmd0aCA9ICEhb2JqICYmIFwibGVuZ3RoXCIgaW4gb2JqICYmIG9iai5sZW5ndGgsXG5cdFx0dHlwZSA9IHRvVHlwZSggb2JqICk7XG5cblx0aWYgKCBpc0Z1bmN0aW9uKCBvYmogKSB8fCBpc1dpbmRvdyggb2JqICkgKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIHR5cGUgPT09IFwiYXJyYXlcIiB8fCBsZW5ndGggPT09IDAgfHxcblx0XHR0eXBlb2YgbGVuZ3RoID09PSBcIm51bWJlclwiICYmIGxlbmd0aCA+IDAgJiYgKCBsZW5ndGggLSAxICkgaW4gb2JqO1xufVxudmFyIFNpenpsZSA9XG4vKiFcbiAqIFNpenpsZSBDU1MgU2VsZWN0b3IgRW5naW5lIHYyLjMuM1xuICogaHR0cHM6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IDIwMTYtMDgtMDhcbiAqL1xuKGZ1bmN0aW9uKCB3aW5kb3cgKSB7XG5cbnZhciBpLFxuXHRzdXBwb3J0LFxuXHRFeHByLFxuXHRnZXRUZXh0LFxuXHRpc1hNTCxcblx0dG9rZW5pemUsXG5cdGNvbXBpbGUsXG5cdHNlbGVjdCxcblx0b3V0ZXJtb3N0Q29udGV4dCxcblx0c29ydElucHV0LFxuXHRoYXNEdXBsaWNhdGUsXG5cblx0Ly8gTG9jYWwgZG9jdW1lbnQgdmFyc1xuXHRzZXREb2N1bWVudCxcblx0ZG9jdW1lbnQsXG5cdGRvY0VsZW0sXG5cdGRvY3VtZW50SXNIVE1MLFxuXHRyYnVnZ3lRU0EsXG5cdHJidWdneU1hdGNoZXMsXG5cdG1hdGNoZXMsXG5cdGNvbnRhaW5zLFxuXG5cdC8vIEluc3RhbmNlLXNwZWNpZmljIGRhdGFcblx0ZXhwYW5kbyA9IFwic2l6emxlXCIgKyAxICogbmV3IERhdGUoKSxcblx0cHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50LFxuXHRkaXJydW5zID0gMCxcblx0ZG9uZSA9IDAsXG5cdGNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHR0b2tlbkNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0Y29tcGlsZXJDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiAwO1xuXHR9LFxuXG5cdC8vIEluc3RhbmNlIG1ldGhvZHNcblx0aGFzT3duID0gKHt9KS5oYXNPd25Qcm9wZXJ0eSxcblx0YXJyID0gW10sXG5cdHBvcCA9IGFyci5wb3AsXG5cdHB1c2hfbmF0aXZlID0gYXJyLnB1c2gsXG5cdHB1c2ggPSBhcnIucHVzaCxcblx0c2xpY2UgPSBhcnIuc2xpY2UsXG5cdC8vIFVzZSBhIHN0cmlwcGVkLWRvd24gaW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5hdGl2ZVxuXHQvLyBodHRwczovL2pzcGVyZi5jb20vdGhvci1pbmRleG9mLXZzLWZvci81XG5cdGluZGV4T2YgPSBmdW5jdGlvbiggbGlzdCwgZWxlbSApIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRsZW4gPSBsaXN0Lmxlbmd0aDtcblx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGlmICggbGlzdFtpXSA9PT0gZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAtMTtcblx0fSxcblxuXHRib29sZWFucyA9IFwiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWRcIixcblxuXHQvLyBSZWd1bGFyIGV4cHJlc3Npb25zXG5cblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI3doaXRlc3BhY2Vcblx0d2hpdGVzcGFjZSA9IFwiW1xcXFx4MjBcXFxcdFxcXFxyXFxcXG5cXFxcZl1cIixcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjdmFsdWUtZGVmLWlkZW50aWZpZXJcblx0aWRlbnRpZmllciA9IFwiKD86XFxcXFxcXFwufFtcXFxcdy1dfFteXFwwLVxcXFx4YTBdKStcIixcblxuXHQvLyBBdHRyaWJ1dGUgc2VsZWN0b3JzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnNcblx0YXR0cmlidXRlcyA9IFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBPcGVyYXRvciAoY2FwdHVyZSAyKVxuXHRcdFwiKihbKl4kfCF+XT89KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0Ly8gXCJBdHRyaWJ1dGUgdmFsdWVzIG11c3QgYmUgQ1NTIGlkZW50aWZpZXJzIFtjYXB0dXJlIDVdIG9yIHN0cmluZ3MgW2NhcHR1cmUgMyBvciBjYXB0dXJlIDRdXCJcblx0XHRcIiooPzonKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCJ8KFwiICsgaWRlbnRpZmllciArIFwiKSl8KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0XCIqXFxcXF1cIixcblxuXHRwc2V1ZG9zID0gXCI6KFwiICsgaWRlbnRpZmllciArIFwiKSg/OlxcXFwoKFwiICtcblx0XHQvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMgbmVlZGluZyB0b2tlbml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJndW1lbnRzOlxuXHRcdC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KVxuXHRcdFwiKCcoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcIil8XCIgK1xuXHRcdC8vIDIuIHNpbXBsZSAoY2FwdHVyZSA2KVxuXHRcdFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKClbXFxcXF1dfFwiICsgYXR0cmlidXRlcyArIFwiKSopfFwiICtcblx0XHQvLyAzLiBhbnl0aGluZyBlbHNlIChjYXB0dXJlIDIpXG5cdFx0XCIuKlwiICtcblx0XHRcIilcXFxcKXwpXCIsXG5cblx0Ly8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlclxuXHRyd2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyBcIitcIiwgXCJnXCIgKSxcblx0cnRyaW0gPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIit8KCg/Ol58W15cXFxcXFxcXF0pKD86XFxcXFxcXFwuKSopXCIgKyB3aGl0ZXNwYWNlICsgXCIrJFwiLCBcImdcIiApLFxuXG5cdHJjb21tYSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKixcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXHRyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiooWz4rfl18XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcblxuXHRyYXR0cmlidXRlUXVvdGVzID0gbmV3IFJlZ0V4cCggXCI9XCIgKyB3aGl0ZXNwYWNlICsgXCIqKFteXFxcXF0nXFxcIl0qPylcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcXVwiLCBcImdcIiApLFxuXG5cdHJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9zICksXG5cdHJpZGVudGlmaWVyID0gbmV3IFJlZ0V4cCggXCJeXCIgKyBpZGVudGlmaWVyICsgXCIkXCIgKSxcblxuXHRtYXRjaEV4cHIgPSB7XG5cdFx0XCJJRFwiOiBuZXcgUmVnRXhwKCBcIl4jKFwiICsgaWRlbnRpZmllciArIFwiKVwiICksXG5cdFx0XCJDTEFTU1wiOiBuZXcgUmVnRXhwKCBcIl5cXFxcLihcIiArIGlkZW50aWZpZXIgKyBcIilcIiApLFxuXHRcdFwiVEFHXCI6IG5ldyBSZWdFeHAoIFwiXihcIiArIGlkZW50aWZpZXIgKyBcInxbKl0pXCIgKSxcblx0XHRcIkFUVFJcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBhdHRyaWJ1dGVzICksXG5cdFx0XCJQU0VVRE9cIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBwc2V1ZG9zICksXG5cdFx0XCJDSElMRFwiOiBuZXcgUmVnRXhwKCBcIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcXFwoXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihldmVufG9kZHwoKFsrLV18KShcXFxcZCopbnwpXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86KFsrLV18KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcIiooXFxcXGQrKXwpKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfClcIiwgXCJpXCIgKSxcblx0XHRcImJvb2xcIjogbmV3IFJlZ0V4cCggXCJeKD86XCIgKyBib29sZWFucyArIFwiKSRcIiwgXCJpXCIgKSxcblx0XHQvLyBGb3IgdXNlIGluIGxpYnJhcmllcyBpbXBsZW1lbnRpbmcgLmlzKClcblx0XHQvLyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGluIGBzZWxlY3RgXG5cdFx0XCJuZWVkc0NvbnRleHRcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXFxcKFwiICtcblx0XHRcdHdoaXRlc3BhY2UgKyBcIiooKD86LVxcXFxkKT9cXFxcZCopXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KSg/PVteLV18JClcIiwgXCJpXCIgKVxuXHR9LFxuXG5cdHJpbnB1dHMgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyaGVhZGVyID0gL15oXFxkJC9pLFxuXG5cdHJuYXRpdmUgPSAvXltee10rXFx7XFxzKlxcW25hdGl2ZSBcXHcvLFxuXG5cdC8vIEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9yc1xuXHRycXVpY2tFeHByID0gL14oPzojKFtcXHctXSspfChcXHcrKXxcXC4oW1xcdy1dKykpJC8sXG5cblx0cnNpYmxpbmcgPSAvWyt+XS8sXG5cblx0Ly8gQ1NTIGVzY2FwZXNcblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI2VzY2FwZWQtY2hhcmFjdGVyc1xuXHRydW5lc2NhcGUgPSBuZXcgUmVnRXhwKCBcIlxcXFxcXFxcKFtcXFxcZGEtZl17MSw2fVwiICsgd2hpdGVzcGFjZSArIFwiP3woXCIgKyB3aGl0ZXNwYWNlICsgXCIpfC4pXCIsIFwiaWdcIiApLFxuXHRmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywgZXNjYXBlZCwgZXNjYXBlZFdoaXRlc3BhY2UgKSB7XG5cdFx0dmFyIGhpZ2ggPSBcIjB4XCIgKyBlc2NhcGVkIC0gMHgxMDAwMDtcblx0XHQvLyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludFxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3g8MjRcblx0XHQvLyBXb3JrYXJvdW5kIGVycm9uZW91cyBudW1lcmljIGludGVycHJldGF0aW9uIG9mICtcIjB4XCJcblx0XHRyZXR1cm4gaGlnaCAhPT0gaGlnaCB8fCBlc2NhcGVkV2hpdGVzcGFjZSA/XG5cdFx0XHRlc2NhcGVkIDpcblx0XHRcdGhpZ2ggPCAwID9cblx0XHRcdFx0Ly8gQk1QIGNvZGVwb2ludFxuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoICsgMHgxMDAwMCApIDpcblx0XHRcdFx0Ly8gU3VwcGxlbWVudGFsIFBsYW5lIGNvZGVwb2ludCAoc3Vycm9nYXRlIHBhaXIpXG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApO1xuXHR9LFxuXG5cdC8vIENTUyBzdHJpbmcvaWRlbnRpZmllciBzZXJpYWxpemF0aW9uXG5cdC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tc1xuXHRyY3NzZXNjYXBlID0gLyhbXFwwLVxceDFmXFx4N2ZdfF4tP1xcZCl8Xi0kfFteXFwwLVxceDFmXFx4N2YtXFx1RkZGRlxcdy1dL2csXG5cdGZjc3Nlc2NhcGUgPSBmdW5jdGlvbiggY2gsIGFzQ29kZVBvaW50ICkge1xuXHRcdGlmICggYXNDb2RlUG9pbnQgKSB7XG5cblx0XHRcdC8vIFUrMDAwMCBOVUxMIGJlY29tZXMgVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUlxuXHRcdFx0aWYgKCBjaCA9PT0gXCJcXDBcIiApIHtcblx0XHRcdFx0cmV0dXJuIFwiXFx1RkZGRFwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb250cm9sIGNoYXJhY3RlcnMgYW5kIChkZXBlbmRlbnQgdXBvbiBwb3NpdGlvbikgbnVtYmVycyBnZXQgZXNjYXBlZCBhcyBjb2RlIHBvaW50c1xuXHRcdFx0cmV0dXJuIGNoLnNsaWNlKCAwLCAtMSApICsgXCJcXFxcXCIgKyBjaC5jaGFyQ29kZUF0KCBjaC5sZW5ndGggLSAxICkudG9TdHJpbmcoIDE2ICkgKyBcIiBcIjtcblx0XHR9XG5cblx0XHQvLyBPdGhlciBwb3RlbnRpYWxseS1zcGVjaWFsIEFTQ0lJIGNoYXJhY3RlcnMgZ2V0IGJhY2tzbGFzaC1lc2NhcGVkXG5cdFx0cmV0dXJuIFwiXFxcXFwiICsgY2g7XG5cdH0sXG5cblx0Ly8gVXNlZCBmb3IgaWZyYW1lc1xuXHQvLyBTZWUgc2V0RG9jdW1lbnQoKVxuXHQvLyBSZW1vdmluZyB0aGUgZnVuY3Rpb24gd3JhcHBlciBjYXVzZXMgYSBcIlBlcm1pc3Npb24gRGVuaWVkXCJcblx0Ly8gZXJyb3IgaW4gSUVcblx0dW5sb2FkSGFuZGxlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHNldERvY3VtZW50KCk7XG5cdH0sXG5cblx0ZGlzYWJsZWRBbmNlc3RvciA9IGFkZENvbWJpbmF0b3IoXG5cdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZSAmJiAoXCJmb3JtXCIgaW4gZWxlbSB8fCBcImxhYmVsXCIgaW4gZWxlbSk7XG5cdFx0fSxcblx0XHR7IGRpcjogXCJwYXJlbnROb2RlXCIsIG5leHQ6IFwibGVnZW5kXCIgfVxuXHQpO1xuXG4vLyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3QgKVxudHJ5IHtcblx0cHVzaC5hcHBseShcblx0XHQoYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMgKSksXG5cdFx0cHJlZmVycmVkRG9jLmNoaWxkTm9kZXNcblx0KTtcblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0Ly8gRGV0ZWN0IHNpbGVudGx5IGZhaWxpbmcgcHVzaC5hcHBseVxuXHRhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVUeXBlO1xufSBjYXRjaCAoIGUgKSB7XG5cdHB1c2ggPSB7IGFwcGx5OiBhcnIubGVuZ3RoID9cblxuXHRcdC8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlXG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0cHVzaF9uYXRpdmUuYXBwbHkoIHRhcmdldCwgc2xpY2UuY2FsbChlbHMpICk7XG5cdFx0fSA6XG5cblx0XHQvLyBTdXBwb3J0OiBJRTw5XG5cdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZCBkaXJlY3RseVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHZhciBqID0gdGFyZ2V0Lmxlbmd0aCxcblx0XHRcdFx0aSA9IDA7XG5cdFx0XHQvLyBDYW4ndCB0cnVzdCBOb2RlTGlzdC5sZW5ndGhcblx0XHRcdHdoaWxlICggKHRhcmdldFtqKytdID0gZWxzW2krK10pICkge31cblx0XHRcdHRhcmdldC5sZW5ndGggPSBqIC0gMTtcblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBtLCBpLCBlbGVtLCBuaWQsIG1hdGNoLCBncm91cHMsIG5ld1NlbGVjdG9yLFxuXHRcdG5ld0NvbnRleHQgPSBjb250ZXh0ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCxcblxuXHRcdC8vIG5vZGVUeXBlIGRlZmF1bHRzIHRvIDksIHNpbmNlIGNvbnRleHQgZGVmYXVsdHMgdG8gZG9jdW1lbnRcblx0XHRub2RlVHlwZSA9IGNvbnRleHQgPyBjb250ZXh0Lm5vZGVUeXBlIDogOTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBSZXR1cm4gZWFybHkgZnJvbSBjYWxscyB3aXRoIGludmFsaWQgc2VsZWN0b3Igb3IgY29udGV4dFxuXHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiB8fCAhc2VsZWN0b3IgfHxcblx0XHRub2RlVHlwZSAhPT0gMSAmJiBub2RlVHlwZSAhPT0gOSAmJiBub2RlVHlwZSAhPT0gMTEgKSB7XG5cblx0XHRyZXR1cm4gcmVzdWx0cztcblx0fVxuXG5cdC8vIFRyeSB0byBzaG9ydGN1dCBmaW5kIG9wZXJhdGlvbnMgKGFzIG9wcG9zZWQgdG8gZmlsdGVycykgaW4gSFRNTCBkb2N1bWVudHNcblx0aWYgKCAhc2VlZCApIHtcblxuXHRcdGlmICggKCBjb250ZXh0ID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBwcmVmZXJyZWREb2MgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0XHRzZXREb2N1bWVudCggY29udGV4dCApO1xuXHRcdH1cblx0XHRjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDtcblxuXHRcdGlmICggZG9jdW1lbnRJc0hUTUwgKSB7XG5cblx0XHRcdC8vIElmIHRoZSBzZWxlY3RvciBpcyBzdWZmaWNpZW50bHkgc2ltcGxlLCB0cnkgdXNpbmcgYSBcImdldCpCeSpcIiBET00gbWV0aG9kXG5cdFx0XHQvLyAoZXhjZXB0aW5nIERvY3VtZW50RnJhZ21lbnQgY29udGV4dCwgd2hlcmUgdGhlIG1ldGhvZHMgZG9uJ3QgZXhpc3QpXG5cdFx0XHRpZiAoIG5vZGVUeXBlICE9PSAxMSAmJiAobWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICkpICkge1xuXG5cdFx0XHRcdC8vIElEIHNlbGVjdG9yXG5cdFx0XHRcdGlmICggKG0gPSBtYXRjaFsxXSkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb2N1bWVudCBjb250ZXh0XG5cdFx0XHRcdFx0aWYgKCBub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0XG5cdFx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHRcdC8vIGdldEVsZW1lbnRCeUlkIGNhbiBtYXRjaCBlbGVtZW50cyBieSBuYW1lIGluc3RlYWQgb2YgSURcblx0XHRcdFx0XHRcdFx0aWYgKCBlbGVtLmlkID09PSBtICkge1xuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEVsZW1lbnQgY29udGV4dFxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFLCBPcGVyYSwgV2Via2l0XG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBpZGVudGlmeSB2ZXJzaW9uc1xuXHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0aWYgKCBuZXdDb250ZXh0ICYmIChlbGVtID0gbmV3Q29udGV4dC5nZXRFbGVtZW50QnlJZCggbSApKSAmJlxuXHRcdFx0XHRcdFx0XHRjb250YWlucyggY29udGV4dCwgZWxlbSApICYmXG5cdFx0XHRcdFx0XHRcdGVsZW0uaWQgPT09IG0gKSB7XG5cblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUeXBlIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzJdICkge1xuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHNlbGVjdG9yICkgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0XHQvLyBDbGFzcyBzZWxlY3RvclxuXHRcdFx0XHR9IGVsc2UgaWYgKCAobSA9IG1hdGNoWzNdKSAmJiBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiZcblx0XHRcdFx0XHRjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG0gKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRha2UgYWR2YW50YWdlIG9mIHF1ZXJ5U2VsZWN0b3JBbGxcblx0XHRcdGlmICggc3VwcG9ydC5xc2EgJiZcblx0XHRcdFx0IWNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXSAmJlxuXHRcdFx0XHQoIXJidWdneVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3QoIHNlbGVjdG9yICkpICkge1xuXG5cdFx0XHRcdGlmICggbm9kZVR5cGUgIT09IDEgKSB7XG5cdFx0XHRcdFx0bmV3Q29udGV4dCA9IGNvbnRleHQ7XG5cdFx0XHRcdFx0bmV3U2VsZWN0b3IgPSBzZWxlY3RvcjtcblxuXHRcdFx0XHQvLyBxU0EgbG9va3Mgb3V0c2lkZSBFbGVtZW50IGNvbnRleHQsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnRcblx0XHRcdFx0Ly8gVGhhbmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoaXMgd29ya2Fyb3VuZCB0ZWNobmlxdWVcblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04XG5cdFx0XHRcdC8vIEV4Y2x1ZGUgb2JqZWN0IGVsZW1lbnRzXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0XHRcdC8vIENhcHR1cmUgdGhlIGNvbnRleHQgSUQsIHNldHRpbmcgaXQgZmlyc3QgaWYgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0aWYgKCAobmlkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUoIFwiaWRcIiApKSApIHtcblx0XHRcdFx0XHRcdG5pZCA9IG5pZC5yZXBsYWNlKCByY3NzZXNjYXBlLCBmY3NzZXNjYXBlICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnRleHQuc2V0QXR0cmlidXRlKCBcImlkXCIsIChuaWQgPSBleHBhbmRvKSApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFByZWZpeCBldmVyeSBzZWxlY3RvciBpbiB0aGUgbGlzdFxuXHRcdFx0XHRcdGdyb3VwcyA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdFx0XHRcdGkgPSBncm91cHMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0Z3JvdXBzW2ldID0gXCIjXCIgKyBuaWQgKyBcIiBcIiArIHRvU2VsZWN0b3IoIGdyb3Vwc1tpXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRuZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKCBcIixcIiApO1xuXG5cdFx0XHRcdFx0Ly8gRXhwYW5kIGNvbnRleHQgZm9yIHNpYmxpbmcgc2VsZWN0b3JzXG5cdFx0XHRcdFx0bmV3Q29udGV4dCA9IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8XG5cdFx0XHRcdFx0XHRjb250ZXh0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBuZXdTZWxlY3RvciApIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cyxcblx0XHRcdFx0XHRcdFx0bmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCBuZXdTZWxlY3RvciApXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0fSBjYXRjaCAoIHFzYUVycm9yICkge1xuXHRcdFx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdFx0XHRpZiAoIG5pZCA9PT0gZXhwYW5kbyApIHtcblx0XHRcdFx0XHRcdFx0Y29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoIFwiaWRcIiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEFsbCBvdGhlcnNcblx0cmV0dXJuIHNlbGVjdCggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGtleS12YWx1ZSBjYWNoZXMgb2YgbGltaXRlZCBzaXplXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb24oc3RyaW5nLCBvYmplY3QpfSBSZXR1cm5zIHRoZSBPYmplY3QgZGF0YSBhZnRlciBzdG9yaW5nIGl0IG9uIGl0c2VsZiB3aXRoXG4gKlx0cHJvcGVydHkgbmFtZSB0aGUgKHNwYWNlLXN1ZmZpeGVkKSBzdHJpbmcgYW5kIChpZiB0aGUgY2FjaGUgaXMgbGFyZ2VyIHRoYW4gRXhwci5jYWNoZUxlbmd0aClcbiAqXHRkZWxldGluZyB0aGUgb2xkZXN0IGVudHJ5XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlKCkge1xuXHR2YXIga2V5cyA9IFtdO1xuXG5cdGZ1bmN0aW9uIGNhY2hlKCBrZXksIHZhbHVlICkge1xuXHRcdC8vIFVzZSAoa2V5ICsgXCIgXCIpIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIG5hdGl2ZSBwcm90b3R5cGUgcHJvcGVydGllcyAoc2VlIElzc3VlICMxNTcpXG5cdFx0aWYgKCBrZXlzLnB1c2goIGtleSArIFwiIFwiICkgPiBFeHByLmNhY2hlTGVuZ3RoICkge1xuXHRcdFx0Ly8gT25seSBrZWVwIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzXG5cdFx0XHRkZWxldGUgY2FjaGVbIGtleXMuc2hpZnQoKSBdO1xuXHRcdH1cblx0XHRyZXR1cm4gKGNhY2hlWyBrZXkgKyBcIiBcIiBdID0gdmFsdWUpO1xuXHR9XG5cdHJldHVybiBjYWNoZTtcbn1cblxuLyoqXG4gKiBNYXJrIGEgZnVuY3Rpb24gZm9yIHNwZWNpYWwgdXNlIGJ5IFNpenpsZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIG1hcmtcbiAqL1xuZnVuY3Rpb24gbWFya0Z1bmN0aW9uKCBmbiApIHtcblx0Zm5bIGV4cGFuZG8gXSA9IHRydWU7XG5cdHJldHVybiBmbjtcbn1cblxuLyoqXG4gKiBTdXBwb3J0IHRlc3RpbmcgdXNpbmcgYW4gZWxlbWVudFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gUGFzc2VkIHRoZSBjcmVhdGVkIGVsZW1lbnQgYW5kIHJldHVybnMgYSBib29sZWFuIHJlc3VsdFxuICovXG5mdW5jdGlvbiBhc3NlcnQoIGZuICkge1xuXHR2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmllbGRzZXRcIik7XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gISFmbiggZWwgKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fSBmaW5hbGx5IHtcblx0XHQvLyBSZW1vdmUgZnJvbSBpdHMgcGFyZW50IGJ5IGRlZmF1bHRcblx0XHRpZiAoIGVsLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbCApO1xuXHRcdH1cblx0XHQvLyByZWxlYXNlIG1lbW9yeSBpbiBJRVxuXHRcdGVsID0gbnVsbDtcblx0fVxufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNhbWUgaGFuZGxlciBmb3IgYWxsIG9mIHRoZSBzcGVjaWZpZWQgYXR0cnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBhdHRycyBQaXBlLXNlcGFyYXRlZCBsaXN0IG9mIGF0dHJpYnV0ZXNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgVGhlIG1ldGhvZCB0aGF0IHdpbGwgYmUgYXBwbGllZFxuICovXG5mdW5jdGlvbiBhZGRIYW5kbGUoIGF0dHJzLCBoYW5kbGVyICkge1xuXHR2YXIgYXJyID0gYXR0cnMuc3BsaXQoXCJ8XCIpLFxuXHRcdGkgPSBhcnIubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdEV4cHIuYXR0ckhhbmRsZVsgYXJyW2ldIF0gPSBoYW5kbGVyO1xuXHR9XG59XG5cbi8qKlxuICogQ2hlY2tzIGRvY3VtZW50IG9yZGVyIG9mIHR3byBzaWJsaW5nc1xuICogQHBhcmFtIHtFbGVtZW50fSBhXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGJcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFJldHVybnMgbGVzcyB0aGFuIDAgaWYgYSBwcmVjZWRlcyBiLCBncmVhdGVyIHRoYW4gMCBpZiBhIGZvbGxvd3MgYlxuICovXG5mdW5jdGlvbiBzaWJsaW5nQ2hlY2soIGEsIGIgKSB7XG5cdHZhciBjdXIgPSBiICYmIGEsXG5cdFx0ZGlmZiA9IGN1ciAmJiBhLm5vZGVUeXBlID09PSAxICYmIGIubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdGEuc291cmNlSW5kZXggLSBiLnNvdXJjZUluZGV4O1xuXG5cdC8vIFVzZSBJRSBzb3VyY2VJbmRleCBpZiBhdmFpbGFibGUgb24gYm90aCBub2Rlc1xuXHRpZiAoIGRpZmYgKSB7XG5cdFx0cmV0dXJuIGRpZmY7XG5cdH1cblxuXHQvLyBDaGVjayBpZiBiIGZvbGxvd3MgYVxuXHRpZiAoIGN1ciApIHtcblx0XHR3aGlsZSAoIChjdXIgPSBjdXIubmV4dFNpYmxpbmcpICkge1xuXHRcdFx0aWYgKCBjdXIgPT09IGIgKSB7XG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gYSA/IDEgOiAtMTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGlucHV0IHR5cGVzXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVJbnB1dFBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSB0eXBlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgYnV0dG9uc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIChuYW1lID09PSBcImlucHV0XCIgfHwgbmFtZSA9PT0gXCJidXR0b25cIikgJiYgZWxlbS50eXBlID09PSB0eXBlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgOmVuYWJsZWQvOmRpc2FibGVkXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGRpc2FibGVkIHRydWUgZm9yIDpkaXNhYmxlZDsgZmFsc2UgZm9yIDplbmFibGVkXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZURpc2FibGVkUHNldWRvKCBkaXNhYmxlZCApIHtcblxuXHQvLyBLbm93biA6ZGlzYWJsZWQgZmFsc2UgcG9zaXRpdmVzOiBmaWVsZHNldFtkaXNhYmxlZF0gPiBsZWdlbmQ6bnRoLW9mLXR5cGUobisyKSA6Y2FuLWRpc2FibGVcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gT25seSBjZXJ0YWluIGVsZW1lbnRzIGNhbiBtYXRjaCA6ZW5hYmxlZCBvciA6ZGlzYWJsZWRcblx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1lbmFibGVkXG5cdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZGlzYWJsZWRcblx0XHRpZiAoIFwiZm9ybVwiIGluIGVsZW0gKSB7XG5cblx0XHRcdC8vIENoZWNrIGZvciBpbmhlcml0ZWQgZGlzYWJsZWRuZXNzIG9uIHJlbGV2YW50IG5vbi1kaXNhYmxlZCBlbGVtZW50czpcblx0XHRcdC8vICogbGlzdGVkIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBpbiBhIGRpc2FibGVkIGZpZWxkc2V0XG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY2F0ZWdvcnktbGlzdGVkXG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1mZS1kaXNhYmxlZFxuXHRcdFx0Ly8gKiBvcHRpb24gZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtb3B0aW9uLWRpc2FibGVkXG5cdFx0XHQvLyBBbGwgc3VjaCBlbGVtZW50cyBoYXZlIGEgXCJmb3JtXCIgcHJvcGVydHkuXG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSAmJiBlbGVtLmRpc2FibGVkID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHQvLyBPcHRpb24gZWxlbWVudHMgZGVmZXIgdG8gYSBwYXJlbnQgb3B0Z3JvdXAgaWYgcHJlc2VudFxuXHRcdFx0XHRpZiAoIFwibGFiZWxcIiBpbiBlbGVtICkge1xuXHRcdFx0XHRcdGlmICggXCJsYWJlbFwiIGluIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLnBhcmVudE5vZGUuZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgNiAtIDExXG5cdFx0XHRcdC8vIFVzZSB0aGUgaXNEaXNhYmxlZCBzaG9ydGN1dCBwcm9wZXJ0eSB0byBjaGVjayBmb3IgZGlzYWJsZWQgZmllbGRzZXQgYW5jZXN0b3JzXG5cdFx0XHRcdHJldHVybiBlbGVtLmlzRGlzYWJsZWQgPT09IGRpc2FibGVkIHx8XG5cblx0XHRcdFx0XHQvLyBXaGVyZSB0aGVyZSBpcyBubyBpc0Rpc2FibGVkLCBjaGVjayBtYW51YWxseVxuXHRcdFx0XHRcdC8qIGpzaGludCAtVzAxOCAqL1xuXHRcdFx0XHRcdGVsZW0uaXNEaXNhYmxlZCAhPT0gIWRpc2FibGVkICYmXG5cdFx0XHRcdFx0XHRkaXNhYmxlZEFuY2VzdG9yKCBlbGVtICkgPT09IGRpc2FibGVkO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cblx0XHQvLyBUcnkgdG8gd2lubm93IG91dCBlbGVtZW50cyB0aGF0IGNhbid0IGJlIGRpc2FibGVkIGJlZm9yZSB0cnVzdGluZyB0aGUgZGlzYWJsZWQgcHJvcGVydHkuXG5cdFx0Ly8gU29tZSB2aWN0aW1zIGdldCBjYXVnaHQgaW4gb3VyIG5ldCAobGFiZWwsIGxlZ2VuZCwgbWVudSwgdHJhY2spLCBidXQgaXQgc2hvdWxkbid0XG5cdFx0Ly8gZXZlbiBleGlzdCBvbiB0aGVtLCBsZXQgYWxvbmUgaGF2ZSBhIGJvb2xlYW4gdmFsdWUuXG5cdFx0fSBlbHNlIGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gUmVtYWluaW5nIGVsZW1lbnRzIGFyZSBuZWl0aGVyIDplbmFibGVkIG5vciA6ZGlzYWJsZWRcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBwb3NpdGlvbmFsc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkge1xuXHRcdGFyZ3VtZW50ID0gK2FyZ3VtZW50O1xuXHRcdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHR2YXIgaixcblx0XHRcdFx0bWF0Y2hJbmRleGVzID0gZm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSxcblx0XHRcdFx0aSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7XG5cblx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlc1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggc2VlZFsgKGogPSBtYXRjaEluZGV4ZXNbaV0pIF0gKSB7XG5cdFx0XHRcdFx0c2VlZFtqXSA9ICEobWF0Y2hlc1tqXSA9IHNlZWRbal0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xufVxuXG4vKipcbiAqIENoZWNrcyBhIG5vZGUgZm9yIHZhbGlkaXR5IGFzIGEgU2l6emxlIGNvbnRleHRcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3Q9fSBjb250ZXh0XG4gKiBAcmV0dXJucyB7RWxlbWVudHxPYmplY3R8Qm9vbGVhbn0gVGhlIGlucHV0IG5vZGUgaWYgYWNjZXB0YWJsZSwgb3RoZXJ3aXNlIGEgZmFsc3kgdmFsdWVcbiAqL1xuZnVuY3Rpb24gdGVzdENvbnRleHQoIGNvbnRleHQgKSB7XG5cdHJldHVybiBjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnRleHQ7XG59XG5cbi8vIEV4cG9zZSBzdXBwb3J0IHZhcnMgZm9yIGNvbnZlbmllbmNlXG5zdXBwb3J0ID0gU2l6emxlLnN1cHBvcnQgPSB7fTtcblxuLyoqXG4gKiBEZXRlY3RzIFhNTCBub2Rlc1xuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gZWxlbSBBbiBlbGVtZW50IG9yIGEgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmZiBlbGVtIGlzIGEgbm9uLUhUTUwgWE1MIG5vZGVcbiAqL1xuaXNYTUwgPSBTaXp6bGUuaXNYTUwgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0Ly8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0IHlldCBleGlzdFxuXHQvLyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMylcblx0dmFyIGRvY3VtZW50RWxlbWVudCA9IGVsZW0gJiYgKGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtKS5kb2N1bWVudEVsZW1lbnQ7XG5cdHJldHVybiBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09IFwiSFRNTFwiIDogZmFsc2U7XG59O1xuXG4vKipcbiAqIFNldHMgZG9jdW1lbnQtcmVsYXRlZCB2YXJpYWJsZXMgb25jZSBiYXNlZCBvbiB0aGUgY3VycmVudCBkb2N1bWVudFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gW2RvY10gQW4gZWxlbWVudCBvciBkb2N1bWVudCBvYmplY3QgdG8gdXNlIHRvIHNldCB0aGUgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqL1xuc2V0RG9jdW1lbnQgPSBTaXp6bGUuc2V0RG9jdW1lbnQgPSBmdW5jdGlvbiggbm9kZSApIHtcblx0dmFyIGhhc0NvbXBhcmUsIHN1YldpbmRvdyxcblx0XHRkb2MgPSBub2RlID8gbm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUgOiBwcmVmZXJyZWREb2M7XG5cblx0Ly8gUmV0dXJuIGVhcmx5IGlmIGRvYyBpcyBpbnZhbGlkIG9yIGFscmVhZHkgc2VsZWN0ZWRcblx0aWYgKCBkb2MgPT09IGRvY3VtZW50IHx8IGRvYy5ub2RlVHlwZSAhPT0gOSB8fCAhZG9jLmRvY3VtZW50RWxlbWVudCApIHtcblx0XHRyZXR1cm4gZG9jdW1lbnQ7XG5cdH1cblxuXHQvLyBVcGRhdGUgZ2xvYmFsIHZhcmlhYmxlc1xuXHRkb2N1bWVudCA9IGRvYztcblx0ZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblx0ZG9jdW1lbnRJc0hUTUwgPSAhaXNYTUwoIGRvY3VtZW50ICk7XG5cblx0Ly8gU3VwcG9ydDogSUUgOS0xMSwgRWRnZVxuXHQvLyBBY2Nlc3NpbmcgaWZyYW1lIGRvY3VtZW50cyBhZnRlciB1bmxvYWQgdGhyb3dzIFwicGVybWlzc2lvbiBkZW5pZWRcIiBlcnJvcnMgKGpRdWVyeSAjMTM5MzYpXG5cdGlmICggcHJlZmVycmVkRG9jICE9PSBkb2N1bWVudCAmJlxuXHRcdChzdWJXaW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldykgJiYgc3ViV2luZG93LnRvcCAhPT0gc3ViV2luZG93ICkge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgMTEsIEVkZ2Vcblx0XHRpZiAoIHN1YldpbmRvdy5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0c3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwidW5sb2FkXCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTAgb25seVxuXHRcdH0gZWxzZSBpZiAoIHN1YldpbmRvdy5hdHRhY2hFdmVudCApIHtcblx0XHRcdHN1YldpbmRvdy5hdHRhY2hFdmVudCggXCJvbnVubG9hZFwiLCB1bmxvYWRIYW5kbGVyICk7XG5cdFx0fVxuXHR9XG5cblx0LyogQXR0cmlidXRlc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gU3VwcG9ydDogSUU8OFxuXHQvLyBWZXJpZnkgdGhhdCBnZXRBdHRyaWJ1dGUgcmVhbGx5IHJldHVybnMgYXR0cmlidXRlcyBhbmQgbm90IHByb3BlcnRpZXNcblx0Ly8gKGV4Y2VwdGluZyBJRTggYm9vbGVhbnMpXG5cdHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZWwuY2xhc3NOYW1lID0gXCJpXCI7XG5cdFx0cmV0dXJuICFlbC5nZXRBdHRyaWJ1dGUoXCJjbGFzc05hbWVcIik7XG5cdH0pO1xuXG5cdC8qIGdldEVsZW1lbnQocylCeSpcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKSByZXR1cm5zIG9ubHkgZWxlbWVudHNcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0ZWwuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoXCJcIikgKTtcblx0XHRyZXR1cm4gIWVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKS5sZW5ndGg7XG5cdH0pO1xuXG5cdC8vIFN1cHBvcnQ6IElFPDlcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICk7XG5cblx0Ly8gU3VwcG9ydDogSUU8MTBcblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lXG5cdC8vIFRoZSBicm9rZW4gZ2V0RWxlbWVudEJ5SWQgbWV0aG9kcyBkb24ndCBwaWNrIHVwIHByb2dyYW1tYXRpY2FsbHktc2V0IG5hbWVzLFxuXHQvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVsZW1lbnRzQnlOYW1lIHRlc3Rcblx0c3VwcG9ydC5nZXRCeUlkID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlkID0gZXhwYW5kbztcblx0XHRyZXR1cm4gIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lIHx8ICFkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSggZXhwYW5kbyApLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gSUQgZmlsdGVyIGFuZCBmaW5kXG5cdGlmICggc3VwcG9ydC5nZXRCeUlkICkge1xuXHRcdEV4cHIuZmlsdGVyW1wiSURcIl0gPSBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwiaWRcIikgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblx0XHRFeHByLmZpbmRbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblx0XHRcdFx0cmV0dXJuIGVsZW0gPyBbIGVsZW0gXSA6IFtdO1xuXHRcdFx0fVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0RXhwci5maWx0ZXJbXCJJRFwiXSA9ICBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIG5vZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSBcInVuZGVmaW5lZFwiICYmXG5cdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIik7XG5cdFx0XHRcdHJldHVybiBub2RlICYmIG5vZGUudmFsdWUgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDYgLSA3IG9ubHlcblx0XHQvLyBnZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFibGUgYXMgYSBmaW5kIHNob3J0Y3V0XG5cdFx0RXhwci5maW5kW1wiSURcIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0XHR2YXIgbm9kZSwgaSwgZWxlbXMsXG5cdFx0XHRcdFx0ZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtICkge1xuXG5cdFx0XHRcdFx0Ly8gVmVyaWZ5IHRoZSBpZCBhdHRyaWJ1dGVcblx0XHRcdFx0XHRub2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIik7XG5cdFx0XHRcdFx0aWYgKCBub2RlICYmIG5vZGUudmFsdWUgPT09IGlkICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFsgZWxlbSBdO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEZhbGwgYmFjayBvbiBnZXRFbGVtZW50c0J5TmFtZVxuXHRcdFx0XHRcdGVsZW1zID0gY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSggaWQgKTtcblx0XHRcdFx0XHRpID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbXNbaSsrXSkgKSB7XG5cdFx0XHRcdFx0XHRub2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIik7XG5cdFx0XHRcdFx0XHRpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBbIGVsZW0gXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8vIFRhZ1xuXHRFeHByLmZpbmRbXCJUQUdcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID9cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBEb2N1bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE5cblx0XHRcdH0gZWxzZSBpZiAoIHN1cHBvcnQucXNhICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTtcblx0XHRcdH1cblx0XHR9IDpcblxuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0dG1wID0gW10sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHQvLyBCeSBoYXBweSBjb2luY2lkZW5jZSwgYSAoYnJva2VuKSBnRUJUTiBhcHBlYXJzIG9uIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgdG9vXG5cdFx0XHRcdHJlc3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50c1xuXHRcdFx0aWYgKCB0YWcgPT09IFwiKlwiICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHR0bXAucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB0bXA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9O1xuXG5cdC8vIENsYXNzXG5cdEV4cHIuZmluZFtcIkNMQVNTXCJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7XG5cdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qIFFTQS9tYXRjaGVzU2VsZWN0b3Jcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIFFTQSBhbmQgbWF0Y2hlc1NlbGVjdG9yIHN1cHBvcnRcblxuXHQvLyBtYXRjaGVzU2VsZWN0b3IoOmFjdGl2ZSkgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKElFOS9PcGVyYSAxMS41KVxuXHRyYnVnZ3lNYXRjaGVzID0gW107XG5cblx0Ly8gcVNhKDpmb2N1cykgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKENocm9tZSAyMSlcblx0Ly8gV2UgYWxsb3cgdGhpcyBiZWNhdXNlIG9mIGEgYnVnIGluIElFOC85IHRoYXQgdGhyb3dzIGFuIGVycm9yXG5cdC8vIHdoZW5ldmVyIGBkb2N1bWVudC5hY3RpdmVFbGVtZW50YCBpcyBhY2Nlc3NlZCBvbiBhbiBpZnJhbWVcblx0Ly8gU28sIHdlIGFsbG93IDpmb2N1cyB0byBwYXNzIHRocm91Z2ggUVNBIGFsbCB0aGUgdGltZSB0byBhdm9pZCB0aGUgSUUgZXJyb3Jcblx0Ly8gU2VlIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMzM3OFxuXHRyYnVnZ3lRU0EgPSBbXTtcblxuXHRpZiAoIChzdXBwb3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApKSApIHtcblx0XHQvLyBCdWlsZCBRU0EgcmVnZXhcblx0XHQvLyBSZWdleCBzdHJhdGVneSBhZG9wdGVkIGZyb20gRGllZ28gUGVyaW5pXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdC8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBvc2Vcblx0XHRcdC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVudCBvZiBub3QgZXhwbGljaXRseVxuXHRcdFx0Ly8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsXG5cdFx0XHQvLyBzaW5jZSBpdHMgcHJlc2VuY2Ugc2hvdWxkIGJlIGVub3VnaFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzU5XG5cdFx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmlubmVySFRNTCA9IFwiPGEgaWQ9J1wiICsgZXhwYW5kbyArIFwiJz48L2E+XCIgK1xuXHRcdFx0XHRcIjxzZWxlY3QgaWQ9J1wiICsgZXhwYW5kbyArIFwiLVxcclxcXFwnIG1zYWxsb3djYXB0dXJlPScnPlwiICtcblx0XHRcdFx0XCI8b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2XG5cdFx0XHQvLyBOb3RoaW5nIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9sbG93IF49IG9yICQ9IG9yICo9XG5cdFx0XHQvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVzdCBiZSB1bmtub3duIGluIE9wZXJhIGJ1dCBcInNhZmVcIiBmb3IgV2luUlRcblx0XHRcdC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvaGg0NjUzODguYXNweCNhdHRyaWJ1dGVfc2VjdGlvblxuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiW21zYWxsb3djYXB0dXJlXj0nJ11cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJbKl4kXT1cIiArIHdoaXRlc3BhY2UgKyBcIiooPzonJ3xcXFwiXFxcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRThcblx0XHRcdC8vIEJvb2xlYW4gYXR0cmlidXRlcyBhbmQgXCJ2YWx1ZVwiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHlcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbc2VsZWN0ZWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooPzp2YWx1ZXxcIiArIGJvb2xlYW5zICsgXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRyb2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9tSlM8MS45LjgrXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcIltpZH49XCIgKyBleHBhbmRvICsgXCItXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIn49XCIpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZWJraXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKFwiOmNoZWNrZWRcIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIjpjaGVja2VkXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCssIGlPUyA4K1xuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg1MVxuXHRcdFx0Ly8gSW4tcGFnZSBgc2VsZWN0b3IjaWQgc2libGluZy1jb21iaW5hdG9yIHNlbGVjdG9yYCBmYWlsc1xuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbCggXCJhI1wiICsgZXhwYW5kbyArIFwiKypcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCIuIy4rWyt+XVwiKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdFx0XHRlbC5pbm5lckhUTUwgPSBcIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+XCIgK1xuXHRcdFx0XHRcIjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD5cIjtcblxuXHRcdFx0Ly8gU3VwcG9ydDogV2luZG93cyA4IE5hdGl2ZSBBcHBzXG5cdFx0XHQvLyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRyaWJ1dGVzIGFyZSByZXN0cmljdGVkIGR1cmluZyAuaW5uZXJIVE1MIGFzc2lnbm1lbnRcblx0XHRcdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcblx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwiaGlkZGVuXCIgKTtcblx0XHRcdGVsLmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwiRFwiICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gRW5mb3JjZSBjYXNlLXNlbnNpdGl2aXR5IG9mIG5hbWUgYXR0cmlidXRlXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT1kXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIm5hbWVcIiArIHdoaXRlc3BhY2UgKyBcIipbKl4kfCF+XT89XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZClcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZW5hYmxlZFwiKS5sZW5ndGggIT09IDIgKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU5LTExK1xuXHRcdFx0Ly8gSUUncyA6ZGlzYWJsZWQgc2VsZWN0b3IgZG9lcyBub3QgcGljayB1cCB0aGUgY2hpbGRyZW4gb2YgZGlzYWJsZWQgZmllbGRzZXRzXG5cdFx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBlbCApLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIjpkaXNhYmxlZFwiKS5sZW5ndGggIT09IDIgKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3BlcmEgMTAtMTEgZG9lcyBub3QgdGhyb3cgb24gcG9zdC1jb21tYSBpbnZhbGlkIHBzZXVkb3Ncblx0XHRcdGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIqLDp4XCIpO1xuXHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCIsLio6XCIpO1xuXHRcdH0pO1xuXHR9XG5cblx0aWYgKCAoc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgPSBybmF0aXZlLnRlc3QoIChtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8XG5cdFx0ZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1vek1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpICkpICkge1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdC8vIENoZWNrIHRvIHNlZSBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIG1hdGNoZXNTZWxlY3RvclxuXHRcdFx0Ly8gb24gYSBkaXNjb25uZWN0ZWQgbm9kZSAoSUUgOSlcblx0XHRcdHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggPSBtYXRjaGVzLmNhbGwoIGVsLCBcIipcIiApO1xuXG5cdFx0XHQvLyBUaGlzIHNob3VsZCBmYWlsIHdpdGggYW4gZXhjZXB0aW9uXG5cdFx0XHQvLyBHZWNrbyBkb2VzIG5vdCBlcnJvciwgcmV0dXJucyBmYWxzZSBpbnN0ZWFkXG5cdFx0XHRtYXRjaGVzLmNhbGwoIGVsLCBcIltzIT0nJ106eFwiICk7XG5cdFx0XHRyYnVnZ3lNYXRjaGVzLnB1c2goIFwiIT1cIiwgcHNldWRvcyApO1xuXHRcdH0pO1xuXHR9XG5cblx0cmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbihcInxcIikgKTtcblx0cmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbihcInxcIikgKTtcblxuXHQvKiBDb250YWluc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdGhhc0NvbXBhcmUgPSBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29tcGFyZURvY3VtZW50UG9zaXRpb24gKTtcblxuXHQvLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXJcblx0Ly8gUHVycG9zZWZ1bGx5IHNlbGYtZXhjbHVzaXZlXG5cdC8vIEFzIGluLCBhbiBlbGVtZW50IGRvZXMgbm90IGNvbnRhaW4gaXRzZWxmXG5cdGNvbnRhaW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHR2YXIgYWRvd24gPSBhLm5vZGVUeXBlID09PSA5ID8gYS5kb2N1bWVudEVsZW1lbnQgOiBhLFxuXHRcdFx0XHRidXAgPSBiICYmIGIucGFyZW50Tm9kZTtcblx0XHRcdHJldHVybiBhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKFxuXHRcdFx0XHRhZG93bi5jb250YWlucyA/XG5cdFx0XHRcdFx0YWRvd24uY29udGFpbnMoIGJ1cCApIDpcblx0XHRcdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICYmIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGJ1cCApICYgMTZcblx0XHRcdCkpO1xuXHRcdH0gOlxuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0aWYgKCBiICkge1xuXHRcdFx0XHR3aGlsZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHtcblx0XHRcdFx0XHRpZiAoIGIgPT09IGEgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXG5cdC8qIFNvcnRpbmdcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIERvY3VtZW50IG9yZGVyIHNvcnRpbmdcblx0c29ydE9yZGVyID0gaGFzQ29tcGFyZSA/XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXG5cdFx0Ly8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0Ly8gU29ydCBvbiBtZXRob2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvblxuXHRcdHZhciBjb21wYXJlID0gIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtcblx0XHRpZiAoIGNvbXBhcmUgKSB7XG5cdFx0XHRyZXR1cm4gY29tcGFyZTtcblx0XHR9XG5cblx0XHQvLyBDYWxjdWxhdGUgcG9zaXRpb24gaWYgYm90aCBpbnB1dHMgYmVsb25nIHRvIHRoZSBzYW1lIGRvY3VtZW50XG5cdFx0Y29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PT0gKCBiLm93bmVyRG9jdW1lbnQgfHwgYiApID9cblx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZFxuXHRcdFx0MTtcblxuXHRcdC8vIERpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdGlmICggY29tcGFyZSAmIDEgfHxcblx0XHRcdCghc3VwcG9ydC5zb3J0RGV0YWNoZWQgJiYgYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYSApID09PSBjb21wYXJlKSApIHtcblxuXHRcdFx0Ly8gQ2hvb3NlIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgaXMgcmVsYXRlZCB0byBvdXIgcHJlZmVycmVkIGRvY3VtZW50XG5cdFx0XHRpZiAoIGEgPT09IGRvY3VtZW50IHx8IGEub3duZXJEb2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYSkgKSB7XG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHRcdGlmICggYiA9PT0gZG9jdW1lbnQgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyXG5cdFx0XHRyZXR1cm4gc29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21wYXJlICYgNCA/IC0xIDogMTtcblx0fSA6XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdC8vIEV4aXQgZWFybHkgaWYgdGhlIG5vZGVzIGFyZSBpZGVudGljYWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0YXVwID0gYS5wYXJlbnROb2RlLFxuXHRcdFx0YnVwID0gYi5wYXJlbnROb2RlLFxuXHRcdFx0YXAgPSBbIGEgXSxcblx0XHRcdGJwID0gWyBiIF07XG5cblx0XHQvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZFxuXHRcdGlmICggIWF1cCB8fCAhYnVwICkge1xuXHRcdFx0cmV0dXJuIGEgPT09IGRvY3VtZW50ID8gLTEgOlxuXHRcdFx0XHRiID09PSBkb2N1bWVudCA/IDEgOlxuXHRcdFx0XHRhdXAgPyAtMSA6XG5cdFx0XHRcdGJ1cCA/IDEgOlxuXHRcdFx0XHRzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cblx0XHQvLyBJZiB0aGUgbm9kZXMgYXJlIHNpYmxpbmdzLCB3ZSBjYW4gZG8gYSBxdWljayBjaGVja1xuXHRcdH0gZWxzZSBpZiAoIGF1cCA9PT0gYnVwICkge1xuXHRcdFx0cmV0dXJuIHNpYmxpbmdDaGVjayggYSwgYiApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSB3ZSBuZWVkIGZ1bGwgbGlzdHMgb2YgdGhlaXIgYW5jZXN0b3JzIGZvciBjb21wYXJpc29uXG5cdFx0Y3VyID0gYTtcblx0XHR3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRhcC51bnNoaWZ0KCBjdXIgKTtcblx0XHR9XG5cdFx0Y3VyID0gYjtcblx0XHR3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRicC51bnNoaWZ0KCBjdXIgKTtcblx0XHR9XG5cblx0XHQvLyBXYWxrIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeVxuXHRcdHdoaWxlICggYXBbaV0gPT09IGJwW2ldICkge1xuXHRcdFx0aSsrO1xuXHRcdH1cblxuXHRcdHJldHVybiBpID9cblx0XHRcdC8vIERvIGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBhIGNvbW1vbiBhbmNlc3RvclxuXHRcdFx0c2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29ydCBmaXJzdFxuXHRcdFx0YXBbaV0gPT09IHByZWZlcnJlZERvYyA/IC0xIDpcblx0XHRcdGJwW2ldID09PSBwcmVmZXJyZWREb2MgPyAxIDpcblx0XHRcdDA7XG5cdH07XG5cblx0cmV0dXJuIGRvY3VtZW50O1xufTtcblxuU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7XG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7XG59O1xuXG5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdC8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZFxuXHRleHByID0gZXhwci5yZXBsYWNlKCByYXR0cmlidXRlUXVvdGVzLCBcIj0nJDEnXVwiICk7XG5cblx0aWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiBkb2N1bWVudElzSFRNTCAmJlxuXHRcdCFjb21waWxlckNhY2hlWyBleHByICsgXCIgXCIgXSAmJlxuXHRcdCggIXJidWdneU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdCggZXhwciApICkgJiZcblx0XHQoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhwciApICkgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0dmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApO1xuXG5cdFx0XHQvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0XHRpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8XG5cdFx0XHRcdFx0Ly8gQXMgd2VsbCwgZGlzY29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnRcblx0XHRcdFx0XHQvLyBmcmFnbWVudCBpbiBJRSA5XG5cdFx0XHRcdFx0ZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7fVxuXHR9XG5cblx0cmV0dXJuIFNpenpsZSggZXhwciwgZG9jdW1lbnQsIG51bGwsIFsgZWxlbSBdICkubGVuZ3RoID4gMDtcbn07XG5cblNpenpsZS5jb250YWlucyA9IGZ1bmN0aW9uKCBjb250ZXh0LCBlbGVtICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdH1cblx0cmV0dXJuIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICk7XG59O1xuXG5TaXp6bGUuYXR0ciA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdH1cblxuXHR2YXIgZm4gPSBFeHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLFxuXHRcdC8vIERvbid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzIChqUXVlcnkgIzEzODA3KVxuXHRcdHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dlckNhc2UoKSApID9cblx0XHRcdGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwgKSA6XG5cdFx0XHR1bmRlZmluZWQ7XG5cblx0cmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkID9cblx0XHR2YWwgOlxuXHRcdHN1cHBvcnQuYXR0cmlidXRlcyB8fCAhZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSA6XG5cdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcbn07XG5cblNpenpsZS5lc2NhcGUgPSBmdW5jdGlvbiggc2VsICkge1xuXHRyZXR1cm4gKHNlbCArIFwiXCIpLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTtcbn07XG5cblNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdHRocm93IG5ldyBFcnJvciggXCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiBcIiArIG1zZyApO1xufTtcblxuLyoqXG4gKiBEb2N1bWVudCBzb3J0aW5nIGFuZCByZW1vdmluZyBkdXBsaWNhdGVzXG4gKiBAcGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0c1xuICovXG5TaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRzICkge1xuXHR2YXIgZWxlbSxcblx0XHRkdXBsaWNhdGVzID0gW10sXG5cdFx0aiA9IDAsXG5cdFx0aSA9IDA7XG5cblx0Ly8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZVxuXHRoYXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzO1xuXHRzb3J0SW5wdXQgPSAhc3VwcG9ydC5zb3J0U3RhYmxlICYmIHJlc3VsdHMuc2xpY2UoIDAgKTtcblx0cmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTtcblxuXHRpZiAoIGhhc0R1cGxpY2F0ZSApIHtcblx0XHR3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHtcblx0XHRcdGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkge1xuXHRcdFx0XHRqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0cmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9wdWxsLzIyNVxuXHRzb3J0SW5wdXQgPSBudWxsO1xuXG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5IG9mIERPTSBub2Rlc1xuICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtXG4gKi9cbmdldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHR2YXIgbm9kZSxcblx0XHRyZXQgPSBcIlwiLFxuXHRcdGkgPSAwLFxuXHRcdG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRpZiAoICFub2RlVHlwZSApIHtcblx0XHQvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheVxuXHRcdHdoaWxlICggKG5vZGUgPSBlbGVtW2krK10pICkge1xuXHRcdFx0Ly8gRG8gbm90IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXNcblx0XHRcdHJldCArPSBnZXRUZXh0KCBub2RlICk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMSB8fCBub2RlVHlwZSA9PT0gOSB8fCBub2RlVHlwZSA9PT0gMTEgKSB7XG5cdFx0Ly8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50c1xuXHRcdC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS50ZXh0Q29udGVudCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLnRleHRDb250ZW50O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRyZXQgKz0gZ2V0VGV4dCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVZhbHVlO1xuXHR9XG5cdC8vIERvIG5vdCBpbmNsdWRlIGNvbW1lbnQgb3IgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2Rlc1xuXG5cdHJldHVybiByZXQ7XG59O1xuXG5FeHByID0gU2l6emxlLnNlbGVjdG9ycyA9IHtcblxuXHQvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXJcblx0Y2FjaGVMZW5ndGg6IDUwLFxuXG5cdGNyZWF0ZVBzZXVkbzogbWFya0Z1bmN0aW9uLFxuXG5cdG1hdGNoOiBtYXRjaEV4cHIsXG5cblx0YXR0ckhhbmRsZToge30sXG5cblx0ZmluZDoge30sXG5cblx0cmVsYXRpdmU6IHtcblx0XHRcIj5cIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiIFwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIgfSxcblx0XHRcIitcIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCJ+XCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiIH1cblx0fSxcblxuXHRwcmVGaWx0ZXI6IHtcblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHQvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZFxuXHRcdFx0bWF0Y2hbM10gPSAoIG1hdGNoWzNdIHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCIgKS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzJdID09PSBcIn49XCIgKSB7XG5cdFx0XHRcdG1hdGNoWzNdID0gXCIgXCIgKyBtYXRjaFszXSArIFwiIFwiO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDQgKTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHQvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByW1wiQ0hJTERcIl1cblx0XHRcdFx0MSB0eXBlIChvbmx5fG50aHwuLi4pXG5cdFx0XHRcdDIgd2hhdCAoY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0MyBhcmd1bWVudCAoZXZlbnxvZGR8XFxkKnxcXGQqbihbKy1dXFxkKyk/fC4uLilcblx0XHRcdFx0NCB4bi1jb21wb25lbnQgb2YgeG4reSBhcmd1bWVudCAoWystXT9cXGQqbnwpXG5cdFx0XHRcdDUgc2lnbiBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NiB4IG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ3IHNpZ24gb2YgeS1jb21wb25lbnRcblx0XHRcdFx0OCB5IG9mIHktY29tcG9uZW50XG5cdFx0XHQqL1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzFdLnNsaWNlKCAwLCAzICkgPT09IFwibnRoXCIgKSB7XG5cdFx0XHRcdC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50XG5cdFx0XHRcdGlmICggIW1hdGNoWzNdICkge1xuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIG51bWVyaWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRFxuXHRcdFx0XHQvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8gMC8xXG5cdFx0XHRcdG1hdGNoWzRdID0gKyggbWF0Y2hbNF0gPyBtYXRjaFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSBcImV2ZW5cIiB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApICk7XG5cdFx0XHRcdG1hdGNoWzVdID0gKyggKCBtYXRjaFs3XSArIG1hdGNoWzhdICkgfHwgbWF0Y2hbM10gPT09IFwib2RkXCIgKTtcblxuXHRcdFx0Ly8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2g7XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdHZhciBleGNlc3MsXG5cdFx0XHRcdHVucXVvdGVkID0gIW1hdGNoWzZdICYmIG1hdGNoWzJdO1xuXG5cdFx0XHRpZiAoIG1hdGNoRXhwcltcIkNISUxEXCJdLnRlc3QoIG1hdGNoWzBdICkgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pc1xuXHRcdFx0aWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0bWF0Y2hbMl0gPSBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTdHJpcCBleGNlc3MgY2hhcmFjdGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggdW5xdW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmXG5cdFx0XHRcdC8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpXG5cdFx0XHRcdChleGNlc3MgPSB0b2tlbml6ZSggdW5xdW90ZWQsIHRydWUgKSkgJiZcblx0XHRcdFx0Ly8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzXG5cdFx0XHRcdChleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCBcIilcIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkge1xuXG5cdFx0XHRcdC8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4XG5cdFx0XHRcdG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0XHRtYXRjaFsyXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAodHlwZSBhbmQgYXJndW1lbnQpXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTtcblx0XHR9XG5cdH0sXG5cblx0ZmlsdGVyOiB7XG5cblx0XHRcIlRBR1wiOiBmdW5jdGlvbiggbm9kZU5hbWVTZWxlY3RvciApIHtcblx0XHRcdHZhciBub2RlTmFtZSA9IG5vZGVOYW1lU2VsZWN0b3IucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5vZGVOYW1lU2VsZWN0b3IgPT09IFwiKlwiID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9IDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTtcblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDTEFTU1wiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkge1xuXHRcdFx0dmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBjbGFzc05hbWUgKyBcIiBcIiBdO1xuXG5cdFx0XHRyZXR1cm4gcGF0dGVybiB8fFxuXHRcdFx0XHQocGF0dGVybiA9IG5ldyBSZWdFeHAoIFwiKF58XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyBjbGFzc05hbWUgKyBcIihcIiArIHdoaXRlc3BhY2UgKyBcInwkKVwiICkpICYmXG5cdFx0XHRcdGNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhdHRlcm4udGVzdCggdHlwZW9mIGVsZW0uY2xhc3NOYW1lID09PSBcInN0cmluZ1wiICYmIGVsZW0uY2xhc3NOYW1lIHx8IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBlbGVtLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpIHx8IFwiXCIgKTtcblx0XHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNrICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0XHRpZiAoIHJlc3VsdCA9PSBudWxsICkge1xuXHRcdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCIhPVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggIW9wZXJhdG9yICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzdWx0ICs9IFwiXCI7XG5cblx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIj1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiE9XCIgPyByZXN1bHQgIT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJePVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIio9XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIkPVwiID8gY2hlY2sgJiYgcmVzdWx0LnNsaWNlKCAtY2hlY2subGVuZ3RoICkgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ+PVwiID8gKCBcIiBcIiArIHJlc3VsdC5yZXBsYWNlKCByd2hpdGVzcGFjZSwgXCIgXCIgKSArIFwiIFwiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ8PVwiID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCArIDEgKSA9PT0gY2hlY2sgKyBcIi1cIiA6XG5cdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCB0eXBlLCB3aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7XG5cdFx0XHR2YXIgc2ltcGxlID0gdHlwZS5zbGljZSggMCwgMyApICE9PSBcIm50aFwiLFxuXHRcdFx0XHRmb3J3YXJkID0gdHlwZS5zbGljZSggLTQgKSAhPT0gXCJsYXN0XCIsXG5cdFx0XHRcdG9mVHlwZSA9IHdoYXQgPT09IFwib2YtdHlwZVwiO1xuXG5cdFx0XHRyZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCA/XG5cblx0XHRcdFx0Ly8gU2hvcnRjdXQgZm9yIDpudGgtKihuKVxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gISFlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRcdH0gOlxuXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGNhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFydCxcblx0XHRcdFx0XHRcdGRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/IFwibmV4dFNpYmxpbmdcIiA6IFwicHJldmlvdXNTaWJsaW5nXCIsXG5cdFx0XHRcdFx0XHRwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGUsXG5cdFx0XHRcdFx0XHRuYW1lID0gb2ZUeXBlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxcblx0XHRcdFx0XHRcdHVzZUNhY2hlID0gIXhtbCAmJiAhb2ZUeXBlLFxuXHRcdFx0XHRcdFx0ZGlmZiA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdC8vIDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0XHRcdGlmICggc2ltcGxlICkge1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIGRpciApIHtcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gbm9kZVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Ly8gUmV2ZXJzZSBkaXJlY3Rpb24gZm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pXG5cdFx0XHRcdFx0XHRcdFx0c3RhcnQgPSBkaXIgPSB0eXBlID09PSBcIm9ubHlcIiAmJiAhc3RhcnQgJiYgXCJuZXh0U2libGluZ1wiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGlsZCBdO1xuXG5cdFx0XHRcdFx0XHQvLyBub24teG1sIDpudGgtY2hpbGQoLi4uKSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YFxuXHRcdFx0XHRcdFx0aWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91c2x5LWNhY2hlZCBpbmRleFxuXG5cdFx0XHRcdFx0XHRcdC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXlcblx0XHRcdFx0XHRcdFx0bm9kZSA9IHBhcmVudDtcblx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0KG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0ZGlmZiA9IG5vZGVJbmRleCAmJiBjYWNoZVsgMiBdO1xuXHRcdFx0XHRcdFx0XHRub2RlID0gbm9kZUluZGV4ICYmIHBhcmVudC5jaGlsZE5vZGVzWyBub2RlSW5kZXggXTtcblxuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gRmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHQoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFdoZW4gZm91bmQsIGNhY2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gVXNlIHByZXZpb3VzbHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxhYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheVxuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07XG5cdFx0XHRcdFx0XHRcdFx0ZGlmZiA9IG5vZGVJbmRleDtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdC8vIHhtbCA6bnRoLWNoaWxkKC4uLilcblx0XHRcdFx0XHRcdFx0Ly8gb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgtbGFzdCk/LW9mLXR5cGUoLi4uKVxuXHRcdFx0XHRcdFx0XHRpZiAoIGRpZmYgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIFVzZSB0aGUgc2FtZSBsb29wIGFzIGFib3ZlIHRvIHNlZWsgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoICggb2ZUeXBlID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlVHlwZSA9PT0gMSApICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCsrZGlmZiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBDYWNoZSB0aGUgaW5kZXggb2YgZWFjaCBlbmNvdW50ZXJlZCBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlID09PSBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEluY29ycG9yYXRlIHRoZSBvZmZzZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplXG5cdFx0XHRcdFx0XHRkaWZmIC09IGxhc3Q7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0ID49IDAgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkge1xuXHRcdFx0Ly8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzXG5cdFx0XHQvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4gY2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVyc1xuXHRcdFx0Ly8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvc1xuXHRcdFx0dmFyIGFyZ3MsXG5cdFx0XHRcdGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIiArIHBzZXVkbyApO1xuXG5cdFx0XHQvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0XG5cdFx0XHQvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5jdGlvblxuXHRcdFx0Ly8ganVzdCBhcyBTaXp6bGUgZG9lc1xuXHRcdFx0aWYgKCBmblsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRyZXR1cm4gZm4oIGFyZ3VtZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlc1xuXHRcdFx0aWYgKCBmbi5sZW5ndGggPiAxICkge1xuXHRcdFx0XHRhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgXCJcIiwgYXJndW1lbnQgXTtcblx0XHRcdFx0cmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0XHRcdFx0dmFyIGlkeCxcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLFxuXHRcdFx0XHRcdFx0XHRpID0gbWF0Y2hlZC5sZW5ndGg7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWR4ID0gaW5kZXhPZiggc2VlZCwgbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0XHRzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pIDpcblx0XHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRcdHJldHVybiBmbiggZWxlbSwgMCwgYXJncyApO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmbjtcblx0XHR9XG5cdH0sXG5cblx0cHNldWRvczoge1xuXHRcdC8vIFBvdGVudGlhbGx5IGNvbXBsZXggcHNldWRvc1xuXHRcdFwibm90XCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHQvLyBUcmltIHRoZSBzZWxlY3RvciBwYXNzZWQgdG8gY29tcGlsZVxuXHRcdFx0Ly8gdG8gYXZvaWQgdHJlYXRpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmdcblx0XHRcdC8vIHNwYWNlcyBhcyBjb21iaW5hdG9yc1xuXHRcdFx0dmFyIGlucHV0ID0gW10sXG5cdFx0XHRcdHJlc3VsdHMgPSBbXSxcblx0XHRcdFx0bWF0Y2hlciA9IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSApO1xuXG5cdFx0XHRyZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID9cblx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdFx0XHR1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxsLCB4bWwsIFtdICksXG5cdFx0XHRcdFx0XHRpID0gc2VlZC5sZW5ndGg7XG5cblx0XHRcdFx0XHQvLyBNYXRjaCBlbGVtZW50cyB1bm1hdGNoZWQgYnkgYG1hdGNoZXJgXG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0c2VlZFtpXSA9ICEobWF0Y2hlc1tpXSA9IGVsZW0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkgOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdGlucHV0WzBdID0gZWxlbTtcblx0XHRcdFx0XHRtYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7XG5cdFx0XHRcdFx0Ly8gRG9uJ3Qga2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdFx0XHRpbnB1dFswXSA9IG51bGw7XG5cdFx0XHRcdFx0cmV0dXJuICFyZXN1bHRzLnBvcCgpO1xuXHRcdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0XCJoYXNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiY29udGFpbnNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuICggZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAtMTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBcIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkgc2VsZWN0b3Jcblx0XHQvLyBpcyBiYXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZVxuXHRcdC8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsXG5cdFx0Ly8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBcIi1cIi5cblx0XHQvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVseS5cblx0XHQvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLlwiXG5cdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkb1xuXHRcdFwibGFuZ1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkge1xuXHRcdFx0Ly8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllclxuXHRcdFx0aWYgKCAhcmlkZW50aWZpZXIudGVzdChsYW5nIHx8IFwiXCIpICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgbGFuZzogXCIgKyBsYW5nICk7XG5cdFx0XHR9XG5cdFx0XHRsYW5nID0gbGFuZy5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBlbGVtTGFuZztcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGlmICggKGVsZW1MYW5nID0gZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0XHRcdFx0ZWxlbS5sYW5nIDpcblx0XHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKFwieG1sOmxhbmdcIikgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpKSApIHtcblxuXHRcdFx0XHRcdFx0ZWxlbUxhbmcgPSBlbGVtTGFuZy50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW1MYW5nID09PSBsYW5nIHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyBcIi1cIiApID09PSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBNaXNjZWxsYW5lb3VzXG5cdFx0XCJ0YXJnZXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0XHRcdHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDtcblx0XHR9LFxuXG5cdFx0XCJyb290XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY0VsZW07XG5cdFx0fSxcblxuXHRcdFwiZm9jdXNcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3VtZW50Lmhhc0ZvY3VzKCkpICYmICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFiSW5kZXgpO1xuXHRcdH0sXG5cblx0XHQvLyBCb29sZWFuIHByb3BlcnRpZXNcblx0XHRcImVuYWJsZWRcIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGZhbHNlICksXG5cdFx0XCJkaXNhYmxlZFwiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggdHJ1ZSApLFxuXG5cdFx0XCJjaGVja2VkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gSW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJldHVybiBib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0dmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIChub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmICEhZWxlbS5jaGVja2VkKSB8fCAobm9kZU5hbWUgPT09IFwib3B0aW9uXCIgJiYgISFlbGVtLnNlbGVjdGVkKTtcblx0XHR9LFxuXG5cdFx0XCJzZWxlY3RlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHRcblx0XHRcdC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHlcblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7XG5cdFx0fSxcblxuXHRcdC8vIENvbnRlbnRzXG5cdFx0XCJlbXB0eVwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvXG5cdFx0XHQvLyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVtZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjogNSksXG5cdFx0XHQvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9jZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKVxuXHRcdFx0Ly8gbm9kZVR5cGUgPCA2IHdvcmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA8IDYgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0XCJwYXJlbnRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gIUV4cHIucHNldWRvc1tcImVtcHR5XCJdKCBlbGVtICk7XG5cdFx0fSxcblxuXHRcdC8vIEVsZW1lbnQvaW5wdXQgdHlwZXNcblx0XHRcImhlYWRlclwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaGVhZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJpbnB1dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaW5wdXRzLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJidXR0b25cIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSBcImJ1dHRvblwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCI7XG5cdFx0fSxcblxuXHRcdFwidGV4dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBhdHRyO1xuXHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICYmXG5cdFx0XHRcdGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCIgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRTw4XG5cdFx0XHRcdC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCBcInNlYXJjaFwiKSBhcHBlYXIgd2l0aCBlbGVtLnR5cGUgPT09IFwidGV4dFwiXG5cdFx0XHRcdCggKGF0dHIgPSBlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikpID09IG51bGwgfHwgYXR0ci50b0xvd2VyQ2FzZSgpID09PSBcInRleHRcIiApO1xuXHRcdH0sXG5cblx0XHQvLyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uXG5cdFx0XCJmaXJzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFsgMCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJsYXN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIFsgbGVuZ3RoIC0gMSBdO1xuXHRcdH0pLFxuXG5cdFx0XCJlcVwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHRyZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50IF07XG5cdFx0fSksXG5cblx0XHRcImV2ZW5cIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcIm9kZFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMTtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwibHRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyAtLWkgPj0gMDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJndFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pXG5cdH1cbn07XG5cbkV4cHIucHNldWRvc1tcIm50aFwiXSA9IEV4cHIucHNldWRvc1tcImVxXCJdO1xuXG4vLyBBZGQgYnV0dG9uL2lucHV0IHR5cGUgcHNldWRvc1xuZm9yICggaSBpbiB7IHJhZGlvOiB0cnVlLCBjaGVja2JveDogdHJ1ZSwgZmlsZTogdHJ1ZSwgcGFzc3dvcmQ6IHRydWUsIGltYWdlOiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQc2V1ZG8oIGkgKTtcbn1cbmZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7XG59XG5cbi8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVyc1xuZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9XG5zZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvcztcbkV4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7XG5cbnRva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7XG5cdHZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLFxuXHRcdHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsXG5cdFx0Y2FjaGVkID0gdG9rZW5DYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggY2FjaGVkICkge1xuXHRcdHJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7XG5cdH1cblxuXHRzb0ZhciA9IHNlbGVjdG9yO1xuXHRncm91cHMgPSBbXTtcblx0cHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVyO1xuXG5cdHdoaWxlICggc29GYXIgKSB7XG5cblx0XHQvLyBDb21tYSBhbmQgZmlyc3QgcnVuXG5cdFx0aWYgKCAhbWF0Y2hlZCB8fCAobWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRpZiAoIG1hdGNoICkge1xuXHRcdFx0XHQvLyBEb24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZFxuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKSB8fCBzb0Zhcjtcblx0XHRcdH1cblx0XHRcdGdyb3Vwcy5wdXNoKCAodG9rZW5zID0gW10pICk7XG5cdFx0fVxuXG5cdFx0bWF0Y2hlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gQ29tYmluYXRvcnNcblx0XHRpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHtcblx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0Ly8gQ2FzdCBkZXNjZW5kYW50IGNvbWJpbmF0b3JzIHRvIHNwYWNlXG5cdFx0XHRcdHR5cGU6IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCBcIiBcIiApXG5cdFx0XHR9KTtcblx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmlsdGVyc1xuXHRcdGZvciAoIHR5cGUgaW4gRXhwci5maWx0ZXIgKSB7XG5cdFx0XHRpZiAoIChtYXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4ZWMoIHNvRmFyICkpICYmICghcHJlRmlsdGVyc1sgdHlwZSBdIHx8XG5cdFx0XHRcdChtYXRjaCA9IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSkpICkge1xuXHRcdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdFx0bWF0Y2hlczogbWF0Y2hcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCAhbWF0Y2hlZCApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2Vzc1xuXHQvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmdcblx0Ly8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zXG5cdHJldHVybiBwYXJzZU9ubHkgP1xuXHRcdHNvRmFyLmxlbmd0aCA6XG5cdFx0c29GYXIgP1xuXHRcdFx0U2l6emxlLmVycm9yKCBzZWxlY3RvciApIDpcblx0XHRcdC8vIENhY2hlIHRoZSB0b2tlbnNcblx0XHRcdHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApO1xufTtcblxuZnVuY3Rpb24gdG9TZWxlY3RvciggdG9rZW5zICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRzZWxlY3RvciA9IFwiXCI7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdHNlbGVjdG9yICs9IHRva2Vuc1tpXS52YWx1ZTtcblx0fVxuXHRyZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7XG5cdHZhciBkaXIgPSBjb21iaW5hdG9yLmRpcixcblx0XHRza2lwID0gY29tYmluYXRvci5uZXh0LFxuXHRcdGtleSA9IHNraXAgfHwgZGlyLFxuXHRcdGNoZWNrTm9uRWxlbWVudHMgPSBiYXNlICYmIGtleSA9PT0gXCJwYXJlbnROb2RlXCIsXG5cdFx0ZG9uZU5hbWUgPSBkb25lKys7XG5cblx0cmV0dXJuIGNvbWJpbmF0b3IuZmlyc3QgP1xuXHRcdC8vIENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IDpcblxuXHRcdC8vIENoZWNrIGFnYWluc3QgYWxsIGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50c1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgb2xkQ2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLFxuXHRcdFx0XHRuZXdDYWNoZSA9IFsgZGlycnVucywgZG9uZU5hbWUgXTtcblxuXHRcdFx0Ly8gV2UgY2FuJ3Qgc2V0IGFyYml0cmFyeSBkYXRhIG9uIFhNTCBub2Rlcywgc28gdGhleSBkb24ndCBiZW5lZml0IGZyb20gY29tYmluYXRvciBjYWNoaW5nXG5cdFx0XHRpZiAoIHhtbCApIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBlbGVtWyBleHBhbmRvIF0gfHwgKGVsZW1bIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSB8fCAob3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRpZiAoIHNraXAgJiYgc2tpcCA9PT0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICkge1xuXHRcdFx0XHRcdFx0XHRlbGVtID0gZWxlbVsgZGlyIF0gfHwgZWxlbTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIChvbGRDYWNoZSA9IHVuaXF1ZUNhY2hlWyBrZXkgXSkgJiZcblx0XHRcdFx0XHRcdFx0b2xkQ2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFtZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBc3NpZ24gdG8gbmV3Q2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKG5ld0NhY2hlWyAyIF0gPSBvbGRDYWNoZVsgMiBdKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFJldXNlIG5ld2NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIGtleSBdID0gbmV3Q2FjaGU7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQSBtYXRjaCBtZWFucyB3ZSdyZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2ZSB0byBrZWVwIGNoZWNraW5nXG5cdFx0XHRcdFx0XHRcdGlmICggKG5ld0NhY2hlWyAyIF0gPSBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xufVxuXG5mdW5jdGlvbiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSB7XG5cdHJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID9cblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIGkgPSBtYXRjaGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAhbWF0Y2hlcnNbaV0oIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSA6XG5cdFx0bWF0Y2hlcnNbMF07XG59XG5cbmZ1bmN0aW9uIG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yLCBjb250ZXh0cywgcmVzdWx0cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IGNvbnRleHRzLmxlbmd0aDtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0U2l6emxlKCBzZWxlY3RvciwgY29udGV4dHNbaV0sIHJlc3VsdHMgKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHtcblx0dmFyIGVsZW0sXG5cdFx0bmV3VW5tYXRjaGVkID0gW10sXG5cdFx0aSA9IDAsXG5cdFx0bGVuID0gdW5tYXRjaGVkLmxlbmd0aCxcblx0XHRtYXBwZWQgPSBtYXAgIT0gbnVsbDtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHtcblx0XHRcdGlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRuZXdVbm1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0XHRpZiAoIG1hcHBlZCApIHtcblx0XHRcdFx0XHRtYXAucHVzaCggaSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG5ld1VubWF0Y2hlZDtcbn1cblxuZnVuY3Rpb24gc2V0TWF0Y2hlciggcHJlRmlsdGVyLCBzZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICkge1xuXHRpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RGaWx0ZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApO1xuXHR9XG5cdGlmICggcG9zdEZpbmRlciAmJiAhcG9zdEZpbmRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKTtcblx0fVxuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0dmFyIHRlbXAsIGksIGVsZW0sXG5cdFx0XHRwcmVNYXAgPSBbXSxcblx0XHRcdHBvc3RNYXAgPSBbXSxcblx0XHRcdHByZWV4aXN0aW5nID0gcmVzdWx0cy5sZW5ndGgsXG5cblx0XHRcdC8vIEdldCBpbml0aWFsIGVsZW1lbnRzIGZyb20gc2VlZCBvciBjb250ZXh0XG5cdFx0XHRlbGVtcyA9IHNlZWQgfHwgbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IgfHwgXCIqXCIsIGNvbnRleHQubm9kZVR5cGUgPyBbIGNvbnRleHQgXSA6IGNvbnRleHQsIFtdICksXG5cblx0XHRcdC8vIFByZWZpbHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Igc2VlZC1yZXN1bHRzIHN5bmNocm9uaXphdGlvblxuXHRcdFx0bWF0Y2hlckluID0gcHJlRmlsdGVyICYmICggc2VlZCB8fCAhc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIsIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0ZWxlbXMsXG5cblx0XHRcdG1hdGNoZXJPdXQgPSBtYXRjaGVyID9cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHBvc3RGaW5kZXIsIG9yIGZpbHRlcmVkIHNlZWQsIG9yIG5vbi1zZWVkIHBvc3RGaWx0ZXIgb3IgcHJlZXhpc3RpbmcgcmVzdWx0cyxcblx0XHRcdFx0cG9zdEZpbmRlciB8fCAoIHNlZWQgPyBwcmVGaWx0ZXIgOiBwcmVleGlzdGluZyB8fCBwb3N0RmlsdGVyICkgP1xuXG5cdFx0XHRcdFx0Ly8gLi4uaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgaXMgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0W10gOlxuXG5cdFx0XHRcdFx0Ly8gLi4ub3RoZXJ3aXNlIHVzZSByZXN1bHRzIGRpcmVjdGx5XG5cdFx0XHRcdFx0cmVzdWx0cyA6XG5cdFx0XHRcdG1hdGNoZXJJbjtcblxuXHRcdC8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzXG5cdFx0aWYgKCBtYXRjaGVyICkge1xuXHRcdFx0bWF0Y2hlciggbWF0Y2hlckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwb3N0RmlsdGVyXG5cdFx0aWYgKCBwb3N0RmlsdGVyICkge1xuXHRcdFx0dGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBwb3N0TWFwICk7XG5cdFx0XHRwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7XG5cblx0XHRcdC8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0byBtYXRjaGVySW5cblx0XHRcdGkgPSB0ZW1wLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoIChlbGVtID0gdGVtcFtpXSkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlck91dFsgcG9zdE1hcFtpXSBdID0gIShtYXRjaGVySW5bIHBvc3RNYXBbaV0gXSA9IGVsZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciApIHtcblx0XHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRcdC8vIEdldCB0aGUgZmluYWwgbWF0Y2hlck91dCBieSBjb25kZW5zaW5nIHRoaXMgaW50ZXJtZWRpYXRlIGludG8gcG9zdEZpbmRlciBjb250ZXh0c1xuXHRcdFx0XHRcdHRlbXAgPSBbXTtcblx0XHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0gaXMgbm90IHlldCBhIGZpbmFsIG1hdGNoXG5cdFx0XHRcdFx0XHRcdHRlbXAucHVzaCggKG1hdGNoZXJJbltpXSA9IGVsZW0pICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIChtYXRjaGVyT3V0ID0gW10pLCB0ZW1wLCB4bWwgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIE1vdmUgbWF0Y2hlZCBlbGVtZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3luY2hyb25pemVkXG5cdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICYmXG5cdFx0XHRcdFx0XHQodGVtcCA9IHBvc3RGaW5kZXIgPyBpbmRleE9mKCBzZWVkLCBlbGVtICkgOiBwcmVNYXBbaV0pID4gLTEgKSB7XG5cblx0XHRcdFx0XHRcdHNlZWRbdGVtcF0gPSAhKHJlc3VsdHNbdGVtcF0gPSBlbGVtKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEFkZCBlbGVtZW50cyB0byByZXN1bHRzLCB0aHJvdWdoIHBvc3RGaW5kZXIgaWYgZGVmaW5lZFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyT3V0ID0gY29uZGVuc2UoXG5cdFx0XHRcdG1hdGNoZXJPdXQgPT09IHJlc3VsdHMgP1xuXHRcdFx0XHRcdG1hdGNoZXJPdXQuc3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6XG5cdFx0XHRcdFx0bWF0Y2hlck91dFxuXHRcdFx0KTtcblx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0Y2hlck91dCwgeG1sICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tlbnMoIHRva2VucyApIHtcblx0dmFyIGNoZWNrQ29udGV4dCwgbWF0Y2hlciwgaixcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1swXS50eXBlIF0sXG5cdFx0aW1wbGljaXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlW1wiIFwiXSxcblx0XHRpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsXG5cblx0XHQvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29udGV4dChzKVxuXHRcdG1hdGNoQ29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGNoZWNrQ29udGV4dDtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91dGVybW9zdENvbnRleHQgKSApIHx8IChcblx0XHRcdFx0KGNoZWNrQ29udGV4dCA9IGNvbnRleHQpLm5vZGVUeXBlID9cblx0XHRcdFx0XHRtYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0XHRtYXRjaEFueUNvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApICk7XG5cdFx0XHQvLyBBdm9pZCBoYW5naW5nIG9udG8gZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdGNoZWNrQ29udGV4dCA9IG51bGw7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH0gXTtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoIChtYXRjaGVyID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2ldLnR5cGUgXSkgKSB7XG5cdFx0XHRtYXRjaGVycyA9IFsgYWRkQ29tYmluYXRvcihlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0Y2hlcikgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbaV0udHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApO1xuXG5cdFx0XHQvLyBSZXR1cm4gc3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlclxuXHRcdFx0aWYgKCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdC8vIEZpbmQgdGhlIG5leHQgcmVsYXRpdmUgb3BlcmF0b3IgKGlmIGFueSkgZm9yIHByb3BlciBoYW5kbGluZ1xuXHRcdFx0XHRqID0gKytpO1xuXHRcdFx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbIHRva2Vuc1tqXS50eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNldE1hdGNoZXIoXG5cdFx0XHRcdFx0aSA+IDEgJiYgZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksXG5cdFx0XHRcdFx0aSA+IDEgJiYgdG9TZWxlY3Rvcihcblx0XHRcdFx0XHRcdC8vIElmIHRoZSBwcmVjZWRpbmcgdG9rZW4gd2FzIGEgZGVzY2VuZGFudCBjb21iaW5hdG9yLCBpbnNlcnQgYW4gaW1wbGljaXQgYW55LWVsZW1lbnQgYCpgXG5cdFx0XHRcdFx0XHR0b2tlbnMuc2xpY2UoIDAsIGkgLSAxICkuY29uY2F0KHsgdmFsdWU6IHRva2Vuc1sgaSAtIDIgXS50eXBlID09PSBcIiBcIiA/IFwiKlwiIDogXCJcIiB9KVxuXHRcdFx0XHRcdCkucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApLFxuXHRcdFx0XHRcdG1hdGNoZXIsXG5cdFx0XHRcdFx0aSA8IGogJiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGljZSggaSwgaiApICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2VucyggKHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgdG9TZWxlY3RvciggdG9rZW5zIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdG1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApIHtcblx0dmFyIGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1vc3QgKSB7XG5cdFx0XHR2YXIgZWxlbSwgaiwgbWF0Y2hlcixcblx0XHRcdFx0bWF0Y2hlZENvdW50ID0gMCxcblx0XHRcdFx0aSA9IFwiMFwiLFxuXHRcdFx0XHR1bm1hdGNoZWQgPSBzZWVkICYmIFtdLFxuXHRcdFx0XHRzZXRNYXRjaGVkID0gW10sXG5cdFx0XHRcdGNvbnRleHRCYWNrdXAgPSBvdXRlcm1vc3RDb250ZXh0LFxuXHRcdFx0XHQvLyBXZSBtdXN0IGFsd2F5cyBoYXZlIGVpdGhlciBzZWVkIGVsZW1lbnRzIG9yIG91dGVybW9zdCBjb250ZXh0XG5cdFx0XHRcdGVsZW1zID0gc2VlZCB8fCBieUVsZW1lbnQgJiYgRXhwci5maW5kW1wiVEFHXCJdKCBcIipcIiwgb3V0ZXJtb3N0ICksXG5cdFx0XHRcdC8vIFVzZSBpbnRlZ2VyIGRpcnJ1bnMgaWZmIHRoaXMgaXMgdGhlIG91dGVybW9zdCBtYXRjaGVyXG5cdFx0XHRcdGRpcnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBjb250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEpLFxuXHRcdFx0XHRsZW4gPSBlbGVtcy5sZW5ndGg7XG5cblx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dCA9PT0gZG9jdW1lbnQgfHwgY29udGV4dCB8fCBvdXRlcm1vc3Q7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBlbGVtZW50cyBwYXNzaW5nIGVsZW1lbnRNYXRjaGVycyBkaXJlY3RseSB0byByZXN1bHRzXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTw5LCBTYWZhcmlcblx0XHRcdC8vIFRvbGVyYXRlIE5vZGVMaXN0IHByb3BlcnRpZXMgKElFOiBcImxlbmd0aFwiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZFxuXHRcdFx0Zm9yICggOyBpICE9PSBsZW4gJiYgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGJ5RWxlbWVudCAmJiBlbGVtICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdGlmICggIWNvbnRleHQgJiYgZWxlbS5vd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCApIHtcblx0XHRcdFx0XHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdFx0XHRcdFx0XHR4bWwgPSAhZG9jdW1lbnRJc0hUTUw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBlbGVtZW50TWF0Y2hlcnNbaisrXSkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQgfHwgZG9jdW1lbnQsIHhtbCkgKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdFx0XHRkaXJydW5zID0gZGlycnVuc1VuaXF1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUcmFjayB1bm1hdGNoZWQgZWxlbWVudHMgZm9yIHNldCBmaWx0ZXJzXG5cdFx0XHRcdGlmICggYnlTZXQgKSB7XG5cdFx0XHRcdFx0Ly8gVGhleSB3aWxsIGhhdmUgZ29uZSB0aHJvdWdoIGFsbCBwb3NzaWJsZSBtYXRjaGVyc1xuXHRcdFx0XHRcdGlmICggKGVsZW0gPSAhbWF0Y2hlciAmJiBlbGVtKSApIHtcblx0XHRcdFx0XHRcdG1hdGNoZWRDb3VudC0tO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIExlbmd0aGVuIHRoZSBhcnJheSBmb3IgZXZlcnkgZWxlbWVudCwgbWF0Y2hlZCBvciBub3Rcblx0XHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRcdFx0XHR1bm1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBgaWAgaXMgbm93IHRoZSBjb3VudCBvZiBlbGVtZW50cyB2aXNpdGVkIGFib3ZlLCBhbmQgYWRkaW5nIGl0IHRvIGBtYXRjaGVkQ291bnRgXG5cdFx0XHQvLyBtYWtlcyB0aGUgbGF0dGVyIG5vbm5lZ2F0aXZlLlxuXHRcdFx0bWF0Y2hlZENvdW50ICs9IGk7XG5cblx0XHRcdC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBlbGVtZW50c1xuXHRcdFx0Ly8gTk9URTogVGhpcyBjYW4gYmUgc2tpcHBlZCBpZiB0aGVyZSBhcmUgbm8gdW5tYXRjaGVkIGVsZW1lbnRzIChpLmUuLCBgbWF0Y2hlZENvdW50YFxuXHRcdFx0Ly8gZXF1YWxzIGBpYCksIHVubGVzcyB3ZSBkaWRuJ3QgdmlzaXQgX2FueV8gZWxlbWVudHMgaW4gdGhlIGFib3ZlIGxvb3AgYmVjYXVzZSB3ZSBoYXZlXG5cdFx0XHQvLyBubyBlbGVtZW50IG1hdGNoZXJzIGFuZCBubyBzZWVkLlxuXHRcdFx0Ly8gSW5jcmVtZW50aW5nIGFuIGluaXRpYWxseS1zdHJpbmcgXCIwXCIgYGlgIGFsbG93cyBgaWAgdG8gcmVtYWluIGEgc3RyaW5nIG9ubHkgaW4gdGhhdFxuXHRcdFx0Ly8gY2FzZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSBcIjAwXCIgYG1hdGNoZWRDb3VudGAgdGhhdCBkaWZmZXJzIGZyb20gYGlgIGJ1dCBpcyBhbHNvXG5cdFx0XHQvLyBudW1lcmljYWxseSB6ZXJvLlxuXHRcdFx0aWYgKCBieVNldCAmJiBpICE9PSBtYXRjaGVkQ291bnQgKSB7XG5cdFx0XHRcdGogPSAwO1xuXHRcdFx0XHR3aGlsZSAoIChtYXRjaGVyID0gc2V0TWF0Y2hlcnNbaisrXSkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlciggdW5tYXRjaGVkLCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggc2VlZCApIHtcblx0XHRcdFx0XHQvLyBSZWludGVncmF0ZSBlbGVtZW50IG1hdGNoZXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIGZvciBzb3J0aW5nXG5cdFx0XHRcdFx0aWYgKCBtYXRjaGVkQ291bnQgPiAwICkge1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggISh1bm1hdGNoZWRbaV0gfHwgc2V0TWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0c2V0TWF0Y2hlZFtpXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBEaXNjYXJkIGluZGV4IHBsYWNlaG9sZGVyIHZhbHVlcyB0byBnZXQgb25seSBhY3R1YWwgbWF0Y2hlc1xuXHRcdFx0XHRcdHNldE1hdGNoZWQgPSBjb25kZW5zZSggc2V0TWF0Y2hlZCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0c1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzZXRNYXRjaGVkICk7XG5cblx0XHRcdFx0Ly8gU2VlZGxlc3Mgc2V0IG1hdGNoZXMgc3VjY2VlZGluZyBtdWx0aXBsZSBzdWNjZXNzZnVsIG1hdGNoZXJzIHN0aXB1bGF0ZSBzb3J0aW5nXG5cdFx0XHRcdGlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdCggbWF0Y2hlZENvdW50ICsgc2V0TWF0Y2hlcnMubGVuZ3RoICkgPiAxICkge1xuXG5cdFx0XHRcdFx0U2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBPdmVycmlkZSBtYW5pcHVsYXRpb24gb2YgZ2xvYmFscyBieSBuZXN0ZWQgbWF0Y2hlcnNcblx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRkaXJydW5zID0gZGlycnVuc1VuaXF1ZTtcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB1bm1hdGNoZWQ7XG5cdFx0fTtcblxuXHRyZXR1cm4gYnlTZXQgP1xuXHRcdG1hcmtGdW5jdGlvbiggc3VwZXJNYXRjaGVyICkgOlxuXHRcdHN1cGVyTWF0Y2hlcjtcbn1cblxuY29tcGlsZSA9IFNpenpsZS5jb21waWxlID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBtYXRjaCAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHtcblx0dmFyIGksXG5cdFx0c2V0TWF0Y2hlcnMgPSBbXSxcblx0XHRlbGVtZW50TWF0Y2hlcnMgPSBbXSxcblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF07XG5cblx0aWYgKCAhY2FjaGVkICkge1xuXHRcdC8vIEdlbmVyYXRlIGEgZnVuY3Rpb24gb2YgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoZWNrIGVhY2ggZWxlbWVudFxuXHRcdGlmICggIW1hdGNoICkge1xuXHRcdFx0bWF0Y2ggPSB0b2tlbml6ZSggc2VsZWN0b3IgKTtcblx0XHR9XG5cdFx0aSA9IG1hdGNoLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdGNhY2hlZCA9IG1hdGNoZXJGcm9tVG9rZW5zKCBtYXRjaFtpXSApO1xuXHRcdFx0aWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0c2V0TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtZW50TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FjaGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApICk7XG5cblx0XHQvLyBTYXZlIHNlbGVjdG9yIGFuZCB0b2tlbml6YXRpb25cblx0XHRjYWNoZWQuc2VsZWN0b3IgPSBzZWxlY3Rvcjtcblx0fVxuXHRyZXR1cm4gY2FjaGVkO1xufTtcblxuLyoqXG4gKiBBIGxvdy1sZXZlbCBzZWxlY3Rpb24gZnVuY3Rpb24gdGhhdCB3b3JrcyB3aXRoIFNpenpsZSdzIGNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb25zXG4gKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbn0gc2VsZWN0b3IgQSBzZWxlY3RvciBvciBhIHByZS1jb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uIGJ1aWx0IHdpdGggU2l6emxlLmNvbXBpbGVcbiAqIEBwYXJhbSB7RWxlbWVudH0gY29udGV4dFxuICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdHNdXG4gKiBAcGFyYW0ge0FycmF5fSBbc2VlZF0gQSBzZXQgb2YgZWxlbWVudHMgdG8gbWF0Y2ggYWdhaW5zdFxuICovXG5zZWxlY3QgPSBTaXp6bGUuc2VsZWN0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkge1xuXHR2YXIgaSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCxcblx0XHRjb21waWxlZCA9IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICYmIHNlbGVjdG9yLFxuXHRcdG1hdGNoID0gIXNlZWQgJiYgdG9rZW5pemUoIChzZWxlY3RvciA9IGNvbXBpbGVkLnNlbGVjdG9yIHx8IHNlbGVjdG9yKSApO1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFRyeSB0byBtaW5pbWl6ZSBvcGVyYXRpb25zIGlmIHRoZXJlIGlzIG9ubHkgb25lIHNlbGVjdG9yIGluIHRoZSBsaXN0IGFuZCBubyBzZWVkXG5cdC8vICh0aGUgbGF0dGVyIG9mIHdoaWNoIGd1YXJhbnRlZXMgdXMgY29udGV4dClcblx0aWYgKCBtYXRjaC5sZW5ndGggPT09IDEgKSB7XG5cblx0XHQvLyBSZWR1Y2UgY29udGV4dCBpZiB0aGUgbGVhZGluZyBjb21wb3VuZCBzZWxlY3RvciBpcyBhbiBJRFxuXHRcdHRva2VucyA9IG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAgKTtcblx0XHRpZiAoIHRva2Vucy5sZW5ndGggPiAyICYmICh0b2tlbiA9IHRva2Vuc1swXSkudHlwZSA9PT0gXCJJRFwiICYmXG5cdFx0XHRcdGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgZG9jdW1lbnRJc0hUTUwgJiYgRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzFdLnR5cGUgXSApIHtcblxuXHRcdFx0Y29udGV4dCA9ICggRXhwci5maW5kW1wiSURcIl0oIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZShydW5lc2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQgKSB8fCBbXSApWzBdO1xuXHRcdFx0aWYgKCAhY29udGV4dCApIHtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdC8vIFByZWNvbXBpbGVkIG1hdGNoZXJzIHdpbGwgc3RpbGwgdmVyaWZ5IGFuY2VzdHJ5LCBzbyBzdGVwIHVwIGEgbGV2ZWxcblx0XHRcdH0gZWxzZSBpZiAoIGNvbXBpbGVkICkge1xuXHRcdFx0XHRjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nXG5cdFx0aSA9IG1hdGNoRXhwcltcIm5lZWRzQ29udGV4dFwiXS50ZXN0KCBzZWxlY3RvciApID8gMCA6IHRva2Vucy5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0b2tlbiA9IHRva2Vuc1tpXTtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRvclxuXHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUpIF0gKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAoZmluZCA9IEV4cHIuZmluZFsgdHlwZSBdKSApIHtcblx0XHRcdFx0Ly8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4dCBmb3IgbGVhZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzXG5cdFx0XHRcdGlmICggKHNlZWQgPSBmaW5kKFxuXHRcdFx0XHRcdHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSxcblx0XHRcdFx0XHRyc2libGluZy50ZXN0KCB0b2tlbnNbMF0udHlwZSApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdFx0XHRcdCkpICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgc2VlZCBpcyBlbXB0eSBvciBubyB0b2tlbnMgcmVtYWluLCB3ZSBjYW4gcmV0dXJuIGVhcmx5XG5cdFx0XHRcdFx0dG9rZW5zLnNwbGljZSggaSwgMSApO1xuXHRcdFx0XHRcdHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5zICk7XG5cdFx0XHRcdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzZWVkICk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENvbXBpbGUgYW5kIGV4ZWN1dGUgYSBmaWx0ZXJpbmcgZnVuY3Rpb24gaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuXHQvLyBQcm92aWRlIGBtYXRjaGAgdG8gYXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFib3ZlXG5cdCggY29tcGlsZWQgfHwgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkgKShcblx0XHRzZWVkLFxuXHRcdGNvbnRleHQsXG5cdFx0IWRvY3VtZW50SXNIVE1MLFxuXHRcdHJlc3VsdHMsXG5cdFx0IWNvbnRleHQgfHwgcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHQpO1xuXHRyZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIE9uZS10aW1lIGFzc2lnbm1lbnRzXG5cbi8vIFNvcnQgc3RhYmlsaXR5XG5zdXBwb3J0LnNvcnRTdGFibGUgPSBleHBhbmRvLnNwbGl0KFwiXCIpLnNvcnQoIHNvcnRPcmRlciApLmpvaW4oXCJcIikgPT09IGV4cGFuZG87XG5cbi8vIFN1cHBvcnQ6IENocm9tZSAxNC0zNStcbi8vIEFsd2F5cyBhc3N1bWUgZHVwbGljYXRlcyBpZiB0aGV5IGFyZW4ndCBwYXNzZWQgdG8gdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25cbnN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcyA9ICEhaGFzRHVwbGljYXRlO1xuXG4vLyBJbml0aWFsaXplIGFnYWluc3QgdGhlIGRlZmF1bHQgZG9jdW1lbnRcbnNldERvY3VtZW50KCk7XG5cbi8vIFN1cHBvcnQ6IFdlYmtpdDw1MzcuMzIgLSBTYWZhcmkgNi4wLjMvQ2hyb21lIDI1IChmaXhlZCBpbiBDaHJvbWUgMjcpXG4vLyBEZXRhY2hlZCBub2RlcyBjb25mb3VuZGluZ2x5IGZvbGxvdyAqZWFjaCBvdGhlcipcbnN1cHBvcnQuc29ydERldGFjaGVkID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0Ly8gU2hvdWxkIHJldHVybiAxLCBidXQgcmV0dXJucyA0IChmb2xsb3dpbmcpXG5cdHJldHVybiBlbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZpZWxkc2V0XCIpICkgJiAxO1xufSk7XG5cbi8vIFN1cHBvcnQ6IElFPDhcbi8vIFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5IFwiaW50ZXJwb2xhdGlvblwiXG4vLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM2NDI5JTI4VlMuODUlMjkuYXNweFxuaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0ZWwuaW5uZXJIVE1MID0gXCI8YSBocmVmPScjJz48L2E+XCI7XG5cdHJldHVybiBlbC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZShcImhyZWZcIikgPT09IFwiI1wiIDtcbn0pICkge1xuXHRhZGRIYW5kbGUoIFwidHlwZXxocmVmfGhlaWdodHx3aWR0aFwiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0eXBlXCIgPyAxIDogMiApO1xuXHRcdH1cblx0fSk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBkZWZhdWx0VmFsdWUgaW4gcGxhY2Ugb2YgZ2V0QXR0cmlidXRlKFwidmFsdWVcIilcbmlmICggIXN1cHBvcnQuYXR0cmlidXRlcyB8fCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0ZWwuaW5uZXJIVE1MID0gXCI8aW5wdXQvPlwiO1xuXHRlbC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiLCBcIlwiICk7XG5cdHJldHVybiBlbC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiICkgPT09IFwiXCI7XG59KSApIHtcblx0YWRkSGFuZGxlKCBcInZhbHVlXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLmRlZmF1bHRWYWx1ZTtcblx0XHR9XG5cdH0pO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZ2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3aGVuIGdldEF0dHJpYnV0ZSBsaWVzXG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRyZXR1cm4gZWwuZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPT0gbnVsbDtcbn0pICkge1xuXHRhZGRIYW5kbGUoIGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0dmFyIHZhbDtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtWyBuYW1lIF0gPT09IHRydWUgPyBuYW1lLnRvTG93ZXJDYXNlKCkgOlxuXHRcdFx0XHRcdCh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKSkgJiYgdmFsLnNwZWNpZmllZCA/XG5cdFx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcblx0XHR9XG5cdH0pO1xufVxuXG5yZXR1cm4gU2l6emxlO1xuXG59KSggd2luZG93ICk7XG5cblxuXG5qUXVlcnkuZmluZCA9IFNpenpsZTtcbmpRdWVyeS5leHByID0gU2l6emxlLnNlbGVjdG9ycztcblxuLy8gRGVwcmVjYXRlZFxualF1ZXJ5LmV4cHJbIFwiOlwiIF0gPSBqUXVlcnkuZXhwci5wc2V1ZG9zO1xualF1ZXJ5LnVuaXF1ZVNvcnQgPSBqUXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7XG5qUXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0O1xualF1ZXJ5LmlzWE1MRG9jID0gU2l6emxlLmlzWE1MO1xualF1ZXJ5LmNvbnRhaW5zID0gU2l6emxlLmNvbnRhaW5zO1xualF1ZXJ5LmVzY2FwZVNlbGVjdG9yID0gU2l6emxlLmVzY2FwZTtcblxuXG5cblxudmFyIGRpciA9IGZ1bmN0aW9uKCBlbGVtLCBkaXIsIHVudGlsICkge1xuXHR2YXIgbWF0Y2hlZCA9IFtdLFxuXHRcdHRydW5jYXRlID0gdW50aWwgIT09IHVuZGVmaW5lZDtcblxuXHR3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgJiYgZWxlbS5ub2RlVHlwZSAhPT0gOSApIHtcblx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRpZiAoIHRydW5jYXRlICYmIGpRdWVyeSggZWxlbSApLmlzKCB1bnRpbCApICkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdG1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWF0Y2hlZDtcbn07XG5cblxudmFyIHNpYmxpbmdzID0gZnVuY3Rpb24oIG4sIGVsZW0gKSB7XG5cdHZhciBtYXRjaGVkID0gW107XG5cblx0Zm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHtcblx0XHRpZiAoIG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSApIHtcblx0XHRcdG1hdGNoZWQucHVzaCggbiApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBtYXRjaGVkO1xufTtcblxuXG52YXIgcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtcblxuXG5cbmZ1bmN0aW9uIG5vZGVOYW1lKCBlbGVtLCBuYW1lICkge1xuXG4gIHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG59O1xudmFyIHJzaW5nbGVUYWcgPSAoIC9ePChbYS16XVteXFwvXFwwPjpcXHgyMFxcdFxcclxcblxcZl0qKVtcXHgyMFxcdFxcclxcblxcZl0qXFwvPz4oPzo8XFwvXFwxPnwpJC9pICk7XG5cblxuXG4vLyBJbXBsZW1lbnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5kIG5vdFxuZnVuY3Rpb24gd2lubm93KCBlbGVtZW50cywgcXVhbGlmaWVyLCBub3QgKSB7XG5cdGlmICggaXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gISFxdWFsaWZpZXIuY2FsbCggZWxlbSwgaSwgZWxlbSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gU2luZ2xlIGVsZW1lbnRcblx0aWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEFycmF5bGlrZSBvZiBlbGVtZW50cyAoalF1ZXJ5LCBhcmd1bWVudHMsIEFycmF5KVxuXHRpZiAoIHR5cGVvZiBxdWFsaWZpZXIgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEZpbHRlcmVkIGRpcmVjdGx5IGZvciBib3RoIHNpbXBsZSBhbmQgY29tcGxleCBzZWxlY3RvcnNcblx0cmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZWxlbWVudHMsIG5vdCApO1xufVxuXG5qUXVlcnkuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7XG5cdHZhciBlbGVtID0gZWxlbXNbIDAgXTtcblxuXHRpZiAoIG5vdCApIHtcblx0XHRleHByID0gXCI6bm90KFwiICsgZXhwciArIFwiKVwiO1xuXHR9XG5cblx0aWYgKCBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVtcywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7XG5cdH0gKSApO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGksIHJldCxcblx0XHRcdGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0c2VsZiA9IHRoaXM7XG5cblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICkgKTtcblx0XHR9XG5cblx0XHRyZXQgPSB0aGlzLnB1c2hTdGFjayggW10gKTtcblxuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRqUXVlcnkuZmluZCggc2VsZWN0b3IsIHNlbGZbIGkgXSwgcmV0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGxlbiA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggcmV0ICkgOiByZXQ7XG5cdH0sXG5cdGZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgZmFsc2UgKSApO1xuXHR9LFxuXHRub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUgKSApO1xuXHR9LFxuXHRpczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiAhIXdpbm5vdyhcblx0XHRcdHRoaXMsXG5cblx0XHRcdC8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXRcblx0XHRcdC8vIHNvICQoXCJwOmZpcnN0XCIpLmlzKFwicDpsYXN0XCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byBcInBcIi5cblx0XHRcdHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgP1xuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9yICkgOlxuXHRcdFx0XHRzZWxlY3RvciB8fCBbXSxcblx0XHRcdGZhbHNlXG5cdFx0KS5sZW5ndGg7XG5cdH1cbn0gKTtcblxuXG4vLyBJbml0aWFsaXplIGEgalF1ZXJ5IG9iamVjdFxuXG5cbi8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KVxudmFyIHJvb3RqUXVlcnksXG5cblx0Ly8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Ncblx0Ly8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKCM5NTIxKVxuXHQvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPClcblx0Ly8gU2hvcnRjdXQgc2ltcGxlICNpZCBjYXNlIGZvciBzcGVlZFxuXHRycXVpY2tFeHByID0gL14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qfCMoW1xcdy1dKykpJC8sXG5cblx0aW5pdCA9IGpRdWVyeS5mbi5pbml0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByb290ICkge1xuXHRcdHZhciBtYXRjaCwgZWxlbTtcblxuXHRcdC8vIEhBTkRMRTogJChcIlwiKSwgJChudWxsKSwgJCh1bmRlZmluZWQpLCAkKGZhbHNlKVxuXHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXG5cdFx0Ly8gTWV0aG9kIGluaXQoKSBhY2NlcHRzIGFuIGFsdGVybmF0ZSByb290alF1ZXJ5XG5cdFx0Ly8gc28gbWlncmF0ZSBjYW4gc3VwcG9ydCBqUXVlcnkuc3ViIChnaC0yMTAxKVxuXHRcdHJvb3QgPSByb290IHx8IHJvb3RqUXVlcnk7XG5cblx0XHQvLyBIYW5kbGUgSFRNTCBzdHJpbmdzXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRpZiAoIHNlbGVjdG9yWyAwIF0gPT09IFwiPFwiICYmXG5cdFx0XHRcdHNlbGVjdG9yWyBzZWxlY3Rvci5sZW5ndGggLSAxIF0gPT09IFwiPlwiICYmXG5cdFx0XHRcdHNlbGVjdG9yLmxlbmd0aCA+PSAzICkge1xuXG5cdFx0XHRcdC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrXG5cdFx0XHRcdG1hdGNoID0gWyBudWxsLCBzZWxlY3RvciwgbnVsbCBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWF0Y2ggaHRtbCBvciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQgZm9yICNpZFxuXHRcdFx0aWYgKCBtYXRjaCAmJiAoIG1hdGNoWyAxIF0gfHwgIWNvbnRleHQgKSApIHtcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSlcblx0XHRcdFx0aWYgKCBtYXRjaFsgMSBdICkge1xuXHRcdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29udGV4dFsgMCBdIDogY29udGV4dDtcblxuXHRcdFx0XHRcdC8vIE9wdGlvbiB0byBydW4gc2NyaXB0cyBpcyB0cnVlIGZvciBiYWNrLWNvbXBhdFxuXHRcdFx0XHRcdC8vIEludGVudGlvbmFsbHkgbGV0IHRoZSBlcnJvciBiZSB0aHJvd24gaWYgcGFyc2VIVE1MIGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLCBqUXVlcnkucGFyc2VIVE1MKFxuXHRcdFx0XHRcdFx0bWF0Y2hbIDEgXSxcblx0XHRcdFx0XHRcdGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0KSApO1xuXG5cdFx0XHRcdFx0Ly8gSEFORExFOiAkKGh0bWwsIHByb3BzKVxuXHRcdFx0XHRcdGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHtcblx0XHRcdFx0XHRcdGZvciAoIG1hdGNoIGluIGNvbnRleHQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gUHJvcGVydGllcyBvZiBjb250ZXh0IGFyZSBjYWxsZWQgYXMgbWV0aG9kcyBpZiBwb3NzaWJsZVxuXHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIHRoaXNbIG1hdGNoIF0gKSApIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzWyBtYXRjaCBdKCBjb250ZXh0WyBtYXRjaCBdICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uYW5kIG90aGVyd2lzZSBzZXQgYXMgYXR0cmlidXRlc1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJCgjaWQpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsgMiBdICk7XG5cblx0XHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHRcdC8vIEluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0XG5cdFx0XHRcdFx0XHR0aGlzWyAwIF0gPSBlbGVtO1xuXHRcdFx0XHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgJCguLi4pKVxuXHRcdFx0fSBlbHNlIGlmICggIWNvbnRleHQgfHwgY29udGV4dC5qcXVlcnkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGNvbnRleHQgfHwgcm9vdCApLmZpbmQoIHNlbGVjdG9yICk7XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCBjb250ZXh0KVxuXHRcdFx0Ly8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVudCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIpXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jb25zdHJ1Y3RvciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICk7XG5cdFx0XHR9XG5cblx0XHQvLyBIQU5ETEU6ICQoRE9NRWxlbWVudClcblx0XHR9IGVsc2UgaWYgKCBzZWxlY3Rvci5ub2RlVHlwZSApIHtcblx0XHRcdHRoaXNbIDAgXSA9IHNlbGVjdG9yO1xuXHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHQvLyBIQU5ETEU6ICQoZnVuY3Rpb24pXG5cdFx0Ly8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5XG5cdFx0fSBlbHNlIGlmICggaXNGdW5jdGlvbiggc2VsZWN0b3IgKSApIHtcblx0XHRcdHJldHVybiByb290LnJlYWR5ICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRyb290LnJlYWR5KCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdHNlbGVjdG9yKCBqUXVlcnkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4galF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTtcblx0fTtcblxuLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvblxuaW5pdC5wcm90b3R5cGUgPSBqUXVlcnkuZm47XG5cbi8vIEluaXRpYWxpemUgY2VudHJhbCByZWZlcmVuY2VcbnJvb3RqUXVlcnkgPSBqUXVlcnkoIGRvY3VtZW50ICk7XG5cblxudmFyIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLFxuXG5cdC8vIE1ldGhvZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNldCB3aGVuIHN0YXJ0aW5nIGZyb20gYSB1bmlxdWUgc2V0XG5cdGd1YXJhbnRlZWRVbmlxdWUgPSB7XG5cdFx0Y2hpbGRyZW46IHRydWUsXG5cdFx0Y29udGVudHM6IHRydWUsXG5cdFx0bmV4dDogdHJ1ZSxcblx0XHRwcmV2OiB0cnVlXG5cdH07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0aGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkge1xuXHRcdHZhciB0YXJnZXRzID0galF1ZXJ5KCB0YXJnZXQsIHRoaXMgKSxcblx0XHRcdGwgPSB0YXJnZXRzLmxlbmd0aDtcblxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCB0aGlzLCB0YXJnZXRzWyBpIF0gKSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRjbG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkge1xuXHRcdHZhciBjdXIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSB0aGlzLmxlbmd0aCxcblx0XHRcdG1hdGNoZWQgPSBbXSxcblx0XHRcdHRhcmdldHMgPSB0eXBlb2Ygc2VsZWN0b3JzICE9PSBcInN0cmluZ1wiICYmIGpRdWVyeSggc2VsZWN0b3JzICk7XG5cblx0XHQvLyBQb3NpdGlvbmFsIHNlbGVjdG9ycyBuZXZlciBtYXRjaCwgc2luY2UgdGhlcmUncyBubyBfc2VsZWN0aW9uXyBjb250ZXh0XG5cdFx0aWYgKCAhcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvcnMgKSApIHtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zm9yICggY3VyID0gdGhpc1sgaSBdOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblxuXHRcdFx0XHRcdC8vIEFsd2F5cyBza2lwIGRvY3VtZW50IGZyYWdtZW50c1xuXHRcdFx0XHRcdGlmICggY3VyLm5vZGVUeXBlIDwgMTEgJiYgKCB0YXJnZXRzID9cblx0XHRcdFx0XHRcdHRhcmdldHMuaW5kZXgoIGN1ciApID4gLTEgOlxuXG5cdFx0XHRcdFx0XHQvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBTaXp6bGVcblx0XHRcdFx0XHRcdGN1ci5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHRcdFx0XHRqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGN1ciwgc2VsZWN0b3JzICkgKSApIHtcblxuXHRcdFx0XHRcdFx0bWF0Y2hlZC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZC5sZW5ndGggPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKSA6IG1hdGNoZWQgKTtcblx0fSxcblxuXHQvLyBEZXRlcm1pbmUgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgd2l0aGluIHRoZSBzZXRcblx0aW5kZXg6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gTm8gYXJndW1lbnQsIHJldHVybiBpbmRleCBpbiBwYXJlbnRcblx0XHRpZiAoICFlbGVtICkge1xuXHRcdFx0cmV0dXJuICggdGhpc1sgMCBdICYmIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xO1xuXHRcdH1cblxuXHRcdC8vIEluZGV4IGluIHNlbGVjdG9yXG5cdFx0aWYgKCB0eXBlb2YgZWxlbSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBpbmRleE9mLmNhbGwoIGpRdWVyeSggZWxlbSApLCB0aGlzWyAwIF0gKTtcblx0XHR9XG5cblx0XHQvLyBMb2NhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZXNpcmVkIGVsZW1lbnRcblx0XHRyZXR1cm4gaW5kZXhPZi5jYWxsKCB0aGlzLFxuXG5cdFx0XHQvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBmaXJzdCBlbGVtZW50IGlzIHVzZWRcblx0XHRcdGVsZW0uanF1ZXJ5ID8gZWxlbVsgMCBdIDogZWxlbVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKFxuXHRcdFx0alF1ZXJ5LnVuaXF1ZVNvcnQoXG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApIClcblx0XHRcdClcblx0XHQpO1xuXHR9LFxuXG5cdGFkZEJhY2s6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgP1xuXHRcdFx0dGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlciggc2VsZWN0b3IgKVxuXHRcdCk7XG5cdH1cbn0gKTtcblxuZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7XG5cdHdoaWxlICggKCBjdXIgPSBjdXJbIGRpciBdICkgJiYgY3VyLm5vZGVUeXBlICE9PSAxICkge31cblx0cmV0dXJuIGN1cjtcbn1cblxualF1ZXJ5LmVhY2goIHtcblx0cGFyZW50OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdHJldHVybiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlICE9PSAxMSA/IHBhcmVudCA6IG51bGw7XG5cdH0sXG5cdHBhcmVudHM6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiICk7XG5cdH0sXG5cdHBhcmVudHNVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiLCB1bnRpbCApO1xuXHR9LFxuXHRuZXh0OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXY6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiApO1xuXHR9LFxuXHRwcmV2QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiwgdW50aWwgKTtcblx0fSxcblx0cHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiwgdW50aWwgKTtcblx0fSxcblx0c2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggKCBlbGVtLnBhcmVudE5vZGUgfHwge30gKS5maXJzdENoaWxkLCBlbGVtICk7XG5cdH0sXG5cdGNoaWxkcmVuOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZ3MoIGVsZW0uZmlyc3RDaGlsZCApO1xuXHR9LFxuXHRjb250ZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG4gICAgICAgIGlmICggbm9kZU5hbWUoIGVsZW0sIFwiaWZyYW1lXCIgKSApIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtLmNvbnRlbnREb2N1bWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5LCBpT1MgNyBvbmx5LCBBbmRyb2lkIEJyb3dzZXIgPD00LjMgb25seVxuICAgICAgICAvLyBUcmVhdCB0aGUgdGVtcGxhdGUgZWxlbWVudCBhcyBhIHJlZ3VsYXIgb25lIGluIGJyb3dzZXJzIHRoYXRcbiAgICAgICAgLy8gZG9uJ3Qgc3VwcG9ydCBpdC5cbiAgICAgICAgaWYgKCBub2RlTmFtZSggZWxlbSwgXCJ0ZW1wbGF0ZVwiICkgKSB7XG4gICAgICAgICAgICBlbGVtID0gZWxlbS5jb250ZW50IHx8IGVsZW07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7XG5cdH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBmbiApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkge1xuXHRcdHZhciBtYXRjaGVkID0galF1ZXJ5Lm1hcCggdGhpcywgZm4sIHVudGlsICk7XG5cblx0XHRpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09IFwiVW50aWxcIiApIHtcblx0XHRcdHNlbGVjdG9yID0gdW50aWw7XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIG1hdGNoZWQgKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMubGVuZ3RoID4gMSApIHtcblxuXHRcdFx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZXNcblx0XHRcdGlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHtcblx0XHRcdFx0alF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV2ZXJzZSBvcmRlciBmb3IgcGFyZW50cyogYW5kIHByZXYtZGVyaXZhdGl2ZXNcblx0XHRcdGlmICggcnBhcmVudHNwcmV2LnRlc3QoIG5hbWUgKSApIHtcblx0XHRcdFx0bWF0Y2hlZC5yZXZlcnNlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7XG5cdH07XG59ICk7XG52YXIgcm5vdGh0bWx3aGl0ZSA9ICggL1teXFx4MjBcXHRcXHJcXG5cXGZdKy9nICk7XG5cblxuXG4vLyBDb252ZXJ0IFN0cmluZy1mb3JtYXR0ZWQgb3B0aW9ucyBpbnRvIE9iamVjdC1mb3JtYXR0ZWQgb25lc1xuZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHtcblx0dmFyIG9iamVjdCA9IHt9O1xuXHRqUXVlcnkuZWFjaCggb3B0aW9ucy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHtcblx0XHRvYmplY3RbIGZsYWcgXSA9IHRydWU7XG5cdH0gKTtcblx0cmV0dXJuIG9iamVjdDtcbn1cblxuLypcbiAqIENyZWF0ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOlxuICpcbiAqXHRvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93XG4gKlx0XHRcdHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3IgYSBtb3JlIHRyYWRpdGlvbmFsIG9wdGlvbiBvYmplY3RcbiAqXG4gKiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxsIGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZVxuICogXCJmaXJlZFwiIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIFBvc3NpYmxlIG9wdGlvbnM6XG4gKlxuICpcdG9uY2U6XHRcdFx0d2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQgb25jZSAobGlrZSBhIERlZmVycmVkKVxuICpcbiAqXHRtZW1vcnk6XHRcdFx0d2lsbCBrZWVwIHRyYWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFjayBhZGRlZFxuICpcdFx0XHRcdFx0YWZ0ZXIgdGhlIGxpc3QgaGFzIGJlZW4gZmlyZWQgcmlnaHQgYXdheSB3aXRoIHRoZSBsYXRlc3QgXCJtZW1vcml6ZWRcIlxuICpcdFx0XHRcdFx0dmFsdWVzIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdHVuaXF1ZTpcdFx0XHR3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdClcbiAqXG4gKlx0c3RvcE9uRmFsc2U6XHRpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJldHVybnMgZmFsc2VcbiAqXG4gKi9cbmpRdWVyeS5DYWxsYmFja3MgPSBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuXHQvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9ybWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkXG5cdC8vICh3ZSBjaGVjayBpbiBjYWNoZSBmaXJzdClcblx0b3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiID9cblx0XHRjcmVhdGVPcHRpb25zKCBvcHRpb25zICkgOlxuXHRcdGpRdWVyeS5leHRlbmQoIHt9LCBvcHRpb25zICk7XG5cblx0dmFyIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IGlzIGN1cnJlbnRseSBmaXJpbmdcblx0XHRmaXJpbmcsXG5cblx0XHQvLyBMYXN0IGZpcmUgdmFsdWUgZm9yIG5vbi1mb3JnZXR0YWJsZSBsaXN0c1xuXHRcdG1lbW9yeSxcblxuXHRcdC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkXG5cdFx0ZmlyZWQsXG5cblx0XHQvLyBGbGFnIHRvIHByZXZlbnQgZmlyaW5nXG5cdFx0bG9ja2VkLFxuXG5cdFx0Ly8gQWN0dWFsIGNhbGxiYWNrIGxpc3Rcblx0XHRsaXN0ID0gW10sXG5cblx0XHQvLyBRdWV1ZSBvZiBleGVjdXRpb24gZGF0YSBmb3IgcmVwZWF0YWJsZSBsaXN0c1xuXHRcdHF1ZXVlID0gW10sXG5cblx0XHQvLyBJbmRleCBvZiBjdXJyZW50bHkgZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSBhZGQvcmVtb3ZlIGFzIG5lZWRlZClcblx0XHRmaXJpbmdJbmRleCA9IC0xLFxuXG5cdFx0Ly8gRmlyZSBjYWxsYmFja3Ncblx0XHRmaXJlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuZm9yY2Ugc2luZ2xlLWZpcmluZ1xuXHRcdFx0bG9ja2VkID0gbG9ja2VkIHx8IG9wdGlvbnMub25jZTtcblxuXHRcdFx0Ly8gRXhlY3V0ZSBjYWxsYmFja3MgZm9yIGFsbCBwZW5kaW5nIGV4ZWN1dGlvbnMsXG5cdFx0XHQvLyByZXNwZWN0aW5nIGZpcmluZ0luZGV4IG92ZXJyaWRlcyBhbmQgcnVudGltZSBjaGFuZ2VzXG5cdFx0XHRmaXJlZCA9IGZpcmluZyA9IHRydWU7XG5cdFx0XHRmb3IgKCA7IHF1ZXVlLmxlbmd0aDsgZmlyaW5nSW5kZXggPSAtMSApIHtcblx0XHRcdFx0bWVtb3J5ID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdFx0d2hpbGUgKCArK2ZpcmluZ0luZGV4IDwgbGlzdC5sZW5ndGggKSB7XG5cblx0XHRcdFx0XHQvLyBSdW4gY2FsbGJhY2sgYW5kIGNoZWNrIGZvciBlYXJseSB0ZXJtaW5hdGlvblxuXHRcdFx0XHRcdGlmICggbGlzdFsgZmlyaW5nSW5kZXggXS5hcHBseSggbWVtb3J5WyAwIF0sIG1lbW9yeVsgMSBdICkgPT09IGZhbHNlICYmXG5cdFx0XHRcdFx0XHRvcHRpb25zLnN0b3BPbkZhbHNlICkge1xuXG5cdFx0XHRcdFx0XHQvLyBKdW1wIHRvIGVuZCBhbmQgZm9yZ2V0IHRoZSBkYXRhIHNvIC5hZGQgZG9lc24ndCByZS1maXJlXG5cdFx0XHRcdFx0XHRmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoO1xuXHRcdFx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZvcmdldCB0aGUgZGF0YSBpZiB3ZSdyZSBkb25lIHdpdGggaXRcblx0XHRcdGlmICggIW9wdGlvbnMubWVtb3J5ICkge1xuXHRcdFx0XHRtZW1vcnkgPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0ZmlyaW5nID0gZmFsc2U7XG5cblx0XHRcdC8vIENsZWFuIHVwIGlmIHdlJ3JlIGRvbmUgZmlyaW5nIGZvciBnb29kXG5cdFx0XHRpZiAoIGxvY2tlZCApIHtcblxuXHRcdFx0XHQvLyBLZWVwIGFuIGVtcHR5IGxpc3QgaWYgd2UgaGF2ZSBkYXRhIGZvciBmdXR1cmUgYWRkIGNhbGxzXG5cdFx0XHRcdGlmICggbWVtb3J5ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UsIHRoaXMgb2JqZWN0IGlzIHNwZW50XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGlzdCA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0Ly8gQWN0dWFsIENhbGxiYWNrcyBvYmplY3Rcblx0XHRzZWxmID0ge1xuXG5cdFx0XHQvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0XG5cdFx0XHRhZGQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiB3ZSBoYXZlIG1lbW9yeSBmcm9tIGEgcGFzdCBydW4sIHdlIHNob3VsZCBmaXJlIGFmdGVyIGFkZGluZ1xuXHRcdFx0XHRcdGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoIC0gMTtcblx0XHRcdFx0XHRcdHF1ZXVlLnB1c2goIG1lbW9yeSApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCggZnVuY3Rpb24gYWRkKCBhcmdzICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3MsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCAhb3B0aW9ucy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxpc3QucHVzaCggYXJnICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBhcmcgJiYgYXJnLmxlbmd0aCAmJiB0b1R5cGUoIGFyZyApICE9PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gSW5zcGVjdCByZWN1cnNpdmVseVxuXHRcdFx0XHRcdFx0XHRcdGFkZCggYXJnICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHR9ICkoIGFyZ3VtZW50cyApO1xuXG5cdFx0XHRcdFx0aWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0XG5cdFx0XHRyZW1vdmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZWFjaCggYXJndW1lbnRzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdHZhciBpbmRleDtcblx0XHRcdFx0XHR3aGlsZSAoICggaW5kZXggPSBqUXVlcnkuaW5BcnJheSggYXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdGxpc3Quc3BsaWNlKCBpbmRleCwgMSApO1xuXG5cdFx0XHRcdFx0XHQvLyBIYW5kbGUgZmlyaW5nIGluZGV4ZXNcblx0XHRcdFx0XHRcdGlmICggaW5kZXggPD0gZmlyaW5nSW5kZXggKSB7XG5cdFx0XHRcdFx0XHRcdGZpcmluZ0luZGV4LS07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2hlY2sgaWYgYSBnaXZlbiBjYWxsYmFjayBpcyBpbiB0aGUgbGlzdC5cblx0XHRcdC8vIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm4gd2hldGhlciBvciBub3QgbGlzdCBoYXMgY2FsbGJhY2tzIGF0dGFjaGVkLlxuXHRcdFx0aGFzOiBmdW5jdGlvbiggZm4gKSB7XG5cdFx0XHRcdHJldHVybiBmbiA/XG5cdFx0XHRcdFx0alF1ZXJ5LmluQXJyYXkoIGZuLCBsaXN0ICkgPiAtMSA6XG5cdFx0XHRcdFx0bGlzdC5sZW5ndGggPiAwO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdFxuXHRcdFx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRGlzYWJsZSAuZmlyZSBhbmQgLmFkZFxuXHRcdFx0Ly8gQWJvcnQgYW55IGN1cnJlbnQvcGVuZGluZyBleGVjdXRpb25zXG5cdFx0XHQvLyBDbGVhciBhbGwgY2FsbGJhY2tzIGFuZCB2YWx1ZXNcblx0XHRcdGRpc2FibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsb2NrZWQgPSBxdWV1ZSA9IFtdO1xuXHRcdFx0XHRsaXN0ID0gbWVtb3J5ID0gXCJcIjtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0ZGlzYWJsZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gIWxpc3Q7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBEaXNhYmxlIC5maXJlXG5cdFx0XHQvLyBBbHNvIGRpc2FibGUgLmFkZCB1bmxlc3Mgd2UgaGF2ZSBtZW1vcnkgKHNpbmNlIGl0IHdvdWxkIGhhdmUgbm8gZWZmZWN0KVxuXHRcdFx0Ly8gQWJvcnQgYW55IHBlbmRpbmcgZXhlY3V0aW9uc1xuXHRcdFx0bG9jazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxvY2tlZCA9IHF1ZXVlID0gW107XG5cdFx0XHRcdGlmICggIW1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdGxpc3QgPSBtZW1vcnkgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGxvY2tlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWxvY2tlZDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBjb250ZXh0IGFuZCBhcmd1bWVudHNcblx0XHRcdGZpcmVXaXRoOiBmdW5jdGlvbiggY29udGV4dCwgYXJncyApIHtcblx0XHRcdFx0aWYgKCAhbG9ja2VkICkge1xuXHRcdFx0XHRcdGFyZ3MgPSBhcmdzIHx8IFtdO1xuXHRcdFx0XHRcdGFyZ3MgPSBbIGNvbnRleHQsIGFyZ3Muc2xpY2UgPyBhcmdzLnNsaWNlKCkgOiBhcmdzIF07XG5cdFx0XHRcdFx0cXVldWUucHVzaCggYXJncyApO1xuXHRcdFx0XHRcdGlmICggIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDYWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHNlbGYuZmlyZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZVxuXHRcdFx0ZmlyZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gISFmaXJlZDtcblx0XHRcdH1cblx0XHR9O1xuXG5cdHJldHVybiBzZWxmO1xufTtcblxuXG5mdW5jdGlvbiBJZGVudGl0eSggdiApIHtcblx0cmV0dXJuIHY7XG59XG5mdW5jdGlvbiBUaHJvd2VyKCBleCApIHtcblx0dGhyb3cgZXg7XG59XG5cbmZ1bmN0aW9uIGFkb3B0VmFsdWUoIHZhbHVlLCByZXNvbHZlLCByZWplY3QsIG5vVmFsdWUgKSB7XG5cdHZhciBtZXRob2Q7XG5cblx0dHJ5IHtcblxuXHRcdC8vIENoZWNrIGZvciBwcm9taXNlIGFzcGVjdCBmaXJzdCB0byBwcml2aWxlZ2Ugc3luY2hyb25vdXMgYmVoYXZpb3Jcblx0XHRpZiAoIHZhbHVlICYmIGlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUucHJvbWlzZSApICkgKSB7XG5cdFx0XHRtZXRob2QuY2FsbCggdmFsdWUgKS5kb25lKCByZXNvbHZlICkuZmFpbCggcmVqZWN0ICk7XG5cblx0XHQvLyBPdGhlciB0aGVuYWJsZXNcblx0XHR9IGVsc2UgaWYgKCB2YWx1ZSAmJiBpc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnRoZW4gKSApICkge1xuXHRcdFx0bWV0aG9kLmNhbGwoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKTtcblxuXHRcdC8vIE90aGVyIG5vbi10aGVuYWJsZXNcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb250cm9sIGByZXNvbHZlYCBhcmd1bWVudHMgYnkgbGV0dGluZyBBcnJheSNzbGljZSBjYXN0IGJvb2xlYW4gYG5vVmFsdWVgIHRvIGludGVnZXI6XG5cdFx0XHQvLyAqIGZhbHNlOiBbIHZhbHVlIF0uc2xpY2UoIDAgKSA9PiByZXNvbHZlKCB2YWx1ZSApXG5cdFx0XHQvLyAqIHRydWU6IFsgdmFsdWUgXS5zbGljZSggMSApID0+IHJlc29sdmUoKVxuXHRcdFx0cmVzb2x2ZS5hcHBseSggdW5kZWZpbmVkLCBbIHZhbHVlIF0uc2xpY2UoIG5vVmFsdWUgKSApO1xuXHRcdH1cblxuXHQvLyBGb3IgUHJvbWlzZXMvQSssIGNvbnZlcnQgZXhjZXB0aW9ucyBpbnRvIHJlamVjdGlvbnNcblx0Ly8gU2luY2UgalF1ZXJ5LndoZW4gZG9lc24ndCB1bndyYXAgdGhlbmFibGVzLCB3ZSBjYW4gc2tpcCB0aGUgZXh0cmEgY2hlY2tzIGFwcGVhcmluZyBpblxuXHQvLyBEZWZlcnJlZCN0aGVuIHRvIGNvbmRpdGlvbmFsbHkgc3VwcHJlc3MgcmVqZWN0aW9uLlxuXHR9IGNhdGNoICggdmFsdWUgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5XG5cdFx0Ly8gU3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9rZWQgd2l0aG91dCAuY2FsbC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4dFxuXHRcdHJlamVjdC5hcHBseSggdW5kZWZpbmVkLCBbIHZhbHVlIF0gKTtcblx0fVxufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0RGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkge1xuXHRcdHZhciB0dXBsZXMgPSBbXG5cblx0XHRcdFx0Ly8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGNhbGxiYWNrcyxcblx0XHRcdFx0Ly8gLi4uIC50aGVuIGhhbmRsZXJzLCBhcmd1bWVudCBpbmRleCwgW2ZpbmFsIHN0YXRlXVxuXHRcdFx0XHRbIFwibm90aWZ5XCIsIFwicHJvZ3Jlc3NcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwibWVtb3J5XCIgKSwgMiBdLFxuXHRcdFx0XHRbIFwicmVzb2x2ZVwiLCBcImRvbmVcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksIDAsIFwicmVzb2x2ZWRcIiBdLFxuXHRcdFx0XHRbIFwicmVqZWN0XCIsIFwiZmFpbFwiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSwgMSwgXCJyZWplY3RlZFwiIF1cblx0XHRcdF0sXG5cdFx0XHRzdGF0ZSA9IFwicGVuZGluZ1wiLFxuXHRcdFx0cHJvbWlzZSA9IHtcblx0XHRcdFx0c3RhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBzdGF0ZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0YWx3YXlzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblx0XHRcdFx0XCJjYXRjaFwiOiBmdW5jdGlvbiggZm4gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHByb21pc2UudGhlbiggbnVsbCwgZm4gKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdHBpcGU6IGZ1bmN0aW9uKCAvKiBmbkRvbmUsIGZuRmFpbCwgZm5Qcm9ncmVzcyAqLyApIHtcblx0XHRcdFx0XHR2YXIgZm5zID0gYXJndW1lbnRzO1xuXG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE1hcCB0dXBsZXMgKHByb2dyZXNzLCBkb25lLCBmYWlsKSB0byBhcmd1bWVudHMgKGRvbmUsIGZhaWwsIHByb2dyZXNzKVxuXHRcdFx0XHRcdFx0XHR2YXIgZm4gPSBpc0Z1bmN0aW9uKCBmbnNbIHR1cGxlWyA0IF0gXSApICYmIGZuc1sgdHVwbGVbIDQgXSBdO1xuXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLnByb2dyZXNzKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLm5vdGlmeSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5kb25lKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlc29sdmUgfSlcblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQuZmFpbChmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZWplY3QgfSlcblx0XHRcdFx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAxIF0gXSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdFx0XHRcdGlmICggcmV0dXJuZWQgJiYgaXNGdW5jdGlvbiggcmV0dXJuZWQucHJvbWlzZSApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQucHJvbWlzZSgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5wcm9ncmVzcyggbmV3RGVmZXIubm90aWZ5IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZmFpbCggbmV3RGVmZXIucmVqZWN0ICk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXShcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm4gPyBbIHJldHVybmVkIF0gOiBhcmd1bWVudHNcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHRmbnMgPSBudWxsO1xuXHRcdFx0XHRcdH0gKS5wcm9taXNlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoZW46IGZ1bmN0aW9uKCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgb25Qcm9ncmVzcyApIHtcblx0XHRcdFx0XHR2YXIgbWF4RGVwdGggPSAwO1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHJlc29sdmUoIGRlcHRoLCBkZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lhbCApIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBhcmd1bWVudHMsXG5cdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkLCB0aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuM1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElnbm9yZSBkb3VibGUtcmVzb2x1dGlvbiBhdHRlbXB0c1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCA8IG1heERlcHRoICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhhdCwgYXJncyApO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4xXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00OFxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCA9PT0gZGVmZXJyZWQucHJvbWlzZSgpICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCBcIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvblwiICk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEsIDMuNVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTRcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBSZXRyaWV2ZSBgdGhlbmAgb25seSBvbmNlXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGVuID0gcmV0dXJuZWQgJiZcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy40XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTY0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgY2hlY2sgb2JqZWN0cyBhbmQgZnVuY3Rpb25zIGZvciB0aGVuYWJpbGl0eVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoIHR5cGVvZiByZXR1cm5lZCA9PT0gXCJvYmplY3RcIiB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiByZXR1cm5lZCA9PT0gXCJmdW5jdGlvblwiICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQudGhlbjtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGEgcmV0dXJuZWQgdGhlbmFibGVcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggdGhlbiApICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFNwZWNpYWwgcHJvY2Vzc29ycyAobm90aWZ5KSBqdXN0IHdhaXQgZm9yIHJlc29sdXRpb25cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBzcGVjaWFsICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoZW4uY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBhbHNvIGhvb2sgaW50byBwcm9ncmVzc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gLi4uYW5kIGRpc3JlZ2FyZCBvbGRlciByZXNvbHV0aW9uIHZhbHVlc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1heERlcHRoKys7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGVuLmNhbGwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgYWxsIG90aGVyIHJldHVybmVkIHZhbHVlc1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGhhbmRsZXIgIT09IElkZW50aXR5ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncyA9IFsgcmV0dXJuZWQgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFByb2Nlc3MgdGhlIHZhbHVlKHMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIERlZmF1bHQgcHJvY2VzcyBpcyByZXNvbHZlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCggc3BlY2lhbCB8fCBkZWZlcnJlZC5yZXNvbHZlV2l0aCApKCB0aGF0LCBhcmdzICk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgbm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGNhdGNoIGFuZCByZWplY3QgZXhjZXB0aW9uc1xuXHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MgPSBzcGVjaWFsID9cblx0XHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3cgOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayggZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5zdGFja1RyYWNlICk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjQuMVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTYxXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWdub3JlIHBvc3QtcmVzb2x1dGlvbiBleGNlcHRpb25zXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCArIDEgPj0gbWF4RGVwdGggKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBoYW5kbGVyICE9PSBUaHJvd2VyICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzID0gWyBlIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIHRoYXQsIGFyZ3MgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjFcblx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTdcblx0XHRcdFx0XHRcdFx0Ly8gUmUtcmVzb2x2ZSBwcm9taXNlcyBpbW1lZGlhdGVseSB0byBkb2RnZSBmYWxzZSByZWplY3Rpb24gZnJvbVxuXHRcdFx0XHRcdFx0XHQvLyBzdWJzZXF1ZW50IGVycm9yc1xuXHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoICkge1xuXHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIENhbGwgYW4gb3B0aW9uYWwgaG9vayB0byByZWNvcmQgdGhlIHN0YWNrLCBpbiBjYXNlIG9mIGV4Y2VwdGlvblxuXHRcdFx0XHRcdFx0XHRcdC8vIHNpbmNlIGl0J3Mgb3RoZXJ3aXNlIGxvc3Qgd2hlbiBleGVjdXRpb24gZ29lcyBhc3luY1xuXHRcdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHByb2Nlc3Muc3RhY2tUcmFjZSA9IGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2soKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LnNldFRpbWVvdXQoIHByb2Nlc3MgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cblx0XHRcdFx0XHRcdC8vIHByb2dyZXNzX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0aXNGdW5jdGlvbiggb25Qcm9ncmVzcyApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uUHJvZ3Jlc3MgOlxuXHRcdFx0XHRcdFx0XHRcdFx0SWRlbnRpdHksXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIubm90aWZ5V2l0aFxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAxIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uRnVsZmlsbGVkIDpcblx0XHRcdFx0XHRcdFx0XHRcdElkZW50aXR5XG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMiBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0aXNGdW5jdGlvbiggb25SZWplY3RlZCApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uUmVqZWN0ZWQgOlxuXHRcdFx0XHRcdFx0XHRcdFx0VGhyb3dlclxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gKS5wcm9taXNlKCk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gR2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZFxuXHRcdFx0XHQvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBhZGRlZCB0byB0aGUgb2JqZWN0XG5cdFx0XHRcdHByb21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9iaiAhPSBudWxsID8galF1ZXJ5LmV4dGVuZCggb2JqLCBwcm9taXNlICkgOiBwcm9taXNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVmZXJyZWQgPSB7fTtcblxuXHRcdC8vIEFkZCBsaXN0LXNwZWNpZmljIG1ldGhvZHNcblx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cdFx0XHR2YXIgbGlzdCA9IHR1cGxlWyAyIF0sXG5cdFx0XHRcdHN0YXRlU3RyaW5nID0gdHVwbGVbIDUgXTtcblxuXHRcdFx0Ly8gcHJvbWlzZS5wcm9ncmVzcyA9IGxpc3QuYWRkXG5cdFx0XHQvLyBwcm9taXNlLmRvbmUgPSBsaXN0LmFkZFxuXHRcdFx0Ly8gcHJvbWlzZS5mYWlsID0gbGlzdC5hZGRcblx0XHRcdHByb21pc2VbIHR1cGxlWyAxIF0gXSA9IGxpc3QuYWRkO1xuXG5cdFx0XHQvLyBIYW5kbGUgc3RhdGVcblx0XHRcdGlmICggc3RhdGVTdHJpbmcgKSB7XG5cdFx0XHRcdGxpc3QuYWRkKFxuXHRcdFx0XHRcdGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdFx0XHQvLyBzdGF0ZSA9IFwicmVzb2x2ZWRcIiAoaS5lLiwgZnVsZmlsbGVkKVxuXHRcdFx0XHRcdFx0Ly8gc3RhdGUgPSBcInJlamVjdGVkXCJcblx0XHRcdFx0XHRcdHN0YXRlID0gc3RhdGVTdHJpbmc7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIHJlamVjdGVkX2NhbGxiYWNrcy5kaXNhYmxlXG5cdFx0XHRcdFx0Ly8gZnVsZmlsbGVkX2NhbGxiYWNrcy5kaXNhYmxlXG5cdFx0XHRcdFx0dHVwbGVzWyAzIC0gaSBdWyAyIF0uZGlzYWJsZSxcblxuXHRcdFx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmRpc2FibGVcblx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZGlzYWJsZVxuXHRcdFx0XHRcdHR1cGxlc1sgMyAtIGkgXVsgMyBdLmRpc2FibGUsXG5cblx0XHRcdFx0XHQvLyBwcm9ncmVzc19jYWxsYmFja3MubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAyIF0ubG9jayxcblxuXHRcdFx0XHRcdC8vIHByb2dyZXNzX2hhbmRsZXJzLmxvY2tcblx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMyBdLmxvY2tcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gZnVsZmlsbGVkX2hhbmRsZXJzLmZpcmVcblx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmZpcmVcblx0XHRcdGxpc3QuYWRkKCB0dXBsZVsgMyBdLmZpcmUgKTtcblxuXHRcdFx0Ly8gZGVmZXJyZWQubm90aWZ5ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLm5vdGlmeVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlc29sdmVXaXRoKC4uLikgfVxuXHRcdFx0Ly8gZGVmZXJyZWQucmVqZWN0ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlamVjdFdpdGgoLi4uKSB9XG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXSggdGhpcyA9PT0gZGVmZXJyZWQgPyB1bmRlZmluZWQgOiB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnlXaXRoID0gbGlzdC5maXJlV2l0aFxuXHRcdFx0Ly8gZGVmZXJyZWQucmVzb2x2ZVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3RXaXRoID0gbGlzdC5maXJlV2l0aFxuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdID0gbGlzdC5maXJlV2l0aDtcblx0XHR9ICk7XG5cblx0XHQvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2Vcblx0XHRwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7XG5cblx0XHQvLyBDYWxsIGdpdmVuIGZ1bmMgaWYgYW55XG5cdFx0aWYgKCBmdW5jICkge1xuXHRcdFx0ZnVuYy5jYWxsKCBkZWZlcnJlZCwgZGVmZXJyZWQgKTtcblx0XHR9XG5cblx0XHQvLyBBbGwgZG9uZSFcblx0XHRyZXR1cm4gZGVmZXJyZWQ7XG5cdH0sXG5cblx0Ly8gRGVmZXJyZWQgaGVscGVyXG5cdHdoZW46IGZ1bmN0aW9uKCBzaW5nbGVWYWx1ZSApIHtcblx0XHR2YXJcblxuXHRcdFx0Ly8gY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzXG5cdFx0XHRyZW1haW5pbmcgPSBhcmd1bWVudHMubGVuZ3RoLFxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bnByb2Nlc3NlZCBhcmd1bWVudHNcblx0XHRcdGkgPSByZW1haW5pbmcsXG5cblx0XHRcdC8vIHN1Ym9yZGluYXRlIGZ1bGZpbGxtZW50IGRhdGFcblx0XHRcdHJlc29sdmVDb250ZXh0cyA9IEFycmF5KCBpICksXG5cdFx0XHRyZXNvbHZlVmFsdWVzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksXG5cblx0XHRcdC8vIHRoZSBtYXN0ZXIgRGVmZXJyZWRcblx0XHRcdG1hc3RlciA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXG5cdFx0XHQvLyBzdWJvcmRpbmF0ZSBjYWxsYmFjayBmYWN0b3J5XG5cdFx0XHR1cGRhdGVGdW5jID0gZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZUNvbnRleHRzWyBpIF0gPSB0aGlzO1xuXHRcdFx0XHRcdHJlc29sdmVWYWx1ZXNbIGkgXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2UuY2FsbCggYXJndW1lbnRzICkgOiB2YWx1ZTtcblx0XHRcdFx0XHRpZiAoICEoIC0tcmVtYWluaW5nICkgKSB7XG5cdFx0XHRcdFx0XHRtYXN0ZXIucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH07XG5cblx0XHQvLyBTaW5nbGUtIGFuZCBlbXB0eSBhcmd1bWVudHMgYXJlIGFkb3B0ZWQgbGlrZSBQcm9taXNlLnJlc29sdmVcblx0XHRpZiAoIHJlbWFpbmluZyA8PSAxICkge1xuXHRcdFx0YWRvcHRWYWx1ZSggc2luZ2xlVmFsdWUsIG1hc3Rlci5kb25lKCB1cGRhdGVGdW5jKCBpICkgKS5yZXNvbHZlLCBtYXN0ZXIucmVqZWN0LFxuXHRcdFx0XHQhcmVtYWluaW5nICk7XG5cblx0XHRcdC8vIFVzZSAudGhlbigpIHRvIHVud3JhcCBzZWNvbmRhcnkgdGhlbmFibGVzIChjZi4gZ2gtMzAwMClcblx0XHRcdGlmICggbWFzdGVyLnN0YXRlKCkgPT09IFwicGVuZGluZ1wiIHx8XG5cdFx0XHRcdGlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiByZXNvbHZlVmFsdWVzWyBpIF0udGhlbiApICkge1xuXG5cdFx0XHRcdHJldHVybiBtYXN0ZXIudGhlbigpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgYWdncmVnYXRlZCBsaWtlIFByb21pc2UuYWxsIGFycmF5IGVsZW1lbnRzXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCByZXNvbHZlVmFsdWVzWyBpIF0sIHVwZGF0ZUZ1bmMoIGkgKSwgbWFzdGVyLnJlamVjdCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBtYXN0ZXIucHJvbWlzZSgpO1xuXHR9XG59ICk7XG5cblxuLy8gVGhlc2UgdXN1YWxseSBpbmRpY2F0ZSBhIHByb2dyYW1tZXIgbWlzdGFrZSBkdXJpbmcgZGV2ZWxvcG1lbnQsXG4vLyB3YXJuIGFib3V0IHRoZW0gQVNBUCByYXRoZXIgdGhhbiBzd2FsbG93aW5nIHRoZW0gYnkgZGVmYXVsdC5cbnZhciByZXJyb3JOYW1lcyA9IC9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO1xuXG5qUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayA9IGZ1bmN0aW9uKCBlcnJvciwgc3RhY2sgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgOCAtIDkgb25seVxuXHQvLyBDb25zb2xlIGV4aXN0cyB3aGVuIGRldiB0b29scyBhcmUgb3Blbiwgd2hpY2ggY2FuIGhhcHBlbiBhdCBhbnkgdGltZVxuXHRpZiAoIHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLndhcm4gJiYgZXJyb3IgJiYgcmVycm9yTmFtZXMudGVzdCggZXJyb3IubmFtZSApICkge1xuXHRcdHdpbmRvdy5jb25zb2xlLndhcm4oIFwialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogXCIgKyBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgc3RhY2sgKTtcblx0fVxufTtcblxuXG5cblxualF1ZXJ5LnJlYWR5RXhjZXB0aW9uID0gZnVuY3Rpb24oIGVycm9yICkge1xuXHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0dGhyb3cgZXJyb3I7XG5cdH0gKTtcbn07XG5cblxuXG5cbi8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeVxudmFyIHJlYWR5TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpO1xuXG5qUXVlcnkuZm4ucmVhZHkgPSBmdW5jdGlvbiggZm4gKSB7XG5cblx0cmVhZHlMaXN0XG5cdFx0LnRoZW4oIGZuIClcblxuXHRcdC8vIFdyYXAgalF1ZXJ5LnJlYWR5RXhjZXB0aW9uIGluIGEgZnVuY3Rpb24gc28gdGhhdCB0aGUgbG9va3VwXG5cdFx0Ly8gaGFwcGVucyBhdCB0aGUgdGltZSBvZiBlcnJvciBoYW5kbGluZyBpbnN0ZWFkIG9mIGNhbGxiYWNrXG5cdFx0Ly8gcmVnaXN0cmF0aW9uLlxuXHRcdC5jYXRjaCggZnVuY3Rpb24oIGVycm9yICkge1xuXHRcdFx0alF1ZXJ5LnJlYWR5RXhjZXB0aW9uKCBlcnJvciApO1xuXHRcdH0gKTtcblxuXHRyZXR1cm4gdGhpcztcbn07XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLlxuXHRpc1JlYWR5OiBmYWxzZSxcblxuXHQvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlXG5cdC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxXG5cdHJlYWR5V2FpdDogMSxcblxuXHQvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5XG5cdHJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHtcblxuXHRcdC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHlcblx0XHRpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHlcblx0XHRqUXVlcnkuaXNSZWFkeSA9IHRydWU7XG5cblx0XHQvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZVxuXHRcdGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGVcblx0XHRyZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LnJlYWR5LnRoZW4gPSByZWFkeUxpc3QudGhlbjtcblxuLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgYW5kIHNlbGYgY2xlYW51cCBtZXRob2RcbmZ1bmN0aW9uIGNvbXBsZXRlZCgpIHtcblx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCApO1xuXHRqUXVlcnkucmVhZHkoKTtcbn1cblxuLy8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWRcbi8vIGFmdGVyIHRoZSBicm93c2VyIGV2ZW50IGhhcyBhbHJlYWR5IG9jY3VycmVkLlxuLy8gU3VwcG9ydDogSUUgPD05IC0gMTAgb25seVxuLy8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgXCJpbnRlcmFjdGl2ZVwiIHRvbyBzb29uXG5pZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIiB8fFxuXHQoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09IFwibG9hZGluZ1wiICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgKSApIHtcblxuXHQvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHlcblx0d2luZG93LnNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApO1xuXG59IGVsc2Uge1xuXG5cdC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2tcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXG5cdC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrXG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG59XG5cblxuXG5cbi8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIG9mIGEgY29sbGVjdGlvblxuLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uXG52YXIgYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gZWxlbXMubGVuZ3RoLFxuXHRcdGJ1bGsgPSBrZXkgPT0gbnVsbDtcblxuXHQvLyBTZXRzIG1hbnkgdmFsdWVzXG5cdGlmICggdG9UeXBlKCBrZXkgKSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXHRcdGZvciAoIGkgaW4ga2V5ICkge1xuXHRcdFx0YWNjZXNzKCBlbGVtcywgZm4sIGksIGtleVsgaSBdLCB0cnVlLCBlbXB0eUdldCwgcmF3ICk7XG5cdFx0fVxuXG5cdC8vIFNldHMgb25lIHZhbHVlXG5cdH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblxuXHRcdGlmICggIWlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyYXcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICggYnVsayApIHtcblxuXHRcdFx0Ly8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0XG5cdFx0XHRpZiAoIHJhdyApIHtcblx0XHRcdFx0Zm4uY2FsbCggZWxlbXMsIHZhbHVlICk7XG5cdFx0XHRcdGZuID0gbnVsbDtcblxuXHRcdFx0Ly8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnVsayA9IGZuO1xuXHRcdFx0XHRmbiA9IGZ1bmN0aW9uKCBlbGVtLCBrZXksIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0Zm4oXG5cdFx0XHRcdFx0ZWxlbXNbIGkgXSwga2V5LCByYXcgP1xuXHRcdFx0XHRcdHZhbHVlIDpcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbiggZWxlbXNbIGkgXSwga2V5ICkgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggY2hhaW5hYmxlICkge1xuXHRcdHJldHVybiBlbGVtcztcblx0fVxuXG5cdC8vIEdldHNcblx0aWYgKCBidWxrICkge1xuXHRcdHJldHVybiBmbi5jYWxsKCBlbGVtcyApO1xuXHR9XG5cblx0cmV0dXJuIGxlbiA/IGZuKCBlbGVtc1sgMCBdLCBrZXkgKSA6IGVtcHR5R2V0O1xufTtcblxuXG4vLyBNYXRjaGVzIGRhc2hlZCBzdHJpbmcgZm9yIGNhbWVsaXppbmdcbnZhciBybXNQcmVmaXggPSAvXi1tcy0vLFxuXHRyZGFzaEFscGhhID0gLy0oW2Etel0pL2c7XG5cbi8vIFVzZWQgYnkgY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxhY2UoKVxuZnVuY3Rpb24gZmNhbWVsQ2FzZSggYWxsLCBsZXR0ZXIgKSB7XG5cdHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcbn1cblxuLy8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlc1xuLy8gU3VwcG9ydDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxNVxuLy8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKVxuZnVuY3Rpb24gY2FtZWxDYXNlKCBzdHJpbmcgKSB7XG5cdHJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCBcIm1zLVwiICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSApO1xufVxudmFyIGFjY2VwdERhdGEgPSBmdW5jdGlvbiggb3duZXIgKSB7XG5cblx0Ly8gQWNjZXB0cyBvbmx5OlxuXHQvLyAgLSBOb2RlXG5cdC8vICAgIC0gTm9kZS5FTEVNRU5UX05PREVcblx0Ly8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREVcblx0Ly8gIC0gT2JqZWN0XG5cdC8vICAgIC0gQW55XG5cdHJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2RlVHlwZSA9PT0gOSB8fCAhKCArb3duZXIubm9kZVR5cGUgKTtcbn07XG5cblxuXG5cbmZ1bmN0aW9uIERhdGEoKSB7XG5cdHRoaXMuZXhwYW5kbyA9IGpRdWVyeS5leHBhbmRvICsgRGF0YS51aWQrKztcbn1cblxuRGF0YS51aWQgPSAxO1xuXG5EYXRhLnByb3RvdHlwZSA9IHtcblxuXHRjYWNoZTogZnVuY3Rpb24oIG93bmVyICkge1xuXG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIG93bmVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIGNhY2hlXG5cdFx0dmFyIHZhbHVlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXG5cdFx0Ly8gSWYgbm90LCBjcmVhdGUgb25lXG5cdFx0aWYgKCAhdmFsdWUgKSB7XG5cdFx0XHR2YWx1ZSA9IHt9O1xuXG5cdFx0XHQvLyBXZSBjYW4gYWNjZXB0IGRhdGEgZm9yIG5vbi1lbGVtZW50IG5vZGVzIGluIG1vZGVybiBicm93c2Vycyxcblx0XHRcdC8vIGJ1dCB3ZSBzaG91bGQgbm90LCBzZWUgIzgzMzUuXG5cdFx0XHQvLyBBbHdheXMgcmV0dXJuIGFuIGVtcHR5IG9iamVjdC5cblx0XHRcdGlmICggYWNjZXB0RGF0YSggb3duZXIgKSApIHtcblxuXHRcdFx0XHQvLyBJZiBpdCBpcyBhIG5vZGUgdW5saWtlbHkgdG8gYmUgc3RyaW5naWZ5LWVkIG9yIGxvb3BlZCBvdmVyXG5cdFx0XHRcdC8vIHVzZSBwbGFpbiBhc3NpZ25tZW50XG5cdFx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdmFsdWU7XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHNlY3VyZSBpdCBpbiBhIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5XG5cdFx0XHRcdC8vIGNvbmZpZ3VyYWJsZSBtdXN0IGJlIHRydWUgdG8gYWxsb3cgdGhlIHByb3BlcnR5IHRvIGJlXG5cdFx0XHRcdC8vIGRlbGV0ZWQgd2hlbiBkYXRhIGlzIHJlbW92ZWRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIG93bmVyLCB0aGlzLmV4cGFuZG8sIHtcblx0XHRcdFx0XHRcdHZhbHVlOiB2YWx1ZSxcblx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB2YWx1ZTtcblx0fSxcblx0c2V0OiBmdW5jdGlvbiggb3duZXIsIGRhdGEsIHZhbHVlICkge1xuXHRcdHZhciBwcm9wLFxuXHRcdFx0Y2FjaGUgPSB0aGlzLmNhY2hlKCBvd25lciApO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCBrZXksIHZhbHVlIF0gYXJnc1xuXHRcdC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1Nylcblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0Y2FjaGVbIGNhbWVsQ2FzZSggZGF0YSApIF0gPSB2YWx1ZTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwgeyBwcm9wZXJ0aWVzIH0gXSBhcmdzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQ29weSB0aGUgcHJvcGVydGllcyBvbmUtYnktb25lIHRvIHRoZSBjYWNoZSBvYmplY3Rcblx0XHRcdGZvciAoIHByb3AgaW4gZGF0YSApIHtcblx0XHRcdFx0Y2FjaGVbIGNhbWVsQ2FzZSggcHJvcCApIF0gPSBkYXRhWyBwcm9wIF07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjYWNoZTtcblx0fSxcblx0Z2V0OiBmdW5jdGlvbiggb3duZXIsIGtleSApIHtcblx0XHRyZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcy5jYWNoZSggb3duZXIgKSA6XG5cblx0XHRcdC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1Nylcblx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBhbmRvIF1bIGNhbWVsQ2FzZSgga2V5ICkgXTtcblx0fSxcblx0YWNjZXNzOiBmdW5jdGlvbiggb3duZXIsIGtleSwgdmFsdWUgKSB7XG5cblx0XHQvLyBJbiBjYXNlcyB3aGVyZSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIE5vIGtleSB3YXMgc3BlY2lmaWVkXG5cdFx0Ly8gICAyLiBBIHN0cmluZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVkXG5cdFx0Ly9cblx0XHQvLyBUYWtlIHRoZSBcInJlYWRcIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhvZCB0byBkZXRlcm1pbmVcblx0XHQvLyB3aGljaCB2YWx1ZSB0byByZXR1cm4sIHJlc3BlY3RpdmVseSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUgb2JqZWN0XG5cdFx0Ly8gICAyLiBUaGUgZGF0YSBzdG9yZWQgYXQgdGhlIGtleVxuXHRcdC8vXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fFxuXHRcdFx0XHQoICgga2V5ICYmIHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIgKSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgKSB7XG5cblx0XHRcdHJldHVybiB0aGlzLmdldCggb3duZXIsIGtleSApO1xuXHRcdH1cblxuXHRcdC8vIFdoZW4gdGhlIGtleSBpcyBub3QgYSBzdHJpbmcsIG9yIGJvdGggYSBrZXkgYW5kIHZhbHVlXG5cdFx0Ly8gYXJlIHNwZWNpZmllZCwgc2V0IG9yIGV4dGVuZCAoZXhpc3Rpbmcgb2JqZWN0cykgd2l0aCBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIEFuIG9iamVjdCBvZiBwcm9wZXJ0aWVzXG5cdFx0Ly8gICAyLiBBIGtleSBhbmQgdmFsdWVcblx0XHQvL1xuXHRcdHRoaXMuc2V0KCBvd25lciwga2V5LCB2YWx1ZSApO1xuXG5cdFx0Ly8gU2luY2UgdGhlIFwic2V0XCIgcGF0aCBjYW4gaGF2ZSB0d28gcG9zc2libGUgZW50cnkgcG9pbnRzXG5cdFx0Ly8gcmV0dXJuIHRoZSBleHBlY3RlZCBkYXRhIGJhc2VkIG9uIHdoaWNoIHBhdGggd2FzIHRha2VuWypdXG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGtleTtcblx0fSxcblx0cmVtb3ZlOiBmdW5jdGlvbiggb3duZXIsIGtleSApIHtcblx0XHR2YXIgaSxcblx0XHRcdGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXG5cdFx0aWYgKCBjYWNoZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICgga2V5ICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdC8vIFN1cHBvcnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBrZXlzXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIGtleSApICkge1xuXG5cdFx0XHRcdC8vIElmIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzLi4uXG5cdFx0XHRcdC8vIFdlIGFsd2F5cyBzZXQgY2FtZWxDYXNlIGtleXMsIHNvIHJlbW92ZSB0aGF0LlxuXHRcdFx0XHRrZXkgPSBrZXkubWFwKCBjYW1lbENhc2UgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGtleSA9IGNhbWVsQ2FzZSgga2V5ICk7XG5cblx0XHRcdFx0Ly8gSWYgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LlxuXHRcdFx0XHQvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJheSBieSBtYXRjaGluZyBub24td2hpdGVzcGFjZVxuXHRcdFx0XHRrZXkgPSBrZXkgaW4gY2FjaGUgP1xuXHRcdFx0XHRcdFsga2V5IF0gOlxuXHRcdFx0XHRcdCgga2V5Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10gKTtcblx0XHRcdH1cblxuXHRcdFx0aSA9IGtleS5sZW5ndGg7XG5cblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRkZWxldGUgY2FjaGVbIGtleVsgaSBdIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIHRoZXJlJ3Mgbm8gbW9yZSBkYXRhXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fCBqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKSApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NVxuXHRcdFx0Ly8gV2Via2l0ICYgQmxpbmsgcGVyZm9ybWFuY2Ugc3VmZmVycyB3aGVuIGRlbGV0aW5nIHByb3BlcnRpZXNcblx0XHRcdC8vIGZyb20gRE9NIG5vZGVzLCBzbyBzZXQgdG8gdW5kZWZpbmVkIGluc3RlYWRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM3ODYwNyAoYnVnIHJlc3RyaWN0ZWQpXG5cdFx0XHRpZiAoIG93bmVyLm5vZGVUeXBlICkge1xuXHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWxldGUgb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0aGFzRGF0YTogZnVuY3Rpb24oIG93bmVyICkge1xuXHRcdHZhciBjYWNoZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblx0XHRyZXR1cm4gY2FjaGUgIT09IHVuZGVmaW5lZCAmJiAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICk7XG5cdH1cbn07XG52YXIgZGF0YVByaXYgPSBuZXcgRGF0YSgpO1xuXG52YXIgZGF0YVVzZXIgPSBuZXcgRGF0YSgpO1xuXG5cblxuLy9cdEltcGxlbWVudGF0aW9uIFN1bW1hcnlcbi8vXG4vL1x0MS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBhbmQgc2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaFxuLy9cdDIuIEltcHJvdmUgdGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZVxuLy9cdFx0cGF0aHMgdG8gYSBzaW5nbGUgbWVjaGFuaXNtLlxuLy9cdDMuIFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgXCJwcml2YXRlXCIgYW5kIFwidXNlclwiIGRhdGEuXG4vL1x0NC4gX05ldmVyXyBleHBvc2UgXCJwcml2YXRlXCIgZGF0YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVEYXRhKVxuLy9cdDUuIEF2b2lkIGV4cG9zaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb24gdXNlciBvYmplY3RzIChlZy4gZXhwYW5kbyBwcm9wZXJ0aWVzKVxuLy9cdDYuIFByb3ZpZGUgYSBjbGVhciBwYXRoIGZvciBpbXBsZW1lbnRhdGlvbiB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNFxuXG52YXIgcmJyYWNlID0gL14oPzpcXHtbXFx3XFxXXSpcXH18XFxbW1xcd1xcV10qXFxdKSQvLFxuXHRybXVsdGlEYXNoID0gL1tBLVpdL2c7XG5cbmZ1bmN0aW9uIGdldERhdGEoIGRhdGEgKSB7XG5cdGlmICggZGF0YSA9PT0gXCJ0cnVlXCIgKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRpZiAoIGRhdGEgPT09IFwiZmFsc2VcIiApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRpZiAoIGRhdGEgPT09IFwibnVsbFwiICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Ly8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmdcblx0aWYgKCBkYXRhID09PSArZGF0YSArIFwiXCIgKSB7XG5cdFx0cmV0dXJuICtkYXRhO1xuXHR9XG5cblx0aWYgKCByYnJhY2UudGVzdCggZGF0YSApICkge1xuXHRcdHJldHVybiBKU09OLnBhcnNlKCBkYXRhICk7XG5cdH1cblxuXHRyZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHtcblx0dmFyIG5hbWU7XG5cblx0Ly8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueVxuXHQvLyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGVcblx0aWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRuYW1lID0gXCJkYXRhLVwiICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsIFwiLSQmXCIgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApO1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRhdGEgPSBnZXREYXRhKCBkYXRhICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHt9XG5cblx0XHRcdC8vIE1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlclxuXHRcdFx0ZGF0YVVzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGRhdGE7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aGFzRGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRhdGFVc2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICk7XG5cdH0sXG5cblx0ZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFVc2VyLmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApO1xuXHR9LFxuXG5cdHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFVc2VyLnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9LFxuXG5cdC8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxscyB0byBfZGF0YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxhY2VkXG5cdC8vIHdpdGggZGlyZWN0IGNhbGxzIHRvIGRhdGFQcml2IG1ldGhvZHMsIHRoZXNlIGNhbiBiZSBkZXByZWNhdGVkLlxuXHRfZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApO1xuXHR9LFxuXG5cdF9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIG5hbWUgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRhdGE6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHZhciBpLCBuYW1lLCBkYXRhLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdGF0dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7XG5cblx0XHQvLyBHZXRzIGFsbCB2YWx1ZXNcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCB0aGlzLmxlbmd0aCApIHtcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSApO1xuXG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAhZGF0YVByaXYuZ2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiICkgKSB7XG5cdFx0XHRcdFx0aSA9IGF0dHJzLmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0XHRcdFx0Ly8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICgjMTQ4OTQpXG5cdFx0XHRcdFx0XHRpZiAoIGF0dHJzWyBpIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG5hbWUgPSBhdHRyc1sgaSBdLm5hbWU7XG5cdFx0XHRcdFx0XHRcdGlmICggbmFtZS5pbmRleE9mKCBcImRhdGEtXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lID0gY2FtZWxDYXNlKCBuYW1lLnNsaWNlKCA1ICkgKTtcblx0XHRcdFx0XHRcdFx0XHRkYXRhQXR0ciggZWxlbSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0cyBtdWx0aXBsZSB2YWx1ZXNcblx0XHRpZiAoIHR5cGVvZiBrZXkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZGF0YTtcblxuXHRcdFx0Ly8gVGhlIGNhbGxpbmcgalF1ZXJ5IG9iamVjdCAoZWxlbWVudCBtYXRjaGVzKSBpcyBub3QgZW1wdHlcblx0XHRcdC8vIChhbmQgdGhlcmVmb3JlIGhhcyBhbiBlbGVtZW50IGFwcGVhcnMgYXQgdGhpc1sgMCBdKSBhbmQgdGhlXG5cdFx0XHQvLyBgdmFsdWVgIHBhcmFtZXRlciB3YXMgbm90IHVuZGVmaW5lZC4gQW4gZW1wdHkgalF1ZXJ5IG9iamVjdFxuXHRcdFx0Ly8gd2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgZm9yIGVsZW0gPSB0aGlzWyAwIF0gd2hpY2ggd2lsbFxuXHRcdFx0Ly8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGF0dGVtcHQgdG8gcmVhZCBhIGRhdGEgY2FjaGUgaXMgbWFkZS5cblx0XHRcdGlmICggZWxlbSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgY2FjaGVcblx0XHRcdFx0Ly8gVGhlIGtleSB3aWxsIGFsd2F5cyBiZSBjYW1lbENhc2VkIGluIERhdGFcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBcImRpc2NvdmVyXCIgdGhlIGRhdGEgaW5cblx0XHRcdFx0Ly8gSFRNTDUgY3VzdG9tIGRhdGEtKiBhdHRyc1xuXHRcdFx0XHRkYXRhID0gZGF0YUF0dHIoIGVsZW0sIGtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFdlIHRyaWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRhdGEgZG9lc24ndCBleGlzdC5cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgdGhlIGRhdGEuLi5cblx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHN0b3JlIHRoZSBjYW1lbENhc2VkIGtleVxuXHRcdFx0XHRkYXRhVXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUgKTtcblx0XHRcdH0gKTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGF0YVVzZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgcXVldWU7XG5cblx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHR0eXBlID0gKCB0eXBlIHx8IFwiZnhcIiApICsgXCJxdWV1ZVwiO1xuXHRcdFx0cXVldWUgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0Ly8gU3BlZWQgdXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMganVzdCBhIGxvb2t1cFxuXHRcdFx0aWYgKCBkYXRhICkge1xuXHRcdFx0XHRpZiAoICFxdWV1ZSB8fCBBcnJheS5pc0FycmF5KCBkYXRhICkgKSB7XG5cdFx0XHRcdFx0cXVldWUgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEgKSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHF1ZXVlLnB1c2goIGRhdGEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHF1ZXVlIHx8IFtdO1xuXHRcdH1cblx0fSxcblxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHtcblx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIGVsZW0sIHR5cGUgKSxcblx0XHRcdHN0YXJ0TGVuZ3RoID0gcXVldWUubGVuZ3RoLFxuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpLFxuXHRcdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIHR5cGUgKSxcblx0XHRcdG5leHQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUgKTtcblx0XHRcdH07XG5cblx0XHQvLyBJZiB0aGUgZnggcXVldWUgaXMgZGVxdWV1ZWQsIGFsd2F5cyByZW1vdmUgdGhlIHByb2dyZXNzIHNlbnRpbmVsXG5cdFx0aWYgKCBmbiA9PT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0XHRzdGFydExlbmd0aC0tO1xuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cblx0XHRcdC8vIEFkZCBhIHByb2dyZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20gYmVpbmdcblx0XHRcdC8vIGF1dG9tYXRpY2FsbHkgZGVxdWV1ZWRcblx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICkge1xuXHRcdFx0XHRxdWV1ZS51bnNoaWZ0KCBcImlucHJvZ3Jlc3NcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDbGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uXG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdGZuLmNhbGwoIGVsZW0sIG5leHQsIGhvb2tzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhc3RhcnRMZW5ndGggJiYgaG9va3MgKSB7XG5cdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8vIE5vdCBwdWJsaWMgLSBnZW5lcmF0ZSBhIHF1ZXVlSG9va3Mgb2JqZWN0LCBvciByZXR1cm4gdGhlIGN1cnJlbnQgb25lXG5cdF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHtcblx0XHR2YXIga2V5ID0gdHlwZSArIFwicXVldWVIb29rc1wiO1xuXHRcdHJldHVybiBkYXRhUHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQcml2LmFjY2VzcyggZWxlbSwga2V5LCB7XG5cdFx0XHRlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICkuYWRkKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBbIHR5cGUgKyBcInF1ZXVlXCIsIGtleSBdICk7XG5cdFx0XHR9IClcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRxdWV1ZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHNldHRlciA9IDI7XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZGF0YSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gXCJmeFwiO1xuXHRcdFx0c2V0dGVyLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1sgMCBdLCB0eXBlICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRhdGEgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzIDpcblx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlXG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApO1xuXG5cdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICYmIHF1ZXVlWyAwIF0gIT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0fSxcblx0ZGVxdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdH0gKTtcblx0fSxcblx0Y2xlYXJRdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHR9LFxuXG5cdC8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBjZXJ0YWluIHR5cGVcblx0Ly8gYXJlIGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpXG5cdHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7XG5cdFx0dmFyIHRtcCxcblx0XHRcdGNvdW50ID0gMSxcblx0XHRcdGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRlbGVtZW50cyA9IHRoaXMsXG5cdFx0XHRpID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRyZXNvbHZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggISggLS1jb3VudCApICkge1xuXHRcdFx0XHRcdGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0b2JqID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG1wID0gZGF0YVByaXYuZ2V0KCBlbGVtZW50c1sgaSBdLCB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgKTtcblx0XHRcdGlmICggdG1wICYmIHRtcC5lbXB0eSApIHtcblx0XHRcdFx0Y291bnQrKztcblx0XHRcdFx0dG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXNvbHZlKCk7XG5cdFx0cmV0dXJuIGRlZmVyLnByb21pc2UoIG9iaiApO1xuXHR9XG59ICk7XG52YXIgcG51bSA9ICggL1srLV0/KD86XFxkKlxcLnwpXFxkKyg/OltlRV1bKy1dP1xcZCt8KS8gKS5zb3VyY2U7XG5cbnZhciByY3NzTnVtID0gbmV3IFJlZ0V4cCggXCJeKD86KFsrLV0pPXwpKFwiICsgcG51bSArIFwiKShbYS16JV0qKSRcIiwgXCJpXCIgKTtcblxuXG52YXIgY3NzRXhwYW5kID0gWyBcIlRvcFwiLCBcIlJpZ2h0XCIsIFwiQm90dG9tXCIsIFwiTGVmdFwiIF07XG5cbnZhciBpc0hpZGRlbldpdGhpblRyZWUgPSBmdW5jdGlvbiggZWxlbSwgZWwgKSB7XG5cblx0XHQvLyBpc0hpZGRlbldpdGhpblRyZWUgbWlnaHQgYmUgY2FsbGVkIGZyb20galF1ZXJ5I2ZpbHRlciBmdW5jdGlvbjtcblx0XHQvLyBpbiB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnRcblx0XHRlbGVtID0gZWwgfHwgZWxlbTtcblxuXHRcdC8vIElubGluZSBzdHlsZSB0cnVtcHMgYWxsXG5cdFx0cmV0dXJuIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJub25lXCIgfHxcblx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJlxuXG5cdFx0XHQvLyBPdGhlcndpc2UsIGNoZWNrIGNvbXB1dGVkIHN0eWxlXG5cdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDMgLSA0NVxuXHRcdFx0Ly8gRGlzY29ubmVjdGVkIGVsZW1lbnRzIGNhbiBoYXZlIGNvbXB1dGVkIGRpc3BsYXk6IG5vbmUsIHNvIGZpcnN0IGNvbmZpcm0gdGhhdCBlbGVtIGlzXG5cdFx0XHQvLyBpbiB0aGUgZG9jdW1lbnQuXG5cdFx0XHRqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICYmXG5cblx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgPT09IFwibm9uZVwiO1xuXHR9O1xuXG52YXIgc3dhcCA9IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjaywgYXJncyApIHtcblx0dmFyIHJldCwgbmFtZSxcblx0XHRvbGQgPSB7fTtcblxuXHQvLyBSZW1lbWJlciB0aGUgb2xkIHZhbHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdG9sZFsgbmFtZSBdID0gZWxlbS5zdHlsZVsgbmFtZSBdO1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTtcblx0fVxuXG5cdHJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBhcmdzIHx8IFtdICk7XG5cblx0Ly8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTtcblx0fVxuXG5cdHJldHVybiByZXQ7XG59O1xuXG5cblxuXG5mdW5jdGlvbiBhZGp1c3RDU1MoIGVsZW0sIHByb3AsIHZhbHVlUGFydHMsIHR3ZWVuICkge1xuXHR2YXIgYWRqdXN0ZWQsIHNjYWxlLFxuXHRcdG1heEl0ZXJhdGlvbnMgPSAyMCxcblx0XHRjdXJyZW50VmFsdWUgPSB0d2VlbiA/XG5cdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuLmN1cigpO1xuXHRcdFx0fSA6XG5cdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AsIFwiXCIgKTtcblx0XHRcdH0sXG5cdFx0aW5pdGlhbCA9IGN1cnJlbnRWYWx1ZSgpLFxuXHRcdHVuaXQgPSB2YWx1ZVBhcnRzICYmIHZhbHVlUGFydHNbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKSxcblxuXHRcdC8vIFN0YXJ0aW5nIHZhbHVlIGNvbXB1dGF0aW9uIGlzIHJlcXVpcmVkIGZvciBwb3RlbnRpYWwgdW5pdCBtaXNtYXRjaGVzXG5cdFx0aW5pdGlhbEluVW5pdCA9ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdIHx8IHVuaXQgIT09IFwicHhcIiAmJiAraW5pdGlhbCApICYmXG5cdFx0XHRyY3NzTnVtLmV4ZWMoIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AgKSApO1xuXG5cdGlmICggaW5pdGlhbEluVW5pdCAmJiBpbml0aWFsSW5Vbml0WyAzIF0gIT09IHVuaXQgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NTRcblx0XHQvLyBIYWx2ZSB0aGUgaXRlcmF0aW9uIHRhcmdldCB2YWx1ZSB0byBwcmV2ZW50IGludGVyZmVyZW5jZSBmcm9tIENTUyB1cHBlciBib3VuZHMgKGdoLTIxNDQpXG5cdFx0aW5pdGlhbCA9IGluaXRpYWwgLyAyO1xuXG5cdFx0Ly8gVHJ1c3QgdW5pdHMgcmVwb3J0ZWQgYnkgalF1ZXJ5LmNzc1xuXHRcdHVuaXQgPSB1bml0IHx8IGluaXRpYWxJblVuaXRbIDMgXTtcblxuXHRcdC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBvaW50XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsIHx8IDE7XG5cblx0XHR3aGlsZSAoIG1heEl0ZXJhdGlvbnMtLSApIHtcblxuXHRcdFx0Ly8gRXZhbHVhdGUgYW5kIHVwZGF0ZSBvdXIgYmVzdCBndWVzcyAoZG91YmxpbmcgZ3Vlc3NlcyB0aGF0IHplcm8gb3V0KS5cblx0XHRcdC8vIEZpbmlzaCBpZiB0aGUgc2NhbGUgZXF1YWxzIG9yIGNyb3NzZXMgMSAobWFraW5nIHRoZSBvbGQqbmV3IHByb2R1Y3Qgbm9uLXBvc2l0aXZlKS5cblx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVuaXQgKTtcblx0XHRcdGlmICggKCAxIC0gc2NhbGUgKSAqICggMSAtICggc2NhbGUgPSBjdXJyZW50VmFsdWUoKSAvIGluaXRpYWwgfHwgMC41ICkgKSA8PSAwICkge1xuXHRcdFx0XHRtYXhJdGVyYXRpb25zID0gMDtcblx0XHRcdH1cblx0XHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0IC8gc2NhbGU7XG5cblx0XHR9XG5cblx0XHRpbml0aWFsSW5Vbml0ID0gaW5pdGlhbEluVW5pdCAqIDI7XG5cdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgdHdlZW4gcHJvcGVydGllcyBsYXRlciBvblxuXHRcdHZhbHVlUGFydHMgPSB2YWx1ZVBhcnRzIHx8IFtdO1xuXHR9XG5cblx0aWYgKCB2YWx1ZVBhcnRzICkge1xuXHRcdGluaXRpYWxJblVuaXQgPSAraW5pdGlhbEluVW5pdCB8fCAraW5pdGlhbCB8fCAwO1xuXG5cdFx0Ly8gQXBwbHkgcmVsYXRpdmUgb2Zmc2V0ICgrPS8tPSkgaWYgc3BlY2lmaWVkXG5cdFx0YWRqdXN0ZWQgPSB2YWx1ZVBhcnRzWyAxIF0gP1xuXHRcdFx0aW5pdGlhbEluVW5pdCArICggdmFsdWVQYXJ0c1sgMSBdICsgMSApICogdmFsdWVQYXJ0c1sgMiBdIDpcblx0XHRcdCt2YWx1ZVBhcnRzWyAyIF07XG5cdFx0aWYgKCB0d2VlbiApIHtcblx0XHRcdHR3ZWVuLnVuaXQgPSB1bml0O1xuXHRcdFx0dHdlZW4uc3RhcnQgPSBpbml0aWFsSW5Vbml0O1xuXHRcdFx0dHdlZW4uZW5kID0gYWRqdXN0ZWQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZGp1c3RlZDtcbn1cblxuXG52YXIgZGVmYXVsdERpc3BsYXlNYXAgPSB7fTtcblxuZnVuY3Rpb24gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKSB7XG5cdHZhciB0ZW1wLFxuXHRcdGRvYyA9IGVsZW0ub3duZXJEb2N1bWVudCxcblx0XHRub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUsXG5cdFx0ZGlzcGxheSA9IGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdO1xuXG5cdGlmICggZGlzcGxheSApIHtcblx0XHRyZXR1cm4gZGlzcGxheTtcblx0fVxuXG5cdHRlbXAgPSBkb2MuYm9keS5hcHBlbmRDaGlsZCggZG9jLmNyZWF0ZUVsZW1lbnQoIG5vZGVOYW1lICkgKTtcblx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIHRlbXAsIFwiZGlzcGxheVwiICk7XG5cblx0dGVtcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0ZW1wICk7XG5cblx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRkaXNwbGF5ID0gXCJibG9ja1wiO1xuXHR9XG5cdGRlZmF1bHREaXNwbGF5TWFwWyBub2RlTmFtZSBdID0gZGlzcGxheTtcblxuXHRyZXR1cm4gZGlzcGxheTtcbn1cblxuZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBzaG93ICkge1xuXHR2YXIgZGlzcGxheSwgZWxlbSxcblx0XHR2YWx1ZXMgPSBbXSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuXG5cdC8vIERldGVybWluZSBuZXcgZGlzcGxheSB2YWx1ZSBmb3IgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGNoYW5nZVxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTtcblx0XHRpZiAoICFlbGVtLnN0eWxlICkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0ZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTtcblx0XHRpZiAoIHNob3cgKSB7XG5cblx0XHRcdC8vIFNpbmNlIHdlIGZvcmNlIHZpc2liaWxpdHkgdXBvbiBjYXNjYWRlLWhpZGRlbiBlbGVtZW50cywgYW4gaW1tZWRpYXRlIChhbmQgc2xvdylcblx0XHRcdC8vIGNoZWNrIGlzIHJlcXVpcmVkIGluIHRoaXMgZmlyc3QgbG9vcCB1bmxlc3Mgd2UgaGF2ZSBhIG5vbmVtcHR5IGRpc3BsYXkgdmFsdWUgKGVpdGhlclxuXHRcdFx0Ly8gaW5saW5lIG9yIGFib3V0LXRvLWJlLXJlc3RvcmVkKVxuXHRcdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApIHx8IG51bGw7XG5cdFx0XHRcdGlmICggIXZhbHVlc1sgaW5kZXggXSApIHtcblx0XHRcdFx0XHRlbGVtLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gZ2V0RGVmYXVsdERpc3BsYXkoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCBkaXNwbGF5ICE9PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0dmFsdWVzWyBpbmRleCBdID0gXCJub25lXCI7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgd2hhdCB3ZSdyZSBvdmVyd3JpdGluZ1xuXHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiZGlzcGxheVwiLCBkaXNwbGF5ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gU2V0IHRoZSBkaXNwbGF5IG9mIHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wIHRvIGF2b2lkIGNvbnN0YW50IHJlZmxvd1xuXHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGlmICggdmFsdWVzWyBpbmRleCBdICE9IG51bGwgKSB7XG5cdFx0XHRlbGVtZW50c1sgaW5kZXggXS5zdHlsZS5kaXNwbGF5ID0gdmFsdWVzWyBpbmRleCBdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50cztcbn1cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRzaG93OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTtcblx0fSxcblx0aGlkZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzICk7XG5cdH0sXG5cdHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkge1xuXHRcdGlmICggdHlwZW9mIHN0YXRlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGlzSGlkZGVuV2l0aGluVHJlZSggdGhpcyApICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5zaG93KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5oaWRlKCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG52YXIgcmNoZWNrYWJsZVR5cGUgPSAoIC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pICk7XG5cbnZhciBydGFnTmFtZSA9ICggLzwoW2Etel1bXlxcL1xcMD5cXHgyMFxcdFxcclxcblxcZl0rKS9pICk7XG5cbnZhciByc2NyaXB0VHlwZSA9ICggL14kfF5tb2R1bGUkfFxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSApO1xuXG5cblxuLy8gV2UgaGF2ZSB0byBjbG9zZSB0aGVzZSB0YWdzIHRvIHN1cHBvcnQgWEhUTUwgKCMxMzIwMClcbnZhciB3cmFwTWFwID0ge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdG9wdGlvbjogWyAxLCBcIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz5cIiwgXCI8L3NlbGVjdD5cIiBdLFxuXG5cdC8vIFhIVE1MIHBhcnNlcnMgZG8gbm90IG1hZ2ljYWxseSBpbnNlcnQgZWxlbWVudHMgaW4gdGhlXG5cdC8vIHNhbWUgd2F5IHRoYXQgdGFnIHNvdXAgcGFyc2VycyBkby4gU28gd2UgY2Fubm90IHNob3J0ZW5cblx0Ly8gdGhpcyBieSBvbWl0dGluZyA8dGJvZHk+IG9yIG90aGVyIHJlcXVpcmVkIGVsZW1lbnRzLlxuXHR0aGVhZDogWyAxLCBcIjx0YWJsZT5cIiwgXCI8L3RhYmxlPlwiIF0sXG5cdGNvbDogWyAyLCBcIjx0YWJsZT48Y29sZ3JvdXA+XCIsIFwiPC9jb2xncm91cD48L3RhYmxlPlwiIF0sXG5cdHRyOiBbIDIsIFwiPHRhYmxlPjx0Ym9keT5cIiwgXCI8L3Rib2R5PjwvdGFibGU+XCIgXSxcblx0dGQ6IFsgMywgXCI8dGFibGU+PHRib2R5Pjx0cj5cIiwgXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXG5cdF9kZWZhdWx0OiBbIDAsIFwiXCIsIFwiXCIgXVxufTtcblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbndyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9wdGlvbjtcblxud3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3VwID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDtcbndyYXBNYXAudGggPSB3cmFwTWFwLnRkO1xuXG5cbmZ1bmN0aW9uIGdldEFsbCggY29udGV4dCwgdGFnICkge1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0Ly8gVXNlIHR5cGVvZiB0byBhdm9pZCB6ZXJvLWFyZ3VtZW50IG1ldGhvZCBpbnZvY2F0aW9uIG9uIGhvc3Qgb2JqZWN0cyAoIzE1MTUxKVxuXHR2YXIgcmV0O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0cmV0ID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIGlmICggdHlwZW9mIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCBcIipcIiApO1xuXG5cdH0gZWxzZSB7XG5cdFx0cmV0ID0gW107XG5cdH1cblxuXHRpZiAoIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBub2RlTmFtZSggY29udGV4dCwgdGFnICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5tZXJnZSggWyBjb250ZXh0IF0sIHJldCApO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn1cblxuXG4vLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFscmVhZHkgYmVlbiBldmFsdWF0ZWRcbmZ1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZFbGVtZW50cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGRhdGFQcml2LnNldChcblx0XHRcdGVsZW1zWyBpIF0sXG5cdFx0XHRcImdsb2JhbEV2YWxcIixcblx0XHRcdCFyZWZFbGVtZW50cyB8fCBkYXRhUHJpdi5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sIFwiZ2xvYmFsRXZhbFwiIClcblx0XHQpO1xuXHR9XG59XG5cblxudmFyIHJodG1sID0gLzx8JiM/XFx3KzsvO1xuXG5mdW5jdGlvbiBidWlsZEZyYWdtZW50KCBlbGVtcywgY29udGV4dCwgc2NyaXB0cywgc2VsZWN0aW9uLCBpZ25vcmVkICkge1xuXHR2YXIgZWxlbSwgdG1wLCB0YWcsIHdyYXAsIGNvbnRhaW5zLCBqLFxuXHRcdGZyYWdtZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0bm9kZXMgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsID0gZWxlbXMubGVuZ3RoO1xuXG5cdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRlbGVtID0gZWxlbXNbIGkgXTtcblxuXHRcdGlmICggZWxlbSB8fCBlbGVtID09PSAwICkge1xuXG5cdFx0XHQvLyBBZGQgbm9kZXMgZGlyZWN0bHlcblx0XHRcdGlmICggdG9UeXBlKCBlbGVtICkgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBub2RlcywgZWxlbS5ub2RlVHlwZSA/IFsgZWxlbSBdIDogZWxlbSApO1xuXG5cdFx0XHQvLyBDb252ZXJ0IG5vbi1odG1sIGludG8gYSB0ZXh0IG5vZGVcblx0XHRcdH0gZWxzZSBpZiAoICFyaHRtbC50ZXN0KCBlbGVtICkgKSB7XG5cdFx0XHRcdG5vZGVzLnB1c2goIGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0gKSApO1xuXG5cdFx0XHQvLyBDb252ZXJ0IGh0bWwgaW50byBET00gbm9kZXNcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRtcCA9IHRtcCB8fCBmcmFnbWVudC5hcHBlbmRDaGlsZCggY29udGV4dC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKTtcblxuXHRcdFx0XHQvLyBEZXNlcmlhbGl6ZSBhIHN0YW5kYXJkIHJlcHJlc2VudGF0aW9uXG5cdFx0XHRcdHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHR3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDtcblx0XHRcdFx0dG1wLmlubmVySFRNTCA9IHdyYXBbIDEgXSArIGpRdWVyeS5odG1sUHJlZmlsdGVyKCBlbGVtICkgKyB3cmFwWyAyIF07XG5cblx0XHRcdFx0Ly8gRGVzY2VuZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50XG5cdFx0XHRcdGogPSB3cmFwWyAwIF07XG5cdFx0XHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0XHRcdHRtcCA9IHRtcC5sYXN0Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCB0bXAuY2hpbGROb2RlcyApO1xuXG5cdFx0XHRcdC8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVyXG5cdFx0XHRcdHRtcCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRcdFx0Ly8gRW5zdXJlIHRoZSBjcmVhdGVkIG5vZGVzIGFyZSBvcnBoYW5lZCAoIzEyMzkyKVxuXHRcdFx0XHR0bXAudGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJlbW92ZSB3cmFwcGVyIGZyb20gZnJhZ21lbnRcblx0ZnJhZ21lbnQudGV4dENvbnRlbnQgPSBcIlwiO1xuXG5cdGkgPSAwO1xuXHR3aGlsZSAoICggZWxlbSA9IG5vZGVzWyBpKysgXSApICkge1xuXG5cdFx0Ly8gU2tpcCBlbGVtZW50cyBhbHJlYWR5IGluIHRoZSBjb250ZXh0IGNvbGxlY3Rpb24gKHRyYWMtNDA4Nylcblx0XHRpZiAoIHNlbGVjdGlvbiAmJiBqUXVlcnkuaW5BcnJheSggZWxlbSwgc2VsZWN0aW9uICkgPiAtMSApIHtcblx0XHRcdGlmICggaWdub3JlZCApIHtcblx0XHRcdFx0aWdub3JlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRjb250YWlucyA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cblx0XHQvLyBBcHBlbmQgdG8gZnJhZ21lbnRcblx0XHR0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENoaWxkKCBlbGVtICksIFwic2NyaXB0XCIgKTtcblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRpZiAoIGNvbnRhaW5zICkge1xuXHRcdFx0c2V0R2xvYmFsRXZhbCggdG1wICk7XG5cdFx0fVxuXG5cdFx0Ly8gQ2FwdHVyZSBleGVjdXRhYmxlc1xuXHRcdGlmICggc2NyaXB0cyApIHtcblx0XHRcdGogPSAwO1xuXHRcdFx0d2hpbGUgKCAoIGVsZW0gPSB0bXBbIGorKyBdICkgKSB7XG5cdFx0XHRcdGlmICggcnNjcmlwdFR5cGUudGVzdCggZWxlbS50eXBlIHx8IFwiXCIgKSApIHtcblx0XHRcdFx0XHRzY3JpcHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBmcmFnbWVudDtcbn1cblxuXG4oIGZ1bmN0aW9uKCkge1xuXHR2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0ZGl2ID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApLFxuXHRcdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seVxuXHQvLyBDaGVjayBzdGF0ZSBsb3N0IGlmIHRoZSBuYW1lIGlzIHNldCAoIzExMjE3KVxuXHQvLyBTdXBwb3J0OiBXaW5kb3dzIFdlYiBBcHBzIChXV0EpXG5cdC8vIGBuYW1lYCBhbmQgYHR5cGVgIG11c3QgdXNlIC5zZXRBdHRyaWJ1dGUgZm9yIFdXQSAoIzE0OTAxKVxuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCBcInJhZGlvXCIgKTtcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcImNoZWNrZWRcIiwgXCJjaGVja2VkXCIgKTtcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJ0XCIgKTtcblxuXHRkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICk7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMSBvbmx5XG5cdC8vIE9sZGVyIFdlYktpdCBkb2Vzbid0IGNsb25lIGNoZWNrZWQgc3RhdGUgY29ycmVjdGx5IGluIGZyYWdtZW50c1xuXHRzdXBwb3J0LmNoZWNrQ2xvbmUgPSBkaXYuY2xvbmVOb2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmNoZWNrZWQ7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSAoYW5kIGNoZWNrYm94KSBkZWZhdWx0VmFsdWUgaXMgcHJvcGVybHkgY2xvbmVkXG5cdGRpdi5pbm5lckhUTUwgPSBcIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT5cIjtcblx0c3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWU7XG59ICkoKTtcbnZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG52YXJcblx0cmtleUV2ZW50ID0gL15rZXkvLFxuXHRybW91c2VFdmVudCA9IC9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyxcblx0cnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcXC4oLispfCkvO1xuXG5mdW5jdGlvbiByZXR1cm5UcnVlKCkge1xuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmV0dXJuRmFsc2UoKSB7XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbi8vIFNlZSAjMTMzOTMgZm9yIG1vcmUgaW5mb1xuZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1lbnQoKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cdH0gY2F0Y2ggKCBlcnIgKSB7IH1cbn1cblxuZnVuY3Rpb24gb24oIGVsZW0sIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIG9uZSApIHtcblx0dmFyIG9yaWdGbiwgdHlwZTtcblxuXHQvLyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnNcblx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEgKVxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApXG5cdFx0XHRkYXRhID0gZGF0YSB8fCBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0b24oIGVsZW0sIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkge1xuXG5cdFx0Ly8gKCB0eXBlcywgZm4gKVxuXHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0ZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHR9IGVsc2UgaWYgKCBmbiA9PSBudWxsICkge1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBzZWxlY3RvciwgZm4gKVxuXHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBkYXRhLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0fSBlbHNlIGlmICggIWZuICkge1xuXHRcdHJldHVybiBlbGVtO1xuXHR9XG5cblx0aWYgKCBvbmUgPT09IDEgKSB7XG5cdFx0b3JpZ0ZuID0gZm47XG5cdFx0Zm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdC8vIENhbiB1c2UgYW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlucyB0aGUgaW5mb1xuXHRcdFx0alF1ZXJ5KCkub2ZmKCBldmVudCApO1xuXHRcdFx0cmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fTtcblxuXHRcdC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVyIGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuXG5cdFx0Zm4uZ3VpZCA9IG9yaWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVlcnkuZ3VpZCsrICk7XG5cdH1cblx0cmV0dXJuIGVsZW0uZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0alF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZXMsIGZuLCBkYXRhLCBzZWxlY3RvciApO1xuXHR9ICk7XG59XG5cbi8qXG4gKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuXG4gKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLlxuICovXG5qUXVlcnkuZXZlbnQgPSB7XG5cblx0Z2xvYmFsOiB7fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7XG5cblx0XHR2YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YVByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHQvLyBEb24ndCBhdHRhY2ggZXZlbnRzIHRvIG5vRGF0YSBvciB0ZXh0L2NvbW1lbnQgbm9kZXMgKGJ1dCBhbGxvdyBwbGFpbiBvYmplY3RzKVxuXHRcdGlmICggIWVsZW1EYXRhICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIENhbGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlclxuXHRcdGlmICggaGFuZGxlci5oYW5kbGVyICkge1xuXHRcdFx0aGFuZGxlT2JqSW4gPSBoYW5kbGVyO1xuXHRcdFx0aGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7XG5cdFx0XHRzZWxlY3RvciA9IGhhbmRsZU9iakluLnNlbGVjdG9yO1xuXHRcdH1cblxuXHRcdC8vIEVuc3VyZSB0aGF0IGludmFsaWQgc2VsZWN0b3JzIHRocm93IGV4Y2VwdGlvbnMgYXQgYXR0YWNoIHRpbWVcblx0XHQvLyBFdmFsdWF0ZSBhZ2FpbnN0IGRvY3VtZW50RWxlbWVudCBpbiBjYXNlIGVsZW0gaXMgYSBub24tZWxlbWVudCBub2RlIChlLmcuLCBkb2N1bWVudClcblx0XHRpZiAoIHNlbGVjdG9yICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBkb2N1bWVudEVsZW1lbnQsIHNlbGVjdG9yICk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyXG5cdFx0aWYgKCAhaGFuZGxlci5ndWlkICkge1xuXHRcdFx0aGFuZGxlci5ndWlkID0galF1ZXJ5Lmd1aWQrKztcblx0XHR9XG5cblx0XHQvLyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZpcnN0XG5cdFx0aWYgKCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHtcblx0XHRcdGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyA9IHt9O1xuXHRcdH1cblx0XHRpZiAoICEoIGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlICkgKSB7XG5cdFx0XHRldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSA9IGZ1bmN0aW9uKCBlICkge1xuXG5cdFx0XHRcdC8vIERpc2NhcmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVudC50cmlnZ2VyKCkgYW5kXG5cdFx0XHRcdC8vIHdoZW4gYW4gZXZlbnQgaXMgY2FsbGVkIGFmdGVyIGEgcGFnZSBoYXMgdW5sb2FkZWRcblx0XHRcdFx0cmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09IFwidW5kZWZpbmVkXCIgJiYgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCAhPT0gZS50eXBlID9cblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQuZGlzcGF0Y2guYXBwbHkoIGVsZW0sIGFyZ3VtZW50cyApIDogdW5kZWZpbmVkO1xuXHRcdFx0fTtcblx0XHR9XG5cblx0XHQvLyBIYW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGFyYXRlZCBieSBhIHNwYWNlXG5cdFx0dHlwZXMgPSAoIHR5cGVzIHx8IFwiXCIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107XG5cdFx0XHR0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFRoZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1lc3BhY2Utb25seSBoYW5kbGVyc1xuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZVxuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXG5cdFx0XHQvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnNcblx0XHRcdGhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoIHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0b3JpZ1R5cGU6IG9yaWdUeXBlLFxuXHRcdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0XHRoYW5kbGVyOiBoYW5kbGVyLFxuXHRcdFx0XHRndWlkOiBoYW5kbGVyLmd1aWQsXG5cdFx0XHRcdHNlbGVjdG9yOiBzZWxlY3Rvcixcblx0XHRcdFx0bmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSxcblx0XHRcdFx0bmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oIFwiLlwiIClcblx0XHRcdH0sIGhhbmRsZU9iakluICk7XG5cblx0XHRcdC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUgdGhlIGZpcnN0XG5cdFx0XHRpZiAoICEoIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gKSApIHtcblx0XHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSA9IFtdO1xuXHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50ID0gMDtcblxuXHRcdFx0XHQvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyIGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2Vcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC5zZXR1cCB8fFxuXHRcdFx0XHRcdHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRpZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdFx0XHRcdGVsZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5kbGUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBzcGVjaWFsLmFkZCApIHtcblx0XHRcdFx0c3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cblx0XHRcdFx0aWYgKCAhaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCApIHtcblx0XHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCB0byB0aGUgZWxlbWVudCdzIGhhbmRsZXIgbGlzdCwgZGVsZWdhdGVzIGluIGZyb250XG5cdFx0XHRpZiAoIHNlbGVjdG9yICkge1xuXHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQrKywgMCwgaGFuZGxlT2JqICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRoYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gS2VlcCB0cmFjayBvZiB3aGljaCBldmVudHMgaGF2ZSBldmVyIGJlZW4gdXNlZCwgZm9yIGV2ZW50IG9wdGltaXphdGlvblxuXHRcdFx0alF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTtcblx0XHR9XG5cblx0fSxcblxuXHQvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1lbnRcblx0cmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIHNlbGVjdG9yLCBtYXBwZWRUeXBlcyApIHtcblxuXHRcdHZhciBqLCBvcmlnQ291bnQsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICkgJiYgZGF0YVByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHRpZiAoICFlbGVtRGF0YSB8fCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNwYWNlIGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0dGVkXG5cdFx0dHlwZXMgPSAoIHR5cGVzIHx8IFwiXCIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107XG5cdFx0XHR0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFVuYmluZCBhbGwgZXZlbnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVudFxuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSB8fCBbXTtcblx0XHRcdHRtcCA9IHRtcFsgMiBdICYmXG5cdFx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApO1xuXG5cdFx0XHQvLyBSZW1vdmUgbWF0Y2hpbmcgZXZlbnRzXG5cdFx0XHRvcmlnQ291bnQgPSBqID0gaGFuZGxlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07XG5cblx0XHRcdFx0aWYgKCAoIG1hcHBlZFR5cGVzIHx8IG9yaWdUeXBlID09PSBoYW5kbGVPYmoub3JpZ1R5cGUgKSAmJlxuXHRcdFx0XHRcdCggIWhhbmRsZXIgfHwgaGFuZGxlci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmXG5cdFx0XHRcdFx0KCAhdG1wIHx8IHRtcC50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAmJlxuXHRcdFx0XHRcdCggIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHxcblx0XHRcdFx0XHRcdHNlbGVjdG9yID09PSBcIioqXCIgJiYgaGFuZGxlT2JqLnNlbGVjdG9yICkgKSB7XG5cdFx0XHRcdFx0aGFuZGxlcnMuc3BsaWNlKCBqLCAxICk7XG5cblx0XHRcdFx0XHRpZiAoIGhhbmRsZU9iai5zZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBzcGVjaWFsLnJlbW92ZSApIHtcblx0XHRcdFx0XHRcdHNwZWNpYWwucmVtb3ZlLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVyIGlmIHdlIHJlbW92ZWQgc29tZXRoaW5nIGFuZCBubyBtb3JlIGhhbmRsZXJzIGV4aXN0XG5cdFx0XHQvLyAoYXZvaWRzIHBvdGVudGlhbCBmb3IgZW5kbGVzcyByZWN1cnNpb24gZHVyaW5nIHJlbW92YWwgb2Ygc3BlY2lhbCBldmVudCBoYW5kbGVycylcblx0XHRcdGlmICggb3JpZ0NvdW50ICYmICFoYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRcdGlmICggIXNwZWNpYWwudGVhcmRvd24gfHxcblx0XHRcdFx0XHRzcGVjaWFsLnRlYXJkb3duLmNhbGwoIGVsZW0sIG5hbWVzcGFjZXMsIGVsZW1EYXRhLmhhbmRsZSApID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZWxlbURhdGEuaGFuZGxlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkZWxldGUgZXZlbnRzWyB0eXBlIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGRhdGEgYW5kIHRoZSBleHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWRcblx0XHRpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHtcblx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgXCJoYW5kbGUgZXZlbnRzXCIgKTtcblx0XHR9XG5cdH0sXG5cblx0ZGlzcGF0Y2g6IGZ1bmN0aW9uKCBuYXRpdmVFdmVudCApIHtcblxuXHRcdC8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdFxuXHRcdHZhciBldmVudCA9IGpRdWVyeS5ldmVudC5maXgoIG5hdGl2ZUV2ZW50ICk7XG5cblx0XHR2YXIgaSwgaiwgcmV0LCBtYXRjaGVkLCBoYW5kbGVPYmosIGhhbmRsZXJRdWV1ZSxcblx0XHRcdGFyZ3MgPSBuZXcgQXJyYXkoIGFyZ3VtZW50cy5sZW5ndGggKSxcblx0XHRcdGhhbmRsZXJzID0gKCBkYXRhUHJpdi5nZXQoIHRoaXMsIFwiZXZlbnRzXCIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gfHwgW10sXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTtcblxuXHRcdC8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5FdmVudCByYXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2ZW50XG5cdFx0YXJnc1sgMCBdID0gZXZlbnQ7XG5cblx0XHRmb3IgKCBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdGFyZ3NbIGkgXSA9IGFyZ3VtZW50c1sgaSBdO1xuXHRcdH1cblxuXHRcdGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcztcblxuXHRcdC8vIENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxldCBpdCBiYWlsIGlmIGRlc2lyZWRcblx0XHRpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgaGFuZGxlcnNcblx0XHRoYW5kbGVyUXVldWUgPSBqUXVlcnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQsIGhhbmRsZXJzICk7XG5cblx0XHQvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVuZWF0aCB1c1xuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBtYXRjaGVkID0gaGFuZGxlclF1ZXVlWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0ZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTtcblxuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggaGFuZGxlT2JqID0gbWF0Y2hlZC5oYW5kbGVyc1sgaisrIF0gKSAmJlxuXHRcdFx0XHQhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblxuXHRcdFx0XHQvLyBUcmlnZ2VyZWQgZXZlbnQgbXVzdCBlaXRoZXIgMSkgaGF2ZSBubyBuYW1lc3BhY2UsIG9yIDIpIGhhdmUgbmFtZXNwYWNlKHMpXG5cdFx0XHRcdC8vIGEgc3Vic2V0IG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBib3VuZCBldmVudCAoYm90aCBjYW4gaGF2ZSBubyBuYW1lc3BhY2UpLlxuXHRcdFx0XHRpZiAoICFldmVudC5ybmFtZXNwYWNlIHx8IGV2ZW50LnJuYW1lc3BhY2UudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkge1xuXG5cdFx0XHRcdFx0ZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqO1xuXHRcdFx0XHRcdGV2ZW50LmRhdGEgPSBoYW5kbGVPYmouZGF0YTtcblxuXHRcdFx0XHRcdHJldCA9ICggKCBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30gKS5oYW5kbGUgfHxcblx0XHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyICkuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJncyApO1xuXG5cdFx0XHRcdFx0aWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdGlmICggKCBldmVudC5yZXN1bHQgPSByZXQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGwgdGhlIHBvc3REaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGVcblx0XHRpZiAoIHNwZWNpYWwucG9zdERpc3BhdGNoICkge1xuXHRcdFx0c3BlY2lhbC5wb3N0RGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQucmVzdWx0O1xuXHR9LFxuXG5cdGhhbmRsZXJzOiBmdW5jdGlvbiggZXZlbnQsIGhhbmRsZXJzICkge1xuXHRcdHZhciBpLCBoYW5kbGVPYmosIHNlbCwgbWF0Y2hlZEhhbmRsZXJzLCBtYXRjaGVkU2VsZWN0b3JzLFxuXHRcdFx0aGFuZGxlclF1ZXVlID0gW10sXG5cdFx0XHRkZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMuZGVsZWdhdGVDb3VudCxcblx0XHRcdGN1ciA9IGV2ZW50LnRhcmdldDtcblxuXHRcdC8vIEZpbmQgZGVsZWdhdGUgaGFuZGxlcnNcblx0XHRpZiAoIGRlbGVnYXRlQ291bnQgJiZcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05XG5cdFx0XHQvLyBCbGFjay1ob2xlIFNWRyA8dXNlPiBpbnN0YW5jZSB0cmVlcyAodHJhYy0xMzE4MClcblx0XHRcdGN1ci5ub2RlVHlwZSAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDJcblx0XHRcdC8vIFN1cHByZXNzIHNwZWMtdmlvbGF0aW5nIGNsaWNrcyBpbmRpY2F0aW5nIGEgbm9uLXByaW1hcnkgcG9pbnRlciBidXR0b24gKHRyYWMtMzg2MSlcblx0XHRcdC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50LXR5cGUtY2xpY2tcblx0XHRcdC8vIFN1cHBvcnQ6IElFIDExIG9ubHlcblx0XHRcdC8vIC4uLmJ1dCBub3QgYXJyb3cga2V5IFwiY2xpY2tzXCIgb2YgcmFkaW8gaW5wdXRzLCB3aGljaCBjYW4gaGF2ZSBgYnV0dG9uYCAtMSAoZ2gtMjM0Mylcblx0XHRcdCEoIGV2ZW50LnR5cGUgPT09IFwiY2xpY2tcIiAmJiBldmVudC5idXR0b24gPj0gMSApICkge1xuXG5cdFx0XHRmb3IgKCA7IGN1ciAhPT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHtcblxuXHRcdFx0XHQvLyBEb24ndCBjaGVjayBub24tZWxlbWVudHMgKCMxMzIwOClcblx0XHRcdFx0Ly8gRG9uJ3QgcHJvY2VzcyBjbGlja3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgyLCAjMTE3NjQpXG5cdFx0XHRcdGlmICggY3VyLm5vZGVUeXBlID09PSAxICYmICEoIGV2ZW50LnR5cGUgPT09IFwiY2xpY2tcIiAmJiBjdXIuZGlzYWJsZWQgPT09IHRydWUgKSApIHtcblx0XHRcdFx0XHRtYXRjaGVkSGFuZGxlcnMgPSBbXTtcblx0XHRcdFx0XHRtYXRjaGVkU2VsZWN0b3JzID0ge307XG5cdFx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBkZWxlZ2F0ZUNvdW50OyBpKysgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdO1xuXG5cdFx0XHRcdFx0XHQvLyBEb24ndCBjb25mbGljdCB3aXRoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoIzEzMjAzKVxuXHRcdFx0XHRcdFx0c2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgXCIgXCI7XG5cblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID9cblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+IC0xIDpcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZmluZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZEhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRIYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBtYXRjaGVkSGFuZGxlcnMgfSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFkZCB0aGUgcmVtYWluaW5nIChkaXJlY3RseS1ib3VuZCkgaGFuZGxlcnNcblx0XHRjdXIgPSB0aGlzO1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCA8IGhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IGhhbmRsZXJzLnNsaWNlKCBkZWxlZ2F0ZUNvdW50ICkgfSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBoYW5kbGVyUXVldWU7XG5cdH0sXG5cblx0YWRkUHJvcDogZnVuY3Rpb24oIG5hbWUsIGhvb2sgKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCBqUXVlcnkuRXZlbnQucHJvdG90eXBlLCBuYW1lLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXG5cdFx0XHRnZXQ6IGlzRnVuY3Rpb24oIGhvb2sgKSA/XG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaG9vayggdGhpcy5vcmlnaW5hbEV2ZW50ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IDpcblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbIG5hbWUgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cblx0XHRcdHNldDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMsIG5hbWUsIHtcblx0XHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHR3cml0YWJsZTogdHJ1ZSxcblx0XHRcdFx0XHR2YWx1ZTogdmFsdWVcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRmaXg6IGZ1bmN0aW9uKCBvcmlnaW5hbEV2ZW50ICkge1xuXHRcdHJldHVybiBvcmlnaW5hbEV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdG9yaWdpbmFsRXZlbnQgOlxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApO1xuXHR9LFxuXG5cdHNwZWNpYWw6IHtcblx0XHRsb2FkOiB7XG5cblx0XHRcdC8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWRcblx0XHRcdG5vQnViYmxlOiB0cnVlXG5cdFx0fSxcblx0XHRmb2N1czoge1xuXG5cdFx0XHQvLyBGaXJlIG5hdGl2ZSBldmVudCBpZiBwb3NzaWJsZSBzbyBibHVyL2ZvY3VzIHNlcXVlbmNlIGlzIGNvcnJlY3Rcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMgIT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5mb2N1cyApIHtcblx0XHRcdFx0XHR0aGlzLmZvY3VzKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVsZWdhdGVUeXBlOiBcImZvY3VzaW5cIlxuXHRcdH0sXG5cdFx0Ymx1cjoge1xuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcyA9PT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmJsdXIgKSB7XG5cdFx0XHRcdFx0dGhpcy5ibHVyKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVsZWdhdGVUeXBlOiBcImZvY3Vzb3V0XCJcblx0XHR9LFxuXHRcdGNsaWNrOiB7XG5cblx0XHRcdC8vIEZvciBjaGVja2JveCwgZmlyZSBuYXRpdmUgZXZlbnQgc28gY2hlY2tlZCBzdGF0ZSB3aWxsIGJlIHJpZ2h0XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzLnR5cGUgPT09IFwiY2hlY2tib3hcIiAmJiB0aGlzLmNsaWNrICYmIG5vZGVOYW1lKCB0aGlzLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR0aGlzLmNsaWNrKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBGb3IgY3Jvc3MtYnJvd3NlciBjb25zaXN0ZW5jeSwgZG9uJ3QgZmlyZSBuYXRpdmUgLmNsaWNrKCkgb24gbGlua3Ncblx0XHRcdF9kZWZhdWx0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHJldHVybiBub2RlTmFtZSggZXZlbnQudGFyZ2V0LCBcImFcIiApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRiZWZvcmV1bmxvYWQ6IHtcblx0XHRcdHBvc3REaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArXG5cdFx0XHRcdC8vIEZpcmVmb3ggZG9lc24ndCBhbGVydCBpZiB0aGUgcmV0dXJuVmFsdWUgZmllbGQgaXMgbm90IHNldC5cblx0XHRcdFx0aWYgKCBldmVudC5yZXN1bHQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdGV2ZW50Lm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWUgPSBldmVudC5yZXN1bHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBoYW5kbGUgKSB7XG5cblx0Ly8gVGhpcyBcImlmXCIgaXMgbmVlZGVkIGZvciBwbGFpbiBvYmplY3RzXG5cdGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkge1xuXHRcdGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlICk7XG5cdH1cbn07XG5cbmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkge1xuXG5cdC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25ldycga2V5d29yZFxuXHRpZiAoICEoIHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQgKSApIHtcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gRXZlbnQgb2JqZWN0XG5cdGlmICggc3JjICYmIHNyYy50eXBlICkge1xuXHRcdHRoaXMub3JpZ2luYWxFdmVudCA9IHNyYztcblx0XHR0aGlzLnR5cGUgPSBzcmMudHlwZTtcblxuXHRcdC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG5cdFx0Ly8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fFxuXHRcdFx0XHRzcmMuZGVmYXVsdFByZXZlbnRlZCA9PT0gdW5kZWZpbmVkICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5XG5cdFx0XHRcdHNyYy5yZXR1cm5WYWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0cmV0dXJuVHJ1ZSA6XG5cdFx0XHRyZXR1cm5GYWxzZTtcblxuXHRcdC8vIENyZWF0ZSB0YXJnZXQgcHJvcGVydGllc1xuXHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA8PTYgLSA3IG9ubHlcblx0XHQvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQgbm9kZSAoIzUwNCwgIzEzMTQzKVxuXHRcdHRoaXMudGFyZ2V0ID0gKCBzcmMudGFyZ2V0ICYmIHNyYy50YXJnZXQubm9kZVR5cGUgPT09IDMgKSA/XG5cdFx0XHRzcmMudGFyZ2V0LnBhcmVudE5vZGUgOlxuXHRcdFx0c3JjLnRhcmdldDtcblxuXHRcdHRoaXMuY3VycmVudFRhcmdldCA9IHNyYy5jdXJyZW50VGFyZ2V0O1xuXHRcdHRoaXMucmVsYXRlZFRhcmdldCA9IHNyYy5yZWxhdGVkVGFyZ2V0O1xuXG5cdC8vIEV2ZW50IHR5cGVcblx0fSBlbHNlIHtcblx0XHR0aGlzLnR5cGUgPSBzcmM7XG5cdH1cblxuXHQvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdFxuXHRpZiAoIHByb3BzICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZVxuXHR0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IERhdGUubm93KCk7XG5cblx0Ly8gTWFyayBpdCBhcyBmaXhlZFxuXHR0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTtcbn07XG5cbi8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZ1xuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbFxualF1ZXJ5LkV2ZW50LnByb3RvdHlwZSA9IHtcblx0Y29uc3RydWN0b3I6IGpRdWVyeS5FdmVudCxcblx0aXNEZWZhdWx0UHJldmVudGVkOiByZXR1cm5GYWxzZSxcblx0aXNQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXHRpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzU2ltdWxhdGVkOiBmYWxzZSxcblxuXHRwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH1cblx0fSxcblx0c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cblx0XHR0aGlzLnN0b3BQcm9wYWdhdGlvbigpO1xuXHR9XG59O1xuXG4vLyBJbmNsdWRlcyBhbGwgY29tbW9uIGV2ZW50IHByb3BzIGluY2x1ZGluZyBLZXlFdmVudCBhbmQgTW91c2VFdmVudCBzcGVjaWZpYyBwcm9wc1xualF1ZXJ5LmVhY2goIHtcblx0YWx0S2V5OiB0cnVlLFxuXHRidWJibGVzOiB0cnVlLFxuXHRjYW5jZWxhYmxlOiB0cnVlLFxuXHRjaGFuZ2VkVG91Y2hlczogdHJ1ZSxcblx0Y3RybEtleTogdHJ1ZSxcblx0ZGV0YWlsOiB0cnVlLFxuXHRldmVudFBoYXNlOiB0cnVlLFxuXHRtZXRhS2V5OiB0cnVlLFxuXHRwYWdlWDogdHJ1ZSxcblx0cGFnZVk6IHRydWUsXG5cdHNoaWZ0S2V5OiB0cnVlLFxuXHR2aWV3OiB0cnVlLFxuXHRcImNoYXJcIjogdHJ1ZSxcblx0Y2hhckNvZGU6IHRydWUsXG5cdGtleTogdHJ1ZSxcblx0a2V5Q29kZTogdHJ1ZSxcblx0YnV0dG9uOiB0cnVlLFxuXHRidXR0b25zOiB0cnVlLFxuXHRjbGllbnRYOiB0cnVlLFxuXHRjbGllbnRZOiB0cnVlLFxuXHRvZmZzZXRYOiB0cnVlLFxuXHRvZmZzZXRZOiB0cnVlLFxuXHRwb2ludGVySWQ6IHRydWUsXG5cdHBvaW50ZXJUeXBlOiB0cnVlLFxuXHRzY3JlZW5YOiB0cnVlLFxuXHRzY3JlZW5ZOiB0cnVlLFxuXHR0YXJnZXRUb3VjaGVzOiB0cnVlLFxuXHR0b0VsZW1lbnQ6IHRydWUsXG5cdHRvdWNoZXM6IHRydWUsXG5cblx0d2hpY2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uO1xuXG5cdFx0Ly8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzXG5cdFx0aWYgKCBldmVudC53aGljaCA9PSBudWxsICYmIHJrZXlFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7XG5cdFx0XHRyZXR1cm4gZXZlbnQuY2hhckNvZGUgIT0gbnVsbCA/IGV2ZW50LmNoYXJDb2RlIDogZXZlbnQua2V5Q29kZTtcblx0XHR9XG5cblx0XHQvLyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0XG5cdFx0aWYgKCAhZXZlbnQud2hpY2ggJiYgYnV0dG9uICE9PSB1bmRlZmluZWQgJiYgcm1vdXNlRXZlbnQudGVzdCggZXZlbnQudHlwZSApICkge1xuXHRcdFx0aWYgKCBidXR0b24gJiAxICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBidXR0b24gJiAyICkge1xuXHRcdFx0XHRyZXR1cm4gMztcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBidXR0b24gJiA0ICkge1xuXHRcdFx0XHRyZXR1cm4gMjtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LndoaWNoO1xuXHR9XG59LCBqUXVlcnkuZXZlbnQuYWRkUHJvcCApO1xuXG4vLyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGltZSBjaGVja3Ncbi8vIHNvIHRoYXQgZXZlbnQgZGVsZWdhdGlvbiB3b3JrcyBpbiBqUXVlcnkuXG4vLyBEbyB0aGUgc2FtZSBmb3IgcG9pbnRlcmVudGVyL3BvaW50ZXJsZWF2ZSBhbmQgcG9pbnRlcm92ZXIvcG9pbnRlcm91dFxuLy9cbi8vIFN1cHBvcnQ6IFNhZmFyaSA3IG9ubHlcbi8vIFNhZmFyaSBzZW5kcyBtb3VzZWVudGVyIHRvbyBvZnRlbjsgc2VlOlxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDcwMjU4XG4vLyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcgKGl0IGV4aXN0ZWQgaW4gb2xkZXIgQ2hyb21lIHZlcnNpb25zIGFzIHdlbGwpLlxualF1ZXJ5LmVhY2goIHtcblx0bW91c2VlbnRlcjogXCJtb3VzZW92ZXJcIixcblx0bW91c2VsZWF2ZTogXCJtb3VzZW91dFwiLFxuXHRwb2ludGVyZW50ZXI6IFwicG9pbnRlcm92ZXJcIixcblx0cG9pbnRlcmxlYXZlOiBcInBvaW50ZXJvdXRcIlxufSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHtcblx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIG9yaWcgXSA9IHtcblx0XHRkZWxlZ2F0ZVR5cGU6IGZpeCxcblx0XHRiaW5kVHlwZTogZml4LFxuXG5cdFx0aGFuZGxlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHR2YXIgcmV0LFxuXHRcdFx0XHR0YXJnZXQgPSB0aGlzLFxuXHRcdFx0XHRyZWxhdGVkID0gZXZlbnQucmVsYXRlZFRhcmdldCxcblx0XHRcdFx0aGFuZGxlT2JqID0gZXZlbnQuaGFuZGxlT2JqO1xuXG5cdFx0XHQvLyBGb3IgbW91c2VlbnRlci9sZWF2ZSBjYWxsIHRoZSBoYW5kbGVyIGlmIHJlbGF0ZWQgaXMgb3V0c2lkZSB0aGUgdGFyZ2V0LlxuXHRcdFx0Ly8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3dcblx0XHRcdGlmICggIXJlbGF0ZWQgfHwgKCByZWxhdGVkICE9PSB0YXJnZXQgJiYgIWpRdWVyeS5jb250YWlucyggdGFyZ2V0LCByZWxhdGVkICkgKSApIHtcblx0XHRcdFx0ZXZlbnQudHlwZSA9IGhhbmRsZU9iai5vcmlnVHlwZTtcblx0XHRcdFx0cmV0ID0gaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRldmVudC50eXBlID0gZml4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cdH07XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHRvbjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7XG5cdH0sXG5cdG9uZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7XG5cdH0sXG5cdG9mZjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZm4gKSB7XG5cdFx0dmFyIGhhbmRsZU9iaiwgdHlwZTtcblx0XHRpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiApIHtcblxuXHRcdFx0Ly8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudFxuXHRcdFx0aGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqO1xuXHRcdFx0alF1ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZihcblx0XHRcdFx0aGFuZGxlT2JqLm5hbWVzcGFjZSA/XG5cdFx0XHRcdFx0aGFuZGxlT2JqLm9yaWdUeXBlICsgXCIuXCIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDpcblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUsXG5cdFx0XHRcdGhhbmRsZU9iai5zZWxlY3Rvcixcblx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXJcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdFx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSApXG5cdFx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0XHR0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcyBbLCBmbl0gKVxuXHRcdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRcdGZuID0gcmV0dXJuRmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbnZhclxuXG5cdC8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cblxuXHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvaXNzdWVzLzMyMjlcblx0cnhodG1sVGFnID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlxcL1xcMD5cXHgyMFxcdFxcclxcblxcZl0qKVtePl0qKVxcLz4vZ2ksXG5cblx0LyogZXNsaW50LWVuYWJsZSAqL1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSwgRWRnZSAxMiAtIDEzIG9ubHlcblx0Ly8gSW4gSUUvRWRnZSB1c2luZyByZWdleCBncm91cHMgaGVyZSBjYXVzZXMgc2V2ZXJlIHNsb3dkb3ducy5cblx0Ly8gU2VlIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvMTczNjUxMi9cblx0cm5vSW5uZXJodG1sID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksXG5cblx0Ly8gY2hlY2tlZD1cImNoZWNrZWRcIiBvciBjaGVja2VkXG5cdHJjaGVja2VkID0gL2NoZWNrZWRcXHMqKD86W149XXw9XFxzKi5jaGVja2VkLikvaSxcblx0cmNsZWFuU2NyaXB0ID0gL15cXHMqPCEoPzpcXFtDREFUQVxcW3wtLSl8KD86XFxdXFxdfC0tKT5cXHMqJC9nO1xuXG4vLyBQcmVmZXIgYSB0Ym9keSBvdmVyIGl0cyBwYXJlbnQgdGFibGUgZm9yIGNvbnRhaW5pbmcgbmV3IHJvd3NcbmZ1bmN0aW9uIG1hbmlwdWxhdGlvblRhcmdldCggZWxlbSwgY29udGVudCApIHtcblx0aWYgKCBub2RlTmFtZSggZWxlbSwgXCJ0YWJsZVwiICkgJiZcblx0XHRub2RlTmFtZSggY29udGVudC5ub2RlVHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCBcInRyXCIgKSApIHtcblxuXHRcdHJldHVybiBqUXVlcnkoIGVsZW0gKS5jaGlsZHJlbiggXCJ0Ym9keVwiIClbIDAgXSB8fCBlbGVtO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbi8vIFJlcGxhY2UvcmVzdG9yZSB0aGUgdHlwZSBhdHRyaWJ1dGUgb2Ygc2NyaXB0IGVsZW1lbnRzIGZvciBzYWZlIERPTSBtYW5pcHVsYXRpb25cbmZ1bmN0aW9uIGRpc2FibGVTY3JpcHQoIGVsZW0gKSB7XG5cdGVsZW0udHlwZSA9ICggZWxlbS5nZXRBdHRyaWJ1dGUoIFwidHlwZVwiICkgIT09IG51bGwgKSArIFwiL1wiICsgZWxlbS50eXBlO1xuXHRyZXR1cm4gZWxlbTtcbn1cbmZ1bmN0aW9uIHJlc3RvcmVTY3JpcHQoIGVsZW0gKSB7XG5cdGlmICggKCBlbGVtLnR5cGUgfHwgXCJcIiApLnNsaWNlKCAwLCA1ICkgPT09IFwidHJ1ZS9cIiApIHtcblx0XHRlbGVtLnR5cGUgPSBlbGVtLnR5cGUuc2xpY2UoIDUgKTtcblx0fSBlbHNlIHtcblx0XHRlbGVtLnJlbW92ZUF0dHJpYnV0ZSggXCJ0eXBlXCIgKTtcblx0fVxuXG5cdHJldHVybiBlbGVtO1xufVxuXG5mdW5jdGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBkZXN0ICkge1xuXHR2YXIgaSwgbCwgdHlwZSwgcGRhdGFPbGQsIHBkYXRhQ3VyLCB1ZGF0YU9sZCwgdWRhdGFDdXIsIGV2ZW50cztcblxuXHRpZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gMS4gQ29weSBwcml2YXRlIGRhdGE6IGV2ZW50cywgaGFuZGxlcnMsIGV0Yy5cblx0aWYgKCBkYXRhUHJpdi5oYXNEYXRhKCBzcmMgKSApIHtcblx0XHRwZGF0YU9sZCA9IGRhdGFQcml2LmFjY2Vzcyggc3JjICk7XG5cdFx0cGRhdGFDdXIgPSBkYXRhUHJpdi5zZXQoIGRlc3QsIHBkYXRhT2xkICk7XG5cdFx0ZXZlbnRzID0gcGRhdGFPbGQuZXZlbnRzO1xuXG5cdFx0aWYgKCBldmVudHMgKSB7XG5cdFx0XHRkZWxldGUgcGRhdGFDdXIuaGFuZGxlO1xuXHRcdFx0cGRhdGFDdXIuZXZlbnRzID0ge307XG5cblx0XHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xuXHRcdFx0XHRmb3IgKCBpID0gMCwgbCA9IGV2ZW50c1sgdHlwZSBdLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyAyLiBDb3B5IHVzZXIgZGF0YVxuXHRpZiAoIGRhdGFVc2VyLmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHVkYXRhT2xkID0gZGF0YVVzZXIuYWNjZXNzKCBzcmMgKTtcblx0XHR1ZGF0YUN1ciA9IGpRdWVyeS5leHRlbmQoIHt9LCB1ZGF0YU9sZCApO1xuXG5cdFx0ZGF0YVVzZXIuc2V0KCBkZXN0LCB1ZGF0YUN1ciApO1xuXHR9XG59XG5cbi8vIEZpeCBJRSBidWdzLCBzZWUgc3VwcG9ydCB0ZXN0c1xuZnVuY3Rpb24gZml4SW5wdXQoIHNyYywgZGVzdCApIHtcblx0dmFyIG5vZGVOYW1lID0gZGVzdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG5cdC8vIEZhaWxzIHRvIHBlcnNpc3QgdGhlIGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLlxuXHRpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgcmNoZWNrYWJsZVR5cGUudGVzdCggc3JjLnR5cGUgKSApIHtcblx0XHRkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDtcblxuXHQvLyBGYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZCBzdGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9uc1xuXHR9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5vZGVOYW1lID09PSBcInRleHRhcmVhXCIgKSB7XG5cdFx0ZGVzdC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGRvbU1hbmlwKCBjb2xsZWN0aW9uLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApIHtcblxuXHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdGFyZ3MgPSBjb25jYXQuYXBwbHkoIFtdLCBhcmdzICk7XG5cblx0dmFyIGZyYWdtZW50LCBmaXJzdCwgc2NyaXB0cywgaGFzU2NyaXB0cywgbm9kZSwgZG9jLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBjb2xsZWN0aW9uLmxlbmd0aCxcblx0XHRpTm9DbG9uZSA9IGwgLSAxLFxuXHRcdHZhbHVlID0gYXJnc1sgMCBdLFxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0Ly8gV2UgY2FuJ3QgY2xvbmVOb2RlIGZyYWdtZW50cyB0aGF0IGNvbnRhaW4gY2hlY2tlZCwgaW4gV2ViS2l0XG5cdGlmICggdmFsdWVJc0Z1bmN0aW9uIHx8XG5cdFx0XHQoIGwgPiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQhc3VwcG9ydC5jaGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHtcblx0XHRyZXR1cm4gY29sbGVjdGlvbi5lYWNoKCBmdW5jdGlvbiggaW5kZXggKSB7XG5cdFx0XHR2YXIgc2VsZiA9IGNvbGxlY3Rpb24uZXEoIGluZGV4ICk7XG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0YXJnc1sgMCBdID0gdmFsdWUuY2FsbCggdGhpcywgaW5kZXgsIHNlbGYuaHRtbCgpICk7XG5cdFx0XHR9XG5cdFx0XHRkb21NYW5pcCggc2VsZiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKTtcblx0XHR9ICk7XG5cdH1cblxuXHRpZiAoIGwgKSB7XG5cdFx0ZnJhZ21lbnQgPSBidWlsZEZyYWdtZW50KCBhcmdzLCBjb2xsZWN0aW9uWyAwIF0ub3duZXJEb2N1bWVudCwgZmFsc2UsIGNvbGxlY3Rpb24sIGlnbm9yZWQgKTtcblx0XHRmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkge1xuXHRcdFx0ZnJhZ21lbnQgPSBmaXJzdDtcblx0XHR9XG5cblx0XHQvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBhbiBpbnRlcmVzdCBpbiBpZ25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2tcblx0XHRpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7XG5cdFx0XHRzY3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgXCJzY3JpcHRcIiApLCBkaXNhYmxlU2NyaXB0ICk7XG5cdFx0XHRoYXNTY3JpcHRzID0gc2NyaXB0cy5sZW5ndGg7XG5cblx0XHRcdC8vIFVzZSB0aGUgb3JpZ2luYWwgZnJhZ21lbnQgZm9yIHRoZSBsYXN0IGl0ZW1cblx0XHRcdC8vIGluc3RlYWQgb2YgdGhlIGZpcnN0IGJlY2F1c2UgaXQgY2FuIGVuZCB1cFxuXHRcdFx0Ly8gYmVpbmcgZW1wdGllZCBpbmNvcnJlY3RseSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgKCM4MDcwKS5cblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0bm9kZSA9IGZyYWdtZW50O1xuXG5cdFx0XHRcdGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IGpRdWVyeS5jbG9uZSggbm9kZSwgdHJ1ZSwgdHJ1ZSApO1xuXG5cdFx0XHRcdFx0Ly8gS2VlcCByZWZlcmVuY2VzIHRvIGNsb25lZCBzY3JpcHRzIGZvciBsYXRlciByZXN0b3JhdGlvblxuXHRcdFx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5LCBQaGFudG9tSlMgMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBdLCBub2RlLCBpICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblx0XHRcdFx0ZG9jID0gc2NyaXB0c1sgc2NyaXB0cy5sZW5ndGggLSAxIF0ub3duZXJEb2N1bWVudDtcblxuXHRcdFx0XHQvLyBSZWVuYWJsZSBzY3JpcHRzXG5cdFx0XHRcdGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTtcblxuXHRcdFx0XHQvLyBFdmFsdWF0ZSBleGVjdXRhYmxlIHNjcmlwdHMgb24gZmlyc3QgZG9jdW1lbnQgaW5zZXJ0aW9uXG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgaGFzU2NyaXB0czsgaSsrICkge1xuXHRcdFx0XHRcdG5vZGUgPSBzY3JpcHRzWyBpIF07XG5cdFx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgXCJcIiApICYmXG5cdFx0XHRcdFx0XHQhZGF0YVByaXYuYWNjZXNzKCBub2RlLCBcImdsb2JhbEV2YWxcIiApICYmXG5cdFx0XHRcdFx0XHRqUXVlcnkuY29udGFpbnMoIGRvYywgbm9kZSApICkge1xuXG5cdFx0XHRcdFx0XHRpZiAoIG5vZGUuc3JjICYmICggbm9kZS50eXBlIHx8IFwiXCIgKS50b0xvd2VyQ2FzZSgpICAhPT0gXCJtb2R1bGVcIiApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBPcHRpb25hbCBBSkFYIGRlcGVuZGVuY3ksIGJ1dCB3b24ndCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudFxuXHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5fZXZhbFVybCApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdERPTUV2YWwoIG5vZGUudGV4dENvbnRlbnQucmVwbGFjZSggcmNsZWFuU2NyaXB0LCBcIlwiICksIGRvYywgbm9kZSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjb2xsZWN0aW9uO1xufVxuXG5mdW5jdGlvbiByZW1vdmUoIGVsZW0sIHNlbGVjdG9yLCBrZWVwRGF0YSApIHtcblx0dmFyIG5vZGUsXG5cdFx0bm9kZXMgPSBzZWxlY3RvciA/IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBlbGVtICkgOiBlbGVtLFxuXHRcdGkgPSAwO1xuXG5cdGZvciAoIDsgKCBub2RlID0gbm9kZXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRpZiAoICFrZWVwRGF0YSAmJiBub2RlLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBub2RlICkgKTtcblx0XHR9XG5cblx0XHRpZiAoIG5vZGUucGFyZW50Tm9kZSApIHtcblx0XHRcdGlmICgga2VlcERhdGEgJiYgalF1ZXJ5LmNvbnRhaW5zKCBub2RlLm93bmVyRG9jdW1lbnQsIG5vZGUgKSApIHtcblx0XHRcdFx0c2V0R2xvYmFsRXZhbCggZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdH1cblx0XHRcdG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggbm9kZSApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtO1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdGh0bWxQcmVmaWx0ZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHJldHVybiBodG1sLnJlcGxhY2UoIHJ4aHRtbFRhZywgXCI8JDE+PC8kMj5cIiApO1xuXHR9LFxuXG5cdGNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0dmFyIGksIGwsIHNyY0VsZW1lbnRzLCBkZXN0RWxlbWVudHMsXG5cdFx0XHRjbG9uZSA9IGVsZW0uY2xvbmVOb2RlKCB0cnVlICksXG5cdFx0XHRpblBhZ2UgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApO1xuXG5cdFx0Ly8gRml4IElFIGNsb25pbmcgaXNzdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCAmJiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEgKSAmJlxuXHRcdFx0XHQhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIFdlIGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cHM6Ly9qc3BlcmYuY29tL2dldGFsbC12cy1zaXp6bGUvMlxuXHRcdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApO1xuXHRcdFx0c3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTtcblxuXHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmVcblx0XHRpZiAoIGRhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0XHRzcmNFbGVtZW50cyA9IHNyY0VsZW1lbnRzIHx8IGdldEFsbCggZWxlbSApO1xuXHRcdFx0XHRkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVudHMgfHwgZ2V0QWxsKCBjbG9uZSApO1xuXG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGNsb25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgXCJzY3JpcHRcIiApO1xuXHRcdGlmICggZGVzdEVsZW1lbnRzLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCBkZXN0RWxlbWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCBcInNjcmlwdFwiICkgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXRcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH0sXG5cblx0Y2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cdFx0dmFyIGRhdGEsIGVsZW0sIHR5cGUsXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWwsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9PSB1bmRlZmluZWQ7IGkrKyApIHtcblx0XHRcdGlmICggYWNjZXB0RGF0YSggZWxlbSApICkge1xuXHRcdFx0XHRpZiAoICggZGF0YSA9IGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSApICkge1xuXHRcdFx0XHRcdGlmICggZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWxbIHR5cGUgXSApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZFxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrXG5cdFx0XHRcdFx0Ly8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlXG5cdFx0XHRcdFx0ZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggZWxlbVsgZGF0YVVzZXIuZXhwYW5kbyBdICkge1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRkZXRhY2g6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHR9LFxuXG5cdHJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yICk7XG5cdH0sXG5cblx0dGV4dDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdFx0alF1ZXJ5LnRleHQoIHRoaXMgKSA6XG5cdFx0XHRcdHRoaXMuZW1wdHkoKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRcdHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdGFwcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdHByZXBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGJlZm9yZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YWZ0ZXI6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLm5leHRTaWJsaW5nICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZWxlbSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSB0aGlzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0Ly8gUHJldmVudCBtZW1vcnkgbGVha3Ncblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7XG5cblx0XHRcdFx0Ly8gUmVtb3ZlIGFueSByZW1haW5pbmcgbm9kZXNcblx0XHRcdFx0ZWxlbS50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHRkYXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRhQW5kRXZlbnRzO1xuXHRcdGRlZXBEYXRhQW5kRXZlbnRzID0gZGVlcERhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVwRGF0YUFuZEV2ZW50cztcblxuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApO1xuXHRcdH0gKTtcblx0fSxcblxuXHRodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF0gfHwge30sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHRsID0gdGhpcy5sZW5ndGg7XG5cblx0XHRcdGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pbm5lckhUTUw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0IGFuZCBqdXN0IHVzZSBpbm5lckhUTUxcblx0XHRcdGlmICggdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAmJlxuXHRcdFx0XHQhd3JhcE1hcFsgKCBydGFnTmFtZS5leGVjKCB2YWx1ZSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpIF0gKSB7XG5cblx0XHRcdFx0dmFsdWUgPSBqUXVlcnkuaHRtbFByZWZpbHRlciggdmFsdWUgKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRcdGVsZW0gPSB0aGlzWyBpIF0gfHwge307XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblx0XHRcdFx0XHRcdFx0ZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtID0gMDtcblxuXHRcdFx0XHQvLyBJZiB1c2luZyBpbm5lckhUTUwgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdXNlIHRoZSBmYWxsYmFjayBtZXRob2Rcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdHRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7XG5cdFx0XHR9XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fSxcblxuXHRyZXBsYWNlV2l0aDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGlnbm9yZWQgPSBbXTtcblxuXHRcdC8vIE1ha2UgdGhlIGNoYW5nZXMsIHJlcGxhY2luZyBlYWNoIG5vbi1pZ25vcmVkIGNvbnRleHQgZWxlbWVudCB3aXRoIHRoZSBuZXcgY29udGVudFxuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cblx0XHRcdGlmICggalF1ZXJ5LmluQXJyYXkoIHRoaXMsIGlnbm9yZWQgKSA8IDAgKSB7XG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7XG5cdFx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRcdHBhcmVudC5yZXBsYWNlQ2hpbGQoIGVsZW0sIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gRm9yY2UgY2FsbGJhY2sgaW52b2NhdGlvblxuXHRcdH0sIGlnbm9yZWQgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCgge1xuXHRhcHBlbmRUbzogXCJhcHBlbmRcIixcblx0cHJlcGVuZFRvOiBcInByZXBlbmRcIixcblx0aW5zZXJ0QmVmb3JlOiBcImJlZm9yZVwiLFxuXHRpbnNlcnRBZnRlcjogXCJhZnRlclwiLFxuXHRyZXBsYWNlQWxsOiBcInJlcGxhY2VXaXRoXCJcbn0sIGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGVsZW1zLFxuXHRcdFx0cmV0ID0gW10sXG5cdFx0XHRpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICksXG5cdFx0XHRsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDEsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgaSA8PSBsYXN0OyBpKysgKSB7XG5cdFx0XHRlbGVtcyA9IGkgPT09IGxhc3QgPyB0aGlzIDogdGhpcy5jbG9uZSggdHJ1ZSApO1xuXHRcdFx0alF1ZXJ5KCBpbnNlcnRbIGkgXSApWyBvcmlnaW5hbCBdKCBlbGVtcyApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdC8vIC5nZXQoKSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdHB1c2guYXBwbHkoIHJldCwgZWxlbXMuZ2V0KCkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApO1xuXHR9O1xufSApO1xudmFyIHJudW1ub25weCA9IG5ldyBSZWdFeHAoIFwiXihcIiArIHBudW0gKyBcIikoPyFweClbYS16JV0rJFwiLCBcImlcIiApO1xuXG52YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHksIEZpcmVmb3ggPD0zMCAoIzE1MDk4LCAjMTQxNTApXG5cdFx0Ly8gSUUgdGhyb3dzIG9uIGVsZW1lbnRzIGNyZWF0ZWQgaW4gcG9wdXBzXG5cdFx0Ly8gRkYgbWVhbndoaWxlIHRocm93cyBvbiBmcmFtZSBlbGVtZW50cyB0aHJvdWdoIFwiZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZVwiXG5cdFx0dmFyIHZpZXcgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG5cblx0XHRpZiAoICF2aWV3IHx8ICF2aWV3Lm9wZW5lciApIHtcblx0XHRcdHZpZXcgPSB3aW5kb3c7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSggZWxlbSApO1xuXHR9O1xuXG52YXIgcmJveFN0eWxlID0gbmV3IFJlZ0V4cCggY3NzRXhwYW5kLmpvaW4oIFwifFwiICksIFwiaVwiICk7XG5cblxuXG4oIGZ1bmN0aW9uKCkge1xuXG5cdC8vIEV4ZWN1dGluZyBib3RoIHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25lIGxheW91dFxuXHQvLyBzbyB0aGV5J3JlIGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSB0aGUgc2Vjb25kIGNvbXB1dGF0aW9uLlxuXHRmdW5jdGlvbiBjb21wdXRlU3R5bGVUZXN0cygpIHtcblxuXHRcdC8vIFRoaXMgaXMgYSBzaW5nbGV0b24sIHdlIG5lZWQgdG8gZXhlY3V0ZSBpdCBvbmx5IG9uY2Vcblx0XHRpZiAoICFkaXYgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDtcIiArXG5cdFx0XHRcIm1hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MFwiO1xuXHRcdGRpdi5zdHlsZS5jc3NUZXh0ID1cblx0XHRcdFwicG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO1wiICtcblx0XHRcdFwibWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDtcIiArXG5cdFx0XHRcIndpZHRoOjYwJTt0b3A6MSVcIjtcblx0XHRkb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoIGNvbnRhaW5lciApLmFwcGVuZENoaWxkKCBkaXYgKTtcblxuXHRcdHZhciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYgKTtcblx0XHRwaXhlbFBvc2l0aW9uVmFsID0gZGl2U3R5bGUudG9wICE9PSBcIjElXCI7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBGaXJlZm94IDw9MyAtIDQ0XG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0VmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS5tYXJnaW5MZWZ0ICkgPT09IDEyO1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgU2FmYXJpIDw9OS4xIC0gMTAuMSwgaU9TIDw9Ny4wIC0gOS4zXG5cdFx0Ly8gU29tZSBzdHlsZXMgY29tZSBiYWNrIHdpdGggcGVyY2VudGFnZSB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZXkgc2hvdWxkbid0XG5cdFx0ZGl2LnN0eWxlLnJpZ2h0ID0gXCI2MCVcIjtcblx0XHRwaXhlbEJveFN0eWxlc1ZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUucmlnaHQgKSA9PT0gMzY7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seVxuXHRcdC8vIERldGVjdCBtaXNyZXBvcnRpbmcgb2YgY29udGVudCBkaW1lbnNpb25zIGZvciBib3gtc2l6aW5nOmJvcmRlci1ib3ggZWxlbWVudHNcblx0XHRib3hTaXppbmdSZWxpYWJsZVZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUud2lkdGggKSA9PT0gMzY7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHQvLyBEZXRlY3Qgb3ZlcmZsb3c6c2Nyb2xsIHNjcmV3aW5lc3MgKGdoLTM2OTkpXG5cdFx0ZGl2LnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuXHRcdHNjcm9sbGJveFNpemVWYWwgPSBkaXYub2Zmc2V0V2lkdGggPT09IDM2IHx8IFwiYWJzb2x1dGVcIjtcblxuXHRcdGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7XG5cblx0XHQvLyBOdWxsaWZ5IHRoZSBkaXYgc28gaXQgd291bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSBtZW1vcnkgYW5kXG5cdFx0Ly8gaXQgd2lsbCBhbHNvIGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBlcmZvcm1lZFxuXHRcdGRpdiA9IG51bGw7XG5cdH1cblxuXHRmdW5jdGlvbiByb3VuZFBpeGVsTWVhc3VyZXMoIG1lYXN1cmUgKSB7XG5cdFx0cmV0dXJuIE1hdGgucm91bmQoIHBhcnNlRmxvYXQoIG1lYXN1cmUgKSApO1xuXHR9XG5cblx0dmFyIHBpeGVsUG9zaXRpb25WYWwsIGJveFNpemluZ1JlbGlhYmxlVmFsLCBzY3JvbGxib3hTaXplVmFsLCBwaXhlbEJveFN0eWxlc1ZhbCxcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnRWYWwsXG5cdFx0Y29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLFxuXHRcdGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKTtcblxuXHQvLyBGaW5pc2ggZWFybHkgaW4gbGltaXRlZCAobm9uLWJyb3dzZXIpIGVudmlyb25tZW50c1xuXHRpZiAoICFkaXYuc3R5bGUgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHQvLyBTdHlsZSBvZiBjbG9uZWQgZWxlbWVudCBhZmZlY3RzIHNvdXJjZSBlbGVtZW50IGNsb25lZCAoIzg5MDgpXG5cdGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9IFwiY29udGVudC1ib3hcIjtcblx0ZGl2LmNsb25lTm9kZSggdHJ1ZSApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJcIjtcblx0c3VwcG9ydC5jbGVhckNsb25lU3R5bGUgPSBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09IFwiY29udGVudC1ib3hcIjtcblxuXHRqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7XG5cdFx0Ym94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBib3hTaXppbmdSZWxpYWJsZVZhbDtcblx0XHR9LFxuXHRcdHBpeGVsQm94U3R5bGVzOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcGl4ZWxCb3hTdHlsZXNWYWw7XG5cdFx0fSxcblx0XHRwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDtcblx0XHR9LFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHJlbGlhYmxlTWFyZ2luTGVmdFZhbDtcblx0XHR9LFxuXHRcdHNjcm9sbGJveFNpemU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBzY3JvbGxib3hTaXplVmFsO1xuXHRcdH1cblx0fSApO1xufSApKCk7XG5cblxuZnVuY3Rpb24gY3VyQ1NTKCBlbGVtLCBuYW1lLCBjb21wdXRlZCApIHtcblx0dmFyIHdpZHRoLCBtaW5XaWR0aCwgbWF4V2lkdGgsIHJldCxcblxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggNTErXG5cdFx0Ly8gUmV0cmlldmluZyBzdHlsZSBiZWZvcmUgY29tcHV0ZWQgc29tZWhvd1xuXHRcdC8vIGZpeGVzIGFuIGlzc3VlIHdpdGggZ2V0dGluZyB3cm9uZyB2YWx1ZXNcblx0XHQvLyBvbiBkZXRhY2hlZCBlbGVtZW50c1xuXHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRjb21wdXRlZCA9IGNvbXB1dGVkIHx8IGdldFN0eWxlcyggZWxlbSApO1xuXG5cdC8vIGdldFByb3BlcnR5VmFsdWUgaXMgbmVlZGVkIGZvcjpcblx0Ly8gICAuY3NzKCdmaWx0ZXInKSAoSUUgOSBvbmx5LCAjMTI1MzcpXG5cdC8vICAgLmNzcygnLS1jdXN0b21Qcm9wZXJ0eSkgKCMzMTQ0KVxuXHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdHJldCA9IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBjb21wdXRlZFsgbmFtZSBdO1xuXG5cdFx0aWYgKCByZXQgPT09IFwiXCIgJiYgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgKSB7XG5cdFx0XHRyZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBBIHRyaWJ1dGUgdG8gdGhlIFwiYXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkc1wiXG5cdFx0Ly8gQW5kcm9pZCBCcm93c2VyIHJldHVybnMgcGVyY2VudGFnZSBmb3Igc29tZSB2YWx1ZXMsXG5cdFx0Ly8gYnV0IHdpZHRoIHNlZW1zIHRvIGJlIHJlbGlhYmx5IHBpeGVscy5cblx0XHQvLyBUaGlzIGlzIGFnYWluc3QgdGhlIENTU09NIGRyYWZ0IHNwZWM6XG5cdFx0Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXNcblx0XHRpZiAoICFzdXBwb3J0LnBpeGVsQm94U3R5bGVzKCkgJiYgcm51bW5vbnB4LnRlc3QoIHJldCApICYmIHJib3hTdHlsZS50ZXN0KCBuYW1lICkgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXNcblx0XHRcdHdpZHRoID0gc3R5bGUud2lkdGg7XG5cdFx0XHRtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoO1xuXHRcdFx0bWF4V2lkdGggPSBzdHlsZS5tYXhXaWR0aDtcblxuXHRcdFx0Ly8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dFxuXHRcdFx0c3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0O1xuXHRcdFx0cmV0ID0gY29tcHV0ZWQud2lkdGg7XG5cblx0XHRcdC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXNcblx0XHRcdHN0eWxlLndpZHRoID0gd2lkdGg7XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoO1xuXHRcdFx0c3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgP1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdC8vIElFIHJldHVybnMgekluZGV4IHZhbHVlIGFzIGFuIGludGVnZXIuXG5cdFx0cmV0ICsgXCJcIiA6XG5cdFx0cmV0O1xufVxuXG5cbmZ1bmN0aW9uIGFkZEdldEhvb2tJZiggY29uZGl0aW9uRm4sIGhvb2tGbiApIHtcblxuXHQvLyBEZWZpbmUgdGhlIGhvb2ssIHdlJ2xsIGNoZWNrIG9uIHRoZSBmaXJzdCBydW4gaWYgaXQncyByZWFsbHkgbmVlZGVkLlxuXHRyZXR1cm4ge1xuXHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGNvbmRpdGlvbkZuKCkgKSB7XG5cblx0XHRcdFx0Ly8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVlXG5cdFx0XHRcdC8vIHRvIG1pc3NpbmcgZGVwZW5kZW5jeSksIHJlbW92ZSBpdC5cblx0XHRcdFx0ZGVsZXRlIHRoaXMuZ2V0O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhvb2sgbmVlZGVkOyByZWRlZmluZSBpdCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLlxuXHRcdFx0cmV0dXJuICggdGhpcy5nZXQgPSBob29rRm4gKS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fVxuXHR9O1xufVxuXG5cbnZhclxuXG5cdC8vIFN3YXBwYWJsZSBpZiBkaXNwbGF5IGlzIG5vbmUgb3Igc3RhcnRzIHdpdGggdGFibGVcblx0Ly8gZXhjZXB0IFwidGFibGVcIiwgXCJ0YWJsZS1jZWxsXCIsIG9yIFwidGFibGUtY2FwdGlvblwiXG5cdC8vIFNlZSBoZXJlIGZvciBkaXNwbGF5IHZhbHVlczogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvZGlzcGxheVxuXHRyZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sXG5cdHJjdXN0b21Qcm9wID0gL14tLS8sXG5cdGNzc1Nob3cgPSB7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIHZpc2liaWxpdHk6IFwiaGlkZGVuXCIsIGRpc3BsYXk6IFwiYmxvY2tcIiB9LFxuXHRjc3NOb3JtYWxUcmFuc2Zvcm0gPSB7XG5cdFx0bGV0dGVyU3BhY2luZzogXCIwXCIsXG5cdFx0Zm9udFdlaWdodDogXCI0MDBcIlxuXHR9LFxuXG5cdGNzc1ByZWZpeGVzID0gWyBcIldlYmtpdFwiLCBcIk1velwiLCBcIm1zXCIgXSxcblx0ZW1wdHlTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKS5zdHlsZTtcblxuLy8gUmV0dXJuIGEgY3NzIHByb3BlcnR5IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eVxuZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB7XG5cblx0Ly8gU2hvcnRjdXQgZm9yIG5hbWVzIHRoYXQgYXJlIG5vdCB2ZW5kb3IgcHJlZml4ZWRcblx0aWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblxuXHQvLyBDaGVjayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzXG5cdHZhciBjYXBOYW1lID0gbmFtZVsgMCBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKCAxICksXG5cdFx0aSA9IGNzc1ByZWZpeGVzLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRuYW1lID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7XG5cdFx0aWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7XG5cdFx0XHRyZXR1cm4gbmFtZTtcblx0XHR9XG5cdH1cbn1cblxuLy8gUmV0dXJuIGEgcHJvcGVydHkgbWFwcGVkIGFsb25nIHdoYXQgalF1ZXJ5LmNzc1Byb3BzIHN1Z2dlc3RzIG9yIHRvXG4vLyBhIHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eS5cbmZ1bmN0aW9uIGZpbmFsUHJvcE5hbWUoIG5hbWUgKSB7XG5cdHZhciByZXQgPSBqUXVlcnkuY3NzUHJvcHNbIG5hbWUgXTtcblx0aWYgKCAhcmV0ICkge1xuXHRcdHJldCA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB8fCBuYW1lO1xuXHR9XG5cdHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKSB7XG5cblx0Ly8gQW55IHJlbGF0aXZlICgrLy0pIHZhbHVlcyBoYXZlIGFscmVhZHkgYmVlblxuXHQvLyBub3JtYWxpemVkIGF0IHRoaXMgcG9pbnRcblx0dmFyIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICk7XG5cdHJldHVybiBtYXRjaGVzID9cblxuXHRcdC8vIEd1YXJkIGFnYWluc3QgdW5kZWZpbmVkIFwic3VidHJhY3RcIiwgZS5nLiwgd2hlbiB1c2VkIGFzIGluIGNzc0hvb2tzXG5cdFx0TWF0aC5tYXgoIDAsIG1hdGNoZXNbIDIgXSAtICggc3VidHJhY3QgfHwgMCApICkgKyAoIG1hdGNoZXNbIDMgXSB8fCBcInB4XCIgKSA6XG5cdFx0dmFsdWU7XG59XG5cbmZ1bmN0aW9uIGJveE1vZGVsQWRqdXN0bWVudCggZWxlbSwgZGltZW5zaW9uLCBib3gsIGlzQm9yZGVyQm94LCBzdHlsZXMsIGNvbXB1dGVkVmFsICkge1xuXHR2YXIgaSA9IGRpbWVuc2lvbiA9PT0gXCJ3aWR0aFwiID8gMSA6IDAsXG5cdFx0ZXh0cmEgPSAwLFxuXHRcdGRlbHRhID0gMDtcblxuXHQvLyBBZGp1c3RtZW50IG1heSBub3QgYmUgbmVjZXNzYXJ5XG5cdGlmICggYm94ID09PSAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICkgKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblxuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgKSB7XG5cblx0XHQvLyBCb3RoIGJveCBtb2RlbHMgZXhjbHVkZSBtYXJnaW5cblx0XHRpZiAoIGJveCA9PT0gXCJtYXJnaW5cIiApIHtcblx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIGJveCArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBJZiB3ZSBnZXQgaGVyZSB3aXRoIGEgY29udGVudC1ib3gsIHdlJ3JlIHNlZWtpbmcgXCJwYWRkaW5nXCIgb3IgXCJib3JkZXJcIiBvciBcIm1hcmdpblwiXG5cdFx0aWYgKCAhaXNCb3JkZXJCb3ggKSB7XG5cblx0XHRcdC8vIEFkZCBwYWRkaW5nXG5cdFx0XHRkZWx0YSArPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblxuXHRcdFx0Ly8gRm9yIFwiYm9yZGVyXCIgb3IgXCJtYXJnaW5cIiwgYWRkIGJvcmRlclxuXHRcdFx0aWYgKCBib3ggIT09IFwicGFkZGluZ1wiICkge1xuXHRcdFx0XHRkZWx0YSArPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBCdXQgc3RpbGwga2VlcCB0cmFjayBvZiBpdCBvdGhlcndpc2Vcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGV4dHJhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cblx0XHQvLyBJZiB3ZSBnZXQgaGVyZSB3aXRoIGEgYm9yZGVyLWJveCAoY29udGVudCArIHBhZGRpbmcgKyBib3JkZXIpLCB3ZSdyZSBzZWVraW5nIFwiY29udGVudFwiIG9yXG5cdFx0Ly8gXCJwYWRkaW5nXCIgb3IgXCJtYXJnaW5cIlxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIEZvciBcImNvbnRlbnRcIiwgc3VidHJhY3QgcGFkZGluZ1xuXHRcdFx0aWYgKCBib3ggPT09IFwiY29udGVudFwiICkge1xuXHRcdFx0XHRkZWx0YSAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yIFwiY29udGVudFwiIG9yIFwicGFkZGluZ1wiLCBzdWJ0cmFjdCBib3JkZXJcblx0XHRcdGlmICggYm94ICE9PSBcIm1hcmdpblwiICkge1xuXHRcdFx0XHRkZWx0YSAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIEFjY291bnQgZm9yIHBvc2l0aXZlIGNvbnRlbnQtYm94IHNjcm9sbCBndXR0ZXIgd2hlbiByZXF1ZXN0ZWQgYnkgcHJvdmlkaW5nIGNvbXB1dGVkVmFsXG5cdGlmICggIWlzQm9yZGVyQm94ICYmIGNvbXB1dGVkVmFsID49IDAgKSB7XG5cblx0XHQvLyBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgaXMgYSByb3VuZGVkIHN1bSBvZiBjb250ZW50LCBwYWRkaW5nLCBzY3JvbGwgZ3V0dGVyLCBhbmQgYm9yZGVyXG5cdFx0Ly8gQXNzdW1pbmcgaW50ZWdlciBzY3JvbGwgZ3V0dGVyLCBzdWJ0cmFjdCB0aGUgcmVzdCBhbmQgcm91bmQgZG93blxuXHRcdGRlbHRhICs9IE1hdGgubWF4KCAwLCBNYXRoLmNlaWwoXG5cdFx0XHRlbGVtWyBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApIF0gLVxuXHRcdFx0Y29tcHV0ZWRWYWwgLVxuXHRcdFx0ZGVsdGEgLVxuXHRcdFx0ZXh0cmEgLVxuXHRcdFx0MC41XG5cdFx0KSApO1xuXHR9XG5cblx0cmV0dXJuIGRlbHRhO1xufVxuXG5mdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICkge1xuXG5cdC8vIFN0YXJ0IHdpdGggY29tcHV0ZWQgc3R5bGVcblx0dmFyIHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLFxuXHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgZGltZW5zaW9uLCBzdHlsZXMgKSxcblx0XHRpc0JvcmRlckJveCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCIsXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IGlzQm9yZGVyQm94O1xuXG5cdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD01NFxuXHQvLyBSZXR1cm4gYSBjb25mb3VuZGluZyBub24tcGl4ZWwgdmFsdWUgb3IgZmVpZ24gaWdub3JhbmNlLCBhcyBhcHByb3ByaWF0ZS5cblx0aWYgKCBybnVtbm9ucHgudGVzdCggdmFsICkgKSB7XG5cdFx0aWYgKCAhZXh0cmEgKSB7XG5cdFx0XHRyZXR1cm4gdmFsO1xuXHRcdH1cblx0XHR2YWwgPSBcImF1dG9cIjtcblx0fVxuXG5cdC8vIENoZWNrIGZvciBzdHlsZSBpbiBjYXNlIGEgYnJvd3NlciB3aGljaCByZXR1cm5zIHVucmVsaWFibGUgdmFsdWVzXG5cdC8vIGZvciBnZXRDb21wdXRlZFN0eWxlIHNpbGVudGx5IGZhbGxzIGJhY2sgdG8gdGhlIHJlbGlhYmxlIGVsZW0uc3R5bGVcblx0dmFsdWVJc0JvcmRlckJveCA9IHZhbHVlSXNCb3JkZXJCb3ggJiZcblx0XHQoIHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSB8fCB2YWwgPT09IGVsZW0uc3R5bGVbIGRpbWVuc2lvbiBdICk7XG5cblx0Ly8gRmFsbCBiYWNrIHRvIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCB3aGVuIHZhbHVlIGlzIFwiYXV0b1wiXG5cdC8vIFRoaXMgaGFwcGVucyBmb3IgaW5saW5lIGVsZW1lbnRzIHdpdGggbm8gZXhwbGljaXQgc2V0dGluZyAoZ2gtMzU3MSlcblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMSAtIDQuMyBvbmx5XG5cdC8vIEFsc28gdXNlIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBmb3IgbWlzcmVwb3J0ZWQgaW5saW5lIGRpbWVuc2lvbnMgKGdoLTM2MDIpXG5cdGlmICggdmFsID09PSBcImF1dG9cIiB8fFxuXHRcdCFwYXJzZUZsb2F0KCB2YWwgKSAmJiBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImlubGluZVwiICkge1xuXG5cdFx0dmFsID0gZWxlbVsgXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKSBdO1xuXG5cdFx0Ly8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IHByb3ZpZGUgYm9yZGVyLWJveCB2YWx1ZXNcblx0XHR2YWx1ZUlzQm9yZGVyQm94ID0gdHJ1ZTtcblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBcIlwiIGFuZCBhdXRvXG5cdHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7XG5cblx0Ly8gQWRqdXN0IGZvciB0aGUgZWxlbWVudCdzIGJveCBtb2RlbFxuXHRyZXR1cm4gKCB2YWwgK1xuXHRcdGJveE1vZGVsQWRqdXN0bWVudChcblx0XHRcdGVsZW0sXG5cdFx0XHRkaW1lbnNpb24sXG5cdFx0XHRleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICksXG5cdFx0XHR2YWx1ZUlzQm9yZGVyQm94LFxuXHRcdFx0c3R5bGVzLFxuXG5cdFx0XHQvLyBQcm92aWRlIHRoZSBjdXJyZW50IGNvbXB1dGVkIHNpemUgdG8gcmVxdWVzdCBzY3JvbGwgZ3V0dGVyIGNhbGN1bGF0aW9uIChnaC0zNTg5KVxuXHRcdFx0dmFsXG5cdFx0KVxuXHQpICsgXCJweFwiO1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gQWRkIGluIHN0eWxlIHByb3BlcnR5IGhvb2tzIGZvciBvdmVycmlkaW5nIHRoZSBkZWZhdWx0XG5cdC8vIGJlaGF2aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eVxuXHRjc3NIb29rczoge1xuXHRcdG9wYWNpdHk6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdFx0Ly8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9tIG9wYWNpdHlcblx0XHRcdFx0XHR2YXIgcmV0ID0gY3VyQ1NTKCBlbGVtLCBcIm9wYWNpdHlcIiApO1xuXHRcdFx0XHRcdHJldHVybiByZXQgPT09IFwiXCIgPyBcIjFcIiA6IHJldDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvLyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCBcInB4XCIgdG8gdGhlc2UgcG9zc2libHktdW5pdGxlc3MgcHJvcGVydGllc1xuXHRjc3NOdW1iZXI6IHtcblx0XHRcImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50XCI6IHRydWUsXG5cdFx0XCJjb2x1bW5Db3VudFwiOiB0cnVlLFxuXHRcdFwiZmlsbE9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcImZsZXhHcm93XCI6IHRydWUsXG5cdFx0XCJmbGV4U2hyaW5rXCI6IHRydWUsXG5cdFx0XCJmb250V2VpZ2h0XCI6IHRydWUsXG5cdFx0XCJsaW5lSGVpZ2h0XCI6IHRydWUsXG5cdFx0XCJvcGFjaXR5XCI6IHRydWUsXG5cdFx0XCJvcmRlclwiOiB0cnVlLFxuXHRcdFwib3JwaGFuc1wiOiB0cnVlLFxuXHRcdFwid2lkb3dzXCI6IHRydWUsXG5cdFx0XCJ6SW5kZXhcIjogdHJ1ZSxcblx0XHRcInpvb21cIjogdHJ1ZVxuXHR9LFxuXG5cdC8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdob3NlIG5hbWVzIHlvdSB3aXNoIHRvIGZpeCBiZWZvcmVcblx0Ly8gc2V0dGluZyBvciBnZXR0aW5nIHRoZSB2YWx1ZVxuXHRjc3NQcm9wczoge30sXG5cblx0Ly8gR2V0IGFuZCBzZXQgdGhlIHN0eWxlIHByb3BlcnR5IG9uIGEgRE9NIE5vZGVcblx0c3R5bGU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSwgZXh0cmEgKSB7XG5cblx0XHQvLyBEb24ndCBzZXQgc3R5bGVzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXNcblx0XHRpZiAoICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAhZWxlbS5zdHlsZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWVcblx0XHR2YXIgcmV0LCB0eXBlLCBob29rcyxcblx0XHRcdG9yaWdOYW1lID0gY2FtZWxDYXNlKCBuYW1lICksXG5cdFx0XHRpc0N1c3RvbVByb3AgPSByY3VzdG9tUHJvcC50ZXN0KCBuYW1lICksXG5cdFx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWUuIFdlIGRvbid0XG5cdFx0Ly8gd2FudCB0byBxdWVyeSB0aGUgdmFsdWUgaWYgaXQgaXMgYSBDU1MgY3VzdG9tIHByb3BlcnR5XG5cdFx0Ly8gc2luY2UgdGhleSBhcmUgdXNlci1kZWZpbmVkLlxuXHRcdGlmICggIWlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdG5hbWUgPSBmaW5hbFByb3BOYW1lKCBvcmlnTmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIEdldHMgaG9vayBmb3IgdGhlIHByZWZpeGVkIHZlcnNpb24sIHRoZW4gdW5wcmVmaXhlZCB2ZXJzaW9uXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07XG5cblx0XHQvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWVcblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0eXBlID0gdHlwZW9mIHZhbHVlO1xuXG5cdFx0XHQvLyBDb252ZXJ0IFwiKz1cIiBvciBcIi09XCIgdG8gcmVsYXRpdmUgbnVtYmVycyAoIzczNDUpXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgKCByZXQgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkgKSAmJiByZXRbIDEgXSApIHtcblx0XHRcdFx0dmFsdWUgPSBhZGp1c3RDU1MoIGVsZW0sIG5hbWUsIHJldCApO1xuXG5cdFx0XHRcdC8vIEZpeGVzIGJ1ZyAjOTIzN1xuXHRcdFx0XHR0eXBlID0gXCJudW1iZXJcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbnVsbCBhbmQgTmFOIHZhbHVlcyBhcmVuJ3Qgc2V0ICgjNzExNilcblx0XHRcdGlmICggdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgYSBudW1iZXIgd2FzIHBhc3NlZCBpbiwgYWRkIHRoZSB1bml0IChleGNlcHQgZm9yIGNlcnRhaW4gQ1NTIHByb3BlcnRpZXMpXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdHZhbHVlICs9IHJldCAmJiByZXRbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gPyBcIlwiIDogXCJweFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGJhY2tncm91bmQtKiBwcm9wcyBhZmZlY3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXNcblx0XHRcdGlmICggIXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSBcIlwiICYmIG5hbWUuaW5kZXhPZiggXCJiYWNrZ3JvdW5kXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IFwiaW5oZXJpdFwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWVcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fFxuXHRcdFx0XHQoIHZhbHVlID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0aWYgKCBpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRcdFx0c3R5bGUuc2V0UHJvcGVydHkoIG5hbWUsIHZhbHVlICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgbm9uLWNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHQoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE90aGVyd2lzZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2JqZWN0XG5cdFx0XHRyZXR1cm4gc3R5bGVbIG5hbWUgXTtcblx0XHR9XG5cdH0sXG5cblx0Y3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHtcblx0XHR2YXIgdmFsLCBudW0sIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBjYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIG1vZGlmeSB0aGUgdmFsdWUgaWYgaXQgaXMgYSBDU1MgY3VzdG9tIHByb3BlcnR5XG5cdFx0Ly8gc2luY2UgdGhleSBhcmUgdXNlci1kZWZpbmVkLlxuXHRcdGlmICggIWlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdG5hbWUgPSBmaW5hbFByb3BOYW1lKCBvcmlnTmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIG5hbWVcblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsID0gaG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0XG5cdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBcIm5vcm1hbFwiIHRvIGNvbXB1dGVkIHZhbHVlXG5cdFx0aWYgKCB2YWwgPT09IFwibm9ybWFsXCIgJiYgbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7XG5cdFx0XHR2YWwgPSBjc3NOb3JtYWxUcmFuc2Zvcm1bIG5hbWUgXTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9yIGEgcXVhbGlmaWVyIHdhcyBwcm92aWRlZCBhbmQgdmFsIGxvb2tzIG51bWVyaWNcblx0XHRpZiAoIGV4dHJhID09PSBcIlwiIHx8IGV4dHJhICkge1xuXHRcdFx0bnVtID0gcGFyc2VGbG9hdCggdmFsICk7XG5cdFx0XHRyZXR1cm4gZXh0cmEgPT09IHRydWUgfHwgaXNGaW5pdGUoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbDtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcImhlaWdodFwiLCBcIndpZHRoXCIgXSwgZnVuY3Rpb24oIGksIGRpbWVuc2lvbiApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBkaW1lbnNpb24gXSA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwgZXh0cmEgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdC8vIENlcnRhaW4gZWxlbWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbVxuXHRcdFx0XHQvLyBidXQgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdFxuXHRcdFx0XHRyZXR1cm4gcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgKSAmJlxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDgrXG5cdFx0XHRcdFx0Ly8gVGFibGUgY29sdW1ucyBpbiBTYWZhcmkgaGF2ZSBub24temVybyBvZmZzZXRXaWR0aCAmIHplcm9cblx0XHRcdFx0XHQvLyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB1bmxlc3MgZGlzcGxheSBpcyBjaGFuZ2VkLlxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHRcdFx0XHRcdC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGEgZGlzY29ubmVjdGVkIG5vZGVcblx0XHRcdFx0XHQvLyBpbiBJRSB0aHJvd3MgYW4gZXJyb3IuXG5cdFx0XHRcdFx0KCAhZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCB8fCAhZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCApID9cblx0XHRcdFx0XHRcdHN3YXAoIGVsZW0sIGNzc1Nob3csIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApO1xuXHRcdFx0XHRcdFx0fSApIDpcblx0XHRcdFx0XHRcdGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIGV4dHJhICkge1xuXHRcdFx0dmFyIG1hdGNoZXMsXG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLFxuXHRcdFx0XHRpc0JvcmRlckJveCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCIsXG5cdFx0XHRcdHN1YnRyYWN0ID0gZXh0cmEgJiYgYm94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0XHRcdGVsZW0sXG5cdFx0XHRcdFx0ZGltZW5zaW9uLFxuXHRcdFx0XHRcdGV4dHJhLFxuXHRcdFx0XHRcdGlzQm9yZGVyQm94LFxuXHRcdFx0XHRcdHN0eWxlc1xuXHRcdFx0XHQpO1xuXG5cdFx0XHQvLyBBY2NvdW50IGZvciB1bnJlbGlhYmxlIGJvcmRlci1ib3ggZGltZW5zaW9ucyBieSBjb21wYXJpbmcgb2Zmc2V0KiB0byBjb21wdXRlZCBhbmRcblx0XHRcdC8vIGZha2luZyBhIGNvbnRlbnQtYm94IHRvIGdldCBib3JkZXIgYW5kIHBhZGRpbmcgKGdoLTM2OTkpXG5cdFx0XHRpZiAoIGlzQm9yZGVyQm94ICYmIHN1cHBvcnQuc2Nyb2xsYm94U2l6ZSgpID09PSBzdHlsZXMucG9zaXRpb24gKSB7XG5cdFx0XHRcdHN1YnRyYWN0IC09IE1hdGguY2VpbChcblx0XHRcdFx0XHRlbGVtWyBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApIF0gLVxuXHRcdFx0XHRcdHBhcnNlRmxvYXQoIHN0eWxlc1sgZGltZW5zaW9uIF0gKSAtXG5cdFx0XHRcdFx0Ym94TW9kZWxBZGp1c3RtZW50KCBlbGVtLCBkaW1lbnNpb24sIFwiYm9yZGVyXCIsIGZhbHNlLCBzdHlsZXMgKSAtXG5cdFx0XHRcdFx0MC41XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnZlcnQgdG8gcGl4ZWxzIGlmIHZhbHVlIGFkanVzdG1lbnQgaXMgbmVlZGVkXG5cdFx0XHRpZiAoIHN1YnRyYWN0ICYmICggbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmXG5cdFx0XHRcdCggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApICE9PSBcInB4XCIgKSB7XG5cblx0XHRcdFx0ZWxlbS5zdHlsZVsgZGltZW5zaW9uIF0gPSB2YWx1ZTtcblx0XHRcdFx0dmFsdWUgPSBqUXVlcnkuY3NzKCBlbGVtLCBkaW1lbnNpb24gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKTtcblx0XHR9XG5cdH07XG59ICk7XG5cbmpRdWVyeS5jc3NIb29rcy5tYXJnaW5MZWZ0ID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luTGVmdCxcblx0ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4gKCBwYXJzZUZsb2F0KCBjdXJDU1MoIGVsZW0sIFwibWFyZ2luTGVmdFwiICkgKSB8fFxuXHRcdFx0XHRlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLVxuXHRcdFx0XHRcdHN3YXAoIGVsZW0sIHsgbWFyZ2luTGVmdDogMCB9LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cdFx0XHRcdFx0fSApXG5cdFx0XHRcdCkgKyBcInB4XCI7XG5cdFx0fVxuXHR9XG4pO1xuXG4vLyBUaGVzZSBob29rcyBhcmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzXG5qUXVlcnkuZWFjaCgge1xuXHRtYXJnaW46IFwiXCIsXG5cdHBhZGRpbmc6IFwiXCIsXG5cdGJvcmRlcjogXCJXaWR0aFwiXG59LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0gPSB7XG5cdFx0ZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgaSA9IDAsXG5cdFx0XHRcdGV4cGFuZGVkID0ge30sXG5cblx0XHRcdFx0Ly8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3RyaW5nXG5cdFx0XHRcdHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUuc3BsaXQoIFwiIFwiICkgOiBbIHZhbHVlIF07XG5cblx0XHRcdGZvciAoIDsgaSA8IDQ7IGkrKyApIHtcblx0XHRcdFx0ZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFuZFsgaSBdICsgc3VmZml4IF0gPVxuXHRcdFx0XHRcdHBhcnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV4cGFuZGVkO1xuXHRcdH1cblx0fTtcblxuXHRpZiAoIHByZWZpeCAhPT0gXCJtYXJnaW5cIiApIHtcblx0XHRqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdLnNldCA9IHNldFBvc2l0aXZlTnVtYmVyO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0Y3NzOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0dmFyIHN0eWxlcywgbGVuLFxuXHRcdFx0XHRtYXAgPSB7fSxcblx0XHRcdFx0aSA9IDA7XG5cblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggbmFtZSApICkge1xuXHRcdFx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKTtcblx0XHRcdFx0bGVuID0gbmFtZS5sZW5ndGg7XG5cblx0XHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0bWFwWyBuYW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIG1hcDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVlICkgOlxuXHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7XG5cdFx0fSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH1cbn0gKTtcblxuXG5mdW5jdGlvbiBUd2VlbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKSB7XG5cdHJldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICk7XG59XG5qUXVlcnkuVHdlZW4gPSBUd2VlbjtcblxuVHdlZW4ucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogVHdlZW4sXG5cdGluaXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5pdCApIHtcblx0XHR0aGlzLmVsZW0gPSBlbGVtO1xuXHRcdHRoaXMucHJvcCA9IHByb3A7XG5cdFx0dGhpcy5lYXNpbmcgPSBlYXNpbmcgfHwgalF1ZXJ5LmVhc2luZy5fZGVmYXVsdDtcblx0XHR0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCk7XG5cdFx0dGhpcy5lbmQgPSBlbmQ7XG5cdFx0dGhpcy51bml0ID0gdW5pdCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0fSxcblx0Y3VyOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0cmV0dXJuIGhvb2tzICYmIGhvb2tzLmdldCA/XG5cdFx0XHRob29rcy5nZXQoIHRoaXMgKSA6XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlzICk7XG5cdH0sXG5cdHJ1bjogZnVuY3Rpb24oIHBlcmNlbnQgKSB7XG5cdFx0dmFyIGVhc2VkLFxuXHRcdFx0aG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0galF1ZXJ5LmVhc2luZ1sgdGhpcy5lYXNpbmcgXShcblx0XHRcdFx0cGVyY2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0gcGVyY2VudDtcblx0XHR9XG5cdFx0dGhpcy5ub3cgPSAoIHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICogZWFzZWQgKyB0aGlzLnN0YXJ0O1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHtcblx0XHRcdHRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMgKTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnNldCApIHtcblx0XHRcdGhvb2tzLnNldCggdGhpcyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KCB0aGlzICk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59O1xuXG5Ud2Vlbi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7XG5cblR3ZWVuLnByb3BIb29rcyA9IHtcblx0X2RlZmF1bHQ6IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRcdHZhciByZXN1bHQ7XG5cblx0XHRcdC8vIFVzZSBhIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGRpcmVjdGx5IHdoZW4gaXQgaXMgbm90IGEgRE9NIGVsZW1lbnQsXG5cdFx0XHQvLyBvciB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHN0eWxlIHByb3BlcnR5IHRoYXQgZXhpc3RzLlxuXHRcdFx0aWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICE9PSAxIHx8XG5cdFx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSAhPSBudWxsICYmIHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsICkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHlcblx0XHRcdC8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxsYmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFyc2UgZmFpbHMuXG5cdFx0XHQvLyBTaW1wbGUgdmFsdWVzIHN1Y2ggYXMgXCIxMHB4XCIgYXJlIHBhcnNlZCB0byBGbG9hdDtcblx0XHRcdC8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgXCJyb3RhdGUoMXJhZClcIiBhcmUgcmV0dXJuZWQgYXMtaXMuXG5cdFx0XHRyZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCBcIlwiICk7XG5cblx0XHRcdC8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVuZGVmaW5lZCBhbmQgXCJhdXRvXCIgYXJlIGNvbnZlcnRlZCB0byAwLlxuXHRcdFx0cmV0dXJuICFyZXN1bHQgfHwgcmVzdWx0ID09PSBcImF1dG9cIiA/IDAgOiByZXN1bHQ7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblxuXHRcdFx0Ly8gVXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQuXG5cdFx0XHQvLyBVc2UgY3NzSG9vayBpZiBpdHMgdGhlcmUuXG5cdFx0XHQvLyBVc2UgLnN0eWxlIGlmIGF2YWlsYWJsZSBhbmQgdXNlIHBsYWluIHByb3BlcnRpZXMgd2hlcmUgYXZhaWxhYmxlLlxuXHRcdFx0aWYgKCBqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdICkge1xuXHRcdFx0XHRqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApO1xuXHRcdFx0fSBlbHNlIGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHQoIHR3ZWVuLmVsZW0uc3R5bGVbIGpRdWVyeS5jc3NQcm9wc1sgdHdlZW4ucHJvcCBdIF0gIT0gbnVsbCB8fFxuXHRcdFx0XHRcdGpRdWVyeS5jc3NIb29rc1sgdHdlZW4ucHJvcCBdICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbi8vIFBhbmljIGJhc2VkIGFwcHJvYWNoIHRvIHNldHRpbmcgdGhpbmdzIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuVHdlZW4ucHJvcEhvb2tzLnNjcm9sbFRvcCA9IFR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0ge1xuXHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgJiYgdHdlZW4uZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmVhc2luZyA9IHtcblx0bGluZWFyOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gcDtcblx0fSxcblx0c3dpbmc6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7XG5cdH0sXG5cdF9kZWZhdWx0OiBcInN3aW5nXCJcbn07XG5cbmpRdWVyeS5meCA9IFR3ZWVuLnByb3RvdHlwZS5pbml0O1xuXG4vLyBCYWNrIGNvbXBhdCA8MS44IGV4dGVuc2lvbiBwb2ludFxualF1ZXJ5LmZ4LnN0ZXAgPSB7fTtcblxuXG5cblxudmFyXG5cdGZ4Tm93LCBpblByb2dyZXNzLFxuXHRyZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxcblx0cnJ1biA9IC9xdWV1ZUhvb2tzJC87XG5cbmZ1bmN0aW9uIHNjaGVkdWxlKCkge1xuXHRpZiAoIGluUHJvZ3Jlc3MgKSB7XG5cdFx0aWYgKCBkb2N1bWVudC5oaWRkZW4gPT09IGZhbHNlICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKSB7XG5cdFx0XHR3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBzY2hlZHVsZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3aW5kb3cuc2V0VGltZW91dCggc2NoZWR1bGUsIGpRdWVyeS5meC5pbnRlcnZhbCApO1xuXHRcdH1cblxuXHRcdGpRdWVyeS5meC50aWNrKCk7XG5cdH1cbn1cblxuLy8gQW5pbWF0aW9ucyBjcmVhdGVkIHN5bmNocm9ub3VzbHkgd2lsbCBydW4gc3luY2hyb25vdXNseVxuZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRmeE5vdyA9IHVuZGVmaW5lZDtcblx0fSApO1xuXHRyZXR1cm4gKCBmeE5vdyA9IERhdGUubm93KCkgKTtcbn1cblxuLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb25cbmZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7XG5cdHZhciB3aGljaCxcblx0XHRpID0gMCxcblx0XHRhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07XG5cblx0Ly8gSWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLFxuXHQvLyBvdGhlcndpc2Ugc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodFxuXHRpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDtcblx0Zm9yICggOyBpIDwgNDsgaSArPSAyIC0gaW5jbHVkZVdpZHRoICkge1xuXHRcdHdoaWNoID0gY3NzRXhwYW5kWyBpIF07XG5cdFx0YXR0cnNbIFwibWFyZ2luXCIgKyB3aGljaCBdID0gYXR0cnNbIFwicGFkZGluZ1wiICsgd2hpY2ggXSA9IHR5cGU7XG5cdH1cblxuXHRpZiAoIGluY2x1ZGVXaWR0aCApIHtcblx0XHRhdHRycy5vcGFjaXR5ID0gYXR0cnMud2lkdGggPSB0eXBlO1xuXHR9XG5cblx0cmV0dXJuIGF0dHJzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUd2VlbiggdmFsdWUsIHByb3AsIGFuaW1hdGlvbiApIHtcblx0dmFyIHR3ZWVuLFxuXHRcdGNvbGxlY3Rpb24gPSAoIEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCBBbmltYXRpb24udHdlZW5lcnNbIFwiKlwiIF0gKSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCAoIHR3ZWVuID0gY29sbGVjdGlvblsgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSApIHtcblxuXHRcdFx0Ly8gV2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHlcblx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7XG5cdHZhciBwcm9wLCB2YWx1ZSwgdG9nZ2xlLCBob29rcywgb2xkZmlyZSwgcHJvcFR3ZWVuLCByZXN0b3JlRGlzcGxheSwgZGlzcGxheSxcblx0XHRpc0JveCA9IFwid2lkdGhcIiBpbiBwcm9wcyB8fCBcImhlaWdodFwiIGluIHByb3BzLFxuXHRcdGFuaW0gPSB0aGlzLFxuXHRcdG9yaWcgPSB7fSxcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGUsXG5cdFx0aGlkZGVuID0gZWxlbS5ub2RlVHlwZSAmJiBpc0hpZGRlbldpdGhpblRyZWUoIGVsZW0gKSxcblx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJmeHNob3dcIiApO1xuXG5cdC8vIFF1ZXVlLXNraXBwaW5nIGFuaW1hdGlvbnMgaGlqYWNrIHRoZSBmeCBob29rc1xuXHRpZiAoICFvcHRzLnF1ZXVlICkge1xuXHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCBcImZ4XCIgKTtcblx0XHRpZiAoIGhvb2tzLnVucXVldWVkID09IG51bGwgKSB7XG5cdFx0XHRob29rcy51bnF1ZXVlZCA9IDA7XG5cdFx0XHRvbGRmaXJlID0gaG9va3MuZW1wdHkuZmlyZTtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhaG9va3MudW5xdWV1ZWQgKSB7XG5cdFx0XHRcdFx0b2xkZmlyZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRob29rcy51bnF1ZXVlZCsrO1xuXG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBFbnN1cmUgdGhlIGNvbXBsZXRlIGhhbmRsZXIgaXMgY2FsbGVkIGJlZm9yZSB0aGlzIGNvbXBsZXRlc1xuXHRcdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRob29rcy51bnF1ZXVlZC0tO1xuXHRcdFx0XHRpZiAoICFqUXVlcnkucXVldWUoIGVsZW0sIFwiZnhcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBEZXRlY3Qgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0Zm9yICggcHJvcCBpbiBwcm9wcyApIHtcblx0XHR2YWx1ZSA9IHByb3BzWyBwcm9wIF07XG5cdFx0aWYgKCByZnh0eXBlcy50ZXN0KCB2YWx1ZSApICkge1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBwcm9wIF07XG5cdFx0XHR0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09IFwidG9nZ2xlXCI7XG5cdFx0XHRpZiAoIHZhbHVlID09PSAoIGhpZGRlbiA/IFwiaGlkZVwiIDogXCJzaG93XCIgKSApIHtcblxuXHRcdFx0XHQvLyBQcmV0ZW5kIHRvIGJlIGhpZGRlbiBpZiB0aGlzIGlzIGEgXCJzaG93XCIgYW5kXG5cdFx0XHRcdC8vIHRoZXJlIGlzIHN0aWxsIGRhdGEgZnJvbSBhIHN0b3BwZWQgc2hvdy9oaWRlXG5cdFx0XHRcdGlmICggdmFsdWUgPT09IFwic2hvd1wiICYmIGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSB0cnVlO1xuXG5cdFx0XHRcdC8vIElnbm9yZSBhbGwgb3RoZXIgbm8tb3Agc2hvdy9oaWRlIGRhdGFcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0b3JpZ1sgcHJvcCBdID0gZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBCYWlsIG91dCBpZiB0aGlzIGlzIGEgbm8tb3AgbGlrZSAuaGlkZSgpLmhpZGUoKVxuXHRwcm9wVHdlZW4gPSAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3BzICk7XG5cdGlmICggIXByb3BUd2VlbiAmJiBqUXVlcnkuaXNFbXB0eU9iamVjdCggb3JpZyApICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFJlc3RyaWN0IFwib3ZlcmZsb3dcIiBhbmQgXCJkaXNwbGF5XCIgc3R5bGVzIGR1cmluZyBib3ggYW5pbWF0aW9uc1xuXHRpZiAoIGlzQm94ICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDE1XG5cdFx0Ly8gUmVjb3JkIGFsbCAzIG92ZXJmbG93IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdCBpbmZlciB0aGUgc2hvcnRoYW5kXG5cdFx0Ly8gZnJvbSBpZGVudGljYWxseS12YWx1ZWQgb3ZlcmZsb3dYIGFuZCBvdmVyZmxvd1kgYW5kIEVkZ2UganVzdCBtaXJyb3JzXG5cdFx0Ly8gdGhlIG92ZXJmbG93WCB2YWx1ZSB0aGVyZS5cblx0XHRvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTtcblxuXHRcdC8vIElkZW50aWZ5IGEgZGlzcGxheSB0eXBlLCBwcmVmZXJyaW5nIG9sZCBzaG93L2hpZGUgZGF0YSBvdmVyIHRoZSBDU1MgY2FzY2FkZVxuXHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVNob3cgJiYgZGF0YVNob3cuZGlzcGxheTtcblx0XHRpZiAoIHJlc3RvcmVEaXNwbGF5ID09IG51bGwgKSB7XG5cdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHR9XG5cdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdGlmICggcmVzdG9yZURpc3BsYXkgKSB7XG5cdFx0XHRcdGRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gR2V0IG5vbmVtcHR5IHZhbHVlKHMpIGJ5IHRlbXBvcmFyaWx5IGZvcmNpbmcgdmlzaWJpbGl0eVxuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdFx0cmVzdG9yZURpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXkgfHwgcmVzdG9yZURpc3BsYXk7XG5cdFx0XHRcdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBbmltYXRlIGlubGluZSBlbGVtZW50cyBhcyBpbmxpbmUtYmxvY2tcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwiaW5saW5lXCIgfHwgZGlzcGxheSA9PT0gXCJpbmxpbmUtYmxvY2tcIiAmJiByZXN0b3JlRGlzcGxheSAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBqUXVlcnkuY3NzKCBlbGVtLCBcImZsb2F0XCIgKSA9PT0gXCJub25lXCIgKSB7XG5cblx0XHRcdFx0Ly8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgZGlzcGxheSB2YWx1ZSBhdCB0aGUgZW5kIG9mIHB1cmUgc2hvdy9oaWRlIGFuaW1hdGlvbnNcblx0XHRcdFx0aWYgKCAhcHJvcFR3ZWVuICkge1xuXHRcdFx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRzdHlsZS5kaXNwbGF5ID0gcmVzdG9yZURpc3BsYXk7XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRcdGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5O1xuXHRcdFx0XHRcdFx0cmVzdG9yZURpc3BsYXkgPSBkaXNwbGF5ID09PSBcIm5vbmVcIiA/IFwiXCIgOiBkaXNwbGF5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIG9wdHMub3ZlcmZsb3cgKSB7XG5cdFx0c3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuXHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblx0XHRcdHN0eWxlLm92ZXJmbG93ID0gb3B0cy5vdmVyZmxvd1sgMCBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEltcGxlbWVudCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRwcm9wVHdlZW4gPSBmYWxzZTtcblx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXG5cdFx0Ly8gR2VuZXJhbCBzaG93L2hpZGUgc2V0dXAgZm9yIHRoaXMgZWxlbWVudCBhbmltYXRpb25cblx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRpZiAoIGRhdGFTaG93ICkge1xuXHRcdFx0XHRpZiAoIFwiaGlkZGVuXCIgaW4gZGF0YVNob3cgKSB7XG5cdFx0XHRcdFx0aGlkZGVuID0gZGF0YVNob3cuaGlkZGVuO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgXCJmeHNob3dcIiwgeyBkaXNwbGF5OiByZXN0b3JlRGlzcGxheSB9ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0b3JlIGhpZGRlbi92aXNpYmxlIGZvciB0b2dnbGUgc28gYC5zdG9wKCkudG9nZ2xlKClgIFwicmV2ZXJzZXNcIlxuXHRcdFx0aWYgKCB0b2dnbGUgKSB7XG5cdFx0XHRcdGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNob3cgZWxlbWVudHMgYmVmb3JlIGFuaW1hdGluZyB0aGVtXG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqL1xuXG5cdFx0XHRhbmltLmRvbmUoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqL1xuXG5cdFx0XHRcdC8vIFRoZSBmaW5hbCBzdGVwIG9mIGEgXCJoaWRlXCIgYW5pbWF0aW9uIGlzIGFjdHVhbGx5IGhpZGluZyB0aGUgZWxlbWVudFxuXHRcdFx0XHRpZiAoICFoaWRkZW4gKSB7XG5cdFx0XHRcdFx0c2hvd0hpZGUoIFsgZWxlbSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cdFx0XHRcdGZvciAoIHByb3AgaW4gb3JpZyApIHtcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Ly8gUGVyLXByb3BlcnR5IHNldHVwXG5cdFx0cHJvcFR3ZWVuID0gY3JlYXRlVHdlZW4oIGhpZGRlbiA/IGRhdGFTaG93WyBwcm9wIF0gOiAwLCBwcm9wLCBhbmltICk7XG5cdFx0aWYgKCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7XG5cdFx0XHRkYXRhU2hvd1sgcHJvcCBdID0gcHJvcFR3ZWVuLnN0YXJ0O1xuXHRcdFx0aWYgKCBoaWRkZW4gKSB7XG5cdFx0XHRcdHByb3BUd2Vlbi5lbmQgPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRcdHByb3BUd2Vlbi5zdGFydCA9IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHByb3BGaWx0ZXIoIHByb3BzLCBzcGVjaWFsRWFzaW5nICkge1xuXHR2YXIgaW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzO1xuXG5cdC8vIGNhbWVsQ2FzZSwgc3BlY2lhbEVhc2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzc1xuXHRmb3IgKCBpbmRleCBpbiBwcm9wcyApIHtcblx0XHRuYW1lID0gY2FtZWxDYXNlKCBpbmRleCApO1xuXHRcdGVhc2luZyA9IHNwZWNpYWxFYXNpbmdbIG5hbWUgXTtcblx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdO1xuXHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRcdGVhc2luZyA9IHZhbHVlWyAxIF07XG5cdFx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdID0gdmFsdWVbIDAgXTtcblx0XHR9XG5cblx0XHRpZiAoIGluZGV4ICE9PSBuYW1lICkge1xuXHRcdFx0cHJvcHNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBpbmRleCBdO1xuXHRcdH1cblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07XG5cdFx0aWYgKCBob29rcyAmJiBcImV4cGFuZFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsdWUgPSBob29rcy5leHBhbmQoIHZhbHVlICk7XG5cdFx0XHRkZWxldGUgcHJvcHNbIG5hbWUgXTtcblxuXHRcdFx0Ly8gTm90IHF1aXRlICQuZXh0ZW5kLCB0aGlzIHdvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBrZXlzLlxuXHRcdFx0Ly8gUmV1c2luZyAnaW5kZXgnIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgY29ycmVjdCBcIm5hbWVcIlxuXHRcdFx0Zm9yICggaW5kZXggaW4gdmFsdWUgKSB7XG5cdFx0XHRcdGlmICggISggaW5kZXggaW4gcHJvcHMgKSApIHtcblx0XHRcdFx0XHRwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyBpbmRleCBdO1xuXHRcdFx0XHRcdHNwZWNpYWxFYXNpbmdbIGluZGV4IF0gPSBlYXNpbmc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c3BlY2lhbEVhc2luZ1sgbmFtZSBdID0gZWFzaW5nO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBBbmltYXRpb24oIGVsZW0sIHByb3BlcnRpZXMsIG9wdGlvbnMgKSB7XG5cdHZhciByZXN1bHQsXG5cdFx0c3RvcHBlZCxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gQW5pbWF0aW9uLnByZWZpbHRlcnMubGVuZ3RoLFxuXHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCkuYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRG9uJ3QgbWF0Y2ggZWxlbSBpbiB0aGUgOmFuaW1hdGVkIHNlbGVjdG9yXG5cdFx0XHRkZWxldGUgdGljay5lbGVtO1xuXHRcdH0gKSxcblx0XHR0aWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHZhciBjdXJyZW50VGltZSA9IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRcdHJlbWFpbmluZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUgKSxcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDIuMyBvbmx5XG5cdFx0XHRcdC8vIEFyY2hhaWMgY3Jhc2ggYnVnIHdvbid0IGFsbG93IHVzIHRvIHVzZSBgMSAtICggMC41IHx8IDAgKWAgKCMxMjQ5Nylcblx0XHRcdFx0dGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLFxuXHRcdFx0XHRwZXJjZW50ID0gMSAtIHRlbXAsXG5cdFx0XHRcdGluZGV4ID0gMCxcblx0XHRcdFx0bGVuZ3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7XG5cblx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCBwZXJjZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSApO1xuXG5cdFx0XHQvLyBJZiB0aGVyZSdzIG1vcmUgdG8gZG8sIHlpZWxkXG5cdFx0XHRpZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHtcblx0XHRcdFx0cmV0dXJuIHJlbWFpbmluZztcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgdGhpcyB3YXMgYW4gZW1wdHkgYW5pbWF0aW9uLCBzeW50aGVzaXplIGEgZmluYWwgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uXG5cdFx0XHRpZiAoICFsZW5ndGggKSB7XG5cdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVzb2x2ZSB0aGUgYW5pbWF0aW9uIGFuZCByZXBvcnQgaXRzIGNvbmNsdXNpb25cblx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRhbmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0cHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksXG5cdFx0XHRvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7XG5cdFx0XHRcdHNwZWNpYWxFYXNpbmc6IHt9LFxuXHRcdFx0XHRlYXNpbmc6IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHRcblx0XHRcdH0sIG9wdGlvbnMgKSxcblx0XHRcdG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcyxcblx0XHRcdG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucyxcblx0XHRcdHN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuXHRcdFx0dHdlZW5zOiBbXSxcblx0XHRcdGNyZWF0ZVR3ZWVuOiBmdW5jdGlvbiggcHJvcCwgZW5kICkge1xuXHRcdFx0XHR2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsXG5cdFx0XHRcdFx0XHRhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5nICk7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdFx0fSxcblx0XHRcdHN0b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkge1xuXHRcdFx0XHR2YXIgaW5kZXggPSAwLFxuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgYXJlIGdvaW5nIHRvIHRoZSBlbmQsIHdlIHdhbnQgdG8gcnVuIGFsbCB0aGUgdHdlZW5zXG5cdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIHdlIHNraXAgdGhpcyBwYXJ0XG5cdFx0XHRcdFx0bGVuZ3RoID0gZ290b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoIDogMDtcblx0XHRcdFx0aWYgKCBzdG9wcGVkICkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0b3BwZWQgPSB0cnVlO1xuXHRcdFx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCAxICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXNvbHZlIHdoZW4gd2UgcGxheWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhlcndpc2UsIHJlamVjdFxuXHRcdFx0XHRpZiAoIGdvdG9FbmQgKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fVxuXHRcdH0gKSxcblx0XHRwcm9wcyA9IGFuaW1hdGlvbi5wcm9wcztcblxuXHRwcm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApO1xuXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0cmVzdWx0ID0gQW5pbWF0aW9uLnByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywgYW5pbWF0aW9uLm9wdHMgKTtcblx0XHRpZiAoIHJlc3VsdCApIHtcblx0XHRcdGlmICggaXNGdW5jdGlvbiggcmVzdWx0LnN0b3AgKSApIHtcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCBhbmltYXRpb24uZWxlbSwgYW5pbWF0aW9uLm9wdHMucXVldWUgKS5zdG9wID1cblx0XHRcdFx0XHRyZXN1bHQuc3RvcC5iaW5kKCByZXN1bHQgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9XG5cblx0alF1ZXJ5Lm1hcCggcHJvcHMsIGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTtcblxuXHRpZiAoIGlzRnVuY3Rpb24oIGFuaW1hdGlvbi5vcHRzLnN0YXJ0ICkgKSB7XG5cdFx0YW5pbWF0aW9uLm9wdHMuc3RhcnQuY2FsbCggZWxlbSwgYW5pbWF0aW9uICk7XG5cdH1cblxuXHQvLyBBdHRhY2ggY2FsbGJhY2tzIGZyb20gb3B0aW9uc1xuXHRhbmltYXRpb25cblx0XHQucHJvZ3Jlc3MoIGFuaW1hdGlvbi5vcHRzLnByb2dyZXNzIClcblx0XHQuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0aW9uLm9wdHMuY29tcGxldGUgKVxuXHRcdC5mYWlsKCBhbmltYXRpb24ub3B0cy5mYWlsIClcblx0XHQuYWx3YXlzKCBhbmltYXRpb24ub3B0cy5hbHdheXMgKTtcblxuXHRqUXVlcnkuZngudGltZXIoXG5cdFx0alF1ZXJ5LmV4dGVuZCggdGljaywge1xuXHRcdFx0ZWxlbTogZWxlbSxcblx0XHRcdGFuaW06IGFuaW1hdGlvbixcblx0XHRcdHF1ZXVlOiBhbmltYXRpb24ub3B0cy5xdWV1ZVxuXHRcdH0gKVxuXHQpO1xuXG5cdHJldHVybiBhbmltYXRpb247XG59XG5cbmpRdWVyeS5BbmltYXRpb24gPSBqUXVlcnkuZXh0ZW5kKCBBbmltYXRpb24sIHtcblxuXHR0d2VlbmVyczoge1xuXHRcdFwiKlwiOiBbIGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHtcblx0XHRcdHZhciB0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICk7XG5cdFx0XHRhZGp1c3RDU1MoIHR3ZWVuLmVsZW0sIHByb3AsIHJjc3NOdW0uZXhlYyggdmFsdWUgKSwgdHdlZW4gKTtcblx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHR9IF1cblx0fSxcblxuXHR0d2VlbmVyOiBmdW5jdGlvbiggcHJvcHMsIGNhbGxiYWNrICkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggcHJvcHMgKSApIHtcblx0XHRcdGNhbGxiYWNrID0gcHJvcHM7XG5cdFx0XHRwcm9wcyA9IFsgXCIqXCIgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvcHMgPSBwcm9wcy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApO1xuXHRcdH1cblxuXHRcdHZhciBwcm9wLFxuXHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0bGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdHByb3AgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdID0gQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW107XG5cdFx0XHRBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH1cblx0fSxcblxuXHRwcmVmaWx0ZXJzOiBbIGRlZmF1bHRQcmVmaWx0ZXIgXSxcblxuXHRwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHtcblx0XHRpZiAoIHByZXBlbmQgKSB7XG5cdFx0XHRBbmltYXRpb24ucHJlZmlsdGVycy51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRBbmltYXRpb24ucHJlZmlsdGVycy5wdXNoKCBjYWxsYmFjayApO1xuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuc3BlZWQgPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgZm4gKSB7XG5cdHZhciBvcHQgPSBzcGVlZCAmJiB0eXBlb2Ygc3BlZWQgPT09IFwib2JqZWN0XCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6IHtcblx0XHRjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fFxuXHRcdFx0aXNGdW5jdGlvbiggc3BlZWQgKSAmJiBzcGVlZCxcblx0XHRkdXJhdGlvbjogc3BlZWQsXG5cdFx0ZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFpc0Z1bmN0aW9uKCBlYXNpbmcgKSAmJiBlYXNpbmdcblx0fTtcblxuXHQvLyBHbyB0byB0aGUgZW5kIHN0YXRlIGlmIGZ4IGFyZSBvZmZcblx0aWYgKCBqUXVlcnkuZngub2ZmICkge1xuXHRcdG9wdC5kdXJhdGlvbiA9IDA7XG5cblx0fSBlbHNlIHtcblx0XHRpZiAoIHR5cGVvZiBvcHQuZHVyYXRpb24gIT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRpZiAoIG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzICkge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzWyBvcHQuZHVyYXRpb24gXTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVsdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBOb3JtYWxpemUgb3B0LnF1ZXVlIC0gdHJ1ZS91bmRlZmluZWQvbnVsbCAtPiBcImZ4XCJcblx0aWYgKCBvcHQucXVldWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUgKSB7XG5cdFx0b3B0LnF1ZXVlID0gXCJmeFwiO1xuXHR9XG5cblx0Ly8gUXVldWVpbmdcblx0b3B0Lm9sZCA9IG9wdC5jb21wbGV0ZTtcblxuXHRvcHQuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcblx0XHRpZiAoIGlzRnVuY3Rpb24oIG9wdC5vbGQgKSApIHtcblx0XHRcdG9wdC5vbGQuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0LnF1ZXVlICkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5xdWV1ZSApO1xuXHRcdH1cblx0fTtcblxuXHRyZXR1cm4gb3B0O1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmYWRlVG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cblx0XHQvLyBTaG93IGFueSBoaWRkZW4gZWxlbWVudHMgYWZ0ZXIgc2V0dGluZyBvcGFjaXR5IHRvIDBcblx0XHRyZXR1cm4gdGhpcy5maWx0ZXIoIGlzSGlkZGVuV2l0aGluVHJlZSApLmNzcyggXCJvcGFjaXR5XCIsIDAgKS5zaG93KClcblxuXHRcdFx0Ly8gQW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkXG5cdFx0XHQuZW5kKCkuYW5pbWF0ZSggeyBvcGFjaXR5OiB0byB9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9LFxuXHRhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0dmFyIGVtcHR5ID0galF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSxcblx0XHRcdG9wdGFsbCA9IGpRdWVyeS5zcGVlZCggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSxcblx0XHRcdGRvQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gT3BlcmF0ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3Rcblx0XHRcdFx0dmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9wdGFsbCApO1xuXG5cdFx0XHRcdC8vIEVtcHR5IGFuaW1hdGlvbnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlhdGVseVxuXHRcdFx0XHRpZiAoIGVtcHR5IHx8IGRhdGFQcml2LmdldCggdGhpcywgXCJmaW5pc2hcIiApICkge1xuXHRcdFx0XHRcdGFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0ZG9BbmltYXRpb24uZmluaXNoID0gZG9BbmltYXRpb247XG5cblx0XHRyZXR1cm4gZW1wdHkgfHwgb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/XG5cdFx0XHR0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOlxuXHRcdFx0dGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApO1xuXHR9LFxuXHRzdG9wOiBmdW5jdGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHtcblx0XHR2YXIgc3RvcFF1ZXVlID0gZnVuY3Rpb24oIGhvb2tzICkge1xuXHRcdFx0dmFyIHN0b3AgPSBob29rcy5zdG9wO1xuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRzdG9wKCBnb3RvRW5kICk7XG5cdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRnb3RvRW5kID0gY2xlYXJRdWV1ZTtcblx0XHRcdGNsZWFyUXVldWUgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKCBjbGVhclF1ZXVlICYmIHR5cGUgIT09IGZhbHNlICkge1xuXHRcdFx0dGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZGVxdWV1ZSA9IHRydWUsXG5cdFx0XHRcdGluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyBcInF1ZXVlSG9va3NcIixcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0ZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApO1xuXG5cdFx0XHRpZiAoIGluZGV4ICkge1xuXHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICkge1xuXHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBpbmRleCBpbiBkYXRhICkge1xuXHRcdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgJiYgcnJ1bi50ZXN0KCBpbmRleCApICkge1xuXHRcdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiZcblx0XHRcdFx0XHQoIHR5cGUgPT0gbnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSApIHtcblxuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIGdvdG9FbmQgKTtcblx0XHRcdFx0XHRkZXF1ZXVlID0gZmFsc2U7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGFydCB0aGUgbmV4dCBpbiB0aGUgcXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkLlxuXHRcdFx0Ly8gVGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIgY29tcGxldGUgY2FsbGJhY2tzLCB3aGljaFxuXHRcdFx0Ly8gd2lsbCBkZXF1ZXVlIGJ1dCBvbmx5IGlmIHRoZXkgd2VyZSBnb3RvRW5kLlxuXHRcdFx0aWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblx0ZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRpZiAoIHR5cGUgIT09IGZhbHNlICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpbmRleCxcblx0XHRcdFx0ZGF0YSA9IGRhdGFQcml2LmdldCggdGhpcyApLFxuXHRcdFx0XHRxdWV1ZSA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlXCIgXSxcblx0XHRcdFx0aG9va3MgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgXSxcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0bGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5sZW5ndGggOiAwO1xuXG5cdFx0XHQvLyBFbmFibGUgZmluaXNoaW5nIGZsYWcgb24gcHJpdmF0ZSBkYXRhXG5cdFx0XHRkYXRhLmZpbmlzaCA9IHRydWU7XG5cblx0XHRcdC8vIEVtcHR5IHRoZSBxdWV1ZSBmaXJzdFxuXHRcdFx0alF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBbXSApO1xuXG5cdFx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnN0b3AgKSB7XG5cdFx0XHRcdGhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSB7XG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGluZGV4IF0uZmluaXNoICkge1xuXHRcdFx0XHRcdHF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWdcblx0XHRcdGRlbGV0ZSBkYXRhLmZpbmlzaDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJ0b2dnbGVcIiwgXCJzaG93XCIsIFwiaGlkZVwiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgY3NzRm4gPSBqUXVlcnkuZm5bIG5hbWUgXTtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSBcImJvb2xlYW5cIiA/XG5cdFx0XHRjc3NGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICkgOlxuXHRcdFx0dGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSApO1xuXG4vLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zXG5qUXVlcnkuZWFjaCgge1xuXHRzbGlkZURvd246IGdlbkZ4KCBcInNob3dcIiApLFxuXHRzbGlkZVVwOiBnZW5GeCggXCJoaWRlXCIgKSxcblx0c2xpZGVUb2dnbGU6IGdlbkZ4KCBcInRvZ2dsZVwiICksXG5cdGZhZGVJbjogeyBvcGFjaXR5OiBcInNob3dcIiB9LFxuXHRmYWRlT3V0OiB7IG9wYWNpdHk6IFwiaGlkZVwiIH0sXG5cdGZhZGVUb2dnbGU6IHsgb3BhY2l0eTogXCJ0b2dnbGVcIiB9XG59LCBmdW5jdGlvbiggbmFtZSwgcHJvcHMgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkudGltZXJzID0gW107XG5qUXVlcnkuZngudGljayA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgdGltZXIsXG5cdFx0aSA9IDAsXG5cdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycztcblxuXHRmeE5vdyA9IERhdGUubm93KCk7XG5cblx0Zm9yICggOyBpIDwgdGltZXJzLmxlbmd0aDsgaSsrICkge1xuXHRcdHRpbWVyID0gdGltZXJzWyBpIF07XG5cblx0XHQvLyBSdW4gdGhlIHRpbWVyIGFuZCBzYWZlbHkgcmVtb3ZlIGl0IHdoZW4gZG9uZSAoYWxsb3dpbmcgZm9yIGV4dGVybmFsIHJlbW92YWwpXG5cdFx0aWYgKCAhdGltZXIoKSAmJiB0aW1lcnNbIGkgXSA9PT0gdGltZXIgKSB7XG5cdFx0XHR0aW1lcnMuc3BsaWNlKCBpLS0sIDEgKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoICF0aW1lcnMubGVuZ3RoICkge1xuXHRcdGpRdWVyeS5meC5zdG9wKCk7XG5cdH1cblx0ZnhOb3cgPSB1bmRlZmluZWQ7XG59O1xuXG5qUXVlcnkuZngudGltZXIgPSBmdW5jdGlvbiggdGltZXIgKSB7XG5cdGpRdWVyeS50aW1lcnMucHVzaCggdGltZXIgKTtcblx0alF1ZXJ5LmZ4LnN0YXJ0KCk7XG59O1xuXG5qUXVlcnkuZnguaW50ZXJ2YWwgPSAxMztcbmpRdWVyeS5meC5zdGFydCA9IGZ1bmN0aW9uKCkge1xuXHRpZiAoIGluUHJvZ3Jlc3MgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aW5Qcm9ncmVzcyA9IHRydWU7XG5cdHNjaGVkdWxlKCk7XG59O1xuXG5qUXVlcnkuZnguc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRpblByb2dyZXNzID0gbnVsbDtcbn07XG5cbmpRdWVyeS5meC5zcGVlZHMgPSB7XG5cdHNsb3c6IDYwMCxcblx0ZmFzdDogMjAwLFxuXG5cdC8vIERlZmF1bHQgc3BlZWRcblx0X2RlZmF1bHQ6IDQwMFxufTtcblxuXG4vLyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBDbGludCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Npb24uXG4vLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMDAzMjQwMTQ3NDcvaHR0cDovL2JsaW5kc2lnbmFscy5jb20vaW5kZXgucGhwLzIwMDkvMDcvanF1ZXJ5LWRlbGF5L1xualF1ZXJ5LmZuLmRlbGF5ID0gZnVuY3Rpb24oIHRpbWUsIHR5cGUgKSB7XG5cdHRpbWUgPSBqUXVlcnkuZnggPyBqUXVlcnkuZnguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7XG5cdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkge1xuXHRcdHZhciB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTtcblx0XHRob29rcy5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7XG5cdFx0fTtcblx0fSApO1xufTtcblxuXG4oIGZ1bmN0aW9uKCkge1xuXHR2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKSxcblx0XHRzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcInNlbGVjdFwiICksXG5cdFx0b3B0ID0gc2VsZWN0LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcIm9wdGlvblwiICkgKTtcblxuXHRpbnB1dC50eXBlID0gXCJjaGVja2JveFwiO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjMgb25seVxuXHQvLyBEZWZhdWx0IHZhbHVlIGZvciBhIGNoZWNrYm94IHNob3VsZCBiZSBcIm9uXCJcblx0c3VwcG9ydC5jaGVja09uID0gaW5wdXQudmFsdWUgIT09IFwiXCI7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdC8vIE11c3QgYWNjZXNzIHNlbGVjdGVkSW5kZXggdG8gbWFrZSBkZWZhdWx0IG9wdGlvbnMgc2VsZWN0XG5cdHN1cHBvcnQub3B0U2VsZWN0ZWQgPSBvcHQuc2VsZWN0ZWQ7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdC8vIEFuIGlucHV0IGxvc2VzIGl0cyB2YWx1ZSBhZnRlciBiZWNvbWluZyBhIHJhZGlvXG5cdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cdGlucHV0LnZhbHVlID0gXCJ0XCI7XG5cdGlucHV0LnR5cGUgPSBcInJhZGlvXCI7XG5cdHN1cHBvcnQucmFkaW9WYWx1ZSA9IGlucHV0LnZhbHVlID09PSBcInRcIjtcbn0gKSgpO1xuXG5cbnZhciBib29sSG9vayxcblx0YXR0ckhhbmRsZSA9IGpRdWVyeS5leHByLmF0dHJIYW5kbGU7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0YXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWRcblx0XHRpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSwgdmFsdWUgKTtcblx0XHR9XG5cblx0XHQvLyBBdHRyaWJ1dGUgaG9va3MgYXJlIGRldGVybWluZWQgYnkgdGhlIGxvd2VyY2FzZSB2ZXJzaW9uXG5cdFx0Ly8gR3JhYiBuZWNlc3NhcnkgaG9vayBpZiBvbmUgaXMgZGVmaW5lZFxuXHRcdGlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXHRcdFx0aG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fFxuXHRcdFx0XHQoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSApID8gYm9vbEhvb2sgOiB1bmRlZmluZWQgKTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHZhbHVlID09PSBudWxsICkge1xuXHRcdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHQoIHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCB2YWx1ZSArIFwiXCIgKTtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkge1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cblx0XHRyZXQgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBuYW1lICk7XG5cblx0XHQvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwgd2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5lZFxuXHRcdHJldHVybiByZXQgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJldDtcblx0fSxcblxuXHRhdHRySG9va3M6IHtcblx0XHR0eXBlOiB7XG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhc3VwcG9ydC5yYWRpb1ZhbHVlICYmIHZhbHVlID09PSBcInJhZGlvXCIgJiZcblx0XHRcdFx0XHRub2RlTmFtZSggZWxlbSwgXCJpbnB1dFwiICkgKSB7XG5cdFx0XHRcdFx0dmFyIHZhbCA9IGVsZW0udmFsdWU7XG5cdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCB2YWx1ZSApO1xuXHRcdFx0XHRcdGlmICggdmFsICkge1xuXHRcdFx0XHRcdFx0ZWxlbS52YWx1ZSA9IHZhbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHR2YXIgbmFtZSxcblx0XHRcdGkgPSAwLFxuXG5cdFx0XHQvLyBBdHRyaWJ1dGUgbmFtZXMgY2FuIGNvbnRhaW4gbm9uLUhUTUwgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG5cdFx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTJcblx0XHRcdGF0dHJOYW1lcyA9IHZhbHVlICYmIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICk7XG5cblx0XHRpZiAoIGF0dHJOYW1lcyAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0d2hpbGUgKCAoIG5hbWUgPSBhdHRyTmFtZXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIEhvb2tzIGZvciBib29sZWFuIGF0dHJpYnV0ZXNcbmJvb2xIb29rID0ge1xuXHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHtcblx0XHRpZiAoIHZhbHVlID09PSBmYWxzZSApIHtcblxuXHRcdFx0Ly8gUmVtb3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3aGVuIHNldCB0byBmYWxzZVxuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cbn07XG5cbmpRdWVyeS5lYWNoKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCggL1xcdysvZyApLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0dmFyIGdldHRlciA9IGF0dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyO1xuXG5cdGF0dHJIYW5kbGVbIG5hbWUgXSA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgcmV0LCBoYW5kbGUsXG5cdFx0XHRsb3dlcmNhc2VOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cblx0XHRcdC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3AgYnkgdGVtcG9yYXJpbHkgcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBnZXR0ZXJcblx0XHRcdGhhbmRsZSA9IGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXTtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IHJldDtcblx0XHRcdHJldCA9IGdldHRlciggZWxlbSwgbmFtZSwgaXNYTUwgKSAhPSBudWxsID9cblx0XHRcdFx0bG93ZXJjYXNlTmFtZSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0XHRhdHRySGFuZGxlWyBsb3dlcmNhc2VOYW1lIF0gPSBoYW5kbGU7XG5cdFx0fVxuXHRcdHJldHVybiByZXQ7XG5cdH07XG59ICk7XG5cblxuXG5cbnZhciByZm9jdXNhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxcblx0cmNsaWNrYWJsZSA9IC9eKD86YXxhcmVhKSQvaTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LnByb3AsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZVByb3A6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGVsZXRlIHRoaXNbIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZSBdO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHR2YXIgcmV0LCBob29rcyxcblx0XHRcdG5UeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRcdC8vIERvbid0IGdldC9zZXQgcHJvcGVydGllcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcblx0XHRpZiAoIG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXG5cdFx0XHQvLyBGaXggbmFtZSBhbmQgYXR0YWNoIGhvb2tzXG5cdFx0XHRuYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lO1xuXHRcdFx0aG9va3MgPSBqUXVlcnkucHJvcEhvb2tzWyBuYW1lIF07XG5cdFx0fVxuXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuICggZWxlbVsgbmFtZSBdID0gdmFsdWUgKTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKCByZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSApICE9PSBudWxsICkge1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZWxlbVsgbmFtZSBdO1xuXHR9LFxuXG5cdHByb3BIb29rczoge1xuXHRcdHRhYkluZGV4OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExIG9ubHlcblx0XHRcdFx0Ly8gZWxlbS50YWJJbmRleCBkb2Vzbid0IGFsd2F5cyByZXR1cm4gdGhlXG5cdFx0XHRcdC8vIGNvcnJlY3QgdmFsdWUgd2hlbiBpdCBoYXNuJ3QgYmVlbiBleHBsaWNpdGx5IHNldFxuXHRcdFx0XHQvLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNDExMTYyMzMzNDcvaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC9cblx0XHRcdFx0Ly8gVXNlIHByb3BlciBhdHRyaWJ1dGUgcmV0cmlldmFsKCMxMjA3Milcblx0XHRcdFx0dmFyIHRhYmluZGV4ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ0YWJpbmRleFwiICk7XG5cblx0XHRcdFx0aWYgKCB0YWJpbmRleCApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2VJbnQoIHRhYmluZGV4LCAxMCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8XG5cdFx0XHRcdFx0cmNsaWNrYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgJiZcblx0XHRcdFx0XHRlbGVtLmhyZWZcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHByb3BGaXg6IHtcblx0XHRcImZvclwiOiBcImh0bWxGb3JcIixcblx0XHRcImNsYXNzXCI6IFwiY2xhc3NOYW1lXCJcblx0fVxufSApO1xuXG4vLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcbi8vIEFjY2Vzc2luZyB0aGUgc2VsZWN0ZWRJbmRleCBwcm9wZXJ0eVxuLy8gZm9yY2VzIHRoZSBicm93c2VyIHRvIHJlc3BlY3Qgc2V0dGluZyBzZWxlY3RlZFxuLy8gb24gdGhlIG9wdGlvblxuLy8gVGhlIGdldHRlciBlbnN1cmVzIGEgZGVmYXVsdCBvcHRpb24gaXMgc2VsZWN0ZWRcbi8vIHdoZW4gaW4gYW4gb3B0Z3JvdXBcbi8vIGVzbGludCBydWxlIFwibm8tdW51c2VkLWV4cHJlc3Npb25zXCIgaXMgZGlzYWJsZWQgZm9yIHRoaXMgY29kZVxuLy8gc2luY2UgaXQgY29uc2lkZXJzIHN1Y2ggYWNjZXNzaW9ucyBub29wXG5pZiAoICFzdXBwb3J0Lm9wdFNlbGVjdGVkICkge1xuXHRqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICYmIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0XHQvKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOiBcIm9mZlwiICovXG5cblx0XHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRpZiAoIHBhcmVudCApIHtcblx0XHRcdFx0cGFyZW50LnNlbGVjdGVkSW5kZXg7XG5cblx0XHRcdFx0aWYgKCBwYXJlbnQucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG5qUXVlcnkuZWFjaCggW1xuXHRcInRhYkluZGV4XCIsXG5cdFwicmVhZE9ubHlcIixcblx0XCJtYXhMZW5ndGhcIixcblx0XCJjZWxsU3BhY2luZ1wiLFxuXHRcImNlbGxQYWRkaW5nXCIsXG5cdFwicm93U3BhblwiLFxuXHRcImNvbFNwYW5cIixcblx0XCJ1c2VNYXBcIixcblx0XCJmcmFtZUJvcmRlclwiLFxuXHRcImNvbnRlbnRFZGl0YWJsZVwiXG5dLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnByb3BGaXhbIHRoaXMudG9Mb3dlckNhc2UoKSBdID0gdGhpcztcbn0gKTtcblxuXG5cblxuXHQvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBhY2NvcmRpbmcgdG8gSFRNTCBzcGVjXG5cdC8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNzdHJpcC1hbmQtY29sbGFwc2UtYXNjaWktd2hpdGVzcGFjZVxuXHRmdW5jdGlvbiBzdHJpcEFuZENvbGxhcHNlKCB2YWx1ZSApIHtcblx0XHR2YXIgdG9rZW5zID0gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0XHRyZXR1cm4gdG9rZW5zLmpvaW4oIFwiIFwiICk7XG5cdH1cblxuXG5mdW5jdGlvbiBnZXRDbGFzcyggZWxlbSApIHtcblx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlICYmIGVsZW0uZ2V0QXR0cmlidXRlKCBcImNsYXNzXCIgKSB8fCBcIlwiO1xufVxuXG5mdW5jdGlvbiBjbGFzc2VzVG9BcnJheSggdmFsdWUgKSB7XG5cdGlmICggQXJyYXkuaXNBcnJheSggdmFsdWUgKSApIHtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIHZhbHVlLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cdH1cblx0cmV0dXJuIFtdO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGNsYXNzZXMgPSBjbGFzc2VzVG9BcnJheSggdmFsdWUgKTtcblxuXHRcdGlmICggY2xhc3Nlcy5sZW5ndGggKSB7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTtcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHtcblx0XHRcdFx0XHRcdGlmICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApIDwgMCApIHtcblx0XHRcdFx0XHRcdFx0Y3VyICs9IGNsYXp6ICsgXCIgXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsIGZpbmFsVmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRyZW1vdmVDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYXR0ciggXCJjbGFzc1wiLCBcIlwiICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NlcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc2VzLmxlbmd0aCApIHtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApO1xuXG5cdFx0XHRcdC8vIFRoaXMgZXhwcmVzc2lvbiBpcyBoZXJlIGZvciBiZXR0ZXIgY29tcHJlc3NpYmlsaXR5IChzZWUgYWRkQ2xhc3MpXG5cdFx0XHRcdGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCBcIiBcIiArIHN0cmlwQW5kQ29sbGFwc2UoIGN1clZhbHVlICkgKyBcIiBcIiApO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSAqYWxsKiBpbnN0YW5jZXNcblx0XHRcdFx0XHRcdHdoaWxlICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciA9IGN1ci5yZXBsYWNlKCBcIiBcIiArIGNsYXp6ICsgXCIgXCIsIFwiIFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gc3RyaXBBbmRDb2xsYXBzZSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsIGZpbmFsVmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCApIHtcblx0XHR2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZSxcblx0XHRcdGlzVmFsaWRWYWx1ZSA9IHR5cGUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSggdmFsdWUgKTtcblxuXHRcdGlmICggdHlwZW9mIHN0YXRlVmFsID09PSBcImJvb2xlYW5cIiAmJiBpc1ZhbGlkVmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gc3RhdGVWYWwgPyB0aGlzLmFkZENsYXNzKCB2YWx1ZSApIDogdGhpcy5yZW1vdmVDbGFzcyggdmFsdWUgKTtcblx0XHR9XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkudG9nZ2xlQ2xhc3MoXG5cdFx0XHRcdFx0dmFsdWUuY2FsbCggdGhpcywgaSwgZ2V0Q2xhc3MoIHRoaXMgKSwgc3RhdGVWYWwgKSxcblx0XHRcdFx0XHRzdGF0ZVZhbFxuXHRcdFx0XHQpO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGNsYXNzTmFtZSwgaSwgc2VsZiwgY2xhc3NOYW1lcztcblxuXHRcdFx0aWYgKCBpc1ZhbGlkVmFsdWUgKSB7XG5cblx0XHRcdFx0Ly8gVG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXNcblx0XHRcdFx0aSA9IDA7XG5cdFx0XHRcdHNlbGYgPSBqUXVlcnkoIHRoaXMgKTtcblx0XHRcdFx0Y2xhc3NOYW1lcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0XHRcdHdoaWxlICggKCBjbGFzc05hbWUgPSBjbGFzc05hbWVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNwYWNlIHNlcGFyYXRlZCBsaXN0XG5cdFx0XHRcdFx0aWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKSApIHtcblx0XHRcdFx0XHRcdHNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzZWxmLmFkZENsYXNzKCBjbGFzc05hbWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWVcblx0XHRcdH0gZWxzZSBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZSA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0XHRcdGNsYXNzTmFtZSA9IGdldENsYXNzKCB0aGlzICk7XG5cdFx0XHRcdGlmICggY2xhc3NOYW1lICkge1xuXG5cdFx0XHRcdFx0Ly8gU3RvcmUgY2xhc3NOYW1lIGlmIHNldFxuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIsIGNsYXNzTmFtZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgY2xhc3MgbmFtZSBvciBpZiB3ZSdyZSBwYXNzZWQgYGZhbHNlYCxcblx0XHRcdFx0Ly8gdGhlbiByZW1vdmUgdGhlIHdob2xlIGNsYXNzbmFtZSAoaWYgdGhlcmUgd2FzIG9uZSwgdGhlIGFib3ZlIHNhdmVkIGl0KS5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGJyaW5nIGJhY2sgd2hhdGV2ZXIgd2FzIHByZXZpb3VzbHkgc2F2ZWQgKGlmIGFueXRoaW5nKSxcblx0XHRcdFx0Ly8gZmFsbGluZyBiYWNrIHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm90aGluZyB3YXMgc3RvcmVkLlxuXHRcdFx0XHRpZiAoIHRoaXMuc2V0QXR0cmlidXRlICkge1xuXHRcdFx0XHRcdHRoaXMuc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsXG5cdFx0XHRcdFx0XHRjbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID9cblx0XHRcdFx0XHRcdFwiXCIgOlxuXHRcdFx0XHRcdFx0ZGF0YVByaXYuZ2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiApIHx8IFwiXCJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGhhc0NsYXNzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZSwgZWxlbSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Y2xhc3NOYW1lID0gXCIgXCIgKyBzZWxlY3RvciArIFwiIFwiO1xuXHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHQoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggZ2V0Q2xhc3MoIGVsZW0gKSApICsgXCIgXCIgKS5pbmRleE9mKCBjbGFzc05hbWUgKSA+IC0xICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufSApO1xuXG5cblxuXG52YXIgcnJldHVybiA9IC9cXHIvZztcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHR2YWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgaG9va3MsIHJldCwgdmFsdWVJc0Z1bmN0aW9uLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUgXSB8fFxuXHRcdFx0XHRcdGpRdWVyeS52YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdFx0aWYgKCBob29rcyAmJlxuXHRcdFx0XHRcdFwiZ2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0XHQoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgXCJ2YWx1ZVwiICkgKSAhPT0gdW5kZWZpbmVkXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXQgPSBlbGVtLnZhbHVlO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBtb3N0IGNvbW1vbiBzdHJpbmcgY2FzZXNcblx0XHRcdFx0aWYgKCB0eXBlb2YgcmV0ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHRcdHJldHVybiByZXQucmVwbGFjZSggcnJldHVybiwgXCJcIiApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gSGFuZGxlIGNhc2VzIHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyXG5cdFx0XHRcdHJldHVybiByZXQgPT0gbnVsbCA/IFwiXCIgOiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YWx1ZUlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHR2YXIgdmFsO1xuXG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIGpRdWVyeSggdGhpcyApLnZhbCgpICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWwgPSB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgXCJcIjsgY29udmVydCBudW1iZXJzIHRvIHN0cmluZ1xuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0dmFsID0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsICs9IFwiXCI7XG5cblx0XHRcdH0gZWxzZSBpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHR2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSArIFwiXCI7XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdC8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nXG5cdFx0XHRpZiAoICFob29rcyB8fCAhKCBcInNldFwiIGluIGhvb2tzICkgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsIFwidmFsdWVcIiApID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHRoaXMudmFsdWUgPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0dmFsSG9va3M6IHtcblx0XHRvcHRpb246IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0dmFyIHZhbCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIFwidmFsdWVcIiApO1xuXHRcdFx0XHRyZXR1cm4gdmFsICE9IG51bGwgP1xuXHRcdFx0XHRcdHZhbCA6XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTEwIC0gMTEgb25seVxuXHRcdFx0XHRcdC8vIG9wdGlvbi50ZXh0IHRocm93cyBleGNlcHRpb25zICgjMTQ2ODYsICMxNDg1OClcblx0XHRcdFx0XHQvLyBTdHJpcCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZVxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS13aGl0ZXNwYWNlXG5cdFx0XHRcdFx0c3RyaXBBbmRDb2xsYXBzZSggalF1ZXJ5LnRleHQoIGVsZW0gKSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0c2VsZWN0OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgdmFsdWUsIG9wdGlvbiwgaSxcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LFxuXHRcdFx0XHRcdG9uZSA9IGVsZW0udHlwZSA9PT0gXCJzZWxlY3Qtb25lXCIsXG5cdFx0XHRcdFx0dmFsdWVzID0gb25lID8gbnVsbCA6IFtdLFxuXHRcdFx0XHRcdG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0XHRcdGlmICggaW5kZXggPCAwICkge1xuXHRcdFx0XHRcdGkgPSBtYXg7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpID0gb25lID8gaW5kZXggOiAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuXHRcdFx0XHRmb3IgKCA7IGkgPCBtYXg7IGkrKyApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuXHRcdFx0XHRcdC8vIElFOC05IGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKVxuXHRcdFx0XHRcdGlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJlxuXG5cdFx0XHRcdFx0XHRcdC8vIERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcblx0XHRcdFx0XHRcdFx0IW9wdGlvbi5kaXNhYmxlZCAmJlxuXHRcdFx0XHRcdFx0XHQoICFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fFxuXHRcdFx0XHRcdFx0XHRcdCFub2RlTmFtZSggb3B0aW9uLnBhcmVudE5vZGUsIFwib3B0Z3JvdXBcIiApICkgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb25cblx0XHRcdFx0XHRcdHZhbHVlID0galF1ZXJ5KCBvcHRpb24gKS52YWwoKTtcblxuXHRcdFx0XHRcdFx0Ly8gV2UgZG9uJ3QgbmVlZCBhbiBhcnJheSBmb3Igb25lIHNlbGVjdHNcblx0XHRcdFx0XHRcdGlmICggb25lICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE11bHRpLVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5XG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBvcHRpb25TZXQsIG9wdGlvbixcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdHZhbHVlcyA9IGpRdWVyeS5tYWtlQXJyYXkoIHZhbHVlICksXG5cdFx0XHRcdFx0aSA9IG9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbmQtYXNzaWduICovXG5cblx0XHRcdFx0XHRpZiAoIG9wdGlvbi5zZWxlY3RlZCA9XG5cdFx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggalF1ZXJ5LnZhbEhvb2tzLm9wdGlvbi5nZXQoIG9wdGlvbiApLCB2YWx1ZXMgKSA+IC0xXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRvcHRpb25TZXQgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tY29uZC1hc3NpZ24gKi9cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEZvcmNlIGJyb3dzZXJzIHRvIGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFsdWUgaXMgc2V0XG5cdFx0XHRcdGlmICggIW9wdGlvblNldCApIHtcblx0XHRcdFx0XHRlbGVtLnNlbGVjdGVkSW5kZXggPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG4vLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlclxualF1ZXJ5LmVhY2goIFsgXCJyYWRpb1wiLCBcImNoZWNrYm94XCIgXSwgZnVuY3Rpb24oKSB7XG5cdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdID0ge1xuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KCBlbGVtICkudmFsKCksIHZhbHVlICkgPiAtMSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0aWYgKCAhc3VwcG9ydC5jaGVja09uICkge1xuXHRcdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdLmdldCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gbnVsbCA/IFwib25cIiA6IGVsZW0udmFsdWU7XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG4vLyBSZXR1cm4galF1ZXJ5IGZvciBhdHRyaWJ1dGVzLW9ubHkgaW5jbHVzaW9uXG5cblxuc3VwcG9ydC5mb2N1c2luID0gXCJvbmZvY3VzaW5cIiBpbiB3aW5kb3c7XG5cblxudmFyIHJmb2N1c01vcnBoID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLFxuXHRzdG9wUHJvcGFnYXRpb25DYWxsYmFjayA9IGZ1bmN0aW9uKCBlICkge1xuXHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH07XG5cbmpRdWVyeS5leHRlbmQoIGpRdWVyeS5ldmVudCwge1xuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkge1xuXG5cdFx0dmFyIGksIGN1ciwgdG1wLCBidWJibGVUeXBlLCBvbnR5cGUsIGhhbmRsZSwgc3BlY2lhbCwgbGFzdEVsZW1lbnQsXG5cdFx0XHRldmVudFBhdGggPSBbIGVsZW0gfHwgZG9jdW1lbnQgXSxcblx0XHRcdHR5cGUgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwidHlwZVwiICkgPyBldmVudC50eXBlIDogZXZlbnQsXG5cdFx0XHRuYW1lc3BhY2VzID0gaGFzT3duLmNhbGwoIGV2ZW50LCBcIm5hbWVzcGFjZVwiICkgPyBldmVudC5uYW1lc3BhY2Uuc3BsaXQoIFwiLlwiICkgOiBbXTtcblxuXHRcdGN1ciA9IGxhc3RFbGVtZW50ID0gdG1wID0gZWxlbSA9IGVsZW0gfHwgZG9jdW1lbnQ7XG5cblx0XHQvLyBEb24ndCBkbyBldmVudHMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGZvY3VzL2JsdXIgbW9ycGhzIHRvIGZvY3VzaW4vb3V0OyBlbnN1cmUgd2UncmUgbm90IGZpcmluZyB0aGVtIHJpZ2h0IG5vd1xuXHRcdGlmICggcmZvY3VzTW9ycGgudGVzdCggdHlwZSArIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIHR5cGUuaW5kZXhPZiggXCIuXCIgKSA+IC0xICkge1xuXG5cdFx0XHQvLyBOYW1lc3BhY2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eXBlIGluIGhhbmRsZSgpXG5cdFx0XHRuYW1lc3BhY2VzID0gdHlwZS5zcGxpdCggXCIuXCIgKTtcblx0XHRcdHR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7XG5cdFx0XHRuYW1lc3BhY2VzLnNvcnQoKTtcblx0XHR9XG5cdFx0b250eXBlID0gdHlwZS5pbmRleE9mKCBcIjpcIiApIDwgMCAmJiBcIm9uXCIgKyB0eXBlO1xuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nXG5cdFx0ZXZlbnQgPSBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/XG5cdFx0XHRldmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCB0eXBlLCB0eXBlb2YgZXZlbnQgPT09IFwib2JqZWN0XCIgJiYgZXZlbnQgKTtcblxuXHRcdC8vIFRyaWdnZXIgYml0bWFzazogJiAxIGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5IChhbHdheXMgdHJ1ZSlcblx0XHRldmVudC5pc1RyaWdnZXIgPSBvbmx5SGFuZGxlcnMgPyAyIDogMztcblx0XHRldmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oIFwiLlwiICk7XG5cdFx0ZXZlbnQucm5hbWVzcGFjZSA9IGV2ZW50Lm5hbWVzcGFjZSA/XG5cdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKCBcIlxcXFwuKD86LipcXFxcLnwpXCIgKSArIFwiKFxcXFwufCQpXCIgKSA6XG5cdFx0XHRudWxsO1xuXG5cdFx0Ly8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2VkXG5cdFx0ZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkO1xuXHRcdGlmICggIWV2ZW50LnRhcmdldCApIHtcblx0XHRcdGV2ZW50LnRhcmdldCA9IGVsZW07XG5cdFx0fVxuXG5cdFx0Ly8gQ2xvbmUgYW55IGluY29taW5nIGRhdGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdFxuXHRcdGRhdGEgPSBkYXRhID09IG51bGwgP1xuXHRcdFx0WyBldmVudCBdIDpcblx0XHRcdGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApO1xuXG5cdFx0Ly8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lc1xuXHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBldmVudCBwcm9wYWdhdGlvbiBwYXRoIGluIGFkdmFuY2UsIHBlciBXM0MgZXZlbnRzIHNwZWMgKCM5OTUxKVxuXHRcdC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpXG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFzcGVjaWFsLm5vQnViYmxlICYmICFpc1dpbmRvdyggZWxlbSApICkge1xuXG5cdFx0XHRidWJibGVUeXBlID0gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgfHwgdHlwZTtcblx0XHRcdGlmICggIXJmb2N1c01vcnBoLnRlc3QoIGJ1YmJsZVR5cGUgKyB0eXBlICkgKSB7XG5cdFx0XHRcdGN1ciA9IGN1ci5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXHRcdFx0Zm9yICggOyBjdXI7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggY3VyICk7XG5cdFx0XHRcdHRtcCA9IGN1cjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT25seSBhZGQgd2luZG93IGlmIHdlIGdvdCB0byBkb2N1bWVudCAoZS5nLiwgbm90IHBsYWluIG9iaiBvciBkZXRhY2hlZCBET00pXG5cdFx0XHRpZiAoIHRtcCA9PT0gKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQgKSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0bXAucGFyZW50V2luZG93IHx8IHdpbmRvdyApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBhdGhcblx0XHRpID0gMDtcblx0XHR3aGlsZSAoICggY3VyID0gZXZlbnRQYXRoWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0bGFzdEVsZW1lbnQgPSBjdXI7XG5cdFx0XHRldmVudC50eXBlID0gaSA+IDEgP1xuXHRcdFx0XHRidWJibGVUeXBlIDpcblx0XHRcdFx0c3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlO1xuXG5cdFx0XHQvLyBqUXVlcnkgaGFuZGxlclxuXHRcdFx0aGFuZGxlID0gKCBkYXRhUHJpdi5nZXQoIGN1ciwgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSAmJlxuXHRcdFx0XHRkYXRhUHJpdi5nZXQoIGN1ciwgXCJoYW5kbGVcIiApO1xuXHRcdFx0aWYgKCBoYW5kbGUgKSB7XG5cdFx0XHRcdGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE5hdGl2ZSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5cGUgXTtcblx0XHRcdGlmICggaGFuZGxlICYmIGhhbmRsZS5hcHBseSAmJiBhY2NlcHREYXRhKCBjdXIgKSApIHtcblx0XHRcdFx0ZXZlbnQucmVzdWx0ID0gaGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdFx0aWYgKCBldmVudC5yZXN1bHQgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZXZlbnQudHlwZSA9IHR5cGU7XG5cblx0XHQvLyBJZiBub2JvZHkgcHJldmVudGVkIHRoZSBkZWZhdWx0IGFjdGlvbiwgZG8gaXQgbm93XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHtcblxuXHRcdFx0aWYgKCAoICFzcGVjaWFsLl9kZWZhdWx0IHx8XG5cdFx0XHRcdHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoIGV2ZW50UGF0aC5wb3AoKSwgZGF0YSApID09PSBmYWxzZSApICYmXG5cdFx0XHRcdGFjY2VwdERhdGEoIGVsZW0gKSApIHtcblxuXHRcdFx0XHQvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGV2ZW50LlxuXHRcdFx0XHQvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mgd2hlcmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAoIzYxNzApXG5cdFx0XHRcdGlmICggb250eXBlICYmIGlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFpc1dpbmRvdyggZWxlbSApICkge1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgcmUtdHJpZ2dlciBhbiBvbkZPTyBldmVudCB3aGVuIHdlIGNhbGwgaXRzIEZPTygpIG1ldGhvZFxuXHRcdFx0XHRcdHRtcCA9IGVsZW1bIG9udHlwZSBdO1xuXG5cdFx0XHRcdFx0aWYgKCB0bXAgKSB7XG5cdFx0XHRcdFx0XHRlbGVtWyBvbnR5cGUgXSA9IG51bGw7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJldmVudCByZS10cmlnZ2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJlYWR5IGJ1YmJsZWQgaXQgYWJvdmVcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdHlwZTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZWxlbVsgdHlwZSBdKCk7XG5cblx0XHRcdFx0XHRpZiAoIGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRcdFx0XHRsYXN0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBzdG9wUHJvcGFnYXRpb25DYWxsYmFjayApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gdG1wO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0Ly8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lXG5cdC8vIFVzZWQgb25seSBmb3IgYGZvY3VzKGluIHwgb3V0KWAgZXZlbnRzXG5cdHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQgKSB7XG5cdFx0dmFyIGUgPSBqUXVlcnkuZXh0ZW5kKFxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCgpLFxuXHRcdFx0ZXZlbnQsXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdGlzU2ltdWxhdGVkOiB0cnVlXG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBlLCBudWxsLCBlbGVtICk7XG5cdH1cblxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApO1xuXHRcdH0gKTtcblx0fSxcblx0dHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBlbGVtID0gdGhpc1sgMCBdO1xuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgZWxlbSwgdHJ1ZSApO1xuXHRcdH1cblx0fVxufSApO1xuXG5cbi8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00NFxuLy8gRmlyZWZveCBkb2Vzbid0IGhhdmUgZm9jdXMoaW4gfCBvdXQpIGV2ZW50c1xuLy8gUmVsYXRlZCB0aWNrZXQgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc3ODdcbi8vXG4vLyBTdXBwb3J0OiBDaHJvbWUgPD00OCAtIDQ5LCBTYWZhcmkgPD05LjAgLSA5LjFcbi8vIGZvY3VzKGluIHwgb3V0KSBldmVudHMgZmlyZSBhZnRlciBmb2N1cyAmIGJsdXIgZXZlbnRzLFxuLy8gd2hpY2ggaXMgc3BlYyB2aW9sYXRpb24gLSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50cy1mb2N1c2V2ZW50LWV2ZW50LW9yZGVyXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ0OTg1N1xuaWYgKCAhc3VwcG9ydC5mb2N1c2luICkge1xuXHRqUXVlcnkuZWFjaCggeyBmb2N1czogXCJmb2N1c2luXCIsIGJsdXI6IFwiZm9jdXNvdXRcIiB9LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXG5cdFx0Ly8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXRcblx0XHR2YXIgaGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdGpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICkgKTtcblx0XHR9O1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0ge1xuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMsXG5cdFx0XHRcdFx0YXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0aWYgKCAhYXR0YWNoZXMgKSB7XG5cdFx0XHRcdFx0ZG9jLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4LCAoIGF0dGFjaGVzIHx8IDAgKSArIDEgKTtcblx0XHRcdH0sXG5cdFx0XHR0ZWFyZG93bjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKSAtIDE7XG5cblx0XHRcdFx0aWYgKCAhYXR0YWNoZXMgKSB7XG5cdFx0XHRcdFx0ZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcblx0XHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4LCBhdHRhY2hlcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fSApO1xufVxudmFyIGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uO1xuXG52YXIgbm9uY2UgPSBEYXRlLm5vdygpO1xuXG52YXIgcnF1ZXJ5ID0gKCAvXFw/LyApO1xuXG5cblxuLy8gQ3Jvc3MtYnJvd3NlciB4bWwgcGFyc2luZ1xualF1ZXJ5LnBhcnNlWE1MID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdHZhciB4bWw7XG5cdGlmICggIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seVxuXHQvLyBJRSB0aHJvd3Mgb24gcGFyc2VGcm9tU3RyaW5nIHdpdGggaW52YWxpZCBpbnB1dC5cblx0dHJ5IHtcblx0XHR4bWwgPSAoIG5ldyB3aW5kb3cuRE9NUGFyc2VyKCkgKS5wYXJzZUZyb21TdHJpbmcoIGRhdGEsIFwidGV4dC94bWxcIiApO1xuXHR9IGNhdGNoICggZSApIHtcblx0XHR4bWwgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRpZiAoICF4bWwgfHwgeG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcInBhcnNlcmVycm9yXCIgKS5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmVycm9yKCBcIkludmFsaWQgWE1MOiBcIiArIGRhdGEgKTtcblx0fVxuXHRyZXR1cm4geG1sO1xufTtcblxuXG52YXJcblx0cmJyYWNrZXQgPSAvXFxbXFxdJC8sXG5cdHJDUkxGID0gL1xccj9cXG4vZyxcblx0cnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLFxuXHRyc3VibWl0dGFibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7XG5cbmZ1bmN0aW9uIGJ1aWxkUGFyYW1zKCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHtcblx0dmFyIG5hbWU7XG5cblx0aWYgKCBBcnJheS5pc0FycmF5KCBvYmogKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBhcnJheSBpdGVtLlxuXHRcdGpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkge1xuXHRcdFx0aWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHtcblxuXHRcdFx0XHQvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuXG5cdFx0XHRcdGFkZCggcHJlZml4LCB2ICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguXG5cdFx0XHRcdGJ1aWxkUGFyYW1zKFxuXHRcdFx0XHRcdHByZWZpeCArIFwiW1wiICsgKCB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9IG51bGwgPyBpIDogXCJcIiApICsgXCJdXCIsXG5cdFx0XHRcdFx0dixcblx0XHRcdFx0XHR0cmFkaXRpb25hbCxcblx0XHRcdFx0XHRhZGRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0fSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIHRvVHlwZSggb2JqICkgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uXG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4ICsgXCJbXCIgKyBuYW1lICsgXCJdXCIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBTZXJpYWxpemUgc2NhbGFyIGl0ZW0uXG5cdFx0YWRkKCBwcmVmaXgsIG9iaiApO1xuXHR9XG59XG5cbi8vIFNlcmlhbGl6ZSBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mXG4vLyBrZXkvdmFsdWVzIGludG8gYSBxdWVyeSBzdHJpbmdcbmpRdWVyeS5wYXJhbSA9IGZ1bmN0aW9uKCBhLCB0cmFkaXRpb25hbCApIHtcblx0dmFyIHByZWZpeCxcblx0XHRzID0gW10sXG5cdFx0YWRkID0gZnVuY3Rpb24oIGtleSwgdmFsdWVPckZ1bmN0aW9uICkge1xuXG5cdFx0XHQvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5kIHVzZSBpdHMgcmV0dXJuIHZhbHVlXG5cdFx0XHR2YXIgdmFsdWUgPSBpc0Z1bmN0aW9uKCB2YWx1ZU9yRnVuY3Rpb24gKSA/XG5cdFx0XHRcdHZhbHVlT3JGdW5jdGlvbigpIDpcblx0XHRcdFx0dmFsdWVPckZ1bmN0aW9uO1xuXG5cdFx0XHRzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJQ29tcG9uZW50KCBrZXkgKSArIFwiPVwiICtcblx0XHRcdFx0ZW5jb2RlVVJJQ29tcG9uZW50KCB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICk7XG5cdFx0fTtcblxuXHQvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLlxuXHRpZiAoIEFycmF5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHNcblx0XHRqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApO1xuXHRcdH0gKTtcblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgXCJvbGRcIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXJcblx0XHQvLyBkaWQgaXQpLCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyByZWN1cnNpdmVseS5cblx0XHRmb3IgKCBwcmVmaXggaW4gYSApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvblxuXHRyZXR1cm4gcy5qb2luKCBcIiZcIiApO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRzZXJpYWxpemU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnkucGFyYW0oIHRoaXMuc2VyaWFsaXplQXJyYXkoKSApO1xuXHR9LFxuXHRzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gQ2FuIGFkZCBwcm9wSG9vayBmb3IgXCJlbGVtZW50c1wiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50c1xuXHRcdFx0dmFyIGVsZW1lbnRzID0galF1ZXJ5LnByb3AoIHRoaXMsIFwiZWxlbWVudHNcIiApO1xuXHRcdFx0cmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRoaXM7XG5cdFx0fSApXG5cdFx0LmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgdHlwZSA9IHRoaXMudHlwZTtcblxuXHRcdFx0Ly8gVXNlIC5pcyggXCI6ZGlzYWJsZWRcIiApIHNvIHRoYXQgZmllbGRzZXRbZGlzYWJsZWRdIHdvcmtzXG5cdFx0XHRyZXR1cm4gdGhpcy5uYW1lICYmICFqUXVlcnkoIHRoaXMgKS5pcyggXCI6ZGlzYWJsZWRcIiApICYmXG5cdFx0XHRcdHJzdWJtaXR0YWJsZS50ZXN0KCB0aGlzLm5vZGVOYW1lICkgJiYgIXJzdWJtaXR0ZXJUeXBlcy50ZXN0KCB0eXBlICkgJiZcblx0XHRcdFx0KCB0aGlzLmNoZWNrZWQgfHwgIXJjaGVja2FibGVUeXBlLnRlc3QoIHR5cGUgKSApO1xuXHRcdH0gKVxuXHRcdC5tYXAoIGZ1bmN0aW9uKCBpLCBlbGVtICkge1xuXHRcdFx0dmFyIHZhbCA9IGpRdWVyeSggdGhpcyApLnZhbCgpO1xuXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWwgKSApIHtcblx0XHRcdFx0cmV0dXJuIGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbCApIHtcblx0XHRcdFx0XHRyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsIFwiXFxyXFxuXCIgKSB9O1xuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0fSApLmdldCgpO1xuXHR9XG59ICk7XG5cblxudmFyXG5cdHIyMCA9IC8lMjAvZyxcblx0cmhhc2ggPSAvIy4qJC8sXG5cdHJhbnRpQ2FjaGUgPSAvKFs/Jl0pXz1bXiZdKi8sXG5cdHJoZWFkZXJzID0gL14oLio/KTpbIFxcdF0qKFteXFxyXFxuXSopJC9tZyxcblxuXHQvLyAjNzY1MywgIzgxMjUsICM4MTUyOiBsb2NhbCBwcm90b2NvbCBkZXRlY3Rpb25cblx0cmxvY2FsUHJvdG9jb2wgPSAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxcblx0cm5vQ29udGVudCA9IC9eKD86R0VUfEhFQUQpJC8sXG5cdHJwcm90b2NvbCA9IC9eXFwvXFwvLyxcblxuXHQvKiBQcmVmaWx0ZXJzXG5cdCAqIDEpIFRoZXkgYXJlIHVzZWZ1bCB0byBpbnRyb2R1Y2UgY3VzdG9tIGRhdGFUeXBlcyAoc2VlIGFqYXgvanNvbnAuanMgZm9yIGFuIGV4YW1wbGUpXG5cdCAqIDIpIFRoZXNlIGFyZSBjYWxsZWQ6XG5cdCAqICAgIC0gQkVGT1JFIGFza2luZyBmb3IgYSB0cmFuc3BvcnRcblx0ICogICAgLSBBRlRFUiBwYXJhbSBzZXJpYWxpemF0aW9uIChzLmRhdGEgaXMgYSBzdHJpbmcgaWYgcy5wcm9jZXNzRGF0YSBpcyB0cnVlKVxuXHQgKiAzKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDQpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogNSkgZXhlY3V0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gY29udGludWUgZG93biB0byBcIipcIiBpZiBuZWVkZWRcblx0ICovXG5cdHByZWZpbHRlcnMgPSB7fSxcblxuXHQvKiBUcmFuc3BvcnRzIGJpbmRpbmdzXG5cdCAqIDEpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogMikgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiAzKSBzZWxlY3Rpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBnbyB0byBcIipcIiBpZiBuZWVkZWRcblx0ICovXG5cdHRyYW5zcG9ydHMgPSB7fSxcblxuXHQvLyBBdm9pZCBjb21tZW50LXByb2xvZyBjaGFyIHNlcXVlbmNlICgjMTAwOTgpOyBtdXN0IGFwcGVhc2UgbGludCBhbmQgZXZhZGUgY29tcHJlc3Npb25cblx0YWxsVHlwZXMgPSBcIiovXCIuY29uY2F0KCBcIipcIiApLFxuXG5cdC8vIEFuY2hvciB0YWcgZm9yIHBhcnNpbmcgdGhlIGRvY3VtZW50IG9yaWdpblxuXHRvcmlnaW5BbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImFcIiApO1xuXHRvcmlnaW5BbmNob3IuaHJlZiA9IGxvY2F0aW9uLmhyZWY7XG5cbi8vIEJhc2UgXCJjb25zdHJ1Y3RvclwiIGZvciBqUXVlcnkuYWpheFByZWZpbHRlciBhbmQgalF1ZXJ5LmFqYXhUcmFuc3BvcnRcbmZ1bmN0aW9uIGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlICkge1xuXG5cdC8vIGRhdGFUeXBlRXhwcmVzc2lvbiBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gXCIqXCJcblx0cmV0dXJuIGZ1bmN0aW9uKCBkYXRhVHlwZUV4cHJlc3Npb24sIGZ1bmMgKSB7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhVHlwZUV4cHJlc3Npb24gIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRmdW5jID0gZGF0YVR5cGVFeHByZXNzaW9uO1xuXHRcdFx0ZGF0YVR5cGVFeHByZXNzaW9uID0gXCIqXCI7XG5cdFx0fVxuXG5cdFx0dmFyIGRhdGFUeXBlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRkYXRhVHlwZXMgPSBkYXRhVHlwZUV4cHJlc3Npb24udG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBmdW5jICkgKSB7XG5cblx0XHRcdC8vIEZvciBlYWNoIGRhdGFUeXBlIGluIHRoZSBkYXRhVHlwZUV4cHJlc3Npb25cblx0XHRcdHdoaWxlICggKCBkYXRhVHlwZSA9IGRhdGFUeXBlc1sgaSsrIF0gKSApIHtcblxuXHRcdFx0XHQvLyBQcmVwZW5kIGlmIHJlcXVlc3RlZFxuXHRcdFx0XHRpZiAoIGRhdGFUeXBlWyAwIF0gPT09IFwiK1wiICkge1xuXHRcdFx0XHRcdGRhdGFUeXBlID0gZGF0YVR5cGUuc2xpY2UoIDEgKSB8fCBcIipcIjtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnVuc2hpZnQoIGZ1bmMgKTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYXBwZW5kXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0KCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS5wdXNoKCBmdW5jICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbi8vIEJhc2UgaW5zcGVjdGlvbiBmdW5jdGlvbiBmb3IgcHJlZmlsdGVycyBhbmQgdHJhbnNwb3J0c1xuZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApIHtcblxuXHR2YXIgaW5zcGVjdGVkID0ge30sXG5cdFx0c2Vla2luZ1RyYW5zcG9ydCA9ICggc3RydWN0dXJlID09PSB0cmFuc3BvcnRzICk7XG5cblx0ZnVuY3Rpb24gaW5zcGVjdCggZGF0YVR5cGUgKSB7XG5cdFx0dmFyIHNlbGVjdGVkO1xuXHRcdGluc3BlY3RlZFsgZGF0YVR5cGUgXSA9IHRydWU7XG5cdFx0alF1ZXJ5LmVhY2goIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSwgZnVuY3Rpb24oIF8sIHByZWZpbHRlck9yRmFjdG9yeSApIHtcblx0XHRcdHZhciBkYXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJlZmlsdGVyT3JGYWN0b3J5KCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICk7XG5cdFx0XHRpZiAoIHR5cGVvZiBkYXRhVHlwZU9yVHJhbnNwb3J0ID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzZWVraW5nVHJhbnNwb3J0ICYmICFpbnNwZWN0ZWRbIGRhdGFUeXBlT3JUcmFuc3BvcnQgXSApIHtcblxuXHRcdFx0XHRvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdGluc3BlY3QoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmICggc2Vla2luZ1RyYW5zcG9ydCApIHtcblx0XHRcdFx0cmV0dXJuICEoIHNlbGVjdGVkID0gZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0XHRyZXR1cm4gc2VsZWN0ZWQ7XG5cdH1cblxuXHRyZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5kYXRhVHlwZXNbIDAgXSApIHx8ICFpbnNwZWN0ZWRbIFwiKlwiIF0gJiYgaW5zcGVjdCggXCIqXCIgKTtcbn1cblxuLy8gQSBzcGVjaWFsIGV4dGVuZCBmb3IgYWpheCBvcHRpb25zXG4vLyB0aGF0IHRha2VzIFwiZmxhdFwiIG9wdGlvbnMgKG5vdCB0byBiZSBkZWVwIGV4dGVuZGVkKVxuLy8gRml4ZXMgIzk4ODdcbmZ1bmN0aW9uIGFqYXhFeHRlbmQoIHRhcmdldCwgc3JjICkge1xuXHR2YXIga2V5LCBkZWVwLFxuXHRcdGZsYXRPcHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTtcblxuXHRmb3IgKCBrZXkgaW4gc3JjICkge1xuXHRcdGlmICggc3JjWyBrZXkgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0KCBmbGF0T3B0aW9uc1sga2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAgfHwgKCBkZWVwID0ge30gKSApIClbIGtleSBdID0gc3JjWyBrZXkgXTtcblx0XHR9XG5cdH1cblx0aWYgKCBkZWVwICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCApO1xuXHR9XG5cblx0cmV0dXJuIHRhcmdldDtcbn1cblxuLyogSGFuZGxlcyByZXNwb25zZXMgdG8gYW4gYWpheCByZXF1ZXN0OlxuICogLSBmaW5kcyB0aGUgcmlnaHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10eXBlIGFuZCBleHBlY3RlZCBkYXRhVHlwZSlcbiAqIC0gcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuICovXG5mdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICkge1xuXG5cdHZhciBjdCwgdHlwZSwgZmluYWxEYXRhVHlwZSwgZmlyc3REYXRhVHlwZSxcblx0XHRjb250ZW50cyA9IHMuY29udGVudHMsXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXM7XG5cblx0Ly8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nlc3Ncblx0d2hpbGUgKCBkYXRhVHlwZXNbIDAgXSA9PT0gXCIqXCIgKSB7XG5cdFx0ZGF0YVR5cGVzLnNoaWZ0KCk7XG5cdFx0aWYgKCBjdCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0Y3QgPSBzLm1pbWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEga25vd24gY29udGVudC10eXBlXG5cdGlmICggY3QgKSB7XG5cdFx0Zm9yICggdHlwZSBpbiBjb250ZW50cyApIHtcblx0XHRcdGlmICggY29udGVudHNbIHR5cGUgXSAmJiBjb250ZW50c1sgdHlwZSBdLnRlc3QoIGN0ICkgKSB7XG5cdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0eXBlICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgcmVzcG9uc2UgZm9yIHRoZSBleHBlY3RlZCBkYXRhVHlwZVxuXHRpZiAoIGRhdGFUeXBlc1sgMCBdIGluIHJlc3BvbnNlcyApIHtcblx0XHRmaW5hbERhdGFUeXBlID0gZGF0YVR5cGVzWyAwIF07XG5cdH0gZWxzZSB7XG5cblx0XHQvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzXG5cdFx0Zm9yICggdHlwZSBpbiByZXNwb25zZXMgKSB7XG5cdFx0XHRpZiAoICFkYXRhVHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNbIHR5cGUgKyBcIiBcIiArIGRhdGFUeXBlc1sgMCBdIF0gKSB7XG5cdFx0XHRcdGZpbmFsRGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggIWZpcnN0RGF0YVR5cGUgKSB7XG5cdFx0XHRcdGZpcnN0RGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE9yIGp1c3QgdXNlIGZpcnN0IG9uZVxuXHRcdGZpbmFsRGF0YVR5cGUgPSBmaW5hbERhdGFUeXBlIHx8IGZpcnN0RGF0YVR5cGU7XG5cdH1cblxuXHQvLyBJZiB3ZSBmb3VuZCBhIGRhdGFUeXBlXG5cdC8vIFdlIGFkZCB0aGUgZGF0YVR5cGUgdG8gdGhlIGxpc3QgaWYgbmVlZGVkXG5cdC8vIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2Vcblx0aWYgKCBmaW5hbERhdGFUeXBlICkge1xuXHRcdGlmICggZmluYWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAwIF0gKSB7XG5cdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggZmluYWxEYXRhVHlwZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzcG9uc2VzWyBmaW5hbERhdGFUeXBlIF07XG5cdH1cbn1cblxuLyogQ2hhaW4gY29udmVyc2lvbnMgZ2l2ZW4gdGhlIHJlcXVlc3QgYW5kIHRoZSBvcmlnaW5hbCByZXNwb25zZVxuICogQWxzbyBzZXRzIHRoZSByZXNwb25zZVhYWCBmaWVsZHMgb24gdGhlIGpxWEhSIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApIHtcblx0dmFyIGNvbnYyLCBjdXJyZW50LCBjb252LCB0bXAsIHByZXYsXG5cdFx0Y29udmVydGVycyA9IHt9LFxuXG5cdFx0Ly8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvblxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLnNsaWNlKCk7XG5cblx0Ly8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwIHdpdGggbG93ZXJjYXNlZCBrZXlzXG5cdGlmICggZGF0YVR5cGVzWyAxIF0gKSB7XG5cdFx0Zm9yICggY29udiBpbiBzLmNvbnZlcnRlcnMgKSB7XG5cdFx0XHRjb252ZXJ0ZXJzWyBjb252LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdO1xuXHRcdH1cblx0fVxuXG5cdGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTtcblxuXHQvLyBDb252ZXJ0IHRvIGVhY2ggc2VxdWVudGlhbCBkYXRhVHlwZVxuXHR3aGlsZSAoIGN1cnJlbnQgKSB7XG5cblx0XHRpZiAoIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSApIHtcblx0XHRcdGpxWEhSWyBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gXSA9IHJlc3BvbnNlO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVkXG5cdFx0aWYgKCAhcHJldiAmJiBpc1N1Y2Nlc3MgJiYgcy5kYXRhRmlsdGVyICkge1xuXHRcdFx0cmVzcG9uc2UgPSBzLmRhdGFGaWx0ZXIoIHJlc3BvbnNlLCBzLmRhdGFUeXBlICk7XG5cdFx0fVxuXG5cdFx0cHJldiA9IGN1cnJlbnQ7XG5cdFx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdFx0aWYgKCBjdXJyZW50ICkge1xuXG5cdFx0XHQvLyBUaGVyZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvXG5cdFx0XHRpZiAoIGN1cnJlbnQgPT09IFwiKlwiICkge1xuXG5cdFx0XHRcdGN1cnJlbnQgPSBwcmV2O1xuXG5cdFx0XHQvLyBDb252ZXJ0IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMgZnJvbSBjdXJyZW50XG5cdFx0XHR9IGVsc2UgaWYgKCBwcmV2ICE9PSBcIipcIiAmJiBwcmV2ICE9PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdC8vIFNlZWsgYSBkaXJlY3QgY29udmVydGVyXG5cdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgXCIqIFwiICsgY3VycmVudCBdO1xuXG5cdFx0XHRcdC8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyXG5cdFx0XHRcdGlmICggIWNvbnYgKSB7XG5cdFx0XHRcdFx0Zm9yICggY29udjIgaW4gY29udmVydGVycyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSWYgY29udjIgb3V0cHV0cyBjdXJyZW50XG5cdFx0XHRcdFx0XHR0bXAgPSBjb252Mi5zcGxpdCggXCIgXCIgKTtcblx0XHRcdFx0XHRcdGlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gSWYgcHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFjY2VwdGVkIGlucHV0XG5cdFx0XHRcdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyB0bXBbIDAgXSBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0Y29udmVydGVyc1sgXCIqIFwiICsgdG1wWyAwIF0gXTtcblx0XHRcdFx0XHRcdFx0aWYgKCBjb252ICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ29uZGVuc2UgZXF1aXZhbGVuY2UgY29udmVydGVyc1xuXHRcdFx0XHRcdFx0XHRcdGlmICggY29udiA9PT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBjb252MiBdO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCBpbnNlcnQgdGhlIGludGVybWVkaWF0ZSBkYXRhVHlwZVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGNvbnZlcnRlcnNbIGNvbnYyIF0gIT09IHRydWUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50ID0gdG1wWyAwIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggdG1wWyAxIF0gKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBcHBseSBjb252ZXJ0ZXIgKGlmIG5vdCBhbiBlcXVpdmFsZW5jZSlcblx0XHRcdFx0aWYgKCBjb252ICE9PSB0cnVlICkge1xuXG5cdFx0XHRcdFx0Ly8gVW5sZXNzIGVycm9ycyBhcmUgYWxsb3dlZCB0byBidWJibGUsIGNhdGNoIGFuZCByZXR1cm4gdGhlbVxuXHRcdFx0XHRcdGlmICggY29udiAmJiBzLnRocm93cyApIHtcblx0XHRcdFx0XHRcdHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdGU6IFwicGFyc2VyZXJyb3JcIixcblx0XHRcdFx0XHRcdFx0XHRlcnJvcjogY29udiA/IGUgOiBcIk5vIGNvbnZlcnNpb24gZnJvbSBcIiArIHByZXYgKyBcIiB0byBcIiArIGN1cnJlbnRcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4geyBzdGF0ZTogXCJzdWNjZXNzXCIsIGRhdGE6IHJlc3BvbnNlIH07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBDb3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXNcblx0YWN0aXZlOiAwLFxuXG5cdC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3Rcblx0bGFzdE1vZGlmaWVkOiB7fSxcblx0ZXRhZzoge30sXG5cblx0YWpheFNldHRpbmdzOiB7XG5cdFx0dXJsOiBsb2NhdGlvbi5ocmVmLFxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0aXNMb2NhbDogcmxvY2FsUHJvdG9jb2wudGVzdCggbG9jYXRpb24ucHJvdG9jb2wgKSxcblx0XHRnbG9iYWw6IHRydWUsXG5cdFx0cHJvY2Vzc0RhdGE6IHRydWUsXG5cdFx0YXN5bmM6IHRydWUsXG5cdFx0Y29udGVudFR5cGU6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIsXG5cblx0XHQvKlxuXHRcdHRpbWVvdXQ6IDAsXG5cdFx0ZGF0YTogbnVsbCxcblx0XHRkYXRhVHlwZTogbnVsbCxcblx0XHR1c2VybmFtZTogbnVsbCxcblx0XHRwYXNzd29yZDogbnVsbCxcblx0XHRjYWNoZTogbnVsbCxcblx0XHR0aHJvd3M6IGZhbHNlLFxuXHRcdHRyYWRpdGlvbmFsOiBmYWxzZSxcblx0XHRoZWFkZXJzOiB7fSxcblx0XHQqL1xuXG5cdFx0YWNjZXB0czoge1xuXHRcdFx0XCIqXCI6IGFsbFR5cGVzLFxuXHRcdFx0dGV4dDogXCJ0ZXh0L3BsYWluXCIsXG5cdFx0XHRodG1sOiBcInRleHQvaHRtbFwiLFxuXHRcdFx0eG1sOiBcImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWxcIixcblx0XHRcdGpzb246IFwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0XCJcblx0XHR9LFxuXG5cdFx0Y29udGVudHM6IHtcblx0XHRcdHhtbDogL1xcYnhtbFxcYi8sXG5cdFx0XHRodG1sOiAvXFxiaHRtbC8sXG5cdFx0XHRqc29uOiAvXFxianNvblxcYi9cblx0XHR9LFxuXG5cdFx0cmVzcG9uc2VGaWVsZHM6IHtcblx0XHRcdHhtbDogXCJyZXNwb25zZVhNTFwiLFxuXHRcdFx0dGV4dDogXCJyZXNwb25zZVRleHRcIixcblx0XHRcdGpzb246IFwicmVzcG9uc2VKU09OXCJcblx0XHR9LFxuXG5cdFx0Ly8gRGF0YSBjb252ZXJ0ZXJzXG5cdFx0Ly8gS2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxsIFwiKlwiKSBhbmQgZGVzdGluYXRpb24gdHlwZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuXHRcdGNvbnZlcnRlcnM6IHtcblxuXHRcdFx0Ly8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0XG5cdFx0XHRcIiogdGV4dFwiOiBTdHJpbmcsXG5cblx0XHRcdC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKVxuXHRcdFx0XCJ0ZXh0IGh0bWxcIjogdHJ1ZSxcblxuXHRcdFx0Ly8gRXZhbHVhdGUgdGV4dCBhcyBhIGpzb24gZXhwcmVzc2lvblxuXHRcdFx0XCJ0ZXh0IGpzb25cIjogSlNPTi5wYXJzZSxcblxuXHRcdFx0Ly8gUGFyc2UgdGV4dCBhcyB4bWxcblx0XHRcdFwidGV4dCB4bWxcIjogalF1ZXJ5LnBhcnNlWE1MXG5cdFx0fSxcblxuXHRcdC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6XG5cdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZlxuXHRcdC8vIGFuZCB3aGVuIHlvdSBjcmVhdGUgb25lIHRoYXQgc2hvdWxkbid0IGJlXG5cdFx0Ly8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpXG5cdFx0ZmxhdE9wdGlvbnM6IHtcblx0XHRcdHVybDogdHJ1ZSxcblx0XHRcdGNvbnRleHQ6IHRydWVcblx0XHR9XG5cdH0sXG5cblx0Ly8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBvYmplY3QgaW50byB0YXJnZXRcblx0Ly8gd2l0aCBib3RoIGFqYXhTZXR0aW5ncyBhbmQgc2V0dGluZ3MgZmllbGRzLlxuXHQvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLlxuXHRhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkge1xuXHRcdHJldHVybiBzZXR0aW5ncyA/XG5cblx0XHRcdC8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0XG5cdFx0XHRhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKSwgc2V0dGluZ3MgKSA6XG5cblx0XHRcdC8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3Ncblx0XHRcdGFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApO1xuXHR9LFxuXG5cdGFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycyApLFxuXHRhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSxcblxuXHQvLyBNYWluIG1ldGhvZFxuXHRhamF4OiBmdW5jdGlvbiggdXJsLCBvcHRpb25zICkge1xuXG5cdFx0Ly8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmVcblx0XHRpZiAoIHR5cGVvZiB1cmwgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRvcHRpb25zID0gdXJsO1xuXHRcdFx0dXJsID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0XG5cdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cblx0XHR2YXIgdHJhbnNwb3J0LFxuXG5cdFx0XHQvLyBVUkwgd2l0aG91dCBhbnRpLWNhY2hlIHBhcmFtXG5cdFx0XHRjYWNoZVVSTCxcblxuXHRcdFx0Ly8gUmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nLFxuXHRcdFx0cmVzcG9uc2VIZWFkZXJzLFxuXG5cdFx0XHQvLyB0aW1lb3V0IGhhbmRsZVxuXHRcdFx0dGltZW91dFRpbWVyLFxuXG5cdFx0XHQvLyBVcmwgY2xlYW51cCB2YXJcblx0XHRcdHVybEFuY2hvcixcblxuXHRcdFx0Ly8gUmVxdWVzdCBzdGF0ZSAoYmVjb21lcyBmYWxzZSB1cG9uIHNlbmQgYW5kIHRydWUgdXBvbiBjb21wbGV0aW9uKVxuXHRcdFx0Y29tcGxldGVkLFxuXG5cdFx0XHQvLyBUbyBrbm93IGlmIGdsb2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWRcblx0XHRcdGZpcmVHbG9iYWxzLFxuXG5cdFx0XHQvLyBMb29wIHZhcmlhYmxlXG5cdFx0XHRpLFxuXG5cdFx0XHQvLyB1bmNhY2hlZCBwYXJ0IG9mIHRoZSB1cmxcblx0XHRcdHVuY2FjaGVkLFxuXG5cdFx0XHQvLyBDcmVhdGUgdGhlIGZpbmFsIG9wdGlvbnMgb2JqZWN0XG5cdFx0XHRzID0galF1ZXJ5LmFqYXhTZXR1cCgge30sIG9wdGlvbnMgKSxcblxuXHRcdFx0Ly8gQ2FsbGJhY2tzIGNvbnRleHRcblx0XHRcdGNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLFxuXG5cdFx0XHQvLyBDb250ZXh0IGZvciBnbG9iYWwgZXZlbnRzIGlzIGNhbGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERPTSBub2RlIG9yIGpRdWVyeSBjb2xsZWN0aW9uXG5cdFx0XHRnbG9iYWxFdmVudENvbnRleHQgPSBzLmNvbnRleHQgJiZcblx0XHRcdFx0KCBjYWxsYmFja0NvbnRleHQubm9kZVR5cGUgfHwgY2FsbGJhY2tDb250ZXh0LmpxdWVyeSApID9cblx0XHRcdFx0XHRqUXVlcnkoIGNhbGxiYWNrQ29udGV4dCApIDpcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQsXG5cblx0XHRcdC8vIERlZmVycmVkc1xuXHRcdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdHN0YXR1c0NvZGUgPSBzLnN0YXR1c0NvZGUgfHwge30sXG5cblx0XHRcdC8vIEhlYWRlcnMgKHRoZXkgYXJlIHNlbnQgYWxsIGF0IG9uY2UpXG5cdFx0XHRyZXF1ZXN0SGVhZGVycyA9IHt9LFxuXHRcdFx0cmVxdWVzdEhlYWRlcnNOYW1lcyA9IHt9LFxuXG5cdFx0XHQvLyBEZWZhdWx0IGFib3J0IG1lc3NhZ2Vcblx0XHRcdHN0ckFib3J0ID0gXCJjYW5jZWxlZFwiLFxuXG5cdFx0XHQvLyBGYWtlIHhoclxuXHRcdFx0anFYSFIgPSB7XG5cdFx0XHRcdHJlYWR5U3RhdGU6IDAsXG5cblx0XHRcdFx0Ly8gQnVpbGRzIGhlYWRlcnMgaGFzaHRhYmxlIGlmIG5lZWRlZFxuXHRcdFx0XHRnZXRSZXNwb25zZUhlYWRlcjogZnVuY3Rpb24oIGtleSApIHtcblx0XHRcdFx0XHR2YXIgbWF0Y2g7XG5cdFx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdFx0XHRpZiAoICFyZXNwb25zZUhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlSGVhZGVycyA9IHt9O1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAoICggbWF0Y2ggPSByaGVhZGVycy5leGVjKCByZXNwb25zZUhlYWRlcnNTdHJpbmcgKSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hbIDEgXS50b0xvd2VyQ2FzZSgpIF0gPSBtYXRjaFsgMiBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoID09IG51bGwgPyBudWxsIDogbWF0Y2g7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gUmF3IHN0cmluZ1xuXHRcdFx0XHRnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBjb21wbGV0ZWQgPyByZXNwb25zZUhlYWRlcnNTdHJpbmcgOiBudWxsO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhY2hlcyB0aGUgaGVhZGVyXG5cdFx0XHRcdHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0bmFtZSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdID1cblx0XHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gfHwgbmFtZTtcblx0XHRcdFx0XHRcdHJlcXVlc3RIZWFkZXJzWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGVzIHJlc3BvbnNlIGNvbnRlbnQtdHlwZSBoZWFkZXJcblx0XHRcdFx0b3ZlcnJpZGVNaW1lVHlwZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRcdHMubWltZVR5cGUgPSB0eXBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0XHRzdGF0dXNDb2RlOiBmdW5jdGlvbiggbWFwICkge1xuXHRcdFx0XHRcdHZhciBjb2RlO1xuXHRcdFx0XHRcdGlmICggbWFwICkge1xuXHRcdFx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gRXhlY3V0ZSB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzXG5cdFx0XHRcdFx0XHRcdGpxWEhSLmFsd2F5cyggbWFwWyBqcVhIUi5zdGF0dXMgXSApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBMYXp5LWFkZCB0aGUgbmV3IGNhbGxiYWNrcyBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyBvbGQgb25lc1xuXHRcdFx0XHRcdFx0XHRmb3IgKCBjb2RlIGluIG1hcCApIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0YXR1c0NvZGVbIGNvZGUgXSwgbWFwWyBjb2RlIF0gXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBDYW5jZWwgdGhlIHJlcXVlc3Rcblx0XHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCBzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHZhciBmaW5hbFRleHQgPSBzdGF0dXNUZXh0IHx8IHN0ckFib3J0O1xuXHRcdFx0XHRcdGlmICggdHJhbnNwb3J0ICkge1xuXHRcdFx0XHRcdFx0dHJhbnNwb3J0LmFib3J0KCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZG9uZSggMCwgZmluYWxUZXh0ICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHQvLyBBdHRhY2ggZGVmZXJyZWRzXG5cdFx0ZGVmZXJyZWQucHJvbWlzZSgganFYSFIgKTtcblxuXHRcdC8vIEFkZCBwcm90b2NvbCBpZiBub3QgcHJvdmlkZWQgKHByZWZpbHRlcnMgbWlnaHQgZXhwZWN0IGl0KVxuXHRcdC8vIEhhbmRsZSBmYWxzeSB1cmwgaW4gdGhlIHNldHRpbmdzIG9iamVjdCAoIzEwMDkzOiBjb25zaXN0ZW5jeSB3aXRoIG9sZCBzaWduYXR1cmUpXG5cdFx0Ly8gV2UgYWxzbyB1c2UgdGhlIHVybCBwYXJhbWV0ZXIgaWYgYXZhaWxhYmxlXG5cdFx0cy51cmwgPSAoICggdXJsIHx8IHMudXJsIHx8IGxvY2F0aW9uLmhyZWYgKSArIFwiXCIgKVxuXHRcdFx0LnJlcGxhY2UoIHJwcm90b2NvbCwgbG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKTtcblxuXHRcdC8vIEFsaWFzIG1ldGhvZCBvcHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0ICMxMjAwNFxuXHRcdHMudHlwZSA9IG9wdGlvbnMubWV0aG9kIHx8IG9wdGlvbnMudHlwZSB8fCBzLm1ldGhvZCB8fCBzLnR5cGU7XG5cblx0XHQvLyBFeHRyYWN0IGRhdGFUeXBlcyBsaXN0XG5cdFx0cy5kYXRhVHlwZXMgPSAoIHMuZGF0YVR5cGUgfHwgXCIqXCIgKS50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cblx0XHQvLyBBIGNyb3NzLWRvbWFpbiByZXF1ZXN0IGlzIGluIG9yZGVyIHdoZW4gdGhlIG9yaWdpbiBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IG9yaWdpbi5cblx0XHRpZiAoIHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHtcblx0XHRcdHVybEFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiYVwiICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OCAtIDExLCBFZGdlIDEyIC0gMTVcblx0XHRcdC8vIElFIHRocm93cyBleGNlcHRpb24gb24gYWNjZXNzaW5nIHRoZSBocmVmIHByb3BlcnR5IGlmIHVybCBpcyBtYWxmb3JtZWQsXG5cdFx0XHQvLyBlLmcuIGh0dHA6Ly9leGFtcGxlLmNvbTo4MHgvXG5cdFx0XHR0cnkge1xuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHMudXJsO1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OCAtIDExIG9ubHlcblx0XHRcdFx0Ly8gQW5jaG9yJ3MgaG9zdCBwcm9wZXJ0eSBpc24ndCBjb3JyZWN0bHkgc2V0IHdoZW4gcy51cmwgaXMgcmVsYXRpdmVcblx0XHRcdFx0dXJsQW5jaG9yLmhyZWYgPSB1cmxBbmNob3IuaHJlZjtcblx0XHRcdFx0cy5jcm9zc0RvbWFpbiA9IG9yaWdpbkFuY2hvci5wcm90b2NvbCArIFwiLy9cIiArIG9yaWdpbkFuY2hvci5ob3N0ICE9PVxuXHRcdFx0XHRcdHVybEFuY2hvci5wcm90b2NvbCArIFwiLy9cIiArIHVybEFuY2hvci5ob3N0O1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0Ly8gSWYgdGhlcmUgaXMgYW4gZXJyb3IgcGFyc2luZyB0aGUgVVJMLCBhc3N1bWUgaXQgaXMgY3Jvc3NEb21haW4sXG5cdFx0XHRcdC8vIGl0IGNhbiBiZSByZWplY3RlZCBieSB0aGUgdHJhbnNwb3J0IGlmIGl0IGlzIGludmFsaWRcblx0XHRcdFx0cy5jcm9zc0RvbWFpbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBkYXRhIGlmIG5vdCBhbHJlYWR5IGEgc3RyaW5nXG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0aW9uYWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwcmVmaWx0ZXJzXG5cdFx0aW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHByZWZpbHRlciwgc3RvcCB0aGVyZVxuXHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0cmV0dXJuIGpxWEhSO1xuXHRcdH1cblxuXHRcdC8vIFdlIGNhbiBmaXJlIGdsb2JhbCBldmVudHMgYXMgb2Ygbm93IGlmIGFza2VkIHRvXG5cdFx0Ly8gRG9uJ3QgZmlyZSBldmVudHMgaWYgalF1ZXJ5LmV2ZW50IGlzIHVuZGVmaW5lZCBpbiBhbiBBTUQtdXNhZ2Ugc2NlbmFyaW8gKCMxNTExOClcblx0XHRmaXJlR2xvYmFscyA9IGpRdWVyeS5ldmVudCAmJiBzLmdsb2JhbDtcblxuXHRcdC8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVxdWVzdHNcblx0XHRpZiAoIGZpcmVHbG9iYWxzICYmIGpRdWVyeS5hY3RpdmUrKyA9PT0gMCApIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBcImFqYXhTdGFydFwiICk7XG5cdFx0fVxuXG5cdFx0Ly8gVXBwZXJjYXNlIHRoZSB0eXBlXG5cdFx0cy50eXBlID0gcy50eXBlLnRvVXBwZXJDYXNlKCk7XG5cblx0XHQvLyBEZXRlcm1pbmUgaWYgcmVxdWVzdCBoYXMgY29udGVudFxuXHRcdHMuaGFzQ29udGVudCA9ICFybm9Db250ZW50LnRlc3QoIHMudHlwZSApO1xuXG5cdFx0Ly8gU2F2ZSB0aGUgVVJMIGluIGNhc2Ugd2UncmUgdG95aW5nIHdpdGggdGhlIElmLU1vZGlmaWVkLVNpbmNlXG5cdFx0Ly8gYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyIGxhdGVyIG9uXG5cdFx0Ly8gUmVtb3ZlIGhhc2ggdG8gc2ltcGxpZnkgdXJsIG1hbmlwdWxhdGlvblxuXHRcdGNhY2hlVVJMID0gcy51cmwucmVwbGFjZSggcmhhc2gsIFwiXCIgKTtcblxuXHRcdC8vIE1vcmUgb3B0aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50XG5cdFx0aWYgKCAhcy5oYXNDb250ZW50ICkge1xuXG5cdFx0XHQvLyBSZW1lbWJlciB0aGUgaGFzaCBzbyB3ZSBjYW4gcHV0IGl0IGJhY2tcblx0XHRcdHVuY2FjaGVkID0gcy51cmwuc2xpY2UoIGNhY2hlVVJMLmxlbmd0aCApO1xuXG5cdFx0XHQvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSBhbmQgc2hvdWxkIGJlIHByb2Nlc3NlZCwgYXBwZW5kIGRhdGEgdG8gdXJsXG5cdFx0XHRpZiAoIHMuZGF0YSAmJiAoIHMucHJvY2Vzc0RhdGEgfHwgdHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiApICkge1xuXHRcdFx0XHRjYWNoZVVSTCArPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gXCImXCIgOiBcIj9cIiApICsgcy5kYXRhO1xuXG5cdFx0XHRcdC8vICM5NjgyOiByZW1vdmUgZGF0YSBzbyB0aGF0IGl0J3Mgbm90IHVzZWQgaW4gYW4gZXZlbnR1YWwgcmV0cnlcblx0XHRcdFx0ZGVsZXRlIHMuZGF0YTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIG9yIHVwZGF0ZSBhbnRpLWNhY2hlIHBhcmFtIGlmIG5lZWRlZFxuXHRcdFx0aWYgKCBzLmNhY2hlID09PSBmYWxzZSApIHtcblx0XHRcdFx0Y2FjaGVVUkwgPSBjYWNoZVVSTC5yZXBsYWNlKCByYW50aUNhY2hlLCBcIiQxXCIgKTtcblx0XHRcdFx0dW5jYWNoZWQgPSAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gXCImXCIgOiBcIj9cIiApICsgXCJfPVwiICsgKCBub25jZSsrICkgKyB1bmNhY2hlZDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUHV0IGhhc2ggYW5kIGFudGktY2FjaGUgb24gdGhlIFVSTCB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkIChnaC0xNzMyKVxuXHRcdFx0cy51cmwgPSBjYWNoZVVSTCArIHVuY2FjaGVkO1xuXG5cdFx0Ly8gQ2hhbmdlICclMjAnIHRvICcrJyBpZiB0aGlzIGlzIGVuY29kZWQgZm9ybSBib2R5IGNvbnRlbnQgKGdoLTI2NTgpXG5cdFx0fSBlbHNlIGlmICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiZcblx0XHRcdCggcy5jb250ZW50VHlwZSB8fCBcIlwiICkuaW5kZXhPZiggXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApID09PSAwICkge1xuXHRcdFx0cy5kYXRhID0gcy5kYXRhLnJlcGxhY2UoIHIyMCwgXCIrXCIgKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0aWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU1vZGlmaWVkLVNpbmNlXCIsIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHRcdGlmICggalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTm9uZS1NYXRjaFwiLCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudFxuXHRcdGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJDb250ZW50LVR5cGVcIiwgcy5jb250ZW50VHlwZSApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGVcblx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKFxuXHRcdFx0XCJBY2NlcHRcIixcblx0XHRcdHMuZGF0YVR5cGVzWyAwIF0gJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gP1xuXHRcdFx0XHRzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSArXG5cdFx0XHRcdFx0KCBzLmRhdGFUeXBlc1sgMCBdICE9PSBcIipcIiA/IFwiLCBcIiArIGFsbFR5cGVzICsgXCI7IHE9MC4wMVwiIDogXCJcIiApIDpcblx0XHRcdFx0cy5hY2NlcHRzWyBcIipcIiBdXG5cdFx0KTtcblxuXHRcdC8vIENoZWNrIGZvciBoZWFkZXJzIG9wdGlvblxuXHRcdGZvciAoIGkgaW4gcy5oZWFkZXJzICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFkZXJzWyBpIF0gKTtcblx0XHR9XG5cblx0XHQvLyBBbGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5IGFib3J0XG5cdFx0aWYgKCBzLmJlZm9yZVNlbmQgJiZcblx0XHRcdCggcy5iZWZvcmVTZW5kLmNhbGwoIGNhbGxiYWNrQ29udGV4dCwganFYSFIsIHMgKSA9PT0gZmFsc2UgfHwgY29tcGxldGVkICkgKSB7XG5cblx0XHRcdC8vIEFib3J0IGlmIG5vdCBkb25lIGFscmVhZHkgYW5kIHJldHVyblxuXHRcdFx0cmV0dXJuIGpxWEhSLmFib3J0KCk7XG5cdFx0fVxuXG5cdFx0Ly8gQWJvcnRpbmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0aW9uXG5cdFx0c3RyQWJvcnQgPSBcImFib3J0XCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJlZHNcblx0XHRjb21wbGV0ZURlZmVycmVkLmFkZCggcy5jb21wbGV0ZSApO1xuXHRcdGpxWEhSLmRvbmUoIHMuc3VjY2VzcyApO1xuXHRcdGpxWEhSLmZhaWwoIHMuZXJyb3IgKTtcblxuXHRcdC8vIEdldCB0cmFuc3BvcnRcblx0XHR0cmFuc3BvcnQgPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1hYm9ydFxuXHRcdGlmICggIXRyYW5zcG9ydCApIHtcblx0XHRcdGRvbmUoIC0xLCBcIk5vIFRyYW5zcG9ydFwiICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSAxO1xuXG5cdFx0XHQvLyBTZW5kIGdsb2JhbCBldmVudFxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheFNlbmRcIiwgWyBqcVhIUiwgcyBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGFqYXhTZW5kLCBzdG9wIHRoZXJlXG5cdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0cmV0dXJuIGpxWEhSO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUaW1lb3V0XG5cdFx0XHRpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHtcblx0XHRcdFx0dGltZW91dFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGpxWEhSLmFib3J0KCBcInRpbWVvdXRcIiApO1xuXHRcdFx0XHR9LCBzLnRpbWVvdXQgKTtcblx0XHRcdH1cblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29tcGxldGVkID0gZmFsc2U7XG5cdFx0XHRcdHRyYW5zcG9ydC5zZW5kKCByZXF1ZXN0SGVhZGVycywgZG9uZSApO1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0Ly8gUmV0aHJvdyBwb3N0LWNvbXBsZXRpb24gZXhjZXB0aW9uc1xuXHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUHJvcGFnYXRlIG90aGVycyBhcyByZXN1bHRzXG5cdFx0XHRcdGRvbmUoIC0xLCBlICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lXG5cdFx0ZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7XG5cdFx0XHR2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLFxuXHRcdFx0XHRzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDtcblxuXHRcdFx0Ly8gSWdub3JlIHJlcGVhdCBpbnZvY2F0aW9uc1xuXHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29tcGxldGVkID0gdHJ1ZTtcblxuXHRcdFx0Ly8gQ2xlYXIgdGltZW91dCBpZiBpdCBleGlzdHNcblx0XHRcdGlmICggdGltZW91dFRpbWVyICkge1xuXHRcdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRGVyZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxlY3Rpb25cblx0XHRcdC8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpXG5cdFx0XHR0cmFuc3BvcnQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdC8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnNcblx0XHRcdHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgXCJcIjtcblxuXHRcdFx0Ly8gU2V0IHJlYWR5U3RhdGVcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7XG5cblx0XHRcdC8vIERldGVybWluZSBpZiBzdWNjZXNzZnVsXG5cdFx0XHRpc1N1Y2Nlc3MgPSBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNDtcblxuXHRcdFx0Ly8gR2V0IHJlc3BvbnNlIGRhdGFcblx0XHRcdGlmICggcmVzcG9uc2VzICkge1xuXHRcdFx0XHRyZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCBubyBtYXR0ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KVxuXHRcdFx0cmVzcG9uc2UgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKTtcblxuXHRcdFx0Ly8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hhaW5pbmdcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXG5cdFx0XHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0XHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiTGFzdC1Nb2RpZmllZFwiICk7XG5cdFx0XHRcdFx0aWYgKCBtb2RpZmllZCApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJldGFnXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBpZiBubyBjb250ZW50XG5cdFx0XHRcdGlmICggc3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09PSBcIkhFQURcIiApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub2NvbnRlbnRcIjtcblxuXHRcdFx0XHQvLyBpZiBub3QgbW9kaWZpZWRcblx0XHRcdFx0fSBlbHNlIGlmICggc3RhdHVzID09PSAzMDQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm90bW9kaWZpZWRcIjtcblxuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGRhdGEsIGxldCdzIGNvbnZlcnQgaXRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdGU7XG5cdFx0XHRcdFx0c3VjY2VzcyA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0ZXJyb3IgPSByZXNwb25zZS5lcnJvcjtcblx0XHRcdFx0XHRpc1N1Y2Nlc3MgPSAhZXJyb3I7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gRXh0cmFjdCBlcnJvciBmcm9tIHN0YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Igbm9uLWFib3J0c1xuXHRcdFx0XHRlcnJvciA9IHN0YXR1c1RleHQ7XG5cdFx0XHRcdGlmICggc3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcImVycm9yXCI7XG5cdFx0XHRcdFx0aWYgKCBzdGF0dXMgPCAwICkge1xuXHRcdFx0XHRcdFx0c3RhdHVzID0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3Rcblx0XHRcdGpxWEhSLnN0YXR1cyA9IHN0YXR1cztcblx0XHRcdGpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgXCJcIjtcblxuXHRcdFx0Ly8gU3VjY2Vzcy9FcnJvclxuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRqcVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2RlICk7XG5cdFx0XHRzdGF0dXNDb2RlID0gdW5kZWZpbmVkO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8gXCJhamF4U3VjY2Vzc1wiIDogXCJhamF4RXJyb3JcIixcblx0XHRcdFx0XHRbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb21wbGV0ZVxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZC5maXJlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0IF0gKTtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheENvbXBsZXRlXCIsIFsganFYSFIsIHMgXSApO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFKQVggY291bnRlclxuXHRcdFx0XHRpZiAoICEoIC0talF1ZXJ5LmFjdGl2ZSApICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBcImFqYXhTdG9wXCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBqcVhIUjtcblx0fSxcblxuXHRnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRhLCBjYWxsYmFjaywgXCJqc29uXCIgKTtcblx0fSxcblxuXHRnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5lZCwgY2FsbGJhY2ssIFwic2NyaXB0XCIgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcImdldFwiLCBcInBvc3RcIiBdLCBmdW5jdGlvbiggaSwgbWV0aG9kICkge1xuXHRqUXVlcnlbIG1ldGhvZCBdID0gZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ssIHR5cGUgKSB7XG5cblx0XHQvLyBTaGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1bWVudCB3YXMgb21pdHRlZFxuXHRcdGlmICggaXNGdW5jdGlvbiggZGF0YSApICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgY2FsbGJhY2s7XG5cdFx0XHRjYWxsYmFjayA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIFRoZSB1cmwgY2FuIGJlIGFuIG9wdGlvbnMgb2JqZWN0ICh3aGljaCB0aGVuIG11c3QgaGF2ZSAudXJsKVxuXHRcdHJldHVybiBqUXVlcnkuYWpheCggalF1ZXJ5LmV4dGVuZCgge1xuXHRcdFx0dXJsOiB1cmwsXG5cdFx0XHR0eXBlOiBtZXRob2QsXG5cdFx0XHRkYXRhVHlwZTogdHlwZSxcblx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRzdWNjZXNzOiBjYWxsYmFja1xuXHRcdH0sIGpRdWVyeS5pc1BsYWluT2JqZWN0KCB1cmwgKSAmJiB1cmwgKSApO1xuXHR9O1xufSApO1xuXG5cbmpRdWVyeS5fZXZhbFVybCA9IGZ1bmN0aW9uKCB1cmwgKSB7XG5cdHJldHVybiBqUXVlcnkuYWpheCgge1xuXHRcdHVybDogdXJsLFxuXG5cdFx0Ly8gTWFrZSB0aGlzIGV4cGxpY2l0LCBzaW5jZSB1c2VyIGNhbiBvdmVycmlkZSB0aGlzIHRocm91Z2ggYWpheFNldHVwICgjMTEyNjQpXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRkYXRhVHlwZTogXCJzY3JpcHRcIixcblx0XHRjYWNoZTogdHJ1ZSxcblx0XHRhc3luYzogZmFsc2UsXG5cdFx0Z2xvYmFsOiBmYWxzZSxcblx0XHRcInRocm93c1wiOiB0cnVlXG5cdH0gKTtcbn07XG5cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHR3cmFwQWxsOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgd3JhcDtcblxuXHRcdGlmICggdGhpc1sgMCBdICkge1xuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCBodG1sICkgKSB7XG5cdFx0XHRcdGh0bWwgPSBodG1sLmNhbGwoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUaGUgZWxlbWVudHMgdG8gd3JhcCB0aGUgdGFyZ2V0IGFyb3VuZFxuXHRcdFx0d3JhcCA9IGpRdWVyeSggaHRtbCwgdGhpc1sgMCBdLm93bmVyRG9jdW1lbnQgKS5lcSggMCApLmNsb25lKCB0cnVlICk7XG5cblx0XHRcdGlmICggdGhpc1sgMCBdLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHdyYXAuaW5zZXJ0QmVmb3JlKCB0aGlzWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0d3JhcC5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZWxlbSA9IHRoaXM7XG5cblx0XHRcdFx0d2hpbGUgKCBlbGVtLmZpcnN0RWxlbWVudENoaWxkICkge1xuXHRcdFx0XHRcdGVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENoaWxkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIGVsZW07XG5cdFx0XHR9ICkuYXBwZW5kKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0d3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRpZiAoIGlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwSW5uZXIoIGh0bWwuY2FsbCggdGhpcywgaSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLFxuXHRcdFx0XHRjb250ZW50cyA9IHNlbGYuY29udGVudHMoKTtcblxuXHRcdFx0aWYgKCBjb250ZW50cy5sZW5ndGggKSB7XG5cdFx0XHRcdGNvbnRlbnRzLndyYXBBbGwoIGh0bWwgKTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2VsZi5hcHBlbmQoIGh0bWwgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0d3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIGh0bWxJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggaHRtbCApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwQWxsKCBodG1sSXNGdW5jdGlvbiA/IGh0bWwuY2FsbCggdGhpcywgaSApIDogaHRtbCApO1xuXHRcdH0gKTtcblx0fSxcblxuXHR1bndyYXA6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR0aGlzLnBhcmVudCggc2VsZWN0b3IgKS5ub3QoIFwiYm9keVwiICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS5yZXBsYWNlV2l0aCggdGhpcy5jaGlsZE5vZGVzICk7XG5cdFx0fSApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59ICk7XG5cblxualF1ZXJ5LmV4cHIucHNldWRvcy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuICFqUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUoIGVsZW0gKTtcbn07XG5qUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuICEhKCBlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IGVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKTtcbn07XG5cblxuXG5cbmpRdWVyeS5hamF4U2V0dGluZ3MueGhyID0gZnVuY3Rpb24oKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIG5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3QoKTtcblx0fSBjYXRjaCAoIGUgKSB7fVxufTtcblxudmFyIHhoclN1Y2Nlc3NTdGF0dXMgPSB7XG5cblx0XHQvLyBGaWxlIHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIGNvZGUgMCwgYXNzdW1lIDIwMFxuXHRcdDA6IDIwMCxcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0Ly8gIzE0NTA6IHNvbWV0aW1lcyBJRSByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0XG5cdFx0MTIyMzogMjA0XG5cdH0sXG5cdHhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7XG5cbnN1cHBvcnQuY29ycyA9ICEheGhyU3VwcG9ydGVkICYmICggXCJ3aXRoQ3JlZGVudGlhbHNcIiBpbiB4aHJTdXBwb3J0ZWQgKTtcbnN1cHBvcnQuYWpheCA9IHhoclN1cHBvcnRlZCA9ICEheGhyU3VwcG9ydGVkO1xuXG5qUXVlcnkuYWpheFRyYW5zcG9ydCggZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cdHZhciBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaztcblxuXHQvLyBDcm9zcyBkb21haW4gb25seSBhbGxvd2VkIGlmIHN1cHBvcnRlZCB0aHJvdWdoIFhNTEh0dHBSZXF1ZXN0XG5cdGlmICggc3VwcG9ydC5jb3JzIHx8IHhoclN1cHBvcnRlZCAmJiAhb3B0aW9ucy5jcm9zc0RvbWFpbiApIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0c2VuZDogZnVuY3Rpb24oIGhlYWRlcnMsIGNvbXBsZXRlICkge1xuXHRcdFx0XHR2YXIgaSxcblx0XHRcdFx0XHR4aHIgPSBvcHRpb25zLnhocigpO1xuXG5cdFx0XHRcdHhoci5vcGVuKFxuXHRcdFx0XHRcdG9wdGlvbnMudHlwZSxcblx0XHRcdFx0XHRvcHRpb25zLnVybCxcblx0XHRcdFx0XHRvcHRpb25zLmFzeW5jLFxuXHRcdFx0XHRcdG9wdGlvbnMudXNlcm5hbWUsXG5cdFx0XHRcdFx0b3B0aW9ucy5wYXNzd29yZFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdC8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWRcblx0XHRcdFx0aWYgKCBvcHRpb25zLnhockZpZWxkcyApIHtcblx0XHRcdFx0XHRmb3IgKCBpIGluIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdFx0eGhyWyBpIF0gPSBvcHRpb25zLnhockZpZWxkc1sgaSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIE92ZXJyaWRlIG1pbWUgdHlwZSBpZiBuZWVkZWRcblx0XHRcdFx0aWYgKCBvcHRpb25zLm1pbWVUeXBlICYmIHhoci5vdmVycmlkZU1pbWVUeXBlICkge1xuXHRcdFx0XHRcdHhoci5vdmVycmlkZU1pbWVUeXBlKCBvcHRpb25zLm1pbWVUeXBlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBYLVJlcXVlc3RlZC1XaXRoIGhlYWRlclxuXHRcdFx0XHQvLyBGb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzZWVpbmcgYXMgY29uZGl0aW9ucyBmb3IgYSBwcmVmbGlnaHQgYXJlXG5cdFx0XHRcdC8vIGFraW4gdG8gYSBqaWdzYXcgcHV6emxlLCB3ZSBzaW1wbHkgbmV2ZXIgc2V0IGl0IHRvIGJlIHN1cmUuXG5cdFx0XHRcdC8vIChpdCBjYW4gYWx3YXlzIGJlIHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVwKVxuXHRcdFx0XHQvLyBGb3Igc2FtZS1kb21haW4gcmVxdWVzdHMsIHdvbid0IGNoYW5nZSBoZWFkZXIgaWYgYWxyZWFkeSBwcm92aWRlZC5cblx0XHRcdFx0aWYgKCAhb3B0aW9ucy5jcm9zc0RvbWFpbiAmJiAhaGVhZGVyc1sgXCJYLVJlcXVlc3RlZC1XaXRoXCIgXSApIHtcblx0XHRcdFx0XHRoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdID0gXCJYTUxIdHRwUmVxdWVzdFwiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU2V0IGhlYWRlcnNcblx0XHRcdFx0Zm9yICggaSBpbiBoZWFkZXJzICkge1xuXHRcdFx0XHRcdHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrID0geGhyLm9ubG9hZCA9XG5cdFx0XHRcdFx0XHRcdFx0eGhyLm9uZXJyb3IgPSB4aHIub25hYm9ydCA9IHhoci5vbnRpbWVvdXQgPVxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlID09PSBcImFib3J0XCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0eGhyLmFib3J0KCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIHR5cGUgPT09IFwiZXJyb3JcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0Ly8gT24gYSBtYW51YWwgbmF0aXZlIGFib3J0LCBJRTkgdGhyb3dzXG5cdFx0XHRcdFx0XHRcdFx0Ly8gZXJyb3JzIG9uIGFueSBwcm9wZXJ0eSBhY2Nlc3MgdGhhdCBpcyBub3QgcmVhZHlTdGF0ZVxuXHRcdFx0XHRcdFx0XHRcdGlmICggdHlwZW9mIHhoci5zdGF0dXMgIT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggMCwgXCJlcnJvclwiICk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIEZpbGU6IHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIDA7IHNlZSAjODYwNSwgIzE0MjA3XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblx0XHRcdFx0XHRcdFx0XHRcdHhoclN1Y2Nlc3NTdGF0dXNbIHhoci5zdGF0dXMgXSB8fCB4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHQsXG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBJRTkgaGFzIG5vIFhIUjIgYnV0IHRocm93cyBvbiBiaW5hcnkgKHRyYWMtMTE0MjYpXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBGb3IgWEhSMiBub24tdGV4dCwgbGV0IHRoZSBjYWxsZXIgaGFuZGxlIGl0IChnaC0yNDk4KVxuXHRcdFx0XHRcdFx0XHRcdFx0KCB4aHIucmVzcG9uc2VUeXBlIHx8IFwidGV4dFwiICkgIT09IFwidGV4dFwiICB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHhoci5yZXNwb25zZVRleHQgIT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGJpbmFyeTogeGhyLnJlc3BvbnNlIH0gOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IHRleHQ6IHhoci5yZXNwb25zZVRleHQgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdC8vIExpc3RlbiB0byBldmVudHNcblx0XHRcdFx0eGhyLm9ubG9hZCA9IGNhbGxiYWNrKCk7XG5cdFx0XHRcdGVycm9yQ2FsbGJhY2sgPSB4aHIub25lcnJvciA9IHhoci5vbnRpbWVvdXQgPSBjYWxsYmFjayggXCJlcnJvclwiICk7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgOSBvbmx5XG5cdFx0XHRcdC8vIFVzZSBvbnJlYWR5c3RhdGVjaGFuZ2UgdG8gcmVwbGFjZSBvbmFib3J0XG5cdFx0XHRcdC8vIHRvIGhhbmRsZSB1bmNhdWdodCBhYm9ydHNcblx0XHRcdFx0aWYgKCB4aHIub25hYm9ydCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHhoci5vbmFib3J0ID0gZXJyb3JDYWxsYmFjaztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIENoZWNrIHJlYWR5U3RhdGUgYmVmb3JlIHRpbWVvdXQgYXMgaXQgY2hhbmdlc1xuXHRcdFx0XHRcdFx0aWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBbGxvdyBvbmVycm9yIHRvIGJlIGNhbGxlZCBmaXJzdCxcblx0XHRcdFx0XHRcdFx0Ly8gYnV0IHRoYXQgd2lsbCBub3QgaGFuZGxlIGEgbmF0aXZlIGFib3J0XG5cdFx0XHRcdFx0XHRcdC8vIEFsc28sIHNhdmUgZXJyb3JDYWxsYmFjayB0byBhIHZhcmlhYmxlXG5cdFx0XHRcdFx0XHRcdC8vIGFzIHhoci5vbmVycm9yIGNhbm5vdCBiZSBhY2Nlc3NlZFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yQ2FsbGJhY2soKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ3JlYXRlIHRoZSBhYm9ydCBjYWxsYmFja1xuXHRcdFx0XHRjYWxsYmFjayA9IGNhbGxiYWNrKCBcImFib3J0XCIgKTtcblxuXHRcdFx0XHR0cnkge1xuXG5cdFx0XHRcdFx0Ly8gRG8gc2VuZCB0aGUgcmVxdWVzdCAodGhpcyBtYXkgcmFpc2UgYW4gZXhjZXB0aW9uKVxuXHRcdFx0XHRcdHhoci5zZW5kKCBvcHRpb25zLmhhc0NvbnRlbnQgJiYgb3B0aW9ucy5kYXRhIHx8IG51bGwgKTtcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0XHQvLyAjMTQ2ODM6IE9ubHkgcmV0aHJvdyBpZiB0aGlzIGhhc24ndCBiZWVuIG5vdGlmaWVkIGFzIGFuIGVycm9yIHlldFxuXHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFByZXZlbnQgYXV0by1leGVjdXRpb24gb2Ygc2NyaXB0cyB3aGVuIG5vIGV4cGxpY2l0IGRhdGFUeXBlIHdhcyBwcm92aWRlZCAoU2VlIGdoLTI0MzIpXG5qUXVlcnkuYWpheFByZWZpbHRlciggZnVuY3Rpb24oIHMgKSB7XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLmNvbnRlbnRzLnNjcmlwdCA9IGZhbHNlO1xuXHR9XG59ICk7XG5cbi8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlXG5qUXVlcnkuYWpheFNldHVwKCB7XG5cdGFjY2VwdHM6IHtcblx0XHRzY3JpcHQ6IFwidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBcIiArXG5cdFx0XHRcImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwiXG5cdH0sXG5cdGNvbnRlbnRzOiB7XG5cdFx0c2NyaXB0OiAvXFxiKD86amF2YXxlY21hKXNjcmlwdFxcYi9cblx0fSxcblx0Y29udmVydGVyczoge1xuXHRcdFwidGV4dCBzY3JpcHRcIjogZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApO1xuXHRcdFx0cmV0dXJuIHRleHQ7XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgY3Jvc3NEb21haW5cbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0cy5jYWNoZSA9IGZhbHNlO1xuXHR9XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLnR5cGUgPSBcIkdFVFwiO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgc2NyaXB0IHRhZyBoYWNrIHRyYW5zcG9ydFxualF1ZXJ5LmFqYXhUcmFuc3BvcnQoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXG5cdC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21haW4gcmVxdWVzdHNcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHZhciBzY3JpcHQsIGNhbGxiYWNrO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHNjcmlwdCA9IGpRdWVyeSggXCI8c2NyaXB0PlwiICkucHJvcCgge1xuXHRcdFx0XHRcdGNoYXJzZXQ6IHMuc2NyaXB0Q2hhcnNldCxcblx0XHRcdFx0XHRzcmM6IHMudXJsXG5cdFx0XHRcdH0gKS5vbihcblx0XHRcdFx0XHRcImxvYWQgZXJyb3JcIixcblx0XHRcdFx0XHRjYWxsYmFjayA9IGZ1bmN0aW9uKCBldnQgKSB7XG5cdFx0XHRcdFx0XHRzY3JpcHQucmVtb3ZlKCk7XG5cdFx0XHRcdFx0XHRjYWxsYmFjayA9IG51bGw7XG5cdFx0XHRcdFx0XHRpZiAoIGV2dCApIHtcblx0XHRcdFx0XHRcdFx0Y29tcGxldGUoIGV2dC50eXBlID09PSBcImVycm9yXCIgPyA0MDQgOiAyMDAsIGV2dC50eXBlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdC8vIFVzZSBuYXRpdmUgRE9NIG1hbmlwdWxhdGlvbiB0byBhdm9pZCBvdXIgZG9tTWFuaXAgQUpBWCB0cmlja2VyeVxuXHRcdFx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHRbIDAgXSApO1xuXHRcdFx0fSxcblx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG52YXIgb2xkQ2FsbGJhY2tzID0gW10sXG5cdHJqc29ucCA9IC8oPSlcXD8oPz0mfCQpfFxcP1xcPy87XG5cbi8vIERlZmF1bHQganNvbnAgc2V0dGluZ3NcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0anNvbnA6IFwiY2FsbGJhY2tcIixcblx0anNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNhbGxiYWNrID0gb2xkQ2FsbGJhY2tzLnBvcCgpIHx8ICggalF1ZXJ5LmV4cGFuZG8gKyBcIl9cIiArICggbm9uY2UrKyApICk7XG5cdFx0dGhpc1sgY2FsbGJhY2sgXSA9IHRydWU7XG5cdFx0cmV0dXJuIGNhbGxiYWNrO1xuXHR9XG59ICk7XG5cbi8vIERldGVjdCwgbm9ybWFsaXplIG9wdGlvbnMgYW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBqc29ucCByZXF1ZXN0c1xualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwianNvbiBqc29ucFwiLCBmdW5jdGlvbiggcywgb3JpZ2luYWxTZXR0aW5ncywganFYSFIgKSB7XG5cblx0dmFyIGNhbGxiYWNrTmFtZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNlQ29udGFpbmVyLFxuXHRcdGpzb25Qcm9wID0gcy5qc29ucCAhPT0gZmFsc2UgJiYgKCByanNvbnAudGVzdCggcy51cmwgKSA/XG5cdFx0XHRcInVybFwiIDpcblx0XHRcdHR5cGVvZiBzLmRhdGEgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKVxuXHRcdFx0XHRcdC5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgJiZcblx0XHRcdFx0cmpzb25wLnRlc3QoIHMuZGF0YSApICYmIFwiZGF0YVwiXG5cdFx0KTtcblxuXHQvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgXCJqc29ucFwiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0XG5cdGlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gXCJqc29ucFwiICkge1xuXG5cdFx0Ly8gR2V0IGNhbGxiYWNrIG5hbWUsIHJlbWVtYmVyaW5nIHByZWV4aXN0aW5nIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdFxuXHRcdGNhbGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID9cblx0XHRcdHMuanNvbnBDYWxsYmFjaygpIDpcblx0XHRcdHMuanNvbnBDYWxsYmFjaztcblxuXHRcdC8vIEluc2VydCBjYWxsYmFjayBpbnRvIHVybCBvciBmb3JtIGRhdGFcblx0XHRpZiAoIGpzb25Qcm9wICkge1xuXHRcdFx0c1sganNvblByb3AgXSA9IHNbIGpzb25Qcm9wIF0ucmVwbGFjZSggcmpzb25wLCBcIiQxXCIgKyBjYWxsYmFja05hbWUgKTtcblx0XHR9IGVsc2UgaWYgKCBzLmpzb25wICE9PSBmYWxzZSApIHtcblx0XHRcdHMudXJsICs9ICggcnF1ZXJ5LnRlc3QoIHMudXJsICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmpzb25wICsgXCI9XCIgKyBjYWxsYmFja05hbWU7XG5cdFx0fVxuXG5cdFx0Ly8gVXNlIGRhdGEgY29udmVydGVyIHRvIHJldHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvblxuXHRcdHMuY29udmVydGVyc1sgXCJzY3JpcHQganNvblwiIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggIXJlc3BvbnNlQ29udGFpbmVyICkge1xuXHRcdFx0XHRqUXVlcnkuZXJyb3IoIGNhbGxiYWNrTmFtZSArIFwiIHdhcyBub3QgY2FsbGVkXCIgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXNwb25zZUNvbnRhaW5lclsgMCBdO1xuXHRcdH07XG5cblx0XHQvLyBGb3JjZSBqc29uIGRhdGFUeXBlXG5cdFx0cy5kYXRhVHlwZXNbIDAgXSA9IFwianNvblwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja1xuXHRcdG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTtcblx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IGFyZ3VtZW50cztcblx0XHR9O1xuXG5cdFx0Ly8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpXG5cdFx0anFYSFIuYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gSWYgcHJldmlvdXMgdmFsdWUgZGlkbid0IGV4aXN0IC0gcmVtb3ZlIGl0XG5cdFx0XHRpZiAoIG92ZXJ3cml0dGVuID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdGpRdWVyeSggd2luZG93ICkucmVtb3ZlUHJvcCggY2FsbGJhY2tOYW1lICk7XG5cblx0XHRcdC8vIE90aGVyd2lzZSByZXN0b3JlIHByZWV4aXN0aW5nIHZhbHVlXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gb3ZlcndyaXR0ZW47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNhdmUgYmFjayBhcyBmcmVlXG5cdFx0XHRpZiAoIHNbIGNhbGxiYWNrTmFtZSBdICkge1xuXG5cdFx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHJlLXVzaW5nIHRoZSBvcHRpb25zIGRvZXNuJ3Qgc2NyZXcgdGhpbmdzIGFyb3VuZFxuXHRcdFx0XHRzLmpzb25wQ2FsbGJhY2sgPSBvcmlnaW5hbFNldHRpbmdzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHRcdFx0Ly8gU2F2ZSB0aGUgY2FsbGJhY2sgbmFtZSBmb3IgZnV0dXJlIHVzZVxuXHRcdFx0XHRvbGRDYWxsYmFja3MucHVzaCggY2FsbGJhY2tOYW1lICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENhbGwgaWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUgYSByZXNwb25zZVxuXHRcdFx0aWYgKCByZXNwb25zZUNvbnRhaW5lciAmJiBpc0Z1bmN0aW9uKCBvdmVyd3JpdHRlbiApICkge1xuXHRcdFx0XHRvdmVyd3JpdHRlbiggcmVzcG9uc2VDb250YWluZXJbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3cml0dGVuID0gdW5kZWZpbmVkO1xuXHRcdH0gKTtcblxuXHRcdC8vIERlbGVnYXRlIHRvIHNjcmlwdFxuXHRcdHJldHVybiBcInNjcmlwdFwiO1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFN1cHBvcnQ6IFNhZmFyaSA4IG9ubHlcbi8vIEluIFNhZmFyaSA4IGRvY3VtZW50cyBjcmVhdGVkIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnRcbi8vIGNvbGxhcHNlIHNpYmxpbmcgZm9ybXM6IHRoZSBzZWNvbmQgb25lIGJlY29tZXMgYSBjaGlsZCBvZiB0aGUgZmlyc3Qgb25lLlxuLy8gQmVjYXVzZSBvZiB0aGF0LCB0aGlzIHNlY3VyaXR5IG1lYXN1cmUgaGFzIHRvIGJlIGRpc2FibGVkIGluIFNhZmFyaSA4LlxuLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzMzN1xuc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoIGZ1bmN0aW9uKCkge1xuXHR2YXIgYm9keSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCggXCJcIiApLmJvZHk7XG5cdGJvZHkuaW5uZXJIVE1MID0gXCI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPlwiO1xuXHRyZXR1cm4gYm9keS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMjtcbn0gKSgpO1xuXG5cbi8vIEFyZ3VtZW50IFwiZGF0YVwiIHNob3VsZCBiZSBzdHJpbmcgb2YgaHRtbFxuLy8gY29udGV4dCAob3B0aW9uYWwpOiBJZiBzcGVjaWZpZWQsIHRoZSBmcmFnbWVudCB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhpcyBjb250ZXh0LFxuLy8gZGVmYXVsdHMgdG8gZG9jdW1lbnRcbi8vIGtlZXBTY3JpcHRzIChvcHRpb25hbCk6IElmIHRydWUsIHdpbGwgaW5jbHVkZSBzY3JpcHRzIHBhc3NlZCBpbiB0aGUgaHRtbCBzdHJpbmdcbmpRdWVyeS5wYXJzZUhUTUwgPSBmdW5jdGlvbiggZGF0YSwgY29udGV4dCwga2VlcFNjcmlwdHMgKSB7XG5cdGlmICggdHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGtlZXBTY3JpcHRzID0gY29udGV4dDtcblx0XHRjb250ZXh0ID0gZmFsc2U7XG5cdH1cblxuXHR2YXIgYmFzZSwgcGFyc2VkLCBzY3JpcHRzO1xuXG5cdGlmICggIWNvbnRleHQgKSB7XG5cblx0XHQvLyBTdG9wIHNjcmlwdHMgb3IgaW5saW5lIGV2ZW50IGhhbmRsZXJzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW1tZWRpYXRlbHlcblx0XHQvLyBieSB1c2luZyBkb2N1bWVudC5pbXBsZW1lbnRhdGlvblxuXHRcdGlmICggc3VwcG9ydC5jcmVhdGVIVE1MRG9jdW1lbnQgKSB7XG5cdFx0XHRjb250ZXh0ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCBcIlwiICk7XG5cblx0XHRcdC8vIFNldCB0aGUgYmFzZSBocmVmIGZvciB0aGUgY3JlYXRlZCBkb2N1bWVudFxuXHRcdFx0Ly8gc28gYW55IHBhcnNlZCBlbGVtZW50cyB3aXRoIFVSTHNcblx0XHRcdC8vIGFyZSBiYXNlZCBvbiB0aGUgZG9jdW1lbnQncyBVUkwgKGdoLTI5NjUpXG5cdFx0XHRiYXNlID0gY29udGV4dC5jcmVhdGVFbGVtZW50KCBcImJhc2VcIiApO1xuXHRcdFx0YmFzZS5ocmVmID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZjtcblx0XHRcdGNvbnRleHQuaGVhZC5hcHBlbmRDaGlsZCggYmFzZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb250ZXh0ID0gZG9jdW1lbnQ7XG5cdFx0fVxuXHR9XG5cblx0cGFyc2VkID0gcnNpbmdsZVRhZy5leGVjKCBkYXRhICk7XG5cdHNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107XG5cblx0Ly8gU2luZ2xlIHRhZ1xuXHRpZiAoIHBhcnNlZCApIHtcblx0XHRyZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsgMSBdICkgXTtcblx0fVxuXG5cdHBhcnNlZCA9IGJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzICk7XG5cblx0aWYgKCBzY3JpcHRzICYmIHNjcmlwdHMubGVuZ3RoICkge1xuXHRcdGpRdWVyeSggc2NyaXB0cyApLnJlbW92ZSgpO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIHBhcnNlZC5jaGlsZE5vZGVzICk7XG59O1xuXG5cbi8qKlxuICogTG9hZCBhIHVybCBpbnRvIGEgcGFnZVxuICovXG5qUXVlcnkuZm4ubG9hZCA9IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywgY2FsbGJhY2sgKSB7XG5cdHZhciBzZWxlY3RvciwgdHlwZSwgcmVzcG9uc2UsXG5cdFx0c2VsZiA9IHRoaXMsXG5cdFx0b2ZmID0gdXJsLmluZGV4T2YoIFwiIFwiICk7XG5cblx0aWYgKCBvZmYgPiAtMSApIHtcblx0XHRzZWxlY3RvciA9IHN0cmlwQW5kQ29sbGFwc2UoIHVybC5zbGljZSggb2ZmICkgKTtcblx0XHR1cmwgPSB1cmwuc2xpY2UoIDAsIG9mZiApO1xuXHR9XG5cblx0Ly8gSWYgaXQncyBhIGZ1bmN0aW9uXG5cdGlmICggaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7XG5cblx0XHQvLyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFja1xuXHRcdGNhbGxiYWNrID0gcGFyYW1zO1xuXHRcdHBhcmFtcyA9IHVuZGVmaW5lZDtcblxuXHQvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nXG5cdH0gZWxzZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2YgcGFyYW1zID09PSBcIm9iamVjdFwiICkge1xuXHRcdHR5cGUgPSBcIlBPU1RcIjtcblx0fVxuXG5cdC8vIElmIHdlIGhhdmUgZWxlbWVudHMgdG8gbW9kaWZ5LCBtYWtlIHRoZSByZXF1ZXN0XG5cdGlmICggc2VsZi5sZW5ndGggPiAwICkge1xuXHRcdGpRdWVyeS5hamF4KCB7XG5cdFx0XHR1cmw6IHVybCxcblxuXHRcdFx0Ly8gSWYgXCJ0eXBlXCIgdmFyaWFibGUgaXMgdW5kZWZpbmVkLCB0aGVuIFwiR0VUXCIgbWV0aG9kIHdpbGwgYmUgdXNlZC5cblx0XHRcdC8vIE1ha2UgdmFsdWUgb2YgdGhpcyBmaWVsZCBleHBsaWNpdCBzaW5jZVxuXHRcdFx0Ly8gdXNlciBjYW4gb3ZlcnJpZGUgaXQgdGhyb3VnaCBhamF4U2V0dXAgbWV0aG9kXG5cdFx0XHR0eXBlOiB0eXBlIHx8IFwiR0VUXCIsXG5cdFx0XHRkYXRhVHlwZTogXCJodG1sXCIsXG5cdFx0XHRkYXRhOiBwYXJhbXNcblx0XHR9ICkuZG9uZSggZnVuY3Rpb24oIHJlc3BvbnNlVGV4dCApIHtcblxuXHRcdFx0Ly8gU2F2ZSByZXNwb25zZSBmb3IgdXNlIGluIGNvbXBsZXRlIGNhbGxiYWNrXG5cdFx0XHRyZXNwb25zZSA9IGFyZ3VtZW50cztcblxuXHRcdFx0c2VsZi5odG1sKCBzZWxlY3RvciA/XG5cblx0XHRcdFx0Ly8gSWYgYSBzZWxlY3RvciB3YXMgc3BlY2lmaWVkLCBsb2NhdGUgdGhlIHJpZ2h0IGVsZW1lbnRzIGluIGEgZHVtbXkgZGl2XG5cdFx0XHRcdC8vIEV4Y2x1ZGUgc2NyaXB0cyB0byBhdm9pZCBJRSAnUGVybWlzc2lvbiBEZW5pZWQnIGVycm9yc1xuXHRcdFx0XHRqUXVlcnkoIFwiPGRpdj5cIiApLmFwcGVuZCggalF1ZXJ5LnBhcnNlSFRNTCggcmVzcG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UgdXNlIHRoZSBmdWxsIHJlc3VsdFxuXHRcdFx0XHRyZXNwb25zZVRleHQgKTtcblxuXHRcdC8vIElmIHRoZSByZXF1ZXN0IHN1Y2NlZWRzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJkYXRhXCIsIFwic3RhdHVzXCIsIFwianFYSFJcIlxuXHRcdC8vIGJ1dCB0aGV5IGFyZSBpZ25vcmVkIGJlY2F1c2UgcmVzcG9uc2Ugd2FzIHNldCBhYm92ZS5cblx0XHQvLyBJZiBpdCBmYWlscywgdGhpcyBmdW5jdGlvbiBnZXRzIFwianFYSFJcIiwgXCJzdGF0dXNcIiwgXCJlcnJvclwiXG5cdFx0fSApLmFsd2F5cyggY2FsbGJhY2sgJiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7XG5cdFx0XHRzZWxmLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRjYWxsYmFjay5hcHBseSggdGhpcywgcmVzcG9uc2UgfHwgWyBqcVhIUi5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApO1xuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdHJldHVybiB0aGlzO1xufTtcblxuXG5cblxuLy8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVudHNcbmpRdWVyeS5lYWNoKCBbXG5cdFwiYWpheFN0YXJ0XCIsXG5cdFwiYWpheFN0b3BcIixcblx0XCJhamF4Q29tcGxldGVcIixcblx0XCJhamF4RXJyb3JcIixcblx0XCJhamF4U3VjY2Vzc1wiLFxuXHRcImFqYXhTZW5kXCJcbl0sIGZ1bmN0aW9uKCBpLCB0eXBlICkge1xuXHRqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZSwgZm4gKTtcblx0fTtcbn0gKTtcblxuXG5cblxualF1ZXJ5LmV4cHIucHNldWRvcy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gZWxlbSA9PT0gZm4uZWxlbTtcblx0fSApLmxlbmd0aDtcbn07XG5cblxuXG5cbmpRdWVyeS5vZmZzZXQgPSB7XG5cdHNldE9mZnNldDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGkgKSB7XG5cdFx0dmFyIGN1clBvc2l0aW9uLCBjdXJMZWZ0LCBjdXJDU1NUb3AsIGN1clRvcCwgY3VyT2Zmc2V0LCBjdXJDU1NMZWZ0LCBjYWxjdWxhdGVQb3NpdGlvbixcblx0XHRcdHBvc2l0aW9uID0galF1ZXJ5LmNzcyggZWxlbSwgXCJwb3NpdGlvblwiICksXG5cdFx0XHRjdXJFbGVtID0galF1ZXJ5KCBlbGVtICksXG5cdFx0XHRwcm9wcyA9IHt9O1xuXG5cdFx0Ly8gU2V0IHBvc2l0aW9uIGZpcnN0LCBpbi1jYXNlIHRvcC9sZWZ0IGFyZSBzZXQgZXZlbiBvbiBzdGF0aWMgZWxlbVxuXHRcdGlmICggcG9zaXRpb24gPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRlbGVtLnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuXHRcdH1cblxuXHRcdGN1ck9mZnNldCA9IGN1ckVsZW0ub2Zmc2V0KCk7XG5cdFx0Y3VyQ1NTVG9wID0galF1ZXJ5LmNzcyggZWxlbSwgXCJ0b3BcIiApO1xuXHRcdGN1ckNTU0xlZnQgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImxlZnRcIiApO1xuXHRcdGNhbGN1bGF0ZVBvc2l0aW9uID0gKCBwb3NpdGlvbiA9PT0gXCJhYnNvbHV0ZVwiIHx8IHBvc2l0aW9uID09PSBcImZpeGVkXCIgKSAmJlxuXHRcdFx0KCBjdXJDU1NUb3AgKyBjdXJDU1NMZWZ0ICkuaW5kZXhPZiggXCJhdXRvXCIgKSA+IC0xO1xuXG5cdFx0Ly8gTmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXJcblx0XHQvLyB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUgb3IgZml4ZWRcblx0XHRpZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkge1xuXHRcdFx0Y3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7XG5cdFx0XHRjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7XG5cdFx0XHRjdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAwO1xuXHRcdFx0Y3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8fCAwO1xuXHRcdH1cblxuXHRcdGlmICggaXNGdW5jdGlvbiggb3B0aW9ucyApICkge1xuXG5cdFx0XHQvLyBVc2UgalF1ZXJ5LmV4dGVuZCBoZXJlIHRvIGFsbG93IG1vZGlmaWNhdGlvbiBvZiBjb29yZGluYXRlcyBhcmd1bWVudCAoZ2gtMTg0OClcblx0XHRcdG9wdGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGpRdWVyeS5leHRlbmQoIHt9LCBjdXJPZmZzZXQgKSApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7XG5cdFx0fVxuXHRcdGlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7XG5cdFx0XHRwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZzZXQubGVmdCApICsgY3VyTGVmdDtcblx0XHR9XG5cblx0XHRpZiAoIFwidXNpbmdcIiBpbiBvcHRpb25zICkge1xuXHRcdFx0b3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1ckVsZW0uY3NzKCBwcm9wcyApO1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdC8vIG9mZnNldCgpIHJlbGF0ZXMgYW4gZWxlbWVudCdzIGJvcmRlciBib3ggdG8gdGhlIGRvY3VtZW50IG9yaWdpblxuXHRvZmZzZXQ6IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdFx0Ly8gUHJlc2VydmUgY2hhaW5pbmcgZm9yIHNldHRlclxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiBvcHRpb25zID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHR0aGlzIDpcblx0XHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0XHRqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApO1xuXHRcdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0dmFyIHJlY3QsIHdpbixcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF07XG5cblx0XHRpZiAoICFlbGVtICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB6ZXJvcyBmb3IgZGlzY29ubmVjdGVkIGFuZCBoaWRkZW4gKGRpc3BsYXk6IG5vbmUpIGVsZW1lbnRzIChnaC0yMzEwKVxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHRcdC8vIFJ1bm5pbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IG9uIGFcblx0XHQvLyBkaXNjb25uZWN0ZWQgbm9kZSBpbiBJRSB0aHJvd3MgYW4gZXJyb3Jcblx0XHRpZiAoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cdFx0fVxuXG5cdFx0Ly8gR2V0IGRvY3VtZW50LXJlbGF0aXZlIHBvc2l0aW9uIGJ5IGFkZGluZyB2aWV3cG9ydCBzY3JvbGwgdG8gdmlld3BvcnQtcmVsYXRpdmUgZ0JDUlxuXHRcdHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdHdpbiA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldztcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiByZWN0LnRvcCArIHdpbi5wYWdlWU9mZnNldCxcblx0XHRcdGxlZnQ6IHJlY3QubGVmdCArIHdpbi5wYWdlWE9mZnNldFxuXHRcdH07XG5cdH0sXG5cblx0Ly8gcG9zaXRpb24oKSByZWxhdGVzIGFuIGVsZW1lbnQncyBtYXJnaW4gYm94IHRvIGl0cyBvZmZzZXQgcGFyZW50J3MgcGFkZGluZyBib3hcblx0Ly8gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgYmVoYXZpb3Igb2YgQ1NTIGFic29sdXRlIHBvc2l0aW9uaW5nXG5cdHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoICF0aGlzWyAwIF0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFyIG9mZnNldFBhcmVudCwgb2Zmc2V0LCBkb2MsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0cGFyZW50T2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblxuXHRcdC8vIHBvc2l0aW9uOmZpeGVkIGVsZW1lbnRzIGFyZSBvZmZzZXQgZnJvbSB0aGUgdmlld3BvcnQsIHdoaWNoIGl0c2VsZiBhbHdheXMgaGFzIHplcm8gb2Zmc2V0XG5cdFx0aWYgKCBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSA9PT0gXCJmaXhlZFwiICkge1xuXG5cdFx0XHQvLyBBc3N1bWUgcG9zaXRpb246Zml4ZWQgaW1wbGllcyBhdmFpbGFiaWxpdHkgb2YgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG5cdFx0XHRvZmZzZXQgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cblx0XHRcdC8vIEFjY291bnQgZm9yIHRoZSAqcmVhbCogb2Zmc2V0IHBhcmVudCwgd2hpY2ggY2FuIGJlIHRoZSBkb2N1bWVudCBvciBpdHMgcm9vdCBlbGVtZW50XG5cdFx0XHQvLyB3aGVuIGEgc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1lbnQgaXMgaWRlbnRpZmllZFxuXHRcdFx0ZG9jID0gZWxlbS5vd25lckRvY3VtZW50O1xuXHRcdFx0b2Zmc2V0UGFyZW50ID0gZWxlbS5vZmZzZXRQYXJlbnQgfHwgZG9jLmRvY3VtZW50RWxlbWVudDtcblx0XHRcdHdoaWxlICggb2Zmc2V0UGFyZW50ICYmXG5cdFx0XHRcdCggb2Zmc2V0UGFyZW50ID09PSBkb2MuYm9keSB8fCBvZmZzZXRQYXJlbnQgPT09IGRvYy5kb2N1bWVudEVsZW1lbnQgKSAmJlxuXHRcdFx0XHRqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXG5cdFx0XHRcdG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0UGFyZW50ICE9PSBlbGVtICYmIG9mZnNldFBhcmVudC5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSBib3JkZXJzIGludG8gaXRzIG9mZnNldCwgc2luY2UgdGhleSBhcmUgb3V0c2lkZSBpdHMgY29udGVudCBvcmlnaW5cblx0XHRcdFx0cGFyZW50T2Zmc2V0ID0galF1ZXJ5KCBvZmZzZXRQYXJlbnQgKS5vZmZzZXQoKTtcblx0XHRcdFx0cGFyZW50T2Zmc2V0LnRvcCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwiYm9yZGVyVG9wV2lkdGhcIiwgdHJ1ZSApO1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQubGVmdCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwiYm9yZGVyTGVmdFdpZHRoXCIsIHRydWUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTdWJ0cmFjdCBwYXJlbnQgb2Zmc2V0cyBhbmQgZWxlbWVudCBtYXJnaW5zXG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogb2Zmc2V0LnRvcCAtIHBhcmVudE9mZnNldC50b3AgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpblRvcFwiLCB0cnVlICksXG5cdFx0XHRsZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9mZnNldC5sZWZ0IC0galF1ZXJ5LmNzcyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIsIHRydWUgKVxuXHRcdH07XG5cdH0sXG5cblx0Ly8gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZG9jdW1lbnRFbGVtZW50IGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG5cdC8vIDEpIEZvciB0aGUgZWxlbWVudCBpbnNpZGUgdGhlIGlmcmFtZSB3aXRob3V0IG9mZnNldFBhcmVudCwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm5cblx0Ly8gICAgZG9jdW1lbnRFbGVtZW50IG9mIHRoZSBwYXJlbnQgd2luZG93XG5cdC8vIDIpIEZvciB0aGUgaGlkZGVuIG9yIGRldGFjaGVkIGVsZW1lbnRcblx0Ly8gMykgRm9yIGJvZHkgb3IgaHRtbCBlbGVtZW50LCBpLmUuIGluIGNhc2Ugb2YgdGhlIGh0bWwgbm9kZSAtIGl0IHdpbGwgcmV0dXJuIGl0c2VsZlxuXHQvL1xuXHQvLyBidXQgdGhvc2UgZXhjZXB0aW9ucyB3ZXJlIG5ldmVyIHByZXNlbnRlZCBhcyBhIHJlYWwgbGlmZSB1c2UtY2FzZXNcblx0Ly8gYW5kIG1pZ2h0IGJlIGNvbnNpZGVyZWQgYXMgbW9yZSBwcmVmZXJhYmxlIHJlc3VsdHMuXG5cdC8vXG5cdC8vIFRoaXMgbG9naWMsIGhvd2V2ZXIsIGlzIG5vdCBndWFyYW50ZWVkIGFuZCBjYW4gY2hhbmdlIGF0IGFueSBwb2ludCBpbiB0aGUgZnV0dXJlXG5cdG9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudDtcblxuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiYgalF1ZXJ5LmNzcyggb2Zmc2V0UGFyZW50LCBcInBvc2l0aW9uXCIgKSA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2N1bWVudEVsZW1lbnQ7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbi8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgc2Nyb2xsTGVmdDogXCJwYWdlWE9mZnNldFwiLCBzY3JvbGxUb3A6IFwicGFnZVlPZmZzZXRcIiB9LCBmdW5jdGlvbiggbWV0aG9kLCBwcm9wICkge1xuXHR2YXIgdG9wID0gXCJwYWdlWU9mZnNldFwiID09PSBwcm9wO1xuXG5cdGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHtcblxuXHRcdFx0Ly8gQ29hbGVzY2UgZG9jdW1lbnRzIGFuZCB3aW5kb3dzXG5cdFx0XHR2YXIgd2luO1xuXHRcdFx0aWYgKCBpc1dpbmRvdyggZWxlbSApICkge1xuXHRcdFx0XHR3aW4gPSBlbGVtO1xuXHRcdFx0fSBlbHNlIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0d2luID0gZWxlbS5kZWZhdWx0Vmlldztcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07XG5cdFx0XHR9XG5cblx0XHRcdGlmICggd2luICkge1xuXHRcdFx0XHR3aW4uc2Nyb2xsVG8oXG5cdFx0XHRcdFx0IXRvcCA/IHZhbCA6IHdpbi5wYWdlWE9mZnNldCxcblx0XHRcdFx0XHR0b3AgPyB2YWwgOiB3aW4ucGFnZVlPZmZzZXRcblx0XHRcdFx0KTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbVsgbWV0aG9kIF0gPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSwgbWV0aG9kLCB2YWwsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fTtcbn0gKTtcblxuLy8gU3VwcG9ydDogU2FmYXJpIDw9NyAtIDkuMSwgQ2hyb21lIDw9MzcgLSA0OVxuLy8gQWRkIHRoZSB0b3AvbGVmdCBjc3NIb29rcyB1c2luZyBqUXVlcnkuZm4ucG9zaXRpb25cbi8vIFdlYmtpdCBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA4NFxuLy8gQmxpbmsgYnVnOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD01ODkzNDdcbi8vIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyBwZXJjZW50IHdoZW4gc3BlY2lmaWVkIGZvciB0b3AvbGVmdC9ib3R0b20vcmlnaHQ7XG4vLyByYXRoZXIgdGhhbiBtYWtlIHRoZSBjc3MgbW9kdWxlIGRlcGVuZCBvbiB0aGUgb2Zmc2V0IG1vZHVsZSwganVzdCBjaGVjayBmb3IgaXQgaGVyZVxualF1ZXJ5LmVhY2goIFsgXCJ0b3BcIiwgXCJsZWZ0XCIgXSwgZnVuY3Rpb24oIGksIHByb3AgKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgcHJvcCBdID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnBpeGVsUG9zaXRpb24sXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRcdFx0Y29tcHV0ZWQgPSBjdXJDU1MoIGVsZW0sIHByb3AgKTtcblxuXHRcdFx0XHQvLyBJZiBjdXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFjayB0byBvZmZzZXRcblx0XHRcdFx0cmV0dXJuIHJudW1ub25weC50ZXN0KCBjb21wdXRlZCApID9cblx0XHRcdFx0XHRqUXVlcnkoIGVsZW0gKS5wb3NpdGlvbigpWyBwcm9wIF0gKyBcInB4XCIgOlxuXHRcdFx0XHRcdGNvbXB1dGVkO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn0gKTtcblxuXG4vLyBDcmVhdGUgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGgsIGhlaWdodCwgd2lkdGgsIG91dGVySGVpZ2h0IGFuZCBvdXRlcldpZHRoIG1ldGhvZHNcbmpRdWVyeS5lYWNoKCB7IEhlaWdodDogXCJoZWlnaHRcIiwgV2lkdGg6IFwid2lkdGhcIiB9LCBmdW5jdGlvbiggbmFtZSwgdHlwZSApIHtcblx0alF1ZXJ5LmVhY2goIHsgcGFkZGluZzogXCJpbm5lclwiICsgbmFtZSwgY29udGVudDogdHlwZSwgXCJcIjogXCJvdXRlclwiICsgbmFtZSB9LFxuXHRcdGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkge1xuXG5cdFx0Ly8gTWFyZ2luIGlzIG9ubHkgZm9yIG91dGVySGVpZ2h0LCBvdXRlcldpZHRoXG5cdFx0alF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSBcImJvb2xlYW5cIiApLFxuXHRcdFx0XHRleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/IFwibWFyZ2luXCIgOiBcImJvcmRlclwiICk7XG5cblx0XHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIGRvYztcblxuXHRcdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyAkKCB3aW5kb3cgKS5vdXRlcldpZHRoL0hlaWdodCByZXR1cm4gdy9oIGluY2x1ZGluZyBzY3JvbGxiYXJzIChnaC0xNzI5KVxuXHRcdFx0XHRcdHJldHVybiBmdW5jTmFtZS5pbmRleE9mKCBcIm91dGVyXCIgKSA9PT0gMCA/XG5cdFx0XHRcdFx0XHRlbGVtWyBcImlubmVyXCIgKyBuYW1lIF0gOlxuXHRcdFx0XHRcdFx0ZWxlbS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIFwiY2xpZW50XCIgKyBuYW1lIF07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBHZXQgZG9jdW1lbnQgd2lkdGggb3IgaGVpZ2h0XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDtcblxuXHRcdFx0XHRcdC8vIEVpdGhlciBzY3JvbGxbV2lkdGgvSGVpZ2h0XSBvciBvZmZzZXRbV2lkdGgvSGVpZ2h0XSBvciBjbGllbnRbV2lkdGgvSGVpZ2h0XSxcblx0XHRcdFx0XHQvLyB3aGljaGV2ZXIgaXMgZ3JlYXRlc3Rcblx0XHRcdFx0XHRyZXR1cm4gTWF0aC5tYXgoXG5cdFx0XHRcdFx0XHRlbGVtLmJvZHlbIFwic2Nyb2xsXCIgKyBuYW1lIF0sIGRvY1sgXCJzY3JvbGxcIiArIG5hbWUgXSxcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJvZmZzZXRcIiArIG5hbWUgXSwgZG9jWyBcIm9mZnNldFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZG9jWyBcImNsaWVudFwiICsgbmFtZSBdXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID9cblxuXHRcdFx0XHRcdC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXRcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBleHRyYSApIDpcblxuXHRcdFx0XHRcdC8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnRcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSApO1xuXHRcdFx0fSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFibGUgKTtcblx0XHR9O1xuXHR9ICk7XG59ICk7XG5cblxualF1ZXJ5LmVhY2goICggXCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBcIiArXG5cdFwibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgXCIgK1xuXHRcImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnVcIiApLnNwbGl0KCBcIiBcIiApLFxuXHRmdW5jdGlvbiggaSwgbmFtZSApIHtcblxuXHQvLyBIYW5kbGUgZXZlbnQgYmluZGluZ1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgP1xuXHRcdFx0dGhpcy5vbiggbmFtZSwgbnVsbCwgZGF0YSwgZm4gKSA6XG5cdFx0XHR0aGlzLnRyaWdnZXIoIG5hbWUgKTtcblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7XG5cdFx0cmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7XG5cdH1cbn0gKTtcblxuXG5cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdGJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub2ZmKCB0eXBlcywgbnVsbCwgZm4gKTtcblx0fSxcblxuXHRkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0dW5kZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZm4gKSB7XG5cblx0XHQvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApXG5cdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgP1xuXHRcdFx0dGhpcy5vZmYoIHNlbGVjdG9yLCBcIioqXCIgKSA6XG5cdFx0XHR0aGlzLm9mZiggdHlwZXMsIHNlbGVjdG9yIHx8IFwiKipcIiwgZm4gKTtcblx0fVxufSApO1xuXG4vLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnlcbi8vIGFyZ3VtZW50cy5cbi8vIGpRdWVyeS5wcm94eSBpcyBkZXByZWNhdGVkIHRvIHByb21vdGUgc3RhbmRhcmRzIChzcGVjaWZpY2FsbHkgRnVuY3Rpb24jYmluZClcbi8vIEhvd2V2ZXIsIGl0IGlzIG5vdCBzbGF0ZWQgZm9yIHJlbW92YWwgYW55IHRpbWUgc29vblxualF1ZXJ5LnByb3h5ID0gZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkge1xuXHR2YXIgdG1wLCBhcmdzLCBwcm94eTtcblxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcInN0cmluZ1wiICkge1xuXHRcdHRtcCA9IGZuWyBjb250ZXh0IF07XG5cdFx0Y29udGV4dCA9IGZuO1xuXHRcdGZuID0gdG1wO1xuXHR9XG5cblx0Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWNcblx0Ly8gdGhpcyB0aHJvd3MgYSBUeXBlRXJyb3IsIGJ1dCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHVuZGVmaW5lZC5cblx0aWYgKCAhaXNGdW5jdGlvbiggZm4gKSApIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Ly8gU2ltdWxhdGVkIGJpbmRcblx0YXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApO1xuXHRwcm94eSA9IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBmbi5hcHBseSggY29udGV4dCB8fCB0aGlzLCBhcmdzLmNvbmNhdCggc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApO1xuXHR9O1xuXG5cdC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZFxuXHRwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgalF1ZXJ5Lmd1aWQrKztcblxuXHRyZXR1cm4gcHJveHk7XG59O1xuXG5qUXVlcnkuaG9sZFJlYWR5ID0gZnVuY3Rpb24oIGhvbGQgKSB7XG5cdGlmICggaG9sZCApIHtcblx0XHRqUXVlcnkucmVhZHlXYWl0Kys7XG5cdH0gZWxzZSB7XG5cdFx0alF1ZXJ5LnJlYWR5KCB0cnVlICk7XG5cdH1cbn07XG5qUXVlcnkuaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5qUXVlcnkucGFyc2VKU09OID0gSlNPTi5wYXJzZTtcbmpRdWVyeS5ub2RlTmFtZSA9IG5vZGVOYW1lO1xualF1ZXJ5LmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xualF1ZXJ5LmlzV2luZG93ID0gaXNXaW5kb3c7XG5qUXVlcnkuY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xualF1ZXJ5LnR5cGUgPSB0b1R5cGU7XG5cbmpRdWVyeS5ub3cgPSBEYXRlLm5vdztcblxualF1ZXJ5LmlzTnVtZXJpYyA9IGZ1bmN0aW9uKCBvYmogKSB7XG5cblx0Ly8gQXMgb2YgalF1ZXJ5IDMuMCwgaXNOdW1lcmljIGlzIGxpbWl0ZWQgdG9cblx0Ly8gc3RyaW5ncyBhbmQgbnVtYmVycyAocHJpbWl0aXZlcyBvciBvYmplY3RzKVxuXHQvLyB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIGZpbml0ZSBudW1iZXJzIChnaC0yNjYyKVxuXHR2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTtcblx0cmV0dXJuICggdHlwZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlID09PSBcInN0cmluZ1wiICkgJiZcblxuXHRcdC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzIChcIlwiKVxuXHRcdC8vIC4uLmJ1dCBtaXNpbnRlcnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMgKFwiMHguLi5cIilcblx0XHQvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0byBOYU5cblx0XHQhaXNOYU4oIG9iaiAtIHBhcnNlRmxvYXQoIG9iaiApICk7XG59O1xuXG5cblxuXG4vLyBSZWdpc3RlciBhcyBhIG5hbWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggb3RoZXJcbi8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3QgdmlhIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXRcbi8vIHVuZGVyc3RhbmRzIGFub255bW91cyBBTUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdFxuLy8gd2F5IHRvIHJlZ2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZVxuLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlXG4vLyBmaWxlIG5hbWUuIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHNcbi8vIHRvIGNhbGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnksIGl0IHdpbGwgd29yay5cblxuLy8gTm90ZSB0aGF0IGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LCBsaWJyYXJpZXMgdGhhdCBhcmUgbm90IGpRdWVyeSBzaG91bGRcbi8vIGRlY2xhcmUgdGhlbXNlbHZlcyBhcyBhbm9ueW1vdXMgbW9kdWxlcywgYW5kIGF2b2lkIHNldHRpbmcgYSBnbG9iYWwgaWYgYW5cbi8vIEFNRCBsb2FkZXIgaXMgcHJlc2VudC4galF1ZXJ5IGlzIGEgc3BlY2lhbCBjYXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJlanMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9uXG5cbmlmICggdHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQgKSB7XG5cdGRlZmluZSggXCJqcXVlcnlcIiwgW10sIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnk7XG5cdH0gKTtcbn1cblxuXG5cblxudmFyXG5cblx0Ly8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF9qUXVlcnkgPSB3aW5kb3cualF1ZXJ5LFxuXG5cdC8vIE1hcCBvdmVyIHRoZSAkIGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF8kID0gd2luZG93LiQ7XG5cbmpRdWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7XG5cdGlmICggd2luZG93LiQgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cuJCA9IF8kO1xuXHR9XG5cblx0aWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cualF1ZXJ5ID0gX2pRdWVyeTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnk7XG59O1xuXG4vLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGluIEFNRFxuLy8gKCM3MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNTU3KVxuLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAoIzEzNTY2KVxuaWYgKCAhbm9HbG9iYWwgKSB7XG5cdHdpbmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9IGpRdWVyeTtcbn1cblxuXG5cblxucmV0dXJuIGpRdWVyeTtcbn0gKTtcbiIsIi8qXG4gKiBUaXRsZTogVHlwZXdyaXRlciBKU1xuICogRGVzY3JpcHRpb246IEEgbmF0aXZlIGphdmFzY3JpcHQgcGx1Z2luIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGFuIGVsZWdlbnQgYXV0b21hdGljIHR5cGV3cml0ZXIgYW5pbWF0aW9uIGVmZmVjdCBvbiB3ZWJzaXRlcy5cbiAqIEF1dGhvcjogVGFtZWVtIFNhZmlcbiAqIFdlYnNpdGU6IGh0dHBzOi8vc2FmaS5tZS51a1xuICogVmVyc2lvbjogMS4wLjBcbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0Ly8gaHR0cDovL3BhdWxpcmlzaC5jb20vMjAxMS9yZXF1ZXN0YW5pbWF0aW9uZnJhbWUtZm9yLXNtYXJ0LWFuaW1hdGluZy9cblx0Ly8gaHR0cDovL215Lm9wZXJhLmNvbS9lbW9sbGVyL2Jsb2cvMjAxMS8xMi8yMC9yZXF1ZXN0YW5pbWF0aW9uZnJhbWUtZm9yLXNtYXJ0LWVyLWFuaW1hdGluZ1xuXHQvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcG9seWZpbGwgYnkgRXJpayBNw7ZsbGVyLiBmaXhlcyBmcm9tIFBhdWwgSXJpc2ggYW5kIFRpbm8gWmlqZGVsXG5cdC8vIE1JVCBsaWNlbnNlXG5cdChmdW5jdGlvbigpIHtcblx0ICAgIHZhciBsYXN0VGltZSA9IDA7XG5cdCAgICB2YXIgdmVuZG9ycyA9IFsnbXMnLCAnbW96JywgJ3dlYmtpdCcsICdvJ107XG5cdCAgICBmb3IodmFyIHggPSAwOyB4IDwgdmVuZG9ycy5sZW5ndGggJiYgIXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7ICsreCkge1xuXHQgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSB3aW5kb3dbdmVuZG9yc1t4XSsnUmVxdWVzdEFuaW1hdGlvbkZyYW1lJ107XG5cdCAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lID0gd2luZG93W3ZlbmRvcnNbeF0rJ0NhbmNlbEFuaW1hdGlvbkZyYW1lJ11cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB3aW5kb3dbdmVuZG9yc1t4XSsnQ2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lJ107XG5cdCAgICB9XG5cblx0ICAgIGlmICghd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSlcblx0ICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24oY2FsbGJhY2ssIGVsZW1lbnQpIHtcblx0ICAgICAgICAgICAgdmFyIGN1cnJUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cdCAgICAgICAgICAgIHZhciB0aW1lVG9DYWxsID0gTWF0aC5tYXgoMCwgMTYgLSAoY3VyclRpbWUgLSBsYXN0VGltZSkpO1xuXHQgICAgICAgICAgICB2YXIgaWQgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgY2FsbGJhY2soY3VyclRpbWUgKyB0aW1lVG9DYWxsKTsgfSxcblx0ICAgICAgICAgICAgICB0aW1lVG9DYWxsKTtcblx0ICAgICAgICAgICAgbGFzdFRpbWUgPSBjdXJyVGltZSArIHRpbWVUb0NhbGw7XG5cdCAgICAgICAgICAgIHJldHVybiBpZDtcblx0ICAgICAgICB9O1xuXG5cdCAgICBpZiAoIXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSlcblx0ICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihpZCkge1xuXHQgICAgICAgICAgICBjbGVhclRpbWVvdXQoaWQpO1xuXHQgICAgICAgIH07XG5cdH0oKSk7XG5cblx0d2luZG93LlR5cGV3cml0ZXIgPSBmdW5jdGlvbiBUeXBld3JpdGVyKGVsZW1lbnQsIG9wdGlvbnMpIHtcblx0XHR0aGlzLl9zZXR0aW5ncyA9IHtcblx0XHRcdGN1cnNvckFuaW1hdGlvblBhdXNlZDogZmFsc2UsXG5cdFx0XHRvcGFjaXR5SW5jcmVhc2luZzogZmFsc2UsXG5cdFx0XHRjdXJyZW50T3BhY2l0eTogMSxcblx0XHRcdGRlbGF5ZWRRdWU6IFtdLFxuXHRcdFx0ZGVsYXlJdGVtc0NvdW50OiAwLFxuXHRcdFx0ZXZlbnRRdWU6IFtdLFxuXHRcdFx0Y2FsbGVkRXZlbnRzOiBbXSxcblx0XHRcdGV2ZW50UnVubmluZzogZmFsc2UsXG5cdFx0XHR0aW1lb3V0OiBmYWxzZSxcblx0XHRcdGRlbGF5RXhlY3V0aW9uOiBmYWxzZSxcblx0XHRcdGZwczogKDYwLzEwMDApLFxuXHRcdFx0dHlwaW5nRnJhbWVDb3VudDogMCxcblx0XHRcdHN0cmluZ1RvVHlwZUhUTUxBcnJheTogW10sXG5cdFx0XHRjdXJyZW50VHlwZWRDaGFyYWN0ZXJzOiBbXSxcblx0XHRcdHR5cGluZzogZmFsc2UsXG5cdFx0XHR1c2VkSURzOiBbXSxcblx0XHRcdGNoYXJBbW91bnRUb0RlbGV0ZTogZmFsc2UsXG5cdFx0XHR1c2VyT3B0aW9uczoge30sXG5cdFx0XHRldmVudExvb3BSZXJ1bjogMFxuXHRcdH07XG5cblx0XHRpZighZWxlbWVudCkge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBjaG9vc2UgYW4gRE9NIGVsZW1lbnQgc28gdGhhdCB0eXBlIHdyaXRlciBjYW4gZGlzcGxheSBpdHNlbGYuJyk7XG5cdFx0fVxuXG5cdFx0Ly8gaWYoIW9wdGlvbnMuc3RyaW5ncyAmJiAhKG9wdGlvbnMuc3RyaW5ncyBpbnN0YW5jZW9mIEFycmF5IHx8IHR5cGVvZiBvcHRpb25zLnN0cmluZ3MgPT09ICdzdHJpbmcnKSkge1xuXHRcdC8vIFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBhbiBhcnJheSBvZiBzdHJpbmdzIGZvciB0aGUgdHlwZXdyaXRlciBhbmltYXRpb24gdG8gd29yay4nKTtcblx0XHQvLyB9XG5cblx0XHRpZih0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdUeXBld3JpdGVyIG9ubHkgYWNjZXB0cyB0aGUgb3B0aW9ucyBhcyBhbiBvYmplY3QuJyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fc2V0dGluZ3MudXNlck9wdGlvbnMgPSBvcHRpb25zO1xuXG5cdFx0dGhpcy5kZWZhdWx0X29wdGlvbnMgPSB7XG5cdFx0XHRzdHJpbmdzOiBmYWxzZSxcblx0XHRcdGN1cnNvckNsYXNzTmFtZTogJ3R5cGV3cml0ZXItY3Vyc29yJyxcblx0XHRcdGN1cnNvcjogJ3wnLFxuXHRcdFx0YW5pbWF0ZUN1cnNvcjogdHJ1ZSxcblx0XHRcdGJsaW5rU3BlZWQ6IDUwLFxuXHRcdFx0dHlwaW5nU3BlZWQ6ICduYXR1cmFsJyxcblx0XHRcdGRlbGV0ZVNwZWVkOiAnbmF0dXJhbCcsXG5cdFx0XHRjaGFyU3BhbkNsYXNzTmFtZTogJ3R5cGV3cml0ZXItY2hhcicsXG5cdFx0XHR3cmFwcGVyQ2xhc3NOYW1lOiAndHlwZXdyaXRlci13cmFwcGVyJyxcblx0XHRcdGxvb3A6IGZhbHNlLFxuXHRcdFx0YXV0b1N0YXJ0OiBmYWxzZSxcblx0XHRcdGRldk1vZGU6IGZhbHNlXG5cdFx0fTtcblxuXHRcdHRoaXMub3B0aW9ucyA9IHRoaXMuX3NldHVwT3B0aW9ucyhvcHRpb25zKTtcblxuXHRcdHRoaXMuZWwgPSBlbGVtZW50O1xuXG5cdFx0dGhpcy5fc2V0dXBUeXB3cml0ZXJXcmFwcGVyKCk7XG5cblx0XHR0aGlzLl9zdGFydEN1cnNvckFuaW1hdGlvbigpO1xuXG5cdFx0aWYodGhpcy5vcHRpb25zLmF1dG9TdGFydCA9PT0gdHJ1ZSAmJiB0aGlzLm9wdGlvbnMuc3RyaW5ncykge1xuXHRcdFx0dGhpcy50eXBlT3V0QWxsU3RyaW5ncygpO1xuXHRcdH1cblxuXHR9O1xuXG5cdHZhciBUeXBld3JpdGVyUHJvdG90eXBlID0gd2luZG93LlR5cGV3cml0ZXIucHJvdG90eXBlO1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX2FkZFRvRXZlbnRRdWUodGhpcy5fc3RvcEV2ZW50TG9vcClcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fc3RhcnRFdmVudExvb3AoKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnJlcnVuID0gZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZSh0aGlzLl9yZXJ1bkNhbGxlZEV2ZW50cyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS50eXBlU3RyaW5nID0gZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0aWYoIXN0cmluZyB8fCB0eXBlb2Ygc3RyaW5nICE9ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGVudGVyIGEgc3RyaW5nIGFzIHRoZSBwYXJhbWF0ZXIuJyk7XG5cdFx0fVxuXG5cdFx0dmFyIHN0cmluZ19jaGFycyA9IHRoaXMuX2dldENoYXJhY3RlcnMoc3RyaW5nKTtcblxuXHRcdHRoaXMuX2FkZFRvRXZlbnRRdWUoW3RoaXMuX3R5cGVDaGFyYWN0ZXJzLCBbc3RyaW5nX2NoYXJzXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuZGVsZXRlQWxsID0gZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fZGVsZXRlQ2hhcnMsIFsnYWxsJ11dKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLmRlbGV0ZUNoYXJzID0gZnVuY3Rpb24oYW1vdW50KSB7XG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fZGVsZXRlQ2hhcnMsIFthbW91bnRdXSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5wYXVzZUZvciA9IGZ1bmN0aW9uKG1zKSB7XG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fcGF1c2VGb3IsIFttc11dKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnR5cGVPdXRBbGxTdHJpbmdzID0gZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNoYXJhY3RlcnNfYXJyYXkgPSB0aGlzLl9nZXRTdHJpbmdzQXNDaGFyc0FycmF5KCk7XG5cblx0XHRpZihjaGFyYWN0ZXJzX2FycmF5Lmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0dGhpcy5fdHlwZUNoYXJhY3RlcnMoY2hhcmFjdGVyc19hcnJheVswXSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcih2YXIgaSA9IDAsIGxlbmd0aCA9IGNoYXJhY3RlcnNfYXJyYXkubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fdHlwZUNoYXJhY3RlcnMsIFtjaGFyYWN0ZXJzX2FycmF5W2ldXV0pO1xuXHRcdFx0XHR0aGlzLnBhdXNlRm9yKHRoaXMuX3JhbmRvbUludGVnZXIoMTUwMCwgMjUwMCkpO1xuXHRcdFx0XHR0aGlzLmRlbGV0ZUFsbCgpO1xuXHRcdFx0XHR0aGlzLnBhdXNlRm9yKHRoaXMuX3JhbmRvbUludGVnZXIoMTUwMCwgMjUwMCkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VTZXR0aW5ncyA9IGZ1bmN0aW9uKG5ld19zZXR0aW5ncykge1xuXHRcdGlmKCFuZXdfc2V0dGluZ3MgJiYgdHlwZW9mIG5ld19zZXR0aW5ncyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdUeXBld3JpdGVyIHdpbGwgb25seSBhY2NlcHQgYW4gb2JqZWN0IGFzIHRoZSBzZXR0aW5ncy4nKTtcblx0XHR9XG5cblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9jaGFuZ2VTZXR0aW5ncywgW0pTT04uc3RyaW5naWZ5KG5ld19zZXR0aW5ncyldXSk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuY2hhbmdlQmxpbmtTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgYmxpbmsgc3BlZWQuJyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5jaGFuZ2VTZXR0aW5ncyh7XG5cdFx0XHRibGlua1NwZWVkOiBuZXdfc3BlZWRcblx0XHR9KTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuY2hhbmdlVHlwaW5nU3BlZWQgPSBmdW5jdGlvbihuZXdfc3BlZWQpIHtcblx0XHRpZighbmV3X3NwZWVkICYmIHR5cGVvZiBuZXdfc3BlZWQgIT09ICdudW1iZXInKSB7XG5cdFx0XHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGVudGVyIGEgbnVtYmVyIGZvciB0aGUgbmV3IHR5cGluZyBzcGVlZC4nKTtcblx0XHR9XG5cblx0XHR2YXIgbmV3X3NldHRpbmdzID0ge1xuXHRcdFx0dHlwaW5nU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH07XG5cblx0XHR0aGlzLmNoYW5nZVNldHRpbmdzKHtcblx0XHRcdHR5cGluZ1NwZWVkOiBuZXdfc3BlZWRcblx0XHR9KTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuY2hhbmdlRGVsZXRlU3BlZWQgPSBmdW5jdGlvbihuZXdfc3BlZWQpIHtcblx0XHRpZighbmV3X3NwZWVkICYmIHR5cGVvZiBuZXdfc3BlZWQgIT09ICdudW1iZXInKSB7XG5cdFx0XHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGVudGVyIGEgbnVtYmVyIGZvciB0aGUgbmV3IGRlbGV0ZSBzcGVlZC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLmNoYW5nZVNldHRpbmdzKHtcblx0XHRcdGNoYW5nZURlbGV0ZVNwZWVkOiBuZXdfc3BlZWRcblx0XHR9KTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3JlcnVuQ2FsbGVkRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYodGhpcy5fc2V0dGluZ3MuY3VycmVudFR5cGVkQ2hhcmFjdGVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aGlzLmRlbGV0ZUFsbCgpO1xuXHRcdFx0dGhpcy5fcmVzZXRFdmVudExvb3AoJ3JlcnVuQ2FsbGVkRXZlbnRzJyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlID0gdGhpcy5fc2V0dGluZ3MuY2FsbGVkRXZlbnRzO1xuXHRcdFx0dGhpcy5fc2V0dGluZ3MuY2FsbGVkRXZlbnRzID0gW107XG5cdFx0XHR0aGlzLm9wdGlvbnMgPSB0aGlzLl9zZXR1cE9wdGlvbnModGhpcy5fc2V0dGluZ3MudXNlck9wdGlvbnMpO1xuXHRcdFx0dGhpcy5fc2V0dGluZ3MudXNlZElEcyA9IFtdO1xuXHRcdFx0dGhpcy5jaGFyQW1vdW50VG9EZWxldGUgPSBmYWxzZTtcblx0XHRcdHRoaXMuX3N0YXJ0RXZlbnRMb29wKCk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2RlbGV0ZUNoYXJzID0gZnVuY3Rpb24oYW1vdW50KSB7XG5cblxuXHRcdGlmKGFtb3VudCkge1xuXHRcdFx0dGhpcy5fc2V0dGluZ3MuY2hhckFtb3VudFRvRGVsZXRlID0gYW1vdW50O1xuXHRcdH1cblx0XHR0aGlzLl9kZWxldGluZ0NoYXJJZHNBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2RlbGV0aW5nQ2hhckFuaW1hdGlvbkZyYW1lLmJpbmQodGhpcykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3BhdXNlRm9yID0gZnVuY3Rpb24obXMpIHtcblx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0c2VsZi5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nID0gdHJ1ZTtcblx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0c2VsZi5fcmVzZXRFdmVudExvb3AoJ3BhdXNlRm9yJyk7XG5cdFx0fSwgbXMpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2NoYW5nZVNldHRpbmdzID0gZnVuY3Rpb24obmV3X3NldHRpbmdzKSB7XG5cdFx0dGhpcy5vcHRpb25zID0gdGhpcy5fc2V0dXBPcHRpb25zKEpTT04ucGFyc2UobmV3X3NldHRpbmdzWzBdKSk7XG5cdFx0dGhpcy5fcmVzZXRFdmVudExvb3AoJ2NoYW5nZVNldHRpbmdzJyk7XG5cblx0XHRpZih0aGlzLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0Y29uc29sZS5sb2coJ05ldyBzZXR0aW5ncycsIHRoaXMub3B0aW9ucyk7XG5cdFx0fVxuXG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0dmFyIGRlbGV0ZV9zcGVlZCA9IHRoaXMub3B0aW9ucy5kZWxldGVTcGVlZDtcblx0XHR2YXIgdHlwZXdyaXRlcl93cmFwcGVyX2NsYXNzX25hbWUgPSBzZWxmLm9wdGlvbnMud3JhcHBlckNsYXNzTmFtZTtcblx0XHR2YXIgY3VycmVudF90eXBlZF9jaGFyX2lkcyA9IHNlbGYuX3NldHRpbmdzLmN1cnJlbnRUeXBlZENoYXJhY3RlcnM7XG5cdFx0dmFyIGNoYXJfYW1vdW50X3RvX2RlbGV0ZSA9IHNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZTtcblxuXHRcdGlmKCFzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgfHwgc2VsZi5fc2V0dGluZ3MuY2hhckFtb3VudFRvRGVsZXRlID09PSAwIHx8IGN1cnJlbnRfdHlwZWRfY2hhcl9pZHMgPT09IDApIHtcblx0XHRcdHNlbGYuX3Jlc2V0RXZlbnRMb29wKCdkZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZScpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYoZGVsZXRlX3NwZWVkID09ICduYXR1cmFsJykge1xuXHRcdFx0ZGVsZXRlX3NwZWVkID0gc2VsZi5fcmFuZG9tSW50ZWdlcig1MCwgMTUwKTtcblx0XHR9XG5cblx0XHRpZihjaGFyX2Ftb3VudF90b19kZWxldGUgPT0gJ2FsbCcpIHtcblx0XHRcdGNoYXJfYW1vdW50X3RvX2RlbGV0ZSA9IGN1cnJlbnRfdHlwZWRfY2hhcl9pZHMubGVuZ3RoO1xuXHRcdFx0c2VsZi5fc2V0dGluZ3MuY2hhckFtb3VudFRvRGVsZXRlID0gY2hhcl9hbW91bnRfdG9fZGVsZXRlO1xuXHRcdH1cblxuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRpZihzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUpIHtcblx0XHRcdFx0dmFyIGxhc3RfdHlwZWRfY2hhcl9pbmRleCA9IGN1cnJlbnRfdHlwZWRfY2hhcl9pZHMubGVuZ3RoIC0gMTtcblx0XHRcdFx0dmFyIGdldF9sYXN0X3R5cGVkX2NoYXIgPSBjdXJyZW50X3R5cGVkX2NoYXJfaWRzW2xhc3RfdHlwZWRfY2hhcl9pbmRleF07XG5cblx0XHRcdFx0c2VsZi5fc2V0dGluZ3MuY3VycmVudFR5cGVkQ2hhcmFjdGVycy5zcGxpY2UobGFzdF90eXBlZF9jaGFyX2luZGV4LCAxKTtcblxuXHRcdFx0XHR2YXIgY2hhcl90b19kZWxldGVfZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChnZXRfbGFzdF90eXBlZF9jaGFyKTtcblxuXHRcdFx0XHRpZihjaGFyX3RvX2RlbGV0ZV9lbCkge1xuXHRcdFx0XHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfZWwgPSBzZWxmLmVsLnF1ZXJ5U2VsZWN0b3IoJy4nICsgdHlwZXdyaXRlcl93cmFwcGVyX2NsYXNzX25hbWUpO1xuXHRcdFx0XHRcdHR5cGV3cml0ZXJfd3JhcHBlcl9lbC5yZW1vdmVDaGlsZChjaGFyX3RvX2RlbGV0ZV9lbCk7XG5cdFx0XHRcdFx0c2VsZi5fc2V0dGluZ3MuY2hhckFtb3VudFRvRGVsZXRlID0gY2hhcl9hbW91bnRfdG9fZGVsZXRlIC0gMTtcblxuXHRcdFx0XHRcdGlmKHNlbGYub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnRGVsZXRlZCBjaGFyIHdpdGggSUQnLCBnZXRfbGFzdF90eXBlZF9jaGFyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXG5cdFx0XHRzZWxmLl9kZWxldGluZ0NoYXJJZHNBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHNlbGYuX2RlbGV0aW5nQ2hhckFuaW1hdGlvbkZyYW1lLmJpbmQoc2VsZikpO1xuXG5cdFx0fSwgZGVsZXRlX3NwZWVkKTtcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zZXR1cE9wdGlvbnMgPSBmdW5jdGlvbihuZXdfb3B0aW9ucykge1xuXHQgICAgdmFyIG1lcmdlZF9vcHRpb25zID0ge307XG5cblx0ICAgIGZvciAodmFyIGF0dHJuYW1lIGluIHRoaXMuZGVmYXVsdF9vcHRpb25zKSB7XG5cdCAgICBcdG1lcmdlZF9vcHRpb25zW2F0dHJuYW1lXSA9IHRoaXMuZGVmYXVsdF9vcHRpb25zW2F0dHJuYW1lXTtcblx0ICAgIH1cblxuXHQgICAgaWYodGhpcy5fc2V0dGluZ3MudXNlck9wdGlvbnMpIHtcblx0ICAgIFx0Zm9yICh2YXIgYXR0cm5hbWUgaW4gdGhpcy5fc2V0dGluZ3MudXNlck9wdGlvbnMpIHtcblx0XHQgICAgXHRtZXJnZWRfb3B0aW9uc1thdHRybmFtZV0gPSB0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9uc1thdHRybmFtZV07XG5cdFx0ICAgIH1cblx0ICAgIH1cblxuXHQgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gbmV3X29wdGlvbnMpIHtcblx0ICAgIFx0bWVyZ2VkX29wdGlvbnNbYXR0cm5hbWVdID0gbmV3X29wdGlvbnNbYXR0cm5hbWVdO1xuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gbWVyZ2VkX29wdGlvbnM7XG5cdH1cblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9hZGRUb0V2ZW50UXVlID0gZnVuY3Rpb24oZXZlbnQpIHtcblx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFF1ZS5wdXNoKGV2ZW50KTtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy5ldmVudFF1ZS5sZW5ndGggPiAwICYmICF0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgJiYgdGhpcy5vcHRpb25zLmF1dG9TdGFydCkge1xuXHRcdFx0dGhpcy5fc3RhcnRFdmVudExvb3AoKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fc3RhcnRFdmVudExvb3AgPSBmdW5jdGlvbigpIHtcblx0XHRpZih0aGlzLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0Y29uc29sZS5sb2coJ0V2ZW50IGxvb3Agc3RhcnRlZC4nKTtcblx0XHR9XG5cblx0XHRpZighdGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nKSB7XG5cblx0XHRcdGlmKHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGhpcy5ldmVudExvb3BSZXJ1biA9IDA7XG5cdFx0XHRcdHZhciBmaXJzdF9ldmVudCA9IHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlWzBdO1xuXHRcdFx0XHRpZih0eXBlb2YgZmlyc3RfZXZlbnQgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLmV2ZW50UnVubmluZyA9IHRydWU7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY2FsbGVkRXZlbnRzLnB1c2goZmlyc3RfZXZlbnQpO1xuXHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLnNwbGljZSgwLCAxKTtcblx0XHRcdFx0XHRmaXJzdF9ldmVudC5jYWxsKHRoaXMpO1xuXHRcdFx0XHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgc3RhcnRlZC4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZihmaXJzdF9ldmVudCBpbnN0YW5jZW9mIEFycmF5KSB7XG5cdFx0XHRcdFx0aWYodHlwZW9mIGZpcnN0X2V2ZW50WzBdID09ICdmdW5jdGlvbicgJiYgZmlyc3RfZXZlbnRbMV0gaW5zdGFuY2VvZiBBcnJheSkge1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLmNhbGxlZEV2ZW50cy5wdXNoKGZpcnN0X2V2ZW50KTtcblx0XHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLnNwbGljZSgwLCAxKTtcblx0XHRcdFx0XHRcdGZpcnN0X2V2ZW50WzBdLmNhbGwodGhpcywgZmlyc3RfZXZlbnRbMV0pO1xuXHRcdFx0XHRcdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0V2ZW50IHN0YXJ0ZWQuJyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9ldmVudFF1ZUFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fc3RhcnRFdmVudExvb3AuYmluZCh0aGlzKSk7XG5cdFx0fVxuXG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmV2ZW50UnVubmluZyAmJiB0aGlzLl9zZXR0aW5ncy5ldmVudFF1ZS5sZW5ndGggPD0gMCkge1xuXHRcdFx0dmFyIHNlbGYgPSB0aGlzO1xuXHRcdFx0c2VsZi5fc3RvcEV2ZW50TG9vcCgpO1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYoc2VsZi5vcHRpb25zLmxvb3ApIHtcblx0XHRcdFx0XHRzZWxmLmV2ZW50TG9vcFJlcnVuKys7XG5cdFx0XHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdCZWZvcmUgTG9vcCBTdGF0ZScsIHNlbGYuX3NldHRpbmdzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoc2VsZi5ldmVudExvb3BSZXJ1biA+IDQpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ01heGltdW0gYW1vdW50IG9mIGxvb3AgcmV0cmllcyByZWFjaGVkLicpO1xuXHRcdFx0XHRcdFx0c2VsZi5fc3RvcEV2ZW50TG9vcCgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRpZihzZWxmLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnTG9vcGluZyBldmVudHMuJyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRzZWxmLl9yZXJ1bkNhbGxlZEV2ZW50cygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwMCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcmVzZXRFdmVudExvb3AgPSBmdW5jdGlvbihuYW1lKSB7XG5cdFx0dmFyIGV2ZW50X25hbWUgPSBuYW1lIHx8ICdFdmVudCc7XG5cdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nID0gZmFsc2U7XG5cdFx0dGhpcy5fc3RhcnRFdmVudExvb3AoKTtcblx0XHRpZih0aGlzLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0Y29uc29sZS5sb2coZXZlbnRfbmFtZSwgJ0ZpbmlzaGVkJyk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3N0b3BFdmVudExvb3AgPSBmdW5jdGlvbigpIHtcblx0XHR3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fZXZlbnRRdWVBbmltYXRpb24pO1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgbG9vcCBzdG9wcGVkLicpO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zZXR1cFR5cHdyaXRlcldyYXBwZXIgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgdHlwZXdyaXRlcl93cmFwcGVyX2NsYXNzX25hbWUgPSB0aGlzLm9wdGlvbnMud3JhcHBlckNsYXNzTmFtZTtcblx0XHR2YXIgdHlwZXdyaXRlcl93cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdHR5cGV3cml0ZXJfd3JhcHBlci5jbGFzc05hbWUgPSB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZTtcblx0XHR0aGlzLmVsLmlubmVySFRNTCA9ICcnO1xuXHRcdHRoaXMuZWwuYXBwZW5kQ2hpbGQodHlwZXdyaXRlcl93cmFwcGVyKTtcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl90eXBlQ2hhcmFjdGVycyA9IGZ1bmN0aW9uKGNoYXJhY3RlcnNfYXJyYXkpIHtcblx0XHR0aGlzLl9zZXR0aW5ncy5zdHJpbmdUb1R5cGVIVE1MQXJyYXkgPSB0aGlzLl9jb252ZXJ0Q2hhcnNUb0hUTUwoY2hhcmFjdGVyc19hcnJheSk7XG5cdFx0dGhpcy5fdHlwaW5nQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl90eXBpbmdBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMsIGNoYXJhY3RlcnNfYXJyYXkubGVuZ3RoKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fdHlwaW5nQW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbih0b3RhbF9pdGVtcykge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHR2YXIgdHlwaW5nX3NwZWVkID0gdGhpcy5vcHRpb25zLnR5cGluZ1NwZWVkO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHNlbGYub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXG5cdFx0aWYoc2VsZi5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5Lmxlbmd0aCA9PSAwKSB7XG5cdFx0XHR3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoc2VsZi5fdHlwaW5nQW5pbWF0aW9uKTtcblx0XHRcdHRoaXMuX3Jlc2V0RXZlbnRMb29wKCd0eXBpbmdBbmltYXRpb25GcmFtZScpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYodHlwaW5nX3NwZWVkID09ICduYXR1cmFsJykge1xuXHRcdFx0dHlwaW5nX3NwZWVkID0gdGhpcy5fcmFuZG9tSW50ZWdlcig1MCwgMTUwKTtcblx0XHR9XG5cblx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGVsX2lubmVyX2h0bWwgPSBzZWxmLmVsLmlubmVySFRNTDtcblx0XHRcdHZhciBpdGVtX3RvX3R5cGUgPSBzZWxmLl9zZXR0aW5ncy5zdHJpbmdUb1R5cGVIVE1MQXJyYXlbMF07XG5cdFx0XHRzZWxmLmVsLnF1ZXJ5U2VsZWN0b3IoJy4nICsgdHlwZXdyaXRlcl93cmFwcGVyX2NsYXNzX25hbWUpLmFwcGVuZENoaWxkKGl0ZW1fdG9fdHlwZS5lbCk7XG5cdFx0XHRzZWxmLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLnB1c2goaXRlbV90b190eXBlLmlkKTtcblx0XHRcdHNlbGYuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheS5zcGxpY2UoMCwgMSk7XG5cdFx0XHRzZWxmLl90eXBpbmdBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHNlbGYuX3R5cGluZ0FuaW1hdGlvbkZyYW1lLmJpbmQoc2VsZiwgdG90YWxfaXRlbXMpKTtcblx0XHRcdGlmKHNlbGYub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKCdUeXBlZCcsIGl0ZW1fdG9fdHlwZSk7XG5cdFx0XHR9XG5cdFx0fSwgdHlwaW5nX3NwZWVkKTtcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9jb252ZXJ0Q2hhcnNUb0hUTUwgPSBmdW5jdGlvbihjaGFycykge1xuXHRcdHZhciBjaGFyc19odG1sX3dyYXBfYXJyYXkgPSBbXTtcblx0XHR2YXIgY2hhcl9jbGFzc19uYW1lID0gdGhpcy5vcHRpb25zLmNoYXJTcGFuQ2xhc3NOYW1lO1xuXHRcdHZhciBjaGFyc19hcnJheSA9IGNoYXJzWzBdO1xuXG5cdFx0Zm9yKHZhciBpID0gMCwgbGVuZ3RoID0gY2hhcnNfYXJyYXkubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBjaGFyX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHR2YXIgY2hhcl9pZCA9IHRoaXMuX2dlbmVyYXRlVW5pcXVlSUQoKTtcblx0XHRcdGNoYXJfZWxlbWVudC5pZCA9IGNoYXJfaWQ7XG5cdFx0XHRjaGFyX2VsZW1lbnQuY2xhc3NOYW1lID0gY2hhcl9jbGFzc19uYW1lICsgJyB0eXBld3JpdGVyLWl0ZW0tJyArIGk7XG5cdFx0XHRjaGFyX2VsZW1lbnQuaW5uZXJIVE1MID0gY2hhcnNfYXJyYXlbaV07XG5cdFx0XHRjaGFyc19odG1sX3dyYXBfYXJyYXkucHVzaCh7XG5cdFx0XHRcdGlkOiBjaGFyX2lkLFxuXHRcdFx0XHRlbDogY2hhcl9lbGVtZW50XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY2hhcnNfaHRtbF93cmFwX2FycmF5O1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2dldENoYXJhY3RlcnMgPSBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRpZih0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gc3RyaW5nLnNwbGl0KFwiXCIpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgc3RyaW5nc19hcnJheV9jaGVjayA9IHRoaXMub3B0aW9ucy5zdHJpbmdzIGluc3RhbmNlb2YgQXJyYXk7XG5cdFx0dmFyIHN0cmluZ3Nfc3RyaW5nX2NoZWNrID0gdHlwZW9mIHRoaXMub3B0aW9ucy5zdHJpbmdzID09PSAnc3RyaW5nJztcblx0XHRpZighc3RyaW5nc19hcnJheV9jaGVjaykge1xuXHRcdFx0aWYoIXN0cmluZ3Nfc3RyaW5nX2NoZWNrKSB7XG5cdFx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdUeXBld3JpdGVyIG9ubHkgYWNjZXB0cyBzdHJpbmdzIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MgYXMgdGhlIGlucHV0LicpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFt0aGlzLm9wdGlvbnMuc3RyaW5ncy5zcGxpdChcIlwiKV07XG5cdFx0fVxuXG5cdFx0dmFyIHN0cmluZ3NfY2hhcnNfYXJyYXkgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSB0aGlzLm9wdGlvbnMuc3RyaW5ncy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIHN0cmluZ19jaGFycyA9IHRoaXMuX2dldENoYXJhY3RlcnModGhpcy5vcHRpb25zLnN0cmluZ3NbaV0pO1xuXHRcdFx0aWYoIXN0cmluZ19jaGFycykge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgb25seSBzdHJpbmdzLicpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHN0cmluZ3NfY2hhcnNfYXJyYXkucHVzaChzdHJpbmdfY2hhcnMpO1xuICAgIFx0fVxuXG4gICAgXHRyZXR1cm4gc3RyaW5nc19jaGFyc19hcnJheTtcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9jdXJzb3JBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKCF0aGlzLl9zZXR0aW5ncy5jdXJzb3JBbmltYXRpb25QYXVzZWQpIHtcblx0XHRcdHZhciBibGlua19zcGVlZCA9IHRoaXMub3B0aW9ucy5ibGlua1NwZWVkO1xuXHRcdFx0dmFyIG9wYWNpdHlfYW1vdW50ID0gKDEvMTAwMCkgKiBibGlua19zcGVlZDtcblxuXHRcdFx0dmFyIGN1cnNvcl9lbCA9IHRoaXMuZWwucXVlcnlTZWxlY3RvcignLnR5cGV3cml0ZXItY3Vyc29yJyk7XG5cblx0XHRcdGlmKHRoaXMuX3NldHRpbmdzLm9wYWNpdHlJbmNyZWFzaW5nID09IHRydWUpIHtcblx0XHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgPj0gMSkge1xuXHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLm9wYWNpdHlJbmNyZWFzaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgPSAxO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgKz0gb3BhY2l0eV9hbW91bnQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmKHRoaXMuX3NldHRpbmdzLm9wYWNpdHlJbmNyZWFzaW5nID09IGZhbHNlKSB7XG5cdFx0XHRcdGlmKHRoaXMuX3NldHRpbmdzLmN1cnJlbnRPcGFjaXR5IDw9IDApIHtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5vcGFjaXR5SW5jcmVhc2luZyA9IHRydWU7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgPSAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgLT0gb3BhY2l0eV9hbW91bnQ7XG5cdFx0XHR9XG5cblx0XHRcdGN1cnNvcl9lbC5zdHlsZS5vcGFjaXR5ID0gdGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHk7XG5cdFx0XHR0aGlzLl9jdXJzb3JBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2N1cnNvckFuaW1hdGlvbkZyYW1lLmJpbmQodGhpcykpO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLmFwcGVuZFRleHQgPSBmdW5jdGlvbih0ZXh0KXtcblx0ICAgIHRoaXMuX2FkZFRvRXZlbnRRdWUoW3RoaXMuX2FwcGVuZFRleHQsIFt0ZXh0XV0pXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2FwcGVuZFRleHQgPSBmdW5jdGlvbih0ZXh0KXtcbiAgICAgICAgICAgIHZhciBjaGFyX2NsYXNzX25hbWUgPSB0aGlzLm9wdGlvbnMuY2hhclNwYW5DbGFzc05hbWU7XG4gICAgICAgICAgICB2YXIgY2hhcl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgdmFyIGNoYXJfaWQgPSB0aGlzLl9nZW5lcmF0ZVVuaXF1ZUlEKCk7XG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuaWQgPSBjaGFyX2lkO1xuICAgICAgICAgICAgY2hhcl9lbGVtZW50LmNsYXNzTmFtZSA9IGNoYXJfY2xhc3NfbmFtZSArICcgZG9tLWFwcGVuZGVkJ1xuICAgICAgICAgICAgY2hhcl9lbGVtZW50LmlubmVySFRNTCA9IHRleHRcbiAgICAgICAgICAgIHZhciBpdGVtcyA9ICBbXVxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IGNoYXJfaWQsXG4gICAgICAgICAgICAgICAgZWw6IGNoYXJfZWxlbWVudFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheSA9IGl0ZW1zXG5cbiAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fdHlwaW5nQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzLCAxKSk7XG5cbiAgICB9XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fc3RhcnRDdXJzb3JBbmltYXRpb24gPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgY3Vyc29yID0gdGhpcy5vcHRpb25zLmN1cnNvcjtcblx0XHR2YXIgY3Vyc29yX2NsYXNzX25hbWUgPSB0aGlzLm9wdGlvbnMuY3Vyc29yQ2xhc3NOYW1lO1xuXG5cdFx0dmFyIGN1cnNvcl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdGN1cnNvcl9lbGVtZW50LmNsYXNzTmFtZSA9IGN1cnNvcl9jbGFzc19uYW1lO1xuXHRcdGN1cnNvcl9lbGVtZW50LmlubmVySFRNTCA9IGN1cnNvcjtcblxuXHRcdHRoaXMuZWwuYXBwZW5kQ2hpbGQoY3Vyc29yX2VsZW1lbnQpO1xuXHRcdGlmKHRoaXMub3B0aW9ucy5hbmltYXRlQ3Vyc29yKSB7XG5cdFx0XHR0aGlzLl9jdXJzb3JBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2N1cnNvckFuaW1hdGlvbkZyYW1lLmJpbmQodGhpcykpO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9wYXVzZUN1cnNvckFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKCF0aGlzLl9zZXR0aW5ncy5jdXJzb3JBbmltYXRpb25QYXVzZWQpIHtcblx0XHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9jdXJzb3JBbmltYXRpb24pO1xuXHRcdFx0dGhpcy5fc2V0dGluZ3MuY3Vyc29yQW5pbWF0aW9uUGF1c2VkID0gdHJ1ZTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcmVzdGFydEN1cnNvckFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKCF0aGlzLl9zZXR0aW5ncy5jdXJzb3JBbmltYXRpb25QYXVzZWQpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdDdXJzb3IgYW5pbWF0aW9uIGlzIGFscmVhZHkgcnVubmluZy4nKVxuXHRcdH1cblxuXHRcdHRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCA9IGZhbHNlO1xuXHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdH07XG5cblx0LyogVXRpbHMgKi9cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcmFuZG9tSW50ZWdlciA9IGZ1bmN0aW9uKG1pbiwgbWF4KSB7XG5cdFx0cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcmFuZG9tSUQgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgdGV4dCA9IFwiXCI7XG4gICAgXHR2YXIgcG9zc2libGUgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCI7XG5cbiAgICBcdGZvciggdmFyIGk9MDsgaSA8IHRoaXMuX3JhbmRvbUludGVnZXIoNSwgMTUpOyBpKysgKSB7XG4gICAgXHRcdHRleHQgKz0gcG9zc2libGUuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHBvc3NpYmxlLmxlbmd0aCkpO1xuXHRcdH1cbiAgICBcdHJldHVybiB0ZXh0O1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2dlbmVyYXRlVW5pcXVlSUQgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgdGVtcF9pZCA9IHRoaXMuX3JhbmRvbUlEKCk7XG5cdFx0aWYodGhpcy5fc2V0dGluZ3MudXNlZElEcy5pbmRleE9mKHRlbXBfaWQpID09IC0xKSB7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy51c2VkSURzLnB1c2godGVtcF9pZCk7XG5cdFx0XHRyZXR1cm4gdGVtcF9pZDtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2dlbmVyYXRlVW5pcXVlSUQuY2FsbCh0aGlzKTtcblx0fTtcblxuXG59KSgpOyIsIi8vISBtb21lbnQtdGltZXpvbmUuanNcbi8vISB2ZXJzaW9uIDogMC41LjE3XG4vLyEgQ29weXJpZ2h0IChjKSBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbi8vISBsaWNlbnNlIDogTUlUXG4vLyEgZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50LXRpbWV6b25lXG5cbihmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvKmdsb2JhbCBkZWZpbmUqL1xuXHRpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0ZGVmaW5lKFsnbW9tZW50J10sIGZhY3RvcnkpOyAgICAgICAgICAgICAgICAgLy8gQU1EXG5cdH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnbW9tZW50JykpOyAvLyBOb2RlXG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeShyb290Lm1vbWVudCk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnJvd3NlclxuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChtb21lbnQpIHtcblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0Ly8gRG8gbm90IGxvYWQgbW9tZW50LXRpbWV6b25lIGEgc2Vjb25kIHRpbWUuXG5cdC8vIGlmIChtb21lbnQudHogIT09IHVuZGVmaW5lZCkge1xuXHQvLyBcdGxvZ0Vycm9yKCdNb21lbnQgVGltZXpvbmUgJyArIG1vbWVudC50ei52ZXJzaW9uICsgJyB3YXMgYWxyZWFkeSBsb2FkZWQgJyArIChtb21lbnQudHouZGF0YVZlcnNpb24gPyAnd2l0aCBkYXRhIGZyb20gJyA6ICd3aXRob3V0IGFueSBkYXRhJykgKyBtb21lbnQudHouZGF0YVZlcnNpb24pO1xuXHQvLyBcdHJldHVybiBtb21lbnQ7XG5cdC8vIH1cblxuXHR2YXIgVkVSU0lPTiA9IFwiMC41LjE3XCIsXG5cdFx0em9uZXMgPSB7fSxcblx0XHRsaW5rcyA9IHt9LFxuXHRcdG5hbWVzID0ge30sXG5cdFx0Z3Vlc3NlcyA9IHt9LFxuXHRcdGNhY2hlZEd1ZXNzLFxuXG5cdFx0bW9tZW50VmVyc2lvbiA9IG1vbWVudC52ZXJzaW9uLnNwbGl0KCcuJyksXG5cdFx0bWFqb3IgPSArbW9tZW50VmVyc2lvblswXSxcblx0XHRtaW5vciA9ICttb21lbnRWZXJzaW9uWzFdO1xuXG5cdC8vIE1vbWVudC5qcyB2ZXJzaW9uIGNoZWNrXG5cdGlmIChtYWpvciA8IDIgfHwgKG1ham9yID09PSAyICYmIG1pbm9yIDwgNikpIHtcblx0XHRsb2dFcnJvcignTW9tZW50IFRpbWV6b25lIHJlcXVpcmVzIE1vbWVudC5qcyA+PSAyLjYuMC4gWW91IGFyZSB1c2luZyBNb21lbnQuanMgJyArIG1vbWVudC52ZXJzaW9uICsgJy4gU2VlIG1vbWVudGpzLmNvbScpO1xuXHR9XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdFVucGFja2luZ1xuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gY2hhckNvZGVUb0ludChjaGFyQ29kZSkge1xuXHRcdGlmIChjaGFyQ29kZSA+IDk2KSB7XG5cdFx0XHRyZXR1cm4gY2hhckNvZGUgLSA4Nztcblx0XHR9IGVsc2UgaWYgKGNoYXJDb2RlID4gNjQpIHtcblx0XHRcdHJldHVybiBjaGFyQ29kZSAtIDI5O1xuXHRcdH1cblx0XHRyZXR1cm4gY2hhckNvZGUgLSA0ODtcblx0fVxuXG5cdGZ1bmN0aW9uIHVucGFja0Jhc2U2MChzdHJpbmcpIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRwYXJ0cyA9IHN0cmluZy5zcGxpdCgnLicpLFxuXHRcdFx0d2hvbGUgPSBwYXJ0c1swXSxcblx0XHRcdGZyYWN0aW9uYWwgPSBwYXJ0c1sxXSB8fCAnJyxcblx0XHRcdG11bHRpcGxpZXIgPSAxLFxuXHRcdFx0bnVtLFxuXHRcdFx0b3V0ID0gMCxcblx0XHRcdHNpZ24gPSAxO1xuXG5cdFx0Ly8gaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnNcblx0XHRpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ1KSB7XG5cdFx0XHRpID0gMTtcblx0XHRcdHNpZ24gPSAtMTtcblx0XHR9XG5cblx0XHQvLyBoYW5kbGUgZGlnaXRzIGJlZm9yZSB0aGUgZGVjaW1hbFxuXHRcdGZvciAoaTsgaSA8IHdob2xlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRudW0gPSBjaGFyQ29kZVRvSW50KHdob2xlLmNoYXJDb2RlQXQoaSkpO1xuXHRcdFx0b3V0ID0gNjAgKiBvdXQgKyBudW07XG5cdFx0fVxuXG5cdFx0Ly8gaGFuZGxlIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbFxuXHRcdGZvciAoaSA9IDA7IGkgPCBmcmFjdGlvbmFsLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRtdWx0aXBsaWVyID0gbXVsdGlwbGllciAvIDYwO1xuXHRcdFx0bnVtID0gY2hhckNvZGVUb0ludChmcmFjdGlvbmFsLmNoYXJDb2RlQXQoaSkpO1xuXHRcdFx0b3V0ICs9IG51bSAqIG11bHRpcGxpZXI7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dCAqIHNpZ247XG5cdH1cblxuXHRmdW5jdGlvbiBhcnJheVRvSW50IChhcnJheSkge1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcblx0XHRcdGFycmF5W2ldID0gdW5wYWNrQmFzZTYwKGFycmF5W2ldKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBpbnRUb1VudGlsIChhcnJheSwgbGVuZ3RoKSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0YXJyYXlbaV0gPSBNYXRoLnJvdW5kKChhcnJheVtpIC0gMV0gfHwgMCkgKyAoYXJyYXlbaV0gKiA2MDAwMCkpOyAvLyBtaW51dGVzIHRvIG1pbGxpc2Vjb25kc1xuXHRcdH1cblxuXHRcdGFycmF5W2xlbmd0aCAtIDFdID0gSW5maW5pdHk7XG5cdH1cblxuXHRmdW5jdGlvbiBtYXBJbmRpY2VzIChzb3VyY2UsIGluZGljZXMpIHtcblx0XHR2YXIgb3V0ID0gW10sIGk7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0b3V0W2ldID0gc291cmNlW2luZGljZXNbaV1dO1xuXHRcdH1cblxuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHRmdW5jdGlvbiB1bnBhY2sgKHN0cmluZykge1xuXHRcdHZhciBkYXRhID0gc3RyaW5nLnNwbGl0KCd8JyksXG5cdFx0XHRvZmZzZXRzID0gZGF0YVsyXS5zcGxpdCgnICcpLFxuXHRcdFx0aW5kaWNlcyA9IGRhdGFbM10uc3BsaXQoJycpLFxuXHRcdFx0dW50aWxzICA9IGRhdGFbNF0uc3BsaXQoJyAnKTtcblxuXHRcdGFycmF5VG9JbnQob2Zmc2V0cyk7XG5cdFx0YXJyYXlUb0ludChpbmRpY2VzKTtcblx0XHRhcnJheVRvSW50KHVudGlscyk7XG5cblx0XHRpbnRUb1VudGlsKHVudGlscywgaW5kaWNlcy5sZW5ndGgpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWUgICAgICAgOiBkYXRhWzBdLFxuXHRcdFx0YWJicnMgICAgICA6IG1hcEluZGljZXMoZGF0YVsxXS5zcGxpdCgnICcpLCBpbmRpY2VzKSxcblx0XHRcdG9mZnNldHMgICAgOiBtYXBJbmRpY2VzKG9mZnNldHMsIGluZGljZXMpLFxuXHRcdFx0dW50aWxzICAgICA6IHVudGlscyxcblx0XHRcdHBvcHVsYXRpb24gOiBkYXRhWzVdIHwgMFxuXHRcdH07XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0Wm9uZSBvYmplY3Rcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIFpvbmUgKHBhY2tlZFN0cmluZykge1xuXHRcdGlmIChwYWNrZWRTdHJpbmcpIHtcblx0XHRcdHRoaXMuX3NldCh1bnBhY2socGFja2VkU3RyaW5nKSk7XG5cdFx0fVxuXHR9XG5cblx0Wm9uZS5wcm90b3R5cGUgPSB7XG5cdFx0X3NldCA6IGZ1bmN0aW9uICh1bnBhY2tlZCkge1xuXHRcdFx0dGhpcy5uYW1lICAgICAgID0gdW5wYWNrZWQubmFtZTtcblx0XHRcdHRoaXMuYWJicnMgICAgICA9IHVucGFja2VkLmFiYnJzO1xuXHRcdFx0dGhpcy51bnRpbHMgICAgID0gdW5wYWNrZWQudW50aWxzO1xuXHRcdFx0dGhpcy5vZmZzZXRzICAgID0gdW5wYWNrZWQub2Zmc2V0cztcblx0XHRcdHRoaXMucG9wdWxhdGlvbiA9IHVucGFja2VkLnBvcHVsYXRpb247XG5cdFx0fSxcblxuXHRcdF9pbmRleCA6IGZ1bmN0aW9uICh0aW1lc3RhbXApIHtcblx0XHRcdHZhciB0YXJnZXQgPSArdGltZXN0YW1wLFxuXHRcdFx0XHR1bnRpbHMgPSB0aGlzLnVudGlscyxcblx0XHRcdFx0aTtcblxuXHRcdFx0Zm9yIChpID0gMDsgaSA8IHVudGlscy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAodGFyZ2V0IDwgdW50aWxzW2ldKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0cGFyc2UgOiBmdW5jdGlvbiAodGltZXN0YW1wKSB7XG5cdFx0XHR2YXIgdGFyZ2V0ICA9ICt0aW1lc3RhbXAsXG5cdFx0XHRcdG9mZnNldHMgPSB0aGlzLm9mZnNldHMsXG5cdFx0XHRcdHVudGlscyAgPSB0aGlzLnVudGlscyxcblx0XHRcdFx0bWF4ICAgICA9IHVudGlscy5sZW5ndGggLSAxLFxuXHRcdFx0XHRvZmZzZXQsIG9mZnNldE5leHQsIG9mZnNldFByZXYsIGk7XG5cblx0XHRcdGZvciAoaSA9IDA7IGkgPCBtYXg7IGkrKykge1xuXHRcdFx0XHRvZmZzZXQgICAgID0gb2Zmc2V0c1tpXTtcblx0XHRcdFx0b2Zmc2V0TmV4dCA9IG9mZnNldHNbaSArIDFdO1xuXHRcdFx0XHRvZmZzZXRQcmV2ID0gb2Zmc2V0c1tpID8gaSAtIDEgOiBpXTtcblxuXHRcdFx0XHRpZiAob2Zmc2V0IDwgb2Zmc2V0TmV4dCAmJiB0ei5tb3ZlQW1iaWd1b3VzRm9yd2FyZCkge1xuXHRcdFx0XHRcdG9mZnNldCA9IG9mZnNldE5leHQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAob2Zmc2V0ID4gb2Zmc2V0UHJldiAmJiB0ei5tb3ZlSW52YWxpZEZvcndhcmQpIHtcblx0XHRcdFx0XHRvZmZzZXQgPSBvZmZzZXRQcmV2O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHRhcmdldCA8IHVudGlsc1tpXSAtIChvZmZzZXQgKiA2MDAwMCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gb2Zmc2V0c1tpXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gb2Zmc2V0c1ttYXhdO1xuXHRcdH0sXG5cblx0XHRhYmJyIDogZnVuY3Rpb24gKG1vbSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYWJicnNbdGhpcy5faW5kZXgobW9tKV07XG5cdFx0fSxcblxuXHRcdG9mZnNldCA6IGZ1bmN0aW9uIChtb20pIHtcblx0XHRcdGxvZ0Vycm9yKFwiem9uZS5vZmZzZXQgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB6b25lLnV0Y09mZnNldFwiKTtcblx0XHRcdHJldHVybiB0aGlzLm9mZnNldHNbdGhpcy5faW5kZXgobW9tKV07XG5cdFx0fSxcblxuXHRcdHV0Y09mZnNldCA6IGZ1bmN0aW9uIChtb20pIHtcblx0XHRcdHJldHVybiB0aGlzLm9mZnNldHNbdGhpcy5faW5kZXgobW9tKV07XG5cdFx0fVxuXHR9O1xuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRDdXJyZW50IFRpbWV6b25lXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRmdW5jdGlvbiBPZmZzZXRBdChhdCkge1xuXHRcdHZhciB0aW1lU3RyaW5nID0gYXQudG9UaW1lU3RyaW5nKCk7XG5cdFx0dmFyIGFiYnIgPSB0aW1lU3RyaW5nLm1hdGNoKC9cXChbYS16IF0rXFwpL2kpO1xuXHRcdGlmIChhYmJyICYmIGFiYnJbMF0pIHtcblx0XHRcdC8vIDE3OjU2OjMxIEdNVC0wNjAwIChDU1QpXG5cdFx0XHQvLyAxNzo1NjozMSBHTVQtMDYwMCAoQ2VudHJhbCBTdGFuZGFyZCBUaW1lKVxuXHRcdFx0YWJiciA9IGFiYnJbMF0ubWF0Y2goL1tBLVpdL2cpO1xuXHRcdFx0YWJiciA9IGFiYnIgPyBhYmJyLmpvaW4oJycpIDogdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyAxNzo1NjozMSBDU1Rcblx0XHRcdC8vIDE3OjU2OjMxIEdNVCswODAwICjlj7DljJfmqJnmupbmmYLplpMpXG5cdFx0XHRhYmJyID0gdGltZVN0cmluZy5tYXRjaCgvW0EtWl17Myw1fS9nKTtcblx0XHRcdGFiYnIgPSBhYmJyID8gYWJiclswXSA6IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRpZiAoYWJiciA9PT0gJ0dNVCcpIHtcblx0XHRcdGFiYnIgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0dGhpcy5hdCA9ICthdDtcblx0XHR0aGlzLmFiYnIgPSBhYmJyO1xuXHRcdHRoaXMub2Zmc2V0ID0gYXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtcblx0fVxuXG5cdGZ1bmN0aW9uIFpvbmVTY29yZSh6b25lKSB7XG5cdFx0dGhpcy56b25lID0gem9uZTtcblx0XHR0aGlzLm9mZnNldFNjb3JlID0gMDtcblx0XHR0aGlzLmFiYnJTY29yZSA9IDA7XG5cdH1cblxuXHRab25lU2NvcmUucHJvdG90eXBlLnNjb3JlT2Zmc2V0QXQgPSBmdW5jdGlvbiAob2Zmc2V0QXQpIHtcblx0XHR0aGlzLm9mZnNldFNjb3JlICs9IE1hdGguYWJzKHRoaXMuem9uZS51dGNPZmZzZXQob2Zmc2V0QXQuYXQpIC0gb2Zmc2V0QXQub2Zmc2V0KTtcblx0XHRpZiAodGhpcy56b25lLmFiYnIob2Zmc2V0QXQuYXQpLnJlcGxhY2UoL1teQS1aXS9nLCAnJykgIT09IG9mZnNldEF0LmFiYnIpIHtcblx0XHRcdHRoaXMuYWJiclNjb3JlKys7XG5cdFx0fVxuXHR9O1xuXG5cdGZ1bmN0aW9uIGZpbmRDaGFuZ2UobG93LCBoaWdoKSB7XG5cdFx0dmFyIG1pZCwgZGlmZjtcblxuXHRcdHdoaWxlICgoZGlmZiA9ICgoaGlnaC5hdCAtIGxvdy5hdCkgLyAxMmU0IHwgMCkgKiA2ZTQpKSB7XG5cdFx0XHRtaWQgPSBuZXcgT2Zmc2V0QXQobmV3IERhdGUobG93LmF0ICsgZGlmZikpO1xuXHRcdFx0aWYgKG1pZC5vZmZzZXQgPT09IGxvdy5vZmZzZXQpIHtcblx0XHRcdFx0bG93ID0gbWlkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aGlnaCA9IG1pZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbG93O1xuXHR9XG5cblx0ZnVuY3Rpb24gdXNlck9mZnNldHMoKSB7XG5cdFx0dmFyIHN0YXJ0WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDIsXG5cdFx0XHRsYXN0ID0gbmV3IE9mZnNldEF0KG5ldyBEYXRlKHN0YXJ0WWVhciwgMCwgMSkpLFxuXHRcdFx0b2Zmc2V0cyA9IFtsYXN0XSxcblx0XHRcdGNoYW5nZSwgbmV4dCwgaTtcblxuXHRcdGZvciAoaSA9IDE7IGkgPCA0ODsgaSsrKSB7XG5cdFx0XHRuZXh0ID0gbmV3IE9mZnNldEF0KG5ldyBEYXRlKHN0YXJ0WWVhciwgaSwgMSkpO1xuXHRcdFx0aWYgKG5leHQub2Zmc2V0ICE9PSBsYXN0Lm9mZnNldCkge1xuXHRcdFx0XHRjaGFuZ2UgPSBmaW5kQ2hhbmdlKGxhc3QsIG5leHQpO1xuXHRcdFx0XHRvZmZzZXRzLnB1c2goY2hhbmdlKTtcblx0XHRcdFx0b2Zmc2V0cy5wdXNoKG5ldyBPZmZzZXRBdChuZXcgRGF0ZShjaGFuZ2UuYXQgKyA2ZTQpKSk7XG5cdFx0XHR9XG5cdFx0XHRsYXN0ID0gbmV4dDtcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdFx0XHRvZmZzZXRzLnB1c2gobmV3IE9mZnNldEF0KG5ldyBEYXRlKHN0YXJ0WWVhciArIGksIDAsIDEpKSk7XG5cdFx0XHRvZmZzZXRzLnB1c2gobmV3IE9mZnNldEF0KG5ldyBEYXRlKHN0YXJ0WWVhciArIGksIDYsIDEpKSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9mZnNldHM7XG5cdH1cblxuXHRmdW5jdGlvbiBzb3J0Wm9uZVNjb3JlcyAoYSwgYikge1xuXHRcdGlmIChhLm9mZnNldFNjb3JlICE9PSBiLm9mZnNldFNjb3JlKSB7XG5cdFx0XHRyZXR1cm4gYS5vZmZzZXRTY29yZSAtIGIub2Zmc2V0U2NvcmU7XG5cdFx0fVxuXHRcdGlmIChhLmFiYnJTY29yZSAhPT0gYi5hYmJyU2NvcmUpIHtcblx0XHRcdHJldHVybiBhLmFiYnJTY29yZSAtIGIuYWJiclNjb3JlO1xuXHRcdH1cblx0XHRyZXR1cm4gYi56b25lLnBvcHVsYXRpb24gLSBhLnpvbmUucG9wdWxhdGlvbjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZFRvR3Vlc3NlcyAobmFtZSwgb2Zmc2V0cykge1xuXHRcdHZhciBpLCBvZmZzZXQ7XG5cdFx0YXJyYXlUb0ludChvZmZzZXRzKTtcblx0XHRmb3IgKGkgPSAwOyBpIDwgb2Zmc2V0cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0b2Zmc2V0ID0gb2Zmc2V0c1tpXTtcblx0XHRcdGd1ZXNzZXNbb2Zmc2V0XSA9IGd1ZXNzZXNbb2Zmc2V0XSB8fCB7fTtcblx0XHRcdGd1ZXNzZXNbb2Zmc2V0XVtuYW1lXSA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gZ3Vlc3Nlc0ZvclVzZXJPZmZzZXRzIChvZmZzZXRzKSB7XG5cdFx0dmFyIG9mZnNldHNMZW5ndGggPSBvZmZzZXRzLmxlbmd0aCxcblx0XHRcdGZpbHRlcmVkR3Vlc3NlcyA9IHt9LFxuXHRcdFx0b3V0ID0gW10sXG5cdFx0XHRpLCBqLCBndWVzc2VzT2Zmc2V0O1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IG9mZnNldHNMZW5ndGg7IGkrKykge1xuXHRcdFx0Z3Vlc3Nlc09mZnNldCA9IGd1ZXNzZXNbb2Zmc2V0c1tpXS5vZmZzZXRdIHx8IHt9O1xuXHRcdFx0Zm9yIChqIGluIGd1ZXNzZXNPZmZzZXQpIHtcblx0XHRcdFx0aWYgKGd1ZXNzZXNPZmZzZXQuaGFzT3duUHJvcGVydHkoaikpIHtcblx0XHRcdFx0XHRmaWx0ZXJlZEd1ZXNzZXNbal0gPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChpIGluIGZpbHRlcmVkR3Vlc3Nlcykge1xuXHRcdFx0aWYgKGZpbHRlcmVkR3Vlc3Nlcy5oYXNPd25Qcm9wZXJ0eShpKSkge1xuXHRcdFx0XHRvdXQucHVzaChuYW1lc1tpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdGZ1bmN0aW9uIHJlYnVpbGRHdWVzcyAoKSB7XG5cblx0XHQvLyB1c2UgSW50bCBBUEkgd2hlbiBhdmFpbGFibGUgYW5kIHJldHVybmluZyB2YWxpZCB0aW1lIHpvbmVcblx0XHR0cnkge1xuXHRcdFx0dmFyIGludGxOYW1lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuXHRcdFx0aWYgKGludGxOYW1lICYmIGludGxOYW1lLmxlbmd0aCA+IDMpIHtcblx0XHRcdFx0dmFyIG5hbWUgPSBuYW1lc1tub3JtYWxpemVOYW1lKGludGxOYW1lKV07XG5cdFx0XHRcdGlmIChuYW1lKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0bG9nRXJyb3IoXCJNb21lbnQgVGltZXpvbmUgZm91bmQgXCIgKyBpbnRsTmFtZSArIFwiIGZyb20gdGhlIEludGwgYXBpLCBidXQgZGlkIG5vdCBoYXZlIHRoYXQgZGF0YSBsb2FkZWQuXCIpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdC8vIEludGwgdW5hdmFpbGFibGUsIGZhbGwgYmFjayB0byBtYW51YWwgZ3Vlc3NpbmcuXG5cdFx0fVxuXG5cdFx0dmFyIG9mZnNldHMgPSB1c2VyT2Zmc2V0cygpLFxuXHRcdFx0b2Zmc2V0c0xlbmd0aCA9IG9mZnNldHMubGVuZ3RoLFxuXHRcdFx0Z3Vlc3NlcyA9IGd1ZXNzZXNGb3JVc2VyT2Zmc2V0cyhvZmZzZXRzKSxcblx0XHRcdHpvbmVTY29yZXMgPSBbXSxcblx0XHRcdHpvbmVTY29yZSwgaSwgajtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBndWVzc2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR6b25lU2NvcmUgPSBuZXcgWm9uZVNjb3JlKGdldFpvbmUoZ3Vlc3Nlc1tpXSksIG9mZnNldHNMZW5ndGgpO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IG9mZnNldHNMZW5ndGg7IGorKykge1xuXHRcdFx0XHR6b25lU2NvcmUuc2NvcmVPZmZzZXRBdChvZmZzZXRzW2pdKTtcblx0XHRcdH1cblx0XHRcdHpvbmVTY29yZXMucHVzaCh6b25lU2NvcmUpO1xuXHRcdH1cblxuXHRcdHpvbmVTY29yZXMuc29ydChzb3J0Wm9uZVNjb3Jlcyk7XG5cblx0XHRyZXR1cm4gem9uZVNjb3Jlcy5sZW5ndGggPiAwID8gem9uZVNjb3Jlc1swXS56b25lLm5hbWUgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRmdW5jdGlvbiBndWVzcyAoaWdub3JlQ2FjaGUpIHtcblx0XHRpZiAoIWNhY2hlZEd1ZXNzIHx8IGlnbm9yZUNhY2hlKSB7XG5cdFx0XHRjYWNoZWRHdWVzcyA9IHJlYnVpbGRHdWVzcygpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2FjaGVkR3Vlc3M7XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0R2xvYmFsIE1ldGhvZHNcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUgKG5hbWUpIHtcblx0XHRyZXR1cm4gKG5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFwvL2csICdfJyk7XG5cdH1cblxuXHRmdW5jdGlvbiBhZGRab25lIChwYWNrZWQpIHtcblx0XHR2YXIgaSwgbmFtZSwgc3BsaXQsIG5vcm1hbGl6ZWQ7XG5cblx0XHRpZiAodHlwZW9mIHBhY2tlZCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0cGFja2VkID0gW3BhY2tlZF07XG5cdFx0fVxuXG5cdFx0Zm9yIChpID0gMDsgaSA8IHBhY2tlZC5sZW5ndGg7IGkrKykge1xuXHRcdFx0c3BsaXQgPSBwYWNrZWRbaV0uc3BsaXQoJ3wnKTtcblx0XHRcdG5hbWUgPSBzcGxpdFswXTtcblx0XHRcdG5vcm1hbGl6ZWQgPSBub3JtYWxpemVOYW1lKG5hbWUpO1xuXHRcdFx0em9uZXNbbm9ybWFsaXplZF0gPSBwYWNrZWRbaV07XG5cdFx0XHRuYW1lc1tub3JtYWxpemVkXSA9IG5hbWU7XG5cdFx0XHRhZGRUb0d1ZXNzZXMobm9ybWFsaXplZCwgc3BsaXRbMl0uc3BsaXQoJyAnKSk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0Wm9uZSAobmFtZSwgY2FsbGVyKSB7XG5cdFx0bmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG5cblx0XHR2YXIgem9uZSA9IHpvbmVzW25hbWVdO1xuXHRcdHZhciBsaW5rO1xuXG5cdFx0aWYgKHpvbmUgaW5zdGFuY2VvZiBab25lKSB7XG5cdFx0XHRyZXR1cm4gem9uZTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIHpvbmUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHR6b25lID0gbmV3IFpvbmUoem9uZSk7XG5cdFx0XHR6b25lc1tuYW1lXSA9IHpvbmU7XG5cdFx0XHRyZXR1cm4gem9uZTtcblx0XHR9XG5cblx0XHQvLyBQYXNzIGdldFpvbmUgdG8gcHJldmVudCByZWN1cnNpb24gbW9yZSB0aGFuIDEgbGV2ZWwgZGVlcFxuXHRcdGlmIChsaW5rc1tuYW1lXSAmJiBjYWxsZXIgIT09IGdldFpvbmUgJiYgKGxpbmsgPSBnZXRab25lKGxpbmtzW25hbWVdLCBnZXRab25lKSkpIHtcblx0XHRcdHpvbmUgPSB6b25lc1tuYW1lXSA9IG5ldyBab25lKCk7XG5cdFx0XHR6b25lLl9zZXQobGluayk7XG5cdFx0XHR6b25lLm5hbWUgPSBuYW1lc1tuYW1lXTtcblx0XHRcdHJldHVybiB6b25lO1xuXHRcdH1cblxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0TmFtZXMgKCkge1xuXHRcdHZhciBpLCBvdXQgPSBbXTtcblxuXHRcdGZvciAoaSBpbiBuYW1lcykge1xuXHRcdFx0aWYgKG5hbWVzLmhhc093blByb3BlcnR5KGkpICYmICh6b25lc1tpXSB8fCB6b25lc1tsaW5rc1tpXV0pICYmIG5hbWVzW2ldKSB7XG5cdFx0XHRcdG91dC5wdXNoKG5hbWVzW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0LnNvcnQoKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZExpbmsgKGFsaWFzZXMpIHtcblx0XHR2YXIgaSwgYWxpYXMsIG5vcm1hbDAsIG5vcm1hbDE7XG5cblx0XHRpZiAodHlwZW9mIGFsaWFzZXMgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGFsaWFzZXMgPSBbYWxpYXNlc107XG5cdFx0fVxuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGFsaWFzZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGFsaWFzID0gYWxpYXNlc1tpXS5zcGxpdCgnfCcpO1xuXG5cdFx0XHRub3JtYWwwID0gbm9ybWFsaXplTmFtZShhbGlhc1swXSk7XG5cdFx0XHRub3JtYWwxID0gbm9ybWFsaXplTmFtZShhbGlhc1sxXSk7XG5cblx0XHRcdGxpbmtzW25vcm1hbDBdID0gbm9ybWFsMTtcblx0XHRcdG5hbWVzW25vcm1hbDBdID0gYWxpYXNbMF07XG5cblx0XHRcdGxpbmtzW25vcm1hbDFdID0gbm9ybWFsMDtcblx0XHRcdG5hbWVzW25vcm1hbDFdID0gYWxpYXNbMV07XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gbG9hZERhdGEgKGRhdGEpIHtcblx0XHRhZGRab25lKGRhdGEuem9uZXMpO1xuXHRcdGFkZExpbmsoZGF0YS5saW5rcyk7XG5cdFx0dHouZGF0YVZlcnNpb24gPSBkYXRhLnZlcnNpb247XG5cdH1cblxuXHRmdW5jdGlvbiB6b25lRXhpc3RzIChuYW1lKSB7XG5cdFx0aWYgKCF6b25lRXhpc3RzLmRpZFNob3dFcnJvcikge1xuXHRcdFx0em9uZUV4aXN0cy5kaWRTaG93RXJyb3IgPSB0cnVlO1xuXHRcdFx0XHRsb2dFcnJvcihcIm1vbWVudC50ei56b25lRXhpc3RzKCdcIiArIG5hbWUgKyBcIicpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgIW1vbWVudC50ei56b25lKCdcIiArIG5hbWUgKyBcIicpXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gISFnZXRab25lKG5hbWUpO1xuXHR9XG5cblx0ZnVuY3Rpb24gbmVlZHNPZmZzZXQgKG0pIHtcblx0XHR2YXIgaXNVbml4VGltZXN0YW1wID0gKG0uX2YgPT09ICdYJyB8fCBtLl9mID09PSAneCcpO1xuXHRcdHJldHVybiAhIShtLl9hICYmIChtLl90em0gPT09IHVuZGVmaW5lZCkgJiYgIWlzVW5peFRpbWVzdGFtcCk7XG5cdH1cblxuXHRmdW5jdGlvbiBsb2dFcnJvciAobWVzc2FnZSkge1xuXHRcdGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdG1vbWVudC50eiBuYW1lc3BhY2Vcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIHR6IChpbnB1dCkge1xuXHRcdHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwLCAtMSksXG5cdFx0XHRuYW1lID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXSxcblx0XHRcdHpvbmUgPSBnZXRab25lKG5hbWUpLFxuXHRcdFx0b3V0ICA9IG1vbWVudC51dGMuYXBwbHkobnVsbCwgYXJncyk7XG5cblx0XHRpZiAoem9uZSAmJiAhbW9tZW50LmlzTW9tZW50KGlucHV0KSAmJiBuZWVkc09mZnNldChvdXQpKSB7XG5cdFx0XHRvdXQuYWRkKHpvbmUucGFyc2Uob3V0KSwgJ21pbnV0ZXMnKTtcblx0XHR9XG5cblx0XHRvdXQudHoobmFtZSk7XG5cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0dHoudmVyc2lvbiAgICAgID0gVkVSU0lPTjtcblx0dHouZGF0YVZlcnNpb24gID0gJyc7XG5cdHR6Ll96b25lcyAgICAgICA9IHpvbmVzO1xuXHR0ei5fbGlua3MgICAgICAgPSBsaW5rcztcblx0dHouX25hbWVzICAgICAgID0gbmFtZXM7XG5cdHR6LmFkZCAgICAgICAgICA9IGFkZFpvbmU7XG5cdHR6LmxpbmsgICAgICAgICA9IGFkZExpbms7XG5cdHR6LmxvYWQgICAgICAgICA9IGxvYWREYXRhO1xuXHR0ei56b25lICAgICAgICAgPSBnZXRab25lO1xuXHR0ei56b25lRXhpc3RzICAgPSB6b25lRXhpc3RzOyAvLyBkZXByZWNhdGVkIGluIDAuMS4wXG5cdHR6Lmd1ZXNzICAgICAgICA9IGd1ZXNzO1xuXHR0ei5uYW1lcyAgICAgICAgPSBnZXROYW1lcztcblx0dHouWm9uZSAgICAgICAgID0gWm9uZTtcblx0dHoudW5wYWNrICAgICAgID0gdW5wYWNrO1xuXHR0ei51bnBhY2tCYXNlNjAgPSB1bnBhY2tCYXNlNjA7XG5cdHR6Lm5lZWRzT2Zmc2V0ICA9IG5lZWRzT2Zmc2V0O1xuXHR0ei5tb3ZlSW52YWxpZEZvcndhcmQgICA9IHRydWU7XG5cdHR6Lm1vdmVBbWJpZ3VvdXNGb3J3YXJkID0gZmFsc2U7XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdEludGVyZmFjZSB3aXRoIE1vbWVudC5qc1xuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0dmFyIGZuID0gbW9tZW50LmZuO1xuXG5cdG1vbWVudC50eiA9IHR6O1xuXG5cdG1vbWVudC5kZWZhdWx0Wm9uZSA9IG51bGw7XG5cblx0bW9tZW50LnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uIChtb20sIGtlZXBUaW1lKSB7XG5cdFx0dmFyIHpvbmUgPSBtb21lbnQuZGVmYXVsdFpvbmUsXG5cdFx0XHRvZmZzZXQ7XG5cblx0XHRpZiAobW9tLl96ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICh6b25lICYmIG5lZWRzT2Zmc2V0KG1vbSkgJiYgIW1vbS5faXNVVEMpIHtcblx0XHRcdFx0bW9tLl9kID0gbW9tZW50LnV0Yyhtb20uX2EpLl9kO1xuXHRcdFx0XHRtb20udXRjKCkuYWRkKHpvbmUucGFyc2UobW9tKSwgJ21pbnV0ZXMnKTtcblx0XHRcdH1cblx0XHRcdG1vbS5feiA9IHpvbmU7XG5cdFx0fVxuXHRcdGlmIChtb20uX3opIHtcblx0XHRcdG9mZnNldCA9IG1vbS5fei51dGNPZmZzZXQobW9tKTtcblx0XHRcdGlmIChNYXRoLmFicyhvZmZzZXQpIDwgMTYpIHtcblx0XHRcdFx0b2Zmc2V0ID0gb2Zmc2V0IC8gNjA7XG5cdFx0XHR9XG5cdFx0XHRpZiAobW9tLnV0Y09mZnNldCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdG1vbS51dGNPZmZzZXQoLW9mZnNldCwga2VlcFRpbWUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bW9tLnpvbmUob2Zmc2V0LCBrZWVwVGltZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdGZuLnR6ID0gZnVuY3Rpb24gKG5hbWUsIGtlZXBUaW1lKSB7XG5cdFx0aWYgKG5hbWUpIHtcblx0XHRcdHRoaXMuX3ogPSBnZXRab25lKG5hbWUpO1xuXHRcdFx0aWYgKHRoaXMuX3opIHtcblx0XHRcdFx0bW9tZW50LnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dFcnJvcihcIk1vbWVudCBUaW1lem9uZSBoYXMgbm8gZGF0YSBmb3IgXCIgKyBuYW1lICsgXCIuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL3RpbWV6b25lL2RvY3MvIy9kYXRhLWxvYWRpbmcvLlwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAodGhpcy5feikgeyByZXR1cm4gdGhpcy5fei5uYW1lOyB9XG5cdH07XG5cblx0ZnVuY3Rpb24gYWJicldyYXAgKG9sZCkge1xuXHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRpZiAodGhpcy5feikgeyByZXR1cm4gdGhpcy5fei5hYmJyKHRoaXMpOyB9XG5cdFx0XHRyZXR1cm4gb2xkLmNhbGwodGhpcyk7XG5cdFx0fTtcblx0fVxuXG5cdGZ1bmN0aW9uIHJlc2V0Wm9uZVdyYXAgKG9sZCkge1xuXHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHR0aGlzLl96ID0gbnVsbDtcblx0XHRcdHJldHVybiBvbGQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHR9O1xuXHR9XG5cblx0Zm4uem9uZU5hbWUgPSBhYmJyV3JhcChmbi56b25lTmFtZSk7XG5cdGZuLnpvbmVBYmJyID0gYWJicldyYXAoZm4uem9uZUFiYnIpO1xuXHRmbi51dGMgICAgICA9IHJlc2V0Wm9uZVdyYXAoZm4udXRjKTtcblxuXHRtb21lbnQudHouc2V0RGVmYXVsdCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0XHRpZiAobWFqb3IgPCAyIHx8IChtYWpvciA9PT0gMiAmJiBtaW5vciA8IDkpKSB7XG5cdFx0XHRsb2dFcnJvcignTW9tZW50IFRpbWV6b25lIHNldERlZmF1bHQoKSByZXF1aXJlcyBNb21lbnQuanMgPj0gMi45LjAuIFlvdSBhcmUgdXNpbmcgTW9tZW50LmpzICcgKyBtb21lbnQudmVyc2lvbiArICcuJyk7XG5cdFx0fVxuXHRcdG1vbWVudC5kZWZhdWx0Wm9uZSA9IG5hbWUgPyBnZXRab25lKG5hbWUpIDogbnVsbDtcblx0XHRyZXR1cm4gbW9tZW50O1xuXHR9O1xuXG5cdC8vIENsb25pbmcgYSBtb21lbnQgc2hvdWxkIGluY2x1ZGUgdGhlIF96IHByb3BlcnR5LlxuXHR2YXIgbW9tZW50UHJvcGVydGllcyA9IG1vbWVudC5tb21lbnRQcm9wZXJ0aWVzO1xuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1vbWVudFByb3BlcnRpZXMpID09PSAnW29iamVjdCBBcnJheV0nKSB7XG5cdFx0Ly8gbW9tZW50IDIuOC4xK1xuXHRcdG1vbWVudFByb3BlcnRpZXMucHVzaCgnX3onKTtcblx0XHRtb21lbnRQcm9wZXJ0aWVzLnB1c2goJ19hJyk7XG5cdH0gZWxzZSBpZiAobW9tZW50UHJvcGVydGllcykge1xuXHRcdC8vIG1vbWVudCAyLjcuMFxuXHRcdG1vbWVudFByb3BlcnRpZXMuX3ogPSBudWxsO1xuXHR9XG5cblx0bG9hZERhdGEoe1xuXHRcdFwidmVyc2lvblwiOiBcIjIwMThlXCIsXG5cdFx0XCJ6b25lc1wiOiBbXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufExNVCBHTVR8Zy44IDB8MDF8LTJsZFhILlF8NDhlNVwiLFxuXHRcdFx0XCJBZnJpY2EvQWNjcmF8TE1UIEdNVCArMDAyMHwuUSAwIC1rfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCYlguOCA2dHpYLjggTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FfDQxZTVcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8TE1UIEVBVCArMDIzMCArMDI0NXwtMnIuZyAtMzAgLTJ1IC0ySnwwMTIzMXwtMUYzQ3IuZyAzRHpyLmcgb2tNdSBNRlhKfDQ3ZTVcIixcblx0XHRcdFwiQWZyaWNhL0FsZ2llcnN8UE1UIFdFVCBXRVNUIENFVCBDRVNUfC05LmwgMCAtMTAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMzQzNDMxMzEyMTIzNDMxMjEzfC0ybmNvOS5sIGNOYjkubCBIQTAgMTlBMCAxaU0wIDExYzAgMW9vMCBXbzAgMXJjMCBRTTAgMUVNMCBVTTAgREEwIEltbzAgcmQwIERlMCA5WHowIDFmYjAgMWFwMCAxNkswIDJ5bzAgbUVwMCBod0wwIGp4QTAgMTFBMCBkRGQwIDE3YjAgMTFCMCAxY04wIDJEeTAgMWNOMCAxZkIwIDFjTDB8MjZlNVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8TE1UIFdBVHwtZC5BIC0xMHwwMXwtMjJ5MGQuQXwxN2U2XCIsXG5cdFx0XHRcIkFmcmljYS9CaXNzYXV8TE1UIC0wMSBHTVR8MTIuayAxMCAwfDAxMnwtMmxkWDAgMnhvbzB8MzllNFwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfExNVCBDQVR8LTJhLmsgLTIwfDAxfC0yR0plYS5rfDI2ZTVcIixcblx0XHRcdFwiQWZyaWNhL0NhaXJvfEVFVCBFRVNUfC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMWJJTzAgdmIwIDFpcDAgMTF6MCAxaU4wIDFuejAgMTJwMCAxcHowIDEwTjAgMXB6MCAxNnAwIDFqejAgczNkMCBWejAgMW9OMCAxMWIwIDFvTzAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMVdMMCByZDAgMVJ6MCB3cDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxcUwwIFhkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFueTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCBXTDAgMXFOMCBSYjAgMXdwMCBPbjAgMXpkMCBMejAgMUVOMCBGYjAgYzEwIDhuMCA4TmQwIGdMMCBlMTAgbW4wfDE1ZTZcIixcblx0XHRcdFwiQWZyaWNhL0Nhc2FibGFuY2F8TE1UIFdFVCBXRVNUIENFVHx1LmsgMCAtMTAgLTEwfDAxMjEyMTIxMjEyMTIxMjEyMTMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnTW50LkUgMTMwTHQuRSByYjAgRGQwIGRWYjAgYjZwMCBUWDAgRW9CMCBMTDAgZ25kMCByejAgNDNkMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgZEVwMCA0bW4wIFN5TjAgQUwwIDFOZDAgd24wIDFGQjAgRGIwIDF6ZDAgTHowIDFOZjAgd00wIGNvMCBnbzAgMW8wMCBzMDAgZEEwIHZjMCAxMUEwIEEwMCBlMDAgeTAwIDExQTAgdU0wIGUwMCBEYzAgMTFBMCBzMDAgZTAwIElNMCBXTTAgbW8wIGdNMCBMQTAgV00wIGpBMCBlMDAgUmMwIDExQTAgZTAwIGUwMCBVMDAgMTFBMCA4bzAgZTAwIDExQTAgMTFBMCA1QTAgZTAwIDE3YzAgMWZBMCAxYTAwIDFhMDAgMWZBMCAxN2MwIDFpbzAgMTRvMCAxbGMwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbGMwIDE0bzAgMWZBMHwzMmU1XCIsXG5cdFx0XHRcIkFmcmljYS9DZXV0YXxXRVQgV0VTVCBDRVQgQ0VTVHwwIC0xMCAtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjVLTjAgMTF6MCBkcmQwIDE4cDAgM0hYMCAxN2QwIDFmejAgMWExMCAxaW8wIDFhMDAgMXk3bzAgTEwwIGduZDAgcnowIDQzZDAgQUwwIDFOZDAgWFgwIDFDcDAgcHowIGRFcDAgNFZCMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8ODVlM1wiLFxuXHRcdFx0XCJBZnJpY2EvRWxfQWFpdW58TE1UIC0wMSBXRVQgV0VTVHxRLk0gMTAgMCAtMTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFyRHo3LmMgMUdWQTcuYyA2TDAgQUwwIDFOZDAgWFgwIDFDcDAgcHowIDFjQkIwIEFMMCAxTmQwIHduMCAxRkIwIERiMCAxemQwIEx6MCAxTmYwIHdNMCBjbzAgZ28wIDFvMDAgczAwIGRBMCB2YzAgMTFBMCBBMDAgZTAwIHkwMCAxMUEwIHVNMCBlMDAgRGMwIDExQTAgczAwIGUwMCBJTTAgV00wIG1vMCBnTTAgTEEwIFdNMCBqQTAgZTAwIFJjMCAxMUEwIGUwMCBlMDAgVTAwIDExQTAgOG8wIGUwMCAxMUEwIDExQTAgNUEwIGUwMCAxN2MwIDFmQTAgMWEwMCAxYTAwIDFmQTAgMTdjMCAxaW8wIDE0bzAgMWxjMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMWxjMCAxNG8wIDFmQTB8MjBlNFwiLFxuXHRcdFx0XCJBZnJpY2EvSm9oYW5uZXNidXJnfFNBU1QgU0FTVCBTQVNUfC0xdSAtMjAgLTMwfDAxMjEyMXwtMkdKZHUgMUFqZHUgMWNMMCAxY04wIDFjTDB8ODRlNVwiLFxuXHRcdFx0XCJBZnJpY2EvSnViYXxMTVQgQ0FUIENBU1QgRUFUfC0yNi5zIC0yMCAtMzAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzfC0xeVcyNi5zIDF6SzA2LnMgMTZMMCAxaU4wIDE3YjAgMWpkMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE3WDAgMWhCMCAxOG4wIDFoZDAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE4bjAgMWhkMCAxOEwwIDFnTjAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN3owIDFpMTAgMTdYMCB5R2QwXCIsXG5cdFx0XHRcIkFmcmljYS9LaGFydG91bXxMTVQgQ0FUIENBU1QgRUFUfC0yYS44IC0yMCAtMzAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzMXwtMXlXMmEuOCAxekswYS44IDE2TDAgMWlOMCAxN2IwIDFqZDAgMTdiMCAxaXAwIDE3ejAgMWkxMCAxN1gwIDFoQjAgMThuMCAxaGQwIDE5YjAgMWdwMCAxOXowIDFpTjAgMTdiMCAxaXAwIDE3ejAgMWkxMCAxOG4wIDFoZDAgMThMMCAxZ04wIDE5YjAgMWdwMCAxOXowIDFpTjAgMTd6MCAxaTEwIDE3WDAgeUdkMCBIakwwfDUxZTVcIixcblx0XHRcdFwiQWZyaWNhL01vbnJvdmlhfE1NVCBNTVQgR01UfEguOCBJLnUgMHwwMTJ8LTIzTHpnLlEgMjhHMDEubXwxMWU1XCIsXG5cdFx0XHRcIkFmcmljYS9OZGphbWVuYXxMTVQgV0FUIFdBU1R8LTEwLmMgLTEwIC0yMHwwMTIxfC0ybGUxMC5jIDJKM2MwLmMgV24wfDEzZTVcIixcblx0XHRcdFwiQWZyaWNhL1Nhb19Ub21lfExNVCBHTVQgV0FUfEEuSiAwIC0xMHwwMTJ8LTJsZTAwIDRpNk4wXCIsXG5cdFx0XHRcIkFmcmljYS9Ucmlwb2xpfExNVCBDRVQgQ0VTVCBFRVR8LVEuSSAtMTAgLTIwIC0yMHwwMTIxMjEyMTMxMjEyMTIxMjEyMTIxMjEyMTMxMjMxMjN8LTIxSmNRLkkgMWhuQlEuSSB2eDAgNGlQMCB4eDAgNGVOMCBCYjAgN2lwMCBVMG4wIEExMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWVOMCAxYmIwIDFlMTAgMWNMMCAxYzEwIDFkYjAgMWRkMCAxZGIwIDFjTjAgMWRiMCAxcTEwIGZBbjAgMWVwMCAxZGIwIEFLcTAgVEEwIDFvMDB8MTFlNVwiLFxuXHRcdFx0XCJBZnJpY2EvVHVuaXN8UE1UIENFVCBDRVNUfC05LmwgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybmNvOS5sIDE4cGE5LmwgMXFNMCBEQTAgM1RjMCAxMUIwIDF6ZTAgV00wIDd6MCAzZDAgMTRMMCAxY04wIDFmOTAgMWFyMCAxNkowIDFnWEIwIFdNMCAxckEwIDExYzAgbndvMCBLbzAgMWNNMCAxY00wIDFyQTAgMTBNMCB6dU0wIDEwTjAgMWFOMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMHwyMGU1XCIsXG5cdFx0XHRcIkFmcmljYS9XaW5kaG9la3wrMDEzMCBTQVNUIFNBU1QgQ0FUIFdBVHwtMXUgLTIwIC0zMCAtMjAgLTEwfDAxMjEzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC0yR0pkdSAxQWpkdSAxY0wwIDFTcUwwIDlJbzAgMTZQMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwfDMyZTRcIixcblx0XHRcdFwiQW1lcmljYS9BZGFrfE5TVCBOV1QgTlBUIEJTVCBCRFQgQUhTVCBIU1QgSERUfGIwIGEwIGEwIGIwIGEwIGEwIGEwIDkwfDAxMjAzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMTdTWDAgOHdXMCBpQjAgUWxiMCA1Mk8wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY20wIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzI2XCIsXG5cdFx0XHRcIkFtZXJpY2EvQW5jaG9yYWdlfEFTVCBBV1QgQVBUIEFIU1QgQUhEVCBZU1QgQUtTVCBBS0RUfGEwIDkwIDkwIGEwIDkwIDkwIDkwIDgwfDAxMjAzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMTdUMDAgOHdYMCBpQTAgUWxiMCA1Mk8wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY20wIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzBlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58TE1UIEFTVHw0Ni40IDQwfDAxfC0ya052Ui5VfDQzZTNcIixcblx0XHRcdFwiQW1lcmljYS9BcmFndWFpbmF8TE1UIC0wMyAtMDJ8M2MuTSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x3TC5jIEhkS0wuYyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBkTU4wIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCBueTEwIEx6MHwxNGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0J1ZW5vc19BaXJlc3xDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdwMCBSYjAgMXdwMCBUWDAgQTRwMCB1TDAgMXFOMCBXTDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ2F0YW1hcmNhfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3EwIFJhMCAxd3AwIFRYMCBybEIwIDdCMCA4emIwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9Db3Jkb2JhfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTMyMzIzMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3EwIFJhMCAxd3AwIFRYMCBBNHAwIHVMMCAxcU4wIFdMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9KdWp1eXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMxMjEzMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF6ZTAgVFgwIDFsZDAgV0swIDF3cDAgVFgwIEE0cDAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0xhX1Jpb2phfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBRbjAgcU8wIDE2bjAgUmIwIDF3cDAgVFgwIHJsQjAgN0IwIDh6YjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL01lbmRvemF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMTIxMjEzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF1MjAgU0wwIDF2ZDAgVGIwIDF3cDAgVFcwIHJpMTAgT3AwIDdUWDAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1Jpb19HYWxsZWdvc3xDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdwMCBSYjAgMXdwMCBUWDAgcmxCMCA3QjAgOHpiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvU2FsdGF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3EwIFJhMCAxd3AwIFRYMCBBNHAwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9TYW5fSnVhbnxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzEyMzIzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUW4wIHFPMCAxNm4wIFJiMCAxd3AwIFRYMCBybGQwIG0xMCA4bGIwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9TYW5fTHVpc3xDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMxMjEyMTIzMjEyMTJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgWFgwIDFxMjAgU0wwIEFOMCB2RGIwIG0xMCA4bGIwIDhMMCBqZDAgMXFOMCBXTDAgMXFOMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9UdWN1bWFufENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTMyMzIxMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIHJsQjAgNE4wIDhCWDAgdUwwIDFxTjAgV0wwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1VzaHVhaWF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cDAgUmIwIDF3cDAgVFgwIHJrTjAgOHAwIDh6YjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VyYWNhb3xMTVQgLTA0MzAgQVNUfDR6LkwgNHUgNDB8MDEyfC0ya1Y3by5kIDI4S0xTLmR8MTVlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FzdW5jaW9ufEFNVCAtMDQgLTAzfDNPLkUgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0xeDU4OS5rIDFES005LmsgM0NMMCAzRGQwIDEwTDAgMXBCMCAxMG4wIDFwQjAgMTBuMCAxcEIwIDFjTDAgMWRkMCAxZGIwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxY0wwIDFkZDAgMWRiMCAxZGQwIDFjTDAgMWRkMCAxY0wwIDFkZDAgMWNMMCAxZGQwIDFkYjAgMWRkMCAxY0wwIDFsQjAgMTRuMCAxZGQwIDFjTDAgMWZkMCBXTDAgMXJkMCAxYUwwIDFkQjAgWHowIDFxcDAgWGIwIDFxTjAgMTBMMCAxckIwIFRYMCAxdEIwIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDFjTDAgV04wIDFxTDAgMTFCMCAxblgwIDFpcDAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgVFgwIDF0QjAgVFgwIDF0QjAgMTlYMCAxYTEwIDFmejAgMWExMCAxZnowIDFjTjAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwfDI4ZTVcIixcblx0XHRcdFwiQW1lcmljYS9BdGlrb2thbnxDU1QgQ0RUIENXVCBDUFQgRVNUfDYwIDUwIDUwIDUwIDUwfDAxMDEyMzR8LTI1VFEwIDFpbjAgUm5iMCAzamUwIDh4MzAgaXcwfDI4ZTJcIixcblx0XHRcdFwiQW1lcmljYS9CYWhpYV9CYW5kZXJhc3xMTVQgTVNUIENTVCBQU1QgTURUIENEVHw3MSA3MCA2MCA4MCA2MCA1MHwwMTIxMjEyMTMxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgb3RYMCBnbU4wIFAyTjAgMTNWZDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuVzAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8ODRlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0JhaGlhfExNVCAtMDMgLTAyfDJ5LjQgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhwLlUgSGRMcC5VIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIDFFTjAgTHowIDFDMTAgSUwwIDFIQjAgRGIwIDFIQjAgT24wIDF6ZDAgT24wIDF6ZDAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIGw1QjAgUmIwfDI3ZTVcIixcblx0XHRcdFwiQW1lcmljYS9CYXJiYWRvc3xMTVQgQk1UIEFTVCBBRFR8M1cudCAzVy50IDQwIDMwfDAxMjMyMzIzMjMyfC0xUTBJMS52IGpzTTAgMU9EQzEudiBJTDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxbGQwIDEzYjB8MjhlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0JlbGVtfExNVCAtMDMgLTAyfDNkLlUgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x3Sy40IEhkS0suNCAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMHwyMGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQmVsaXplfExNVCBDU1QgLTA1MzAgQ0RUfDVRLk0gNjAgNXUgNTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTMxMzF8LTJrQnU3LmMgZlBBNy5jIE9udSAxemN1IFJidSAxd291IFJidSAxd291IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxd291IFJidSAxd291IFJidSAxd291IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxd291IFJidSAxd291IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxd291IFJidSAxd291IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxd291IFJidSAxZjBNdSBxbjAgbHhCMCBtbjB8NTdlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0JsYW5jLVNhYmxvbnxBU1QgQURUIEFXVCBBUFR8NDAgMzAgMzAgMzB8MDEwMjMwfC0yNVRTMCAxaW4wIFVHcDAgOHg1MCBpdTB8MTFlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0JvYV9WaXN0YXxMTVQgLTA0IC0wM3w0Mi5FIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZWLmsgSGRLVi5rIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIHNtcDAgV0wwIDF0QjAgMkwwfDYyZTJcIixcblx0XHRcdFwiQW1lcmljYS9Cb2dvdGF8Qk1UIC0wNSAtMDR8NFUuZyA1MCA0MHwwMTIxfC0yZWI3My5JIDM4eW8zLkkgMmVuMHw5MGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQm9pc2V8UFNUIFBEVCBNU1QgTVdUIE1QVCBNRFR8ODAgNzAgNzAgNjAgNjAgNjB8MDEwMTAyMzQyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MnwtMjYxcTAgMW5YMCAxMUIwIDFuWDAgOEMxMCBKQ0wwIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBEZDAgMUtuMCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjFlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0NhbWJyaWRnZV9CYXl8LTAwIE1TVCBNV1QgTVBUIE1ERFQgTURUIENTVCBDRFQgRVNUfDAgNzAgNjAgNjAgNTAgNjAgNjAgNTAgNTB8MDEyMzE0MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTY3ODY1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MXwtMjFKYzAgUk85MCA4eDIwIGl4MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUEwIDFuWDAgMkswIFdRMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTVlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0NhbXBvX0dyYW5kZXxMTVQgLTA0IC0wM3wzQy5zIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd2wudyBIZExsLncgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgMUMxMCBMejAgMUlwMCBIWDAgMXpkMCBPbjAgMUhCMCBJTDAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXpkMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBJTDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUtwMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMHw3N2U0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FuY3VufExNVCBDU1QgRVNUIEVEVCBDRFR8NUwuNCA2MCA1MCA0MCA1MHwwMTIzMjMyMzQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDEyfC0xVVFHMCAycTJvMCB5TEIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgTHowIHhCMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBEZDB8NjNlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0NhcmFjYXN8Q01UIC0wNDMwIC0wNHw0ci5FIDR1IDQwfDAxMjEyfC0ya1Y3dy5rIDI4S00yLmsgMUl3T3Uga3FvMHwyOWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2F5ZW5uZXxMTVQgLTA0IC0wM3wzdC5rIDQwIDMwfDAxMnwtMm1yd3UuRSAyZ1dvdS5FfDU4ZTNcIixcblx0XHRcdFwiQW1lcmljYS9QYW5hbWF8Q01UIEVTVHw1ai5BIDUwfDAxfC0ydWR1RS5vfDE1ZTVcIixcblx0XHRcdFwiQW1lcmljYS9DaGljYWdvfENTVCBDRFQgRVNUIENXVCBDUFR8NjAgNTAgNTAgNTAgNTB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDIwMTAxMDEwMTAxMDM0MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXMwIDFuWDAgMTFCMCAxblgwIDF3cDAgVFgwIFdOMCAxcUwwIDFjTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDExQjAgMUh6MCAxNHAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgUkIwIDh4MzAgaXcwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw5MmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2hpaHVhaHVhfExNVCBNU1QgQ1NUIENEVCBNRFR8NzQuayA3MCA2MCA1MCA2MHwwMTIxMjEyMzIzMjQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgMnpRTjAgMWxiMCAxNHAwIDFsYjAgMTRxMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8ODFlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0Nvc3RhX1JpY2F8U0pNVCBDU1QgQ0RUfDVBLmQgNjAgNTB8MDEyMTIxMjEyMXwtMVhkNm4uTCAybHUwbi5MIERiMCAxS3AwIERiMCBwUkIwIDE1YjAgMWtwMCBtTDB8MTJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0NyZXN0b258TVNUIFBTVHw3MCA4MHwwMTB8LTI5RFIwIDQzQjB8NTNlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0N1aWFiYXxMTVQgLTA0IC0wM3wzSS5rIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJnbHdmLkUgSGRMZi5FIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIDFFTjAgTHowIDFDMTAgSUwwIDFIQjAgRGIwIDFIQjAgT24wIDF6ZDAgT24wIDF6ZDAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIDRhMTAgSFgwIDF6ZDAgT24wIDFIQjAgSUwwIDF3cDAgT24wIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgUmIwIDF6ZDAgTHowIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgSUwwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFLcDAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjB8NTRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0Rhbm1hcmtzaGF2bnxMTVQgLTAzIC0wMiBHTVR8MWUuRSAzMCAyMCAwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzfC0yYTVXSi5rIDJ6NWZKLmsgMTlVMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBEQzB8OFwiLFxuXHRcdFx0XCJBbWVyaWNhL0Rhd3Nvbl9DcmVla3xQU1QgUERUIFBXVCBQUFQgTVNUfDgwIDcwIDcwIDcwIDcwfDAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTR8LTI1VE8wIDFpbjAgVUdwMCA4eDEwIGl5MCAzTkIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgTUwwfDEyZTNcIixcblx0XHRcdFwiQW1lcmljYS9EYXdzb258WVNUIFlEVCBZV1QgWVBUIFlERFQgUFNUIFBEVHw5MCA4MCA4MCA4MCA3MCA4MCA3MHwwMTAxMDIzMDQwNTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1fC0yNVROMCAxaW4wIDFvMTAgMTNWMCBTZXIwIDh4MDAgaXowIExDTDAgMWZBMCBqckEwIGZOZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDEzZTJcIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8TVNUIE1EVCBNV1QgTVBUfDcwIDYwIDYwIDYwfDAxMDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFyMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIG1uMCBPcmQwIDh4MjAgaXgwIExDTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyNmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvRGV0cm9pdHxMTVQgQ1NUIEVTVCBFV1QgRVBUIEVEVHw1dy5iIDYwIDUwIDQwIDQwIDQwfDAxMjM0MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MnwtMkNnaXIuTiBwZXFyLk4gMTU2TDAgOHg0MCBpdjAgNmZkMCAxMXowIFhRcDAgMWNMMCBzMTAgMVZ6MCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDM3ZTVcIixcblx0XHRcdFwiQW1lcmljYS9FZG1vbnRvbnxMTVQgTVNUIE1EVCBNV1QgTVBUfDd4LlEgNzAgNjAgNjAgNjB8MDEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJ5ZDRxLjggc2hkcS44IDFpbjAgMTdkMCBoejAgMmRCMCAxZnowIDFhMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgSUdOMCA4eDIwIGl4MCAzTkIwIDExejAgTEZCMCAxY0wwIDNDcDAgMWNMMCA2Nk4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDEwZTVcIixcblx0XHRcdFwiQW1lcmljYS9FaXJ1bmVwZXxMTVQgLTA1IC0wNHw0RC5zIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZrLncgSGRMay53IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIGRQQjAgT24wIHlUZDAgZDVYMHwzMWUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvRWxfU2FsdmFkb3J8TE1UIENTVCBDRFR8NVUuTSA2MCA1MHwwMTIxMjF8LTFYaUczLmMgMkZ2YzMuYyBXTDAgMXFOMCBXTDB8MTFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1RpanVhbmF8TE1UIE1TVCBQU1QgUERUIFBXVCBQUFR8N00uNCA3MCA4MCA3MCA3MCA3MHwwMTIxMjMyNDUyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFVUUUwIDRQWDAgOG1NMCA4bGMwIFNOMCAxY0wwIHBIQjAgODNyMCB6STAgNU8xMCAxUnowIGNPTzAgMTFBMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCBCVXAwIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgVTEwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjBlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfTmVsc29ufFBTVCBQRFQgUFdUIFBQVCBNU1R8ODAgNzAgNzAgNzAgNzB8MDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDR8LTI1VE8wIDFpbjAgVUdwMCA4eDEwIGl5MCAzTkIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwfDM5ZTJcIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0X1dheW5lfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTA0MDQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgUUkxMCBEYjAgUkIwIDh4MzAgaXcwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCA1VHowIDFvMTAgcUxiMCAxY0wwIDFjTjAgMWNMMCAxcWhkMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydGFsZXphfExNVCAtMDMgLTAyfDJ5IDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhxIEhkTHEgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgbnNwMCBXTDAgMXRCMCA1ejAgMm1OMCBPbjB8MzRlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0dsYWNlX0JheXxMTVQgQVNUIEFEVCBBV1QgQVBUfDNYLk0gNDAgMzAgMzAgMzB8MDEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ySXNJMC5jIEN3TzAuYyAxaW4wIFVHcDAgOHg1MCBpdTAgaXExMCAxMXowIEpnMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTllM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0dvZHRoYWJ8TE1UIC0wMyAtMDJ8M3EuVSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYTVVeC40IDJ6NWR4LjQgMTlVMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE3ZTNcIixcblx0XHRcdFwiQW1lcmljYS9Hb29zZV9CYXl8TlNUIE5EVCBOU1QgTkRUIE5XVCBOUFQgQVNUIEFEVCBBRERUfDN1LlEgMnUuUSAzdSAydSAydSAydSA0MCAzMCAyMHwwMTAyMzIzMjMyMzIzMjMyNDUyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njg2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzZ8LTI1VFN0LjggMWluMCBEWGIwIDJIYlguOCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBUWDAgMXRCMCBXTDAgMXFOMCBXTDAgMXFOMCA3VUh1IGl0dSAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFdMMCAxbGQwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCBTMTAgZzB1IDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNG4xIDFsYjAgMTRwMCAxblcwIDExQzAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemNYIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDc2ZTJcIixcblx0XHRcdFwiQW1lcmljYS9HcmFuZF9UdXJrfEtNVCBFU1QgRURUIEFTVHw1Ny5hIDUwIDQwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybDF1US5PIDJISEJRLk8gMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCA1SXAwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzdlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0d1YXRlbWFsYXxMTVQgQ1NUIENEVHw2Mi40IDYwIDUwfDAxMjEyMTIxMjF8LTI0S2hWLlUgMmVmWFYuVSBBbjAgbXRkMCBOejAgaWZCMCAxN2IwIHpEQjAgMTF6MHwxM2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvR3VheWFxdWlsfFFNVCAtMDUgLTA0fDVlIDUwIDQwfDAxMjF8LTF5VlNLIDJ1SUxLIHJ6MHwyN2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvR3V5YW5hfExNVCAtMDM0NSAtMDMgLTA0fDNRLkUgM0ogMzAgNDB8MDEyM3wtMmR2VTcuayAycjZMUS5rIEJ4YmZ8ODBlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0hhbGlmYXh8TE1UIEFTVCBBRFQgQVdUIEFQVHw0ZS5vIDQwIDMwIDMwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJJc0hKLkEgeHp6Si5BIDFkYjAgM0kzMCAxaW4wIDNIWDAgSUwwIDFFMTAgTUwwIDF5TjAgUGIwIDFCZDAgTW4wIDFCZDAgUnowIDF3MTAgWGIwIDF3MTAgTFgwIDF3MTAgWGIwIDF3MTAgTHowIDFDMTAgSnowIDFFMTAgT0wwIDF5TjAgVW4wIDFxcDAgWGIwIDFxcDAgMTFYMCAxdzEwIEx6MCAxSEIwIExYMCAxQzEwIEZYMCAxdzEwIFhiMCAxcXAwIFhiMCAxQkIwIExYMCAxdGQwIFhiMCAxcXAwIFhiMCBSZjAgOHg1MCBpdTAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDNRcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAzUXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgNmkxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzllNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0hhdmFuYXxITVQgQ1NUIENEVHw1dC5BIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMU1ldXUubyA3Mnp1Lm8gTUwwIHNsZDAgQW4wIDFOZDAgRGIwIDFOZDAgQW4wIDZFcDAgQW4wIDFOZDAgQW4wIEpEZDAgTW4wIDFBcDAgT24wIDFmZDAgMTFYMCAxcU4wIFdMMCAxd3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDE0bjAgMWxkMCAxNEwwIDFrTjAgMTViMCAxa3AwIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxZkIwIDExejAgMTRwMCAxblgwIDExQjAgMW5YMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDE0bjAgMWxkMCAxNG4wIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxYTEwIDFpbjAgMWExMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDE3YzAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDExQTAgNmkwMCBSYzAgMXdvMCBVMDAgMXRBMCBSYzAgMXdvMCBVMDAgMXdvMCBVMDAgMXpjMCBVMDAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMHwyMWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvSGVybW9zaWxsb3xMTVQgTVNUIENTVCBQU1QgTURUfDduLlEgNzAgNjAgODAgNjB8MDEyMTIxMjEzMTQxNDE0MXwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIG90WDAgZ21OMCBQMk4wIDEzVmQwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMHw2NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9Lbm94fENTVCBDRFQgQ1dUIENQVCBFU1R8NjAgNTAgNTAgNTAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAzTkIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFvMTAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgM0NuMCA4d3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIHo4bzAgMW8wMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvTWFyZW5nb3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDU0NTQ1NDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIGR5TjAgMTF6MCA2ZmQwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBqcnowIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVkEwIExBMCAxQlgwIDFlNnAwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1BldGVyc2J1cmd8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDQwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgbmpYMCBXTjAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAzRmIwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDE5Y28wIDFvMDAgUmQwIDF6YjAgT28wIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1RlbGxfQ2l0eXxDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgZzBwMCAxMXowIDFvMTAgMTF6MCAxcUwwIFdOMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCBjYUwwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFvMDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1ZldmF5fENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBrUEIwIEF3bjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxbG5kMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9WaW5jZW5uZXN8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgMW8xMCAxMXowIGcwcDAgMTF6MCAxbzEwIDExejAgMXFMMCBXTjAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgY2FMMCAxY0wwIDFjTjAgMWNMMCAxcWhkMCAxbzAwIFJkMCAxemIwIE9vMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9XaW5hbWFjfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDU0NTQxMDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBqcnowIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFvMDAgUmQwIDF6YTAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbnV2aWt8LTAwIFBTVCBQRERUIE1TVCBNRFR8MCA4MCA2MCA3MCA2MHwwMTIxMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC1GbkEwIHRXVTAgMWZBMCB3UGUwIDJwejAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDM1ZTJcIixcblx0XHRcdFwiQW1lcmljYS9JcWFsdWl0fC0wMCBFV1QgRVBUIEVTVCBFRERUIEVEVCBDU1QgQ0RUfDAgNDAgNDAgNTAgMzAgNDAgNjAgNTB8MDEyMzQzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1NjczNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTN8LTE2SzAwIDduWDAgaXYwIExDTDAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQzAgMW5YMCAxMUEwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2N2UyXCIsXG5cdFx0XHRcIkFtZXJpY2EvSmFtYWljYXxLTVQgRVNUIEVEVHw1Ny5hIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsMXVRLk8gMnVNMVEuTyAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejB8OTRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0p1bmVhdXxQU1QgUFdUIFBQVCBQRFQgWURUIFlTVCBBS1NUIEFLRFR8ODAgNzAgNzAgNzAgODAgOTAgOTAgODB8MDEyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzA0MDMwMzAzNTY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzZ8LTE3VDIwIDh4MTAgaXkwIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbzAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzM2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvS2VudHVja3kvTG91aXN2aWxsZXxDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCAzRmQwIE5iMCBMUGQwIDExejAgUkIwIDh4MzAgaXcwIEJiMCAxME4wIDJiQjAgOGluMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCB4ejAgZ3NvMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWQTAgTEEwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvS2VudHVja3kvTW9udGljZWxsb3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIFNXcDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUEwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0xhX1BhenxDTVQgQlNUIC0wNHw0dy5BIDN3LkEgNDB8MDEyfC0xeDM3ci5vIDEzYjB8MTllNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0xpbWF8TE1UIC0wNSAtMDR8NTguQSA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxfC0ydHlHUC5vIDFiRHpQLm8gelgwIDFhTjAgMWNMMCAxY04wIDFjTDAgMVByQjAgelgwIDFPMTAgelgwIDZHcDAgelgwIDk4cDAgelgwfDExZTZcIixcblx0XHRcdFwiQW1lcmljYS9Mb3NfQW5nZWxlc3xQU1QgUERUIFBXVCBQUFR8ODAgNzAgNzAgNzB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFxMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MTAgaXkwIDVXcDEgMVZhWCAzZEEwIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE1ZTZcIixcblx0XHRcdFwiQW1lcmljYS9NYWNlaW98TE1UIC0wMyAtMDJ8Mm0uUSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhCLjggSGRMQi44IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIGRNTjAgTHowIDhRMTAgV0wwIDF0QjAgNXowIDJtTjAgT24wfDkzZTRcIixcblx0XHRcdFwiQW1lcmljYS9NYW5hZ3VhfE1NVCBDU1QgRVNUIENEVHw1Si5jIDYwIDUwIDUwfDAxMjEzMTMxMjEyMTMxMzF8LTFxdWllLk0gMXlBTWUuTSA0bW4wIDlVcDAgRHowIDFLMTAgRHowIHMzRjAgMUtIMCBEQjAgOUluMCBrOHAwIDE5WDAgMW8zMCAxMXkwfDIyZTVcIixcblx0XHRcdFwiQW1lcmljYS9NYW5hdXN8TE1UIC0wNCAtMDN8NDAuNCA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdlguVSBIZEtYLlUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgZFBCMCBPbjB8MTllNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01hcnRpbmlxdWV8RkZNVCBBU1QgQURUfDQ0LmsgNDAgMzB8MDEyMXwtMm1QVFQuRSAyTFBiVC5FIDE5WDB8MzllNFwiLFxuXHRcdFx0XCJBbWVyaWNhL01hdGFtb3Jvc3xMTVQgQ1NUIENEVHw2RSA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVVFHMCAyRmpDMCAxblgwIGk2cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw0NWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWF6YXRsYW58TE1UIE1TVCBDU1QgUFNUIE1EVHw3NS5FIDcwIDYwIDgwIDYwfDAxMjEyMTIxMzE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDF8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCBvdFgwIGdtTjAgUDJOMCAxM1ZkMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHw0NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWVub21pbmVlfENTVCBDRFQgQ1dUIENQVCBFU1R8NjAgNTAgNTAgNTAgNTB8MDEwMTAyMzAxMDEwNDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgMW8xMCAxMXowIExDTjAgMWZ6MCA2NDEwIDlKYjAgMWNNMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8ODVlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL01lcmlkYXxMTVQgQ1NUIEVTVCBDRFR8NVcucyA2MCA1MCA1MHwwMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxfC0xVVFHMCAycTJvMCAyaHowIHd1MzAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8MTFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01ldGxha2F0bGF8UFNUIFBXVCBQUFQgUERUIEFLU1QgQUtEVHw4MCA3MCA3MCA3MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0xN1QyMCA4eDEwIGl5MCBWbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWhVMTAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTRlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL01leGljb19DaXR5fExNVCBNU1QgQ1NUIENEVCBDV1R8NkEuQSA3MCA2MCA1MCA1MHwwMTIxMjEyMzIzMjQyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCBnRW4wIFRYMCAzeGQwIEpiMCA2ekIwIFNMMCBlNWQwIDE3YjAgMVBmZjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8MjBlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL01pcXVlbG9ufExNVCBBU1QgLTAzIC0wMnwzSS5FIDQwIDMwIDIwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMm1La2YuayAyTFRBZi5rIGdRMTAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjFlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL01vbmN0b258RVNUIEFTVCBBRFQgQVdUIEFQVHw1MCA0MCAzMCAzMCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJJc0gwIEN3TjAgMWluMCB6QW8wIEFuMCAxTmQwIEFuMCAxTmQwIEFuMCAxTmQwIEFuMCAxTmQwIEFuMCAxTmQwIEFuMCAxSzEwIEx6MCAxekIwIE5YMCAxdTEwIFduMCBTMjAgOHg1MCBpdTAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAzQ3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRuMSAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZVggMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NGUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvTW9udGVycmV5fExNVCBDU1QgQ0RUfDZGLmcgNjAgNTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVVRRzAgMkZqQzAgMW5YMCBpNnAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDQxZTVcIixcblx0XHRcdFwiQW1lcmljYS9Nb250ZXZpZGVvfExNVCBNTVQgLTA0IC0wMyAtMDMzMCAtMDIzMCAtMDIgLTAxMzB8M0kuUCAzSS5QIDQwIDMwIDN1IDJ1IDIwIDF1fDAxMjM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNTM1MzYzNjM1MzYzNjM3NTM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2M3wtMnRSVWYuOSBzVmMwIDhqY2YuOSAxZGIwIDFkY3UgMWNMdSAxZGN1IDFjTHUgaXJjdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFxTXUgV0x1IDFxTXUgV0x1IDFmQXUgMWNMdSAxbzB1IDExenUgTkF1IDNqWHUgelh1IERxMHUgMTlYdSBwY3UganowIGNtMTAgMTlYMCA2dEIwIDFmYnUgM28wdSBqWDAgNHZCMCB4ejAgM0NwMCBtbXUgMWExMCBJTXUgRGIwIDRjMTAgdUwwIDFOZDAgQW4wIDFTTjAgdUwwIG1wMCAyOEwwIGlQQjAgdW4wIDFTTjAgeHowIDF6ZDAgTHowIDF6ZDAgUmIwIDF6ZDAgT24wIDF3cDAgUmIwIHM4cDAgMWZCMCAxaXAwIDExejAgMWxkMCAxNG4wIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxNG4wIDFsZDAgMTRuMCAxbGQwIDE0bjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejB8MTdlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Rvcm9udG98RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNVRSMCAxaW4wIDExV3UgMW56dSAxZkQwIFdKMCAxd3IwIE5iMCAxQXAwIE9uMCAxemQwIE9uMCAxd3AwIFRYMCAxdEIwIFRYMCAxdEIwIFRYMCAxdEIwIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCA0a00wIDh4NDAgaXYwIDFvMTAgMTF6MCAxblgwIDExejAgMW8xMCAxMXowIDFvMTAgMXFMMCAxMUQwIDFuWDAgMTFCMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTmFzc2F1fExNVCBFU1QgRURUfDU5LnUgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ya051Ty51IDI2WGRPLnUgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyNGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTmV3X1lvcmt8RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjF0MCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgMWExMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgUkIwIDh4NDAgaXYwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyMWU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvTmlwaWdvbnxFU1QgRURUIEVXVCBFUFR8NTAgNDAgNDAgNDB8MDEwMTIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNVRSMCAxaW4wIFJuYjAgM2plMCA4eDQwIGl2MCAxOXlOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTZlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL05vbWV8TlNUIE5XVCBOUFQgQlNUIEJEVCBZU1QgQUtTVCBBS0RUfGIwIGEwIGEwIGIwIGEwIDkwIDkwIDgwfDAxMjAzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMTdTWDAgOHdXMCBpQjAgUWxiMCA1Mk8wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY2wwIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzhlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcm9uaGF8TE1UIC0wMiAtMDF8MjkuRSAyMCAxMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x4Ty5rIEhkS08uayAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBuc3AwIFdMMCAxdEIwIDJMMCAycEIwIE9uMHwzMGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9ydGhfRGFrb3RhL0JldWxhaHxNU1QgTURUIE1XVCBNUFQgQ1NUIENEVHw3MCA2MCA2MCA2MCA2MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPbzAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcnRoX0Rha290YS9DZW50ZXJ8TVNUIE1EVCBNV1QgTVBUIENTVCBDRFR8NzAgNjAgNjAgNjAgNjAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0bzAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9Ob3J0aF9EYWtvdGEvTmV3X1NhbGVtfE1TVCBNRFQgTVdUIE1QVCBDU1QgQ0RUfDcwIDYwIDYwIDYwIDYwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0bzAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvT2ppbmFnYXxMTVQgTVNUIENTVCBDRFQgTURUfDZWLkUgNzAgNjAgNTAgNjB8MDEyMTIxMjMyMzI0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MXwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIDJ6UU4wIDFsYjAgMTRwMCAxbGIwIDE0cTAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgVTEwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjNlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BhbmduaXJ0dW5nfC0wMCBBU1QgQVdUIEFQVCBBRERUIEFEVCBFRFQgRVNUIENTVCBDRFR8MCA0MCAzMCAzMCAyMCAzMCA0MCA1MCA2MCA1MHwwMTIzMTQxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNjc2NzY3Njc2ODk3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njd8LTFYaU0wIFBuRzAgOHg1MCBpdTAgTENMMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW8wMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFDMCAxblgwIDExQTAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE0ZTJcIixcblx0XHRcdFwiQW1lcmljYS9QYXJhbWFyaWJvfExNVCBQTVQgUE1UIC0wMzMwIC0wM3wzRS5FIDNFLlEgM0UuQSAzdSAzMHwwMTIzNHwtMm5EVWouayBXcW8wLmMgcWFuWC5JIDF5VlhOLm98MjRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1Bob2VuaXh8TVNUIE1EVCBNV1R8NzAgNjAgNjB8MDEwMTAyMDIwMTB8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgNEFsMSBBcDAgMWRiMCBTV3FYIDFjTDB8NDJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnQtYXUtUHJpbmNlfFBQTVQgRVNUIEVEVHw0TiA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjhSSGIgMkZuTWIgMTlYMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRxMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIGk2bjAgMW5YMCAxMUIwIDFuWDAgZDQzMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIDNpTjAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUmlvX0JyYW5jb3xMTVQgLTA1IC0wNHw0di5jIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x2cy5NIEhkTHMuTSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBOQmQwIGQ1WDB8MzFlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRvX1ZlbGhvfExNVCAtMDQgLTAzfDRmLkEgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x2SS5vIEhkS0kubyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMHwzN2U0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUHVlcnRvX1JpY298QVNUIEFXVCBBUFR8NDAgMzAgMzB8MDEyMHwtMTdsVTAgN1hUMCBpdTB8MjRlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1B1bnRhX0FyZW5hc3xTTVQgLTA1IC0wNCAtMDN8NEcuSyA1MCA0MCAzMHwwMTAyMDIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0ycTJqaC5lIGZKQWguZSA1a25HLksgMVZ6aC5lIGpSQUcuSyAxcGJoLmUgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgbkhYMCBvcDAgYmx6MCBrbzAgUWVvMCBXTDAgMXpkMCBPbjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxbGQwIDE0bjAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFmQjAgMTlYMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxaXAwIDFmejAgMWZCMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMW8xMCAxOVgwIDFmQjAgMW5YMCBHMTAgMUVMMCBPcDAgMXpiMCBSZDAgMXduMCBSZDAgNDZuMCBBcDBcIixcblx0XHRcdFwiQW1lcmljYS9SYWlueV9SaXZlcnxDU1QgQ0RUIENXVCBDUFR8NjAgNTAgNTAgNTB8MDEwMTIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNVRRMCAxaW4wIFJuYjAgM2plMCA4eDMwIGl3MCAxOXlOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8ODQyXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmFua2luX0lubGV0fC0wMCBDU1QgQ0REVCBDRFQgRVNUfDAgNjAgNDAgNTAgNTB8MDEyMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzNDMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxfC12RGMwIGtldTAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyNmUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVjaWZlfExNVCAtMDMgLTAyfDJqLkEgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseEUubyBIZExFLm8gMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgbnNwMCBXTDAgMXRCMCAyTDAgMnBCMCBPbjB8MzNlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1JlZ2luYXxMTVQgTVNUIE1EVCBNV1QgTVBUIENTVHw2Vy5BIDcwIDYwIDYwIDYwIDYwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxNXwtMkFENTEubyB1SGUxLm8gMWluMCBzMkwwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgNjZOMCAxY0wwIDFjTjAgMTlYMCAxZkIwIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCBNMzAgOHgyMCBpeDAgMWlwMCAxY0wwIDFpcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAzTkIwIDFjTDAgMWNOMHwxOWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVzb2x1dGV8LTAwIENTVCBDRERUIENEVCBFU1R8MCA2MCA0MCA1MCA1MHwwMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTM0MzEzMTMxMzEzMTM0MzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzF8LVNuQTAgR1dTMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIyOVwiLFxuXHRcdFx0XCJBbWVyaWNhL1NhbnRhcmVtfExNVCAtMDQgLTAzfDNDLk0gNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd2wuYyBIZExsLmMgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgTkJkMHwyMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudGlhZ298U01UIC0wNSAtMDQgLTAzfDRHLksgNTAgNDAgMzB8MDEwMjAyMTIxMjEyMTIxMjEyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0ycTJqaC5lIGZKQWguZSA1a25HLksgMVZ6aC5lIGpSQUcuSyAxcGJoLmUgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgbkhYMCBvcDAgOUJ6MCBqYjAgMW9OMCBrbzAgUWVvMCBXTDAgMXpkMCBPbjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxbGQwIDE0bjAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFmQjAgMTlYMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxaXAwIDFmejAgMWZCMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMW8xMCAxOVgwIDFmQjAgMW5YMCBHMTAgMUVMMCBPcDAgMXpiMCBSZDAgMXduMCBSZDAgNDZuMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBEZDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBEZDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBEZDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDB8NjJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1NhbnRvX0RvbWluZ298U0RNVCBFU1QgRURUIC0wNDMwIEFTVHw0RSA1MCA0MCA0dSA0MHwwMTIxMzEzMTMxMzEzMTQxNHwtMXR0amsgMWxKTWsgTW4wIDZzcDAgTGJ1IDFDb3UgeUx1IDFSQXUgd0x1IDFRTXUgeHp1IDFRMHUgeFh1IDFQQXUgMTNqQjAgZTAwfDI5ZTVcIixcblx0XHRcdFwiQW1lcmljYS9TYW9fUGF1bG98TE1UIC0wMyAtMDJ8MzYucyAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJnbHdSLncgSGRLUi53IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHBUZDAgUFgwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIDFFTjAgTHowIDFDMTAgSUwwIDFIQjAgRGIwIDFIQjAgT24wIDF6ZDAgT24wIDF6ZDAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIDFDMTAgTHowIDFJcDAgSFgwIDF6ZDAgT24wIDFIQjAgSUwwIDF3cDAgT24wIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgUmIwIDF6ZDAgTHowIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgSUwwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFLcDAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjB8MjBlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL1Njb3Jlc2J5c3VuZHxMTVQgLTAyIC0wMSArMDB8MXIuUSAyMCAxMCAwfDAxMjEzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJhNVd3LjggMno1ZXcuOCAxYTAwIDFjSzAgMWNMMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvU2l0a2F8UFNUIFBXVCBQUFQgUERUIFlTVCBBS1NUIEFLRFR8ODAgNzAgNzAgNzAgOTAgOTAgODB8MDEyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzNDU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjV8LTE3VDIwIDh4MTAgaXkwIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbzAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw5MGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvU3RfSm9obnN8TlNUIE5EVCBOU1QgTkRUIE5XVCBOUFQgTkREVHwzdS5RIDJ1LlEgM3UgMnUgMnUgMnUgMXV8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDIzMjMyMzIzMjMyMzIzMjQ1MjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjYyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTI4b2l0LjggMTRMMCAxbkIwIDFpbjAgMWdtMCBEejAgMUpCMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMTBPMCBlS1guOCAxOVgwIDFpcTAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgVFgwIDF0QjAgV0wwIDFxTjAgV0wwIDFxTjAgN1VIdSBpdHUgMXRCMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBXTDAgMWxkMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRuMSAxbGIwIDE0cDAgMW5XMCAxMUMwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpjWCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvU3dpZnRfQ3VycmVudHxMTVQgTVNUIE1EVCBNV1QgTVBUIENTVHw3Yi5rIDcwIDYwIDYwIDYwIDYwfDAxMjEzNDEyMTIxMjEyMTIxMjEyMTIxNXwtMkFENE0uRSB1SGRNLkUgMWluMCBVR3AwIDh4MjAgaXgwIDFvMTAgMTdiMCAxaXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCBpc04wIDFjTDAgM0NwMCAxY0wwIDFjTjAgMTF6MCAxcU4wIFdMMCBwTXAwfDE2ZTNcIixcblx0XHRcdFwiQW1lcmljYS9UZWd1Y2lnYWxwYXxMTVQgQ1NUIENEVHw1TS5RIDYwIDUwfDAxMjEyMTIxfC0xV0dHYi44IDJFVGNiLjggV0wwIDFxTjAgV0wwIEdSZDAgQUwwfDExZTVcIixcblx0XHRcdFwiQW1lcmljYS9UaHVsZXxMTVQgQVNUIEFEVHw0ei44IDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmE1VG8uUSAzMU5Cby5RIDFjTDAgMWNOMCAxY0wwIDFmQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvVGh1bmRlcl9CYXl8Q1NUIEVTVCBFV1QgRVBUIEVEVHw2MCA1MCA0MCA0MCA0MHwwMTIzMTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0ycTVTMCAxaWFOMCA4eDQwIGl2MCBYTkIwIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAzQ3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvVmFuY291dmVyfFBTVCBQRFQgUFdUIFBQVHw4MCA3MCA3MCA3MHwwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNVRPMCAxaW4wIFVHcDAgOHgxMCBpeTAgMW8xMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvV2hpdGVob3JzZXxZU1QgWURUIFlXVCBZUFQgWUREVCBQU1QgUERUfDkwIDgwIDgwIDgwIDcwIDgwIDcwfDAxMDEwMjMwNDA1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjV8LTI1VE4wIDFpbjAgMW8xMCAxM1YwIFNlcjAgOHgwMCBpejAgTENMMCAxZkEwIDNOQTAgdnJkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjNlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1dpbm5pcGVnfENTVCBDRFQgQ1dUIENQVHw2MCA1MCA1MCA1MHwwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhSWkwIFdMMCAzTkQwIDFpbjAgSmFwMCBSYjAgYUNOMCA4eDMwIGl3MCAxdEIwIDExejAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXJkMCAxMEwwIDFvcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxY0wwIDFjTjAgMTF6MCA2aTEwIFdMMCA2aTEwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY2ZTRcIixcblx0XHRcdFwiQW1lcmljYS9ZYWt1dGF0fFlTVCBZV1QgWVBUIFlEVCBBS1NUIEFLRFR8OTAgODAgODAgODAgOTAgODB8MDEyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTE3VDEwIDh4MDAgaXowIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbjAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NDJcIixcblx0XHRcdFwiQW1lcmljYS9ZZWxsb3drbmlmZXwtMDAgTVNUIE1XVCBNUFQgTUREVCBNRFR8MCA3MCA2MCA2MCA1MCA2MHwwMTIzMTQxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTF8LTFwZEEwIGhpeDAgOHgyMCBpeDAgTENMMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE5ZTNcIixcblx0XHRcdFwiQW50YXJjdGljYS9DYXNleXwtMDAgKzA4ICsxMXwwIC04MCAtYjB8MDEyMTIxMjF8LTJxMDAgMURqUzAgVDkwIDQwUDAgS0wwIGJsejAgM20xMHwxMFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL0RhdmlzfC0wMCArMDcgKzA1fDAgLTcwIC01MHwwMTAxMjEyMXwtdnlvMCBpWHQwIGFsajAgMUQ3djAgVkIwIDNXbjAgS04wfDcwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvRHVtb250RFVydmlsbGV8LTAwICsxMHwwIC1hMHwwMTAxfC1VMG8wIGNmcTAgYkZtMHw4MFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL01hY3F1YXJpZXxBRVNUIEFFRFQgLTAwICsxMXwtYTAgLWIwIDAgLWIwfDAxMDIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTN8LTI5RTgwIDE5WDAgNFNMMCAxYXl5MCBMdnMwIDFjTTAgMW8wMCBSYzAgMXdvMCBSYzAgMXdvMCBVMDAgMXdvMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFxTTAgV00wIDFxTTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF3bzAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTFBMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxMUEwIDFvMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTB8MVwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL01hd3NvbnwtMDAgKzA2ICswNXwwIC02MCAtNTB8MDEyfC1DRW8wIDJmeWswfDYwXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8TlpNVCBOWlNUIE5aU1QgTlpEVHwtYnUgLWN1IC1jMCAtZDB8MDEwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTFHQ1Z1IEx6MCAxdEIwIDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDE0bnUgMWxjdSAxNG51IDFsY3UgMWxidSAxMUF1IDFuWHUgMTFBdSAxblh1IDExQXUgMW5YdSAxMUF1IDFuWHUgMTFBdSAxcUx1IFdNdSAxcUx1IDExQXUgMW4xYnUgSU0wIDFDMDAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDFxTTAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDB8MTRlNVwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1BhbG1lcnwtMDAgLTAzIC0wNCAtMDJ8MCAzMCA0MCAyMHwwMTIxMjEyMTIxMjEzMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC1jYW8wIG5EMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIGpzTjAgMTROMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxZkIwIDE5WDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMWlwMCAxZnowIDFmQjAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFvMTAgMTlYMCAxZkIwIDFuWDAgRzEwIDFFTDAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDQ2bjAgQXAwfDQwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvUm90aGVyYXwtMDAgLTAzfDAgMzB8MDF8Z09vMHwxMzBcIixcblx0XHRcdFwiQW50YXJjdGljYS9TeW93YXwtMDAgKzAzfDAgLTMwfDAxfC12czAwfDIwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvVHJvbGx8LTAwICswMCArMDJ8MCAwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwxcHVvMCBoZDAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDBcIixcblx0XHRcdFwiQW50YXJjdGljYS9Wb3N0b2t8LTAwICswNnwwIC02MHwwMXwtdGpBMHwyNVwiLFxuXHRcdFx0XCJFdXJvcGUvT3Nsb3xDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF3TTAgUW0wIFc2bzAgNXBmMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIHdKYzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFxTTAgV00wIHpwYzAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDYyZTRcIixcblx0XHRcdFwiQXNpYS9SaXlhZGh8TE1UICswM3wtMzYuUSAtMzB8MDF8LVR2RDYuUXw1N2U1XCIsXG5cdFx0XHRcIkFzaWEvQWxtYXR5fExNVCArMDUgKzA2ICswN3wtNTcuTSAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzU3Lk0gZVVvNy5NIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wfDE1ZTVcIixcblx0XHRcdFwiQXNpYS9BbW1hbnxMTVQgRUVUIEVFU1R8LTJuLkkgLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xeVcybi5JIDFIaU1uLkkgS0wwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxZHowIDFjcDAgMTFiMCAxb3AwIDExYjAgZk8xMCAxZGIwIDFlMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFwZDAgMTBuMCAxbGQwIDE0bjAgMWhCMCAxNWIwIDFpcDAgMTlYMCAxY04wIDFjTDAgMWNOMCAxN2IwIDFsZDAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxU28wIHkwMCAxZmMwIDFkYzAgMWNvMCAxZGMwIDFjTTAgMWNNMCAxY00wIDFvMDAgMTFBMCAxbGMwIDE3YzAgMWNNMCAxY00wIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCA0YlgwIERkMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTB8MjVlNVwiLFxuXHRcdFx0XCJBc2lhL0FuYWR5cnxMTVQgKzEyICsxMyArMTQgKzExfC1iTi5VIC1jMCAtZDAgLWUwIC1iMHwwMTIzMjEyMTIxMjEyMTIxMjEyMTIxNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0MXwtMVBjYk4uVSBlVW5OLlUgMjNDTDAgMWRiMCAycTEwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMnNwMCBXTTB8MTNlM1wiLFxuXHRcdFx0XCJBc2lhL0FxdGF1fExNVCArMDQgKzA1ICswNnwtM2wuNCAtNDAgLTUwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTFQYzNsLjQgZVVubC40IDI0UFgwIDJwWDAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwfDE1ZTRcIixcblx0XHRcdFwiQXNpYS9BcXRvYmV8TE1UICswNCArMDUgKzA2fC0zTS5FIC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzNNLkUgZVVuTS5FIDIzQ0wwIDNEYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTB8MjdlNFwiLFxuXHRcdFx0XCJBc2lhL0FzaGdhYmF0fExNVCArMDQgKzA1ICswNnwtM1IudyAtNDAgLTUwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyfC0xUGMzUi53IGVVblIudyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wfDQxZTRcIixcblx0XHRcdFwiQXNpYS9BdHlyYXV8TE1UICswMyArMDUgKzA2ICswNHwtM3IuSSAtMzAgLTUwIC02MCAtNDB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyNDIzMjMyMzIzMjMyMzIzMjQyNDI0MjQyNDJ8LTFQYzNyLkkgZVVvci5JIDI0UFcwIDJwWDAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMFwiLFxuXHRcdFx0XCJBc2lhL0JhZ2hkYWR8Qk1UICswMyArMDR8LTJWLkEgLTMwIC00MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTI2QmVWLkEgMkFDblYuQSAxMWIwIDFjcDAgMWR6MCAxZGQwIDFkYjAgMWNOMCAxY3AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWRlMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxZGMwIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMHw2NmU1XCIsXG5cdFx0XHRcIkFzaWEvUWF0YXJ8TE1UICswNCArMDN8LTNxLjggLTQwIC0zMHwwMTJ8LTIxSmZxLjggMjdCWHEuOHw5NmU0XCIsXG5cdFx0XHRcIkFzaWEvQmFrdXxMTVQgKzAzICswNCArMDV8LTNqLm8gLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzNqLm8gMWpVb2oubyBXQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCAxY00wIDlKZTAgMW8wMCAxMXowIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMHwyN2U1XCIsXG5cdFx0XHRcIkFzaWEvQmFuZ2tva3xCTVQgKzA3fC02Ry40IC03MHwwMXwtMjE4U0cuNHwxNWU2XCIsXG5cdFx0XHRcIkFzaWEvQmFybmF1bHxMTVQgKzA2ICswNyArMDh8LTV6IC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIxUzV6IHBDbnogMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcDkwIExFMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM3JkMFwiLFxuXHRcdFx0XCJBc2lhL0JlaXJ1dHxFRVQgRUVTVHwtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjFhcTAgMW9uMCAxNDEwIDFkYjAgMTlCMCAxaW4wIDFpcDAgV0wwIDFsUXAwIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCAxMWIwIHE2TjAgRW4wIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIDExYjAgMW9wMCAxMWIwIGRBMTAgMTdiMCAxaU4wIDE3YjAgMWlOMCAxN2IwIDFpTjAgMTdiMCAxdkIwIFNMMCAxbXAwIDEzejAgMWlOMCAxN2IwIDFpTjAgMTdiMCAxamQwIDEybjAgMWExMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMHwyMmU1XCIsXG5cdFx0XHRcIkFzaWEvQmlzaGtla3xMTVQgKzA1ICswNiArMDd8LTRXLm8gLTUwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0xUGM0Vy5vIGVVblcubyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJlMDAgMXRYMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxY1B1IDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjB8ODdlNFwiLFxuXHRcdFx0XCJBc2lhL0JydW5laXxMTVQgKzA3MzAgKzA4fC03RC5FIC03dSAtODB8MDEyfC0xS0lURC5FIGdEYzkuRXw0MmU0XCIsXG5cdFx0XHRcIkFzaWEvS29sa2F0YXxNTVQgSVNUICswNjMwfC01bC5hIC01dSAtNnV8MDEyMTIxfC0yek90bC5hIDFyMkxQLmEgMXVuMCBIQjAgN3pYMHwxNWU2XCIsXG5cdFx0XHRcIkFzaWEvQ2hpdGF8TE1UICswOCArMDkgKzEwfC03eC5RIC04MCAtOTAgLWEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMxMnwtMjFRN3guUSBwQW54LlEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM3JlMHwzM2U0XCIsXG5cdFx0XHRcIkFzaWEvQ2hvaWJhbHNhbnxMTVQgKzA3ICswOCArMTAgKzA5fC03QyAtNzAgLTgwIC1hMCAtOTB8MDEyMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQyNDI0MnwtMkFQSEMgMlVrb0MgY0tuMCAxZGEwIDFkZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDZoRDAgMTF6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDNEYjAgaDFmMCAxY0owIDFjUDAgMWNKMHwzOGUzXCIsXG5cdFx0XHRcIkFzaWEvU2hhbmdoYWl8Q1NUIENEVHwtODAgLTkwfDAxMDEwMTAxMDEwMTAxMDEwfC0xYzFJMCBMWDAgMTZwMCAxanowIDFNeXAwIFJiMCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowfDIzZTZcIixcblx0XHRcdFwiQXNpYS9Db2xvbWJvfE1NVCArMDUzMCArMDYgKzA2MzB8LTVqLncgLTV1IC02MCAtNnV8MDEyMzEzMjF8LTJ6T3RqLncgMXJGYk4udyAxenp1IDdBcHUgMjNkejAgMTF6dSBuM2N1fDIyZTVcIixcblx0XHRcdFwiQXNpYS9EaGFrYXxITVQgKzA2MzAgKzA1MzAgKzA2ICswN3wtNVIuayAtNnUgLTV1IC02MCAtNzB8MDEyMTM0M3wtMThMRlIuayAxdW5uLmsgSEIwIG02bjAgMmt4YnUgMWkwMHwxNmU2XCIsXG5cdFx0XHRcIkFzaWEvRGFtYXNjdXN8TE1UIEVFVCBFRVNUfC0ycC5jIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTIxSmVwLmMgSGVwLmMgMTdiMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxeFJCMCAxMVgwIDFvTjAgMTBMMCAxcEIwIDExYjAgMW9OMCAxMEwwIDFtcDAgMTNYMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCBOYjAgMUFOMCBOYjAgYmNwMCAxOVgwIDFncDAgMTlYMCAzbGQwIDF4WDAgVmQwIDFCejAgU3AwIDF2WDAgMTBwMCAxZHowIDFjTjAgMWNMMCAxZGIwIDFkYjAgMWcxMCAxYW4wIDFhcDAgMWRiMCAxZmQwIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxY3AwIDFkejAgMWMxMCAxZFgwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxZGIwIDFjTjAgMWRiMCAxY04wIDE5ejAgMWZCMCAxcUwwIDExQjAgMW9uMCBXcDAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDB8MjZlNVwiLFxuXHRcdFx0XCJBc2lhL0RpbGl8TE1UICswOCArMDl8LThtLmsgLTgwIC05MHwwMTIxMnwtMmxlOG0uayAxZG5YbS5rIDFuZkEwIFhsZDB8MTllNFwiLFxuXHRcdFx0XCJBc2lhL0R1YmFpfExNVCArMDR8LTNGLmMgLTQwfDAxfC0yMUpmRi5jfDM5ZTVcIixcblx0XHRcdFwiQXNpYS9EdXNoYW5iZXxMTVQgKzA1ICswNiArMDd8LTR6LmMgLTUwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxfC0xUGM0ei5jIGVVbnouYyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJoQjB8NzZlNFwiLFxuXHRcdFx0XCJBc2lhL0ZhbWFndXN0YXxMTVQgRUVUIEVFU1QgKzAzfC0yZi5NIC0yMCAtMzAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFWYzJmLk0gMmEzY2YuTSAxY0wwIDFxcDAgWHowIDE5QjAgMTlYMCAxZkIwIDFkYjAgMWNwMCAxY0wwIDFmQjAgMTlYMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMW8zMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxNVUwIDJLczAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDBcIixcblx0XHRcdFwiQXNpYS9HYXphfEVFVCBFRVNUIElTVCBJRFR8LTIwIC0zMCAtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMWMycTAgNVJiMCAxMHIwIDFweDAgMTBOMCAxcHowIDE2cDAgMWpCMCAxNnAwIDFqeDAgcEJkMCBWejAgMW9OMCAxMWIwIDFvTzAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDExZDAgMW9MMCBkVzAgaGZCMCBEYjAgMWZCMCBSYjAgbnBCMCAxMXowIDFDMTAgSUwwIDFzMTAgMTBuMCAxbzEwIFdMMCAxemQwIE9uMCAxbGQwIDExejAgMW8xMCAxNG4wIDFvMTAgMTRuMCAxbmQwIDEybjAgMW5kMCBYejAgMXExMCAxMm4wIE0xMCBDMDAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFvMDAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxN2MwIDFpbzAgMThOMCAxYnowIDE5ejAgMWdwMCAxNjEwIDFpTDAgMTF6MCAxbzEwIDE0bzAgMWxBMSBTS1ggMXhkMSBNS1ggMUFOMCAxYTAwIDFmQTAgMWNMMCAxY04wIDFuWDAgMTIxMCAxbnowIDEyMjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDB8MThlNVwiLFxuXHRcdFx0XCJBc2lhL0hlYnJvbnxFRVQgRUVTVCBJU1QgSURUfC0yMCAtMzAgLTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMWMycTAgNVJiMCAxMHIwIDFweDAgMTBOMCAxcHowIDE2cDAgMWpCMCAxNnAwIDFqeDAgcEJkMCBWejAgMW9OMCAxMWIwIDFvTzAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDExZDAgMW9MMCBkVzAgaGZCMCBEYjAgMWZCMCBSYjAgbnBCMCAxMXowIDFDMTAgSUwwIDFzMTAgMTBuMCAxbzEwIFdMMCAxemQwIE9uMCAxbGQwIDExejAgMW8xMCAxNG4wIDFvMTAgMTRuMCAxbmQwIDEybjAgMW5kMCBYejAgMXExMCAxMm4wIE0xMCBDMDAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFvMDAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxN2MwIDFpbzAgMThOMCAxYnowIDE5ejAgMWdwMCAxNjEwIDFpTDAgMTJMMCAxbU4wIDE0bzAgMWxjMCBUYjAgMXhkMSBNS1ggYkIwIGNuMCAxY04wIDFhMDAgMWZBMCAxY0wwIDFjTjAgMW5YMCAxMjEwIDFuejAgMTIyMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMHwyNWU0XCIsXG5cdFx0XHRcIkFzaWEvSG9fQ2hpX01pbmh8TE1UIFBMTVQgKzA3ICswOCArMDl8LTc2LkUgLTc2LnUgLTcwIC04MCAtOTB8MDEyMzQyMzIzMnwtMnlDNzYuRSBiSzAwLmEgMWg3YjYudSA1bHowIDE4bzAgM09xMCBrNWIwIGFXMDAgQkFNMHw5MGU1XCIsXG5cdFx0XHRcIkFzaWEvSG9uZ19Lb25nfExNVCBIS1QgSEtTVCBKU1R8LTdBLkcgLTgwIC05MCAtOTB8MDEyMTMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMkNGSEEuRyAxc0VQNi5HIDFjTDAgeWx1IDkzWDAgMXFRdSAxdFgwIFJkMCAxSW4wIE5CMCAxY0wwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWtMMCAxNE4wIDFuWDAgVTEwIDF0ejAgVTEwIDF3bjAgUmQwIDF3bjAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgVTEwIDF0ejAgVTEwIDF0ejAgMTdkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgczEwIDFWejAgMWNOMCAxY0wwIDFjTjAgMWNMMCA2ZmQwIDE0bjB8NzNlNVwiLFxuXHRcdFx0XCJBc2lhL0hvdmR8TE1UICswNiArMDcgKzA4fC02Ni5BIC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMkFQRzYuQSAyVWtvNi5BIGNLbjAgMWRiMCAxZGQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCA2aEQwIDExejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCBrRXAwIDFjSjAgMWNQMCAxY0owfDgxZTNcIixcblx0XHRcdFwiQXNpYS9Jcmt1dHNrfElNVCArMDcgKzA4ICswOXwtNlYuNSAtNzAgLTgwIC05MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjF6R1YuNSBwalhWLjUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8NjBlNFwiLFxuXHRcdFx0XCJFdXJvcGUvSXN0YW5idWx8SU1UIEVFVCBFRVNUICswNCArMDN8LTFVLlUgLTIwIC0zMCAtNDAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzNDM0MzQzNDM0MjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyNHwtMm9nTlUuVSBkenpVLlUgMTFiMCA4dEIwIDFvbjAgMTQxMCAxZGIwIDE5QjAgMWluMCAzUmQwIFVuMCAxb04wIDExYjAgelNwMCBDTDAgbU4wIDFWejAgMWdOMCAxcHowIDVSZDAgMWZ6MCAxeXAwIE1MMCAxa3AwIDE3YjAgMWlwMCAxN2IwIDFmQjAgMTlYMCAxakIwIDE4TDAgMWlwMCAxN3owIHFkZDAgeFgwIDNTMTAgVHowIGRBMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDF6ZTAgMTFCMCBXTTAgMXFPMCBXSTAgMW5YMCAxckIwIDEwTDAgMTFCMCAxaW4wIDE3ZDAgMWluMCAycFgwIDE5RTAgMWZVMCAxNlEwIDFpSTAgMTZRMCAxaUkwIDFWZDAgcGIwIDNLcDAgMTRvMCAxZGUwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdPMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFhjMCAxcW8wIFdNMCAxcU0wIDExQTAgMW8wMCAxMjAwIDFuQTAgMTFBMCAxdEEwIFUwMCAxNXcwfDEzZTZcIixcblx0XHRcdFwiQXNpYS9KYWthcnRhfEJNVCArMDcyMCArMDczMCArMDkgKzA4IFdJQnwtNzcuYyAtN2sgLTd1IC05MCAtODAgLTcwfDAxMjMyNDI1fC0xUTBUayBsdU0wIG1Qek8gOHZXdSA2a3B1IDRQWHUgeGhjdXwzMWU2XCIsXG5cdFx0XHRcIkFzaWEvSmF5YXB1cmF8TE1UICswOSArMDkzMCBXSVR8LTltLk0gLTkwIC05dSAtOTB8MDEyM3wtMXV1OW0uTSBzTU1tLk0gTDRudXwyNmU0XCIsXG5cdFx0XHRcIkFzaWEvSmVydXNhbGVtfEpNVCBJU1QgSURUIElERFR8LTJrLkUgLTIwIC0zMCAtNDB8MDEyMTIxMjEyMTIxMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTI2QmVrLkUgU3lNay5FIDVSYjAgMTByMCAxcHgwIDEwTjAgMXB6MCAxNnAwIDFqQjAgMTZwMCAxangwIDNMQjAgRW0wIG9yMCAxY24wIDFkQjAgMTZuMCAxME8wIDFqYTAgMXRDMCAxNG8wIDFjTTAgMWEwMCAxMUEwIDFOYTAgQW4wIDFNUDAgQUowIDFLcDAgTEMwIDFvbzAgV2wwIEVRTjAgRGIwIDFmQjAgUmIwIG5wQjAgMTF6MCAxQzEwIElMMCAxczEwIDEwbjAgMW8xMCBXTDAgMXpkMCBPbjAgMWxkMCAxMXowIDFvMTAgMTRuMCAxbzEwIDE0bjAgMW5kMCAxMm4wIDFuZDAgWHowIDFxMTAgMTJuMCAxaEIwIDFkWDAgMWVwMCAxYUwwIDFlTjAgMTdYMCAxbmYwIDExejAgMXRCMCAxOVcwIDFlMTAgMTdiMCAxZXAwIDFnTDAgMThOMCAxZnowIDFlTjAgMTdiMCAxZ3EwIDFnbjAgMTlkMCAxZHowIDFjMTAgMTdYMCAxaEIwIDFnbjAgMTlkMCAxZHowIDFjMTAgMTdYMCAxa3AwIDFkejAgMWMxMCAxYUwwIDFlTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFyejAgVzEwIDFyejAgVzEwIDFyejAgMTBOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFyejAgVzEwIDFyejAgVzEwIDFyejAgVzEwIDFyejAgMTBOMCAxb0wwIDEwTjAgMW9MMHw4MWU0XCIsXG5cdFx0XHRcIkFzaWEvS2FidWx8KzA0ICswNDMwfC00MCAtNHV8MDF8LTEwUXMwfDQ2ZTVcIixcblx0XHRcdFwiQXNpYS9LYW1jaGF0a2F8TE1UICsxMSArMTIgKzEzfC1heS5BIC1iMCAtYzAgLWQwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMVNMS3kuQSBpdlh5LkEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMHwxOGU0XCIsXG5cdFx0XHRcIkFzaWEvS2FyYWNoaXxMTVQgKzA1MzAgKzA2MzAgKzA1IFBLVCBQS1NUfC00cy5jIC01dSAtNnUgLTUwIC01MCAtNjB8MDEyMTM0NTQ1NDU0fC0yeG9zcy5jIDFxT0tXLmMgN3pYMCBldXAwIExxTXUgMWZ5MDAgMWNMMCBkSzEwIDExYjAgMTYxMCAxalgwfDI0ZTZcIixcblx0XHRcdFwiQXNpYS9VcnVtcWl8TE1UICswNnwtNU8uayAtNjB8MDF8LTFHZ3RPLmt8MzJlNVwiLFxuXHRcdFx0XCJBc2lhL0thdGhtYW5kdXxMTVQgKzA1MzAgKzA1NDV8LTVGLmcgLTV1IC01SnwwMTJ8LTIxSmhGLmcgMkVHTWIuZ3wxMmU1XCIsXG5cdFx0XHRcIkFzaWEvS2hhbmR5Z2F8TE1UICswOCArMDkgKzEwICsxMXwtOTIuZCAtODAgLTkwIC1hMCAtYjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjM0MzQzNDM0MzQzNDM0MzQzMnwtMjFROTIuZCBwQXAyLmQgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCBxSzAgeU4wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDE3VjAgN3pEMHw2NmUyXCIsXG5cdFx0XHRcIkFzaWEvS3Jhc25veWFyc2t8TE1UICswNiArMDcgKzA4fC02Yi5xIC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yMUhpYi5xIHByQWIucSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwxMGU1XCIsXG5cdFx0XHRcIkFzaWEvS3VhbGFfTHVtcHVyfFNNVCArMDcgKzA3MjAgKzA3MzAgKzA5ICswOHwtNlQucCAtNzAgLTdrIC03dSAtOTAgLTgwfDAxMjM0MzV8LTJCZzZULnAgMTdhblQucCBsNVhFIDE3Yk8gOEZ5dSAxc28xdXw3MWU1XCIsXG5cdFx0XHRcIkFzaWEvS3VjaGluZ3xMTVQgKzA3MzAgKzA4ICswODIwICswOXwtN2wuayAtN3UgLTgwIC04ayAtOTB8MDEyMzIzMjMyMzIzMjMyMzI0MnwtMUtJVGwuayBnRGJQLmsgNnludSBBbkUgMU8wayBBbkUgMU5BayBBbkUgMU5BayBBbkUgMU5BayBBbkUgMU8wayBBbkUgMU5BayBBbkUgcEFrIDhGejB8MTNlNFwiLFxuXHRcdFx0XCJBc2lhL01hY2F1fExNVCBDU1QgQ0RUfC03eS5rIC04MCAtOTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybGU4MCAxWE8zdSAxd24wIFJkMCAxd24wIFI5dSAxd3F1IFUxMCAxdHowIFRWdSAxdHowIDE3Z3UgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjSnUgMWNMMCAxY04wIDFmejAgMWNOMCAxY091IDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjSnUgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwfDU3ZTRcIixcblx0XHRcdFwiQXNpYS9NYWdhZGFufExNVCArMTAgKzExICsxMnwtYTMuYyAtYTAgLWIwIC1jMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMTJ8LTFQY2EzLmMgZVVvMy5jIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNDcTB8OTVlM1wiLFxuXHRcdFx0XCJBc2lhL01ha2Fzc2FyfExNVCBNTVQgKzA4ICswOSBXSVRBfC03Vi5BIC03Vi5BIC04MCAtOTAgLTgwfDAxMjM0fC0yMUpqVi5BIHZmYzAgbXlMVi5BIDhNTDB8MTVlNVwiLFxuXHRcdFx0XCJBc2lhL01hbmlsYXwrMDggKzA5fC04MCAtOTB8MDEwMTAxMDEwfC0xa0pJMCBBTDAgY0sxMCA2NVgwIG1YQjAgdlgwIFZLMTAgMWRiMHwyNGU2XCIsXG5cdFx0XHRcIkFzaWEvTmljb3NpYXxMTVQgRUVUIEVFU1R8LTJkLnMgLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVZjMmQucyAyYTNjZC5zIDFjTDAgMXFwMCBYejAgMTlCMCAxOVgwIDFmQjAgMWRiMCAxY3AwIDFjTDAgMWZCMCAxOVgwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxbzMwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzJlNFwiLFxuXHRcdFx0XCJBc2lhL05vdm9rdXpuZXRza3xMTVQgKzA2ICswNyArMDh8LTVNLk0gLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyfC0xUGN0TS5NIGVVTE0uTSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wfDU1ZTRcIixcblx0XHRcdFwiQXNpYS9Ob3Zvc2liaXJza3xMTVQgKzA2ICswNyArMDh8LTV2LkUgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjFRbnYuRSBwQUZ2LkUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIG1sMCBPczAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgNGVOMHwxNWU1XCIsXG5cdFx0XHRcIkFzaWEvT21za3xMTVQgKzA1ICswNiArMDd8LTRSLnUgLTUwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTIyNHNSLnUgcE1MUi51IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDEyZTVcIixcblx0XHRcdFwiQXNpYS9PcmFsfExNVCArMDMgKzA1ICswNiArMDR8LTNwLm8gLTMwIC01MCAtNjAgLTQwfDAxMjMyMzIzMjMyMzIzMjMyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyfC0xUGMzcC5vIGVVb3AubyAyM0NLMCAzRGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxZkEwIDFjTTAgMWNNMCBJTTAgMUVNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwfDI3ZTRcIixcblx0XHRcdFwiQXNpYS9Qb250aWFuYWt8TE1UIFBNVCArMDczMCArMDkgKzA4IFdJVEEgV0lCfC03aC5rIC03aC5rIC03dSAtOTAgLTgwIC04MCAtNzB8MDEyMzI0MjU2fC0ydWE3aC5rIFhFMDAgbXVuTC5rIDhSYXUgNmtwdSA0UFh1IHhoY3UgV3FudXwyM2U0XCIsXG5cdFx0XHRcIkFzaWEvUHlvbmd5YW5nfExNVCBLU1QgSlNUIEtTVHwtOG4gLTh1IC05MCAtOTB8MDEyMzEzfC0ydW04biA5N1hSIDFsVHp1IDJPbmMwIDZCQXV8MjllNVwiLFxuXHRcdFx0XCJBc2lhL1F5enlsb3JkYXxMTVQgKzA0ICswNSArMDZ8LTRsLlEgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyM3wtMVBjNGwuUSBlVW9sLlEgMjNDTDAgM0RiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDNhbzAgMUVNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwfDczZTRcIixcblx0XHRcdFwiQXNpYS9SYW5nb29ufFJNVCArMDYzMCArMDl8LTZvLkwgLTZ1IC05MHwwMTIxfC0yMUppby5MIFNtblMuTCA3ajl1fDQ4ZTVcIixcblx0XHRcdFwiQXNpYS9TYWtoYWxpbnxMTVQgKzA5ICsxMSArMTIgKzEwfC05dS5NIC05MCAtYjAgLWMwIC1hMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjQyMzIzMjMyMzIzMjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MnwtMkFHVnUuTSAxQm9NdS5NIDFxRmEwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDJwQjAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmQwfDU4ZTRcIixcblx0XHRcdFwiQXNpYS9TYW1hcmthbmR8TE1UICswNCArMDUgKzA2fC00ci5SIC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xUGM0ci5SIGVVb3IuUiAyM0NMMCAzRGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wfDM2ZTRcIixcblx0XHRcdFwiQXNpYS9TZW91bHxMTVQgS1NUIEpTVCBLU1QgS0RUIEtEVHwtOHIuUSAtOHUgLTkwIC05MCAtOXUgLWEwfDAxMjMxNDE0MTQxNDE0MTQxMzUzNTN8LTJ1bThyLlEgOTdYVi5RIDFtMXp1IGtLbzAgMkkwdSBPTDAgMUZCMCBSYjAgMXFOMCBUWDAgMXRCMCBUWDAgMXRCMCBUWDAgMXRCMCBUWDAgMmFwMCAxMkZCdSAxMUEwIDFvMDAgMTFBMHwyM2U2XCIsXG5cdFx0XHRcIkFzaWEvU3JlZG5la29seW1za3xMTVQgKzEwICsxMSArMTJ8LWFlLlEgLWEwIC1iMCAtYzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQY2FlLlEgZVVvZS5RIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDM1ZTJcIixcblx0XHRcdFwiQXNpYS9UYWlwZWl8Q1NUIEpTVCBDRFR8LTgwIC05MCAtOTB8MDEwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjB8LTFpdzgwIGpvTTAgMXlvMCBUejAgMWlwMCAxalgwIDFjTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxME4wIDFCWDAgMTBwMCAxcHowIDEwcDAgMXB6MCAxMHAwIDFkYjAgMWRkMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFCQjAgTUwwIDFCZDAgTUwwIHVxMTAgMWRiMCAxY04wIDFkYjAgOTdCMCBBTDB8NzRlNVwiLFxuXHRcdFx0XCJBc2lhL1Rhc2hrZW50fExNVCArMDUgKzA2ICswN3wtNEIuYiAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjF8LTFQYzRCLmIgZVVuQi5iIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMHwyM2U1XCIsXG5cdFx0XHRcIkFzaWEvVGJpbGlzaXxUQk1UICswMyArMDQgKzA1fC0yWC5iIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTFQYzJYLmIgMWpVblguYiBXQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCAxY0swIDFjTDAgMWNOMCAxY0wwIDFjTjAgMnB6MCAxY0wwIDFmQjAgM056MCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCBBbjAgT3MwIFdNMHwxMWU1XCIsXG5cdFx0XHRcIkFzaWEvVGVocmFufExNVCBUTVQgKzAzMzAgKzA0ICswNSArMDQzMHwtM3AuSSAtM3AuSSAtM3UgLTQwIC01MCAtNHV8MDEyMzQzMjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTJ8LTJidERwLkkgMWQzYzAgMWh1TFQuSSBUWHUgMXB6MCBzTjAgdkF1IDFjTDAgMWRCMCAxZW4wIHBOQjAgVUwwIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgNjRwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejB8MTRlNlwiLFxuXHRcdFx0XCJBc2lhL1RoaW1waHV8TE1UICswNTMwICswNnwtNVcuQSAtNXUgLTYwfDAxMnwtU3U1Vy5BIDFCR01zLkF8NzllM1wiLFxuXHRcdFx0XCJBc2lhL1Rva3lvfEpTVCBKRFR8LTkwIC1hMHwwMTAxMDEwMTB8LVFKSjAgUmIwIDFsZDAgMTRuMCAxemQwIE9uMCAxemQwIE9uMHwzOGU2XCIsXG5cdFx0XHRcIkFzaWEvVG9tc2t8TE1UICswNiArMDcgKzA4fC01RC5QIC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIxTmhELlAgcHh6RC5QIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgY28wIDFiQjAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzUXAwfDEwZTVcIixcblx0XHRcdFwiQXNpYS9VbGFhbmJhYXRhcnxMTVQgKzA3ICswOCArMDl8LTc3LncgLTcwIC04MCAtOTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yQVBINy53IDJVa283LncgY0tuMCAxZGIwIDFkZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDZoRDAgMTF6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIGtFcDAgMWNKMCAxY1AwIDFjSjB8MTJlNVwiLFxuXHRcdFx0XCJBc2lhL1VzdC1OZXJhfExNVCArMDggKzA5ICsxMiArMTEgKzEwfC05dy5TIC04MCAtOTAgLWMwIC1iMCAtYTB8MDEyMzQzNDM0MzQzNDM0MzQzNDM0MzQ1NDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1fC0yMVE5dy5TIHBBcHcuUyAyM0NMMCAxZDkwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMTdWMCA3ekQwfDY1ZTJcIixcblx0XHRcdFwiQXNpYS9WbGFkaXZvc3Rva3xMTVQgKzA5ICsxMCArMTF8LThMLnYgLTkwIC1hMCAtYjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFTSklMLnYgaXRYTC52IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDYwZTRcIixcblx0XHRcdFwiQXNpYS9ZYWt1dHNrfExNVCArMDggKzA5ICsxMHwtOEMuVyAtODAgLTkwIC1hMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjFROEMuVyBwQW9DLlcgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MjhlNFwiLFxuXHRcdFx0XCJBc2lhL1lla2F0ZXJpbmJ1cmd8TE1UIFBNVCArMDQgKzA1ICswNnwtNDIueCAtM0ouNSAtNDAgLTUwIC02MHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDMyMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTJhZzQyLnggN21RaC5zIHFCdkouNSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwxNGU1XCIsXG5cdFx0XHRcIkFzaWEvWWVyZXZhbnxMTVQgKzAzICswNCArMDV8LTJXIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzJXIDFqVW5XIFdDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgNFJYMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTB8MTNlNVwiLFxuXHRcdFx0XCJBdGxhbnRpYy9Bem9yZXN8SE1UIC0wMiAtMDEgKzAwIFdFVHwxUy53IDIwIDEwIDAgMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjEyMzIxMjMyMTIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzNDMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMmxkVzAgYVBYMCBTcDAgTFgwIDF2YzAgVGMwIDF1TTAgU00wIDF2YzAgVGMwIDF2YzAgU00wIDF2YzAgNjYwMCAxY28wIDNFMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAzSTAwIDE3YzAgMWNNMCAxY00wIDNGYzAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERjMCAxdEEwIDFjTTAgMWRjMCAxNDAwIGdMMCBJTTAgczEwIFUwMCBkWDAgUmMwIHBkMCBSYzAgZ0wwIE9vMCBwZDAgUmMwIGdMMCBPbzAgcGQwIDE0bzAgMWNNMCAxY1AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAzQ28wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIHFJbDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY0wwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDI1ZTRcIixcblx0XHRcdFwiQXRsYW50aWMvQmVybXVkYXxMTVQgQVNUIEFEVHw0ai5pIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFCblJFLkcgMUxUYkUuRyAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjVlM1wiLFxuXHRcdFx0XCJBdGxhbnRpYy9DYW5hcnl8TE1UIC0wMSBXRVQgV0VTVHwxMS5BIDEwIDAgLTEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xVXRhVy5vIFhQQVcubyAxbEFLMCAxYTEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NTRlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9DYXBlX1ZlcmRlfExNVCAtMDIgLTAxfDF5LjQgMjAgMTB8MDEyMTJ8LTJsZFcwIDFlRW8wIDd6WDAgMWRqZjB8NTBlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9GYXJvZXxMTVQgV0VUIFdFU1R8ci40IDAgLTEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ydVNudy5VIDJXZ293LlUgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDllM1wiLFxuXHRcdFx0XCJBdGxhbnRpYy9NYWRlaXJhfEZNVCAtMDEgKzAwICswMSBXRVQgV0VTVHwxNy5BIDEwIDAgLTEwIDAgLTEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMTIzMjEyMzIxMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0ybGRYMCBhUFgwIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcUlsMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjdlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9SZXlramF2aWt8TE1UIC0wMSArMDAgR01UfDFzIDEwIDAgMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTJ1V213IG1mYXcgMUJkMCBNTDAgMUxCMCBDbjAgMUxCMCAzZlgwIEMxMCBIclgwIDFjTzAgTEIwIDFFTDAgTEEwIDFDMDAgT28wIDF3bzAgUmMwIDF3bzAgUmMwIDF3bzAgUmMwIDF6YzAgT28wIDF6YzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbGMwIDE0bzAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTRvMHwxMmU0XCIsXG5cdFx0XHRcIkF0bGFudGljL1NvdXRoX0dlb3JnaWF8LTAyfDIwfDB8fDMwXCIsXG5cdFx0XHRcIkF0bGFudGljL1N0YW5sZXl8U01UIC0wNCAtMDMgLTAyfDNQLm8gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0ya0p3OC5BIDEyYkE4LkEgMTlYMCAxZkIwIDE5WDAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCBDbjAgMUNjMTAgV0wwIDFxTDAgVTEwIDF0ejAgMm1OMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXR6MCBVMTAgMXR6MCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXR6MCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFOMCBVMTAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCBVMTB8MjFlMlwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5M2xYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxNG8wIDFvMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgVTAwIDFxTTAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxMUEwIDFvMDAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8NDBlNVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQWRlbGFpZGV8QUNTVCBBQ0RUfC05dSAtYXV8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbHQgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIFdNMCAxcU0wIFJjMCAxemMwIFUwMCAxdEEwIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MTFlNVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQnJpc2JhbmV8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTB8LTI5M2xYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgSDFBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzB8MjBlNVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQnJva2VuX0hpbGx8QUNTVCBBQ0RUfC05dSAtYXV8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbHQgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDE0bzAgMW8wMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIDE0bzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDE4ZTNcIixcblx0XHRcdFwiQXVzdHJhbGlhL0N1cnJpZXxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOUU4MCAxOVgwIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMXFNMCBXTTAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXdvMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMUEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDExQTAgMW8wMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDc0NlwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvRGFyd2lufEFDU1QgQUNEVHwtOXUgLWF1fDAxMDEwMTAxMHwtMjkzbHQgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwfDEyZTRcIixcblx0XHRcdFwiQXVzdHJhbGlhL0V1Y2xhfCswODQ1ICswOTQ1fC04SiAtOUp8MDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkza0kgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWdTcDAgT28wIGw1QTAgT28wIGlKQTAgRzAwIHpVMDAgSU0wIDFxTTAgMTFBMCAxbzAwIDExQTB8MzY4XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Ib2JhcnR8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOUU4MCAxOVgwIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIFZmQjAgMWNNMCAxbzAwIFJjMCAxd28wIFJjMCAxd28wIFUwMCAxd28wIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMXFNMCBXTTAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXdvMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMUEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDExQTAgMW8wMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDIxZTRcIixcblx0XHRcdFwiQXVzdHJhbGlhL0xvcmRfSG93ZXxBRVNUICsxMDMwICsxMTMwICsxMXwtYTAgLWF1IC1idSAtYjB8MDEyMTIxMjEyMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxM3xyYUMwIDF6ZHUgUmIwIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgVFh1IDFxTXUgV0x1IDF0QXUgV0x1IDF0QXUgVFh1IDF0QXUgT251IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxcU11IFdMdSAxMUF1IDFuWHUgMXFNdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMXFNdSBXTHUgMXFNdSAxMXp1IDFvMHUgV0x1IDFxTXUgMTRudSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWZBdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWZBdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFmenUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXV8MzQ3XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9MaW5kZW1hbnxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI5M2xYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgSDFBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzB8MTBcIixcblx0XHRcdFwiQXVzdHJhbGlhL01lbGJvdXJuZXxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsWCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgVTAwIDFxTTAgV00wIDFxTTAgMTFBMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMTFBMCAxbzAwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIDE0bzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDM5ZTVcIixcblx0XHRcdFwiQXVzdHJhbGlhL1BlcnRofEFXU1QgQVdEVHwtODAgLTkwfDAxMDEwMTAxMDEwMTAxMDEwMTB8LTI5M2pYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFnU3AwIE9vMCBsNUEwIE9vMCBpSkEwIEcwMCB6VTAwIElNMCAxcU0wIDExQTAgMW8wMCAxMUEwfDE4ZTVcIixcblx0XHRcdFwiQ0VUfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMTZNMCAxZ01NMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDBcIixcblx0XHRcdFwiUGFjaWZpYy9FYXN0ZXJ8RU1UIC0wNyAtMDYgLTA1fDdoLnMgNzAgNjAgNTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0xdVNnRy53IDFzNElHLncgV0wwIDF6ZDAgT24wIDFpcDAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWxkMCAxNG4wIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDJwQTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWZCMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCA0Nm4wIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMHwzMGUyXCIsXG5cdFx0XHRcIkNTVDZDRFR8Q1NUIENEVCBDV1QgQ1BUfDYwIDUwIDUwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkVFVHxFRVQgRUVTVHwtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHxoREIwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJFdXJvcGUvRHVibGlufERNVCBJU1QgR01UIEJTVCBJU1R8cC5sIC15LkQgMCAtMTAgLTEwfDAxMjMyMzIzMjMyMzI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyfC0yYXg5eS5EIFJjMCAxZnp5LkQgMTRNMCAxZmMwIDFnMDAgMWNvMCAxZGMwIDFjbzAgMW9vMCAxNDAwIDFkYzAgMTlBMCAxaW8wIDFpbzAgV00wIDFvMDAgMTRvMCAxbzAwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMXFNMCBEYzAgZzYwMCAxNG8wIDF3bzAgMTdjMCAxaW8wIDExQTAgMW8wMCAxN2MwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxbGMwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFhMDAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgSU0wIDkwbzAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTF6MCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEyZTVcIixcblx0XHRcdFwiRVNUfEVTVHw1MHwwfFwiLFxuXHRcdFx0XCJFU1Q1RURUfEVTVCBFRFQgRVdUIEVQVHw1MCA0MCA0MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXQwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHg0MCBpdjAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R01UfDB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC0xfCswMXwtMTB8MHxcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8KzEwfC1hMHwwfHwyNWU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9obnBlaXwrMTF8LWIwfDB8fDM0ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8KzEyfC1jMHwwfHwyOWUzXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMTN8KzEzfC1kMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTE0fCsxNHwtZTB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC0yfCswMnwtMjB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC0zfCswM3wtMzB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC00fCswNHwtNDB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC01fCswNXwtNTB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC02fCswNnwtNjB8MHxcIixcblx0XHRcdFwiSW5kaWFuL0NocmlzdG1hc3wrMDd8LTcwfDB8fDIxZTJcIixcblx0XHRcdFwiRXRjL0dNVC04fCswOHwtODB8MHxcIixcblx0XHRcdFwiUGFjaWZpYy9QYWxhdXwrMDl8LTkwfDB8fDIxZTNcIixcblx0XHRcdFwiRXRjL0dNVCsxfC0wMXwxMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzEwfC0xMHxhMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzExfC0xMXxiMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzEyfC0xMnxjMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzN8LTAzfDMwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrNHwtMDR8NDB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs1fC0wNXw1MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzZ8LTA2fDYwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrN3wtMDd8NzB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs4fC0wOHw4MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzl8LTA5fDkwfDB8XCIsXG5cdFx0XHRcIkV0Yy9VQ1R8VUNUfDB8MHxcIixcblx0XHRcdFwiRXRjL1VUQ3xVVEN8MHwwfFwiLFxuXHRcdFx0XCJFdXJvcGUvQW1zdGVyZGFtfEFNVCBOU1QgKzAxMjAgKzAwMjAgQ0VTVCBDRVR8LWoudyAtMWoudyAtMWsgLWsgLTIwIC0xMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIzMjMyMzQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDV8LTJhRmNqLncgMTFiMCAxaVAwIDExQTAgMWlvMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFjbzAgMWlvMCAxeW8wIFBjMCAxYTAwIDFmQTAgMUJjMCBNbzAgMXRjMCBVbzAgMXRBMCBVMDAgMXVvMCBXMDAgMXMwMCBWQTAgMXNvMCBWYzAgMXNNMCBVTTAgMXdvMCBSYzAgMXUwMCBXbzAgMXJBMCBXMDAgMXMwMCBWQTAgMXNNMCBVTTAgMXcwMCBmVjAgQkNYLncgMXRBMCBVMDAgMXUwMCBXbzAgMXNtMCA2MDFrIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDE2TTAgMWdNTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE2ZTVcIixcblx0XHRcdFwiRXVyb3BlL0FuZG9ycmF8V0VUIENFVCBDRVNUfDAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LVVCQTAgMXhJTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw3OWUzXCIsXG5cdFx0XHRcIkV1cm9wZS9Bc3RyYWtoYW58TE1UICswMyArMDQgKzA1fC0zYy5jIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMVBjcmMuYyBlVU1jLmMgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMWNNMCAzQ28wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmQwXCIsXG5cdFx0XHRcIkV1cm9wZS9BdGhlbnN8QU1UIEVFVCBFRVNUIENFU1QgQ0VUfC0xeS5RIC0yMCAtMzAgLTIwIC0xMHwwMTIxMjM0MzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJhNjF4LlEgQ05ieC5RIG1uMCBrVTEwIDliMCAzRXMwIFhhMCAxZmIwIDFkZDAgazNYMCBOejAgU0NwMCAxdmMwIFNPMCAxY00wIDFhMDAgMWFvMCAxZmMwIDFhMTAgMWZHMCAxY2cwIDFkWDAgMWJYMCAxY1EwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM1ZTVcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxHTVQgQlNUIEJEU1R8MCAtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjEyMTIxMjEyMTAxMDEyMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJheGEwIFJjMCAxZkEwIDE0TTAgMWZjMCAxZzAwIDFjbzAgMWRjMCAxY28wIDFvbzAgMTQwMCAxZGMwIDE5QTAgMWlvMCAxaW8wIFdNMCAxbzAwIDE0bzAgMW8wMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFxTTAgRGMwIDJSejAgRGMwIDF6YzAgT28wIDF6YzAgUmMwIDF3bzAgMTdjMCAxaU0wIEZBMCB4QjAgMWZBMCAxYTAwIDE0bzAgYmIwIExBMCB4QjAgUmMwIDF3bzAgMTFBMCAxbzAwIDE3YzAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFsYzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWEwMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBJTTAgOTBvMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMXowIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTBlNlwiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMTlSQzAgM0lQMCBXTTAgMWZBMCAxY00wIDFjTTAgMXJjMCBRbzAgMXZtbzAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEyZTVcIixcblx0XHRcdFwiRXVyb3BlL0JlcmxpbnxDRVQgQ0VTVCBDRU1UfC0xMCAtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMjEwMTAxMjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIGtMMCBOYzAgbTEwIFdNMCAxYW8wIDFjcDAgZFgwIGp6MCBEZDAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxZWhBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDFlNVwiLFxuXHRcdFx0XCJFdXJvcGUvUHJhZ3VlfENFVCBDRVNUIEdNVHwtMTAgLTIwIDB8MDEwMTAxMDEwMTAxMDEwMTAyMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxcU0wIDExYzAgbXAwIHhBMCBtbjAgMTdjMCAxaW8wIDE3YzAgMWZjMCAxYW8wIDFiTmMwIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTNlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQnJ1c3NlbHN8V0VUIENFVCBDRVNUIFdFU1R8MCAtMTAgLTIwIC0xMHwwMTIxMjEyMTAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZWhjMCAzelgwIDExYzAgMWlPMCAxMUEwIDFvMDAgMTFBMCBteTAgSWMwIDFxTTAgUmMwIDFFTTAgVU0wIDF1MDAgMTBvMCAxaW8wIDFpbzAgMTdjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTMwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIHkwMCA1V24wIFdNMCAxZkEwIDFjTTAgMTZNMCAxaU0wIDE2TTAgMUMwMCBVbzAgMWVlbzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDIxZTVcIixcblx0XHRcdFwiRXVyb3BlL0J1Y2hhcmVzdHxCTVQgRUVUIEVFU1R8LTFJLm8gLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xeEFwSS5vIDIwTEkubyBSQTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFBeGMwIE9uMCAxZkEwIDFhMTAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjSzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExRTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxOWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9CdWRhcGVzdHxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFpcDAgMTdiMCAxb3AwIDF0YjAgUTJtMCAzTmUwIFdNMCAxZkEwIDFjTTAgMWNNMCAxb0owIDFkYzAgMTAzMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFpTTAgMWZBMCA4SGEwIFJiMCAxd04wIFJiMCAxQkIwIEx6MCAxQzIwIExCMCBTTlgwIDFhMTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxN2U1XCIsXG5cdFx0XHRcIkV1cm9wZS9adXJpY2h8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMTlMYzAgMTFBMCAxbzAwIDExQTAgMXhHMTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzhlNFwiLFxuXHRcdFx0XCJFdXJvcGUvQ2hpc2luYXV8Q01UIEJNVCBFRVQgRUVTVCBDRVNUIENFVCBNU0sgTVNEfC0xVCAtMUkubyAtMjAgLTMwIC0yMCAtMTAgLTMwIC00MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzQ1NDU0Njc2NzY3Njc2NzY3Njc2NzY3NjczMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTI2amRUIHdHTWEuQSAyMExJLm8gUkEwIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAyN0EwIDJlbjAgMzlnMCBXTTAgMWZBMCAxY00wIFY5MCAxdDd6MCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBnTDAgV08wIDFjTTAgMWNNMCAxY0swIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExRDAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw2N2U0XCIsXG5cdFx0XHRcIkV1cm9wZS9Db3BlbmhhZ2VufENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF6QzAgVHowIFZ1TzAgNjBxMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCBTMDAgMUhBMCBOYzAgMUMwMCBEYzAgMU5jMCBBbzAgMWg1QTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEyZTVcIixcblx0XHRcdFwiRXVyb3BlL0dpYnJhbHRhcnxHTVQgQlNUIEJEU1QgQ0VUIENFU1R8MCAtMTAgLTIwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMTIxMjEyMTIxMDEwMTIxMDEwMTAxMDEwMTAxMDEwMTAxMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC0yYXhhMCBSYzAgMWZBMCAxNE0wIDFmYzAgMWcwMCAxY28wIDFkYzAgMWNvMCAxb28wIDE0MDAgMWRjMCAxOUEwIDFpbzAgMWlvMCBXTTAgMW8wMCAxNG8wIDFvMDAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxcU0wIERjMCAyUnowIERjMCAxemMwIE9vMCAxemMwIFJjMCAxd28wIDE3YzAgMWlNMCBGQTAgeEIwIDFmQTAgMWEwMCAxNG8wIGJiMCBMQTAgeEIwIFJjMCAxd28wIDExQTAgMW8wMCAxN2MwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxbGMwIDE3YzAgMWZBMCAxMEp6MCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDMwZTNcIixcblx0XHRcdFwiRXVyb3BlL0hlbHNpbmtpfEhNVCBFRVQgRUVTVHwtMUQuTiAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFXdU5ELk4gT1VMRC5OIDFkQTAgMXhHcTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvS2FsaW5pbmdyYWR8Q0VUIENFU1QgQ0VUIENFU1QgTVNLIE1TRCBFRVNUIEVFVCArMDN8LTEwIC0yMCAtMjAgLTMwIC0zMCAtNDAgLTMwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDIzMjQ1NDU0NTQ1NDU0NTQ1NDU0Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc4N3wtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgQW0wIExiMCAxZW4wIG9wMCAxcE56MCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDQ0ZTRcIixcblx0XHRcdFwiRXVyb3BlL0tpZXZ8S01UIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1R8LTIyLjQgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzB8MDEyMzQzNDI1MjUyNTI1MjUyNTI1MjUyNTI1NjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MXwtMVBjMjIuNCBlVW8yLjQgcm56MCAySGcwIFdNMCAxZkEwIGRhMCAxdjRtMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBEYjAgMzIyMCAxY0swIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY1EwIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzNGU1XCIsXG5cdFx0XHRcIkV1cm9wZS9LaXJvdnxMTVQgKzAzICswNCArMDV8LTNpLk0gLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMWNNMCAzQ28wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHw0OGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9MaXNib258TE1UIFdFVCBXRVNUIFdFTVQgQ0VUIENFU1R8QS5KIDAgLTEwIC0yMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMTIzMjEyMzIxMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyNDU0NTQ1NDIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmxlMDAgYVBYMCBTcDAgTFgwIDF2YzAgVGMwIDF1TTAgU00wIDF2YzAgVGMwIDF2YzAgU00wIDF2YzAgNjYwMCAxY28wIDNFMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAzSTAwIDE3YzAgMWNNMCAxY00wIDNGYzAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERjMCAxdEEwIDFjTTAgMWRjMCAxNDAwIGdMMCBJTTAgczEwIFUwMCBkWDAgUmMwIHBkMCBSYzAgZ0wwIE9vMCBwZDAgUmMwIGdMMCBPbzAgcGQwIDE0bzAgMWNNMCAxY1AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAzQ28wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIHB2eTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjdlNVwiLFxuXHRcdFx0XCJFdXJvcGUvTHV4ZW1ib3VyZ3xMTVQgQ0VUIENFU1QgV0VUIFdFU1QgV0VTVCBXRVR8LW8uQSAtMTAgLTIwIDAgLTEwIC0yMCAtMTB8MDEyMTIxMjEzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NTY1MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMkRHMG8uQSB0Nm1vLkEgVEIwIDFuWDAgVXAwIDFvMjAgMTFBMCByVzAgQ00wIDFxUDAgUjkwIDFFTzAgVUswIDF1MjAgMTBtMCAxaXAwIDFpbjAgMTdlMCAxOVcwIDFmQjAgMWRiMCAxY3AwIDFpbjAgMTdkMCAxZnowIDFhMTAgMWluMCAxYTEwIDFpbjAgMTdmMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIHZBMCA2MEwwIFdNMCAxZkEwIDFjTTAgMTdjMCAxaW8wIDE2TTAgMUMwMCBVbzAgMWVlbzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDU0ZTRcIixcblx0XHRcdFwiRXVyb3BlL01hZHJpZHxXRVQgV0VTVCBXRU1UIENFVCBDRVNUfDAgLTEwIC0yMCAtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTIxMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0M3wtMjVUZDAgMTlCMCAxY0wwIDFkZDAgYjF6MCAxOHAwIDNIWDAgMTdkMCAxZnowIDFhMTAgMWlvMCAxYTAwIDFpbjAgMTdkMCBpSW4wIEhkMCAxY0wwIGJiMCAxMjAwIDJzMjAgMTRuMCA1YUwwIE1wMCAxdnowIDE3ZDAgMWluMCAxN2QwIDFpbjAgMTdkMCAxaW4wIDE3ZDAgNmhYMCAxMUIwIFhIWDAgMWExMCAxZnowIDFhMTAgMTlYMCAxY04wIDFmejAgMWExMCAxZkMwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDYyZTVcIixcblx0XHRcdFwiRXVyb3BlL01hbHRhfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFyQjAgTHowIDFjTjAgMWRiMCAxNDEwIDFvbjAgV3AwIDFxTDAgMTdkMCAxY0wwIE0zQjAgNU0yMCBXTTAgMWZBMCAxY28wIDE3YzAgMWlNMCAxNm0wIDFkZTAgMWxjMCAxNG0wIDFsYzAgV08wIDFxTTAgR1RXMCBPbjAgMUMxMCBMQTAgMUMwMCBMQTAgMUVNMCBMQTAgMUMwMCBMQTAgMXpjMCBPbzAgMUMwMCBPbzAgMWNvMCAxY00wIDFsQTAgWGMwIDFxcTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMWlOMCAxOXowIDFmQjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDJlNFwiLFxuXHRcdFx0XCJFdXJvcGUvTWluc2t8TU1UIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1QgKzAzfC0xTyAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMCAtMzB8MDEyMzQzNDMyNTI1MjUyNTI1MjUyNTI1MjUyNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTd8LTFQYzFPIGVVbk8gcU5YMCAzZ1EwIFdNMCAxZkEwIDFjTTAgQWwwIDF0c24wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAzRmMwIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTB8MTllNVwiLFxuXHRcdFx0XCJFdXJvcGUvTW9uYWNvfFBNVCBXRVQgV0VTVCBXRU1UIENFVCBDRVNUfC05LmwgMCAtMTAgLTIwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTJuY285LmwgY05iOS5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCAxdTAwIDEwbzAgMWlvMCAxd28wIFJjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGYwIDJSVjAgMTF6MCAxMUIwIDF6ZTAgV00wIDFmQTAgMWNNMCAxZmEwIDFhcTAgMTZNMCAxZWtuMCAxY0wwIDFmQzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM4ZTNcIixcblx0XHRcdFwiRXVyb3BlL01vc2Nvd3xNTVQgTU1UIE1TVCBNRFNUIE1TRCBNU0sgKzA1IEVFVCBFRVNUIE1TS3wtMnUuaCAtMnYuaiAtM3YuaiAtNHYuaiAtNDAgLTMwIC01MCAtMjAgLTMwIC00MHwwMTIxMzIzNDU0NjQ1NzU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTg3NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1OTV8LTJhZzJ1LmggMnB5Vy5XIDFiQTAgMTFYMCBHTjAgMUhiMCBjNHYuaiBpazAgM0RBMCBkejAgMTVBMCBjMTAgMnExMCBpTTEwIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY04wIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTZlNlwiLFxuXHRcdFx0XCJFdXJvcGUvUGFyaXN8UE1UIFdFVCBXRVNUIENFU1QgQ0VUIFdFTVR8LTkubCAwIC0xMCAtMjAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzNDM0MzUyNTQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0fC0ybmNvOC5sIGNOYjgubCBIQTAgMTlBMCAxaU0wIDExYzAgMW9vMCBXbzAgMXJjMCBRTTAgMUVNMCBVTTAgMXUwMCAxMG8wIDFpbzAgMXdvMCBSYzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERmMCBJazAgNU0zMCBXTTAgMWZBMCAxY00wIFZ4MCBoQjAgMWFxMCAxNk0wIDFla24wIDFjTDAgMWZDMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTFlNlwiLFxuXHRcdFx0XCJFdXJvcGUvUmlnYXxSTVQgTFNUIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1R8LTFBLnkgLTJBLnkgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzB8MDEwMTAyMzQ1NDU0NTM2MzYzNjM2MzYzNjM2MzYzNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyfC0yNVR6QS55IDExQTAgMWlNMCBrbzAgZ1dtMCB5RFhBLnkgMmJYMCAzZkUwIFdNMCAxZkEwIDFjTTAgMWNNMCA0bTAgMXNMeTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY04wIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAzb28wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDY0ZTRcIixcblx0XHRcdFwiRXVyb3BlL1JvbWV8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXJCMCBMejAgMWNOMCAxZGIwIDE0MTAgMW9uMCBXcDAgMXFMMCAxN2QwIDFjTDAgTTNCMCA1TTIwIFdNMCAxZkEwIDFjTTAgMTZNMCAxaU0wIDE2bTAgMWRlMCAxbGMwIDE0bTAgMWxjMCBXTzAgMXFNMCBHVFcwIE9uMCAxQzEwIExBMCAxQzAwIExBMCAxRU0wIExBMCAxQzAwIExBMCAxemMwIE9vMCAxQzAwIE9vMCAxQzAwIExBMCAxemMwIE9vMCAxQzAwIExBMCAxQzAwIExBMCAxemMwIE9vMCAxQzAwIE9vMCAxemMwIE9vMCAxZkMwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzOWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9TYW1hcmF8TE1UICswMyArMDQgKzA1fC0zay5rIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMnkxMCAxNG0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMnNwMCBXTTB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvU2FyYXRvdnxMTVQgKzAzICswNCArMDV8LTM0LmkgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yMldNMCBxSDkwIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgM0NvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgNTgxMFwiLFxuXHRcdFx0XCJFdXJvcGUvU2ltZmVyb3BvbHxTTVQgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVCBNU0t8LTJnIC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwIC00MHwwMTIzNDM0MzI1MjUyNTI1MjUyNTI1MjUyNTIxNjE2MTY1MjUyNTI2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNzJ8LTFQYzJnIGVVb2cgckVuMCAycXMwIFdNMCAxZkEwIDFjTTAgM1YwIDF1MEwwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxUTAwIDRlTDAgMWNMMCAxY04wIDFjTDAgMWNOMCBkWDAgV0wwIDFjTjAgMWNMMCAxZkIwIDFvMzAgMTFCMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExejAgMW5XMHwzM2U0XCIsXG5cdFx0XHRcIkV1cm9wZS9Tb2ZpYXxFRVQgQ0VUIENFU1QgRUVTVHwtMjAgLTEwIC0yMCAtMzB8MDEyMTIxMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzB8LTE2OEwwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY04wIDFtS0gwIDFkZDAgMWZiMCAxYXAwIDFmYjAgMWEyMCAxZnkwIDFhMzAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY0swIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMW5YMCAxMUUwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvU3RvY2tob2xtfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhekMwIFRCMCAyeURlMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTVlNVwiLFxuXHRcdFx0XCJFdXJvcGUvVGFsbGlubnxUTVQgQ0VUIENFU1QgRUVUIE1TSyBNU0QgRUVTVHwtMUQgLTEwIC0yMCAtMjAgLTMwIC00MCAtMzB8MDEyMTAzNDIxMjEyNDU0NTQ1NDU0NTQ1NDU0NTQ2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzfC0yNm9ORCB0ZUQgMTFBMCAxVGEwIDRyWGwgS1NMRCAyRlgwIDJKZzAgV00wIDFmQTAgMWNNMCAxOEowIDFzVFgwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8xMCAxMUEwIDFxTTAgNVFNMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDQxZTRcIixcblx0XHRcdFwiRXVyb3BlL1RpcmFuZXxMTVQgQ0VUIENFU1R8LTFqLmsgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsQmouayAxNHBjai5rIDVMQzAgV00wIDRNMCAxZkNLMCAxMG4wIDFvcDAgMTF6MCAxcGQwIDExejAgMXFOMCBXTDAgMXFwMCBYYjAgMXFwMCBYYjAgMXFwMCAxMXowIDFsQjAgMTF6MCAxcU4wIDExejAgMWlOMCAxNm4wIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDJlNFwiLFxuXHRcdFx0XCJFdXJvcGUvVWx5YW5vdnNrfExNVCArMDMgKzA0ICswNSArMDJ8LTNkLkEgLTMwIC00MCAtNTAgLTIwfDAxMjMyMzIzMjMyMzIzMjMyMzIxMjE0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yMldNMCBxSDkwIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmQwXCIsXG5cdFx0XHRcIkV1cm9wZS9Vemhnb3JvZHxDRVQgQ0VTVCBNU0sgTVNEIEVFVCBFRVNUfC0xMCAtMjAgLTMwIC00MCAtMjAgLTMwfDAxMDEwMTAyMzIzMjMyMzIzMjMyMzIzMjMyMDQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMWNxTDAgNmkwMCBXTTAgMWZBMCAxY00wIDFtbDAgMUNwMCAxcjNXMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMVEwMCAxTmYwIDJwdzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjUTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDExZTRcIixcblx0XHRcdFwiRXVyb3BlL1ZpZW5uYXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCAzS00wIDE0bzAgTEEwMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDQwMCAycU0wIDFhMDAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZ0hhMCAxOVgwIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MThlNVwiLFxuXHRcdFx0XCJFdXJvcGUvVmlsbml1c3xXTVQgS01UIENFVCBFRVQgTVNLIENFU1QgTVNEIEVFU1R8LTFvIC0xei5BIC0xMCAtMjAgLTMwIC0yMCAtNDAgLTMwfDAxMjMyNDUyNTI1NDY0NjQ2NDY0NjQ2NDY0NjQ3MzczNzM3MzczNzM3MzczNzM1MjUzNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3M3wtMjkzZG8gNklMTS5vIDFPb3ouQSB6ejAgTWZkMCAyOVcwIDNpczAgV00wIDFmQTAgMWNNMCBMVjAgMXRnTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFCMCAxbzAwIDExQTAgMXFNMCA4aW8wIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw1NGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9Wb2xnb2dyYWR8TE1UICswMyArMDQgKzA1fC0yVi5FIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yMUlxVi5FIHBzTFYuRSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDNDbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDEwZTVcIixcblx0XHRcdFwiRXVyb3BlL1dhcnNhd3xXTVQgQ0VUIENFU1QgRUVUIEVFU1R8LTFvIC0xMCAtMjAgLTIwIC0zMHwwMTIxMjEyMzQzMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJjdGRvIDFMWG8gMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIDFvbjAgMTFBMCA2enkwIEhXUDAgNUlNMCBXTTAgMWZBMCAxY00wIDFkejAgMW1MMCAxZW4wIDE1QjAgMWFxMCAxbkEwIDExQTAgMWlvMCAxN2MwIDFmQTAgMWEwMCBpRFgwIExBMCAxY00wIDFjTTAgMUMwMCBPbzAgMWNNMCAxY00wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDFDMDAgTEEwIHVzbzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE3ZTVcIixcblx0XHRcdFwiRXVyb3BlL1phcG9yb3poeWV8KzAyMjAgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVHwtMmsgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzB8MDEyMzQzNDI1MjUyNTI1MjUyNTI1MjUyNTI1MjYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjF8LTFQYzJrIGVVb2sgcmRiMCAyUkUwIFdNMCAxZkEwIDhtMCAxdjlhMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNLMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY1EwIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw3N2U0XCIsXG5cdFx0XHRcIkhTVHxIU1R8YTB8MHxcIixcblx0XHRcdFwiSW5kaWFuL0NoYWdvc3xMTVQgKzA1ICswNnwtNE4uRSAtNTAgLTYwfDAxMnwtMnhvc04uRSAzQUdMTi5FfDMwZTJcIixcblx0XHRcdFwiSW5kaWFuL0NvY29zfCswNjMwfC02dXwwfHw1OTZcIixcblx0XHRcdFwiSW5kaWFuL0tlcmd1ZWxlbnwtMDAgKzA1fDAgLTUwfDAxfC1NRzAwfDEzMFwiLFxuXHRcdFx0XCJJbmRpYW4vTWFoZXxMTVQgKzA0fC0zRi5NIC00MHwwMXwtMnlPM0YuTXw3OWUzXCIsXG5cdFx0XHRcIkluZGlhbi9NYWxkaXZlc3xNTVQgKzA1fC00UyAtNTB8MDF8LW9sZ1N8MzVlNFwiLFxuXHRcdFx0XCJJbmRpYW4vTWF1cml0aXVzfExNVCArMDQgKzA1fC0zTyAtNDAgLTUwfDAxMjEyMXwtMnhvck8gMzR1bk8gMTRMMCAxMmtyMCAxMXowfDE1ZTRcIixcblx0XHRcdFwiSW5kaWFuL1JldW5pb258TE1UICswNHwtM0YuUSAtNDB8MDF8LTJtRERGLlF8ODRlNFwiLFxuXHRcdFx0XCJQYWNpZmljL0t3YWphbGVpbnwrMTEgLTEyICsxMnwtYjAgYzAgLWMwfDAxMnwtQVgwIFc5WDB8MTRlM1wiLFxuXHRcdFx0XCJNRVR8TUVUIE1FU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxNk0wIDFnTU0wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJNU1R8TVNUfDcwfDB8XCIsXG5cdFx0XHRcIk1TVDdNRFR8TVNUIE1EVCBNV1QgTVBUfDcwIDYwIDYwIDYwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIlBhY2lmaWMvQ2hhdGhhbXwrMTIxNSArMTI0NSArMTM0NXwtY2YgLWNKIC1kSnwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LVdxQWYgMWFkZWYgSU0wIDFDMDAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDFxTTAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDB8NjAwXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXBpYXxMTVQgLTExMzAgLTExIC0xMCArMTQgKzEzfGJxLlUgYnUgYjAgYTAgLWUwIC1kMHwwMTIzMjM0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMm5ETXguNCAxeVcwMy40IDJyUmJ1IDFmZjAgMWEwMCBDSTAgQVEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwfDM3ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9Cb3VnYWludmlsbGV8KzEwICswOSArMTF8LWEwIC05MCAtYjB8MDEwMnwtMTZXeTAgN0NOMCAyTVFwMHwxOGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvRWZhdGV8TE1UICsxMSArMTJ8LWJkLmcgLWIwIC1jMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybDluZC5nIDJTemNkLmcgMWNMMCAxb04wIDEwTDAgMWZCMCAxOVgwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCBMejAgMU5kMCBBbjB8NjZlM1wiLFxuXHRcdFx0XCJQYWNpZmljL0VuZGVyYnVyeXwtMTIgLTExICsxM3xjMCBiMCAtZDB8MDEyfG5JYzAgQjdYMHwxXCIsXG5cdFx0XHRcIlBhY2lmaWMvRmFrYW9mb3wtMTEgKzEzfGIwIC1kMHwwMXwxR2ZuMHw0ODNcIixcblx0XHRcdFwiUGFjaWZpYy9GaWppfExNVCArMTIgKzEzfC1iVC5JIC1jMCAtZDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmJVelQuSSAzbThOVC5JIExBMCAxRU0wIElNMCBuSmMwIExBMCAxbzAwIFJjMCAxd28wIEFvMCAxTmMwIEFvMCAxUTAwIHh6MCAxU04wIHVNMCAxU00wIHVNMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHVNMCAxU00wIHVNMCAxU00wIHVNMHw4OGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvR2FsYXBhZ29zfExNVCAtMDUgLTA2fDVXLm8gNTAgNjB8MDEyMTJ8LTF5VlMxLkEgMmRUejEuQSBnTmQwIHJ6MHwyNWUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvR2FtYmllcnxMTVQgLTA5fDhYLk0gOTB8MDF8LTJqb2YwLmN8MTI1XCIsXG5cdFx0XHRcIlBhY2lmaWMvR3VhZGFsY2FuYWx8TE1UICsxMXwtYUQuTSAtYjB8MDF8LTJqb3lELk18MTFlNFwiLFxuXHRcdFx0XCJQYWNpZmljL0d1YW18R1NUIENoU1R8LWEwIC1hMHwwMXwxZnBxMHwxN2U0XCIsXG5cdFx0XHRcIlBhY2lmaWMvSG9ub2x1bHV8SFNUIEhEVCBIU1R8YXUgOXUgYTB8MDEwMTAyfC0xdGhMdSA4eDAgbGVmMCA4UHowIDQ2cDB8MzdlNFwiLFxuXHRcdFx0XCJQYWNpZmljL0tpcml0aW1hdGl8LTEwNDAgLTEwICsxNHxhRSBhMCAtZTB8MDEyfG5JYUUgQjdYa3w1MWUyXCIsXG5cdFx0XHRcIlBhY2lmaWMvS29zcmFlfCsxMSArMTJ8LWIwIC1jMHwwMTB8LUFYMCAxYmR6MHw2NmUyXCIsXG5cdFx0XHRcIlBhY2lmaWMvTWFqdXJvfCsxMSArMTJ8LWIwIC1jMHwwMXwtQVgwfDI4ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9NYXJxdWVzYXN8TE1UIC0wOTMwfDlpIDl1fDAxfC0yam9lR3w4NmUyXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfExNVCBTU1R8Ym0uTSBiMHwwMXwtMm5ETUIuY3wzN2UyXCIsXG5cdFx0XHRcIlBhY2lmaWMvTmF1cnV8TE1UICsxMTMwICswOSArMTJ8LWI3LkUgLWJ1IC05MCAtYzB8MDEyMTN8LTFYZG43LkUgUHZ6Qi5FIDVSQ3UgMW91SnV8MTBlM1wiLFxuXHRcdFx0XCJQYWNpZmljL05pdWV8LTExMjAgLTExMzAgLTExfGJrIGJ1IGIwfDAxMnwtS2ZNRSAxN3kwYXwxMmUyXCIsXG5cdFx0XHRcIlBhY2lmaWMvTm9yZm9sa3wrMTExMiArMTEzMCArMTIzMCArMTF8LWJjIC1idSAtY3UgLWIwfDAxMjEzfC1LZ2JjIFcwMUcgT24wIDFDT3AwfDI1ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Ob3VtZWF8TE1UICsxMSArMTJ8LWI1Lk0gLWIwIC1jMHwwMTIxMjEyMXwtMmw5bjUuTSAyRXFNNS5NIHhYMCAxUEIwIHluMCBIZVAwIEFvMHw5OGUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGl0Y2Fpcm58LTA4MzAgLTA4fDh1IDgwfDAxfDE4Vmt1fDU2XCIsXG5cdFx0XHRcIlBhY2lmaWMvUmFyb3RvbmdhfC0xMDMwIC0wOTMwIC0xMHxhdSA5dSBhMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8bHlXdSBJTDAgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnV8MTNlM1wiLFxuXHRcdFx0XCJQYWNpZmljL1RhaGl0aXxMTVQgLTEwfDlXLmcgYTB8MDF8LTJqb2UxLkl8MThlNFwiLFxuXHRcdFx0XCJQYWNpZmljL1RvbmdhdGFwdXwrMTIyMCArMTMgKzE0fC1jayAtZDAgLWUwfDAxMjEyMTIxMjF8LTFhQjBrIDJuNWRrIDE1QTAgMXdvMCB4ejAgMVExMCB4ejAgeldOMCBzMDB8NzVlM1wiLFxuXHRcdFx0XCJQU1Q4UERUfFBTVCBQRFQgUFdUIFBQVHw4MCA3MCA3MCA3MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXEwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgxMCBpeTAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJXRVR8V0VUIFdFU1R8MCAtMTB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfGhEQjAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCJcblx0XHRdLFxuXHRcdFwibGlua3NcIjogW1xuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvQmFtYWtvXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9CYW5qdWxcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0NvbmFrcnlcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0Rha2FyXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9GcmVldG93blwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvTG9tZVwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvTm91YWtjaG90dFwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvT3VhZ2Fkb3Vnb3VcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL1RpbWJ1a3R1XCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEF0bGFudGljL1N0X0hlbGVuYVwiLFxuXHRcdFx0XCJBZnJpY2EvQ2Fpcm98RWd5cHRcIixcblx0XHRcdFwiQWZyaWNhL0pvaGFubmVzYnVyZ3xBZnJpY2EvTWFzZXJ1XCIsXG5cdFx0XHRcIkFmcmljYS9Kb2hhbm5lc2J1cmd8QWZyaWNhL01iYWJhbmVcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9CYW5ndWlcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9CcmF6emF2aWxsZVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0RvdWFsYVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0tpbnNoYXNhXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTGlicmV2aWxsZVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0x1YW5kYVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL01hbGFib1wiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL05pYW1leVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL1BvcnRvLU5vdm9cIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvQmxhbnR5cmVcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvQnVqdW1idXJhXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0dhYm9yb25lXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0hhcmFyZVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9LaWdhbGlcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvTHVidW1iYXNoaVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9MdXNha2FcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0FkZGlzX0FiYWJhXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9Bc21hcmFcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0FzbWVyYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvRGFyX2VzX1NhbGFhbVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvRGppYm91dGlcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0thbXBhbGFcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL01vZ2FkaXNodVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxJbmRpYW4vQW50YW5hbmFyaXZvXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEluZGlhbi9Db21vcm9cIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8SW5kaWFuL01heW90dGVcIixcblx0XHRcdFwiQWZyaWNhL1RyaXBvbGl8TGlieWFcIixcblx0XHRcdFwiQW1lcmljYS9BZGFrfEFtZXJpY2EvQXRrYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FkYWt8VVMvQWxldXRpYW5cIixcblx0XHRcdFwiQW1lcmljYS9BbmNob3JhZ2V8VVMvQWxhc2thXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0J1ZW5vc19BaXJlc3xBbWVyaWNhL0J1ZW5vc19BaXJlc1wiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2F8QW1lcmljYS9BcmdlbnRpbmEvQ29tb2RSaXZhZGF2aWFcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ2F0YW1hcmNhfEFtZXJpY2EvQ2F0YW1hcmNhXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NvcmRvYmF8QW1lcmljYS9Db3Jkb2JhXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NvcmRvYmF8QW1lcmljYS9Sb3NhcmlvXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0p1anV5fEFtZXJpY2EvSnVqdXlcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvTWVuZG96YXxBbWVyaWNhL01lbmRvemFcIixcblx0XHRcdFwiQW1lcmljYS9BdGlrb2thbnxBbWVyaWNhL0NvcmFsX0hhcmJvdXJcIixcblx0XHRcdFwiQW1lcmljYS9DaGljYWdvfFVTL0NlbnRyYWxcIixcblx0XHRcdFwiQW1lcmljYS9DdXJhY2FvfEFtZXJpY2EvQXJ1YmFcIixcblx0XHRcdFwiQW1lcmljYS9DdXJhY2FvfEFtZXJpY2EvS3JhbGVuZGlqa1wiLFxuXHRcdFx0XCJBbWVyaWNhL0N1cmFjYW98QW1lcmljYS9Mb3dlcl9QcmluY2VzXCIsXG5cdFx0XHRcIkFtZXJpY2EvRGVudmVyfEFtZXJpY2EvU2hpcHJvY2tcIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8TmF2YWpvXCIsXG5cdFx0XHRcIkFtZXJpY2EvRGVudmVyfFVTL01vdW50YWluXCIsXG5cdFx0XHRcIkFtZXJpY2EvRGV0cm9pdHxVUy9NaWNoaWdhblwiLFxuXHRcdFx0XCJBbWVyaWNhL0VkbW9udG9ufENhbmFkYS9Nb3VudGFpblwiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8QW1lcmljYS9JbmRpYW5hL0luZGlhbmFwb2xpc1wiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8QW1lcmljYS9JbmRpYW5hcG9saXNcIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0X1dheW5lfFVTL0Vhc3QtSW5kaWFuYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0hhbGlmYXh8Q2FuYWRhL0F0bGFudGljXCIsXG5cdFx0XHRcIkFtZXJpY2EvSGF2YW5hfEN1YmFcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL0tub3h8QW1lcmljYS9Lbm94X0lOXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9Lbm94fFVTL0luZGlhbmEtU3RhcmtlXCIsXG5cdFx0XHRcIkFtZXJpY2EvSmFtYWljYXxKYW1haWNhXCIsXG5cdFx0XHRcIkFtZXJpY2EvS2VudHVja3kvTG91aXN2aWxsZXxBbWVyaWNhL0xvdWlzdmlsbGVcIixcblx0XHRcdFwiQW1lcmljYS9Mb3NfQW5nZWxlc3xVUy9QYWNpZmljXCIsXG5cdFx0XHRcIkFtZXJpY2EvTG9zX0FuZ2VsZXN8VVMvUGFjaWZpYy1OZXdcIixcblx0XHRcdFwiQW1lcmljYS9NYW5hdXN8QnJhemlsL1dlc3RcIixcblx0XHRcdFwiQW1lcmljYS9NYXphdGxhbnxNZXhpY28vQmFqYVN1clwiLFxuXHRcdFx0XCJBbWVyaWNhL01leGljb19DaXR5fE1leGljby9HZW5lcmFsXCIsXG5cdFx0XHRcIkFtZXJpY2EvTmV3X1lvcmt8VVMvRWFzdGVyblwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcm9uaGF8QnJhemlsL0RlTm9yb25oYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BhbmFtYXxBbWVyaWNhL0NheW1hblwiLFxuXHRcdFx0XCJBbWVyaWNhL1Bob2VuaXh8VVMvQXJpem9uYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9Bbmd1aWxsYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9BbnRpZ3VhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0RvbWluaWNhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0dyZW5hZGFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvR3VhZGVsb3VwZVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9NYXJpZ290XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL01vbnRzZXJyYXRcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvU3RfQmFydGhlbGVteVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9LaXR0c1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9MdWNpYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9UaG9tYXNcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvU3RfVmluY2VudFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9Ub3J0b2xhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1ZpcmdpblwiLFxuXHRcdFx0XCJBbWVyaWNhL1JlZ2luYXxDYW5hZGEvU2Fza2F0Y2hld2FuXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmlvX0JyYW5jb3xBbWVyaWNhL1BvcnRvX0FjcmVcIixcblx0XHRcdFwiQW1lcmljYS9SaW9fQnJhbmNvfEJyYXppbC9BY3JlXCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudGlhZ298Q2hpbGUvQ29udGluZW50YWxcIixcblx0XHRcdFwiQW1lcmljYS9TYW9fUGF1bG98QnJhemlsL0Vhc3RcIixcblx0XHRcdFwiQW1lcmljYS9TdF9Kb2huc3xDYW5hZGEvTmV3Zm91bmRsYW5kXCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxBbWVyaWNhL0Vuc2VuYWRhXCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxBbWVyaWNhL1NhbnRhX0lzYWJlbFwiLFxuXHRcdFx0XCJBbWVyaWNhL1RpanVhbmF8TWV4aWNvL0JhamFOb3J0ZVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Rvcm9udG98QW1lcmljYS9Nb250cmVhbFwiLFxuXHRcdFx0XCJBbWVyaWNhL1Rvcm9udG98Q2FuYWRhL0Vhc3Rlcm5cIixcblx0XHRcdFwiQW1lcmljYS9WYW5jb3V2ZXJ8Q2FuYWRhL1BhY2lmaWNcIixcblx0XHRcdFwiQW1lcmljYS9XaGl0ZWhvcnNlfENhbmFkYS9ZdWtvblwiLFxuXHRcdFx0XCJBbWVyaWNhL1dpbm5pcGVnfENhbmFkYS9DZW50cmFsXCIsXG5cdFx0XHRcIkFzaWEvQXNoZ2FiYXR8QXNpYS9Bc2hraGFiYWRcIixcblx0XHRcdFwiQXNpYS9CYW5na29rfEFzaWEvUGhub21fUGVuaFwiLFxuXHRcdFx0XCJBc2lhL0Jhbmdrb2t8QXNpYS9WaWVudGlhbmVcIixcblx0XHRcdFwiQXNpYS9EaGFrYXxBc2lhL0RhY2NhXCIsXG5cdFx0XHRcIkFzaWEvRHViYWl8QXNpYS9NdXNjYXRcIixcblx0XHRcdFwiQXNpYS9Ib19DaGlfTWluaHxBc2lhL1NhaWdvblwiLFxuXHRcdFx0XCJBc2lhL0hvbmdfS29uZ3xIb25na29uZ1wiLFxuXHRcdFx0XCJBc2lhL0plcnVzYWxlbXxBc2lhL1RlbF9Bdml2XCIsXG5cdFx0XHRcIkFzaWEvSmVydXNhbGVtfElzcmFlbFwiLFxuXHRcdFx0XCJBc2lhL0thdGhtYW5kdXxBc2lhL0thdG1hbmR1XCIsXG5cdFx0XHRcIkFzaWEvS29sa2F0YXxBc2lhL0NhbGN1dHRhXCIsXG5cdFx0XHRcIkFzaWEvS3VhbGFfTHVtcHVyfEFzaWEvU2luZ2Fwb3JlXCIsXG5cdFx0XHRcIkFzaWEvS3VhbGFfTHVtcHVyfFNpbmdhcG9yZVwiLFxuXHRcdFx0XCJBc2lhL01hY2F1fEFzaWEvTWFjYW9cIixcblx0XHRcdFwiQXNpYS9NYWthc3NhcnxBc2lhL1VqdW5nX1BhbmRhbmdcIixcblx0XHRcdFwiQXNpYS9OaWNvc2lhfEV1cm9wZS9OaWNvc2lhXCIsXG5cdFx0XHRcIkFzaWEvUWF0YXJ8QXNpYS9CYWhyYWluXCIsXG5cdFx0XHRcIkFzaWEvUmFuZ29vbnxBc2lhL1lhbmdvblwiLFxuXHRcdFx0XCJBc2lhL1JpeWFkaHxBc2lhL0FkZW5cIixcblx0XHRcdFwiQXNpYS9SaXlhZGh8QXNpYS9LdXdhaXRcIixcblx0XHRcdFwiQXNpYS9TZW91bHxST0tcIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxBc2lhL0Nob25ncWluZ1wiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfEFzaWEvQ2h1bmdraW5nXCIsXG5cdFx0XHRcIkFzaWEvU2hhbmdoYWl8QXNpYS9IYXJiaW5cIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxQUkNcIixcblx0XHRcdFwiQXNpYS9UYWlwZWl8Uk9DXCIsXG5cdFx0XHRcIkFzaWEvVGVocmFufElyYW5cIixcblx0XHRcdFwiQXNpYS9UaGltcGh1fEFzaWEvVGhpbWJ1XCIsXG5cdFx0XHRcIkFzaWEvVG9reW98SmFwYW5cIixcblx0XHRcdFwiQXNpYS9VbGFhbmJhYXRhcnxBc2lhL1VsYW5fQmF0b3JcIixcblx0XHRcdFwiQXNpYS9VcnVtcWl8QXNpYS9LYXNoZ2FyXCIsXG5cdFx0XHRcIkF0bGFudGljL0Zhcm9lfEF0bGFudGljL0ZhZXJvZVwiLFxuXHRcdFx0XCJBdGxhbnRpYy9SZXlramF2aWt8SWNlbGFuZFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9Tb3V0aF9HZW9yZ2lhfEV0Yy9HTVQrMlwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQWRlbGFpZGV8QXVzdHJhbGlhL1NvdXRoXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9CcmlzYmFuZXxBdXN0cmFsaWEvUXVlZW5zbGFuZFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQnJva2VuX0hpbGx8QXVzdHJhbGlhL1lhbmNvd2lubmFcIixcblx0XHRcdFwiQXVzdHJhbGlhL0RhcndpbnxBdXN0cmFsaWEvTm9ydGhcIixcblx0XHRcdFwiQXVzdHJhbGlhL0hvYmFydHxBdXN0cmFsaWEvVGFzbWFuaWFcIixcblx0XHRcdFwiQXVzdHJhbGlhL0xvcmRfSG93ZXxBdXN0cmFsaWEvTEhJXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9NZWxib3VybmV8QXVzdHJhbGlhL1ZpY3RvcmlhXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9QZXJ0aHxBdXN0cmFsaWEvV2VzdFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEF1c3RyYWxpYS9BQ1RcIixcblx0XHRcdFwiQXVzdHJhbGlhL1N5ZG5leXxBdXN0cmFsaWEvQ2FuYmVycmFcIixcblx0XHRcdFwiQXVzdHJhbGlhL1N5ZG5leXxBdXN0cmFsaWEvTlNXXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxFdGMvR01UXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxFdGMvR01UKzBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HTVQwXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxFdGMvR3JlZW53aWNoXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVRcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVCswXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVQtMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R01UMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R3JlZW53aWNoXCIsXG5cdFx0XHRcIkV0Yy9VQ1R8VUNUXCIsXG5cdFx0XHRcIkV0Yy9VVEN8RXRjL1VuaXZlcnNhbFwiLFxuXHRcdFx0XCJFdGMvVVRDfEV0Yy9adWx1XCIsXG5cdFx0XHRcIkV0Yy9VVEN8VVRDXCIsXG5cdFx0XHRcIkV0Yy9VVEN8VW5pdmVyc2FsXCIsXG5cdFx0XHRcIkV0Yy9VVEN8WnVsdVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL0xqdWJsamFuYVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL1BvZGdvcmljYVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL1NhcmFqZXZvXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvU2tvcGplXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvWmFncmViXCIsXG5cdFx0XHRcIkV1cm9wZS9DaGlzaW5hdXxFdXJvcGUvVGlyYXNwb2xcIixcblx0XHRcdFwiRXVyb3BlL0R1YmxpbnxFaXJlXCIsXG5cdFx0XHRcIkV1cm9wZS9IZWxzaW5raXxFdXJvcGUvTWFyaWVoYW1uXCIsXG5cdFx0XHRcIkV1cm9wZS9Jc3RhbmJ1bHxBc2lhL0lzdGFuYnVsXCIsXG5cdFx0XHRcIkV1cm9wZS9Jc3RhbmJ1bHxUdXJrZXlcIixcblx0XHRcdFwiRXVyb3BlL0xpc2JvbnxQb3J0dWdhbFwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEV1cm9wZS9CZWxmYXN0XCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258RXVyb3BlL0d1ZXJuc2V5XCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258RXVyb3BlL0lzbGVfb2ZfTWFuXCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258RXVyb3BlL0plcnNleVwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEdCXCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258R0ItRWlyZVwiLFxuXHRcdFx0XCJFdXJvcGUvTW9zY293fFctU1VcIixcblx0XHRcdFwiRXVyb3BlL09zbG98QXJjdGljL0xvbmd5ZWFyYnllblwiLFxuXHRcdFx0XCJFdXJvcGUvT3Nsb3xBdGxhbnRpYy9KYW5fTWF5ZW5cIixcblx0XHRcdFwiRXVyb3BlL1ByYWd1ZXxFdXJvcGUvQnJhdGlzbGF2YVwiLFxuXHRcdFx0XCJFdXJvcGUvUm9tZXxFdXJvcGUvU2FuX01hcmlub1wiLFxuXHRcdFx0XCJFdXJvcGUvUm9tZXxFdXJvcGUvVmF0aWNhblwiLFxuXHRcdFx0XCJFdXJvcGUvV2Fyc2F3fFBvbGFuZFwiLFxuXHRcdFx0XCJFdXJvcGUvWnVyaWNofEV1cm9wZS9CdXNpbmdlblwiLFxuXHRcdFx0XCJFdXJvcGUvWnVyaWNofEV1cm9wZS9WYWR1elwiLFxuXHRcdFx0XCJJbmRpYW4vQ2hyaXN0bWFzfEV0Yy9HTVQtN1wiLFxuXHRcdFx0XCJQYWNpZmljL0F1Y2tsYW5kfEFudGFyY3RpY2EvTWNNdXJkb1wiLFxuXHRcdFx0XCJQYWNpZmljL0F1Y2tsYW5kfEFudGFyY3RpY2EvU291dGhfUG9sZVwiLFxuXHRcdFx0XCJQYWNpZmljL0F1Y2tsYW5kfE5aXCIsXG5cdFx0XHRcIlBhY2lmaWMvQ2hhdGhhbXxOWi1DSEFUXCIsXG5cdFx0XHRcIlBhY2lmaWMvRWFzdGVyfENoaWxlL0Vhc3RlcklzbGFuZFwiLFxuXHRcdFx0XCJQYWNpZmljL0d1YW18UGFjaWZpYy9TYWlwYW5cIixcblx0XHRcdFwiUGFjaWZpYy9Ib25vbHVsdXxQYWNpZmljL0pvaG5zdG9uXCIsXG5cdFx0XHRcIlBhY2lmaWMvSG9ub2x1bHV8VVMvSGF3YWlpXCIsXG5cdFx0XHRcIlBhY2lmaWMvS3dhamFsZWlufEt3YWphbGVpblwiLFxuXHRcdFx0XCJQYWNpZmljL1BhZ29fUGFnb3xQYWNpZmljL01pZHdheVwiLFxuXHRcdFx0XCJQYWNpZmljL1BhZ29fUGFnb3xQYWNpZmljL1NhbW9hXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfFVTL1NhbW9hXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFsYXV8RXRjL0dNVC05XCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9obnBlaXxFdGMvR01ULTExXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9obnBlaXxQYWNpZmljL1BvbmFwZVwiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXxFdGMvR01ULTEwXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5fFBhY2lmaWMvQ2h1dWtcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8UGFjaWZpYy9UcnVrXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5fFBhY2lmaWMvWWFwXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFyYXdhfEV0Yy9HTVQtMTJcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8UGFjaWZpYy9GdW5hZnV0aVwiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXxQYWNpZmljL1dha2VcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8UGFjaWZpYy9XYWxsaXNcIlxuXHRcdF1cblx0fSk7XG5cblxuXHRyZXR1cm4gbW9tZW50O1xufSkpOyIsIi8qISBVSWtpdCAzLjAuMC1yYy41IHwgaHR0cDovL3d3dy5nZXR1aWtpdC5jb20gfCAoYykgMjAxNCAtIDIwMTcgWU9PdGhlbWUgfCBNSVQgTGljZW5zZSAqL1xuXG4oZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoJ3Vpa2l0JywgZmFjdG9yeSkgOlxuICAgIChnbG9iYWwuVUlraXQgPSBmYWN0b3J5KCkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICBmdW5jdGlvbiBiaW5kKGZuLCBjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIGwgPyBsID4gMSA/IGZuLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cykgOiBmbi5jYWxsKGNvbnRleHQsIGEpIDogZm4uY2FsbChjb250ZXh0KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgcmVmID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgICB2YXIgaGFzT3duUHJvcGVydHkgPSByZWYuaGFzT3duUHJvcGVydHk7XG5cbiAgICBmdW5jdGlvbiBoYXNPd24ob2JqLCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xuICAgIH1cblxuICAgIHZhciBoeXBoZW5hdGVDYWNoZSA9IHt9O1xuICAgIHZhciBoeXBoZW5hdGVSZSA9IC8oW2EtelxcZF0pKFtBLVpdKS9nO1xuXG4gICAgZnVuY3Rpb24gaHlwaGVuYXRlKHN0cikge1xuXG4gICAgICAgIGlmICghKHN0ciBpbiBoeXBoZW5hdGVDYWNoZSkpIHtcbiAgICAgICAgICAgIGh5cGhlbmF0ZUNhY2hlW3N0cl0gPSBzdHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZShoeXBoZW5hdGVSZSwgJyQxLSQyJylcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoeXBoZW5hdGVDYWNoZVtzdHJdO1xuICAgIH1cblxuICAgIHZhciBjYW1lbGl6ZVJlID0gLy0oXFx3KS9nO1xuXG4gICAgZnVuY3Rpb24gY2FtZWxpemUoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJlLCB0b1VwcGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b1VwcGVyKF8sIGMpIHtcbiAgICAgICAgcmV0dXJuIGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1Y2ZpcnN0KHN0cikge1xuICAgICAgICByZXR1cm4gc3RyLmxlbmd0aCA/IHRvVXBwZXIobnVsbCwgc3RyLmNoYXJBdCgwKSkgKyBzdHIuc2xpY2UoMSkgOiAnJztcbiAgICB9XG5cbiAgICB2YXIgc3RyUHJvdG90eXBlID0gU3RyaW5nLnByb3RvdHlwZTtcbiAgICB2YXIgc3RhcnRzV2l0aEZuID0gc3RyUHJvdG90eXBlLnN0YXJ0c1dpdGggfHwgZnVuY3Rpb24gKHNlYXJjaCkgeyByZXR1cm4gdGhpcy5sYXN0SW5kZXhPZihzZWFyY2gsIDApID09PSAwOyB9O1xuXG4gICAgZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHNlYXJjaCkge1xuICAgICAgICByZXR1cm4gc3RhcnRzV2l0aEZuLmNhbGwoc3RyLCBzZWFyY2gpO1xuICAgIH1cblxuICAgIHZhciBlbmRzV2l0aEZuID0gc3RyUHJvdG90eXBlLmVuZHNXaXRoIHx8IGZ1bmN0aW9uIChzZWFyY2gpIHsgcmV0dXJuIHRoaXMuc3Vic3RyKC1zZWFyY2gubGVuZ3RoKSA9PT0gc2VhcmNoOyB9O1xuXG4gICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyLCBzZWFyY2gpIHtcbiAgICAgICAgcmV0dXJuIGVuZHNXaXRoRm4uY2FsbChzdHIsIHNlYXJjaCk7XG4gICAgfVxuXG4gICAgdmFyIGluY2x1ZGVzRm4gPSBmdW5jdGlvbiAoc2VhcmNoKSB7IHJldHVybiB+dGhpcy5pbmRleE9mKHNlYXJjaCk7IH07XG4gICAgdmFyIGluY2x1ZGVzU3RyID0gc3RyUHJvdG90eXBlLmluY2x1ZGVzIHx8IGluY2x1ZGVzRm47XG4gICAgdmFyIGluY2x1ZGVzQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXMgfHwgaW5jbHVkZXNGbjtcblxuICAgIGZ1bmN0aW9uIGluY2x1ZGVzKG9iaiwgc2VhcmNoKSB7XG4gICAgICAgIHJldHVybiBvYmogJiYgKGlzU3RyaW5nKG9iaikgPyBpbmNsdWRlc1N0ciA6IGluY2x1ZGVzQXJyYXkpLmNhbGwob2JqLCBzZWFyY2gpO1xuICAgIH1cblxuICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuICAgICAgICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopID09PSBPYmplY3QucHJvdG90eXBlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzV2luZG93KG9iaikge1xuICAgICAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiBvYmogPT09IG9iai53aW5kb3c7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEb2N1bWVudChvYmopIHtcbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgb2JqLm5vZGVUeXBlID09PSA5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSlF1ZXJ5KG9iaikge1xuICAgICAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiAhIW9iai5qcXVlcnk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOb2RlKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlIHx8IGlzT2JqZWN0KGVsZW1lbnQpICYmIGVsZW1lbnQubm9kZVR5cGUgPT09IDE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOb2RlQ29sbGVjdGlvbihlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50IGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1lcmljKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpc051bWJlcih2YWx1ZSkgfHwgaXNTdHJpbmcodmFsdWUpICYmICFpc05hTih2YWx1ZSAtIHBhcnNlRmxvYXQodmFsdWUpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHZvaWQgMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0Jvb2xlYW4odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlzQm9vbGVhbih2YWx1ZSlcbiAgICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIDogdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJzEnIHx8IHZhbHVlID09PSAnJ1xuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdmFsdWUgPT09ICdmYWxzZScgfHwgdmFsdWUgPT09ICcwJ1xuICAgICAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgICAgICAgdmFyIG51bWJlciA9IE51bWJlcih2YWx1ZSk7XG4gICAgICAgIHJldHVybiAhaXNOYU4obnVtYmVyKSA/IG51bWJlciA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRmxvYXQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpIHx8IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Ob2RlKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KSB8fCBpc1dpbmRvdyhlbGVtZW50KSB8fCBpc0RvY3VtZW50KGVsZW1lbnQpXG4gICAgICAgICAgICA/IGVsZW1lbnRcbiAgICAgICAgICAgIDogaXNOb2RlQ29sbGVjdGlvbihlbGVtZW50KSB8fCBpc0pRdWVyeShlbGVtZW50KVxuICAgICAgICAgICAgICAgID8gZWxlbWVudFswXVxuICAgICAgICAgICAgICAgIDogaXNBcnJheShlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICA/IHRvTm9kZShlbGVtZW50WzBdKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG4gICAgZnVuY3Rpb24gdG9Ob2RlcyhlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBpc05vZGUoZWxlbWVudClcbiAgICAgICAgICAgID8gW2VsZW1lbnRdXG4gICAgICAgICAgICA6IGlzTm9kZUNvbGxlY3Rpb24oZWxlbWVudClcbiAgICAgICAgICAgICAgICA/IGFycmF5UHJvdG8uc2xpY2UuY2FsbChlbGVtZW50KVxuICAgICAgICAgICAgICAgIDogaXNBcnJheShlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICA/IGVsZW1lbnQubWFwKHRvTm9kZSkuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgIDogaXNKUXVlcnkoZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZWxlbWVudC50b0FycmF5KClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogW107XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9MaXN0KHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiBpc1N0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgICAgICA/IHZhbHVlLnNwbGl0KC8sKD8hW14oXSpcXCkpLykubWFwKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gaXNOdW1lcmljKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA/IHRvTnVtYmVyKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6IHRvQm9vbGVhbih2YWx1ZS50cmltKCkpOyB9KVxuICAgICAgICAgICAgICAgIDogW3ZhbHVlXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b01zKHRpbWUpIHtcbiAgICAgICAgcmV0dXJuICF0aW1lXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogZW5kc1dpdGgodGltZSwgJ21zJylcbiAgICAgICAgICAgICAgICA/IHRvRmxvYXQodGltZSlcbiAgICAgICAgICAgICAgICA6IHRvRmxvYXQodGltZSkgKiAxMDAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN3YXAodmFsdWUsIGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCgoYSArIFwifFwiICsgYiksICdtZycpLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaCA9PT0gYSA/IGIgOiBhO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgICAgICAgdGFyZ2V0ID0gT2JqZWN0KHRhcmdldCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3NbaV07XG4gICAgICAgICAgICBpZiAoc291cmNlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBlYWNoKG9iaiwgY2IpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICAgICAgY2IuY2FsbChvYmpba2V5XSwgb2JqW2tleV0sIGtleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzb3J0QnkoY29sbGVjdGlvbiwgcHJvcCkge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhW3Byb3BdID4gYltwcm9wXVxuICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgIDogYltwcm9wXSA+IGFbcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgICAgICAgICA6IDA7IH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGFtcChudW1iZXIsIG1pbiwgbWF4KSB7XG4gICAgICAgIGlmICggbWluID09PSB2b2lkIDAgKSBtaW4gPSAwO1xuICAgICAgICBpZiAoIG1heCA9PT0gdm9pZCAwICkgbWF4ID0gMTtcblxuICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobnVtYmVyLCBtaW4pLCBtYXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vb3AoKSB7fVxuXG4gICAgZnVuY3Rpb24gaW50ZXJzZWN0UmVjdChyMSwgcjIpIHtcbiAgICAgICAgcmV0dXJuIHIxLmxlZnQgPD0gcjIucmlnaHQgJiZcbiAgICAgICAgICAgIHIyLmxlZnQgPD0gcjEucmlnaHQgJiZcbiAgICAgICAgICAgIHIxLnRvcCA8PSByMi5ib3R0b20gJiZcbiAgICAgICAgICAgIHIyLnRvcCA8PSByMS5ib3R0b207XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9pbnRJblJlY3QocG9pbnQsIHJlY3QpIHtcbiAgICAgICAgcmV0dXJuIGludGVyc2VjdFJlY3Qoe3RvcDogcG9pbnQueSwgYm90dG9tOiBwb2ludC55LCBsZWZ0OiBwb2ludC54LCByaWdodDogcG9pbnQueH0sIHJlY3QpO1xuICAgIH1cblxuICAgIHZhciBEaW1lbnNpb25zID0ge1xuXG4gICAgICAgIHJhdGlvOiBmdW5jdGlvbihkaW1lbnNpb25zLCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIG9iajtcblxuXG4gICAgICAgICAgICB2YXIgYVByb3AgPSBwcm9wID09PSAnd2lkdGgnID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgICAgICAgICByZXR1cm4gKCBvYmogPSB7fSwgb2JqW2FQcm9wXSA9IE1hdGgucm91bmQodmFsdWUgKiBkaW1lbnNpb25zW2FQcm9wXSAvIGRpbWVuc2lvbnNbcHJvcF0pLCBvYmpbcHJvcF0gPSB2YWx1ZSwgb2JqICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY29udGFpbjogZnVuY3Rpb24oZGltZW5zaW9ucywgbWF4RGltZW5zaW9ucykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIGRpbWVuc2lvbnMgPSBhc3NpZ24oe30sIGRpbWVuc2lvbnMpO1xuXG4gICAgICAgICAgICBlYWNoKGRpbWVuc2lvbnMsIGZ1bmN0aW9uIChfLCBwcm9wKSB7IHJldHVybiBkaW1lbnNpb25zID0gZGltZW5zaW9uc1twcm9wXSA+IG1heERpbWVuc2lvbnNbcHJvcF1cbiAgICAgICAgICAgICAgICA/IHRoaXMkMS5yYXRpbyhkaW1lbnNpb25zLCBwcm9wLCBtYXhEaW1lbnNpb25zW3Byb3BdKVxuICAgICAgICAgICAgICAgIDogZGltZW5zaW9uczsgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRpbWVuc2lvbnM7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY292ZXI6IGZ1bmN0aW9uKGRpbWVuc2lvbnMsIG1heERpbWVuc2lvbnMpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICBkaW1lbnNpb25zID0gdGhpcy5jb250YWluKGRpbWVuc2lvbnMsIG1heERpbWVuc2lvbnMpO1xuXG4gICAgICAgICAgICBlYWNoKGRpbWVuc2lvbnMsIGZ1bmN0aW9uIChfLCBwcm9wKSB7IHJldHVybiBkaW1lbnNpb25zID0gZGltZW5zaW9uc1twcm9wXSA8IG1heERpbWVuc2lvbnNbcHJvcF1cbiAgICAgICAgICAgICAgICA/IHRoaXMkMS5yYXRpbyhkaW1lbnNpb25zLCBwcm9wLCBtYXhEaW1lbnNpb25zW3Byb3BdKVxuICAgICAgICAgICAgICAgIDogZGltZW5zaW9uczsgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRpbWVuc2lvbnM7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBhdHRyKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7XG5cbiAgICAgICAgaWYgKGlzT2JqZWN0KG5hbWUpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbmFtZSkge1xuICAgICAgICAgICAgICAgIGF0dHIoZWxlbWVudCwga2V5LCBuYW1lW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9Ob2RlcyhlbGVtZW50KS5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5jYWxsKGVsZW1lbnQsIGF0dHIoZWxlbWVudCwgbmFtZSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsZW1lbnQsIG5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzQXR0cihlbGVtZW50LCBuYW1lKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKG5hbWUpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVBdHRyKGVsZW1lbnQsIG5hbWUpIHtcbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZXMoZWxlbWVudCk7XG4gICAgICAgIG5hbWUuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBlbGVtZW50LmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpOyB9XG4gICAgICAgICAgICApOyB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmlsdGVyQXR0cihlbGVtZW50LCBhdHRyaWJ1dGUsIHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7XG4gICAgICAgIGF0dHIoZWxlbWVudCwgYXR0cmlidXRlLCBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHZhbHVlID8gdmFsdWUucmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudCkgOiB2YWx1ZTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF0YShlbGVtZW50LCBhdHRyaWJ1dGUpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGF0dHJzID0gW2F0dHJpYnV0ZSwgKFwiZGF0YS1cIiArIGF0dHJpYnV0ZSldOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChoYXNBdHRyKGVsZW1lbnQsIGF0dHJzW2ldKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhdHRyKGVsZW1lbnQsIGF0dHJzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHF1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiB0b05vZGUoc2VsZWN0b3IpIHx8IGZpbmQoc2VsZWN0b3IsIGlzQ29udGV4dFNlbGVjdG9yKHNlbGVjdG9yKSA/IGNvbnRleHQgOiBkb2N1bWVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcXVlcnlBbGwoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgdmFyIG5vZGVzID0gdG9Ob2RlcyhzZWxlY3Rvcik7XG4gICAgICAgIHJldHVybiBub2Rlcy5sZW5ndGggJiYgbm9kZXMgfHwgZmluZEFsbChzZWxlY3RvciwgaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpID8gY29udGV4dCA6IGRvY3VtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaW5kKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiB0b05vZGUoX3F1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0LCAncXVlcnlTZWxlY3RvcicpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaW5kQWxsKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKF9xdWVyeShzZWxlY3RvciwgY29udGV4dCwgJ3F1ZXJ5U2VsZWN0b3JBbGwnKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gX3F1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0LCBxdWVyeUZuKSB7XG4gICAgICAgIGlmICggY29udGV4dCA9PT0gdm9pZCAwICkgY29udGV4dCA9IGRvY3VtZW50O1xuXG5cbiAgICAgICAgaWYgKCFzZWxlY3RvciB8fCAhaXNTdHJpbmcoc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3IucmVwbGFjZShjb250ZXh0U2FuaXRpemVSZSwgJyQxIConKTtcblxuICAgICAgICB2YXIgcmVtb3ZlcztcblxuICAgICAgICBpZiAoaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpKSB7XG5cbiAgICAgICAgICAgIHJlbW92ZXMgPSBbXTtcblxuICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoc2VsZWN0b3IsIGkpIHtcblxuICAgICAgICAgICAgICAgIHZhciBjdHggPSBjb250ZXh0O1xuXG4gICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci50cmltKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JbMF0gPT09ICchJykge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvcnMgPSBzZWxlY3Rvci5zdWJzdHIoMSkudHJpbSgpLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IGNsb3Nlc3QoY29udGV4dC5wYXJlbnROb2RlLCBzZWxlY3RvcnNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycy5zbGljZSgxKS5qb2luKCcgJykudHJpbSgpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yWzBdID09PSAnLScpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3JzJDEgPSBzZWxlY3Rvci5zdWJzdHIoMSkudHJpbSgpLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gKGN0eCB8fCBjb250ZXh0KS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBjdHggPSBtYXRjaGVzKHByZXYsIHNlbGVjdG9yLnN1YnN0cigxKSkgPyBwcmV2IDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvcnMkMS5zbGljZSgxKS5qb2luKCcgJyk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWN0eCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWN0eC5pZCkge1xuICAgICAgICAgICAgICAgICAgICBjdHguaWQgPSBcInVrLVwiICsgKERhdGUubm93KCkpICsgaTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZUF0dHIoY3R4LCAnaWQnKTsgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcIiNcIiArIChlc2NhcGUoY3R4LmlkKSkgKyBcIiBcIiArIHNlbGVjdG9yKTtcblxuICAgICAgICAgICAgfSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywnKTtcblxuICAgICAgICAgICAgY29udGV4dCA9IGRvY3VtZW50O1xuXG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICByZXR1cm4gY29udGV4dFtxdWVyeUZuXShzZWxlY3Rvcik7XG5cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICB9IGZpbmFsbHkge1xuXG4gICAgICAgICAgICByZW1vdmVzICYmIHJlbW92ZXMuZm9yRWFjaChmdW5jdGlvbiAocmVtb3ZlKSB7IHJldHVybiByZW1vdmUoKTsgfSk7XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgdmFyIGNvbnRleHRTZWxlY3RvclJlID0gLyhefCwpXFxzKlshPit+LV0vO1xuICAgIHZhciBjb250ZXh0U2FuaXRpemVSZSA9IC8oWyE+K34tXSkoPz1cXHMrWyE+K34tXXxcXHMqJCkvZztcblxuICAgIGZ1bmN0aW9uIGlzQ29udGV4dFNlbGVjdG9yKHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhzZWxlY3RvcikgJiYgc2VsZWN0b3IubWF0Y2goY29udGV4dFNlbGVjdG9yUmUpO1xuICAgIH1cblxuICAgIHZhciBlbFByb3RvID0gRWxlbWVudC5wcm90b3R5cGU7XG4gICAgdmFyIG1hdGNoZXNGbiA9IGVsUHJvdG8ubWF0Y2hlcyB8fCBlbFByb3RvLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBlbFByb3RvLm1zTWF0Y2hlc1NlbGVjdG9yO1xuXG4gICAgZnVuY3Rpb24gbWF0Y2hlcyhlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBtYXRjaGVzRm4uY2FsbChlbGVtZW50LCBzZWxlY3Rvcik7IH0pO1xuICAgIH1cblxuICAgIHZhciBjbG9zZXN0Rm4gPSBlbFByb3RvLmNsb3Nlc3QgfHwgZnVuY3Rpb24gKHNlbGVjdG9yKSB7XG4gICAgICAgIHZhciBhbmNlc3RvciA9IHRoaXM7XG5cbiAgICAgICAgZG8ge1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcyhhbmNlc3Rvciwgc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFuY2VzdG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudE5vZGU7XG5cbiAgICAgICAgfSB3aGlsZSAoYW5jZXN0b3IgJiYgYW5jZXN0b3Iubm9kZVR5cGUgPT09IDEpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjbG9zZXN0KGVsZW1lbnQsIHNlbGVjdG9yKSB7XG5cbiAgICAgICAgaWYgKHN0YXJ0c1dpdGgoc2VsZWN0b3IsICc+JykpIHtcbiAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3Iuc2xpY2UoMSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpXG4gICAgICAgICAgICA/IGVsZW1lbnQucGFyZW50Tm9kZSAmJiBjbG9zZXN0Rm4uY2FsbChlbGVtZW50LCBzZWxlY3RvcilcbiAgICAgICAgICAgIDogdG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSAmJiBjbG9zZXN0Rm4uY2FsbChlbGVtZW50LCBzZWxlY3Rvcik7IH0pLmZpbHRlcihCb29sZWFuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJlbnRzKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgICAgICB2YXIgcGFyZW50ID0gdG9Ob2RlKGVsZW1lbnQpLnBhcmVudE5vZGU7XG5cbiAgICAgICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgPT09IDEpIHtcblxuICAgICAgICAgICAgaWYgKG1hdGNoZXMocGFyZW50LCBzZWxlY3RvcikpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgIH1cblxuICAgIHZhciBlc2NhcGVGbiA9IHdpbmRvdy5DU1MgJiYgQ1NTLmVzY2FwZSB8fCBmdW5jdGlvbiAoY3NzKSB7IHJldHVybiBjc3MucmVwbGFjZSgvKFteXFx4N2YtXFx1RkZGRlxcdy1dKS9nLCBmdW5jdGlvbiAobWF0Y2gpIHsgcmV0dXJuIChcIlxcXFxcIiArIG1hdGNoKTsgfSk7IH07XG4gICAgZnVuY3Rpb24gZXNjYXBlKGNzcykge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoY3NzKSA/IGVzY2FwZUZuLmNhbGwobnVsbCwgY3NzKSA6ICcnO1xuICAgIH1cblxuICAgIHZhciB2b2lkRWxlbWVudHMgPSB7XG4gICAgICAgIGFyZWE6IHRydWUsXG4gICAgICAgIGJhc2U6IHRydWUsXG4gICAgICAgIGJyOiB0cnVlLFxuICAgICAgICBjb2w6IHRydWUsXG4gICAgICAgIGVtYmVkOiB0cnVlLFxuICAgICAgICBocjogdHJ1ZSxcbiAgICAgICAgaW1nOiB0cnVlLFxuICAgICAgICBpbnB1dDogdHJ1ZSxcbiAgICAgICAga2V5Z2VuOiB0cnVlLFxuICAgICAgICBsaW5rOiB0cnVlLFxuICAgICAgICBtZW51aXRlbTogdHJ1ZSxcbiAgICAgICAgbWV0YTogdHJ1ZSxcbiAgICAgICAgcGFyYW06IHRydWUsXG4gICAgICAgIHNvdXJjZTogdHJ1ZSxcbiAgICAgICAgdHJhY2s6IHRydWUsXG4gICAgICAgIHdicjogdHJ1ZVxuICAgIH07XG4gICAgZnVuY3Rpb24gaXNWb2lkRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHZvaWRFbGVtZW50c1tlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKV07IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmlzaWJsZShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgZWxlbWVudC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aDsgfSk7XG4gICAgfVxuXG4gICAgdmFyIHNlbElucHV0ID0gJ2lucHV0LHNlbGVjdCx0ZXh0YXJlYSxidXR0b24nO1xuICAgIGZ1bmN0aW9uIGlzSW5wdXQoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBtYXRjaGVzKGVsZW1lbnQsIHNlbElucHV0KTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmlsdGVyKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLmZpbHRlcihmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gbWF0Y2hlcyhlbGVtZW50LCBzZWxlY3Rvcik7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdpdGhpbihlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4gIWlzU3RyaW5nKHNlbGVjdG9yKVxuICAgICAgICAgICAgPyBlbGVtZW50ID09PSBzZWxlY3RvciB8fCAoaXNEb2N1bWVudChzZWxlY3RvcilcbiAgICAgICAgICAgICAgICA/IHNlbGVjdG9yLmRvY3VtZW50RWxlbWVudFxuICAgICAgICAgICAgICAgIDogdG9Ob2RlKHNlbGVjdG9yKSkuY29udGFpbnModG9Ob2RlKGVsZW1lbnQpKSAvLyBJRSAxMSBkb2N1bWVudCBkb2VzIG5vdCBpbXBsZW1lbnQgY29udGFpbnNcbiAgICAgICAgICAgIDogbWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvcikgfHwgY2xvc2VzdChlbGVtZW50LCBzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cblxuICAgICAgICB2YXIgcmVmID0gZ2V0QXJncyhhcmdzKTtcbiAgICAgICAgdmFyIHRhcmdldCA9IHJlZlswXTtcbiAgICAgICAgdmFyIHR5cGUgPSByZWZbMV07XG4gICAgICAgIHZhciBzZWxlY3RvciA9IHJlZlsyXTtcbiAgICAgICAgdmFyIGxpc3RlbmVyID0gcmVmWzNdO1xuICAgICAgICB2YXIgdXNlQ2FwdHVyZSA9IHJlZls0XTtcblxuICAgICAgICB0YXJnZXQgPSB0b0V2ZW50VGFyZ2V0KHRhcmdldCk7XG5cbiAgICAgICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICBsaXN0ZW5lciA9IGRlbGVnYXRlKHRhcmdldCwgc2VsZWN0b3IsIGxpc3RlbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsaXN0ZW5lci5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBsaXN0ZW5lciA9IGRldGFpbChsaXN0ZW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdGFyZ2V0ICYmIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBvZmYodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7IH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb2ZmKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpIHtcbiAgICAgICAgaWYgKCB1c2VDYXB0dXJlID09PSB2b2lkIDAgKSB1c2VDYXB0dXJlID0gZmFsc2U7XG5cbiAgICAgICAgdGFyZ2V0ID0gdG9FdmVudFRhcmdldCh0YXJnZXQpO1xuICAgICAgICB0YXJnZXQgJiYgdHlwZS5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHsgcmV0dXJuIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25jZSgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuXG4gICAgICAgIHZhciByZWYgPSBnZXRBcmdzKGFyZ3MpO1xuICAgICAgICB2YXIgZWxlbWVudCA9IHJlZlswXTtcbiAgICAgICAgdmFyIHR5cGUgPSByZWZbMV07XG4gICAgICAgIHZhciBzZWxlY3RvciA9IHJlZlsyXTtcbiAgICAgICAgdmFyIGxpc3RlbmVyID0gcmVmWzNdO1xuICAgICAgICB2YXIgdXNlQ2FwdHVyZSA9IHJlZls0XTtcbiAgICAgICAgdmFyIGNvbmRpdGlvbiA9IHJlZls1XTtcbiAgICAgICAgdmFyIG9mZiA9IG9uKGVsZW1lbnQsIHR5cGUsIHNlbGVjdG9yLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9ICFjb25kaXRpb24gfHwgY29uZGl0aW9uKGUpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIG9mZigpO1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyKGUsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHVzZUNhcHR1cmUpO1xuXG4gICAgICAgIHJldHVybiBvZmY7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJpZ2dlcih0YXJnZXQsIGV2ZW50LCBkZXRhaWwpIHtcbiAgICAgICAgcmV0dXJuIHRvRXZlbnRUYXJnZXRzKHRhcmdldCkucmVkdWNlKGZ1bmN0aW9uIChub3RDYW5jZWxlZCwgdGFyZ2V0KSB7IHJldHVybiBub3RDYW5jZWxlZCAmJiB0YXJnZXQuZGlzcGF0Y2hFdmVudChjcmVhdGVFdmVudChldmVudCwgdHJ1ZSwgdHJ1ZSwgZGV0YWlsKSk7IH1cbiAgICAgICAgICAgICwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRXZlbnQoZSwgYnViYmxlcywgY2FuY2VsYWJsZSwgZGV0YWlsKSB7XG4gICAgICAgIGlmICggYnViYmxlcyA9PT0gdm9pZCAwICkgYnViYmxlcyA9IHRydWU7XG4gICAgICAgIGlmICggY2FuY2VsYWJsZSA9PT0gdm9pZCAwICkgY2FuY2VsYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChpc1N0cmluZyhlKSkge1xuICAgICAgICAgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7IC8vIElFIDExXG4gICAgICAgICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoZSwgYnViYmxlcywgY2FuY2VsYWJsZSwgZGV0YWlsKTtcbiAgICAgICAgICAgIGUgPSBldmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEFyZ3MoYXJncykge1xuXG4gICAgICAgIGlmIChpc1N0cmluZyhhcmdzWzBdKSkge1xuICAgICAgICAgICAgYXJnc1swXSA9IGZpbmQoYXJnc1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihhcmdzWzJdKSkge1xuICAgICAgICAgICAgYXJncy5zcGxpY2UoMiwgMCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlbGVnYXRlKGVsZW1lbnQsIHNlbGVjdG9yLCBsaXN0ZW5lcikge1xuICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBzZWxlY3RvclswXSA9PT0gJz4nXG4gICAgICAgICAgICAgICAgPyBmaW5kQWxsKHNlbGVjdG9yLCBlbGVtZW50KS5yZXZlcnNlKCkuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiB3aXRoaW4odGFyZ2V0LCBlbGVtZW50KTsgfSlbMF1cbiAgICAgICAgICAgICAgICA6IGNsb3Nlc3QodGFyZ2V0LCBzZWxlY3Rvcik7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgZS5kZWxlZ2F0ZSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgZS5jdXJyZW50ID0gY3VycmVudDtcblxuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmNhbGwodGhpcyQxLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZXRhaWwobGlzdGVuZXIpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHJldHVybiBpc0FycmF5KGUuZGV0YWlsKSA/IGxpc3RlbmVyLmFwcGx5KHZvaWQgMCwgW2VdLmNvbmNhdChlLmRldGFpbCkpIDogbGlzdGVuZXIoZSk7IH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNFdmVudFRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuICdFdmVudFRhcmdldCcgaW4gd2luZG93XG4gICAgICAgICAgICA/IHRhcmdldCBpbnN0YW5jZW9mIEV2ZW50VGFyZ2V0XG4gICAgICAgICAgICA6IHRhcmdldCAmJiAnYWRkRXZlbnRMaXN0ZW5lcicgaW4gdGFyZ2V0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRXZlbnRUYXJnZXQodGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiBpc0V2ZW50VGFyZ2V0KHRhcmdldCkgPyB0YXJnZXQgOiB0b05vZGUodGFyZ2V0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0V2ZW50VGFyZ2V0cyh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIGlzRXZlbnRUYXJnZXQodGFyZ2V0KVxuICAgICAgICAgICAgPyBbdGFyZ2V0XVxuICAgICAgICAgICAgOiBpc0FycmF5KHRhcmdldClcbiAgICAgICAgICAgICAgICA/IHRhcmdldC5tYXAodG9FdmVudFRhcmdldCkuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgOiB0b05vZGVzKHRhcmdldCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJldmVudENsaWNrKCkge1xuXG4gICAgICAgIHZhciB0aW1lciA9IHNldFRpbWVvdXQob25jZShkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcblxuICAgICAgICB9LCB0cnVlKSk7XG5cbiAgICAgICAgdHJpZ2dlcihkb2N1bWVudCwgJ3RvdWNoY2FuY2VsJyk7XG5cbiAgICB9XG5cbiAgICAvKiBnbG9iYWwgc2V0SW1tZWRpYXRlICovXG5cbiAgICB2YXIgUHJvbWlzZSQxID0gJ1Byb21pc2UnIGluIHdpbmRvdyA/IHdpbmRvdy5Qcm9taXNlIDogUHJvbWlzZUZuO1xuXG4gICAgdmFyIERlZmVycmVkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdGhpcyQxLnJlamVjdCA9IHJlamVjdDtcbiAgICAgICAgICAgIHRoaXMkMS5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFByb21pc2VzL0ErIHBvbHlmaWxsIHYxLjEuNCAoaHR0cHM6Ly9naXRodWIuY29tL2JyYW1zdGVpbi9wcm9taXMpXG4gICAgICovXG5cbiAgICB2YXIgUkVTT0xWRUQgPSAwO1xuICAgIHZhciBSRUpFQ1RFRCA9IDE7XG4gICAgdmFyIFBFTkRJTkcgPSAyO1xuXG4gICAgdmFyIGFzeW5jID0gJ3NldEltbWVkaWF0ZScgaW4gd2luZG93ID8gc2V0SW1tZWRpYXRlIDogc2V0VGltZW91dDtcblxuICAgIGZ1bmN0aW9uIFByb21pc2VGbihleGVjdXRvcikge1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSBQRU5ESU5HO1xuICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRlZmVycmVkID0gW107XG5cbiAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBleGVjdXRvcihcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoeCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIFByb21pc2VGbi5yZWplY3QgPSBmdW5jdGlvbiAocikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VGbihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICByZWplY3Qocik7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBQcm9taXNlRm4ucmVzb2x2ZSA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHJlc29sdmUoeCk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBQcm9taXNlRm4uYWxsID0gZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG5cbiAgICAgICAgICAgIGlmIChpdGVyYWJsZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlc29sdmVyKGkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0geDtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPT09IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYWJsZS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIFByb21pc2VGbi5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmVyKGkpLCByZWplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgUHJvbWlzZUZuLnJhY2UgPSBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmFibGUubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICBQcm9taXNlRm4ucmVzb2x2ZShpdGVyYWJsZVtpXSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgdmFyIHAgPSBQcm9taXNlRm4ucHJvdG90eXBlO1xuXG4gICAgcC5yZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgICAgIHZhciBwcm9taXNlID0gdGhpcztcblxuICAgICAgICBpZiAocHJvbWlzZS5zdGF0ZSA9PT0gUEVORElORykge1xuICAgICAgICAgICAgaWYgKHggPT09IHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlIHNldHRsZWQgd2l0aCBpdHNlbGYuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjYWxsZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgdGhlbiA9IHggJiYgeC50aGVuO1xuXG4gICAgICAgICAgICAgICAgaWYgKHggIT09IG51bGwgJiYgaXNPYmplY3QoeCkgJiYgaXNGdW5jdGlvbih0aGVuKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGVuLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9taXNlLnN0YXRlID0gUkVTT0xWRUQ7XG4gICAgICAgICAgICBwcm9taXNlLnZhbHVlID0geDtcbiAgICAgICAgICAgIHByb21pc2Uubm90aWZ5KCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcC5yZWplY3QgPSBmdW5jdGlvbiByZWplY3QocmVhc29uKSB7XG4gICAgICAgIHZhciBwcm9taXNlID0gdGhpcztcblxuICAgICAgICBpZiAocHJvbWlzZS5zdGF0ZSA9PT0gUEVORElORykge1xuICAgICAgICAgICAgaWYgKHJlYXNvbiA9PT0gcHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2Ugc2V0dGxlZCB3aXRoIGl0c2VsZi4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvbWlzZS5zdGF0ZSA9IFJFSkVDVEVEO1xuICAgICAgICAgICAgcHJvbWlzZS52YWx1ZSA9IHJlYXNvbjtcbiAgICAgICAgICAgIHByb21pc2Uubm90aWZ5KCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcC5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkoKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIGFzeW5jKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzJDEuc3RhdGUgIT09IFBFTkRJTkcpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAodGhpcyQxLmRlZmVycmVkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcyQxLmRlZmVycmVkLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvblJlc29sdmVkID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb25SZWplY3RlZCA9IHJlZlsxXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc29sdmUgPSByZWZbMl07XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWplY3QgPSByZWZbM107XG5cbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuc3RhdGUgPT09IFJFU09MVkVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25SZXNvbHZlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvblJlc29sdmVkLmNhbGwodW5kZWZpbmVkLCB0aGlzJDEudmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMkMS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzJDEuc3RhdGUgPT09IFJFSkVDVEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25SZWplY3RlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvblJlamVjdGVkLmNhbGwodW5kZWZpbmVkLCB0aGlzJDEudmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QodGhpcyQxLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHAudGhlbiA9IGZ1bmN0aW9uIHRoZW4ob25SZXNvbHZlZCwgb25SZWplY3RlZCkge1xuICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VGbihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB0aGlzJDEuZGVmZXJyZWQucHVzaChbb25SZXNvbHZlZCwgb25SZWplY3RlZCwgcmVzb2x2ZSwgcmVqZWN0XSk7XG4gICAgICAgICAgICB0aGlzJDEubm90aWZ5KCk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwLmNhdGNoID0gZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBhamF4KHVybCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgIHZhciBlbnYgPSBhc3NpZ24oe1xuICAgICAgICAgICAgICAgIGRhdGE6IG51bGwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgICAgICB4aHI6IG5ldyBYTUxIdHRwUmVxdWVzdCgpLFxuICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6IG5vb3AsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnJ1xuICAgICAgICAgICAgfSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGVudi5iZWZvcmVTZW5kKGVudik7XG5cbiAgICAgICAgICAgIHZhciB4aHIgPSBlbnYueGhyO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIGVudikge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wIGluIHhocikge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB4aHJbcHJvcF0gPSBlbnZbcHJvcF07XG5cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHhoci5vcGVuKGVudi5tZXRob2QudG9VcHBlckNhc2UoKSwgdXJsKTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaGVhZGVyIGluIGVudi5oZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyLCBlbnYuaGVhZGVyc1toZWFkZXJdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb24oeGhyLCAnbG9hZCcsIGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAwIHx8IHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCAzMDAgfHwgeGhyLnN0YXR1cyA9PT0gMzA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoeGhyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoYXNzaWduKEVycm9yKHhoci5zdGF0dXNUZXh0KSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgeGhyOiB4aHIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIG9uKHhociwgJ2Vycm9yJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVqZWN0KGFzc2lnbihFcnJvcignTmV0d29yayBFcnJvcicpLCB7eGhyOiB4aHJ9KSk7IH0pO1xuICAgICAgICAgICAgb24oeGhyLCAndGltZW91dCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlamVjdChhc3NpZ24oRXJyb3IoJ05ldHdvcmsgVGltZW91dCcpLCB7eGhyOiB4aHJ9KSk7IH0pO1xuXG4gICAgICAgICAgICB4aHIuc2VuZChlbnYuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEltYWdlKHNyYywgc3Jjc2V0LCBzaXplcykge1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcblxuICAgICAgICAgICAgaW1nLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVzb2x2ZShpbWcpOyB9O1xuXG4gICAgICAgICAgICBpbWcuc3JjID0gc3JjO1xuICAgICAgICAgICAgc3Jjc2V0ICYmIChpbWcuc3Jjc2V0ID0gc3Jjc2V0KTtcbiAgICAgICAgICAgIHNpemVzICYmIChpbWcuc2l6ZXMgPSBzaXplcyk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSZWFkeSgpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScgfHwgZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZHkoZm4pIHtcblxuICAgICAgICBpZiAoaXNSZWFkeSgpKSB7XG4gICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGhhbmRsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVuYmluZDEoKTtcbiAgICAgICAgICAgIHVuYmluZDIoKTtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1bmJpbmQxID0gb24oZG9jdW1lbnQsICdET01Db250ZW50TG9hZGVkJywgaGFuZGxlKTtcbiAgICAgICAgdmFyIHVuYmluZDIgPSBvbih3aW5kb3csICdsb2FkJywgaGFuZGxlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbmRleChlbGVtZW50LCByZWYpIHtcbiAgICAgICAgcmV0dXJuIHJlZlxuICAgICAgICAgICAgPyB0b05vZGVzKGVsZW1lbnQpLmluZGV4T2YodG9Ob2RlKHJlZikpXG4gICAgICAgICAgICA6IHRvTm9kZXMoKGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCkpICYmIGVsZW1lbnQucGFyZW50Tm9kZS5jaGlsZHJlbikuaW5kZXhPZihlbGVtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJbmRleChpLCBlbGVtZW50cywgY3VycmVudCwgZmluaXRlKSB7XG4gICAgICAgIGlmICggY3VycmVudCA9PT0gdm9pZCAwICkgY3VycmVudCA9IDA7XG4gICAgICAgIGlmICggZmluaXRlID09PSB2b2lkIDAgKSBmaW5pdGUgPSBmYWxzZTtcblxuXG4gICAgICAgIGVsZW1lbnRzID0gdG9Ob2RlcyhlbGVtZW50cyk7XG5cbiAgICAgICAgdmFyIGxlbmd0aCA9IGVsZW1lbnRzLmxlbmd0aDtcblxuICAgICAgICBpID0gaXNOdW1lcmljKGkpXG4gICAgICAgICAgICA/IHRvTnVtYmVyKGkpXG4gICAgICAgICAgICA6IGkgPT09ICduZXh0J1xuICAgICAgICAgICAgICAgID8gY3VycmVudCArIDFcbiAgICAgICAgICAgICAgICA6IGkgPT09ICdwcmV2aW91cydcbiAgICAgICAgICAgICAgICAgICAgPyBjdXJyZW50IC0gMVxuICAgICAgICAgICAgICAgICAgICA6IGluZGV4KGVsZW1lbnRzLCBpKTtcblxuICAgICAgICBpZiAoZmluaXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gY2xhbXAoaSwgMCwgbGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpICU9IGxlbmd0aDtcblxuICAgICAgICByZXR1cm4gaSA8IDAgPyBpICsgbGVuZ3RoIDogaTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbXB0eShlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG4gICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGh0bWwocGFyZW50LCBodG1sKSB7XG4gICAgICAgIHBhcmVudCA9IHRvTm9kZShwYXJlbnQpO1xuICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQoaHRtbClcbiAgICAgICAgICAgID8gcGFyZW50LmlubmVySFRNTFxuICAgICAgICAgICAgOiBhcHBlbmQocGFyZW50Lmhhc0NoaWxkTm9kZXMoKSA/IGVtcHR5KHBhcmVudCkgOiBwYXJlbnQsIGh0bWwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXBlbmQocGFyZW50LCBlbGVtZW50KSB7XG5cbiAgICAgICAgcGFyZW50ID0gdG9Ob2RlKHBhcmVudCk7XG5cbiAgICAgICAgaWYgKCFwYXJlbnQuaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwZW5kKHBhcmVudCwgZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZXMoZWxlbWVudCwgZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgcGFyZW50LmZpcnN0Q2hpbGQpOyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGVuZChwYXJlbnQsIGVsZW1lbnQpIHtcbiAgICAgICAgcGFyZW50ID0gdG9Ob2RlKHBhcmVudCk7XG4gICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiZWZvcmUocmVmLCBlbGVtZW50KSB7XG4gICAgICAgIHJlZiA9IHRvTm9kZShyZWYpO1xuICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZXMoZWxlbWVudCwgZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHJlZi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCByZWYpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZnRlcihyZWYsIGVsZW1lbnQpIHtcbiAgICAgICAgcmVmID0gdG9Ob2RlKHJlZik7XG4gICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcmVmLm5leHRTaWJsaW5nXG4gICAgICAgICAgICA/IGJlZm9yZShyZWYubmV4dFNpYmxpbmcsIGVsZW1lbnQpXG4gICAgICAgICAgICA6IGFwcGVuZChyZWYucGFyZW50Tm9kZSwgZWxlbWVudCk7IH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnNlcnROb2RlcyhlbGVtZW50LCBmbikge1xuICAgICAgICBlbGVtZW50ID0gaXNTdHJpbmcoZWxlbWVudCkgPyBmcmFnbWVudChlbGVtZW50KSA6IGVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBlbGVtZW50XG4gICAgICAgICAgICA/ICdsZW5ndGgnIGluIGVsZW1lbnRcbiAgICAgICAgICAgICAgICA/IHRvTm9kZXMoZWxlbWVudCkubWFwKGZuKVxuICAgICAgICAgICAgICAgIDogZm4oZWxlbWVudClcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmUoZWxlbWVudCkge1xuICAgICAgICB0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlICYmIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd3JhcEFsbChlbGVtZW50LCBzdHJ1Y3R1cmUpIHtcblxuICAgICAgICBzdHJ1Y3R1cmUgPSB0b05vZGUoYmVmb3JlKGVsZW1lbnQsIHN0cnVjdHVyZSkpO1xuXG4gICAgICAgIHdoaWxlIChzdHJ1Y3R1cmUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlLmZpcnN0Q2hpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBhcHBlbmQoc3RydWN0dXJlLCBlbGVtZW50KTtcblxuICAgICAgICByZXR1cm4gc3RydWN0dXJlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdyYXBJbm5lcihlbGVtZW50LCBzdHJ1Y3R1cmUpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXModG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzQ2hpbGROb2RlcyA/IHdyYXBBbGwodG9Ob2RlcyhlbGVtZW50LmNoaWxkTm9kZXMpLCBzdHJ1Y3R1cmUpIDogYXBwZW5kKGVsZW1lbnQsIHN0cnVjdHVyZSk7IH1cbiAgICAgICAgKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW53cmFwKGVsZW1lbnQpIHtcbiAgICAgICAgdG9Ob2RlcyhlbGVtZW50KVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlOyB9KVxuICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBzZWxmKSB7IHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDsgfSlcbiAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBiZWZvcmUocGFyZW50LCBwYXJlbnQuY2hpbGROb2Rlcyk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlKHBhcmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgZnJhZ21lbnRSZSA9IC9eXFxzKjwoXFx3K3whKVtePl0qPi87XG4gICAgdmFyIHNpbmdsZVRhZ1JlID0gL148KFxcdyspXFxzKlxcLz8+KD86PFxcL1xcMT4pPyQvO1xuXG4gICAgZnVuY3Rpb24gZnJhZ21lbnQoaHRtbCkge1xuXG4gICAgICAgIHZhciBtYXRjaGVzID0gc2luZ2xlVGFnUmUuZXhlYyhodG1sKTtcbiAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG1hdGNoZXNbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBpZiAoZnJhZ21lbnRSZS50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgICBjb250YWluZXIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBodG1sLnRyaW0oKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250YWluZXIudGV4dENvbnRlbnQgPSBodG1sO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCA+IDEgPyB0b05vZGVzKGNvbnRhaW5lci5jaGlsZE5vZGVzKSA6IGNvbnRhaW5lci5maXJzdENoaWxkO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHkobm9kZSwgZm4pIHtcblxuICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5ub2RlVHlwZSAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm4obm9kZSk7XG4gICAgICAgIG5vZGUgPSBub2RlLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICAgICAgYXBwbHkobm9kZSwgZm4pO1xuICAgICAgICAgICAgbm9kZSA9IG5vZGUubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gICAgICAgIGFwcGx5JDEoZWxlbWVudCwgYXJncywgJ2FkZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICBhcHBseSQxKGVsZW1lbnQsIGFyZ3MsICdyZW1vdmUnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVDbGFzc2VzKGVsZW1lbnQsIGNscykge1xuICAgICAgICBmaWx0ZXJBdHRyKGVsZW1lbnQsICdjbGFzcycsIG5ldyBSZWdFeHAoKFwiKF58XFxcXHMpXCIgKyBjbHMgKyBcIig/IVxcXFxTKVwiKSwgJ2cnKSwgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlcGxhY2VDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgICAgICAgYXJnc1swXSAmJiByZW1vdmVDbGFzcyhlbGVtZW50LCBhcmdzWzBdKTtcbiAgICAgICAgYXJnc1sxXSAmJiBhZGRDbGFzcyhlbGVtZW50LCBhcmdzWzFdKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNDbGFzcyhlbGVtZW50LCBjbHMpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xzKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoZWxlbWVudCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG5cbiAgICAgICAgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJncyA9IGdldEFyZ3MkMShhcmdzKTtcblxuICAgICAgICB2YXIgZm9yY2UgPSAhaXNTdHJpbmcoYXJnc1thcmdzLmxlbmd0aCAtIDFdKSA/IGFyZ3MucG9wKCkgOiBbXTsgLy8gaW4gaU9TIDkuMyBmb3JjZSA9PT0gdW5kZWZpbmVkIGV2YWx1YXRlcyB0byBmYWxzZVxuXG4gICAgICAgIGFyZ3MgPSBhcmdzLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGNsYXNzTGlzdCA9IHJlZi5jbGFzc0xpc3Q7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRzLkZvcmNlXG4gICAgICAgICAgICAgICAgICAgID8gY2xhc3NMaXN0LnRvZ2dsZS5hcHBseShjbGFzc0xpc3QsIFthcmdzW2ldXS5jb25jYXQoZm9yY2UpKVxuICAgICAgICAgICAgICAgICAgICA6IChjbGFzc0xpc3RbKCFpc1VuZGVmaW5lZChmb3JjZSkgPyBmb3JjZSA6ICFjbGFzc0xpc3QuY29udGFpbnMoYXJnc1tpXSkpID8gJ2FkZCcgOiAncmVtb3ZlJ10oYXJnc1tpXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGx5JDEoZWxlbWVudCwgYXJncywgZm4pIHtcbiAgICAgICAgYXJncyA9IGdldEFyZ3MkMShhcmdzKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgICAgYXJncy5sZW5ndGggJiYgdG9Ob2RlcyhlbGVtZW50KS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgIHZhciBjbGFzc0xpc3QgPSByZWYuY2xhc3NMaXN0O1xuXG4gICAgICAgICAgICBzdXBwb3J0cy5NdWx0aXBsZVxuICAgICAgICAgICAgICAgID8gY2xhc3NMaXN0W2ZuXS5hcHBseShjbGFzc0xpc3QsIGFyZ3MpXG4gICAgICAgICAgICAgICAgOiBhcmdzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZXR1cm4gY2xhc3NMaXN0W2ZuXShjbHMpOyB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0QXJncyQxKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3MucmVkdWNlKGZ1bmN0aW9uIChhcmdzLCBhcmcpIHsgcmV0dXJuIGFyZ3MuY29uY2F0LmNhbGwoYXJncywgaXNTdHJpbmcoYXJnKSAmJiBpbmNsdWRlcyhhcmcsICcgJykgPyBhcmcudHJpbSgpLnNwbGl0KCcgJykgOiBhcmcpOyB9XG4gICAgICAgICAgICAsIFtdKTtcbiAgICB9XG5cbiAgICB2YXIgc3VwcG9ydHMgPSB7fTtcblxuICAgIC8vIElFIDExXG4gICAgKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ18nKS5jbGFzc0xpc3Q7XG4gICAgICAgIGlmIChsaXN0KSB7XG4gICAgICAgICAgICBsaXN0LmFkZCgnYScsICdiJyk7XG4gICAgICAgICAgICBsaXN0LnRvZ2dsZSgnYycsIGZhbHNlKTtcbiAgICAgICAgICAgIHN1cHBvcnRzLk11bHRpcGxlID0gbGlzdC5jb250YWlucygnYicpO1xuICAgICAgICAgICAgc3VwcG9ydHMuRm9yY2UgPSAhbGlzdC5jb250YWlucygnYycpO1xuICAgICAgICB9XG4gICAgICAgIGxpc3QgPSBudWxsO1xuXG4gICAgfSkoKTtcblxuICAgIHZhciBjc3NOdW1iZXIgPSB7XG4gICAgICAgICdhbmltYXRpb24taXRlcmF0aW9uLWNvdW50JzogdHJ1ZSxcbiAgICAgICAgJ2NvbHVtbi1jb3VudCc6IHRydWUsXG4gICAgICAgICdmaWxsLW9wYWNpdHknOiB0cnVlLFxuICAgICAgICAnZmxleC1ncm93JzogdHJ1ZSxcbiAgICAgICAgJ2ZsZXgtc2hyaW5rJzogdHJ1ZSxcbiAgICAgICAgJ2ZvbnQtd2VpZ2h0JzogdHJ1ZSxcbiAgICAgICAgJ2xpbmUtaGVpZ2h0JzogdHJ1ZSxcbiAgICAgICAgJ29wYWNpdHknOiB0cnVlLFxuICAgICAgICAnb3JkZXInOiB0cnVlLFxuICAgICAgICAnb3JwaGFucyc6IHRydWUsXG4gICAgICAgICd3aWRvd3MnOiB0cnVlLFxuICAgICAgICAnei1pbmRleCc6IHRydWUsXG4gICAgICAgICd6b29tJzogdHJ1ZVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjc3MoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlKSB7XG5cbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cbiAgICAgICAgICAgIGlmIChpc1N0cmluZyhwcm9wZXJ0eSkpIHtcblxuICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gcHJvcE5hbWUocHJvcGVydHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3R5bGUoZWxlbWVudCwgcHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlICYmIHZhbHVlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkocHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGVbcHJvcGVydHldID0gaXNOdW1lcmljKHZhbHVlKSAmJiAhY3NzTnVtYmVyW3Byb3BlcnR5XSA/ICh2YWx1ZSArIFwicHhcIikgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShwcm9wZXJ0eSkpIHtcblxuICAgICAgICAgICAgICAgIHZhciBzdHlsZXMgPSBnZXRTdHlsZXMoZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHkucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgcHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHNbcHJvcGVydHldID0gc3R5bGVzW3Byb3BOYW1lKHByb3BlcnR5KV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QocHJvcGVydHkpKSB7XG4gICAgICAgICAgICAgICAgZWFjaChwcm9wZXJ0eSwgZnVuY3Rpb24gKHZhbHVlLCBwcm9wZXJ0eSkgeyByZXR1cm4gY3NzKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcblxuICAgICAgICB9KVswXTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFN0eWxlcyhlbGVtZW50LCBwc2V1ZG9FbHQpIHtcbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIHBzZXVkb0VsdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U3R5bGUoZWxlbWVudCwgcHJvcGVydHksIHBzZXVkb0VsdCkge1xuICAgICAgICByZXR1cm4gZ2V0U3R5bGVzKGVsZW1lbnQsIHBzZXVkb0VsdClbcHJvcGVydHldO1xuICAgIH1cblxuICAgIHZhciB2YXJzID0ge307XG5cbiAgICBmdW5jdGlvbiBnZXRDc3NWYXIobmFtZSkge1xuXG4gICAgICAgIGlmICghKG5hbWUgaW4gdmFycykpIHtcblxuICAgICAgICAgICAgLyogdXNhZ2UgaW4gY3NzOiAudmFyLW5hbWU6YmVmb3JlIHsgY29udGVudDpcInh5elwiIH0gKi9cblxuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBhcHBlbmQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG5cbiAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQsIChcInZhci1cIiArIG5hbWUpKTtcblxuICAgICAgICAgICAgdHJ5IHtcblxuICAgICAgICAgICAgICAgIHZhcnNbbmFtZV0gPSBnZXRTdHlsZShlbGVtZW50LCAnY29udGVudCcsICc6YmVmb3JlJykucmVwbGFjZSgvXltcIiddKC4qKVtcIiddJC8sICckMScpO1xuICAgICAgICAgICAgICAgIHZhcnNbbmFtZV0gPSBKU09OLnBhcnNlKHZhcnNbbmFtZV0pO1xuXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YXJzW25hbWVdO1xuXG4gICAgfVxuXG4gICAgdmFyIGNzc1Byb3BzID0ge307XG5cbiAgICBmdW5jdGlvbiBwcm9wTmFtZShuYW1lKSB7XG5cbiAgICAgICAgdmFyIHJldCA9IGNzc1Byb3BzW25hbWVdO1xuICAgICAgICBpZiAoIXJldCkge1xuICAgICAgICAgICAgcmV0ID0gY3NzUHJvcHNbbmFtZV0gPSB2ZW5kb3JQcm9wTmFtZShuYW1lKSB8fCBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgdmFyIGNzc1ByZWZpeGVzID0gWyd3ZWJraXQnLCAnbW96JywgJ21zJ107XG4gICAgdmFyIHJlZiQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnXycpO1xuICAgIHZhciBzdHlsZSA9IHJlZiQxLnN0eWxlO1xuXG4gICAgZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUobmFtZSkge1xuXG4gICAgICAgIG5hbWUgPSBoeXBoZW5hdGUobmFtZSk7XG5cbiAgICAgICAgaWYgKG5hbWUgaW4gc3R5bGUpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGkgPSBjc3NQcmVmaXhlcy5sZW5ndGgsIHByZWZpeGVkTmFtZTtcblxuICAgICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgICAgICBwcmVmaXhlZE5hbWUgPSBcIi1cIiArIChjc3NQcmVmaXhlc1tpXSkgKyBcIi1cIiArIG5hbWU7XG4gICAgICAgICAgICBpZiAocHJlZml4ZWROYW1lIGluIHN0eWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeGVkTmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zaXRpb24oZWxlbWVudCwgcHJvcHMsIGR1cmF0aW9uLCB0aW1pbmcpIHtcbiAgICAgICAgaWYgKCBkdXJhdGlvbiA9PT0gdm9pZCAwICkgZHVyYXRpb24gPSA0MDA7XG4gICAgICAgIGlmICggdGltaW5nID09PSB2b2lkIDAgKSB0aW1pbmcgPSAnbGluZWFyJztcblxuXG4gICAgICAgIHJldHVybiBQcm9taXNlJDEuYWxsKHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY3NzKGVsZW1lbnQsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgbmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiB0cmlnZ2VyKGVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJyk7IH0sIGR1cmF0aW9uKTtcblxuICAgICAgICAgICAgICAgIG9uY2UoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQgdHJhbnNpdGlvbmNhbmNlbGVkJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGVsZW1lbnQsICd1ay10cmFuc2l0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1wcm9wZXJ0eSc6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tZHVyYXRpb24nOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbic6ICcnXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0eXBlID09PSAndHJhbnNpdGlvbmNhbmNlbGVkJyA/IHJlamVjdCgpIDogcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sIGZhbHNlLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09PSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LCAndWstdHJhbnNpdGlvbicpO1xuICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBhc3NpZ24oe1xuICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1wcm9wZXJ0eSc6IE9iamVjdC5rZXlzKHByb3BzKS5tYXAocHJvcE5hbWUpLmpvaW4oJywnKSxcbiAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tZHVyYXRpb24nOiAoZHVyYXRpb24gKyBcIm1zXCIpLFxuICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nOiB0aW1pbmdcbiAgICAgICAgICAgICAgICB9LCBwcm9wcykpO1xuXG4gICAgICAgICAgICB9KTsgfVxuICAgICAgICApKTtcblxuICAgIH1cblxuICAgIHZhciBUcmFuc2l0aW9uID0ge1xuXG4gICAgICAgIHN0YXJ0OiB0cmFuc2l0aW9uLFxuXG4gICAgICAgIHN0b3A6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRyaWdnZXIoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAndHJhbnNpdGlvbmNhbmNlbGVkJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5Qcm9ncmVzczogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhc0NsYXNzKGVsZW1lbnQsICd1ay10cmFuc2l0aW9uJyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgYW5pbWF0aW9uUHJlZml4ID0gJ3VrLWFuaW1hdGlvbi0nO1xuICAgIHZhciBjbHNDYW5jZWxBbmltYXRpb24gPSAndWstY2FuY2VsLWFuaW1hdGlvbic7XG5cbiAgICBmdW5jdGlvbiBhbmltYXRlKGVsZW1lbnQsIGFuaW1hdGlvbiwgZHVyYXRpb24sIG9yaWdpbiwgb3V0KSB7XG4gICAgICAgIHZhciBhcmd1bWVudHMkMSA9IGFyZ3VtZW50cztcbiAgICAgICAgaWYgKCBkdXJhdGlvbiA9PT0gdm9pZCAwICkgZHVyYXRpb24gPSAyMDA7XG5cblxuICAgICAgICByZXR1cm4gUHJvbWlzZSQxLmFsbCh0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudCwgY2xzQ2FuY2VsQW5pbWF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFuaW1hdGUuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMkMSkudGhlbihyZXNvbHZlLCByZWplY3QpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICApOyB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgY2xzID0gYW5pbWF0aW9uICsgXCIgXCIgKyBhbmltYXRpb25QcmVmaXggKyAob3V0ID8gJ2xlYXZlJyA6ICdlbnRlcicpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgoYW5pbWF0aW9uLCBhbmltYXRpb25QcmVmaXgpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzICs9IFwiIHVrLXRyYW5zZm9ybS1vcmlnaW4tXCIgKyBvcmlnaW47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHMgKz0gXCIgXCIgKyBhbmltYXRpb25QcmVmaXggKyBcInJldmVyc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVzZXQoKTtcblxuICAgICAgICAgICAgICAgIG9uY2UoZWxlbWVudCwgJ2FuaW1hdGlvbmVuZCBhbmltYXRpb25jYW5jZWwnLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgaGFzUmVzZXQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2FuaW1hdGlvbmNhbmNlbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFByb21pc2UkMS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUmVzZXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Jlc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgY2xzQ2FuY2VsQW5pbWF0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJldHVybiByZW1vdmVDbGFzcyhlbGVtZW50LCBjbHNDYW5jZWxBbmltYXRpb24pOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LCBmYWxzZSwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gdGFyZ2V0O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsICdhbmltYXRpb25EdXJhdGlvbicsIChkdXJhdGlvbiArIFwibXNcIikpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQsIGNscyk7XG5cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsICdhbmltYXRpb25EdXJhdGlvbicsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NlcyhlbGVtZW50LCAoYW5pbWF0aW9uUHJlZml4ICsgXCJcXFxcUypcIikpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7IH1cbiAgICAgICAgKSk7XG5cbiAgICB9XG5cbiAgICB2YXIgaW5Qcm9ncmVzcyA9IG5ldyBSZWdFeHAoKGFuaW1hdGlvblByZWZpeCArIFwiKGVudGVyfGxlYXZlKVwiKSk7XG4gICAgdmFyIEFuaW1hdGlvbiA9IHtcblxuICAgICAgICBpbjogZnVuY3Rpb24oZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gYW5pbWF0ZShlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4sIGZhbHNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBvdXQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbiwgZHVyYXRpb24sIG9yaWdpbikge1xuICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGUoZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luLCB0cnVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBpblByb2dyZXNzOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5Qcm9ncmVzcy50ZXN0KGF0dHIoZWxlbWVudCwgJ2NsYXNzJykpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAnYW5pbWF0aW9uY2FuY2VsJyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiAkKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiAhaXNTdHJpbmcoc2VsZWN0b3IpXG4gICAgICAgICAgICA/IHRvTm9kZShzZWxlY3RvcilcbiAgICAgICAgICAgIDogaXNIdG1sKHNlbGVjdG9yKVxuICAgICAgICAgICAgICAgID8gdG9Ob2RlKGZyYWdtZW50KHNlbGVjdG9yKSlcbiAgICAgICAgICAgICAgICA6IGZpbmQoc2VsZWN0b3IsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uICQkKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiAhaXNTdHJpbmcoc2VsZWN0b3IpXG4gICAgICAgICAgICA/IHRvTm9kZXMoc2VsZWN0b3IpXG4gICAgICAgICAgICA6IGlzSHRtbChzZWxlY3RvcilcbiAgICAgICAgICAgICAgICA/IHRvTm9kZXMoZnJhZ21lbnQoc2VsZWN0b3IpKVxuICAgICAgICAgICAgICAgIDogZmluZEFsbChzZWxlY3RvciwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNIdG1sKHN0cikge1xuICAgICAgICByZXR1cm4gc3RyWzBdID09PSAnPCcgfHwgc3RyLm1hdGNoKC9eXFxzKjwvKTtcbiAgICB9XG5cbiAgICB2YXIgZGlycyA9IHtcbiAgICAgICAgd2lkdGg6IFsneCcsICdsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgIGhlaWdodDogWyd5JywgJ3RvcCcsICdib3R0b20nXVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwb3NpdGlvbkF0KGVsZW1lbnQsIHRhcmdldCwgZWxBdHRhY2gsIHRhcmdldEF0dGFjaCwgZWxPZmZzZXQsIHRhcmdldE9mZnNldCwgZmxpcCwgYm91bmRhcnkpIHtcblxuICAgICAgICBlbEF0dGFjaCA9IGdldFBvcyhlbEF0dGFjaCk7XG4gICAgICAgIHRhcmdldEF0dGFjaCA9IGdldFBvcyh0YXJnZXRBdHRhY2gpO1xuXG4gICAgICAgIHZhciBmbGlwcGVkID0ge2VsZW1lbnQ6IGVsQXR0YWNoLCB0YXJnZXQ6IHRhcmdldEF0dGFjaH07XG5cbiAgICAgICAgaWYgKCFlbGVtZW50IHx8ICF0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmbGlwcGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRpbSA9IGdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgICAgIHZhciB0YXJnZXREaW0gPSBnZXREaW1lbnNpb25zKHRhcmdldCk7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IHRhcmdldERpbTtcblxuICAgICAgICBtb3ZlVG8ocG9zaXRpb24sIGVsQXR0YWNoLCBkaW0sIC0xKTtcbiAgICAgICAgbW92ZVRvKHBvc2l0aW9uLCB0YXJnZXRBdHRhY2gsIHRhcmdldERpbSwgMSk7XG5cbiAgICAgICAgZWxPZmZzZXQgPSBnZXRPZmZzZXRzKGVsT2Zmc2V0LCBkaW0ud2lkdGgsIGRpbS5oZWlnaHQpO1xuICAgICAgICB0YXJnZXRPZmZzZXQgPSBnZXRPZmZzZXRzKHRhcmdldE9mZnNldCwgdGFyZ2V0RGltLndpZHRoLCB0YXJnZXREaW0uaGVpZ2h0KTtcblxuICAgICAgICBlbE9mZnNldFsneCddICs9IHRhcmdldE9mZnNldFsneCddO1xuICAgICAgICBlbE9mZnNldFsneSddICs9IHRhcmdldE9mZnNldFsneSddO1xuXG4gICAgICAgIHBvc2l0aW9uLmxlZnQgKz0gZWxPZmZzZXRbJ3gnXTtcbiAgICAgICAgcG9zaXRpb24udG9wICs9IGVsT2Zmc2V0Wyd5J107XG5cbiAgICAgICAgYm91bmRhcnkgPSBnZXREaW1lbnNpb25zKGJvdW5kYXJ5IHx8IHdpbmRvdyQxKGVsZW1lbnQpKTtcblxuICAgICAgICBpZiAoZmxpcCkge1xuICAgICAgICAgICAgZWFjaChkaXJzLCBmdW5jdGlvbiAocmVmLCBwcm9wKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRpciA9IHJlZlswXTtcbiAgICAgICAgICAgICAgICB2YXIgYWxpZ24gPSByZWZbMV07XG4gICAgICAgICAgICAgICAgdmFyIGFsaWduRmxpcCA9IHJlZlsyXTtcblxuXG4gICAgICAgICAgICAgICAgaWYgKCEoZmxpcCA9PT0gdHJ1ZSB8fCBpbmNsdWRlcyhmbGlwLCBkaXIpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGVsZW1PZmZzZXQgPSBlbEF0dGFjaFtkaXJdID09PSBhbGlnblxuICAgICAgICAgICAgICAgICAgICA/IC1kaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgOiBlbEF0dGFjaFtkaXJdID09PSBhbGlnbkZsaXBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZGltW3Byb3BdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0QXR0YWNoW2Rpcl0gPT09IGFsaWduXG4gICAgICAgICAgICAgICAgICAgID8gdGFyZ2V0RGltW3Byb3BdXG4gICAgICAgICAgICAgICAgICAgIDogdGFyZ2V0QXR0YWNoW2Rpcl0gPT09IGFsaWduRmxpcFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAtdGFyZ2V0RGltW3Byb3BdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICAgICAgICBpZiAocG9zaXRpb25bYWxpZ25dIDwgYm91bmRhcnlbYWxpZ25dIHx8IHBvc2l0aW9uW2FsaWduXSArIGRpbVtwcm9wXSA+IGJvdW5kYXJ5W2FsaWduRmxpcF0pIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgY2VudGVyT2Zmc2V0ID0gZGltW3Byb3BdIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNlbnRlclRhcmdldE9mZnNldCA9IHRhcmdldEF0dGFjaFtkaXJdID09PSAnY2VudGVyJyA/IC10YXJnZXREaW1bcHJvcF0gLyAyIDogMDtcblxuICAgICAgICAgICAgICAgICAgICBlbEF0dGFjaFtkaXJdID09PSAnY2VudGVyJyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBseShjZW50ZXJPZmZzZXQsIGNlbnRlclRhcmdldE9mZnNldClcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IGFwcGx5KC1jZW50ZXJPZmZzZXQsIC1jZW50ZXJUYXJnZXRPZmZzZXQpXG4gICAgICAgICAgICAgICAgICAgICkgfHwgYXBwbHkoZWxlbU9mZnNldCwgdGFyZ2V0T2Zmc2V0KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFwcGx5KGVsZW1PZmZzZXQsIHRhcmdldE9mZnNldCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdWYWwgPSBwb3NpdGlvblthbGlnbl0gKyBlbGVtT2Zmc2V0ICsgdGFyZ2V0T2Zmc2V0IC0gZWxPZmZzZXRbZGlyXSAqIDI7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbCA+PSBib3VuZGFyeVthbGlnbl0gJiYgbmV3VmFsICsgZGltW3Byb3BdIDw9IGJvdW5kYXJ5W2FsaWduRmxpcF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uW2FsaWduXSA9IG5ld1ZhbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgWydlbGVtZW50JywgJ3RhcmdldCddLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxpcHBlZFtlbF1bZGlyXSA9ICFlbGVtT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmxpcHBlZFtlbF1bZGlyXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZsaXBwZWRbZWxdW2Rpcl0gPT09IGRpcnNbcHJvcF1bMV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZGlyc1twcm9wXVsyXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXJzW3Byb3BdWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgb2Zmc2V0KGVsZW1lbnQsIHBvc2l0aW9uKTtcblxuICAgICAgICByZXR1cm4gZmxpcHBlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvZmZzZXQoZWxlbWVudCwgY29vcmRpbmF0ZXMpIHtcblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChjb29yZGluYXRlcykge1xuXG4gICAgICAgICAgICB2YXIgY3VycmVudE9mZnNldCA9IG9mZnNldChlbGVtZW50KTtcbiAgICAgICAgICAgIHZhciBwb3MgPSBjc3MoZWxlbWVudCwgJ3Bvc2l0aW9uJyk7XG5cbiAgICAgICAgICAgIFsnbGVmdCcsICd0b3AnXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3AgaW4gY29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY3NzKGVsZW1lbnQsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgcHJvcCwgY29vcmRpbmF0ZXNbcHJvcF0gLSBjdXJyZW50T2Zmc2V0W3Byb3BdXG4gICAgICAgICAgICAgICAgICAgICAgICArIHRvRmxvYXQocG9zID09PSAnYWJzb2x1dGUnICYmIHZhbHVlID09PSAnYXV0bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBvc2l0aW9uKGVsZW1lbnQpW3Byb3BdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG5cbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcblxuICAgICAgICB2YXIgcmVmID0gd2luZG93JDEoZWxlbWVudCk7XG4gICAgICAgIHZhciB0b3AgPSByZWYucGFnZVlPZmZzZXQ7XG4gICAgICAgIHZhciBsZWZ0ID0gcmVmLnBhZ2VYT2Zmc2V0O1xuXG4gICAgICAgIGlmIChpc1dpbmRvdyhlbGVtZW50KSkge1xuXG4gICAgICAgICAgICB2YXIgaGVpZ2h0ID0gZWxlbWVudC5pbm5lckhlaWdodDtcbiAgICAgICAgICAgIHZhciB3aWR0aCA9IGVsZW1lbnQuaW5uZXJXaWR0aDtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0b3A6IHRvcCxcbiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgICAgICBib3R0b206IHRvcCArIGhlaWdodCxcbiAgICAgICAgICAgICAgICByaWdodDogbGVmdCArIHdpZHRoLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHlsZSwgaGlkZGVuO1xuXG4gICAgICAgIGlmICghaXNWaXNpYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBzdHlsZSA9IGF0dHIoZWxlbWVudCwgJ3N0eWxlJyk7XG4gICAgICAgICAgICBoaWRkZW4gPSBhdHRyKGVsZW1lbnQsICdoaWRkZW4nKTtcblxuICAgICAgICAgICAgYXR0cihlbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgc3R5bGU6ICgoc3R5bGUgfHwgJycpICsgXCI7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O1wiKSxcbiAgICAgICAgICAgICAgICBoaWRkZW46IG51bGxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoc3R5bGUpKSB7XG4gICAgICAgICAgICBhdHRyKGVsZW1lbnQsIHtzdHlsZTogc3R5bGUsIGhpZGRlbjogaGlkZGVufSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVpZ2h0OiByZWN0LmhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgICAgICAgICAgdG9wOiByZWN0LnRvcCArIHRvcCxcbiAgICAgICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIGxlZnQsXG4gICAgICAgICAgICBib3R0b206IHJlY3QuYm90dG9tICsgdG9wLFxuICAgICAgICAgICAgcmlnaHQ6IHJlY3QucmlnaHQgKyBsZWZ0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvc2l0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcblxuICAgICAgICB2YXIgcGFyZW50ID0gb2Zmc2V0UGFyZW50KGVsZW1lbnQpO1xuICAgICAgICB2YXIgcGFyZW50T2Zmc2V0ID0gcGFyZW50ID09PSBkb2NFbChlbGVtZW50KSA/IHt0b3A6IDAsIGxlZnQ6IDB9IDogb2Zmc2V0KHBhcmVudCk7XG4gICAgICAgIHZhciByZWYgPSBbJ3RvcCcsICdsZWZ0J10ucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgcHJvcCkge1xuICAgICAgICAgICAgdmFyIHByb3BOYW1lJCQxID0gdWNmaXJzdChwcm9wKTtcbiAgICAgICAgICAgIHByb3BzW3Byb3BdIC09IHBhcmVudE9mZnNldFtwcm9wXVxuICAgICAgICAgICAgICAgICsgKHRvRmxvYXQoY3NzKGVsZW1lbnQsIChcIm1hcmdpblwiICsgcHJvcE5hbWUkJDEpKSkgfHwgMClcbiAgICAgICAgICAgICAgICArICh0b0Zsb2F0KGNzcyhwYXJlbnQsIChcImJvcmRlclwiICsgcHJvcE5hbWUkJDEgKyBcIldpZHRoXCIpKSkgfHwgMCk7XG4gICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgIH0sIG9mZnNldChlbGVtZW50KSk7XG4gICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICB2YXIgbGVmdCA9IHJlZi5sZWZ0O1xuXG4gICAgICAgIHJldHVybiB7dG9wOiB0b3AsIGxlZnQ6IGxlZnR9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZnNldFBhcmVudChlbGVtZW50KSB7XG5cbiAgICAgICAgdmFyIHBhcmVudCA9IHRvTm9kZShlbGVtZW50KS5vZmZzZXRQYXJlbnQ7XG5cbiAgICAgICAgd2hpbGUgKHBhcmVudCAmJiBjc3MocGFyZW50LCAncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5vZmZzZXRQYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyZW50IHx8IGRvY0VsKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHZhciBoZWlnaHQgPSBkaW1lbnNpb24oJ2hlaWdodCcpO1xuICAgIHZhciB3aWR0aCA9IGRpbWVuc2lvbignd2lkdGgnKTtcblxuICAgIGZ1bmN0aW9uIGRpbWVuc2lvbihwcm9wKSB7XG4gICAgICAgIHZhciBwcm9wTmFtZSQkMSA9IHVjZmlyc3QocHJvcCk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoZWxlbWVudCwgdmFsdWUpIHtcblxuICAgICAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcblxuICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzV2luZG93KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50WyhcImlubmVyXCIgKyBwcm9wTmFtZSQkMSldO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc0RvY3VtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkb2MgPSBlbGVtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KGRvY1soXCJvZmZzZXRcIiArIHByb3BOYW1lJCQxKV0sIGRvY1soXCJzY3JvbGxcIiArIHByb3BOYW1lJCQxKV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhbHVlID0gY3NzKGVsZW1lbnQsIHByb3ApO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPT09ICdhdXRvJyA/IGVsZW1lbnRbKFwib2Zmc2V0XCIgKyBwcm9wTmFtZSQkMSldIDogdG9GbG9hdCh2YWx1ZSkgfHwgMDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAtIGJveE1vZGVsQWRqdXN0KHByb3AsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIHByb3AsICF2YWx1ZSAmJiB2YWx1ZSAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICAgIDogK3ZhbHVlICsgYm94TW9kZWxBZGp1c3QocHJvcCwgZWxlbWVudCkgKyAncHgnXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYm94TW9kZWxBZGp1c3QocHJvcCwgZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gY3NzKGVsZW1lbnQsICdib3hTaXppbmcnKSA9PT0gJ2JvcmRlci1ib3gnXG4gICAgICAgICAgICA/IGRpcnNbcHJvcF0uc2xpY2UoMSkubWFwKHVjZmlyc3QpLnJlZHVjZShmdW5jdGlvbiAodmFsdWUsIHByb3ApIHsgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAgICAgKyB0b0Zsb2F0KGNzcyhlbGVtZW50LCAoXCJwYWRkaW5nXCIgKyBwcm9wKSkpXG4gICAgICAgICAgICAgICAgKyB0b0Zsb2F0KGNzcyhlbGVtZW50LCAoXCJib3JkZXJcIiArIHByb3AgKyBcIldpZHRoXCIpKSk7IH1cbiAgICAgICAgICAgICAgICAsIDApXG4gICAgICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW92ZVRvKHBvc2l0aW9uLCBhdHRhY2gsIGRpbSwgZmFjdG9yKSB7XG4gICAgICAgIGVhY2goZGlycywgZnVuY3Rpb24gKHJlZiwgcHJvcCkge1xuICAgICAgICAgICAgdmFyIGRpciA9IHJlZlswXTtcbiAgICAgICAgICAgIHZhciBhbGlnbiA9IHJlZlsxXTtcbiAgICAgICAgICAgIHZhciBhbGlnbkZsaXAgPSByZWZbMl07XG5cbiAgICAgICAgICAgIGlmIChhdHRhY2hbZGlyXSA9PT0gYWxpZ25GbGlwKSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25bYWxpZ25dICs9IGRpbVtwcm9wXSAqIGZhY3RvcjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25bYWxpZ25dICs9IGRpbVtwcm9wXSAqIGZhY3RvciAvIDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBvcyhwb3MpIHtcblxuICAgICAgICB2YXIgeCA9IC9sZWZ0fGNlbnRlcnxyaWdodC87XG4gICAgICAgIHZhciB5ID0gL3RvcHxjZW50ZXJ8Ym90dG9tLztcblxuICAgICAgICBwb3MgPSAocG9zIHx8ICcnKS5zcGxpdCgnICcpO1xuXG4gICAgICAgIGlmIChwb3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBwb3MgPSB4LnRlc3QocG9zWzBdKVxuICAgICAgICAgICAgICAgID8gcG9zLmNvbmNhdChbJ2NlbnRlciddKVxuICAgICAgICAgICAgICAgIDogeS50ZXN0KHBvc1swXSlcbiAgICAgICAgICAgICAgICAgICAgPyBbJ2NlbnRlciddLmNvbmNhdChwb3MpXG4gICAgICAgICAgICAgICAgICAgIDogWydjZW50ZXInLCAnY2VudGVyJ107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogeC50ZXN0KHBvc1swXSkgPyBwb3NbMF0gOiAnY2VudGVyJyxcbiAgICAgICAgICAgIHk6IHkudGVzdChwb3NbMV0pID8gcG9zWzFdIDogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRPZmZzZXRzKG9mZnNldHMsIHdpZHRoLCBoZWlnaHQpIHtcblxuICAgICAgICB2YXIgcmVmID0gKG9mZnNldHMgfHwgJycpLnNwbGl0KCcgJyk7XG4gICAgICAgIHZhciB4ID0gcmVmWzBdO1xuICAgICAgICB2YXIgeSA9IHJlZlsxXTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogeCA/IHRvRmxvYXQoeCkgKiAoZW5kc1dpdGgoeCwgJyUnKSA/IHdpZHRoIC8gMTAwIDogMSkgOiAwLFxuICAgICAgICAgICAgeTogeSA/IHRvRmxvYXQoeSkgKiAoZW5kc1dpdGgoeSwgJyUnKSA/IGhlaWdodCAvIDEwMCA6IDEpIDogMFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZsaXBQb3NpdGlvbihwb3MpIHtcbiAgICAgICAgc3dpdGNoIChwb3MpIHtcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnYm90dG9tJztcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b3AnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJblZpZXcoZWxlbWVudCwgdG9wT2Zmc2V0LCBsZWZ0T2Zmc2V0LCByZWxhdGl2ZVRvVmlld3BvcnQpIHtcbiAgICAgICAgaWYgKCB0b3BPZmZzZXQgPT09IHZvaWQgMCApIHRvcE9mZnNldCA9IDA7XG4gICAgICAgIGlmICggbGVmdE9mZnNldCA9PT0gdm9pZCAwICkgbGVmdE9mZnNldCA9IDA7XG5cblxuICAgICAgICBpZiAoIWlzVmlzaWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcbiAgICAgICAgdmFyIHdpbiA9IHdpbmRvdyQxKGVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChyZWxhdGl2ZVRvVmlld3BvcnQpIHtcblxuICAgICAgICAgICAgcmV0dXJuIGludGVyc2VjdFJlY3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwge1xuICAgICAgICAgICAgICAgIHRvcDogLXRvcE9mZnNldCxcbiAgICAgICAgICAgICAgICBsZWZ0OiAtbGVmdE9mZnNldCxcbiAgICAgICAgICAgICAgICBib3R0b206IHRvcE9mZnNldCArIGhlaWdodCh3aW4pLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBsZWZ0T2Zmc2V0ICsgd2lkdGgod2luKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldFBvc2l0aW9uKGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIGVsVG9wID0gcmVmWzBdO1xuICAgICAgICAgICAgdmFyIGVsTGVmdCA9IHJlZlsxXTtcbiAgICAgICAgICAgIHZhciB0b3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICB2YXIgbGVmdCA9IHdpbi5wYWdlWE9mZnNldDtcblxuICAgICAgICAgICAgcmV0dXJuIGludGVyc2VjdFJlY3QoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IGVsVG9wLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlbExlZnQsXG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogZWxUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGVsVG9wICsgZWxlbWVudC5vZmZzZXRXaWR0aFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IHRvcCAtIHRvcE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogbGVmdCAtIGxlZnRPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogdG9wICsgdG9wT2Zmc2V0ICsgaGVpZ2h0KHdpbiksXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBsZWZ0ICsgbGVmdE9mZnNldCArIHdpZHRoKHdpbilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY3JvbGxlZE92ZXIoZWxlbWVudCwgaGVpZ2h0T2Zmc2V0KSB7XG4gICAgICAgIGlmICggaGVpZ2h0T2Zmc2V0ID09PSB2b2lkIDAgKSBoZWlnaHRPZmZzZXQgPSAwO1xuXG5cbiAgICAgICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcblxuICAgICAgICB2YXIgd2luID0gd2luZG93JDEoZWxlbWVudCk7XG4gICAgICAgIHZhciBkb2MgPSBkb2N1bWVudCQxKGVsZW1lbnQpO1xuICAgICAgICB2YXIgZWxIZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodCArIGhlaWdodE9mZnNldDtcbiAgICAgICAgdmFyIHJlZiA9IG9mZnNldFBvc2l0aW9uKGVsZW1lbnQpO1xuICAgICAgICB2YXIgdG9wID0gcmVmWzBdO1xuICAgICAgICB2YXIgdnAgPSBoZWlnaHQod2luKTtcbiAgICAgICAgdmFyIHZoID0gdnAgKyBNYXRoLm1pbigwLCB0b3AgLSB2cCk7XG4gICAgICAgIHZhciBkaWZmID0gTWF0aC5tYXgoMCwgdnAgLSAoaGVpZ2h0KGRvYykgKyBoZWlnaHRPZmZzZXQgLSAodG9wICsgZWxIZWlnaHQpKSk7XG5cbiAgICAgICAgcmV0dXJuIGNsYW1wKCgodmggKyB3aW4ucGFnZVlPZmZzZXQgLSB0b3ApIC8gKCh2aCArIChlbEhlaWdodCAtIChkaWZmIDwgdnAgPyBkaWZmIDogMCkpKSAvIDEwMCkpIC8gMTAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvZmZzZXRQb3NpdGlvbihlbGVtZW50KSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSBbMCwgMF07XG5cbiAgICAgICAgZG8ge1xuXG4gICAgICAgICAgICBvZmZzZXRbMF0gKz0gZWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICBvZmZzZXRbMV0gKz0gZWxlbWVudC5vZmZzZXRMZWZ0O1xuXG4gICAgICAgICAgICBpZiAoY3NzKGVsZW1lbnQsICdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7XG4gICAgICAgICAgICAgICAgdmFyIHdpbiA9IHdpbmRvdyQxKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIG9mZnNldFswXSArPSB3aW4ucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WzFdICs9IHdpbi5wYWdlWE9mZnNldDtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gd2hpbGUgKChlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQpKTtcblxuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdpbmRvdyQxKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGlzV2luZG93KGVsZW1lbnQpID8gZWxlbWVudCA6IGRvY3VtZW50JDEoZWxlbWVudCkuZGVmYXVsdFZpZXc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZG9jdW1lbnQkMShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0b05vZGUoZWxlbWVudCkub3duZXJEb2N1bWVudDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb2NFbChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudCQxKGVsZW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiBnbG9iYWwgRG9jdW1lbnRUb3VjaCAqL1xuXG4gICAgdmFyIGlzUnRsID0gYXR0cihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdkaXInKSA9PT0gJ3J0bCc7XG5cbiAgICB2YXIgaGFzVG91Y2hFdmVudHMgPSAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3c7XG4gICAgdmFyIGhhc1BvaW50ZXJFdmVudHMgPSB3aW5kb3cuUG9pbnRlckV2ZW50O1xuICAgIHZhciBoYXNUb3VjaCA9IGhhc1RvdWNoRXZlbnRzXG4gICAgICAgIHx8IHdpbmRvdy5Eb2N1bWVudFRvdWNoICYmIGRvY3VtZW50IGluc3RhbmNlb2YgRG9jdW1lbnRUb3VjaFxuICAgICAgICB8fCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHM7IC8vIElFID49MTFcblxuICAgIHZhciBwb2ludGVyRG93biA9ICFoYXNUb3VjaCA/ICdtb3VzZWRvd24nIDogKFwibW91c2Vkb3duIFwiICsgKGhhc1RvdWNoRXZlbnRzID8gJ3RvdWNoc3RhcnQnIDogJ3BvaW50ZXJkb3duJykpO1xuICAgIHZhciBwb2ludGVyTW92ZSA9ICFoYXNUb3VjaCA/ICdtb3VzZW1vdmUnIDogKFwibW91c2Vtb3ZlIFwiICsgKGhhc1RvdWNoRXZlbnRzID8gJ3RvdWNobW92ZScgOiAncG9pbnRlcm1vdmUnKSk7XG4gICAgdmFyIHBvaW50ZXJVcCA9ICFoYXNUb3VjaCA/ICdtb3VzZXVwJyA6IChcIm1vdXNldXAgXCIgKyAoaGFzVG91Y2hFdmVudHMgPyAndG91Y2hlbmQnIDogJ3BvaW50ZXJ1cCcpKTtcbiAgICB2YXIgcG9pbnRlckVudGVyID0gaGFzVG91Y2ggJiYgaGFzUG9pbnRlckV2ZW50cyA/ICdwb2ludGVyZW50ZXInIDogJ21vdXNlZW50ZXInO1xuICAgIHZhciBwb2ludGVyTGVhdmUgPSBoYXNUb3VjaCAmJiBoYXNQb2ludGVyRXZlbnRzID8gJ3BvaW50ZXJsZWF2ZScgOiAnbW91c2VsZWF2ZSc7XG5cbiAgICAvKlxuICAgICAgICBCYXNlZCBvbjpcbiAgICAgICAgQ29weXJpZ2h0IChjKSAyMDE2IFdpbHNvbiBQYWdlIHdpbHNvbnBhZ2VAbWUuY29tXG4gICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS93aWxzb25wYWdlL2Zhc3Rkb21cbiAgICAqL1xuXG4gICAgdmFyIGZhc3Rkb20gPSB7XG5cbiAgICAgICAgcmVhZHM6IFtdLFxuICAgICAgICB3cml0ZXM6IFtdLFxuXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHRhc2spIHtcbiAgICAgICAgICAgIHRoaXMucmVhZHMucHVzaCh0YXNrKTtcbiAgICAgICAgICAgIHNjaGVkdWxlRmx1c2goKTtcbiAgICAgICAgICAgIHJldHVybiB0YXNrO1xuICAgICAgICB9LFxuXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbih0YXNrKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlcy5wdXNoKHRhc2spO1xuICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgcmV0dXJuIHRhc2s7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2xlYXI6IGZ1bmN0aW9uKHRhc2spIHtcbiAgICAgICAgICAgIHJldHVybiByZW1vdmUkMSh0aGlzLnJlYWRzLCB0YXNrKSB8fCByZW1vdmUkMSh0aGlzLndyaXRlcywgdGFzayk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZmx1c2g6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICBydW5UYXNrcyh0aGlzLnJlYWRzKTtcbiAgICAgICAgICAgIHJ1blRhc2tzKHRoaXMud3JpdGVzLnNwbGljZSgwLCB0aGlzLndyaXRlcy5sZW5ndGgpKTtcblxuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucmVhZHMubGVuZ3RoIHx8IHRoaXMud3JpdGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlRmx1c2goKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gc2NoZWR1bGVGbHVzaCgpIHtcbiAgICAgICAgaWYgKCFmYXN0ZG9tLnNjaGVkdWxlZCkge1xuICAgICAgICAgICAgZmFzdGRvbS5zY2hlZHVsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZhc3Rkb20uZmx1c2guYmluZChmYXN0ZG9tKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW5UYXNrcyh0YXNrcykge1xuICAgICAgICB2YXIgdGFzaztcbiAgICAgICAgd2hpbGUgKCh0YXNrID0gdGFza3Muc2hpZnQoKSkpIHtcbiAgICAgICAgICAgIHRhc2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZSQxKGFycmF5LCBpdGVtKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGFycmF5LmluZGV4T2YoaXRlbSk7XG4gICAgICAgIHJldHVybiAhIX5pbmRleCAmJiAhIWFycmF5LnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTW91c2VUcmFja2VyKCkge31cblxuICAgIE1vdXNlVHJhY2tlci5wcm90b3R5cGUgPSB7XG5cbiAgICAgICAgcG9zaXRpb25zOiBbXSxcbiAgICAgICAgcG9zaXRpb246IG51bGwsXG5cbiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IG51bGw7XG5cbiAgICAgICAgICAgIHZhciB0aWNraW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnVuYmluZCA9IG9uKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aWNraW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgdGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzJDEucG9zaXRpb25zO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gcmVmLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoICYmICh0aW1lIC0gdGhpcyQxLnBvc2l0aW9uc1tsZW5ndGggLSAxXS50aW1lID4gMTAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvc2l0aW9ucy5zcGxpY2UoMCwgbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wb3NpdGlvbnMucHVzaCh7dGltZTogdGltZSwgeDogZS5wYWdlWCwgeTogZS5wYWdlWX0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEucG9zaXRpb25zLmxlbmd0aCA+IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wb3NpdGlvbnMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1KTtcblxuICAgICAgICAgICAgICAgIHRpY2tpbmcgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudW5iaW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtb3Zlc1RvOiBmdW5jdGlvbih0YXJnZXQpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBwID0gb2Zmc2V0KHRhcmdldCk7XG4gICAgICAgICAgICB2YXIgcG9zaXRpb24kJDEgPSB0aGlzLnBvc2l0aW9uc1t0aGlzLnBvc2l0aW9ucy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnBvc2l0aW9ucztcbiAgICAgICAgICAgIHZhciBwcmV2UG9zID0gcmVmWzBdO1xuXG4gICAgICAgICAgICBpZiAocC5sZWZ0IDw9IHBvc2l0aW9uJCQxLnggJiYgcG9zaXRpb24kJDEueCA8PSBwLnJpZ2h0ICYmIHAudG9wIDw9IHBvc2l0aW9uJCQxLnkgJiYgcG9zaXRpb24kJDEueSA8PSBwLmJvdHRvbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHBvaW50cyA9IFtcbiAgICAgICAgICAgICAgICBbe3g6IHAubGVmdCwgeTogcC50b3B9LCB7eDogcC5yaWdodCwgeTogcC5ib3R0b219XSxcbiAgICAgICAgICAgICAgICBbe3g6IHAucmlnaHQsIHk6IHAudG9wfSwge3g6IHAubGVmdCwgeTogcC5ib3R0b219XVxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgaWYgKHAucmlnaHQgPD0gcG9zaXRpb24kJDEueCkgOyBlbHNlIGlmIChwLmxlZnQgPj0gcG9zaXRpb24kJDEueCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1swXS5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzFdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocC5ib3R0b20gPD0gcG9zaXRpb24kJDEueSkge1xuICAgICAgICAgICAgICAgIHBvaW50c1swXS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHAudG9wID49IHBvc2l0aW9uJCQxLnkpIHtcbiAgICAgICAgICAgICAgICBwb2ludHNbMV0ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gISFwb2ludHMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIHBvaW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChzbG9wZShwcmV2UG9zLCBwb2ludFswXSkgPCBzbG9wZShwb3NpdGlvbiQkMSwgcG9pbnRbMF0pICYmIHNsb3BlKHByZXZQb3MsIHBvaW50WzFdKSA+IHNsb3BlKHBvc2l0aW9uJCQxLCBwb2ludFsxXSkpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBzbG9wZShhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYi55IC0gYS55KSAvIChiLnggLSBhLngpO1xuICAgIH1cblxuICAgIHZhciBzdHJhdHMgPSB7fTtcblxuICAgIC8vIGNvbmNhdCBzdHJhdGVneVxuICAgIHN0cmF0cy5hcmdzID1cbiAgICBzdHJhdHMuZXZlbnRzID1cbiAgICBzdHJhdHMuaW5pdCA9XG4gICAgc3RyYXRzLmNyZWF0ZWQgPVxuICAgIHN0cmF0cy5iZWZvcmVDb25uZWN0ID1cbiAgICBzdHJhdHMuY29ubmVjdGVkID1cbiAgICBzdHJhdHMucmVhZHkgPVxuICAgIHN0cmF0cy5iZWZvcmVEaXNjb25uZWN0ID1cbiAgICBzdHJhdHMuZGlzY29ubmVjdGVkID1cbiAgICBzdHJhdHMuZGVzdHJveSA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG5cbiAgICAgICAgcGFyZW50VmFsID0gcGFyZW50VmFsICYmICFpc0FycmF5KHBhcmVudFZhbCkgPyBbcGFyZW50VmFsXSA6IHBhcmVudFZhbDtcblxuICAgICAgICByZXR1cm4gY2hpbGRWYWxcbiAgICAgICAgICAgID8gcGFyZW50VmFsXG4gICAgICAgICAgICAgICAgPyBwYXJlbnRWYWwuY29uY2F0KGNoaWxkVmFsKVxuICAgICAgICAgICAgICAgIDogaXNBcnJheShjaGlsZFZhbClcbiAgICAgICAgICAgICAgICAgICAgPyBjaGlsZFZhbFxuICAgICAgICAgICAgICAgICAgICA6IFtjaGlsZFZhbF1cbiAgICAgICAgICAgIDogcGFyZW50VmFsO1xuICAgIH07XG5cbiAgICAvLyB1cGRhdGUgc3RyYXRlZ3lcbiAgICBzdHJhdHMudXBkYXRlID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgICAgICAgcmV0dXJuIHN0cmF0cy5hcmdzKHBhcmVudFZhbCwgaXNGdW5jdGlvbihjaGlsZFZhbCkgPyB7cmVhZDogY2hpbGRWYWx9IDogY2hpbGRWYWwpO1xuICAgIH07XG5cbiAgICAvLyBwcm9wZXJ0eSBzdHJhdGVneVxuICAgIHN0cmF0cy5wcm9wcyA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG5cbiAgICAgICAgaWYgKGlzQXJyYXkoY2hpbGRWYWwpKSB7XG4gICAgICAgICAgICBjaGlsZFZhbCA9IGNoaWxkVmFsLnJlZHVjZShmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgICAgICAgICAgIHZhbHVlW2tleV0gPSBTdHJpbmc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0cmF0cy5tZXRob2RzKHBhcmVudFZhbCwgY2hpbGRWYWwpO1xuICAgIH07XG5cbiAgICAvLyBleHRlbmQgc3RyYXRlZ3lcbiAgICBzdHJhdHMuY29tcHV0ZWQgPVxuICAgIHN0cmF0cy5tZXRob2RzID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgICAgICAgICA/IHBhcmVudFZhbFxuICAgICAgICAgICAgICAgID8gYXNzaWduKHt9LCBwYXJlbnRWYWwsIGNoaWxkVmFsKVxuICAgICAgICAgICAgICAgIDogY2hpbGRWYWxcbiAgICAgICAgICAgIDogcGFyZW50VmFsO1xuICAgIH07XG5cbiAgICAvLyBkYXRhIHN0cmF0ZWd5XG4gICAgc3RyYXRzLmRhdGEgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pIHtcblxuICAgICAgICBpZiAoIXZtKSB7XG5cbiAgICAgICAgICAgIGlmICghY2hpbGRWYWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50VmFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhcmVudFZhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZFZhbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2bSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZUZuRGF0YShwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWVyZ2VGbkRhdGEocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtZXJnZUZuRGF0YShwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSkge1xuICAgICAgICByZXR1cm4gc3RyYXRzLmNvbXB1dGVkKFxuICAgICAgICAgICAgaXNGdW5jdGlvbihwYXJlbnRWYWwpXG4gICAgICAgICAgICAgICAgPyBwYXJlbnRWYWwuY2FsbCh2bSwgdm0pXG4gICAgICAgICAgICAgICAgOiBwYXJlbnRWYWwsXG4gICAgICAgICAgICBpc0Z1bmN0aW9uKGNoaWxkVmFsKVxuICAgICAgICAgICAgICAgID8gY2hpbGRWYWwuY2FsbCh2bSwgdm0pXG4gICAgICAgICAgICAgICAgOiBjaGlsZFZhbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIGRlZmF1bHQgc3RyYXRlZ3lcbiAgICB2YXIgZGVmYXVsdFN0cmF0ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKGNoaWxkVmFsKSA/IHBhcmVudFZhbCA6IGNoaWxkVmFsO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZCwgdm0pIHtcblxuICAgICAgICB2YXIgb3B0aW9ucyA9IHt9O1xuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGNoaWxkKSkge1xuICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5vcHRpb25zO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkLmV4dGVuZHMpIHtcbiAgICAgICAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLmV4dGVuZHMsIHZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGlsZC5taXhpbnMpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGQubWl4aW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLm1peGluc1tpXSwgdm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHBhcmVudCkge1xuICAgICAgICAgICAgbWVyZ2VLZXkoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGtleSQxIGluIGNoaWxkKSB7XG4gICAgICAgICAgICBpZiAoIWhhc093bihwYXJlbnQsIGtleSQxKSkge1xuICAgICAgICAgICAgICAgIG1lcmdlS2V5KGtleSQxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG1lcmdlS2V5KGtleSkge1xuICAgICAgICAgICAgb3B0aW9uc1trZXldID0gKHN0cmF0c1trZXldIHx8IGRlZmF1bHRTdHJhdCkocGFyZW50W2tleV0sIGNoaWxkW2tleV0sIHZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlT3B0aW9ucyhvcHRpb25zLCBhcmdzKSB7XG4gICAgICAgIHZhciBvYmo7XG5cbiAgICAgICAgaWYgKCBhcmdzID09PSB2b2lkIDAgKSBhcmdzID0gW107XG5cbiAgICAgICAgdHJ5IHtcblxuICAgICAgICAgICAgcmV0dXJuICFvcHRpb25zXG4gICAgICAgICAgICAgICAgPyB7fVxuICAgICAgICAgICAgICAgIDogc3RhcnRzV2l0aChvcHRpb25zLCAneycpXG4gICAgICAgICAgICAgICAgICAgID8gSlNPTi5wYXJzZShvcHRpb25zKVxuICAgICAgICAgICAgICAgICAgICA6IGFyZ3MubGVuZ3RoICYmICFpbmNsdWRlcyhvcHRpb25zLCAnOicpXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICgoIG9iaiA9IHt9LCBvYmpbYXJnc1swXV0gPSBvcHRpb25zLCBvYmogKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogb3B0aW9ucy5zcGxpdCgnOycpLnJlZHVjZShmdW5jdGlvbiAob3B0aW9ucywgb3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9wdGlvbi5zcGxpdCgvOiguKikvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHJlZlsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICYmICFpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1trZXkudHJpbSgpXSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICB2YXIgaWQgPSAwO1xuXG4gICAgdmFyIFBsYXllciA9IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgIHRoaXMuaWQgPSArK2lkO1xuICAgICAgICB0aGlzLmVsID0gdG9Ob2RlKGVsKTtcbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5pc1ZpZGVvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1lvdXR1YmUoKSB8fCB0aGlzLmlzVmltZW8oKSB8fCB0aGlzLmlzSFRNTDUoKTtcbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5pc0hUTUw1ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC50YWdOYW1lID09PSAnVklERU8nO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzSUZyYW1lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC50YWdOYW1lID09PSAnSUZSQU1FJztcbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5pc1lvdXR1YmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSUZyYW1lKCkgJiYgISF0aGlzLmVsLnNyYy5tYXRjaCgvXFwvXFwvLio/eW91dHViZSgtbm9jb29raWUpP1xcLlthLXpdK1xcLyh3YXRjaFxcP3Y9W14mXFxzXSt8ZW1iZWQpfHlvdXR1XFwuYmVcXC8uKi8pO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzVmltZW8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSUZyYW1lKCkgJiYgISF0aGlzLmVsLnNyYy5tYXRjaCgvdmltZW9cXC5jb21cXC92aWRlb1xcLy4qLyk7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuZW5hYmxlQXBpID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICBpZiAodGhpcy5yZWFkeSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZHk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgeW91dHViZSA9IHRoaXMuaXNZb3V0dWJlKCk7XG4gICAgICAgIHZhciB2aW1lbyA9IHRoaXMuaXNWaW1lbygpO1xuXG4gICAgICAgIHZhciBwb2xsZXI7XG5cbiAgICAgICAgaWYgKHlvdXR1YmUgfHwgdmltZW8pIHtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZHkgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgICAgICBvbmNlKHRoaXMkMS5lbCwgJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh5b3V0dWJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2V2ZW50OiAnbGlzdGVuaW5nJywgaWQ6IHRoaXMkMS5pZH0pOyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGVyID0gc2V0SW50ZXJ2YWwobGlzdGVuZXIsIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBsaXN0ZW4oZnVuY3Rpb24gKGRhdGEkJDEpIHsgcmV0dXJuIHlvdXR1YmUgJiYgZGF0YSQkMS5pZCA9PT0gdGhpcyQxLmlkICYmIGRhdGEkJDEuZXZlbnQgPT09ICdvblJlYWR5JyB8fCB2aW1lbyAmJiBOdW1iZXIoZGF0YSQkMS5wbGF5ZXJfaWQpID09PSB0aGlzJDEuaWQ7IH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxlciAmJiBjbGVhckludGVydmFsKHBvbGxlcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgYXR0cih0aGlzJDEuZWwsICdzcmMnLCAoXCJcIiArICh0aGlzJDEuZWwuc3JjKSArIChpbmNsdWRlcyh0aGlzJDEuZWwuc3JjLCAnPycpID8gJyYnIDogJz8nKSArICh5b3V0dWJlID8gJ2VuYWJsZWpzYXBpPTEnIDogKFwiYXBpPTEmcGxheWVyX2lkPVwiICsgKHRoaXMkMS5pZCkpKSkpO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG5cbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5wbGF5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICBpZiAoIXRoaXMuaXNWaWRlbygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0lGcmFtZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUFwaSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9zdCh0aGlzJDEuZWwsIHtmdW5jOiAncGxheVZpZGVvJywgbWV0aG9kOiAncGxheSd9KTsgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0hUTUw1KCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzLmVsLnBsYXkoKTtcblxuICAgICAgICAgICAgICAgIGlmIChwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UuY2F0Y2gobm9vcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICBpZiAoIXRoaXMuaXNWaWRlbygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0lGcmFtZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUFwaSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9zdCh0aGlzJDEuZWwsIHtmdW5jOiAncGF1c2VWaWRlbycsIG1ldGhvZDogJ3BhdXNlJ30pOyB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSFRNTDUoKSkge1xuICAgICAgICAgICAgdGhpcy5lbC5wYXVzZSgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUubXV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmlkZW8oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJRnJhbWUoKSkge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVBcGkoKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBvc3QodGhpcyQxLmVsLCB7ZnVuYzogJ211dGUnLCBtZXRob2Q6ICdzZXRWb2x1bWUnLCB2YWx1ZTogMH0pOyB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSFRNTDUoKSkge1xuICAgICAgICAgICAgdGhpcy5lbC5tdXRlZCA9IHRydWU7XG4gICAgICAgICAgICBhdHRyKHRoaXMuZWwsICdtdXRlZCcsICcnKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBvc3QoZWwsIGNtZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZWwuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeShhc3NpZ24oe2V2ZW50OiAnY29tbWFuZCd9LCBjbWQpKSwgJyonKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0ZW4oY2IpIHtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgICAgICBvbmNlKHdpbmRvdywgJ21lc3NhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSQkMSkgeyByZXR1cm4gcmVzb2x2ZShkYXRhJCQxKTsgfSwgZmFsc2UsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSQkMSA9IHJlZi5kYXRhO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEkJDEgfHwgIWlzU3RyaW5nKGRhdGEkJDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxID0gSlNPTi5wYXJzZShkYXRhJCQxKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YSQkMSAmJiBjYihkYXRhJCQxKTtcblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICAvKlxuICAgICAgICBCYXNlZCBvbjpcbiAgICAgICAgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTYgVGhvbWFzIEZ1Y2hzXG4gICAgICAgIGh0dHA6Ly96ZXB0b2pzLmNvbS9cbiAgICAqL1xuXG4gICAgdmFyIHRvdWNoID0ge30sIGNsaWNrVGltZW91dCwgc3dpcGVUaW1lb3V0LCB0YXBUaW1lb3V0LCBjbGlja2VkO1xuXG4gICAgZnVuY3Rpb24gc3dpcGVEaXJlY3Rpb24ocmVmKSB7XG4gICAgICAgIHZhciB4MSA9IHJlZi54MTtcbiAgICAgICAgdmFyIHgyID0gcmVmLngyO1xuICAgICAgICB2YXIgeTEgPSByZWYueTE7XG4gICAgICAgIHZhciB5MiA9IHJlZi55MjtcblxuICAgICAgICByZXR1cm4gTWF0aC5hYnMoeDEgLSB4MikgPj0gTWF0aC5hYnMoeTEgLSB5MikgPyAoeDEgLSB4MiA+IDAgPyAnTGVmdCcgOiAnUmlnaHQnKSA6ICh5MSAtIHkyID4gMCA/ICdVcCcgOiAnRG93bicpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbmNlbEFsbCgpIHtcbiAgICAgICAgY2xpY2tUaW1lb3V0ICYmIGNsZWFyVGltZW91dChjbGlja1RpbWVvdXQpO1xuICAgICAgICBzd2lwZVRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHN3aXBlVGltZW91dCk7XG4gICAgICAgIHRhcFRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHRhcFRpbWVvdXQpO1xuICAgICAgICBjbGlja1RpbWVvdXQgPSBzd2lwZVRpbWVvdXQgPSB0YXBUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgdG91Y2ggPSB7fTtcbiAgICB9XG5cbiAgICByZWFkeShmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgb24oZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNsaWNrZWQgPSB0cnVlOyB9LCB0cnVlKTtcblxuICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlckRvd24sIGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgIHZhciByZWYgPSBnZXRQb3MkMShlKTtcbiAgICAgICAgICAgIHZhciB4ID0gcmVmLng7XG4gICAgICAgICAgICB2YXIgeSA9IHJlZi55O1xuICAgICAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IGdldFR5cGUoZS50eXBlKTtcblxuICAgICAgICAgICAgaWYgKHRvdWNoLnR5cGUgJiYgdG91Y2gudHlwZSAhPT0gdHlwZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG91Y2guZWwgPSAndGFnTmFtZScgaW4gdGFyZ2V0ID8gdGFyZ2V0IDogdGFyZ2V0LnBhcmVudE5vZGU7XG5cbiAgICAgICAgICAgIGNsaWNrVGltZW91dCAmJiBjbGVhclRpbWVvdXQoY2xpY2tUaW1lb3V0KTtcblxuICAgICAgICAgICAgdG91Y2gueDEgPSB4O1xuICAgICAgICAgICAgdG91Y2gueTEgPSB5O1xuXG4gICAgICAgICAgICBpZiAodG91Y2gubGFzdCAmJiBub3cgLSB0b3VjaC5sYXN0IDw9IDI1MCkge1xuICAgICAgICAgICAgICAgIHRvdWNoID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvdWNoLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgdG91Y2gubGFzdCA9IG5vdztcblxuICAgICAgICAgICAgY2xpY2tlZCA9IGUuYnV0dG9uID4gMDtcblxuICAgICAgICB9KTtcblxuICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlck1vdmUsIGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciByZWYgPSBnZXRQb3MkMShlKTtcbiAgICAgICAgICAgIHZhciB4ID0gcmVmLng7XG4gICAgICAgICAgICB2YXIgeSA9IHJlZi55O1xuXG4gICAgICAgICAgICB0b3VjaC54MiA9IHg7XG4gICAgICAgICAgICB0b3VjaC55MiA9IHk7XG5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJVcCwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG5cbiAgICAgICAgICAgIGlmICh0b3VjaC50eXBlICE9PSBnZXRUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBzd2lwZVxuICAgICAgICAgICAgaWYgKHRvdWNoLngyICYmIE1hdGguYWJzKHRvdWNoLngxIC0gdG91Y2gueDIpID4gMzAgfHwgdG91Y2gueTIgJiYgTWF0aC5hYnModG91Y2gueTEgLSB0b3VjaC55MikgPiAzMCkge1xuXG4gICAgICAgICAgICAgICAgc3dpcGVUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3VjaC5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0b3VjaC5lbCwgJ3N3aXBlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRvdWNoLmVsLCAoXCJzd2lwZVwiICsgKHN3aXBlRGlyZWN0aW9uKHRvdWNoKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0b3VjaCA9IHt9O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBub3JtYWwgdGFwXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCdsYXN0JyBpbiB0b3VjaCkge1xuXG4gICAgICAgICAgICAgICAgdGFwVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJpZ2dlcih0b3VjaC5lbCwgJ3RhcCcpOyB9KTtcblxuICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgc2luZ2xlIGNsaWNrIGFmdGVyIDM1MG1zIG9mIGluYWN0aXZpdHlcbiAgICAgICAgICAgICAgICBpZiAodG91Y2guZWwgJiYgdHlwZSAhPT0gJ21vdXNldXAnICYmIHdpdGhpbih0YXJnZXQsIHRvdWNoLmVsKSkge1xuICAgICAgICAgICAgICAgICAgICBjbGlja1RpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrVGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG91Y2guZWwgJiYgIWNsaWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRvdWNoLmVsLCAnY2xpY2snKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoID0ge307XG4gICAgICAgICAgICAgICAgICAgIH0sIDM1MCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdWNoID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgb24oZG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIGNhbmNlbEFsbCk7XG4gICAgICAgIG9uKHdpbmRvdywgJ3Njcm9sbCcsIGNhbmNlbEFsbCk7XG5cbiAgICB9KTtcblxuICAgIHZhciB0b3VjaGluZyA9IGZhbHNlO1xuICAgIG9uKGRvY3VtZW50LCAndG91Y2hzdGFydCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvdWNoaW5nID0gdHJ1ZTsgfSwgdHJ1ZSk7XG4gICAgb24oZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uICgpIHt0b3VjaGluZyA9IGZhbHNlO30pO1xuICAgIG9uKGRvY3VtZW50LCAndG91Y2hjYW5jZWwnLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0b3VjaGluZyA9IGZhbHNlOyB9LCB0cnVlKTtcblxuICAgIGZ1bmN0aW9uIGlzVG91Y2goZSkge1xuICAgICAgICByZXR1cm4gdG91Y2hpbmcgfHwgZS5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQb3MkMShlKSB7XG4gICAgICAgIHZhciB0b3VjaGVzID0gZS50b3VjaGVzO1xuICAgICAgICB2YXIgY2hhbmdlZFRvdWNoZXMgPSBlLmNoYW5nZWRUb3VjaGVzO1xuICAgICAgICB2YXIgcmVmID0gdG91Y2hlcyAmJiB0b3VjaGVzWzBdIHx8IGNoYW5nZWRUb3VjaGVzICYmIGNoYW5nZWRUb3VjaGVzWzBdIHx8IGU7XG4gICAgICAgIHZhciB4ID0gcmVmLnBhZ2VYO1xuICAgICAgICB2YXIgeSA9IHJlZi5wYWdlWTtcblxuICAgICAgICByZXR1cm4ge3g6IHgsIHk6IHl9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFR5cGUodHlwZSkge1xuICAgICAgICByZXR1cm4gdHlwZS5zbGljZSgwLCA1KTtcbiAgICB9XG5cblxuXG4gICAgdmFyIHV0aWwgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIGFqYXg6IGFqYXgsXG4gICAgICAgIGdldEltYWdlOiBnZXRJbWFnZSxcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbixcbiAgICAgICAgVHJhbnNpdGlvbjogVHJhbnNpdGlvbixcbiAgICAgICAgYW5pbWF0ZTogYW5pbWF0ZSxcbiAgICAgICAgQW5pbWF0aW9uOiBBbmltYXRpb24sXG4gICAgICAgIGF0dHI6IGF0dHIsXG4gICAgICAgIGhhc0F0dHI6IGhhc0F0dHIsXG4gICAgICAgIHJlbW92ZUF0dHI6IHJlbW92ZUF0dHIsXG4gICAgICAgIGZpbHRlckF0dHI6IGZpbHRlckF0dHIsXG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGFkZENsYXNzOiBhZGRDbGFzcyxcbiAgICAgICAgcmVtb3ZlQ2xhc3M6IHJlbW92ZUNsYXNzLFxuICAgICAgICByZW1vdmVDbGFzc2VzOiByZW1vdmVDbGFzc2VzLFxuICAgICAgICByZXBsYWNlQ2xhc3M6IHJlcGxhY2VDbGFzcyxcbiAgICAgICAgaGFzQ2xhc3M6IGhhc0NsYXNzLFxuICAgICAgICB0b2dnbGVDbGFzczogdG9nZ2xlQ2xhc3MsXG4gICAgICAgICQ6ICQsXG4gICAgICAgICQkOiAkJCxcbiAgICAgICAgcG9zaXRpb25BdDogcG9zaXRpb25BdCxcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgZmxpcFBvc2l0aW9uOiBmbGlwUG9zaXRpb24sXG4gICAgICAgIGlzSW5WaWV3OiBpc0luVmlldyxcbiAgICAgICAgc2Nyb2xsZWRPdmVyOiBzY3JvbGxlZE92ZXIsXG4gICAgICAgIGlzUmVhZHk6IGlzUmVhZHksXG4gICAgICAgIHJlYWR5OiByZWFkeSxcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBnZXRJbmRleDogZ2V0SW5kZXgsXG4gICAgICAgIGVtcHR5OiBlbXB0eSxcbiAgICAgICAgaHRtbDogaHRtbCxcbiAgICAgICAgcHJlcGVuZDogcHJlcGVuZCxcbiAgICAgICAgYXBwZW5kOiBhcHBlbmQsXG4gICAgICAgIGJlZm9yZTogYmVmb3JlLFxuICAgICAgICBhZnRlcjogYWZ0ZXIsXG4gICAgICAgIHJlbW92ZTogcmVtb3ZlLFxuICAgICAgICB3cmFwQWxsOiB3cmFwQWxsLFxuICAgICAgICB3cmFwSW5uZXI6IHdyYXBJbm5lcixcbiAgICAgICAgdW53cmFwOiB1bndyYXAsXG4gICAgICAgIGZyYWdtZW50OiBmcmFnbWVudCxcbiAgICAgICAgYXBwbHk6IGFwcGx5LFxuICAgICAgICBpc1J0bDogaXNSdGwsXG4gICAgICAgIGhhc1RvdWNoOiBoYXNUb3VjaCxcbiAgICAgICAgcG9pbnRlckRvd246IHBvaW50ZXJEb3duLFxuICAgICAgICBwb2ludGVyTW92ZTogcG9pbnRlck1vdmUsXG4gICAgICAgIHBvaW50ZXJVcDogcG9pbnRlclVwLFxuICAgICAgICBwb2ludGVyRW50ZXI6IHBvaW50ZXJFbnRlcixcbiAgICAgICAgcG9pbnRlckxlYXZlOiBwb2ludGVyTGVhdmUsXG4gICAgICAgIG9uOiBvbixcbiAgICAgICAgb2ZmOiBvZmYsXG4gICAgICAgIG9uY2U6IG9uY2UsXG4gICAgICAgIHRyaWdnZXI6IHRyaWdnZXIsXG4gICAgICAgIGNyZWF0ZUV2ZW50OiBjcmVhdGVFdmVudCxcbiAgICAgICAgdG9FdmVudFRhcmdldHM6IHRvRXZlbnRUYXJnZXRzLFxuICAgICAgICBwcmV2ZW50Q2xpY2s6IHByZXZlbnRDbGljayxcbiAgICAgICAgZmFzdGRvbTogZmFzdGRvbSxcbiAgICAgICAgaXNWb2lkRWxlbWVudDogaXNWb2lkRWxlbWVudCxcbiAgICAgICAgaXNWaXNpYmxlOiBpc1Zpc2libGUsXG4gICAgICAgIHNlbElucHV0OiBzZWxJbnB1dCxcbiAgICAgICAgaXNJbnB1dDogaXNJbnB1dCxcbiAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgIHdpdGhpbjogd2l0aGluLFxuICAgICAgICBiaW5kOiBiaW5kLFxuICAgICAgICBoYXNPd246IGhhc093bixcbiAgICAgICAgaHlwaGVuYXRlOiBoeXBoZW5hdGUsXG4gICAgICAgIGNhbWVsaXplOiBjYW1lbGl6ZSxcbiAgICAgICAgdWNmaXJzdDogdWNmaXJzdCxcbiAgICAgICAgc3RhcnRzV2l0aDogc3RhcnRzV2l0aCxcbiAgICAgICAgZW5kc1dpdGg6IGVuZHNXaXRoLFxuICAgICAgICBpbmNsdWRlczogaW5jbHVkZXMsXG4gICAgICAgIGlzQXJyYXk6IGlzQXJyYXksXG4gICAgICAgIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24sXG4gICAgICAgIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgICAgICAgaXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcbiAgICAgICAgaXNXaW5kb3c6IGlzV2luZG93LFxuICAgICAgICBpc0RvY3VtZW50OiBpc0RvY3VtZW50LFxuICAgICAgICBpc0pRdWVyeTogaXNKUXVlcnksXG4gICAgICAgIGlzTm9kZTogaXNOb2RlLFxuICAgICAgICBpc05vZGVDb2xsZWN0aW9uOiBpc05vZGVDb2xsZWN0aW9uLFxuICAgICAgICBpc0Jvb2xlYW46IGlzQm9vbGVhbixcbiAgICAgICAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICAgICAgICBpc051bWJlcjogaXNOdW1iZXIsXG4gICAgICAgIGlzTnVtZXJpYzogaXNOdW1lcmljLFxuICAgICAgICBpc1VuZGVmaW5lZDogaXNVbmRlZmluZWQsXG4gICAgICAgIHRvQm9vbGVhbjogdG9Cb29sZWFuLFxuICAgICAgICB0b051bWJlcjogdG9OdW1iZXIsXG4gICAgICAgIHRvRmxvYXQ6IHRvRmxvYXQsXG4gICAgICAgIHRvTm9kZTogdG9Ob2RlLFxuICAgICAgICB0b05vZGVzOiB0b05vZGVzLFxuICAgICAgICB0b0xpc3Q6IHRvTGlzdCxcbiAgICAgICAgdG9NczogdG9NcyxcbiAgICAgICAgc3dhcDogc3dhcCxcbiAgICAgICAgYXNzaWduOiBhc3NpZ24sXG4gICAgICAgIGVhY2g6IGVhY2gsXG4gICAgICAgIHNvcnRCeTogc29ydEJ5LFxuICAgICAgICBjbGFtcDogY2xhbXAsXG4gICAgICAgIG5vb3A6IG5vb3AsXG4gICAgICAgIGludGVyc2VjdFJlY3Q6IGludGVyc2VjdFJlY3QsXG4gICAgICAgIHBvaW50SW5SZWN0OiBwb2ludEluUmVjdCxcbiAgICAgICAgRGltZW5zaW9uczogRGltZW5zaW9ucyxcbiAgICAgICAgTW91c2VUcmFja2VyOiBNb3VzZVRyYWNrZXIsXG4gICAgICAgIG1lcmdlT3B0aW9uczogbWVyZ2VPcHRpb25zLFxuICAgICAgICBwYXJzZU9wdGlvbnM6IHBhcnNlT3B0aW9ucyxcbiAgICAgICAgUGxheWVyOiBQbGF5ZXIsXG4gICAgICAgIFByb21pc2U6IFByb21pc2UkMSxcbiAgICAgICAgRGVmZXJyZWQ6IERlZmVycmVkLFxuICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgIHF1ZXJ5QWxsOiBxdWVyeUFsbCxcbiAgICAgICAgZmluZDogZmluZCxcbiAgICAgICAgZmluZEFsbDogZmluZEFsbCxcbiAgICAgICAgbWF0Y2hlczogbWF0Y2hlcyxcbiAgICAgICAgY2xvc2VzdDogY2xvc2VzdCxcbiAgICAgICAgcGFyZW50czogcGFyZW50cyxcbiAgICAgICAgZXNjYXBlOiBlc2NhcGUsXG4gICAgICAgIGNzczogY3NzLFxuICAgICAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICAgICAgZ2V0U3R5bGU6IGdldFN0eWxlLFxuICAgICAgICBnZXRDc3NWYXI6IGdldENzc1ZhcixcbiAgICAgICAgcHJvcE5hbWU6IHByb3BOYW1lLFxuICAgICAgICBpc1RvdWNoOiBpc1RvdWNoLFxuICAgICAgICBnZXRQb3M6IGdldFBvcyQxXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjb21wb25lbnRBUEkgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIERBVEEgPSBVSWtpdC5kYXRhO1xuXG4gICAgICAgIHZhciBjb21wb25lbnRzID0ge307XG5cbiAgICAgICAgVUlraXQuY29tcG9uZW50ID0gZnVuY3Rpb24gKG5hbWUsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgaWYgKCFvcHRpb25zKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChjb21wb25lbnRzW25hbWVdKSkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzW25hbWVdID0gVUlraXQuZXh0ZW5kKGNvbXBvbmVudHNbbmFtZV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRzW25hbWVdO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFVJa2l0W25hbWVdID0gZnVuY3Rpb24gKGVsZW1lbnQsIGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3NBcnJheSA9IEFycmF5KGkpO1xuICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkgYXJnc0FycmF5W2ldID0gYXJndW1lbnRzW2ldO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gVUlraXQuY29tcG9uZW50KG5hbWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBjb21wb25lbnQoe2RhdGE6IGVsZW1lbnR9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50Lm9wdGlvbnMuZnVuY3Rpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNvbXBvbmVudCh7ZGF0YTogW10uY29uY2F0KCBhcmdzQXJyYXkgKX0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQubm9kZVR5cGUgPyBpbml0KGVsZW1lbnQpIDogJCQoZWxlbWVudCkubWFwKGluaXQpWzBdO1xuXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5pdChlbGVtZW50KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gVUlraXQuZ2V0Q29tcG9uZW50KGVsZW1lbnQsIG5hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4kZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBjb21wb25lbnQoe2VsOiBlbGVtZW50LCBkYXRhOiBkYXRhJCQxfSk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhciBvcHQgPSBpc1BsYWluT2JqZWN0KG9wdGlvbnMpID8gYXNzaWduKHt9LCBvcHRpb25zKSA6IG9wdGlvbnMub3B0aW9ucztcblxuICAgICAgICAgICAgb3B0Lm5hbWUgPSBuYW1lO1xuXG4gICAgICAgICAgICBpZiAob3B0Lmluc3RhbGwpIHtcbiAgICAgICAgICAgICAgICBvcHQuaW5zdGFsbChVSWtpdCwgb3B0LCBuYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFVJa2l0Ll9pbml0aWFsaXplZCAmJiAhb3B0LmZ1bmN0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWQgPSBoeXBoZW5hdGUobmFtZSk7XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5yZWFkKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFVJa2l0W25hbWVdKChcIlt1ay1cIiArIGlkICsgXCJdLFtkYXRhLXVrLVwiICsgaWQgKyBcIl1cIikpOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbbmFtZV0gPSBpc1BsYWluT2JqZWN0KG9wdGlvbnMpID8gb3B0IDogb3B0aW9ucztcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5nZXRDb21wb25lbnRzID0gZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudFtEQVRBXSB8fCB7fTsgfTtcbiAgICAgICAgVUlraXQuZ2V0Q29tcG9uZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHsgcmV0dXJuIFVJa2l0LmdldENvbXBvbmVudHMoZWxlbWVudClbbmFtZV07IH07XG5cbiAgICAgICAgVUlraXQuY29ubmVjdCA9IGZ1bmN0aW9uIChub2RlKSB7XG5cbiAgICAgICAgICAgIGlmIChub2RlW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBub2RlW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVbREFUQV1bbmFtZV0uX2NhbGxDb25uZWN0ZWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgbmFtZSQxID0gZ2V0Q29tcG9uZW50TmFtZShub2RlLmF0dHJpYnV0ZXNbaV0ubmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAobmFtZSQxICYmIG5hbWUkMSBpbiBjb21wb25lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIFVJa2l0W25hbWUkMV0obm9kZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5kaXNjb25uZWN0ID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gbm9kZVtEQVRBXSkge1xuICAgICAgICAgICAgICAgIG5vZGVbREFUQV1bbmFtZV0uX2NhbGxEaXNjb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUoYXR0cmlidXRlKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoKGF0dHJpYnV0ZSwgJ3VrLScpIHx8IHN0YXJ0c1dpdGgoYXR0cmlidXRlLCAnZGF0YS11ay0nKVxuICAgICAgICAgICAgPyBjYW1lbGl6ZShhdHRyaWJ1dGUucmVwbGFjZSgnZGF0YS11ay0nLCAnJykucmVwbGFjZSgndWstJywgJycpKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBib290IChVSWtpdCkge1xuXG4gICAgICAgIHZhciBjb25uZWN0ID0gVUlraXQuY29ubmVjdDtcbiAgICAgICAgdmFyIGRpc2Nvbm5lY3QgPSBVSWtpdC5kaXNjb25uZWN0O1xuXG4gICAgICAgIGlmICghKCdNdXRhdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZG9jdW1lbnQuYm9keSkge1xuXG4gICAgICAgICAgICBpbml0KCk7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgKG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBpbml0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KSkub2JzZXJ2ZShkb2N1bWVudCwge2NoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZX0pO1xuXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpbml0KCkge1xuXG4gICAgICAgICAgICBhcHBseSQkMShkb2N1bWVudC5ib2R5LCBjb25uZWN0KTtcblxuICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgICAgICAgICAobmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9ucykgeyByZXR1cm4gbXV0YXRpb25zLmZvckVhY2goYXBwbHlNdXRhdGlvbik7IH0pKS5vYnNlcnZlKGRvY3VtZW50LCB7XG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgVUlraXQuX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFwcGx5TXV0YXRpb24obXV0YXRpb24pIHtcblxuICAgICAgICAgICAgdmFyIHRhcmdldCA9IG11dGF0aW9uLnRhcmdldDtcbiAgICAgICAgICAgIHZhciB0eXBlID0gbXV0YXRpb24udHlwZTtcblxuICAgICAgICAgICAgdmFyIHVwZGF0ZSA9IHR5cGUgIT09ICdhdHRyaWJ1dGVzJ1xuICAgICAgICAgICAgICAgID8gYXBwbHlDaGlsZExpc3QobXV0YXRpb24pXG4gICAgICAgICAgICAgICAgOiBhcHBseUF0dHJpYnV0ZShtdXRhdGlvbik7XG5cbiAgICAgICAgICAgIHVwZGF0ZSAmJiBVSWtpdC51cGRhdGUodGFyZ2V0KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlBdHRyaWJ1dGUocmVmKSB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcbiAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcmVmLmF0dHJpYnV0ZU5hbWU7XG5cblxuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT09ICdocmVmJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoYXR0cmlidXRlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmICghbmFtZSB8fCAhKG5hbWUgaW4gVUlraXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaGFzQXR0cih0YXJnZXQsIGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgVUlraXRbbmFtZV0odGFyZ2V0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNvbXBvbmVudCA9IFVJa2l0LmdldENvbXBvbmVudCh0YXJnZXQsIG5hbWUpO1xuXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50LiRkZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFwcGx5Q2hpbGRMaXN0KHJlZikge1xuICAgICAgICAgICAgdmFyIGFkZGVkTm9kZXMgPSByZWYuYWRkZWROb2RlcztcbiAgICAgICAgICAgIHZhciByZW1vdmVkTm9kZXMgPSByZWYucmVtb3ZlZE5vZGVzO1xuXG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWRkZWROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGFwcGx5JCQxKGFkZGVkTm9kZXNbaV0sIGNvbm5lY3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCByZW1vdmVkTm9kZXMubGVuZ3RoOyBpJDErKykge1xuICAgICAgICAgICAgICAgIGFwcGx5JCQxKHJlbW92ZWROb2Rlc1tpJDFdLCBkaXNjb25uZWN0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhcHBseSQkMShub2RlLCBmbikge1xuXG4gICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gMSB8fCBoYXNBdHRyKG5vZGUsICd1ay1uby1ib290JykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZuKG5vZGUpO1xuICAgICAgICAgICAgbm9kZSA9IG5vZGUuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gbm9kZS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgYXBwbHkkJDEobm9kZSwgZm4pO1xuICAgICAgICAgICAgICAgIG5vZGUgPSBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnbG9iYWxBUEkgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIERBVEEgPSBVSWtpdC5kYXRhO1xuXG4gICAgICAgIFVJa2l0LnVzZSA9IGZ1bmN0aW9uIChwbHVnaW4pIHtcblxuICAgICAgICAgICAgaWYgKHBsdWdpbi5pbnN0YWxsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBsdWdpbi5jYWxsKG51bGwsIHRoaXMpO1xuICAgICAgICAgICAgcGx1Z2luLmluc3RhbGxlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1peGluID0gZnVuY3Rpb24gKG1peGluLCBjb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudCA9IChpc1N0cmluZyhjb21wb25lbnQpID8gVUlraXQuY29tcG9uZW50KGNvbXBvbmVudCkgOiBjb21wb25lbnQpIHx8IHRoaXM7XG4gICAgICAgICAgICBtaXhpbiA9IG1lcmdlT3B0aW9ucyh7fSwgbWl4aW4pO1xuICAgICAgICAgICAgbWl4aW4ubWl4aW5zID0gY29tcG9uZW50Lm9wdGlvbnMubWl4aW5zO1xuICAgICAgICAgICAgZGVsZXRlIGNvbXBvbmVudC5vcHRpb25zLm1peGlucztcbiAgICAgICAgICAgIGNvbXBvbmVudC5vcHRpb25zID0gbWVyZ2VPcHRpb25zKG1peGluLCBjb21wb25lbnQub3B0aW9ucyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQuZXh0ZW5kID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgICAgIHZhciBTdXBlciA9IHRoaXM7XG4gICAgICAgICAgICB2YXIgU3ViID0gZnVuY3Rpb24gVUlraXRDb21wb25lbnQgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0KG9wdGlvbnMpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgU3ViLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3VwZXIucHJvdG90eXBlKTtcbiAgICAgICAgICAgIFN1Yi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWI7XG4gICAgICAgICAgICBTdWIub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhTdXBlci5vcHRpb25zLCBvcHRpb25zKTtcblxuICAgICAgICAgICAgU3ViWydzdXBlciddID0gU3VwZXI7XG4gICAgICAgICAgICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kO1xuXG4gICAgICAgICAgICByZXR1cm4gU3ViO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnVwZGF0ZSA9IGZ1bmN0aW9uIChlbGVtZW50LCBlKSB7XG5cbiAgICAgICAgICAgIGUgPSBjcmVhdGVFdmVudChlIHx8ICd1cGRhdGUnKTtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50ID8gdG9Ob2RlKGVsZW1lbnQpIDogZG9jdW1lbnQuYm9keTtcblxuICAgICAgICAgICAgcGF0aChlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHVwZGF0ZShlbGVtZW50W0RBVEFdLCBlKTsgfSk7XG4gICAgICAgICAgICBhcHBseShlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdXBkYXRlKGVsZW1lbnRbREFUQV0sIGUpOyB9KTtcblxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBjb250YWluZXI7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShVSWtpdCwgJ2NvbnRhaW5lcicsIHtcblxuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVyIHx8IGRvY3VtZW50LmJvZHk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZShkYXRhJCQxLCBlKSB7XG5cbiAgICAgICAgICAgIGlmICghZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEkJDFbbmFtZV0uX2lzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMVtuYW1lXS5fY2FsbFVwZGF0ZShlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHBhdGgoZWxlbWVudCkge1xuICAgICAgICAgICAgdmFyIHBhdGggPSBbXTtcblxuICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudCAhPT0gZG9jdW1lbnQuYm9keSAmJiBlbGVtZW50LnBhcmVudE5vZGUpIHtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgcGF0aC51bnNoaWZ0KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBob29rc0FQSSAoVUlraXQpIHtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxIb29rID0gZnVuY3Rpb24gKGhvb2spIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciBoYW5kbGVycyA9IHRoaXMuJG9wdGlvbnNbaG9va107XG5cbiAgICAgICAgICAgIGlmIChoYW5kbGVycykge1xuICAgICAgICAgICAgICAgIGhhbmRsZXJzLmZvckVhY2goZnVuY3Rpb24gKGhhbmRsZXIpIHsgcmV0dXJuIGhhbmRsZXIuY2FsbCh0aGlzJDEpOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxDb25uZWN0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBpZiAodGhpcy5fY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9kYXRhID0ge307XG4gICAgICAgICAgICB0aGlzLl9pbml0UHJvcHMoKTtcblxuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2JlZm9yZUNvbm5lY3QnKTtcbiAgICAgICAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuX2luaXRFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRPYnNlcnZlcigpO1xuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnY29ubmVjdGVkJyk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNSZWFkeSkge1xuICAgICAgICAgICAgICAgIHJlYWR5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5fY2FsbFJlYWR5KCk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jYWxsVXBkYXRlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9jYWxsRGlzY29ubmVjdGVkID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2Nvbm5lY3RlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2JlZm9yZURpc2Nvbm5lY3QnKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX29ic2VydmVyID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fdW5iaW5kRXZlbnRzKCk7XG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnZGlzY29ubmVjdGVkJyk7XG5cbiAgICAgICAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IGZhbHNlO1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9jYWxsUmVhZHkgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9pc1JlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdyZWFkeScpO1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRDb21wdXRlZHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxVcGRhdGUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxVcGRhdGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgZSA9IGNyZWF0ZUV2ZW50KGUgfHwgJ3VwZGF0ZScpO1xuXG4gICAgICAgICAgICB2YXIgdHlwZSA9IGUudHlwZTtcblxuICAgICAgICAgICAgaWYgKGluY2x1ZGVzKFsndXBkYXRlJywgJ2xvYWQnLCAncmVzaXplJ10sIHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRDb21wdXRlZHMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHVwZGF0ZXMgPSB0aGlzLiRvcHRpb25zLnVwZGF0ZTtcbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLl9mcmFtZXM7XG4gICAgICAgICAgICB2YXIgcmVhZHMgPSByZWYucmVhZHM7XG4gICAgICAgICAgICB2YXIgd3JpdGVzID0gcmVmLndyaXRlcztcblxuICAgICAgICAgICAgaWYgKCF1cGRhdGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1cGRhdGVzLmZvckVhY2goZnVuY3Rpb24gKHJlZiwgaSkge1xuICAgICAgICAgICAgICAgIHZhciByZWFkID0gcmVmLnJlYWQ7XG4gICAgICAgICAgICAgICAgdmFyIHdyaXRlID0gcmVmLndyaXRlO1xuICAgICAgICAgICAgICAgIHZhciBldmVudHMgPSByZWYuZXZlbnRzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSAhPT0gJ3VwZGF0ZScgJiYgIWluY2x1ZGVzKGV2ZW50cywgdHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChyZWFkICYmICFpbmNsdWRlcyhmYXN0ZG9tLnJlYWRzLCByZWFkc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhZHNbaV0gPSBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcyQxLl9jb25uZWN0ZWQgJiYgcmVhZC5jYWxsKHRoaXMkMSwgdGhpcyQxLl9kYXRhLCBlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UgJiYgd3JpdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXN0ZG9tLmNsZWFyKHdyaXRlc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHdyaXRlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWduKHRoaXMkMS5fZGF0YSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWFkc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHdyaXRlICYmICFpbmNsdWRlcyhmYXN0ZG9tLndyaXRlcywgd3JpdGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICB3cml0ZXNbaV0gPSBmYXN0ZG9tLndyaXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5fY29ubmVjdGVkICYmIHdyaXRlLmNhbGwodGhpcyQxLCB0aGlzJDEuX2RhdGEsIGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHdyaXRlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RhdGVBUEkgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIHVpZCA9IDA7XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICAgICAgICBvcHRpb25zLmRhdGEgPSBub3JtYWxpemVEYXRhKG9wdGlvbnMsIHRoaXMuY29uc3RydWN0b3Iub3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHRoaXMuJG9wdGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5jb25zdHJ1Y3Rvci5vcHRpb25zLCBvcHRpb25zLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuJGVsID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuJHByb3BzID0ge307XG5cbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lcyA9IHtyZWFkczoge30sIHdyaXRlczoge319O1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuX3VpZCA9IHVpZCsrO1xuICAgICAgICAgICAgdGhpcy5faW5pdERhdGEoKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRNZXRob2RzKCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0Q29tcHV0ZWRzKCk7XG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnY3JlYXRlZCcpO1xuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5lbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJG1vdW50KG9wdGlvbnMuZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdERhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBkYXRhJCQxID0gcmVmLmRhdGE7IGlmICggZGF0YSQkMSA9PT0gdm9pZCAwICkgZGF0YSQkMSA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgIHRoaXMkMS4kcHJvcHNba2V5XSA9IHRoaXMkMVtrZXldID0gZGF0YSQkMVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdE1ldGhvZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBtZXRob2RzID0gcmVmLm1ldGhvZHM7XG5cbiAgICAgICAgICAgIGlmIChtZXRob2RzKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxW2tleV0gPSBiaW5kKG1ldGhvZHNba2V5XSwgdGhpcyQxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0Q29tcHV0ZWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgY29tcHV0ZWQgPSByZWYuY29tcHV0ZWQ7XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29tcHV0ZWRzKCk7XG5cbiAgICAgICAgICAgIGlmIChjb21wdXRlZCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckNvbXB1dGVkKHRoaXMkMSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9yZXNldENvbXB1dGVkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVkcyA9IHt9O1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdFByb3BzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIga2V5O1xuXG4gICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuXG4gICAgICAgICAgICBwcm9wcyA9IHByb3BzIHx8IGdldFByb3BzKHRoaXMuJG9wdGlvbnMsIHRoaXMuJG5hbWUpO1xuXG4gICAgICAgICAgICBmb3IgKGtleSBpbiBwcm9wcykge1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQocHJvcHNba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiRwcm9wc1trZXldID0gcHJvcHNba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBleGNsdWRlID0gW3RoaXMuJG9wdGlvbnMuY29tcHV0ZWQsIHRoaXMuJG9wdGlvbnMubWV0aG9kc107XG4gICAgICAgICAgICBmb3IgKGtleSBpbiB0aGlzJDEuJHByb3BzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSBpbiBwcm9wcyAmJiBub3RJbihleGNsdWRlLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMVtrZXldID0gdGhpcyQxLiRwcm9wc1trZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBldmVudHMgPSByZWYuZXZlbnRzO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnRzKSB7XG5cbiAgICAgICAgICAgICAgICBldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc093bihldmVudCwgJ2hhbmRsZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJFdmVudCh0aGlzJDEsIGV2ZW50W2tleV0sIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KHRoaXMkMSwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX3VuYmluZEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uICh1bmJpbmQpIHsgcmV0dXJuIHVuYmluZCgpOyB9KTtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IFtdO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdE9ic2VydmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgYXR0cnMgPSByZWYuYXR0cnM7XG4gICAgICAgICAgICB2YXIgcHJvcHMgPSByZWYucHJvcHM7XG4gICAgICAgICAgICB2YXIgZWwgPSByZWYuZWw7XG4gICAgICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIgfHwgIXByb3BzIHx8ICFhdHRycykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXR0cnMgPSBpc0FycmF5KGF0dHJzKSA/IGF0dHJzIDogT2JqZWN0LmtleXMocHJvcHMpLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBoeXBoZW5hdGUoa2V5KTsgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSBnZXRQcm9wcyh0aGlzJDEuJG9wdGlvbnMsIHRoaXMkMS4kbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGF0dHJzLnNvbWUoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gIWlzVW5kZWZpbmVkKGRhdGEkJDFba2V5XSkgJiYgZGF0YSQkMVtrZXldICE9PSB0aGlzJDEuJHByb3BzW2tleV07IH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kcmVzZXQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKGVsLCB7YXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBhdHRycy5jb25jYXQoW3RoaXMuJG5hbWUsIChcImRhdGEtXCIgKyAodGhpcy4kbmFtZSkpXSl9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRQcm9wcyhvcHRzLCBuYW1lKSB7XG5cbiAgICAgICAgICAgIHZhciBkYXRhJCQxID0ge307XG4gICAgICAgICAgICB2YXIgYXJncyA9IG9wdHMuYXJnczsgaWYgKCBhcmdzID09PSB2b2lkIDAgKSBhcmdzID0gW107XG4gICAgICAgICAgICB2YXIgcHJvcHMgPSBvcHRzLnByb3BzOyBpZiAoIHByb3BzID09PSB2b2lkIDAgKSBwcm9wcyA9IHt9O1xuICAgICAgICAgICAgdmFyIGVsID0gb3B0cy5lbDtcblxuICAgICAgICAgICAgaWYgKCFwcm9wcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcCA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChoYXNBdHRyKGVsLCBwcm9wKSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNvZXJjZShwcm9wc1trZXldLCBhdHRyKGVsLCBwcm9wKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT09ICd0YXJnZXQnICYmICghdmFsdWUgfHwgc3RhcnRzV2l0aCh2YWx1ZSwgJ18nKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHBhcnNlT3B0aW9ucyhkYXRhKGVsLCBuYW1lKSwgYXJncyk7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSQxIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcCQxID0gY2FtZWxpemUoa2V5JDEpO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wc1twcm9wJDFdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMVtwcm9wJDFdID0gY29lcmNlKHByb3BzW3Byb3AkMV0sIG9wdGlvbnNba2V5JDFdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVnaXN0ZXJDb21wdXRlZChjb21wb25lbnQsIGtleSwgY2IpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb21wb25lbnQsIGtleSwge1xuXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIF9jb21wdXRlZHMgPSBjb21wb25lbnQuX2NvbXB1dGVkcztcbiAgICAgICAgICAgICAgICAgICAgdmFyICRwcm9wcyA9IGNvbXBvbmVudC4kcHJvcHM7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSBjb21wb25lbnQuJGVsO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzT3duKF9jb21wdXRlZHMsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jb21wdXRlZHNba2V5XSA9IGNiLmNhbGwoY29tcG9uZW50LCAkcHJvcHMsICRlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbXB1dGVkc1trZXldO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5fY29tcHV0ZWRzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVnaXN0ZXJFdmVudChjb21wb25lbnQsIGV2ZW50LCBrZXkpIHtcblxuICAgICAgICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50ID0gKHtuYW1lOiBrZXksIGhhbmRsZXI6IGV2ZW50fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBuYW1lID0gZXZlbnQubmFtZTtcbiAgICAgICAgICAgIHZhciBlbCA9IGV2ZW50LmVsO1xuICAgICAgICAgICAgdmFyIGhhbmRsZXIgPSBldmVudC5oYW5kbGVyO1xuICAgICAgICAgICAgdmFyIGNhcHR1cmUgPSBldmVudC5jYXB0dXJlO1xuICAgICAgICAgICAgdmFyIGRlbGVnYXRlID0gZXZlbnQuZGVsZWdhdGU7XG4gICAgICAgICAgICB2YXIgZmlsdGVyJCQxID0gZXZlbnQuZmlsdGVyO1xuICAgICAgICAgICAgdmFyIHNlbGYgPSBldmVudC5zZWxmO1xuICAgICAgICAgICAgZWwgPSBpc0Z1bmN0aW9uKGVsKVxuICAgICAgICAgICAgICAgID8gZWwuY2FsbChjb21wb25lbnQpXG4gICAgICAgICAgICAgICAgOiBlbCB8fCBjb21wb25lbnQuJGVsO1xuXG4gICAgICAgICAgICBpZiAoaXNBcnJheShlbCkpIHtcbiAgICAgICAgICAgICAgICBlbC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVnaXN0ZXJFdmVudChjb21wb25lbnQsIGFzc2lnbih7fSwgZXZlbnQsIHtlbDogZWx9KSwga2V5KTsgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWVsIHx8IGZpbHRlciQkMSAmJiAhZmlsdGVyJCQxLmNhbGwoY29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFuZGxlciA9IGRldGFpbChpc1N0cmluZyhoYW5kbGVyKSA/IGNvbXBvbmVudFtoYW5kbGVyXSA6IGJpbmQoaGFuZGxlciwgY29tcG9uZW50KSk7XG5cbiAgICAgICAgICAgIGlmIChzZWxmKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlciA9IHNlbGZGaWx0ZXIoaGFuZGxlcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbXBvbmVudC5fZXZlbnRzLnB1c2goXG4gICAgICAgICAgICAgICAgb24oXG4gICAgICAgICAgICAgICAgICAgIGVsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAhZGVsZWdhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBpc1N0cmluZyhkZWxlZ2F0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGRlbGVnYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWxlZ2F0ZS5jYWxsKGNvbXBvbmVudCksXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIGNhcHR1cmVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBzZWxmRmlsdGVyKGhhbmRsZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBzZWxmSGFuZGxlcihlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBlLmN1cnJlbnRUYXJnZXQgfHwgZS50YXJnZXQgPT09IGUuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlci5jYWxsKG51bGwsIGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBub3RJbihvcHRpb25zLCBrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmV2ZXJ5KGZ1bmN0aW9uIChhcnIpIHsgcmV0dXJuICFhcnIgfHwgIWhhc093bihhcnIsIGtleSk7IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZGV0YWlsKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGlzQXJyYXkoZS5kZXRhaWwpID8gbGlzdGVuZXIuYXBwbHkodm9pZCAwLCBbZV0uY29uY2F0KGUuZGV0YWlsKSkgOiBsaXN0ZW5lcihlKTsgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGNvZXJjZSh0eXBlLCB2YWx1ZSkge1xuXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gQm9vbGVhbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b0Jvb2xlYW4odmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbGlzdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9MaXN0KHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ21lZGlhJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b01lZGlhKHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHR5cGUgPyB0eXBlKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gdG9NZWRpYSh2YWx1ZSkge1xuXG4gICAgICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlWzBdID09PSAnQCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBcIm1lZGlhLVwiICsgKHZhbHVlLnN1YnN0cigxKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdG9GbG9hdChnZXRDc3NWYXIobmFtZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiAhaXNOYU4odmFsdWUpID8gKFwiKG1pbi13aWR0aDogXCIgKyB2YWx1ZSArIFwicHgpXCIpIDogZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBub3JtYWxpemVEYXRhKHJlZiwgcmVmJDEpIHtcbiAgICAgICAgICAgIHZhciBkYXRhJCQxID0gcmVmLmRhdGE7XG4gICAgICAgICAgICB2YXIgZWwgPSByZWYuZWw7XG4gICAgICAgICAgICB2YXIgYXJncyA9IHJlZiQxLmFyZ3M7XG4gICAgICAgICAgICB2YXIgcHJvcHMgPSByZWYkMS5wcm9wczsgaWYgKCBwcm9wcyA9PT0gdm9pZCAwICkgcHJvcHMgPSB7fTtcblxuICAgICAgICAgICAgZGF0YSQkMSA9IGlzQXJyYXkoZGF0YSQkMSlcbiAgICAgICAgICAgICAgICA/IGFyZ3MgJiYgYXJncy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBkYXRhJCQxLnNsaWNlKDAsIGFyZ3MubGVuZ3RoKS5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEkJDEsIHZhbHVlLCBpbmRleCQkMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWduKGRhdGEkJDEsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMVthcmdzW2luZGV4JCQxXV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICAgICAgICAgICAgICB9LCB7fSlcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA6IGRhdGEkJDE7XG5cbiAgICAgICAgICAgIGlmIChkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGRhdGEkJDFba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhJCQxW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW2tleV0gPSBwcm9wc1trZXldID8gY29lcmNlKHByb3BzW2tleV0sIGRhdGEkJDFba2V5XSwgZWwpIDogZGF0YSQkMVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0YSQkMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbmNlQVBJIChVSWtpdCkge1xuXG4gICAgICAgIHZhciBEQVRBID0gVUlraXQuZGF0YTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKGVsKSB7XG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIG5hbWUgPSByZWYubmFtZTtcblxuICAgICAgICAgICAgaWYgKCFlbFtEQVRBXSkge1xuICAgICAgICAgICAgICAgIGVsW0RBVEFdID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbFtEQVRBXVtuYW1lXSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxbREFUQV1bbmFtZV0gPSB0aGlzO1xuXG4gICAgICAgICAgICB0aGlzLiRlbCA9IHRoaXMuJG9wdGlvbnMuZWwgPSB0aGlzLiRvcHRpb25zLmVsIHx8IGVsO1xuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnaW5pdCcpO1xuXG4gICAgICAgICAgICBpZiAod2l0aGluKGVsLCBkb2N1bWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxsQ29ubmVjdGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLiRlbWl0ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxVcGRhdGUoZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLiRyZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxEaXNjb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxDb25uZWN0ZWQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJGRlc3Ryb3kgPSBmdW5jdGlvbiAocmVtb3ZlRWwpIHtcbiAgICAgICAgICAgIGlmICggcmVtb3ZlRWwgPT09IHZvaWQgMCApIHJlbW92ZUVsID0gZmFsc2U7XG5cblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgZWwgPSByZWYuZWw7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IHJlZi5uYW1lO1xuXG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxsRGlzY29ubmVjdGVkKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdkZXN0cm95Jyk7XG5cbiAgICAgICAgICAgIGlmICghZWwgfHwgIWVsW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxldGUgZWxbREFUQV1bbmFtZV07XG5cbiAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoZWxbREFUQV0pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBlbFtEQVRBXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlbW92ZUVsKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMuJGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJGNyZWF0ZSA9IGZ1bmN0aW9uIChjb21wb25lbnQsIGVsZW1lbnQsIGRhdGEkJDEpIHtcbiAgICAgICAgICAgIHJldHVybiBVSWtpdFtjb21wb25lbnRdKGVsZW1lbnQsIGRhdGEkJDEpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kdXBkYXRlID0gVUlraXQudXBkYXRlO1xuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJGdldENvbXBvbmVudCA9IFVJa2l0LmdldENvbXBvbmVudDtcblxuICAgICAgICB2YXIgbmFtZXMgPSB7fTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVUlraXQucHJvdG90eXBlLCB7XG5cbiAgICAgICAgICAgICRjb250YWluZXI6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVUlraXQsICdjb250YWluZXInKSxcblxuICAgICAgICAgICAgJG5hbWU6IHtcblxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IHJlZi5uYW1lO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghbmFtZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzW25hbWVdID0gVUlraXQucHJlZml4ICsgaHlwaGVuYXRlKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWVzW25hbWVdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgdmFyIFVJa2l0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5faW5pdChvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgVUlraXQudXRpbCA9IHV0aWw7XG4gICAgVUlraXQuZGF0YSA9ICdfX3Vpa2l0X18nO1xuICAgIFVJa2l0LnByZWZpeCA9ICd1ay0nO1xuICAgIFVJa2l0Lm9wdGlvbnMgPSB7fTtcblxuICAgIGdsb2JhbEFQSShVSWtpdCk7XG4gICAgaG9va3NBUEkoVUlraXQpO1xuICAgIHN0YXRlQVBJKFVJa2l0KTtcbiAgICBjb21wb25lbnRBUEkoVUlraXQpO1xuICAgIGluc3RhbmNlQVBJKFVJa2l0KTtcblxuICAgIHZhciBDbGFzcyA9IHtcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsIHRoaXMuJG5hbWUpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFRvZ2dsYWJsZSA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xzOiBCb29sZWFuLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiAnbGlzdCcsXG4gICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyLFxuICAgICAgICAgICAgb3JpZ2luOiBTdHJpbmcsXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBTdHJpbmcsXG4gICAgICAgICAgICBxdWV1ZWQ6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjbHM6IGZhbHNlLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbZmFsc2VdLFxuICAgICAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgICAgIG9yaWdpbjogZmFsc2UsXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAnbGluZWFyJyxcbiAgICAgICAgICAgIHF1ZXVlZDogZmFsc2UsXG5cbiAgICAgICAgICAgIGluaXRQcm9wczoge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcnLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A6ICcnLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206ICcnLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJycsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAnJ1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGlkZVByb3BzOiB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiAwLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAwLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaGFzQW5pbWF0aW9uOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYW5pbWF0aW9uID0gcmVmLmFuaW1hdGlvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAhIWFuaW1hdGlvblswXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhc1RyYW5zaXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzQW5pbWF0aW9uICYmIGFuaW1hdGlvblswXSA9PT0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdG9nZ2xlRWxlbWVudDogZnVuY3Rpb24odGFyZ2V0cywgc2hvdywgYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcblxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRzID0gdG9Ob2Rlcyh0YXJnZXRzKTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWxsID0gZnVuY3Rpb24gKHRhcmdldHMpIHsgcmV0dXJuIFByb21pc2UkMS5hbGwodGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZUVsZW1lbnQoZWwsIHNob3csIGFuaW1hdGUkJDEpOyB9KSk7IH07XG4gICAgICAgICAgICAgICAgICAgIHZhciB0b2dnbGVkID0gdGFyZ2V0cy5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEuaXNUb2dnbGVkKGVsKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB1bnRvZ2dsZWQgPSB0YXJnZXRzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuICFpbmNsdWRlcyh0b2dnbGVkLCBlbCk7IH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBwO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcyQxLnF1ZXVlZCB8fCAhaXNVbmRlZmluZWQoYW5pbWF0ZSQkMSkgfHwgIWlzVW5kZWZpbmVkKHNob3cpIHx8ICF0aGlzJDEuaGFzQW5pbWF0aW9uIHx8IHRhcmdldHMubGVuZ3RoIDwgMikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBwID0gYWxsKHVudG9nZ2xlZC5jb25jYXQodG9nZ2xlZCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSBib2R5LnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbCA9IHRvZ2dsZWRbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5Qcm9ncmVzcyA9IEFuaW1hdGlvbi5pblByb2dyZXNzKGVsKSAmJiBoYXNDbGFzcyhlbCwgJ3VrLWFuaW1hdGlvbi1sZWF2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IFRyYW5zaXRpb24uaW5Qcm9ncmVzcyhlbCkgJiYgZWwuc3R5bGUuaGVpZ2h0ID09PSAnMHB4JztcblxuICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGFsbCh0b2dnbGVkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gYWxsKHVudG9nZ2xlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkuc2Nyb2xsVG9wID0gc2Nyb2xsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcC50aGVuKHJlc29sdmUsIG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0b2dnbGVOb3c6IGZ1bmN0aW9uKHRhcmdldHMsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJldHVybiBQcm9taXNlJDEuYWxsKHRvTm9kZXModGFyZ2V0cykubWFwKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdGhpcyQxLl90b2dnbGVFbGVtZW50KGVsLCBzaG93LCBmYWxzZSk7IH0pKS50aGVuKHJlc29sdmUsIG5vb3ApOyB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzVG9nZ2xlZDogZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgbm9kZXMgPSB0b05vZGVzKGVsIHx8IHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbHNcbiAgICAgICAgICAgICAgICAgICAgPyBoYXNDbGFzcyhub2RlcywgdGhpcy5jbHMuc3BsaXQoJyAnKVswXSlcbiAgICAgICAgICAgICAgICAgICAgOiAhaGFzQXR0cihub2RlcywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdXBkYXRlQXJpYTogZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbHMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHIoZWwsICdhcmlhLWhpZGRlbicsICF0aGlzLmlzVG9nZ2xlZChlbCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF90b2dnbGVFbGVtZW50OiBmdW5jdGlvbihlbCwgc2hvdywgYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBzaG93ID0gaXNCb29sZWFuKHNob3cpXG4gICAgICAgICAgICAgICAgICAgID8gc2hvd1xuICAgICAgICAgICAgICAgICAgICA6IEFuaW1hdGlvbi5pblByb2dyZXNzKGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYXNDbGFzcyhlbCwgJ3VrLWFuaW1hdGlvbi1sZWF2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFRyYW5zaXRpb24uaW5Qcm9ncmVzcyhlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGVsLnN0eWxlLmhlaWdodCA9PT0gJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICF0aGlzLmlzVG9nZ2xlZChlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRyaWdnZXIoZWwsIChcImJlZm9yZVwiICsgKHNob3cgPyAnc2hvdycgOiAnaGlkZScpKSwgW3RoaXNdKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcm9taXNlID0gKGFuaW1hdGUkJDEgPT09IGZhbHNlIHx8ICF0aGlzLmhhc0FuaW1hdGlvblxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3RvZ2dsZUltbWVkaWF0ZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaGFzVHJhbnNpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl90b2dnbGVIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fdG9nZ2xlQW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgKShlbCwgc2hvdyk7XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKGVsLCBzaG93ID8gJ3Nob3cnIDogJ2hpZGUnLCBbdGhpc10pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsIHNob3cgPyAnc2hvd24nIDogJ2hpZGRlbicsIFt0aGlzJDFdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUoZWwpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZTogZnVuY3Rpb24oZWwsIHRvZ2dsZWQpIHtcblxuICAgICAgICAgICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBjaGFuZ2VkO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNscykge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gaW5jbHVkZXModGhpcy5jbHMsICcgJykgfHwgQm9vbGVhbih0b2dnbGVkKSAhPT0gaGFzQ2xhc3MoZWwsIHRoaXMuY2xzKTtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCAmJiB0b2dnbGVDbGFzcyhlbCwgdGhpcy5jbHMsIGluY2x1ZGVzKHRoaXMuY2xzLCAnICcpID8gdW5kZWZpbmVkIDogdG9nZ2xlZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IEJvb2xlYW4odG9nZ2xlZCkgPT09IGhhc0F0dHIoZWwsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCAmJiBhdHRyKGVsLCAnaGlkZGVuJywgIXRvZ2dsZWQgPyAnJyA6IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICQkKCdbYXV0b2ZvY3VzXScsIGVsKS5zb21lKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gaXNWaXNpYmxlKGVsKSAmJiAoZWwuZm9jdXMoKSB8fCB0cnVlKTsgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoZWwpO1xuICAgICAgICAgICAgICAgIGNoYW5nZWQgJiYgdGhpcy4kdXBkYXRlKGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF90b2dnbGVJbW1lZGlhdGU6IGZ1bmN0aW9uKGVsLCBzaG93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlKGVsLCBzaG93KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF90b2dnbGVIZWlnaHQ6IGZ1bmN0aW9uKGVsLCBzaG93KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciBpblByb2dyZXNzID0gVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKTtcbiAgICAgICAgICAgICAgICB2YXIgaW5uZXIgPSBlbC5oYXNDaGlsZE5vZGVzID8gdG9GbG9hdChjc3MoZWwuZmlyc3RFbGVtZW50Q2hpbGQsICdtYXJnaW5Ub3AnKSkgKyB0b0Zsb2F0KGNzcyhlbC5sYXN0RWxlbWVudENoaWxkLCAnbWFyZ2luQm90dG9tJykpIDogMDtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudEhlaWdodCA9IGlzVmlzaWJsZShlbCkgPyBoZWlnaHQoZWwpICsgKGluUHJvZ3Jlc3MgPyAwIDogaW5uZXIpIDogMDtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RvZ2dsZWQoZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZShlbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaGVpZ2h0KGVsLCAnJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY2hpbGQgY29tcG9uZW50cyBmaXJzdFxuICAgICAgICAgICAgICAgIGZhc3Rkb20uZmx1c2goKTtcblxuICAgICAgICAgICAgICAgIHZhciBlbmRIZWlnaHQgPSBoZWlnaHQoZWwpICsgKGluUHJvZ3Jlc3MgPyAwIDogaW5uZXIpO1xuICAgICAgICAgICAgICAgIGhlaWdodChlbCwgY3VycmVudEhlaWdodCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKHNob3dcbiAgICAgICAgICAgICAgICAgICAgPyBUcmFuc2l0aW9uLnN0YXJ0KGVsLCBhc3NpZ24oe30sIHRoaXMuaW5pdFByb3BzLCB7b3ZlcmZsb3c6ICdoaWRkZW4nLCBoZWlnaHQ6IGVuZEhlaWdodH0pLCBNYXRoLnJvdW5kKHRoaXMuZHVyYXRpb24gKiAoMSAtIGN1cnJlbnRIZWlnaHQgLyBlbmRIZWlnaHQpKSwgdGhpcy50cmFuc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICA6IFRyYW5zaXRpb24uc3RhcnQoZWwsIHRoaXMuaGlkZVByb3BzLCBNYXRoLnJvdW5kKHRoaXMuZHVyYXRpb24gKiAoY3VycmVudEhlaWdodCAvIGVuZEhlaWdodCkpLCB0aGlzLnRyYW5zaXRpb24pLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLl90b2dnbGUoZWwsIGZhbHNlKTsgfSlcbiAgICAgICAgICAgICAgICApLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gY3NzKGVsLCB0aGlzJDEuaW5pdFByb3BzKTsgfSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF90b2dnbGVBbmltYXRpb246IGZ1bmN0aW9uKGVsLCBzaG93KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5jYW5jZWwoZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlKGVsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFuaW1hdGlvbi5pbihlbCwgdGhpcy5hbmltYXRpb25bMF0sIHRoaXMuZHVyYXRpb24sIHRoaXMub3JpZ2luKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gQW5pbWF0aW9uLm91dChlbCwgdGhpcy5hbmltYXRpb25bMV0gfHwgdGhpcy5hbmltYXRpb25bMF0sIHRoaXMuZHVyYXRpb24sIHRoaXMub3JpZ2luKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlKGVsLCBmYWxzZSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgQWNjb3JkaW9uID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBUb2dnbGFibGVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB0YXJnZXRzOiBTdHJpbmcsXG4gICAgICAgICAgICBhY3RpdmU6IG51bGwsXG4gICAgICAgICAgICBjb2xsYXBzaWJsZTogQm9vbGVhbixcbiAgICAgICAgICAgIG11bHRpcGxlOiBCb29sZWFuLFxuICAgICAgICAgICAgdG9nZ2xlOiBTdHJpbmcsXG4gICAgICAgICAgICBjb250ZW50OiBTdHJpbmcsXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0YXJnZXRzOiAnPiAqJyxcbiAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICBhbmltYXRpb246IFt0cnVlXSxcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgY2xzT3BlbjogJ3VrLW9wZW4nLFxuICAgICAgICAgICAgdG9nZ2xlOiAnPiAudWstYWNjb3JkaW9uLXRpdGxlJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc+IC51ay1hY2NvcmRpb24tY29udGVudCcsXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAnZWFzZSdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpdGVtczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0cyA9IHJlZi50YXJnZXRzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRhcmdldHMsICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy50YXJnZXRzKSArIFwiIFwiICsgKHRoaXMuJHByb3BzLnRvZ2dsZSkpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoaW5kZXgoJCQoKCh0aGlzLnRhcmdldHMpICsgXCIgXCIgKyAodGhpcy4kcHJvcHMudG9nZ2xlKSksIHRoaXMuJGVsKSwgZS5jdXJyZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5pdGVtc1tOdW1iZXIodGhpcy5hY3RpdmUpXTtcbiAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgIWhhc0NsYXNzKGFjdGl2ZSwgdGhpcy5jbHNPcGVuKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKGFjdGl2ZSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZUltbWVkaWF0ZSgkKHRoaXMkMS5jb250ZW50LCBlbCksIGhhc0NsYXNzKGVsLCB0aGlzJDEuY2xzT3BlbikpOyB9KTtcblxuICAgICAgICAgICAgdmFyIGFjdGl2ZSA9ICF0aGlzLmNvbGxhcHNpYmxlICYmICFoYXNDbGFzcyh0aGlzLml0ZW1zLCB0aGlzLmNsc09wZW4pICYmIHRoaXMuaXRlbXNbMF07XG4gICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoYWN0aXZlLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKGl0ZW0sIGFuaW1hdGUkJDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gZ2V0SW5kZXgoaXRlbSwgdGhpcy5pdGVtcyk7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IGZpbHRlcih0aGlzLml0ZW1zLCAoXCIuXCIgKyAodGhpcy5jbHNPcGVuKSkpO1xuXG4gICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuaXRlbXNbaW5kZXgkJDFdO1xuXG4gICAgICAgICAgICAgICAgaXRlbSAmJiBbaXRlbV1cbiAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCghdGhpcy5tdWx0aXBsZSAmJiAhaW5jbHVkZXMoYWN0aXZlLCBpdGVtKSAmJiBhY3RpdmUgfHwgW10pXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNJdGVtID0gZWwgPT09IGl0ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSBpc0l0ZW0gJiYgIWhhc0NsYXNzKGVsLCB0aGlzJDEuY2xzT3Blbik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGUgJiYgaXNJdGVtICYmICF0aGlzJDEuY29sbGFwc2libGUgJiYgYWN0aXZlLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzT3Blbiwgc3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IGVsLl93cmFwcGVyID8gZWwuX3dyYXBwZXIuZmlyc3RFbGVtZW50Q2hpbGQgOiAkKHRoaXMkMS5jb250ZW50LCBlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWwuX3dyYXBwZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC5fd3JhcHBlciA9IHdyYXBBbGwoY29udGVudCwgJzxkaXY+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cihlbC5fd3JhcHBlciwgJ2hpZGRlbicsIHN0YXRlID8gJycgOiBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl90b2dnbGVJbW1lZGlhdGUoY29udGVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlRWxlbWVudChlbC5fd3JhcHBlciwgc3RhdGUsIGFuaW1hdGUkJDEpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyhlbCwgdGhpcyQxLmNsc09wZW4pID09PSBzdGF0ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5fdG9nZ2xlSW1tZWRpYXRlKGNvbnRlbnQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLl93cmFwcGVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgQWxlcnQgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ2FuaW1hdGlvbicsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNsb3NlOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhbmltYXRpb246IFt0cnVlXSxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLWFsZXJ0LWNsb3NlJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxNTAsXG4gICAgICAgICAgICBoaWRlUHJvcHM6IGFzc2lnbih7b3BhY2l0eTogMH0sIFRvZ2dsYWJsZS5kYXRhLmhpZGVQcm9wcylcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsQ2xvc2U7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRWxlbWVudCh0aGlzLiRlbCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuJGRlc3Ryb3kodHJ1ZSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBDb3JlIChVSWtpdCkge1xuXG4gICAgICAgIHJlYWR5KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgdmFyIHNjcm9sbCA9IDA7XG4gICAgICAgICAgICB2YXIgc3RhcnRlZCA9IDA7XG5cbiAgICAgICAgICAgIG9uKHdpbmRvdywgJ2xvYWQgcmVzaXplJywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIFVJa2l0LnVwZGF0ZShudWxsLCBlKTsgfSk7XG4gICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGUuZGlyID0gc2Nyb2xsIDw9IHdpbmRvdy5wYWdlWU9mZnNldCA/ICdkb3duJyA6ICd1cCc7XG4gICAgICAgICAgICAgICAgZS5wYWdlWU9mZnNldCA9IHNjcm9sbCA9IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICBVSWtpdC51cGRhdGUobnVsbCwgZSk7XG4gICAgICAgICAgICB9LCB7Y2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2V9KTtcblxuICAgICAgICAgICAgb24oZG9jdW1lbnQsICdhbmltYXRpb25zdGFydCcsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIGlmICgoY3NzKHRhcmdldCwgJ2FuaW1hdGlvbk5hbWUnKSB8fCAnJykubWF0Y2goL151ay0uKihsZWZ0fHJpZ2h0KS8pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgc3RhcnRlZCsrO1xuICAgICAgICAgICAgICAgICAgICBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WCcsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIS0tc3RhcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3dYJywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0b01zKGNzcyh0YXJnZXQsICdhbmltYXRpb25EdXJhdGlvbicpKSArIDEwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGlmICghaGFzVG91Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjbHMgPSAndWstaG92ZXInO1xuXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ3RhcCcsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQkKChcIi5cIiArIGNscykpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhd2l0aGluKHRhcmdldCwgZWwpICYmIHJlbW92ZUNsYXNzKGVsLCBjbHMpOyB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShVSWtpdCwgJ2hvdmVyU2VsZWN0b3InLCB7XG5cbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCAndGFwJywgc2VsZWN0b3IsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gcmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRDbGFzcyhjdXJyZW50LCBjbHMpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBVSWtpdC5ob3ZlclNlbGVjdG9yID0gJy51ay1hbmltYXRpb24tdG9nZ2xlLCAudWstdHJhbnNpdGlvbi10b2dnbGUsIFt1ay1ob3Zlcl0nO1xuXG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgdmFyIFZpZGVvID0ge1xuXG4gICAgICAgIGFyZ3M6ICdhdXRvcGxheScsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGF1dG9tdXRlOiBCb29sZWFuLFxuICAgICAgICAgICAgYXV0b3BsYXk6IEJvb2xlYW4sXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXV0b211dGU6IGZhbHNlLFxuICAgICAgICAgICAgYXV0b3BsYXk6IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpblZpZXc6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhdXRvcGxheSA9IHJlZi5hdXRvcGxheTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBhdXRvcGxheSA9PT0gJ2ludmlldyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pblZpZXcgJiYgIWhhc0F0dHIodGhpcy4kZWwsICdwcmVsb2FkJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbC5wcmVsb2FkID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVhZHk6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB0aGlzLnBsYXllciA9IG5ldyBQbGF5ZXIodGhpcy4kZWwpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5hdXRvbXV0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLm11dGUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihfLCByZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5wbGF5ZXIgfHwgKHR5cGUgPT09ICdzY3JvbGwnIHx8IHR5cGUgPT09ICdyZXNpemUnKSAmJiAhdGhpcy5pblZpZXdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGlzVmlzaWJsZSh0aGlzLiRlbCkgJiYgY3NzKHRoaXMuJGVsLCAndmlzaWJpbGl0eScpICE9PSAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblZpZXc6IHRoaXMuaW5WaWV3ICYmIGlzSW5WaWV3KHRoaXMuJGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmlzaWJsZSA9IHJlZi52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5WaWV3ID0gcmVmLmluVmlldztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmlzaWJsZSB8fCB0aGlzLmluVmlldyAmJiAhaW5WaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5wYXVzZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXV0b3BsYXkgPT09IHRydWUgfHwgdGhpcy5pblZpZXcgJiYgaW5WaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllci5wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnLCAnc2Nyb2xsJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICB2YXIgQ292ZXIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFZpZGVvXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgd2lkdGg6IE51bWJlcixcbiAgICAgICAgICAgIGhlaWdodDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXV0b211dGU6IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGVsID0gdGhpcy4kZWw7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWlzVmlzaWJsZShlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSBlbC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZi5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgIGNzcyhcbiAgICAgICAgICAgICAgICAgICAgY3NzKGVsLCB7d2lkdGg6ICcnLCBoZWlnaHQ6ICcnfSksXG4gICAgICAgICAgICAgICAgICAgIERpbWVuc2lvbnMuY292ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGggfHwgZWwuY2xpZW50V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCB8fCBlbC5jbGllbnRIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoJCQxICsgKHdpZHRoJCQxICUgMiA/IDEgOiAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCQkMSArIChoZWlnaHQkJDEgJSAyID8gMSA6IDApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiB7XG5cbiAgICAgICAgICAgIGxvYWRlZG1ldGFkYXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBQb3NpdGlvbiA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgcG9zOiBTdHJpbmcsXG4gICAgICAgICAgICBvZmZzZXQ6IG51bGwsXG4gICAgICAgICAgICBmbGlwOiBCb29sZWFuLFxuICAgICAgICAgICAgY2xzUG9zOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBwb3M6IChcImJvdHRvbS1cIiArICghaXNSdGwgPyAnbGVmdCcgOiAncmlnaHQnKSksXG4gICAgICAgICAgICBmbGlwOiB0cnVlLFxuICAgICAgICAgICAgb2Zmc2V0OiBmYWxzZSxcbiAgICAgICAgICAgIGNsc1BvczogJydcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBwb3M6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBwb3MgPSByZWYucG9zO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChwb3MgKyAoIWluY2x1ZGVzKHBvcywgJy0nKSA/ICctY2VudGVyJyA6ICcnKSkuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRpcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zWzBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYWxpZ246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc1sxXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgcG9zaXRpb25BdDogZnVuY3Rpb24oZWxlbWVudCwgdGFyZ2V0LCBib3VuZGFyeSkge1xuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NlcyhlbGVtZW50LCAoKHRoaXMuY2xzUG9zKSArIFwiLSh0b3B8Ym90dG9tfGxlZnR8cmlnaHQpKC1bYS16XSspP1wiKSk7XG4gICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIHt0b3A6ICcnLCBsZWZ0OiAnJ30pO1xuXG4gICAgICAgICAgICAgICAgdmFyIG5vZGU7XG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIG9mZnNldCQkMSA9IHJlZi5vZmZzZXQ7XG5cbiAgICAgICAgICAgICAgICBvZmZzZXQkJDEgPSBpc051bWVyaWMob2Zmc2V0JCQxKVxuICAgICAgICAgICAgICAgICAgICA/IG9mZnNldCQkMVxuICAgICAgICAgICAgICAgICAgICA6IChub2RlID0gJChvZmZzZXQkJDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBvZmZzZXQobm9kZSlbYXhpcyA9PT0gJ3gnID8gJ2xlZnQnIDogJ3RvcCddIC0gb2Zmc2V0KHRhcmdldClbYXhpcyA9PT0gJ3gnID8gJ3JpZ2h0JyA6ICdib3R0b20nXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xuXG4gICAgICAgICAgICAgICAgdmFyIGF4aXMgPSB0aGlzLmdldEF4aXMoKTtcbiAgICAgICAgICAgICAgICB2YXIgcmVmJDEgPSBwb3NpdGlvbkF0KFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/ICgoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkgKyBcIiBcIiArICh0aGlzLmFsaWduKSkgOiAoKHRoaXMuYWxpZ24pICsgXCIgXCIgKyAoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkpLFxuICAgICAgICAgICAgICAgICAgICBheGlzID09PSAneCcgPyAoKHRoaXMuZGlyKSArIFwiIFwiICsgKHRoaXMuYWxpZ24pKSA6ICgodGhpcy5hbGlnbikgKyBcIiBcIiArICh0aGlzLmRpcikpLFxuICAgICAgICAgICAgICAgICAgICBheGlzID09PSAneCcgPyAoXCJcIiArICh0aGlzLmRpciA9PT0gJ2xlZnQnID8gLW9mZnNldCQkMSA6IG9mZnNldCQkMSkpIDogKFwiIFwiICsgKHRoaXMuZGlyID09PSAndG9wJyA/IC1vZmZzZXQkJDEgOiBvZmZzZXQkJDEpKSxcbiAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mbGlwLFxuICAgICAgICAgICAgICAgICAgICBib3VuZGFyeVxuICAgICAgICAgICAgICAgICkudGFyZ2V0O1xuICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmJDEueDtcbiAgICAgICAgICAgICAgICB2YXIgeSA9IHJlZiQxLnk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRpciA9IGF4aXMgPT09ICd4JyA/IHggOiB5O1xuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ24gPSBheGlzID09PSAneCcgPyB5IDogeDtcblxuICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsZW1lbnQsICgodGhpcy5jbHNQb3MpICsgXCItXCIgKyAodGhpcy5kaXIpICsgXCItXCIgKyAodGhpcy5hbGlnbikpLCB0aGlzLm9mZnNldCA9PT0gZmFsc2UpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRBeGlzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXIgPT09ICd0b3AnIHx8IHRoaXMuZGlyID09PSAnYm90dG9tJyA/ICd5JyA6ICd4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIGFjdGl2ZTtcblxuICAgIHZhciBEcm9wID0ge1xuXG4gICAgICAgIG1peGluczogW1Bvc2l0aW9uLCBUb2dnbGFibGVdLFxuXG4gICAgICAgIGFyZ3M6ICdwb3MnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtb2RlOiAnbGlzdCcsXG4gICAgICAgICAgICB0b2dnbGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBib3VuZGFyeTogQm9vbGVhbixcbiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWxheVNob3c6IE51bWJlcixcbiAgICAgICAgICAgIGRlbGF5SGlkZTogTnVtYmVyLFxuICAgICAgICAgICAgY2xzRHJvcDogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbW9kZTogWydjbGljaycsICdob3ZlciddLFxuICAgICAgICAgICAgdG9nZ2xlOiAnLSAqJyxcbiAgICAgICAgICAgIGJvdW5kYXJ5OiB3aW5kb3csXG4gICAgICAgICAgICBib3VuZGFyeUFsaWduOiBmYWxzZSxcbiAgICAgICAgICAgIGRlbGF5U2hvdzogMCxcbiAgICAgICAgICAgIGRlbGF5SGlkZTogODAwLFxuICAgICAgICAgICAgY2xzRHJvcDogZmFsc2UsXG4gICAgICAgICAgICBob3ZlcklkbGU6IDIwMCxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogWyd1ay1hbmltYXRpb24tZmFkZSddLFxuICAgICAgICAgICAgY2xzOiAndWstb3BlbidcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBib3VuZGFyeTogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgYm91bmRhcnkgPSByZWYuYm91bmRhcnk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkoYm91bmRhcnksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNEcm9wOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2xzRHJvcCA9IHJlZi5jbHNEcm9wO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsc0Ryb3AgfHwgKFwidWstXCIgKyAodGhpcy4kb3B0aW9ucy5uYW1lKSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNQb3M6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsc0Ryb3A7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMudHJhY2tlciA9IG5ldyBNb3VzZVRyYWNrZXIoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNEcm9wKTtcblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJHByb3BzO1xuICAgICAgICAgICAgdmFyIHRvZ2dsZSA9IHJlZi50b2dnbGU7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSA9IHRvZ2dsZSAmJiB0aGlzLiRjcmVhdGUoJ3RvZ2dsZScsIHF1ZXJ5KHRvZ2dsZSwgdGhpcy4kZWwpLCB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLiRlbCxcbiAgICAgICAgICAgICAgICBtb2RlOiB0aGlzLm1vZGVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEodGhpcy4kZWwpO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcIi5cIiArICh0aGlzLmNsc0Ryb3ApICsgXCItY2xvc2VcIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdhW2hyZWZePVwiI1wiXSc7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBlLnRhcmdldC5oYXNoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaWQgfHwgIXdpdGhpbihpZCwgdGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2Nyb2xsJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3RvZ2dsZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgdG9nZ2xlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KHRvZ2dsZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiBwb2ludGVyRW50ZXIsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5jbHVkZXModGhpcy5tb2RlLCAnaG92ZXInKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBhY3RpdmUgIT09IHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIGFjdGl2ZS50b2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIGluY2x1ZGVzKGFjdGl2ZS50b2dnbGUubW9kZSwgJ2hvdmVyJylcbiAgICAgICAgICAgICAgICAgICAgICAgICYmICF3aXRoaW4oZS50YXJnZXQsIGFjdGl2ZS50b2dnbGUuJGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXBvaW50SW5SZWN0KHt4OiBlLnBhZ2VYLCB5OiBlLnBhZ2VZfSwgb2Zmc2V0KGFjdGl2ZS4kZWwpKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KHRoaXMudG9nZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd0b2dnbGVzaG93JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHRvZ2dsZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2dnbGUgJiYgIWluY2x1ZGVzKHRvZ2dsZS50YXJnZXQsIHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codG9nZ2xlIHx8IHRoaXMudG9nZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IChcInRvZ2dsZWhpZGUgXCIgKyBwb2ludGVyTGVhdmUpLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgdG9nZ2xlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVG91Y2goZSkgfHwgdG9nZ2xlICYmICFpbmNsdWRlcyh0b2dnbGUudGFyZ2V0LCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUgJiYgaW5jbHVkZXModGhpcy50b2dnbGUubW9kZSwgJ2hvdmVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2hvdycsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFja2VyLmluaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9nZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLnRvZ2dsZS4kZWwsIHRoaXMuY2xzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIodGhpcy50b2dnbGUuJGVsLCAnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJFdmVudCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZWhpZGUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4kZWwgIT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gYWN0aXZlID09PSBudWxsICYmIHdpdGhpbih0YXJnZXQsIHRoaXMuJGVsKSAmJiB0aGlzLmlzVG9nZ2xlZCgpID8gdGhpcyA6IGFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKSA/IG51bGwgOiBhY3RpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9nZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnRvZ2dsZS4kZWwsIHRoaXMuY2xzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIodGhpcy50b2dnbGUuJGVsLCAnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUuJGVsLmJsdXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQkKCdhLCBidXR0b24nLCB0aGlzLnRvZ2dsZS4kZWwpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5ibHVyKCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFja2VyLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpICYmICFBbmltYXRpb24uaW5Qcm9ncmVzcyh0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZSddXG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKHRvZ2dsZSwgZGVsYXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoIGRlbGF5ID09PSB2b2lkIDAgKSBkZWxheSA9IHRydWU7XG5cblxuICAgICAgICAgICAgICAgIHZhciBzaG93ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gIXRoaXMkMS5pc1RvZ2dsZWQoKSAmJiB0aGlzJDEudG9nZ2xlRWxlbWVudCh0aGlzJDEuJGVsLCB0cnVlKTsgfTtcbiAgICAgICAgICAgICAgICB2YXIgdHJ5U2hvdyA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlID0gdG9nZ2xlIHx8IHRoaXMkMS50b2dnbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmNsZWFyVGltZXJzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVsYXkgJiYgYWN0aXZlICYmIGFjdGl2ZSAhPT0gdGhpcyQxICYmIGFjdGl2ZS5pc0RlbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvd1RpbWVyID0gc2V0VGltZW91dCh0aGlzJDEuc2hvdywgMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMkMS5pc1BhcmVudE9mKGFjdGl2ZSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZS5oaWRlVGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGl2ZSAmJiAhdGhpcyQxLmlzQ2hpbGRPZihhY3RpdmUpICYmICF0aGlzJDEuaXNQYXJlbnRPZihhY3RpdmUpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGFjdGl2ZSAmJiBhY3RpdmUgIT09IHByZXYgJiYgIXRoaXMkMS5pc0NoaWxkT2YoYWN0aXZlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPSBhY3RpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVsYXkgJiYgdGhpcyQxLmRlbGF5U2hvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNob3dUaW1lciA9IHNldFRpbWVvdXQoc2hvdywgdGhpcyQxLmRlbGF5U2hvdyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSB0aGlzJDE7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmICh0b2dnbGUgJiYgdGhpcy50b2dnbGUgJiYgdG9nZ2xlLiRlbCAhPT0gdGhpcy50b2dnbGUuJGVsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzLiRlbCwgJ2hpZGUnLCB0cnlTaG93KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeVNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbihkZWxheSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICggZGVsYXkgPT09IHZvaWQgMCApIGRlbGF5ID0gdHJ1ZTtcblxuXG4gICAgICAgICAgICAgICAgdmFyIGhpZGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEudG9nZ2xlTm93KHRoaXMkMS4kZWwsIGZhbHNlKTsgfTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuaXNEZWxheWluZyA9IHRoaXMudHJhY2tlci5tb3Zlc1RvKHRoaXMuJGVsKTtcblxuICAgICAgICAgICAgICAgIGlmIChkZWxheSAmJiB0aGlzLmlzRGVsYXlpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuaGlkZSwgdGhpcy5ob3ZlcklkbGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVsYXkgJiYgdGhpcy5kZWxheUhpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlVGltZXIgPSBzZXRUaW1lb3V0KGhpZGUsIHRoaXMuZGVsYXlIaWRlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBoaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xlYXJUaW1lcnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lcik7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dUaW1lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlVGltZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEZWxheWluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXNBY3RpdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3RpdmUgPT09IHRoaXM7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc0NoaWxkT2Y6IGZ1bmN0aW9uKGRyb3ApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZHJvcCAmJiBkcm9wICE9PSB0aGlzICYmIHdpdGhpbih0aGlzLiRlbCwgZHJvcC4kZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXNQYXJlbnRPZjogZnVuY3Rpb24oZHJvcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkcm9wICYmIGRyb3AgIT09IHRoaXMgJiYgd2l0aGluKGRyb3AuJGVsLCB0aGlzLiRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2VzKHRoaXMuJGVsLCAoKHRoaXMuY2xzRHJvcCkgKyBcIi0oc3RhY2t8Ym91bmRhcnkpXCIpKTtcbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHt0b3A6ICcnLCBsZWZ0OiAnJywgZGlzcGxheTogJ2Jsb2NrJ30pO1xuICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCAoKHRoaXMuY2xzRHJvcCkgKyBcIi1ib3VuZGFyeVwiKSwgdGhpcy5ib3VuZGFyeUFsaWduKTtcblxuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeSA9IG9mZnNldCh0aGlzLmJvdW5kYXJ5KTtcbiAgICAgICAgICAgICAgICB2YXIgYWxpZ25UbyA9IHRoaXMuYm91bmRhcnlBbGlnbiA/IGJvdW5kYXJ5IDogb2Zmc2V0KHRoaXMudG9nZ2xlLiRlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hbGlnbiA9PT0gJ2p1c3RpZnknKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcm9wID0gdGhpcy5nZXRBeGlzKCkgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCBwcm9wLCBhbGlnblRvW3Byb3BdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuJGVsLm9mZnNldFdpZHRoID4gTWF0aC5tYXgoYm91bmRhcnkucmlnaHQgLSBhbGlnblRvLmxlZnQsIGFsaWduVG8ucmlnaHQgLSBib3VuZGFyeS5sZWZ0KSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgKCh0aGlzLmNsc0Ryb3ApICsgXCItc3RhY2tcIikpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25BdCh0aGlzLiRlbCwgdGhpcy5ib3VuZGFyeUFsaWduID8gdGhpcy5ib3VuZGFyeSA6IHRoaXMudG9nZ2xlLiRlbCwgdGhpcy5ib3VuZGFyeSk7XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJycpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciByZWdpc3RlcmVkO1xuXG4gICAgZnVuY3Rpb24gcmVnaXN0ZXJFdmVudCgpIHtcblxuICAgICAgICBpZiAocmVnaXN0ZXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7XG4gICAgICAgIG9uKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcbiAgICAgICAgICAgIHZhciBkZWZhdWx0UHJldmVudGVkID0gcmVmLmRlZmF1bHRQcmV2ZW50ZWQ7XG5cbiAgICAgICAgICAgIHZhciBwcmV2O1xuXG4gICAgICAgICAgICBpZiAoZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2hpbGUgKGFjdGl2ZSAmJiBhY3RpdmUgIT09IHByZXYgJiYgIXdpdGhpbih0YXJnZXQsIGFjdGl2ZS4kZWwpICYmICEoYWN0aXZlLnRvZ2dsZSAmJiB3aXRoaW4odGFyZ2V0LCBhY3RpdmUudG9nZ2xlLiRlbCkpKSB7XG4gICAgICAgICAgICAgICAgcHJldiA9IGFjdGl2ZTtcbiAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBEcm9wZG93biA9IHtcblxuICAgICAgICBleHRlbmRzOiBEcm9wXG5cbiAgICB9O1xuXG4gICAgdmFyIEZvcm1DdXN0b20gPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIGFyZ3M6ICd0YXJnZXQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB0YXJnZXQ6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0YXJnZXQ6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkKHNlbElucHV0LCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQgJiYgKHRhcmdldCA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLmlucHV0LnBhcmVudE5vZGUgPT09ICRlbFxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLmlucHV0Lm5leHRFbGVtZW50U2libGluZ1xuICAgICAgICAgICAgICAgICAgICB8fCBxdWVyeSh0YXJnZXQsICRlbCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcbiAgICAgICAgICAgIHZhciBpbnB1dCA9IHJlZi5pbnB1dDtcblxuICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBvcHRpb247XG4gICAgICAgICAgICB2YXIgcHJvcCA9IGlzSW5wdXQodGFyZ2V0KSA/ICd2YWx1ZScgOiAndGV4dENvbnRlbnQnO1xuICAgICAgICAgICAgdmFyIHByZXYgPSB0YXJnZXRbcHJvcF07XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBpbnB1dC5maWxlcyAmJiBpbnB1dC5maWxlc1swXVxuICAgICAgICAgICAgICAgID8gaW5wdXQuZmlsZXNbMF0ubmFtZVxuICAgICAgICAgICAgICAgIDogbWF0Y2hlcyhpbnB1dCwgJ3NlbGVjdCcpICYmIChvcHRpb24gPSAkJCgnb3B0aW9uJywgaW5wdXQpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLnNlbGVjdGVkOyB9KVswXSlcbiAgICAgICAgICAgICAgICAgICAgPyBvcHRpb24udGV4dENvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgOiBpbnB1dC52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHByZXYgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2ZvY3VzaW4gZm9jdXNvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBzZWxJbnB1dCxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudCA9IHJlZi5jdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50ID09PSB0aGlzLmlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcInVrLVwiICsgKGluY2x1ZGVzKHR5cGUsICdmb2N1cycpID8gJ2ZvY3VzJyA6ICdob3ZlcicpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcyhbJ2ZvY3VzaW4nLCAnbW91c2VlbnRlciddLCB0eXBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NoYW5nZScsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICAvLyBEZXByZWNhdGVkXG4gICAgdmFyIEdpZiA9IHtcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGludmlldyA9IGlzSW5WaWV3KHRoaXMuJGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICghaW52aWV3IHx8IGRhdGEkJDEuaXNJblZpZXcgPT09IGludmlldykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZGF0YSQkMS5pc0luVmlldyA9IGludmlldztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbC5zcmMgPSB0aGlzLiRlbC5zcmM7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ2xvYWQnLCAncmVzaXplJ11cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBNYXJnaW4gPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIG1hcmdpbjogU3RyaW5nLFxuICAgICAgICAgICAgZmlyc3RDb2x1bW46IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBtYXJnaW46ICd1ay1tYXJnaW4tc21hbGwtdG9wJyxcbiAgICAgICAgICAgIGZpcnN0Q29sdW1uOiAndWstZmlyc3QtY29sdW1uJ1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbXMgPSB0aGlzLiRlbC5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB2YXIgcm93cyA9IFtbXV07XG5cbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW1zLmxlbmd0aCB8fCAhaXNWaXNpYmxlKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YSQkMS5yb3dzID0gcm93cztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkYXRhJCQxLnJvd3MgPSBnZXRSb3dzKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICBkYXRhJCQxLnN0YWNrcyA9ICFkYXRhJCQxLnJvd3Muc29tZShmdW5jdGlvbiAocm93KSB7IHJldHVybiByb3cubGVuZ3RoID4gMTsgfSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgcm93cyA9IHJlZi5yb3dzO1xuXG5cbiAgICAgICAgICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkgeyByZXR1cm4gcm93LmZvckVhY2goZnVuY3Rpb24gKGVsLCBqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLm1hcmdpbiwgaSAhPT0gMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmZpcnN0Q29sdW1uLCBqID09PSAwKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRSb3dzKGl0ZW1zKSB7XG4gICAgICAgIHZhciByb3dzID0gW1tdXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIHZhciBlbCA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgdmFyIGRpbSA9IGdldE9mZnNldChlbCk7XG5cbiAgICAgICAgICAgIGlmICghZGltLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gcm93cy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3Nbal07XG5cbiAgICAgICAgICAgICAgICBpZiAoIXJvd1swXSkge1xuICAgICAgICAgICAgICAgICAgICByb3cucHVzaChlbCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBsZWZ0RGltID0gZ2V0T2Zmc2V0KHJvd1swXSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGltLnRvcCA+PSBsZWZ0RGltLmJvdHRvbSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKFtlbF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZGltLmJvdHRvbSA+IGxlZnREaW0udG9wKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRpbS5sZWZ0IDwgbGVmdERpbS5sZWZ0ICYmICFpc1J0bCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93LnVuc2hpZnQoZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByb3cucHVzaChlbCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChqID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MudW5zaGlmdChbZWxdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByb3dzO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0KGVsZW1lbnQpIHtcblxuICAgICAgICB2YXIgb2Zmc2V0VG9wID0gZWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIHZhciBvZmZzZXRMZWZ0ID0gZWxlbWVudC5vZmZzZXRMZWZ0O1xuICAgICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcDogb2Zmc2V0VG9wLFxuICAgICAgICAgICAgbGVmdDogb2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIGhlaWdodDogb2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgYm90dG9tOiBvZmZzZXRUb3AgKyBvZmZzZXRIZWlnaHRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgR3JpZCA9IHtcblxuICAgICAgICBleHRlbmRzOiBNYXJnaW4sXG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIGF0dHJzOiB0cnVlLFxuXG4gICAgICAgIG5hbWU6ICdncmlkJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbWFzb25yeTogQm9vbGVhbixcbiAgICAgICAgICAgIHBhcmFsbGF4OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBtYXJnaW46ICd1ay1ncmlkLW1hcmdpbicsXG4gICAgICAgICAgICBjbHNTdGFjazogJ3VrLWdyaWQtc3RhY2snLFxuICAgICAgICAgICAgbWFzb25yeTogZmFsc2UsXG4gICAgICAgICAgICBwYXJhbGxheDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHBhcmFsbGF4OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgcGFyYWxsYXggPSByZWYucGFyYWxsYXg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMocGFyYWxsYXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMubWFzb25yeSAmJiBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWZsZXgtdG9wIHVrLWZsZXgtd3JhcC10b3AnKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXNvbnJ5IHx8IHRoaXMucGFyYWxsYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3MgPSByb3dzLm1hcChmdW5jdGlvbiAoZWxlbWVudHMpIHsgcmV0dXJuIHNvcnRCeShlbGVtZW50cywgJ29mZnNldExlZnQnKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNsYXRlcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXNvbnJ5KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVzID0gcm93cy5yZWR1Y2UoZnVuY3Rpb24gKHRyYW5zbGF0ZXMsIHJvdywgaSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlc1tpXSA9IHJvdy5tYXAoZnVuY3Rpb24gKF8sIGopIHsgcmV0dXJuIGkgPT09IDAgPyAwIDogdG9GbG9hdCh0cmFuc2xhdGVzW2kgLSAxXVtqXSkgKyAoaGVpZ2h0JCQxIC0gdG9GbG9hdChyb3dzW2kgLSAxXVtqXSAmJiByb3dzW2kgLSAxXVtqXS5vZmZzZXRIZWlnaHQpKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0JCQxID0gcm93LnJlZHVjZShmdW5jdGlvbiAoaGVpZ2h0JCQxLCBlbCkgeyByZXR1cm4gTWF0aC5tYXgoaGVpZ2h0JCQxLCBlbC5vZmZzZXRIZWlnaHQpOyB9LCAwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGVzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsSGVpZ2h0ID0gbWF4Q29sdW1uSGVpZ2h0KHJvd3MpICsgZ2V0TWFyZ2luVG9wKHRoaXMuJGVsLCB0aGlzLm1hcmdpbikgKiAocm93cy5sZW5ndGggLSAxKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtyb3dzOiByb3dzLCB0cmFuc2xhdGVzOiB0cmFuc2xhdGVzLCBoZWlnaHQ6IGVsSGVpZ2h0fTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGFja3MgPSByZWYuc3RhY2tzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc1N0YWNrLCBzdGFja3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ3BhZGRpbmdCb3R0b20nLCB0aGlzLnBhcmFsbGF4ICYmIHJvd3Muc29tZShmdW5jdGlvbiAocm93KSB7IHJldHVybiByb3cubGVuZ3RoID4gMTsgfSkgPyB0aGlzLnBhcmFsbGF4IDogJycpO1xuXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCQkMSAmJiBjc3ModGhpcy4kZWwsICdtaW5IZWlnaHQnLCBoZWlnaHQkJDEpO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcm93cyA9IHJlZi5yb3dzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsZWQ6IHRoaXMucGFyYWxsYXggJiYgcm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2Nyb2xsZWRPdmVyKHRoaXMuJGVsLCBoZWlnaHQkJDEgPyBoZWlnaHQkJDEgLSBoZWlnaHQodGhpcy4kZWwpIDogMCkgKiB0aGlzLnBhcmFsbGF4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxlZCA9IHJlZi5zY3JvbGxlZDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZXMgPSByZWYudHJhbnNsYXRlcztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxlZCA9PT0gZmFsc2UgJiYgIXRyYW5zbGF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7IHJldHVybiByb3cuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGopIHsgcmV0dXJuIGNzcyhlbCwgJ3RyYW5zZm9ybScsICFzY3JvbGxlZCAmJiAhdHJhbnNsYXRlcyA/ICcnIDogKFwidHJhbnNsYXRlWShcIiArICgodHJhbnNsYXRlcyAmJiAtdHJhbnNsYXRlc1tpXVtqXSkgKyAoc2Nyb2xsZWQgPyBqICUgMiA/IHNjcm9sbGVkIDogc2Nyb2xsZWQgLyA4IDogMCkpICsgXCJweClcIikpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICApOyB9XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0TWFyZ2luVG9wKHJvb3QsIGNscykge1xuXG4gICAgICAgIHZhciBub2RlcyA9IHRvTm9kZXMocm9vdC5jaGlsZHJlbik7XG4gICAgICAgIHZhciByZWYgPSBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBoYXNDbGFzcyhlbCwgY2xzKTsgfSk7XG4gICAgICAgIHZhciBub2RlID0gcmVmWzBdO1xuXG4gICAgICAgIHJldHVybiB0b0Zsb2F0KG5vZGVcbiAgICAgICAgICAgID8gY3NzKG5vZGUsICdtYXJnaW5Ub3AnKVxuICAgICAgICAgICAgOiBjc3Mobm9kZXNbMF0sICdwYWRkaW5nTGVmdCcpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXhDb2x1bW5IZWlnaHQocm93cykge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXguYXBwbHkoTWF0aCwgcm93cy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgcm93KSB7XG4gICAgICAgICAgICByb3cuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIHN1bVtpXSA9IChzdW1baV0gfHwgMCkgKyBlbC5vZmZzZXRIZWlnaHQ7IH0pO1xuICAgICAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgICAgfSwgW10pKTtcbiAgICB9XG5cbiAgICB2YXIgSGVpZ2h0TWF0Y2ggPSB7XG5cbiAgICAgICAgYXJnczogJ3RhcmdldCcsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgcm93OiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiAnPiAqJyxcbiAgICAgICAgICAgIHJvdzogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGVsZW1lbnRzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRhcmdldCwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuZWxlbWVudHMsIHtcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAnJ1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcm93czogIXRoaXMucm93XG4gICAgICAgICAgICAgICAgICAgICAgICA/IFt0aGlzLm1hdGNoKHRoaXMuZWxlbWVudHMpXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRSb3dzKHRoaXMuZWxlbWVudHMpLm1hcChmdW5jdGlvbiAoZWxlbWVudHMpIHsgcmV0dXJuIHRoaXMkMS5tYXRjaChlbGVtZW50cyk7IH0pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgcm93cyA9IHJlZi5yb3dzO1xuXG5cbiAgICAgICAgICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRzID0gcmVmLmVsZW1lbnRzO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjc3MoZWxlbWVudHMsIHtcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiBoZWlnaHQkJDEsXG4gICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIG1hdGNoOiBmdW5jdGlvbihlbGVtZW50cykge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBoZWlnaHRzID0gW107XG4gICAgICAgICAgICAgICAgdmFyIG1heCA9IDA7XG5cbiAgICAgICAgICAgICAgICBlbGVtZW50c1xuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXQoZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXggPSBNYXRoLm1heChtYXgsIGhlaWdodCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHRzLnB1c2goaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBlbGVtZW50cyA9IGVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIGhlaWdodHNbaV0gPCBtYXg7IH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtoZWlnaHQ6IG1heCwgZWxlbWVudHM6IGVsZW1lbnRzfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBIZWlnaHRWaWV3cG9ydCA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZXhwYW5kOiBCb29sZWFuLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBCb29sZWFuLFxuICAgICAgICAgICAgb2Zmc2V0Qm90dG9tOiBCb29sZWFuLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBleHBhbmQ6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBmYWxzZSxcbiAgICAgICAgICAgIG9mZnNldEJvdHRvbTogZmFsc2UsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IDBcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnYm94U2l6aW5nJywgJ2JvcmRlci1ib3gnKTtcblxuICAgICAgICAgICAgICAgIHZhciB2aWV3cG9ydCA9IGhlaWdodCh3aW5kb3cpO1xuICAgICAgICAgICAgICAgIHZhciBtaW5IZWlnaHQsIG9mZnNldFRvcCA9IDA7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5leHBhbmQpIHtcblxuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtoZWlnaHQ6ICcnLCBtaW5IZWlnaHQ6ICcnfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpZmYgPSB2aWV3cG9ydCAtIG9mZnNldEhlaWdodChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkaWZmID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0KHRoaXMuJGVsKSArIGRpZmY7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3AgPCB2aWV3cG9ydCAvIDIgJiYgdGhpcy5vZmZzZXRUb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSB0b3A7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vZmZzZXRCb3R0b20gPT09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IG9mZnNldEhlaWdodCh0aGlzLiRlbC5uZXh0RWxlbWVudFNpYmxpbmcpO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOdW1lcmljKHRoaXMub2Zmc2V0Qm90dG9tKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gKHZpZXdwb3J0IC8gMTAwKSAqIHRoaXMub2Zmc2V0Qm90dG9tO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vZmZzZXRCb3R0b20gJiYgZW5kc1dpdGgodGhpcy5vZmZzZXRCb3R0b20sICdweCcpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSB0b0Zsb2F0KHRoaXMub2Zmc2V0Qm90dG9tKTtcblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKHRoaXMub2Zmc2V0Qm90dG9tKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gb2Zmc2V0SGVpZ2h0KHF1ZXJ5KHRoaXMub2Zmc2V0Qm90dG9tLCB0aGlzLiRlbCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBvbiBtb2JpbGUgZGV2aWNlcyAoaU9TIGFuZCBBbmRyb2lkKSB3aW5kb3cuaW5uZXJIZWlnaHQgIT09IDEwMHZoXG4gICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodCA9IG9mZnNldFRvcCA/IChcImNhbGMoMTAwdmggLSBcIiArIG9mZnNldFRvcCArIFwicHgpXCIpIDogJzEwMHZoJztcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghbWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtoZWlnaHQ6ICcnLCBtaW5IZWlnaHQ6IG1pbkhlaWdodH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gdGhpcy4kZWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbkhlaWdodCAmJiB0aGlzLm1pbkhlaWdodCA+IGVsSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIHRoaXMubWluSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBJRSAxMSBmaXggKG1pbi1oZWlnaHQgb24gYSBmbGV4IGNvbnRhaW5lciB3b24ndCBhcHBseSB0byBpdHMgZmxleCBpdGVtcylcbiAgICAgICAgICAgICAgICBpZiAodmlld3BvcnQgLSBvZmZzZXRUb3AgPj0gZWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnaGVpZ2h0JywgbWluSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG9mZnNldEhlaWdodChlbCkge1xuICAgICAgICByZXR1cm4gZWwgJiYgZWwub2Zmc2V0SGVpZ2h0IHx8IDA7XG4gICAgfVxuXG4gICAgdmFyIHN2Z3MgPSB7fTtcblxuICAgIHZhciBTVkcgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGlkOiBTdHJpbmcsXG4gICAgICAgICAgICBpY29uOiBTdHJpbmcsXG4gICAgICAgICAgICBzcmM6IFN0cmluZyxcbiAgICAgICAgICAgIHN0eWxlOiBTdHJpbmcsXG4gICAgICAgICAgICB3aWR0aDogTnVtYmVyLFxuICAgICAgICAgICAgaGVpZ2h0OiBOdW1iZXIsXG4gICAgICAgICAgICByYXRpbzogTnVtYmVyLFxuICAgICAgICAgICAgJ2NsYXNzJzogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcmF0aW86IDEsXG4gICAgICAgICAgICBpZDogZmFsc2UsXG4gICAgICAgICAgICBleGNsdWRlOiBbJ3JhdGlvJywgJ3NyYycsICdpY29uJ10sXG4gICAgICAgICAgICAnY2xhc3MnOiAnJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgIHZhciBhc3NpZ24kJDE7XG5cblxuICAgICAgICAgICAgdGhpcy5jbGFzcyArPSAnIHVrLXN2Zyc7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pY29uICYmIGluY2x1ZGVzKHRoaXMuc3JjLCAnIycpKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcGFydHMgPSB0aGlzLnNyYy5zcGxpdCgnIycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgKGFzc2lnbiQkMSA9IHBhcnRzLCB0aGlzLnNyYyA9IGFzc2lnbiQkMVswXSwgdGhpcy5pY29uID0gYXNzaWduJCQxWzFdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3ZnID0gdGhpcy5nZXRTdmcoKS50aGVuKGZ1bmN0aW9uIChzdmcpIHtcblxuICAgICAgICAgICAgICAgIHZhciBlbDtcblxuICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZyhzdmcpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5pY29uICYmIGluY2x1ZGVzKHN2ZywgJzxzeW1ib2wnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnID0gcGFyc2VTeW1ib2xzKHN2ZywgdGhpcyQxLmljb24pIHx8IHN2ZztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGVsID0gJChzdmcuc3Vic3RyKHN2Zy5pbmRleE9mKCc8c3ZnJykpKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsID0gc3ZnLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVqZWN0KCdTVkcgbm90IGZvdW5kLicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBkaW1lbnNpb25zID0gYXR0cihlbCwgJ3ZpZXdCb3gnKTtcblxuICAgICAgICAgICAgICAgIGlmIChkaW1lbnNpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS53aWR0aCA9IHRoaXMkMS4kcHJvcHMud2lkdGggfHwgZGltZW5zaW9uc1syXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmhlaWdodCA9IHRoaXMkMS4kcHJvcHMuaGVpZ2h0IHx8IGRpbWVuc2lvbnNbM107XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcyQxLndpZHRoICo9IHRoaXMkMS5yYXRpbztcbiAgICAgICAgICAgICAgICB0aGlzJDEuaGVpZ2h0ICo9IHRoaXMkMS5yYXRpbztcblxuICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gdGhpcyQxLiRvcHRpb25zLnByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDFbcHJvcF0gJiYgIWluY2x1ZGVzKHRoaXMkMS5leGNsdWRlLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cihlbCwgcHJvcCwgdGhpcyQxW3Byb3BdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcyQxLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWwsICdpZCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzJDEud2lkdGggJiYgIXRoaXMkMS5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQXR0cihlbCwgJ2hlaWdodCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuaGVpZ2h0ICYmICF0aGlzJDEud2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQXR0cihlbCwgJ3dpZHRoJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHJvb3QgPSB0aGlzJDEuJGVsO1xuICAgICAgICAgICAgICAgIGlmIChpc1ZvaWRFbGVtZW50KHJvb3QpIHx8IHJvb3QudGFnTmFtZSA9PT0gJ0NBTlZBUycpIHtcblxuICAgICAgICAgICAgICAgICAgICBhdHRyKHJvb3QsIHtoaWRkZW46IHRydWUsIGlkOiBudWxsfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHQgPSByb290Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgZWwuaXNFcXVhbE5vZGUobmV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsID0gbmV4dDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyKHJvb3QsIGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgbGFzdCA9IHJvb3QubGFzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3QgJiYgZWwuaXNFcXVhbE5vZGUobGFzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsID0gbGFzdDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChyb290LCBlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMkMS5zdmdFbCA9IGVsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsO1xuXG4gICAgICAgICAgICB9LCBub29wKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBpZiAoaXNWb2lkRWxlbWVudCh0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCB7aGlkZGVuOiBudWxsLCBpZDogdGhpcy5pZCB8fCBudWxsfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnN2Zykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3ZnLnRoZW4oZnVuY3Rpb24gKHN2ZykgeyByZXR1cm4gKCF0aGlzJDEuX2Nvbm5lY3RlZCB8fCBzdmcgIT09IHRoaXMkMS5zdmdFbCkgJiYgcmVtb3ZlKHN2Zyk7IH0sIG5vb3ApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnN2ZyA9IHRoaXMuc3ZnRWwgPSBudWxsO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBnZXRTdmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3JjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN2Z3NbdGhpcy5zcmNdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdmdzW3RoaXMuc3JjXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdmdzW3RoaXMuc3JjXSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHRoaXMkMS5zcmMsICdkYXRhOicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRlY29kZVVSSUNvbXBvbmVudCh0aGlzJDEuc3JjLnNwbGl0KCcsJylbMV0pKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYWpheCh0aGlzJDEuc3JjKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh4aHIpIHsgcmV0dXJuIHJlc29sdmUoeGhyLnJlc3BvbnNlKTsgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiByZWplY3QoJ1NWRyBub3QgZm91bmQuJyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3Znc1t0aGlzLnNyY107XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHN5bWJvbFJlID0gLzxzeW1ib2woLio/aWQ9KFsnXCJdKSguKj8pXFwyW15dKj88XFwvKXN5bWJvbD4vZztcbiAgICB2YXIgc3ltYm9scyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gcGFyc2VTeW1ib2xzKHN2ZywgaWNvbikge1xuXG4gICAgICAgIGlmICghc3ltYm9sc1tzdmddKSB7XG5cbiAgICAgICAgICAgIHN5bWJvbHNbc3ZnXSA9IHt9O1xuXG4gICAgICAgICAgICB2YXIgbWF0Y2g7XG4gICAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gc3ltYm9sUmUuZXhlYyhzdmcpKSkge1xuICAgICAgICAgICAgICAgIHN5bWJvbHNbc3ZnXVttYXRjaFszXV0gPSBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIlwiICsgKG1hdGNoWzFdKSArIFwic3ZnPlwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzeW1ib2xSZS5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3ltYm9sc1tzdmddW2ljb25dO1xuICAgIH1cblxuICAgIHZhciBjbG9zZUljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjE0XFxcIiBoZWlnaHQ9XFxcIjE0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMVxcXCIgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMTNcXFwiIHkyPVxcXCIxM1xcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjFcXFwiIHgxPVxcXCIxM1xcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxXFxcIiB5Mj1cXFwiMTNcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBjbG9zZUxhcmdlID0gXCI8c3ZnIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjE5XFxcIiB5Mj1cXFwiMTlcXFwiLz48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS40XFxcIiB4MT1cXFwiMTlcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMVxcXCIgeTI9XFxcIjE5XFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgbWFya2VyID0gXCI8c3ZnIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxyZWN0IHg9XFxcIjlcXFwiIHk9XFxcIjRcXFwiIHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjExXFxcIi8+PHJlY3QgeD1cXFwiNFxcXCIgeT1cXFwiOVxcXCIgd2lkdGg9XFxcIjExXFxcIiBoZWlnaHQ9XFxcIjFcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBuYXZiYXJUb2dnbGVJY29uID0gXCI8c3ZnIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxyZWN0IHk9XFxcIjlcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyXFxcIi8+PHJlY3QgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjJcXFwiLz48cmVjdCB5PVxcXCIxNVxcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjJcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBvdmVybGF5SWNvbiA9IFwiPHN2ZyB3aWR0aD1cXFwiNDBcXFwiIGhlaWdodD1cXFwiNDBcXFwiIHZpZXdCb3g9XFxcIjAgMCA0MCA0MFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cmVjdCB4PVxcXCIxOVxcXCIgeT1cXFwiMFxcXCIgd2lkdGg9XFxcIjFcXFwiIGhlaWdodD1cXFwiNDBcXFwiLz48cmVjdCB4PVxcXCIwXFxcIiB5PVxcXCIxOVxcXCIgd2lkdGg9XFxcIjQwXFxcIiBoZWlnaHQ9XFxcIjFcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBwYWdpbmF0aW9uTmV4dCA9IFwiPHN2ZyB3aWR0aD1cXFwiN1xcXCIgaGVpZ2h0PVxcXCIxMlxcXCIgdmlld0JveD1cXFwiMCAwIDcgMTJcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjJcXFwiIHBvaW50cz1cXFwiMSAxIDYgNiAxIDExXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgcGFnaW5hdGlvblByZXZpb3VzID0gXCI8c3ZnIHdpZHRoPVxcXCI3XFxcIiBoZWlnaHQ9XFxcIjEyXFxcIiB2aWV3Qm94PVxcXCIwIDAgNyAxMlxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMlxcXCIgcG9pbnRzPVxcXCI2IDEgMSA2IDYgMTFcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzZWFyY2hJY29uID0gXCI8c3ZnIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxjaXJjbGUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMVxcXCIgY3g9XFxcIjlcXFwiIGN5PVxcXCI5XFxcIiByPVxcXCI3XFxcIi8+PHBhdGggZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMVxcXCIgZD1cXFwiTTE0LDE0IEwxOCwxOCBMMTQsMTQgWlxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNlYXJjaExhcmdlID0gXCI8c3ZnIHdpZHRoPVxcXCI0MFxcXCIgaGVpZ2h0PVxcXCI0MFxcXCIgdmlld0JveD1cXFwiMCAwIDQwIDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxjaXJjbGUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuOFxcXCIgY3g9XFxcIjE3LjVcXFwiIGN5PVxcXCIxNy41XFxcIiByPVxcXCIxNi41XFxcIi8+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuOFxcXCIgeDE9XFxcIjM4XFxcIiB5MT1cXFwiMzlcXFwiIHgyPVxcXCIyOVxcXCIgeTI9XFxcIjMwXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2VhcmNoTmF2YmFyID0gXCI8c3ZnIHdpZHRoPVxcXCIyNFxcXCIgaGVpZ2h0PVxcXCIyNFxcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxjaXJjbGUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMVxcXCIgY3g9XFxcIjEwLjVcXFwiIGN5PVxcXCIxMC41XFxcIiByPVxcXCI5LjVcXFwiLz48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiB4MT1cXFwiMjNcXFwiIHkxPVxcXCIyM1xcXCIgeDI9XFxcIjE3XFxcIiB5Mj1cXFwiMTdcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzbGlkZW5hdk5leHQgPSBcIjxzdmcgd2lkdGg9XFxcIjE0cHhcXFwiIGhlaWdodD1cXFwiMjRweFxcXCIgdmlld0JveD1cXFwiMCAwIDE0IDI0XFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS40XFxcIiBwb2ludHM9XFxcIjEuMjI1LDIzIDEyLjc3NSwxMiAxLjIyNSwxIFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNsaWRlbmF2TmV4dExhcmdlID0gXCI8c3ZnIHdpZHRoPVxcXCIyNXB4XFxcIiBoZWlnaHQ9XFxcIjQwcHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNSA0MFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIHBvaW50cz1cXFwiNC4wMDIsMzguNTQ3IDIyLjUyNywyMC4wMjQgNCwxLjUgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZQcmV2aW91cyA9IFwiPHN2ZyB3aWR0aD1cXFwiMTRweFxcXCIgaGVpZ2h0PVxcXCIyNHB4XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMjRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHBvaW50cz1cXFwiMTIuNzc1LDEgMS4yMjUsMTIgMTIuNzc1LDIzIFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNsaWRlbmF2UHJldmlvdXNMYXJnZSA9IFwiPHN2ZyB3aWR0aD1cXFwiMjVweFxcXCIgaGVpZ2h0PVxcXCI0MHB4XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjUgNDBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIyXFxcIiBwb2ludHM9XFxcIjIwLjUyNywxLjUgMiwyMC4wMjQgMjAuNTI1LDM4LjU0NyBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzcGlubmVyID0gXCI8c3ZnIHdpZHRoPVxcXCIzMFxcXCIgaGVpZ2h0PVxcXCIzMFxcXCIgdmlld0JveD1cXFwiMCAwIDMwIDMwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxjaXJjbGUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBjeD1cXFwiMTVcXFwiIGN5PVxcXCIxNVxcXCIgcj1cXFwiMTRcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciB0b3RvcCA9IFwiPHN2ZyB3aWR0aD1cXFwiMThcXFwiIGhlaWdodD1cXFwiMTBcXFwiIHZpZXdCb3g9XFxcIjAgMCAxOCAxMFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMlxcXCIgcG9pbnRzPVxcXCIxIDkgOSAxIDE3IDkgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgcGFyc2VkID0ge307XG4gICAgdmFyIGljb25zID0ge1xuICAgICAgICBzcGlubmVyOiBzcGlubmVyLFxuICAgICAgICB0b3RvcDogdG90b3AsXG4gICAgICAgIG1hcmtlcjogbWFya2VyLFxuICAgICAgICAnY2xvc2UtaWNvbic6IGNsb3NlSWNvbixcbiAgICAgICAgJ2Nsb3NlLWxhcmdlJzogY2xvc2VMYXJnZSxcbiAgICAgICAgJ25hdmJhci10b2dnbGUtaWNvbic6IG5hdmJhclRvZ2dsZUljb24sXG4gICAgICAgICdvdmVybGF5LWljb24nOiBvdmVybGF5SWNvbixcbiAgICAgICAgJ3BhZ2luYXRpb24tbmV4dCc6IHBhZ2luYXRpb25OZXh0LFxuICAgICAgICAncGFnaW5hdGlvbi1wcmV2aW91cyc6IHBhZ2luYXRpb25QcmV2aW91cyxcbiAgICAgICAgJ3NlYXJjaC1pY29uJzogc2VhcmNoSWNvbixcbiAgICAgICAgJ3NlYXJjaC1sYXJnZSc6IHNlYXJjaExhcmdlLFxuICAgICAgICAnc2VhcmNoLW5hdmJhcic6IHNlYXJjaE5hdmJhcixcbiAgICAgICAgJ3NsaWRlbmF2LW5leHQnOiBzbGlkZW5hdk5leHQsXG4gICAgICAgICdzbGlkZW5hdi1uZXh0LWxhcmdlJzogc2xpZGVuYXZOZXh0TGFyZ2UsXG4gICAgICAgICdzbGlkZW5hdi1wcmV2aW91cyc6IHNsaWRlbmF2UHJldmlvdXMsXG4gICAgICAgICdzbGlkZW5hdi1wcmV2aW91cy1sYXJnZSc6IHNsaWRlbmF2UHJldmlvdXNMYXJnZVxuICAgIH07XG5cbiAgICB2YXIgSWNvbiA9IHtcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsLFxuXG4gICAgICAgIGF0dHJzOiBbJ2ljb24nLCAncmF0aW8nXSxcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgU1ZHXSxcblxuICAgICAgICBhcmdzOiAnaWNvbicsXG5cbiAgICAgICAgcHJvcHM6IFsnaWNvbiddLFxuXG4gICAgICAgIGRhdGE6IHtleGNsdWRlOiBbJ2lkJywgJ3N0eWxlJywgJ2NsYXNzJywgJ3NyYycsICdpY29uJywgJ3JhdGlvJ119LFxuXG4gICAgICAgIGlzSWNvbjogdHJ1ZSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICd1ay1pY29uJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBnZXRTdmc6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGljb24gPSBnZXRJY29uKGFwcGx5UnRsKHRoaXMuaWNvbikpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpY29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVqZWN0KCdJY29uIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoaWNvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBJY29uQ29tcG9uZW50ID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IEljb24sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKHZtKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgaWNvbjogaHlwaGVuYXRlKHZtLmNvbnN0cnVjdG9yLm9wdGlvbnMubmFtZSlcbiAgICAgICAgfSk7IH1cblxuICAgIH07XG5cbiAgICB2YXIgU2xpZGVuYXYgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbkNvbXBvbmVudCxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICd1ay1zbGlkZW5hdicpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGljb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGljb24gPSByZWYuaWNvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBoYXNDbGFzcygkZWwsICd1ay1zbGlkZW5hdi1sYXJnZScpXG4gICAgICAgICAgICAgICAgICAgID8gKGljb24gKyBcIi1sYXJnZVwiKVxuICAgICAgICAgICAgICAgICAgICA6IGljb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTZWFyY2ggPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbkNvbXBvbmVudCxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpY29uOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBpY29uID0gcmVmLmljb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3MoJGVsLCAndWstc2VhcmNoLWljb24nKSAmJiBwYXJlbnRzKCRlbCwgJy51ay1zZWFyY2gtbGFyZ2UnKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyAnc2VhcmNoLWxhcmdlJ1xuICAgICAgICAgICAgICAgICAgICA6IHBhcmVudHMoJGVsLCAnLnVrLXNlYXJjaC1uYXZiYXInKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3NlYXJjaC1uYXZiYXInXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGljb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBDbG9zZSA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGljb246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXCJjbG9zZS1cIiArIChoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLWNsb3NlLWxhcmdlJykgPyAnbGFyZ2UnIDogJ2ljb24nKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTcGlubmVyID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICB0aGlzLnN2Zy50aGVuKGZ1bmN0aW9uIChzdmcpIHsgcmV0dXJuIHRoaXMkMS5yYXRpbyAhPT0gMSAmJiBjc3MoJCgnY2lyY2xlJywgc3ZnKSwgJ3N0cm9rZVdpZHRoJywgMSAvIHRoaXMkMS5yYXRpbyk7IH0sIG5vb3ApO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaW5zdGFsbChVSWtpdCkge1xuICAgICAgICBVSWtpdC5pY29uLmFkZCA9IGZ1bmN0aW9uIChuYW1lLCBzdmcpIHtcbiAgICAgICAgICAgIHZhciBvYmo7XG5cblxuICAgICAgICAgICAgdmFyIGFkZGVkID0gaXNTdHJpbmcobmFtZSkgPyAoKCBvYmogPSB7fSwgb2JqW25hbWVdID0gc3ZnLCBvYmogKSkgOiBuYW1lO1xuICAgICAgICAgICAgZWFjaChhZGRlZCwgZnVuY3Rpb24gKHN2ZywgbmFtZSkge1xuICAgICAgICAgICAgICAgIGljb25zW25hbWVdID0gc3ZnO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWRbbmFtZV07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKFVJa2l0Ll9pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICAgIGFwcGx5KGRvY3VtZW50LmJvZHksIGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWFjaChVSWtpdC5nZXRDb21wb25lbnRzKGVsKSwgZnVuY3Rpb24gKGNtcCkgeyByZXR1cm4gY21wLiRvcHRpb25zLmlzSWNvbiAmJiBjbXAuaWNvbiBpbiBhZGRlZCAmJiBjbXAuJHJlc2V0KCk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTsgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SWNvbihpY29uKSB7XG5cbiAgICAgICAgaWYgKCFpY29uc1tpY29uXSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBhcnNlZFtpY29uXSkge1xuICAgICAgICAgICAgcGFyc2VkW2ljb25dID0gJChpY29uc1tpY29uXS50cmltKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlZFtpY29uXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseVJ0bChpY29uKSB7XG4gICAgICAgIHJldHVybiBpc1J0bCA/IHN3YXAoc3dhcChpY29uLCAnbGVmdCcsICdyaWdodCcpLCAncHJldmlvdXMnLCAnbmV4dCcpIDogaWNvbjtcbiAgICB9XG5cbiAgICB2YXIgSW1nID0ge1xuXG4gICAgICAgIGF0dHJzOiB0cnVlLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkYXRhU3JjOiBTdHJpbmcsXG4gICAgICAgICAgICBkYXRhU3Jjc2V0OiBCb29sZWFuLFxuICAgICAgICAgICAgZGF0YVNpemVzOiBCb29sZWFuLFxuICAgICAgICAgICAgc2l6ZXM6IFN0cmluZyxcbiAgICAgICAgICAgIHdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBoZWlnaHQ6IE51bWJlcixcbiAgICAgICAgICAgIGRhdGFXaWR0aDogTnVtYmVyLFxuICAgICAgICAgICAgZGF0YUhlaWdodDogTnVtYmVyLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBTdHJpbmcsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiBTdHJpbmcsXG4gICAgICAgICAgICB0YXJnZXQ6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGRhdGFTcmM6ICcnLFxuICAgICAgICAgICAgZGF0YVNyY3NldDogZmFsc2UsXG4gICAgICAgICAgICBkYXRhU2l6ZXM6IGZhbHNlLFxuICAgICAgICAgICAgc2l6ZXM6IGZhbHNlLFxuICAgICAgICAgICAgd2lkdGg6IGZhbHNlLFxuICAgICAgICAgICAgaGVpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgIG9mZnNldFRvcDogJzUwdmgnLFxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogMCxcbiAgICAgICAgICAgIHRhcmdldDogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjYWNoZUtleTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGFTcmMgPSByZWYuZGF0YVNyYztcblxuICAgICAgICAgICAgICAgIHJldHVybiAoKHRoaXMuJG5hbWUpICsgXCIuXCIgKyBkYXRhU3JjKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdpZHRoOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWYud2lkdGg7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGFXaWR0aCA9IHJlZi5kYXRhV2lkdGg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gd2lkdGgkJDEgfHwgZGF0YVdpZHRoO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGVpZ2h0OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YUhlaWdodCA9IHJlZi5kYXRhSGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhlaWdodCQkMSB8fCBkYXRhSGVpZ2h0O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2l6ZXM6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBzaXplcyA9IHJlZi5zaXplcztcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVNpemVzID0gcmVmLmRhdGFTaXplcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBzaXplcyB8fCBkYXRhU2l6ZXM7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc0ltZzogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzSW1nKCRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0aGlzLiRlbF0uY29uY2F0KHF1ZXJ5QWxsKHRhcmdldCwgdGhpcy4kZWwpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG9mZnNldFRvcDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG9mZnNldFRvcCA9IHJlZi5vZmZzZXRUb3A7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdG9QeChvZmZzZXRUb3AsICdoZWlnaHQnKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG9mZnNldExlZnQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBvZmZzZXRMZWZ0ID0gcmVmLm9mZnNldExlZnQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdG9QeChvZmZzZXRMZWZ0LCAnd2lkdGgnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmIChzdG9yYWdlW3RoaXMuY2FjaGVLZXldKSB7XG4gICAgICAgICAgICAgICAgc2V0U3JjQXR0cnModGhpcy4kZWwsIHN0b3JhZ2VbdGhpcy5jYWNoZUtleV0gfHwgdGhpcy5kYXRhU3JjLCB0aGlzLmRhdGFTcmNzZXQsIHRoaXMuc2l6ZXMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSW1nICYmIHRoaXMud2lkdGggJiYgdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZXRTcmNBdHRycyh0aGlzLiRlbCwgZ2V0UGxhY2Vob2xkZXJJbWFnZSh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy5zaXplcykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlbGF5ID0gcmVmLmRlbGF5O1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW1hZ2UgPSByZWYuaW1hZ2U7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWRlbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgfHwgIXRoaXMudGFyZ2V0LnNvbWUoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBpc0luVmlldyhlbCwgdGhpcyQxLm9mZnNldFRvcCwgdGhpcyQxLm9mZnNldExlZnQsIHRydWUpOyB9KSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNJbWcgJiYgaW1hZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS50aGVuKGZ1bmN0aW9uIChpbWcpIHsgcmV0dXJuIGltZyAmJiBzZXRTcmNBdHRycyh0aGlzJDEuJGVsLCBjdXJyZW50U3JjKGltZykpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiBnZXRJbWFnZSh0aGlzLmRhdGFTcmMsIHRoaXMuZGF0YVNyY3NldCwgdGhpcy5zaXplcykudGhlbihmdW5jdGlvbiAoaW1nKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTcmNBdHRycyh0aGlzJDEuJGVsLCBjdXJyZW50U3JjKGltZyksIGltZy5zcmNzZXQsIGltZy5zaXplcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVt0aGlzJDEuY2FjaGVLZXldID0gY3VycmVudFNyYyhpbWcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbWc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG5vb3ApXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBHaXZlIHBsYWNlaG9sZGVyIGltYWdlcyB0aW1lIHRvIGFwcGx5IHRoZWlyIGRpbWVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhJCQxLmRlbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YSQkMS5kZWxheSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBzZXRTcmNBdHRycyhlbCwgc3JjLCBzcmNzZXQsIHNpemVzKSB7XG5cbiAgICAgICAgaWYgKGlzSW1nKGVsKSkge1xuICAgICAgICAgICAgc3JjICYmIChlbC5zcmMgPSBzcmMpO1xuICAgICAgICAgICAgc3Jjc2V0ICYmIChlbC5zcmNzZXQgPSBzcmNzZXQpO1xuICAgICAgICAgICAgc2l6ZXMgJiYgKGVsLnNpemVzID0gc2l6ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3JjICYmIGNzcyhlbCwgJ2JhY2tncm91bmRJbWFnZScsIChcInVybChcIiArIHNyYyArIFwiKVwiKSk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHZhciB1cmxDYWNoZSA9IHt9O1xuICAgIHZhciBzaXplc1JlID0gL1xccyooLio/KVxccyooXFx3K3xjYWxjXFwoLio/XFwpKVxccyooPzosfCQpL2c7XG4gICAgZnVuY3Rpb24gZ2V0UGxhY2Vob2xkZXJJbWFnZSh3aWR0aCQkMSwgaGVpZ2h0JCQxLCBzaXplcywgY29sb3IpIHtcbiAgICAgICAgdmFyIGFzc2lnbiQkMTtcblxuICAgICAgICBpZiAoIGNvbG9yID09PSB2b2lkIDAgKSBjb2xvciA9ICd0cmFuc3BhcmVudCc7XG5cbiAgICAgICAgaWYgKHNpemVzKSB7XG4gICAgICAgICAgICB2YXIgbWF0Y2hlcyQkMTtcblxuICAgICAgICAgICAgd2hpbGUgKChtYXRjaGVzJCQxID0gc2l6ZXNSZS5leGVjKHNpemVzKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXMkJDFbMV0gfHwgd2luZG93Lm1hdGNoTWVkaWEobWF0Y2hlcyQkMVsxXSkubWF0Y2hlcykge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaGVzJCQxID0gZXZhbHVhdGVTaXplKG1hdGNoZXMkJDFbMl0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNpemVzUmUubGFzdEluZGV4ID0gMDtcblxuICAgICAgICAgICAgKChhc3NpZ24kJDEgPSBEaW1lbnNpb25zLnJhdGlvKHt3aWR0aDogd2lkdGgkJDEsIGhlaWdodDogaGVpZ2h0JCQxfSwgJ3dpZHRoJywgdG9QeChtYXRjaGVzJCQxIHx8ICcxMDB2dycpKSwgd2lkdGgkJDEgPSBhc3NpZ24kJDEud2lkdGgsIGhlaWdodCQkMSA9IGFzc2lnbiQkMS5oZWlnaHQpKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGtleSA9IHdpZHRoJCQxICsgXCIuXCIgKyBoZWlnaHQkJDEgKyBcIi5cIiArIGNvbG9yO1xuICAgICAgICBpZiAodXJsQ2FjaGVba2V5XSkge1xuICAgICAgICAgICAgcmV0dXJuIHVybENhY2hlW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2FudmFzID0gZnJhZ21lbnQoJzxjYW52YXM+Jyk7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoJCQxO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0JCQxO1xuXG4gICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gY29sb3I7XG4gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgd2lkdGgkJDEsIGhlaWdodCQkMSk7XG5cbiAgICAgICAgcmV0dXJuIHVybENhY2hlW2tleV0gPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICB9XG5cbiAgICB2YXIgc2l6ZVJlID0gL1xcZCsoPzpcXHcrfCUpL2c7XG4gICAgdmFyIGFkZGl0aW9uUmUgPSAvWystXT8oXFxkKykvZztcbiAgICBmdW5jdGlvbiBldmFsdWF0ZVNpemUoc2l6ZSkge1xuICAgICAgICByZXR1cm4gc3RhcnRzV2l0aChzaXplLCAnY2FsYycpXG4gICAgICAgICAgICA/IHNpemVcbiAgICAgICAgICAgICAgICAuc3Vic3RyaW5nKDUsIHNpemUubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZShzaXplUmUsIGZ1bmN0aW9uIChzaXplKSB7IHJldHVybiB0b1B4KHNpemUpOyB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8gL2csICcnKVxuICAgICAgICAgICAgICAgIC5tYXRjaChhZGRpdGlvblJlKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgKyArYjsgfSwgMClcbiAgICAgICAgICAgIDogc2l6ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b1B4KHZhbHVlLCBwcm9wZXJ0eSwgZWxlbWVudCkge1xuICAgICAgICBpZiAoIHByb3BlcnR5ID09PSB2b2lkIDAgKSBwcm9wZXJ0eSA9ICd3aWR0aCc7XG4gICAgICAgIGlmICggZWxlbWVudCA9PT0gdm9pZCAwICkgZWxlbWVudCA9IHdpbmRvdztcblxuICAgICAgICByZXR1cm4gaXNOdW1lcmljKHZhbHVlKVxuICAgICAgICAgICAgPyArdmFsdWVcbiAgICAgICAgICAgIDogZW5kc1dpdGgodmFsdWUsICd2dycpXG4gICAgICAgICAgICAgICAgPyBwZXJjZW50KGVsZW1lbnQsICd3aWR0aCcsIHZhbHVlKVxuICAgICAgICAgICAgICAgIDogZW5kc1dpdGgodmFsdWUsICd2aCcpXG4gICAgICAgICAgICAgICAgICAgID8gcGVyY2VudChlbGVtZW50LCAnaGVpZ2h0JywgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDogZW5kc1dpdGgodmFsdWUsICclJylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGVyY2VudChlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRvRmxvYXQodmFsdWUpO1xuICAgIH1cblxuICAgIHZhciBkaW1lbnNpb25zID0ge2hlaWdodDogaGVpZ2h0LCB3aWR0aDogd2lkdGh9O1xuICAgIGZ1bmN0aW9uIHBlcmNlbnQoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBkaW1lbnNpb25zW3Byb3BlcnR5XShlbGVtZW50KSAqIHRvRmxvYXQodmFsdWUpIC8gMTAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSW1nKGVsKSB7XG4gICAgICAgIHJldHVybiBlbC50YWdOYW1lID09PSAnSU1HJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjdXJyZW50U3JjKGVsKSB7XG4gICAgICAgIHJldHVybiBlbC5jdXJyZW50U3JjIHx8IGVsLnNyYztcbiAgICB9XG5cbiAgICB2YXIga2V5ID0gJ19fdGVzdF9fJztcbiAgICB2YXIgc3RvcmFnZTtcblxuICAgIC8vIHdvcmthcm91bmQgZm9yIFNhZmFyaSdzIHByaXZhdGUgYnJvd3NpbmcgbW9kZSBhbmQgYWNjZXNzaW5nIHNlc3Npb25TdG9yYWdlIGluIEJsaW5rXG4gICAgdHJ5IHtcbiAgICAgICAgc3RvcmFnZSA9IHdpbmRvdy5zZXNzaW9uU3RvcmFnZSB8fCB7fTtcbiAgICAgICAgc3RvcmFnZVtrZXldID0gMTtcbiAgICAgICAgZGVsZXRlIHN0b3JhZ2Vba2V5XTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHN0b3JhZ2UgPSB7fTtcbiAgICB9XG5cbiAgICB2YXIgTGVhZGVyID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZmlsbDogU3RyaW5nLFxuICAgICAgICAgICAgbWVkaWE6ICdtZWRpYSdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBmaWxsOiAnJyxcbiAgICAgICAgICAgIG1lZGlhOiBmYWxzZSxcbiAgICAgICAgICAgIGNsc1dyYXBwZXI6ICd1ay1sZWFkZXItZmlsbCcsXG4gICAgICAgICAgICBjbHNIaWRlOiAndWstbGVhZGVyLWhpZGUnLFxuICAgICAgICAgICAgYXR0ckZpbGw6ICdkYXRhLWZpbGwnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZmlsbDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpbGwgPSByZWYuZmlsbDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBmaWxsIHx8IGdldENzc1ZhcignbGVhZGVyLWZpbGwnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgYXNzaWduJCQxO1xuXG4gICAgICAgICAgICAoYXNzaWduJCQxID0gd3JhcElubmVyKHRoaXMuJGVsLCAoXCI8c3BhbiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNXcmFwcGVyKSArIFwiXFxcIj5cIikpLCB0aGlzLndyYXBwZXIgPSBhc3NpZ24kJDFbMF0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB1bndyYXAodGhpcy53cmFwcGVyLmNoaWxkTm9kZXMpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNoYW5nZWQgPSByZWYuY2hhbmdlZDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSB3aWR0aCQkMTtcblxuICAgICAgICAgICAgICAgICAgICB3aWR0aCQkMSA9IE1hdGguZmxvb3IodGhpcy4kZWwub2Zmc2V0V2lkdGggLyAyKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoJCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZDogY2hhbmdlZCB8fCBwcmV2ICE9PSB3aWR0aCQkMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGU6IHRoaXMubWVkaWEgJiYgIXdpbmRvdy5tYXRjaE1lZGlhKHRoaXMubWVkaWEpLm1hdGNoZXNcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcblxuICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyh0aGlzLndyYXBwZXIsIHRoaXMuY2xzSGlkZSwgZGF0YSQkMS5oaWRlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSQkMS5jaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIodGhpcy53cmFwcGVyLCB0aGlzLmF0dHJGaWxsLCBuZXcgQXJyYXkoZGF0YSQkMS53aWR0aCkuam9pbih0aGlzLmZpbGwpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIHZhciBDb250YWluZXIgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGNvbnRhaW5lcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHJlZi5jb250YWluZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVyID09PSB0cnVlICYmIHRoaXMuJGNvbnRhaW5lciB8fCBjb250YWluZXIgJiYgJChjb250YWluZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgYWN0aXZlJDE7XG5cbiAgICB2YXIgTW9kYWwgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIENvbnRhaW5lciwgVG9nZ2xhYmxlXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgc2VsUGFuZWw6IFN0cmluZyxcbiAgICAgICAgICAgIHNlbENsb3NlOiBTdHJpbmcsXG4gICAgICAgICAgICBlc2NDbG9zZTogQm9vbGVhbixcbiAgICAgICAgICAgIGJnQ2xvc2U6IEJvb2xlYW4sXG4gICAgICAgICAgICBzdGFjazogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsczogJ3VrLW9wZW4nLFxuICAgICAgICAgICAgZXNjQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICBiZ0Nsb3NlOiB0cnVlLFxuICAgICAgICAgICAgb3ZlcmxheTogdHJ1ZSxcbiAgICAgICAgICAgIHN0YWNrOiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHBhbmVsOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzZWxQYW5lbCA9IHJlZi5zZWxQYW5lbDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKHNlbFBhbmVsLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbkVsZW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Ncyhjc3ModGhpcy50cmFuc2l0aW9uRWxlbWVudCwgJ3RyYW5zaXRpb25EdXJhdGlvbicpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGJnQ2xvc2U6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBiZ0Nsb3NlID0gcmVmLmJnQ2xvc2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYmdDbG9zZSAmJiB0aGlzLnBhbmVsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbENsb3NlO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAndG9nZ2xlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSBhY3RpdmUkMSAmJiBhY3RpdmUkMSAhPT0gdGhpcyAmJiBhY3RpdmUkMTtcblxuICAgICAgICAgICAgICAgICAgICBhY3RpdmUkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2ID0gcHJldjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5oaWRlKCkudGhlbih0aGlzLnNob3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50cygpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZWhpZGUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSQxID0gYWN0aXZlJDEgJiYgYWN0aXZlJDEgIT09IHRoaXMgJiYgYWN0aXZlJDEgfHwgdGhpcy5wcmV2O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcmVnaXN0ZXJFdmVudHMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuY2xzUGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsYmFyV2lkdGggPSB3aWR0aCh3aW5kb3cpIC0gd2lkdGgoZG9jdW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1knLCB0aGlzLnNjcm9sbGJhcldpZHRoICYmIHRoaXMub3ZlcmxheSA/ICdzY3JvbGwnIDogJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB0aGlzLmNsc1BhZ2UpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZGVuJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgZm91bmQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHJlZi5wcmV2O1xuXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChwcmV2KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2LmNsc1BhZ2UgPT09IHRoaXMkMS5jbHNQYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcHJldi5wcmV2O1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuY2xzUGFnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLnByZXYgJiYgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1knLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNUb2dnbGVkKCkgPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy4kZWwucGFyZW50Tm9kZSAhPT0gdGhpcy5jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHRoaXMuY29udGFpbmVyLCB0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxDb25uZWN0ZWQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVOb3codGhpcy4kZWwsIHRydWUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGlkZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNUb2dnbGVkKClcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgIDogUHJvbWlzZSQxLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEFjdGl2ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZSQxO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUltbWVkaWF0ZTogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl90b2dnbGUoZWwsIHNob3cpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLnRyYW5zaXRpb25EdXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UodGhpcyQxLnRyYW5zaXRpb25FbGVtZW50LCAndHJhbnNpdGlvbmVuZCcsIHJlc29sdmUsIGZhbHNlLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS50YXJnZXQgPT09IHRoaXMkMS50cmFuc2l0aW9uRWxlbWVudDsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7IH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgZXZlbnRzO1xuXG4gICAgZnVuY3Rpb24gcmVnaXN0ZXJFdmVudHMoKSB7XG5cbiAgICAgICAgaWYgKGV2ZW50cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnRzID0gW1xuICAgICAgICAgICAgb24oZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcbiAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdFByZXZlbnRlZCA9IHJlZi5kZWZhdWx0UHJldmVudGVkO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSQxICYmIGFjdGl2ZSQxLmJnQ2xvc2UgJiYgIWRlZmF1bHRQcmV2ZW50ZWQgJiYgKCFhY3RpdmUkMS5vdmVybGF5IHx8IHdpdGhpbih0YXJnZXQsIGFjdGl2ZSQxLiRlbCkpICYmICF3aXRoaW4odGFyZ2V0LCBhY3RpdmUkMS5wYW5lbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgb24oZG9jdW1lbnQsICdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS5rZXlDb2RlID09PSAyNyAmJiBhY3RpdmUkMSAmJiBhY3RpdmUkMS5lc2NDbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSQxLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcmVnaXN0ZXJFdmVudHMoKSB7XG4gICAgICAgIGV2ZW50cyAmJiBldmVudHMuZm9yRWFjaChmdW5jdGlvbiAodW5iaW5kKSB7IHJldHVybiB1bmJpbmQoKTsgfSk7XG4gICAgICAgIGV2ZW50cyA9IG51bGw7XG4gICAgfVxuXG4gICAgdmFyIE1vZGFsJDEgPSB7XG5cbiAgICAgICAgaW5zdGFsbDogaW5zdGFsbCQxLFxuXG4gICAgICAgIG1peGluczogW01vZGFsXSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjbHNQYWdlOiAndWstbW9kYWwtcGFnZScsXG4gICAgICAgICAgICBzZWxQYW5lbDogJy51ay1tb2RhbC1kaWFsb2cnLFxuICAgICAgICAgICAgc2VsQ2xvc2U6ICcudWstbW9kYWwtY2xvc2UsIC51ay1tb2RhbC1jbG9zZS1kZWZhdWx0LCAudWstbW9kYWwtY2xvc2Utb3V0c2lkZSwgLnVrLW1vZGFsLWNsb3NlLWZ1bGwnXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKHRoaXMucGFuZWwsICd1ay1tYXJnaW4tYXV0by12ZXJ0aWNhbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWZsZXgnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLiRlbCk7IC8vIGZvcmNlIHJlZmxvd1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZGVuJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJycpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgJ3VrLWZsZXgnKTtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaW5zdGFsbCQxIChVSWtpdCkge1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmRpYWxvZyA9IGZ1bmN0aW9uIChjb250ZW50LCBvcHRpb25zKSB7XG5cbiAgICAgICAgICAgIHZhciBkaWFsb2cgPSBVSWtpdC5tb2RhbCgoXCIgPGRpdiBjbGFzcz1cXFwidWstbW9kYWxcXFwiPiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1kaWFsb2dcXFwiPlwiICsgY29udGVudCArIFwiPC9kaXY+IDwvZGl2PiBcIiksIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBkaWFsb2cuc2hvdygpO1xuXG4gICAgICAgICAgICBvbihkaWFsb2cuJGVsLCAnaGlkZGVuJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gcmVmLmN1cnJlbnRUYXJnZXQ7XG5cbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZy4kZGVzdHJveSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGRpYWxvZztcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5tb2RhbC5hbGVydCA9IGZ1bmN0aW9uIChtZXNzYWdlLCBvcHRpb25zKSB7XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBhc3NpZ24oe2JnQ2xvc2U6IGZhbHNlLCBlc2NDbG9zZTogZmFsc2UsIGxhYmVsczogVUlraXQubW9kYWwubGFiZWxzfSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJldHVybiBvbihVSWtpdC5tb2RhbC5kaWFsb2coKFwiIDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWJvZHlcXFwiPlwiICsgKGlzU3RyaW5nKG1lc3NhZ2UpID8gbWVzc2FnZSA6IGh0bWwobWVzc2FnZSkpICsgXCI8L2Rpdj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLXByaW1hcnkgdWstbW9kYWwtY2xvc2VcXFwiIGF1dG9mb2N1cz5cIiArIChvcHRpb25zLmxhYmVscy5vaykgKyBcIjwvYnV0dG9uPiA8L2Rpdj4gXCIpLCBvcHRpb25zKS4kZWwsICdoaWRlJywgcmVzb2x2ZSk7IH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQubW9kYWwuY29uZmlybSA9IGZ1bmN0aW9uIChtZXNzYWdlLCBvcHRpb25zKSB7XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBhc3NpZ24oe2JnQ2xvc2U6IGZhbHNlLCBlc2NDbG9zZTogdHJ1ZSwgbGFiZWxzOiBVSWtpdC5tb2RhbC5sYWJlbHN9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGNvbmZpcm0gPSBVSWtpdC5tb2RhbC5kaWFsb2coKFwiIDxmb3JtPiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1ib2R5XFxcIj5cIiArIChpc1N0cmluZyhtZXNzYWdlKSA/IG1lc3NhZ2UgOiBodG1sKG1lc3NhZ2UpKSArIFwiPC9kaXY+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWZvb3RlciB1ay10ZXh0LXJpZ2h0XFxcIj4gPGJ1dHRvbiBjbGFzcz1cXFwidWstYnV0dG9uIHVrLWJ1dHRvbi1kZWZhdWx0IHVrLW1vZGFsLWNsb3NlXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiPlwiICsgKG9wdGlvbnMubGFiZWxzLmNhbmNlbCkgKyBcIjwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLXByaW1hcnlcXFwiIGF1dG9mb2N1cz5cIiArIChvcHRpb25zLmxhYmVscy5vaykgKyBcIjwvYnV0dG9uPiA8L2Rpdj4gPC9mb3JtPiBcIiksIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlc29sdmVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBvbihjb25maXJtLiRlbCwgJ3N1Ym1pdCcsICdmb3JtJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgb24oY29uZmlybS4kZWwsICdoaWRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5tb2RhbC5wcm9tcHQgPSBmdW5jdGlvbiAobWVzc2FnZSwgdmFsdWUsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiB0cnVlLCBsYWJlbHM6IFVJa2l0Lm1vZGFsLmxhYmVsc30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHByb21wdCA9IFVJa2l0Lm1vZGFsLmRpYWxvZygoXCIgPGZvcm0gY2xhc3M9XFxcInVrLWZvcm0tc3RhY2tlZFxcXCI+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWJvZHlcXFwiPiA8bGFiZWw+XCIgKyAoaXNTdHJpbmcobWVzc2FnZSkgPyBtZXNzYWdlIDogaHRtbChtZXNzYWdlKSkgKyBcIjwvbGFiZWw+IDxpbnB1dCBjbGFzcz1cXFwidWstaW5wdXRcXFwiIGF1dG9mb2N1cz4gPC9kaXY+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWZvb3RlciB1ay10ZXh0LXJpZ2h0XFxcIj4gPGJ1dHRvbiBjbGFzcz1cXFwidWstYnV0dG9uIHVrLWJ1dHRvbi1kZWZhdWx0IHVrLW1vZGFsLWNsb3NlXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiPlwiICsgKG9wdGlvbnMubGFiZWxzLmNhbmNlbCkgKyBcIjwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLXByaW1hcnlcXFwiPlwiICsgKG9wdGlvbnMubGFiZWxzLm9rKSArIFwiPC9idXR0b24+IDwvZGl2PiA8L2Zvcm0+IFwiKSwgb3B0aW9ucyksXG4gICAgICAgICAgICAgICAgICAgIGlucHV0ID0gJCgnaW5wdXQnLCBwcm9tcHQuJGVsKTtcblxuICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIG9uKHByb21wdC4kZWwsICdzdWJtaXQnLCAnZm9ybScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShpbnB1dC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcHJvbXB0LmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvbihwcm9tcHQuJGVsLCAnaGlkZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5tb2RhbC5sYWJlbHMgPSB7XG4gICAgICAgICAgICBvazogJ09rJyxcbiAgICAgICAgICAgIGNhbmNlbDogJ0NhbmNlbCdcbiAgICAgICAgfTtcblxuICAgIH1cblxuICAgIHZhciBOYXYgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogQWNjb3JkaW9uLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldHM6ICc+IC51ay1wYXJlbnQnLFxuICAgICAgICAgICAgdG9nZ2xlOiAnPiBhJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc+IHVsJ1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIE5hdmJhciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRyb3Bkb3duOiBTdHJpbmcsXG4gICAgICAgICAgICBtb2RlOiAnbGlzdCcsXG4gICAgICAgICAgICBhbGlnbjogU3RyaW5nLFxuICAgICAgICAgICAgb2Zmc2V0OiBOdW1iZXIsXG4gICAgICAgICAgICBib3VuZGFyeTogQm9vbGVhbixcbiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IEJvb2xlYW4sXG4gICAgICAgICAgICBjbHNEcm9wOiBTdHJpbmcsXG4gICAgICAgICAgICBkZWxheVNob3c6IE51bWJlcixcbiAgICAgICAgICAgIGRlbGF5SGlkZTogTnVtYmVyLFxuICAgICAgICAgICAgZHJvcGJhcjogQm9vbGVhbixcbiAgICAgICAgICAgIGRyb3BiYXJNb2RlOiBTdHJpbmcsXG4gICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBCb29sZWFuLFxuICAgICAgICAgICAgZHVyYXRpb246IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGRyb3Bkb3duOiAnLnVrLW5hdmJhci1uYXYgPiBsaScsXG4gICAgICAgICAgICBhbGlnbjogIWlzUnRsID8gJ2xlZnQnIDogJ3JpZ2h0JyxcbiAgICAgICAgICAgIGNsc0Ryb3A6ICd1ay1uYXZiYXItZHJvcGRvd24nLFxuICAgICAgICAgICAgbW9kZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgb2Zmc2V0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZWxheVNob3c6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlbGF5SGlkZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZmxpcDogJ3gnLFxuICAgICAgICAgICAgYm91bmRhcnk6IHRydWUsXG4gICAgICAgICAgICBkcm9wYmFyOiBmYWxzZSxcbiAgICAgICAgICAgIGRyb3BiYXJNb2RlOiAnc2xpZGUnLFxuICAgICAgICAgICAgZHJvcGJhckFuY2hvcjogZmFsc2UsXG4gICAgICAgICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGJvdW5kYXJ5OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeSA9IHJlZi5ib3VuZGFyeTtcbiAgICAgICAgICAgICAgICB2YXIgYm91bmRhcnlBbGlnbiA9IHJlZi5ib3VuZGFyeUFsaWduO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChib3VuZGFyeSA9PT0gdHJ1ZSB8fCBib3VuZGFyeUFsaWduKSA/ICRlbCA6IGJvdW5kYXJ5O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZHJvcGJhckFuY2hvcjogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgZHJvcGJhckFuY2hvciA9IHJlZi5kcm9wYmFyQW5jaG9yO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5KGRyb3BiYXJBbmNob3IsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwb3M6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbGlnbiA9IHJlZi5hbGlnbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXCJib3R0b20tXCIgKyBhbGlnbik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcm9wZG93bnM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRyb3Bkb3duID0gcmVmLmRyb3Bkb3duO1xuICAgICAgICAgICAgICAgIHZhciBjbHNEcm9wID0gcmVmLmNsc0Ryb3A7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQoKGRyb3Bkb3duICsgXCIgLlwiICsgY2xzRHJvcCksICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBiZWZvcmVDb25uZWN0OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJHByb3BzO1xuICAgICAgICAgICAgdmFyIGRyb3BiYXIgPSByZWYuZHJvcGJhcjtcblxuICAgICAgICAgICAgdGhpcy5kcm9wYmFyID0gZHJvcGJhciAmJiAocXVlcnkoZHJvcGJhciwgdGhpcy4kZWwpIHx8ICQoJysgLnVrLW5hdmJhci1kcm9wYmFyJywgdGhpcy4kZWwpIHx8ICQoJzxkaXY+PC9kaXY+JykpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kcm9wYmFyKSB7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLmRyb3BiYXIsICd1ay1uYXZiYXItZHJvcGJhcicpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJvcGJhck1vZGUgPT09ICdzbGlkZScpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5kcm9wYmFyLCAndWstbmF2YmFyLWRyb3BiYXItc2xpZGUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wYmFyICYmIHJlbW92ZSh0aGlzLmRyb3BiYXIpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB0aGlzLiRjcmVhdGUoXG4gICAgICAgICAgICAgICAgJ2Ryb3AnLFxuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25zLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuICF0aGlzJDEuZ2V0RHJvcGRvd24oZWwpOyB9KSxcbiAgICAgICAgICAgICAgICBhc3NpZ24oe30sIHRoaXMuJHByb3BzLCB7Ym91bmRhcnk6IHRoaXMuYm91bmRhcnksIHBvczogdGhpcy5wb3MsIG9mZnNldDogdGhpcy5kcm9wYmFyIHx8IHRoaXMub2Zmc2V0fSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdtb3VzZW92ZXInLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93bjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gcmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgYWN0aXZlLnRvZ2dsZSAmJiAhd2l0aGluKGFjdGl2ZS50b2dnbGUuJGVsLCBjdXJyZW50KSAmJiAhYWN0aXZlLnRyYWNrZXIubW92ZXNUbyhhY3RpdmUuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiAhbWF0Y2hlcyh0aGlzLmRyb3BiYXIsICc6aG92ZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2hvdycsXG5cbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyb3BiYXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIodGhpcy5kcm9wYmFyQW5jaG9yIHx8IHRoaXMuJGVsLCB0aGlzLmRyb3BiYXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuXG4gICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKF8sIGRyb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gZHJvcC4kZWw7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkaXIgPSBkcm9wLmRpcjtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsc0Ryb3AgJiYgYWRkQ2xhc3MoJGVsLCAoKHRoaXMuY2xzRHJvcCkgKyBcIi1kcm9wYmFyXCIpKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGlyID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oJGVsLm9mZnNldEhlaWdodCArIHRvRmxvYXQoY3NzKCRlbCwgJ21hcmdpblRvcCcpKSArIHRvRmxvYXQoY3NzKCRlbCwgJ21hcmdpbkJvdHRvbScpKSwgJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCByZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IHJlZi4kZWw7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcyh0aGlzLmRyb3BiYXIsICc6aG92ZXInKSAmJiBhY3RpdmUgJiYgYWN0aXZlLiRlbCA9PT0gJGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2hpZGUnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oXywgcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSByZWYuJGVsO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUgfHwgYWN0aXZlICYmIGFjdGl2ZS4kZWwgPT09ICRlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGdldEFjdGl2ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuZHJvcGRvd25zLm1hcCh0aGlzLmdldERyb3Bkb3duKS5maWx0ZXIoZnVuY3Rpb24gKGRyb3ApIHsgcmV0dXJuIGRyb3AuaXNBY3RpdmUoKTsgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHJlZlswXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aXZlICYmIGluY2x1ZGVzKGFjdGl2ZS5tb2RlLCAnaG92ZXInKSAmJiB3aXRoaW4oYWN0aXZlLnRvZ2dsZS4kZWwsIHRoaXMuJGVsKSAmJiBhY3RpdmU7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uVG86IGZ1bmN0aW9uKG5ld0hlaWdodCwgZWwpIHtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBkcm9wYmFyID0gcmVmLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgdmFyIG9sZEhlaWdodCA9IGlzVmlzaWJsZShkcm9wYmFyKSA/IGhlaWdodChkcm9wYmFyKSA6IDA7XG5cbiAgICAgICAgICAgICAgICBlbCA9IG9sZEhlaWdodCA8IG5ld0hlaWdodCAmJiBlbDtcblxuICAgICAgICAgICAgICAgIGNzcyhlbCwgJ2NsaXAnLCAoXCJyZWN0KDAsXCIgKyAoZWwub2Zmc2V0V2lkdGgpICsgXCJweCxcIiArIG9sZEhlaWdodCArIFwicHgsMClcIikpO1xuXG4gICAgICAgICAgICAgICAgaGVpZ2h0KGRyb3BiYXIsIG9sZEhlaWdodCk7XG5cbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChbZWwsIGRyb3BiYXJdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KGRyb3BiYXIsIHtoZWlnaHQ6IG5ld0hlaWdodH0sIHRoaXMuZHVyYXRpb24pLFxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KGVsLCB7Y2xpcDogKFwicmVjdCgwLFwiICsgKGVsLm9mZnNldFdpZHRoKSArIFwicHgsXCIgKyBuZXdIZWlnaHQgKyBcInB4LDApXCIpfSwgdGhpcy5kdXJhdGlvbilcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2gobm9vcClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gY3NzKGVsLCB7Y2xpcDogJyd9KTsgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXREcm9wZG93bjogZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZ2V0Q29tcG9uZW50KGVsLCAnZHJvcCcpIHx8IHRoaXMuJGdldENvbXBvbmVudChlbCwgJ2Ryb3Bkb3duJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBzY3JvbGw7XG5cbiAgICB2YXIgT2ZmY2FudmFzID0ge1xuXG4gICAgICAgIG1peGluczogW01vZGFsXSxcblxuICAgICAgICBhcmdzOiAnbW9kZScsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyxcbiAgICAgICAgICAgIG1vZGU6IFN0cmluZyxcbiAgICAgICAgICAgIGZsaXA6IEJvb2xlYW4sXG4gICAgICAgICAgICBvdmVybGF5OiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY29udGVudDogJy51ay1vZmZjYW52YXMtY29udGVudCcsXG4gICAgICAgICAgICBtb2RlOiAnc2xpZGUnLFxuICAgICAgICAgICAgZmxpcDogZmFsc2UsXG4gICAgICAgICAgICBvdmVybGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1vZmZjYW52YXMtcGFnZScsXG4gICAgICAgICAgICBjbHNDb250YWluZXI6ICd1ay1vZmZjYW52YXMtY29udGFpbmVyJyxcbiAgICAgICAgICAgIHNlbFBhbmVsOiAnLnVrLW9mZmNhbnZhcy1iYXInLFxuICAgICAgICAgICAgY2xzRmxpcDogJ3VrLW9mZmNhbnZhcy1mbGlwJyxcbiAgICAgICAgICAgIGNsc0NvbnRlbnQ6ICd1ay1vZmZjYW52YXMtY29udGVudCcsXG4gICAgICAgICAgICBjbHNDb250ZW50QW5pbWF0aW9uOiAndWstb2ZmY2FudmFzLWNvbnRlbnQtYW5pbWF0aW9uJyxcbiAgICAgICAgICAgIGNsc1NpZGViYXJBbmltYXRpb246ICd1ay1vZmZjYW52YXMtYmFyLWFuaW1hdGlvbicsXG4gICAgICAgICAgICBjbHNNb2RlOiAndWstb2ZmY2FudmFzJyxcbiAgICAgICAgICAgIGNsc092ZXJsYXk6ICd1ay1vZmZjYW52YXMtb3ZlcmxheScsXG4gICAgICAgICAgICBzZWxDbG9zZTogJy51ay1vZmZjYW52YXMtY2xvc2UnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgY29udGVudDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSByZWYuY29udGVudDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKGNvbnRlbnQpIHx8IGRvY3VtZW50LmJvZHk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNGbGlwOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmxpcCA9IHJlZi5mbGlwO1xuICAgICAgICAgICAgICAgIHZhciBjbHNGbGlwID0gcmVmLmNsc0ZsaXA7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmxpcCA/IGNsc0ZsaXAgOiAnJztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc092ZXJsYXk6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBvdmVybGF5ID0gcmVmLm92ZXJsYXk7XG4gICAgICAgICAgICAgICAgdmFyIGNsc092ZXJsYXkgPSByZWYuY2xzT3ZlcmxheTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBvdmVybGF5ID8gY2xzT3ZlcmxheSA6ICcnO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzTW9kZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzTW9kZSA9IHJlZi5jbHNNb2RlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChjbHNNb2RlICsgXCItXCIgKyBtb2RlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc1NpZGViYXJBbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBtb2RlID0gcmVmLm1vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGNsc1NpZGViYXJBbmltYXRpb24gPSByZWYuY2xzU2lkZWJhckFuaW1hdGlvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlID09PSAnbm9uZScgfHwgbW9kZSA9PT0gJ3JldmVhbCcgPyAnJyA6IGNsc1NpZGViYXJBbmltYXRpb247XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNDb250ZW50QW5pbWF0aW9uOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgbW9kZSA9IHJlZi5tb2RlO1xuICAgICAgICAgICAgICAgIHZhciBjbHNDb250ZW50QW5pbWF0aW9uID0gcmVmLmNsc0NvbnRlbnRBbmltYXRpb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kZSAhPT0gJ3B1c2gnICYmIG1vZGUgIT09ICdyZXZlYWwnID8gJycgOiBjbHNDb250ZW50QW5pbWF0aW9uO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbkVsZW1lbnQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBtb2RlID0gcmVmLm1vZGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kZSA9PT0gJ3JldmVhbCcgPyB0aGlzLnBhbmVsLnBhcmVudE5vZGUgOiB0aGlzLnBhbmVsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdldEFjdGl2ZSgpID09PSB0aGlzKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheSB8fCB0aGlzLmNsc0NvbnRlbnRBbmltYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKHRoaXMuY29udGVudCwgd2lkdGgod2luZG93KSAtIHRoaXMuc2Nyb2xsYmFyV2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuY29udGVudCwgaGVpZ2h0KHdpbmRvdykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5zY3JvbGxUb3AgPSBzY3JvbGwueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FbaHJlZl49XCIjXCJdJztcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gcmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuaGFzaCAmJiAkKGN1cnJlbnQuaGFzaCwgdGhpcy5jb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2Nyb2xsJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHNjcm9sbCwgdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGwgJiYgdGFyZ2V0ICYmIHRoaXMuaXNUb2dnbGVkKCkgJiYgJCh0YXJnZXQsIHRoaXMuY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UodGhpcy4kZWwsICdoaWRkZW4nLCBmdW5jdGlvbiAoKSB7IHJldHVybiBzY3JvbGwuc2Nyb2xsVG8odGFyZ2V0KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gc2Nyb2xsIHx8IHt4OiB3aW5kb3cucGFnZVhPZmZzZXQsIHk6IHdpbmRvdy5wYWdlWU9mZnNldH07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JldmVhbCcgJiYgIWhhc0NsYXNzKHRoaXMucGFuZWwsIHRoaXMuY2xzTW9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBBbGwodGhpcy5wYW5lbCwgJzxkaXY+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLnBhbmVsLnBhcmVudE5vZGUsIHRoaXMuY2xzTW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnb3ZlcmZsb3dZJywgKCF0aGlzLmNsc0NvbnRlbnRBbmltYXRpb24gfHwgdGhpcy5mbGlwKSAmJiB0aGlzLnNjcm9sbGJhcldpZHRoICYmIHRoaXMub3ZlcmxheSA/ICdzY3JvbGwnIDogJycpO1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmNsc0NvbnRhaW5lciwgdGhpcy5jbHNGbGlwLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQoZG9jdW1lbnQuYm9keSk7IC8vIGZvcmNlIHJlZmxvd1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLmNvbnRlbnQsIHRoaXMuY2xzQ29udGVudEFuaW1hdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGFuZWwsIHRoaXMuY2xzU2lkZWJhckFuaW1hdGlvbiwgdGhpcy5tb2RlICE9PSAncmV2ZWFsJyA/IHRoaXMuY2xzTW9kZSA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuJGVsKTsgLy8gZm9yY2UgcmVmbG93XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2hpZGUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmNvbnRlbnQsIHRoaXMuY2xzQ29udGVudEFuaW1hdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdub25lJyB8fCBhY3RpdmUgJiYgYWN0aXZlICE9PSB0aGlzICYmIGFjdGl2ZSAhPT0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMucGFuZWwsICd0cmFuc2l0aW9uZW5kJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2hpZGRlbicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JldmVhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcCh0aGlzLnBhbmVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSB7eDogd2luZG93LnBhZ2VYT2Zmc2V0LCB5OiB3aW5kb3cucGFnZVlPZmZzZXR9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IHJlZi5zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSByZWYuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0ge3g6IHgsIHk6IHl9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNTaWRlYmFyQW5pbWF0aW9uLCB0aGlzLmNsc01vZGUpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNPdmVybGF5KTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5jbHNDb250YWluZXIsIHRoaXMuY2xzRmxpcCwgdGhpcy5jbHNPdmVybGF5KTtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSBzY3JvbGwueTtcblxuICAgICAgICAgICAgICAgICAgICBjc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnb3ZlcmZsb3dZJywgJycpO1xuXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoKHRoaXMuY29udGVudCwgJycpO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5jb250ZW50LCAnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbChzY3JvbGwueCwgc2Nyb2xsLnkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3N3aXBlTGVmdCBzd2lwZVJpZ2h0JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSAmJiBpc1RvdWNoKGUpICYmIChlLnR5cGUgPT09ICdzd2lwZUxlZnQnICYmICF0aGlzLmZsaXAgfHwgZS50eXBlID09PSAnc3dpcGVSaWdodCcgJiYgdGhpcy5mbGlwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIE92ZXJmbG93QXV0byA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgbW9kYWw6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZXN0KCRlbCwgJy51ay1tb2RhbCcpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGFuZWw6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZXN0KCRlbCwgJy51ay1tb2RhbC1kaWFsb2cnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjc3ModGhpcy4kZWwsICdtaW5IZWlnaHQnLCAxNTApO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFuZWwgfHwgIXRoaXMubW9kYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gY3NzKHRoaXMuJGVsLCAnbWF4SGVpZ2h0Jyk7XG5cbiAgICAgICAgICAgICAgICBjc3MoY3NzKHRoaXMuJGVsLCAnbWF4SGVpZ2h0JywgMTUwKSwgJ21heEhlaWdodCcsIE1hdGgubWF4KDE1MCwgMTUwICsgaGVpZ2h0KHRoaXMubW9kYWwpIC0gdGhpcy5wYW5lbC5vZmZzZXRIZWlnaHQpKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudCAhPT0gY3NzKHRoaXMuJGVsLCAnbWF4SGVpZ2h0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3Jlc2l6ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBSZXNwb25zaXZlID0ge1xuXG4gICAgICAgIHByb3BzOiBbJ3dpZHRoJywgJ2hlaWdodCddLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLXJlc3BvbnNpdmUtd2lkdGgnKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVmlzaWJsZSh0aGlzLiRlbCkgJiYgdGhpcy53aWR0aCAmJiB0aGlzLmhlaWdodFxuICAgICAgICAgICAgICAgICAgICA/IHt3aWR0aDogd2lkdGgodGhpcy4kZWwucGFyZW50Tm9kZSksIGhlaWdodDogdGhpcy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGltKSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuJGVsLCBEaW1lbnNpb25zLmNvbnRhaW4oe2hlaWdodDogdGhpcy5oZWlnaHQsIHdpZHRoOiB0aGlzLndpZHRofSwgZGltKS5oZWlnaHQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNjcm9sbCA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZHVyYXRpb246IE51bWJlcixcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZHVyYXRpb246IDEwMDAsXG4gICAgICAgICAgICBvZmZzZXQ6IDBcbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHNjcm9sbFRvOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBlbCA9IGVsICYmICQoZWwpIHx8IGRvY3VtZW50LmJvZHk7XG5cbiAgICAgICAgICAgICAgICB2YXIgZG9jSGVpZ2h0ID0gaGVpZ2h0KGRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICB2YXIgd2luSGVpZ2h0ID0gaGVpZ2h0KHdpbmRvdyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gb2Zmc2V0KGVsKS50b3AgLSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICsgd2luSGVpZ2h0ID4gZG9jSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGRvY0hlaWdodCAtIHdpbkhlaWdodDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRyaWdnZXIodGhpcy4kZWwsICdiZWZvcmVzY3JvbGwnLCBbdGhpcywgZWxdKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnRZID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgIHZhciBzdGVwID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50WSA9IHN0YXJ0WSArICh0YXJnZXQgLSBzdGFydFkpICogZWFzZShjbGFtcCgoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIHRoaXMkMS5kdXJhdGlvbikpO1xuXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGwod2luZG93LnBhZ2VYT2Zmc2V0LCBjdXJyZW50WSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gc2Nyb2xsIG1vcmUgaWYgd2UgaGF2ZSBub3QgcmVhY2hlZCBvdXIgZGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRZICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcyQxLiRlbCwgJ3Njcm9sbGVkJywgW3RoaXMkMSwgZWxdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHN0ZXAoKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiB7XG5cbiAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUbyhlc2NhcGUodGhpcy4kZWwuaGFzaCkuc3Vic3RyKDEpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZWFzZShrKSB7XG4gICAgICAgIHJldHVybiAwLjUgKiAoMSAtIE1hdGguY29zKE1hdGguUEkgKiBrKSk7XG4gICAgfVxuXG4gICAgdmFyIFNjcm9sbHNweSA9IHtcblxuICAgICAgICBhcmdzOiAnY2xzJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xzOiAnbGlzdCcsXG4gICAgICAgICAgICB0YXJnZXQ6IFN0cmluZyxcbiAgICAgICAgICAgIGhpZGRlbjogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldFRvcDogTnVtYmVyLFxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogTnVtYmVyLFxuICAgICAgICAgICAgcmVwZWF0OiBCb29sZWFuLFxuICAgICAgICAgICAgZGVsYXk6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgICAgICBjbHM6IFtdLFxuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgIG9mZnNldFRvcDogMCxcbiAgICAgICAgICAgIG9mZnNldExlZnQ6IDAsXG4gICAgICAgICAgICByZXBlYXQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVsYXk6IDAsXG4gICAgICAgICAgICBpblZpZXdDbGFzczogJ3VrLXNjcm9sbHNweS1pbnZpZXcnXG4gICAgICAgIH0pOyB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGVsZW1lbnRzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCA/ICQkKHRhcmdldCwgJGVsKSA6IFskZWxdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoZmlsdGVyKHRoaXMuZWxlbWVudHMsIChcIjpub3QoLlwiICsgKHRoaXMuaW5WaWV3Q2xhc3MpICsgXCIpXCIpKSwgJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKGVscykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZWxzLmRlbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbERhdGEgPSBlbHNbaV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWxEYXRhIHx8IGVsRGF0YS5lbCAhPT0gZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xzID0gZGF0YShlbCwgJ3VrLXNjcm9sbHNweS1jbGFzcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YSA9IHtlbDogZWwsIHRvZ2dsZXM6IGNscyAmJiBjbHMuc3BsaXQoJywnKSB8fCB0aGlzJDEuY2xzfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLnNob3cgPSBpc0luVmlldyhlbCwgdGhpcyQxLm9mZnNldFRvcCwgdGhpcyQxLm9mZnNldExlZnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzW2ldID0gZWxEYXRhO1xuXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTGV0IGNoaWxkIGNvbXBvbmVudHMgYmUgYXBwbGllZCBhdCBsZWFzdCBvbmNlIGZpcnN0XG4gICAgICAgICAgICAgICAgICAgIGlmICghZWxzLmRlbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxzLmRlbGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCQkMSA9IHRoaXMuZWxlbWVudHMubGVuZ3RoID09PSAxID8gMSA6IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxEYXRhID0gZWxzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNscyA9IGVsRGF0YS50b2dnbGVzW2ldIHx8IGVsRGF0YS50b2dnbGVzWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxEYXRhLnNob3cgJiYgIWVsRGF0YS5pbnZpZXcgJiYgIWVsRGF0YS50aW1lcikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNob3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbCwgJ3Zpc2liaWxpdHknLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKGVsLCB0aGlzJDEuaW5WaWV3Q2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbCwgY2xzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKGVsLCAnaW52aWV3Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUoZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YS5pbnZpZXcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZWxEYXRhLnRpbWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmRlbGF5ICYmIGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YS50aW1lciA9IHNldFRpbWVvdXQoc2hvdywgdGhpcyQxLmRlbGF5ICogaW5kZXgkJDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCQkMSsrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFlbERhdGEuc2hvdyAmJiBlbERhdGEuaW52aWV3ICYmIHRoaXMkMS5yZXBlYXQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbERhdGEudGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGVsRGF0YS50aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbERhdGEudGltZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGVsLCAndmlzaWJpbGl0eScsIHRoaXMkMS5oaWRkZW4gPyAnaGlkZGVuJyA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhlbCwgdGhpcyQxLmluVmlld0NsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbCwgY2xzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsICdvdXR2aWV3Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbERhdGEuaW52aWV3ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIHZhciBTY3JvbGxzcHlOYXYgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNsczogU3RyaW5nLFxuICAgICAgICAgICAgY2xvc2VzdDogU3RyaW5nLFxuICAgICAgICAgICAgc2Nyb2xsOiBCb29sZWFuLFxuICAgICAgICAgICAgb3ZlcmZsb3c6IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXQ6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsczogJ3VrLWFjdGl2ZScsXG4gICAgICAgICAgICBjbG9zZXN0OiBmYWxzZSxcbiAgICAgICAgICAgIHNjcm9sbDogZmFsc2UsXG4gICAgICAgICAgICBvdmVyZmxvdzogdHJ1ZSxcbiAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGxpbmtzOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJCQoJ2FbaHJlZl49XCIjXCJdJywgJGVsKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5oYXNoOyB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGVsZW1lbnRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9zZXN0ID8gY2xvc2VzdCh0aGlzLmxpbmtzLCB0aGlzLmNsb3Nlc3QpIDogdGhpcy5saW5rcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRhcmdldHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkJCh0aGlzLmxpbmtzLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmhhc2g7IH0pLmpvaW4oJywnKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kY3JlYXRlKCdzY3JvbGwnLCB0aGlzLmxpbmtzLCB7b2Zmc2V0OiB0aGlzLm9mZnNldCB8fCAwfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsID0gd2luZG93LnBhZ2VZT2Zmc2V0ICsgdGhpcy5vZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWF4ID0gaGVpZ2h0KGRvY3VtZW50KSAtIGhlaWdodCh3aW5kb3cpICsgdGhpcy5vZmZzZXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldHMuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXQoZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFzdCA9IGkgKyAxID09PSB0aGlzJDEudGFyZ2V0cy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcyQxLm92ZXJmbG93ICYmIChpID09PSAwICYmIHRvcCA+IHNjcm9sbCB8fCBsYXN0ICYmIHRvcCArIGVsLm9mZnNldFRvcCA8IHNjcm9sbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdCAmJiBvZmZzZXQodGhpcyQxLnRhcmdldHNbaSArIDFdKS50b3AgPD0gc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGwgPj0gbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IHRoaXMkMS50YXJnZXRzLmxlbmd0aCAtIDE7IGogPiBpOyBqLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5WaWV3KHRoaXMkMS50YXJnZXRzW2pdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSB0aGlzJDEudGFyZ2V0c1tqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShkYXRhJCQxLmFjdGl2ZSA9ICQoZmlsdGVyKHRoaXMkMS5saW5rcywgKFwiW2hyZWY9XFxcIiNcIiArIChlbC5pZCkgKyBcIlxcXCJdXCIpKSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHJlZi5hY3RpdmU7XG5cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5ibHVyKCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnRzLCB0aGlzLmNscyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2FjdGl2ZScsIFthY3RpdmUsIGFkZENsYXNzKHRoaXMuY2xvc2VzdCA/IGNsb3Nlc3QoYWN0aXZlLCB0aGlzLmNsb3Nlc3QpIDogYWN0aXZlLCB0aGlzLmNscyldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIHZhciBTdGlja3kgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIGF0dHJzOiB0cnVlLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB0b3A6IG51bGwsXG4gICAgICAgICAgICBib3R0b206IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXQ6IE51bWJlcixcbiAgICAgICAgICAgIGFuaW1hdGlvbjogU3RyaW5nLFxuICAgICAgICAgICAgY2xzQWN0aXZlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNJbmFjdGl2ZTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRml4ZWQ6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0JlbG93OiBTdHJpbmcsXG4gICAgICAgICAgICBzZWxUYXJnZXQ6IFN0cmluZyxcbiAgICAgICAgICAgIHdpZHRoRWxlbWVudDogQm9vbGVhbixcbiAgICAgICAgICAgIHNob3dPblVwOiBCb29sZWFuLFxuICAgICAgICAgICAgbWVkaWE6ICdtZWRpYScsXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXQ6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICBhbmltYXRpb246ICcnLFxuICAgICAgICAgICAgY2xzQWN0aXZlOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsc0luYWN0aXZlOiAnJyxcbiAgICAgICAgICAgIGNsc0ZpeGVkOiAndWstc3RpY2t5LWZpeGVkJyxcbiAgICAgICAgICAgIGNsc0JlbG93OiAndWstc3RpY2t5LWJlbG93JyxcbiAgICAgICAgICAgIHNlbFRhcmdldDogJycsXG4gICAgICAgICAgICB3aWR0aEVsZW1lbnQ6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd09uVXA6IGZhbHNlLFxuICAgICAgICAgICAgbWVkaWE6IGZhbHNlLFxuICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0OiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHNlbFRhcmdldDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsVGFyZ2V0ID0gcmVmLnNlbFRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxUYXJnZXQgJiYgJChzZWxUYXJnZXQsICRlbCkgfHwgJGVsO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd2lkdGhFbGVtZW50OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aEVsZW1lbnQgPSByZWYud2lkdGhFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5KHdpZHRoRWxlbWVudCwgJGVsKSB8fCB0aGlzLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9ICQoJysgLnVrLXN0aWNreS1wbGFjZWhvbGRlcicsIHRoaXMuJGVsKSB8fCAkKCc8ZGl2IGNsYXNzPVwidWstc3RpY2t5LXBsYWNlaG9sZGVyXCI+PC9kaXY+Jyk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0luYWN0aXZlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVtb3ZlKHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLndpZHRoRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYWN0aXZlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZUNsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0luYWN0aXZlLCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2luYWN0aXZlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZUNsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSwgdGhpcy5jbHNJbmFjdGl2ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnbG9hZCBoYXNoY2hhbmdlIHBvcHN0YXRlJyxcblxuICAgICAgICAgICAgICAgIGVsOiB3aW5kb3csXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0aGlzLnRhcmdldE9mZnNldCAhPT0gZmFsc2UgJiYgbG9jYXRpb24uaGFzaCAmJiB3aW5kb3cucGFnZVlPZmZzZXQgPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9ICQobG9jYXRpb24uaGFzaCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFzdGRvbS5yZWFkKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXQodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxUb3AgPSBvZmZzZXQodGhpcyQxLiRlbCkudG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IHRoaXMkMS4kZWwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5pc0FjdGl2ZSAmJiBlbFRvcCArIGVsSGVpZ2h0ID49IHRvcCAmJiBlbFRvcCA8PSB0b3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGwoMCwgdG9wIC0gZWxIZWlnaHQgLSAoaXNOdW1lcmljKHRoaXMkMS50YXJnZXRPZmZzZXQpID8gdGhpcyQxLnRhcmdldE9mZnNldCA6IDApIC0gdGhpcyQxLm9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSByZWYucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvZmZzZXRIZWlnaHQgPSByZWYuJGVsLm9mZnNldEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBjc3MocGxhY2Vob2xkZXIsIGFzc2lnbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IGNzcyh0aGlzLiRlbCwgJ3Bvc2l0aW9uJykgIT09ICdhYnNvbHV0ZScgPyBvZmZzZXRIZWlnaHQgOiAnJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIFsnbWFyZ2luVG9wJywgJ21hcmdpbkJvdHRvbScsICdtYXJnaW5MZWZ0JywgJ21hcmdpblJpZ2h0J10pXG4gICAgICAgICAgICAgICAgICAgICkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghd2l0aGluKHBsYWNlaG9sZGVyLCBkb2N1bWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyKHRoaXMuJGVsLCBwbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHBsYWNlaG9sZGVyLCAnaGlkZGVuJywgJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BPZmZzZXQgPSBvZmZzZXQodGhpcy5pc0FjdGl2ZSA/IHBsYWNlaG9sZGVyIDogdGhpcy4kZWwpLnRvcDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib3R0b21PZmZzZXQgPSB0aGlzLnRvcE9mZnNldCArIG9mZnNldEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYm90dG9tID0gcGFyc2VQcm9wKCdib3R0b20nLCB0aGlzKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcCA9IE1hdGgubWF4KHRvRmxvYXQocGFyc2VQcm9wKCd0b3AnLCB0aGlzKSksIHRoaXMudG9wT2Zmc2V0KSAtIHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbSA9IGJvdHRvbSAmJiBib3R0b20gLSBvZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5hY3RpdmUgPSB0aGlzLm1lZGlhICYmICF3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKF8sIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsWSA9IHJlZi5zY3JvbGxZOyBpZiAoIHNjcm9sbFkgPT09IHZvaWQgMCApIHNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG5cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLndpZHRoID0gKGlzVmlzaWJsZSh0aGlzLndpZHRoRWxlbWVudCkgPyB0aGlzLndpZHRoRWxlbWVudCA6IHRoaXMuJGVsKS5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsOiB0aGlzLnNjcm9sbCA9IHNjcm9sbFksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBpc1Zpc2libGUodGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYsIHJlZiQxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmlzaWJsZSA9IHJlZi52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsID0gcmVmLnNjcm9sbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYkMSA9PT0gdm9pZCAwICkgcmVmJDEgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IHJlZiQxLmRpcjtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGwgPCAwIHx8ICF2aXNpYmxlIHx8IHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5zaG93T25VcCAmJiAhZGlyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgc2Nyb2xsIDwgdGhpcy50b3BcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuc2hvd09uVXAgJiYgKHNjcm9sbCA8PSB0aGlzLnRvcCB8fCBkaXIgPT09ICdkb3duJyB8fCBkaXIgPT09ICd1cCcgJiYgIXRoaXMuaXNBY3RpdmUgJiYgc2Nyb2xsIDw9IHRoaXMuYm90dG9tT2Zmc2V0KVxuICAgICAgICAgICAgICAgICAgICApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbiAmJiBzY3JvbGwgPiB0aGlzLnRvcE9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5vdXQodGhpcy4kZWwsIHRoaXMuYW5pbWF0aW9uKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5oaWRlKCk7IH0sIG5vb3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNBY3RpdmUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKTtcblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYW5pbWF0aW9uKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uaW4odGhpcy4kZWwsIHRoaXMuYW5pbWF0aW9uKS5jYXRjaChub29wKTtcblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnLCAnc2Nyb2xsJ11cblxuICAgICAgICAgICAgfSBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy5wbGFjZWhvbGRlciwgJ2hpZGRlbicsIG51bGwpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSB8fCBoYXNDbGFzcyh0aGlzLnNlbFRhcmdldCwgdGhpcy5jbHNBY3RpdmUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdpbmFjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0ZpeGVkLCB0aGlzLmNsc0JlbG93KTtcbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtwb3NpdGlvbjogJycsIHRvcDogJycsIHdpZHRoOiAnJ30pO1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy5wbGFjZWhvbGRlciwgJ2hpZGRlbicsICcnKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLnRvcCAhPT0gMCB8fCB0aGlzLnNjcm9sbCA+IHRoaXMudG9wO1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSBNYXRoLm1heCgwLCB0aGlzLm9mZnNldCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ib3R0b20gJiYgdGhpcy5zY3JvbGwgPiB0aGlzLmJvdHRvbSAtIHRoaXMub2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcCA9IHRoaXMuYm90dG9tIC0gdGhpcy5zY3JvbGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICAgICAgICAgICAgICB0b3A6ICh0b3AgKyBcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy53aWR0aFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSkpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2luYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNCZWxvdywgdGhpcy5zY3JvbGwgPiB0aGlzLmJvdHRvbU9mZnNldCk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRml4ZWQpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlUHJvcChwcm9wLCByZWYpIHtcbiAgICAgICAgdmFyICRwcm9wcyA9IHJlZi4kcHJvcHM7XG4gICAgICAgIHZhciAkZWwgPSByZWYuJGVsO1xuICAgICAgICB2YXIgcHJvcE9mZnNldCA9IHJlZlsocHJvcCArIFwiT2Zmc2V0XCIpXTtcblxuXG4gICAgICAgIHZhciB2YWx1ZSA9ICRwcm9wc1twcm9wXTtcblxuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOdW1lcmljKHZhbHVlKSkge1xuXG4gICAgICAgICAgICByZXR1cm4gcHJvcE9mZnNldCArIHRvRmxvYXQodmFsdWUpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpICYmIHZhbHVlLm1hdGNoKC9eLT9cXGQrdmgkLykpIHtcblxuICAgICAgICAgICAgcmV0dXJuIGhlaWdodCh3aW5kb3cpICogdG9GbG9hdCh2YWx1ZSkgLyAxMDA7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgdmFyIGVsID0gdmFsdWUgPT09IHRydWUgPyAkZWwucGFyZW50Tm9kZSA6IHF1ZXJ5KHZhbHVlLCAkZWwpO1xuXG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0KGVsKS50b3AgKyBlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBTd2l0Y2hlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtUb2dnbGFibGVdLFxuXG4gICAgICAgIGFyZ3M6ICdjb25uZWN0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY29ubmVjdDogU3RyaW5nLFxuICAgICAgICAgICAgdG9nZ2xlOiBTdHJpbmcsXG4gICAgICAgICAgICBhY3RpdmU6IE51bWJlcixcbiAgICAgICAgICAgIHN3aXBpbmc6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjb25uZWN0OiAnfi51ay1zd2l0Y2hlcicsXG4gICAgICAgICAgICB0b2dnbGU6ICc+IConLFxuICAgICAgICAgICAgYWN0aXZlOiAwLFxuICAgICAgICAgICAgc3dpcGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGNsczogJ3VrLWFjdGl2ZScsXG4gICAgICAgICAgICBjbHNDb250YWluZXI6ICd1ay1zd2l0Y2hlcicsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXN3aXRjaGVyLWl0ZW0nLFxuICAgICAgICAgICAgcXVldWVkOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgY29ubmVjdHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbm5lY3QgPSByZWYuY29ubmVjdDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeUFsbChjb25uZWN0LCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdG9nZ2xlczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdG9nZ2xlID0gcmVmLnRvZ2dsZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkJCh0b2dnbGUsICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy50b2dnbGUpICsgXCI6bm90KC51ay1kaXNhYmxlZClcIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZS5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0cztcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFwiW1wiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdLFtkYXRhLVwiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdXCIpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KGRhdGEoZS5jdXJyZW50LCB0aGlzLmF0dHJJdGVtKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzd2lwZVJpZ2h0IHN3aXBlTGVmdCcsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zd2lwaW5nO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RzO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZS50eXBlID09PSAnc3dpcGVMZWZ0JyA/ICduZXh0JyA6ICdwcmV2aW91cycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuY29ubmVjdHMuZm9yRWFjaChmdW5jdGlvbiAobGlzdCkgeyByZXR1cm4gdGhpcyQxLnVwZGF0ZUFyaWEobGlzdC5jaGlsZHJlbik7IH0pO1xuICAgICAgICAgICAgdGhpcy5zaG93KGZpbHRlcih0aGlzLnRvZ2dsZXMsIChcIi5cIiArICh0aGlzLmNscykpKVswXSB8fCB0aGlzLnRvZ2dsZXNbdGhpcy5hY3RpdmVdIHx8IHRoaXMudG9nZ2xlc1swXSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMudG9nZ2xlcztcbiAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gcmVmLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB2YXIgcHJldiA9ICEhdGhpcy5jb25uZWN0cy5sZW5ndGggJiYgaW5kZXgoZmlsdGVyKHRoaXMuY29ubmVjdHNbMF0uY2hpbGRyZW4sIChcIi5cIiArICh0aGlzLmNscykpKVswXSk7XG4gICAgICAgICAgICAgICAgdmFyIGhhc1ByZXYgPSBwcmV2ID49IDA7XG4gICAgICAgICAgICAgICAgdmFyIGRpciA9IGl0ZW0gPT09ICdwcmV2aW91cycgPyAtMSA6IDE7XG5cbiAgICAgICAgICAgICAgICB2YXIgdG9nZ2xlLCBuZXh0ID0gZ2V0SW5kZXgoaXRlbSwgdGhpcy50b2dnbGVzLCBwcmV2KTtcblxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyssIG5leHQgPSAobmV4dCArIGRpciArIGxlbmd0aCkgJSBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKHRoaXMkMS50b2dnbGVzW25leHRdLCAnLnVrLWRpc2FibGVkLCBbZGlzYWJsZWRdJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZSA9IHRoaXMkMS50b2dnbGVzW25leHRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRvZ2dsZSB8fCBwcmV2ID49IDAgJiYgaGFzQ2xhc3ModG9nZ2xlLCB0aGlzLmNscykgfHwgcHJldiA9PT0gbmV4dCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy50b2dnbGVzLCB0aGlzLmNscyk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZXMsICdhcmlhLWV4cGFuZGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRvZ2dsZSwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgIGF0dHIodG9nZ2xlLCAnYXJpYS1leHBhbmRlZCcsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzUHJldikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRvZ2dsZU5vdyhsaXN0LmNoaWxkcmVuW25leHRdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGVFbGVtZW50KFtsaXN0LmNoaWxkcmVuW3ByZXZdLCBsaXN0LmNoaWxkcmVuW25leHRdXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgVGFiID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBleHRlbmRzOiBTd2l0Y2hlcixcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbWVkaWE6ICdtZWRpYSdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBtZWRpYTogOTYwLFxuICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay10YWItaXRlbSdcbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgY2xzID0gaGFzQ2xhc3ModGhpcy4kZWwsICd1ay10YWItbGVmdCcpXG4gICAgICAgICAgICAgICAgPyAndWstdGFiLWxlZnQnXG4gICAgICAgICAgICAgICAgOiBoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLXRhYi1yaWdodCcpXG4gICAgICAgICAgICAgICAgICAgID8gJ3VrLXRhYi1yaWdodCdcbiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGNscykge1xuICAgICAgICAgICAgICAgIHRoaXMuJGNyZWF0ZSgndG9nZ2xlJywgdGhpcy4kZWwsIHtjbHM6IGNscywgbW9kZTogJ21lZGlhJywgbWVkaWE6IHRoaXMubWVkaWF9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBUb2dnbGUgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbVG9nZ2xhYmxlXSxcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgaHJlZjogU3RyaW5nLFxuICAgICAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICAgICAgbW9kZTogJ2xpc3QnLFxuICAgICAgICAgICAgbWVkaWE6ICdtZWRpYSdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBocmVmOiBmYWxzZSxcbiAgICAgICAgICAgIHRhcmdldDogZmFsc2UsXG4gICAgICAgICAgICBtb2RlOiAnY2xpY2snLFxuICAgICAgICAgICAgcXVldWVkOiB0cnVlLFxuICAgICAgICAgICAgbWVkaWE6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBocmVmID0gcmVmLmhyZWY7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBxdWVyeUFsbCh0YXJnZXQgfHwgaHJlZiwgJGVsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0Lmxlbmd0aCAmJiB0YXJnZXQgfHwgWyRlbF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogKHBvaW50ZXJFbnRlciArIFwiIFwiICsgcG9pbnRlckxlYXZlKSxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdob3ZlcicpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoKFwidG9nZ2xlXCIgKyAoZS50eXBlID09PSBwb2ludGVyRW50ZXIgPyAnc2hvdycgOiAnaGlkZScpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5jbHVkZXModGhpcy5tb2RlLCAnY2xpY2snKSB8fCBoYXNUb3VjaCAmJiBpbmNsdWRlcyh0aGlzLm1vZGUsICdob3ZlcicpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpICYmICFpbmNsdWRlcyh0aGlzLm1vZGUsICdjbGljaycpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIGJldHRlciBpc1RvZ2dsZWQgaGFuZGxpbmdcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpbms7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmPVwiI1wiXSwgYnV0dG9uJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IChsaW5rID0gY2xvc2VzdChlLnRhcmdldCwgJ2FbaHJlZl0nKSkgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIWlzVmlzaWJsZSh0aGlzLnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBsaW5rLmhhc2ggJiYgbWF0Y2hlcyh0aGlzLnRhcmdldCwgbGluay5oYXNoKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UoZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnByZXZlbnREZWZhdWx0KCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyh0aGlzLm1vZGUsICdtZWRpYScpIHx8ICF0aGlzLm1lZGlhKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgdG9nZ2xlZCA9IHRoaXMuaXNUb2dnbGVkKHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEodGhpcy5tZWRpYSkubWF0Y2hlcyA/ICF0b2dnbGVkIDogdG9nZ2xlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbih0eXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRyaWdnZXIodGhpcy50YXJnZXQsIHR5cGUgfHwgJ3RvZ2dsZScsIFt0aGlzXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNvcmUgKFVJa2l0KSB7XG5cbiAgICAgICAgLy8gY29yZSBjb21wb25lbnRzXG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnYWNjb3JkaW9uJywgQWNjb3JkaW9uKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdhbGVydCcsIEFsZXJ0KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdjb3ZlcicsIENvdmVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdkcm9wJywgRHJvcCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZHJvcGRvd24nLCBEcm9wZG93bik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZm9ybUN1c3RvbScsIEZvcm1DdXN0b20pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2dpZicsIEdpZik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZ3JpZCcsIEdyaWQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2hlaWdodE1hdGNoJywgSGVpZ2h0TWF0Y2gpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2hlaWdodFZpZXdwb3J0JywgSGVpZ2h0Vmlld3BvcnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2ljb24nLCBJY29uKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdpbWcnLCBJbWcpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2xlYWRlcicsIExlYWRlcik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbWFyZ2luJywgTWFyZ2luKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtb2RhbCcsIE1vZGFsJDEpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ25hdicsIE5hdik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbmF2YmFyJywgTmF2YmFyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdvZmZjYW52YXMnLCBPZmZjYW52YXMpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ292ZXJmbG93QXV0bycsIE92ZXJmbG93QXV0byk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgncmVzcG9uc2l2ZScsIFJlc3BvbnNpdmUpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3Njcm9sbCcsIFNjcm9sbCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2Nyb2xsc3B5JywgU2Nyb2xsc3B5KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzY3JvbGxzcHlOYXYnLCBTY3JvbGxzcHlOYXYpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3N0aWNreScsIFN0aWNreSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc3ZnJywgU1ZHKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzd2l0Y2hlcicsIFN3aXRjaGVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd0YWInLCBUYWIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3RvZ2dsZScsIFRvZ2dsZSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgndmlkZW8nLCBWaWRlbyk7XG5cbiAgICAgICAgLy8gSWNvbiBjb21wb25lbnRzXG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnY2xvc2UnLCBDbG9zZSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbWFya2VyJywgSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbmF2YmFyVG9nZ2xlSWNvbicsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ292ZXJsYXlJY29uJywgSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgncGFnaW5hdGlvbk5leHQnLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdwYWdpbmF0aW9uUHJldmlvdXMnLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzZWFyY2hJY29uJywgU2VhcmNoKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzbGlkZW5hdk5leHQnLCBTbGlkZW5hdik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVuYXZQcmV2aW91cycsIFNsaWRlbmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzcGlubmVyJywgU3Bpbm5lcik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgndG90b3AnLCBJY29uQ29tcG9uZW50KTtcblxuICAgICAgICAvLyBjb3JlIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgVUlraXQudXNlKENvcmUpO1xuXG4gICAgfVxuXG4gICAgVUlraXQudmVyc2lvbiA9ICczLjAuMC1yYy41JztcblxuICAgIGNvcmUoVUlraXQpO1xuXG4gICAgdmFyIENvdW50ZG93biA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRhdGU6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc1dyYXBwZXI6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGRhdGU6ICcnLFxuICAgICAgICAgICAgY2xzV3JhcHBlcjogJy51ay1jb3VudGRvd24tJXVuaXQlJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGRhdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBkYXRlID0gcmVmLmRhdGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gRGF0ZS5wYXJzZShkYXRlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRheXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsc1dyYXBwZXIgPSByZWYuY2xzV3JhcHBlcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKGNsc1dyYXBwZXIucmVwbGFjZSgnJXVuaXQlJywgJ2RheXMnKSwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhvdXJzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdob3VycycpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbWludXRlczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2xzV3JhcHBlciA9IHJlZi5jbHNXcmFwcGVyO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY2xzV3JhcHBlci5yZXBsYWNlKCcldW5pdCUnLCAnbWludXRlcycpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2Vjb25kczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2xzV3JhcHBlciA9IHJlZi5jbHNXcmFwcGVyO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY2xzV3JhcHBlci5yZXBsYWNlKCcldW5pdCUnLCAnc2Vjb25kcycpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdW5pdHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnZGF5cycsICdob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXS5maWx0ZXIoZnVuY3Rpb24gKHVuaXQpIHsgcmV0dXJuIHRoaXMkMVt1bml0XTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgICAgICB0aGlzLnVuaXRzLmZvckVhY2goZnVuY3Rpb24gKHVuaXQpIHsgcmV0dXJuIGVtcHR5KHRoaXMkMVt1bml0XSk7IH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAndmlzaWJpbGl0eWNoYW5nZScsXG5cbiAgICAgICAgICAgICAgICBlbDogZG9jdW1lbnQsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciB0aW1lc3BhbiA9IGdldFRpbWVTcGFuKHRoaXMuZGF0ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGltZXNwYW4udG90YWwgPD0gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRpbWVzcGFuLmRheXNcbiAgICAgICAgICAgICAgICAgICAgICAgID0gdGltZXNwYW4uaG91cnNcbiAgICAgICAgICAgICAgICAgICAgICAgID0gdGltZXNwYW4ubWludXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5zZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICA9IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy51bml0cy5mb3JFYWNoKGZ1bmN0aW9uICh1bml0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpZ2l0cyA9IFN0cmluZyhNYXRoLmZsb29yKHRpbWVzcGFuW3VuaXRdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gZGlnaXRzLmxlbmd0aCA8IDIgPyAoXCIwXCIgKyBkaWdpdHMpIDogZGlnaXRzO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBlbCA9IHRoaXMkMVt1bml0XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsLnRleHRDb250ZW50ICE9PSBkaWdpdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IGRpZ2l0cy5zcGxpdCgnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWdpdHMubGVuZ3RoICE9PSBlbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sKGVsLCBkaWdpdHMubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuICc8c3Bhbj48L3NwYW4+JzsgfSkuam9pbignJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBkaWdpdHMuZm9yRWFjaChmdW5jdGlvbiAoZGlnaXQsIGkpIHsgcmV0dXJuIGVsLmNoaWxkcmVuW2ldLnRleHRDb250ZW50ID0gZGlnaXQ7IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZSAmJiB0aGlzLnVuaXRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuJGVtaXQoKTsgfSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRUaW1lU3BhbihkYXRlKSB7XG5cbiAgICAgICAgdmFyIHRvdGFsID0gZGF0ZSAtIERhdGUubm93KCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvdGFsOiB0b3RhbCxcbiAgICAgICAgICAgIHNlY29uZHM6IHRvdGFsIC8gMTAwMCAlIDYwLFxuICAgICAgICAgICAgbWludXRlczogdG90YWwgLyAxMDAwIC8gNjAgJSA2MCxcbiAgICAgICAgICAgIGhvdXJzOiB0b3RhbCAvIDEwMDAgLyA2MCAvIDYwICUgMjQsXG4gICAgICAgICAgICBkYXlzOiB0b3RhbCAvIDEwMDAgLyA2MCAvIDYwIC8gMjRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0Q2xhc3MgPSAndWstYW5pbWF0aW9uLXRhcmdldCc7XG5cbiAgICB2YXIgQW5pbWF0ZSA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhbmltYXRpb246IDE1MFxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGVsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBhbmltYXRlOiBmdW5jdGlvbihhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgYWRkU3R5bGUoKTtcblxuICAgICAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHRvTm9kZXModGhpcy50YXJnZXQuY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIHZhciBwcm9wc0Zyb20gPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBnZXRQcm9wcyhlbCwgdHJ1ZSk7IH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIG9sZEhlaWdodCA9IGhlaWdodCh0aGlzLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgdmFyIG9sZFNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG5cbiAgICAgICAgICAgICAgICBhY3Rpb24oKTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKFRyYW5zaXRpb24uY2FuY2VsKTtcblxuICAgICAgICAgICAgICAgIHJlc2V0KHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGZhc3Rkb20uZmx1c2goKTtcblxuICAgICAgICAgICAgICAgIHZhciBuZXdIZWlnaHQgPSBoZWlnaHQodGhpcy50YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5jb25jYXQodG9Ob2Rlcyh0aGlzLnRhcmdldC5jaGlsZHJlbikuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIWluY2x1ZGVzKGNoaWxkcmVuLCBlbCk7IH0pKTtcblxuICAgICAgICAgICAgICAgIHZhciBwcm9wc1RvID0gY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gZWwucGFyZW50Tm9kZSAmJiBpIGluIHByb3BzRnJvbVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wc0Zyb21baV1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXNWaXNpYmxlKGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0UG9zaXRpb25XaXRoTWFyZ2luKGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge29wYWNpdHk6IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHtvcGFjaXR5OiBpc1Zpc2libGUoZWwpID8gMSA6IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlOyB9XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHByb3BzRnJvbSA9IHByb3BzVG8ubWFwKGZ1bmN0aW9uIChwcm9wcywgaSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZnJvbSA9IGNoaWxkcmVuW2ldLnBhcmVudE5vZGUgPT09IHRoaXMkMS50YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHNGcm9tW2ldIHx8IGdldFByb3BzKGNoaWxkcmVuW2ldKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZnJvbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmcm9tLm9wYWNpdHk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEoJ29wYWNpdHknIGluIHByb3BzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcGFjaXR5ID0gZnJvbS5vcGFjaXR5O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wYWNpdHkgJSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm9wYWNpdHkgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmcm9tLm9wYWNpdHk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyb207XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLnRhcmdldCwgdGFyZ2V0Q2xhc3MpO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBwcm9wc0Zyb21baV0gJiYgY3NzKGVsLCBwcm9wc0Zyb21baV0pOyB9KTtcbiAgICAgICAgICAgICAgICBjc3ModGhpcy50YXJnZXQsICdtaW5IZWlnaHQnLCBvbGRIZWlnaHQpO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGwod2luZG93LnBhZ2VYT2Zmc2V0LCBvbGRTY3JvbGxZKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEuYWxsKGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIHByb3BzRnJvbVtpXSAmJiBwcm9wc1RvW2ldXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFRyYW5zaXRpb24uc3RhcnQoZWwsIHByb3BzVG9baV0sIHRoaXMkMS5hbmltYXRpb24sICdlYXNlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogUHJvbWlzZSQxLnJlc29sdmUoKTsgfVxuICAgICAgICAgICAgICAgICkuY29uY2F0KFRyYW5zaXRpb24uc3RhcnQodGhpcy50YXJnZXQsIHttaW5IZWlnaHQ6IG5ld0hlaWdodH0sIHRoaXMuYW5pbWF0aW9uLCAnZWFzZScpKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBjc3MoZWwsIHtkaXNwbGF5OiBwcm9wc1RvW2ldLm9wYWNpdHkgPT09IDAgPyAnbm9uZScgOiAnJywgekluZGV4OiAnJ30pOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXQodGhpcyQxLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kdXBkYXRlKHRoaXMkMS50YXJnZXQpO1xuICAgICAgICAgICAgICAgIH0sIG5vb3ApO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0UHJvcHMoZWwsIG9wYWNpdHkpIHtcblxuICAgICAgICB2YXIgekluZGV4ID0gY3NzKGVsLCAnekluZGV4Jyk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmlzaWJsZShlbClcbiAgICAgICAgICAgID8gYXNzaWduKHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnJyxcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiBvcGFjaXR5ID8gY3NzKGVsLCAnb3BhY2l0eScpIDogJzAnLFxuICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IHpJbmRleCA9PT0gJ2F1dG8nID8gaW5kZXgoZWwpIDogekluZGV4XG4gICAgICAgICAgICB9LCBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXNldChlbCkge1xuICAgICAgICBjc3MoZWwuY2hpbGRyZW4sIHtcbiAgICAgICAgICAgIGhlaWdodDogJycsXG4gICAgICAgICAgICBsZWZ0OiAnJyxcbiAgICAgICAgICAgIG9wYWNpdHk6ICcnLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJycsXG4gICAgICAgICAgICBwb3NpdGlvbjogJycsXG4gICAgICAgICAgICB0b3A6ICcnLFxuICAgICAgICAgICAgd2lkdGg6ICcnXG4gICAgICAgIH0pO1xuICAgICAgICByZW1vdmVDbGFzcyhlbCwgdGFyZ2V0Q2xhc3MpO1xuICAgICAgICBjc3MoZWwsICdtaW5IZWlnaHQnLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UG9zaXRpb25XaXRoTWFyZ2luKGVsKSB7XG4gICAgICAgIHZhciByZWYgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5oZWlnaHQ7XG4gICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZi53aWR0aDtcbiAgICAgICAgdmFyIHJlZiQxID0gcG9zaXRpb24oZWwpO1xuICAgICAgICB2YXIgdG9wID0gcmVmJDEudG9wO1xuICAgICAgICB2YXIgbGVmdCA9IHJlZiQxLmxlZnQ7XG4gICAgICAgIHRvcCArPSB0b0Zsb2F0KGNzcyhlbCwgJ21hcmdpblRvcCcpKTtcblxuICAgICAgICByZXR1cm4ge3RvcDogdG9wLCBsZWZ0OiBsZWZ0LCBoZWlnaHQ6IGhlaWdodCQkMSwgd2lkdGg6IHdpZHRoJCQxfTtcbiAgICB9XG5cbiAgICB2YXIgc3R5bGUkMTtcblxuICAgIGZ1bmN0aW9uIGFkZFN0eWxlKCkge1xuICAgICAgICBpZiAoIXN0eWxlJDEpIHtcbiAgICAgICAgICAgIHN0eWxlJDEgPSBhcHBlbmQoZG9jdW1lbnQuaGVhZCwgJzxzdHlsZT4nKS5zaGVldDtcbiAgICAgICAgICAgIHN0eWxlJDEuaW5zZXJ0UnVsZShcbiAgICAgICAgICAgICAgICAoXCIuXCIgKyB0YXJnZXRDbGFzcyArIFwiID4gKiB7XFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcXG4gICAgICAgICAgICAgICAgfVwiKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBGaWx0ZXIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQW5pbWF0ZV0sXG5cbiAgICAgICAgYXJnczogJ3RhcmdldCcsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldDogQm9vbGVhbixcbiAgICAgICAgICAgIHNlbEFjdGl2ZTogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgICAgIHNlbEFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLWZpbHRlci1jb250cm9sJyxcbiAgICAgICAgICAgIGNsczogJ3VrLWFjdGl2ZScsXG4gICAgICAgICAgICBhbmltYXRpb246IDI1MFxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGF0dHJJdGVtID0gcmVmLmF0dHJJdGVtO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKChcIltcIiArICh0aGlzLmF0dHJJdGVtKSArIFwiXSxbZGF0YS1cIiArICh0aGlzLmF0dHJJdGVtKSArIFwiXVwiKSwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKHRhcmdldCwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFwiW1wiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdLFtkYXRhLVwiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdXCIpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5KGUuY3VycmVudCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxBY3RpdmUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgYWN0aXZlcyA9ICQkKHRoaXMuc2VsQWN0aXZlLCB0aGlzLiRlbCk7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzLCBpbmNsdWRlcyhhY3RpdmVzLCBlbCkpOyB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcblxuICAgICAgICAgICAgdmFyIHRvZ2dsZXMgPSBkYXRhJCQxLnRvZ2dsZXM7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBkYXRhJCQxLmNoaWxkcmVuO1xuICAgICAgICAgICAgaWYgKGlzRXF1YWxMaXN0KHRvZ2dsZXMsIHRoaXMudG9nZ2xlcywgZmFsc2UpICYmIGlzRXF1YWxMaXN0KGNoaWxkcmVuLCB0aGlzLnRhcmdldC5jaGlsZHJlbiwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhJCQxLnRvZ2dsZXMgPSB0aGlzLnRvZ2dsZXM7XG4gICAgICAgICAgICBkYXRhJCQxLmNoaWxkcmVuID0gdGhpcy50YXJnZXQuY2hpbGRyZW47XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUodGhpcy5nZXRTdGF0ZSgpLCBmYWxzZSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGFwcGx5OiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUobWVyZ2VTdGF0ZShlbCwgdGhpcy5hdHRySXRlbSwgdGhpcy5nZXRTdGF0ZSgpKSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRTdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGhhc0NsYXNzKGl0ZW0sIHRoaXMkMS5jbHMpOyB9KVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChzdGF0ZSwgZWwpIHsgcmV0dXJuIG1lcmdlU3RhdGUoZWwsIHRoaXMkMS5hdHRySXRlbSwgc3RhdGUpOyB9LCB7ZmlsdGVyOiB7Jyc6ICcnfSwgc29ydDogW119KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNldFN0YXRlOiBmdW5jdGlvbihzdGF0ZSwgYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICggYW5pbWF0ZSQkMSA9PT0gdm9pZCAwICkgYW5pbWF0ZSQkMSA9IHRydWU7XG5cblxuICAgICAgICAgICAgICAgIHN0YXRlID0gYXNzaWduKHtmaWx0ZXI6IHsnJzogJyd9LCBzb3J0OiBbXX0sIHN0YXRlKTtcblxuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdiZWZvcmVGaWx0ZXInLCBbdGhpcywgc3RhdGVdKTtcblxuICAgICAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHRvTm9kZXModGhpcy50YXJnZXQuY2hpbGRyZW4pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNscywgbWF0Y2hGaWx0ZXIoZWwsIHRoaXMkMS5hdHRySXRlbSwgc3RhdGUpKTsgfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgYXBwbHkkJDEgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gZ2V0U2VsZWN0b3Ioc3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBjc3MoZWwsICdkaXNwbGF5Jywgc2VsZWN0b3IgJiYgIW1hdGNoZXMoZWwsIHNlbGVjdG9yKSA/ICdub25lJyA6ICcnKTsgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHN0YXRlLnNvcnQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzb3J0ID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb3JkZXIgPSByZWZbMV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3J0ZWQgPSBzb3J0SXRlbXMoY2hpbGRyZW4sIHNvcnQsIG9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNFcXVhbExpc3Qoc29ydGVkLCBjaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGFwcGVuZCh0aGlzJDEudGFyZ2V0LCBlbCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKGFuaW1hdGUkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRlKGFwcGx5JCQxKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRyaWdnZXIodGhpcyQxLiRlbCwgJ2FmdGVyRmlsdGVyJywgW3RoaXMkMV0pOyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhcHBseSQkMSgpO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYWZ0ZXJGaWx0ZXInLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRGaWx0ZXIoZWwsIGF0dHIkJDEpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlT3B0aW9ucyhkYXRhKGVsLCBhdHRyJCQxKSwgWydmaWx0ZXInXSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VTdGF0ZShlbCwgYXR0ciQkMSwgc3RhdGUpIHtcblxuICAgICAgICB0b05vZGVzKGVsKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgdmFyIGZpbHRlckJ5ID0gZ2V0RmlsdGVyKGVsLCBhdHRyJCQxKTtcbiAgICAgICAgICAgIHZhciBmaWx0ZXIkJDEgPSBmaWx0ZXJCeS5maWx0ZXI7XG4gICAgICAgICAgICB2YXIgZ3JvdXAgPSBmaWx0ZXJCeS5ncm91cDtcbiAgICAgICAgICAgIHZhciBzb3J0ID0gZmlsdGVyQnkuc29ydDtcbiAgICAgICAgICAgIHZhciBvcmRlciA9IGZpbHRlckJ5Lm9yZGVyOyBpZiAoIG9yZGVyID09PSB2b2lkIDAgKSBvcmRlciA9ICdhc2MnO1xuXG4gICAgICAgICAgICBpZiAoZmlsdGVyJCQxIHx8IGlzVW5kZWZpbmVkKHNvcnQpKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHN0YXRlLmZpbHRlclsnJ107XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmZpbHRlcltncm91cF0gPSBmaWx0ZXIkJDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmlsdGVyID0geycnOiBmaWx0ZXIkJDF9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHNvcnQpKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuc29ydCA9IFtzb3J0LCBvcmRlcl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXRjaEZpbHRlcihlbCwgYXR0ciQkMSwgcmVmKSB7XG4gICAgICAgIHZhciBzdGF0ZUZpbHRlciA9IHJlZi5maWx0ZXI7XG4gICAgICAgIHZhciByZWZfc29ydCA9IHJlZi5zb3J0O1xuICAgICAgICB2YXIgc3RhdGVTb3J0ID0gcmVmX3NvcnRbMF07XG4gICAgICAgIHZhciBzdGF0ZU9yZGVyID0gcmVmX3NvcnRbMV07XG5cbiAgICAgICAgdmFyIHJlZiQxID0gZ2V0RmlsdGVyKGVsLCBhdHRyJCQxKTtcbiAgICAgICAgdmFyIGZpbHRlciQkMSA9IHJlZiQxLmZpbHRlcjtcbiAgICAgICAgdmFyIGdyb3VwID0gcmVmJDEuZ3JvdXA7IGlmICggZ3JvdXAgPT09IHZvaWQgMCApIGdyb3VwID0gJyc7XG4gICAgICAgIHZhciBzb3J0ID0gcmVmJDEuc29ydDtcbiAgICAgICAgdmFyIG9yZGVyID0gcmVmJDEub3JkZXI7IGlmICggb3JkZXIgPT09IHZvaWQgMCApIG9yZGVyID0gJ2FzYyc7XG4gICAgICAgIHJldHVybiBCb29sZWFuKFxuICAgICAgICAgICAgKGZpbHRlciQkMSB8fCBpc1VuZGVmaW5lZChzb3J0KSkgJiYgZ3JvdXAgaW4gc3RhdGVGaWx0ZXIgJiYgKGZpbHRlciQkMSA9PT0gc3RhdGVGaWx0ZXJbZ3JvdXBdIHx8IGlzVW5kZWZpbmVkKGZpbHRlciQkMSkgJiYgIXN0YXRlRmlsdGVyW2dyb3VwXSlcbiAgICAgICAgICAgIHx8IHN0YXRlU29ydCAmJiBzb3J0ICYmIHN0YXRlU29ydCA9PT0gc29ydCAmJiBzdGF0ZU9yZGVyID09PSBvcmRlclxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRXF1YWxMaXN0KGxpc3RBLCBsaXN0Qiwgc3RyaWN0KSB7XG4gICAgICAgIGlmICggc3RyaWN0ID09PSB2b2lkIDAgKSBzdHJpY3QgPSB0cnVlO1xuXG5cbiAgICAgICAgbGlzdEEgPSB0b05vZGVzKGxpc3RBKTtcbiAgICAgICAgbGlzdEIgPSB0b05vZGVzKGxpc3RCKTtcblxuICAgICAgICByZXR1cm4gbGlzdEEubGVuZ3RoID09PSBsaXN0Qi5sZW5ndGhcbiAgICAgICAgICAgICYmIGxpc3RBLmV2ZXJ5KGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gc3RyaWN0ID8gZWwgPT09IGxpc3RCW2ldIDogfmxpc3RCLmluZGV4T2YoZWwpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZWxlY3RvcihyZWYpIHtcbiAgICAgICAgdmFyIGZpbHRlciQkMSA9IHJlZi5maWx0ZXI7XG5cbiAgICAgICAgdmFyIHNlbGVjdG9yID0gJyc7XG4gICAgICAgIGVhY2goZmlsdGVyJCQxLCBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHNlbGVjdG9yICs9IHZhbHVlIHx8ICcnOyB9KTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNvcnRJdGVtcyhub2Rlcywgc29ydCwgb3JkZXIpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMobm9kZXMpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGRhdGEoYSwgc29ydCkubG9jYWxlQ29tcGFyZShkYXRhKGIsIHNvcnQpKSAqIChvcmRlciA9PT0gJ2FzYycgfHwgLTEpOyB9KTtcbiAgICB9XG5cbiAgICB2YXIgQW5pbWF0aW9ucyA9IHtcblxuICAgICAgICBzbGlkZToge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoZGlyICogLTEwMCl9LFxuICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoKX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGVkKGN1cnJlbnQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50LCBkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoZGlyICogLTEwMCAqIHBlcmNlbnQpfSxcbiAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKGRpciAqIDEwMCAqICgxIC0gcGVyY2VudCkpfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZWQoZWwpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKGNzcyhlbCwgJ3RyYW5zZm9ybScpLnNwbGl0KCcsJylbNF0gLyBlbC5vZmZzZXRXaWR0aCkgfHwgMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUodmFsdWUsIHVuaXQpIHtcbiAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdm9pZCAwICkgdmFsdWUgPSAwO1xuICAgICAgICBpZiAoIHVuaXQgPT09IHZvaWQgMCApIHVuaXQgPSAnJSc7XG5cbiAgICAgICAgcmV0dXJuIChcInRyYW5zbGF0ZVgoXCIgKyB2YWx1ZSArICh2YWx1ZSA/IHVuaXQgOiAnJykgKyBcIilcIik7IC8vIGN1cnJlbnRseSBub3QgdHJhbnNsYXRlM2QgdG8gc3VwcG9ydCBJRSwgdHJhbnNsYXRlM2Qgd2l0aGluIHRyYW5zbGF0ZTNkIGRvZXMgbm90IHdvcmsgd2hpbGUgdHJhbnNpdGlvbmluZ1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYWxlM2QodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIChcInNjYWxlM2QoXCIgKyB2YWx1ZSArIFwiLCBcIiArIHZhbHVlICsgXCIsIDEpXCIpO1xuICAgIH1cblxuICAgIHZhciBBbmltYXRpb25zJDEgPSBhc3NpZ24oe30sIEFuaW1hdGlvbnMsIHtcblxuICAgICAgICBmYWRlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAwfSxcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDF9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAtIGNzcyhjdXJyZW50LCAnb3BhY2l0eScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDEgLSBwZXJjZW50fSxcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IHBlcmNlbnR9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHNjYWxlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAwLCB0cmFuc2Zvcm06IHNjYWxlM2QoMSAtIC4yKX0sXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxLCB0cmFuc2Zvcm06IHNjYWxlM2QoMSl9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAtIGNzcyhjdXJyZW50LCAnb3BhY2l0eScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDEgLSBwZXJjZW50LCB0cmFuc2Zvcm06IHNjYWxlM2QoMSAtIC4yICogcGVyY2VudCl9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgLSAuMiArIC4yICogcGVyY2VudCl9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIFRyYW5zaXRpb25lcihwcmV2LCBuZXh0LCBkaXIsIHJlZikge1xuICAgICAgICB2YXIgYW5pbWF0aW9uID0gcmVmLmFuaW1hdGlvbjtcbiAgICAgICAgdmFyIGVhc2luZyA9IHJlZi5lYXNpbmc7XG5cblxuICAgICAgICB2YXIgcGVyY2VudCA9IGFuaW1hdGlvbi5wZXJjZW50O1xuICAgICAgICB2YXIgdHJhbnNsYXRlID0gYW5pbWF0aW9uLnRyYW5zbGF0ZTtcbiAgICAgICAgdmFyIHNob3cgPSBhbmltYXRpb24uc2hvdzsgaWYgKCBzaG93ID09PSB2b2lkIDAgKSBzaG93ID0gbm9vcDtcbiAgICAgICAgdmFyIHByb3BzID0gc2hvdyhkaXIpO1xuICAgICAgICB2YXIgZGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQoKTtcblxuICAgICAgICByZXR1cm4ge1xuXG4gICAgICAgICAgICBkaXI6IGRpcixcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oZHVyYXRpb24sIHBlcmNlbnQsIGxpbmVhcikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA9PT0gdm9pZCAwICkgcGVyY2VudCA9IDA7XG5cblxuICAgICAgICAgICAgICAgIHZhciB0aW1pbmcgPSBsaW5lYXIgPyAnbGluZWFyJyA6IGVhc2luZztcbiAgICAgICAgICAgICAgICBkdXJhdGlvbiAtPSBNYXRoLnJvdW5kKGR1cmF0aW9uICogY2xhbXAocGVyY2VudCwgLTEsIDEpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlKHBlcmNlbnQpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZShuZXh0LCAnaXRlbWluJywge3BlcmNlbnQ6IHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZShwcmV2LCAnaXRlbW91dCcsIHtwZXJjZW50OiAxIC0gcGVyY2VudCwgZHVyYXRpb246IGR1cmF0aW9uLCB0aW1pbmc6IHRpbWluZywgZGlyOiBkaXJ9KTtcblxuICAgICAgICAgICAgICAgIFByb21pc2UkMS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KG5leHQsIHByb3BzWzFdLCBkdXJhdGlvbiwgdGltaW5nKSxcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydChwcmV2LCBwcm9wc1swXSwgZHVyYXRpb24sIHRpbWluZylcbiAgICAgICAgICAgICAgICBdKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9LCBub29wKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zaXRpb24uc3RvcChbbmV4dCwgcHJldl0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChbbmV4dCwgcHJldl0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gcHJvcHNbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKFtuZXh0LCBwcmV2XSwgcHJvcCwgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGZvcndhcmQ6IGZ1bmN0aW9uKGR1cmF0aW9uLCBwZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gdGhpcy5wZXJjZW50KCk7XG5cbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChbbmV4dCwgcHJldl0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3coZHVyYXRpb24sIHBlcmNlbnQsIHRydWUpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcblxuICAgICAgICAgICAgICAgIHZhciBwcm9wcyA9IHRyYW5zbGF0ZShwZXJjZW50LCBkaXIpO1xuICAgICAgICAgICAgICAgIGNzcyhuZXh0LCBwcm9wc1sxXSk7XG4gICAgICAgICAgICAgICAgY3NzKHByZXYsIHByb3BzWzBdKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKG5leHQsICdpdGVtdHJhbnNsYXRlaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKHByZXYsICdpdGVtdHJhbnNsYXRlb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkaXI6IGRpcn0pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGVyY2VudChwcmV2IHx8IG5leHQsIG5leHQsIGRpcik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXREaXN0YW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXYub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyaWdnZXJVcGRhdGUoZWwsIHR5cGUsIGRhdGEkJDEpIHtcbiAgICAgICAgdHJpZ2dlcihlbCwgY3JlYXRlRXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlLCBkYXRhJCQxKSk7XG4gICAgfVxuXG4gICAgdmFyIFNsaWRlckF1dG9wbGF5ID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBhdXRvcGxheTogQm9vbGVhbixcbiAgICAgICAgICAgIGF1dG9wbGF5SW50ZXJ2YWw6IE51bWJlcixcbiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGF1dG9wbGF5SW50ZXJ2YWw6IDcwMDAsXG4gICAgICAgICAgICBwYXVzZU9uSG92ZXI6IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5zdGFydEF1dG9wbGF5KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd2aXNpYmlsaXR5Y2hhbmdlJyxcblxuICAgICAgICAgICAgICAgIGVsOiBkb2N1bWVudCxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3BBdXRvcGxheSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEF1dG9wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJEb3duLFxuICAgICAgICAgICAgICAgIGhhbmRsZXI6ICdzdG9wQXV0b3BsYXknXG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdtb3VzZWVudGVyJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dG9wbGF5O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hvdmVyaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdtb3VzZWxlYXZlJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dG9wbGF5O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hvdmVyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHN0YXJ0QXV0b3BsYXk6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BBdXRvcGxheSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b3BsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyByZXR1cm4gISh0aGlzJDEuaXNIb3ZlcmluZyAmJiB0aGlzJDEucGF1c2VPbkhvdmVyKSAmJiAhdGhpcyQxLnN0YWNrLmxlbmd0aCAmJiB0aGlzJDEuc2hvdygnbmV4dCcpOyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvcGxheUludGVydmFsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdG9wQXV0b3BsYXk6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmludGVydmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2xpZGVyRHJhZyA9IHtcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0aHJlc2hvbGQ6IDEwLFxuICAgICAgICAgICAgcHJldmVudENhdGNoOiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgWydzdGFydCcsICdtb3ZlJywgJ2VuZCddLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGZuID0gdGhpcyQxW2tleV07XG4gICAgICAgICAgICAgICAgdGhpcyQxW2tleV0gPSBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBnZXRQb3MkMShlKS54ICogKGlzUnRsID8gLTEgOiAxKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucHJldlBvcyA9IHBvcyAhPT0gdGhpcyQxLnBvcyA/IHRoaXMkMS5wb3MgOiB0aGlzJDEucHJldlBvcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvcyA9IHBvcztcblxuICAgICAgICAgICAgICAgICAgICBmbihlKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiBwb2ludGVyRG93bixcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzU2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkgJiYgaGFzVGV4dE5vZGVzT25seShlLnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IGUuYnV0dG9uID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5sZW5ndGggPCAyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLnByZXZlbnRDYXRjaFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2RyYWdzdGFydCcsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZyA9IHRoaXMucG9zO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RyYW5zaXRpb25lcikge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IHRoaXMuX3RyYW5zaXRpb25lci5wZXJjZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZyArPSB0aGlzLl90cmFuc2l0aW9uZXIuZ2V0RGlzdGFuY2UoKSAqIHRoaXMucGVyY2VudCAqIHRoaXMuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci50cmFuc2xhdGUodGhpcy5wZXJjZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyLmNhbmNlbCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sgPSBbXTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldkluZGV4ID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZE1vdmUgPSBvbihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSwge2NhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlfSk7XG4gICAgICAgICAgICAgICAgb24od2luZG93LCAnc2Nyb2xsJywgdGhpcy51bmJpbmRNb3ZlKTtcbiAgICAgICAgICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlclVwLCB0aGlzLmVuZCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1vdmU6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gdGhpcy5wb3MgLSB0aGlzLmRyYWc7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPT09IDAgfHwgdGhpcy5wcmV2UG9zID09PSB0aGlzLnBvcyB8fCAhdGhpcy5kcmFnZ2luZyAmJiBNYXRoLmFicyhkaXN0YW5jZSkgPCB0aGlzLnRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS5jYW5jZWxhYmxlICYmIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlyID0gKGRpc3RhbmNlIDwgMCA/IDEgOiAtMSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgc2xpZGVzID0gcmVmLnNsaWRlcztcbiAgICAgICAgICAgICAgICB2YXIgcmVmJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBwcmV2SW5kZXggPSByZWYkMS5wcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgdmFyIGRpcyA9IE1hdGguYWJzKGRpc3RhbmNlKTtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dEluZGV4ID0gdGhpcy5nZXRJbmRleChwcmV2SW5kZXggKyB0aGlzLmRpciwgcHJldkluZGV4KTtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSB0aGlzLl9nZXREaXN0YW5jZShwcmV2SW5kZXgsIG5leHRJbmRleCkgfHwgc2xpZGVzW3ByZXZJbmRleF0ub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICB3aGlsZSAobmV4dEluZGV4ICE9PSBwcmV2SW5kZXggJiYgZGlzID4gd2lkdGgkJDEpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuZHJhZyAtPSB3aWR0aCQkMSAqIHRoaXMkMS5kaXI7XG5cbiAgICAgICAgICAgICAgICAgICAgcHJldkluZGV4ID0gbmV4dEluZGV4O1xuICAgICAgICAgICAgICAgICAgICBkaXMgLT0gd2lkdGgkJDE7XG4gICAgICAgICAgICAgICAgICAgIG5leHRJbmRleCA9IHRoaXMkMS5nZXRJbmRleChwcmV2SW5kZXggKyB0aGlzJDEuZGlyLCBwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCQkMSA9IHRoaXMkMS5fZ2V0RGlzdGFuY2UocHJldkluZGV4LCBuZXh0SW5kZXgpIHx8IHNsaWRlc1twcmV2SW5kZXhdLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50ID0gZGlzIC8gd2lkdGgkJDE7XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHNsaWRlc1twcmV2SW5kZXhdO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gc2xpZGVzW25leHRJbmRleF07XG4gICAgICAgICAgICAgICAgdmFyIGNoYW5nZWQgPSB0aGlzLmluZGV4ICE9PSBuZXh0SW5kZXg7XG4gICAgICAgICAgICAgICAgdmFyIGVkZ2UgPSBwcmV2SW5kZXggPT09IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgIHZhciBpdGVtU2hvd247XG5cbiAgICAgICAgICAgICAgICBbdGhpcy5pbmRleCwgdGhpcy5wcmV2SW5kZXhdLmZpbHRlcihmdW5jdGlvbiAoaSkgeyByZXR1cm4gIWluY2x1ZGVzKFtuZXh0SW5kZXgsIHByZXZJbmRleF0sIGkpOyB9KS5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoc2xpZGVzW2ldLCAnaXRlbWhpZGRlbicsIFt0aGlzJDFdKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNob3duID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wcmV2SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IHByZXZJbmRleCAmJiB0aGlzLnByZXZJbmRleCAhPT0gcHJldkluZGV4IHx8IGl0ZW1TaG93bikge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHNsaWRlc1t0aGlzLmluZGV4XSwgJ2l0ZW1zaG93bicsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSBuZXh0SW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgIWVkZ2UgJiYgdHJpZ2dlcihwcmV2LCAnYmVmb3JlaXRlbWhpZGUnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdiZWZvcmVpdGVtc2hvdycsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyID0gdGhpcy5fdHJhbnNsYXRlKE1hdGguYWJzKHRoaXMucGVyY2VudCksIHByZXYsICFlZGdlICYmIG5leHQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgIWVkZ2UgJiYgdHJpZ2dlcihwcmV2LCAnaXRlbWhpZGUnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdpdGVtc2hvdycsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBlbmQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgb2ZmKHdpbmRvdywgJ3Njcm9sbCcsIHRoaXMudW5iaW5kTW92ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRNb3ZlKCk7XG4gICAgICAgICAgICAgICAgb2ZmKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IHRoaXMucHJldkluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnQgPSAxIC0gdGhpcy5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXIgKj0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93KGZhbHNlLCB0aGlzLmluZGV4LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkaXJDaGFuZ2UgPSAoaXNSdGwgPyB0aGlzLmRpciAqIChpc1J0bCA/IDEgOiAtMSkgOiB0aGlzLmRpcikgPCAwID09PSB0aGlzLnByZXZQb3MgPiB0aGlzLnBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSBkaXJDaGFuZ2UgPyB0aGlzLmluZGV4IDogdGhpcy5wcmV2SW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnQgPSAxIC0gdGhpcy5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codGhpcy5kaXIgPiAwICYmICFkaXJDaGFuZ2UgfHwgdGhpcy5kaXIgPCAwICYmIGRpckNoYW5nZSA/ICduZXh0JyA6ICdwcmV2aW91cycsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcHJldmVudENsaWNrKCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdcbiAgICAgICAgICAgICAgICAgICAgPSB0aGlzLnBlcmNlbnRcbiAgICAgICAgICAgICAgICAgICAgPSBudWxsO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGhhc1RleHROb2Rlc09ubHkoZWwpIHtcbiAgICAgICAgcmV0dXJuICFlbC5jaGlsZHJlbi5sZW5ndGggJiYgZWwuY2hpbGROb2Rlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIFNsaWRlck5hdiA9IHtcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBzZWxOYXY6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgbmF2OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzZWxOYXYgPSByZWYuc2VsTmF2O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsTmF2LCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbmF2SXRlbVNlbGVjdG9yOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXR0ckl0ZW0gPSByZWYuYXR0ckl0ZW07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFwiW1wiICsgYXR0ckl0ZW0gKyBcIl0sW2RhdGEtXCIgKyBhdHRySXRlbSArIFwiXVwiKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG5hdkl0ZW1zOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGhpcy5uYXZJdGVtU2VsZWN0b3IsICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdiAmJiB0aGlzLmxlbmd0aCAhPT0gdGhpcy5uYXYuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sKHRoaXMubmF2LCB0aGlzLnNsaWRlcy5tYXAoZnVuY3Rpb24gKF8sIGkpIHsgcmV0dXJuIChcIjxsaSBcIiArICh0aGlzJDEuYXR0ckl0ZW0pICsgXCI9XFxcIlwiICsgaSArIFwiXFxcIj48YSBocmVmPVxcXCIjXFxcIj48L2E+PC9saT5cIik7IH0pLmpvaW4oJycpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKCQkKHRoaXMubmF2SXRlbVNlbGVjdG9yLCB0aGlzLiRlbCkuY29uY2F0KHRoaXMubmF2KSwgJ3VrLWhpZGRlbicsICF0aGlzLm1heEluZGV4KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5hdigpO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uYXZJdGVtU2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZGF0YShlLmN1cnJlbnQsIHRoaXMuYXR0ckl0ZW0pKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtc2hvdycsXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3VwZGF0ZU5hdidcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB1cGRhdGVOYXY6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuZ2V0VmFsaWRJbmRleCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubmF2SXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgY21kID0gZGF0YShlbCwgdGhpcyQxLmF0dHJJdGVtKTtcblxuICAgICAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcyQxLmNsc0FjdGl2ZSwgdG9OdW1iZXIoY21kKSA9PT0gaSk7XG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCAndWstaW52aXNpYmxlJywgdGhpcyQxLmZpbml0ZSAmJiAoY21kID09PSAncHJldmlvdXMnICYmIGkgPT09IDAgfHwgY21kID09PSAnbmV4dCcgJiYgaSA+PSB0aGlzJDEubWF4SW5kZXgpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2xpZGVyID0ge1xuXG4gICAgICAgIGF0dHJzOiB0cnVlLFxuXG4gICAgICAgIG1peGluczogW1NsaWRlckF1dG9wbGF5LCBTbGlkZXJEcmFnLCBTbGlkZXJOYXZdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHNBY3RpdmF0ZWQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBlYXNpbmc6IFN0cmluZyxcbiAgICAgICAgICAgIGluZGV4OiBOdW1iZXIsXG4gICAgICAgICAgICBmaW5pdGU6IEJvb2xlYW4sXG4gICAgICAgICAgICB2ZWxvY2l0eTogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGVhc2luZzogJ2Vhc2UnLFxuICAgICAgICAgICAgZmluaXRlOiBmYWxzZSxcbiAgICAgICAgICAgIHZlbG9jaXR5OiAxLFxuICAgICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgICBzdGFjazogW10sXG4gICAgICAgICAgICBwZXJjZW50OiAwLFxuICAgICAgICAgICAgY2xzQWN0aXZlOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsc0FjdGl2YXRlZDogZmFsc2UsXG4gICAgICAgICAgICBUcmFuc2l0aW9uZXI6IGZhbHNlLFxuICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IHt9XG4gICAgICAgIH0pOyB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGR1cmF0aW9uOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB2ZWxvY2l0eSA9IHJlZi52ZWxvY2l0eTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBzcGVlZFVwKCRlbC5vZmZzZXRXaWR0aCAvIHZlbG9jaXR5KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGxlbmd0aDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzLmxlbmd0aDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGxpc3Q6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbExpc3QgPSByZWYuc2VsTGlzdDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKHNlbExpc3QsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBtYXhJbmRleDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNsaWRlc1NlbGVjdG9yOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsTGlzdCA9IHJlZi5zZWxMaXN0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChzZWxMaXN0ICsgXCIgPiAqXCIpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2xpZGVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Ob2Rlcyh0aGlzLmxpc3QuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiB7XG5cbiAgICAgICAgICAgIGl0ZW1zaG93bjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kdXBkYXRlKHRoaXMubGlzdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGluZGV4JCQxLCBmb3JjZSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICggZm9yY2UgPT09IHZvaWQgMCApIGZvcmNlID0gZmFsc2U7XG5cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdnaW5nIHx8ICF0aGlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHN0YWNrID0gcmVmLnN0YWNrO1xuICAgICAgICAgICAgICAgIHZhciBxdWV1ZUluZGV4ID0gZm9yY2UgPyAwIDogc3RhY2subGVuZ3RoO1xuICAgICAgICAgICAgICAgIHZhciByZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhY2suc3BsaWNlKHF1ZXVlSW5kZXgsIDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zaG93KHN0YWNrLnNoaWZ0KCksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHN0YWNrW2ZvcmNlID8gJ3Vuc2hpZnQnIDogJ3B1c2gnXShpbmRleCQkMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWZvcmNlICYmIHN0YWNrLmxlbmd0aCA+IDEpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIuZm9yd2FyZChNYXRoLm1pbih0aGlzLmR1cmF0aW9uLCAyMDApKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJldkluZGV4ID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICB2YXIgcHJldiA9IGhhc0NsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSkgJiYgdGhpcy5zbGlkZXNbcHJldkluZGV4XTtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dEluZGV4ID0gdGhpcy5nZXRJbmRleChpbmRleCQkMSwgdGhpcy5pbmRleCk7XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSB0aGlzLnNsaWRlc1tuZXh0SW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByZXYgPT09IG5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZGlyID0gZ2V0RGlyZWN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldkluZGV4ID0gcHJldkluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSBuZXh0SW5kZXg7XG5cbiAgICAgICAgICAgICAgICBwcmV2ICYmIHRyaWdnZXIocHJldiwgJ2JlZm9yZWl0ZW1oaWRlJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRyaWdnZXIobmV4dCwgJ2JlZm9yZWl0ZW1zaG93JywgW3RoaXMsIHByZXZdKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5wcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXMuX3Nob3cocHJldiwgbmV4dCwgZm9yY2UpLnRoZW4oZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHByZXYgJiYgdHJpZ2dlcihwcmV2LCAnaXRlbWhpZGRlbicsIFt0aGlzJDFdKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihuZXh0LCAnaXRlbXNob3duJywgW3RoaXMkMV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYXN0ZG9tLndyaXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNob3coc3RhY2suc2hpZnQoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl90cmFuc2l0aW9uZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHByZXYgJiYgdHJpZ2dlcihwcmV2LCAnaXRlbWhpZGUnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93JywgW3RoaXNdKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRJbmRleDogZnVuY3Rpb24oaW5kZXgkJDEsIHByZXYpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2ID09PSB2b2lkIDAgKSBwcmV2ID0gdGhpcy5pbmRleDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBjbGFtcChnZXRJbmRleChpbmRleCQkMSwgdGhpcy5zbGlkZXMsIHByZXYsIHRoaXMuZmluaXRlKSwgMCwgdGhpcy5tYXhJbmRleCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRWYWxpZEluZGV4OiBmdW5jdGlvbihpbmRleCQkMSwgcHJldkluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpbmRleCQkMSA9PT0gdm9pZCAwICkgaW5kZXgkJDEgPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggcHJldkluZGV4ID09PSB2b2lkIDAgKSBwcmV2SW5kZXggPSB0aGlzLnByZXZJbmRleDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEluZGV4KGluZGV4JCQxLCBwcmV2SW5kZXgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3Nob3c6IGZ1bmN0aW9uKHByZXYsIG5leHQsIGZvcmNlKSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIgPSB0aGlzLl9nZXRUcmFuc2l0aW9uZXIoXG4gICAgICAgICAgICAgICAgICAgIHByZXYsXG4gICAgICAgICAgICAgICAgICAgIG5leHQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyLFxuICAgICAgICAgICAgICAgICAgICBhc3NpZ24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBmb3JjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV4dC5vZmZzZXRXaWR0aCA8IDYwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCknIC8qIGVhc2VPdXRRdWFkICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2N1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSknIC8qIGVhc2VPdXRRdWFydCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5lYXNpbmdcbiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy50cmFuc2l0aW9uT3B0aW9ucylcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFmb3JjZSAmJiAhcHJldikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIudHJhbnNsYXRlKDEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5zdGFjaztcbiAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gcmVmLmxlbmd0aDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNpdGlvbmVyW2xlbmd0aCA+IDEgPyAnZm9yd2FyZCcgOiAnc2hvdyddKGxlbmd0aCA+IDEgPyBNYXRoLm1pbih0aGlzLmR1cmF0aW9uLCA3NSArIDc1IC8gKGxlbmd0aCAtIDEpKSA6IHRoaXMuZHVyYXRpb24sIHRoaXMucGVyY2VudCk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9nZXREaXN0YW5jZTogZnVuY3Rpb24ocHJldiwgbmV4dCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKHByZXYsIHByZXYgIT09IG5leHQgJiYgbmV4dCkuZ2V0RGlzdGFuY2UoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF90cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIHByZXYsIG5leHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXYgPT09IHZvaWQgMCApIHByZXYgPSB0aGlzLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoIG5leHQgPT09IHZvaWQgMCApIG5leHQgPSB0aGlzLmluZGV4O1xuXG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zaXRpb25lciA9IHRoaXMuX2dldFRyYW5zaXRpb25lcihwcmV2ICE9PSBuZXh0ID8gcHJldiA6IGZhbHNlLCBuZXh0KTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uZXIudHJhbnNsYXRlKHBlcmNlbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uZXI7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfZ2V0VHJhbnNpdGlvbmVyOiBmdW5jdGlvbihwcmV2LCBuZXh0LCBkaXIsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXYgPT09IHZvaWQgMCApIHByZXYgPSB0aGlzLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoIG5leHQgPT09IHZvaWQgMCApIG5leHQgPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggZGlyID09PSB2b2lkIDAgKSBkaXIgPSB0aGlzLmRpciB8fCAxO1xuICAgICAgICAgICAgICAgIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHRoaXMudHJhbnNpdGlvbk9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRoaXMuVHJhbnNpdGlvbmVyKFxuICAgICAgICAgICAgICAgICAgICBpc051bWJlcihwcmV2KSA/IHRoaXMuc2xpZGVzW3ByZXZdIDogcHJldixcbiAgICAgICAgICAgICAgICAgICAgaXNOdW1iZXIobmV4dCkgPyB0aGlzLnNsaWRlc1tuZXh0XSA6IG5leHQsXG4gICAgICAgICAgICAgICAgICAgIGRpciAqIChpc1J0bCA/IC0xIDogMSksXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXREaXJlY3Rpb24oaW5kZXgkJDEsIHByZXZJbmRleCkge1xuICAgICAgICByZXR1cm4gaW5kZXgkJDEgPT09ICduZXh0J1xuICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICA6IGluZGV4JCQxID09PSAncHJldmlvdXMnXG4gICAgICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgICAgIDogaW5kZXgkJDEgPCBwcmV2SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgICAgICAgICA6IDE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3BlZWRVcCh4KSB7XG4gICAgICAgIHJldHVybiAuNSAqIHggKyAzMDA7IC8vIHBhcmFib2xhIHRocm91Z2ggKDQwMCw1MDA7IDYwMCw2MDA7IDE4MDAsMTIwMClcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVzaG93ID0ge1xuXG4gICAgICAgIG1peGluczogW1NsaWRlcl0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiAnc2xpZGUnLFxuICAgICAgICAgICAgY2xzQWN0aXZhdGVkOiAndWstdHJhbnNpdGlvbi1hY3RpdmUnLFxuICAgICAgICAgICAgQW5pbWF0aW9uczogQW5pbWF0aW9ucyxcbiAgICAgICAgICAgIFRyYW5zaXRpb25lcjogVHJhbnNpdGlvbmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYW5pbWF0aW9uOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgYW5pbWF0aW9uID0gcmVmLmFuaW1hdGlvbjtcbiAgICAgICAgICAgICAgICB2YXIgQW5pbWF0aW9ucyQkMSA9IHJlZi5BbmltYXRpb25zO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzc2lnbihhbmltYXRpb24gaW4gQW5pbWF0aW9ucyQkMSA/IEFuaW1hdGlvbnMkJDFbYW5pbWF0aW9uXSA6IEFuaW1hdGlvbnMkJDEuc2xpZGUsIHtuYW1lOiBhbmltYXRpb259KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zaXRpb25PcHRpb25zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge2FuaW1hdGlvbjogdGhpcy5hbmltYXRpb259O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiB7XG5cbiAgICAgICAgICAgICdpdGVtc2hvdyBpdGVtaGlkZSBpdGVtc2hvd24gaXRlbWhpZGRlbic6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgdGhpcy4kdXBkYXRlKHRhcmdldCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaXNOdW1iZXIodGhpcy5wcmV2SW5kZXgpICYmIGZhc3Rkb20uZmx1c2goKTsgLy8gaU9TIDEwKyB3aWxsIGhvbm9yIHRoZSB2aWRlby5wbGF5IG9ubHkgaWYgY2FsbGVkIGZyb20gYSBnZXN0dXJlIGhhbmRsZXJcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGJlZm9yZWl0ZW1zaG93OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRhcmdldCwgdGhpcy5jbHNBY3RpdmUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXNob3duOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRhcmdldCwgdGhpcy5jbHNBY3RpdmF0ZWQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbWhpZGRlbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0YXJnZXQsIHRoaXMuY2xzQWN0aXZlLCB0aGlzLmNsc0FjdGl2YXRlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBMaWdodGJveFBhbmVsID0ge1xuXG4gICAgICAgIG1peGluczogW0NvbnRhaW5lciwgTW9kYWwsIFRvZ2dsYWJsZSwgU2xpZGVzaG93XSxcblxuICAgICAgICBmdW5jdGlvbmFsOiB0cnVlLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkZWxheUNvbnRyb2xzOiBOdW1iZXIsXG4gICAgICAgICAgICBwcmVsb2FkOiBOdW1iZXIsXG4gICAgICAgICAgICB2aWRlb0F1dG9wbGF5OiBCb29sZWFuLFxuICAgICAgICAgICAgdGVtcGxhdGU6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgICAgICBwcmVsb2FkOiAxLFxuICAgICAgICAgICAgdmlkZW9BdXRvcGxheTogZmFsc2UsXG4gICAgICAgICAgICBkZWxheUNvbnRyb2xzOiAzMDAwLFxuICAgICAgICAgICAgaXRlbXM6IFtdLFxuICAgICAgICAgICAgY2xzOiAndWstb3BlbicsXG4gICAgICAgICAgICBjbHNQYWdlOiAndWstbGlnaHRib3gtcGFnZScsXG4gICAgICAgICAgICBzZWxMaXN0OiAnLnVrLWxpZ2h0Ym94LWl0ZW1zJyxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstbGlnaHRib3gtaXRlbScsXG4gICAgICAgICAgICBzZWxDbG9zZTogJy51ay1jbG9zZS1sYXJnZScsXG4gICAgICAgICAgICBwYXVzZU9uSG92ZXI6IGZhbHNlLFxuICAgICAgICAgICAgdmVsb2NpdHk6IDIsXG4gICAgICAgICAgICBBbmltYXRpb25zOiBBbmltYXRpb25zJDEsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogXCI8ZGl2IGNsYXNzPVxcXCJ1ay1saWdodGJveCB1ay1vdmVyZmxvdy1oaWRkZW5cXFwiPiA8dWwgY2xhc3M9XFxcInVrLWxpZ2h0Ym94LWl0ZW1zXFxcIj48L3VsPiA8ZGl2IGNsYXNzPVxcXCJ1ay1saWdodGJveC10b29sYmFyIHVrLXBvc2l0aW9uLXRvcCB1ay10ZXh0LXJpZ2h0IHVrLXRyYW5zaXRpb24tc2xpZGUtdG9wIHVrLXRyYW5zaXRpb24tb3BhcXVlXFxcIj4gPGJ1dHRvbiBjbGFzcz1cXFwidWstbGlnaHRib3gtdG9vbGJhci1pY29uIHVrLWNsb3NlLWxhcmdlXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiIHVrLWNsb3NlPjwvYnV0dG9uPiA8L2Rpdj4gPGEgY2xhc3M9XFxcInVrLWxpZ2h0Ym94LWJ1dHRvbiB1ay1wb3NpdGlvbi1jZW50ZXItbGVmdCB1ay1wb3NpdGlvbi1tZWRpdW0gdWstdHJhbnNpdGlvbi1mYWRlXFxcIiBocmVmPVxcXCIjXFxcIiB1ay1zbGlkZW5hdi1wcmV2aW91cyB1ay1saWdodGJveC1pdGVtPVxcXCJwcmV2aW91c1xcXCI+PC9hPiA8YSBjbGFzcz1cXFwidWstbGlnaHRib3gtYnV0dG9uIHVrLXBvc2l0aW9uLWNlbnRlci1yaWdodCB1ay1wb3NpdGlvbi1tZWRpdW0gdWstdHJhbnNpdGlvbi1mYWRlXFxcIiBocmVmPVxcXCIjXFxcIiB1ay1zbGlkZW5hdi1uZXh0IHVrLWxpZ2h0Ym94LWl0ZW09XFxcIm5leHRcXFwiPjwvYT4gPGRpdiBjbGFzcz1cXFwidWstbGlnaHRib3gtdG9vbGJhciB1ay1saWdodGJveC1jYXB0aW9uIHVrLXBvc2l0aW9uLWJvdHRvbSB1ay10ZXh0LWNlbnRlciB1ay10cmFuc2l0aW9uLXNsaWRlLWJvdHRvbSB1ay10cmFuc2l0aW9uLW9wYXF1ZVxcXCI+PC9kaXY+IDwvZGl2PlwiXG4gICAgICAgIH0pOyB9LFxuXG4gICAgICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdGhpcy4kbW91bnQoYXBwZW5kKHRoaXMuY29udGFpbmVyLCB0aGlzLnRlbXBsYXRlKSk7XG5cbiAgICAgICAgICAgIHRoaXMuY2FwdGlvbiA9ICQoJy51ay1saWdodGJveC1jYXB0aW9uJywgdGhpcy4kZWwpO1xuXG4gICAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goZnVuY3Rpb24gKCkgeyByZXR1cm4gYXBwZW5kKHRoaXMkMS5saXN0LCAnPGxpPjwvbGk+Jyk7IH0pO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IChwb2ludGVyTW92ZSArIFwiIFwiICsgcG9pbnRlckRvd24gKyBcIiBrZXlkb3duXCIpLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3Nob3dDb250cm9scydcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsaWRlc1NlbGVjdG9yO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvd24nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6ICdzaG93Q29udHJvbHMnXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlQ29udHJvbHMoKTtcblxuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnNsaWRlcywgdGhpcy5jbHNBY3RpdmUpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0b3AodGhpcy5zbGlkZXMpO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2tleXVwJyxcblxuICAgICAgICAgICAgICAgIGVsOiBkb2N1bWVudCxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNUb2dnbGVkKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlLmtleUNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCdwcmV2aW91cycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coJ25leHQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVpdGVtc2hvdycsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmVudENhdGNoID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVOb3codGhpcy4kZWwsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9uID0gQW5pbWF0aW9ucyQxWydzY2FsZSddO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhlLnRhcmdldCwgdGhpcy5jbHNBY3RpdmUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnNwbGljZSgxLCAwLCB0aGlzLmluZGV4KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGluZGV4KHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHRoaXMuZ2V0SXRlbShpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNhcHRpb24gPSByZWYkMS5jYXB0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLmNhcHRpb24sICdkaXNwbGF5JywgY2FwdGlvbiA/ICcnIDogJ25vbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCh0aGlzLmNhcHRpb24sIGNhcHRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDw9IHRoaXMucHJlbG9hZDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEubG9hZEl0ZW0odGhpcyQxLmdldEluZGV4KGkgKyBqKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEubG9hZEl0ZW0odGhpcyQxLmdldEluZGV4KGkgLSBqKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93bicsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50Q2F0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtbG9hZCcsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihfLCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHNvdXJjZSA9IGl0ZW0uc291cmNlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGl0ZW0udHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFsdCA9IGl0ZW0uYWx0O1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAnPHNwYW4gdWstc3Bpbm5lcj48L3NwYW4+Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaGVzJCQxO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEltYWdlXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnaW1hZ2UnIHx8IHNvdXJjZS5tYXRjaCgvXFwuKGpwKGUpP2d8cG5nfGdpZnxzdmcpKCR8XFw/KS9pKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZShzb3VyY2UpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGltZykgeyByZXR1cm4gdGhpcyQxLnNldEl0ZW0oaXRlbSwgKFwiPGltZyB3aWR0aD1cXFwiXCIgKyAoaW1nLndpZHRoKSArIFwiXFxcIiBoZWlnaHQ9XFxcIlwiICsgKGltZy5oZWlnaHQpICsgXCJcXFwiIHNyYz1cXFwiXCIgKyBzb3VyY2UgKyBcIlxcXCIgYWx0PVxcXCJcIiArIChhbHQgPyBhbHQgOiAnJykgKyBcIlxcXCI+XCIpKTsgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuc2V0RXJyb3IoaXRlbSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZpZGVvXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3ZpZGVvJyB8fCBzb3VyY2UubWF0Y2goL1xcLihtcDR8d2VibXxvZ3YpKCR8XFw/KS9pKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW8gPSAkKChcIjx2aWRlbyBjb250cm9scyBwbGF5c2lubGluZVwiICsgKGl0ZW0ucG9zdGVyID8gKFwiIHBvc3Rlcj1cXFwiXCIgKyAoaXRlbS5wb3N0ZXIpICsgXCJcXFwiXCIpIDogJycpICsgXCIgdWstdmlkZW89XFxcIlwiICsgKHRoaXMudmlkZW9BdXRvcGxheSkgKyBcIlxcXCI+PC92aWRlbz5cIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih2aWRlbywgJ3NyYycsIHNvdXJjZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uKHZpZGVvLCAnZXJyb3InLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuc2V0RXJyb3IoaXRlbSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgb24odmlkZW8sICdsb2FkZWRtZXRhZGF0YScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHZpZGVvLCB7d2lkdGg6IHZpZGVvLnZpZGVvV2lkdGgsIGhlaWdodDogdmlkZW8udmlkZW9IZWlnaHR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2V0SXRlbShpdGVtLCB2aWRlbyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWZyYW1lXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2lmcmFtZScgfHwgc291cmNlLm1hdGNoKC9cXC4oaHRtbHxwaHApKCR8XFw/KS9pKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oaXRlbSwgKFwiPGlmcmFtZSBjbGFzcz1cXFwidWstbGlnaHRib3gtaWZyYW1lXFxcIiBzcmM9XFxcIlwiICsgc291cmNlICsgXCJcXFwiIGZyYW1lYm9yZGVyPVxcXCIwXFxcIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+XCIpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gWW91VHViZVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChtYXRjaGVzJCQxID0gc291cmNlLm1hdGNoKC9cXC9cXC8uKj95b3V0dWJlKC1ub2Nvb2tpZSk/XFwuW2Etel0rXFwvd2F0Y2hcXD92PShbXiZcXHNdKykvKSB8fCBzb3VyY2UubWF0Y2goLygpeW91dHVcXC5iZVxcLyguKikvKSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gbWF0Y2hlcyQkMVsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXRJZnJhbWUgPSBmdW5jdGlvbiAod2lkdGgkJDEsIGhlaWdodCQkMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggd2lkdGgkJDEgPT09IHZvaWQgMCApIHdpZHRoJCQxID0gNjQwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGVpZ2h0JCQxID09PSB2b2lkIDAgKSBoZWlnaHQkJDEgPSA0NTA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcyQxLnNldEl0ZW0oaXRlbSwgZ2V0SWZyYW1lKChcImh0dHBzOi8vd3d3LnlvdXR1YmVcIiArIChtYXRjaGVzJCQxWzFdIHx8ICcnKSArIFwiLmNvbS9lbWJlZC9cIiArIGlkKSwgd2lkdGgkJDEsIGhlaWdodCQkMSwgdGhpcyQxLnZpZGVvQXV0b3BsYXkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEltYWdlKChcImh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpL1wiICsgaWQgKyBcIi9tYXhyZXNkZWZhdWx0LmpwZ1wiKSkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5oZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWW91VHViZSBkZWZhdWx0IDQwNCB0aHVtYiwgZmFsbCBiYWNrIHRvIGxvdyByZXNvbHV0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCQkMSA9PT0gMTIwICYmIGhlaWdodCQkMSA9PT0gOTApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEltYWdlKChcImh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpL1wiICsgaWQgKyBcIi8wLmpwZ1wiKSkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5oZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldElmcmFtZSh3aWR0aCQkMSwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SWZyYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SWZyYW1lKHdpZHRoJCQxLCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZpbWVvXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoZXMkJDEgPSBzb3VyY2UubWF0Y2goLyhcXC9cXC8uKj8pdmltZW9cXC5bYS16XStcXC8oWzAtOV0rKS4qPy8pKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhamF4KChcImh0dHBzOi8vdmltZW8uY29tL2FwaS9vZW1iZWQuanNvbj9tYXh3aWR0aD0xOTIwJnVybD1cIiArIChlbmNvZGVVUkkoc291cmNlKSkpLCB7cmVzcG9uc2VUeXBlOiAnanNvbicsIHdpdGhDcmVkZW50aWFsczogZmFsc2V9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmX3Jlc3BvbnNlID0gcmVmLnJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZl9yZXNwb25zZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWZfcmVzcG9uc2Uud2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCBnZXRJZnJhbWUoKFwiaHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvL1wiICsgKG1hdGNoZXMkJDFbMl0pKSwgd2lkdGgkJDEsIGhlaWdodCQkMSwgdGhpcyQxLnZpZGVvQXV0b3BsYXkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5zZXRFcnJvcihpdGVtKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGxvYWRJdGVtOiBmdW5jdGlvbihpbmRleCQkMSkge1xuICAgICAgICAgICAgICAgIGlmICggaW5kZXgkJDEgPT09IHZvaWQgMCApIGluZGV4JCQxID0gdGhpcy5pbmRleDtcblxuXG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLmdldEl0ZW0oaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2l0ZW1sb2FkJywgW2l0ZW1dKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEl0ZW06IGZ1bmN0aW9uKGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpbmRleCQkMSA9PT0gdm9pZCAwICkgaW5kZXgkJDEgPSB0aGlzLmluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXNbaW5kZXgkJDFdIHx8IHt9O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0SXRlbTogZnVuY3Rpb24oaXRlbSwgY29udGVudCkge1xuICAgICAgICAgICAgICAgIGFzc2lnbihpdGVtLCB7Y29udGVudDogY29udGVudH0pO1xuICAgICAgICAgICAgICAgIHZhciBlbCA9IGh0bWwodGhpcy5zbGlkZXNbdGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pXSwgY29udGVudCk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2l0ZW1sb2FkZWQnLCBbdGhpcywgZWxdKTtcbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUoZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0RXJyb3I6IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oaXRlbSwgJzxzcGFuIHVrLWljb249XCJpY29uOiBib2x0OyByYXRpbzogMlwiPjwvc3Bhbj4nKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNob3dDb250cm9sczogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jb250cm9sc1RpbWVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuaGlkZUNvbnRyb2xzLCB0aGlzLmRlbGF5Q29udHJvbHMpO1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICd1ay1hY3RpdmUnLCAndWstdHJhbnNpdGlvbi1hY3RpdmUnKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGlkZUNvbnRyb2xzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgJ3VrLWFjdGl2ZScsICd1ay10cmFuc2l0aW9uLWFjdGl2ZScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRJZnJhbWUoc3JjLCB3aWR0aCQkMSwgaGVpZ2h0JCQxLCBhdXRvcGxheSkge1xuICAgICAgICByZXR1cm4gKFwiPGlmcmFtZSBzcmM9XFxcIlwiICsgc3JjICsgXCJcXFwiIHdpZHRoPVxcXCJcIiArIHdpZHRoJCQxICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyBoZWlnaHQkJDEgKyBcIlxcXCIgc3R5bGU9XFxcIm1heC13aWR0aDogMTAwJTsgYm94LXNpemluZzogYm9yZGVyLWJveDtcXFwiIGZyYW1lYm9yZGVyPVxcXCIwXFxcIiBhbGxvd2Z1bGxzY3JlZW4gdWstdmlkZW89XFxcImF1dG9wbGF5OiBcIiArIGF1dG9wbGF5ICsgXCJcXFwiIHVrLXJlc3BvbnNpdmU+PC9pZnJhbWU+XCIpO1xuICAgIH1cblxuICAgIHZhciBwcm9wcyA9IG1lcmdlKExpZ2h0Ym94UGFuZWwsICdwcm9wcycpO1xuICAgIHZhciBkZWZhdWx0cyA9IG1lcmdlKExpZ2h0Ym94UGFuZWwsICdkYXRhJyk7XG5cbiAgICB2YXIgTGlnaHRib3ggPSB7XG5cbiAgICAgICAgaW5zdGFsbDogaW5zdGFsbCQyLFxuXG4gICAgICAgIGF0dHJzOiB0cnVlLFxuXG4gICAgICAgIHByb3BzOiBhc3NpZ24oe3RvZ2dsZTogU3RyaW5nfSwgcHJvcHMpLFxuXG4gICAgICAgIGRhdGE6IGFzc2lnbih7dG9nZ2xlOiAnYSd9LCBPYmplY3Qua2V5cyhwcm9wcykucmVkdWNlKGZ1bmN0aW9uIChkYXRhJCQxLCBrZXkpIHtcbiAgICAgICAgICAgIGRhdGEkJDFba2V5XSA9IGRlZmF1bHRzW2tleV07XG4gICAgICAgICAgICByZXR1cm4gZGF0YSQkMTtcbiAgICAgICAgfSwge30pKSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICB0b2dnbGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0b2dnbGUgPSByZWYudG9nZ2xlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRvZ2dsZSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHRoaXMudG9nZ2xlKSArIFwiOm5vdCgudWstZGlzYWJsZWQpXCIpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZS5jdXJyZW50LmJsdXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KGluZGV4KHRoaXMudG9nZ2xlcywgZS5jdXJyZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcblxuICAgICAgICAgICAgZGF0YSQkMS50b2dnbGVzID0gZGF0YSQkMS50b2dnbGVzIHx8IHRoaXMudG9nZ2xlcztcblxuICAgICAgICAgICAgaWYgKHRoaXMucGFuZWwgJiYgdGhpcy5hbmltYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsLiRwcm9wcy5hbmltYXRpb24gPSB0aGlzLmFuaW1hdGlvbjtcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsLiRlbWl0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5wYW5lbCB8fCBpc0VxdWFsTGlzdCQxKGRhdGEkJDEudG9nZ2xlcywgdGhpcy50b2dnbGVzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0YSQkMS50b2dnbGVzID0gdGhpcy50b2dnbGVzO1xuICAgICAgICAgICAgdGhpcy5fZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5faW5pdCgpO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBfaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWwgPSB0aGlzLnBhbmVsIHx8IHRoaXMuJGNyZWF0ZSgnbGlnaHRib3hQYW5lbCcsIGFzc2lnbih7fSwgdGhpcy4kcHJvcHMsIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMudG9nZ2xlcy5yZWR1Y2UoZnVuY3Rpb24gKGl0ZW1zLCBlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaChbJ2hyZWYnLCAnY2FwdGlvbicsICd0eXBlJywgJ3Bvc3RlcicsICdhbHQnXS5yZWR1Y2UoZnVuY3Rpb24gKG9iaiwgYXR0ciQkMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialthdHRyJCQxID09PSAnaHJlZicgPyAnc291cmNlJyA6IGF0dHIkJDFdID0gZGF0YShlbCwgYXR0ciQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHt9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9kZXN0cm95OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVsLiRkZXN0cm95KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVsID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihpbmRleCQkMSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbC5zaG93KGluZGV4JCQxKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGlkZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbCAmJiB0aGlzLnBhbmVsLmhpZGUoKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc0VxdWFsTGlzdCQxKGxpc3RBLCBsaXN0Qikge1xuICAgICAgICByZXR1cm4gbGlzdEEubGVuZ3RoID09PSBsaXN0Qi5sZW5ndGhcbiAgICAgICAgICAgICYmIGxpc3RBLmV2ZXJ5KGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gZWwgPT09IGxpc3RCW2ldOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZShvcHRpb25zLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBhc3NpZ24uYXBwbHkoXG4gICAgICAgICAgICB2b2lkIDAsIFsge30gXS5jb25jYXQoIChvcHRpb25zLm1peGlucyA/IG9wdGlvbnMubWl4aW5zLm1hcChmdW5jdGlvbiAobWl4aW4pIHsgcmV0dXJuIG1lcmdlKG1peGluLCBwcm9wKTsgfSkgOiBbXSksXG4gICAgICAgICAgICBbaXNGdW5jdGlvbihvcHRpb25zW3Byb3BdKSA/IG9wdGlvbnNbcHJvcF0oKSA6IG9wdGlvbnNbcHJvcF1dICkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGwkMihVSWtpdCkge1xuICAgICAgICBpZiAoIVVJa2l0LmxpZ2h0Ym94UGFuZWwpIHtcbiAgICAgICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbGlnaHRib3hQYW5lbCcsIExpZ2h0Ym94UGFuZWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG9iajtcblxuICAgIHZhciBjb250YWluZXJzID0ge307XG5cbiAgICB2YXIgTm90aWZpY2F0aW9uID0ge1xuXG4gICAgICAgIGZ1bmN0aW9uYWw6IHRydWUsXG5cbiAgICAgICAgYXJnczogWydtZXNzYWdlJywgJ3N0YXR1cyddLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIHRpbWVvdXQ6IDUwMDAsXG4gICAgICAgICAgICBncm91cDogbnVsbCxcbiAgICAgICAgICAgIHBvczogJ3RvcC1jZW50ZXInLFxuICAgICAgICAgICAgY2xzQ2xvc2U6ICd1ay1ub3RpZmljYXRpb24tY2xvc2UnLFxuICAgICAgICAgICAgY2xzTXNnOiAndWstbm90aWZpY2F0aW9uLW1lc3NhZ2UnXG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5zdGFsbDogaW5zdGFsbCQzLFxuXG4gICAgICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lcnNbdGhpcy5wb3NdKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyc1t0aGlzLnBvc10gPSBhcHBlbmQodGhpcy4kY29udGFpbmVyLCAoXCI8ZGl2IGNsYXNzPVxcXCJ1ay1ub3RpZmljYXRpb24gdWstbm90aWZpY2F0aW9uLVwiICsgKHRoaXMucG9zKSArIFwiXFxcIj48L2Rpdj5cIikpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgY29udGFpbmVyID0gY3NzKGNvbnRhaW5lcnNbdGhpcy5wb3NdLCAnZGlzcGxheScsICdibG9jaycpO1xuXG4gICAgICAgICAgICB0aGlzLiRtb3VudChhcHBlbmQoY29udGFpbmVyLFxuICAgICAgICAgICAgICAgIChcIjxkaXYgY2xhc3M9XFxcIlwiICsgKHRoaXMuY2xzTXNnKSArICh0aGlzLnN0YXR1cyA/IChcIiBcIiArICh0aGlzLmNsc01zZykgKyBcIi1cIiArICh0aGlzLnN0YXR1cykpIDogJycpICsgXCJcXFwiPiA8YSBocmVmPVxcXCIjXFxcIiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNDbG9zZSkgKyBcIlxcXCIgZGF0YS11ay1jbG9zZT48L2E+IDxkaXY+XCIgKyAodGhpcy5tZXNzYWdlKSArIFwiPC9kaXY+IDwvZGl2PlwiKVxuICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICByZWFkeTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgbWFyZ2luQm90dG9tID0gdG9GbG9hdChjc3ModGhpcy4kZWwsICdtYXJnaW5Cb3R0b20nKSk7XG4gICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KFxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge29wYWNpdHk6IDAsIG1hcmdpblRvcDogLXRoaXMuJGVsLm9mZnNldEhlaWdodCwgbWFyZ2luQm90dG9tOiAwfSksXG4gICAgICAgICAgICAgICAge29wYWNpdHk6IDEsIG1hcmdpblRvcDogMCwgbWFyZ2luQm90dG9tOiBtYXJnaW5Cb3R0b219XG4gICAgICAgICAgICApLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzJDEudGltZW91dCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEudGltZXIgPSBzZXRUaW1lb3V0KHRoaXMkMS5jbG9zZSwgdGhpcyQxLnRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiAoIG9iaiA9IHtcblxuICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdChlLnRhcmdldCwgJ2FbaHJlZj1cIiNcIl0nKSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LCBvYmpbcG9pbnRlckVudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqW3BvaW50ZXJMZWF2ZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCh0aGlzLmNsb3NlLCB0aGlzLnRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIG9iaiApLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKGltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgcmVtb3ZlRm4gPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzJDEuJGVsLCAnY2xvc2UnLCBbdGhpcyQxXSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZSh0aGlzJDEuJGVsKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lcnNbdGhpcyQxLnBvc10uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoY29udGFpbmVyc1t0aGlzJDEucG9zXSwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpbW1lZGlhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRm4oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KHRoaXMuJGVsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAtdGhpcy4kZWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAwXG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4ocmVtb3ZlRm4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaW5zdGFsbCQzKFVJa2l0KSB7XG4gICAgICAgIFVJa2l0Lm5vdGlmaWNhdGlvbi5jbG9zZUFsbCA9IGZ1bmN0aW9uIChncm91cCwgaW1tZWRpYXRlKSB7XG4gICAgICAgICAgICBhcHBseShkb2N1bWVudC5ib2R5LCBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgbm90aWZpY2F0aW9uID0gVUlraXQuZ2V0Q29tcG9uZW50KGVsLCAnbm90aWZpY2F0aW9uJyk7XG4gICAgICAgICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbiAmJiAoIWdyb3VwIHx8IGdyb3VwID09PSBub3RpZmljYXRpb24uZ3JvdXApKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5jbG9zZShpbW1lZGlhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBwcm9wcyQxID0gWyd4JywgJ3knLCAnYmd4JywgJ2JneScsICdyb3RhdGUnLCAnc2NhbGUnLCAnY29sb3InLCAnYmFja2dyb3VuZENvbG9yJywgJ2JvcmRlckNvbG9yJywgJ29wYWNpdHknLCAnYmx1cicsICdodWUnLCAnZ3JheXNjYWxlJywgJ2ludmVydCcsICdzYXR1cmF0ZScsICdzZXBpYScsICdmb3BhY2l0eSddO1xuXG4gICAgdmFyIFBhcmFsbGF4ID0ge1xuXG4gICAgICAgIHByb3BzOiBwcm9wcyQxLnJlZHVjZShmdW5jdGlvbiAocHJvcHMsIHByb3ApIHtcbiAgICAgICAgICAgIHByb3BzW3Byb3BdID0gJ2xpc3QnO1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9KSxcblxuICAgICAgICBkYXRhOiBwcm9wcyQxLnJlZHVjZShmdW5jdGlvbiAoZGF0YSQkMSwgcHJvcCkge1xuICAgICAgICAgICAgZGF0YSQkMVtwcm9wXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBtZWRpYTogZmFsc2VcbiAgICAgICAgfSksXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcHJvcHM6IGZ1bmN0aW9uKHByb3BlcnRpZXMsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMkMS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHByb3BlcnRpZXNbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgaXNDb2xvciA9IHByb3AubWF0Y2goL2NvbG9yL2kpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaXNDc3NQcm9wID0gaXNDb2xvciB8fCBwcm9wID09PSAnb3BhY2l0eSc7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcywgYmdQb3MsIGRpZmY7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGVwcyA9IHByb3BlcnRpZXNbcHJvcF0uc2xpY2UoMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ3NzUHJvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKCRlbCwgcHJvcCwgJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0ZXBzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzLnVuc2hpZnQoKHByb3AgPT09ICdzY2FsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlzQ3NzUHJvcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNzcygkZWwsIHByb3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCkgfHwgMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgdW5pdCA9IGluY2x1ZGVzKHN0ZXBzLmpvaW4oJycpLCAnJScpID8gJyUnIDogJ3B4JztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDb2xvcikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gJGVsLnN0eWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gcmVmLmNvbG9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgPSBzdGVwcy5tYXAoZnVuY3Rpb24gKHN0ZXApIHsgcmV0dXJuIHBhcnNlQ29sb3IoJGVsLCBzdGVwKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZWwuc3R5bGUuY29sb3IgPSBjb2xvcjtcblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcCh0b0Zsb2F0KTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AubWF0Y2goL15iZy8pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcygkZWwsIChcImJhY2tncm91bmQtcG9zaXRpb24tXCIgKyAocHJvcFsyXSkpLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZ1BvcyA9IGNzcygkZWwsICdiYWNrZ3JvdW5kUG9zaXRpb24nKS5zcGxpdCgnICcpW3Byb3BbMl0gPT09ICd4JyA/IDAgOiAxXTsgLy8gSUUgMTEgY2FuJ3QgcmVhZCBiYWNrZ3JvdW5kLXBvc2l0aW9uLVt4fHldXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuY292ZXJzKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWluID0gTWF0aC5taW4uYXBwbHkoTWF0aCwgc3RlcHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXggPSBNYXRoLm1heC5hcHBseShNYXRoLCBzdGVwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRvd24gPSBzdGVwcy5pbmRleE9mKG1pbikgPCBzdGVwcy5pbmRleE9mKG1heCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gbWF4IC0gbWluO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgPSBzdGVwcy5tYXAoZnVuY3Rpb24gKHN0ZXApIHsgcmV0dXJuIHN0ZXAgLSAoZG93biA/IG1pbiA6IG1heCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IChkb3duID8gLWRpZmYgOiAwKSArIFwicHhcIjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGJnUG9zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwcm9wc1twcm9wXSA9IHtzdGVwczogc3RlcHMsIHVuaXQ6IHVuaXQsIHBvczogcG9zLCBiZ1BvczogYmdQb3MsIGRpZmY6IGRpZmZ9O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcztcblxuICAgICAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYmdQcm9wczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWydiZ3gnLCAnYmd5J10uZmlsdGVyKGZ1bmN0aW9uIChiZykgeyByZXR1cm4gYmcgaW4gdGhpcyQxLnByb3BzOyB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNvdmVyczogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdmVycygkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pbWFnZTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuYWN0aXZlID0gIXRoaXMubWVkaWEgfHwgd2luZG93Lm1hdGNoTWVkaWEodGhpcy5tZWRpYSkubWF0Y2hlcztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSQkMS5pbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5pbWFnZS5kaW1FbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy4kZWwub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLiRlbC5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoJ2ltYWdlJyBpbiBkYXRhJCQxIHx8ICF0aGlzLmNvdmVycyB8fCAhdGhpcy5iZ1Byb3BzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9IGNzcyh0aGlzLiRlbCwgJ2JhY2tncm91bmRJbWFnZScpLnJlcGxhY2UoL15ub25lfHVybFxcKFtcIiddPyguKz8pW1wiJ10/XFwpJC8sICckMScpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghc3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmltYWdlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2Uoc3JjKS50aGVuKGZ1bmN0aW9uIChpbWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuaW1hZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGltZy5uYXR1cmFsV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbWcubmF0dXJhbEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiRlbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IHJlZi5pbWFnZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHJlZi5hY3RpdmU7XG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7YmFja2dyb3VuZFNpemU6ICcnLCBiYWNrZ3JvdW5kUmVwZWF0OiAnJ30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpbUVsID0gaW1hZ2UuZGltRWw7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpbSA9IERpbWVuc2lvbnMuY292ZXIoaW1hZ2UsIGRpbUVsKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJnUHJvcHMuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcyQxLnByb3BzW3Byb3BdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpZmYgPSByZWYuZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiZ1BvcyA9IHJlZi5iZ1BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGVwcyA9IHJlZi5zdGVwcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdHRyJCQxID0gcHJvcCA9PT0gJ2JneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3BhbiA9IGRpbVthdHRyJCQxXSAtIGRpbUVsW2F0dHIkJDFdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJnUG9zLm1hdGNoKC8lJHwwcHgvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwYW4gPCBkaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGltRWxbYXR0ciQkMV0gPSBkaW1bYXR0ciQkMV0gKyBkaWZmIC0gc3BhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3BhbiA+IGRpZmYpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiZ1Bvc0Zsb2F0ID0gcGFyc2VGbG9hdChiZ1Bvcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmdQb3NGbG9hdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEucHJvcHNbcHJvcF0uc3RlcHMgPSBzdGVwcy5tYXAoZnVuY3Rpb24gKHN0ZXApIHsgcmV0dXJuIHN0ZXAgLSAoc3BhbiAtIGRpZmYpIC8gKDEwMCAvIGJnUG9zRmxvYXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpbSA9IERpbWVuc2lvbnMuY292ZXIoaW1hZ2UsIGRpbUVsKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTogKChkaW0ud2lkdGgpICsgXCJweCBcIiArIChkaW0uaGVpZ2h0KSArIFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVwZWF0OiAnbm8tcmVwZWF0J1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHJlc2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIGVhY2godGhpcy5nZXRDc3MoMCksIGZ1bmN0aW9uIChfLCBwcm9wKSB7IHJldHVybiBjc3ModGhpcyQxLiRlbCwgcHJvcCwgJycpOyB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldENzczogZnVuY3Rpb24ocGVyY2VudCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gcmVmLnByb3BzO1xuICAgICAgICAgICAgICAgIHZhciB0cmFuc2xhdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocHJvcHMpLnJlZHVjZShmdW5jdGlvbiAoY3NzJCQxLCBwcm9wKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHByb3BzW3Byb3BdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RlcHMgPSByZWYuc3RlcHM7XG4gICAgICAgICAgICAgICAgICAgIHZhciB1bml0ID0gcmVmLnVuaXQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSByZWYucG9zO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShzdGVwcywgcGVyY2VudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyYW5zZm9ybXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneSc6XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmJDEgPSBbJ3gnLCAneSddLm1hcChmdW5jdGlvbiAoZGlyKSB7IHJldHVybiBwcm9wID09PSBkaXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB2YWx1ZSArIHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wc1tkaXJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdldFZhbHVlKHByb3BzW2Rpcl0uc3RlcHMsIHBlcmNlbnQpICsgcHJvcHNbZGlyXS51bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDA7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IHJlZiQxWzBdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHJlZiQxWzFdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IGNzcyQkMS50cmFuc2Zvcm0gKz0gXCIgdHJhbnNsYXRlM2QoXCIgKyB4ICsgXCIsIFwiICsgeSArIFwiLCAwKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm90YXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEudHJhbnNmb3JtICs9IFwiIHJvdGF0ZShcIiArIHZhbHVlICsgXCJkZWcpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2FsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxLnRyYW5zZm9ybSArPSBcIiBzY2FsZShcIiArIHZhbHVlICsgXCIpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJnIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiZ3knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmd4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDFbKFwiYmFja2dyb3VuZC1wb3NpdGlvbi1cIiArIChwcm9wWzJdKSldID0gXCJjYWxjKFwiICsgcG9zICsgXCIgKyBcIiArICh2YWx1ZSArIHVuaXQpICsgXCIpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYWNrZ3JvdW5kQ29sb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYm9yZGVyQ29sb3InOlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiQyID0gZ2V0U3RlcChzdGVwcywgcGVyY2VudCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IHJlZiQyWzBdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZW5kID0gcmVmJDJbMV07XG4gICAgICAgICAgICAgICAgICAgIHZhciBwID0gcmVmJDJbMl07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDFbcHJvcF0gPSBcInJnYmEoXCIgKyAoc3RhcnQubWFwKGZ1bmN0aW9uICh2YWx1ZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSArIHAgKiAoZW5kW2ldIC0gdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IDMgPyB0b0Zsb2F0KHZhbHVlKSA6IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJywnKSkgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ1NTIEZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmx1cic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxLmZpbHRlciArPSBcIiBibHVyKFwiICsgdmFsdWUgKyBcInB4KVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaHVlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIGh1ZS1yb3RhdGUoXCIgKyB2YWx1ZSArIFwiZGVnKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9wYWNpdHknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS5maWx0ZXIgKz0gXCIgb3BhY2l0eShcIiArIHZhbHVlICsgXCIlKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JheXNjYWxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ludmVydCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzYXR1cmF0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXBpYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxLmZpbHRlciArPSBcIiBcIiArIHByb3AgKyBcIihcIiArIHZhbHVlICsgXCIlKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMVtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzcyQkMTtcblxuICAgICAgICAgICAgICAgIH0sIHt0cmFuc2Zvcm06ICcnLCBmaWx0ZXI6ICcnfSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcGFyc2VDb2xvcihlbCwgY29sb3IpIHtcbiAgICAgICAgcmV0dXJuIGNzcyhjc3MoZWwsICdjb2xvcicsIGNvbG9yKSwgJ2NvbG9yJykuc3BsaXQoL1soKSxdL2cpLnNsaWNlKDEsIC0xKS5jb25jYXQoMSkuc2xpY2UoMCwgNCkubWFwKGZ1bmN0aW9uIChuKSB7IHJldHVybiB0b0Zsb2F0KG4pOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTdGVwKHN0ZXBzLCBwZXJjZW50KSB7XG4gICAgICAgIHZhciBjb3VudCA9IHN0ZXBzLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciBpbmRleCQkMSA9IE1hdGgubWluKE1hdGguZmxvb3IoY291bnQgKiBwZXJjZW50KSwgY291bnQgLSAxKTtcbiAgICAgICAgdmFyIHN0ZXAgPSBzdGVwcy5zbGljZShpbmRleCQkMSwgaW5kZXgkJDEgKyAyKTtcblxuICAgICAgICBzdGVwLnB1c2gocGVyY2VudCA9PT0gMSA/IDEgOiBwZXJjZW50ICUgKDEgLyBjb3VudCkgKiBjb3VudCk7XG5cbiAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VmFsdWUoc3RlcHMsIHBlcmNlbnQpIHtcbiAgICAgICAgdmFyIHJlZiA9IGdldFN0ZXAoc3RlcHMsIHBlcmNlbnQpO1xuICAgICAgICB2YXIgc3RhcnQgPSByZWZbMF07XG4gICAgICAgIHZhciBlbmQgPSByZWZbMV07XG4gICAgICAgIHZhciBwID0gcmVmWzJdO1xuICAgICAgICByZXR1cm4gKGlzTnVtYmVyKHN0YXJ0KVxuICAgICAgICAgICAgICAgID8gc3RhcnQgKyBNYXRoLmFicyhzdGFydCAtIGVuZCkgKiBwICogKHN0YXJ0IDwgZW5kID8gMSA6IC0xKVxuICAgICAgICAgICAgICAgIDogK2VuZFxuICAgICAgICApLnRvRml4ZWQoMik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY292ZXJzKGVsKSB7XG4gICAgICAgIHZhciByZWYgPSBlbC5zdHlsZTtcbiAgICAgICAgdmFyIGJhY2tncm91bmRTaXplID0gcmVmLmJhY2tncm91bmRTaXplO1xuICAgICAgICB2YXIgY292ZXJzID0gY3NzKGNzcyhlbCwgJ2JhY2tncm91bmRTaXplJywgJycpLCAnYmFja2dyb3VuZFNpemUnKSA9PT0gJ2NvdmVyJztcbiAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZFNpemUgPSBiYWNrZ3JvdW5kU2l6ZTtcbiAgICAgICAgcmV0dXJuIGNvdmVycztcbiAgICB9XG5cbiAgICB2YXIgUGFyYWxsYXgkMSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtQYXJhbGxheF0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgdmlld3BvcnQ6IE51bWJlcixcbiAgICAgICAgICAgIGVhc2luZzogTnVtYmVyLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldDogZmFsc2UsXG4gICAgICAgICAgICB2aWV3cG9ydDogMSxcbiAgICAgICAgICAgIGVhc2luZzogMSxcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0ICYmIHF1ZXJ5KHRhcmdldCwgJGVsKSB8fCAkZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwZXJjZW50ID0gcmVmLnBlcmNlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXY6IHBlcmNlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50OiBlYXNlJDEoc2Nyb2xsZWRPdmVyKHRoaXMudGFyZ2V0KSAvICh0aGlzLnZpZXdwb3J0IHx8IDEpLCB0aGlzLmVhc2luZylcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZiwgcmVmJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSByZWYucHJldjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSByZWYucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHJlZi5hY3RpdmU7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmJDEudHlwZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlICE9PSAnc2Nyb2xsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2ICE9PSBwZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHRoaXMuZ2V0Q3NzKHBlcmNlbnQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBlYXNlJDEocGVyY2VudCwgZWFzaW5nKSB7XG4gICAgICAgIHJldHVybiBjbGFtcChwZXJjZW50ICogKDEgLSAoZWFzaW5nIC0gZWFzaW5nICogcGVyY2VudCkpKTtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyUmVhY3RpdmUgPSB7XG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFjay5sZW5ndGggfHwgdGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gdGhpcy5nZXRWYWxpZEluZGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnNsaWRlcywgdGhpcy5jbHNBY3RpdmUsIHRoaXMuY2xzQWN0aXZhdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KGluZGV4JCQxKTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIFRyYW5zaXRpb25lciQxIChwcmV2LCBuZXh0LCBkaXIsIHJlZikge1xuICAgICAgICB2YXIgY2VudGVyID0gcmVmLmNlbnRlcjtcbiAgICAgICAgdmFyIGVhc2luZyA9IHJlZi5lYXNpbmc7XG4gICAgICAgIHZhciBsaXN0ID0gcmVmLmxpc3Q7XG5cblxuICAgICAgICB2YXIgZGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQoKTtcblxuICAgICAgICB2YXIgZnJvbSA9IHByZXZcbiAgICAgICAgICAgID8gZ2V0TGVmdChwcmV2LCBsaXN0LCBjZW50ZXIpXG4gICAgICAgICAgICA6IGdldExlZnQobmV4dCwgbGlzdCwgY2VudGVyKSArIG5leHQub2Zmc2V0V2lkdGggKiBkaXI7XG4gICAgICAgIHZhciB0byA9IG5leHRcbiAgICAgICAgICAgID8gZ2V0TGVmdChuZXh0LCBsaXN0LCBjZW50ZXIpXG4gICAgICAgICAgICA6IGZyb20gKyBwcmV2Lm9mZnNldFdpZHRoICogZGlyICogKGlzUnRsID8gLTEgOiAxKTtcblxuICAgICAgICByZXR1cm4ge1xuXG4gICAgICAgICAgICBkaXI6IGRpcixcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oZHVyYXRpb24sIHBlcmNlbnQsIGxpbmVhcikge1xuICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA9PT0gdm9pZCAwICkgcGVyY2VudCA9IDA7XG5cblxuICAgICAgICAgICAgICAgIHZhciB0aW1pbmcgPSBsaW5lYXIgPyAnbGluZWFyJyA6IGVhc2luZztcbiAgICAgICAgICAgICAgICBkdXJhdGlvbiAtPSBNYXRoLnJvdW5kKGR1cmF0aW9uICogY2xhbXAocGVyY2VudCwgLTEsIDEpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlKHBlcmNlbnQpO1xuXG4gICAgICAgICAgICAgICAgcHJldiAmJiB0aGlzLnVwZGF0ZVRyYW5zbGF0ZXMoKTtcbiAgICAgICAgICAgICAgICBwZXJjZW50ID0gcHJldiA/IHBlcmNlbnQgOiBjbGFtcChwZXJjZW50LCAwLCAxKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlJDEodGhpcy5nZXRJdGVtSW4oKSwgJ2l0ZW1pbicsIHtwZXJjZW50OiBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuICAgICAgICAgICAgICAgIHByZXYgJiYgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKHRydWUpLCAnaXRlbW91dCcsIHtwZXJjZW50OiAxIC0gcGVyY2VudCwgZHVyYXRpb246IGR1cmF0aW9uLCB0aW1pbmc6IHRpbWluZywgZGlyOiBkaXJ9KTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KGxpc3QsIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtdG8gKiAoaXNSdGwgPyAtMSA6IDEpLCAncHgnKX0sIGR1cmF0aW9uLCB0aW1pbmcpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGRlZmVycmVkLnJlc29sdmUsIG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUcmFuc2l0aW9uLnN0b3AobGlzdCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKGxpc3QpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGNzcyhsaXN0LCAndHJhbnNmb3JtJywgJycpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZm9yd2FyZDogZnVuY3Rpb24oZHVyYXRpb24sIHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHBlcmNlbnQgPT09IHZvaWQgMCApIHBlcmNlbnQgPSB0aGlzLnBlcmNlbnQoKTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKGxpc3QpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3coZHVyYXRpb24sIHBlcmNlbnQsIHRydWUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSB0aGlzLmdldERpc3RhbmNlKCkgKiBkaXIgKiAoaXNSdGwgPyAtMSA6IDEpO1xuXG4gICAgICAgICAgICAgICAgY3NzKGxpc3QsICd0cmFuc2Zvcm0nLCB0cmFuc2xhdGUoY2xhbXAoXG4gICAgICAgICAgICAgICAgICAgIC10byArIChkaXN0YW5jZSAtIGRpc3RhbmNlICogcGVyY2VudCksXG4gICAgICAgICAgICAgICAgICAgIC1nZXRXaWR0aChsaXN0KSxcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5vZmZzZXRXaWR0aFxuICAgICAgICAgICAgICAgICkgKiAoaXNSdGwgPyAtMSA6IDEpLCAncHgnKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRyYW5zbGF0ZXMoKTtcblxuICAgICAgICAgICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBjbGFtcChwZXJjZW50LCAtMSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMSh0aGlzLmdldEl0ZW1JbigpLCAnaXRlbXRyYW5zbGF0ZWluJywge3BlcmNlbnQ6IHBlcmNlbnQsIGRpcjogZGlyfSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMSh0aGlzLmdldEl0ZW1Jbih0cnVlKSwgJ2l0ZW10cmFuc2xhdGVvdXQnLCB7cGVyY2VudDogMSAtIHBlcmNlbnQsIGRpcjogZGlyfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoKGNzcyhsaXN0LCAndHJhbnNmb3JtJykuc3BsaXQoJywnKVs0XSAqIChpc1J0bCA/IC0xIDogMSkgKyBmcm9tKSAvICh0byAtIGZyb20pKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERpc3RhbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModG8gLSBmcm9tKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEl0ZW1JbjogZnVuY3Rpb24ob3V0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCBvdXQgPT09IHZvaWQgMCApIG91dCA9IGZhbHNlO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlcyA9IHRoaXMuZ2V0QWN0aXZlcygpO1xuICAgICAgICAgICAgICAgIHZhciBhbGwgPSBzb3J0Qnkoc2xpZGVzKGxpc3QpLCAnb2Zmc2V0TGVmdCcpO1xuICAgICAgICAgICAgICAgIHZhciBpID0gaW5kZXgoYWxsLCBhY3RpdmVzW2RpciAqIChvdXQgPyAtMSA6IDEpID4gMCA/IGFjdGl2ZXMubGVuZ3RoIC0gMSA6IDBdKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB+aSAmJiBhbGxbaSArIChwcmV2ICYmICFvdXQgPyBkaXIgOiAwKV07XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEFjdGl2ZXM6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGxlZnQgPSBnZXRMZWZ0KHByZXYgfHwgbmV4dCwgbGlzdCwgY2VudGVyKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBzb3J0Qnkoc2xpZGVzKGxpc3QpLmZpbHRlcihmdW5jdGlvbiAoc2xpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlTGVmdCA9IGdldEVsTGVmdChzbGlkZSwgbGlzdCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzbGlkZUxlZnQgPj0gbGVmdCAmJiBzbGlkZUxlZnQgKyBzbGlkZS5vZmZzZXRXaWR0aCA8PSBsaXN0Lm9mZnNldFdpZHRoICsgbGVmdDtcbiAgICAgICAgICAgICAgICB9KSwgJ29mZnNldExlZnQnKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdXBkYXRlVHJhbnNsYXRlczogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlcyA9IHRoaXMuZ2V0QWN0aXZlcygpO1xuXG4gICAgICAgICAgICAgICAgc2xpZGVzKGxpc3QpLmZvckVhY2goZnVuY3Rpb24gKHNsaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0FjdGl2ZSA9IGluY2x1ZGVzKGFjdGl2ZXMsIHNsaWRlKTtcblxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlJDEoc2xpZGUsIChcIml0ZW10cmFuc2xhdGVcIiArIChpc0FjdGl2ZSA/ICdpbicgOiAnb3V0JykpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50OiBpc0FjdGl2ZSA/IDEgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiBzbGlkZS5vZmZzZXRMZWZ0IDw9IG5leHQub2Zmc2V0TGVmdCA/IDEgOiAtMVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TGVmdChlbCwgbGlzdCwgY2VudGVyKSB7XG5cbiAgICAgICAgdmFyIGxlZnQgPSBnZXRFbExlZnQoZWwsIGxpc3QpO1xuXG4gICAgICAgIHJldHVybiBjZW50ZXJcbiAgICAgICAgICAgID8gbGVmdCAtIGNlbnRlckVsKGVsLCBsaXN0KVxuICAgICAgICAgICAgOiBNYXRoLm1pbihsZWZ0LCBnZXRNYXgobGlzdCkpO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TWF4KGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIGdldFdpZHRoKGxpc3QpIC0gbGlzdC5vZmZzZXRXaWR0aCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0V2lkdGgobGlzdCkge1xuICAgICAgICByZXR1cm4gc2xpZGVzKGxpc3QpLnJlZHVjZShmdW5jdGlvbiAocmlnaHQsIGVsKSB7IHJldHVybiBlbC5vZmZzZXRXaWR0aCArIHJpZ2h0OyB9LCAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRNYXhXaWR0aChsaXN0KSB7XG4gICAgICAgIHJldHVybiBzbGlkZXMobGlzdCkucmVkdWNlKGZ1bmN0aW9uIChyaWdodCwgZWwpIHsgcmV0dXJuIE1hdGgubWF4KHJpZ2h0LCBlbC5vZmZzZXRXaWR0aCk7IH0sIDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNlbnRlckVsKGVsLCBsaXN0KSB7XG4gICAgICAgIHJldHVybiBsaXN0Lm9mZnNldFdpZHRoIC8gMiAtIGVsLm9mZnNldFdpZHRoIC8gMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFbExlZnQoZWwsIGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIChlbC5vZmZzZXRMZWZ0ICsgKGlzUnRsID8gZWwub2Zmc2V0V2lkdGggLSBsaXN0Lm9mZnNldFdpZHRoIDogMCkpICogKGlzUnRsID8gLTEgOiAxKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmlnZ2VyVXBkYXRlJDEoZWwsIHR5cGUsIGRhdGEkJDEpIHtcbiAgICAgICAgdHJpZ2dlcihlbCwgY3JlYXRlRXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlLCBkYXRhJCQxKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2xpZGVzKGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMobGlzdC5jaGlsZHJlbik7XG4gICAgfVxuXG4gICAgdmFyIFNsaWRlciQxID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBTbGlkZXIsIFNsaWRlclJlYWN0aXZlXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2VudGVyOiBCb29sZWFuLFxuICAgICAgICAgICAgc2V0czogQm9vbGVhbixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjZW50ZXI6IGZhbHNlLFxuICAgICAgICAgICAgc2V0czogZmFsc2UsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXNsaWRlci1pdGVtJyxcbiAgICAgICAgICAgIHNlbExpc3Q6ICcudWstc2xpZGVyLWl0ZW1zJyxcbiAgICAgICAgICAgIHNlbE5hdjogJy51ay1zbGlkZXItbmF2JyxcbiAgICAgICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLXNsaWRlci1jb250YWluZXInLFxuICAgICAgICAgICAgVHJhbnNpdGlvbmVyOiBUcmFuc2l0aW9uZXIkMVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGF2Z1dpZHRoOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V2lkdGgodGhpcy5saXN0KSAvIHRoaXMubGVuZ3RoO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZmluaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmluaXRlID0gcmVmLmZpbml0ZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBmaW5pdGUgfHwgZ2V0V2lkdGgodGhpcy5saXN0KSA8IHRoaXMubGlzdC5vZmZzZXRXaWR0aCArIGdldE1heFdpZHRoKHRoaXMubGlzdCkgKyB0aGlzLmNlbnRlcjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1heEluZGV4OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmZpbml0ZSB8fCB0aGlzLmNlbnRlciAmJiAhdGhpcy5zZXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldHNbdGhpcy5zZXRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLnNsaWRlcywgJ29yZGVyJywgJycpO1xuXG4gICAgICAgICAgICAgICAgdmFyIG1heCA9IGdldE1heCh0aGlzLmxpc3QpO1xuICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRFbExlZnQodGhpcyQxLmxpc3QuY2hpbGRyZW5baV0sIHRoaXMkMS5saXN0KSA8IG1heCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKGkgKyAxLCB0aGlzJDEubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNldHM6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBzZXRzID0gcmVmLnNldHM7XG5cblxuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHRoaXMubGlzdC5vZmZzZXRXaWR0aCAvICh0aGlzLmNlbnRlciA/IDIgOiAxKTtcblxuICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gMDtcbiAgICAgICAgICAgICAgICB2YXIgbGVmdENlbnRlciA9IHdpZHRoJCQxO1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZUxlZnQgPSAwO1xuXG4gICAgICAgICAgICAgICAgc2V0cyA9IHNldHMgJiYgdGhpcy5zbGlkZXMucmVkdWNlKGZ1bmN0aW9uIChzZXRzLCBzbGlkZSwgaSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXQoc2xpZGUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVXaWR0aCA9IHJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlUmlnaHQgPSBzbGlkZUxlZnQgKyBzbGlkZVdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzbGlkZVJpZ2h0ID4gbGVmdCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMkMS5jZW50ZXIgJiYgaSA+IHRoaXMkMS5tYXhJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzJDEubWF4SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5jbHVkZXMoc2V0cywgaSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbXAgPSB0aGlzJDEuc2xpZGVzW2kgKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmNlbnRlciAmJiBjbXAgJiYgc2xpZGVXaWR0aCA8IGxlZnRDZW50ZXIgLSBvZmZzZXQoY21wKS53aWR0aCAvIDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdENlbnRlciAtPSBzbGlkZVdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRDZW50ZXIgPSB3aWR0aCQkMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0cy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gc2xpZGVMZWZ0ICsgd2lkdGgkJDEgKyAodGhpcyQxLmNlbnRlciA/IHNsaWRlV2lkdGggLyAyIDogMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzbGlkZUxlZnQgKz0gc2xpZGVXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0cztcblxuICAgICAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBzZXRzICYmIHNldHMubGVuZ3RoICYmIHNldHM7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zaXRpb25PcHRpb25zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IHRoaXMuY2VudGVyLFxuICAgICAgICAgICAgICAgICAgICBsaXN0OiB0aGlzLmxpc3RcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0NvbnRhaW5lciwgISQoKFwiLlwiICsgKHRoaXMuY2xzQ29udGFpbmVyKSksIHRoaXMuJGVsKSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgJCQoKFwiW1wiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdLFtkYXRhLVwiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdXCIpLCB0aGlzLiRlbCkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gZGF0YShlbCwgdGhpcyQxLmF0dHJJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLm1heEluZGV4ICYmIHRvZ2dsZUNsYXNzKGVsLCAndWstaGlkZGVuJywgaXNOdW1lcmljKGluZGV4JCQxKSAmJiAodGhpcyQxLnNldHMgJiYgIWluY2x1ZGVzKHRoaXMkMS5zZXRzLCB0b0Zsb2F0KGluZGV4JCQxKSkgfHwgaW5kZXgkJDEgPiB0aGlzJDEubWF4SW5kZXgpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czoge1xuXG4gICAgICAgICAgICBiZWZvcmVpdGVtc2hvdzogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZ2dpbmcgJiYgdGhpcy5zZXRzICYmIHRoaXMuc3RhY2subGVuZ3RoIDwgMiAmJiAhaW5jbHVkZXModGhpcy5zZXRzLCB0aGlzLmluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5nZXRWYWxpZEluZGV4KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleFxuICAgICAgICAgICAgICAgICAgICAtIHRoaXMucHJldkluZGV4XG4gICAgICAgICAgICAgICAgICAgICsgKHRoaXMuZGlyID4gMCAmJiB0aGlzLmluZGV4IDwgdGhpcy5wcmV2SW5kZXggfHwgdGhpcy5kaXIgPCAwICYmIHRoaXMuaW5kZXggPiB0aGlzLnByZXZJbmRleCA/ICh0aGlzLm1heEluZGV4ICsgMSkgKiB0aGlzLmRpciA6IDApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnZ2luZyAmJiBkaWZmID4gMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlmZjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc3RhY2suc3BsaWNlKDEsIDAsIHRoaXMkMS5kaXIgPiAwID8gJ25leHQnIDogJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmR1cmF0aW9uID0gc3BlZWRVcCh0aGlzLmF2Z1dpZHRoIC8gdGhpcy52ZWxvY2l0eSlcbiAgICAgICAgICAgICAgICAgICAgKiAoKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXIgPCAwIHx8ICF0aGlzLnNsaWRlc1t0aGlzLnByZXZJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuc2xpZGVzW3RoaXMuaW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNsaWRlc1t0aGlzLnByZXZJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgKS5vZmZzZXRXaWR0aCAvIHRoaXMuYXZnV2lkdGgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW9yZGVyKCk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAhaXNVbmRlZmluZWQodGhpcy5wcmV2SW5kZXgpICYmIGFkZENsYXNzKHRoaXMuX2dldFRyYW5zaXRpb25lcigpLmdldEl0ZW1JbigpLCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtc2hvd246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZXMgPSB0aGlzLl9nZXRUcmFuc2l0aW9uZXIodGhpcy5pbmRleCkuZ2V0QWN0aXZlcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVzLmZvckVhY2goZnVuY3Rpb24gKHNsaWRlKSB7IHJldHVybiB0b2dnbGVDbGFzcyhzbGlkZSwgdGhpcyQxLmNsc0FjdGl2ZSwgaW5jbHVkZXMoYWN0aXZlcywgc2xpZGUpKTsgfSk7XG4gICAgICAgICAgICAgICAgKCF0aGlzLnNldHMgfHwgaW5jbHVkZXModGhpcy5zZXRzLCB0b0Zsb2F0KHRoaXMuaW5kZXgpKSkgJiYgdGhpcy5zbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKHNsaWRlLCB0aGlzJDEuY2xzQWN0aXZhdGVkLCBpbmNsdWRlcyhhY3RpdmVzLCBzbGlkZSkpOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgcmVvcmRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLnNsaWRlcywgJ29yZGVyJywgJycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmluaXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSB0aGlzLmRpciA+IDAgJiYgdGhpcy5zbGlkZXNbdGhpcy5wcmV2SW5kZXhdID8gdGhpcy5wcmV2SW5kZXggOiB0aGlzLmluZGV4O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUsIGkpIHsgcmV0dXJuIGNzcyhzbGlkZSwgJ29yZGVyJywgdGhpcyQxLmRpciA+IDAgJiYgaSA8IGluZGV4JCQxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcyQxLmRpciA8IDAgJiYgaSA+PSB0aGlzJDEuaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICApOyB9XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gdGhpcy5zbGlkZXNbaW5kZXgkJDFdO1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHRoaXMubGlzdC5vZmZzZXRXaWR0aCAvIDIgLSBuZXh0Lm9mZnNldFdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICB2YXIgaiA9IDA7XG5cbiAgICAgICAgICAgICAgICB3aGlsZSAod2lkdGgkJDEgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZUluZGV4ID0gdGhpcyQxLmdldEluZGV4KC0taiArIGluZGV4JCQxLCBpbmRleCQkMSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZSA9IHRoaXMkMS5zbGlkZXNbc2xpZGVJbmRleF07XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHNsaWRlLCAnb3JkZXInLCBzbGlkZUluZGV4ID4gaW5kZXgkJDEgPyAtMiA6IC0xKTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgkJDEgLT0gc2xpZGUub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRWYWxpZEluZGV4OiBmdW5jdGlvbihpbmRleCQkMSwgcHJldkluZGV4KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBpbmRleCQkMSA9PT0gdm9pZCAwICkgaW5kZXgkJDEgPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggcHJldkluZGV4ID09PSB2b2lkIDAgKSBwcmV2SW5kZXggPSB0aGlzLnByZXZJbmRleDtcblxuXG4gICAgICAgICAgICAgICAgaW5kZXgkJDEgPSB0aGlzLmdldEluZGV4KGluZGV4JCQxLCBwcmV2SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNldHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4JCQxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcmV2O1xuXG4gICAgICAgICAgICAgICAgZG8ge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlcyh0aGlzJDEuc2V0cywgaW5kZXgkJDEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXgkJDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwcmV2ID0gaW5kZXgkJDE7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4JCQxID0gdGhpcyQxLmdldEluZGV4KGluZGV4JCQxICsgdGhpcyQxLmRpciwgcHJldkluZGV4KTtcblxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4JCQxICE9PSBwcmV2KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCQkMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNsaWRlclBhcmFsbGF4ID0ge1xuXG4gICAgICAgIG1peGluczogW1BhcmFsbGF4XSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBzZWxJdGVtOiAnIWxpJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGl0ZW06IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbEl0ZW0gPSByZWYuc2VsSXRlbTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeShzZWxJdGVtLCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtc2hvd24nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoLjUpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbWluIGl0ZW1vdXQnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWZfZGV0YWlsID0gcmVmLmRldGFpbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSByZWZfZGV0YWlsLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkdXJhdGlvbiA9IHJlZl9kZXRhaWwuZHVyYXRpb247XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1pbmcgPSByZWZfZGV0YWlsLnRpbWluZztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IHJlZl9kZXRhaWwuZGlyO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHRoaXMuZ2V0Q3NzKGdldEN1cnJlbnQodHlwZSwgZGlyLCBwZXJjZW50KSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQodGhpcy4kZWwsIHRoaXMuZ2V0Q3NzKGlzSW4odHlwZSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gLjVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGlyID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgICAgICAgICApLCBkdXJhdGlvbiwgdGltaW5nKS5jYXRjaChub29wKTtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAndHJhbnNpdGlvbmNhbmNlbGVkIHRyYW5zaXRpb25lbmQnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXRyYW5zbGF0ZWluIGl0ZW10cmFuc2xhdGVvdXQnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWZfZGV0YWlsID0gcmVmLmRldGFpbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSByZWZfZGV0YWlsLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkaXIgPSByZWZfZGV0YWlsLmRpcjtcblxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc0luKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGVuZHNXaXRoKHR5cGUsICdpbicpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEN1cnJlbnQodHlwZSwgZGlyLCBwZXJjZW50KSB7XG5cbiAgICAgICAgcGVyY2VudCAvPSAyO1xuXG4gICAgICAgIHJldHVybiAhaXNJbih0eXBlKVxuICAgICAgICAgICAgPyBkaXIgPCAwXG4gICAgICAgICAgICAgICAgPyBwZXJjZW50XG4gICAgICAgICAgICAgICAgOiAxIC0gcGVyY2VudFxuICAgICAgICAgICAgOiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgPyAxIC0gcGVyY2VudFxuICAgICAgICAgICAgICAgIDogcGVyY2VudDtcbiAgICB9XG5cbiAgICB2YXIgQW5pbWF0aW9ucyQyID0gYXNzaWduKHt9LCBBbmltYXRpb25zLCB7XG5cbiAgICAgICAgZmFkZToge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMCwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3pJbmRleDogLTF9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAtIGNzcyhjdXJyZW50LCAnb3BhY2l0eScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDEgLSBwZXJjZW50LCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2NhbGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDAsIHRyYW5zZm9ybTogc2NhbGUzZCgxICsgLjUpLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHRyYW5zZm9ybTogc2NhbGUzZCgxICsgLjUgKiBwZXJjZW50KSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3pJbmRleDogLTF9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHB1bGw6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoMzApLCB6SW5kZXg6IC0xfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpLCB6SW5kZXg6IDB9IF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCksIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKGN1cnJlbnQsIG5leHQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gMSAtIHRyYW5zbGF0ZWQobmV4dClcbiAgICAgICAgICAgICAgICAgICAgOiB0cmFuc2xhdGVkKGN1cnJlbnQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50LCBkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCAqIHBlcmNlbnQpLCB6SW5kZXg6IC0xfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwICogKDEgLSBwZXJjZW50KSksIHpJbmRleDogMH0gXVxuICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtcGVyY2VudCAqIDEwMCksIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoMzAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHB1c2g6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpLCB6SW5kZXg6IC0xfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogMH1cbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKGN1cnJlbnQsIG5leHQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPiAwXG4gICAgICAgICAgICAgICAgICAgID8gMSAtIHRyYW5zbGF0ZWQobmV4dClcbiAgICAgICAgICAgICAgICAgICAgOiB0cmFuc2xhdGVkKGN1cnJlbnQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbihwZXJjZW50LCBkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShwZXJjZW50ICogMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMzAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAtMX0gXVxuICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMzAgKiBwZXJjZW50KSwgekluZGV4OiAtMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwICogKDEgLSBwZXJjZW50KSksIHpJbmRleDogMH1cbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9KTtcblxuICAgIHZhciBTbGlkZXNob3ckMSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgU2xpZGVzaG93LCBTbGlkZXJSZWFjdGl2ZV0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHJhdGlvOiBTdHJpbmcsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IEJvb2xlYW4sXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcmF0aW86ICcxNjo5JyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogZmFsc2UsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IGZhbHNlLFxuICAgICAgICAgICAgc2VsTGlzdDogJy51ay1zbGlkZXNob3ctaXRlbXMnLFxuICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay1zbGlkZXNob3ctaXRlbScsXG4gICAgICAgICAgICBzZWxOYXY6ICcudWstc2xpZGVzaG93LW5hdicsXG4gICAgICAgICAgICBBbmltYXRpb25zOiBBbmltYXRpb25zJDJcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5yYXRpby5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZlswXTtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmWzFdO1xuXG4gICAgICAgICAgICAgICAgaGVpZ2h0JCQxID0gaGVpZ2h0JCQxICogdGhpcy4kZWwub2Zmc2V0V2lkdGggLyB3aWR0aCQkMTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbkhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSBNYXRoLm1heCh0aGlzLm1pbkhlaWdodCwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXhIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0JCQxID0gTWF0aC5taW4odGhpcy5tYXhIZWlnaHQsIGhlaWdodCQkMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtoZWlnaHQ6IGhlaWdodCQkMX07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhndCA9IHJlZi5oZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5saXN0LCBNYXRoLmZsb29yKGhndCkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIG9iaiQxO1xuXG4gICAgdmFyIFNvcnRhYmxlID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBBbmltYXRlXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZ3JvdXA6IFN0cmluZyxcbiAgICAgICAgICAgIHRocmVzaG9sZDogTnVtYmVyLFxuICAgICAgICAgICAgY2xzSXRlbTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzUGxhY2Vob2xkZXI6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0RyYWc6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0RyYWdTdGF0ZTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzQmFzZTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzTm9EcmFnOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNFbXB0eTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzQ3VzdG9tOiBTdHJpbmcsXG4gICAgICAgICAgICBoYW5kbGU6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGdyb3VwOiBmYWxzZSxcbiAgICAgICAgICAgIHRocmVzaG9sZDogNSxcbiAgICAgICAgICAgIGNsc0l0ZW06ICd1ay1zb3J0YWJsZS1pdGVtJyxcbiAgICAgICAgICAgIGNsc1BsYWNlaG9sZGVyOiAndWstc29ydGFibGUtcGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgY2xzRHJhZzogJ3VrLXNvcnRhYmxlLWRyYWcnLFxuICAgICAgICAgICAgY2xzRHJhZ1N0YXRlOiAndWstZHJhZycsXG4gICAgICAgICAgICBjbHNCYXNlOiAndWstc29ydGFibGUnLFxuICAgICAgICAgICAgY2xzTm9EcmFnOiAndWstc29ydGFibGUtbm9kcmFnJyxcbiAgICAgICAgICAgIGNsc0VtcHR5OiAndWstc29ydGFibGUtZW1wdHknLFxuICAgICAgICAgICAgY2xzQ3VzdG9tOiAnJyxcbiAgICAgICAgICAgIGhhbmRsZTogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICBbJ2luaXQnLCAnc3RhcnQnLCAnbW92ZScsICdlbmQnXS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZm4gPSB0aGlzJDFba2V5XTtcbiAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zY3JvbGxZID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gZ2V0UG9zJDEoZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmLng7XG4gICAgICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wb3MgPSB7eDogeCwgeTogeX07XG5cbiAgICAgICAgICAgICAgICAgICAgZm4oZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogKCBvYmokMSA9IHt9LCBvYmokMVtwb2ludGVyRG93bl0gPSAnaW5pdCcsIG9iaiQxICksXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsc0VtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0VtcHR5LCAhdGhpcy4kZWwuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb2Zmc2V0KHRoaXMuZHJhZywge3RvcDogdGhpcy5wb3MueSArIHRoaXMub3JpZ2luLnRvcCwgbGVmdDogdGhpcy5wb3MueCArIHRoaXMub3JpZ2luLmxlZnR9KTtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXQodGhpcy5kcmFnKTtcbiAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDtcbiAgICAgICAgICAgICAgICB2YXIgYm90dG9tID0gdG9wICsgdGhpcy5kcmFnLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRvcCA+IDAgJiYgdG9wIDwgdGhpcy5zY3JvbGxZKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IHRoaXMuc2Nyb2xsWSAtIDU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChib3R0b20gPCBoZWlnaHQoZG9jdW1lbnQpICYmIGJvdHRvbSA+IGhlaWdodCh3aW5kb3cpICsgdGhpcy5zY3JvbGxZKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IHRoaXMuc2Nyb2xsWSArIDU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2Nyb2xsICYmIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gd2luZG93LnNjcm9sbCh3aW5kb3cucGFnZVhPZmZzZXQsIHNjcm9sbCk7IH0sIDUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBpbml0OiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IGUuYnV0dG9uO1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0UHJldmVudGVkID0gZS5kZWZhdWx0UHJldmVudGVkO1xuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0b05vZGVzKHRoaXMuJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB3aXRoaW4odGFyZ2V0LCBlbCk7IH0pO1xuICAgICAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IHJlZlswXTtcblxuICAgICAgICAgICAgICAgIGlmICghcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgfHwgaXNJbnB1dChlLnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5oYW5kbGUgJiYgIXdpdGhpbih0YXJnZXQsIHRoaXMuaGFuZGxlKVxuICAgICAgICAgICAgICAgICAgICB8fCBidXR0b24gPiAwXG4gICAgICAgICAgICAgICAgICAgIHx8IHdpdGhpbih0YXJnZXQsIChcIi5cIiArICh0aGlzLmNsc05vRHJhZykpKVxuICAgICAgICAgICAgICAgICAgICB8fCBkZWZhdWx0UHJldmVudGVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRvdWNoZWQgPSBbdGhpc107XG4gICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gYXNzaWduKHt0YXJnZXQ6IHRhcmdldCwgaW5kZXg6IGluZGV4KHBsYWNlaG9sZGVyKX0sIHRoaXMucG9zKTtcblxuICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgdGhpcy5tb3ZlKTtcbiAgICAgICAgICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlclVwLCB0aGlzLmVuZCk7XG4gICAgICAgICAgICAgICAgb24od2luZG93LCAnc2Nyb2xsJywgdGhpcy5zY3JvbGwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZyA9IGFwcGVuZCh0aGlzLiRjb250YWluZXIsIHRoaXMucGxhY2Vob2xkZXIub3V0ZXJIVE1MLnJlcGxhY2UoL148bGkvaSwgJzxkaXYnKS5yZXBsYWNlKC9saT4kL2ksICdkaXY+JykpO1xuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuZHJhZywgYXNzaWduKHtcbiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLnBsYWNlaG9sZGVyLm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMucGxhY2Vob2xkZXIub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICAgICAgfSwgY3NzKHRoaXMucGxhY2Vob2xkZXIsIFsncGFkZGluZ0xlZnQnLCAncGFkZGluZ1JpZ2h0JywgJ3BhZGRpbmdUb3AnLCAncGFkZGluZ0JvdHRvbSddKSkpO1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy5kcmFnLCAndWstbm8tYm9vdCcsICcnKTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLmRyYWcsIHRoaXMuY2xzRHJhZywgdGhpcy5jbHNDdXN0b20pO1xuXG4gICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuZHJhZy5maXJzdEVsZW1lbnRDaGlsZCwgaGVpZ2h0KHRoaXMucGxhY2Vob2xkZXIuZmlyc3RFbGVtZW50Q2hpbGQpKTtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSBvZmZzZXQodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgdmFyIGxlZnQgPSByZWYubGVmdDtcbiAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDtcbiAgICAgICAgICAgICAgICBhc3NpZ24odGhpcy5vcmlnaW4sIHtsZWZ0OiBsZWZ0IC0gdGhpcy5wb3MueCwgdG9wOiB0b3AgLSB0aGlzLnBvcy55fSk7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLnBsYWNlaG9sZGVyLCB0aGlzLmNsc1BsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbC5jaGlsZHJlbiwgdGhpcy5jbHNJdGVtKTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuY2xzRHJhZ1N0YXRlKTtcblxuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdzdGFydCcsIFt0aGlzLCB0aGlzLnBsYWNlaG9sZGVyXSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm1vdmUoZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBtb3ZlOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyh0aGlzLnBvcy54IC0gdGhpcy5vcmlnaW4ueCkgPiB0aGlzLnRocmVzaG9sZCB8fCBNYXRoLmFicyh0aGlzLnBvcy55IC0gdGhpcy5vcmlnaW4ueSkgPiB0aGlzLnRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydChlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50eXBlID09PSAnbW91c2Vtb3ZlJyA/IGUudGFyZ2V0IDogZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh0aGlzLnBvcy54IC0gZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0LCB0aGlzLnBvcy55IC0gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApO1xuXG4gICAgICAgICAgICAgICAgdmFyIHNvcnRhYmxlID0gdGhpcy5nZXRTb3J0YWJsZSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIHZhciBwcmV2aW91cyA9IHRoaXMuZ2V0U29ydGFibGUodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgdmFyIG1vdmUgPSBzb3J0YWJsZSAhPT0gcHJldmlvdXM7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNvcnRhYmxlIHx8IHdpdGhpbih0YXJnZXQsIHRoaXMucGxhY2Vob2xkZXIpIHx8IG1vdmUgJiYgKCFzb3J0YWJsZS5ncm91cCB8fCBzb3J0YWJsZS5ncm91cCAhPT0gcHJldmlvdXMuZ3JvdXApKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBzb3J0YWJsZS4kZWwgPT09IHRhcmdldC5wYXJlbnROb2RlICYmIHRhcmdldCB8fCB0b05vZGVzKHNvcnRhYmxlLiRlbC5jaGlsZHJlbikuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiB3aXRoaW4odGFyZ2V0LCBlbGVtZW50KTsgfSlbMF07XG5cbiAgICAgICAgICAgICAgICBpZiAobW92ZSkge1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91cy5yZW1vdmUodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzb3J0YWJsZS5pbnNlcnQodGhpcy5wbGFjZWhvbGRlciwgdGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGlmICghaW5jbHVkZXModGhpcy50b3VjaGVkLCBzb3J0YWJsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3VjaGVkLnB1c2goc29ydGFibGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2Nyb2xsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGwgIT09IHRoaXMuc2Nyb2xsWSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcy55ICs9IHNjcm9sbCAtIHRoaXMuc2Nyb2xsWTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxZID0gc2Nyb2xsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZW5kOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICBvZmYoZG9jdW1lbnQsIHBvaW50ZXJNb3ZlLCB0aGlzLm1vdmUpO1xuICAgICAgICAgICAgICAgIG9mZihkb2N1bWVudCwgcG9pbnRlclVwLCB0aGlzLmVuZCk7XG4gICAgICAgICAgICAgICAgb2ZmKHdpbmRvdywgJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudHlwZSAhPT0gJ21vdXNldXAnICYmIHdpdGhpbihlLnRhcmdldCwgJ2FbaHJlZl0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGNsb3Nlc3QoZS50YXJnZXQsICdhW2hyZWZdJykuaHJlZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcmV2ZW50Q2xpY2soKTtcblxuICAgICAgICAgICAgICAgIHZhciBzb3J0YWJsZSA9IHRoaXMuZ2V0U29ydGFibGUodGhpcy5wbGFjZWhvbGRlcik7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcyA9PT0gc29ydGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3JpZ2luLmluZGV4ICE9PSBpbmRleCh0aGlzLnBsYWNlaG9sZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ21vdmVkJywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoc29ydGFibGUuJGVsLCAnYWRkZWQnLCBbc29ydGFibGUsIHRoaXMucGxhY2Vob2xkZXJdKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3JlbW92ZWQnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdzdG9wJywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTtcblxuICAgICAgICAgICAgICAgIHJlbW92ZSh0aGlzLmRyYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZyA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICB2YXIgY2xhc3NlcyA9IHRoaXMudG91Y2hlZC5tYXAoZnVuY3Rpb24gKHNvcnRhYmxlKSB7IHJldHVybiAoKHNvcnRhYmxlLmNsc1BsYWNlaG9sZGVyKSArIFwiIFwiICsgKHNvcnRhYmxlLmNsc0l0ZW0pKTsgfSkuam9pbignICcpO1xuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hlZC5mb3JFYWNoKGZ1bmN0aW9uIChzb3J0YWJsZSkgeyByZXR1cm4gcmVtb3ZlQ2xhc3Moc29ydGFibGUuJGVsLmNoaWxkcmVuLCBjbGFzc2VzKTsgfSk7XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuY2xzRHJhZ1N0YXRlKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaW5zZXJ0OiBmdW5jdGlvbihlbGVtZW50LCB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwuY2hpbGRyZW4sIHRoaXMuY2xzSXRlbSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgaW5zZXJ0ID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3aXRoaW4oZWxlbWVudCwgdGhpcyQxLiRlbCkgfHwgaXNQcmVkZWNlc3NvcihlbGVtZW50LCB0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlKHRhcmdldCwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyKHRhcmdldCwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCh0aGlzJDEuJGVsLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoaW5zZXJ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oZWxlbWVudCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCF3aXRoaW4oZWxlbWVudCwgdGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hbmltYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZShlbGVtZW50KTsgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0U29ydGFibGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCAmJiAodGhpcy4kZ2V0Q29tcG9uZW50KGVsZW1lbnQsICdzb3J0YWJsZScpIHx8IHRoaXMuZ2V0U29ydGFibGUoZWxlbWVudC5wYXJlbnROb2RlKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzUHJlZGVjZXNzb3IoZWxlbWVudCwgdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnBhcmVudE5vZGUgPT09IHRhcmdldC5wYXJlbnROb2RlICYmIGluZGV4KGVsZW1lbnQpID4gaW5kZXgodGFyZ2V0KTtcbiAgICB9XG5cbiAgICB2YXIgb2JqJDI7XG5cbiAgICB2YXIgYWN0aXZlcyA9IFtdO1xuXG4gICAgdmFyIFRvb2x0aXAgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgYXJnczogJ3RpdGxlJyxcblxuICAgICAgICBtaXhpbnM6IFtDb250YWluZXIsIFRvZ2dsYWJsZSwgUG9zaXRpb25dLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkZWxheTogTnVtYmVyLFxuICAgICAgICAgICAgdGl0bGU6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHBvczogJ3RvcCcsXG4gICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICBkZWxheTogMCxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogWyd1ay1hbmltYXRpb24tc2NhbGUtdXAnXSxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAsXG4gICAgICAgICAgICBjbHM6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzUG9zOiAndWstdG9vbHRpcCdcbiAgICAgICAgfSxcblxuICAgICAgICBiZWZvcmVDb25uZWN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhc1RpdGxlID0gaGFzQXR0cih0aGlzLiRlbCwgJ3RpdGxlJyk7XG4gICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCB7dGl0bGU6ICcnLCAnYXJpYS1leHBhbmRlZCc6IGZhbHNlfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwge3RpdGxlOiB0aGlzLl9oYXNUaXRsZSA/IHRoaXMudGl0bGUgOiBudWxsLCAnYXJpYS1leHBhbmRlZCc6IG51bGx9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZXMoYWN0aXZlcywgdGhpcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFjdGl2ZXMuZm9yRWFjaChmdW5jdGlvbiAoYWN0aXZlKSB7IHJldHVybiBhY3RpdmUuaGlkZSgpOyB9KTtcbiAgICAgICAgICAgICAgICBhY3RpdmVzLnB1c2godGhpcyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl91bmJpbmQgPSBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuICF3aXRoaW4oZS50YXJnZXQsIHRoaXMkMS4kZWwpICYmIHRoaXMkMS5oaWRlKCk7IH0pO1xuXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IGFwcGVuZCh0aGlzLmNvbnRhaW5lciwgKFwiPGRpdiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNQb3MpICsgXCJcXFwiIGFyaWEtaGlkZGVuPjxkaXYgY2xhc3M9XFxcIlwiICsgKHRoaXMuY2xzUG9zKSArIFwiLWlubmVyXFxcIj5cIiArICh0aGlzLnRpdGxlKSArIFwiPC9kaXY+PC9kaXY+XCIpKTtcblxuICAgICAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsICdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uQXQodGhpcy50b29sdGlwLCB0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbiA9IHRoaXMuZ2V0QXhpcygpID09PSAneScgPyAoKGZsaXBQb3NpdGlvbih0aGlzLmRpcikpICsgXCItXCIgKyAodGhpcy5hbGlnbikpIDogKCh0aGlzLmFsaWduKSArIFwiLVwiICsgKGZsaXBQb3NpdGlvbih0aGlzLmRpcikpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRvZ2dsZUVsZW1lbnQodGhpcyQxLnRvb2x0aXAsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5oaWRlVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNWaXNpYmxlKHRoaXMkMS4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9LCAxNTApO1xuXG4gICAgICAgICAgICAgICAgfSwgdGhpcy5kZWxheSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpbmRleCQkMSA9IGFjdGl2ZXMuaW5kZXhPZih0aGlzKTtcblxuICAgICAgICAgICAgICAgIGlmICghfmluZGV4JCQxIHx8IG1hdGNoZXModGhpcy4kZWwsICdpbnB1dCcpICYmIHRoaXMuJGVsID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhY3RpdmVzLnNwbGljZShpbmRleCQkMSwgMSk7XG5cbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpO1xuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5oaWRlVGltZXIpO1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsICdhcmlhLWV4cGFuZGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRWxlbWVudCh0aGlzLnRvb2x0aXAsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgJiYgcmVtb3ZlKHRoaXMudG9vbHRpcCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fdW5iaW5kKCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogKCBvYmokMiA9IHt9LCBvYmokMlsoXCJmb2N1cyBcIiArIHBvaW50ZXJFbnRlciArIFwiIFwiICsgcG9pbnRlckRvd24pXSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUudHlwZSAhPT0gcG9pbnRlckRvd24gfHwgIWlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqJDIuYmx1ciA9ICdoaWRlJywgb2JqJDJbcG9pbnRlckxlYXZlXSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIG9iaiQyIClcblxuICAgIH07XG5cbiAgICB2YXIgVXBsb2FkID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBhbGxvdzogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRHJhZ292ZXI6IFN0cmluZyxcbiAgICAgICAgICAgIGNvbmN1cnJlbnQ6IE51bWJlcixcbiAgICAgICAgICAgIG1heFNpemU6IE51bWJlcixcbiAgICAgICAgICAgIG1ldGhvZDogU3RyaW5nLFxuICAgICAgICAgICAgbWltZTogU3RyaW5nLFxuICAgICAgICAgICAgbXNnSW52YWxpZE1pbWU6IFN0cmluZyxcbiAgICAgICAgICAgIG1zZ0ludmFsaWROYW1lOiBTdHJpbmcsXG4gICAgICAgICAgICBtc2dJbnZhbGlkU2l6ZTogU3RyaW5nLFxuICAgICAgICAgICAgbXVsdGlwbGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBuYW1lOiBTdHJpbmcsXG4gICAgICAgICAgICBwYXJhbXM6IE9iamVjdCxcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHVybDogU3RyaW5nLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFsbG93OiBmYWxzZSxcbiAgICAgICAgICAgIGNsc0RyYWdvdmVyOiAndWstZHJhZ292ZXInLFxuICAgICAgICAgICAgY29uY3VycmVudDogMSxcbiAgICAgICAgICAgIG1heFNpemU6IDAsXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgIG1pbWU6IGZhbHNlLFxuICAgICAgICAgICAgbXNnSW52YWxpZE1pbWU6ICdJbnZhbGlkIEZpbGUgVHlwZTogJXMnLFxuICAgICAgICAgICAgbXNnSW52YWxpZE5hbWU6ICdJbnZhbGlkIEZpbGUgTmFtZTogJXMnLFxuICAgICAgICAgICAgbXNnSW52YWxpZFNpemU6ICdJbnZhbGlkIEZpbGUgU2l6ZTogJXMgS2lsb2J5dGVzIE1heCcsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBuYW1lOiAnZmlsZXNbXScsXG4gICAgICAgICAgICBwYXJhbXM6IHt9LFxuICAgICAgICAgICAgdHlwZTogJycsXG4gICAgICAgICAgICB1cmw6ICcnLFxuICAgICAgICAgICAgYWJvcnQ6IG5vb3AsXG4gICAgICAgICAgICBiZWZvcmVBbGw6IG5vb3AsXG4gICAgICAgICAgICBiZWZvcmVTZW5kOiBub29wLFxuICAgICAgICAgICAgY29tcGxldGU6IG5vb3AsXG4gICAgICAgICAgICBjb21wbGV0ZUFsbDogbm9vcCxcbiAgICAgICAgICAgIGVycm9yOiBub29wLFxuICAgICAgICAgICAgZmFpbDogbm9vcCxcbiAgICAgICAgICAgIGxvYWQ6IG5vb3AsXG4gICAgICAgICAgICBsb2FkRW5kOiBub29wLFxuICAgICAgICAgICAgbG9hZFN0YXJ0OiBub29wLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IG5vb3BcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgY2hhbmdlOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXMoZS50YXJnZXQsICdpbnB1dFt0eXBlPVwiZmlsZVwiXScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWQoZS50YXJnZXQuZmlsZXMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcm9wOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcblxuICAgICAgICAgICAgICAgIHZhciB0cmFuc2ZlciA9IGUuZGF0YVRyYW5zZmVyO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0cmFuc2ZlciB8fCAhdHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0RyYWdvdmVyKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkKHRyYW5zZmVyLmZpbGVzKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyYWdlbnRlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHN0b3AoZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcmFnb3ZlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHN0b3AoZSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJhZ292ZXIpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZHJhZ2xlYXZlOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNEcmFnb3Zlcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHVwbG9hZDogZnVuY3Rpb24oZmlsZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICd1cGxvYWQnLCBbZmlsZXNdKTtcblxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLm1heFNpemUgJiYgdGhpcyQxLm1heFNpemUgKiAxMDAwIDwgZmlsZXNbaV0uc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmZhaWwodGhpcyQxLm1zZ0ludmFsaWRTaXplLnJlcGxhY2UoJyVzJywgdGhpcyQxLm1heFNpemUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuYWxsb3cgJiYgIW1hdGNoKHRoaXMkMS5hbGxvdywgZmlsZXNbaV0ubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5mYWlsKHRoaXMkMS5tc2dJbnZhbGlkTmFtZS5yZXBsYWNlKCclcycsIHRoaXMkMS5hbGxvdykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5taW1lICYmICFtYXRjaCh0aGlzJDEubWltZSwgZmlsZXNbaV0udHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5mYWlsKHRoaXMkMS5tc2dJbnZhbGlkTWltZS5yZXBsYWNlKCclcycsIHRoaXMkMS5taW1lKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlcyA9IFtmaWxlc1swXV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmVBbGwodGhpcywgZmlsZXMpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNodW5rcyA9IGNodW5rKGZpbGVzLCB0aGlzLmNvbmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIHZhciB1cGxvYWQgPSBmdW5jdGlvbiAoZmlsZXMpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSQkMSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzLmZvckVhY2goZnVuY3Rpb24gKGZpbGUpIHsgcmV0dXJuIGRhdGEkJDEuYXBwZW5kKHRoaXMkMS5uYW1lLCBmaWxlKTsgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMkMS5wYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuYXBwZW5kKGtleSwgdGhpcyQxLnBhcmFtc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFqYXgodGhpcyQxLnVybCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSQkMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogdGhpcyQxLm1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogdGhpcyQxLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVTZW5kOiBmdW5jdGlvbiAoZW52KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeGhyID0gZW52LnhocjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIudXBsb2FkICYmIG9uKHhoci51cGxvYWQsICdwcm9ncmVzcycsIHRoaXMkMS5wcm9ncmVzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWydsb2FkU3RhcnQnLCAnbG9hZCcsICdsb2FkRW5kJywgJ2Fib3J0J10uZm9yRWFjaChmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gb24oeGhyLCB0eXBlLnRvTG93ZXJDYXNlKCksIHRoaXMkMVt0eXBlXSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmJlZm9yZVNlbmQoZW52KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHhocikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmNvbXBsZXRlKHhocik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2h1bmtzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWQoY2h1bmtzLnNoaWZ0KCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5jb21wbGV0ZUFsbCh4aHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzJDEuZXJyb3IoZS5tZXNzYWdlKTsgfVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHVwbG9hZChjaHVua3Muc2hpZnQoKSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbWF0Y2gocGF0dGVybiwgcGF0aCkge1xuICAgICAgICByZXR1cm4gcGF0aC5tYXRjaChuZXcgUmVnRXhwKChcIl5cIiArIChwYXR0ZXJuLnJlcGxhY2UoL1xcLy9nLCAnXFxcXC8nKS5yZXBsYWNlKC9cXCpcXCovZywgJyhcXFxcL1teXFxcXC9dKykqJykucmVwbGFjZSgvXFwqL2csICdbXlxcXFwvXSsnKS5yZXBsYWNlKC8oKD8hXFxcXCkpXFw/L2csICckMS4nKSkgKyBcIiRcIiksICdpJykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNodW5rKGZpbGVzLCBzaXplKSB7XG4gICAgICAgIHZhciBjaHVua3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkgKz0gc2l6ZSkge1xuICAgICAgICAgICAgdmFyIGNodW5rID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNpemU7IGorKykge1xuICAgICAgICAgICAgICAgIGNodW5rLnB1c2goZmlsZXNbaSArIGpdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNodW5rcy5wdXNoKGNodW5rKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2h1bmtzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0b3AoZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgVUlraXQuY29tcG9uZW50KCdjb3VudGRvd24nLCBDb3VudGRvd24pO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnZmlsdGVyJywgRmlsdGVyKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ2xpZ2h0Ym94JywgTGlnaHRib3gpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnbGlnaHRib3hQYW5lbCcsIExpZ2h0Ym94UGFuZWwpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnbm90aWZpY2F0aW9uJywgTm90aWZpY2F0aW9uKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3BhcmFsbGF4JywgUGFyYWxsYXgkMSk7XG4gICAgVUlraXQuY29tcG9uZW50KCdzbGlkZXInLCBTbGlkZXIkMSk7XG4gICAgVUlraXQuY29tcG9uZW50KCdzbGlkZXJQYXJhbGxheCcsIFNsaWRlclBhcmFsbGF4KTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlc2hvdycsIFNsaWRlc2hvdyQxKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlc2hvd1BhcmFsbGF4JywgU2xpZGVyUGFyYWxsYXgpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc29ydGFibGUnLCBTb3J0YWJsZSk7XG4gICAgVUlraXQuY29tcG9uZW50KCd0b29sdGlwJywgVG9vbHRpcCk7XG4gICAgVUlraXQuY29tcG9uZW50KCd1cGxvYWQnLCBVcGxvYWQpO1xuXG4gICAge1xuICAgICAgICBib290KFVJa2l0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gVUlraXQ7XG5cbn0pKSk7XG4iXX0= +"use strict";function getScript(url,integrity,cross_origin){const script=document.createElement("script");script.type="text/javascript",script.src=url,script.defer=!0,void 0!==integrity&&(script.integrity=integrity),void 0!==cross_origin&&(script.crossOrigin=cross_origin),document.getElementsByTagName("head")[0].appendChild(script)}function setClass(selector,my_class){document.querySelector(selector).className=my_class}function removeClass(selector,my_class){const element=document.querySelector(selector),reg=new RegExp(`(^| )${my_class}($| )`,"g");element.className=element.className.replace(reg," ")}function error_typewriter(){const app=document.getElementById("error"),typewriter=new Typewriter(app,{loop:!1,deleteSpeed:40,typingSpeed:"natural",devMode:!1});document.getElementById("terminal-close").onclick=function(){const app=document.getElementById("win"),current_class=app.getAttribute("class");app.setAttribute("class",`${current_class} uk-animation-scale-up uk-animation-reverse`),typewriter.stop()},typewriter.appendText("Python 3.6.4 (default, Jan 5 2018, 02:35:40)\n").appendText("[GCC 7.2.1 20171224] on darwin\n").appendText('Type "help", "copyright", "credits" or "license" for more information.\n').appendText(">>> ").pauseFor(1e3).typeString("impor requests").deleteChars(9).typeString("t requests\n").appendText(">>> ").pauseFor(750).changeSettings({typingSpeed:"natural"}).typeString(`response = requests.${window._RequestMethod}('https://pythim`).deleteChars(2).typeString("ondiscord.con/").deleteChars(2).typeString(`m${window._Path}')\n`).pauseFor(1e3).appendText(`<Response [${window._Code}]>\n>>> `).typeString("# hmmmm").pauseFor(1e3).deleteChars(7).pauseFor(1e3).typeString("response.text\n").appendText(`${window._ErrorMsg}\n>>> `).start()}setClass("html","prevent-fouc"),document.onreadystatechange=function(){"interactive"===document.readyState&&(removeClass("html","prevent-fouc"),getScript("https://pro.fontawesome.com/releases/v5.1.0/js/all.js","sha384-E5SpgaZcbSJx0Iabb3Jr2AfTRiFnrdOw1mhO19DzzrT9L+wCpDyHUG2q07aQdO6E","anonymous"),getScript("https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js"),getScript("https://cdn.jsdelivr.net/npm/flatpickr"))},function(){const startjam=new Date(Date.UTC(2018,2,23)),endjam=new Date(Date.UTC(2018,2,26)),now=Date.now();let goal;if(now+1e3<endjam.getTime()){UIkit.notification({message:'<div class=\'uk-text-center\'> <span id="countdown-title" class="uk-text-center"> <a href="/info/jams">Code Jam</a> Countdown </span> <p class=\'uk-text-large\' id="countdown-remaining">...</p><small style=\'font-size: 0.6em;\'>(Tap/click to dismiss)</small></div>',pos:"bottom-right",timeout:endjam-now});const heading=document.getElementById("countdown-title");now>startjam.getTime()?(heading.innerHTML='Current <a href="/info/jams">code jam</a> ends in...',goal=endjam.getTime()):(heading.innerHTML='Next <a href="/info/jams">code jam</a> starts in...',goal=startjam.getTime());const refreshCountdown=setInterval(()=>{let delta=goal-Date.now();if(delta<=1e3)return clearInterval(refreshCountdown),location.reload();let days=Math.floor(delta/864e5);delta-=864e5*days;let hours=Math.floor(delta/36e5);delta-=36e5*hours;let minutes=Math.floor(delta/6e4);delta-=6e4*minutes;let seconds=Math.floor(delta/1e3);days<10&&(days=`0${days}`),hours<10&&(hours=`0${hours}`),minutes<10&&(minutes=`0${minutes}`),seconds<10&&(seconds=`0${seconds}`);try{document.getElementById("countdown-remaining").innerHTML=`${days}:${hours}:${minutes}:${seconds}`}catch(e){return clearInterval(refreshCountdown)}},500)}}();class JamActions{constructor(url,csrf_token){this.url=url,this.csrf_token=csrf_token}send(action,method,data,callback){data.action=action,$.ajax(this.url,{data:data,dataType:"json",headers:{"X-CSRFToken":this.csrf_token},method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}send_json(action,method,data,callback){data.action=action,$.ajax(this.url,{data:JSON.stringify(data),dataType:"json",headers:{"X-CSRFToken":this.csrf_token},contentType:"application/json",method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}set_state(jam,state,callback){this.send("state","POST",{jam:jam,state:state},callback)}get_questions(callback){this.send("questions","GET",{},callback)}create_question(data,callback){this.send_json("questions","POST",data,callback)}delete_question(id,callback){this.send("question","DELETE",{id:id},callback)}associate_question(form,question,callback){this.send("associate_question","POST",{form:form,question:question},callback)}disassociate_question(form,question,callback){this.send("disassociate_question","POST",{form:form,question:question},callback)}create_infraction(id,reason,number,callback){this.send("infraction","POST",{participant:id,reason:reason,number:number},callback)}delete_infraction(id,callback){this.send("infraction","DELETE",{id:id},callback)}approve_application(id,callback){this.send("approve_application","POST",{id:id},callback)}unapprove_application(id,callback){this.send("unapprove_application","POST",{id:id},callback)}generate_teams(jam,callback){this.send("generate_teams","POST",{jam:jam},callback)}create_team(jam,callback){this.send("create_team","POST",{jam:jam},callback)}reroll_team(team,callback){this.send("reroll_team","POST",{team:team},callback)}delete_team(team,callback){this.send("team","DELETE",{team:team},callback)}set_team_member(jam,member,team,callback){this.send("set_team_member","POST",{jam:jam,member:member,team:team},callback)}}function revision_diff(revisions){const buttons=document.querySelectorAll("td input"),id_reg=/compare-(before|after)-([\w|-]+)/;function getRevisionId(element){const e=element.id.match(id_reg);return[e[1],e[2]]}function getRevision(id){return revisions.filter(x=>x.id===id)[0]}buttons.forEach(button=>{button.checked=!1,button.onchange=function(){!function(element){const id=getRevisionId(element),rev=getRevision(id[1]);let aft,bef;"after"===id[0]?(document.querySelector(`#compare-before-${id[1]}`).checked=!1,buttons.forEach(e=>{"after"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1)})):(document.querySelector(`#compare-after-${id[1]}`).checked=!1,buttons.forEach(e=>{"before"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1),"after"===getRevisionId(e)[0]&&(getRevision(getRevisionId(e)[1]).date<=rev.date?document.querySelector(`#${e.id}`).setAttribute("disabled",""):document.querySelector(`#${e.id}`).removeAttribute("disabled"))})),buttons.forEach(button=>{const id=getRevisionId(button);button.checked&&"before"===id[0]&&(bef=id[1]),button.checked&&"after"===id[0]&&(aft=id[1])}),document.getElementById("compare-submit").href=`/history/compare/${bef}/${aft}`}(button)}})}function wiki_sidebar(){const sidebar=document.getElementById("wiki-sidebar");document.getElementById("wiki-sidebar-button").onclick=function(){sidebar.classList.contains("uk-visible@s")?sidebar.classList.remove("uk-visible@s"):sidebar.classList.add("uk-visible@s")}}!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.moment=factory()}(this,function(){var hookCallback,some;function hooks(){return hookCallback.apply(null,arguments)}function isArray(input){return input instanceof Array||"[object Array]"===Object.prototype.toString.call(input)}function isObject(input){return null!=input&&"[object Object]"===Object.prototype.toString.call(input)}function isUndefined(input){return void 0===input}function isNumber(input){return"number"==typeof input||"[object Number]"===Object.prototype.toString.call(input)}function isDate(input){return input instanceof Date||"[object Date]"===Object.prototype.toString.call(input)}function map(arr,fn){var i,res=[];for(i=0;i<arr.length;++i)res.push(fn(arr[i],i));return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b)hasOwnProp(b,i)&&(a[i]=b[i]);return hasOwnProp(b,"toString")&&(a.toString=b.toString),hasOwnProp(b,"valueOf")&&(a.valueOf=b.valueOf),a}function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!0).utc()}function getParsingFlags(m){return null==m._pf&&(m._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),m._pf}function isValid(m){if(null==m._isValid){var flags=getParsingFlags(m),parsedParts=some.call(flags.parsedDateParts,function(i){return null!=i}),isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||flags.meridiem&&parsedParts);if(m._strict&&(isNowValid=isNowValid&&0===flags.charsLeftOver&&0===flags.unusedTokens.length&&void 0===flags.bigHour),null!=Object.isFrozen&&Object.isFrozen(m))return isNowValid;m._isValid=isNowValid}return m._isValid}function createInvalid(flags){var m=createUTC(NaN);return null!=flags?extend(getParsingFlags(m),flags):getParsingFlags(m).userInvalidated=!0,m}some=Array.prototype.some?Array.prototype.some:function(fun){for(var t=Object(this),len=t.length>>>0,i=0;i<len;i++)if(i in t&&fun.call(this,t[i],i,t))return!0;return!1};var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(isUndefined(from._isAMomentObject)||(to._isAMomentObject=from._isAMomentObject),isUndefined(from._i)||(to._i=from._i),isUndefined(from._f)||(to._f=from._f),isUndefined(from._l)||(to._l=from._l),isUndefined(from._strict)||(to._strict=from._strict),isUndefined(from._tzm)||(to._tzm=from._tzm),isUndefined(from._isUTC)||(to._isUTC=from._isUTC),isUndefined(from._offset)||(to._offset=from._offset),isUndefined(from._pf)||(to._pf=getParsingFlags(from)),isUndefined(from._locale)||(to._locale=from._locale),momentProperties.length>0)for(i=0;i<momentProperties.length;i++)isUndefined(val=from[prop=momentProperties[i]])||(to[prop]=val);return to}var updateInProgress=!1;function Moment(config){copyConfig(this,config),this._d=new Date(null!=config._d?config._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===updateInProgress&&(updateInProgress=!0,hooks.updateOffset(this),updateInProgress=!1)}function isMoment(obj){return obj instanceof Moment||null!=obj&&null!=obj._isAMomentObject}function absFloor(number){return number<0?Math.ceil(number)||0:Math.floor(number)}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;return 0!==coercedNumber&&isFinite(coercedNumber)&&(value=absFloor(coercedNumber)),value}function compareArrays(array1,array2,dontConvert){var i,len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0;for(i=0;i<len;i++)(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i]))&&diffs++;return diffs+lengthDiff}function warn(msg){!1===hooks.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+msg)}function deprecate(msg,fn){var firstTime=!0;return extend(function(){if(null!=hooks.deprecationHandler&&hooks.deprecationHandler(null,msg),firstTime){for(var arg,args=[],i=0;i<arguments.length;i++){if(arg="","object"==typeof arguments[i]){for(var key in arg+="\n["+i+"] ",arguments[0])arg+=key+": "+arguments[0][key]+", ";arg=arg.slice(0,-2)}else arg=arguments[i];args.push(arg)}warn(msg+"\nArguments: "+Array.prototype.slice.call(args).join("")+"\n"+(new Error).stack),firstTime=!1}return fn.apply(this,arguments)},fn)}var keys,deprecations={};function deprecateSimple(name,msg){null!=hooks.deprecationHandler&&hooks.deprecationHandler(name,msg),deprecations[name]||(warn(msg),deprecations[name]=!0)}function isFunction(input){return input instanceof Function||"[object Function]"===Object.prototype.toString.call(input)}function mergeConfigs(parentConfig,childConfig){var prop,res=extend({},parentConfig);for(prop in childConfig)hasOwnProp(childConfig,prop)&&(isObject(parentConfig[prop])&&isObject(childConfig[prop])?(res[prop]={},extend(res[prop],parentConfig[prop]),extend(res[prop],childConfig[prop])):null!=childConfig[prop]?res[prop]=childConfig[prop]:delete res[prop]);for(prop in parentConfig)hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])&&(res[prop]=extend({},res[prop]));return res}function Locale(config){null!=config&&this.set(config)}hooks.suppressDeprecationWarnings=!1,hooks.deprecationHandler=null,keys=Object.keys?Object.keys:function(obj){var i,res=[];for(i in obj)hasOwnProp(obj,i)&&res.push(i);return res};var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+"s"]=aliases[shorthand]=unit}function normalizeUnits(units){return"string"==typeof units?aliases[units]||aliases[units.toLowerCase()]:void 0}function normalizeObjectUnits(inputObject){var normalizedProp,prop,normalizedInput={};for(prop in inputObject)hasOwnProp(inputObject,prop)&&(normalizedProp=normalizeUnits(prop))&&(normalizedInput[normalizedProp]=inputObject[prop]);return normalizedInput}var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority}function zeroFill(number,targetLength,forceSign){var absNumber=""+Math.abs(number),zerosToFill=targetLength-absNumber.length;return(number>=0?forceSign?"+":"":"-")+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber}var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,formatFunctions={},formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;"string"==typeof callback&&(func=function(){return this[callback]()}),token&&(formatTokenFunctions[token]=func),padded&&(formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}),ordinal&&(formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)})}function formatMoment(m,format){return m.isValid()?(format=expandFormat(format,m.localeData()),formatFunctions[format]=formatFunctions[format]||function(format){var i,length,input,array=format.match(formattingTokens);for(i=0,length=array.length;i<length;i++)formatTokenFunctions[array[i]]?array[i]=formatTokenFunctions[array[i]]:array[i]=(input=array[i]).match(/\[[\s\S]/)?input.replace(/^\[|\]$/g,""):input.replace(/\\/g,"");return function(mom){var i,output="";for(i=0;i<length;i++)output+=isFunction(array[i])?array[i].call(mom,format):array[i];return output}}(format),formatFunctions[format](m)):m.localeData().invalidDate()}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}for(localFormattingTokens.lastIndex=0;i>=0&&localFormattingTokens.test(format);)format=format.replace(localFormattingTokens,replaceLongDateFormatTokens),localFormattingTokens.lastIndex=0,i-=1;return format}var match1=/\d/,match2=/\d\d/,match3=/\d{3}/,match4=/\d{4}/,match6=/[+-]?\d{6}/,match1to2=/\d\d?/,match3to4=/\d\d\d\d?/,match5to6=/\d\d\d\d\d\d?/,match1to3=/\d{1,3}/,match1to4=/\d{1,4}/,match1to6=/[+-]?\d{1,6}/,matchUnsigned=/\d+/,matchSigned=/[+-]?\d+/,matchOffset=/Z|[+-]\d\d:?\d\d/gi,matchShortOffset=/Z|[+-]\d\d(?::?\d\d)?/gi,matchWord=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){return hasOwnProp(regexes,token)?regexes[token](config._strict,config._locale):new RegExp(regexEscape(token.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4})))}function regexEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var tokens={};function addParseToken(token,callback){var i,func=callback;for("string"==typeof token&&(token=[token]),isNumber(callback)&&(func=function(input,array){array[callback]=toInt(input)}),i=0;i<token.length;i++)tokens[token[i]]=func}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{},callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){null!=input&&hasOwnProp(tokens,token)&&tokens[token](input,config._a,config,token)}var YEAR=0,MONTH=1,DATE=2,HOUR=3,MINUTE=4,SECOND=5,MILLISECOND=6,WEEK=7,WEEKDAY=8;function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4==0&&year%100!=0||year%400==0}addFormatToken("Y",0,0,function(){var y=this.year();return y<=9999?""+y:"+"+y}),addFormatToken(0,["YY",2],0,function(){return this.year()%100}),addFormatToken(0,["YYYY",4],0,"year"),addFormatToken(0,["YYYYY",5],0,"year"),addFormatToken(0,["YYYYYY",6,!0],0,"year"),addUnitAlias("year","y"),addUnitPriority("year",1),addRegexToken("Y",matchSigned),addRegexToken("YY",match1to2,match2),addRegexToken("YYYY",match1to4,match4),addRegexToken("YYYYY",match1to6,match6),addRegexToken("YYYYYY",match1to6,match6),addParseToken(["YYYYY","YYYYYY"],YEAR),addParseToken("YYYY",function(input,array){array[YEAR]=2===input.length?hooks.parseTwoDigitYear(input):toInt(input)}),addParseToken("YY",function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input)}),addParseToken("Y",function(input,array){array[YEAR]=parseInt(input,10)}),hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var indexOf,getSetYear=makeGetSet("FullYear",!0);function makeGetSet(unit,keepTime){return function(value){return null!=value?(set$1(this,unit,value),hooks.updateOffset(this,keepTime),this):get(this,unit)}}function get(mom,unit){return mom.isValid()?mom._d["get"+(mom._isUTC?"UTC":"")+unit]():NaN}function set$1(mom,unit,value){mom.isValid()&&!isNaN(value)&&("FullYear"===unit&&isLeapYear(mom.year())&&1===mom.month()&&29===mom.date()?mom._d["set"+(mom._isUTC?"UTC":"")+unit](value,mom.month(),daysInMonth(value,mom.month())):mom._d["set"+(mom._isUTC?"UTC":"")+unit](value))}function daysInMonth(year,month){if(isNaN(year)||isNaN(month))return NaN;var x,modMonth=(month%(x=12)+x)%x;return year+=(month-modMonth)/12,1===modMonth?isLeapYear(year)?29:28:31-modMonth%7%2}indexOf=Array.prototype.indexOf?Array.prototype.indexOf:function(o){var i;for(i=0;i<this.length;++i)if(this[i]===o)return i;return-1},addFormatToken("M",["MM",2],"Mo",function(){return this.month()+1}),addFormatToken("MMM",0,0,function(format){return this.localeData().monthsShort(this,format)}),addFormatToken("MMMM",0,0,function(format){return this.localeData().months(this,format)}),addUnitAlias("month","M"),addUnitPriority("month",8),addRegexToken("M",match1to2),addRegexToken("MM",match1to2,match2),addRegexToken("MMM",function(isStrict,locale){return locale.monthsShortRegex(isStrict)}),addRegexToken("MMMM",function(isStrict,locale){return locale.monthsRegex(isStrict)}),addParseToken(["M","MM"],function(input,array){array[MONTH]=toInt(input)-1}),addParseToken(["MMM","MMMM"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);null!=month?array[MONTH]=month:getParsingFlags(config).invalidMonth=input});var MONTHS_IN_FORMAT=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,defaultLocaleMonths="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var defaultLocaleMonthsShort="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function setMonth(mom,value){var dayOfMonth;if(!mom.isValid())return mom;if("string"==typeof value)if(/^\d+$/.test(value))value=toInt(value);else if(!isNumber(value=mom.localeData().monthsParse(value)))return mom;return dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value)),mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth),mom}function getSetMonth(value){return null!=value?(setMonth(this,value),hooks.updateOffset(this,!0),this):get(this,"Month")}var defaultMonthsShortRegex=matchWord;var defaultMonthsRegex=matchWord;function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<12;i++)mom=createUTC([2e3,i]),shortPieces.push(this.monthsShort(mom,"")),longPieces.push(this.months(mom,"")),mixedPieces.push(this.months(mom,"")),mixedPieces.push(this.monthsShort(mom,""));for(shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<12;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]);for(i=0;i<24;i++)mixedPieces[i]=regexEscape(mixedPieces[i]);this._monthsRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i")}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));return y<100&&y>=0&&isFinite(date.getUTCFullYear())&&date.setUTCFullYear(y),date}function firstWeekOffset(year,dow,doy){var fwd=7+dow-doy;return-((7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7)+fwd-1}function dayOfYearFromWeeks(year,week,weekday,dow,doy){var resYear,resDayOfYear,dayOfYear=1+7*(week-1)+(7+weekday-dow)%7+firstWeekOffset(year,dow,doy);return dayOfYear<=0?resDayOfYear=daysInYear(resYear=year-1)+dayOfYear:dayOfYear>daysInYear(year)?(resYear=year+1,resDayOfYear=dayOfYear-daysInYear(year)):(resYear=year,resDayOfYear=dayOfYear),{year:resYear,dayOfYear:resDayOfYear}}function weekOfYear(mom,dow,doy){var resWeek,resYear,weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1;return week<1?resWeek=week+weeksInYear(resYear=mom.year()-1,dow,doy):week>weeksInYear(mom.year(),dow,doy)?(resWeek=week-weeksInYear(mom.year(),dow,doy),resYear=mom.year()+1):(resYear=mom.year(),resWeek=week),{week:resWeek,year:resYear}}function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7}addFormatToken("w",["ww",2],"wo","week"),addFormatToken("W",["WW",2],"Wo","isoWeek"),addUnitAlias("week","w"),addUnitAlias("isoWeek","W"),addUnitPriority("week",5),addUnitPriority("isoWeek",5),addRegexToken("w",match1to2),addRegexToken("ww",match1to2,match2),addRegexToken("W",match1to2),addRegexToken("WW",match1to2,match2),addWeekParseToken(["w","ww","W","WW"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});addFormatToken("d",0,"do","day"),addFormatToken("dd",0,0,function(format){return this.localeData().weekdaysMin(this,format)}),addFormatToken("ddd",0,0,function(format){return this.localeData().weekdaysShort(this,format)}),addFormatToken("dddd",0,0,function(format){return this.localeData().weekdays(this,format)}),addFormatToken("e",0,0,"weekday"),addFormatToken("E",0,0,"isoWeekday"),addUnitAlias("day","d"),addUnitAlias("weekday","e"),addUnitAlias("isoWeekday","E"),addUnitPriority("day",11),addUnitPriority("weekday",11),addUnitPriority("isoWeekday",11),addRegexToken("d",match1to2),addRegexToken("e",match1to2),addRegexToken("E",match1to2),addRegexToken("dd",function(isStrict,locale){return locale.weekdaysMinRegex(isStrict)}),addRegexToken("ddd",function(isStrict,locale){return locale.weekdaysShortRegex(isStrict)}),addRegexToken("dddd",function(isStrict,locale){return locale.weekdaysRegex(isStrict)}),addWeekParseToken(["dd","ddd","dddd"],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);null!=weekday?week.d=weekday:getParsingFlags(config).invalidWeekday=input}),addWeekParseToken(["d","e","E"],function(input,week,config,token){week[token]=toInt(input)});var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var defaultWeekdaysRegex=matchWord;var defaultWeekdaysShortRegex=matchWord;var defaultWeekdaysMinRegex=matchWord;function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,minp,shortp,longp,minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<7;i++)mom=createUTC([2e3,1]).day(i),minp=this.weekdaysMin(mom,""),shortp=this.weekdaysShort(mom,""),longp=this.weekdays(mom,""),minPieces.push(minp),shortPieces.push(shortp),longPieces.push(longp),mixedPieces.push(minp),mixedPieces.push(shortp),mixedPieces.push(longp);for(minPieces.sort(cmpLenRev),shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<7;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]),mixedPieces[i]=regexEscape(mixedPieces[i]);this._weekdaysRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+minPieces.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}function matchMeridiem(isStrict,locale){return locale._meridiemParse}addFormatToken("H",["HH",2],0,"hour"),addFormatToken("h",["hh",2],0,hFormat),addFormatToken("k",["kk",2],0,function(){return this.hours()||24}),addFormatToken("hmm",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)}),addFormatToken("hmmss",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),addFormatToken("Hmm",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)}),addFormatToken("Hmmss",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),meridiem("a",!0),meridiem("A",!1),addUnitAlias("hour","h"),addUnitPriority("hour",13),addRegexToken("a",matchMeridiem),addRegexToken("A",matchMeridiem),addRegexToken("H",match1to2),addRegexToken("h",match1to2),addRegexToken("k",match1to2),addRegexToken("HH",match1to2,match2),addRegexToken("hh",match1to2,match2),addRegexToken("kk",match1to2,match2),addRegexToken("hmm",match3to4),addRegexToken("hmmss",match5to6),addRegexToken("Hmm",match3to4),addRegexToken("Hmmss",match5to6),addParseToken(["H","HH"],HOUR),addParseToken(["k","kk"],function(input,array,config){var kInput=toInt(input);array[HOUR]=24===kInput?0:kInput}),addParseToken(["a","A"],function(input,array,config){config._isPm=config._locale.isPM(input),config._meridiem=input}),addParseToken(["h","hh"],function(input,array,config){array[HOUR]=toInt(input),getParsingFlags(config).bigHour=!0}),addParseToken("hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos)),getParsingFlags(config).bigHour=!0}),addParseToken("hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2)),getParsingFlags(config).bigHour=!0}),addParseToken("Hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos))}),addParseToken("Hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2))});var globalLocale,getSetHour=makeGetSet("Hours",!0),baseConfig={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:{dow:0,doy:6},weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:/[ap]\.?m?\.?/i},locales={},localeFamilies={};function normalizeLocale(key){return key?key.toLowerCase().replace("_","-"):key}function loadLocale(name){var oldLocale=null;if(!locales[name]&&"undefined"!=typeof module&&module&&module.exports)try{oldLocale=globalLocale._abbr,require("./locale/"+name),getSetGlobalLocale(oldLocale)}catch(e){}return locales[name]}function getSetGlobalLocale(key,values){var data;return key&&((data=isUndefined(values)?getLocale(key):defineLocale(key,values))?globalLocale=data:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+key+" not found. Did you forget to load it?")),globalLocale._abbr}function defineLocale(name,config){if(null!==config){var locale,parentConfig=baseConfig;if(config.abbr=name,null!=locales[name])deprecateSimple("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),parentConfig=locales[name]._config;else if(null!=config.parentLocale)if(null!=locales[config.parentLocale])parentConfig=locales[config.parentLocale]._config;else{if(null==(locale=loadLocale(config.parentLocale)))return localeFamilies[config.parentLocale]||(localeFamilies[config.parentLocale]=[]),localeFamilies[config.parentLocale].push({name:name,config:config}),null;parentConfig=locale._config}return locales[name]=new Locale(mergeConfigs(parentConfig,config)),localeFamilies[name]&&localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config)}),getSetGlobalLocale(name),locales[name]}return delete locales[name],null}function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr&&(key=key._locale._abbr),!key)return globalLocale;if(!isArray(key)){if(locale=loadLocale(key))return locale;key=[key]}return function(names){for(var j,next,locale,split,i=0;i<names.length;){for(j=(split=normalizeLocale(names[i]).split("-")).length,next=(next=normalizeLocale(names[i+1]))?next.split("-"):null;j>0;){if(locale=loadLocale(split.slice(0,j).join("-")))return locale;if(next&&next.length>=j&&compareArrays(split,next,!0)>=j-1)break;j--}i++}return globalLocale}(key)}function checkOverflow(m){var overflow,a=m._a;return a&&-2===getParsingFlags(m).overflow&&(overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||24===a[HOUR]&&(0!==a[MINUTE]||0!==a[SECOND]||0!==a[MILLISECOND])?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1,getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)&&(overflow=DATE),getParsingFlags(m)._overflowWeeks&&-1===overflow&&(overflow=WEEK),getParsingFlags(m)._overflowWeekday&&-1===overflow&&(overflow=WEEKDAY),getParsingFlags(m).overflow=overflow),m}function defaults(a,b,c){return null!=a?a:null!=b?b:c}function configFromArray(config){var i,date,currentDate,expectedWeekday,yearToUse,input=[];if(!config._d){for(currentDate=function(config){var nowValue=new Date(hooks.now());return config._useUTC?[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()]:[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()]}(config),config._w&&null==config._a[DATE]&&null==config._a[MONTH]&&function(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;if(null!=(w=config._w).GG||null!=w.W||null!=w.E)dow=1,doy=4,weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year),week=defaults(w.W,1),((weekday=defaults(w.E,1))<1||weekday>7)&&(weekdayOverflow=!0);else{dow=config._locale._week.dow,doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year),week=defaults(w.w,curWeek.week),null!=w.d?((weekday=w.d)<0||weekday>6)&&(weekdayOverflow=!0):null!=w.e?(weekday=w.e+dow,(w.e<0||w.e>6)&&(weekdayOverflow=!0)):weekday=dow}week<1||week>weeksInYear(weekYear,dow,doy)?getParsingFlags(config)._overflowWeeks=!0:null!=weekdayOverflow?getParsingFlags(config)._overflowWeekday=!0:(temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),config._a[YEAR]=temp.year,config._dayOfYear=temp.dayOfYear)}(config),null!=config._dayOfYear&&(yearToUse=defaults(config._a[YEAR],currentDate[YEAR]),(config._dayOfYear>daysInYear(yearToUse)||0===config._dayOfYear)&&(getParsingFlags(config)._overflowDayOfYear=!0),date=createUTCDate(yearToUse,0,config._dayOfYear),config._a[MONTH]=date.getUTCMonth(),config._a[DATE]=date.getUTCDate()),i=0;i<3&&null==config._a[i];++i)config._a[i]=input[i]=currentDate[i];for(;i<7;i++)config._a[i]=input[i]=null==config._a[i]?2===i?1:0:config._a[i];24===config._a[HOUR]&&0===config._a[MINUTE]&&0===config._a[SECOND]&&0===config._a[MILLISECOND]&&(config._nextDay=!0,config._a[HOUR]=0),config._d=(config._useUTC?createUTCDate:function(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);return y<100&&y>=0&&isFinite(date.getFullYear())&&date.setFullYear(y),date}).apply(null,input),expectedWeekday=config._useUTC?config._d.getUTCDay():config._d.getDay(),null!=config._tzm&&config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),config._nextDay&&(config._a[HOUR]=24),config._w&&void 0!==config._w.d&&config._w.d!==expectedWeekday&&(getParsingFlags(config).weekdayMismatch=!0)}}var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tzRegex=/Z|[+-]\d\d(?::?\d\d)?/,isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],isoTimes=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,allowTime,dateFormat,timeFormat,tzFormat,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string);if(match){for(getParsingFlags(config).iso=!0,i=0,l=isoDates.length;i<l;i++)if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0],allowTime=!1!==isoDates[i][2];break}if(null==dateFormat)return void(config._isValid=!1);if(match[3]){for(i=0,l=isoTimes.length;i<l;i++)if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||" ")+isoTimes[i][0];break}if(null==timeFormat)return void(config._isValid=!1)}if(!allowTime&&null!=timeFormat)return void(config._isValid=!1);if(match[4]){if(!tzRegex.exec(match[4]))return void(config._isValid=!1);tzFormat="Z"}config._f=dateFormat+(timeFormat||"")+(tzFormat||""),configFromStringAndFormat(config)}else config._isValid=!1}var rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[function(yearStr){var year=parseInt(yearStr,10);if(year<=49)return 2e3+year;if(year<=999)return 1900+year;return year}(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];return secondStr&&result.push(parseInt(secondStr,10)),result}var obsOffsets={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function configFromRFC2822(config){var match=rfc2822.exec(config._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!function(weekdayStr,parsedInput,config){return!weekdayStr||defaultLocaleWeekdaysShort.indexOf(weekdayStr)===new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay()||(getParsingFlags(config).weekdayMismatch=!0,config._isValid=!1,!1)}(match[1],parsedArray,config))return;config._a=parsedArray,config._tzm=function(obsOffset,militaryOffset,numOffset){if(obsOffset)return obsOffsets[obsOffset];if(militaryOffset)return 0;var hm=parseInt(numOffset,10),m=hm%100;return(hm-m)/100*60+m}(match[8],match[9],match[10]),config._d=createUTCDate.apply(null,config._a),config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),getParsingFlags(config).rfc2822=!0}else config._isValid=!1}function configFromStringAndFormat(config){if(config._f!==hooks.ISO_8601)if(config._f!==hooks.RFC_2822){config._a=[],getParsingFlags(config).empty=!0;var i,parsedInput,tokens,token,skipped,string=""+config._i,stringLength=string.length,totalParsedInputLength=0;for(tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[],i=0;i<tokens.length;i++)token=tokens[i],(parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0])&&((skipped=string.substr(0,string.indexOf(parsedInput))).length>0&&getParsingFlags(config).unusedInput.push(skipped),string=string.slice(string.indexOf(parsedInput)+parsedInput.length),totalParsedInputLength+=parsedInput.length),formatTokenFunctions[token]?(parsedInput?getParsingFlags(config).empty=!1:getParsingFlags(config).unusedTokens.push(token),addTimeToArrayFromToken(token,parsedInput,config)):config._strict&&!parsedInput&&getParsingFlags(config).unusedTokens.push(token);getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength,string.length>0&&getParsingFlags(config).unusedInput.push(string),config._a[HOUR]<=12&&!0===getParsingFlags(config).bigHour&&config._a[HOUR]>0&&(getParsingFlags(config).bigHour=void 0),getParsingFlags(config).parsedDateParts=config._a.slice(0),getParsingFlags(config).meridiem=config._meridiem,config._a[HOUR]=function(locale,hour,meridiem){var isPm;if(null==meridiem)return hour;return null!=locale.meridiemHour?locale.meridiemHour(hour,meridiem):null!=locale.isPM?((isPm=locale.isPM(meridiem))&&hour<12&&(hour+=12),isPm||12!==hour||(hour=0),hour):hour}(config._locale,config._a[HOUR],config._meridiem),configFromArray(config),checkOverflow(config)}else configFromRFC2822(config);else configFromISO(config)}function prepareConfig(config){var input=config._i,format=config._f;return config._locale=config._locale||getLocale(config._l),null===input||void 0===format&&""===input?createInvalid({nullInput:!0}):("string"==typeof input&&(config._i=input=config._locale.preparse(input)),isMoment(input)?new Moment(checkOverflow(input)):(isDate(input)?config._d=input:isArray(format)?function(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(0===config._f.length)return getParsingFlags(config).invalidFormat=!0,void(config._d=new Date(NaN));for(i=0;i<config._f.length;i++)currentScore=0,tempConfig=copyConfig({},config),null!=config._useUTC&&(tempConfig._useUTC=config._useUTC),tempConfig._f=config._f[i],configFromStringAndFormat(tempConfig),isValid(tempConfig)&&(currentScore+=getParsingFlags(tempConfig).charsLeftOver,currentScore+=10*getParsingFlags(tempConfig).unusedTokens.length,getParsingFlags(tempConfig).score=currentScore,(null==scoreToBeat||currentScore<scoreToBeat)&&(scoreToBeat=currentScore,bestMoment=tempConfig));extend(config,bestMoment||tempConfig)}(config):format?configFromStringAndFormat(config):function(config){var input=config._i;isUndefined(input)?config._d=new Date(hooks.now()):isDate(input)?config._d=new Date(input.valueOf()):"string"==typeof input?function(config){var matched=aspNetJsonRegex.exec(config._i);null===matched?(configFromISO(config),!1===config._isValid&&(delete config._isValid,configFromRFC2822(config),!1===config._isValid&&(delete config._isValid,hooks.createFromInputFallback(config)))):config._d=new Date(+matched[1])}(config):isArray(input)?(config._a=map(input.slice(0),function(obj){return parseInt(obj,10)}),configFromArray(config)):isObject(input)?function(config){if(!config._d){var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10)}),configFromArray(config)}}(config):isNumber(input)?config._d=new Date(input):hooks.createFromInputFallback(config)}(config),isValid(config)||(config._d=null),config))}function createLocalOrUTC(input,format,locale,strict,isUTC){var res,c={};return!0!==locale&&!1!==locale||(strict=locale,locale=void 0),(isObject(input)&&function(obj){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(obj).length;var k;for(k in obj)if(obj.hasOwnProperty(k))return!1;return!0}(input)||isArray(input)&&0===input.length)&&(input=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=isUTC,c._l=locale,c._i=input,c._f=format,c._strict=strict,(res=new Moment(checkOverflow(prepareConfig(c))))._nextDay&&(res.add(1,"d"),res._nextDay=void 0),res}function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!1)}hooks.createFromInputFallback=deprecate("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(config){config._d=new Date(config._i+(config._useUTC?" UTC":""))}),hooks.ISO_8601=function(){},hooks.RFC_2822=function(){};var prototypeMin=deprecate("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other<this?this:other:createInvalid()}),prototypeMax=deprecate("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other>this?this:other:createInvalid()});function pickBy(fn,moments){var res,i;if(1===moments.length&&isArray(moments[0])&&(moments=moments[0]),!moments.length)return createLocal();for(res=moments[0],i=1;i<moments.length;++i)moments[i].isValid()&&!moments[i][fn](res)||(res=moments[i]);return res}var ordering=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=function(m){for(var key in m)if(-1===indexOf.call(ordering,key)||null!=m[key]&&isNaN(m[key]))return!1;for(var unitHasDecimal=!1,i=0;i<ordering.length;++i)if(m[ordering[i]]){if(unitHasDecimal)return!1;parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])&&(unitHasDecimal=!0)}return!0}(normalizedInput),this._milliseconds=+milliseconds+1e3*seconds+6e4*minutes+1e3*hours*60*60,this._days=+days+7*weeks,this._months=+months+3*quarters+12*years,this._data={},this._locale=getLocale(),this._bubble()}function isDuration(obj){return obj instanceof Duration}function absRound(number){return number<0?-1*Math.round(-1*number):Math.round(number)}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset(),sign="+";return offset<0&&(offset=-offset,sign="-"),sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset("Z",":"),offset("ZZ",""),addRegexToken("Z",matchShortOffset),addRegexToken("ZZ",matchShortOffset),addParseToken(["Z","ZZ"],function(input,array,config){config._useUTC=!0,config._tzm=offsetFromString(matchShortOffset,input)});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||"").match(matcher);if(null===matches)return null;var parts=((matches[matches.length-1]||[])+"").match(chunkOffset)||["-",0,0],minutes=60*parts[1]+toInt(parts[2]);return 0===minutes?0:"+"===parts[0]?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;return model._isUTC?(res=model.clone(),diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf(),res._d.setTime(res._d.valueOf()+diff),hooks.updateOffset(res,!1),res):createLocal(input).local()}function getDateOffset(m){return 15*-Math.round(m._d.getTimezoneOffset()/15)}function isUtc(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}hooks.updateOffset=function(){};var aspNetRegex=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var sign,ret,diffRes,duration=input,match=null;return isDuration(input)?duration={ms:input._milliseconds,d:input._days,M:input._months}:isNumber(input)?(duration={},key?duration[key]=input:duration.milliseconds=input):(match=aspNetRegex.exec(input))?(sign="-"===match[1]?-1:1,duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(1e3*match[MILLISECOND]))*sign}):(match=isoRegex.exec(input))?(sign="-"===match[1]?-1:(match[1],1),duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)}):null==duration?duration={}:"object"==typeof duration&&("from"in duration||"to"in duration)&&(diffRes=function(base,other){var res;if(!base.isValid()||!other.isValid())return{milliseconds:0,months:0};other=cloneWithOffset(other,base),base.isBefore(other)?res=positiveMomentsDifference(base,other):((res=positiveMomentsDifference(other,base)).milliseconds=-res.milliseconds,res.months=-res.months);return res}(createLocal(duration.from),createLocal(duration.to)),(duration={}).ms=diffRes.milliseconds,duration.M=diffRes.months),ret=new Duration(duration),isDuration(input)&&hasOwnProp(input,"_locale")&&(ret._locale=input._locale),ret}function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};return res.months=other.month()-base.month()+12*(other.year()-base.year()),base.clone().add(res.months,"M").isAfter(other)&&--res.months,res.milliseconds=+other-+base.clone().add(res.months,"M"),res}function createAdder(direction,name){return function(val,period){var tmp;return null===period||isNaN(+period)||(deprecateSimple(name,"moment()."+name+"(period, number) is deprecated. Please use moment()."+name+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),tmp=val,val=period,period=tmp),addSubtract(this,createDuration(val="string"==typeof val?+val:val,period),direction),this}}function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);mom.isValid()&&(updateOffset=null==updateOffset||updateOffset,months&&setMonth(mom,get(mom,"Month")+months*isAdding),days&&set$1(mom,"Date",get(mom,"Date")+days*isAdding),milliseconds&&mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding),updateOffset&&hooks.updateOffset(mom,days||months))}createDuration.fn=Duration.prototype,createDuration.invalid=function(){return createDuration(NaN)};var add=createAdder(1,"add"),subtract=createAdder(-1,"subtract");function monthDiff(a,b){var wholeMonthDiff=12*(b.year()-a.year())+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,"months");return-(wholeMonthDiff+(b-anchor<0?(b-anchor)/(anchor-a.clone().add(wholeMonthDiff-1,"months")):(b-anchor)/(a.clone().add(wholeMonthDiff+1,"months")-anchor)))||0}function locale(key){var newLocaleData;return void 0===key?this._locale._abbr:(null!=(newLocaleData=getLocale(key))&&(this._locale=newLocaleData),this)}hooks.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",hooks.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(key){return void 0===key?this.localeData():this.locale(key)});function localeData(){return this._locale}function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;return null==input?weekOfYear(this,dow,doy).year:(week>(weeksTarget=weeksInYear(input,dow,doy))&&(week=weeksTarget),function(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);return this.year(date.getUTCFullYear()),this.month(date.getUTCMonth()),this.date(date.getUTCDate()),this}.call(this,input,week,weekday,dow,doy))}addFormatToken(0,["gg",2],0,function(){return this.weekYear()%100}),addFormatToken(0,["GG",2],0,function(){return this.isoWeekYear()%100}),addWeekYearFormatToken("gggg","weekYear"),addWeekYearFormatToken("ggggg","weekYear"),addWeekYearFormatToken("GGGG","isoWeekYear"),addWeekYearFormatToken("GGGGG","isoWeekYear"),addUnitAlias("weekYear","gg"),addUnitAlias("isoWeekYear","GG"),addUnitPriority("weekYear",1),addUnitPriority("isoWeekYear",1),addRegexToken("G",matchSigned),addRegexToken("g",matchSigned),addRegexToken("GG",match1to2,match2),addRegexToken("gg",match1to2,match2),addRegexToken("GGGG",match1to4,match4),addRegexToken("gggg",match1to4,match4),addRegexToken("GGGGG",match1to6,match6),addRegexToken("ggggg",match1to6,match6),addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)}),addWeekParseToken(["gg","GG"],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input)}),addFormatToken("Q",0,"Qo","quarter"),addUnitAlias("quarter","Q"),addUnitPriority("quarter",7),addRegexToken("Q",match1),addParseToken("Q",function(input,array){array[MONTH]=3*(toInt(input)-1)}),addFormatToken("D",["DD",2],"Do","date"),addUnitAlias("date","D"),addUnitPriority("date",9),addRegexToken("D",match1to2),addRegexToken("DD",match1to2,match2),addRegexToken("Do",function(isStrict,locale){return isStrict?locale._dayOfMonthOrdinalParse||locale._ordinalParse:locale._dayOfMonthOrdinalParseLenient}),addParseToken(["D","DD"],DATE),addParseToken("Do",function(input,array){array[DATE]=toInt(input.match(match1to2)[0])});var getSetDayOfMonth=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear"),addUnitAlias("dayOfYear","DDD"),addUnitPriority("dayOfYear",4),addRegexToken("DDD",match1to3),addRegexToken("DDDD",match3),addParseToken(["DDD","DDDD"],function(input,array,config){config._dayOfYear=toInt(input)}),addFormatToken("m",["mm",2],0,"minute"),addUnitAlias("minute","m"),addUnitPriority("minute",14),addRegexToken("m",match1to2),addRegexToken("mm",match1to2,match2),addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second"),addUnitAlias("second","s"),addUnitPriority("second",15),addRegexToken("s",match1to2),addRegexToken("ss",match1to2,match2),addParseToken(["s","ss"],SECOND);var token,getSetSecond=makeGetSet("Seconds",!1);for(addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)}),addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),addFormatToken(0,["SSS",3],0,"millisecond"),addFormatToken(0,["SSSS",4],0,function(){return 10*this.millisecond()}),addFormatToken(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),addFormatToken(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),addFormatToken(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),addFormatToken(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),addFormatToken(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),addUnitAlias("millisecond","ms"),addUnitPriority("millisecond",16),addRegexToken("S",match1to3,match1),addRegexToken("SS",match1to3,match2),addRegexToken("SSS",match1to3,match3),token="SSSS";token.length<=9;token+="S")addRegexToken(token,matchUnsigned);function parseMs(input,array){array[MILLISECOND]=toInt(1e3*("0."+input))}for(token="S";token.length<=9;token+="S")addParseToken(token,parseMs);var getSetMillisecond=makeGetSet("Milliseconds",!1);addFormatToken("z",0,0,"zoneAbbr"),addFormatToken("zz",0,0,"zoneName");var proto=Moment.prototype;function preParsePostFormat(string){return string}proto.add=add,proto.calendar=function(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf("day"),format=hooks.calendarFormat(this,sod)||"sameElse",output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)))},proto.clone=function(){return new Moment(this)},proto.diff=function(input,units,asFloat){var that,zoneDelta,output;if(!this.isValid())return NaN;if(!(that=cloneWithOffset(input,this)).isValid())return NaN;switch(zoneDelta=6e4*(that.utcOffset()-this.utcOffset()),units=normalizeUnits(units)){case"year":output=monthDiff(this,that)/12;break;case"month":output=monthDiff(this,that);break;case"quarter":output=monthDiff(this,that)/3;break;case"second":output=(this-that)/1e3;break;case"minute":output=(this-that)/6e4;break;case"hour":output=(this-that)/36e5;break;case"day":output=(this-that-zoneDelta)/864e5;break;case"week":output=(this-that-zoneDelta)/6048e5;break;default:output=this-that}return asFloat?output:absFloor(output)},proto.endOf=function(units){return void 0===(units=normalizeUnits(units))||"millisecond"===units?this:("date"===units&&(units="day"),this.startOf(units).add(1,"isoWeek"===units?"week":units).subtract(1,"ms"))},proto.format=function(inputString){inputString||(inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var output=formatMoment(this,inputString);return this.localeData().postformat(output)},proto.from=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.fromNow=function(withoutSuffix){return this.from(createLocal(),withoutSuffix)},proto.to=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.toNow=function(withoutSuffix){return this.to(createLocal(),withoutSuffix)},proto.get=function(units){return isFunction(this[units=normalizeUnits(units)])?this[units]():this},proto.invalidAt=function(){return getParsingFlags(this).overflow},proto.isAfter=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()>localInput.valueOf():localInput.valueOf()<this.clone().startOf(units).valueOf())},proto.isBefore=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()<localInput.valueOf():this.clone().endOf(units).valueOf()<localInput.valueOf())},proto.isBetween=function(from,to,units,inclusivity){return("("===(inclusivity=inclusivity||"()")[0]?this.isAfter(from,units):!this.isBefore(from,units))&&(")"===inclusivity[1]?this.isBefore(to,units):!this.isAfter(to,units))},proto.isSame=function(input,units){var inputMs,localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(units||"millisecond"))?this.valueOf()===localInput.valueOf():(inputMs=localInput.valueOf(),this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf()))},proto.isSameOrAfter=function(input,units){return this.isSame(input,units)||this.isAfter(input,units)},proto.isSameOrBefore=function(input,units){return this.isSame(input,units)||this.isBefore(input,units)},proto.isValid=function(){return isValid(this)},proto.lang=lang,proto.locale=locale,proto.localeData=localeData,proto.max=prototypeMax,proto.min=prototypeMin,proto.parsingFlags=function(){return extend({},getParsingFlags(this))},proto.set=function(units,value){if("object"==typeof units)for(var prioritized=function(unitsObj){var units=[];for(var u in unitsObj)units.push({unit:u,priority:priorities[u]});return units.sort(function(a,b){return a.priority-b.priority}),units}(units=normalizeObjectUnits(units)),i=0;i<prioritized.length;i++)this[prioritized[i].unit](units[prioritized[i].unit]);else if(isFunction(this[units=normalizeUnits(units)]))return this[units](value);return this},proto.startOf=function(units){switch(units=normalizeUnits(units)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===units&&this.weekday(0),"isoWeek"===units&&this.isoWeekday(1),"quarter"===units&&this.month(3*Math.floor(this.month()/3)),this},proto.subtract=subtract,proto.toArray=function(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]},proto.toObject=function(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()}},proto.toDate=function(){return new Date(this.valueOf())},proto.toISOString=function(keepOffset){if(!this.isValid())return null;var utc=!0!==keepOffset,m=utc?this.clone().utc():this;return m.year()<0||m.year()>9999?formatMoment(m,utc?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction(Date.prototype.toISOString)?utc?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",formatMoment(m,"Z")):formatMoment(m,utc?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},proto.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var func="moment",zone="";this.isLocal()||(func=0===this.utcOffset()?"moment.utc":"moment.parseZone",zone="Z");var prefix="["+func+'("]',year=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",suffix=zone+'[")]';return this.format(prefix+year+"-MM-DD[T]HH:mm:ss.SSS"+suffix)},proto.toJSON=function(){return this.isValid()?this.toISOString():null},proto.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},proto.unix=function(){return Math.floor(this.valueOf()/1e3)},proto.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},proto.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},proto.year=getSetYear,proto.isLeapYear=function(){return isLeapYear(this.year())},proto.weekYear=function(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},proto.isoWeekYear=function(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4)},proto.quarter=proto.quarters=function(input){return null==input?Math.ceil((this.month()+1)/3):this.month(3*(input-1)+this.month()%3)},proto.month=getSetMonth,proto.daysInMonth=function(){return daysInMonth(this.year(),this.month())},proto.week=proto.weeks=function(input){var week=this.localeData().week(this);return null==input?week:this.add(7*(input-week),"d")},proto.isoWeek=proto.isoWeeks=function(input){var week=weekOfYear(this,1,4).week;return null==input?week:this.add(7*(input-week),"d")},proto.weeksInYear=function(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)},proto.isoWeeksInYear=function(){return weeksInYear(this.year(),1,4)},proto.date=getSetDayOfMonth,proto.day=proto.days=function(input){if(!this.isValid())return null!=input?this:NaN;var day=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=input?(input=function(input,locale){return"string"!=typeof input?input:isNaN(input)?"number"==typeof(input=locale.weekdaysParse(input))?input:null:parseInt(input,10)}(input,this.localeData()),this.add(input-day,"d")):day},proto.weekday=function(input){if(!this.isValid())return null!=input?this:NaN;var weekday=(this.day()+7-this.localeData()._week.dow)%7;return null==input?weekday:this.add(input-weekday,"d")},proto.isoWeekday=function(input){if(!this.isValid())return null!=input?this:NaN;if(null!=input){var weekday=function(input,locale){return"string"==typeof input?locale.weekdaysParse(input)%7||7:isNaN(input)?null:input}(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7)}return this.day()||7},proto.dayOfYear=function(input){var dayOfYear=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==input?dayOfYear:this.add(input-dayOfYear,"d")},proto.hour=proto.hours=getSetHour,proto.minute=proto.minutes=getSetMinute,proto.second=proto.seconds=getSetSecond,proto.millisecond=proto.milliseconds=getSetMillisecond,proto.utcOffset=function(input,keepLocalTime,keepMinutes){var localAdjust,offset=this._offset||0;if(!this.isValid())return null!=input?this:NaN;if(null!=input){if("string"==typeof input){if(null===(input=offsetFromString(matchShortOffset,input)))return this}else Math.abs(input)<16&&!keepMinutes&&(input*=60);return!this._isUTC&&keepLocalTime&&(localAdjust=getDateOffset(this)),this._offset=input,this._isUTC=!0,null!=localAdjust&&this.add(localAdjust,"m"),offset!==input&&(!keepLocalTime||this._changeInProgress?addSubtract(this,createDuration(input-offset,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,hooks.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?offset:getDateOffset(this)},proto.utc=function(keepLocalTime){return this.utcOffset(0,keepLocalTime)},proto.local=function(keepLocalTime){return this._isUTC&&(this.utcOffset(0,keepLocalTime),this._isUTC=!1,keepLocalTime&&this.subtract(getDateOffset(this),"m")),this},proto.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var tZone=offsetFromString(matchOffset,this._i);null!=tZone?this.utcOffset(tZone):this.utcOffset(0,!0)}return this},proto.hasAlignedHourOffset=function(input){return!!this.isValid()&&(input=input?createLocal(input).utcOffset():0,(this.utcOffset()-input)%60==0)},proto.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},proto.isLocal=function(){return!!this.isValid()&&!this._isUTC},proto.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},proto.isUtc=isUtc,proto.isUTC=isUtc,proto.zoneAbbr=function(){return this._isUTC?"UTC":""},proto.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth),proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth),proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear),proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(input,keepLocalTime){return null!=input?("string"!=typeof input&&(input=-input),this.utcOffset(input,keepLocalTime),this):-this.utcOffset()}),proto.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var c={};if(copyConfig(c,this),(c=prepareConfig(c))._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var proto$1=Locale.prototype;function get$1(format,index,field,setter){var locale=getLocale(),utc=createUTC().set(setter,index);return locale[field](utc,format)}function listMonthsImpl(format,index,field){if(isNumber(format)&&(index=format,format=void 0),format=format||"",null!=index)return get$1(format,index,field,"month");var i,out=[];for(i=0;i<12;i++)out[i]=get$1(format,i,field,"month");return out}function listWeekdaysImpl(localeSorted,format,index,field){"boolean"==typeof localeSorted?(isNumber(format)&&(index=format,format=void 0),format=format||""):(index=format=localeSorted,localeSorted=!1,isNumber(format)&&(index=format,format=void 0),format=format||"");var i,locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(null!=index)return get$1(format,(index+shift)%7,field,"day");var out=[];for(i=0;i<7;i++)out[i]=get$1(format,(i+shift)%7,field,"day");return out}proto$1.calendar=function(key,mom,now){var output=this._calendar[key]||this._calendar.sameElse;return isFunction(output)?output.call(mom,now):output},proto$1.longDateFormat=function(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];return format||!formatUpper?format:(this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)}),this._longDateFormat[key])},proto$1.invalidDate=function(){return this._invalidDate},proto$1.ordinal=function(number){return this._ordinal.replace("%d",number)},proto$1.preparse=preParsePostFormat,proto$1.postformat=preParsePostFormat,proto$1.relativeTime=function(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return isFunction(output)?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)},proto$1.pastFuture=function(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return isFunction(format)?format(output):format.replace(/%s/i,output)},proto$1.set=function(config){var prop,i;for(i in config)isFunction(prop=config[i])?this[i]=prop:this["_"+i]=prop;this._config=config,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},proto$1.months=function(m,format){return m?isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?"format":"standalone"][m.month()]:isArray(this._months)?this._months:this._months.standalone},proto$1.monthsShort=function(m,format){return m?isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?"format":"standalone"][m.month()]:isArray(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},proto$1.monthsParse=function(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact)return function(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)mom=createUTC([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(mom,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(mom,"").toLocaleLowerCase();return strict?"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null}.call(this,monthName,format,strict);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(mom=createUTC([2e3,i]),strict&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(mom,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(mom,"").replace(".","")+"$","i")),strict||this._monthsParse[i]||(regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,""),this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"MMMM"===format&&this._longMonthsParse[i].test(monthName))return i;if(strict&&"MMM"===format&&this._shortMonthsParse[i].test(monthName))return i;if(!strict&&this._monthsParse[i].test(monthName))return i}},proto$1.monthsRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsStrictRegex:this._monthsRegex):(hasOwnProp(this,"_monthsRegex")||(this._monthsRegex=defaultMonthsRegex),this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex)},proto$1.monthsShortRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsShortStrictRegex:this._monthsShortRegex):(hasOwnProp(this,"_monthsShortRegex")||(this._monthsShortRegex=defaultMonthsShortRegex),this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex)},proto$1.week=function(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week},proto$1.firstDayOfYear=function(){return this._week.doy},proto$1.firstDayOfWeek=function(){return this._week.dow},proto$1.weekdays=function(m,format){return m?isArray(this._weekdays)?this._weekdays[m.day()]:this._weekdays[this._weekdays.isFormat.test(format)?"format":"standalone"][m.day()]:isArray(this._weekdays)?this._weekdays:this._weekdays.standalone},proto$1.weekdaysMin=function(m){return m?this._weekdaysMin[m.day()]:this._weekdaysMin},proto$1.weekdaysShort=function(m){return m?this._weekdaysShort[m.day()]:this._weekdaysShort},proto$1.weekdaysParse=function(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact)return function(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)mom=createUTC([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(mom,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(mom,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(mom,"").toLocaleLowerCase();return strict?"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null}.call(this,weekdayName,format,strict);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(mom=createUTC([2e3,1]).day(i),strict&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(mom,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(mom,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(mom,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,""),this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"dddd"===format&&this._fullWeekdaysParse[i].test(weekdayName))return i;if(strict&&"ddd"===format&&this._shortWeekdaysParse[i].test(weekdayName))return i;if(strict&&"dd"===format&&this._minWeekdaysParse[i].test(weekdayName))return i;if(!strict&&this._weekdaysParse[i].test(weekdayName))return i}},proto$1.weekdaysRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=defaultWeekdaysRegex),this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex)},proto$1.weekdaysShortRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=defaultWeekdaysShortRegex),this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},proto$1.weekdaysMinRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=defaultWeekdaysMinRegex),this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},proto$1.isPM=function(input){return"p"===(input+"").toLowerCase().charAt(0)},proto$1.meridiem=function(hours,minutes,isLower){return hours>11?isLower?"pm":"PM":isLower?"am":"AM"},getSetGlobalLocale("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10;return number+(1===toInt(number%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th")}}),hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale),hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var mathAbs=Math.abs;function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);return duration._milliseconds+=direction*other._milliseconds,duration._days+=direction*other._days,duration._months+=direction*other._months,duration._bubble()}function absCeil(number){return number<0?Math.floor(number):Math.ceil(number)}function daysToMonths(days){return 4800*days/146097}function monthsToDays(months){return 146097*months/4800}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs("ms"),asSeconds=makeAs("s"),asMinutes=makeAs("m"),asHours=makeAs("h"),asDays=makeAs("d"),asWeeks=makeAs("w"),asMonths=makeAs("M"),asYears=makeAs("y");function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN}}var milliseconds=makeGetter("milliseconds"),seconds=makeGetter("seconds"),minutes=makeGetter("minutes"),hours=makeGetter("hours"),days=makeGetter("days"),months=makeGetter("months"),years=makeGetter("years");var round=Math.round,thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};var abs$1=Math.abs;function sign(x){return(x>0)-(x<0)||+x}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var minutes,hours,seconds=abs$1(this._milliseconds)/1e3,days=abs$1(this._days),months=abs$1(this._months);hours=absFloor((minutes=absFloor(seconds/60))/60),seconds%=60,minutes%=60;var Y=absFloor(months/12),M=months%=12,D=days,h=hours,m=minutes,s=seconds?seconds.toFixed(3).replace(/\.?0+$/,""):"",total=this.asSeconds();if(!total)return"P0D";var totalSign=total<0?"-":"",ymSign=sign(this._months)!==sign(total)?"-":"",daysSign=sign(this._days)!==sign(total)?"-":"",hmsSign=sign(this._milliseconds)!==sign(total)?"-":"";return totalSign+"P"+(Y?ymSign+Y+"Y":"")+(M?ymSign+M+"M":"")+(D?daysSign+D+"D":"")+(h||m||s?"T":"")+(h?hmsSign+h+"H":"")+(m?hmsSign+m+"M":"")+(s?hmsSign+s+"S":"")}var proto$2=Duration.prototype;return proto$2.isValid=function(){return this._isValid},proto$2.abs=function(){var data=this._data;return this._milliseconds=mathAbs(this._milliseconds),this._days=mathAbs(this._days),this._months=mathAbs(this._months),data.milliseconds=mathAbs(data.milliseconds),data.seconds=mathAbs(data.seconds),data.minutes=mathAbs(data.minutes),data.hours=mathAbs(data.hours),data.months=mathAbs(data.months),data.years=mathAbs(data.years),this},proto$2.add=function(input,value){return addSubtract$1(this,input,value,1)},proto$2.subtract=function(input,value){return addSubtract$1(this,input,value,-1)},proto$2.as=function(units){if(!this.isValid())return NaN;var days,months,milliseconds=this._milliseconds;if("month"===(units=normalizeUnits(units))||"year"===units)return days=this._days+milliseconds/864e5,months=this._months+daysToMonths(days),"month"===units?months:months/12;switch(days=this._days+Math.round(monthsToDays(this._months)),units){case"week":return days/7+milliseconds/6048e5;case"day":return days+milliseconds/864e5;case"hour":return 24*days+milliseconds/36e5;case"minute":return 1440*days+milliseconds/6e4;case"second":return 86400*days+milliseconds/1e3;case"millisecond":return Math.floor(864e5*days)+milliseconds;default:throw new Error("Unknown unit "+units)}},proto$2.asMilliseconds=asMilliseconds,proto$2.asSeconds=asSeconds,proto$2.asMinutes=asMinutes,proto$2.asHours=asHours,proto$2.asDays=asDays,proto$2.asWeeks=asWeeks,proto$2.asMonths=asMonths,proto$2.asYears=asYears,proto$2.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*toInt(this._months/12):NaN},proto$2._bubble=function(){var seconds,minutes,hours,years,monthsFromDays,milliseconds=this._milliseconds,days=this._days,months=this._months,data=this._data;return milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0||(milliseconds+=864e5*absCeil(monthsToDays(months)+days),days=0,months=0),data.milliseconds=milliseconds%1e3,seconds=absFloor(milliseconds/1e3),data.seconds=seconds%60,minutes=absFloor(seconds/60),data.minutes=minutes%60,hours=absFloor(minutes/60),data.hours=hours%24,months+=monthsFromDays=absFloor(daysToMonths(days+=absFloor(hours/24))),days-=absCeil(monthsToDays(monthsFromDays)),years=absFloor(months/12),months%=12,data.days=days,data.months=months,data.years=years,this},proto$2.clone=function(){return createDuration(this)},proto$2.get=function(units){return units=normalizeUnits(units),this.isValid()?this[units+"s"]():NaN},proto$2.milliseconds=milliseconds,proto$2.seconds=seconds,proto$2.minutes=minutes,proto$2.hours=hours,proto$2.days=days,proto$2.weeks=function(){return absFloor(this.days()/7)},proto$2.months=months,proto$2.years=years,proto$2.humanize=function(withSuffix){if(!this.isValid())return this.localeData().invalidDate();var locale=this.localeData(),output=function(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs(),seconds=round(duration.as("s")),minutes=round(duration.as("m")),hours=round(duration.as("h")),days=round(duration.as("d")),months=round(duration.as("M")),years=round(duration.as("y")),a=seconds<=thresholds.ss&&["s",seconds]||seconds<thresholds.s&&["ss",seconds]||minutes<=1&&["m"]||minutes<thresholds.m&&["mm",minutes]||hours<=1&&["h"]||hours<thresholds.h&&["hh",hours]||days<=1&&["d"]||days<thresholds.d&&["dd",days]||months<=1&&["M"]||months<thresholds.M&&["MM",months]||years<=1&&["y"]||["yy",years];return a[2]=withoutSuffix,a[3]=+posNegDuration>0,a[4]=locale,function(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}.apply(null,a)}(this,!withSuffix,locale);return withSuffix&&(output=locale.pastFuture(+this,output)),locale.postformat(output)},proto$2.toISOString=toISOString$1,proto$2.toString=toISOString$1,proto$2.toJSON=toISOString$1,proto$2.locale=locale,proto$2.localeData=localeData,proto$2.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1),proto$2.lang=lang,addFormatToken("X",0,0,"unix"),addFormatToken("x",0,0,"valueOf"),addRegexToken("x",matchSigned),addRegexToken("X",/[+-]?\d+(\.\d{1,3})?/),addParseToken("X",function(input,array,config){config._d=new Date(1e3*parseFloat(input,10))}),addParseToken("x",function(input,array,config){config._d=new Date(toInt(input))}),hooks.version="2.22.2",hookCallback=createLocal,hooks.fn=proto,hooks.min=function(){return pickBy("isBefore",[].slice.call(arguments,0))},hooks.max=function(){return pickBy("isAfter",[].slice.call(arguments,0))},hooks.now=function(){return Date.now?Date.now():+new Date},hooks.utc=createUTC,hooks.unix=function(input){return createLocal(1e3*input)},hooks.months=function(format,index){return listMonthsImpl(format,index,"months")},hooks.isDate=isDate,hooks.locale=getSetGlobalLocale,hooks.invalid=createInvalid,hooks.duration=createDuration,hooks.isMoment=isMoment,hooks.weekdays=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdays")},hooks.parseZone=function(){return createLocal.apply(null,arguments).parseZone()},hooks.localeData=getLocale,hooks.isDuration=isDuration,hooks.monthsShort=function(format,index){return listMonthsImpl(format,index,"monthsShort")},hooks.weekdaysMin=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysMin")},hooks.defineLocale=defineLocale,hooks.updateLocale=function(name,config){if(null!=config){var locale,tmpLocale,parentConfig=baseConfig;null!=(tmpLocale=loadLocale(name))&&(parentConfig=tmpLocale._config),(locale=new Locale(config=mergeConfigs(parentConfig,config))).parentLocale=locales[name],locales[name]=locale,getSetGlobalLocale(name)}else null!=locales[name]&&(null!=locales[name].parentLocale?locales[name]=locales[name].parentLocale:null!=locales[name]&&delete locales[name]);return locales[name]},hooks.locales=function(){return keys(locales)},hooks.weekdaysShort=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysShort")},hooks.normalizeUnits=normalizeUnits,hooks.relativeTimeRounding=function(roundingFunction){return void 0===roundingFunction?round:"function"==typeof roundingFunction&&(round=roundingFunction,!0)},hooks.relativeTimeThreshold=function(threshold,limit){return void 0!==thresholds[threshold]&&(void 0===limit?thresholds[threshold]:(thresholds[threshold]=limit,"s"===threshold&&(thresholds.ss=limit-1),!0))},hooks.calendarFormat=function(myMoment,now){var diff=myMoment.diff(now,"days",!0);return diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse"},hooks.prototype=proto,hooks.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},hooks}),function(global,factory){"object"==typeof module&&"object"==typeof module.exports?module.exports=global.document?factory(global,!0):function(w){if(!w.document)throw new Error("jQuery requires a window with a document");return factory(w)}:factory(global)}("undefined"!=typeof window?window:this,function(window,noGlobal){var arr=[],document=window.document,getProto=Object.getPrototypeOf,slice=arr.slice,concat=arr.concat,push=arr.push,indexOf=arr.indexOf,class2type={},toString=class2type.toString,hasOwn=class2type.hasOwnProperty,fnToString=hasOwn.toString,ObjectFunctionString=fnToString.call(Object),support={},isFunction=function(obj){return"function"==typeof obj&&"number"!=typeof obj.nodeType},isWindow=function(obj){return null!=obj&&obj===obj.window},preservedScriptAttributes={type:!0,src:!0,noModule:!0};function DOMEval(code,doc,node){var i,script=(doc=doc||document).createElement("script");if(script.text=code,node)for(i in preservedScriptAttributes)node[i]&&(script[i]=node[i]);doc.head.appendChild(script).parentNode.removeChild(script)}function toType(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj}var jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);return!isFunction(obj)&&!isWindow(obj)&&("array"===type||0===length||"number"==typeof length&&length>0&&length-1 in obj)}jQuery.fn=jQuery.prototype={jquery:"3.3.1",constructor:jQuery,length:0,toArray:function(){return slice.call(this)},get:function(num){return null==num?slice.call(this):num<0?this[num+this.length]:this[num]},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);return ret.prevObject=this,ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:arr.sort,splice:arr.splice},jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=!1;for("boolean"==typeof target&&(deep=target,target=arguments[i]||{},i++),"object"==typeof target||isFunction(target)||(target={}),i===length&&(target=this,i--);i<length;i++)if(null!=(options=arguments[i]))for(name in options)src=target[name],target!==(copy=options[name])&&(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))?(copyIsArray?(copyIsArray=!1,clone=src&&Array.isArray(src)?src:[]):clone=src&&jQuery.isPlainObject(src)?src:{},target[name]=jQuery.extend(deep,clone,copy)):void 0!==copy&&(target[name]=copy));return target},jQuery.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(msg){throw new Error(msg)},noop:function(){},isPlainObject:function(obj){var proto,Ctor;return!(!obj||"[object Object]"!==toString.call(obj))&&(!(proto=getProto(obj))||"function"==typeof(Ctor=hasOwn.call(proto,"constructor")&&proto.constructor)&&fnToString.call(Ctor)===ObjectFunctionString)},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},globalEval:function(code){DOMEval(code)},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;i<length&&!1!==callback.call(obj[i],i,obj[i]);i++);else for(i in obj)if(!1===callback.call(obj[i],i,obj[i]))break;return obj},trim:function(text){return null==text?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];return null!=arr&&(isArrayLike(Object(arr))?jQuery.merge(ret,"string"==typeof arr?[arr]:arr):push.call(ret,arr)),ret},inArray:function(elem,arr,i){return null==arr?-1:indexOf.call(arr,elem,i)},merge:function(first,second){for(var len=+second.length,j=0,i=first.length;j<len;j++)first[i++]=second[j];return first.length=i,first},grep:function(elems,callback,invert){for(var matches=[],i=0,length=elems.length,callbackExpect=!invert;i<length;i++)!callback(elems[i],i)!==callbackExpect&&matches.push(elems[i]);return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems))for(length=elems.length;i<length;i++)null!=(value=callback(elems[i],i,arg))&&ret.push(value);else for(i in elems)null!=(value=callback(elems[i],i,arg))&&ret.push(value);return concat.apply([],ret)},guid:1,support:support}),"function"==typeof Symbol&&(jQuery.fn[Symbol.iterator]=arr[Symbol.iterator]),jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i<len;i++)if(list[i]===elem)return i;return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|.*)\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!=high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){return asCodePoint?"\0"===ch?"�":ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ":"\\"+ch},unloadHandler=function(){setDocument()},disabledAncestor=addCombinator(function(elem){return!0===elem.disabled&&("form"in elem||"label"in elem)},{dir:"parentNode",next:"legend"});try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;if(results=results||[],"string"!=typeof selector||!selector||1!==nodeType&&9!==nodeType&&11!==nodeType)return results;if(!seed&&((context?context.ownerDocument||context:preferredDoc)!==document&&setDocument(context),context=context||document,documentIsHTML)){if(11!==nodeType&&(match=rquickExpr.exec(selector)))if(m=match[1]){if(9===nodeType){if(!(elem=context.getElementById(m)))return results;if(elem.id===m)return results.push(elem),results}else if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m)return results.push(elem),results}else{if(match[2])return push.apply(results,context.getElementsByTagName(selector)),results;if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName)return push.apply(results,context.getElementsByClassName(m)),results}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(1!==nodeType)newContext=context,newSelector=selector;else if("object"!==context.nodeName.toLowerCase()){for((nid=context.getAttribute("id"))?nid=nid.replace(rcssescape,fcssescape):context.setAttribute("id",nid=expando),i=(groups=tokenize(selector)).length;i--;)groups[i]="#"+nid+" "+toSelector(groups[i]);newSelector=groups.join(","),newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector)try{return push.apply(results,newContext.querySelectorAll(newSelector)),results}catch(qsaError){}finally{nid===expando&&context.removeAttribute("id")}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];return function cache(key,value){return keys.push(key+" ")>Expr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el)}catch(e){return!1}finally{el.parentNode&&el.parentNode.removeChild(el),el=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){return"input"===elem.nodeName.toLowerCase()&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createDisabledPseudo(disabled){return function(elem){return"form"in elem?elem.parentNode&&!1===elem.disabled?"label"in elem?"label"in elem.parentNode?elem.parentNode.disabled===disabled:elem.disabled===disabled:elem.isDisabled===disabled||elem.isDisabled!==!disabled&&disabledAncestor(elem)===disabled:elem.disabled===disabled:"label"in elem&&elem.disabled===disabled}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&void 0!==context.getElementsByTagName&&context}for(i in support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement?(docElem=(document=doc).documentElement,documentIsHTML=!isXML(document),preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow&&(subWindow.addEventListener?subWindow.addEventListener("unload",unloadHandler,!1):subWindow.attachEvent&&subWindow.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(el){return el.className="i",!el.getAttribute("className")}),support.getElementsByTagName=assert(function(el){return el.appendChild(document.createComment("")),!el.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(el){return docElem.appendChild(el).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[]}}):(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=void 0!==elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem];for(elems=context.getElementsByName(id),i=0;elem=elems[i++];)if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem]}return[]}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return void 0!==context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"===tag){for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp}return results},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if(void 0!==context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(el){docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a><select id='"+expando+"-\r\\' msallowcapture=''><option selected=''></option></select>",el.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),el.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),el.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),el.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),el.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden"),el.appendChild(input).setAttribute("name","D"),el.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),2!==el.querySelectorAll(":enabled").length&&rbuggyQSA.push(":enabled",":disabled"),docElem.appendChild(el).disabled=!0,2!==el.querySelectorAll(":disabled").length&&rbuggyQSA.push(":enabled",":disabled"),el.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(el){support.disconnectedMatch=matches.call(el,"*"),matches.call(el,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare||(1&(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1)||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0},document):document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return Sizzle(expr,document,null,[elem]).length>0},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):void 0;return void 0!==val?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape)},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},(Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||void 0!==elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&result.indexOf(check)>-1:"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(diff=(nodeIndex=(cache=(uniqueCache=(outerCache=(node=parent)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1])&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(diff=nodeIndex=(cache=(uniqueCache=(outerCache=(node=elem)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1]),!1===diff)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&((uniqueCache=(outerCache=node[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]=[dirruns,diff]),node!==elem)););return(diff-=last)===first||diff%first==0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):fn.length>1?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)seed[idx=indexOf(seed,matched[i])]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return(elemLang=elemLang.toLowerCase())===lang||0===elemLang.indexOf(lang+"-")}while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:createDisabledPseudo(!1),disabled:createDisabledPseudo(!0),checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,!0===elem.selected},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){for(var i=1;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;--i>=0;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i<length;)matchIndexes.push(i);return matchIndexes})}}).pseudos.nth=Expr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Expr.pseudos[i]=createInputPseudo(i);for(i in{submit:!0,reset:!0})Expr.pseudos[i]=createButtonPseudo(i);function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i<len;i++)selector+=tokens[i].value;return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&"parentNode"===key,doneName=done++;return combinator.first?function(elem,context,xml){for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)return matcher(elem,context,xml);return!1}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){for(;elem=elem[dir];)if((1===elem.nodeType||checkNonElements)&&matcher(elem,context,xml))return!0}else for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)if(uniqueCache=(outerCache=elem[expando]||(elem[expando]={}))[elem.uniqueID]||(outerCache[elem.uniqueID]={}),skip&&skip===elem.nodeName.toLowerCase())elem=elem[dir]||elem;else{if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName)return newCache[2]=oldCache[2];if(uniqueCache[key]=newCache,newCache[2]=matcher(elem,context,xml))return!0}return!1}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function condense(unmatched,map,filter,context,xml){for(var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=null!=map;i<len;i++)(elem=unmatched[i])&&(filter&&!filter(elem,context,xml)||(newUnmatched.push(elem),mapped&&map.push(i)));return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){return postFilter&&!postFilter[expando]&&(postFilter=setMatcher(postFilter)),postFinder&&!postFinder[expando]&&(postFinder=setMatcher(postFinder,postSelector)),markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||function(selector,contexts,results){for(var i=0,len=contexts.length;i<len;i++)Sizzle(selector,contexts[i],results);return results}(selector||"*",context.nodeType?[context]:context,[]),matcherIn=!preFilter||!seed&&selector?elems:condense(elems,preMap,preFilter,context,xml),matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher&&matcher(matcherIn,matcherOut,context,xml),postFilter)for(temp=condense(matcherOut,postMap),postFilter(temp,[],context,xml),i=temp.length;i--;)(elem=temp[i])&&(matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem));if(seed){if(postFinder||preFilter){if(postFinder){for(temp=[],i=matcherOut.length;i--;)(elem=matcherOut[i])&&temp.push(matcherIn[i]=elem);postFinder(null,matcherOut=[],temp,xml)}for(i=matcherOut.length;i--;)(elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i<len;i++)if(matcher=Expr.relative[tokens[i].type])matchers=[addCombinator(elementMatcher(matchers),matcher)];else{if((matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches))[expando]){for(j=++i;j<len&&!Expr.relative[tokens[j].type];j++);return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}return elementMatcher(matchers)}return setFilters.prototype=Expr.filters=Expr.pseudos,Expr.setFilters=new setFilters,tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached)return parseOnly?0:cached.slice(0);for(soFar=selector,groups=[],preFilters=Expr.preFilter;soFar;){for(type in matched&&!(match=rcomma.exec(soFar))||(match&&(soFar=soFar.slice(match[0].length)||soFar),groups.push(tokens=[])),matched=!1,(match=rcombinators.exec(soFar))&&(matched=match.shift(),tokens.push({value:matched,type:match[0].replace(rtrim," ")}),soFar=soFar.slice(matched.length)),Expr.filter)!(match=matchExpr[type].exec(soFar))||preFilters[type]&&!(match=preFilters[type](match))||(matched=match.shift(),tokens.push({value:matched,type:type,matches:match}),soFar=soFar.slice(matched.length));if(!matched)break}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)},compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){for(match||(match=tokenize(selector)),i=match.length;i--;)(cached=matcherFromTokens(match[i]))[expando]?setMatchers.push(cached):elementMatchers.push(cached);(cached=compilerCache(selector,function(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(matchedCount>0)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}(elementMatchers,setMatchers))).selector=selector}return cached},select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled="function"==typeof selector&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);if(results=results||[],1===match.length){if((tokens=match[0]=match[0].slice(0)).length>2&&"ID"===(token=tokens[0]).type&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(!(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0]))return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),!(selector=seed.length&&toSelector(tokens)))return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(el){return 1&el.compareDocumentPosition(document.createElement("fieldset"))}),assert(function(el){return el.innerHTML="<a href='#'></a>","#"===el.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(el){return el.innerHTML="<input/>",el.firstChild.setAttribute("value",""),""===el.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(el){return null==el.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return!0===elem[name]?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains,jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){for(var matched=[],truncate=void 0!==until;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()}var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(elements,qualifier,not){return isFunction(qualifier)?jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not}):qualifier.nodeType?jQuery.grep(elements,function(elem){return elem===qualifier!==not}):"string"!=typeof qualifier?jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not}):jQuery.filter(qualifier,elements,not)}jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++)if(jQuery.contains(self[i],this))return!0}));for(ret=this.pushStack([]),i=0;i<len;i++)jQuery.find(selector,self[i],ret);return len>1?jQuery.uniqueSort(ret):ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"==typeof selector){if(!(match="<"===selector[0]&&">"===selector[selector.length-1]&&selector.length>=3?[null,selector,null]:rquickExpr.exec(selector))||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}return(elem=document.getElementById(match[2]))&&(this[0]=elem,this.length=1),this}return selector.nodeType?(this[0]=selector,this.length=1,this):isFunction(selector)?void 0!==root.ready?root.ready(selector):selector(jQuery):jQuery.makeArray(selector,this)}).prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};function sibling(cur,dir){for(;(cur=cur[dir])&&1!==cur.nodeType;);return cur}jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){for(var i=0;i<l;i++)if(jQuery.contains(this,targets[i]))return!0})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets="string"!=typeof selectors&&jQuery(selectors);if(!rneedsContext.test(selectors))for(;i<l;i++)for(cur=this[i];cur&&cur!==context;cur=cur.parentNode)if(cur.nodeType<11&&(targets?targets.index(cur)>-1:1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?indexOf.call(jQuery(elem),this[0]):indexOf.call(this,elem.jquery?elem[0]:elem):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return nodeName(elem,"iframe")?elem.contentDocument:(nodeName(elem,"template")&&(elem=elem.content||elem),jQuery.merge([],elem.childNodes))}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(matched=jQuery.filter(selector,matched)),this.length>1&&(guaranteedUnique[name]||jQuery.uniqueSort(matched),rparentsprev.test(name)&&matched.reverse()),this.pushStack(matched)}});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;function Identity(v){return v}function Thrower(ex){throw ex}function adoptValue(value,resolve,reject,noValue){var method;try{value&&isFunction(method=value.promise)?method.call(value).done(resolve).fail(reject):value&&isFunction(method=value.then)?method.call(value,resolve,reject):resolve.apply(void 0,[value].slice(noValue))}catch(value){reject.apply(void 0,[value])}}jQuery.Callbacks=function(options){options="string"==typeof options?function(options){var object={};return jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=!0}),object}(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=locked||options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex<list.length;)!1===list[firingIndex].apply(memory[0],memory[1])&&options.stopOnFalse&&(firingIndex=list.length,memory=!1);options.memory||(memory=!1),firing=!1,locked&&(list=memory?[]:"")},self={add:function(){return list&&(memory&&!firing&&(firingIndex=list.length-1,queue.push(memory)),function add(args){jQuery.each(args,function(_,arg){isFunction(arg)?options.unique&&self.has(arg)||list.push(arg):arg&&arg.length&&"string"!==toType(arg)&&add(arg)})}(arguments),memory&&!firing&&fire()),this},remove:function(){return jQuery.each(arguments,function(_,arg){for(var index;(index=jQuery.inArray(arg,list,index))>-1;)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=queue=[],memory||firing||(list=memory=""),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=[context,(args=args||[]).slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},catch:function(fn){return promise.then(null,fn)},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this,fn?[returned]:arguments)})}),fns=null}).promise()},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(!(depth<maxDepth)){if((returned=handler.apply(that,args))===deferred.promise())throw new TypeError("Thenable self-resolution");then=returned&&("object"==typeof returned||"function"==typeof returned)&&returned.then,isFunction(then)?special?then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special)):(maxDepth++,then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith))):(handler!==Identity&&(that=void 0,args=[returned]),(special||deferred.resolveWith)(that,args))}},process=special?mightThrow:function(){try{mightThrow()}catch(e){jQuery.Deferred.exceptionHook&&jQuery.Deferred.exceptionHook(e,process.stackTrace),depth+1>=maxDepth&&(handler!==Thrower&&(that=void 0,args=[e]),deferred.rejectWith(that,args))}};depth?process():(jQuery.Deferred.getStackHook&&(process.stackTrace=jQuery.Deferred.getStackHook()),window.setTimeout(process))}}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith)),tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity)),tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower))}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock),list.add(tuple[3].fire),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?void 0:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this,resolveValues[i]=arguments.length>1?slice.call(arguments):value,--remaining||master.resolveWith(resolveContexts,resolveValues)}};if(remaining<=1&&(adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining),"pending"===master.state()||isFunction(resolveValues[i]&&resolveValues[i].then)))return master.then();for(;i--;)adoptValue(resolveValues[i],updateFunc(i),master.reject);return master.promise()}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){window.console&&window.console.warn&&error&&rerrorNames.test(error.name)&&window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack)},jQuery.readyException=function(error){window.setTimeout(function(){throw error})};var readyList=jQuery.Deferred();function completed(){document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed),jQuery.ready()}jQuery.fn.ready=function(fn){return readyList.then(fn).catch(function(error){jQuery.readyException(error)}),this},jQuery.extend({isReady:!1,readyWait:1,ready:function(wait){(!0===wait?--jQuery.readyWait:jQuery.isReady)||(jQuery.isReady=!0,!0!==wait&&--jQuery.readyWait>0||readyList.resolveWith(document,[jQuery]))}}),jQuery.ready.then=readyList.then,"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(jQuery.ready):(document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed));var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=null==key;if("object"===toType(key))for(i in chainable=!0,key)access(elems,fn,i,key[i],!0,emptyGet,raw);else if(void 0!==value&&(chainable=!0,isFunction(value)||(raw=!0),bulk&&(raw?(fn.call(elems,value),fn=null):(bulk=fn,fn=function(elem,key,value){return bulk.call(jQuery(elem),value)})),fn))for(;i<len;i++)fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));return chainable?elems:bulk?fn.call(elems):len?fn(elems[0],key):emptyGet},rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(all,letter){return letter.toUpperCase()}function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)}var acceptData=function(owner){return 1===owner.nodeType||9===owner.nodeType||!+owner.nodeType};function Data(){this.expando=jQuery.expando+Data.uid++}Data.uid=1,Data.prototype={cache:function(owner){var value=owner[this.expando];return value||(value={},acceptData(owner)&&(owner.nodeType?owner[this.expando]=value:Object.defineProperty(owner,this.expando,{value:value,configurable:!0}))),value},set:function(owner,data,value){var prop,cache=this.cache(owner);if("string"==typeof data)cache[camelCase(data)]=value;else for(prop in data)cache[camelCase(prop)]=data[prop];return cache},get:function(owner,key){return void 0===key?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)]},access:function(owner,key,value){return void 0===key||key&&"string"==typeof key&&void 0===value?this.get(owner,key):(this.set(owner,key,value),void 0!==value?value:key)},remove:function(owner,key){var i,cache=owner[this.expando];if(void 0!==cache){if(void 0!==key){i=(key=Array.isArray(key)?key.map(camelCase):(key=camelCase(key))in cache?[key]:key.match(rnothtmlwhite)||[]).length;for(;i--;)delete cache[key[i]]}(void 0===key||jQuery.isEmptyObject(cache))&&(owner.nodeType?owner[this.expando]=void 0:delete owner[this.expando])}},hasData:function(owner){var cache=owner[this.expando];return void 0!==cache&&!jQuery.isEmptyObject(cache)}};var dataPriv=new Data,dataUser=new Data,rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function dataAttr(elem,key,data){var name;if(void 0===data&&1===elem.nodeType)if(name="data-"+key.replace(rmultiDash,"-$&").toLowerCase(),"string"==typeof(data=elem.getAttribute(name))){try{data=function(data){return"true"===data||"false"!==data&&("null"===data?null:data===+data+""?+data:rbrace.test(data)?JSON.parse(data):data)}(data)}catch(e){}dataUser.set(elem,key,data)}else data=void 0;return data}jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem)},data:function(elem,name,data){return dataUser.access(elem,name,data)},removeData:function(elem,name){dataUser.remove(elem,name)},_data:function(elem,name,data){return dataPriv.access(elem,name,data)},_removeData:function(elem,name){dataPriv.remove(elem,name)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(void 0===key){if(this.length&&(data=dataUser.get(elem),1===elem.nodeType&&!dataPriv.get(elem,"hasDataAttrs"))){for(i=attrs.length;i--;)attrs[i]&&0===(name=attrs[i].name).indexOf("data-")&&(name=camelCase(name.slice(5)),dataAttr(elem,name,data[name]));dataPriv.set(elem,"hasDataAttrs",!0)}return data}return"object"==typeof key?this.each(function(){dataUser.set(this,key)}):access(this,function(value){var data;if(elem&&void 0===value)return void 0!==(data=dataUser.get(elem,key))?data:void 0!==(data=dataAttr(elem,key))?data:void 0;this.each(function(){dataUser.set(this,key,value)})},null,value,arguments.length>1,null,!0)},removeData:function(key){return this.each(function(){dataUser.remove(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=dataPriv.get(elem,type),data&&(!queue||Array.isArray(data)?queue=dataPriv.access(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type);"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,function(){jQuery.dequeue(elem,type)},hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key])})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.length<setter?jQuery.queue(this[0],type):void 0===data?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type),"fx"===type&&"inprogress"!==queue[0]&&jQuery.dequeue(this,type)})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){--count||defer.resolveWith(elements,[elements])};for("string"!=typeof type&&(obj=type,type=void 0),type=type||"fx";i--;)(tmp=dataPriv.get(elements[i],type+"queueHooks"))&&tmp.empty&&(count++,tmp.empty.add(resolve));return resolve(),defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),cssExpand=["Top","Right","Bottom","Left"],isHiddenWithinTree=function(elem,el){return"none"===(elem=el||elem).style.display||""===elem.style.display&&jQuery.contains(elem.ownerDocument,elem)&&"none"===jQuery.css(elem,"display")},swap=function(elem,options,callback,args){var ret,name,old={};for(name in options)old[name]=elem.style[name],elem.style[name]=options[name];for(name in ret=callback.apply(elem,args||[]),options)elem.style[name]=old[name];return ret};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){for(initial/=2,unit=unit||initialInUnit[3],initialInUnit=+initial||1;maxIterations--;)jQuery.style(elem,prop,initialInUnit+unit),(1-scale)*(1-(scale=currentValue()/initial||.5))<=0&&(maxIterations=0),initialInUnit/=scale;initialInUnit*=2,jQuery.style(elem,prop,initialInUnit+unit),valueParts=valueParts||[]}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];return display||(temp=doc.body.appendChild(doc.createElement(nodeName)),display=jQuery.css(temp,"display"),temp.parentNode.removeChild(temp),"none"===display&&(display="block"),defaultDisplayMap[nodeName]=display,display)}function showHide(elements,show){for(var display,elem,values=[],index=0,length=elements.length;index<length;index++)(elem=elements[index]).style&&(display=elem.style.display,show?("none"===display&&(values[index]=dataPriv.get(elem,"display")||null,values[index]||(elem.style.display="")),""===elem.style.display&&isHiddenWithinTree(elem)&&(values[index]=getDefaultDisplay(elem))):"none"!==display&&(values[index]="none",dataPriv.set(elem,"display",display)));for(index=0;index<length;index++)null!=values[index]&&(elements[index].style.display=values[index]);return elements}jQuery.fn.extend({show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHiddenWithinTree(this)?jQuery(this).show():jQuery(this).hide()})}});var rcheckableType=/^(?:checkbox|radio)$/i,rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,rscriptType=/^$|^module$|\/(?:java|ecma)script/i,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function getAll(context,tag){var ret;return ret=void 0!==context.getElementsByTagName?context.getElementsByTagName(tag||"*"):void 0!==context.querySelectorAll?context.querySelectorAll(tag||"*"):[],void 0===tag||tag&&nodeName(context,tag)?jQuery.merge([context],ret):ret}function setGlobalEval(elems,refElements){for(var i=0,l=elems.length;i<l;i++)dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"))}wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var div,input,rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){for(var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;i<l;i++)if((elem=elems[i])||0===elem)if("object"===toType(elem))jQuery.merge(nodes,elem.nodeType?[elem]:elem);else if(rhtml.test(elem)){for(tmp=tmp||fragment.appendChild(context.createElement("div")),tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2],j=wrap[0];j--;)tmp=tmp.lastChild;jQuery.merge(nodes,tmp.childNodes),(tmp=fragment.firstChild).textContent=""}else nodes.push(context.createTextNode(elem));for(fragment.textContent="",i=0;elem=nodes[i++];)if(selection&&jQuery.inArray(elem,selection)>-1)ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(fragment.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return fragment}div=document.createDocumentFragment().appendChild(document.createElement("div")),(input=document.createElement("input")).setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,div.innerHTML="<textarea>x</textarea>",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue;var documentElement=document.documentElement,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){for(type in"string"!=typeof selector&&(data=data||selector,selector=void 0),types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=void 0):null==fn&&("string"==typeof selector?(fn=data,data=void 0):(fn=data,data=selector,selector=void 0)),!1===fn)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,(fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)}).guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(elemData)for(handler.handler&&(handler=(handleObjIn=handler).handler,selector=handleObjIn.selector),selector&&jQuery.find.matchesSelector(documentElement,selector),handler.guid||(handler.guid=jQuery.guid++),(events=elemData.events)||(events=elemData.events={}),(eventHandle=elemData.handle)||(eventHandle=elemData.handle=function(e){return void 0!==jQuery&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):void 0}),t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type&&(special=jQuery.event.special[type]||{},type=(selector?special.delegateType:special.bindType)||type,special=jQuery.event.special[type]||{},handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn),(handlers=events[type])||((handlers=events[type]=[]).delegateCount=0,special.setup&&!1!==special.setup.call(elem,data,namespaces,eventHandle)||elem.addEventListener&&elem.addEventListener(type,eventHandle)),special.add&&(special.add.call(elem,handleObj),handleObj.handler.guid||(handleObj.handler.guid=handler.guid)),selector?handlers.splice(handlers.delegateCount++,0,handleObj):handlers.push(handleObj),jQuery.event.global[type]=!0)},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(elemData&&(events=elemData.events)){for(t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)if(type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type){for(special=jQuery.event.special[type]||{},handlers=events[type=(selector?special.delegateType:special.bindType)||type]||[],tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"),origCount=j=handlers.length;j--;)handleObj=handlers[j],!mappedTypes&&origType!==handleObj.origType||handler&&handler.guid!==handleObj.guid||tmp&&!tmp.test(handleObj.namespace)||selector&&selector!==handleObj.selector&&("**"!==selector||!handleObj.selector)||(handlers.splice(j,1),handleObj.selector&&handlers.delegateCount--,special.remove&&special.remove.call(elem,handleObj));origCount&&!handlers.length&&(special.teardown&&!1!==special.teardown.call(elem,namespaces,elemData.handle)||jQuery.removeEvent(elem,type,elemData.handle),delete events[type])}else for(type in events)jQuery.event.remove(elem,type+types[t],handler,selector,!0);jQuery.isEmptyObject(events)&&dataPriv.remove(elem,"handle events")}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,event=jQuery.event.fix(nativeEvent),args=new Array(arguments.length),handlers=(dataPriv.get(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};for(args[0]=event,i=1;i<arguments.length;i++)args[i]=arguments[i];if(event.delegateTarget=this,!special.preDispatch||!1!==special.preDispatch.call(this,event)){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,void 0!==(ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args))&&!1===(event.result=ret)&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!("click"===event.type&&event.button>=1))for(;cur!==this;cur=cur.parentNode||this)if(1===cur.nodeType&&("click"!==event.type||!0!==cur.disabled)){for(matchedHandlers=[],matchedSelectors={},i=0;i<delegateCount;i++)void 0===matchedSelectors[sel=(handleObj=handlers[i]).selector+" "]&&(matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length),matchedSelectors[sel]&&matchedHandlers.push(handleObj);matchedHandlers.length&&handlerQueue.push({elem:cur,handlers:matchedHandlers})}return cur=this,delegateCount<handlers.length&&handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)}),handlerQueue},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:!0,configurable:!0,get:isFunction(hook)?function(){if(this.originalEvent)return hook(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[name]},set:function(value){Object.defineProperty(this,name,{enumerable:!0,configurable:!0,writable:!0,value:value})}})},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&nodeName(this,"input"))return this.click(),!1},_default:function(event){return nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){void 0!==event.result&&event.originalEvent&&(event.originalEvent.returnValue=event.result)}}}},jQuery.removeEvent=function(elem,type,handle){elem.removeEventListener&&elem.removeEventListener(type,handle)},jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event))return new jQuery.Event(src,props);src&&src.type?(this.originalEvent=src,this.type=src.type,this.isDefaultPrevented=src.defaultPrevented||void 0===src.defaultPrevented&&!1===src.returnValue?returnTrue:returnFalse,this.target=src.target&&3===src.target.nodeType?src.target.parentNode:src.target,this.currentTarget=src.currentTarget,this.relatedTarget=src.relatedTarget):this.type=src,props&&jQuery.extend(this,props),this.timeStamp=src&&src.timeStamp||Date.now(),this[jQuery.expando]=!0},jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},jQuery.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(event){var button=event.button;return null==event.which&&rkeyEvent.test(event.type)?null!=event.charCode?event.charCode:event.keyCode:!event.which&&void 0!==button&&rmouseEvent.test(event.type)?1&button?1:2&button?3:4&button?2:0:event.which}},jQuery.event.addProp),jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,related=event.relatedTarget,handleObj=event.handleObj;return related&&(related===this||jQuery.contains(this,related))||(event.type=handleObj.origType,ret=handleObj.handler.apply(this,arguments),event.type=fix),ret}}}),jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj)return handleObj=types.handleObj,jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler),this;if("object"==typeof types){for(type in types)this.off(type,selector,types[type]);return this}return!1!==selector&&"function"!=typeof selector||(fn=selector,selector=void 0),!1===fn&&(fn=returnFalse),this.each(function(){jQuery.event.remove(this,types,fn,selector)})}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){return nodeName(elem,"table")&&nodeName(11!==content.nodeType?content:content.firstChild,"tr")&&jQuery(elem).children("tbody")[0]||elem}function disableScript(elem){return elem.type=(null!==elem.getAttribute("type"))+"/"+elem.type,elem}function restoreScript(elem){return"true/"===(elem.type||"").slice(0,5)?elem.type=elem.type.slice(5):elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(1===dest.nodeType){if(dataPriv.hasData(src)&&(pdataOld=dataPriv.access(src),pdataCur=dataPriv.set(dest,pdataOld),events=pdataOld.events))for(type in delete pdataCur.handle,pdataCur.events={},events)for(i=0,l=events[type].length;i<l;i++)jQuery.event.add(dest,type,events[type][i]);dataUser.hasData(src)&&(udataOld=dataUser.access(src),udataCur=jQuery.extend({},udataOld),dataUser.set(dest,udataCur))}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||l>1&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);valueIsFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(first=(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored)).firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(hasScripts=(scripts=jQuery.map(getAll(fragment,"script"),disableScript)).length;i<l;i++)node=fragment,i!==iNoClone&&(node=jQuery.clone(node,!0,!0),hasScripts&&jQuery.merge(scripts,getAll(node,"script"))),callback.call(collection[i],node,i);if(hasScripts)for(doc=scripts[scripts.length-1].ownerDocument,jQuery.map(scripts,restoreScript),i=0;i<hasScripts;i++)node=scripts[i],rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)&&(node.src&&"module"!==(node.type||"").toLowerCase()?jQuery._evalUrl&&jQuery._evalUrl(node.src):DOMEval(node.textContent.replace(rcleanScript,""),doc,node))}return collection}function remove(elem,selector,keepData){for(var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;null!=(node=nodes[i]);i++)keepData||1!==node.nodeType||jQuery.cleanData(getAll(node)),node.parentNode&&(keepData&&jQuery.contains(node.ownerDocument,node)&&setGlobalEval(getAll(node,"script")),node.parentNode.removeChild(node));return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,src,dest,nodeName,clone=elem.cloneNode(!0),inPage=jQuery.contains(elem.ownerDocument,elem);if(!(support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),i=0,l=(srcElements=getAll(elem)).length;i<l;i++)src=srcElements[i],dest=destElements[i],void 0,"input"===(nodeName=dest.nodeName.toLowerCase())&&rcheckableType.test(src.type)?dest.checked=src.checked:"input"!==nodeName&&"textarea"!==nodeName||(dest.defaultValue=src.defaultValue);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0,l=srcElements.length;i<l;i++)cloneCopyEvent(srcElements[i],destElements[i]);else cloneCopyEvent(elem,clone);return(destElements=getAll(clone,"script")).length>0&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),clone},cleanData:function(elems){for(var data,elem,type,special=jQuery.event.special,i=0;void 0!==(elem=elems[i]);i++)if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);elem[dataPriv.expando]=void 0}elem[dataUser.expando]&&(elem[dataUser.expando]=void 0)}}}),jQuery.fn.extend({detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return void 0===value?jQuery.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=value)})},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||manipulationTarget(this,elem).appendChild(elem)})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++)1===elem.nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.textContent="");return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(void 0===value&&1===elem.nodeType)return elem.innerHTML;if("string"==typeof value&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++)1===(elem=this[i]||{}).nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.innerHTML=value);elem=0}catch(e){}}elem&&this.empty().append(value)},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;jQuery.inArray(this,ignored)<0&&(jQuery.cleanData(getAll(this)),parent&&parent.replaceChild(elem,this))},ignored)}}),jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){for(var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;i<=last;i++)elems=i===last?this:this.clone(!0),jQuery(insert[i])[original](elems),push.apply(ret,elems.get());return this.pushStack(ret)}});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i"),getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},rboxStyle=new RegExp(cssExpand.join("|"),"i");function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return(computed=computed||getStyles(elem))&&(""!==(ret=computed.getPropertyValue(name)||computed[name])||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth)),void 0!==ret?ret+"":ret}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(!conditionFn())return(this.get=hookFn).apply(this,arguments);delete this.get}}}!function(){function computeStyleTests(){if(div){container.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal="1%"!==divStyle.top,reliableMarginLeftVal=12===roundPixelMeasures(divStyle.marginLeft),div.style.right="60%",pixelBoxStylesVal=36===roundPixelMeasures(divStyle.right),boxSizingReliableVal=36===roundPixelMeasures(divStyle.width),div.style.position="absolute",scrollboxSizeVal=36===div.offsetWidth||"absolute",documentElement.removeChild(container),div=null}}function roundPixelMeasures(measure){return Math.round(parseFloat(measure))}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,jQuery.extend(support,{boxSizingReliable:function(){return computeStyleTests(),boxSizingReliableVal},pixelBoxStyles:function(){return computeStyleTests(),pixelBoxStylesVal},pixelPosition:function(){return computeStyleTests(),pixelPositionVal},reliableMarginLeft:function(){return computeStyleTests(),reliableMarginLeftVal},scrollboxSize:function(){return computeStyleTests(),scrollboxSizeVal}}))}();var rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style;function finalPropName(name){var ret=jQuery.cssProps[name];return ret||(ret=jQuery.cssProps[name]=function(name){if(name in emptyStyle)return name;for(var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if((name=cssPrefixes[i]+capName)in emptyStyle)return name}(name)||name),ret}function setPositiveNumber(elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i="width"===dimension?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content"))return 0;for(;i<4;i+=2)"margin"===box&&(delta+=jQuery.css(elem,box+cssExpand[i],!0,styles)),isBorderBox?("content"===box&&(delta-=jQuery.css(elem,"padding"+cssExpand[i],!0,styles)),"margin"!==box&&(delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles))):(delta+=jQuery.css(elem,"padding"+cssExpand[i],!0,styles),"padding"!==box?delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles):extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles));return!isBorderBox&&computedVal>=0&&(delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-.5))),delta}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),val=curCSS(elem,dimension,styles),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),valueIsBorderBox=isBorderBox;if(rnumnonpx.test(val)){if(!extra)return val;val="auto"}return valueIsBorderBox=valueIsBorderBox&&(support.boxSizingReliable()||val===elem.style[dimension]),("auto"===val||!parseFloat(val)&&"inline"===jQuery.css(elem,"display",!1,styles))&&(val=elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)],valueIsBorderBox=!0),(val=parseFloat(val)||0)+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val)+"px"}function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(isCustomProp||(name=finalPropName(origName)),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],void 0===value)return hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,!1,extra))?ret:style[name];"string"===(type=typeof value)&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value==value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),hooks&&"set"in hooks&&void 0===(value=hooks.set(elem,value,extra))||(isCustomProp?style.setProperty(name,value):style[name]=value))}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name);return rcustomProp.test(name)||(name=finalPropName(origName)),(hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName])&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),void 0===val&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),!0===extra||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed)return!rdisplayswap.test(jQuery.css(elem,"display"))||elem.getClientRects().length&&elem.getBoundingClientRect().width?getWidthOrHeight(elem,dimension,extra):swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra)})},set:function(elem,value,extra){var matches,styles=getStyles(elem),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),subtract=extra&&boxModelAdjustment(elem,dimension,extra,isBorderBox,styles);return isBorderBox&&support.scrollboxSize()===styles.position&&(subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",!1,styles)-.5)),subtract&&(matches=rcssNum.exec(value))&&"px"!==(matches[3]||"px")&&(elem.style[dimension]=value,value=jQuery.css(elem,dimension)),setPositiveNumber(0,value,subtract)}}}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},"margin"!==prefix&&(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){for(styles=getStyles(elem),len=name.length;i<len;i++)map[name[i]]=jQuery.css(elem,name[i],!1,styles);return map}return void 0!==value?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""))&&"auto"!==result?result:0},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){inProgress&&(!1===document.hidden&&window.requestAnimationFrame?window.requestAnimationFrame(schedule):window.setTimeout(schedule,jQuery.fx.interval),jQuery.fx.tick())}function createFxNow(){return window.setTimeout(function(){fxNow=void 0}),fxNow=Date.now()}function genFx(type,includeWidth){var which,i=0,attrs={height:type};for(includeWidth=includeWidth?1:0;i<4;i+=2-includeWidth)attrs["margin"+(which=cssExpand[i])]=attrs["padding"+which]=type;return includeWidth&&(attrs.opacity=attrs.width=type),attrs}function createTween(value,prop,animation){for(var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;index<length;index++)if(tween=collection[index].call(animation,prop,value))return tween}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped)return!1;for(var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),percent=1-(remaining/animation.duration||0),index=0,length=animation.tweens.length;index<length;index++)animation.tweens[index].run(percent);return deferred.notifyWith(elem,[animation,percent,remaining]),percent<1&&length?remaining:(length||deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation]),!1)},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(!0,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);return animation.tweens.push(tween),tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped)return this;for(stopped=!0;index<length;index++)animation.tweens[index].run(1);return gotoEnd?(deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation,gotoEnd])):deferred.rejectWith(elem,[animation,gotoEnd]),this}}),props=animation.props;for(!function(props,specialEasing){var index,name,easing,value,hooks;for(index in props)if(easing=specialEasing[name=camelCase(index)],value=props[index],Array.isArray(value)&&(easing=value[1],value=props[index]=value[0]),index!==name&&(props[name]=value,delete props[index]),(hooks=jQuery.cssHooks[name])&&"expand"in hooks)for(index in value=hooks.expand(value),delete props[name],value)index in props||(props[index]=value[index],specialEasing[index]=easing);else specialEasing[name]=easing}(props,animation.opts.specialEasing);index<length;index++)if(result=Animation.prefilters[index].call(animation,elem,props,animation.opts))return isFunction(result.stop)&&(jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result)),result;return jQuery.map(props,createTween,animation),isFunction(animation.opts.start)&&animation.opts.start.call(elem,animation),animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always),jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue})),animation}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){isFunction(props)?(callback=props,props=["*"]):props=props.match(rnothtmlwhite);for(var prop,index=0,length=props.length;index<length;index++)prop=props[index],Animation.tweeners[prop]=Animation.tweeners[prop]||[],Animation.tweeners[prop].unshift(callback)},prefilters:[function(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");for(prop in opts.queue||(null==(hooks=jQuery._queueHooks(elem,"fx")).unqueued&&(hooks.unqueued=0,oldfire=hooks.empty.fire,hooks.empty.fire=function(){hooks.unqueued||oldfire()}),hooks.unqueued++,anim.always(function(){anim.always(function(){hooks.unqueued--,jQuery.queue(elem,"fx").length||hooks.empty.fire()})})),props)if(value=props[prop],rfxtypes.test(value)){if(delete props[prop],toggle=toggle||"toggle"===value,value===(hidden?"hide":"show")){if("show"!==value||!dataShow||void 0===dataShow[prop])continue;hidden=!0}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}if((propTween=!jQuery.isEmptyObject(props))||!jQuery.isEmptyObject(orig))for(prop in isBox&&1===elem.nodeType&&(opts.overflow=[style.overflow,style.overflowX,style.overflowY],null==(restoreDisplay=dataShow&&dataShow.display)&&(restoreDisplay=dataPriv.get(elem,"display")),"none"===(display=jQuery.css(elem,"display"))&&(restoreDisplay?display=restoreDisplay:(showHide([elem],!0),restoreDisplay=elem.style.display||restoreDisplay,display=jQuery.css(elem,"display"),showHide([elem]))),("inline"===display||"inline-block"===display&&null!=restoreDisplay)&&"none"===jQuery.css(elem,"float")&&(propTween||(anim.done(function(){style.display=restoreDisplay}),null==restoreDisplay&&(display=style.display,restoreDisplay="none"===display?"":display)),style.display="inline-block")),opts.overflow&&(style.overflow="hidden",anim.always(function(){style.overflow=opts.overflow[0],style.overflowX=opts.overflow[1],style.overflowY=opts.overflow[2]})),propTween=!1,orig)propTween||(dataShow?"hidden"in dataShow&&(hidden=dataShow.hidden):dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay}),toggle&&(dataShow.hidden=!hidden),hidden&&showHide([elem],!0),anim.done(function(){for(prop in hidden||showHide([elem]),dataPriv.remove(elem,"fxshow"),orig)jQuery.style(elem,prop,orig[prop])})),propTween=createTween(hidden?dataShow[prop]:0,prop,anim),prop in dataShow||(dataShow[prop]=propTween.start,hidden&&(propTween.end=propTween.start,propTween.start=0))}],prefilter:function(callback,prepend){prepend?Animation.prefilters.unshift(callback):Animation.prefilters.push(callback)}}),jQuery.speed=function(speed,easing,fn){var opt=speed&&"object"==typeof speed?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};return jQuery.fx.off?opt.duration=0:"number"!=typeof opt.duration&&(opt.duration in jQuery.fx.speeds?opt.duration=jQuery.fx.speeds[opt.duration]:opt.duration=jQuery.fx.speeds._default),null!=opt.queue&&!0!==opt.queue||(opt.queue="fx"),opt.old=opt.complete,opt.complete=function(){isFunction(opt.old)&&opt.old.call(this),opt.queue&&jQuery.dequeue(this,opt.queue)},opt},jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);(empty||dataPriv.get(this,"finish"))&&anim.stop(!0)};return doAnimation.finish=doAnimation,empty||!1===optall.queue?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop,stop(gotoEnd)};return"string"!=typeof type&&(gotoEnd=clearQueue,clearQueue=type,type=void 0),clearQueue&&!1!==type&&this.queue(type||"fx",[]),this.each(function(){var dequeue=!0,index=null!=type&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index)data[index]&&data[index].stop&&stopQueue(data[index]);else for(index in data)data[index]&&data[index].stop&&rrun.test(index)&&stopQueue(data[index]);for(index=timers.length;index--;)timers[index].elem!==this||null!=type&&timers[index].queue!==type||(timers[index].anim.stop(gotoEnd),dequeue=!1,timers.splice(index,1));!dequeue&&gotoEnd||jQuery.dequeue(this,type)})},finish:function(type){return!1!==type&&(type=type||"fx"),this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;for(data.finish=!0,jQuery.queue(this,type,[]),hooks&&hooks.stop&&hooks.stop.call(this,!0),index=timers.length;index--;)timers[index].elem===this&&timers[index].queue===type&&(timers[index].anim.stop(!0),timers.splice(index,1));for(index=0;index<length;index++)queue[index]&&queue[index].finish&&queue[index].finish.call(this);delete data.finish})}}),jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return null==speed||"boolean"==typeof speed?cssFn.apply(this,arguments):this.animate(genFx(name,!0),speed,easing,callback)}}),jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}}),jQuery.timers=[],jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;for(fxNow=Date.now();i<timers.length;i++)(timer=timers[i])()||timers[i]!==timer||timers.splice(i--,1);timers.length||jQuery.fx.stop(),fxNow=void 0},jQuery.fx.timer=function(timer){jQuery.timers.push(timer),jQuery.fx.start()},jQuery.fx.interval=13,jQuery.fx.start=function(){inProgress||(inProgress=!0,schedule())},jQuery.fx.stop=function(){inProgress=null},jQuery.fx.speeds={slow:600,fast:200,_default:400},jQuery.fn.delay=function(time,type){return time=jQuery.fx&&jQuery.fx.speeds[time]||time,type=type||"fx",this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})},function(){var input=document.createElement("input"),opt=document.createElement("select").appendChild(document.createElement("option"));input.type="checkbox",support.checkOn=""!==input.value,support.optSelected=opt.selected,(input=document.createElement("input")).value="t",input.type="radio",support.radioValue="t"===input.value}();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return void 0===elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:void 0)),void 0!==value?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:null==(ret=jQuery.find.attr(elem,name))?void 0:ret)},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)elem.removeAttribute(name)}}),boolHook={set:function(elem,value,name){return!1===value?jQuery.removeAttr(elem,name):elem.setAttribute(name,name),name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();return isXML||(handle=attrHandle[lowercaseName],attrHandle[lowercaseName]=ret,ret=null!=getter(elem,name,isXML)?lowercaseName:null,attrHandle[lowercaseName]=handle),ret}});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;function stripAndCollapse(value){return(value.match(rnothtmlwhite)||[]).join(" ")}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||""}function classesToArray(value){return Array.isArray(value)?value:"string"==typeof value&&value.match(rnothtmlwhite)||[]}jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name]})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),void 0!==value?hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&parent.parentNode&&parent.parentNode.selectedIndex,null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)for(;cur.indexOf(" "+clazz+" ")>-1;)cur=cur.replace(" "+clazz+" "," ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value,isValidValue="string"===type||Array.isArray(value);return"boolean"==typeof stateVal&&isValidValue?stateVal?this.addClass(value):this.removeClass(value):isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if(isValidValue)for(i=0,self=jQuery(this),classNames=classesToArray(value);className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else void 0!==value&&"boolean"!==type||((className=getClass(this))&&dataPriv.set(this,"__className__",className),this.setAttribute&&this.setAttribute("class",className||!1===value?"":dataPriv.get(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1)return!0;return!1}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];return arguments.length?(valueIsFunction=isFunction(value),this.each(function(i){var val;1===this.nodeType&&(null==(val=valueIsFunction?value.call(this,i,jQuery(this).val()):value)?val="":"number"==typeof val?val+="":Array.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),(hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in hooks&&void 0!==hooks.set(this,val,"value")||(this.value=val))})):elem?(hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()])&&"get"in hooks&&void 0!==(ret=hooks.get(elem,"value"))?ret:"string"==typeof(ret=elem.value)?ret.replace(rreturn,""):null==ret?"":ret:void 0}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:stripAndCollapse(jQuery.text(elem))}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type,values=one?null:[],max=one?index+1:options.length;for(i=index<0?max:one?index:0;i<max;i++)if(((option=options[i]).selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){if(value=jQuery(option).val(),one)return value;values.push(value)}return values},set:function(elem,value){for(var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;i--;)((option=options[i]).selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1)&&(optionSet=!0);return optionSet||(elem.selectedIndex=-1),values}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value))return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})}),support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];if(cur=lastElement=tmp=elem=elem||document,3!==elem.nodeType&&8!==elem.nodeType&&!rfocusMorph.test(type+jQuery.event.triggered)&&(type.indexOf(".")>-1&&(type=(namespaces=type.split(".")).shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,(event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event)).isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=void 0,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||!1!==special.trigger.apply(elem,data))){if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)lastElement=cur,event.type=i>1?bubbleType:special.bindType||type,(handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle"))&&handle.apply(cur,data),(handle=ontype&&cur[ontype])&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),!1===event.result&&event.preventDefault());return event.type=type,onlyHandlers||event.isDefaultPrevented()||special._default&&!1!==special._default.apply(eventPath.pop(),data)||!acceptData(elem)||ontype&&isFunction(elem[type])&&!isWindow(elem)&&((tmp=elem[ontype])&&(elem[ontype]=null),jQuery.event.triggered=type,event.isPropagationStopped()&&lastElement.addEventListener(type,stopPropagationCallback),elem[type](),event.isPropagationStopped()&&lastElement.removeEventListener(type,stopPropagationCallback),jQuery.event.triggered=void 0,tmp&&(elem[ontype]=tmp)),event.result}},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:!0});jQuery.event.trigger(e,null,elem)}}),jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem)return jQuery.event.trigger(type,data,elem,!0)}}),support.focusin||jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);attaches||doc.addEventListener(orig,handler,!0),dataPriv.access(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;attaches?dataPriv.access(doc,fix,attaches):(doc.removeEventListener(orig,handler,!0),dataPriv.remove(doc,fix))}}});var location=window.location,nonce=Date.now(),rquery=/\?/;jQuery.parseXML=function(data){var xml;if(!data||"string"!=typeof data)return null;try{xml=(new window.DOMParser).parseFromString(data,"text/xml")}catch(e){xml=void 0}return xml&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj))jQuery.each(obj,function(i,v){traditional||rbracket.test(prefix)?add(prefix,v):buildParams(prefix+"["+("object"==typeof v&&null!=v?i:"")+"]",v,traditional,add)});else if(traditional||"object"!==toType(obj))add(prefix,obj);else for(name in obj)buildParams(prefix+"["+name+"]",obj[name],traditional,add)}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(null==value?"":value)};if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:Array.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/gm,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){"string"!=typeof dataTypeExpression&&(func=dataTypeExpression,dataTypeExpression="*");var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func))for(;dataType=dataTypes[i++];)"+"===dataType[0]?(dataType=dataType.slice(1)||"*",(structure[dataType]=structure[dataType]||[]).unshift(func)):(structure[dataType]=structure[dataType]||[]).push(func)}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;return inspected[dataType]=!0,jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);return"string"!=typeof dataTypeOrTransport||seekingTransport||inspected[dataTypeOrTransport]?seekingTransport?!(selected=dataTypeOrTransport):void 0:(options.dataTypes.unshift(dataTypeOrTransport),inspect(dataTypeOrTransport),!1)}),selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src)void 0!==src[key]&&((flatOptions[key]?target:deep||(deep={}))[key]=src[key]);return deep&&jQuery.extend(!0,target,deep),target}originAnchor.href=location.href,jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(location.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){"object"==typeof url&&(options=url,url=void 0),options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return completed?responseHeadersString:null},setRequestHeader:function(name,value){return null==completed&&(name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return null==completed&&(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(completed)jqXHR.always(map[jqXHR.status]);else for(code in map)statusCode[code]=[statusCode[code],map[code]];return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR),s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""],null==s.crossDomain){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url,urlAnchor.href=urlAnchor.href,s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!=urlAnchor.protocol+"//"+urlAnchor.host}catch(e){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),completed)return jqXHR;for(i in(fireGlobals=jQuery.event&&s.global)&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url.replace(rhash,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(r20,"+")):(uncached=s.url.slice(cacheURL.length),s.data&&(s.processData||"string"==typeof s.data)&&(cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),!1===s.cache&&(cacheURL=cacheURL.replace(rantiCache,"$1"),uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce+++uncached),s.url=cacheURL+uncached),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&!1!==s.contentType||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]),s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(callbackContext,jqXHR,s)||completed))return jqXHR.abort();if(strAbort="abort",completeDeferred.add(s.complete),jqXHR.done(s.success),jqXHR.fail(s.error),transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),completed)return jqXHR;s.async&&s.timeout>0&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{completed=!1,transport.send(requestHeaders,done)}catch(e){if(completed)throw e;done(-1,e)}}else done(-1,"No Transport");function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;completed||(completed=!0,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=void 0,responseHeadersString=headers||"",jqXHR.readyState=status>0?4:0,isSuccess=status>=200&&status<300||304===status,responses&&(response=function(s,jqXHR,responses){for(var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;"*"===dataTypes[0];)dataTypes.shift(),void 0===ct&&(ct=s.mimeType||jqXHR.getResponseHeader("Content-Type"));if(ct)for(type in contents)if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}if(dataTypes[0]in responses)finalDataType=dataTypes[0];else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}firstDataType||(firstDataType=type)}finalDataType=finalDataType||firstDataType}if(finalDataType)return finalDataType!==dataTypes[0]&&dataTypes.unshift(finalDataType),responses[finalDataType]}(s,jqXHR,responses)),response=function(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1])for(conv in s.converters)converters[conv.toLowerCase()]=s.converters[conv];for(current=dataTypes.shift();current;)if(s.responseFields[current]&&(jqXHR[s.responseFields[current]]=response),!prev&&isSuccess&&s.dataFilter&&(response=s.dataFilter(response,s.dataType)),prev=current,current=dataTypes.shift())if("*"===current)current=prev;else if("*"!==prev&&prev!==current){if(!(conv=converters[prev+" "+current]||converters["* "+current]))for(conv2 in converters)if((tmp=conv2.split(" "))[1]===current&&(conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]])){!0===conv?conv=converters[conv2]:!0!==converters[conv2]&&(current=tmp[0],dataTypes.unshift(tmp[1]));break}if(!0!==conv)if(conv&&s.throws)response=conv(response);else try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}return{state:"success",data:response}}(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&((modified=jqXHR.getResponseHeader("Last-Modified"))&&(jQuery.lastModified[cacheURL]=modified),(modified=jqXHR.getResponseHeader("etag"))&&(jQuery.etag[cacheURL]=modified)),204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,isSuccess=!(error=response.error))):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=void 0,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,void 0,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return isFunction(data)&&(type=type||callback,callback=data,data=void 0),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},jQuery.fn.extend({wrapAll:function(html){var wrap;return this[0]&&(isFunction(html)&&(html=html.call(this[0])),wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstElementChild;)elem=elem.firstElementChild;return elem}).append(this)),this},wrapInner:function(html){return isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html)})},unwrap:function(selector){return this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes)}),this}}),jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem)},jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length)},jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,support.ajax=xhrSupported=!!xhrSupported,jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain)return{send:function(headers,complete){var i,xhr=options.xhr();if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];for(i in options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest"),headers)xhr.setRequestHeader(i,headers[i]);callback=function(type){return function(){callback&&(callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null,"abort"===type?xhr.abort():"error"===type?"number"!=typeof xhr.status?complete(0,"error"):complete(xhr.status,xhr.statusText):complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,"text"!==(xhr.responseType||"text")||"string"!=typeof xhr.responseText?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders()))}},xhr.onload=callback(),errorCallback=xhr.onerror=xhr.ontimeout=callback("error"),void 0!==xhr.onabort?xhr.onabort=errorCallback:xhr.onreadystatechange=function(){4===xhr.readyState&&window.setTimeout(function(){callback&&errorCallback()})},callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null)}catch(e){if(callback)throw e}},abort:function(){callback&&callback()}}}),jQuery.ajaxPrefilter(function(s){s.crossDomain&&(s.contents.script=!1)}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){void 0===s.cache&&(s.cache=!1),s.crossDomain&&(s.type="GET")}),jQuery.ajaxTransport("script",function(s){var script,callback;if(s.crossDomain)return{send:function(_,complete){script=jQuery("<script>").prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove(),callback=null,evt&&complete("error"===evt.type?404:200,evt.type)}),document.head.appendChild(script[0])},abort:function(){callback&&callback()}}});var body,oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=!1!==s.jsonp&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):!1!==s.jsonp&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){void 0===overwritten?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=void 0}),"script"}),support.createHTMLDocument=((body=document.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===body.childNodes.length),jQuery.parseHTML=function(data,context,keepScripts){return"string"!=typeof data?[]:("boolean"==typeof context&&(keepScripts=context,context=!1),context||(support.createHTMLDocument?((base=(context=document.implementation.createHTMLDocument("")).createElement("base")).href=document.location.href,context.head.appendChild(base)):context=document),parsed=rsingleTag.exec(data),scripts=!keepScripts&&[],parsed?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes)));var base,parsed,scripts},jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");return off>-1&&(selector=stripAndCollapse(url.slice(off)),url=url.slice(0,off)),isFunction(params)?(callback=params,params=void 0):params&&"object"==typeof params&&(type="POST"),self.length>0&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),("absolute"===position||"fixed"===position)&&(curCSSTop+curCSSLeft).indexOf("auto")>-1?(curTop=(curPosition=curElem.position()).top,curLeft=curPosition.left):(curTop=parseFloat(curCSSTop)||0,curLeft=parseFloat(curCSSLeft)||0),isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return void 0===options?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var rect,win,elem=this[0];return elem?elem.getClientRects().length?(rect=elem.getBoundingClientRect(),win=elem.ownerDocument.defaultView,{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if("fixed"===jQuery.css(elem,"position"))offset=elem.getBoundingClientRect();else{for(offset=this.offset(),doc=elem.ownerDocument,offsetParent=elem.offsetParent||doc.documentElement;offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.parentNode;offsetParent&&offsetParent!==elem&&1===offsetParent.nodeType&&((parentOffset=jQuery(offsetParent).offset()).top+=jQuery.css(offsetParent,"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",!0))}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)?win=elem:9===elem.nodeType&&(win=elem.defaultView),void 0===val)return win?win[prop]:elem[method];win?win.scrollTo(top?win.pageXOffset:val,top?val:win.pageYOffset):elem[method]=val},method,val,arguments.length)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(!0===margin||!0===value?"margin":"border");return access(this,function(elem,type,value){var doc;return isWindow(elem)?0===funcName.indexOf("outer")?elem["inner"+name]:elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):void 0===value?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:void 0,chainable)}})}),jQuery.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.proxy=function(fn,context){var tmp,args,proxy;if("string"==typeof context&&(tmp=fn[context],context=fn,fn=tmp),isFunction(fn))return args=slice.call(arguments,2),(proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))}).guid=fn.guid=fn.guid||jQuery.guid++,proxy},jQuery.holdReady=function(hold){hold?jQuery.readyWait++:jQuery.ready(!0)},jQuery.isArray=Array.isArray,jQuery.parseJSON=JSON.parse,jQuery.nodeName=nodeName,jQuery.isFunction=isFunction,jQuery.isWindow=isWindow,jQuery.camelCase=camelCase,jQuery.type=toType,jQuery.now=Date.now,jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return("number"===type||"string"===type)&&!isNaN(obj-parseFloat(obj))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return jQuery});var _jQuery=window.jQuery,_$=window.$;return jQuery.noConflict=function(deep){return window.$===jQuery&&(window.$=_$),deep&&window.jQuery===jQuery&&(window.jQuery=_jQuery),jQuery},noGlobal||(window.jQuery=window.$=jQuery),jQuery}),function(root,factory){"function"==typeof define&&define.amd?define(["moment"],factory):"object"==typeof module&&module.exports?module.exports=factory(require("moment")):factory(root.moment)}(this,function(moment){var cachedGuess,zones={},links={},names={},guesses={},momentVersion=moment.version.split("."),major=+momentVersion[0],minor=+momentVersion[1];function charCodeToInt(charCode){return charCode>96?charCode-87:charCode>64?charCode-29:charCode-48}function unpackBase60(string){var i=0,parts=string.split("."),whole=parts[0],fractional=parts[1]||"",multiplier=1,out=0,sign=1;for(45===string.charCodeAt(0)&&(i=1,sign=-1);i<whole.length;i++)out=60*out+charCodeToInt(whole.charCodeAt(i));for(i=0;i<fractional.length;i++)multiplier/=60,out+=charCodeToInt(fractional.charCodeAt(i))*multiplier;return out*sign}function arrayToInt(array){for(var i=0;i<array.length;i++)array[i]=unpackBase60(array[i])}function mapIndices(source,indices){var i,out=[];for(i=0;i<indices.length;i++)out[i]=source[indices[i]];return out}function unpack(string){var data=string.split("|"),offsets=data[2].split(" "),indices=data[3].split(""),untils=data[4].split(" ");return arrayToInt(offsets),arrayToInt(indices),arrayToInt(untils),function(array,length){for(var i=0;i<length;i++)array[i]=Math.round((array[i-1]||0)+6e4*array[i]);array[length-1]=1/0}(untils,indices.length),{name:data[0],abbrs:mapIndices(data[1].split(" "),indices),offsets:mapIndices(offsets,indices),untils:untils,population:0|data[5]}}function Zone(packedString){packedString&&this._set(unpack(packedString))}function OffsetAt(at){var timeString=at.toTimeString(),abbr=timeString.match(/\([a-z ]+\)/i);"GMT"===(abbr=abbr&&abbr[0]?(abbr=abbr[0].match(/[A-Z]/g))?abbr.join(""):void 0:(abbr=timeString.match(/[A-Z]{3,5}/g))?abbr[0]:void 0)&&(abbr=void 0),this.at=+at,this.abbr=abbr,this.offset=at.getTimezoneOffset()}function ZoneScore(zone){this.zone=zone,this.offsetScore=0,this.abbrScore=0}function findChange(low,high){for(var mid,diff;diff=6e4*((high.at-low.at)/12e4|0);)(mid=new OffsetAt(new Date(low.at+diff))).offset===low.offset?low=mid:high=mid;return low}function sortZoneScores(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function addToGuesses(name,offsets){var i,offset;for(arrayToInt(offsets),i=0;i<offsets.length;i++)offset=offsets[i],guesses[offset]=guesses[offset]||{},guesses[offset][name]=!0}function guessesForUserOffsets(offsets){var i,j,guessesOffset,offsetsLength=offsets.length,filteredGuesses={},out=[];for(i=0;i<offsetsLength;i++)for(j in guessesOffset=guesses[offsets[i].offset]||{})guessesOffset.hasOwnProperty(j)&&(filteredGuesses[j]=!0);for(i in filteredGuesses)filteredGuesses.hasOwnProperty(i)&&out.push(names[i]);return out}function rebuildGuess(){try{var intlName=Intl.DateTimeFormat().resolvedOptions().timeZone;if(intlName&&intlName.length>3){var name=names[normalizeName(intlName)];if(name)return name;logError("Moment Timezone found "+intlName+" from the Intl api, but did not have that data loaded.")}}catch(e){}var zoneScore,i,j,offsets=function(){var change,next,i,startYear=(new Date).getFullYear()-2,last=new OffsetAt(new Date(startYear,0,1)),offsets=[last];for(i=1;i<48;i++)(next=new OffsetAt(new Date(startYear,i,1))).offset!==last.offset&&(change=findChange(last,next),offsets.push(change),offsets.push(new OffsetAt(new Date(change.at+6e4)))),last=next;for(i=0;i<4;i++)offsets.push(new OffsetAt(new Date(startYear+i,0,1))),offsets.push(new OffsetAt(new Date(startYear+i,6,1)));return offsets}(),offsetsLength=offsets.length,guesses=guessesForUserOffsets(offsets),zoneScores=[];for(i=0;i<guesses.length;i++){for(zoneScore=new ZoneScore(getZone(guesses[i]),offsetsLength),j=0;j<offsetsLength;j++)zoneScore.scoreOffsetAt(offsets[j]);zoneScores.push(zoneScore)}return zoneScores.sort(sortZoneScores),zoneScores.length>0?zoneScores[0].zone.name:void 0}function normalizeName(name){return(name||"").toLowerCase().replace(/\//g,"_")}function addZone(packed){var i,name,split,normalized;for("string"==typeof packed&&(packed=[packed]),i=0;i<packed.length;i++)normalized=normalizeName(name=(split=packed[i].split("|"))[0]),zones[normalized]=packed[i],names[normalized]=name,addToGuesses(normalized,split[2].split(" "))}function getZone(name,caller){name=normalizeName(name);var link,zone=zones[name];return zone instanceof Zone?zone:"string"==typeof zone?(zone=new Zone(zone),zones[name]=zone,zone):links[name]&&caller!==getZone&&(link=getZone(links[name],getZone))?((zone=zones[name]=new Zone)._set(link),zone.name=names[name],zone):null}function addLink(aliases){var i,alias,normal0,normal1;for("string"==typeof aliases&&(aliases=[aliases]),i=0;i<aliases.length;i++)normal0=normalizeName((alias=aliases[i].split("|"))[0]),normal1=normalizeName(alias[1]),links[normal0]=normal1,names[normal0]=alias[0],links[normal1]=normal0,names[normal1]=alias[1]}function loadData(data){addZone(data.zones),addLink(data.links),tz.dataVersion=data.version}function needsOffset(m){var isUnixTimestamp="X"===m._f||"x"===m._f;return!(!m._a||void 0!==m._tzm||isUnixTimestamp)}function logError(message){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(message)}function tz(input){var args=Array.prototype.slice.call(arguments,0,-1),name=arguments[arguments.length-1],zone=getZone(name),out=moment.utc.apply(null,args);return zone&&!moment.isMoment(input)&&needsOffset(out)&&out.add(zone.parse(out),"minutes"),out.tz(name),out}(major<2||2===major&&minor<6)&&logError("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+moment.version+". See momentjs.com"),Zone.prototype={_set:function(unpacked){this.name=unpacked.name,this.abbrs=unpacked.abbrs,this.untils=unpacked.untils,this.offsets=unpacked.offsets,this.population=unpacked.population},_index:function(timestamp){var i,target=+timestamp,untils=this.untils;for(i=0;i<untils.length;i++)if(target<untils[i])return i},parse:function(timestamp){var offset,offsetNext,offsetPrev,i,target=+timestamp,offsets=this.offsets,untils=this.untils,max=untils.length-1;for(i=0;i<max;i++)if(offset=offsets[i],offsetNext=offsets[i+1],offsetPrev=offsets[i?i-1:i],offset<offsetNext&&tz.moveAmbiguousForward?offset=offsetNext:offset>offsetPrev&&tz.moveInvalidForward&&(offset=offsetPrev),target<untils[i]-6e4*offset)return offsets[i];return offsets[max]},abbr:function(mom){return this.abbrs[this._index(mom)]},offset:function(mom){return logError("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(mom)]},utcOffset:function(mom){return this.offsets[this._index(mom)]}},ZoneScore.prototype.scoreOffsetAt=function(offsetAt){this.offsetScore+=Math.abs(this.zone.utcOffset(offsetAt.at)-offsetAt.offset),this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g,"")!==offsetAt.abbr&&this.abbrScore++},tz.version="0.5.17",tz.dataVersion="",tz._zones=zones,tz._links=links,tz._names=names,tz.add=addZone,tz.link=addLink,tz.load=loadData,tz.zone=getZone,tz.zoneExists=function zoneExists(name){return zoneExists.didShowError||(zoneExists.didShowError=!0,logError("moment.tz.zoneExists('"+name+"') has been deprecated in favor of !moment.tz.zone('"+name+"')")),!!getZone(name)},tz.guess=function(ignoreCache){return cachedGuess&&!ignoreCache||(cachedGuess=rebuildGuess()),cachedGuess},tz.names=function(){var i,out=[];for(i in names)names.hasOwnProperty(i)&&(zones[i]||zones[links[i]])&&names[i]&&out.push(names[i]);return out.sort()},tz.Zone=Zone,tz.unpack=unpack,tz.unpackBase60=unpackBase60,tz.needsOffset=needsOffset,tz.moveInvalidForward=!0,tz.moveAmbiguousForward=!1;var old,fn=moment.fn;function abbrWrap(old){return function(){return this._z?this._z.abbr(this):old.call(this)}}moment.tz=tz,moment.defaultZone=null,moment.updateOffset=function(mom,keepTime){var offset,zone=moment.defaultZone;void 0===mom._z&&(zone&&needsOffset(mom)&&!mom._isUTC&&(mom._d=moment.utc(mom._a)._d,mom.utc().add(zone.parse(mom),"minutes")),mom._z=zone),mom._z&&(offset=mom._z.utcOffset(mom),Math.abs(offset)<16&&(offset/=60),void 0!==mom.utcOffset?mom.utcOffset(-offset,keepTime):mom.zone(offset,keepTime))},fn.tz=function(name,keepTime){return name?(this._z=getZone(name),this._z?moment.updateOffset(this,keepTime):logError("Moment Timezone has no data for "+name+". See http://momentjs.com/timezone/docs/#/data-loading/."),this):this._z?this._z.name:void 0},fn.zoneName=abbrWrap(fn.zoneName),fn.zoneAbbr=abbrWrap(fn.zoneAbbr),fn.utc=(old=fn.utc,function(){return this._z=null,old.apply(this,arguments)}),moment.tz.setDefault=function(name){return(major<2||2===major&&minor<9)&&logError("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+moment.version+"."),moment.defaultZone=name?getZone(name):null,moment};var momentProperties=moment.momentProperties;return"[object Array]"===Object.prototype.toString.call(momentProperties)?(momentProperties.push("_z"),momentProperties.push("_a")):momentProperties&&(momentProperties._z=null),loadData({version:"2018e",zones:["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5","Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6","Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4","Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT -01 WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|012|-2le00 4i6N0","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3","America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0","America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0","America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0","America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0","America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0","America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0","America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0","America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4","America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2","America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT -04 -03|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|77e4","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2","America/Cuiaba|LMT -04 -03|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|54e4","America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|012342525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 XQp0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5","America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5","America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5","America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5","America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4","America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5","America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842","America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5","America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT -03 -02|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|20e6","America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80","Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25","Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4","Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0","Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4","Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4","Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|18e5","Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|25e4","Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5","Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4","Asia/Macau|LMT CST CDT|-7y.k -80 -90|012121212121212121212121212121212121212121|-2le80 1XO3u 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|+08 +09|-80 -90|010101010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BAu|29e5","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4","Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rb0 1ld0 14n0 1zd0 On0 1zd0 On0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4","Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4","Atlantic/South_Georgia|-02|20|0||30","Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4","Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","EST|EST|50|0|","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Etc/GMT-0|GMT|0|0|","Etc/GMT-1|+01|-10|0|","Pacific/Port_Moresby|+10|-a0|0||25e4","Pacific/Pohnpei|+11|-b0|0||34e3","Pacific/Tarawa|+12|-c0|0||29e3","Etc/GMT-13|+13|-d0|0|","Etc/GMT-14|+14|-e0|0|","Etc/GMT-2|+02|-20|0|","Etc/GMT-3|+03|-30|0|","Etc/GMT-4|+04|-40|0|","Etc/GMT-5|+05|-50|0|","Etc/GMT-6|+06|-60|0|","Indian/Christmas|+07|-70|0||21e2","Etc/GMT-8|+08|-80|0|","Pacific/Palau|+09|-90|0||21e3","Etc/GMT+1|-01|10|0|","Etc/GMT+10|-10|a0|0|","Etc/GMT+11|-11|b0|0|","Etc/GMT+12|-12|c0|0|","Etc/GMT+3|-03|30|0|","Etc/GMT+4|-04|40|0|","Etc/GMT+5|-05|50|0|","Etc/GMT+6|-06|60|0|","Etc/GMT+7|-07|70|0|","Etc/GMT+8|-08|80|0|","Etc/GMT+9|-09|90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5","Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3","Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4","HST|HST|a0|0|","Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Cocos|+0630|-6u|0||596","Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130","Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3","Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4","Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4","Pacific/Kwajalein|+11 -12 +12|-b0 c0 -c0|012|-AX0 W9X0|14e3","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","MST|MST|70|0|","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4","Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1","Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483","Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0|88e4","Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3","Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4","Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4","Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2","Pacific/Kosrae|+11 +12|-b0 -c0|010|-AX0 1bdz0|66e2","Pacific/Majuro|+11 +12|-b0 -c0|01|-AX0|28e3","Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2","Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3","Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2","Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4","Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56","Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4","Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00"],links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Curacao|America/Aruba","America/Curacao|America/Kralendijk","America/Curacao|America/Lower_Princes","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Cayman","America/Phoenix|US/Arizona","America/Port_of_Spain|America/Anguilla","America/Port_of_Spain|America/Antigua","America/Port_of_Spain|America/Dominica","America/Port_of_Spain|America/Grenada","America/Port_of_Spain|America/Guadeloupe","America/Port_of_Spain|America/Marigot","America/Port_of_Spain|America/Montserrat","America/Port_of_Spain|America/St_Barthelemy","America/Port_of_Spain|America/St_Kitts","America/Port_of_Spain|America/St_Lucia","America/Port_of_Spain|America/St_Thomas","America/Port_of_Spain|America/St_Vincent","America/Port_of_Spain|America/Tortola","America/Port_of_Spain|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/Reykjavik|Iceland","Atlantic/South_Georgia|Etc/GMT+2","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT-0|Etc/GMT","Etc/GMT-0|Etc/GMT+0","Etc/GMT-0|Etc/GMT0","Etc/GMT-0|Etc/Greenwich","Etc/GMT-0|GMT","Etc/GMT-0|GMT+0","Etc/GMT-0|GMT-0","Etc/GMT-0|GMT0","Etc/GMT-0|Greenwich","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Portugal","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Oslo|Arctic/Longyearbyen","Europe/Oslo|Atlantic/Jan_Mayen","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Christmas|Etc/GMT-7","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Palau|Etc/GMT-9","Pacific/Pohnpei|Etc/GMT-11","Pacific/Pohnpei|Pacific/Ponape","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tarawa|Etc/GMT-12","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"]}),moment}),function(){!function(){for(var lastTime=0,vendors=["ms","moz","webkit","o"],x=0;x<vendors.length&&!window.requestAnimationFrame;++x)window.requestAnimationFrame=window[vendors[x]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[vendors[x]+"CancelAnimationFrame"]||window[vendors[x]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(callback,element){var currTime=(new Date).getTime(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=window.setTimeout(function(){callback(currTime+timeToCall)},timeToCall);return lastTime=currTime+timeToCall,id}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(id){clearTimeout(id)})}(),window.Typewriter=function(element,options){return this._settings={cursorAnimationPaused:!1,opacityIncreasing:!1,currentOpacity:1,delayedQue:[],delayItemsCount:0,eventQue:[],calledEvents:[],eventRunning:!1,timeout:!1,delayExecution:!1,fps:.06,typingFrameCount:0,stringToTypeHTMLArray:[],currentTypedCharacters:[],typing:!1,usedIDs:[],charAmountToDelete:!1,userOptions:{},eventLoopRerun:0},element?"object"!=typeof options?console.error("Typewriter only accepts the options as an object."):(this._settings.userOptions=options,this.default_options={strings:!1,cursorClassName:"typewriter-cursor",cursor:"|",animateCursor:!0,blinkSpeed:50,typingSpeed:"natural",deleteSpeed:"natural",charSpanClassName:"typewriter-char",wrapperClassName:"typewriter-wrapper",loop:!1,autoStart:!1,devMode:!1},this.options=this._setupOptions(options),this.el=element,this._setupTypwriterWrapper(),this._startCursorAnimation(),void(!0===this.options.autoStart&&this.options.strings&&this.typeOutAllStrings())):console.error("Please choose an DOM element so that type writer can display itself.")};var TypewriterPrototype=window.Typewriter.prototype;TypewriterPrototype.stop=function(){return this._addToEventQue(this._stopEventLoop),this},TypewriterPrototype.start=function(){return this._startEventLoop(),this},TypewriterPrototype.rerun=function(){return this._addToEventQue(this._rerunCalledEvents),this},TypewriterPrototype.typeString=function(string){if(!string||"string"!=typeof string)return console.error("Please enter a string as the paramater.");var string_chars=this._getCharacters(string);return this._addToEventQue([this._typeCharacters,[string_chars]]),this},TypewriterPrototype.deleteAll=function(){return this._addToEventQue([this._deleteChars,["all"]]),this},TypewriterPrototype.deleteChars=function(amount){return this._addToEventQue([this._deleteChars,[amount]]),this},TypewriterPrototype.pauseFor=function(ms){return this._addToEventQue([this._pauseFor,[ms]]),this},TypewriterPrototype.typeOutAllStrings=function(){var characters_array=this._getStringsAsCharsArray();if(1===characters_array.length)this._typeCharacters(characters_array[0]);else for(var i=0,length=characters_array.length;i<length;i++)this._addToEventQue([this._typeCharacters,[characters_array[i]]]),this.pauseFor(this._randomInteger(1500,2500)),this.deleteAll(),this.pauseFor(this._randomInteger(1500,2500));return this},TypewriterPrototype.changeSettings=function(new_settings){return new_settings||"object"==typeof new_settings?(this._addToEventQue([this._changeSettings,[JSON.stringify(new_settings)]]),this):console.error("Typewriter will only accept an object as the settings.")},TypewriterPrototype.changeBlinkSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({blinkSpeed:new_speed}),this):console.error("Please enter a number for the new blink speed.")},TypewriterPrototype.changeTypingSpeed=function(new_speed){if(!new_speed&&"number"!=typeof new_speed)return console.error("Please enter a number for the new typing speed.");return this.changeSettings({typingSpeed:new_speed}),this},TypewriterPrototype.changeDeleteSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({changeDeleteSpeed:new_speed}),this):console.error("Please enter a number for the new delete speed.")},TypewriterPrototype._rerunCalledEvents=function(){this._settings.currentTypedCharacters.length>0?(this.deleteAll(),this._resetEventLoop("rerunCalledEvents")):(this._settings.eventQue=this._settings.calledEvents,this._settings.calledEvents=[],this.options=this._setupOptions(this._settings.userOptions),this._settings.usedIDs=[],this.charAmountToDelete=!1,this._startEventLoop())},TypewriterPrototype._deleteChars=function(amount){return amount&&(this._settings.charAmountToDelete=amount),this._deletingCharIdsAnimation=window.requestAnimationFrame(this._deletingCharAnimationFrame.bind(this)),this},TypewriterPrototype._pauseFor=function(ms){var self=this;self._settings.eventRunning=!0,setTimeout(function(){self._resetEventLoop("pauseFor")},ms)},TypewriterPrototype._changeSettings=function(new_settings){this.options=this._setupOptions(JSON.parse(new_settings[0])),this._resetEventLoop("changeSettings"),this.options.devMode&&console.log("New settings",this.options)},TypewriterPrototype._deletingCharAnimationFrame=function(){var self=this,delete_speed=this.options.deleteSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName,current_typed_char_ids=self._settings.currentTypedCharacters,char_amount_to_delete=self._settings.charAmountToDelete;if(!self._settings.charAmountToDelete||0===self._settings.charAmountToDelete||0===current_typed_char_ids)return self._resetEventLoop("deletingCharAnimationFrame"),!0;"natural"==delete_speed&&(delete_speed=self._randomInteger(50,150)),"all"==char_amount_to_delete&&(char_amount_to_delete=current_typed_char_ids.length,self._settings.charAmountToDelete=char_amount_to_delete),setTimeout(function(){if(self._settings.charAmountToDelete){var last_typed_char_index=current_typed_char_ids.length-1,get_last_typed_char=current_typed_char_ids[last_typed_char_index];self._settings.currentTypedCharacters.splice(last_typed_char_index,1);var char_to_delete_el=document.getElementById(get_last_typed_char);if(char_to_delete_el)self.el.querySelector("."+typewriter_wrapper_class_name).removeChild(char_to_delete_el),self._settings.charAmountToDelete=char_amount_to_delete-1,self.options.devMode&&console.log("Deleted char with ID",get_last_typed_char)}self._deletingCharIdsAnimation=window.requestAnimationFrame(self._deletingCharAnimationFrame.bind(self))},delete_speed)},TypewriterPrototype._setupOptions=function(new_options){var merged_options={};for(var attrname in this.default_options)merged_options[attrname]=this.default_options[attrname];if(this._settings.userOptions)for(var attrname in this._settings.userOptions)merged_options[attrname]=this._settings.userOptions[attrname];for(var attrname in new_options)merged_options[attrname]=new_options[attrname];return merged_options},TypewriterPrototype._addToEventQue=function(event){this._settings.eventQue.push(event),this._settings.eventQue.length>0&&!this._settings.eventRunning&&this.options.autoStart&&this._startEventLoop()},TypewriterPrototype._startEventLoop=function(){if(this.options.devMode&&console.log("Event loop started."),!this._settings.eventRunning){if(this._settings.eventQue.length>0){this.eventLoopRerun=0;var first_event=this._settings.eventQue[0];"function"==typeof first_event?(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event.call(this),this.options.devMode&&console.log("Event started.")):first_event instanceof Array&&"function"==typeof first_event[0]&&first_event[1]instanceof Array&&(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event[0].call(this,first_event[1]),this.options.devMode&&console.log("Event started."))}this._eventQueAnimation=window.requestAnimationFrame(this._startEventLoop.bind(this))}if(!this._settings.eventRunning&&this._settings.eventQue.length<=0){var self=this;return self._stopEventLoop(),void setTimeout(function(){self.options.loop&&(self.eventLoopRerun++,self.options.devMode&&console.log("Before Loop State",self._settings),self.eventLoopRerun>4?(console.error("Maximum amount of loop retries reached."),self._stopEventLoop()):(self.options.devMode&&console.log("Looping events."),self._rerunCalledEvents()))},1e3)}},TypewriterPrototype._resetEventLoop=function(name){var event_name=name||"Event";this._settings.eventRunning=!1,this._startEventLoop(),this.options.devMode&&console.log(event_name,"Finished")},TypewriterPrototype._stopEventLoop=function(){window.cancelAnimationFrame(this._eventQueAnimation),this.options.devMode&&console.log("Event loop stopped.")},TypewriterPrototype._setupTypwriterWrapper=function(){var typewriter_wrapper_class_name=this.options.wrapperClassName,typewriter_wrapper=document.createElement("span");typewriter_wrapper.className=typewriter_wrapper_class_name,this.el.innerHTML="",this.el.appendChild(typewriter_wrapper)},TypewriterPrototype._typeCharacters=function(characters_array){return this._settings.stringToTypeHTMLArray=this._convertCharsToHTML(characters_array),this._typingAnimation=window.requestAnimationFrame(this._typingAnimationFrame.bind(this,characters_array.length)),this},TypewriterPrototype._typingAnimationFrame=function(total_items){var self=this,typing_speed=this.options.typingSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName;if(0==self._settings.stringToTypeHTMLArray.length)return window.cancelAnimationFrame(self._typingAnimation),this._resetEventLoop("typingAnimationFrame"),!0;"natural"==typing_speed&&(typing_speed=this._randomInteger(50,150)),setTimeout(function(){self.el.innerHTML;var item_to_type=self._settings.stringToTypeHTMLArray[0];self.el.querySelector("."+typewriter_wrapper_class_name).appendChild(item_to_type.el),self._settings.currentTypedCharacters.push(item_to_type.id),self._settings.stringToTypeHTMLArray.splice(0,1),self._typingAnimation=window.requestAnimationFrame(self._typingAnimationFrame.bind(self,total_items)),self.options.devMode&&console.log("Typed",item_to_type)},typing_speed)},TypewriterPrototype._convertCharsToHTML=function(chars){for(var chars_html_wrap_array=[],char_class_name=this.options.charSpanClassName,chars_array=chars[0],i=0,length=chars_array.length;i<length;i++){var char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" typewriter-item-"+i,char_element.innerHTML=chars_array[i],chars_html_wrap_array.push({id:char_id,el:char_element})}return chars_html_wrap_array},TypewriterPrototype._getCharacters=function(string){return"string"==typeof string&&string.split("")},TypewriterPrototype._getStringsAsCharsArray=function(){var strings_array_check=this.options.strings instanceof Array,strings_string_check="string"==typeof this.options.strings;if(!strings_array_check)return strings_string_check?[this.options.strings.split("")]:console.error("Typewriter only accepts strings or an array of strings as the input.");for(var strings_chars_array=[],i=0,length=this.options.strings.length;i<length;i++){var string_chars=this._getCharacters(this.options.strings[i]);if(!string_chars){console.error("Please enter only strings.");break}strings_chars_array.push(string_chars)}return strings_chars_array},TypewriterPrototype._cursorAnimationFrame=function(){if(!this._settings.cursorAnimationPaused){var opacity_amount=.001*this.options.blinkSpeed,cursor_el=this.el.querySelector(".typewriter-cursor");1==this._settings.opacityIncreasing&&(this._settings.currentOpacity>=1&&(this._settings.opacityIncreasing=!1,this._settings.currentOpacity=1),this._settings.currentOpacity+=opacity_amount),0==this._settings.opacityIncreasing&&(this._settings.currentOpacity<=0&&(this._settings.opacityIncreasing=!0,this._settings.currentOpacity=0),this._settings.currentOpacity-=opacity_amount),cursor_el.style.opacity=this._settings.currentOpacity,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))}},TypewriterPrototype.appendText=function(text){return this._addToEventQue([this._appendText,[text]]),this},TypewriterPrototype._appendText=function(text){var char_class_name=this.options.charSpanClassName,char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" dom-appended",char_element.innerHTML=text;var items=[];items.push({id:char_id,el:char_element}),this._settings.stringToTypeHTMLArray=items,window.requestAnimationFrame(this._typingAnimationFrame.bind(this,1))},TypewriterPrototype._startCursorAnimation=function(){var cursor=this.options.cursor,cursor_class_name=this.options.cursorClassName,cursor_element=document.createElement("span");cursor_element.className=cursor_class_name,cursor_element.innerHTML=cursor,this.el.appendChild(cursor_element),this.options.animateCursor&&(this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this)))},TypewriterPrototype._pauseCursorAnimation=function(){this._settings.cursorAnimationPaused||(window.cancelAnimationFrame(this._cursorAnimation),this._settings.cursorAnimationPaused=!0)},TypewriterPrototype._restartCursorAnimation=function(){if(!this._settings.cursorAnimationPaused)return console.error("Cursor animation is already running.");this._settings.cursorAnimationPaused=!1,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))},TypewriterPrototype._randomInteger=function(min,max){return Math.floor(Math.random()*(max-min+1))+min},TypewriterPrototype._randomID=function(){for(var text="",possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",i=0;i<this._randomInteger(5,15);i++)text+=possible.charAt(Math.floor(Math.random()*possible.length));return text},TypewriterPrototype._generateUniqueID=function(){var temp_id=this._randomID();return-1==this._settings.usedIDs.indexOf(temp_id)?(this._settings.usedIDs.push(temp_id),temp_id):this._generateUniqueID.call(this)}}(),function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define("uikit",factory):global.UIkit=factory()}(this,function(){function bind(fn,context){return function(a){var l=arguments.length;return l?l>1?fn.apply(context,arguments):fn.call(context,a):fn.call(context)}}var hasOwnProperty=Object.prototype.hasOwnProperty;function hasOwn(obj,key){return hasOwnProperty.call(obj,key)}var hyphenateCache={},hyphenateRe=/([a-z\d])([A-Z])/g;function hyphenate(str){return str in hyphenateCache||(hyphenateCache[str]=str.replace(hyphenateRe,"$1-$2").toLowerCase()),hyphenateCache[str]}var camelizeRe=/-(\w)/g;function camelize(str){return str.replace(camelizeRe,toUpper)}function toUpper(_,c){return c?c.toUpperCase():""}function ucfirst(str){return str.length?toUpper(0,str.charAt(0))+str.slice(1):""}var strPrototype=String.prototype,startsWithFn=strPrototype.startsWith||function(search){return 0===this.lastIndexOf(search,0)};function startsWith(str,search){return startsWithFn.call(str,search)}var endsWithFn=strPrototype.endsWith||function(search){return this.substr(-search.length)===search};function endsWith(str,search){return endsWithFn.call(str,search)}var includesFn=function(search){return~this.indexOf(search)},includesStr=strPrototype.includes||includesFn,includesArray=Array.prototype.includes||includesFn;function includes(obj,search){return obj&&(isString(obj)?includesStr:includesArray).call(obj,search)}var isArray=Array.isArray;function isFunction(obj){return"function"==typeof obj}function isObject(obj){return null!==obj&&"object"==typeof obj}function isPlainObject(obj){return isObject(obj)&&Object.getPrototypeOf(obj)===Object.prototype}function isWindow(obj){return isObject(obj)&&obj===obj.window}function isDocument(obj){return isObject(obj)&&9===obj.nodeType}function isJQuery(obj){return isObject(obj)&&!!obj.jquery}function isNode(element){return element instanceof Node||isObject(element)&&1===element.nodeType}function isNodeCollection(element){return element instanceof NodeList||element instanceof HTMLCollection}function isBoolean(value){return"boolean"==typeof value}function isString(value){return"string"==typeof value}function isNumber(value){return"number"==typeof value}function isNumeric(value){return isNumber(value)||isString(value)&&!isNaN(value-parseFloat(value))}function isUndefined(value){return void 0===value}function toBoolean(value){return isBoolean(value)?value:"true"===value||"1"===value||""===value||"false"!==value&&"0"!==value&&value}function toNumber(value){var number=Number(value);return!isNaN(number)&&number}function toFloat(value){return parseFloat(value)||0}function toNode(element){return isNode(element)||isWindow(element)||isDocument(element)?element:isNodeCollection(element)||isJQuery(element)?element[0]:isArray(element)?toNode(element[0]):null}var arrayProto=Array.prototype;function toNodes(element){return isNode(element)?[element]:isNodeCollection(element)?arrayProto.slice.call(element):isArray(element)?element.map(toNode).filter(Boolean):isJQuery(element)?element.toArray():[]}function toList(value){return isArray(value)?value:isString(value)?value.split(/,(?![^(]*\))/).map(function(value){return isNumeric(value)?toNumber(value):toBoolean(value.trim())}):[value]}function toMs(time){return time?endsWith(time,"ms")?toFloat(time):1e3*toFloat(time):0}function swap(value,a,b){return value.replace(new RegExp(a+"|"+b,"mg"),function(match){return match===a?b:a})}var assign=Object.assign||function(target){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];target=Object(target);for(var i=0;i<args.length;i++){var source=args[i];if(null!==source)for(var key in source)hasOwn(source,key)&&(target[key]=source[key])}return target};function each(obj,cb){for(var key in obj)cb.call(obj[key],obj[key],key)}function sortBy(collection,prop){return collection.sort(function(a,b){return a[prop]>b[prop]?1:b[prop]>a[prop]?-1:0})}function clamp(number,min,max){return void 0===min&&(min=0),void 0===max&&(max=1),Math.min(Math.max(number,min),max)}function noop(){}function intersectRect(r1,r2){return r1.left<=r2.right&&r2.left<=r1.right&&r1.top<=r2.bottom&&r2.top<=r1.bottom}function pointInRect(point,rect){return intersectRect({top:point.y,bottom:point.y,left:point.x,right:point.x},rect)}var Dimensions={ratio:function(dimensions,prop,value){var obj,aProp="width"===prop?"height":"width";return(obj={})[aProp]=Math.round(value*dimensions[aProp]/dimensions[prop]),obj[prop]=value,obj},contain:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=assign({},dimensions),function(_,prop){return dimensions=dimensions[prop]>maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions},cover:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=this.contain(dimensions,maxDimensions),function(_,prop){return dimensions=dimensions[prop]<maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions}};function attr(element,name,value){if(isObject(name))for(var key in name)attr(element,key,name[key]);else{if(isUndefined(value))return(element=toNode(element))&&element.getAttribute(name);toNodes(element).forEach(function(element){isFunction(value)&&(value=value.call(element,attr(element,name))),null===value?removeAttr(element,name):element.setAttribute(name,value)})}}function hasAttr(element,name){return toNodes(element).some(function(element){return element.hasAttribute(name)})}function removeAttr(element,name){element=toNodes(element),name.split(" ").forEach(function(name){return element.forEach(function(element){return element.removeAttribute(name)})})}function filterAttr(element,attribute,pattern,replacement){attr(element,attribute,function(value){return value?value.replace(pattern,replacement):value})}function data(element,attribute){for(var i=0,attrs=[attribute,"data-"+attribute];i<attrs.length;i++)if(hasAttr(element,attrs[i]))return attr(element,attrs[i])}function query(selector,context){return toNode(selector)||find(selector,isContextSelector(selector)?context:document)}function queryAll(selector,context){var nodes=toNodes(selector);return nodes.length&&nodes||findAll(selector,isContextSelector(selector)?context:document)}function find(selector,context){return toNode(_query(selector,context,"querySelector"))}function findAll(selector,context){return toNodes(_query(selector,context,"querySelectorAll"))}function _query(selector,context,queryFn){if(void 0===context&&(context=document),!selector||!isString(selector))return null;var removes;isContextSelector(selector=selector.replace(contextSanitizeRe,"$1 *"))&&(removes=[],selector=selector.split(",").map(function(selector,i){var ctx=context;if("!"===(selector=selector.trim())[0]){var selectors=selector.substr(1).trim().split(" ");ctx=closest(context.parentNode,selectors[0]),selector=selectors.slice(1).join(" ").trim()}if("-"===selector[0]){var selectors$1=selector.substr(1).trim().split(" "),prev=(ctx||context).previousElementSibling;ctx=matches(prev,selector.substr(1))?prev:null,selector=selectors$1.slice(1).join(" ")}return ctx?(ctx.id||(ctx.id="uk-"+Date.now()+i,removes.push(function(){return removeAttr(ctx,"id")})),"#"+escape(ctx.id)+" "+selector):null}).filter(Boolean).join(","),context=document);try{return context[queryFn](selector)}catch(e){return null}finally{removes&&removes.forEach(function(remove){return remove()})}}var contextSelectorRe=/(^|,)\s*[!>+~-]/,contextSanitizeRe=/([!>+~-])(?=\s+[!>+~-]|\s*$)/g;function isContextSelector(selector){return isString(selector)&&selector.match(contextSelectorRe)}var elProto=Element.prototype,matchesFn=elProto.matches||elProto.webkitMatchesSelector||elProto.msMatchesSelector;function matches(element,selector){return toNodes(element).some(function(element){return matchesFn.call(element,selector)})}var closestFn=elProto.closest||function(selector){var ancestor=this;do{if(matches(ancestor,selector))return ancestor;ancestor=ancestor.parentNode}while(ancestor&&1===ancestor.nodeType)};function closest(element,selector){return startsWith(selector,">")&&(selector=selector.slice(1)),isNode(element)?element.parentNode&&closestFn.call(element,selector):toNodes(element).map(function(element){return element.parentNode&&closestFn.call(element,selector)}).filter(Boolean)}function parents(element,selector){for(var elements=[],parent=toNode(element).parentNode;parent&&1===parent.nodeType;)matches(parent,selector)&&elements.push(parent),parent=parent.parentNode;return elements}var escapeFn=window.CSS&&CSS.escape||function(css){return css.replace(/([^\x7f-\uFFFF\w-])/g,function(match){return"\\"+match})};function escape(css){return isString(css)?escapeFn.call(null,css):""}var voidElements={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function isVoidElement(element){return toNodes(element).some(function(element){return voidElements[element.tagName.toLowerCase()]})}function isVisible(element){return toNodes(element).some(function(element){return element.offsetWidth||element.offsetHeight||element.getClientRects().length})}var selInput="input,select,textarea,button";function isInput(element){return toNodes(element).some(function(element){return matches(element,selInput)})}function filter(element,selector){return toNodes(element).filter(function(element){return matches(element,selector)})}function within(element,selector){return isString(selector)?matches(element,selector)||closest(element,selector):element===selector||(isDocument(selector)?selector.documentElement:toNode(selector)).contains(toNode(element))}function on(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),target=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4];return target=toEventTarget(target),selector&&(listener=function(element,selector,listener){var this$1=this;return function(e){var target=e.target,current=">"===selector[0]?findAll(selector,element).reverse().filter(function(element){return within(target,element)})[0]:closest(target,selector);current&&(e.delegate=element,e.current=current,listener.call(this$1,e))}}(target,selector,listener)),listener.length>1&&(listener=function(listener){return function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)}}(listener)),type.split(" ").forEach(function(type){return target&&target.addEventListener(type,listener,useCapture)}),function(){return off(target,type,listener,useCapture)}}function off(target,type,listener,useCapture){void 0===useCapture&&(useCapture=!1),(target=toEventTarget(target))&&type.split(" ").forEach(function(type){return target.removeEventListener(type,listener,useCapture)})}function once(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),element=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4],condition=ref[5],off=on(element,type,selector,function(e){var result=!condition||condition(e);result&&(off(),listener(e,result))},useCapture);return off}function trigger(target,event,detail){return toEventTargets(target).reduce(function(notCanceled,target){return notCanceled&&target.dispatchEvent(createEvent(event,!0,!0,detail))},!0)}function createEvent(e,bubbles,cancelable,detail){if(void 0===bubbles&&(bubbles=!0),void 0===cancelable&&(cancelable=!1),isString(e)){var event=document.createEvent("CustomEvent");event.initCustomEvent(e,bubbles,cancelable,detail),e=event}return e}function getArgs(args){return isString(args[0])&&(args[0]=find(args[0])),isFunction(args[2])&&args.splice(2,0,!1),args}function isEventTarget(target){return"EventTarget"in window?target instanceof EventTarget:target&&"addEventListener"in target}function toEventTarget(target){return isEventTarget(target)?target:toNode(target)}function toEventTargets(target){return isEventTarget(target)?[target]:isArray(target)?target.map(toEventTarget).filter(Boolean):toNodes(target)}function preventClick(){var timer=setTimeout(once(document,"click",function(e){e.preventDefault(),e.stopImmediatePropagation(),clearTimeout(timer)},!0));trigger(document,"touchcancel")}var Promise$1="Promise"in window?window.Promise:PromiseFn,Deferred=function(){var this$1=this;this.promise=new Promise$1(function(resolve,reject){this$1.reject=reject,this$1.resolve=resolve})},PENDING=2,async="setImmediate"in window?setImmediate:setTimeout;function PromiseFn(executor){this.state=PENDING,this.value=void 0,this.deferred=[];var promise=this;try{executor(function(x){promise.resolve(x)},function(r){promise.reject(r)})}catch(e){promise.reject(e)}}PromiseFn.reject=function(r){return new PromiseFn(function(resolve,reject){reject(r)})},PromiseFn.resolve=function(x){return new PromiseFn(function(resolve,reject){resolve(x)})},PromiseFn.all=function(iterable){return new PromiseFn(function(resolve,reject){var result=[],count=0;function resolver(i){return function(x){result[i]=x,(count+=1)===iterable.length&&resolve(result)}}0===iterable.length&&resolve(result);for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolver(i),reject)})},PromiseFn.race=function(iterable){return new PromiseFn(function(resolve,reject){for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolve,reject)})};var p=PromiseFn.prototype;function ajax(url,options){return new Promise$1(function(resolve,reject){var env=assign({data:null,method:"GET",headers:{},xhr:new XMLHttpRequest,beforeSend:noop,responseType:""},options);env.beforeSend(env);var xhr=env.xhr;for(var prop in env)if(prop in xhr)try{xhr[prop]=env[prop]}catch(e){}for(var header in xhr.open(env.method.toUpperCase(),url),env.headers)xhr.setRequestHeader(header,env.headers[header]);on(xhr,"load",function(){0===xhr.status||xhr.status>=200&&xhr.status<300||304===xhr.status?resolve(xhr):reject(assign(Error(xhr.statusText),{xhr:xhr,status:xhr.status}))}),on(xhr,"error",function(){return reject(assign(Error("Network Error"),{xhr:xhr}))}),on(xhr,"timeout",function(){return reject(assign(Error("Network Timeout"),{xhr:xhr}))}),xhr.send(env.data)})}function getImage(src,srcset,sizes){return new Promise$1(function(resolve,reject){var img=new Image;img.onerror=reject,img.onload=function(){return resolve(img)},img.src=src,srcset&&(img.srcset=srcset),sizes&&(img.sizes=sizes)})}function isReady(){return"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll}function ready(fn){if(isReady())fn();else var handle=function(){unbind1(),unbind2(),fn()},unbind1=on(document,"DOMContentLoaded",handle),unbind2=on(window,"load",handle)}function index(element,ref){return ref?toNodes(element).indexOf(toNode(ref)):toNodes((element=toNode(element))&&element.parentNode.children).indexOf(element)}function getIndex(i,elements,current,finite){void 0===current&&(current=0),void 0===finite&&(finite=!1);var length=(elements=toNodes(elements)).length;return i=isNumeric(i)?toNumber(i):"next"===i?current+1:"previous"===i?current-1:index(elements,i),finite?clamp(i,0,length-1):(i%=length)<0?i+length:i}function empty(element){return(element=toNode(element)).innerHTML="",element}function html(parent,html){return parent=toNode(parent),isUndefined(html)?parent.innerHTML:append(parent.hasChildNodes()?empty(parent):parent,html)}function append(parent,element){return parent=toNode(parent),insertNodes(element,function(element){return parent.appendChild(element)})}function before(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.parentNode.insertBefore(element,ref)})}function after(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.nextSibling?before(ref.nextSibling,element):append(ref.parentNode,element)})}function insertNodes(element,fn){return(element=isString(element)?fragment(element):element)?"length"in element?toNodes(element).map(fn):fn(element):null}function remove(element){toNodes(element).map(function(element){return element.parentNode&&element.parentNode.removeChild(element)})}function wrapAll(element,structure){for(structure=toNode(before(element,structure));structure.firstChild;)structure=structure.firstChild;return append(structure,element),structure}function wrapInner(element,structure){return toNodes(toNodes(element).map(function(element){return element.hasChildNodes?wrapAll(toNodes(element.childNodes),structure):append(element,structure)}))}function unwrap(element){toNodes(element).map(function(element){return element.parentNode}).filter(function(value,index,self){return self.indexOf(value)===index}).forEach(function(parent){before(parent,parent.childNodes),remove(parent)})}p.resolve=function(x){var promise=this;if(promise.state===PENDING){if(x===promise)throw new TypeError("Promise settled with itself.");var called=!1;try{var then=x&&x.then;if(null!==x&&isObject(x)&&isFunction(then))return void then.call(x,function(x){called||promise.resolve(x),called=!0},function(r){called||promise.reject(r),called=!0})}catch(e){return void(called||promise.reject(e))}promise.state=0,promise.value=x,promise.notify()}},p.reject=function(reason){if(this.state===PENDING){if(reason===this)throw new TypeError("Promise settled with itself.");this.state=1,this.value=reason,this.notify()}},p.notify=function(){var this$1=this;async(function(){if(this$1.state!==PENDING)for(;this$1.deferred.length;){var ref=this$1.deferred.shift(),onResolved=ref[0],onRejected=ref[1],resolve=ref[2],reject=ref[3];try{0===this$1.state?isFunction(onResolved)?resolve(onResolved.call(void 0,this$1.value)):resolve(this$1.value):1===this$1.state&&(isFunction(onRejected)?resolve(onRejected.call(void 0,this$1.value)):reject(this$1.value))}catch(e){reject(e)}}})},p.then=function(onResolved,onRejected){var this$1=this;return new PromiseFn(function(resolve,reject){this$1.deferred.push([onResolved,onRejected,resolve,reject]),this$1.notify()})},p.catch=function(onRejected){return this.then(void 0,onRejected)};var fragmentRe=/^\s*<(\w+|!)[^>]*>/,singleTagRe=/^<(\w+)\s*\/?>(?:<\/\1>)?$/;function fragment(html){var matches=singleTagRe.exec(html);if(matches)return document.createElement(matches[1]);var container=document.createElement("div");return fragmentRe.test(html)?container.insertAdjacentHTML("beforeend",html.trim()):container.textContent=html,container.childNodes.length>1?toNodes(container.childNodes):container.firstChild}function apply(node,fn){if(node&&1===node.nodeType)for(fn(node),node=node.firstElementChild;node;)apply(node,fn),node=node.nextElementSibling}function addClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"add")}function removeClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"remove")}function removeClasses(element,cls){filterAttr(element,"class",new RegExp("(^|\\s)"+cls+"(?!\\S)","g"),"")}function replaceClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];args[0]&&removeClass(element,args[0]),args[1]&&addClass(element,args[1])}function hasClass(element,cls){return toNodes(element).some(function(element){return element.classList.contains(cls)})}function toggleClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];if(args.length){var force=isString((args=getArgs$1(args))[args.length-1])?[]:args.pop();args=args.filter(Boolean),toNodes(element).forEach(function(ref){for(var classList=ref.classList,i=0;i<args.length;i++)supports.Force?classList.toggle.apply(classList,[args[i]].concat(force)):classList[(isUndefined(force)?!classList.contains(args[i]):force)?"add":"remove"](args[i])})}}function apply$1(element,args,fn){(args=getArgs$1(args).filter(Boolean)).length&&toNodes(element).forEach(function(ref){var classList=ref.classList;supports.Multiple?classList[fn].apply(classList,args):args.forEach(function(cls){return classList[fn](cls)})})}function getArgs$1(args){return args.reduce(function(args,arg){return args.concat.call(args,isString(arg)&&includes(arg," ")?arg.trim().split(" "):arg)},[])}var list,supports={};(list=document.createElement("_").classList)&&(list.add("a","b"),list.toggle("c",!1),supports.Multiple=list.contains("b"),supports.Force=!list.contains("c")),list=null;var cssNumber={"animation-iteration-count":!0,"column-count":!0,"fill-opacity":!0,"flex-grow":!0,"flex-shrink":!0,"font-weight":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,widows:!0,"z-index":!0,zoom:!0};function css(element,property,value){return toNodes(element).map(function(element){if(isString(property)){if(property=propName(property),isUndefined(value))return getStyle(element,property);value||0===value?element.style[property]=isNumeric(value)&&!cssNumber[property]?value+"px":value:element.style.removeProperty(property)}else{if(isArray(property)){var styles=getStyles(element);return property.reduce(function(props,property){return props[property]=styles[propName(property)],props},{})}isObject(property)&&each(property,function(value,property){return css(element,property,value)})}return element})[0]}function getStyles(element,pseudoElt){return(element=toNode(element)).ownerDocument.defaultView.getComputedStyle(element,pseudoElt)}function getStyle(element,property,pseudoElt){return getStyles(element,pseudoElt)[property]}var vars={};function getCssVar(name){if(!(name in vars)){var element=append(document.documentElement,document.createElement("div"));addClass(element,"var-"+name);try{vars[name]=getStyle(element,"content",":before").replace(/^["'](.*)["']$/,"$1"),vars[name]=JSON.parse(vars[name])}catch(e){}document.documentElement.removeChild(element)}return vars[name]}var cssProps={};function propName(name){var ret=cssProps[name];return ret||(ret=cssProps[name]=function(name){if((name=hyphenate(name))in style)return name;var prefixedName,i=cssPrefixes.length;for(;i--;)if((prefixedName="-"+cssPrefixes[i]+"-"+name)in style)return prefixedName}(name)||name),ret}var cssPrefixes=["webkit","moz","ms"],style=document.createElement("_").style;function transition(element,props,duration,timing){return void 0===duration&&(duration=400),void 0===timing&&(timing="linear"),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){for(var name in props){var value=css(element,name);""===value&&css(element,name,value)}var timer=setTimeout(function(){return trigger(element,"transitionend")},duration);once(element,"transitionend transitioncanceled",function(ref){var type=ref.type;clearTimeout(timer),removeClass(element,"uk-transition"),css(element,{"transition-property":"","transition-duration":"","transition-timing-function":""}),"transitioncanceled"===type?reject():resolve()},!1,function(ref){var target=ref.target;return element===target}),addClass(element,"uk-transition"),css(element,assign({"transition-property":Object.keys(props).map(propName).join(","),"transition-duration":duration+"ms","transition-timing-function":timing},props))})}))}var Transition={start:transition,stop:function(element){return trigger(element,"transitionend"),Promise$1.resolve()},cancel:function(element){trigger(element,"transitioncanceled")},inProgress:function(element){return hasClass(element,"uk-transition")}},animationPrefix="uk-animation-",clsCancelAnimation="uk-cancel-animation";function animate(element,animation,duration,origin,out){var arguments$1=arguments;return void 0===duration&&(duration=200),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){if(hasClass(element,clsCancelAnimation))requestAnimationFrame(function(){return Promise$1.resolve().then(function(){return animate.apply(void 0,arguments$1).then(resolve,reject)})});else{var cls=animation+" "+animationPrefix+(out?"leave":"enter");startsWith(animation,animationPrefix)&&(origin&&(cls+=" uk-transform-origin-"+origin),out&&(cls+=" "+animationPrefix+"reverse")),reset(),once(element,"animationend animationcancel",function(ref){var hasReset=!1;"animationcancel"===ref.type?(reject(),reset()):(resolve(),Promise$1.resolve().then(function(){hasReset=!0,reset()})),requestAnimationFrame(function(){hasReset||(addClass(element,clsCancelAnimation),requestAnimationFrame(function(){return removeClass(element,clsCancelAnimation)}))})},!1,function(ref){var target=ref.target;return element===target}),css(element,"animationDuration",duration+"ms"),addClass(element,cls)}function reset(){css(element,"animationDuration",""),removeClasses(element,animationPrefix+"\\S*")}})}))}var inProgress=new RegExp(animationPrefix+"(enter|leave)"),Animation={in:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!1)},out:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!0)},inProgress:function(element){return inProgress.test(attr(element,"class"))},cancel:function(element){trigger(element,"animationcancel")}};function $(selector,context){return isString(selector)?isHtml(selector)?toNode(fragment(selector)):find(selector,context):toNode(selector)}function $$(selector,context){return isString(selector)?isHtml(selector)?toNodes(fragment(selector)):findAll(selector,context):toNodes(selector)}function isHtml(str){return"<"===str[0]||str.match(/^\s*</)}var dirs={width:["x","left","right"],height:["y","top","bottom"]};function positionAt(element,target,elAttach,targetAttach,elOffset,targetOffset,flip,boundary){elAttach=getPos(elAttach),targetAttach=getPos(targetAttach);var flipped={element:elAttach,target:targetAttach};if(!element||!target)return flipped;var dim=getDimensions(element),targetDim=getDimensions(target),position=targetDim;return moveTo(position,elAttach,dim,-1),moveTo(position,targetAttach,targetDim,1),elOffset=getOffsets(elOffset,dim.width,dim.height),targetOffset=getOffsets(targetOffset,targetDim.width,targetDim.height),elOffset.x+=targetOffset.x,elOffset.y+=targetOffset.y,position.left+=elOffset.x,position.top+=elOffset.y,boundary=getDimensions(boundary||window$1(element)),flip&&each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];if(!0===flip||includes(flip,dir)){var elemOffset=elAttach[dir]===align?-dim[prop]:elAttach[dir]===alignFlip?dim[prop]:0,targetOffset=targetAttach[dir]===align?targetDim[prop]:targetAttach[dir]===alignFlip?-targetDim[prop]:0;if(position[align]<boundary[align]||position[align]+dim[prop]>boundary[alignFlip]){var centerOffset=dim[prop]/2,centerTargetOffset="center"===targetAttach[dir]?-targetDim[prop]/2:0;"center"===elAttach[dir]&&(apply(centerOffset,centerTargetOffset)||apply(-centerOffset,-centerTargetOffset))||apply(elemOffset,targetOffset)}}function apply(elemOffset,targetOffset){var newVal=position[align]+elemOffset+targetOffset-2*elOffset[dir];if(newVal>=boundary[align]&&newVal+dim[prop]<=boundary[alignFlip])return position[align]=newVal,["element","target"].forEach(function(el){flipped[el][dir]=elemOffset?flipped[el][dir]===dirs[prop][1]?dirs[prop][2]:dirs[prop][1]:flipped[el][dir]}),!0}}),offset(element,position),flipped}function offset(element,coordinates){if(element=toNode(element),!coordinates)return getDimensions(element);var currentOffset=offset(element),pos=css(element,"position");["left","top"].forEach(function(prop){if(prop in coordinates){var value=css(element,prop);css(element,prop,coordinates[prop]-currentOffset[prop]+toFloat("absolute"===pos&&"auto"===value?position(element)[prop]:value))}})}function getDimensions(element){var style,hidden,ref=window$1(element=toNode(element)),top=ref.pageYOffset,left=ref.pageXOffset;if(isWindow(element)){var height=element.innerHeight,width=element.innerWidth;return{top:top,left:left,height:height,width:width,bottom:top+height,right:left+width}}isVisible(element)||(style=attr(element,"style"),hidden=attr(element,"hidden"),attr(element,{style:(style||"")+";display:block !important;",hidden:null}));var rect=element.getBoundingClientRect();return isUndefined(style)||attr(element,{style:style,hidden:hidden}),{height:rect.height,width:rect.width,top:rect.top+top,left:rect.left+left,bottom:rect.bottom+top,right:rect.right+left}}function position(element){var parent=function(element){var parent=toNode(element).offsetParent;for(;parent&&"static"===css(parent,"position");)parent=parent.offsetParent;return parent||docEl(element)}(element=toNode(element)),parentOffset=parent===docEl(element)?{top:0,left:0}:offset(parent),ref=["top","left"].reduce(function(props,prop){var propName$$1=ucfirst(prop);return props[prop]-=parentOffset[prop]+(toFloat(css(element,"margin"+propName$$1))||0)+(toFloat(css(parent,"border"+propName$$1+"Width"))||0),props},offset(element));return{top:ref.top,left:ref.left}}var height=dimension("height"),width=dimension("width");function dimension(prop){var propName$$1=ucfirst(prop);return function(element,value){if(element=toNode(element),isUndefined(value)){if(isWindow(element))return element["inner"+propName$$1];if(isDocument(element)){var doc=element.documentElement;return Math.max(doc["offset"+propName$$1],doc["scroll"+propName$$1])}return(value="auto"===(value=css(element,prop))?element["offset"+propName$$1]:toFloat(value)||0)-boxModelAdjust(prop,element)}css(element,prop,value||0===value?+value+boxModelAdjust(prop,element)+"px":"")}}function boxModelAdjust(prop,element){return"border-box"===css(element,"boxSizing")?dirs[prop].slice(1).map(ucfirst).reduce(function(value,prop){return value+toFloat(css(element,"padding"+prop))+toFloat(css(element,"border"+prop+"Width"))},0):0}function moveTo(position,attach,dim,factor){each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];attach[dir]===alignFlip?position[align]+=dim[prop]*factor:"center"===attach[dir]&&(position[align]+=dim[prop]*factor/2)})}function getPos(pos){var x=/left|center|right/,y=/top|center|bottom/;return 1===(pos=(pos||"").split(" ")).length&&(pos=x.test(pos[0])?pos.concat(["center"]):y.test(pos[0])?["center"].concat(pos):["center","center"]),{x:x.test(pos[0])?pos[0]:"center",y:y.test(pos[1])?pos[1]:"center"}}function getOffsets(offsets,width,height){var ref=(offsets||"").split(" "),x=ref[0],y=ref[1];return{x:x?toFloat(x)*(endsWith(x,"%")?width/100:1):0,y:y?toFloat(y)*(endsWith(y,"%")?height/100:1):0}}function flipPosition(pos){switch(pos){case"left":return"right";case"right":return"left";case"top":return"bottom";case"bottom":return"top";default:return pos}}function isInView(element,topOffset,leftOffset,relativeToViewport){if(void 0===topOffset&&(topOffset=0),void 0===leftOffset&&(leftOffset=0),!isVisible(element))return!1;var win=window$1(element=toNode(element));if(relativeToViewport)return intersectRect(element.getBoundingClientRect(),{top:-topOffset,left:-leftOffset,bottom:topOffset+height(win),right:leftOffset+width(win)});var ref=offsetPosition(element),elTop=ref[0],elLeft=ref[1],top=win.pageYOffset,left=win.pageXOffset;return intersectRect({top:elTop,left:elLeft,bottom:elTop+element.offsetHeight,right:elTop+element.offsetWidth},{top:top-topOffset,left:left-leftOffset,bottom:top+topOffset+height(win),right:left+leftOffset+width(win)})}function scrolledOver(element,heightOffset){if(void 0===heightOffset&&(heightOffset=0),!isVisible(element))return 0;var win=window$1(element=toNode(element)),doc=document$1(element),elHeight=element.offsetHeight+heightOffset,top=offsetPosition(element)[0],vp=height(win),vh=vp+Math.min(0,top-vp),diff=Math.max(0,vp-(height(doc)+heightOffset-(top+elHeight)));return clamp((vh+win.pageYOffset-top)/((vh+(elHeight-(diff<vp?diff:0)))/100)/100)}function offsetPosition(element){var offset=[0,0];do{if(offset[0]+=element.offsetTop,offset[1]+=element.offsetLeft,"fixed"===css(element,"position")){var win=window$1(element);return offset[0]+=win.pageYOffset,offset[1]+=win.pageXOffset,offset}}while(element=element.offsetParent);return offset}function window$1(element){return isWindow(element)?element:document$1(element).defaultView}function document$1(element){return toNode(element).ownerDocument}function docEl(element){return document$1(element).documentElement}var isRtl="rtl"===attr(document.documentElement,"dir"),hasTouchEvents="ontouchstart"in window,hasPointerEvents=window.PointerEvent,hasTouch=hasTouchEvents||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,pointerDown=hasTouch?"mousedown "+(hasTouchEvents?"touchstart":"pointerdown"):"mousedown",pointerMove=hasTouch?"mousemove "+(hasTouchEvents?"touchmove":"pointermove"):"mousemove",pointerUp=hasTouch?"mouseup "+(hasTouchEvents?"touchend":"pointerup"):"mouseup",pointerEnter=hasTouch&&hasPointerEvents?"pointerenter":"mouseenter",pointerLeave=hasTouch&&hasPointerEvents?"pointerleave":"mouseleave",fastdom={reads:[],writes:[],read:function(task){return this.reads.push(task),scheduleFlush(),task},write:function(task){return this.writes.push(task),scheduleFlush(),task},clear:function(task){return remove$1(this.reads,task)||remove$1(this.writes,task)},flush:function(){runTasks(this.reads),runTasks(this.writes.splice(0,this.writes.length)),this.scheduled=!1,(this.reads.length||this.writes.length)&&scheduleFlush()}};function scheduleFlush(){fastdom.scheduled||(fastdom.scheduled=!0,requestAnimationFrame(fastdom.flush.bind(fastdom)))}function runTasks(tasks){for(var task;task=tasks.shift();)task()}function remove$1(array,item){var index=array.indexOf(item);return!!~index&&!!array.splice(index,1)}function MouseTracker(){}function slope(a,b){return(b.y-a.y)/(b.x-a.x)}MouseTracker.prototype={positions:[],position:null,init:function(){var this$1=this;this.positions=[],this.position=null;var ticking=!1;this.unbind=on(document,"mousemove",function(e){ticking||(setTimeout(function(){var time=Date.now(),length=this$1.positions.length;length&&time-this$1.positions[length-1].time>100&&this$1.positions.splice(0,length),this$1.positions.push({time:time,x:e.pageX,y:e.pageY}),this$1.positions.length>5&&this$1.positions.shift(),ticking=!1},5),ticking=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(target){if(this.positions.length<2)return!1;var p=offset(target),position$$1=this.positions[this.positions.length-1],prevPos=this.positions[0];if(p.left<=position$$1.x&&position$$1.x<=p.right&&p.top<=position$$1.y&&position$$1.y<=p.bottom)return!1;var points=[[{x:p.left,y:p.top},{x:p.right,y:p.bottom}],[{x:p.right,y:p.top},{x:p.left,y:p.bottom}]];return p.right<=position$$1.x||(p.left>=position$$1.x?(points[0].reverse(),points[1].reverse()):p.bottom<=position$$1.y?points[0].reverse():p.top>=position$$1.y&&points[1].reverse()),!!points.reduce(function(result,point){return result+(slope(prevPos,point[0])<slope(position$$1,point[0])&&slope(prevPos,point[1])>slope(position$$1,point[1]))},0)}};var strats={};function mergeFnData(parentVal,childVal,vm){return strats.computed(isFunction(parentVal)?parentVal.call(vm,vm):parentVal,isFunction(childVal)?childVal.call(vm,vm):childVal)}strats.args=strats.events=strats.init=strats.created=strats.beforeConnect=strats.connected=strats.ready=strats.beforeDisconnect=strats.disconnected=strats.destroy=function(parentVal,childVal){return parentVal=parentVal&&!isArray(parentVal)?[parentVal]:parentVal,childVal?parentVal?parentVal.concat(childVal):isArray(childVal)?childVal:[childVal]:parentVal},strats.update=function(parentVal,childVal){return strats.args(parentVal,isFunction(childVal)?{read:childVal}:childVal)},strats.props=function(parentVal,childVal){return isArray(childVal)&&(childVal=childVal.reduce(function(value,key){return value[key]=String,value},{})),strats.methods(parentVal,childVal)},strats.computed=strats.methods=function(parentVal,childVal){return childVal?parentVal?assign({},parentVal,childVal):childVal:parentVal},strats.data=function(parentVal,childVal,vm){return vm?mergeFnData(parentVal,childVal,vm):childVal?parentVal?function(vm){return mergeFnData(parentVal,childVal,vm)}:childVal:parentVal};var defaultStrat=function(parentVal,childVal){return isUndefined(childVal)?parentVal:childVal};function mergeOptions(parent,child,vm){var options={};if(isFunction(child)&&(child=child.options),child.extends&&(parent=mergeOptions(parent,child.extends,vm)),child.mixins)for(var i=0,l=child.mixins.length;i<l;i++)parent=mergeOptions(parent,child.mixins[i],vm);for(var key in parent)mergeKey(key);for(var key$1 in child)hasOwn(parent,key$1)||mergeKey(key$1);function mergeKey(key){options[key]=(strats[key]||defaultStrat)(parent[key],child[key],vm)}return options}function parseOptions(options,args){var obj;void 0===args&&(args=[]);try{return options?startsWith(options,"{")?JSON.parse(options):args.length&&!includes(options,":")?((obj={})[args[0]]=options,obj):options.split(";").reduce(function(options,option){var ref=option.split(/:(.*)/),key=ref[0],value=ref[1];return key&&!isUndefined(value)&&(options[key.trim()]=value.trim()),options},{}):{}}catch(e){return{}}}var id=0,Player=function(el){this.id=++id,this.el=toNode(el)};function post(el,cmd){try{el.contentWindow.postMessage(JSON.stringify(assign({event:"command"},cmd)),"*")}catch(e){}}Player.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},Player.prototype.isHTML5=function(){return"VIDEO"===this.el.tagName},Player.prototype.isIFrame=function(){return"IFRAME"===this.el.tagName},Player.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/)},Player.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\.com\/video\/.*/)},Player.prototype.enableApi=function(){var this$1=this;if(this.ready)return this.ready;var poller,youtube=this.isYoutube(),vimeo=this.isVimeo();return youtube||vimeo?this.ready=new Promise$1(function(resolve){var cb;once(this$1.el,"load",function(){if(youtube){var listener=function(){return post(this$1.el,{event:"listening",id:this$1.id})};poller=setInterval(listener,100),listener()}}),(cb=function(data$$1){return youtube&&data$$1.id===this$1.id&&"onReady"===data$$1.event||vimeo&&Number(data$$1.player_id)===this$1.id},new Promise$1(function(resolve){once(window,"message",function(_,data$$1){return resolve(data$$1)},!1,function(ref){var data$$1=ref.data;if(data$$1&&isString(data$$1)){try{data$$1=JSON.parse(data$$1)}catch(e){return}return data$$1&&cb(data$$1)}})})).then(function(){resolve(),poller&&clearInterval(poller)}),attr(this$1.el,"src",this$1.el.src+(includes(this$1.el.src,"?")?"&":"?")+(youtube?"enablejsapi=1":"api=1&player_id="+this$1.id))}):Promise$1.resolve()},Player.prototype.play=function(){var this$1=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return post(this$1.el,{func:"playVideo",method:"play"})});else if(this.isHTML5())try{var promise=this.el.play();promise&&promise.catch(noop)}catch(e){}},Player.prototype.pause=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"pauseVideo",method:"pause"})}):this.isHTML5()&&this.el.pause())},Player.prototype.mute=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"mute",method:"setVolume",value:0})}):this.isHTML5()&&(this.el.muted=!0,attr(this.el,"muted","")))};var clickTimeout,swipeTimeout,tapTimeout,clicked,touch={};function cancelAll(){clickTimeout&&clearTimeout(clickTimeout),swipeTimeout&&clearTimeout(swipeTimeout),tapTimeout&&clearTimeout(tapTimeout),clickTimeout=swipeTimeout=tapTimeout=null,touch={}}ready(function(){on(document,"click",function(){return clicked=!0},!0),on(document,pointerDown,function(e){var target=e.target,ref=getPos$1(e),x=ref.x,y=ref.y,now=Date.now(),type=getType(e.type);touch.type&&touch.type!==type||(touch.el="tagName"in target?target:target.parentNode,clickTimeout&&clearTimeout(clickTimeout),touch.x1=x,touch.y1=y,touch.last&&now-touch.last<=250&&(touch={}),touch.type=type,touch.last=now,clicked=e.button>0)}),on(document,pointerMove,function(e){if(!e.defaultPrevented){var ref=getPos$1(e),x=ref.x,y=ref.y;touch.x2=x,touch.y2=y}}),on(document,pointerUp,function(ref){var type=ref.type,target=ref.target;touch.type===getType(type)&&(touch.x2&&Math.abs(touch.x1-touch.x2)>30||touch.y2&&Math.abs(touch.y1-touch.y2)>30?swipeTimeout=setTimeout(function(){var ref,x1,x2,y1,y2;touch.el&&(trigger(touch.el,"swipe"),trigger(touch.el,"swipe"+(x1=(ref=touch).x1,x2=ref.x2,y1=ref.y1,y2=ref.y2,Math.abs(x1-x2)>=Math.abs(y1-y2)?x1-x2>0?"Left":"Right":y1-y2>0?"Up":"Down"))),touch={}}):"last"in touch?(tapTimeout=setTimeout(function(){return trigger(touch.el,"tap")}),touch.el&&"mouseup"!==type&&within(target,touch.el)&&(clickTimeout=setTimeout(function(){clickTimeout=null,touch.el&&!clicked&&trigger(touch.el,"click"),touch={}},350))):touch={})}),on(document,"touchcancel",cancelAll),on(window,"scroll",cancelAll)});var touching=!1;function isTouch(e){return touching||"touch"===e.pointerType}function getPos$1(e){var touches=e.touches,changedTouches=e.changedTouches,ref=touches&&touches[0]||changedTouches&&changedTouches[0]||e;return{x:ref.pageX,y:ref.pageY}}function getType(type){return type.slice(0,5)}function getComponentName(attribute){return!(!startsWith(attribute,"uk-")&&!startsWith(attribute,"data-uk-"))&&camelize(attribute.replace("data-uk-","").replace("uk-",""))}on(document,"touchstart",function(){return touching=!0},!0),on(document,"click",function(){touching=!1}),on(document,"touchcancel",function(){return touching=!1},!0);var UIkit=function(options){this._init(options)};UIkit.util=Object.freeze({ajax:ajax,getImage:getImage,transition:transition,Transition:Transition,animate:animate,Animation:Animation,attr:attr,hasAttr:hasAttr,removeAttr:removeAttr,filterAttr:filterAttr,data:data,addClass:addClass,removeClass:removeClass,removeClasses:removeClasses,replaceClass:replaceClass,hasClass:hasClass,toggleClass:toggleClass,$:$,$$:$$,positionAt:positionAt,offset:offset,position:position,height:height,width:width,flipPosition:flipPosition,isInView:isInView,scrolledOver:scrolledOver,isReady:isReady,ready:ready,index:index,getIndex:getIndex,empty:empty,html:html,prepend:function(parent,element){return(parent=toNode(parent)).hasChildNodes()?insertNodes(element,function(element){return parent.insertBefore(element,parent.firstChild)}):append(parent,element)},append:append,before:before,after:after,remove:remove,wrapAll:wrapAll,wrapInner:wrapInner,unwrap:unwrap,fragment:fragment,apply:apply,isRtl:isRtl,hasTouch:hasTouch,pointerDown:pointerDown,pointerMove:pointerMove,pointerUp:pointerUp,pointerEnter:pointerEnter,pointerLeave:pointerLeave,on:on,off:off,once:once,trigger:trigger,createEvent:createEvent,toEventTargets:toEventTargets,preventClick:preventClick,fastdom:fastdom,isVoidElement:isVoidElement,isVisible:isVisible,selInput:selInput,isInput:isInput,filter:filter,within:within,bind:bind,hasOwn:hasOwn,hyphenate:hyphenate,camelize:camelize,ucfirst:ucfirst,startsWith:startsWith,endsWith:endsWith,includes:includes,isArray:isArray,isFunction:isFunction,isObject:isObject,isPlainObject:isPlainObject,isWindow:isWindow,isDocument:isDocument,isJQuery:isJQuery,isNode:isNode,isNodeCollection:isNodeCollection,isBoolean:isBoolean,isString:isString,isNumber:isNumber,isNumeric:isNumeric,isUndefined:isUndefined,toBoolean:toBoolean,toNumber:toNumber,toFloat:toFloat,toNode:toNode,toNodes:toNodes,toList:toList,toMs:toMs,swap:swap,assign:assign,each:each,sortBy:sortBy,clamp:clamp,noop:noop,intersectRect:intersectRect,pointInRect:pointInRect,Dimensions:Dimensions,MouseTracker:MouseTracker,mergeOptions:mergeOptions,parseOptions:parseOptions,Player:Player,Promise:Promise$1,Deferred:Deferred,query:query,queryAll:queryAll,find:find,findAll:findAll,matches:matches,closest:closest,parents:parents,escape:escape,css:css,getStyles:getStyles,getStyle:getStyle,getCssVar:getCssVar,propName:propName,isTouch:isTouch,getPos:getPos$1}),UIkit.data="__uikit__",UIkit.prefix="uk-",UIkit.options={},function(UIkit){var container,DATA=UIkit.data;function update(data$$1,e){if(data$$1)for(var name in data$$1)data$$1[name]._isReady&&data$$1[name]._callUpdate(e)}UIkit.use=function(plugin){if(!plugin.installed)return plugin.call(null,this),plugin.installed=!0,this},UIkit.mixin=function(mixin,component){component=(isString(component)?UIkit.component(component):component)||this,(mixin=mergeOptions({},mixin)).mixins=component.options.mixins,delete component.options.mixins,component.options=mergeOptions(mixin,component.options)},UIkit.extend=function(options){options=options||{};var Sub=function(options){this._init(options)};return(Sub.prototype=Object.create(this.prototype)).constructor=Sub,Sub.options=mergeOptions(this.options,options),Sub.super=this,Sub.extend=this.extend,Sub},UIkit.update=function(element,e){e=createEvent(e||"update"),function(element){for(var path=[];element&&element!==document.body&&element.parentNode;)element=element.parentNode,path.unshift(element);return path}(element=element?toNode(element):document.body).map(function(element){return update(element[DATA],e)}),apply(element,function(element){return update(element[DATA],e)})},Object.defineProperty(UIkit,"container",{get:function(){return container||document.body},set:function(element){container=$(element)}})}(UIkit),function(UIkit){UIkit.prototype._callHook=function(hook){var this$1=this,handlers=this.$options[hook];handlers&&handlers.forEach(function(handler){return handler.call(this$1)})},UIkit.prototype._callConnected=function(){var this$1=this;this._connected||(this._data={},this._initProps(),this._callHook("beforeConnect"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook("connected"),this._isReady||ready(function(){return this$1._callReady()}),this._callUpdate())},UIkit.prototype._callDisconnected=function(){this._connected&&(this._callHook("beforeDisconnect"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook("disconnected"),this._connected=!1)},UIkit.prototype._callReady=function(){this._isReady||(this._isReady=!0,this._callHook("ready"),this._resetComputeds(),this._callUpdate())},UIkit.prototype._callUpdate=function(e){var this$1=this,type=(e=createEvent(e||"update")).type;includes(["update","load","resize"],type)&&this._resetComputeds();var updates=this.$options.update,ref=this._frames,reads=ref.reads,writes=ref.writes;updates&&updates.forEach(function(ref,i){var read=ref.read,write=ref.write,events=ref.events;("update"===type||includes(events,type))&&(read&&!includes(fastdom.reads,reads[i])&&(reads[i]=fastdom.read(function(){var result=this$1._connected&&read.call(this$1,this$1._data,e);!1===result&&write?(fastdom.clear(writes[i]),delete writes[i]):isPlainObject(result)&&assign(this$1._data,result),delete reads[i]})),write&&!includes(fastdom.writes,writes[i])&&(writes[i]=fastdom.write(function(){this$1._connected&&write.call(this$1,this$1._data,e),delete writes[i]})))})}}(UIkit),function(UIkit){var uid=0;function getProps(opts,name){var data$$1={},args=opts.args;void 0===args&&(args=[]);var props=opts.props;void 0===props&&(props={});var el=opts.el;if(!props)return data$$1;for(var key in props){var prop=hyphenate(key);if(hasAttr(el,prop)){var value=coerce(props[key],attr(el,prop));if("target"===prop&&(!value||startsWith(value,"_")))continue;data$$1[key]=value}}var options=parseOptions(data(el,name),args);for(var key$1 in options){var prop$1=camelize(key$1);void 0!==props[prop$1]&&(data$$1[prop$1]=coerce(props[prop$1],options[key$1]))}return data$$1}function registerComputed(component,key,cb){Object.defineProperty(component,key,{enumerable:!0,get:function(){var _computeds=component._computeds,$props=component.$props,$el=component.$el;return hasOwn(_computeds,key)||(_computeds[key]=cb.call(component,$props,$el)),_computeds[key]},set:function(value){component._computeds[key]=value}})}function registerEvent(component,event,key){isPlainObject(event)||(event={name:key,handler:event});var listener,name=event.name,el=event.el,handler=event.handler,capture=event.capture,delegate=event.delegate,filter$$1=event.filter,self=event.self;el=isFunction(el)?el.call(component):el||component.$el,isArray(el)?el.forEach(function(el){return registerEvent(component,assign({},event,{el:el}),key)}):!el||filter$$1&&!filter$$1.call(component)||(listener=isString(handler)?component[handler]:bind(handler,component),handler=function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)},self&&(handler=function(handler){return function(e){if(e.target===e.currentTarget||e.target===e.current)return handler.call(null,e)}}(handler)),component._events.push(on(el,name,delegate?isString(delegate)?delegate:delegate.call(component):null,handler,capture)))}function notIn(options,key){return options.every(function(arr){return!arr||!hasOwn(arr,key)})}function coerce(type,value){return type===Boolean?toBoolean(value):type===Number?toNumber(value):"list"===type?toList(value):"media"===type?function(value){if(isString(value))if("@"===value[0]){var name="media-"+value.substr(1);value=toFloat(getCssVar(name))}else if(isNaN(value))return value;return!(!value||isNaN(value))&&"(min-width: "+value+"px)"}(value):type?type(value):value}UIkit.prototype._init=function(options){(options=options||{}).data=function(ref,ref$1){var data$$1=ref.data,args=(ref.el,ref$1.args),props=ref$1.props;if(void 0===props&&(props={}),data$$1=isArray(data$$1)?args&&args.length?data$$1.slice(0,args.length).reduce(function(data$$1,value,index$$1){return isPlainObject(value)?assign(data$$1,value):data$$1[args[index$$1]]=value,data$$1},{}):void 0:data$$1)for(var key in data$$1)isUndefined(data$$1[key])?delete data$$1[key]:data$$1[key]=props[key]?coerce(props[key],data$$1[key]):data$$1[key];return data$$1}(options,this.constructor.options),this.$options=mergeOptions(this.constructor.options,options,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=uid++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook("created"),options.el&&this.$mount(options.el)},UIkit.prototype._initData=function(){var data$$1=this.$options.data;for(var key in void 0===data$$1&&(data$$1={}),data$$1)this.$props[key]=this[key]=data$$1[key]},UIkit.prototype._initMethods=function(){var methods=this.$options.methods;if(methods)for(var key in methods)this[key]=bind(methods[key],this)},UIkit.prototype._initComputeds=function(){var computed=this.$options.computed;if(this._resetComputeds(),computed)for(var key in computed)registerComputed(this,key,computed[key])},UIkit.prototype._resetComputeds=function(){this._computeds={}},UIkit.prototype._initProps=function(props){var key;for(key in this._resetComputeds(),props=props||getProps(this.$options,this.$name))isUndefined(props[key])||(this.$props[key]=props[key]);var exclude=[this.$options.computed,this.$options.methods];for(key in this.$props)key in props&¬In(exclude,key)&&(this[key]=this.$props[key])},UIkit.prototype._initEvents=function(){var this$1=this,events=this.$options.events;events&&events.forEach(function(event){if(hasOwn(event,"handler"))registerEvent(this$1,event);else for(var key in event)registerEvent(this$1,event[key],key)})},UIkit.prototype._unbindEvents=function(){this._events.forEach(function(unbind){return unbind()}),this._events=[]},UIkit.prototype._initObserver=function(){var this$1=this,ref=this.$options,attrs=ref.attrs,props=ref.props,el=ref.el;!this._observer&&props&&attrs&&(attrs=isArray(attrs)?attrs:Object.keys(props).map(function(key){return hyphenate(key)}),this._observer=new MutationObserver(function(){var data$$1=getProps(this$1.$options,this$1.$name);attrs.some(function(key){return!isUndefined(data$$1[key])&&data$$1[key]!==this$1.$props[key]})&&this$1.$reset()}),this._observer.observe(el,{attributes:!0,attributeFilter:attrs.concat([this.$name,"data-"+this.$name])}))}}(UIkit),function(UIkit){var DATA=UIkit.data,components={};UIkit.component=function(name,options){if(!options)return isPlainObject(components[name])&&(components[name]=UIkit.extend(components[name])),components[name];UIkit[name]=function(element,data$$1){for(var i=arguments.length,argsArray=Array(i);i--;)argsArray[i]=arguments[i];var component=UIkit.component(name);return isPlainObject(element)?new component({data:element}):component.options.functional?new component({data:[].concat(argsArray)}):element&&element.nodeType?init(element):$$(element).map(init)[0];function init(element){var instance=UIkit.getComponent(element,name);if(instance){if(!data$$1)return instance;instance.$destroy()}return new component({el:element,data:data$$1})}};var opt=isPlainObject(options)?assign({},options):options.options;if(opt.name=name,opt.install&&opt.install(UIkit,opt,name),UIkit._initialized&&!opt.functional){var id=hyphenate(name);fastdom.read(function(){return UIkit[name]("[uk-"+id+"],[data-uk-"+id+"]")})}return components[name]=isPlainObject(options)?opt:options},UIkit.getComponents=function(element){return element&&element[DATA]||{}},UIkit.getComponent=function(element,name){return UIkit.getComponents(element)[name]},UIkit.connect=function(node){if(node[DATA])for(var name in node[DATA])node[DATA][name]._callConnected();for(var i=0;i<node.attributes.length;i++){var name$1=getComponentName(node.attributes[i].name);name$1&&name$1 in components&&UIkit[name$1](node)}},UIkit.disconnect=function(node){for(var name in node[DATA])node[DATA][name]._callDisconnected()}}(UIkit),function(UIkit){var DATA=UIkit.data;UIkit.prototype.$mount=function(el){var name=this.$options.name;el[DATA]||(el[DATA]={}),el[DATA][name]||(el[DATA][name]=this,this.$el=this.$options.el=this.$options.el||el,this._callHook("init"),within(el,document)&&this._callConnected())},UIkit.prototype.$emit=function(e){this._callUpdate(e)},UIkit.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},UIkit.prototype.$destroy=function(removeEl){void 0===removeEl&&(removeEl=!1);var ref=this.$options,el=ref.el,name=ref.name;el&&this._callDisconnected(),this._callHook("destroy"),el&&el[DATA]&&(delete el[DATA][name],Object.keys(el[DATA]).length||delete el[DATA],removeEl&&remove(this.$el))},UIkit.prototype.$create=function(component,element,data$$1){return UIkit[component](element,data$$1)},UIkit.prototype.$update=UIkit.update,UIkit.prototype.$getComponent=UIkit.getComponent;var names={};Object.defineProperties(UIkit.prototype,{$container:Object.getOwnPropertyDescriptor(UIkit,"container"),$name:{get:function(){var name=this.$options.name;return names[name]||(names[name]=UIkit.prefix+hyphenate(name)),names[name]}}})}(UIkit);var Class={connected:function(){addClass(this.$el,this.$name)}},Togglable={props:{cls:Boolean,animation:"list",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:"linear",queued:!1,initProps:{overflow:"",height:"",paddingTop:"",paddingBottom:"",marginTop:"",marginBottom:""},hideProps:{overflow:"hidden",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(ref){return!!ref.animation[0]},hasTransition:function(ref){var animation=ref.animation;return this.hasAnimation&&!0===animation[0]}},methods:{toggleElement:function(targets,show,animate$$1){var this$1=this;return new Promise$1(function(resolve){var p,all=function(targets){return Promise$1.all(targets.map(function(el){return this$1._toggleElement(el,show,animate$$1)}))},toggled=(targets=toNodes(targets)).filter(function(el){return this$1.isToggled(el)}),untoggled=targets.filter(function(el){return!includes(toggled,el)});if(this$1.queued&&isUndefined(animate$$1)&&isUndefined(show)&&this$1.hasAnimation&&!(targets.length<2)){var body=document.body,scroll=body.scrollTop,el=toggled[0],inProgress=Animation.inProgress(el)&&hasClass(el,"uk-animation-leave")||Transition.inProgress(el)&&"0px"===el.style.height;p=all(toggled),inProgress||(p=p.then(function(){var p=all(untoggled);return body.scrollTop=scroll,p}))}else p=all(untoggled.concat(toggled));p.then(resolve,noop)})},toggleNow:function(targets,show){var this$1=this;return new Promise$1(function(resolve){return Promise$1.all(toNodes(targets).map(function(el){return this$1._toggleElement(el,show,!1)})).then(resolve,noop)})},isToggled:function(el){var nodes=toNodes(el||this.$el);return this.cls?hasClass(nodes,this.cls.split(" ")[0]):!hasAttr(nodes,"hidden")},updateAria:function(el){!1===this.cls&&attr(el,"aria-hidden",!this.isToggled(el))},_toggleElement:function(el,show,animate$$1){var this$1=this;if(show=isBoolean(show)?show:Animation.inProgress(el)?hasClass(el,"uk-animation-leave"):Transition.inProgress(el)?"0px"===el.style.height:!this.isToggled(el),!trigger(el,"before"+(show?"show":"hide"),[this]))return Promise$1.reject();var promise=(!1!==animate$$1&&this.hasAnimation?this.hasTransition?this._toggleHeight:this._toggleAnimation:this._toggleImmediate)(el,show);return trigger(el,show?"show":"hide",[this]),promise.then(function(){trigger(el,show?"shown":"hidden",[this$1]),this$1.$update(el)})},_toggle:function(el,toggled){var changed;el&&(this.cls?(changed=includes(this.cls," ")||Boolean(toggled)!==hasClass(el,this.cls))&&toggleClass(el,this.cls,includes(this.cls," ")?void 0:toggled):(changed=Boolean(toggled)===hasAttr(el,"hidden"))&&attr(el,"hidden",toggled?null:""),$$("[autofocus]",el).some(function(el){return isVisible(el)&&(el.focus()||!0)}),this.updateAria(el),changed&&this.$update(el))},_toggleImmediate:function(el,show){return this._toggle(el,show),Promise$1.resolve()},_toggleHeight:function(el,show){var this$1=this,inProgress=Transition.inProgress(el),inner=el.hasChildNodes?toFloat(css(el.firstElementChild,"marginTop"))+toFloat(css(el.lastElementChild,"marginBottom")):0,currentHeight=isVisible(el)?height(el)+(inProgress?0:inner):0;Transition.cancel(el),this.isToggled(el)||this._toggle(el,!0),height(el,""),fastdom.flush();var endHeight=height(el)+(inProgress?0:inner);return height(el,currentHeight),(show?Transition.start(el,assign({},this.initProps,{overflow:"hidden",height:endHeight}),Math.round(this.duration*(1-currentHeight/endHeight)),this.transition):Transition.start(el,this.hideProps,Math.round(this.duration*(currentHeight/endHeight)),this.transition).then(function(){return this$1._toggle(el,!1)})).then(function(){return css(el,this$1.initProps)})},_toggleAnimation:function(el,show){var this$1=this;return Animation.cancel(el),show?(this._toggle(el,!0),Animation.in(el,this.animation[0],this.duration,this.origin)):Animation.out(el,this.animation[1]||this.animation[0],this.duration,this.origin).then(function(){return this$1._toggle(el,!1)})}}},Accordion={mixins:[Class,Togglable],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:"> *",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:"uk-open",toggle:"> .uk-accordion-title",content:"> .uk-accordion-content",transition:"ease"},computed:{items:function(ref,$el){return $$(ref.targets,$el)}},events:[{name:"click",delegate:function(){return this.targets+" "+this.$props.toggle},handler:function(e){e.preventDefault(),this.toggle(index($$(this.targets+" "+this.$props.toggle,this.$el),e.current))}}],connected:function(){if(!1!==this.active){var active=this.items[Number(this.active)];active&&!hasClass(active,this.clsOpen)&&this.toggle(active,!1)}},update:function(){var this$1=this;this.items.forEach(function(el){return this$1._toggleImmediate($(this$1.content,el),hasClass(el,this$1.clsOpen))});var active=!this.collapsible&&!hasClass(this.items,this.clsOpen)&&this.items[0];active&&this.toggle(active,!1)},methods:{toggle:function(item,animate$$1){var this$1=this,index$$1=getIndex(item,this.items),active=filter(this.items,"."+this.clsOpen);(item=this.items[index$$1])&&[item].concat(!this.multiple&&!includes(active,item)&&active||[]).forEach(function(el){var isItem=el===item,state=isItem&&!hasClass(el,this$1.clsOpen);if(state||!isItem||this$1.collapsible||!(active.length<2)){toggleClass(el,this$1.clsOpen,state);var content=el._wrapper?el._wrapper.firstElementChild:$(this$1.content,el);el._wrapper||(el._wrapper=wrapAll(content,"<div>"),attr(el._wrapper,"hidden",state?"":null)),this$1._toggleImmediate(content,!0),this$1.toggleElement(el._wrapper,state,animate$$1).then(function(){hasClass(el,this$1.clsOpen)===state&&(state||this$1._toggleImmediate(content,!1),el._wrapper=null,unwrap(content))})}})}}},Alert={attrs:!0,mixins:[Class,Togglable],args:"animation",props:{close:String},data:{animation:[!0],selClose:".uk-alert-close",duration:150,hideProps:assign({opacity:0},Togglable.data.hideProps)},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.close()}}],methods:{close:function(){var this$1=this;this.toggleElement(this.$el).then(function(){return this$1.$destroy(!0)})}}};function Core(UIkit){ready(function(){var scroll=0,started=0;if(on(window,"load resize",function(e){return UIkit.update(null,e)}),on(window,"scroll",function(e){e.dir=scroll<=window.pageYOffset?"down":"up",e.pageYOffset=scroll=window.pageYOffset,UIkit.update(null,e)},{capture:!0,passive:!1}),on(document,"animationstart",function(ref){var target=ref.target;(css(target,"animationName")||"").match(/^uk-.*(left|right)/)&&(started++,css(document.body,"overflowX","hidden"),setTimeout(function(){--started||css(document.body,"overflowX","")},toMs(css(target,"animationDuration"))+100))},!0),hasTouch){var cls="uk-hover";on(document,"tap",function(ref){var target=ref.target;return $$("."+cls).forEach(function(el){return!within(target,el)&&removeClass(el,cls)})}),Object.defineProperty(UIkit,"hoverSelector",{set:function(selector){on(document,"tap",selector,function(ref){return addClass(ref.current,cls)})}}),UIkit.hoverSelector=".uk-animation-toggle, .uk-transition-toggle, [uk-hover]"}})}var active,registered,Video={args:"autoplay",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(ref){return"inview"===ref.autoplay}},connected:function(){this.inView&&!hasAttr(this.$el,"preload")&&(this.$el.preload="none")},ready:function(){this.player=new Player(this.$el),this.automute&&this.player.mute()},update:[{read:function(_,ref){var type=ref.type;return!(!this.player||!("scroll"!==type&&"resize"!==type||this.inView))&&{visible:isVisible(this.$el)&&"hidden"!==css(this.$el,"visibility"),inView:this.inView&&isInView(this.$el)}},write:function(ref){var visible=ref.visible,inView=ref.inView;!visible||this.inView&&!inView?this.player.pause():(!0===this.autoplay||this.inView&&inView)&&this.player.play()},events:["load","resize","scroll"]}]},Cover={mixins:[Class,Video],props:{width:Number,height:Number},data:{automute:!0},update:{write:function(){var el=this.$el;if(isVisible(el)){var ref=el.parentNode,height$$1=ref.offsetHeight,width$$1=ref.offsetWidth;css(css(el,{width:"",height:""}),Dimensions.cover({width:this.width||el.clientWidth,height:this.height||el.clientHeight},{width:width$$1+(width$$1%2?1:0),height:height$$1+(height$$1%2?1:0)}))}},events:["load","resize"]},events:{loadedmetadata:function(){this.$emit()}}},Position={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:"bottom-"+(isRtl?"right":"left"),flip:!0,offset:!1,clsPos:""},computed:{pos:function(ref){var pos=ref.pos;return(pos+(includes(pos,"-")?"":"-center")).split("-")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(element,target,boundary){var node;removeClasses(element,this.clsPos+"-(top|bottom|left|right)(-[a-z]+)?"),css(element,{top:"",left:""});var offset$$1=this.offset;offset$$1=isNumeric(offset$$1)?offset$$1:(node=$(offset$$1))?offset(node)["x"===axis?"left":"top"]-offset(target)["x"===axis?"right":"bottom"]:0;var axis=this.getAxis(),ref$1=positionAt(element,target,"x"===axis?flipPosition(this.dir)+" "+this.align:this.align+" "+flipPosition(this.dir),"x"===axis?this.dir+" "+this.align:this.align+" "+this.dir,"x"===axis?""+("left"===this.dir?-offset$$1:offset$$1):" "+("top"===this.dir?-offset$$1:offset$$1),null,this.flip,boundary).target,x=ref$1.x,y=ref$1.y;this.dir="x"===axis?x:y,this.align="x"===axis?y:x,toggleClass(element,this.clsPos+"-"+this.dir+"-"+this.align,!1===this.offset)},getAxis:function(){return"top"===this.dir||"bottom"===this.dir?"y":"x"}}},Drop={mixins:[Position,Togglable],args:"pos",props:{mode:"list",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:["click","hover"],toggle:"- *",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:["uk-animation-fade"],cls:"uk-open"},computed:{boundary:function(ref,$el){return query(ref.boundary,$el)},clsDrop:function(ref){return ref.clsDrop||"uk-"+this.$options.name},clsPos:function(){return this.clsDrop}},init:function(){this.tracker=new MouseTracker},connected:function(){addClass(this.$el,this.clsDrop);var toggle=this.$props.toggle;this.toggle=toggle&&this.$create("toggle",query(toggle,this.$el),{target:this.$el,mode:this.mode}),this.updateAria(this.$el)},events:[{name:"click",delegate:function(){return"."+this.clsDrop+"-close"},handler:function(e){e.preventDefault(),this.hide(!1)}},{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(e){if(!e.defaultPrevented){var id=e.target.hash;id||e.preventDefault(),id&&within(id,this.$el)||this.hide(!1)}}},{name:"beforescroll",handler:function(){this.hide(!1)}},{name:"toggle",self:!0,handler:function(e,toggle){e.preventDefault(),this.isToggled()?this.hide(!1):this.show(toggle,!1)}},{name:pointerEnter,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||(active&&active!==this&&active.toggle&&includes(active.toggle.mode,"hover")&&!within(e.target,active.toggle.$el)&&!pointInRect({x:e.pageX,y:e.pageY},offset(active.$el))&&active.hide(!1),e.preventDefault(),this.show(this.toggle))}},{name:"toggleshow",handler:function(e,toggle){toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.show(toggle||this.toggle))}},{name:"togglehide "+pointerLeave,handler:function(e,toggle){isTouch(e)||toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.toggle&&includes(this.toggle.mode,"hover")&&this.hide())}},{name:"beforeshow",self:!0,handler:function(){this.clearTimers(),Animation.cancel(this.$el),this.position()}},{name:"show",self:!0,handler:function(){this.tracker.init(),this.toggle&&(addClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","true")),function(){if(registered)return;registered=!0,on(document,"click",function(ref){var prev,target=ref.target,defaultPrevented=ref.defaultPrevented;if(!defaultPrevented)for(;active&&active!==prev&&!within(target,active.$el)&&(!active.toggle||!within(target,active.toggle.$el));)prev=active,active.hide(!1)})}()}},{name:"beforehide",self:!0,handler:function(){this.clearTimers()}},{name:"hide",handler:function(ref){var target=ref.target;this.$el===target?(active=this.isActive()?null:active,this.toggle&&(removeClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","false"),this.toggle.$el.blur(),$$("a, button",this.toggle.$el).forEach(function(el){return el.blur()})),this.tracker.cancel()):active=null===active&&within(target,this.$el)&&this.isToggled()?this:active}}],update:{write:function(){this.isToggled()&&!Animation.inProgress(this.$el)&&this.position()},events:["resize"]},methods:{show:function(toggle,delay){var this$1=this;void 0===delay&&(delay=!0);var show=function(){return!this$1.isToggled()&&this$1.toggleElement(this$1.$el,!0)},tryShow=function(){if(this$1.toggle=toggle||this$1.toggle,this$1.clearTimers(),!this$1.isActive())if(delay&&active&&active!==this$1&&active.isDelaying)this$1.showTimer=setTimeout(this$1.show,10);else{if(this$1.isParentOf(active)){if(!active.hideTimer)return;active.hide(!1)}else if(active&&!this$1.isChildOf(active)&&!this$1.isParentOf(active))for(var prev;active&&active!==prev&&!this$1.isChildOf(active);)prev=active,active.hide(!1);delay&&this$1.delayShow?this$1.showTimer=setTimeout(show,this$1.delayShow):show(),active=this$1}};toggle&&this.toggle&&toggle.$el!==this.toggle.$el?(once(this.$el,"hide",tryShow),this.hide(!1)):tryShow()},hide:function(delay){var this$1=this;void 0===delay&&(delay=!0);var hide=function(){return this$1.toggleNow(this$1.$el,!1)};this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),delay&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):delay&&this.delayHide?this.hideTimer=setTimeout(hide,this.delayHide):hide()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return active===this},isChildOf:function(drop){return drop&&drop!==this&&within(this.$el,drop.$el)},isParentOf:function(drop){return drop&&drop!==this&&within(drop.$el,this.$el)},position:function(){removeClasses(this.$el,this.clsDrop+"-(stack|boundary)"),css(this.$el,{top:"",left:"",display:"block"}),toggleClass(this.$el,this.clsDrop+"-boundary",this.boundaryAlign);var boundary=offset(this.boundary),alignTo=this.boundaryAlign?boundary:offset(this.toggle.$el);if("justify"===this.align){var prop="y"===this.getAxis()?"width":"height";css(this.$el,prop,alignTo[prop])}else this.$el.offsetWidth>Math.max(boundary.right-alignTo.left,alignTo.right-boundary.left)&&addClass(this.$el,this.clsDrop+"-stack");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),css(this.$el,"display","")}}};var Dropdown={extends:Drop},FormCustom={mixins:[Class],args:"target",props:{target:Boolean},data:{target:!1},computed:{input:function(_,$el){return $(selInput,$el)},state:function(){return this.input.nextElementSibling},target:function(ref,$el){var target=ref.target;return target&&(!0===target&&this.input.parentNode===$el&&this.input.nextElementSibling||query(target,$el))}},update:function(){var target=this.target,input=this.input;if(target){var option,prop=isInput(target)?"value":"textContent",prev=target[prop],value=input.files&&input.files[0]?input.files[0].name:matches(input,"select")&&(option=$$("option",input).filter(function(el){return el.selected})[0])?option.textContent:input.value;prev!==value&&(target[prop]=value)}},events:[{name:"focusin focusout mouseenter mouseleave",delegate:selInput,handler:function(ref){var type=ref.type;ref.current===this.input&&toggleClass(this.state,"uk-"+(includes(type,"focus")?"focus":"hover"),includes(["focusin","mouseenter"],type))}},{name:"change",handler:function(){this.$emit()}}]},Gif={update:{read:function(data$$1){var inview=isInView(this.$el);if(!inview||data$$1.isInView===inview)return!1;data$$1.isInView=inview},write:function(){this.$el.src=this.$el.src},events:["scroll","load","resize"]}},Margin={props:{margin:String,firstColumn:Boolean},data:{margin:"uk-margin-small-top",firstColumn:"uk-first-column"},update:{read:function(data$$1){var items=this.$el.children;if(!items.length||!isVisible(this.$el))return data$$1.rows=[[]];data$$1.rows=getRows(items),data$$1.stacks=!data$$1.rows.some(function(row){return row.length>1})},write:function(ref){var this$1=this;ref.rows.forEach(function(row,i){return row.forEach(function(el,j){toggleClass(el,this$1.margin,0!==i),toggleClass(el,this$1.firstColumn,0===j)})})},events:["load","resize"]}};function getRows(items){for(var rows=[[]],i=0;i<items.length;i++){var el=items[i],dim=getOffset(el);if(dim.height)for(var j=rows.length-1;j>=0;j--){var row=rows[j];if(!row[0]){row.push(el);break}var leftDim=getOffset(row[0]);if(dim.top>=leftDim.bottom-1){rows.push([el]);break}if(dim.bottom>leftDim.top){if(dim.left<leftDim.left&&!isRtl){row.unshift(el);break}row.push(el);break}if(0===j){rows.unshift([el]);break}}}return rows}function getOffset(element){var offsetTop=element.offsetTop,offsetLeft=element.offsetLeft,offsetHeight=element.offsetHeight;return{top:offsetTop,left:offsetLeft,height:offsetHeight,bottom:offsetTop+offsetHeight}}var Grid={extends:Margin,mixins:[Class],attrs:!0,name:"grid",props:{masonry:Boolean,parallax:Number},data:{margin:"uk-grid-margin",clsStack:"uk-grid-stack",masonry:!1,parallax:0},computed:{parallax:function(ref){var parallax=ref.parallax;return Math.abs(parallax)}},connected:function(){this.masonry&&addClass(this.$el,"uk-flex-top uk-flex-wrap-top")},update:[{read:function(ref){var rows=ref.rows;(this.masonry||this.parallax)&&(rows=rows.map(function(elements){return sortBy(elements,"offsetLeft")}));var root,cls,nodes,node,translates=!1,elHeight=!1;if(this.masonry){var height$$1=0;translates=rows.reduce(function(translates,row,i){return translates[i]=row.map(function(_,j){return 0===i?0:toFloat(translates[i-1][j])+(height$$1-toFloat(rows[i-1][j]&&rows[i-1][j].offsetHeight))}),height$$1=row.reduce(function(height$$1,el){return Math.max(height$$1,el.offsetHeight)},0),translates},[]),elHeight=function(rows){return Math.max.apply(Math,rows.reduce(function(sum,row){return row.forEach(function(el,i){return sum[i]=(sum[i]||0)+el.offsetHeight}),sum},[]))}(rows)+(root=this.$el,cls=this.margin,nodes=toNodes(root.children),toFloat((node=nodes.filter(function(el){return hasClass(el,cls)})[0])?css(node,"marginTop"):css(nodes[0],"paddingLeft"))*(rows.length-1))}return{rows:rows,translates:translates,height:elHeight}},write:function(ref){var rows=ref.rows,stacks=ref.stacks,height$$1=ref.height;toggleClass(this.$el,this.clsStack,stacks),css(this.$el,"paddingBottom",this.parallax&&rows.some(function(row){return row.length>1})?this.parallax:""),height$$1&&css(this.$el,"minHeight",height$$1)},events:["load","resize"]},{read:function(ref){var rows=ref.rows,height$$1=ref.height;return{scrolled:!(!this.parallax||!rows.some(function(row){return row.length>1}))&&scrolledOver(this.$el,height$$1?height$$1-height(this.$el):0)*this.parallax}},write:function(ref){var rows=ref.rows,scrolled=ref.scrolled,translates=ref.translates;(!1!==scrolled||translates)&&rows.forEach(function(row,i){return row.forEach(function(el,j){return css(el,"transform",scrolled||translates?"translateY("+((translates&&-translates[i][j])+(scrolled?j%2?scrolled:scrolled/8:0))+"px)":"")})})},events:["scroll","load","resize"]}]};var HeightMatch={args:"target",props:{target:String,row:Boolean},data:{target:"> *",row:!0},computed:{elements:function(ref,$el){return $$(ref.target,$el)}},update:{read:function(){var this$1=this;return css(this.elements,{minHeight:"",boxSizing:""}),{rows:this.row?getRows(this.elements).map(function(elements){return this$1.match(elements)}):[this.match(this.elements)]}},write:function(ref){ref.rows.forEach(function(ref){var height$$1=ref.height;return css(ref.elements,{minHeight:height$$1,boxSizing:"border-box"})})},events:["load","resize"]},methods:{match:function(elements){if(elements.length<2)return{};var heights=[],max=0;return elements.forEach(function(el){var height$$1=offset(el).height;max=Math.max(max,height$$1),heights.push(height$$1)}),elements=elements.filter(function(el,i){return heights[i]<max}),{height:max,elements:elements}}}},HeightViewport={props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{write:function(){css(this.$el,"boxSizing","border-box");var minHeight,viewport=height(window),offsetTop=0;if(this.expand){css(this.$el,{height:"",minHeight:""});var diff=viewport-offsetHeight(document.documentElement);diff>0&&(minHeight=offsetHeight(this.$el)+diff)}else{var top=offset(this.$el).top;top<viewport/2&&this.offsetTop&&(offsetTop+=top),!0===this.offsetBottom?offsetTop+=offsetHeight(this.$el.nextElementSibling):isNumeric(this.offsetBottom)?offsetTop+=viewport/100*this.offsetBottom:this.offsetBottom&&endsWith(this.offsetBottom,"px")?offsetTop+=toFloat(this.offsetBottom):isString(this.offsetBottom)&&(offsetTop+=offsetHeight(query(this.offsetBottom,this.$el))),minHeight=offsetTop?"calc(100vh - "+offsetTop+"px)":"100vh"}if(minHeight){css(this.$el,{height:"",minHeight:minHeight});var elHeight=this.$el.offsetHeight;this.minHeight&&this.minHeight>elHeight&&css(this.$el,"minHeight",this.minHeight),viewport-offsetTop>=elHeight&&css(this.$el,"height",minHeight)}},events:["load","resize"]}};function offsetHeight(el){return el&&el.offsetHeight||0}var svgs={},SVG={attrs:!0,props:{id:String,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String},data:{ratio:1,id:!1,exclude:["ratio","src","icon"],class:""},connected:function(){var assign$$1,this$1=this;if(this.class+=" uk-svg",!this.icon&&includes(this.src,"#")){var parts=this.src.split("#");parts.length>1&&(assign$$1=parts,this.src=assign$$1[0],this.icon=assign$$1[1])}this.svg=this.getSvg().then(function(svg){var el;if(isString(svg)?(this$1.icon&&includes(svg,"<symbol")&&(svg=function(svg,icon){if(!symbols[svg]){var match;for(symbols[svg]={};match=symbolRe.exec(svg);)symbols[svg][match[3]]='<svg xmlns="http://www.w3.org/2000/svg"'+match[1]+"svg>";symbolRe.lastIndex=0}return symbols[svg][icon]}(svg,this$1.icon)||svg),el=$(svg.substr(svg.indexOf("<svg")))):el=svg.cloneNode(!0),!el)return Promise$1.reject("SVG not found.");var dimensions=attr(el,"viewBox");for(var prop in dimensions&&(dimensions=dimensions.split(" "),this$1.width=this$1.$props.width||dimensions[2],this$1.height=this$1.$props.height||dimensions[3]),this$1.width*=this$1.ratio,this$1.height*=this$1.ratio,this$1.$options.props)this$1[prop]&&!includes(this$1.exclude,prop)&&attr(el,prop,this$1[prop]);this$1.id||removeAttr(el,"id"),this$1.width&&!this$1.height&&removeAttr(el,"height"),this$1.height&&!this$1.width&&removeAttr(el,"width");var root=this$1.$el;if(isVoidElement(root)||"CANVAS"===root.tagName){attr(root,{hidden:!0,id:null});var next=root.nextElementSibling;next&&el.isEqualNode(next)?el=next:after(root,el)}else{var last=root.lastElementChild;last&&el.isEqualNode(last)?el=last:append(root,el)}return this$1.svgEl=el,el},noop)},disconnected:function(){var this$1=this;isVoidElement(this.$el)&&attr(this.$el,{hidden:null,id:this.id||null}),this.svg&&this.svg.then(function(svg){return(!this$1._connected||svg!==this$1.svgEl)&&remove(svg)},noop),this.svg=this.svgEl=null},methods:{getSvg:function(){var this$1=this;return this.src?svgs[this.src]?svgs[this.src]:(svgs[this.src]=new Promise$1(function(resolve,reject){startsWith(this$1.src,"data:")?resolve(decodeURIComponent(this$1.src.split(",")[1])):ajax(this$1.src).then(function(xhr){return resolve(xhr.response)},function(){return reject("SVG not found.")})}),svgs[this.src]):Promise$1.reject()}}},symbolRe=/<symbol(.*?id=(['"])(.*?)\2[^]*?<\/)symbol>/g,symbols={};var parsed={},icons={spinner:'<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" cx="15" cy="15" r="14"/></svg>',totop:'<svg width="18" height="10" viewBox="0 0 18 10" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 9 9 1 17 9 "/></svg>',marker:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="9" y="4" width="1" height="11"/><rect x="4" y="9" width="11" height="1"/></svg>',"close-icon":'<svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.1" x1="1" y1="1" x2="13" y2="13"/><line fill="none" stroke="#000" stroke-width="1.1" x1="13" y1="1" x2="1" y2="13"/></svg>',"close-large":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.4" x1="1" y1="1" x2="19" y2="19"/><line fill="none" stroke="#000" stroke-width="1.4" x1="19" y1="1" x2="1" y2="19"/></svg>',"navbar-toggle-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect y="9" width="20" height="2"/><rect y="3" width="20" height="2"/><rect y="15" width="20" height="2"/></svg>',"overlay-icon":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><rect x="19" y="0" width="1" height="40"/><rect x="0" y="19" width="40" height="1"/></svg>',"pagination-next":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 1 6 6 1 11"/></svg>',"pagination-previous":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="6 1 1 6 6 11"/></svg>',"search-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9" cy="9" r="7"/><path fill="none" stroke="#000" stroke-width="1.1" d="M14,14 L18,18 L14,14 Z"/></svg>',"search-large":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.8" cx="17.5" cy="17.5" r="16.5"/><line fill="none" stroke="#000" stroke-width="1.8" x1="38" y1="39" x2="29" y2="30"/></svg>',"search-navbar":'<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10.5" cy="10.5" r="9.5"/><line fill="none" stroke="#000" stroke-width="1.1" x1="23" y1="23" x2="17" y2="17"/></svg>',"slidenav-next":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="1.225,23 12.775,12 1.225,1 "/></svg>',"slidenav-next-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="4.002,38.547 22.527,20.024 4,1.5 "/></svg>',"slidenav-previous":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="12.775,1 1.225,12 12.775,23 "/></svg>',"slidenav-previous-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="20.527,1.5 2,20.024 20.525,38.547 "/></svg>'},Icon={install:function(UIkit){UIkit.icon.add=function(name,svg){var obj,added=isString(name)?((obj={})[name]=svg,obj):name;each(added,function(svg,name){icons[name]=svg,delete parsed[name]}),UIkit._initialized&&apply(document.body,function(el){return each(UIkit.getComponents(el),function(cmp){return cmp.$options.isIcon&&cmp.icon in added&&cmp.$reset()})})}},attrs:["icon","ratio"],mixins:[Class,SVG],args:"icon",props:["icon"],data:{exclude:["id","style","class","src","icon","ratio"]},isIcon:!0,connected:function(){addClass(this.$el,"uk-icon")},methods:{getSvg:function(){var icon=function(icon){if(!icons[icon])return null;parsed[icon]||(parsed[icon]=$(icons[icon].trim()));return parsed[icon]}(function(icon){return isRtl?swap(swap(icon,"left","right"),"previous","next"):icon}(this.icon));return icon?Promise$1.resolve(icon):Promise$1.reject("Icon not found.")}}},IconComponent={extends:Icon,data:function(vm){return{icon:hyphenate(vm.constructor.options.name)}}},Slidenav={extends:IconComponent,connected:function(){addClass(this.$el,"uk-slidenav")},computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-slidenav-large")?icon+"-large":icon}}},Search={extends:IconComponent,computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-search-icon")&&parents($el,".uk-search-large").length?"search-large":parents($el,".uk-search-navbar").length?"search-navbar":icon}}},Close={extends:IconComponent,computed:{icon:function(){return"close-"+(hasClass(this.$el,"uk-close-large")?"large":"icon")}}},Spinner={extends:IconComponent,connected:function(){var this$1=this;this.svg.then(function(svg){return 1!==this$1.ratio&&css($("circle",svg),"strokeWidth",1/this$1.ratio)},noop)}};var Img={attrs:!0,props:{dataSrc:String,dataSrcset:Boolean,dataSizes:Boolean,sizes:String,width:Number,height:Number,dataWidth:Number,dataHeight:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:"",dataSrcset:!1,dataSizes:!1,sizes:!1,width:!1,height:!1,offsetTop:"50vh",offsetLeft:0,target:!1},computed:{cacheKey:function(ref){var dataSrc=ref.dataSrc;return this.$name+"."+dataSrc},width:function(ref){var width$$1=ref.width,dataWidth=ref.dataWidth;return width$$1||dataWidth},height:function(ref){var height$$1=ref.height,dataHeight=ref.dataHeight;return height$$1||dataHeight},sizes:function(ref){var sizes=ref.sizes,dataSizes=ref.dataSizes;return sizes||dataSizes},isImg:function(_,$el){return isImg($el)},target:function(ref){var target=ref.target;return[this.$el].concat(queryAll(target,this.$el))},offsetTop:function(ref){return toPx(ref.offsetTop,"height")},offsetLeft:function(ref){return toPx(ref.offsetLeft,"width")}},connected:function(){storage[this.cacheKey]?setSrcAttrs(this.$el,storage[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&setSrcAttrs(this.$el,function(width$$1,height$$1,sizes,color){var assign$$1;void 0===color&&(color="transparent");if(sizes){for(var matches$$1;matches$$1=sizesRe.exec(sizes);)if(!matches$$1[1]||window.matchMedia(matches$$1[1]).matches){size=matches$$1[2],matches$$1=startsWith(size,"calc")?size.substring(5,size.length-1).replace(sizeRe,function(size){return toPx(size)}).replace(/ /g,"").match(additionRe).reduce(function(a,b){return a+ +b},0):size;break}sizesRe.lastIndex=0,assign$$1=Dimensions.ratio({width:width$$1,height:height$$1},"width",toPx(matches$$1||"100vw")),width$$1=assign$$1.width,height$$1=assign$$1.height}var size;var key=width$$1+"."+height$$1+"."+color;if(urlCache[key])return urlCache[key];var canvas=fragment("<canvas>");canvas.width=width$$1,canvas.height=height$$1;var context=canvas.getContext("2d");return context.fillStyle=color,context.fillRect(0,0,width$$1,height$$1),urlCache[key]=canvas.toDataURL("image/png")}(this.width,this.height,this.sizes))},update:[{read:function(ref){var this$1=this,delay=ref.delay,image=ref.image;if(delay){if(!image&&this.target.some(function(el){return isInView(el,this$1.offsetTop,this$1.offsetLeft,!0)}))return{image:getImage(this.dataSrc,this.dataSrcset,this.sizes).then(function(img){return setSrcAttrs(this$1.$el,currentSrc(img),img.srcset,img.sizes),storage[this$1.cacheKey]=currentSrc(img),img},noop)};!this.isImg&&image&&image.then(function(img){return img&&setSrcAttrs(this$1.$el,currentSrc(img))})}},write:function(data$$1){if(!data$$1.delay)return this.$emit(),data$$1.delay=!0},events:["scroll","load","resize"]}]};function setSrcAttrs(el,src,srcset,sizes){isImg(el)?(src&&(el.src=src),srcset&&(el.srcset=srcset),sizes&&(el.sizes=sizes)):src&&css(el,"backgroundImage","url("+src+")")}var urlCache={},sizesRe=/\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;var sizeRe=/\d+(?:\w+|%)/g,additionRe=/[+-]?(\d+)/g;function toPx(value,property,element){return void 0===property&&(property="width"),void 0===element&&(element=window),isNumeric(value)?+value:endsWith(value,"vw")?percent(element,"width",value):endsWith(value,"vh")?percent(element,"height",value):endsWith(value,"%")?percent(element,property,value):toFloat(value)}var dimensions={height:height,width:width};function percent(element,property,value){return dimensions[property](element)*toFloat(value)/100}function isImg(el){return"IMG"===el.tagName}function currentSrc(el){return el.currentSrc||el.src}var storage;try{(storage=window.sessionStorage||{}).__test__=1,delete storage.__test__}catch(e){storage={}}var active$1,events,Leader={mixins:[Class],props:{fill:String,media:"media"},data:{fill:"",media:!1,clsWrapper:"uk-leader-fill",clsHide:"uk-leader-hide",attrFill:"data-fill"},computed:{fill:function(ref){return ref.fill||getCssVar("leader-fill")}},connected:function(){var assign$$1;assign$$1=wrapInner(this.$el,'<span class="'+this.clsWrapper+'">'),this.wrapper=assign$$1[0]},disconnected:function(){unwrap(this.wrapper.childNodes)},update:[{read:function(ref){var changed=ref.changed,width$$1=ref.width,prev=width$$1;return{width:width$$1=Math.floor(this.$el.offsetWidth/2),changed:changed||prev!==width$$1,hide:this.media&&!window.matchMedia(this.media).matches}},write:function(data$$1){toggleClass(this.wrapper,this.clsHide,data$$1.hide),data$$1.changed&&(data$$1.changed=!1,attr(this.wrapper,this.attrFill,new Array(data$$1.width).join(this.fill)))},events:["load","resize"]}]},Container={props:{container:Boolean},data:{container:!0},computed:{container:function(ref){var container=ref.container;return!0===container&&this.$container||container&&$(container)}}},Modal={mixins:[Class,Container,Togglable],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:"uk-open",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(ref,$el){return $(ref.selPanel,$el)},transitionElement:function(){return this.panel},transitionDuration:function(){return toMs(css(this.transitionElement,"transitionDuration"))},bgClose:function(ref){return ref.bgClose&&this.panel}},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.hide()}},{name:"toggle",self:!0,handler:function(e){e.defaultPrevented||(e.preventDefault(),this.toggle())}},{name:"beforeshow",self:!0,handler:function(e){var prev=active$1&&active$1!==this&&active$1;if(active$1=this,prev){if(!this.stack)return prev.hide().then(this.show),void e.preventDefault();this.prev=prev}!function(){if(events)return;events=[on(document,"click",function(ref){var target=ref.target,defaultPrevented=ref.defaultPrevented;!active$1||!active$1.bgClose||defaultPrevented||active$1.overlay&&!within(target,active$1.$el)||within(target,active$1.panel)||active$1.hide()}),on(document,"keydown",function(e){27===e.keyCode&&active$1&&active$1.escClose&&(e.preventDefault(),active$1.hide())})]}()}},{name:"beforehide",self:!0,handler:function(){(active$1=active$1&&active$1!==this&&active$1||this.prev)||(events&&events.forEach(function(unbind){return unbind()}),events=null)}},{name:"show",self:!0,handler:function(){hasClass(document.documentElement,this.clsPage)||(this.scrollbarWidth=width(window)-width(document),css(document.body,"overflowY",this.scrollbarWidth&&this.overlay?"scroll":"")),addClass(document.documentElement,this.clsPage)}},{name:"hidden",self:!0,handler:function(){for(var found,prev=this.prev;prev;){if(prev.clsPage===this.clsPage){found=!0;break}prev=prev.prev}found||removeClass(document.documentElement,this.clsPage),!this.prev&&css(document.body,"overflowY","")}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){return this.isToggled()?Promise$1.resolve():(this.container&&this.$el.parentNode!==this.container&&(append(this.container,this.$el),this._callConnected()),this.toggleNow(this.$el,!0))},hide:function(){return this.isToggled()?this.toggleNow(this.$el,!1):Promise$1.resolve()},getActive:function(){return active$1},_toggleImmediate:function(el,show){var this$1=this;return new Promise$1(function(resolve){return requestAnimationFrame(function(){this$1._toggle(el,show),this$1.transitionDuration?once(this$1.transitionElement,"transitionend",resolve,!1,function(e){return e.target===this$1.transitionElement}):resolve()})})}}};var Modal$1={install:function(UIkit){UIkit.modal.dialog=function(content,options){var dialog=UIkit.modal(' <div class="uk-modal"> <div class="uk-modal-dialog">'+content+"</div> </div> ",options);return dialog.show(),on(dialog.$el,"hidden",function(ref){var target=ref.target,currentTarget=ref.currentTarget;target===currentTarget&&dialog.$destroy(!0)}),dialog},UIkit.modal.alert=function(message,options){return options=assign({bgClose:!1,escClose:!1,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){return on(UIkit.modal.dialog(' <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-primary uk-modal-close" autofocus>'+options.labels.ok+"</button> </div> ",options).$el,"hide",resolve)})},UIkit.modal.confirm=function(message,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve,reject){var confirm=UIkit.modal.dialog(' <form> <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary" autofocus>'+options.labels.ok+"</button> </div> </form> ",options),resolved=!1;on(confirm.$el,"submit","form",function(e){e.preventDefault(),resolve(),resolved=!0,confirm.hide()}),on(confirm.$el,"hide",function(){resolved||reject()})})},UIkit.modal.prompt=function(message,value,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){var prompt=UIkit.modal.dialog(' <form class="uk-form-stacked"> <div class="uk-modal-body"> <label>'+(isString(message)?message:html(message))+'</label> <input class="uk-input" autofocus> </div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary">'+options.labels.ok+"</button> </div> </form> ",options),input=$("input",prompt.$el);input.value=value;var resolved=!1;on(prompt.$el,"submit","form",function(e){e.preventDefault(),resolve(input.value),resolved=!0,prompt.hide()}),on(prompt.$el,"hide",function(){resolved||resolve(null)})})},UIkit.modal.labels={ok:"Ok",cancel:"Cancel"}},mixins:[Modal],data:{clsPage:"uk-modal-page",selPanel:".uk-modal-dialog",selClose:".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full"},events:[{name:"show",self:!0,handler:function(){hasClass(this.panel,"uk-margin-auto-vertical")?addClass(this.$el,"uk-flex"):css(this.$el,"display","block"),height(this.$el)}},{name:"hidden",self:!0,handler:function(){css(this.$el,"display",""),removeClass(this.$el,"uk-flex")}}]};var scroll,Nav={extends:Accordion,data:{targets:"> .uk-parent",toggle:"> a",content:"> ul"}},Navbar={mixins:[Class],props:{dropdown:String,mode:"list",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:".uk-navbar-nav > li",align:isRtl?"right":"left",clsDrop:"uk-navbar-dropdown",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:"x",boundary:!0,dropbar:!1,dropbarMode:"slide",dropbarAnchor:!1,duration:200},computed:{boundary:function(ref,$el){var boundary=ref.boundary,boundaryAlign=ref.boundaryAlign;return!0===boundary||boundaryAlign?$el:boundary},dropbarAnchor:function(ref,$el){return query(ref.dropbarAnchor,$el)},pos:function(ref){return"bottom-"+ref.align},dropdowns:function(ref,$el){return $$(ref.dropdown+" ."+ref.clsDrop,$el)}},beforeConnect:function(){var dropbar=this.$props.dropbar;this.dropbar=dropbar&&(query(dropbar,this.$el)||$("+ .uk-navbar-dropbar",this.$el)||$("<div></div>")),this.dropbar&&(addClass(this.dropbar,"uk-navbar-dropbar"),"slide"===this.dropbarMode&&addClass(this.dropbar,"uk-navbar-dropbar-slide"))},disconnected:function(){this.dropbar&&remove(this.dropbar)},update:function(){var this$1=this;this.$create("drop",this.dropdowns.filter(function(el){return!this$1.getDropdown(el)}),assign({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:"mouseover",delegate:function(){return this.dropdown},handler:function(ref){var current=ref.current,active=this.getActive();active&&active.toggle&&!within(active.toggle.$el,current)&&!active.tracker.movesTo(active.$el)&&active.hide(!1)}},{name:"mouseleave",el:function(){return this.dropbar},handler:function(){var active=this.getActive();active&&!matches(this.dropbar,":hover")&&active.hide()}},{name:"beforeshow",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||after(this.dropbarAnchor||this.$el,this.dropbar)}},{name:"show",capture:!0,filter:function(){return this.dropbar},handler:function(_,drop){var $el=drop.$el,dir=drop.dir;this.clsDrop&&addClass($el,this.clsDrop+"-dropbar"),"bottom"===dir&&this.transitionTo($el.offsetHeight+toFloat(css($el,"marginTop"))+toFloat(css($el,"marginBottom")),$el)}},{name:"beforehide",filter:function(){return this.dropbar},handler:function(e,ref){var $el=ref.$el,active=this.getActive();matches(this.dropbar,":hover")&&active&&active.$el===$el&&e.preventDefault()}},{name:"hide",filter:function(){return this.dropbar},handler:function(_,ref){var $el=ref.$el,active=this.getActive();(!active||active&&active.$el===$el)&&this.transitionTo(0)}}],methods:{getActive:function(){var active=this.dropdowns.map(this.getDropdown).filter(function(drop){return drop.isActive()})[0];return active&&includes(active.mode,"hover")&&within(active.toggle.$el,this.$el)&&active},transitionTo:function(newHeight,el){var dropbar=this.dropbar,oldHeight=isVisible(dropbar)?height(dropbar):0;return css(el=oldHeight<newHeight&&el,"clip","rect(0,"+el.offsetWidth+"px,"+oldHeight+"px,0)"),height(dropbar,oldHeight),Transition.cancel([el,dropbar]),Promise.all([Transition.start(dropbar,{height:newHeight},this.duration),Transition.start(el,{clip:"rect(0,"+el.offsetWidth+"px,"+newHeight+"px,0)"},this.duration)]).catch(noop).then(function(){return css(el,{clip:""})})},getDropdown:function(el){return this.$getComponent(el,"drop")||this.$getComponent(el,"dropdown")}}},Offcanvas={mixins:[Modal],args:"mode",props:{content:String,mode:String,flip:Boolean,overlay:Boolean},data:{content:".uk-offcanvas-content",mode:"slide",flip:!1,overlay:!1,clsPage:"uk-offcanvas-page",clsContainer:"uk-offcanvas-container",selPanel:".uk-offcanvas-bar",clsFlip:"uk-offcanvas-flip",clsContent:"uk-offcanvas-content",clsContentAnimation:"uk-offcanvas-content-animation",clsSidebarAnimation:"uk-offcanvas-bar-animation",clsMode:"uk-offcanvas",clsOverlay:"uk-offcanvas-overlay",selClose:".uk-offcanvas-close"},computed:{content:function(ref){return $(ref.content)||document.body},clsFlip:function(ref){var flip=ref.flip,clsFlip=ref.clsFlip;return flip?clsFlip:""},clsOverlay:function(ref){var overlay=ref.overlay,clsOverlay=ref.clsOverlay;return overlay?clsOverlay:""},clsMode:function(ref){var mode=ref.mode;return ref.clsMode+"-"+mode},clsSidebarAnimation:function(ref){var mode=ref.mode,clsSidebarAnimation=ref.clsSidebarAnimation;return"none"===mode||"reveal"===mode?"":clsSidebarAnimation},clsContentAnimation:function(ref){var mode=ref.mode,clsContentAnimation=ref.clsContentAnimation;return"push"!==mode&&"reveal"!==mode?"":clsContentAnimation},transitionElement:function(ref){return"reveal"===ref.mode?this.panel.parentNode:this.panel}},update:{write:function(){this.getActive()===this&&((this.overlay||this.clsContentAnimation)&&width(this.content,width(window)-this.scrollbarWidth),this.overlay&&(height(this.content,height(window)),scroll&&(this.content.scrollTop=scroll.y)))},events:["resize"]},events:[{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(ref){var current=ref.current;current.hash&&$(current.hash,this.content)&&(scroll=null,this.hide())}},{name:"beforescroll",filter:function(){return this.overlay},handler:function(e,scroll,target){scroll&&target&&this.isToggled()&&$(target,this.content)&&(once(this.$el,"hidden",function(){return scroll.scrollTo(target)}),e.preventDefault())}},{name:"show",self:!0,handler:function(){scroll=scroll||{x:window.pageXOffset,y:window.pageYOffset},"reveal"!==this.mode||hasClass(this.panel,this.clsMode)||(wrapAll(this.panel,"<div>"),addClass(this.panel.parentNode,this.clsMode)),css(document.documentElement,"overflowY",(!this.clsContentAnimation||this.flip)&&this.scrollbarWidth&&this.overlay?"scroll":""),addClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),height(document.body),addClass(this.content,this.clsContentAnimation),addClass(this.panel,this.clsSidebarAnimation,"reveal"!==this.mode?this.clsMode:""),addClass(this.$el,this.clsOverlay),css(this.$el,"display","block"),height(this.$el)}},{name:"hide",self:!0,handler:function(){removeClass(this.content,this.clsContentAnimation);var active=this.getActive();("none"===this.mode||active&&active!==this&&active!==this.prev)&&trigger(this.panel,"transitionend")}},{name:"hidden",self:!0,handler:function(){if("reveal"===this.mode&&unwrap(this.panel),this.overlay){if(!scroll){var ref=this.content,x=ref.scrollLeft,y=ref.scrollTop;scroll={x:x,y:y}}}else scroll={x:window.pageXOffset,y:window.pageYOffset};removeClass(this.panel,this.clsSidebarAnimation,this.clsMode),removeClass(this.$el,this.clsOverlay),css(this.$el,"display",""),removeClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),document.body.scrollTop=scroll.y,css(document.documentElement,"overflowY",""),width(this.content,""),height(this.content,""),window.scroll(scroll.x,scroll.y),scroll=null}},{name:"swipeLeft swipeRight",handler:function(e){this.isToggled()&&isTouch(e)&&("swipeLeft"===e.type&&!this.flip||"swipeRight"===e.type&&this.flip)&&this.hide()}}]},OverflowAuto={mixins:[Class],computed:{modal:function(_,$el){return closest($el,".uk-modal")},panel:function(_,$el){return closest($el,".uk-modal-dialog")}},connected:function(){css(this.$el,"minHeight",150)},update:{write:function(){if(this.panel&&this.modal){var current=css(this.$el,"maxHeight");css(css(this.$el,"maxHeight",150),"maxHeight",Math.max(150,150+height(this.modal)-this.panel.offsetHeight)),current!==css(this.$el,"maxHeight")&&trigger(this.$el,"resize")}},events:["load","resize"]}},Responsive={props:["width","height"],connected:function(){addClass(this.$el,"uk-responsive-width")},update:{read:function(){return!!(isVisible(this.$el)&&this.width&&this.height)&&{width:width(this.$el.parentNode),height:this.height}},write:function(dim){height(this.$el,Dimensions.contain({height:this.height,width:this.width},dim).height)},events:["load","resize"]}},Scroll={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(el){var this$1=this;el=el&&$(el)||document.body;var docHeight=height(document),winHeight=height(window),target=offset(el).top-this.offset;if(target+winHeight>docHeight&&(target=docHeight-winHeight),trigger(this.$el,"beforescroll",[this,el])){var start=Date.now(),startY=window.pageYOffset,step=function(){var k,currentY=startY+(target-startY)*(k=clamp((Date.now()-start)/this$1.duration),.5*(1-Math.cos(Math.PI*k)));window.scroll(window.pageXOffset,currentY),currentY!==target?requestAnimationFrame(step):trigger(this$1.$el,"scrolled",[this$1,el])};step()}}},events:{click:function(e){e.defaultPrevented||(e.preventDefault(),this.scrollTo(escape(this.$el.hash).substr(1)))}}};var Scrollspy={args:"cls",props:{cls:"list",target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:[],target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:"uk-scrollspy-inview"}},computed:{elements:function(ref,$el){var target=ref.target;return target?$$(target,$el):[$el]}},update:[{write:function(){this.hidden&&css(filter(this.elements,":not(."+this.inViewClass+")"),"visibility","hidden")}},{read:function(els){var this$1=this;els.delay&&this.elements.forEach(function(el,i){var elData=els[i];if(!elData||elData.el!==el){var cls=data(el,"uk-scrollspy-class");elData={el:el,toggles:cls&&cls.split(",")||this$1.cls}}elData.show=isInView(el,this$1.offsetTop,this$1.offsetLeft),els[i]=elData})},write:function(els){var this$1=this;if(!els.delay)return this.$emit(),els.delay=!0;var index$$1=1===this.elements.length?1:0;this.elements.forEach(function(el,i){var elData=els[i],cls=elData.toggles[i]||elData.toggles[0];if(!elData.show||elData.inview||elData.timer)!elData.show&&elData.inview&&this$1.repeat&&(elData.timer&&(clearTimeout(elData.timer),delete elData.timer),css(el,"visibility",this$1.hidden?"hidden":""),removeClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"outview"),this$1.$update(el),elData.inview=!1);else{var show=function(){css(el,"visibility",""),addClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"inview"),this$1.$update(el),elData.inview=!0,delete elData.timer};this$1.delay&&index$$1?elData.timer=setTimeout(show,this$1.delay*index$$1):show(),index$$1++}})},events:["scroll","load","resize"]}]},ScrollspyNav={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:"uk-active",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(_,$el){return $$('a[href^="#"]',$el).filter(function(el){return el.hash})},elements:function(){return this.closest?closest(this.links,this.closest):this.links},targets:function(){return $$(this.links.map(function(el){return el.hash}).join(","))}},update:[{read:function(){this.scroll&&this.$create("scroll",this.links,{offset:this.offset||0})}},{read:function(data$$1){var this$1=this,scroll=window.pageYOffset+this.offset+1,max=height(document)-height(window)+this.offset;data$$1.active=!1,this.targets.every(function(el,i){var top=offset(el).top,last=i+1===this$1.targets.length;if(!this$1.overflow&&(0===i&&top>scroll||last&&top+el.offsetTop<scroll))return!1;if(!last&&offset(this$1.targets[i+1]).top<=scroll)return!0;if(scroll>=max)for(var j=this$1.targets.length-1;j>i;j--)if(isInView(this$1.targets[j])){el=this$1.targets[j];break}return!(data$$1.active=$(filter(this$1.links,'[href="#'+el.id+'"]')))})},write:function(ref){var active=ref.active;this.links.forEach(function(el){return el.blur()}),removeClass(this.elements,this.cls),active&&trigger(this.$el,"active",[active,addClass(this.closest?closest(active,this.closest):active,this.cls)])},events:["scroll","load","resize"]}]},Sticky={mixins:[Class],attrs:!0,props:{top:null,bottom:Boolean,offset:Number,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,media:"media",targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:"",clsActive:"uk-active",clsInactive:"",clsFixed:"uk-sticky-fixed",clsBelow:"uk-sticky-below",selTarget:"",widthElement:!1,showOnUp:!1,media:!1,targetOffset:!1},computed:{selTarget:function(ref,$el){var selTarget=ref.selTarget;return selTarget&&$(selTarget,$el)||$el},widthElement:function(ref,$el){return query(ref.widthElement,$el)||this.placeholder}},connected:function(){this.placeholder=$("+ .uk-sticky-placeholder",this.$el)||$('<div class="uk-sticky-placeholder"></div>'),this.isActive||this.hide()},disconnected:function(){this.isActive&&(this.isActive=!1,this.hide(),removeClass(this.selTarget,this.clsInactive)),remove(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:"active",self:!0,handler:function(){replaceClass(this.selTarget,this.clsInactive,this.clsActive)}},{name:"inactive",self:!0,handler:function(){replaceClass(this.selTarget,this.clsActive,this.clsInactive)}},{name:"load hashchange popstate",el:window,handler:function(){var this$1=this;if(!1!==this.targetOffset&&location.hash&&window.pageYOffset>0){var target=$(location.hash);target&&fastdom.read(function(){var top=offset(target).top,elTop=offset(this$1.$el).top,elHeight=this$1.$el.offsetHeight;this$1.isActive&&elTop+elHeight>=top&&elTop<=top+target.offsetHeight&&window.scroll(0,top-elHeight-(isNumeric(this$1.targetOffset)?this$1.targetOffset:0)-this$1.offset)})}}}],update:[{write:function(){var placeholder=this.placeholder,offsetHeight=this.$el.offsetHeight;css(placeholder,assign({height:"absolute"!==css(this.$el,"position")?offsetHeight:""},css(this.$el,["marginTop","marginBottom","marginLeft","marginRight"]))),within(placeholder,document)||(after(this.$el,placeholder),attr(placeholder,"hidden","")),this.topOffset=offset(this.isActive?placeholder:this.$el).top,this.bottomOffset=this.topOffset+offsetHeight;var bottom=parseProp("bottom",this);this.top=Math.max(toFloat(parseProp("top",this)),this.topOffset)-this.offset,this.bottom=bottom&&bottom-offsetHeight,this.inactive=this.media&&!window.matchMedia(this.media).matches},events:["load","resize"]},{read:function(_,ref){var scrollY=ref.scrollY;return void 0===scrollY&&(scrollY=window.pageYOffset),this.width=(isVisible(this.widthElement)?this.widthElement:this.$el).offsetWidth,{scroll:this.scroll=scrollY,visible:isVisible(this.$el)}},write:function(ref,ref$1){var this$1=this,visible=ref.visible,scroll=ref.scroll;void 0===ref$1&&(ref$1={});var dir=ref$1.dir;if(!(scroll<0||!visible||this.disabled||this.showOnUp&&!dir))if(this.inactive||scroll<this.top||this.showOnUp&&(scroll<=this.top||"down"===dir||"up"===dir&&!this.isActive&&scroll<=this.bottomOffset)){if(!this.isActive)return;this.isActive=!1,this.animation&&scroll>this.topOffset?(Animation.cancel(this.$el),Animation.out(this.$el,this.animation).then(function(){return this$1.hide()},noop)):this.hide()}else this.isActive?this.update():this.animation?(Animation.cancel(this.$el),this.show(),Animation.in(this.$el,this.animation).catch(noop)):this.show()},events:["load","resize","scroll"]}],methods:{show:function(){this.isActive=!0,this.update(),attr(this.placeholder,"hidden",null)},hide:function(){this.isActive&&!hasClass(this.selTarget,this.clsActive)||trigger(this.$el,"inactive"),removeClass(this.$el,this.clsFixed,this.clsBelow),css(this.$el,{position:"",top:"",width:""}),attr(this.placeholder,"hidden","")},update:function(){var active=0!==this.top||this.scroll>this.top,top=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(top=this.bottom-this.scroll),css(this.$el,{position:"fixed",top:top+"px",width:this.width}),hasClass(this.selTarget,this.clsActive)?active||trigger(this.$el,"inactive"):active&&trigger(this.$el,"active"),toggleClass(this.$el,this.clsBelow,this.scroll>this.bottomOffset),addClass(this.$el,this.clsFixed)}}};function parseProp(prop,ref){var $props=ref.$props,$el=ref.$el,propOffset=ref[prop+"Offset"],value=$props[prop];if(value){if(isNumeric(value))return propOffset+toFloat(value);if(isString(value)&&value.match(/^-?\d+vh$/))return height(window)*toFloat(value)/100;var el=!0===value?$el.parentNode:query(value,$el);return el?offset(el).top+el.offsetHeight:void 0}}var Switcher={mixins:[Togglable],args:"connect",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:"~.uk-switcher",toggle:"> *",active:0,swiping:!0,cls:"uk-active",clsContainer:"uk-switcher",attrItem:"uk-switcher-item",queued:!0},computed:{connects:function(ref,$el){return queryAll(ref.connect,$el)},toggles:function(ref,$el){return $$(ref.toggle,$el)}},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),this.show(e.current)}},{name:"click",el:function(){return this.connects},delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.show(data(e.current,this.attrItem))}},{name:"swipeRight swipeLeft",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(e){isTouch(e)&&(e.preventDefault(),window.getSelection().toString()||this.show("swipeLeft"===e.type?"next":"previous"))}}],update:function(){var this$1=this;this.connects.forEach(function(list){return this$1.updateAria(list.children)}),this.show(filter(this.toggles,"."+this.cls)[0]||this.toggles[this.active]||this.toggles[0])},methods:{show:function(item){for(var toggle,this$1=this,length=this.toggles.length,prev=!!this.connects.length&&index(filter(this.connects[0].children,"."+this.cls)[0]),hasPrev=prev>=0,dir="previous"===item?-1:1,next=getIndex(item,this.toggles,prev),i=0;i<length;i++,next=(next+dir+length)%length)if(!matches(this$1.toggles[next],".uk-disabled, [disabled]")){toggle=this$1.toggles[next];break}!toggle||prev>=0&&hasClass(toggle,this.cls)||prev===next||(removeClass(this.toggles,this.cls),attr(this.toggles,"aria-expanded",!1),addClass(toggle,this.cls),attr(toggle,"aria-expanded",!0),this.connects.forEach(function(list){hasPrev?this$1.toggleElement([list.children[prev],list.children[next]]):this$1.toggleNow(list.children[next])}))}}},Tab={mixins:[Class],extends:Switcher,props:{media:"media"},data:{media:960,attrItem:"uk-tab-item"},connected:function(){var cls=hasClass(this.$el,"uk-tab-left")?"uk-tab-left":!!hasClass(this.$el,"uk-tab-right")&&"uk-tab-right";cls&&this.$create("toggle",this.$el,{cls:cls,mode:"media",media:this.media})}},Toggle={mixins:[Togglable],args:"target",props:{href:String,target:null,mode:"list",media:"media"},data:{href:!1,target:!1,mode:"click",queued:!0,media:!1},computed:{target:function(ref,$el){var href=ref.href,target=ref.target;return(target=queryAll(target||href,$el)).length&&target||[$el]}},events:[{name:pointerEnter+" "+pointerLeave,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||this.toggle("toggle"+(e.type===pointerEnter?"show":"hide"))}},{name:"click",filter:function(){return includes(this.mode,"click")||hasTouch&&includes(this.mode,"hover")},handler:function(e){var link;(isTouch(e)||includes(this.mode,"click"))&&((closest(e.target,'a[href="#"], button')||(link=closest(e.target,"a[href]"))&&(this.cls||!isVisible(this.target)||link.hash&&matches(this.target,link.hash)))&&once(document,"click",function(e){return e.preventDefault()}),this.toggle())}}],update:{write:function(){if(includes(this.mode,"media")&&this.media){var toggled=this.isToggled(this.target);(window.matchMedia(this.media).matches?!toggled:toggled)&&this.toggle()}},events:["load","resize"]},methods:{toggle:function(type){trigger(this.target,type||"toggle",[this])&&this.toggleElement(this.target)}}};UIkit.version="3.0.0-rc.5",function(UIkit){UIkit.component("accordion",Accordion),UIkit.component("alert",Alert),UIkit.component("cover",Cover),UIkit.component("drop",Drop),UIkit.component("dropdown",Dropdown),UIkit.component("formCustom",FormCustom),UIkit.component("gif",Gif),UIkit.component("grid",Grid),UIkit.component("heightMatch",HeightMatch),UIkit.component("heightViewport",HeightViewport),UIkit.component("icon",Icon),UIkit.component("img",Img),UIkit.component("leader",Leader),UIkit.component("margin",Margin),UIkit.component("modal",Modal$1),UIkit.component("nav",Nav),UIkit.component("navbar",Navbar),UIkit.component("offcanvas",Offcanvas),UIkit.component("overflowAuto",OverflowAuto),UIkit.component("responsive",Responsive),UIkit.component("scroll",Scroll),UIkit.component("scrollspy",Scrollspy),UIkit.component("scrollspyNav",ScrollspyNav),UIkit.component("sticky",Sticky),UIkit.component("svg",SVG),UIkit.component("switcher",Switcher),UIkit.component("tab",Tab),UIkit.component("toggle",Toggle),UIkit.component("video",Video),UIkit.component("close",Close),UIkit.component("marker",IconComponent),UIkit.component("navbarToggleIcon",IconComponent),UIkit.component("overlayIcon",IconComponent),UIkit.component("paginationNext",IconComponent),UIkit.component("paginationPrevious",IconComponent),UIkit.component("searchIcon",Search),UIkit.component("slidenavNext",Slidenav),UIkit.component("slidenavPrevious",Slidenav),UIkit.component("spinner",Spinner),UIkit.component("totop",IconComponent),UIkit.use(Core)}(UIkit);var Countdown={mixins:[Class],attrs:!0,props:{date:String,clsWrapper:String},data:{date:"",clsWrapper:".uk-countdown-%unit%"},computed:{date:function(ref){var date=ref.date;return Date.parse(date)},days:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","days"),$el)},hours:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","hours"),$el)},minutes:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","minutes"),$el)},seconds:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","seconds"),$el)},units:function(){var this$1=this;return["days","hours","minutes","seconds"].filter(function(unit){return this$1[unit]})}},connected:function(){this.start()},disconnected:function(){var this$1=this;this.stop(),this.units.forEach(function(unit){return empty(this$1[unit])})},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var date,total,this$1=this,timespan=(date=this.date,{total:total=date-Date.now(),seconds:total/1e3%60,minutes:total/1e3/60%60,hours:total/1e3/60/60%24,days:total/1e3/60/60/24});timespan.total<=0&&(this.stop(),timespan.days=timespan.hours=timespan.minutes=timespan.seconds=0),this.units.forEach(function(unit){var digits=String(Math.floor(timespan[unit]));digits=digits.length<2?"0"+digits:digits;var el=this$1[unit];el.textContent!==digits&&((digits=digits.split("")).length!==el.children.length&&html(el,digits.map(function(){return"<span></span>"}).join("")),digits.forEach(function(digit,i){return el.children[i].textContent=digit}))})}},methods:{start:function(){var this$1=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return this$1.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var style$1,targetClass="uk-animation-target",Animate={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(action){var this$1=this;style$1||(style$1=append(document.head,"<style>").sheet).insertRule("."+targetClass+" > * {\n margin-top: 0 !important;\n transform: none !important;\n }");var children=toNodes(this.target.children),propsFrom=children.map(function(el){return getProps(el,!0)}),oldHeight=height(this.target),oldScrollY=window.pageYOffset;action(),Transition.cancel(this.target),children.forEach(Transition.cancel),reset(this.target),this.$update(this.target),fastdom.flush();var newHeight=height(this.target),propsTo=(children=children.concat(toNodes(this.target.children).filter(function(el){return!includes(children,el)}))).map(function(el,i){return!!(el.parentNode&&i in propsFrom)&&(propsFrom[i]?isVisible(el)?getPositionWithMargin(el):{opacity:0}:{opacity:isVisible(el)?1:0})});return propsFrom=propsTo.map(function(props,i){var from=children[i].parentNode===this$1.target&&(propsFrom[i]||getProps(children[i]));if(from)if(props){if(!("opacity"in props)){from.opacity%1?props.opacity=1:delete from.opacity}}else delete from.opacity;return from}),addClass(this.target,targetClass),children.forEach(function(el,i){return propsFrom[i]&&css(el,propsFrom[i])}),css(this.target,"minHeight",oldHeight),window.scroll(window.pageXOffset,oldScrollY),Promise$1.all(children.map(function(el,i){return propsFrom[i]&&propsTo[i]?Transition.start(el,propsTo[i],this$1.animation,"ease"):Promise$1.resolve()}).concat(Transition.start(this.target,{minHeight:newHeight},this.animation,"ease"))).then(function(){children.forEach(function(el,i){return css(el,{display:0===propsTo[i].opacity?"none":"",zIndex:""})}),reset(this$1.target),this$1.$update(this$1.target)},noop)}}};function getProps(el,opacity){var zIndex=css(el,"zIndex");return!!isVisible(el)&&assign({display:"",opacity:opacity?css(el,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:"auto"===zIndex?index(el):zIndex},getPositionWithMargin(el))}function reset(el){css(el.children,{height:"",left:"",opacity:"",pointerEvents:"",position:"",top:"",width:""}),removeClass(el,targetClass),css(el,"minHeight","")}function getPositionWithMargin(el){var ref=el.getBoundingClientRect(),height$$1=ref.height,width$$1=ref.width,ref$1=position(el),top=ref$1.top,left=ref$1.left;return{top:top+=toFloat(css(el,"marginTop")),left:left,height:height$$1,width:width$$1}}var Filter={mixins:[Animate],args:"target",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",animation:250},computed:{toggles:function(ref,$el){ref.attrItem;return $$("["+this.attrItem+"],[data-"+this.attrItem+"]",$el)},target:function(ref,$el){return $(ref.target,$el)}},events:[{name:"click",delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.apply(e.current)}}],connected:function(){var this$1=this;if(!1!==this.selActive){var actives=$$(this.selActive,this.$el);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,includes(actives,el))})}},update:function(data$$1){var toggles=data$$1.toggles,children=data$$1.children;isEqualList(toggles,this.toggles,!1)&&isEqualList(children,this.target.children,!1)||(data$$1.toggles=this.toggles,data$$1.children=this.target.children,this.setState(this.getState(),!1))},methods:{apply:function(el){this.setState(mergeState(el,this.attrItem,this.getState()))},getState:function(){var this$1=this;return this.toggles.filter(function(item){return hasClass(item,this$1.cls)}).reduce(function(state,el){return mergeState(el,this$1.attrItem,state)},{filter:{"":""},sort:[]})},setState:function(state,animate$$1){var this$1=this;void 0===animate$$1&&(animate$$1=!0),state=assign({filter:{"":""},sort:[]},state),trigger(this.$el,"beforeFilter",[this,state]);var children=toNodes(this.target.children);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,function(el,attr$$1,ref){var stateFilter=ref.filter,ref_sort=ref.sort,stateSort=ref_sort[0],stateOrder=ref_sort[1],ref$1=getFilter(el,attr$$1),filter$$1=ref$1.filter,group=ref$1.group;void 0===group&&(group="");var sort=ref$1.sort,order=ref$1.order;void 0===order&&(order="asc");return Boolean((filter$$1||isUndefined(sort))&&group in stateFilter&&(filter$$1===stateFilter[group]||isUndefined(filter$$1)&&!stateFilter[group])||stateSort&&sort&&stateSort===sort&&stateOrder===order)}(el,this$1.attrItem,state))});var apply$$1=function(){var selector=function(ref){var selector="";return each(ref.filter,function(value){return selector+=value||""}),selector}(state);children.forEach(function(el){return css(el,"display",selector&&!matches(el,selector)?"none":"")});var ref=state.sort,sort=ref[0],order=ref[1];if(sort){var sorted=function(nodes,sort,order){return toNodes(nodes).sort(function(a,b){return data(a,sort).localeCompare(data(b,sort))*("asc"===order||-1)})}(children,sort,order);isEqualList(sorted,children)||sorted.forEach(function(el){return append(this$1.target,el)})}};animate$$1?this.animate(apply$$1).then(function(){return trigger(this$1.$el,"afterFilter",[this$1])}):(apply$$1(),trigger(this.$el,"afterFilter",[this]))}}};function getFilter(el,attr$$1){return parseOptions(data(el,attr$$1),["filter"])}function mergeState(el,attr$$1,state){return toNodes(el).forEach(function(el){var filterBy=getFilter(el,attr$$1),filter$$1=filterBy.filter,group=filterBy.group,sort=filterBy.sort,order=filterBy.order;void 0===order&&(order="asc"),(filter$$1||isUndefined(sort))&&(group?(delete state.filter[""],state.filter[group]=filter$$1):state.filter={"":filter$$1}),isUndefined(sort)||(state.sort=[sort,order])}),state}function isEqualList(listA,listB,strict){return void 0===strict&&(strict=!0),listA=toNodes(listA),listB=toNodes(listB),listA.length===listB.length&&listA.every(function(el,i){return strict?el===listB[i]:~listB.indexOf(el)})}var Animations={slide:{show:function(dir){return[{transform:translate(-100*dir)},{transform:translate()}]},percent:function(current){return translated(current)},translate:function(percent,dir){return[{transform:translate(-100*dir*percent)},{transform:translate(100*dir*(1-percent))}]}}};function translated(el){return Math.abs(css(el,"transform").split(",")[4]/el.offsetWidth)||0}function translate(value,unit){return void 0===value&&(value=0),void 0===unit&&(unit="%"),"translateX("+value+(value?unit:"")+")"}function scale3d(value){return"scale3d("+value+", "+value+", 1)"}var Animations$1=assign({},Animations,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent},{opacity:percent}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(.8)},{opacity:1,transform:scale3d(1)}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1-.2*percent)},{opacity:percent,transform:scale3d(.8+.2*percent)}]}}});function triggerUpdate(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}var Slider={attrs:!0,mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.startAutoplay()},disconnected:function(){this.stopAutoplay()},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}},{name:pointerDown,handler:"stopAutoplay"},{name:"mouseenter",filter:function(){return this.autoplay},handler:function(){this.isHovering=!0}},{name:"mouseleave",filter:function(){return this.autoplay},handler:function(){this.isHovering=!1}}],methods:{startAutoplay:function(){var this$1=this;this.stopAutoplay(),this.autoplay&&(this.interval=setInterval(function(){return!(this$1.isHovering&&this$1.pauseOnHover)&&!this$1.stack.length&&this$1.show("next")},this.autoplayInterval))},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{data:{threshold:10,preventCatch:!1},init:function(){var this$1=this;["start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){var pos=getPos$1(e).x*(isRtl?-1:1);this$1.prevPos=pos!==this$1.pos?this$1.pos:this$1.prevPos,this$1.pos=pos,fn(e)}})},events:[{name:pointerDown,delegate:function(){return this.slidesSelector},handler:function(e){var el;!isTouch(e)&&(el=e.target,!el.children.length&&el.childNodes.length)||e.button>0||this.length<2||this.preventCatch||this.start(e)}},{name:"dragstart",handler:function(e){e.preventDefault()}}],methods:{start:function(){this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.translate(this.percent),this._transitioner.cancel(),this.dragging=!0,this.stack=[]):this.prevIndex=this.index,this.unbindMove=on(document,pointerMove,this.move,{capture:!0,passive:!1}),on(window,"scroll",this.unbindMove),on(document,pointerUp,this.end,!0)},move:function(e){var this$1=this,distance=this.pos-this.drag;if(!(0===distance||this.prevPos===this.pos||!this.dragging&&Math.abs(distance)<this.threshold)){e.cancelable&&e.preventDefault(),this.dragging=!0,this.dir=distance<0?1:-1;for(var slides=this.slides,prevIndex=this.prevIndex,dis=Math.abs(distance),nextIndex=this.getIndex(prevIndex+this.dir,prevIndex),width$$1=this._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;nextIndex!==prevIndex&&dis>width$$1;)this$1.drag-=width$$1*this$1.dir,prevIndex=nextIndex,dis-=width$$1,nextIndex=this$1.getIndex(prevIndex+this$1.dir,prevIndex),width$$1=this$1._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;this.percent=dis/width$$1;var itemShown,prev=slides[prevIndex],next=slides[nextIndex],changed=this.index!==nextIndex,edge=prevIndex===nextIndex;[this.index,this.prevIndex].filter(function(i){return!includes([nextIndex,prevIndex],i)}).forEach(function(i){trigger(slides[i],"itemhidden",[this$1]),edge&&(itemShown=!0,this$1.prevIndex=prevIndex)}),(this.index===prevIndex&&this.prevIndex!==prevIndex||itemShown)&&trigger(slides[this.index],"itemshown",[this]),changed&&(this.prevIndex=prevIndex,this.index=nextIndex,!edge&&trigger(prev,"beforeitemhide",[this]),trigger(next,"beforeitemshow",[this])),this._transitioner=this._translate(Math.abs(this.percent),prev,!edge&&next),changed&&(!edge&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]))}},end:function(){if(off(window,"scroll",this.unbindMove),this.unbindMove(),off(document,pointerUp,this.end,!0),this.dragging){if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var dirChange=(isRtl?this.dir*(isRtl?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=dirChange?this.index:this.prevIndex,dirChange&&(this.percent=1-this.percent),this.show(this.dir>0&&!dirChange||this.dir<0&&dirChange?"next":"previous",!0)}preventClick()}this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(ref,$el){return $(ref.selNav,$el)},navItemSelector:function(ref){var attrItem=ref.attrItem;return"["+attrItem+"],[data-"+attrItem+"]"},navItems:function(_,$el){return $$(this.navItemSelector,$el)}},update:[{write:function(){var this$1=this;this.nav&&this.length!==this.nav.children.length&&html(this.nav,this.slides.map(function(_,i){return"<li "+this$1.attrItem+'="'+i+'"><a href="#"></a></li>'}).join("")),toggleClass($$(this.navItemSelector,this.$el).concat(this.nav),"uk-hidden",!this.maxIndex),this.updateNav()},events:["load","resize"]}],events:[{name:"click",delegate:function(){return this.navItemSelector},handler:function(e){e.preventDefault(),e.current.blur(),this.show(data(e.current,this.attrItem))}},{name:"itemshow",handler:"updateNav"}],methods:{updateNav:function(){var this$1=this,i=this.getValidIndex();this.navItems.forEach(function(el){var cmd=data(el,this$1.attrItem);toggleClass(el,this$1.clsActive,toNumber(cmd)===i),toggleClass(el,"uk-invisible",this$1.finite&&("previous"===cmd&&0===i||"next"===cmd&&i>=this$1.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:"ease",finite:!1,velocity:1,index:0,stack:[],percent:0,clsActive:"uk-active",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},computed:{duration:function(ref,$el){var velocity=ref.velocity;return speedUp($el.offsetWidth/velocity)},length:function(){return this.slides.length},list:function(ref,$el){return $(ref.selList,$el)},maxIndex:function(){return this.length-1},slidesSelector:function(ref){return ref.selList+" > *"},slides:function(){return toNodes(this.list.children)}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(index$$1,force){var this$1=this;if(void 0===force&&(force=!1),!this.dragging&&this.length){var stack=this.stack,queueIndex=force?0:stack.length,reset=function(){stack.splice(queueIndex,1),stack.length&&this$1.show(stack.shift(),!0)};if(stack[force?"unshift":"push"](index$$1),!force&&stack.length>1)2===stack.length&&this._transitioner.forward(Math.min(this.duration,200));else{var prevIndex=this.index,prev=hasClass(this.slides,this.clsActive)&&this.slides[prevIndex],nextIndex=this.getIndex(index$$1,this.index),next=this.slides[nextIndex];if(prev!==next){if(this.dir=function(index$$1,prevIndex){return"next"===index$$1?1:"previous"===index$$1?-1:index$$1<prevIndex?-1:1}(index$$1,prevIndex),this.prevIndex=prevIndex,this.index=nextIndex,prev&&trigger(prev,"beforeitemhide",[this]),!trigger(next,"beforeitemshow",[this,prev]))return this.index=this.prevIndex,void reset();var promise=this._show(prev,next,force).then(function(){return prev&&trigger(prev,"itemhidden",[this$1]),trigger(next,"itemshown",[this$1]),new Promise$1(function(resolve){fastdom.write(function(){stack.shift(),stack.length?this$1.show(stack.shift(),!0):this$1._transitioner=null,resolve()})})});return prev&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]),promise}reset()}}},getIndex:function(index$$1,prev){return void 0===index$$1&&(index$$1=this.index),void 0===prev&&(prev=this.index),clamp(getIndex(index$$1,this.slides,prev,this.finite),0,this.maxIndex)},getValidIndex:function(index$$1,prevIndex){return void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),this.getIndex(index$$1,prevIndex)},_show:function(prev,next,force){if(this._transitioner=this._getTransitioner(prev,next,this.dir,assign({easing:force?next.offsetWidth<600?"cubic-bezier(0.25, 0.46, 0.45, 0.94)":"cubic-bezier(0.165, 0.84, 0.44, 1)":this.easing},this.transitionOptions)),!force&&!prev)return this._transitioner.translate(1),Promise$1.resolve();var length=this.stack.length;return this._transitioner[length>1?"forward":"show"](length>1?Math.min(this.duration,75+75/(length-1)):this.duration,this.percent)},_getDistance:function(prev,next){return new this._getTransitioner(prev,prev!==next&&next).getDistance()},_translate:function(percent,prev,next){void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index);var transitioner=this._getTransitioner(prev!==next&&prev,next);return transitioner.translate(percent),transitioner},_getTransitioner:function(prev,next,dir,options){return void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index),void 0===dir&&(dir=this.dir||1),void 0===options&&(options=this.transitionOptions),new this.Transitioner(isNumber(prev)?this.slides[prev]:prev,isNumber(next)?this.slides[next]:next,dir*(isRtl?-1:1),options)}}};function speedUp(x){return.5*x+300}var Slideshow={mixins:[Slider],props:{animation:String},data:{animation:"slide",clsActivated:"uk-transition-active",Animations:Animations,Transitioner:function(prev,next,dir,ref){var animation=ref.animation,easing=ref.easing,percent=animation.percent,translate=animation.translate,show=animation.show;void 0===show&&(show=noop);var props=show(dir),deferred=new Deferred;return{dir:dir,show:function(duration,percent,linear){var this$1=this;void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),triggerUpdate(next,"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),triggerUpdate(prev,"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Promise$1.all([Transition.start(next,props[1],duration,timing),Transition.start(prev,props[0],duration,timing)]).then(function(){this$1.reset(),deferred.resolve()},noop),deferred.promise},stop:function(){return Transition.stop([next,prev])},cancel:function(){Transition.cancel([next,prev])},reset:function(){for(var prop in props[0])css([next,prev],prop,"")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel([next,prev]),this.show(duration,percent,!0)},translate:function(percent){this.reset();var props=translate(percent,dir);css(next,props[1]),css(prev,props[0]),triggerUpdate(next,"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate(prev,"itemtranslateout",{percent:1-percent,dir:dir})},percent:function(){return percent(prev||next,next,dir)},getDistance:function(){return prev.offsetWidth}}}},computed:{animation:function(ref){var animation=ref.animation,Animations$$1=ref.Animations;return assign(animation in Animations$$1?Animations$$1[animation]:Animations$$1.slide,{name:animation})},transitionOptions:function(){return{animation:this.animation}}},events:{"itemshow itemhide itemshown itemhidden":function(ref){var target=ref.target;this.$update(target)},itemshow:function(){isNumber(this.prevIndex)&&fastdom.flush()},beforeitemshow:function(ref){addClass(ref.target,this.clsActive)},itemshown:function(ref){addClass(ref.target,this.clsActivated)},itemhidden:function(ref){removeClass(ref.target,this.clsActive,this.clsActivated)}}},LightboxPanel={mixins:[Container,Modal,Togglable,Slideshow],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:"uk-open",clsPage:"uk-lightbox-page",selList:".uk-lightbox-items",attrItem:"uk-lightbox-item",selClose:".uk-close-large",pauseOnHover:!1,velocity:2,Animations:Animations$1,template:'<div class="uk-lightbox uk-overflow-hidden"> <ul class="uk-lightbox-items"></ul> <div class="uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque"> <button class="uk-lightbox-toolbar-icon uk-close-large" type="button" uk-close></button> </div> <a class="uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade" href="#" uk-slidenav-previous uk-lightbox-item="previous"></a> <a class="uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade" href="#" uk-slidenav-next uk-lightbox-item="next"></a> <div class="uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque"></div> </div>'}},created:function(){var this$1=this;this.$mount(append(this.container,this.template)),this.caption=$(".uk-lightbox-caption",this.$el),this.items.forEach(function(){return append(this$1.list,"<li></li>")})},events:[{name:pointerMove+" "+pointerDown+" keydown",handler:"showControls"},{name:"click",self:!0,delegate:function(){return this.slidesSelector},handler:function(e){e.preventDefault(),this.hide()}},{name:"shown",self:!0,handler:"showControls"},{name:"hide",self:!0,handler:function(){this.hideControls(),removeClass(this.slides,this.clsActive),Transition.stop(this.slides)}},{name:"keyup",el:document,handler:function(e){if(this.isToggled(this.$el))switch(e.keyCode){case 37:this.show("previous");break;case 39:this.show("next")}}},{name:"beforeitemshow",handler:function(e){this.isToggled()||(this.preventCatch=!0,e.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Animations$1.scale,removeClass(e.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:"itemshow",handler:function(ref){var i=index(ref.target),caption=this.getItem(i).caption;css(this.caption,"display",caption?"":"none"),html(this.caption,caption);for(var j=0;j<=this.preload;j++)this.loadItem(this.getIndex(i+j)),this.loadItem(this.getIndex(i-j))}},{name:"itemshown",handler:function(){this.preventCatch=!1}},{name:"itemload",handler:function(_,item){var matches$$1,this$1=this,source=item.source,type=item.type,alt=item.alt;if(this.setItem(item,"<span uk-spinner></span>"),source)if("image"===type||source.match(/\.(jp(e)?g|png|gif|svg)($|\?)/i))getImage(source).then(function(img){return this$1.setItem(item,'<img width="'+img.width+'" height="'+img.height+'" src="'+source+'" alt="'+(alt||"")+'">')},function(){return this$1.setError(item)});else if("video"===type||source.match(/\.(mp4|webm|ogv)($|\?)/i)){var video=$("<video controls playsinline"+(item.poster?' poster="'+item.poster+'"':"")+' uk-video="'+this.videoAutoplay+'"></video>');attr(video,"src",source),on(video,"error",function(){return this$1.setError(item)}),on(video,"loadedmetadata",function(){attr(video,{width:video.videoWidth,height:video.videoHeight}),this$1.setItem(item,video)})}else if("iframe"===type||source.match(/\.(html|php)($|\?)/i))this.setItem(item,'<iframe class="uk-lightbox-iframe" src="'+source+'" frameborder="0" allowfullscreen></iframe>');else if(matches$$1=source.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/watch\?v=([^&\s]+)/)||source.match(/()youtu\.be\/(.*)/)){var id=matches$$1[2],setIframe=function(width$$1,height$$1){return void 0===width$$1&&(width$$1=640),void 0===height$$1&&(height$$1=450),this$1.setItem(item,getIframe("https://www.youtube"+(matches$$1[1]||"")+".com/embed/"+id,width$$1,height$$1,this$1.videoAutoplay))};getImage("https://img.youtube.com/vi/"+id+"/maxresdefault.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;120===width$$1&&90===height$$1?getImage("https://img.youtube.com/vi/"+id+"/0.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;return setIframe(width$$1,height$$1)},setIframe):setIframe(width$$1,height$$1)},setIframe)}else(matches$$1=source.match(/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/))&&ajax("https://vimeo.com/api/oembed.json?maxwidth=1920&url="+encodeURI(source),{responseType:"json",withCredentials:!1}).then(function(ref){var ref_response=ref.response,height$$1=ref_response.height,width$$1=ref_response.width;return this$1.setItem(item,getIframe("https://player.vimeo.com/video/"+matches$$1[2],width$$1,height$$1,this$1.videoAutoplay))},function(){return this$1.setError(item)})}}],methods:{loadItem:function(index$$1){void 0===index$$1&&(index$$1=this.index);var item=this.getItem(index$$1);item.content||trigger(this.$el,"itemload",[item])},getItem:function(index$$1){return void 0===index$$1&&(index$$1=this.index),this.items[index$$1]||{}},setItem:function(item,content){assign(item,{content:content});var el=html(this.slides[this.items.indexOf(item)],content);trigger(this.$el,"itemloaded",[this,el]),this.$update(el)},setError:function(item){this.setItem(item,'<span uk-icon="icon: bolt; ratio: 2"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),addClass(this.$el,"uk-active","uk-transition-active")},hideControls:function(){removeClass(this.$el,"uk-active","uk-transition-active")}}};function getIframe(src,width$$1,height$$1,autoplay){return'<iframe src="'+src+'" width="'+width$$1+'" height="'+height$$1+'" style="max-width: 100%; box-sizing: border-box;" frameborder="0" allowfullscreen uk-video="autoplay: '+autoplay+'" uk-responsive></iframe>'}var obj,props=merge(LightboxPanel,"props"),defaults=merge(LightboxPanel,"data"),Lightbox={install:function(UIkit){UIkit.lightboxPanel||UIkit.component("lightboxPanel",LightboxPanel)},attrs:!0,props:assign({toggle:String},props),data:assign({toggle:"a"},Object.keys(props).reduce(function(data$$1,key){return data$$1[key]=defaults[key],data$$1},{})),computed:{toggles:function(ref,$el){return $$(ref.toggle,$el)}},disconnected:function(){this._destroy()},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),e.current.blur(),this.show(index(this.toggles,e.current))}}],update:function(data$$1){var listA,listB;(data$$1.toggles=data$$1.toggles||this.toggles,this.panel&&this.animation&&(this.panel.$props.animation=this.animation,this.panel.$emit()),this.panel&&(listA=data$$1.toggles,listB=this.toggles,listA.length!==listB.length||!listA.every(function(el,i){return el===listB[i]})))&&(data$$1.toggles=this.toggles,this._destroy(),this._init())},methods:{_init:function(){return this.panel=this.panel||this.$create("lightboxPanel",assign({},this.$props,{items:this.toggles.reduce(function(items,el){return items.push(["href","caption","type","poster","alt"].reduce(function(obj,attr$$1){return obj["href"===attr$$1?"source":attr$$1]=data(el,attr$$1),obj},{})),items},[])}))},_destroy:function(){this.panel&&(this.panel.$destroy(!0),this.panel=null)},show:function(index$$1){return this.panel||this._init(),this.panel.show(index$$1)},hide:function(){return this.panel&&this.panel.hide()}}};function merge(options,prop){return assign.apply(void 0,[{}].concat(options.mixins?options.mixins.map(function(mixin){return merge(mixin,prop)}):[],[isFunction(options[prop])?options[prop]():options[prop]]))}var containers={},Notification={functional:!0,args:["message","status"],data:{message:"",status:"",timeout:5e3,group:null,pos:"top-center",clsClose:"uk-notification-close",clsMsg:"uk-notification-message"},install:function(UIkit){UIkit.notification.closeAll=function(group,immediate){apply(document.body,function(el){var notification=UIkit.getComponent(el,"notification");!notification||group&&group!==notification.group||notification.close(immediate)})}},created:function(){containers[this.pos]||(containers[this.pos]=append(this.$container,'<div class="uk-notification uk-notification-'+this.pos+'"></div>'));var container=css(containers[this.pos],"display","block");this.$mount(append(container,'<div class="'+this.clsMsg+(this.status?" "+this.clsMsg+"-"+this.status:"")+'"> <a href="#" class="'+this.clsClose+'" data-uk-close></a> <div>'+this.message+"</div> </div>"))},ready:function(){var this$1=this,marginBottom=toFloat(css(this.$el,"marginBottom"));Transition.start(css(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}),{opacity:1,marginTop:0,marginBottom:marginBottom}).then(function(){this$1.timeout&&(this$1.timer=setTimeout(this$1.close,this$1.timeout))})},events:(obj={click:function(e){closest(e.target,'a[href="#"]')&&e.preventDefault(),this.close()}},obj[pointerEnter]=function(){this.timer&&clearTimeout(this.timer)},obj[pointerLeave]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},obj),methods:{close:function(immediate){var this$1=this,removeFn=function(){trigger(this$1.$el,"close",[this$1]),remove(this$1.$el),containers[this$1.pos].children.length||css(containers[this$1.pos],"display","none")};this.timer&&clearTimeout(this.timer),immediate?removeFn():Transition.start(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}).then(removeFn)}}};var props$1=["x","y","bgx","bgy","rotate","scale","color","backgroundColor","borderColor","opacity","blur","hue","grayscale","invert","saturate","sepia","fopacity"],Parallax={props:props$1.reduce(function(props,prop){return props[prop]="list",props},{media:"media"}),data:props$1.reduce(function(data$$1,prop){return data$$1[prop]=void 0,data$$1},{media:!1}),computed:{props:function(properties,$el){var this$1=this;return props$1.reduce(function(props,prop){if(isUndefined(properties[prop]))return props;var pos,bgPos,diff,isColor=prop.match(/color/i),isCssProp=isColor||"opacity"===prop,steps=properties[prop].slice(0);isCssProp&&css($el,prop,""),steps.length<2&&steps.unshift(("scale"===prop?1:isCssProp?css($el,prop):0)||0);var unit=includes(steps.join(""),"%")?"%":"px";if(isColor){var color=$el.style.color;steps=steps.map(function(step){return css(css($el,"color",step),"color").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(function(n){return toFloat(n)})}),$el.style.color=color}else steps=steps.map(toFloat);if(prop.match(/^bg/))if(css($el,"background-position-"+prop[2],""),bgPos=css($el,"backgroundPosition").split(" ")["x"===prop[2]?0:1],this$1.covers){var min=Math.min.apply(Math,steps),max=Math.max.apply(Math,steps),down=steps.indexOf(min)<steps.indexOf(max);diff=max-min,steps=steps.map(function(step){return step-(down?min:max)}),pos=(down?-diff:0)+"px"}else pos=bgPos;return props[prop]={steps:steps,unit:unit,pos:pos,bgPos:bgPos,diff:diff},props},{})},bgProps:function(){var this$1=this;return["bgx","bgy"].filter(function(bg){return bg in this$1.props})},covers:function(_,$el){return function(el){var backgroundSize=el.style.backgroundSize,covers="cover"===css(css(el,"backgroundSize",""),"backgroundSize");return el.style.backgroundSize=backgroundSize,covers}($el)}},disconnected:function(){delete this._image},update:[{read:function(data$$1){var this$1=this;if(data$$1.active=!this.media||window.matchMedia(this.media).matches,data$$1.image&&(data$$1.image.dimEl={width:this.$el.offsetWidth,height:this.$el.offsetHeight}),!("image"in data$$1)&&this.covers&&this.bgProps.length){var src=css(this.$el,"backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/,"$1");src&&(data$$1.image=!1,getImage(src).then(function(img){data$$1.image={width:img.naturalWidth,height:img.naturalHeight},this$1.$emit()}))}},write:function(ref){var this$1=this,image=ref.image,active=ref.active;if(image)if(active){var dimEl=image.dimEl,dim=Dimensions.cover(image,dimEl);this.bgProps.forEach(function(prop){var ref=this$1.props[prop],diff=ref.diff,bgPos=ref.bgPos,steps=ref.steps,attr$$1="bgy"===prop?"height":"width",span=dim[attr$$1]-dimEl[attr$$1];if(bgPos.match(/%$|0px/)){if(span<diff)dimEl[attr$$1]=dim[attr$$1]+diff-span;else if(span>diff){var bgPosFloat=parseFloat(bgPos);bgPosFloat&&(this$1.props[prop].steps=steps.map(function(step){return step-(span-diff)/(100/bgPosFloat)}))}dim=Dimensions.cover(image,dimEl)}}),css(this.$el,{backgroundSize:dim.width+"px "+dim.height+"px",backgroundRepeat:"no-repeat"})}else css(this.$el,{backgroundSize:"",backgroundRepeat:""})},events:["load","resize"]}],methods:{reset:function(){var this$1=this;each(this.getCss(0),function(_,prop){return css(this$1.$el,prop,"")})},getCss:function(percent){var props=this.props,translated=!1;return Object.keys(props).reduce(function(css$$1,prop){var ref=props[prop],steps=ref.steps,unit=ref.unit,pos=ref.pos,value=getValue(steps,percent);switch(prop){case"x":case"y":if(translated)break;var ref$1=["x","y"].map(function(dir){return prop===dir?value+unit:props[dir]?getValue(props[dir].steps,percent)+props[dir].unit:0}),x=ref$1[0],y=ref$1[1];translated=css$$1.transform+=" translate3d("+x+", "+y+", 0)";break;case"rotate":css$$1.transform+=" rotate("+value+"deg)";break;case"scale":css$$1.transform+=" scale("+value+")";break;case"bgy":case"bgx":css$$1["background-position-"+prop[2]]="calc("+pos+" + "+(value+unit)+")";break;case"color":case"backgroundColor":case"borderColor":var ref$2=getStep(steps,percent),start=ref$2[0],end=ref$2[1],p=ref$2[2];css$$1[prop]="rgba("+start.map(function(value,i){return value+=p*(end[i]-value),3===i?toFloat(value):parseInt(value,10)}).join(",")+")";break;case"blur":css$$1.filter+=" blur("+value+"px)";break;case"hue":css$$1.filter+=" hue-rotate("+value+"deg)";break;case"fopacity":css$$1.filter+=" opacity("+value+"%)";break;case"grayscale":case"invert":case"saturate":case"sepia":css$$1.filter+=" "+prop+"("+value+"%)";break;default:css$$1[prop]=value}return css$$1},{transform:"",filter:""})}}};function getStep(steps,percent){var count=steps.length-1,index$$1=Math.min(Math.floor(count*percent),count-1),step=steps.slice(index$$1,index$$1+2);return step.push(1===percent?1:percent%(1/count)*count),step}function getValue(steps,percent){var ref=getStep(steps,percent),start=ref[0],end=ref[1],p=ref[2];return(isNumber(start)?start+Math.abs(start-end)*p*(start<end?1:-1):+end).toFixed(2)}var Parallax$1={mixins:[Parallax],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(ref,$el){var target=ref.target;return target&&query(target,$el)||$el}},update:[{read:function(ref){return{prev:ref.percent,percent:function(percent,easing){return clamp(percent*(1-(easing-easing*percent)))}(scrolledOver(this.target)/(this.viewport||1),this.easing)}},write:function(ref,ref$1){var prev=ref.prev,percent=ref.percent,active=ref.active;"scroll"!==ref$1.type&&(prev=!1),active?prev!==percent&&css(this.$el,this.getCss(percent)):this.reset()},events:["scroll","load","resize"]}]};var SliderReactive={update:[{write:function(){if(!this.stack.length&&!this.dragging){var index$$1=this.getValidIndex();delete this.index,removeClass(this.slides,this.clsActive,this.clsActivated),this.show(index$$1)}},events:["load","resize"]}]};function getLeft(el,list,center){var left=getElLeft(el,list);return center?left-function(el,list){return list.offsetWidth/2-el.offsetWidth/2}(el,list):Math.min(left,getMax(list))}function getMax(list){return Math.max(0,getWidth(list)-list.offsetWidth)}function getWidth(list){return slides(list).reduce(function(right,el){return el.offsetWidth+right},0)}function getElLeft(el,list){return(el.offsetLeft+(isRtl?el.offsetWidth-list.offsetWidth:0))*(isRtl?-1:1)}function triggerUpdate$1(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}function slides(list){return toNodes(list.children)}var Slider$1={mixins:[Class,Slider,SliderReactive],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:"uk-slider-item",selList:".uk-slider-items",selNav:".uk-slider-nav",clsContainer:"uk-slider-container",Transitioner:function(prev,next,dir,ref){var center=ref.center,easing=ref.easing,list=ref.list,deferred=new Deferred,from=prev?getLeft(prev,list,center):getLeft(next,list,center)+next.offsetWidth*dir,to=next?getLeft(next,list,center):from+prev.offsetWidth*dir*(isRtl?-1:1);return{dir:dir,show:function(duration,percent,linear){void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),prev&&this.updateTranslates(),percent=prev?percent:clamp(percent,0,1),triggerUpdate$1(this.getItemIn(),"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),prev&&triggerUpdate$1(this.getItemIn(!0),"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Transition.start(list,{transform:translate(-to*(isRtl?-1:1),"px")},duration,timing).then(deferred.resolve,noop),deferred.promise},stop:function(){return Transition.stop(list)},cancel:function(){Transition.cancel(list)},reset:function(){css(list,"transform","")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel(list),this.show(duration,percent,!0)},translate:function(percent){var distance=this.getDistance()*dir*(isRtl?-1:1);css(list,"transform",translate(clamp(distance-distance*percent-to,-getWidth(list),list.offsetWidth)*(isRtl?-1:1),"px")),this.updateTranslates(),prev&&(percent=clamp(percent,-1,1),triggerUpdate$1(this.getItemIn(),"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate$1(this.getItemIn(!0),"itemtranslateout",{percent:1-percent,dir:dir}))},percent:function(){return Math.abs((css(list,"transform").split(",")[4]*(isRtl?-1:1)+from)/(to-from))},getDistance:function(){return Math.abs(to-from)},getItemIn:function(out){void 0===out&&(out=!1);var actives=this.getActives(),all=sortBy(slides(list),"offsetLeft"),i=index(all,actives[dir*(out?-1:1)>0?actives.length-1:0]);return~i&&all[i+(prev&&!out?dir:0)]},getActives:function(){var left=getLeft(prev||next,list,center);return sortBy(slides(list).filter(function(slide){var slideLeft=getElLeft(slide,list);return slideLeft>=left&&slideLeft+slide.offsetWidth<=list.offsetWidth+left}),"offsetLeft")},updateTranslates:function(){var actives=this.getActives();slides(list).forEach(function(slide){var isActive=includes(actives,slide);triggerUpdate$1(slide,"itemtranslate"+(isActive?"in":"out"),{percent:isActive?1:0,dir:slide.offsetLeft<=next.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return getWidth(this.list)/this.length},finite:function(ref){return ref.finite||getWidth(this.list)<this.list.offsetWidth+slides(this.list).reduce(function(right,el){return Math.max(right,el.offsetWidth)},0)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return this.sets[this.sets.length-1];css(this.slides,"order","");for(var max=getMax(this.list),i=this.length;i--;)if(getElLeft(this.list.children[i],this.list)<max)return Math.min(i+1,this.length-1);return 0},sets:function(ref){var this$1=this,sets=ref.sets,width$$1=this.list.offsetWidth/(this.center?2:1),left=0,leftCenter=width$$1,slideLeft=0;return(sets=sets&&this.slides.reduce(function(sets,slide,i){var slideWidth=offset(slide).width;if(slideLeft+slideWidth>left&&(!this$1.center&&i>this$1.maxIndex&&(i=this$1.maxIndex),!includes(sets,i))){var cmp=this$1.slides[i+1];this$1.center&&cmp&&slideWidth<leftCenter-offset(cmp).width/2?leftCenter-=slideWidth:(leftCenter=width$$1,sets.push(i),left=slideLeft+width$$1+(this$1.center?slideWidth/2:0))}return slideLeft+=slideWidth,sets},[]))&&sets.length&&sets},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){toggleClass(this.$el,this.clsContainer,!$("."+this.clsContainer,this.$el))},update:{write:function(){var this$1=this;$$("["+this.attrItem+"],[data-"+this.attrItem+"]",this.$el).forEach(function(el){var index$$1=data(el,this$1.attrItem);this$1.maxIndex&&toggleClass(el,"uk-hidden",isNumeric(index$$1)&&(this$1.sets&&!includes(this$1.sets,toFloat(index$$1))||index$$1>this$1.maxIndex))})},events:["load","resize"]},events:{beforeitemshow:function(e){!this.dragging&&this.sets&&this.stack.length<2&&!includes(this.sets,this.index)&&(this.index=this.getValidIndex());var diff=Math.abs(this.index-this.prevIndex+(this.dir>0&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&diff>1){for(var i=0;i<diff;i++)this.stack.splice(1,0,this.dir>0?"next":"previous");e.preventDefault()}else this.duration=speedUp(this.avgWidth/this.velocity)*((this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).offsetWidth/this.avgWidth),this.reorder()},itemshow:function(){!isUndefined(this.prevIndex)&&addClass(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var this$1=this,actives=this._getTransitioner(this.index).getActives();this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActive,includes(actives,slide))}),(!this.sets||includes(this.sets,toFloat(this.index)))&&this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActivated,includes(actives,slide))})}},methods:{reorder:function(){var this$1=this;if(css(this.slides,"order",""),!this.finite){var index$$1=this.dir>0&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(slide,i){return css(slide,"order",this$1.dir>0&&i<index$$1?1:this$1.dir<0&&i>=this$1.index?-1:"")}),this.center)for(var next=this.slides[index$$1],width$$1=this.list.offsetWidth/2-next.offsetWidth/2,j=0;width$$1>0;){var slideIndex=this$1.getIndex(--j+index$$1,index$$1),slide=this$1.slides[slideIndex];css(slide,"order",slideIndex>index$$1?-2:-1),width$$1-=slide.offsetWidth}}},getValidIndex:function(index$$1,prevIndex){var prev;if(void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),index$$1=this.getIndex(index$$1,prevIndex),!this.sets)return index$$1;do{if(includes(this.sets,index$$1))return index$$1;prev=index$$1,index$$1=this.getIndex(index$$1+this.dir,prevIndex)}while(index$$1!==prev);return index$$1}}},SliderParallax={mixins:[Parallax],data:{selItem:"!li"},computed:{item:function(ref,$el){return query(ref.selItem,$el)}},events:[{name:"itemshown",self:!0,el:function(){return this.item},handler:function(){css(this.$el,this.getCss(.5))}},{name:"itemin itemout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,duration=ref_detail.duration,timing=ref_detail.timing,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent))),Transition.start(this.$el,this.getCss(isIn(type)?.5:dir>0?1:0),duration,timing).catch(noop)}},{name:"transitioncanceled transitionend",self:!0,el:function(){return this.item},handler:function(){Transition.cancel(this.$el)}},{name:"itemtranslatein itemtranslateout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent)))}}]};function isIn(type){return endsWith(type,"in")}function getCurrent(type,dir,percent){return percent/=2,isIn(type)?dir<0?1-percent:percent:dir<0?percent:1-percent}var obj$1,obj$2,Animations$2=assign({},Animations,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(1.5),zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1+.5*percent),zIndex:0},{zIndex:-1}]}},pull:{show:function(dir){return dir<0?[{transform:translate(30),zIndex:-1},{transform:translate(),zIndex:0}]:[{transform:translate(-100),zIndex:0},{transform:translate(),zIndex:-1}]},percent:function(current,next,dir){return dir<0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(30*percent),zIndex:-1},{transform:translate(-100*(1-percent)),zIndex:0}]:[{transform:translate(100*-percent),zIndex:0},{transform:translate(30*(1-percent)),zIndex:-1}]}},push:{show:function(dir){return dir<0?[{transform:translate(100),zIndex:0},{transform:translate(),zIndex:-1}]:[{transform:translate(-30),zIndex:-1},{transform:translate(),zIndex:0}]},percent:function(current,next,dir){return dir>0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(100*percent),zIndex:0},{transform:translate(-30*(1-percent)),zIndex:-1}]:[{transform:translate(-30*percent),zIndex:-1},{transform:translate(100*(1-percent)),zIndex:0}]}}}),Slideshow$1={mixins:[Class,Slideshow,SliderReactive],props:{ratio:String,minHeight:Boolean,maxHeight:Boolean},data:{ratio:"16:9",minHeight:!1,maxHeight:!1,selList:".uk-slideshow-items",attrItem:"uk-slideshow-item",selNav:".uk-slideshow-nav",Animations:Animations$2},update:{read:function(){var ref=this.ratio.split(":").map(Number),width$$1=ref[0],height$$1=ref[1];return height$$1=height$$1*this.$el.offsetWidth/width$$1,this.minHeight&&(height$$1=Math.max(this.minHeight,height$$1)),this.maxHeight&&(height$$1=Math.min(this.maxHeight,height$$1)),{height:height$$1}},write:function(ref){var hgt=ref.height;height(this.list,Math.floor(hgt))},events:["load","resize"]}},Sortable={mixins:[Class,Animate],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:"uk-sortable-item",clsPlaceholder:"uk-sortable-placeholder",clsDrag:"uk-sortable-drag",clsDragState:"uk-drag",clsBase:"uk-sortable",clsNoDrag:"uk-sortable-nodrag",clsEmpty:"uk-sortable-empty",clsCustom:"",handle:!1},init:function(){var this$1=this;["init","start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){this$1.scrollY=window.pageYOffset;var ref=getPos$1(e),x=ref.x,y=ref.y;this$1.pos={x:x,y:y},fn(e)}})},events:(obj$1={},obj$1[pointerDown]="init",obj$1),update:{write:function(){if(this.clsEmpty&&toggleClass(this.$el,this.clsEmpty,!this.$el.children.length),this.drag){offset(this.drag,{top:this.pos.y+this.origin.top,left:this.pos.x+this.origin.left});var scroll,top=offset(this.drag).top,bottom=top+this.drag.offsetHeight;top>0&&top<this.scrollY?scroll=this.scrollY-5:bottom<height(document)&&bottom>height(window)+this.scrollY&&(scroll=this.scrollY+5),scroll&&setTimeout(function(){return window.scroll(window.pageXOffset,scroll)},5)}}},methods:{init:function(e){var target=e.target,button=e.button,defaultPrevented=e.defaultPrevented,placeholder=toNodes(this.$el.children).filter(function(el){return within(target,el)})[0];!placeholder||isInput(e.target)||this.handle&&!within(target,this.handle)||button>0||within(target,"."+this.clsNoDrag)||defaultPrevented||(e.preventDefault(),this.touched=[this],this.placeholder=placeholder,this.origin=assign({target:target,index:index(placeholder)},this.pos),on(document,pointerMove,this.move),on(document,pointerUp,this.end),on(window,"scroll",this.scroll),this.threshold||this.start(e))},start:function(e){this.drag=append(this.$container,this.placeholder.outerHTML.replace(/^<li/i,"<div").replace(/li>$/i,"div>")),css(this.drag,assign({boxSizing:"border-box",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight},css(this.placeholder,["paddingLeft","paddingRight","paddingTop","paddingBottom"]))),attr(this.drag,"uk-no-boot",""),addClass(this.drag,this.clsDrag,this.clsCustom),height(this.drag.firstElementChild,height(this.placeholder.firstElementChild));var ref=offset(this.placeholder),left=ref.left,top=ref.top;assign(this.origin,{left:left-this.pos.x,top:top-this.pos.y}),addClass(this.placeholder,this.clsPlaceholder),addClass(this.$el.children,this.clsItem),addClass(document.documentElement,this.clsDragState),trigger(this.$el,"start",[this,this.placeholder]),this.move(e)},move:function(e){if(this.drag){this.$emit();var target="mousemove"===e.type?e.target:document.elementFromPoint(this.pos.x-document.body.scrollLeft,this.pos.y-document.body.scrollTop),sortable=this.getSortable(target),previous=this.getSortable(this.placeholder),move=sortable!==previous;if(sortable&&!within(target,this.placeholder)&&(!move||sortable.group&&sortable.group===previous.group)){if(target=sortable.$el===target.parentNode&&target||toNodes(sortable.$el.children).filter(function(element){return within(target,element)})[0],move)previous.remove(this.placeholder);else if(!target)return;sortable.insert(this.placeholder,target),includes(this.touched,sortable)||this.touched.push(sortable)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(e)},scroll:function(){var scroll=window.pageYOffset;scroll!==this.scrollY&&(this.pos.y+=scroll-this.scrollY,this.scrollY=scroll,this.$emit())},end:function(e){if(off(document,pointerMove,this.move),off(document,pointerUp,this.end),off(window,"scroll",this.scroll),this.drag){preventClick();var sortable=this.getSortable(this.placeholder);this===sortable?this.origin.index!==index(this.placeholder)&&trigger(this.$el,"moved",[this,this.placeholder]):(trigger(sortable.$el,"added",[sortable,this.placeholder]),trigger(this.$el,"removed",[this,this.placeholder])),trigger(this.$el,"stop",[this,this.placeholder]),remove(this.drag),this.drag=null;var classes=this.touched.map(function(sortable){return sortable.clsPlaceholder+" "+sortable.clsItem}).join(" ");this.touched.forEach(function(sortable){return removeClass(sortable.$el.children,classes)}),removeClass(document.documentElement,this.clsDragState)}else"mouseup"!==e.type&&within(e.target,"a[href]")&&(location.href=closest(e.target,"a[href]").href)},insert:function(element,target){var this$1=this;addClass(this.$el.children,this.clsItem);var insert=function(){target?!within(element,this$1.$el)||function(element,target){return element.parentNode===target.parentNode&&index(element)>index(target)}(element,target)?before(target,element):after(target,element):append(this$1.$el,element)};this.animation?this.animate(insert):insert()},remove:function(element){within(element,this.$el)&&(this.animation?this.animate(function(){return remove(element)}):remove(element))},getSortable:function(element){return element&&(this.$getComponent(element,"sortable")||this.getSortable(element.parentNode))}}};var actives=[],Tooltip={attrs:!0,args:"title",mixins:[Container,Togglable,Position],props:{delay:Number,title:String},data:{pos:"top",title:"",delay:0,animation:["uk-animation-scale-up"],duration:100,cls:"uk-active",clsPos:"uk-tooltip"},beforeConnect:function(){this._hasTitle=hasAttr(this.$el,"title"),attr(this.$el,{title:"","aria-expanded":!1})},disconnected:function(){this.hide(),attr(this.$el,{title:this._hasTitle?this.title:null,"aria-expanded":null})},methods:{show:function(){var this$1=this;includes(actives,this)||(actives.forEach(function(active){return active.hide()}),actives.push(this),this._unbind=on(document,"click",function(e){return!within(e.target,this$1.$el)&&this$1.hide()}),clearTimeout(this.showTimer),this.tooltip=append(this.container,'<div class="'+this.clsPos+'" aria-hidden><div class="'+this.clsPos+'-inner">'+this.title+"</div></div>"),attr(this.$el,"aria-expanded",!0),this.positionAt(this.tooltip,this.$el),this.origin="y"===this.getAxis()?flipPosition(this.dir)+"-"+this.align:this.align+"-"+flipPosition(this.dir),this.showTimer=setTimeout(function(){this$1.toggleElement(this$1.tooltip,!0),this$1.hideTimer=setInterval(function(){isVisible(this$1.$el)||this$1.hide()},150)},this.delay))},hide:function(){var index$$1=actives.indexOf(this);!~index$$1||matches(this.$el,"input")&&this.$el===document.activeElement||(actives.splice(index$$1,1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),attr(this.$el,"aria-expanded",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&remove(this.tooltip),this.tooltip=!1,this._unbind())}},events:(obj$2={},obj$2["focus "+pointerEnter+" "+pointerDown]=function(e){e.type===pointerDown&&isTouch(e)||this.show()},obj$2.blur="hide",obj$2[pointerLeave]=function(e){isTouch(e)||this.hide()},obj$2)},Upload={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:"uk-dragover",concurrent:1,maxSize:0,method:"POST",mime:!1,msgInvalidMime:"Invalid File Type: %s",msgInvalidName:"Invalid File Name: %s",msgInvalidSize:"Invalid File Size: %s Kilobytes Max",multiple:!1,name:"files[]",params:{},type:"",url:"",abort:noop,beforeAll:noop,beforeSend:noop,complete:noop,completeAll:noop,error:noop,fail:noop,load:noop,loadEnd:noop,loadStart:noop,progress:noop},events:{change:function(e){matches(e.target,'input[type="file"]')&&(e.preventDefault(),e.target.files&&this.upload(e.target.files),e.target.value="")},drop:function(e){stop(e);var transfer=e.dataTransfer;transfer&&transfer.files&&(removeClass(this.$el,this.clsDragover),this.upload(transfer.files))},dragenter:function(e){stop(e)},dragover:function(e){stop(e),addClass(this.$el,this.clsDragover)},dragleave:function(e){stop(e),removeClass(this.$el,this.clsDragover)}},methods:{upload:function(files){var this$1=this;if(files.length){trigger(this.$el,"upload",[files]);for(var i=0;i<files.length;i++){if(this$1.maxSize&&1e3*this$1.maxSize<files[i].size)return void this$1.fail(this$1.msgInvalidSize.replace("%s",this$1.maxSize));if(this$1.allow&&!match(this$1.allow,files[i].name))return void this$1.fail(this$1.msgInvalidName.replace("%s",this$1.allow));if(this$1.mime&&!match(this$1.mime,files[i].type))return void this$1.fail(this$1.msgInvalidMime.replace("%s",this$1.mime))}this.multiple||(files=[files[0]]),this.beforeAll(this,files);var chunks=function(files,size){for(var chunks=[],i=0;i<files.length;i+=size){for(var chunk=[],j=0;j<size;j++)chunk.push(files[i+j]);chunks.push(chunk)}return chunks}(files,this.concurrent),upload=function(files){var data$$1=new FormData;for(var key in files.forEach(function(file){return data$$1.append(this$1.name,file)}),this$1.params)data$$1.append(key,this$1.params[key]);ajax(this$1.url,{data:data$$1,method:this$1.method,responseType:this$1.type,beforeSend:function(env){var xhr=env.xhr;xhr.upload&&on(xhr.upload,"progress",this$1.progress),["loadStart","load","loadEnd","abort"].forEach(function(type){return on(xhr,type.toLowerCase(),this$1[type])}),this$1.beforeSend(env)}}).then(function(xhr){this$1.complete(xhr),chunks.length?upload(chunks.shift()):this$1.completeAll(xhr)},function(e){return this$1.error(e.message)})};upload(chunks.shift())}}}};function match(pattern,path){return path.match(new RegExp("^"+pattern.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$","i"))}function stop(e){e.preventDefault(),e.stopPropagation()}return UIkit.component("countdown",Countdown),UIkit.component("filter",Filter),UIkit.component("lightbox",Lightbox),UIkit.component("lightboxPanel",LightboxPanel),UIkit.component("notification",Notification),UIkit.component("parallax",Parallax$1),UIkit.component("slider",Slider$1),UIkit.component("sliderParallax",SliderParallax),UIkit.component("slideshow",Slideshow$1),UIkit.component("slideshowParallax",SliderParallax),UIkit.component("sortable",Sortable),UIkit.component("tooltip",Tooltip),UIkit.component("upload",Upload),function(UIkit){var connect=UIkit.connect,disconnect=UIkit.disconnect;function init(){apply$$1(document.body,connect),fastdom.flush(),new MutationObserver(function(mutations){return mutations.forEach(applyMutation)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),UIkit._initialized=!0}function applyMutation(mutation){var target=mutation.target;("attributes"!==mutation.type?function(ref){for(var addedNodes=ref.addedNodes,removedNodes=ref.removedNodes,i=0;i<addedNodes.length;i++)apply$$1(addedNodes[i],connect);for(var i$1=0;i$1<removedNodes.length;i$1++)apply$$1(removedNodes[i$1],disconnect);return!0}(mutation):function(ref){var target=ref.target,attributeName=ref.attributeName;if("href"===attributeName)return!0;var name=getComponentName(attributeName);if(name&&name in UIkit){if(hasAttr(target,attributeName))return UIkit[name](target),!0;var component=UIkit.getComponent(target,name);return component?(component.$destroy(),!0):void 0}}(mutation))&&UIkit.update(target)}function apply$$1(node,fn){if(1===node.nodeType&&!hasAttr(node,"uk-no-boot"))for(fn(node),node=node.firstElementChild;node;){var next=node.nextElementSibling;apply$$1(node,fn),node=next}}"MutationObserver"in window&&(document.body?init():new MutationObserver(function(){document.body&&(this.disconnect(),init())}).observe(document,{childList:!0,subtree:!0}))}(UIkit),UIkit}); +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2pzL3NyYy9mb3VjLmpzIiwiLi4vanMvc3JjL2Vycm9ycy5qcyIsIi4uL2pzL3NyYy9jb3VudGRvd24uanMiLCIuLi9qcy9zcmMvamFtcy5qcyIsIi4uL2pzL3NyYy9yZXZpc2lvbl9kaWZmLmpzIiwiLi4vanMvc3JjL3dpa2kuanMiLCIuLi9qcy92ZW5kb3IvbW9tZW50L21vbWVudC5qcyIsIi4uL2pzL3ZlbmRvci9qcXVlcnkvanF1ZXJ5LTMuMy4xLmpzIiwiLi4vanMvdmVuZG9yL21vbWVudC9tb21lbnQtdGltZXpvbmUuanMiLCIuLi9qcy92ZW5kb3IvdHlwZXdyaXRlci90eXBld3JpdGVyLmpzIiwiLi4vanMvdmVuZG9yL3Vpa2l0L3Vpa2l0LmpzIl0sIm5hbWVzIjpbImdldFNjcmlwdCIsInVybCIsImludGVncml0eSIsImNyb3NzX29yaWdpbiIsInNjcmlwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJzcmMiLCJkZWZlciIsInVuZGVmaW5lZCIsImNyb3NzT3JpZ2luIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhcHBlbmRDaGlsZCIsInNldENsYXNzIiwic2VsZWN0b3IiLCJteV9jbGFzcyIsInF1ZXJ5U2VsZWN0b3IiLCJjbGFzc05hbWUiLCJyZW1vdmVDbGFzcyIsImVsZW1lbnQiLCJyZWciLCJSZWdFeHAiLCJyZXBsYWNlIiwiZXJyb3JfdHlwZXdyaXRlciIsImFwcCIsImdldEVsZW1lbnRCeUlkIiwidHlwZXdyaXRlciIsIlR5cGV3cml0ZXIiLCJsb29wIiwiZGVsZXRlU3BlZWQiLCJ0eXBpbmdTcGVlZCIsImRldk1vZGUiLCJvbmNsaWNrIiwiY3VycmVudF9jbGFzcyIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInN0b3AiLCJhcHBlbmRUZXh0IiwicGF1c2VGb3IiLCJ0eXBlU3RyaW5nIiwiZGVsZXRlQ2hhcnMiLCJjaGFuZ2VTZXR0aW5ncyIsIndpbmRvdyIsIl9SZXF1ZXN0TWV0aG9kIiwiX1BhdGgiLCJfQ29kZSIsIl9FcnJvck1zZyIsInN0YXJ0Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInN0YXJ0amFtIiwiRGF0ZSIsIlVUQyIsImVuZGphbSIsIm5vdyIsImdvYWwiLCJnZXRUaW1lIiwiVUlraXQiLCJub3RpZmljYXRpb24iLCJtZXNzYWdlIiwicG9zIiwidGltZW91dCIsImhlYWRpbmciLCJpbm5lckhUTUwiLCJyZWZyZXNoQ291bnRkb3duIiwic2V0SW50ZXJ2YWwiLCJkZWx0YSIsImNsZWFySW50ZXJ2YWwiLCJsb2NhdGlvbiIsInJlbG9hZCIsImRheXMiLCJNYXRoIiwiZmxvb3IiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwiZSIsIkphbUFjdGlvbnMiLCJbb2JqZWN0IE9iamVjdF0iLCJjc3JmX3Rva2VuIiwidGhpcyIsImFjdGlvbiIsIm1ldGhvZCIsImRhdGEiLCJjYWxsYmFjayIsIiQiLCJhamF4IiwiZGF0YVR5cGUiLCJoZWFkZXJzIiwiWC1DU1JGVG9rZW4iLCJkb25lIiwiZmFpbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb250ZW50VHlwZSIsImphbSIsInN0YXRlIiwic2VuZCIsInNlbmRfanNvbiIsImlkIiwiZm9ybSIsInF1ZXN0aW9uIiwicmVhc29uIiwibnVtYmVyIiwicGFydGljaXBhbnQiLCJ0ZWFtIiwibWVtYmVyIiwicmV2aXNpb25fZGlmZiIsInJldmlzaW9ucyIsImJ1dHRvbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaWRfcmVnIiwiZ2V0UmV2aXNpb25JZCIsIm1hdGNoIiwiZ2V0UmV2aXNpb24iLCJmaWx0ZXIiLCJ4IiwiZm9yRWFjaCIsImJ1dHRvbiIsImNoZWNrZWQiLCJvbmNoYW5nZSIsInJldiIsImFmdCIsImJlZiIsImRhdGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJocmVmIiwicmFkaW9CdXR0b25DaGVja2VkIiwid2lraV9zaWRlYmFyIiwic2lkZWJhciIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwiYWRkIiwiZ2xvYmFsIiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJtb21lbnQiLCJob29rQ2FsbGJhY2siLCJzb21lIiwiaG9va3MiLCJhcHBseSIsImFyZ3VtZW50cyIsImlzQXJyYXkiLCJpbnB1dCIsIkFycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiaXNPYmplY3QiLCJpc1VuZGVmaW5lZCIsImlzTnVtYmVyIiwiaXNEYXRlIiwibWFwIiwiYXJyIiwiZm4iLCJpIiwicmVzIiwibGVuZ3RoIiwicHVzaCIsImhhc093blByb3AiLCJhIiwiYiIsImhhc093blByb3BlcnR5IiwiZXh0ZW5kIiwidmFsdWVPZiIsImNyZWF0ZVVUQyIsImZvcm1hdCIsImxvY2FsZSIsInN0cmljdCIsImNyZWF0ZUxvY2FsT3JVVEMiLCJ1dGMiLCJnZXRQYXJzaW5nRmxhZ3MiLCJtIiwiX3BmIiwiZW1wdHkiLCJ1bnVzZWRUb2tlbnMiLCJ1bnVzZWRJbnB1dCIsIm92ZXJmbG93IiwiY2hhcnNMZWZ0T3ZlciIsIm51bGxJbnB1dCIsImludmFsaWRNb250aCIsImludmFsaWRGb3JtYXQiLCJ1c2VySW52YWxpZGF0ZWQiLCJpc28iLCJwYXJzZWREYXRlUGFydHMiLCJtZXJpZGllbSIsInJmYzI4MjIiLCJ3ZWVrZGF5TWlzbWF0Y2giLCJpc1ZhbGlkIiwiX2lzVmFsaWQiLCJmbGFncyIsInBhcnNlZFBhcnRzIiwiaXNOb3dWYWxpZCIsImlzTmFOIiwiX2QiLCJpbnZhbGlkV2Vla2RheSIsIl9zdHJpY3QiLCJiaWdIb3VyIiwiaXNGcm96ZW4iLCJjcmVhdGVJbnZhbGlkIiwiTmFOIiwiZnVuIiwidCIsImxlbiIsIm1vbWVudFByb3BlcnRpZXMiLCJjb3B5Q29uZmlnIiwidG8iLCJmcm9tIiwicHJvcCIsInZhbCIsIl9pc0FNb21lbnRPYmplY3QiLCJfaSIsIl9mIiwiX2wiLCJfdHptIiwiX2lzVVRDIiwiX29mZnNldCIsIl9sb2NhbGUiLCJ1cGRhdGVJblByb2dyZXNzIiwiTW9tZW50IiwiY29uZmlnIiwidXBkYXRlT2Zmc2V0IiwiaXNNb21lbnQiLCJvYmoiLCJhYnNGbG9vciIsImNlaWwiLCJ0b0ludCIsImFyZ3VtZW50Rm9yQ29lcmNpb24iLCJjb2VyY2VkTnVtYmVyIiwidmFsdWUiLCJpc0Zpbml0ZSIsImNvbXBhcmVBcnJheXMiLCJhcnJheTEiLCJhcnJheTIiLCJkb250Q29udmVydCIsIm1pbiIsImxlbmd0aERpZmYiLCJhYnMiLCJkaWZmcyIsIndhcm4iLCJtc2ciLCJzdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MiLCJjb25zb2xlIiwiZGVwcmVjYXRlIiwiZmlyc3RUaW1lIiwiZGVwcmVjYXRpb25IYW5kbGVyIiwiYXJnIiwiYXJncyIsImtleSIsInNsaWNlIiwiam9pbiIsIkVycm9yIiwic3RhY2siLCJrZXlzIiwiZGVwcmVjYXRpb25zIiwiZGVwcmVjYXRlU2ltcGxlIiwibmFtZSIsImlzRnVuY3Rpb24iLCJGdW5jdGlvbiIsIm1lcmdlQ29uZmlncyIsInBhcmVudENvbmZpZyIsImNoaWxkQ29uZmlnIiwiTG9jYWxlIiwic2V0IiwiYWxpYXNlcyIsImFkZFVuaXRBbGlhcyIsInVuaXQiLCJzaG9ydGhhbmQiLCJsb3dlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVVuaXRzIiwidW5pdHMiLCJub3JtYWxpemVPYmplY3RVbml0cyIsImlucHV0T2JqZWN0Iiwibm9ybWFsaXplZFByb3AiLCJub3JtYWxpemVkSW5wdXQiLCJwcmlvcml0aWVzIiwiYWRkVW5pdFByaW9yaXR5IiwicHJpb3JpdHkiLCJ6ZXJvRmlsbCIsInRhcmdldExlbmd0aCIsImZvcmNlU2lnbiIsImFic051bWJlciIsInplcm9zVG9GaWxsIiwicG93IiwibWF4Iiwic3Vic3RyIiwiZm9ybWF0dGluZ1Rva2VucyIsImxvY2FsRm9ybWF0dGluZ1Rva2VucyIsImZvcm1hdEZ1bmN0aW9ucyIsImZvcm1hdFRva2VuRnVuY3Rpb25zIiwiYWRkRm9ybWF0VG9rZW4iLCJ0b2tlbiIsInBhZGRlZCIsIm9yZGluYWwiLCJmdW5jIiwibG9jYWxlRGF0YSIsImZvcm1hdE1vbWVudCIsImV4cGFuZEZvcm1hdCIsImFycmF5IiwibW9tIiwib3V0cHV0IiwibWFrZUZvcm1hdEZ1bmN0aW9uIiwiaW52YWxpZERhdGUiLCJyZXBsYWNlTG9uZ0RhdGVGb3JtYXRUb2tlbnMiLCJsb25nRGF0ZUZvcm1hdCIsImxhc3RJbmRleCIsInRlc3QiLCJtYXRjaDEiLCJtYXRjaDIiLCJtYXRjaDMiLCJtYXRjaDQiLCJtYXRjaDYiLCJtYXRjaDF0bzIiLCJtYXRjaDN0bzQiLCJtYXRjaDV0bzYiLCJtYXRjaDF0bzMiLCJtYXRjaDF0bzQiLCJtYXRjaDF0bzYiLCJtYXRjaFVuc2lnbmVkIiwibWF0Y2hTaWduZWQiLCJtYXRjaE9mZnNldCIsIm1hdGNoU2hvcnRPZmZzZXQiLCJtYXRjaFdvcmQiLCJyZWdleGVzIiwiYWRkUmVnZXhUb2tlbiIsInJlZ2V4Iiwic3RyaWN0UmVnZXgiLCJpc1N0cmljdCIsImdldFBhcnNlUmVnZXhGb3JUb2tlbiIsInJlZ2V4RXNjYXBlIiwibWF0Y2hlZCIsInAxIiwicDIiLCJwMyIsInA0IiwicyIsInRva2VucyIsImFkZFBhcnNlVG9rZW4iLCJhZGRXZWVrUGFyc2VUb2tlbiIsIl93IiwiYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4iLCJfYSIsIllFQVIiLCJNT05USCIsIkRBVEUiLCJIT1VSIiwiTUlOVVRFIiwiU0VDT05EIiwiTUlMTElTRUNPTkQiLCJXRUVLIiwiV0VFS0RBWSIsImRheXNJblllYXIiLCJ5ZWFyIiwiaXNMZWFwWWVhciIsInkiLCJwYXJzZVR3b0RpZ2l0WWVhciIsInBhcnNlSW50IiwiaW5kZXhPZiIsImdldFNldFllYXIiLCJtYWtlR2V0U2V0Iiwia2VlcFRpbWUiLCJzZXQkMSIsImdldCIsIm1vbnRoIiwiZGF5c0luTW9udGgiLCJtb2RNb250aCIsIm8iLCJtb250aHNTaG9ydCIsIm1vbnRocyIsIm1vbnRoc1Nob3J0UmVnZXgiLCJtb250aHNSZWdleCIsIm1vbnRoc1BhcnNlIiwiTU9OVEhTX0lOX0ZPUk1BVCIsImRlZmF1bHRMb2NhbGVNb250aHMiLCJzcGxpdCIsImRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCIsInNldE1vbnRoIiwiZGF5T2ZNb250aCIsImdldFNldE1vbnRoIiwiZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXgiLCJkZWZhdWx0TW9udGhzUmVnZXgiLCJjb21wdXRlTW9udGhzUGFyc2UiLCJjbXBMZW5SZXYiLCJzaG9ydFBpZWNlcyIsImxvbmdQaWVjZXMiLCJtaXhlZFBpZWNlcyIsInNvcnQiLCJfbW9udGhzUmVnZXgiLCJfbW9udGhzU2hvcnRSZWdleCIsIl9tb250aHNTdHJpY3RSZWdleCIsIl9tb250aHNTaG9ydFN0cmljdFJlZ2V4IiwiY3JlYXRlVVRDRGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwic2V0VVRDRnVsbFllYXIiLCJmaXJzdFdlZWtPZmZzZXQiLCJkb3ciLCJkb3kiLCJmd2QiLCJnZXRVVENEYXkiLCJkYXlPZlllYXJGcm9tV2Vla3MiLCJ3ZWVrIiwid2Vla2RheSIsInJlc1llYXIiLCJyZXNEYXlPZlllYXIiLCJkYXlPZlllYXIiLCJ3ZWVrT2ZZZWFyIiwicmVzV2VlayIsIndlZWtPZmZzZXQiLCJ3ZWVrc0luWWVhciIsIndlZWtPZmZzZXROZXh0Iiwid2Vla2RheXNNaW4iLCJ3ZWVrZGF5c1Nob3J0Iiwid2Vla2RheXMiLCJ3ZWVrZGF5c01pblJlZ2V4Iiwid2Vla2RheXNTaG9ydFJlZ2V4Iiwid2Vla2RheXNSZWdleCIsIndlZWtkYXlzUGFyc2UiLCJkIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQiLCJkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4iLCJkZWZhdWx0V2Vla2RheXNSZWdleCIsImRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXgiLCJkZWZhdWx0V2Vla2RheXNNaW5SZWdleCIsImNvbXB1dGVXZWVrZGF5c1BhcnNlIiwibWlucCIsInNob3J0cCIsImxvbmdwIiwibWluUGllY2VzIiwiZGF5IiwiX3dlZWtkYXlzUmVnZXgiLCJfd2Vla2RheXNTaG9ydFJlZ2V4IiwiX3dlZWtkYXlzTWluUmVnZXgiLCJfd2Vla2RheXNTdHJpY3RSZWdleCIsIl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgiLCJfd2Vla2RheXNNaW5TdHJpY3RSZWdleCIsImhGb3JtYXQiLCJsb3dlcmNhc2UiLCJtYXRjaE1lcmlkaWVtIiwiX21lcmlkaWVtUGFyc2UiLCJrSW5wdXQiLCJfaXNQbSIsImlzUE0iLCJfbWVyaWRpZW0iLCJwb3MxIiwicG9zMiIsImdsb2JhbExvY2FsZSIsImdldFNldEhvdXIiLCJiYXNlQ29uZmlnIiwiY2FsZW5kYXIiLCJzYW1lRGF5IiwibmV4dERheSIsIm5leHRXZWVrIiwibGFzdERheSIsImxhc3RXZWVrIiwic2FtZUVsc2UiLCJMVFMiLCJMVCIsIkwiLCJMTCIsIkxMTCIsIkxMTEwiLCJkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIiwicmVsYXRpdmVUaW1lIiwiZnV0dXJlIiwicGFzdCIsInNzIiwibW0iLCJoIiwiaGgiLCJkZCIsIk0iLCJNTSIsInl5IiwibWVyaWRpZW1QYXJzZSIsImxvY2FsZXMiLCJsb2NhbGVGYW1pbGllcyIsIm5vcm1hbGl6ZUxvY2FsZSIsImxvYWRMb2NhbGUiLCJvbGRMb2NhbGUiLCJfYWJiciIsInJlcXVpcmUiLCJnZXRTZXRHbG9iYWxMb2NhbGUiLCJ2YWx1ZXMiLCJnZXRMb2NhbGUiLCJkZWZpbmVMb2NhbGUiLCJhYmJyIiwiX2NvbmZpZyIsInBhcmVudExvY2FsZSIsIm5hbWVzIiwiaiIsIm5leHQiLCJjaG9vc2VMb2NhbGUiLCJjaGVja092ZXJmbG93IiwiX292ZXJmbG93RGF5T2ZZZWFyIiwiX292ZXJmbG93V2Vla3MiLCJfb3ZlcmZsb3dXZWVrZGF5IiwiZGVmYXVsdHMiLCJjIiwiY29uZmlnRnJvbUFycmF5IiwiY3VycmVudERhdGUiLCJleHBlY3RlZFdlZWtkYXkiLCJ5ZWFyVG9Vc2UiLCJub3dWYWx1ZSIsIl91c2VVVEMiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImN1cnJlbnREYXRlQXJyYXkiLCJ3Iiwid2Vla1llYXIiLCJ0ZW1wIiwid2Vla2RheU92ZXJmbG93IiwiR0ciLCJXIiwiRSIsImNyZWF0ZUxvY2FsIiwiX3dlZWsiLCJjdXJXZWVrIiwiZ2ciLCJfZGF5T2ZZZWFyIiwiZGF5T2ZZZWFyRnJvbVdlZWtJbmZvIiwiX25leHREYXkiLCJtcyIsInNldEZ1bGxZZWFyIiwiZ2V0RGF5Iiwic2V0VVRDTWludXRlcyIsImdldFVUQ01pbnV0ZXMiLCJleHRlbmRlZElzb1JlZ2V4IiwiYmFzaWNJc29SZWdleCIsInR6UmVnZXgiLCJpc29EYXRlcyIsImlzb1RpbWVzIiwiYXNwTmV0SnNvblJlZ2V4IiwiY29uZmlnRnJvbUlTTyIsImwiLCJhbGxvd1RpbWUiLCJkYXRlRm9ybWF0IiwidGltZUZvcm1hdCIsInR6Rm9ybWF0Iiwic3RyaW5nIiwiZXhlYyIsImNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQiLCJleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzIiwieWVhclN0ciIsIm1vbnRoU3RyIiwiZGF5U3RyIiwiaG91clN0ciIsIm1pbnV0ZVN0ciIsInNlY29uZFN0ciIsInJlc3VsdCIsInVudHJ1bmNhdGVZZWFyIiwib2JzT2Zmc2V0cyIsIlVUIiwiR01UIiwiRURUIiwiRVNUIiwiQ0RUIiwiQ1NUIiwiTURUIiwiTVNUIiwiUERUIiwiUFNUIiwiY29uZmlnRnJvbVJGQzI4MjIiLCJwYXJzZWRBcnJheSIsIndlZWtkYXlTdHIiLCJwYXJzZWRJbnB1dCIsImNoZWNrV2Vla2RheSIsIm9ic09mZnNldCIsIm1pbGl0YXJ5T2Zmc2V0IiwibnVtT2Zmc2V0IiwiaG0iLCJjYWxjdWxhdGVPZmZzZXQiLCJJU09fODYwMSIsIlJGQ18yODIyIiwic2tpcHBlZCIsInN0cmluZ0xlbmd0aCIsInRvdGFsUGFyc2VkSW5wdXRMZW5ndGgiLCJob3VyIiwiaXNQbSIsIm1lcmlkaWVtSG91ciIsIm1lcmlkaWVtRml4V3JhcCIsInByZXBhcmVDb25maWciLCJwcmVwYXJzZSIsInRlbXBDb25maWciLCJiZXN0TW9tZW50Iiwic2NvcmVUb0JlYXQiLCJjdXJyZW50U2NvcmUiLCJzY29yZSIsImNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheSIsImNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrIiwiY29uZmlnRnJvbVN0cmluZyIsIm1pbnV0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIiwiY29uZmlnRnJvbU9iamVjdCIsImNvbmZpZ0Zyb21JbnB1dCIsImlzVVRDIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImsiLCJpc09iamVjdEVtcHR5IiwicHJvdG90eXBlTWluIiwib3RoZXIiLCJwcm90b3R5cGVNYXgiLCJwaWNrQnkiLCJtb21lbnRzIiwib3JkZXJpbmciLCJEdXJhdGlvbiIsImR1cmF0aW9uIiwieWVhcnMiLCJxdWFydGVycyIsInF1YXJ0ZXIiLCJ3ZWVrcyIsIm1pbGxpc2Vjb25kcyIsInVuaXRIYXNEZWNpbWFsIiwicGFyc2VGbG9hdCIsImlzRHVyYXRpb25WYWxpZCIsIl9taWxsaXNlY29uZHMiLCJfZGF5cyIsIl9tb250aHMiLCJfZGF0YSIsIl9idWJibGUiLCJpc0R1cmF0aW9uIiwiYWJzUm91bmQiLCJyb3VuZCIsIm9mZnNldCIsInNlcGFyYXRvciIsInV0Y09mZnNldCIsInNpZ24iLCJvZmZzZXRGcm9tU3RyaW5nIiwiY2h1bmtPZmZzZXQiLCJtYXRjaGVyIiwibWF0Y2hlcyIsInBhcnRzIiwiY2xvbmVXaXRoT2Zmc2V0IiwibW9kZWwiLCJkaWZmIiwiY2xvbmUiLCJzZXRUaW1lIiwibG9jYWwiLCJnZXREYXRlT2Zmc2V0IiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJpc1V0YyIsImFzcE5ldFJlZ2V4IiwiaXNvUmVnZXgiLCJjcmVhdGVEdXJhdGlvbiIsInJldCIsImRpZmZSZXMiLCJwYXJzZUlzbyIsImJhc2UiLCJpc0JlZm9yZSIsInBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UiLCJtb21lbnRzRGlmZmVyZW5jZSIsImlucCIsImlzQWZ0ZXIiLCJjcmVhdGVBZGRlciIsImRpcmVjdGlvbiIsInBlcmlvZCIsInRtcCIsImFkZFN1YnRyYWN0IiwiaXNBZGRpbmciLCJpbnZhbGlkIiwic3VidHJhY3QiLCJtb250aERpZmYiLCJ3aG9sZU1vbnRoRGlmZiIsImFuY2hvciIsIm5ld0xvY2FsZURhdGEiLCJkZWZhdWx0Rm9ybWF0IiwiZGVmYXVsdEZvcm1hdFV0YyIsImxhbmciLCJhZGRXZWVrWWVhckZvcm1hdFRva2VuIiwiZ2V0dGVyIiwiZ2V0U2V0V2Vla1llYXJIZWxwZXIiLCJ3ZWVrc1RhcmdldCIsImRheU9mWWVhckRhdGEiLCJpc29XZWVrWWVhciIsIl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlIiwiX29yZGluYWxQYXJzZSIsIl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCIsImdldFNldERheU9mTW9udGgiLCJnZXRTZXRNaW51dGUiLCJnZXRTZXRTZWNvbmQiLCJwYXJzZU1zIiwiZ2V0U2V0TWlsbGlzZWNvbmQiLCJwcm90byIsInByZVBhcnNlUG9zdEZvcm1hdCIsInRpbWUiLCJmb3JtYXRzIiwic29kIiwic3RhcnRPZiIsImNhbGVuZGFyRm9ybWF0IiwiYXNGbG9hdCIsInRoYXQiLCJ6b25lRGVsdGEiLCJlbmRPZiIsImlucHV0U3RyaW5nIiwicG9zdGZvcm1hdCIsIndpdGhvdXRTdWZmaXgiLCJodW1hbml6ZSIsImZyb21Ob3ciLCJ0b05vdyIsImludmFsaWRBdCIsImxvY2FsSW5wdXQiLCJpc0JldHdlZW4iLCJpbmNsdXNpdml0eSIsImlzU2FtZSIsImlucHV0TXMiLCJpc1NhbWVPckFmdGVyIiwiaXNTYW1lT3JCZWZvcmUiLCJwYXJzaW5nRmxhZ3MiLCJwcmlvcml0aXplZCIsInVuaXRzT2JqIiwidSIsImdldFByaW9yaXRpemVkVW5pdHMiLCJpc29XZWVrZGF5IiwidG9BcnJheSIsInRvT2JqZWN0IiwidG9EYXRlIiwidG9JU09TdHJpbmciLCJrZWVwT2Zmc2V0IiwiaW5zcGVjdCIsInpvbmUiLCJpc0xvY2FsIiwicHJlZml4Iiwic3VmZml4IiwidG9KU09OIiwidW5peCIsImNyZWF0aW9uRGF0YSIsImlzb1dlZWsiLCJpc29XZWVrcyIsIndlZWtJbmZvIiwiaXNvV2Vla3NJblllYXIiLCJwYXJzZVdlZWtkYXkiLCJwYXJzZUlzb1dlZWtkYXkiLCJrZWVwTG9jYWxUaW1lIiwia2VlcE1pbnV0ZXMiLCJsb2NhbEFkanVzdCIsIl9jaGFuZ2VJblByb2dyZXNzIiwicGFyc2Vab25lIiwidFpvbmUiLCJoYXNBbGlnbmVkSG91ck9mZnNldCIsImlzRFNUIiwiaXNVdGNPZmZzZXQiLCJ6b25lQWJiciIsInpvbmVOYW1lIiwiZGF0ZXMiLCJpc0RTVFNoaWZ0ZWQiLCJfaXNEU1RTaGlmdGVkIiwicHJvdG8kMSIsImdldCQxIiwiaW5kZXgiLCJmaWVsZCIsInNldHRlciIsImxpc3RNb250aHNJbXBsIiwib3V0IiwibGlzdFdlZWtkYXlzSW1wbCIsImxvY2FsZVNvcnRlZCIsInNoaWZ0IiwiX2NhbGVuZGFyIiwiX2xvbmdEYXRlRm9ybWF0IiwiZm9ybWF0VXBwZXIiLCJ0b1VwcGVyQ2FzZSIsIl9pbnZhbGlkRGF0ZSIsIl9vcmRpbmFsIiwiaXNGdXR1cmUiLCJfcmVsYXRpdmVUaW1lIiwicGFzdEZ1dHVyZSIsInNvdXJjZSIsImlzRm9ybWF0IiwiX21vbnRoc1Nob3J0IiwibW9udGhOYW1lIiwiX21vbnRoc1BhcnNlRXhhY3QiLCJpaSIsImxsYyIsInRvTG9jYWxlTG93ZXJDYXNlIiwiX21vbnRoc1BhcnNlIiwiX2xvbmdNb250aHNQYXJzZSIsIl9zaG9ydE1vbnRoc1BhcnNlIiwiZmlyc3REYXlPZlllYXIiLCJmaXJzdERheU9mV2VlayIsIl93ZWVrZGF5cyIsIl93ZWVrZGF5c01pbiIsIl93ZWVrZGF5c1Nob3J0Iiwid2Vla2RheU5hbWUiLCJfd2Vla2RheXNQYXJzZUV4YWN0IiwiX3dlZWtkYXlzUGFyc2UiLCJfc2hvcnRXZWVrZGF5c1BhcnNlIiwiX21pbldlZWtkYXlzUGFyc2UiLCJfZnVsbFdlZWtkYXlzUGFyc2UiLCJjaGFyQXQiLCJpc0xvd2VyIiwibGFuZ0RhdGEiLCJtYXRoQWJzIiwiYWRkU3VidHJhY3QkMSIsImFic0NlaWwiLCJkYXlzVG9Nb250aHMiLCJtb250aHNUb0RheXMiLCJtYWtlQXMiLCJhbGlhcyIsImFzIiwiYXNNaWxsaXNlY29uZHMiLCJhc1NlY29uZHMiLCJhc01pbnV0ZXMiLCJhc0hvdXJzIiwiYXNEYXlzIiwiYXNXZWVrcyIsImFzTW9udGhzIiwiYXNZZWFycyIsIm1ha2VHZXR0ZXIiLCJ0aHJlc2hvbGRzIiwiYWJzJDEiLCJ0b0lTT1N0cmluZyQxIiwiWSIsIkQiLCJ0b0ZpeGVkIiwidG90YWwiLCJ0b3RhbFNpZ24iLCJ5bVNpZ24iLCJkYXlzU2lnbiIsImhtc1NpZ24iLCJwcm90byQyIiwibW9udGhzRnJvbURheXMiLCJ3aXRoU3VmZml4IiwicG9zTmVnRHVyYXRpb24iLCJyZWxhdGl2ZVRpbWUkMSIsInRvSXNvU3RyaW5nIiwidmVyc2lvbiIsInVwZGF0ZUxvY2FsZSIsInRtcExvY2FsZSIsInJlbGF0aXZlVGltZVJvdW5kaW5nIiwicm91bmRpbmdGdW5jdGlvbiIsInJlbGF0aXZlVGltZVRocmVzaG9sZCIsInRocmVzaG9sZCIsImxpbWl0IiwibXlNb21lbnQiLCJIVE1MNV9GTVQiLCJEQVRFVElNRV9MT0NBTCIsIkRBVEVUSU1FX0xPQ0FMX1NFQ09ORFMiLCJEQVRFVElNRV9MT0NBTF9NUyIsIlRJTUUiLCJUSU1FX1NFQ09ORFMiLCJUSU1FX01TIiwibm9HbG9iYWwiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiY29uY2F0IiwiY2xhc3MydHlwZSIsImhhc093biIsImZuVG9TdHJpbmciLCJPYmplY3RGdW5jdGlvblN0cmluZyIsInN1cHBvcnQiLCJub2RlVHlwZSIsImlzV2luZG93IiwicHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyIsIm5vTW9kdWxlIiwiRE9NRXZhbCIsImNvZGUiLCJkb2MiLCJub2RlIiwidGV4dCIsImhlYWQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJ0b1R5cGUiLCJqUXVlcnkiLCJjb250ZXh0IiwiaW5pdCIsInJ0cmltIiwiaXNBcnJheUxpa2UiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsIm51bSIsInB1c2hTdGFjayIsImVsZW1zIiwibWVyZ2UiLCJwcmV2T2JqZWN0IiwiZWFjaCIsImVsZW0iLCJmaXJzdCIsImVxIiwibGFzdCIsImVuZCIsInNwbGljZSIsIm9wdGlvbnMiLCJjb3B5IiwiY29weUlzQXJyYXkiLCJ0YXJnZXQiLCJkZWVwIiwiaXNQbGFpbk9iamVjdCIsImV4cGFuZG8iLCJyYW5kb20iLCJpc1JlYWR5IiwiZXJyb3IiLCJub29wIiwiQ3RvciIsImlzRW1wdHlPYmplY3QiLCJnbG9iYWxFdmFsIiwidHJpbSIsIm1ha2VBcnJheSIsInJlc3VsdHMiLCJpbkFycmF5IiwiZ3JlcCIsImludmVydCIsImNhbGxiYWNrRXhwZWN0IiwiZ3VpZCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiU2l6emxlIiwiRXhwciIsImdldFRleHQiLCJpc1hNTCIsInRva2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENvbnRleHQiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0iLCJkb2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJwcmVmZXJyZWREb2MiLCJkaXJydW5zIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwidG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJzb3J0T3JkZXIiLCJwb3AiLCJwdXNoX25hdGl2ZSIsImxpc3QiLCJib29sZWFucyIsIndoaXRlc3BhY2UiLCJpZGVudGlmaWVyIiwiYXR0cmlidXRlcyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJhdHRyaWJ1dGVRdW90ZXMiLCJycHNldWRvIiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIsIkNMQVNTIiwiVEFHIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJxdWlja0V4cHIiLCJyc2libGluZyIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsIl8iLCJlc2NhcGVkIiwiZXNjYXBlZFdoaXRlc3BhY2UiLCJoaWdoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwicmNzc2VzY2FwZSIsImZjc3Nlc2NhcGUiLCJjaCIsImFzQ29kZVBvaW50IiwiY2hhckNvZGVBdCIsInVubG9hZEhhbmRsZXIiLCJkaXNhYmxlZEFuY2VzdG9yIiwiYWRkQ29tYmluYXRvciIsImRpc2FibGVkIiwiZGlyIiwiY2hpbGROb2RlcyIsImVscyIsInNlZWQiLCJuaWQiLCJncm91cHMiLCJuZXdTZWxlY3RvciIsIm5ld0NvbnRleHQiLCJvd25lckRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFzYSIsIm5vZGVOYW1lIiwidG9TZWxlY3RvciIsInRlc3RDb250ZXh0IiwicXNhRXJyb3IiLCJjYWNoZSIsImNhY2hlTGVuZ3RoIiwibWFya0Z1bmN0aW9uIiwiYXNzZXJ0IiwiZWwiLCJhZGRIYW5kbGUiLCJhdHRycyIsImhhbmRsZXIiLCJhdHRySGFuZGxlIiwic2libGluZ0NoZWNrIiwiY3VyIiwic291cmNlSW5kZXgiLCJuZXh0U2libGluZyIsImNyZWF0ZUlucHV0UHNldWRvIiwiY3JlYXRlQnV0dG9uUHNldWRvIiwiY3JlYXRlRGlzYWJsZWRQc2V1ZG8iLCJpc0Rpc2FibGVkIiwiY3JlYXRlUG9zaXRpb25hbFBzZXVkbyIsImFyZ3VtZW50IiwibWF0Y2hJbmRleGVzIiwiZG9jdW1lbnRFbGVtZW50IiwiaGFzQ29tcGFyZSIsInN1YldpbmRvdyIsImRlZmF1bHRWaWV3IiwidG9wIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwiY3JlYXRlQ29tbWVudCIsImdldEJ5SWQiLCJnZXRFbGVtZW50c0J5TmFtZSIsImF0dHJJZCIsImZpbmQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwidGFnIiwibWF0Y2hlc1NlbGVjdG9yIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibW96TWF0Y2hlc1NlbGVjdG9yIiwib01hdGNoZXNTZWxlY3RvciIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwiZGlzY29ubmVjdGVkTWF0Y2giLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsImFkb3duIiwiYnVwIiwiY29tcGFyZSIsInNvcnREZXRhY2hlZCIsImF1cCIsImFwIiwiYnAiLCJ1bnNoaWZ0IiwiZXhwciIsImVsZW1lbnRzIiwiYXR0ciIsInNwZWNpZmllZCIsImVzY2FwZSIsInNlbCIsInVuaXF1ZVNvcnQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsImZpcnN0Q2hpbGQiLCJub2RlVmFsdWUiLCJzZWxlY3RvcnMiLCJjcmVhdGVQc2V1ZG8iLCJyZWxhdGl2ZSIsIj4iLCIgIiwiKyIsIn4iLCJwcmVGaWx0ZXIiLCJleGNlc3MiLCJ1bnF1b3RlZCIsIm5vZGVOYW1lU2VsZWN0b3IiLCJwYXR0ZXJuIiwib3BlcmF0b3IiLCJjaGVjayIsIndoYXQiLCJzaW1wbGUiLCJmb3J3YXJkIiwib2ZUeXBlIiwieG1sIiwidW5pcXVlQ2FjaGUiLCJvdXRlckNhY2hlIiwibm9kZUluZGV4IiwicGFyZW50IiwidXNlQ2FjaGUiLCJsYXN0Q2hpbGQiLCJ1bmlxdWVJRCIsInBzZXVkbyIsInNldEZpbHRlcnMiLCJpZHgiLCJub3QiLCJ1bm1hdGNoZWQiLCJoYXMiLCJpbm5lclRleHQiLCJlbGVtTGFuZyIsImhhc2giLCJyb290IiwiZm9jdXMiLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJ0YWJJbmRleCIsImVuYWJsZWQiLCJzZWxlY3RlZCIsInNlbGVjdGVkSW5kZXgiLCJoZWFkZXIiLCJldmVuIiwib2RkIiwibHQiLCJndCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxlIiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiY29tYmluYXRvciIsInNraXAiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0NhY2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBvc3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwicHJlTWFwIiwicG9zdE1hcCIsInByZWV4aXN0aW5nIiwiY29udGV4dHMiLCJtdWx0aXBsZUNvbnRleHRzIiwibWF0Y2hlckluIiwibWF0Y2hlck91dCIsIm1hdGNoZXJGcm9tVG9rZW5zIiwiY2hlY2tDb250ZXh0IiwibGVhZGluZ1JlbGF0aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsImZpbHRlcnMiLCJwYXJzZU9ubHkiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJzZXRNYXRjaGVycyIsImVsZW1lbnRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwibWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzIiwiY29tcGlsZWQiLCJkZWZhdWx0VmFsdWUiLCJ1bmlxdWUiLCJpc1hNTERvYyIsImVzY2FwZVNlbGVjdG9yIiwidW50aWwiLCJ0cnVuY2F0ZSIsImlzIiwic2libGluZ3MiLCJuIiwicm5lZWRzQ29udGV4dCIsInJzaW5nbGVUYWciLCJ3aW5ub3ciLCJxdWFsaWZpZXIiLCJzZWxmIiwicm9vdGpRdWVyeSIsInBhcnNlSFRNTCIsInJlYWR5IiwicnBhcmVudHNwcmV2IiwiZ3VhcmFudGVlZFVuaXF1ZSIsImNoaWxkcmVuIiwiY29udGVudHMiLCJwcmV2Iiwic2libGluZyIsInRhcmdldHMiLCJjbG9zZXN0IiwicHJldkFsbCIsImFkZEJhY2siLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZVbnRpbCIsImNvbnRlbnREb2N1bWVudCIsImNvbnRlbnQiLCJyZXZlcnNlIiwicm5vdGh0bWx3aGl0ZSIsIklkZW50aXR5IiwidiIsIlRocm93ZXIiLCJleCIsImFkb3B0VmFsdWUiLCJyZXNvbHZlIiwicmVqZWN0Iiwibm9WYWx1ZSIsInByb21pc2UiLCJ0aGVuIiwiQ2FsbGJhY2tzIiwib2JqZWN0IiwiZmxhZyIsImNyZWF0ZU9wdGlvbnMiLCJmaXJpbmciLCJtZW1vcnkiLCJmaXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5kZXgiLCJmaXJlIiwib25jZSIsInN0b3BPbkZhbHNlIiwiZGlzYWJsZSIsImxvY2siLCJmaXJlV2l0aCIsIkRlZmVycmVkIiwidHVwbGVzIiwiYWx3YXlzIiwiZGVmZXJyZWQiLCJjYXRjaCIsInBpcGUiLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJtYXhEZXB0aCIsImRlcHRoIiwic3BlY2lhbCIsIm1pZ2h0VGhyb3ciLCJUeXBlRXJyb3IiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9jZXNzIiwiZXhjZXB0aW9uSG9vayIsInN0YWNrVHJhY2UiLCJyZWplY3RXaXRoIiwiZ2V0U3RhY2tIb29rIiwic2V0VGltZW91dCIsInN0YXRlU3RyaW5nIiwid2hlbiIsInNpbmdsZVZhbHVlIiwicmVtYWluaW5nIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsIm1hc3RlciIsInVwZGF0ZUZ1bmMiLCJyZXJyb3JOYW1lcyIsInJlYWR5RXhjZXB0aW9uIiwicmVhZHlMaXN0IiwiY29tcGxldGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlYWR5V2FpdCIsIndhaXQiLCJkb1Njcm9sbCIsImFjY2VzcyIsImNoYWluYWJsZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsInJtc1ByZWZpeCIsInJkYXNoQWxwaGEiLCJmY2FtZWxDYXNlIiwiYWxsIiwibGV0dGVyIiwiY2FtZWxDYXNlIiwiYWNjZXB0RGF0YSIsIm93bmVyIiwiRGF0YSIsInVpZCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiaGFzRGF0YSIsImRhdGFQcml2IiwiZGF0YVVzZXIiLCJyYnJhY2UiLCJybXVsdGlEYXNoIiwiZGF0YUF0dHIiLCJwYXJzZSIsImdldERhdGEiLCJyZW1vdmVEYXRhIiwiX3JlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJfcXVldWVIb29rcyIsImNsZWFyUXVldWUiLCJjb3VudCIsInBudW0iLCJyY3NzTnVtIiwiY3NzRXhwYW5kIiwiaXNIaWRkZW5XaXRoaW5UcmVlIiwic3R5bGUiLCJkaXNwbGF5IiwiY3NzIiwic3dhcCIsIm9sZCIsImFkanVzdENTUyIsInZhbHVlUGFydHMiLCJ0d2VlbiIsImFkanVzdGVkIiwic2NhbGUiLCJtYXhJdGVyYXRpb25zIiwiY3VycmVudFZhbHVlIiwiaW5pdGlhbCIsImNzc051bWJlciIsImluaXRpYWxJblVuaXQiLCJkZWZhdWx0RGlzcGxheU1hcCIsImdldERlZmF1bHREaXNwbGF5IiwiYm9keSIsInNob3dIaWRlIiwic2hvdyIsImhpZGUiLCJ0b2dnbGUiLCJyY2hlY2thYmxlVHlwZSIsInJ0YWdOYW1lIiwicnNjcmlwdFR5cGUiLCJ3cmFwTWFwIiwib3B0aW9uIiwidGhlYWQiLCJjb2wiLCJ0ciIsInRkIiwiX2RlZmF1bHQiLCJnZXRBbGwiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMiLCJvcHRncm91cCIsInRib2R5IiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImRpdiIsInJodG1sIiwiYnVpbGRGcmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJpZ25vcmVkIiwid3JhcCIsImZyYWdtZW50IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsIm5vZGVzIiwiaHRtbFByZWZpbHRlciIsImNyZWF0ZVRleHROb2RlIiwiY2hlY2tDbG9uZSIsImNsb25lTm9kZSIsIm5vQ2xvbmVDaGVja2VkIiwicmtleUV2ZW50Iiwicm1vdXNlRXZlbnQiLCJydHlwZW5hbWVzcGFjZSIsInJldHVyblRydWUiLCJyZXR1cm5GYWxzZSIsInNhZmVBY3RpdmVFbGVtZW50IiwiZXJyIiwib24iLCJ0eXBlcyIsIm9uZSIsIm9yaWdGbiIsImV2ZW50Iiwib2ZmIiwiaGFuZGxlT2JqSW4iLCJldmVudEhhbmRsZSIsImV2ZW50cyIsImhhbmRsZU9iaiIsImhhbmRsZXJzIiwibmFtZXNwYWNlcyIsIm9yaWdUeXBlIiwiZWxlbURhdGEiLCJoYW5kbGUiLCJ0cmlnZ2VyZWQiLCJkaXNwYXRjaCIsImRlbGVnYXRlVHlwZSIsImJpbmRUeXBlIiwibmFtZXNwYWNlIiwiZGVsZWdhdGVDb3VudCIsInNldHVwIiwibWFwcGVkVHlwZXMiLCJvcmlnQ291bnQiLCJ0ZWFyZG93biIsInJlbW92ZUV2ZW50IiwibmF0aXZlRXZlbnQiLCJoYW5kbGVyUXVldWUiLCJmaXgiLCJkZWxlZ2F0ZVRhcmdldCIsInByZURpc3BhdGNoIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJjdXJyZW50VGFyZ2V0IiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJybmFtZXNwYWNlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJwb3N0RGlzcGF0Y2giLCJtYXRjaGVkSGFuZGxlcnMiLCJtYXRjaGVkU2VsZWN0b3JzIiwiYWRkUHJvcCIsImhvb2siLCJFdmVudCIsImVudW1lcmFibGUiLCJvcmlnaW5hbEV2ZW50Iiwid3JpdGFibGUiLCJsb2FkIiwibm9CdWJibGUiLCJ0cmlnZ2VyIiwiYmx1ciIsImNsaWNrIiwiYmVmb3JldW5sb2FkIiwicmV0dXJuVmFsdWUiLCJwcm9wcyIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZWxhdGVkVGFyZ2V0IiwidGltZVN0YW1wIiwiaXNTaW11bGF0ZWQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJhbHRLZXkiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImNoYW5nZWRUb3VjaGVzIiwiY3RybEtleSIsImRldGFpbCIsImV2ZW50UGhhc2UiLCJtZXRhS2V5IiwicGFnZVgiLCJwYWdlWSIsInNoaWZ0S2V5IiwidmlldyIsImNoYXIiLCJjaGFyQ29kZSIsImtleUNvZGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm9mZnNldFgiLCJvZmZzZXRZIiwicG9pbnRlcklkIiwicG9pbnRlclR5cGUiLCJzY3JlZW5YIiwic2NyZWVuWSIsInRhcmdldFRvdWNoZXMiLCJ0b0VsZW1lbnQiLCJ0b3VjaGVzIiwid2hpY2giLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsIm9yaWciLCJyZWxhdGVkIiwicnhodG1sVGFnIiwicm5vSW5uZXJodG1sIiwicmNoZWNrZWQiLCJyY2xlYW5TY3JpcHQiLCJtYW5pcHVsYXRpb25UYXJnZXQiLCJkaXNhYmxlU2NyaXB0IiwicmVzdG9yZVNjcmlwdCIsImNsb25lQ29weUV2ZW50IiwiZGVzdCIsInBkYXRhT2xkIiwicGRhdGFDdXIiLCJ1ZGF0YU9sZCIsInVkYXRhQ3VyIiwiZG9tTWFuaXAiLCJjb2xsZWN0aW9uIiwiaGFzU2NyaXB0cyIsImlOb0Nsb25lIiwidmFsdWVJc0Z1bmN0aW9uIiwiaHRtbCIsIl9ldmFsVXJsIiwia2VlcERhdGEiLCJjbGVhbkRhdGEiLCJkYXRhQW5kRXZlbnRzIiwiZGVlcERhdGFBbmRFdmVudHMiLCJzcmNFbGVtZW50cyIsImRlc3RFbGVtZW50cyIsImluUGFnZSIsImRldGFjaCIsImFwcGVuZCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJhZnRlciIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiYXBwZW5kVG8iLCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJvcmlnaW5hbCIsImluc2VydCIsInJudW1ub25weCIsImdldFN0eWxlcyIsIm9wZW5lciIsImdldENvbXB1dGVkU3R5bGUiLCJyYm94U3R5bGUiLCJjdXJDU1MiLCJjb21wdXRlZCIsIndpZHRoIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImdldFByb3BlcnR5VmFsdWUiLCJwaXhlbEJveFN0eWxlcyIsImFkZEdldEhvb2tJZiIsImNvbmRpdGlvbkZuIiwiaG9va0ZuIiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJjb250YWluZXIiLCJjc3NUZXh0IiwiZGl2U3R5bGUiLCJwaXhlbFBvc2l0aW9uVmFsIiwicmVsaWFibGVNYXJnaW5MZWZ0VmFsIiwicm91bmRQaXhlbE1lYXN1cmVzIiwibWFyZ2luTGVmdCIsInJpZ2h0IiwicGl4ZWxCb3hTdHlsZXNWYWwiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsInBvc2l0aW9uIiwic2Nyb2xsYm94U2l6ZVZhbCIsIm9mZnNldFdpZHRoIiwibWVhc3VyZSIsImJhY2tncm91bmRDbGlwIiwiY2xlYXJDbG9uZVN0eWxlIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbFBvc2l0aW9uIiwicmVsaWFibGVNYXJnaW5MZWZ0Iiwic2Nyb2xsYm94U2l6ZSIsInJkaXNwbGF5c3dhcCIsInJjdXN0b21Qcm9wIiwiY3NzU2hvdyIsInZpc2liaWxpdHkiLCJjc3NOb3JtYWxUcmFuc2Zvcm0iLCJsZXR0ZXJTcGFjaW5nIiwiZm9udFdlaWdodCIsImNzc1ByZWZpeGVzIiwiZW1wdHlTdHlsZSIsImZpbmFsUHJvcE5hbWUiLCJjc3NQcm9wcyIsImNhcE5hbWUiLCJ2ZW5kb3JQcm9wTmFtZSIsInNldFBvc2l0aXZlTnVtYmVyIiwiYm94TW9kZWxBZGp1c3RtZW50IiwiZGltZW5zaW9uIiwiYm94IiwiaXNCb3JkZXJCb3giLCJzdHlsZXMiLCJjb21wdXRlZFZhbCIsImV4dHJhIiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNCb3JkZXJCb3giLCJUd2VlbiIsImVhc2luZyIsImNzc0hvb2tzIiwib3BhY2l0eSIsImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhHcm93IiwiZmxleFNocmluayIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJ6b29tIiwib3JpZ05hbWUiLCJpc0N1c3RvbVByb3AiLCJzZXRQcm9wZXJ0eSIsImdldENsaWVudFJlY3RzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3JkZXIiLCJleHBhbmQiLCJleHBhbmRlZCIsInByb3BIb29rcyIsInJ1biIsInBlcmNlbnQiLCJlYXNlZCIsInN0ZXAiLCJmeCIsInNjcm9sbFRvcCIsInNjcm9sbExlZnQiLCJsaW5lYXIiLCJwIiwic3dpbmciLCJjb3MiLCJQSSIsImZ4Tm93IiwiaW5Qcm9ncmVzcyIsInJmeHR5cGVzIiwicnJ1biIsInNjaGVkdWxlIiwiaGlkZGVuIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaW50ZXJ2YWwiLCJ0aWNrIiwiY3JlYXRlRnhOb3ciLCJnZW5GeCIsImluY2x1ZGVXaWR0aCIsImhlaWdodCIsImNyZWF0ZVR3ZWVuIiwiYW5pbWF0aW9uIiwiQW5pbWF0aW9uIiwidHdlZW5lcnMiLCJwcm9wZXJ0aWVzIiwic3RvcHBlZCIsInByZWZpbHRlcnMiLCJjdXJyZW50VGltZSIsInN0YXJ0VGltZSIsInR3ZWVucyIsIm9wdHMiLCJzcGVjaWFsRWFzaW5nIiwib3JpZ2luYWxQcm9wZXJ0aWVzIiwib3JpZ2luYWxPcHRpb25zIiwiZ290b0VuZCIsInByb3BGaWx0ZXIiLCJiaW5kIiwiY29tcGxldGUiLCJ0aW1lciIsImFuaW0iLCIqIiwidHdlZW5lciIsIm9sZGZpcmUiLCJwcm9wVHdlZW4iLCJyZXN0b3JlRGlzcGxheSIsImlzQm94IiwiZGF0YVNob3ciLCJ1bnF1ZXVlZCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsInByZWZpbHRlciIsInNwZWVkIiwib3B0Iiwic3BlZWRzIiwiZmFkZVRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwiZmluaXNoIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVwIiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsInNsb3ciLCJmYXN0IiwiZGVsYXkiLCJjbGVhclRpbWVvdXQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJyYWRpb1ZhbHVlIiwiYm9vbEhvb2siLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJhdHRyTmFtZXMiLCJsb3dlcmNhc2VOYW1lIiwicmZvY3VzYWJsZSIsInJjbGlja2FibGUiLCJzdHJpcEFuZENvbGxhcHNlIiwiZ2V0Q2xhc3MiLCJjbGFzc2VzVG9BcnJheSIsInJlbW92ZVByb3AiLCJwcm9wRml4IiwidGFiaW5kZXgiLCJmb3IiLCJjbGFzcyIsImFkZENsYXNzIiwiY2xhc3NlcyIsImN1clZhbHVlIiwiY2xhenoiLCJmaW5hbFZhbHVlIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImlzVmFsaWRWYWx1ZSIsImNsYXNzTmFtZXMiLCJoYXNDbGFzcyIsInJyZXR1cm4iLCJ2YWxIb29rcyIsIm9wdGlvblNldCIsImZvY3VzaW4iLCJyZm9jdXNNb3JwaCIsInN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrIiwib25seUhhbmRsZXJzIiwiYnViYmxlVHlwZSIsIm9udHlwZSIsImxhc3RFbGVtZW50IiwiZXZlbnRQYXRoIiwiaXNUcmlnZ2VyIiwicGFyZW50V2luZG93Iiwic2ltdWxhdGUiLCJ0cmlnZ2VySGFuZGxlciIsImF0dGFjaGVzIiwibm9uY2UiLCJycXVlcnkiLCJwYXJzZVhNTCIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsInJicmFja2V0IiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJidWlsZFBhcmFtcyIsInRyYWRpdGlvbmFsIiwicGFyYW0iLCJ2YWx1ZU9yRnVuY3Rpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVBcnJheSIsInIyMCIsInJoYXNoIiwicmFudGlDYWNoZSIsInJoZWFkZXJzIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInRyYW5zcG9ydHMiLCJhbGxUeXBlcyIsIm9yaWdpbkFuY2hvciIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImRhdGFUeXBlcyIsImluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzIiwianFYSFIiLCJpbnNwZWN0ZWQiLCJzZWVraW5nVHJhbnNwb3J0IiwicHJlZmlsdGVyT3JGYWN0b3J5IiwiZGF0YVR5cGVPclRyYW5zcG9ydCIsImFqYXhFeHRlbmQiLCJmbGF0T3B0aW9ucyIsImFqYXhTZXR0aW5ncyIsImFjdGl2ZSIsImxhc3RNb2RpZmllZCIsImV0YWciLCJwcm90b2NvbCIsInByb2Nlc3NEYXRhIiwiYXN5bmMiLCJhY2NlcHRzIiwianNvbiIsInJlc3BvbnNlRmllbGRzIiwiY29udmVydGVycyIsIiogdGV4dCIsInRleHQgaHRtbCIsInRleHQganNvbiIsInRleHQgeG1sIiwiYWpheFNldHVwIiwic2V0dGluZ3MiLCJhamF4UHJlZmlsdGVyIiwiYWpheFRyYW5zcG9ydCIsInRyYW5zcG9ydCIsImNhY2hlVVJMIiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwicmVzcG9uc2VIZWFkZXJzIiwidGltZW91dFRpbWVyIiwidXJsQW5jaG9yIiwiZmlyZUdsb2JhbHMiLCJ1bmNhY2hlZCIsImNhbGxiYWNrQ29udGV4dCIsImdsb2JhbEV2ZW50Q29udGV4dCIsImNvbXBsZXRlRGVmZXJyZWQiLCJzdGF0dXNDb2RlIiwicmVxdWVzdEhlYWRlcnMiLCJyZXF1ZXN0SGVhZGVyc05hbWVzIiwic3RyQWJvcnQiLCJnZXRSZXNwb25zZUhlYWRlciIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJvdmVycmlkZU1pbWVUeXBlIiwibWltZVR5cGUiLCJzdGF0dXMiLCJhYm9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJjcm9zc0RvbWFpbiIsImhvc3QiLCJoYXNDb250ZW50IiwiaWZNb2RpZmllZCIsImJlZm9yZVNlbmQiLCJzdWNjZXNzIiwibmF0aXZlU3RhdHVzVGV4dCIsInJlc3BvbnNlcyIsImlzU3VjY2VzcyIsInJlc3BvbnNlIiwibW9kaWZpZWQiLCJjdCIsImZpbmFsRGF0YVR5cGUiLCJmaXJzdERhdGFUeXBlIiwiYWpheEhhbmRsZVJlc3BvbnNlcyIsImNvbnYyIiwiY3VycmVudCIsImNvbnYiLCJkYXRhRmlsdGVyIiwidGhyb3dzIiwiYWpheENvbnZlcnQiLCJnZXRKU09OIiwid3JhcEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3JhcElubmVyIiwiaHRtbElzRnVuY3Rpb24iLCJ1bndyYXAiLCJ2aXNpYmxlIiwib2Zmc2V0SGVpZ2h0IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJ4aHJTdWNjZXNzU3RhdHVzIiwiMCIsIjEyMjMiLCJ4aHJTdXBwb3J0ZWQiLCJjb3JzIiwiZXJyb3JDYWxsYmFjayIsIm9wZW4iLCJ1c2VybmFtZSIsInhockZpZWxkcyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib250aW1lb3V0IiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2VUZXh0IiwiYmluYXJ5IiwidGV4dCBzY3JpcHQiLCJjaGFyc2V0Iiwic2NyaXB0Q2hhcnNldCIsImV2dCIsIm9sZENhbGxiYWNrcyIsInJqc29ucCIsImpzb25wIiwianNvbnBDYWxsYmFjayIsIm9yaWdpbmFsU2V0dGluZ3MiLCJjYWxsYmFja05hbWUiLCJvdmVyd3JpdHRlbiIsInJlc3BvbnNlQ29udGFpbmVyIiwianNvblByb3AiLCJjcmVhdGVIVE1MRG9jdW1lbnQiLCJpbXBsZW1lbnRhdGlvbiIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwicGFyYW1zIiwiYW5pbWF0ZWQiLCJzZXRPZmZzZXQiLCJjdXJQb3NpdGlvbiIsImN1ckxlZnQiLCJjdXJDU1NUb3AiLCJjdXJUb3AiLCJjdXJPZmZzZXQiLCJjdXJDU1NMZWZ0IiwiY3VyRWxlbSIsInVzaW5nIiwicmVjdCIsIndpbiIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwidW5iaW5kIiwiZGVsZWdhdGUiLCJ1bmRlbGVnYXRlIiwicHJveHkiLCJob2xkUmVhZHkiLCJob2xkIiwicGFyc2VKU09OIiwiaXNOdW1lcmljIiwiX2pRdWVyeSIsIl8kIiwibm9Db25mbGljdCIsImNhY2hlZEd1ZXNzIiwiem9uZXMiLCJsaW5rcyIsImd1ZXNzZXMiLCJtb21lbnRWZXJzaW9uIiwibWFqb3IiLCJtaW5vciIsImNoYXJDb2RlVG9JbnQiLCJ1bnBhY2tCYXNlNjAiLCJ3aG9sZSIsImZyYWN0aW9uYWwiLCJtdWx0aXBsaWVyIiwiYXJyYXlUb0ludCIsIm1hcEluZGljZXMiLCJpbmRpY2VzIiwidW5wYWNrIiwib2Zmc2V0cyIsInVudGlscyIsIkluZmluaXR5IiwiaW50VG9VbnRpbCIsImFiYnJzIiwicG9wdWxhdGlvbiIsIlpvbmUiLCJwYWNrZWRTdHJpbmciLCJfc2V0IiwiT2Zmc2V0QXQiLCJhdCIsInRpbWVTdHJpbmciLCJ0b1RpbWVTdHJpbmciLCJab25lU2NvcmUiLCJvZmZzZXRTY29yZSIsImFiYnJTY29yZSIsImZpbmRDaGFuZ2UiLCJsb3ciLCJtaWQiLCJzb3J0Wm9uZVNjb3JlcyIsImFkZFRvR3Vlc3NlcyIsImd1ZXNzZXNGb3JVc2VyT2Zmc2V0cyIsImd1ZXNzZXNPZmZzZXQiLCJvZmZzZXRzTGVuZ3RoIiwiZmlsdGVyZWRHdWVzc2VzIiwicmVidWlsZEd1ZXNzIiwiaW50bE5hbWUiLCJJbnRsIiwiRGF0ZVRpbWVGb3JtYXQiLCJyZXNvbHZlZE9wdGlvbnMiLCJ0aW1lWm9uZSIsIm5vcm1hbGl6ZU5hbWUiLCJsb2dFcnJvciIsInpvbmVTY29yZSIsImNoYW5nZSIsInN0YXJ0WWVhciIsInVzZXJPZmZzZXRzIiwiem9uZVNjb3JlcyIsImdldFpvbmUiLCJzY29yZU9mZnNldEF0IiwiYWRkWm9uZSIsInBhY2tlZCIsIm5vcm1hbGl6ZWQiLCJjYWxsZXIiLCJsaW5rIiwiYWRkTGluayIsIm5vcm1hbDAiLCJub3JtYWwxIiwibG9hZERhdGEiLCJ0eiIsImRhdGFWZXJzaW9uIiwibmVlZHNPZmZzZXQiLCJpc1VuaXhUaW1lc3RhbXAiLCJ1bnBhY2tlZCIsIl9pbmRleCIsInRpbWVzdGFtcCIsIm9mZnNldE5leHQiLCJvZmZzZXRQcmV2IiwibW92ZUFtYmlndW91c0ZvcndhcmQiLCJtb3ZlSW52YWxpZEZvcndhcmQiLCJvZmZzZXRBdCIsIl96b25lcyIsIl9saW5rcyIsIl9uYW1lcyIsInpvbmVFeGlzdHMiLCJkaWRTaG93RXJyb3IiLCJndWVzcyIsImlnbm9yZUNhY2hlIiwiYWJicldyYXAiLCJfeiIsImRlZmF1bHRab25lIiwic2V0RGVmYXVsdCIsImxhc3RUaW1lIiwidmVuZG9ycyIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiY3VyclRpbWUiLCJ0aW1lVG9DYWxsIiwiX3NldHRpbmdzIiwiY3Vyc29yQW5pbWF0aW9uUGF1c2VkIiwib3BhY2l0eUluY3JlYXNpbmciLCJjdXJyZW50T3BhY2l0eSIsImRlbGF5ZWRRdWUiLCJkZWxheUl0ZW1zQ291bnQiLCJldmVudFF1ZSIsImNhbGxlZEV2ZW50cyIsImV2ZW50UnVubmluZyIsImRlbGF5RXhlY3V0aW9uIiwiZnBzIiwidHlwaW5nRnJhbWVDb3VudCIsInN0cmluZ1RvVHlwZUhUTUxBcnJheSIsImN1cnJlbnRUeXBlZENoYXJhY3RlcnMiLCJ0eXBpbmciLCJ1c2VkSURzIiwiY2hhckFtb3VudFRvRGVsZXRlIiwidXNlck9wdGlvbnMiLCJldmVudExvb3BSZXJ1biIsImRlZmF1bHRfb3B0aW9ucyIsInN0cmluZ3MiLCJjdXJzb3JDbGFzc05hbWUiLCJjdXJzb3IiLCJhbmltYXRlQ3Vyc29yIiwiYmxpbmtTcGVlZCIsImNoYXJTcGFuQ2xhc3NOYW1lIiwid3JhcHBlckNsYXNzTmFtZSIsImF1dG9TdGFydCIsIl9zZXR1cE9wdGlvbnMiLCJfc2V0dXBUeXB3cml0ZXJXcmFwcGVyIiwiX3N0YXJ0Q3Vyc29yQW5pbWF0aW9uIiwidHlwZU91dEFsbFN0cmluZ3MiLCJUeXBld3JpdGVyUHJvdG90eXBlIiwiX2FkZFRvRXZlbnRRdWUiLCJfc3RvcEV2ZW50TG9vcCIsIl9zdGFydEV2ZW50TG9vcCIsInJlcnVuIiwiX3JlcnVuQ2FsbGVkRXZlbnRzIiwic3RyaW5nX2NoYXJzIiwiX2dldENoYXJhY3RlcnMiLCJfdHlwZUNoYXJhY3RlcnMiLCJkZWxldGVBbGwiLCJfZGVsZXRlQ2hhcnMiLCJhbW91bnQiLCJfcGF1c2VGb3IiLCJjaGFyYWN0ZXJzX2FycmF5IiwiX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkiLCJfcmFuZG9tSW50ZWdlciIsIm5ld19zZXR0aW5ncyIsIl9jaGFuZ2VTZXR0aW5ncyIsImNoYW5nZUJsaW5rU3BlZWQiLCJuZXdfc3BlZWQiLCJjaGFuZ2VUeXBpbmdTcGVlZCIsImNoYW5nZURlbGV0ZVNwZWVkIiwiX3Jlc2V0RXZlbnRMb29wIiwiX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiIsIl9kZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZSIsImxvZyIsImRlbGV0ZV9zcGVlZCIsInR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lIiwiY3VycmVudF90eXBlZF9jaGFyX2lkcyIsImNoYXJfYW1vdW50X3RvX2RlbGV0ZSIsImxhc3RfdHlwZWRfY2hhcl9pbmRleCIsImdldF9sYXN0X3R5cGVkX2NoYXIiLCJjaGFyX3RvX2RlbGV0ZV9lbCIsIm5ld19vcHRpb25zIiwibWVyZ2VkX29wdGlvbnMiLCJhdHRybmFtZSIsImZpcnN0X2V2ZW50IiwiX2V2ZW50UXVlQW5pbWF0aW9uIiwiZXZlbnRfbmFtZSIsInR5cGV3cml0ZXJfd3JhcHBlciIsIl9jb252ZXJ0Q2hhcnNUb0hUTUwiLCJfdHlwaW5nQW5pbWF0aW9uIiwiX3R5cGluZ0FuaW1hdGlvbkZyYW1lIiwidG90YWxfaXRlbXMiLCJ0eXBpbmdfc3BlZWQiLCJpdGVtX3RvX3R5cGUiLCJjaGFycyIsImNoYXJzX2h0bWxfd3JhcF9hcnJheSIsImNoYXJfY2xhc3NfbmFtZSIsImNoYXJzX2FycmF5IiwiY2hhcl9lbGVtZW50IiwiY2hhcl9pZCIsIl9nZW5lcmF0ZVVuaXF1ZUlEIiwic3RyaW5nc19hcnJheV9jaGVjayIsInN0cmluZ3Nfc3RyaW5nX2NoZWNrIiwic3RyaW5nc19jaGFyc19hcnJheSIsIl9jdXJzb3JBbmltYXRpb25GcmFtZSIsIm9wYWNpdHlfYW1vdW50IiwiY3Vyc29yX2VsIiwiX2N1cnNvckFuaW1hdGlvbiIsIl9hcHBlbmRUZXh0IiwiaXRlbXMiLCJjdXJzb3JfY2xhc3NfbmFtZSIsImN1cnNvcl9lbGVtZW50IiwiX3BhdXNlQ3Vyc29yQW5pbWF0aW9uIiwiX3Jlc3RhcnRDdXJzb3JBbmltYXRpb24iLCJfcmFuZG9tSUQiLCJwb3NzaWJsZSIsInRlbXBfaWQiLCJoeXBoZW5hdGVDYWNoZSIsImh5cGhlbmF0ZVJlIiwiaHlwaGVuYXRlIiwic3RyIiwiY2FtZWxpemVSZSIsImNhbWVsaXplIiwidG9VcHBlciIsInVjZmlyc3QiLCJzdHJQcm90b3R5cGUiLCJzdGFydHNXaXRoRm4iLCJzdGFydHNXaXRoIiwic2VhcmNoIiwibGFzdEluZGV4T2YiLCJlbmRzV2l0aEZuIiwiZW5kc1dpdGgiLCJpbmNsdWRlc0ZuIiwiaW5jbHVkZXNTdHIiLCJpbmNsdWRlcyIsImluY2x1ZGVzQXJyYXkiLCJpc1N0cmluZyIsImlzRG9jdW1lbnQiLCJpc0pRdWVyeSIsImlzTm9kZSIsIk5vZGUiLCJpc05vZGVDb2xsZWN0aW9uIiwiTm9kZUxpc3QiLCJIVE1MQ29sbGVjdGlvbiIsImlzQm9vbGVhbiIsInRvQm9vbGVhbiIsInRvTnVtYmVyIiwiTnVtYmVyIiwidG9GbG9hdCIsInRvTm9kZSIsImFycmF5UHJvdG8iLCJ0b05vZGVzIiwiQm9vbGVhbiIsInRvTGlzdCIsInRvTXMiLCJhc3NpZ24iLCJjYiIsInNvcnRCeSIsImNsYW1wIiwiaW50ZXJzZWN0UmVjdCIsInIxIiwicjIiLCJib3R0b20iLCJwb2ludEluUmVjdCIsInBvaW50IiwiRGltZW5zaW9ucyIsInJhdGlvIiwiZGltZW5zaW9ucyIsImFQcm9wIiwiY29udGFpbiIsIm1heERpbWVuc2lvbnMiLCJ0aGlzJDEiLCJjb3ZlciIsImhhc0F0dHIiLCJoYXNBdHRyaWJ1dGUiLCJmaWx0ZXJBdHRyIiwiYXR0cmlidXRlIiwicmVwbGFjZW1lbnQiLCJxdWVyeSIsImlzQ29udGV4dFNlbGVjdG9yIiwicXVlcnlBbGwiLCJmaW5kQWxsIiwiX3F1ZXJ5IiwicXVlcnlGbiIsInJlbW92ZXMiLCJjb250ZXh0U2FuaXRpemVSZSIsImN0eCIsInNlbGVjdG9ycyQxIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsImNvbnRleHRTZWxlY3RvclJlIiwiZWxQcm90byIsIkVsZW1lbnQiLCJtYXRjaGVzRm4iLCJjbG9zZXN0Rm4iLCJhbmNlc3RvciIsImVzY2FwZUZuIiwiQ1NTIiwidm9pZEVsZW1lbnRzIiwiYXJlYSIsImJyIiwiZW1iZWQiLCJociIsImltZyIsImtleWdlbiIsIm1lbnVpdGVtIiwibWV0YSIsInRyYWNrIiwid2JyIiwiaXNWb2lkRWxlbWVudCIsInRhZ05hbWUiLCJpc1Zpc2libGUiLCJzZWxJbnB1dCIsImlzSW5wdXQiLCJ3aXRoaW4iLCJyZWYiLCJnZXRBcmdzIiwibGlzdGVuZXIiLCJ1c2VDYXB0dXJlIiwidG9FdmVudFRhcmdldCIsImNvbmRpdGlvbiIsInRvRXZlbnRUYXJnZXRzIiwicmVkdWNlIiwibm90Q2FuY2VsZWQiLCJkaXNwYXRjaEV2ZW50IiwiY3JlYXRlRXZlbnQiLCJpbml0Q3VzdG9tRXZlbnQiLCJpc0V2ZW50VGFyZ2V0IiwiRXZlbnRUYXJnZXQiLCJwcmV2ZW50Q2xpY2siLCJQcm9taXNlJDEiLCJQcm9taXNlIiwiUHJvbWlzZUZuIiwiUEVORElORyIsInNldEltbWVkaWF0ZSIsImV4ZWN1dG9yIiwiciIsIml0ZXJhYmxlIiwicmVzb2x2ZXIiLCJyYWNlIiwiZW52IiwiZ2V0SW1hZ2UiLCJzcmNzZXQiLCJzaXplcyIsIkltYWdlIiwidW5iaW5kMSIsInVuYmluZDIiLCJnZXRJbmRleCIsImZpbml0ZSIsImhhc0NoaWxkTm9kZXMiLCJpbnNlcnROb2RlcyIsImNhbGxlZCIsIm9uUmVzb2x2ZWQiLCJmcmFnbWVudFJlIiwic2luZ2xlVGFnUmUiLCJpbnNlcnRBZGphY2VudEhUTUwiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJhcHBseSQxIiwicmVtb3ZlQ2xhc3NlcyIsImNscyIsInJlcGxhY2VDbGFzcyIsImZvcmNlIiwiZ2V0QXJncyQxIiwic3VwcG9ydHMiLCJGb3JjZSIsIk11bHRpcGxlIiwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsImNvbHVtbi1jb3VudCIsImZpbGwtb3BhY2l0eSIsImZsZXgtZ3JvdyIsImZsZXgtc2hyaW5rIiwiZm9udC13ZWlnaHQiLCJsaW5lLWhlaWdodCIsInotaW5kZXgiLCJwcm9wZXJ0eSIsInByb3BOYW1lIiwiZ2V0U3R5bGUiLCJyZW1vdmVQcm9wZXJ0eSIsInBzZXVkb0VsdCIsInZhcnMiLCJnZXRDc3NWYXIiLCJwcmVmaXhlZE5hbWUiLCJ0cmFuc2l0aW9uIiwidGltaW5nIiwidHJhbnNpdGlvbi1wcm9wZXJ0eSIsInRyYW5zaXRpb24tZHVyYXRpb24iLCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsIlRyYW5zaXRpb24iLCJjYW5jZWwiLCJhbmltYXRpb25QcmVmaXgiLCJjbHNDYW5jZWxBbmltYXRpb24iLCJvcmlnaW4iLCJhcmd1bWVudHMkMSIsImhhc1Jlc2V0IiwiaW4iLCJpc0h0bWwiLCIkJCIsImRpcnMiLCJwb3NpdGlvbkF0IiwiZWxBdHRhY2giLCJ0YXJnZXRBdHRhY2giLCJlbE9mZnNldCIsInRhcmdldE9mZnNldCIsImZsaXAiLCJib3VuZGFyeSIsImdldFBvcyIsImZsaXBwZWQiLCJkaW0iLCJnZXREaW1lbnNpb25zIiwidGFyZ2V0RGltIiwibW92ZVRvIiwiZ2V0T2Zmc2V0cyIsIndpbmRvdyQxIiwiYWxpZ24iLCJhbGlnbkZsaXAiLCJlbGVtT2Zmc2V0IiwiY2VudGVyT2Zmc2V0IiwiY2VudGVyVGFyZ2V0T2Zmc2V0IiwibmV3VmFsIiwiY29vcmRpbmF0ZXMiLCJjdXJyZW50T2Zmc2V0IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZG9jRWwiLCJwcm9wTmFtZSQkMSIsImJveE1vZGVsQWRqdXN0IiwiYXR0YWNoIiwiZmFjdG9yIiwiZmxpcFBvc2l0aW9uIiwiaXNJblZpZXciLCJ0b3BPZmZzZXQiLCJsZWZ0T2Zmc2V0IiwicmVsYXRpdmVUb1ZpZXdwb3J0Iiwib2Zmc2V0UG9zaXRpb24iLCJlbFRvcCIsImVsTGVmdCIsInNjcm9sbGVkT3ZlciIsImhlaWdodE9mZnNldCIsImRvY3VtZW50JDEiLCJlbEhlaWdodCIsInZwIiwidmgiLCJvZmZzZXRUb3AiLCJvZmZzZXRMZWZ0IiwiaXNSdGwiLCJoYXNUb3VjaEV2ZW50cyIsImhhc1BvaW50ZXJFdmVudHMiLCJQb2ludGVyRXZlbnQiLCJoYXNUb3VjaCIsIkRvY3VtZW50VG91Y2giLCJuYXZpZ2F0b3IiLCJtYXhUb3VjaFBvaW50cyIsInBvaW50ZXJEb3duIiwicG9pbnRlck1vdmUiLCJwb2ludGVyVXAiLCJwb2ludGVyRW50ZXIiLCJwb2ludGVyTGVhdmUiLCJmYXN0ZG9tIiwicmVhZHMiLCJ3cml0ZXMiLCJyZWFkIiwidGFzayIsInNjaGVkdWxlRmx1c2giLCJ3cml0ZSIsImNsZWFyIiwicmVtb3ZlJDEiLCJmbHVzaCIsInJ1blRhc2tzIiwic2NoZWR1bGVkIiwidGFza3MiLCJpdGVtIiwiTW91c2VUcmFja2VyIiwic2xvcGUiLCJwb3NpdGlvbnMiLCJ0aWNraW5nIiwibW92ZXNUbyIsInBvc2l0aW9uJCQxIiwicHJldlBvcyIsInBvaW50cyIsInN0cmF0cyIsIm1lcmdlRm5EYXRhIiwicGFyZW50VmFsIiwiY2hpbGRWYWwiLCJ2bSIsImNyZWF0ZWQiLCJiZWZvcmVDb25uZWN0IiwiY29ubmVjdGVkIiwiYmVmb3JlRGlzY29ubmVjdCIsImRpc2Nvbm5lY3RlZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJtZXRob2RzIiwiZGVmYXVsdFN0cmF0IiwibWVyZ2VPcHRpb25zIiwiY2hpbGQiLCJleHRlbmRzIiwibWl4aW5zIiwibWVyZ2VLZXkiLCJrZXkkMSIsInBhcnNlT3B0aW9ucyIsIlBsYXllciIsInBvc3QiLCJjbWQiLCJjb250ZW50V2luZG93IiwicG9zdE1lc3NhZ2UiLCJpc1ZpZGVvIiwiaXNZb3V0dWJlIiwiaXNWaW1lbyIsImlzSFRNTDUiLCJpc0lGcmFtZSIsImVuYWJsZUFwaSIsInBvbGxlciIsInlvdXR1YmUiLCJ2aW1lbyIsImRhdGEkJDEiLCJwbGF5ZXJfaWQiLCJwbGF5IiwicGF1c2UiLCJtdXRlIiwibXV0ZWQiLCJjbGlja1RpbWVvdXQiLCJzd2lwZVRpbWVvdXQiLCJ0YXBUaW1lb3V0IiwiY2xpY2tlZCIsInRvdWNoIiwiY2FuY2VsQWxsIiwiZ2V0UG9zJDEiLCJnZXRUeXBlIiwieDEiLCJ5MSIsIngyIiwieTIiLCJ0b3VjaGluZyIsImlzVG91Y2giLCJnZXRDb21wb25lbnROYW1lIiwiX2luaXQiLCJ1dGlsIiwiZnJlZXplIiwiREFUQSIsIl9pc1JlYWR5IiwiX2NhbGxVcGRhdGUiLCJ1c2UiLCJwbHVnaW4iLCJpbnN0YWxsZWQiLCJtaXhpbiIsImNvbXBvbmVudCIsIlN1YiIsImNyZWF0ZSIsInBhdGgiLCJnbG9iYWxBUEkiLCJfY2FsbEhvb2siLCIkb3B0aW9ucyIsIl9jYWxsQ29ubmVjdGVkIiwiX2Nvbm5lY3RlZCIsIl9pbml0UHJvcHMiLCJfaW5pdEV2ZW50cyIsIl9pbml0T2JzZXJ2ZXIiLCJfY2FsbFJlYWR5IiwiX2NhbGxEaXNjb25uZWN0ZWQiLCJfb2JzZXJ2ZXIiLCJkaXNjb25uZWN0IiwiX3VuYmluZEV2ZW50cyIsIl9yZXNldENvbXB1dGVkcyIsInVwZGF0ZXMiLCJfZnJhbWVzIiwiaG9va3NBUEkiLCJnZXRQcm9wcyIsImNvZXJjZSIsInByb3AkMSIsInJlZ2lzdGVyQ29tcHV0ZWQiLCJfY29tcHV0ZWRzIiwiJHByb3BzIiwiJGVsIiwicmVnaXN0ZXJFdmVudCIsImNhcHR1cmUiLCJmaWx0ZXIkJDEiLCJzZWxmRmlsdGVyIiwiX2V2ZW50cyIsIm5vdEluIiwiZXZlcnkiLCJ0b01lZGlhIiwicmVmJDEiLCJpbmRleCQkMSIsIm5vcm1hbGl6ZURhdGEiLCJfdWlkIiwiX2luaXREYXRhIiwiX2luaXRNZXRob2RzIiwiX2luaXRDb21wdXRlZHMiLCIkbW91bnQiLCIkbmFtZSIsImV4Y2x1ZGUiLCJNdXRhdGlvbk9ic2VydmVyIiwiJHJlc2V0Iiwib2JzZXJ2ZSIsImF0dHJpYnV0ZUZpbHRlciIsInN0YXRlQVBJIiwiY29tcG9uZW50cyIsImFyZ3NBcnJheSIsImZ1bmN0aW9uYWwiLCJpbnN0YW5jZSIsImdldENvbXBvbmVudCIsIiRkZXN0cm95IiwiaW5zdGFsbCIsIl9pbml0aWFsaXplZCIsImdldENvbXBvbmVudHMiLCJjb25uZWN0IiwibmFtZSQxIiwiY29tcG9uZW50QVBJIiwiJGVtaXQiLCJyZW1vdmVFbCIsIiRjcmVhdGUiLCIkdXBkYXRlIiwiJGdldENvbXBvbmVudCIsImRlZmluZVByb3BlcnRpZXMiLCIkY29udGFpbmVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiaW5zdGFuY2VBUEkiLCJDbGFzcyIsIlRvZ2dsYWJsZSIsInF1ZXVlZCIsImluaXRQcm9wcyIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwiaGlkZVByb3BzIiwiaGFzQW5pbWF0aW9uIiwiaGFzVHJhbnNpdGlvbiIsInRvZ2dsZUVsZW1lbnQiLCJhbmltYXRlJCQxIiwiX3RvZ2dsZUVsZW1lbnQiLCJ0b2dnbGVkIiwiaXNUb2dnbGVkIiwidW50b2dnbGVkIiwic2Nyb2xsIiwidG9nZ2xlTm93IiwidXBkYXRlQXJpYSIsIl90b2dnbGVIZWlnaHQiLCJfdG9nZ2xlQW5pbWF0aW9uIiwiX3RvZ2dsZUltbWVkaWF0ZSIsIl90b2dnbGUiLCJjaGFuZ2VkIiwiaW5uZXIiLCJsYXN0RWxlbWVudENoaWxkIiwiY3VycmVudEhlaWdodCIsImVuZEhlaWdodCIsIkFjY29yZGlvbiIsImNvbGxhcHNpYmxlIiwibXVsdGlwbGUiLCJjbHNPcGVuIiwiaXNJdGVtIiwiX3dyYXBwZXIiLCJBbGVydCIsImNsb3NlIiwic2VsQ2xvc2UiLCJDb3JlIiwic3RhcnRlZCIsInBhc3NpdmUiLCJob3ZlclNlbGVjdG9yIiwicmVnaXN0ZXJlZCIsIlZpZGVvIiwiYXV0b211dGUiLCJhdXRvcGxheSIsImluVmlldyIsInByZWxvYWQiLCJwbGF5ZXIiLCJDb3ZlciIsImhlaWdodCQkMSIsIndpZHRoJCQxIiwiY2xpZW50V2lkdGgiLCJjbGllbnRIZWlnaHQiLCJsb2FkZWRtZXRhZGF0YSIsIlBvc2l0aW9uIiwiY2xzUG9zIiwib2Zmc2V0JCQxIiwiYXhpcyIsImdldEF4aXMiLCJEcm9wIiwibW9kZSIsImJvdW5kYXJ5QWxpZ24iLCJkZWxheVNob3ciLCJkZWxheUhpZGUiLCJjbHNEcm9wIiwiaG92ZXJJZGxlIiwidHJhY2tlciIsImNsZWFyVGltZXJzIiwiaXNBY3RpdmUiLCJ0cnlTaG93IiwiaXNEZWxheWluZyIsInNob3dUaW1lciIsImlzUGFyZW50T2YiLCJoaWRlVGltZXIiLCJpc0NoaWxkT2YiLCJkcm9wIiwiYWxpZ25UbyIsIkRyb3Bkb3duIiwiRm9ybUN1c3RvbSIsImZpbGVzIiwiR2lmIiwiaW52aWV3IiwiTWFyZ2luIiwiZmlyc3RDb2x1bW4iLCJyb3dzIiwiZ2V0Um93cyIsInN0YWNrcyIsInJvdyIsImdldE9mZnNldCIsImxlZnREaW0iLCJHcmlkIiwibWFzb25yeSIsInBhcmFsbGF4IiwiY2xzU3RhY2siLCJ0cmFuc2xhdGVzIiwic3VtIiwibWF4Q29sdW1uSGVpZ2h0Iiwic2Nyb2xsZWQiLCJIZWlnaHRNYXRjaCIsIm1pbkhlaWdodCIsImJveFNpemluZyIsImhlaWdodHMiLCJIZWlnaHRWaWV3cG9ydCIsIm9mZnNldEJvdHRvbSIsInZpZXdwb3J0Iiwic3ZncyIsIlNWRyIsImljb24iLCJhc3NpZ24kJDEiLCJzdmciLCJnZXRTdmciLCJzeW1ib2xzIiwic3ltYm9sUmUiLCJwYXJzZVN5bWJvbHMiLCJpc0VxdWFsTm9kZSIsInN2Z0VsIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaWNvbnMiLCJzcGlubmVyIiwidG90b3AiLCJtYXJrZXIiLCJjbG9zZS1pY29uIiwiY2xvc2UtbGFyZ2UiLCJuYXZiYXItdG9nZ2xlLWljb24iLCJvdmVybGF5LWljb24iLCJwYWdpbmF0aW9uLW5leHQiLCJwYWdpbmF0aW9uLXByZXZpb3VzIiwic2VhcmNoLWljb24iLCJzZWFyY2gtbGFyZ2UiLCJzZWFyY2gtbmF2YmFyIiwic2xpZGVuYXYtbmV4dCIsInNsaWRlbmF2LW5leHQtbGFyZ2UiLCJzbGlkZW5hdi1wcmV2aW91cyIsInNsaWRlbmF2LXByZXZpb3VzLWxhcmdlIiwiSWNvbiIsImFkZGVkIiwiY21wIiwiaXNJY29uIiwiZ2V0SWNvbiIsImFwcGx5UnRsIiwiSWNvbkNvbXBvbmVudCIsIlNsaWRlbmF2IiwiU2VhcmNoIiwiQ2xvc2UiLCJTcGlubmVyIiwiSW1nIiwiZGF0YVNyYyIsImRhdGFTcmNzZXQiLCJkYXRhU2l6ZXMiLCJkYXRhV2lkdGgiLCJkYXRhSGVpZ2h0IiwiY2FjaGVLZXkiLCJpc0ltZyIsInRvUHgiLCJzdG9yYWdlIiwic2V0U3JjQXR0cnMiLCJjb2xvciIsIm1hdGNoZXMkJDEiLCJzaXplc1JlIiwibWF0Y2hNZWRpYSIsInNpemUiLCJzdWJzdHJpbmciLCJzaXplUmUiLCJhZGRpdGlvblJlIiwidXJsQ2FjaGUiLCJjYW52YXMiLCJnZXRDb250ZXh0IiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJ0b0RhdGFVUkwiLCJnZXRQbGFjZWhvbGRlckltYWdlIiwiY3VycmVudFNyYyIsInNlc3Npb25TdG9yYWdlIiwiYWN0aXZlJDEiLCJMZWFkZXIiLCJmaWxsIiwibWVkaWEiLCJjbHNXcmFwcGVyIiwiY2xzSGlkZSIsImF0dHJGaWxsIiwid3JhcHBlciIsIkNvbnRhaW5lciIsIk1vZGFsIiwic2VsUGFuZWwiLCJlc2NDbG9zZSIsImJnQ2xvc2UiLCJvdmVybGF5IiwicGFuZWwiLCJ0cmFuc2l0aW9uRWxlbWVudCIsInRyYW5zaXRpb25EdXJhdGlvbiIsInJlZ2lzdGVyRXZlbnRzIiwiY2xzUGFnZSIsInNjcm9sbGJhcldpZHRoIiwiZm91bmQiLCJnZXRBY3RpdmUiLCJNb2RhbCQxIiwibW9kYWwiLCJkaWFsb2ciLCJhbGVydCIsImxhYmVscyIsImNvbmZpcm0iLCJyZXNvbHZlZCIsInByb21wdCIsIm9rIiwiTmF2IiwiTmF2YmFyIiwiZHJvcGRvd24iLCJkcm9wYmFyIiwiZHJvcGJhck1vZGUiLCJkcm9wYmFyQW5jaG9yIiwiZHJvcGRvd25zIiwiZ2V0RHJvcGRvd24iLCJ0cmFuc2l0aW9uVG8iLCJuZXdIZWlnaHQiLCJvbGRIZWlnaHQiLCJjbGlwIiwiT2ZmY2FudmFzIiwiY2xzQ29udGFpbmVyIiwiY2xzRmxpcCIsImNsc0NvbnRlbnQiLCJjbHNDb250ZW50QW5pbWF0aW9uIiwiY2xzU2lkZWJhckFuaW1hdGlvbiIsImNsc01vZGUiLCJjbHNPdmVybGF5IiwiT3ZlcmZsb3dBdXRvIiwiUmVzcG9uc2l2ZSIsIlNjcm9sbCIsImRvY0hlaWdodCIsIndpbkhlaWdodCIsInN0YXJ0WSIsImN1cnJlbnRZIiwiU2Nyb2xsc3B5IiwicmVwZWF0IiwiaW5WaWV3Q2xhc3MiLCJlbERhdGEiLCJ0b2dnbGVzIiwiU2Nyb2xsc3B5TmF2IiwiU3RpY2t5IiwiY2xzQWN0aXZlIiwiY2xzSW5hY3RpdmUiLCJjbHNGaXhlZCIsImNsc0JlbG93Iiwic2VsVGFyZ2V0Iiwid2lkdGhFbGVtZW50Iiwic2hvd09uVXAiLCJwbGFjZWhvbGRlciIsImJvdHRvbU9mZnNldCIsInBhcnNlUHJvcCIsImluYWN0aXZlIiwic2Nyb2xsWSIsInByb3BPZmZzZXQiLCJTd2l0Y2hlciIsInN3aXBpbmciLCJhdHRySXRlbSIsImNvbm5lY3RzIiwiZ2V0U2VsZWN0aW9uIiwiaGFzUHJldiIsIlRhYiIsIlRvZ2dsZSIsImNvcmUiLCJDb3VudGRvd24iLCJ0aW1lc3BhbiIsImRpZ2l0cyIsImRpZ2l0Iiwic3R5bGUkMSIsInRhcmdldENsYXNzIiwiQW5pbWF0ZSIsInNoZWV0IiwiaW5zZXJ0UnVsZSIsInByb3BzRnJvbSIsIm9sZFNjcm9sbFkiLCJwcm9wc1RvIiwiZ2V0UG9zaXRpb25XaXRoTWFyZ2luIiwicG9pbnRlckV2ZW50cyIsIkZpbHRlciIsInNlbEFjdGl2ZSIsImFjdGl2ZXMiLCJpc0VxdWFsTGlzdCIsInNldFN0YXRlIiwiZ2V0U3RhdGUiLCJtZXJnZVN0YXRlIiwiYXR0ciQkMSIsInN0YXRlRmlsdGVyIiwicmVmX3NvcnQiLCJzdGF0ZVNvcnQiLCJzdGF0ZU9yZGVyIiwiZ2V0RmlsdGVyIiwiZ3JvdXAiLCJtYXRjaEZpbHRlciIsImFwcGx5JCQxIiwiZ2V0U2VsZWN0b3IiLCJzb3J0ZWQiLCJsb2NhbGVDb21wYXJlIiwic29ydEl0ZW1zIiwiZmlsdGVyQnkiLCJsaXN0QSIsImxpc3RCIiwiQW5pbWF0aW9ucyIsInNsaWRlIiwidHJhbnNmb3JtIiwidHJhbnNsYXRlIiwidHJhbnNsYXRlZCIsInNjYWxlM2QiLCJBbmltYXRpb25zJDEiLCJmYWRlIiwidHJpZ2dlclVwZGF0ZSIsIlNsaWRlciIsImF1dG9wbGF5SW50ZXJ2YWwiLCJwYXVzZU9uSG92ZXIiLCJzdGFydEF1dG9wbGF5Iiwic3RvcEF1dG9wbGF5IiwiaXNIb3ZlcmluZyIsInByZXZlbnRDYXRjaCIsInNsaWRlc1NlbGVjdG9yIiwiZHJhZyIsIl90cmFuc2l0aW9uZXIiLCJnZXREaXN0YW5jZSIsImRyYWdnaW5nIiwicHJldkluZGV4IiwidW5iaW5kTW92ZSIsIm1vdmUiLCJkaXN0YW5jZSIsInNsaWRlcyIsImRpcyIsIm5leHRJbmRleCIsIl9nZXREaXN0YW5jZSIsIml0ZW1TaG93biIsImVkZ2UiLCJfdHJhbnNsYXRlIiwiX3Nob3ciLCJkaXJDaGFuZ2UiLCJzZWxOYXYiLCJuYXYiLCJuYXZJdGVtU2VsZWN0b3IiLCJuYXZJdGVtcyIsIm1heEluZGV4IiwidXBkYXRlTmF2IiwiZ2V0VmFsaWRJbmRleCIsImNsc0FjdGl2YXRlZCIsInZlbG9jaXR5IiwiVHJhbnNpdGlvbmVyIiwidHJhbnNpdGlvbk9wdGlvbnMiLCJzcGVlZFVwIiwic2VsTGlzdCIsIml0ZW1zaG93biIsInF1ZXVlSW5kZXgiLCJnZXREaXJlY3Rpb24iLCJfZ2V0VHJhbnNpdGlvbmVyIiwidHJhbnNpdGlvbmVyIiwiU2xpZGVzaG93IiwiQW5pbWF0aW9ucyQkMSIsIml0ZW1zaG93IGl0ZW1oaWRlIGl0ZW1zaG93biBpdGVtaGlkZGVuIiwiaXRlbXNob3ciLCJiZWZvcmVpdGVtc2hvdyIsIml0ZW1oaWRkZW4iLCJMaWdodGJveFBhbmVsIiwiZGVsYXlDb250cm9scyIsInZpZGVvQXV0b3BsYXkiLCJ0ZW1wbGF0ZSIsImhpZGVDb250cm9scyIsImdldEl0ZW0iLCJsb2FkSXRlbSIsImFsdCIsInNldEl0ZW0iLCJzZXRFcnJvciIsInZpZGVvIiwicG9zdGVyIiwidmlkZW9XaWR0aCIsInZpZGVvSGVpZ2h0Iiwic2V0SWZyYW1lIiwiZ2V0SWZyYW1lIiwiZW5jb2RlVVJJIiwid2l0aENyZWRlbnRpYWxzIiwicmVmX3Jlc3BvbnNlIiwic2hvd0NvbnRyb2xzIiwiY29udHJvbHNUaW1lciIsIkxpZ2h0Ym94IiwibGlnaHRib3hQYW5lbCIsIl9kZXN0cm95IiwiY29udGFpbmVycyIsIk5vdGlmaWNhdGlvbiIsImNsc0Nsb3NlIiwiY2xzTXNnIiwiY2xvc2VBbGwiLCJpbW1lZGlhdGUiLCJyZW1vdmVGbiIsInByb3BzJDEiLCJQYXJhbGxheCIsImJnUG9zIiwiaXNDb2xvciIsImlzQ3NzUHJvcCIsInN0ZXBzIiwiY292ZXJzIiwiZG93biIsImJnUHJvcHMiLCJiZyIsImJhY2tncm91bmRTaXplIiwiX2ltYWdlIiwiZGltRWwiLCJuYXR1cmFsV2lkdGgiLCJuYXR1cmFsSGVpZ2h0Iiwic3BhbiIsImJnUG9zRmxvYXQiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiZ2V0Q3NzIiwiY3NzJCQxIiwiZ2V0VmFsdWUiLCJyZWYkMiIsImdldFN0ZXAiLCJQYXJhbGxheCQxIiwiZWFzZSQxIiwiU2xpZGVyUmVhY3RpdmUiLCJnZXRMZWZ0IiwiY2VudGVyIiwiZ2V0RWxMZWZ0IiwiY2VudGVyRWwiLCJnZXRNYXgiLCJnZXRXaWR0aCIsInRyaWdnZXJVcGRhdGUkMSIsIlNsaWRlciQxIiwic2V0cyIsInVwZGF0ZVRyYW5zbGF0ZXMiLCJnZXRJdGVtSW4iLCJnZXRBY3RpdmVzIiwic2xpZGVMZWZ0IiwiYXZnV2lkdGgiLCJsZWZ0Q2VudGVyIiwic2xpZGVXaWR0aCIsInJlb3JkZXIiLCJzbGlkZUluZGV4IiwiU2xpZGVyUGFyYWxsYXgiLCJzZWxJdGVtIiwicmVmX2RldGFpbCIsImdldEN1cnJlbnQiLCJpc0luIiwib2JqJDEiLCJvYmokMiIsIkFuaW1hdGlvbnMkMiIsInB1bGwiLCJTbGlkZXNob3ckMSIsIm1heEhlaWdodCIsImhndCIsIlNvcnRhYmxlIiwiY2xzSXRlbSIsImNsc1BsYWNlaG9sZGVyIiwiY2xzRHJhZyIsImNsc0RyYWdTdGF0ZSIsImNsc0Jhc2UiLCJjbHNOb0RyYWciLCJjbHNFbXB0eSIsImNsc0N1c3RvbSIsInRvdWNoZWQiLCJvdXRlckhUTUwiLCJlbGVtZW50RnJvbVBvaW50Iiwic29ydGFibGUiLCJnZXRTb3J0YWJsZSIsInByZXZpb3VzIiwiaXNQcmVkZWNlc3NvciIsIlRvb2x0aXAiLCJ0aXRsZSIsIl9oYXNUaXRsZSIsImFyaWEtZXhwYW5kZWQiLCJfdW5iaW5kIiwidG9vbHRpcCIsIlVwbG9hZCIsImFsbG93IiwiY2xzRHJhZ292ZXIiLCJjb25jdXJyZW50IiwibWF4U2l6ZSIsIm1pbWUiLCJtc2dJbnZhbGlkTWltZSIsIm1zZ0ludmFsaWROYW1lIiwibXNnSW52YWxpZFNpemUiLCJiZWZvcmVBbGwiLCJjb21wbGV0ZUFsbCIsImxvYWRFbmQiLCJsb2FkU3RhcnQiLCJ1cGxvYWQiLCJ0cmFuc2ZlciIsImRhdGFUcmFuc2ZlciIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiY2h1bmtzIiwiY2h1bmsiLCJGb3JtRGF0YSIsIm11dGF0aW9ucyIsImFwcGx5TXV0YXRpb24iLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiY2hhcmFjdGVyRGF0YSIsIm11dGF0aW9uIiwiYWRkZWROb2RlcyIsInJlbW92ZWROb2RlcyIsImkkMSIsImFwcGx5Q2hpbGRMaXN0IiwiYXR0cmlidXRlTmFtZSIsImFwcGx5QXR0cmlidXRlIiwiYm9vdCJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQSxTQUFBQSxVQUFBQyxJQUFBQyxVQUFBQyxjQUNBLE1BQUFDLE9BQUFDLFNBQUFDLGNBQUEsVUFDQUYsT0FBQUcsS0FBQSxrQkFDQUgsT0FBQUksSUFBQVAsSUFDQUcsT0FBQUssT0FBQSxPQUVBQyxJQUFBUixZQUNBRSxPQUFBRixVQUFBQSxnQkFHQVEsSUFBQVAsZUFDQUMsT0FBQU8sWUFBQVIsY0FHQUUsU0FBQU8scUJBQUEsUUFBQSxHQUFBQyxZQUFBVCxRQUdBLFNBQUFVLFNBQUFDLFNBQUFDLFVBQ0FYLFNBQUFZLGNBQUFGLFVBRUFHLFVBQUFGLFNBR0EsU0FBQUcsWUFBQUosU0FBQUMsVUFDQSxNQUFBSSxRQUFBZixTQUFBWSxjQUFBRixVQUNBTSxJQUFBLElBQUFDLGVBQUFOLGdCQUFBLEtBQ0FJLFFBQUFGLFVBQUFFLFFBQUFGLFVBQUFLLFFBQUFGLElBQUEsS0N4QkEsU0FBQUcsbUJBQ0EsTUFBQUMsSUFBQXBCLFNBQUFxQixlQUFBLFNBRUFDLFdBQUEsSUFBQUMsV0FBQUgsS0FDQUksTUFBQSxFQUNBQyxZQUFBLEdBQ0FDLFlBQUEsVUFDQUMsU0FBQSxJQVVBM0IsU0FBQXFCLGVBQUEsa0JBQUFPLFFBUEEsV0FDQSxN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UUFGQSxHQTVCQWtnQixDQUFBTixZQUVBbjJGLE1BQUF3dkUsT0FBQW43QyxRQWlEQSxTQUFBbzFELFNBQUFoM0QsS0FBQW5zQixJQUVBLEdBQUEsSUFBQW1zQixLQUFBUCxXQUFBOHZDLFFBQUF2dkMsS0FBQSxjQU1BLElBRkFuc0IsR0FBQW1zQixNQUNBQSxLQUFBQSxLQUFBKzZCLGtCQUNBLzZCLE1BQUEsQ0FDQSxJQUFBalgsS0FBQWlYLEtBQUF5MEMsbUJBQ0F1aUIsU0FBQWgzRCxLQUFBbnNCLElBQ0Ftc0IsS0FBQWpYLE1BMUdBLHFCQUFBdmMsU0FJQXRDLFNBQUFreUMsS0FFQTViLE9BSUEsSUFBQTRpRCxpQkFBQSxXQUVBbDVFLFNBQUFreUMsT0FDQXR0QyxLQUFBdXlFLGFBQ0E3Z0QsVUFHQThpRCxRQUFBcDVFLFVBQUFxNUYsV0FBQSxFQUFBQyxTQUFBLEtBOHZSQVMsQ0FBQTEyRixPQUdBQSIsImZpbGUiOiJzY3JpcHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gZ2V0U2NyaXB0KHVybCwgaW50ZWdyaXR5LCBjcm9zc19vcmlnaW4pIHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgIHNjcmlwdC50eXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIjtcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgIHNjcmlwdC5kZWZlciA9IHRydWU7XG5cbiAgICBpZiAoaW50ZWdyaXR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2NyaXB0LmludGVncml0eSA9IGludGVncml0eTtcbiAgICB9XG5cbiAgICBpZiAoY3Jvc3Nfb3JpZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2NyaXB0LmNyb3NzT3JpZ2luID0gY3Jvc3Nfb3JpZ2luO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChzY3JpcHQpO1xufVxuXG5mdW5jdGlvbiBzZXRDbGFzcyhzZWxlY3RvciwgbXlfY2xhc3MpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgLy8gY29uc29sZS5sb2coZWxlbWVudCk7XG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSBteV9jbGFzcztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2xhc3Moc2VsZWN0b3IsIG15X2NsYXNzKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYChefCApJHtteV9jbGFzc30oJHwgKWAsIFwiZ1wiKTtcbiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UocmVnLCBcIiBcIik7XG59XG5cbi8vIGhpZGUgdGhlIGh0bWwgd2hlbiB0aGUgcGFnZSBsb2FkcywgYnV0IG9ubHkgaWYganMgaXMgdHVybmVkIG9uLlxuc2V0Q2xhc3MoXCJodG1sXCIsIFwicHJldmVudC1mb3VjXCIpO1xuXG4vLyB3aGVuIHRoZSBET00gaGFzIGZpbmlzaGVkIGxvYWRpbmcsIHVuaGlkZSB0aGUgaHRtbFxuZG9jdW1lbnQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImludGVyYWN0aXZlXCIpIHtcbiAgICAgICAgcmVtb3ZlQ2xhc3MoXCJodG1sXCIsIFwicHJldmVudC1mb3VjXCIpO1xuICAgICAgICBnZXRTY3JpcHQoXG4gICAgICAgICAgICBcImh0dHBzOi8vcHJvLmZvbnRhd2Vzb21lLmNvbS9yZWxlYXNlcy92NS4xLjAvanMvYWxsLmpzXCIsIC8vIFVSTFxuICAgICAgICAgICAgXCJzaGEzODQtRTVTcGdhWmNiU0p4MElhYmIzSnIyQWZUUmlGbnJkT3cxbWhPMTlEenpyVDlMK3dDcER5SFVHMnEwN2FRZE82RVwiLCAvLyBJbnRlZ3JpdHlcbiAgICAgICAgICAgIFwiYW5vbnltb3VzXCIgLy8gQ3Jvc3Mtb3JpZ2luXG4gICAgICAgICk7XG4gICAgICAgIGdldFNjcmlwdChcbiAgICAgICAgICAgIFwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvYWNlLzEuMy4zL2FjZS5qc1wiXG4gICAgICAgICk7XG4gICAgICAgIGdldFNjcmlwdChcbiAgICAgICAgICAgIFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9mbGF0cGlja3JcIlxuICAgICAgICApO1xuICAgIH1cbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXhwb3J0ZWQgZXJyb3JfdHlwZXdyaXRlciAqL1xuXG5mdW5jdGlvbiBlcnJvcl90eXBld3JpdGVyKCkge1xuICAgIGNvbnN0IGFwcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZXJyb3JcIik7XG5cbiAgICBjb25zdCB0eXBld3JpdGVyID0gbmV3IFR5cGV3cml0ZXIoYXBwLCB7XG4gICAgICAgIFwibG9vcFwiOiBmYWxzZSxcbiAgICAgICAgXCJkZWxldGVTcGVlZFwiOiA0MCxcbiAgICAgICAgXCJ0eXBpbmdTcGVlZFwiOiBcIm5hdHVyYWxcIixcbiAgICAgICAgXCJkZXZNb2RlXCI6IGZhbHNlXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjbG9zZVdpbmRvdygpIHtcbiAgICAgICAgY29uc3QgYXBwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3aW5cIik7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRfY2xhc3MgPSBhcHAuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIik7XG4gICAgICAgIGFwcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBgJHtjdXJyZW50X2NsYXNzIH0gdWstYW5pbWF0aW9uLXNjYWxlLXVwIHVrLWFuaW1hdGlvbi1yZXZlcnNlYCk7XG4gICAgICAgIHR5cGV3cml0ZXIuc3RvcCgpO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGVybWluYWwtY2xvc2VcIikub25jbGljayA9IGNsb3NlV2luZG93O1xuXG4gICAgdHlwZXdyaXRlci5hcHBlbmRUZXh0KFwiUHl0aG9uIDMuNi40IChkZWZhdWx0LCBKYW4gIDUgMjAxOCwgMDI6MzU6NDApXFxuXCIpXG4gICAgICAgIC5hcHBlbmRUZXh0KFwiW0dDQyA3LjIuMSAyMDE3MTIyNF0gb24gZGFyd2luXFxuXCIpXG4gICAgICAgIC5hcHBlbmRUZXh0KFwiVHlwZSBcXFwiaGVscFxcXCIsIFxcXCJjb3B5cmlnaHRcXFwiLCBcXFwiY3JlZGl0c1xcXCIgb3IgXFxcImxpY2Vuc2VcXFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIj4+PiBcIilcbiAgICAgICAgLnBhdXNlRm9yKDEwMDApXG4gICAgICAgIC50eXBlU3RyaW5nKFwiaW1wb3IgcmVxdWVzdHNcIilcbiAgICAgICAgLmRlbGV0ZUNoYXJzKDkpXG4gICAgICAgIC50eXBlU3RyaW5nKFwidCByZXF1ZXN0c1xcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIj4+PiBcIilcbiAgICAgICAgLnBhdXNlRm9yKDc1MClcbiAgICAgICAgLmNoYW5nZVNldHRpbmdzKHtcInR5cGluZ1NwZWVkXCI6IFwibmF0dXJhbFwifSlcbiAgICAgICAgLnR5cGVTdHJpbmcoYHJlc3BvbnNlID0gcmVxdWVzdHMuJHsgd2luZG93Ll9SZXF1ZXN0TWV0aG9kIH0oJ2h0dHBzOi8vcHl0aGltYClcbiAgICAgICAgLmRlbGV0ZUNoYXJzKDIpXG4gICAgICAgIC50eXBlU3RyaW5nKFwib25kaXNjb3JkLmNvbi9cIilcbiAgICAgICAgLmRlbGV0ZUNoYXJzKDIpXG4gICAgICAgIC50eXBlU3RyaW5nKGBtJHsgd2luZG93Ll9QYXRoIH0nKVxcbmApXG4gICAgICAgIC5wYXVzZUZvcigxMDAwKVxuICAgICAgICAuYXBwZW5kVGV4dChgJmx0O1Jlc3BvbnNlIFskeyB3aW5kb3cuX0NvZGUgfV0mZ3Q7XFxuPj4+IGApXG4gICAgICAgIC50eXBlU3RyaW5nKFwiIyBobW1tbVwiKVxuICAgICAgICAucGF1c2VGb3IoMTAwMClcbiAgICAgICAgLmRlbGV0ZUNoYXJzKDcpXG4gICAgICAgIC5wYXVzZUZvcigxMDAwKVxuICAgICAgICAudHlwZVN0cmluZyhcInJlc3BvbnNlLnRleHRcXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoYCR7IHdpbmRvdy5fRXJyb3JNc2cgfVxcbj4+PiBgKVxuICAgICAgICAuc3RhcnQoKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4oZnVuY3Rpb24oKXsgLy8gVXNlIGEgY2xvc3VyZSB0byBhdm9pZCBwb2xsdXRpbmcgZ2xvYmFsIHNjb3BlXG4gICAgLy8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSBidWlsdCBpbnRvIHRoZSBqYW1zIHN5c3RlbVxuICAgIGNvbnN0IHN0YXJ0amFtID0gbmV3IERhdGUoRGF0ZS5VVEMoMjAxOCwgMiwgMjMpKTtcbiAgICBjb25zdCBlbmRqYW0gPSBuZXcgRGF0ZShEYXRlLlVUQygyMDE4LCAyLCAyNikpO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgZ29hbDtcblxuICAgIGlmIChub3cgKyAxMDAwIDwgZW5kamFtLmdldFRpbWUoKSkgeyAvLyBPbmx5IGRvIGFueXRoaW5nIGlmIHRoZSBqYW0gaGFzbid0IGVuZGVkXG4gICAgICAgIFVJa2l0Lm5vdGlmaWNhdGlvbiggLy8gU3Bhd24gdGhlIG5vdGlmaWNhdGlvblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwibWVzc2FnZVwiOiBcIlwiXG4gICAgICAgICAgICAgICAgICArIFwiPGRpdiBjbGFzcz0ndWstdGV4dC1jZW50ZXInPlwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgIDxzcGFuIGlkPVxcXCJjb3VudGRvd24tdGl0bGVcXFwiIGNsYXNzPVxcXCJ1ay10ZXh0LWNlbnRlclxcXCI+XCJcbiAgICAgICAgICAgICAgICAgICsgXCIgICAgICAgIDxhIGhyZWY9XFxcIi9pbmZvL2phbXNcXFwiPkNvZGUgSmFtPC9hPiBDb3VudGRvd25cIlxuICAgICAgICAgICAgICAgICAgKyBcIiAgICA8L3NwYW4+XCJcbiAgICAgICAgICAgICAgICAgICsgXCIgICAgPHAgY2xhc3M9J3VrLXRleHQtbGFyZ2UnIGlkPVxcXCJjb3VudGRvd24tcmVtYWluaW5nXFxcIj4uLi48L3A+XCJcbiAgICAgICAgICAgICAgICAgICsgXCI8c21hbGwgc3R5bGU9J2ZvbnQtc2l6ZTogMC42ZW07Jz4oVGFwL2NsaWNrIHRvIGRpc21pc3MpPC9zbWFsbD5cIlxuICAgICAgICAgICAgICAgICAgKyBcIjwvZGl2PlwiLFxuICAgICAgICAgICAgICAgIFwicG9zXCI6IFwiYm90dG9tLXJpZ2h0XCIsXG4gICAgICAgICAgICAgICAgXCJ0aW1lb3V0XCI6IGVuZGphbSAtIG5vd1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGhlYWRpbmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvdW50ZG93bi10aXRsZVwiKTtcblxuICAgICAgICBpZiAobm93ID4gc3RhcnRqYW0uZ2V0VGltZSgpKSB7IC8vIEphbSdzIGFscmVhZHkgc3RhcnRlZFxuICAgICAgICAgICAgaGVhZGluZy5pbm5lckhUTUwgPSBcIkN1cnJlbnQgPGEgaHJlZj1cXFwiL2luZm8vamFtc1xcXCI+Y29kZSBqYW08L2E+IGVuZHMgaW4uLi5cIjtcbiAgICAgICAgICAgIGdvYWwgPSBlbmRqYW0uZ2V0VGltZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGVhZGluZy5pbm5lckhUTUwgPSBcIk5leHQgPGEgaHJlZj1cXFwiL2luZm8vamFtc1xcXCI+Y29kZSBqYW08L2E+IHN0YXJ0cyBpbi4uLlwiO1xuICAgICAgICAgICAgZ29hbCA9IHN0YXJ0amFtLmdldFRpbWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlZnJlc2hDb3VudGRvd24gPSBzZXRJbnRlcnZhbCgoKSA9PiB7IC8vIENyZWF0ZSBhIHJlcGVhdGluZyB0YXNrXG4gICAgICAgICAgICBsZXQgZGVsdGEgPSBnb2FsIC0gRGF0ZS5ub3coKTsgLy8gVGltZSB1bnRpbCB0aGUgZ29hbCBpcyBtZXRcblxuICAgICAgICAgICAgaWYgKGRlbHRhIDw9IDEwMDApIHsgLy8gR29hbCBoYXMgYmVlbiBtZXQsIGJlc3QgcmVsb2FkXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChyZWZyZXNoQ291bnRkb3duKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkYXlzID0gTWF0aC5mbG9vcihkZWx0YSAvICgyNCAqIDYwICogNjAgKiAxMDAwKSk7XG4gICAgICAgICAgICBkZWx0YSAtPSBkYXlzICogKDI0ICogNjAgKiA2MCAqIDEwMDApO1xuXG4gICAgICAgICAgICBsZXQgaG91cnMgPSBNYXRoLmZsb29yKGRlbHRhIC8gKDYwICogNjAgKiAxMDAwKSk7XG4gICAgICAgICAgICBkZWx0YSAtPSBob3VycyAqICg2MCAqIDYwICogMTAwMCk7XG5cbiAgICAgICAgICAgIGxldCBtaW51dGVzID0gTWF0aC5mbG9vcihkZWx0YSAvICg2MCAqIDEwMDApKTtcbiAgICAgICAgICAgIGRlbHRhIC09IG1pbnV0ZXMgKiAoNjAgKiAxMDAwKTtcblxuICAgICAgICAgICAgbGV0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRlbHRhIC8gMTAwMCk7XG5cbiAgICAgICAgICAgIGlmIChkYXlzIDwgMTApIHtcbiAgICAgICAgICAgICAgICBkYXlzID0gYDAke2RheXN9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTApIHtcbiAgICAgICAgICAgICAgICBob3VycyA9IGAwJHtob3Vyc31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWludXRlcyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgbWludXRlcyA9IGAwJHttaW51dGVzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWNvbmRzIDwgMTApIHtcbiAgICAgICAgICAgICAgICBzZWNvbmRzID0gYDAke3NlY29uZHN9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvdW50ZG93bi1yZW1haW5pbmdcIikuaW5uZXJIVE1MID0gYCR7ZGF5c306JHtob3Vyc306JHttaW51dGVzfToke3NlY29uZHN9YDtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgLy8gTm90aWZpY2F0aW9uIHdhcyBwcm9iYWJseSBjbG9zZWQsIHNvIHdlIGNhbiBzdG9wIGNvdW50aW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFySW50ZXJ2YWwocmVmcmVzaENvdW50ZG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgfVxufSkoKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBleHBvcnRlZCBKYW1BY3Rpb25zICovXG5cbmNsYXNzIEphbUFjdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKHVybCwgY3NyZl90b2tlbikge1xuICAgICAgICB0aGlzLnVybCA9IHVybDtcbiAgICAgICAgdGhpcy5jc3JmX3Rva2VuID0gY3NyZl90b2tlbjtcbiAgICB9XG5cbiAgICBzZW5kKGFjdGlvbiwgbWV0aG9kLCBkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICBkYXRhW1wiYWN0aW9uXCJdID0gYWN0aW9uO1xuXG4gICAgICAgICQuYWpheCh0aGlzLnVybCwge1xuICAgICAgICAgICAgXCJkYXRhXCI6IGRhdGEsXG4gICAgICAgICAgICBcImRhdGFUeXBlXCI6IFwianNvblwiLFxuICAgICAgICAgICAgXCJoZWFkZXJzXCI6IHtcIlgtQ1NSRlRva2VuXCI6IHRoaXMuY3NyZl90b2tlbn0sXG4gICAgICAgICAgICBcIm1ldGhvZFwiOiBtZXRob2QsXG4gICAgICAgIH0pLmRvbmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAoXCJlcnJvcl9jb2RlXCIgaW4gZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhmYWxzZSwgZGF0YSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayh0cnVlLCBkYXRhKTtcbiAgICAgICAgfSkuZmFpbCgoKSA9PiBjYWxsYmFjayhmYWxzZSkpO1xuICAgIH1cblxuICAgIHNlbmRfanNvbihhY3Rpb24sIG1ldGhvZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgZGF0YVtcImFjdGlvblwiXSA9IGFjdGlvbjtcblxuICAgICAgICAkLmFqYXgodGhpcy51cmwsIHtcbiAgICAgICAgICAgIFwiZGF0YVwiOiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJqc29uXCIsXG4gICAgICAgICAgICBcImhlYWRlcnNcIjoge1wiWC1DU1JGVG9rZW5cIjogdGhpcy5jc3JmX3Rva2VufSxcbiAgICAgICAgICAgIFwiY29udGVudFR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICBcIm1ldGhvZFwiOiBtZXRob2RcbiAgICAgICAgfSkuZG9uZShkYXRhID0+IHtcbiAgICAgICAgICAgIGlmIChcImVycm9yX2NvZGVcIiBpbiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGZhbHNlLCBkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHRydWUsIGRhdGEpO1xuICAgICAgICB9KS5mYWlsKCgpID0+IGNhbGxiYWNrKGZhbHNlKSk7XG4gICAgfVxuXG4gICAgc2V0X3N0YXRlKGphbSwgc3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwic3RhdGVcIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiamFtXCI6IGphbSxcbiAgICAgICAgICAgICAgICBcInN0YXRlXCI6IHN0YXRlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRfcXVlc3Rpb25zKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCIsXG4gICAgICAgICAgICBcIkdFVFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZV9xdWVzdGlvbihkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmRfanNvbihcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZV9xdWVzdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJxdWVzdGlvblwiLFxuICAgICAgICAgICAgXCJERUxFVEVcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXNzb2NpYXRlX3F1ZXN0aW9uKGZvcm0sIHF1ZXN0aW9uLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImFzc29jaWF0ZV9xdWVzdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJmb3JtXCI6IGZvcm0sXG4gICAgICAgICAgICAgICAgXCJxdWVzdGlvblwiOiBxdWVzdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRpc2Fzc29jaWF0ZV9xdWVzdGlvbihmb3JtLCBxdWVzdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJkaXNhc3NvY2lhdGVfcXVlc3Rpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiZm9ybVwiOiBmb3JtLFxuICAgICAgICAgICAgICAgIFwicXVlc3Rpb25cIjogcXVlc3Rpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVfaW5mcmFjdGlvbihpZCwgcmVhc29uLCBudW1iZXIsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiaW5mcmFjdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJwYXJ0aWNpcGFudFwiOiBpZCxcbiAgICAgICAgICAgICAgICBcInJlYXNvblwiOiByZWFzb24sXG4gICAgICAgICAgICAgICAgXCJudW1iZXJcIjogbnVtYmVyXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWxldGVfaW5mcmFjdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJpbmZyYWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRFTEVURVwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhcHByb3ZlX2FwcGxpY2F0aW9uKGlkLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImFwcHJvdmVfYXBwbGljYXRpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1bmFwcHJvdmVfYXBwbGljYXRpb24oaWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwidW5hcHByb3ZlX2FwcGxpY2F0aW9uXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVfdGVhbXMoamFtLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImdlbmVyYXRlX3RlYW1zXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImphbVwiOiBqYW19LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVfdGVhbShqYW0sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiY3JlYXRlX3RlYW1cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiamFtXCI6IGphbX0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlcm9sbF90ZWFtKHRlYW0sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwicmVyb2xsX3RlYW1cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1widGVhbVwiOiB0ZWFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGVsZXRlX3RlYW0odGVhbSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJ0ZWFtXCIsXG4gICAgICAgICAgICBcIkRFTEVURVwiLFxuICAgICAgICAgICAge1widGVhbVwiOiB0ZWFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0X3RlYW1fbWVtYmVyKGphbSwgbWVtYmVyLCB0ZWFtLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcInNldF90ZWFtX21lbWJlclwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XCJqYW1cIjogamFtLCBcIm1lbWJlclwiOiBtZW1iZXIsIFwidGVhbVwiOiB0ZWFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGV4cG9ydGVkIHJldmlzaW9uX2RpZmYgKi9cblxuZnVuY3Rpb24gcmV2aXNpb25fZGlmZihyZXZpc2lvbnMpIHtcbiAgICBjb25zdCBidXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInRkIGlucHV0XCIpOyAvLyBGZXRjaCBhbGwgcmFkaW8gYnV0dG9uc1xuICAgIGNvbnN0IGlkX3JlZyA9IC9jb21wYXJlLShiZWZvcmV8YWZ0ZXIpLShbXFx3fC1dKykvOyAvLyBNYXRjaGVzIGNvbXBhcmUtYWZ0ZXIvYmVmb3JlLUlEXG5cblxuICAgIGZ1bmN0aW9uIGdldFJldmlzaW9uSWQoZWxlbWVudCl7XG4gICAgICAgIGNvbnN0IGUgPSBlbGVtZW50LmlkLm1hdGNoKGlkX3JlZyk7IC8vIE1hdGNoIElEIHdpdGggUmVnRXhwXG4gICAgICAgIHJldHVybiBbZVsxXSwgZVsyXV07IC8vIGUgaXMgaW4gZm9ybWF0IG9mIFtmdWxsIGlkLCBhZnRlci9iZWZvcmUsIElEXSB3ZSBvbmx5IHdhbnQgSUQgJiBtb2RlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UmV2aXNpb24oaWQpIHtcbiAgICAgICAgY29uc3QgZSA9IHJldmlzaW9ucy5maWx0ZXIoKHgpID0+IHtcbiAgICAgICAgICAgIC8vIEZpbHRlciB0aHJvdWdoIGFsbCByZXZpc2lvbnMgdG8gZmluZCB0aGUgc2VsZWN0ZWQgb25lIChyZXZpc2lvbnMgaW4gZGVjbGFyZWQgaW4gdGhlIHRlbXBsYXRlKVxuICAgICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVbMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmFkaW9CdXR0b25DaGVja2VkKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWQgPSBnZXRSZXZpc2lvbklkKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCByZXYgPSBnZXRSZXZpc2lvbihpZFsxXSk7XG4gICAgICAgIGlmIChpZFswXSA9PT0gXCJhZnRlclwiKXtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgKiBEZXNlbGVjdCB0aGUgb3Bwb3NpdGUgY2hlY2tib3ggdG8gdGhlIG9uZSB3aGljaCBoYXMgYmVlbiBjaGVja2VkXG4gICAgICAgICAgICAgKiBiZWNhdXNlIHdlIGRvbid0IHdhbnQgY2hlY2tpbmcgb2YgdGhlIHNhbWUgcmV2aXNpb25cbiAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjY29tcGFyZS1iZWZvcmUtJHtpZFsxXX1gKS5jaGVja2VkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChnZXRSZXZpc2lvbklkKGUpWzBdID09PSBcImFmdGVyXCIgJiYgZS5pZCAhPT0gZWxlbWVudC5pZCkgeyAvLyBEZXNlbGVjdCBhbGwgY2hlY2tib3hlcyBpbiB0aGUgc2FtZSByb3dcbiAgICAgICAgICAgICAgICAgICAgZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIFRoaXMgZWxzZSBkb2VzIHRoZSBzYW1lIGFzIGFib3ZlIGJ1dCBmb3IgdGhlIGJlZm9yZSBjb2x1bW5cbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjb21wYXJlLWFmdGVyLSR7aWRbMV19YCkuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgYnV0dG9ucy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGdldFJldmlzaW9uSWQoZSlbMF0gPT09IFwiYmVmb3JlXCIgJiYgZS5pZCAhPT0gZWxlbWVudC5pZCkge1xuICAgICAgICAgICAgICAgICAgICBlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhhdCB5b3UgZG8gbm90IGNvbXBhcmUgYSBuZXcgcmV2aXNpb24gd2l0aCBhbiBvbGQgb25lXG4gICAgICAgICAgICAgICAgaWYgKGdldFJldmlzaW9uSWQoZSlbMF0gPT09IFwiYWZ0ZXJcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0bXByZXYgPSBnZXRSZXZpc2lvbihnZXRSZXZpc2lvbklkKGUpWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codG1wcmV2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRtcHJldi5kYXRlIDw9IHJldi5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtlLmlkfWApLnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7ZS5pZH1gKS5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFmdCwgYmVmO1xuXG4gICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7IC8vIEZpbmQgdGhlIHNlbGVjdGVkIHBvc3RzXG4gICAgICAgICAgICBjb25zdCBpZCA9IGdldFJldmlzaW9uSWQoYnV0dG9uKTtcbiAgICAgICAgICAgIGlmIChidXR0b24uY2hlY2tlZCAmJiBpZFswXSA9PT0gXCJiZWZvcmVcIikge1xuICAgICAgICAgICAgICAgIGJlZiA9IGlkWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYnV0dG9uLmNoZWNrZWQgJiYgaWRbMF0gPT09IFwiYWZ0ZXJcIikge1xuICAgICAgICAgICAgICAgIGFmdCA9IGlkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTd2l0Y2ggdGhlIGJ1dHRvbnMgSFJFRiB0byBwb2ludCB0byB0aGUgY29ycmVjdCBjb21wYXJlIFVSTFxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbXBhcmUtc3VibWl0XCIpLmhyZWYgPSBgL2hpc3RvcnkvY29tcGFyZS8ke2JlZn0vJHthZnR9YDtcblxuICAgIH1cblxuICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICAgIGJ1dHRvbi5jaGVja2VkID0gZmFsc2U7IC8vIFNvbWUgYnJvd3NlcnMgcmVtZW1iZXIgaWYgYSBidXR0b24gaXMgY2hlY2tlZC5cbiAgICAgICAgYnV0dG9uLm9uY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByYWRpb0J1dHRvbkNoZWNrZWQoYnV0dG9uKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBleHBvcnRlZCB3aWtpX3NpZGViYXIgKi9cblxuZnVuY3Rpb24gd2lraV9zaWRlYmFyKCl7XG4gICAgY29uc3QgdmlzaWJsZV9jbGFzcyA9IFwidWstdmlzaWJsZUBzXCI7XG4gICAgY29uc3Qgc2lkZWJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2lraS1zaWRlYmFyXCIpO1xuICAgIGNvbnN0IGRpc3BsYXlfYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3aWtpLXNpZGViYXItYnV0dG9uXCIpO1xuXG4gICAgZGlzcGxheV9idXR0b24ub25jbGljayA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoc2lkZWJhci5jbGFzc0xpc3QuY29udGFpbnModmlzaWJsZV9jbGFzcykpIHtcbiAgICAgICAgICAgIHNpZGViYXIuY2xhc3NMaXN0LnJlbW92ZSh2aXNpYmxlX2NsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZGViYXIuY2xhc3NMaXN0LmFkZCh2aXNpYmxlX2NsYXNzKTtcbiAgICAgICAgfVxuICAgIH07XG59XG4iLCIvLyEgbW9tZW50LmpzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAgIGdsb2JhbC5tb21lbnQgPSBmYWN0b3J5KClcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIGhvb2tDYWxsYmFjaztcblxuICAgIGZ1bmN0aW9uIGhvb2tzICgpIHtcbiAgICAgICAgcmV0dXJuIGhvb2tDYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgZG9uZSB0byByZWdpc3RlciB0aGUgbWV0aG9kIGNhbGxlZCB3aXRoIG1vbWVudCgpXG4gICAgLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgZnVuY3Rpb24gc2V0SG9va0NhbGxiYWNrIChjYWxsYmFjaykge1xuICAgICAgICBob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yXG4gICAgICAgIC8vIGlucHV0ICE9IG51bGxcbiAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoID09PSAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrO1xuICAgICAgICAgICAgZm9yIChrIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09PSB2b2lkIDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXRlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIERhdGUgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hcChhcnIsIGZuKSB7XG4gICAgICAgIHZhciByZXMgPSBbXSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgcmVzLnB1c2goZm4oYXJyW2ldLCBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCBiKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlbmQoYSwgYikge1xuICAgICAgICBmb3IgKHZhciBpIGluIGIpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGIsIGkpKSB7XG4gICAgICAgICAgICAgICAgYVtpXSA9IGJbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndG9TdHJpbmcnKSkge1xuICAgICAgICAgICAgYS50b1N0cmluZyA9IGIudG9TdHJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndmFsdWVPZicpKSB7XG4gICAgICAgICAgICBhLnZhbHVlT2YgPSBiLnZhbHVlT2Y7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCB0cnVlKS51dGMoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZhdWx0UGFyc2luZ0ZsYWdzKCkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGRlZXAgY2xvbmUgdGhpcyBvYmplY3QuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbXB0eSAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVudXNlZFRva2VucyAgICA6IFtdLFxuICAgICAgICAgICAgdW51c2VkSW5wdXQgICAgIDogW10sXG4gICAgICAgICAgICBvdmVyZmxvdyAgICAgICAgOiAtMixcbiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXIgICA6IDAsXG4gICAgICAgICAgICBudWxsSW5wdXQgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIGludmFsaWRNb250aCAgICA6IG51bGwsXG4gICAgICAgICAgICBpbnZhbGlkRm9ybWF0ICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVzZXJJbnZhbGlkYXRlZCA6IGZhbHNlLFxuICAgICAgICAgICAgaXNvICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICBwYXJzZWREYXRlUGFydHMgOiBbXSxcbiAgICAgICAgICAgIG1lcmlkaWVtICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICByZmMyODIyICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHdlZWtkYXlNaXNtYXRjaCA6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHtcbiAgICAgICAgaWYgKG0uX3BmID09IG51bGwpIHtcbiAgICAgICAgICAgIG0uX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9wZjtcbiAgICB9XG5cbiAgICB2YXIgc29tZTtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLnNvbWUpIHtcbiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWUgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKTtcbiAgICAgICAgICAgIHZhciBsZW4gPSB0Lmxlbmd0aCA+Pj4gMDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpIGluIHQgJiYgZnVuLmNhbGwodGhpcywgdFtpXSwgaSwgdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZChtKSB7XG4gICAgICAgIGlmIChtLl9pc1ZhbGlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBmbGFncyA9IGdldFBhcnNpbmdGbGFncyhtKTtcbiAgICAgICAgICAgIHZhciBwYXJzZWRQYXJ0cyA9IHNvbWUuY2FsbChmbGFncy5wYXJzZWREYXRlUGFydHMsIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgIT0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGlzTm93VmFsaWQgPSAhaXNOYU4obS5fZC5nZXRUaW1lKCkpICYmXG4gICAgICAgICAgICAgICAgZmxhZ3Mub3ZlcmZsb3cgPCAwICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmVtcHR5ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkV2Vla2RheSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy53ZWVrZGF5TWlzbWF0Y2ggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRGb3JtYXQgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MudXNlckludmFsaWRhdGVkICYmXG4gICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTtcblxuICAgICAgICAgICAgaWYgKG0uX3N0cmljdCkge1xuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPSBpc05vd1ZhbGlkICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmNoYXJzTGVmdE92ZXIgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MudW51c2VkVG9rZW5zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5iaWdIb3VyID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7XG4gICAgICAgICAgICAgICAgbS5faXNWYWxpZCA9IGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNOb3dWYWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkIChmbGFncykge1xuICAgICAgICB2YXIgbSA9IGNyZWF0ZVVUQyhOYU4pO1xuICAgICAgICBpZiAoZmxhZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgZXh0ZW5kKGdldFBhcnNpbmdGbGFncyhtKSwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLnVzZXJJbnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICAvLyBQbHVnaW5zIHRoYXQgYWRkIHByb3BlcnRpZXMgc2hvdWxkIGFsc28gYWRkIHRoZSBrZXkgaGVyZSAobnVsbCB2YWx1ZSksXG4gICAgLy8gc28gd2UgY2FuIHByb3Blcmx5IGNsb25lIG91cnNlbHZlcy5cbiAgICB2YXIgbW9tZW50UHJvcGVydGllcyA9IGhvb2tzLm1vbWVudFByb3BlcnRpZXMgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGNvcHlDb25maWcodG8sIGZyb20pIHtcbiAgICAgICAgdmFyIGksIHByb3AsIHZhbDtcblxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzQU1vbWVudE9iamVjdCkpIHtcbiAgICAgICAgICAgIHRvLl9pc0FNb21lbnRPYmplY3QgPSBmcm9tLl9pc0FNb21lbnRPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pKSkge1xuICAgICAgICAgICAgdG8uX2kgPSBmcm9tLl9pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fZikpIHtcbiAgICAgICAgICAgIHRvLl9mID0gZnJvbS5fZjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2wpKSB7XG4gICAgICAgICAgICB0by5fbCA9IGZyb20uX2w7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9zdHJpY3QpKSB7XG4gICAgICAgICAgICB0by5fc3RyaWN0ID0gZnJvbS5fc3RyaWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fdHptKSkge1xuICAgICAgICAgICAgdG8uX3R6bSA9IGZyb20uX3R6bTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzVVRDKSkge1xuICAgICAgICAgICAgdG8uX2lzVVRDID0gZnJvbS5faXNVVEM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9vZmZzZXQpKSB7XG4gICAgICAgICAgICB0by5fb2Zmc2V0ID0gZnJvbS5fb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fcGYpKSB7XG4gICAgICAgICAgICB0by5fcGYgPSBnZXRQYXJzaW5nRmxhZ3MoZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sb2NhbGUpKSB7XG4gICAgICAgICAgICB0by5fbG9jYWxlID0gZnJvbS5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vbWVudFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1vbWVudFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICB2YWwgPSBmcm9tW3Byb3BdO1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgdmFyIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIC8vIE1vbWVudCBwcm90b3R5cGUgb2JqZWN0XG4gICAgZnVuY3Rpb24gTW9tZW50KGNvbmZpZykge1xuICAgICAgICBjb3B5Q29uZmlnKHRoaXMsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShjb25maWcuX2QgIT0gbnVsbCA/IGNvbmZpZy5fZC5nZXRUaW1lKCkgOiBOYU4pO1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gY2FzZSB1cGRhdGVPZmZzZXQgY3JlYXRlcyBuZXcgbW9tZW50XG4gICAgICAgIC8vIG9iamVjdHMuXG4gICAgICAgIGlmICh1cGRhdGVJblByb2dyZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc01vbWVudCAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0Zsb29yIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIC0wIC0+IDBcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHtcbiAgICAgICAgdmFyIGNvZXJjZWROdW1iZXIgPSArYXJndW1lbnRGb3JDb2VyY2lvbixcbiAgICAgICAgICAgIHZhbHVlID0gMDtcblxuICAgICAgICBpZiAoY29lcmNlZE51bWJlciAhPT0gMCAmJiBpc0Zpbml0ZShjb2VyY2VkTnVtYmVyKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBhYnNGbG9vcihjb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBjb21wYXJlIHR3byBhcnJheXMsIHJldHVybiB0aGUgbnVtYmVyIG9mIGRpZmZlcmVuY2VzXG4gICAgZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheTEsIGFycmF5MiwgZG9udENvbnZlcnQpIHtcbiAgICAgICAgdmFyIGxlbiA9IE1hdGgubWluKGFycmF5MS5sZW5ndGgsIGFycmF5Mi5sZW5ndGgpLFxuICAgICAgICAgICAgbGVuZ3RoRGlmZiA9IE1hdGguYWJzKGFycmF5MS5sZW5ndGggLSBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGRpZmZzID0gMCxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKChkb250Q29udmVydCAmJiBhcnJheTFbaV0gIT09IGFycmF5MltpXSkgfHxcbiAgICAgICAgICAgICAgICAoIWRvbnRDb252ZXJ0ICYmIHRvSW50KGFycmF5MVtpXSkgIT09IHRvSW50KGFycmF5MltpXSkpKSB7XG4gICAgICAgICAgICAgICAgZGlmZnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gICAgICAgIGlmIChob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEZXByZWNhdGlvbiB3YXJuaW5nOiAnICsgbXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZShtc2csIGZuKSB7XG4gICAgICAgIHZhciBmaXJzdFRpbWUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG51bGwsIG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgYXJnO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSAnXFxuWycgKyBpICsgJ10gJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBhcmd1bWVudHNbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3VtZW50c1swXVtrZXldICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fybihtc2cgKyAnXFxuQXJndW1lbnRzOiAnICsgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykuam9pbignJykgKyAnXFxuJyArIChuZXcgRXJyb3IoKSkuc3RhY2spO1xuICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sIGZuKTtcbiAgICB9XG5cbiAgICB2YXIgZGVwcmVjYXRpb25zID0ge307XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVTaW1wbGUobmFtZSwgbXNnKSB7XG4gICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG5hbWUsIG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHdhcm4obXNnKTtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSBmYWxzZTtcbiAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCAoY29uZmlnKSB7XG4gICAgICAgIHZhciBwcm9wLCBpO1xuICAgICAgICBmb3IgKGkgaW4gY29uZmlnKSB7XG4gICAgICAgICAgICBwcm9wID0gY29uZmlnW2ldO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2ldID0gcHJvcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1snXycgKyBpXSA9IHByb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICAvLyBMZW5pZW50IG9yZGluYWwgcGFyc2luZyBhY2NlcHRzIGp1c3QgYSBudW1iZXIgaW4gYWRkaXRpb24gdG9cbiAgICAgICAgLy8gbnVtYmVyICsgKHBvc3NpYmx5KSBzdHVmZiBjb21pbmcgZnJvbSBfZGF5T2ZNb250aE9yZGluYWxQYXJzZS5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICB0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2UgfHwgdGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkgK1xuICAgICAgICAgICAgICAgICd8JyArICgvXFxkezEsMn0vKS5zb3VyY2UpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNoaWxkQ29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBleHRlbmQoe30sIHBhcmVudENvbmZpZyksIHByb3A7XG4gICAgICAgIGZvciAocHJvcCBpbiBjaGlsZENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBwYXJlbnRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZENvbmZpZ1twcm9wXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGNoaWxkQ29uZmlnW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAocHJvcCBpbiBwYXJlbnRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApICYmXG4gICAgICAgICAgICAgICAgICAgIGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnXG4gICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gZXh0ZW5kKHt9LCByZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9jYWxlKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cztcblxuICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBpLCByZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRDYWxlbmRhciA9IHtcbiAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciAoa2V5LCBtb20sIG5vdykge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fY2FsZW5kYXJba2V5XSB8fCB0aGlzLl9jYWxlbmRhclsnc2FtZUVsc2UnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KSA/IG91dHB1dC5jYWxsKG1vbSwgbm93KSA6IG91dHB1dDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0ge1xuICAgICAgICBMVFMgIDogJ2g6bW06c3MgQScsXG4gICAgICAgIExUICAgOiAnaDptbSBBJyxcbiAgICAgICAgTCAgICA6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgTEwgICA6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICBMTEwgIDogJ01NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvbmdEYXRlRm9ybWF0IChrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sXG4gICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlci5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbC5zbGljZSgxKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgZnVuY3Rpb24gaW52YWxpZERhdGUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGU7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRPcmRpbmFsID0gJyVkJztcbiAgICB2YXIgZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UgPSAvXFxkezEsMn0vO1xuXG4gICAgZnVuY3Rpb24gb3JkaW5hbCAobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoJyVkJywgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFJlbGF0aXZlVGltZSA9IHtcbiAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgcGFzdCAgIDogJyVzIGFnbycsXG4gICAgICAgIHMgIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgbSAgOiAnYSBtaW51dGUnLFxuICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgaCAgOiAnYW4gaG91cicsXG4gICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgZCAgOiAnYSBkYXknLFxuICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgTSAgOiAnYSBtb250aCcsXG4gICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgIHkgIDogJ2EgeWVhcicsXG4gICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUgKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW3N0cmluZ107XG4gICAgICAgIHJldHVybiAoaXNGdW5jdGlvbihvdXRwdXQpKSA/XG4gICAgICAgICAgICBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSA6XG4gICAgICAgICAgICBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXN0RnV0dXJlIChkaWZmLCBvdXRwdXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX3JlbGF0aXZlVGltZVtkaWZmID4gMCA/ICdmdXR1cmUnIDogJ3Bhc3QnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oZm9ybWF0KSA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFsaWFzZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFVuaXRBbGlhcyAodW5pdCwgc2hvcnRoYW5kKSB7XG4gICAgICAgIHZhciBsb3dlckNhc2UgPSB1bml0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGFsaWFzZXNbbG93ZXJDYXNlXSA9IGFsaWFzZXNbbG93ZXJDYXNlICsgJ3MnXSA9IGFsaWFzZXNbc2hvcnRoYW5kXSA9IHVuaXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplVW5pdHModW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB1bml0cyA9PT0gJ3N0cmluZycgPyBhbGlhc2VzW3VuaXRzXSB8fCBhbGlhc2VzW3VuaXRzLnRvTG93ZXJDYXNlKCldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdFVuaXRzKGlucHV0T2JqZWN0KSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLFxuICAgICAgICAgICAgcHJvcDtcblxuICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGlucHV0T2JqZWN0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRJbnB1dFtub3JtYWxpemVkUHJvcF0gPSBpbnB1dE9iamVjdFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0O1xuICAgIH1cblxuICAgIHZhciBwcmlvcml0aWVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0UHJpb3JpdHkodW5pdCwgcHJpb3JpdHkpIHtcbiAgICAgICAgcHJpb3JpdGllc1t1bml0XSA9IHByaW9yaXR5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFByaW9yaXRpemVkVW5pdHModW5pdHNPYmopIHtcbiAgICAgICAgdmFyIHVuaXRzID0gW107XG4gICAgICAgIGZvciAodmFyIHUgaW4gdW5pdHNPYmopIHtcbiAgICAgICAgICAgIHVuaXRzLnB1c2goe3VuaXQ6IHUsIHByaW9yaXR5OiBwcmlvcml0aWVzW3VdfSk7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVuaXRzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHtcbiAgICAgICAgdmFyIGFic051bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSxcbiAgICAgICAgICAgIHplcm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCxcbiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDtcbiAgICAgICAgcmV0dXJuIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgK1xuICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9GaWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgKyBhYnNOdW1iZXI7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fFlZWVlZWXxZWVlZWXxZWVlZfFlZfGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nO1xuXG4gICAgdmFyIGxvY2FsRm9ybWF0dGluZ1Rva2VucyA9IC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2c7XG5cbiAgICB2YXIgZm9ybWF0RnVuY3Rpb25zID0ge307XG5cbiAgICB2YXIgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIHRva2VuOiAgICAnTSdcbiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdXG4gICAgLy8gb3JkaW5hbDogICdNbydcbiAgICAvLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH1cbiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbiAodG9rZW4sIHBhZGRlZCwgb3JkaW5hbCwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGJhY2tdKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dID0gZnVuYztcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGVkKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1twYWRkZWRbMF1dID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB6ZXJvRmlsbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHBhZGRlZFsxXSwgcGFkZGVkWzJdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yZGluYWwpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW29yZGluYWxdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdG9rZW4pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC9cXFtbXFxzXFxTXS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VucyksIGksIGxlbmd0aDtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoYXJyYXlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJywgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG91dHB1dCArPSBpc0Z1bmN0aW9uKGFycmF5W2ldKSA/IGFycmF5W2ldLmNhbGwobW9tLCBmb3JtYXQpIDogYXJyYXlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIGZvcm1hdCBkYXRlIHVzaW5nIG5hdGl2ZSBkYXRlIG9iamVjdFxuICAgIGZ1bmN0aW9uIGZvcm1hdE1vbWVudChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG0ubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtYXQgPSBleHBhbmRGb3JtYXQoZm9ybWF0LCBtLmxvY2FsZURhdGEoKSk7XG4gICAgICAgIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdID0gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gfHwgbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkge1xuICAgICAgICB2YXIgaSA9IDU7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKGxvY2FsRm9ybWF0dGluZ1Rva2VucywgcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKTtcbiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2gxICAgICAgICAgPSAvXFxkLzsgICAgICAgICAgICAvLyAgICAgICAwIC0gOVxuICAgIHZhciBtYXRjaDIgICAgICAgICA9IC9cXGRcXGQvOyAgICAgICAgICAvLyAgICAgIDAwIC0gOTlcbiAgICB2YXIgbWF0Y2gzICAgICAgICAgPSAvXFxkezN9LzsgICAgICAgICAvLyAgICAgMDAwIC0gOTk5XG4gICAgdmFyIG1hdGNoNCAgICAgICAgID0gL1xcZHs0fS87ICAgICAgICAgLy8gICAgMDAwMCAtIDk5OTlcbiAgICB2YXIgbWF0Y2g2ICAgICAgICAgPSAvWystXT9cXGR7Nn0vOyAgICAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMiAgICAgID0gL1xcZFxcZD8vOyAgICAgICAgIC8vICAgICAgIDAgLSA5OVxuICAgIHZhciBtYXRjaDN0bzQgICAgICA9IC9cXGRcXGRcXGRcXGQ/LzsgICAgIC8vICAgICA5OTkgLSA5OTk5XG4gICAgdmFyIG1hdGNoNXRvNiAgICAgID0gL1xcZFxcZFxcZFxcZFxcZFxcZD8vOyAvLyAgIDk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMyAgICAgID0gL1xcZHsxLDN9LzsgICAgICAgLy8gICAgICAgMCAtIDk5OVxuICAgIHZhciBtYXRjaDF0bzQgICAgICA9IC9cXGR7MSw0fS87ICAgICAgIC8vICAgICAgIDAgLSA5OTk5XG4gICAgdmFyIG1hdGNoMXRvNiAgICAgID0gL1srLV0/XFxkezEsNn0vOyAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuXG4gICAgdmFyIG1hdGNoVW5zaWduZWQgID0gL1xcZCsvOyAgICAgICAgICAgLy8gICAgICAgMCAtIGluZlxuICAgIHZhciBtYXRjaFNpZ25lZCAgICA9IC9bKy1dP1xcZCsvOyAgICAgIC8vICAgIC1pbmYgLSBpbmZcblxuICAgIHZhciBtYXRjaE9mZnNldCAgICA9IC9afFsrLV1cXGRcXGQ6P1xcZFxcZC9naTsgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG4gICAgdmFyIG1hdGNoU2hvcnRPZmZzZXQgPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy9naTsgLy8gKzAwIC0wMCArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcblxuICAgIHZhciBtYXRjaFRpbWVzdGFtcCA9IC9bKy1dP1xcZCsoXFwuXFxkezEsM30pPy87IC8vIDEyMzQ1Njc4OSAxMjM0NTY3ODkuMTIzXG5cbiAgICAvLyBhbnkgd29yZCAob3IgdHdvKSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMgaW5jbHVkaW5nIHR3by90aHJlZSB3b3JkIG1vbnRoIGluIGFyYWJpYy5cbiAgICAvLyBpbmNsdWRlcyBzY290dGlzaCBnYWVsaWMgdHdvIHdvcmQgYW5kIGh5cGhlbmF0ZWQgbW9udGhzXG4gICAgdmFyIG1hdGNoV29yZCA9IC9bMC05XXswLDI1Nn1bJ2EtelxcdTAwQTAtXFx1MDVGRlxcdTA3MDAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkYwN1xcdUZGMTAtXFx1RkZFRl17MSwyNTZ9fFtcXHUwNjAwLVxcdTA2RkZcXC9dezEsMjU2fShcXHMqP1tcXHUwNjAwLVxcdTA2RkZdezEsMjU2fSl7MSwyfS9pO1xuXG4gICAgdmFyIHJlZ2V4ZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4gKHRva2VuLCByZWdleCwgc3RyaWN0UmVnZXgpIHtcbiAgICAgICAgcmVnZXhlc1t0b2tlbl0gPSBpc0Z1bmN0aW9uKHJlZ2V4KSA/IHJlZ2V4IDogZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGVEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gKGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4KSA/IHN0cmljdFJlZ2V4IDogcmVnZXg7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2VSZWdleEZvclRva2VuICh0b2tlbiwgY29uZmlnKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcChyZWdleGVzLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHVuZXNjYXBlRm9ybWF0KHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVnZXhlc1t0b2tlbl0oY29uZmlnLl9zdHJpY3QsIGNvbmZpZy5fbG9jYWxlKTtcbiAgICB9XG5cbiAgICAvLyBDb2RlIGZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0XG4gICAgZnVuY3Rpb24gdW5lc2NhcGVGb3JtYXQocykge1xuICAgICAgICByZXR1cm4gcmVnZXhFc2NhcGUocy5yZXBsYWNlKCdcXFxcJywgJycpLnJlcGxhY2UoL1xcXFwoXFxbKXxcXFxcKFxcXSl8XFxbKFteXFxdXFxbXSopXFxdfFxcXFwoLikvZywgZnVuY3Rpb24gKG1hdGNoZWQsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgICAgICAgICByZXR1cm4gcDEgfHwgcDIgfHwgcDMgfHwgcDQ7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWdleEVzY2FwZShzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFBhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgaSwgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdG9rZW4gPSBbdG9rZW5dO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihjYWxsYmFjaykpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbY2FsbGJhY2tdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbltpXV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1BhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307XG4gICAgICAgICAgICBjYWxsYmFjayhpbnB1dCwgY29uZmlnLl93LCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIGlucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaGFzT3duUHJvcCh0b2tlbnMsIHRva2VuKSkge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuXShpbnB1dCwgY29uZmlnLl9hLCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBZRUFSID0gMDtcbiAgICB2YXIgTU9OVEggPSAxO1xuICAgIHZhciBEQVRFID0gMjtcbiAgICB2YXIgSE9VUiA9IDM7XG4gICAgdmFyIE1JTlVURSA9IDQ7XG4gICAgdmFyIFNFQ09ORCA9IDU7XG4gICAgdmFyIE1JTExJU0VDT05EID0gNjtcbiAgICB2YXIgV0VFSyA9IDc7XG4gICAgdmFyIFdFRUtEQVkgPSA4O1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1knLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB5ID0gdGhpcy55ZWFyKCk7XG4gICAgICAgIHJldHVybiB5IDw9IDk5OTkgPyAnJyArIHkgOiAnKycgKyB5O1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWScsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWScsICAgNF0sICAgICAgIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWScsICA1XSwgICAgICAgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZWScsIDYsIHRydWVdLCAwLCAneWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd5ZWFyJywgJ3knKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgneWVhcicsIDEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWScsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWVknLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydZWVlZWScsICdZWVlZWVknXSwgWUVBUik7XG4gICAgYWRkUGFyc2VUb2tlbignWVlZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBpbnB1dC5sZW5ndGggPT09IDIgPyBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCkgOiB0b0ludChpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1knLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIGRheXNJblllYXIoeWVhcikge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICBob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4ID8gMTkwMCA6IDIwMDApO1xuICAgIH07XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXRTZXQgKHVuaXQsIGtlZXBUaW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0JDEodGhpcywgdW5pdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0IChtb20sIHVuaXQpIHtcbiAgICAgICAgcmV0dXJuIG1vbS5pc1ZhbGlkKCkgP1xuICAgICAgICAgICAgbW9tLl9kWydnZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0JDEgKG1vbSwgdW5pdCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG1vbS5pc1ZhbGlkKCkgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHVuaXQgPT09ICdGdWxsWWVhcicgJiYgaXNMZWFwWWVhcihtb20ueWVhcigpKSAmJiBtb20ubW9udGgoKSA9PT0gMSAmJiBtb20uZGF0ZSgpID09PSAyOSkge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSwgbW9tLm1vbnRoKCksIGRheXNJbk1vbnRoKHZhbHVlLCBtb20ubW9udGgoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIHN0cmluZ0dldCAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdTZXQgKHVuaXRzLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVPYmplY3RVbml0cyh1bml0cyk7XG4gICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpb3JpdGl6ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzW3ByaW9yaXRpemVkW2ldLnVuaXRdKHVuaXRzW3ByaW9yaXRpemVkW2ldLnVuaXRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb2QobiwgeCkge1xuICAgICAgICByZXR1cm4gKChuICUgeCkgKyB4KSAlIHg7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4T2Y7XG5cbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4T2YgPSBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgLy8gSSBrbm93XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgICAgIGlmIChpc05hTih5ZWFyKSB8fCBpc05hTihtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZE1vbnRoID0gbW9kKG1vbnRoLCAxMik7XG4gICAgICAgIHllYXIgKz0gKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG4gICAgICAgIHJldHVybiBtb2RNb250aCA9PT0gMSA/IChpc0xlYXBZZWFyKHllYXIpID8gMjkgOiAyOCkgOiAoMzEgLSBtb2RNb250aCAlIDcgJSAyKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignTScsIFsnTU0nLCAyXSwgJ01vJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aCgpICsgMTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbW9udGgnLCAnTScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbW9udGgnLCA4KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ00nLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NJywgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NJywgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ00nLCAnTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ01NTScsICdNTU1NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIG1vbnRoID0gY29uZmlnLl9sb2NhbGUubW9udGhzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgbW9udGggbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkLlxuICAgICAgICBpZiAobW9udGggIT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyYXlbTU9OVEhdID0gbW9udGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgdmFyIE1PTlRIU19JTl9GT1JNQVQgPSAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NPy87XG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHMgPSAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHMgOlxuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHNbbS5tb250aCgpXSA6XG4gICAgICAgICAgICB0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdCB8fCBNT05USFNfSU5fRk9STUFUKS50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID0gJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1Nob3J0IChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydCA6XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydFttLm1vbnRoKCldIDpcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0W01PTlRIU19JTl9GT1JNQVQudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgaWksIG1vbSwgbGxjID0gbW9udGhOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHVzZWRcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRocyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNQYXJzZSAobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZ1xuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyXG4gICAgICAgIC8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN0cmljdCAmJiAhdGhpcy5fbW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9ICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU1NJyAmJiB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU0nICYmIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fbW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzZXRNb250aCAobW9tLCB2YWx1ZSkge1xuICAgICAgICB2YXIgZGF5T2ZNb250aDtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICgvXlxcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9JbnQodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IEFub3RoZXIgc2lsZW50IGZhaWx1cmU/XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXlPZk1vbnRoID0gTWF0aC5taW4obW9tLmRhdGUoKSwgZGF5c0luTW9udGgobW9tLnllYXIoKSwgdmFsdWUpKTtcbiAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArICdNb250aCddKHZhbHVlLCBkYXlPZk1vbnRoKTtcbiAgICAgICAgcmV0dXJuIG1vbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRNb250aCAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldCh0aGlzLCAnTW9udGgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERheXNJbk1vbnRoICgpIHtcbiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNTaG9ydFJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRSZWdleCA9IGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRNb250aHNSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZU1vbnRoc1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNob3J0UGllY2VzID0gW10sIGxvbmdQaWVjZXMgPSBbXSwgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksIG1vbTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykpO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHMobW9tLCAnJykpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDI0OyBpKyspIHtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEYXRlICh5LCBtLCBkLCBoLCBNLCBzLCBtcykge1xuICAgICAgICAvLyBjYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE4MTM0OFxuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKTtcblxuICAgICAgICAvLyB0aGUgZGF0ZSBjb25zdHJ1Y3RvciByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwICYmIGlzRmluaXRlKGRhdGUuZ2V0RnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDRGF0ZSAoeSkge1xuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuXG4gICAgICAgIC8vIHRoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwICYmIGlzRmluaXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQtb2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXJcbiAgICBmdW5jdGlvbiBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKVxuICAgICAgICAgICAgZndkID0gNyArIGRvdyAtIGRveSxcbiAgICAgICAgICAgIC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9jYWwgd2Vla2RheSBpcyBmd2RcbiAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBjcmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cpICUgNztcblxuICAgICAgICByZXR1cm4gLWZ3ZGx3ICsgZndkIC0gMTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlI0NhbGN1bGF0aW5nX2FfZGF0ZV9naXZlbl90aGVfeWVhci4yQ193ZWVrX251bWJlcl9hbmRfd2Vla2RheVxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyh5ZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgbG9jYWxXZWVrZGF5ID0gKDcgKyB3ZWVrZGF5IC0gZG93KSAlIDcsXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRheU9mWWVhciA9IDEgKyA3ICogKHdlZWsgLSAxKSArIGxvY2FsV2Vla2RheSArIHdlZWtPZmZzZXQsXG4gICAgICAgICAgICByZXNZZWFyLCByZXNEYXlPZlllYXI7XG5cbiAgICAgICAgaWYgKGRheU9mWWVhciA8PSAwKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciAtIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlzSW5ZZWFyKHJlc1llYXIpICsgZGF5T2ZZZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mWWVhciA+IGRheXNJblllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyICsgMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhciAtIGRheXNJblllYXIoeWVhcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyLFxuICAgICAgICAgICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrT2ZZZWFyKG1vbSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQobW9tLnllYXIoKSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2VlayA9IE1hdGguZmxvb3IoKG1vbS5kYXlPZlllYXIoKSAtIHdlZWtPZmZzZXQgLSAxKSAvIDcpICsgMSxcbiAgICAgICAgICAgIHJlc1dlZWssIHJlc1llYXI7XG5cbiAgICAgICAgaWYgKHdlZWsgPCAxKSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSAtIDE7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayArIHdlZWtzSW5ZZWFyKHJlc1llYXIsIGRvdywgZG95KTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayAtIHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KTtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2VlazogcmVzV2VlayxcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrc0luWWVhcih5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0TmV4dCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyICsgMSwgZG93LCBkb3kpO1xuICAgICAgICByZXR1cm4gKGRheXNJblllYXIoeWVhcikgLSB3ZWVrT2Zmc2V0ICsgd2Vla09mZnNldE5leHQpIC8gNztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigndycsIFsnd3cnLCAyXSwgJ3dvJywgJ3dlZWsnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignVycsIFsnV1cnLCAyXSwgJ1dvJywgJ2lzb1dlZWsnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2VlaycsICd3Jyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrJywgJ1cnKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnd2VlaycsIDUpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2VlaycsIDUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigndycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3d3JywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdXVycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsndycsICd3dycsICdXJywgJ1dXJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAxKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrIChtb20pIHtcbiAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrID0ge1xuICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mV2VlayAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mWWVhciAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRveTtcbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHdlZWtPZlllYXIodGhpcywgMSwgNCkud2VlaztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RvJywgJ2RheScpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZScsIDAsIDAsICd3ZWVrZGF5Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ0UnLCAwLCAwLCAnaXNvV2Vla2RheScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXknLCAnZCcpO1xuICAgIGFkZFVuaXRBbGlhcygnd2Vla2RheScsICdlJyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrZGF5JywgJ0UnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrZGF5JywgMTEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla2RheScsIDExKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2QnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzTWluUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2RkJywgJ2RkZCcsICdkZGRkJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgd2Vla2RheSA9IGNvbmZpZy5fbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZFxuICAgICAgICBpZiAod2Vla2RheSAhPSBudWxsKSB7XG4gICAgICAgICAgICB3ZWVrLmQgPSB3ZWVrZGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZFdlZWtkYXkgPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkJywgJ2UnLCAnRSddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBwYXJzZVdlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc05hTihpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChpbnB1dCwgMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQgPSBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KSAlIDcgfHwgNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOYU4oaW5wdXQpID8gbnVsbCA6IGlucHV0O1xuICAgIH1cblxuICAgIC8vIExPQ0FMRVNcblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXMgPSAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzIDpcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzW20uZGF5KCldIDpcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzW3RoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLmRheSgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQgPSAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzU2hvcnQgKG0pIHtcbiAgICAgICAgcmV0dXJuIChtKSA/IHRoaXMuX3dlZWtkYXlzU2hvcnRbbS5kYXkoKV0gOiB0aGlzLl93ZWVrZGF5c1Nob3J0O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4gPSAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNNaW4gKG0pIHtcbiAgICAgICAgcmV0dXJuIChtKSA/IHRoaXMuX3dlZWtkYXlzTWluW20uZGF5KCldIDogdGhpcy5fd2Vla2RheXNNaW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UkMSh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IHdlZWtkYXlOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5cyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNQYXJzZSAod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZSQxLmNhbGwodGhpcywgd2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG5cbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKSArICd8XicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGRkZCcgJiYgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZCcgJiYgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZCcgJiYgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXkgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpO1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2Vla2RheSA9ICh0aGlzLmRheSgpICsgNyAtIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdykgJSA3O1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWtkYXkgOiB0aGlzLmFkZChpbnB1dCAtIHdlZWtkYXksICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPRGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vbWVudCNkYXkgZXhjZXB0XG4gICAgICAgIC8vIGFzIGEgZ2V0dGVyLCByZXR1cm5zIDcgaW5zdGVhZCBvZiAwICgxLTcgcmFuZ2UgaW5zdGVhZCBvZiAwLTYpXG4gICAgICAgIC8vIGFzIGEgc2V0dGVyLCBzdW5kYXkgc2hvdWxkIGJlbG9uZyB0byB0aGUgcHJldmlvdXMgd2Vlay5cblxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHdlZWtkYXkgPSBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSh0aGlzLmRheSgpICUgNyA/IHdlZWtkYXkgOiB3ZWVrZGF5IC0gNyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSB8fCA3O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c1JlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1Nob3J0UmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzTWluUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1pblBpZWNlcyA9IFtdLCBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLCBtb20sIG1pbnAsIHNob3J0cCwgbG9uZ3A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgbWlucCA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICBzaG9ydHAgPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICBsb25ncCA9IHRoaXMud2Vla2RheXMobW9tLCAnJyk7XG4gICAgICAgICAgICBtaW5QaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgbWluUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBzaG9ydFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKHNob3J0UGllY2VzW2ldKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXNbaV0gPSByZWdleEVzY2FwZShsb25nUGllY2VzW2ldKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaW5QaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIGhGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpIHx8IDI0O1xuICAgIH1cblxuICAgIGFkZEZvcm1hdFRva2VuKCdIJywgWydISCcsIDJdLCAwLCAnaG91cicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdoJywgWydoaCcsIDJdLCAwLCBoRm9ybWF0KTtcbiAgICBhZGRGb3JtYXRUb2tlbignaycsIFsna2snLCAyXSwgMCwga0Zvcm1hdCk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignaG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW0nLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtICh0b2tlbiwgbG93ZXJjYXNlKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgbG93ZXJjYXNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVyaWRpZW0oJ2EnLCB0cnVlKTtcbiAgICBtZXJpZGllbSgnQScsIGZhbHNlKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnaG91cicsICdoJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnaG91cicsIDEzKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGZ1bmN0aW9uIG1hdGNoTWVyaWRpZW0gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5fbWVyaWRpZW1QYXJzZTtcbiAgICB9XG5cbiAgICBhZGRSZWdleFRva2VuKCdhJywgIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCAgbWF0Y2hNZXJpZGllbSk7XG4gICAgYWRkUmVnZXhUb2tlbignSCcsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2gnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdrJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignSEgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignaGgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbigna2snLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRSZWdleFRva2VuKCdobW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbXNzJywgbWF0Y2g1dG82KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbXNzJywgbWF0Y2g1dG82KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydIJywgJ0hIJ10sIEhPVVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydrJywgJ2trJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIga0lucHV0ID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBhcnJheVtIT1VSXSA9IGtJbnB1dCA9PT0gMjQgPyAwIDoga0lucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydhJywgJ0EnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5faXNQbSA9IGNvbmZpZy5fbG9jYWxlLmlzUE0oaW5wdXQpO1xuICAgICAgICBjb25maWcuX21lcmlkaWVtID0gaW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2gnLCAnaGgnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQ7XG4gICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0O1xuICAgICAgICB2YXIgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlSXNQTSAoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IFF1aXJrcyBNb2RlICYgSUU3IFN0YW5kYXJkcyBNb2RlIGRvIG5vdCBhbGxvdyBhY2Nlc3Npbmcgc3RyaW5ncyBsaWtlIGFycmF5c1xuICAgICAgICAvLyBVc2luZyBjaGFyQXQgc2hvdWxkIGJlIG1vcmUgY29tcGF0aWJsZS5cbiAgICAgICAgcmV0dXJuICgoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJyk7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlID0gL1thcF1cXC4/bT9cXC4/L2k7XG4gICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwbScgOiAnUE0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYW0nIDogJ0FNJztcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVjYXVzZSB0aGUgdXNlciBleHBsaWNpdGx5XG4gICAgLy8gc3BlY2lmaWVkIHdoaWNoIGhvdXIgdGhleSB3YW50LiBTbyB0cnlpbmcgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaG91ciAoaW5cbiAgICAvLyBhIG5ldyB0aW1lem9uZSkgbWFrZXMgc2Vuc2UuIEFkZGluZy9zdWJ0cmFjdGluZyBob3VycyBkb2VzIG5vdCBmb2xsb3dcbiAgICAvLyB0aGlzIHJ1bGUuXG4gICAgdmFyIGdldFNldEhvdXIgPSBtYWtlR2V0U2V0KCdIb3VycycsIHRydWUpO1xuXG4gICAgdmFyIGJhc2VDb25maWcgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBkZWZhdWx0Q2FsZW5kYXIsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQsXG4gICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsXG4gICAgICAgIG9yZGluYWw6IGRlZmF1bHRPcmRpbmFsLFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLFxuXG4gICAgICAgIG1vbnRoczogZGVmYXVsdExvY2FsZU1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCxcblxuICAgICAgICB3ZWVrOiBkZWZhdWx0TG9jYWxlV2VlayxcblxuICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZVxuICAgIH07XG5cbiAgICAvLyBpbnRlcm5hbCBzdG9yYWdlIGZvciBsb2NhbGUgY29uZmlnIGZpbGVzXG4gICAgdmFyIGxvY2FsZXMgPSB7fTtcbiAgICB2YXIgbG9jYWxlRmFtaWxpZXMgPSB7fTtcbiAgICB2YXIgZ2xvYmFsTG9jYWxlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7XG4gICAgfVxuXG4gICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5XG4gICAgLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2hcbiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290XG4gICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7XG4gICAgICAgIHZhciBpID0gMCwgaiwgbmV4dCwgbG9jYWxlLCBzcGxpdDtcblxuICAgICAgICB3aGlsZSAoaSA8IG5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3BsaXQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaV0pLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBqID0gc3BsaXQubGVuZ3RoO1xuICAgICAgICAgICAgbmV4dCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpICsgMV0pO1xuICAgICAgICAgICAgbmV4dCA9IG5leHQgPyBuZXh0LnNwbGl0KCctJykgOiBudWxsO1xuICAgICAgICAgICAgd2hpbGUgKGogPiAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShzcGxpdC5zbGljZSgwLCBqKS5qb2luKCctJykpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5sZW5ndGggPj0gaiAmJiBjb21wYXJlQXJyYXlzKHNwbGl0LCBuZXh0LCB0cnVlKSA+PSBqIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBzaGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2FkTG9jYWxlKG5hbWUpIHtcbiAgICAgICAgdmFyIG9sZExvY2FsZSA9IG51bGw7XG4gICAgICAgIC8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZ2lzdGVyIGFuZCBsb2FkIGFsbCB0aGUgbG9jYWxlcyBpbiBOb2RlXG4gICAgICAgIGlmICghbG9jYWxlc1tuYW1lXSAmJiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9sZExvY2FsZSA9IGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICAgICAgICAgICAgICB2YXIgYWxpYXNlZFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlKCcuL2xvY2FsZS8nICsgbmFtZSk7XG4gICAgICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG9sZExvY2FsZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQgdGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZlxuICAgIC8vIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGluLCBpdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGN1cnJlbnQgZ2xvYmFsXG4gICAgLy8gbG9jYWxlIGtleS5cbiAgICBmdW5jdGlvbiBnZXRTZXRHbG9iYWxMb2NhbGUgKGtleSwgdmFsdWVzKSB7XG4gICAgICAgIHZhciBkYXRhO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkZWZpbmVMb2NhbGUoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIC8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGdsb2JhbExvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICAgICAgICAvL3dhcm4gdXNlciBpZiBhcmd1bWVudHMgYXJlIHBhc3NlZCBidXQgdGhlIGxvY2FsZSBjb3VsZCBub3QgYmUgc2V0XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTG9jYWxlICcgKyBrZXkgKyAgJyBub3QgZm91bmQuIERpZCB5b3UgZm9yZ2V0IHRvIGxvYWQgaXQ/Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVMb2NhbGUgKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgY29uZmlnLmFiYnIgPSBuYW1lO1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZSgnZGVmaW5lTG9jYWxlT3ZlcnJpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBtb21lbnQudXBkYXRlTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgdG8gY2hhbmdlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2FuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcpIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kZWZpbmUtbG9jYWxlLyBmb3IgbW9yZSBpbmZvLicpO1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbbmFtZV0uX2NvbmZpZztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLl9jb25maWc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShjb25maWcucGFyZW50TG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBuZXcgTG9jYWxlKG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZykpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlRmFtaWxpZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmluZUxvY2FsZSh4Lm5hbWUsIHguY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBsb2NhbGUgQUZURVIgYWxsIGNoaWxkIGxvY2FsZXMgaGF2ZSBiZWVuXG4gICAgICAgICAgICAvLyBjcmVhdGVkLCBzbyB3ZSB3b24ndCBlbmQgdXAgd2l0aCB0aGUgY2hpbGQgbG9jYWxlIHNldC5cbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcblxuXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsZShuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCB0bXBMb2NhbGUsIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgICAvLyBNRVJHRVxuICAgICAgICAgICAgdG1wTG9jYWxlID0gbG9hZExvY2FsZShuYW1lKTtcbiAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IHRtcExvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnID0gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZSA9IG5ldyBMb2NhbGUoY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZTtcblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwYXNzIG51bGwgZm9yIGNvbmZpZyB0byB1bnVwZGF0ZSwgdXNlZnVsIGZvciB0ZXN0c1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyBsb2NhbGUgZGF0YVxuICAgIGZ1bmN0aW9uIGdldExvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBsb2NhbGU7XG5cbiAgICAgICAgaWYgKGtleSAmJiBrZXkuX2xvY2FsZSAmJiBrZXkuX2xvY2FsZS5fYWJicikge1xuICAgICAgICAgICAga2V5ID0ga2V5Ll9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAvL3Nob3J0LWNpcmN1aXQgZXZlcnl0aGluZyBlbHNlXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleSA9IFtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNob29zZUxvY2FsZShrZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RMb2NhbGVzKCkge1xuICAgICAgICByZXR1cm4ga2V5cyhsb2NhbGVzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja092ZXJmbG93IChtKSB7XG4gICAgICAgIHZhciBvdmVyZmxvdztcbiAgICAgICAgdmFyIGEgPSBtLl9hO1xuXG4gICAgICAgIGlmIChhICYmIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9PT0gLTIpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICBhW01PTlRIXSAgICAgICA8IDAgfHwgYVtNT05USF0gICAgICAgPiAxMSAgPyBNT05USCA6XG4gICAgICAgICAgICAgICAgYVtEQVRFXSAgICAgICAgPCAxIHx8IGFbREFURV0gICAgICAgID4gZGF5c0luTW9udGgoYVtZRUFSXSwgYVtNT05USF0pID8gREFURSA6XG4gICAgICAgICAgICAgICAgYVtIT1VSXSAgICAgICAgPCAwIHx8IGFbSE9VUl0gICAgICAgID4gMjQgfHwgKGFbSE9VUl0gPT09IDI0ICYmIChhW01JTlVURV0gIT09IDAgfHwgYVtTRUNPTkRdICE9PSAwIHx8IGFbTUlMTElTRUNPTkRdICE9PSAwKSkgPyBIT1VSIDpcbiAgICAgICAgICAgICAgICBhW01JTlVURV0gICAgICA8IDAgfHwgYVtNSU5VVEVdICAgICAgPiA1OSAgPyBNSU5VVEUgOlxuICAgICAgICAgICAgICAgIGFbU0VDT05EXSAgICAgIDwgMCB8fCBhW1NFQ09ORF0gICAgICA+IDU5ICA/IFNFQ09ORCA6XG4gICAgICAgICAgICAgICAgYVtNSUxMSVNFQ09ORF0gPCAwIHx8IGFbTUlMTElTRUNPTkRdID4gOTk5ID8gTUlMTElTRUNPTkQgOlxuICAgICAgICAgICAgICAgIC0xO1xuXG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJiAob3ZlcmZsb3cgPCBZRUFSIHx8IG92ZXJmbG93ID4gREFURSkpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IERBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtzICYmIG92ZXJmbG93ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla2RheSAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUtEQVk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGljayB0aGUgZmlyc3QgZGVmaW5lZCBvZiB0d28gb3IgdGhyZWUgYXJndW1lbnRzLlxuICAgIGZ1bmN0aW9uIGRlZmF1bHRzKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3VycmVudERhdGVBcnJheShjb25maWcpIHtcbiAgICAgICAgLy8gaG9va3MgaXMgYWN0dWFsbHkgdGhlIGV4cG9ydGVkIG1vbWVudCBvYmplY3RcbiAgICAgICAgdmFyIG5vd1ZhbHVlID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMpIHtcbiAgICAgICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0VVRDTW9udGgoKSwgbm93VmFsdWUuZ2V0VVRDRGF0ZSgpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldEZ1bGxZZWFyKCksIG5vd1ZhbHVlLmdldE1vbnRoKCksIG5vd1ZhbHVlLmdldERhdGUoKV07XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBhbiBhcnJheSB0byBhIGRhdGUuXG4gICAgLy8gdGhlIGFycmF5IHNob3VsZCBtaXJyb3IgdGhlIHBhcmFtZXRlcnMgYmVsb3dcbiAgICAvLyBub3RlOiBhbGwgdmFsdWVzIHBhc3QgdGhlIHllYXIgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSB2YWx1ZS5cbiAgICAvLyBbeWVhciwgbW9udGgsIGRheSAsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF1cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tQXJyYXkgKGNvbmZpZykge1xuICAgICAgICB2YXIgaSwgZGF0ZSwgaW5wdXQgPSBbXSwgY3VycmVudERhdGUsIGV4cGVjdGVkV2Vla2RheSwgeWVhclRvVXNlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpO1xuXG4gICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXNcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0gPT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHtcbiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzXG4gICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciAhPSBudWxsKSB7XG4gICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTtcblxuICAgICAgICAgICAgaWYgKGNvbmZpZy5fZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyVG9Vc2UpIHx8IGNvbmZpZy5fZGF5T2ZZZWFyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93RGF5T2ZZZWFyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoeWVhclRvVXNlLCAwLCBjb25maWcuX2RheU9mWWVhcik7XG4gICAgICAgICAgICBjb25maWcuX2FbTU9OVEhdID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICAgICAgY29uZmlnLl9hW0RBVEVdID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgZGF0ZS5cbiAgICAgICAgLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheVxuICAgICAgICAvLyAqIGlmIGRheSBvZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBtb250aCBhbmQgeWVhclxuICAgICAgICAvLyAqIGlmIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG9ubHkgeWVhclxuICAgICAgICAvLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmdcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgJiYgY29uZmlnLl9hW2ldID09IG51bGw7ICsraSkge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSBjdXJyZW50RGF0ZVtpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFplcm8gb3V0IHdoYXRldmVyIHdhcyBub3QgZGVmYXVsdGVkLCBpbmNsdWRpbmcgdGltZVxuICAgICAgICBmb3IgKDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSAoY29uZmlnLl9hW2ldID09IG51bGwpID8gKGkgPT09IDIgPyAxIDogMCkgOiBjb25maWcuX2FbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgMjQ6MDA6MDAuMDAwXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW01JTlVURV0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbU0VDT05EXSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtNSUxMSVNFQ09ORF0gPT09IDApIHtcbiAgICAgICAgICAgIGNvbmZpZy5fbmV4dERheSA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnLl9kID0gKGNvbmZpZy5fdXNlVVRDID8gY3JlYXRlVVRDRGF0ZSA6IGNyZWF0ZURhdGUpLmFwcGx5KG51bGwsIGlucHV0KTtcbiAgICAgICAgZXhwZWN0ZWRXZWVrZGF5ID0gY29uZmlnLl91c2VVVEMgPyBjb25maWcuX2QuZ2V0VVRDRGF5KCkgOiBjb25maWcuX2QuZ2V0RGF5KCk7XG5cbiAgICAgICAgLy8gQXBwbHkgdGltZXpvbmUgb2Zmc2V0IGZyb20gaW5wdXQuIFRoZSBhY3R1YWwgdXRjT2Zmc2V0IGNhbiBiZSBjaGFuZ2VkXG4gICAgICAgIC8vIHdpdGggcGFyc2Vab25lLlxuICAgICAgICBpZiAoY29uZmlnLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX25leHREYXkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDI0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIG1pc21hdGNoaW5nIGRheSBvZiB3ZWVrXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgdHlwZW9mIGNvbmZpZy5fdy5kICE9PSAndW5kZWZpbmVkJyAmJiBjb25maWcuX3cuZCAhPT0gZXhwZWN0ZWRXZWVrZGF5KSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykge1xuICAgICAgICB2YXIgdywgd2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95LCB0ZW1wLCB3ZWVrZGF5T3ZlcmZsb3c7XG5cbiAgICAgICAgdyA9IGNvbmZpZy5fdztcbiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkge1xuICAgICAgICAgICAgZG93ID0gMTtcbiAgICAgICAgICAgIGRveSA9IDQ7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvblxuICAgICAgICAgICAgLy8gaG93IHdlIGludGVycHJldCBub3cgKGxvY2FsLCB1dGMsIGZpeGVkIG9mZnNldCkuIFNvIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmRcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLlxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LkdHLCBjb25maWcuX2FbWUVBUl0sIHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgMSwgNCkueWVhcik7XG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody5XLCAxKTtcbiAgICAgICAgICAgIHdlZWtkYXkgPSBkZWZhdWx0cyh3LkUsIDEpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdztcbiAgICAgICAgICAgIGRveSA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRveTtcblxuICAgICAgICAgICAgdmFyIGN1cldlZWsgPSB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIGRvdywgZG95KTtcblxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LmdnLCBjb25maWcuX2FbWUVBUl0sIGN1cldlZWsueWVhcik7XG5cbiAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB3ZWVrLlxuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcudywgY3VyV2Vlay53ZWVrKTtcblxuICAgICAgICAgICAgaWYgKHcuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gd2Vla2RheSAtLSBsb3cgZGF5IG51bWJlcnMgYXJlIGNvbnNpZGVyZWQgbmV4dCB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZDtcbiAgICAgICAgICAgICAgICBpZiAod2Vla2RheSA8IDAgfHwgd2Vla2RheSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHcuZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9jYWwgd2Vla2RheSAtLSBjb3VudGluZyBzdGFydHMgZnJvbSBiZWdpbmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZSArIGRvdztcbiAgICAgICAgICAgICAgICBpZiAody5lIDwgMCB8fCB3LmUgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGJlZ2luaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gZG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3ZWVrIDwgMSB8fCB3ZWVrID4gd2Vla3NJblllYXIod2Vla1llYXIsIGRvdywgZG95KSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla3MgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWtkYXlPdmVyZmxvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrZGF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlbXAgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSA9IHRlbXAueWVhcjtcbiAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdGVtcC5kYXlPZlllYXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpc28gODYwMSByZWdleFxuICAgIC8vIDAwMDAtMDAtMDAgMDAwMC1XMDAgb3IgMDAwMC1XMDAtMCArIFQgKyAwMCBvciAwMDowMCBvciAwMDowMDowMCBvciAwMDowMDowMC4wMDAgKyArMDA6MDAgb3IgKzAwMDAgb3IgKzAwKVxuICAgIHZhciBleHRlbmRlZElzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KS0oPzpcXGRcXGQtXFxkXFxkfFdcXGRcXGQtXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86OlxcZFxcZCg/OjpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoW1xcK1xcLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvO1xuICAgIHZhciBiYXNpY0lzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KSg/OlxcZFxcZFxcZFxcZHxXXFxkXFxkXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86XFxkXFxkKD86XFxkXFxkKD86Wy4sXVxcZCspPyk/KT8pKFtcXCtcXC1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLztcblxuICAgIHZhciB0elJlZ2V4ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vO1xuXG4gICAgdmFyIGlzb0RhdGVzID0gW1xuICAgICAgICBbJ1lZWVlZWS1NTS1ERCcsIC9bKy1dXFxkezZ9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgWydZWVlZLU1NLUREJywgL1xcZHs0fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgIFsnR0dHRy1bV11XVy1FJywgL1xcZHs0fS1XXFxkXFxkLVxcZC9dLFxuICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXFxkezR9LVdcXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgIFsnWVlZWS1EREQnLCAvXFxkezR9LVxcZHszfS9dLFxuICAgICAgICBbJ1lZWVktTU0nLCAvXFxkezR9LVxcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZWVlNTUREJywgL1srLV1cXGR7MTB9L10sXG4gICAgICAgIFsnWVlZWU1NREQnLCAvXFxkezh9L10sXG4gICAgICAgIC8vIFlZWVlNTSBpcyBOT1QgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmRcbiAgICAgICAgWydHR0dHW1ddV1dFJywgL1xcZHs0fVdcXGR7M30vXSxcbiAgICAgICAgWydHR0dHW1ddV1cnLCAvXFxkezR9V1xcZHsyfS8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZREREJywgL1xcZHs3fS9dXG4gICAgXTtcblxuICAgIC8vIGlzbyB0aW1lIGZvcm1hdHMgYW5kIHJlZ2V4ZXNcbiAgICB2YXIgaXNvVGltZXMgPSBbXG4gICAgICAgIFsnSEg6bW06c3MuU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcyxTU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICBbJ0hIOm1tJywgL1xcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgWydISG1tc3MuU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgIFsnSEhtbXNzLFNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISG1tc3MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkL10sXG4gICAgICAgIFsnSEhtbScsIC9cXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgWydISCcsIC9cXGRcXGQvXVxuICAgIF07XG5cbiAgICB2YXIgYXNwTmV0SnNvblJlZ2V4ID0gL15cXC8/RGF0ZVxcKChcXC0/XFxkKykvaTtcblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlTTyhjb25maWcpIHtcbiAgICAgICAgdmFyIGksIGwsXG4gICAgICAgICAgICBzdHJpbmcgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBtYXRjaCA9IGV4dGVuZGVkSXNvUmVnZXguZXhlYyhzdHJpbmcpIHx8IGJhc2ljSXNvUmVnZXguZXhlYyhzdHJpbmcpLFxuICAgICAgICAgICAgYWxsb3dUaW1lLCBkYXRlRm9ybWF0LCB0aW1lRm9ybWF0LCB0ekZvcm1hdDtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmlzbyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29EYXRlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNvRGF0ZXNbaV1bMV0uZXhlYyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGlzb0RhdGVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICBhbGxvd1RpbWUgPSBpc29EYXRlc1tpXVsyXSAhPT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbM10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvVGltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IChtYXRjaFsyXSB8fCAnICcpICsgaXNvVGltZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhbGxvd1RpbWUgJiYgdGltZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR6UmVnZXguZXhlYyhtYXRjaFs0XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHpGb3JtYXQgPSAnWic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcuX2YgPSBkYXRlRm9ybWF0ICsgKHRpbWVGb3JtYXQgfHwgJycpICsgKHR6Rm9ybWF0IHx8ICcnKTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkZDIDI4MjIgcmVnZXg6IEZvciBkZXRhaWxzIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjgyMiNzZWN0aW9uLTMuM1xuICAgIHZhciByZmMyODIyID0gL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXFxkezR9KSkkLztcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MoeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpLFxuICAgICAgICAgICAgcGFyc2VJbnQoZGF5U3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChob3VyU3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW51dGVTdHIsIDEwKVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChzZWNvbmRTdHIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlSW50KHNlY29uZFN0ciwgMTApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhclN0cikge1xuICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KHllYXJTdHIsIDEwKTtcbiAgICAgICAgaWYgKHllYXIgPD0gNDkpIHtcbiAgICAgICAgICAgIHJldHVybiAyMDAwICsgeWVhcjtcbiAgICAgICAgfSBlbHNlIGlmICh5ZWFyIDw9IDk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIDE5MDAgKyB5ZWFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5ZWFyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFwoW14pXSpcXCl8W1xcblxcdF0vZywgJyAnKS5yZXBsYWNlKC8oXFxzXFxzKykvZywgJyAnKS5yZXBsYWNlKC9eXFxzXFxzKi8sICcnKS5yZXBsYWNlKC9cXHNcXHMqJC8sICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1dlZWtkYXkod2Vla2RheVN0ciwgcGFyc2VkSW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAod2Vla2RheVN0cikge1xuICAgICAgICAgICAgLy8gVE9ETzogUmVwbGFjZSB0aGUgdmFuaWxsYSBKUyBEYXRlIG9iamVjdCB3aXRoIGFuIGluZGVwZW50ZW50IGRheS1vZi13ZWVrIGNoZWNrLlxuICAgICAgICAgICAgdmFyIHdlZWtkYXlQcm92aWRlZCA9IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0ciksXG4gICAgICAgICAgICAgICAgd2Vla2RheUFjdHVhbCA9IG5ldyBEYXRlKHBhcnNlZElucHV0WzBdLCBwYXJzZWRJbnB1dFsxXSwgcGFyc2VkSW5wdXRbMl0pLmdldERheSgpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXlQcm92aWRlZCAhPT0gd2Vla2RheUFjdHVhbCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLndlZWtkYXlNaXNtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBvYnNPZmZzZXRzID0ge1xuICAgICAgICBVVDogMCxcbiAgICAgICAgR01UOiAwLFxuICAgICAgICBFRFQ6IC00ICogNjAsXG4gICAgICAgIEVTVDogLTUgKiA2MCxcbiAgICAgICAgQ0RUOiAtNSAqIDYwLFxuICAgICAgICBDU1Q6IC02ICogNjAsXG4gICAgICAgIE1EVDogLTYgKiA2MCxcbiAgICAgICAgTVNUOiAtNyAqIDYwLFxuICAgICAgICBQRFQ6IC03ICogNjAsXG4gICAgICAgIFBTVDogLTggKiA2MFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQob2JzT2Zmc2V0LCBtaWxpdGFyeU9mZnNldCwgbnVtT2Zmc2V0KSB7XG4gICAgICAgIGlmIChvYnNPZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gICAgICAgIH0gZWxzZSBpZiAobWlsaXRhcnlPZmZzZXQpIHtcbiAgICAgICAgICAgIC8vIHRoZSBvbmx5IGFsbG93ZWQgbWlsaXRhcnkgdHogaXMgWlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBwYXJzZUludChudW1PZmZzZXQsIDEwKTtcbiAgICAgICAgICAgIHZhciBtID0gaG0gJSAxMDAsIGggPSAoaG0gLSBtKSAvIDEwMDtcbiAgICAgICAgICAgIHJldHVybiBoICogNjAgKyBtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBhbmQgdGltZSBmcm9tIHJlZiAyODIyIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2ggPSByZmMyODIyLmV4ZWMocHJlcHJvY2Vzc1JGQzI4MjIoY29uZmlnLl9pKSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdmFyIHBhcnNlZEFycmF5ID0gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhtYXRjaFs0XSwgbWF0Y2hbM10sIG1hdGNoWzJdLCBtYXRjaFs1XSwgbWF0Y2hbNl0sIG1hdGNoWzddKTtcbiAgICAgICAgICAgIGlmICghY2hlY2tXZWVrZGF5KG1hdGNoWzFdLCBwYXJzZWRBcnJheSwgY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uZmlnLl9hID0gcGFyc2VkQXJyYXk7XG4gICAgICAgICAgICBjb25maWcuX3R6bSA9IGNhbGN1bGF0ZU9mZnNldChtYXRjaFs4XSwgbWF0Y2hbOV0sIG1hdGNoWzEwXSk7XG5cbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGNyZWF0ZVVUQ0RhdGUuYXBwbHkobnVsbCwgY29uZmlnLl9hKTtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnJmYzI4MjIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gaXNvIGZvcm1hdCBvciBmYWxsYmFja1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gYXNwTmV0SnNvblJlZ2V4LmV4ZWMoY29uZmlnLl9pKTtcblxuICAgICAgICBpZiAobWF0Y2hlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoK21hdGNoZWRbMV0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluYWwgYXR0ZW1wdCwgdXNlIElucHV0IEZhbGxiYWNrXG4gICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2sgPSBkZXByZWNhdGUoXG4gICAgICAgICd2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgJyArXG4gICAgICAgICd3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlICcgK1xuICAgICAgICAnZGlzY291cmFnZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyBtYWpvciByZWxlYXNlLiBQbGVhc2UgcmVmZXIgdG8gJyArXG4gICAgICAgICdodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uJyxcbiAgICAgICAgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoY29uZmlnLl9pICsgKGNvbmZpZy5fdXNlVVRDID8gJyBVVEMnIDogJycpKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0YW5kYXJkXG4gICAgaG9va3MuSVNPXzg2MDEgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBSRkMgMjgyMiBmb3JtXG4gICAgaG9va3MuUkZDXzI4MjIgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmdcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZykge1xuICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8gYW5vdGhlciBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBmbG93IHRvIHByZXZlbnQgY2lyY3VsYXIgZGVwc1xuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5JU09fODYwMSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLlJGQ18yODIyKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5fYSA9IFtdO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IHRydWU7XG5cbiAgICAgICAgLy8gVGhpcyBhcnJheSBpcyB1c2VkIHRvIG1ha2UgYSBEYXRlLCBlaXRoZXIgd2l0aCBgbmV3IERhdGVgIG9yIGBEYXRlLlVUQ2BcbiAgICAgICAgdmFyIHN0cmluZyA9ICcnICsgY29uZmlnLl9pLFxuICAgICAgICAgICAgaSwgcGFyc2VkSW5wdXQsIHRva2VucywgdG9rZW4sIHNraXBwZWQsXG4gICAgICAgICAgICBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCA9IDA7XG5cbiAgICAgICAgdG9rZW5zID0gZXhwYW5kRm9ybWF0KGNvbmZpZy5fZiwgY29uZmlnLl9sb2NhbGUpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpIHx8IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHwgW10pWzBdO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Rva2VuJywgdG9rZW4sICdwYXJzZWRJbnB1dCcsIHBhcnNlZElucHV0LFxuICAgICAgICAgICAgLy8gICAgICAgICAncmVnZXgnLCBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgc2tpcHBlZCA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpKTtcbiAgICAgICAgICAgICAgICBpZiAoc2tpcHBlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc2tpcHBlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZShzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkgKyBwYXJzZWRJbnB1dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggKz0gcGFyc2VkSW5wdXQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgaWYgaXQncyBub3QgYSBrbm93biB0b2tlblxuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkVG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgcGFyc2VkSW5wdXQsIGNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb25maWcuX3N0cmljdCAmJiAhcGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGQgcmVtYWluaW5nIHVucGFyc2VkIGlucHV0IGxlbmd0aCB0byB0aGUgc3RyaW5nXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmNoYXJzTGVmdE92ZXIgPSBzdHJpbmdMZW5ndGggLSB0b3RhbFBhcnNlZElucHV0TGVuZ3RoO1xuICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNsZWFyIF8xMmggZmxhZyBpZiBob3VyIGlzIDw9IDEyXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPD0gMTIgJiZcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5wYXJzZWREYXRlUGFydHMgPSBjb25maWcuX2Euc2xpY2UoMCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLm1lcmlkaWVtID0gY29uZmlnLl9tZXJpZGllbTtcbiAgICAgICAgLy8gaGFuZGxlIG1lcmlkaWVtXG4gICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IG1lcmlkaWVtRml4V3JhcChjb25maWcuX2xvY2FsZSwgY29uZmlnLl9hW0hPVVJdLCBjb25maWcuX21lcmlkaWVtKTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgY2hlY2tPdmVyZmxvdyhjb25maWcpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwIChsb2NhbGUsIGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgIHZhciBpc1BtO1xuXG4gICAgICAgIGlmIChtZXJpZGllbSA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLm1lcmlkaWVtSG91ciAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLm1lcmlkaWVtSG91cihob3VyLCBtZXJpZGllbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxlLmlzUE0gIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2tcbiAgICAgICAgICAgIGlzUG0gPSBsb2NhbGUuaXNQTShtZXJpZGllbSk7XG4gICAgICAgICAgICBpZiAoaXNQbSAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyICs9IDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1BtICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHN1cHBvc2VkIHRvIGhhcHBlblxuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBhcnJheSBvZiBmb3JtYXQgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIHRlbXBDb25maWcsXG4gICAgICAgICAgICBiZXN0TW9tZW50LFxuXG4gICAgICAgICAgICBzY29yZVRvQmVhdCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWcuX2YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSA9IDA7XG4gICAgICAgICAgICB0ZW1wQ29uZmlnID0gY29weUNvbmZpZyh7fSwgY29uZmlnKTtcbiAgICAgICAgICAgIGlmIChjb25maWcuX3VzZVVUQyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGVtcENvbmZpZy5fdXNlVVRDID0gY29uZmlnLl91c2VVVEM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZW1wQ29uZmlnLl9mID0gY29uZmlnLl9mW2ldO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCh0ZW1wQ29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHRlbXBDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueSBpbnB1dCB0aGF0IHdhcyBub3QgcGFyc2VkIGFkZCBhIHBlbmFsdHkgZm9yIHRoYXQgZm9ybWF0XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLmNoYXJzTGVmdE92ZXI7XG5cbiAgICAgICAgICAgIC8vb3IgdG9rZW5zXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnVudXNlZFRva2Vucy5sZW5ndGggKiAxMDtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnNjb3JlID0gY3VycmVudFNjb3JlO1xuXG4gICAgICAgICAgICBpZiAoc2NvcmVUb0JlYXQgPT0gbnVsbCB8fCBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCkge1xuICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXh0ZW5kKGNvbmZpZywgYmVzdE1vbWVudCB8fCB0ZW1wQ29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tT2JqZWN0KGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGNvbmZpZy5faSk7XG4gICAgICAgIGNvbmZpZy5fYSA9IG1hcChbaS55ZWFyLCBpLm1vbnRoLCBpLmRheSB8fCBpLmRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vjb25kLCBpLm1pbGxpc2Vjb25kXSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbmZpZyAoY29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3cocHJlcGFyZUNvbmZpZyhjb25maWcpKSk7XG4gICAgICAgIGlmIChyZXMuX25leHREYXkpIHtcbiAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVFxuICAgICAgICAgICAgcmVzLmFkZCgxLCAnZCcpO1xuICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnIChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgZm9ybWF0ID0gY29uZmlnLl9mO1xuXG4gICAgICAgIGNvbmZpZy5fbG9jYWxlID0gY29uZmlnLl9sb2NhbGUgfHwgZ2V0TG9jYWxlKGNvbmZpZy5fbCk7XG5cbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsIHx8IChmb3JtYXQgPT09IHVuZGVmaW5lZCAmJiBpbnB1dCA9PT0gJycpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCh7bnVsbElucHV0OiB0cnVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnLl9pID0gaW5wdXQgPSBjb25maWcuX2xvY2FsZS5wcmVwYXJzZShpbnB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNb21lbnQoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vbWVudChjaGVja092ZXJmbG93KGlucHV0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gaW5wdXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShmb3JtYXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSW5wdXQoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNWYWxpZChjb25maWcpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZyhjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2EgPSBtYXAoaW5wdXQuc2xpY2UoMCksIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbU9iamVjdChjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbE9yVVRDIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgaXNVVEMpIHtcbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBpZiAobG9jYWxlID09PSB0cnVlIHx8IGxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoaXNPYmplY3QoaW5wdXQpICYmIGlzT2JqZWN0RW1wdHkoaW5wdXQpKSB8fFxuICAgICAgICAgICAgICAgIChpc0FycmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MjNcbiAgICAgICAgYy5faXNBTW9tZW50T2JqZWN0ID0gdHJ1ZTtcbiAgICAgICAgYy5fdXNlVVRDID0gYy5faXNVVEMgPSBpc1VUQztcbiAgICAgICAgYy5fbCA9IGxvY2FsZTtcbiAgICAgICAgYy5faSA9IGlucHV0O1xuICAgICAgICBjLl9mID0gZm9ybWF0O1xuICAgICAgICBjLl9zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21Db25maWcoYyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWwgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvdHlwZU1pbiA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPCB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIHZhciBwcm90b3R5cGVNYXggPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID4gdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBQaWNrIGEgbW9tZW50IG0gZnJvbSBtb21lbnRzIHNvIHRoYXQgbVtmbl0ob3RoZXIpIGlzIHRydWUgZm9yIGFsbFxuICAgIC8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rpb24gZm4gdG8gYmUgdHJhbnNpdGl2ZS5cbiAgICAvL1xuICAgIC8vIG1vbWVudHMgc2hvdWxkIGVpdGhlciBiZSBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cyBvciBhbiBhcnJheSwgd2hvc2VcbiAgICAvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzLlxuICAgIGZ1bmN0aW9uIHBpY2tCeShmbiwgbW9tZW50cykge1xuICAgICAgICB2YXIgcmVzLCBpO1xuICAgICAgICBpZiAobW9tZW50cy5sZW5ndGggPT09IDEgJiYgaXNBcnJheShtb21lbnRzWzBdKSkge1xuICAgICAgICAgICAgbW9tZW50cyA9IG1vbWVudHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gbW9tZW50c1swXTtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tpXVtmbl0ocmVzKSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkP1xuICAgIGZ1bmN0aW9uIG1pbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQmVmb3JlJywgYXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF4ICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNBZnRlcicsIGFyZ3MpO1xuICAgIH1cblxuICAgIHZhciBub3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUubm93KCkgOiArKG5ldyBEYXRlKCkpO1xuICAgIH07XG5cbiAgICB2YXIgb3JkZXJpbmcgPSBbJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCAnbWlsbGlzZWNvbmQnXTtcblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb25WYWxpZChtKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBtKSB7XG4gICAgICAgICAgICBpZiAoIShpbmRleE9mLmNhbGwob3JkZXJpbmcsIGtleSkgIT09IC0xICYmIChtW2tleV0gPT0gbnVsbCB8fCAhaXNOYU4obVtrZXldKSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHVuaXRIYXNEZWNpbWFsID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChtW29yZGVyaW5nW2ldXSkge1xuICAgICAgICAgICAgICAgIGlmICh1bml0SGFzRGVjaW1hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG9ubHkgYWxsb3cgbm9uLWludGVnZXJzIGZvciBzbWFsbGVzdCB1bml0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KG1bb3JkZXJpbmdbaV1dKSAhPT0gdG9JbnQobVtvcmRlcmluZ1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKE5hTik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRHVyYXRpb24gKGR1cmF0aW9uKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSBub3JtYWxpemVPYmplY3RVbml0cyhkdXJhdGlvbiksXG4gICAgICAgICAgICB5ZWFycyA9IG5vcm1hbGl6ZWRJbnB1dC55ZWFyIHx8IDAsXG4gICAgICAgICAgICBxdWFydGVycyA9IG5vcm1hbGl6ZWRJbnB1dC5xdWFydGVyIHx8IDAsXG4gICAgICAgICAgICBtb250aHMgPSBub3JtYWxpemVkSW5wdXQubW9udGggfHwgMCxcbiAgICAgICAgICAgIHdlZWtzID0gbm9ybWFsaXplZElucHV0LndlZWsgfHwgMCxcbiAgICAgICAgICAgIGRheXMgPSBub3JtYWxpemVkSW5wdXQuZGF5IHx8IDAsXG4gICAgICAgICAgICBob3VycyA9IG5vcm1hbGl6ZWRJbnB1dC5ob3VyIHx8IDAsXG4gICAgICAgICAgICBtaW51dGVzID0gbm9ybWFsaXplZElucHV0Lm1pbnV0ZSB8fCAwLFxuICAgICAgICAgICAgc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5zZWNvbmQgfHwgMCxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5taWxsaXNlY29uZCB8fCAwO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc0R1cmF0aW9uVmFsaWQobm9ybWFsaXplZElucHV0KTtcblxuICAgICAgICAvLyByZXByZXNlbnRhdGlvbiBmb3IgZGF0ZUFkZFJlbW92ZVxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSArbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHNlY29uZHMgKiAxZTMgKyAvLyAxMDAwXG4gICAgICAgICAgICBtaW51dGVzICogNmU0ICsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzhcbiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhXG4gICAgICAgIC8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHlcbiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICtcbiAgICAgICAgICAgIHdlZWtzICogNztcbiAgICAgICAgLy8gSXQgaXMgaW1wb3NzaWJsZSB0byB0cmFuc2xhdGUgbW9udGhzIGludG8gZGF5cyB3aXRob3V0IGtub3dpbmdcbiAgICAgICAgLy8gd2hpY2ggbW9udGhzIHlvdSBhcmUgYXJlIHRhbGtpbmcgYWJvdXQsIHNvIHdlIGhhdmUgdG8gc3RvcmVcbiAgICAgICAgLy8gaXQgc2VwYXJhdGVseS5cbiAgICAgICAgdGhpcy5fbW9udGhzID0gK21vbnRocyArXG4gICAgICAgICAgICBxdWFydGVycyAqIDMgK1xuICAgICAgICAgICAgeWVhcnMgKiAxMjtcblxuICAgICAgICB0aGlzLl9kYXRhID0ge307XG5cbiAgICAgICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgdGhpcy5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEdXJhdGlvbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNSb3VuZCAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgtMSAqIG51bWJlcikgKiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBvZmZzZXQgKHRva2VuLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICAgICAgdmFyIHNpZ24gPSAnKyc7XG4gICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgc2lnbiA9ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaWduICsgemVyb0ZpbGwofn4ob2Zmc2V0IC8gNjApLCAyKSArIHNlcGFyYXRvciArIHplcm9GaWxsKH5+KG9mZnNldCkgJSA2MCwgMik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9mZnNldCgnWicsICc6Jyk7XG4gICAgb2Zmc2V0KCdaWicsICcnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1onLCAgbWF0Y2hTaG9ydE9mZnNldCk7XG4gICAgYWRkUmVnZXhUb2tlbignWlonLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnWicsICdaWiddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl91c2VVVEMgPSB0cnVlO1xuICAgICAgICBjb25maWcuX3R6bSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gdGltZXpvbmUgY2h1bmtlclxuICAgIC8vICcrMTA6MDAnID4gWycxMCcsICAnMDAnXVxuICAgIC8vICctMTUzMCcgID4gWyctMTUnLCAnMzAnXVxuICAgIHZhciBjaHVua09mZnNldCA9IC8oW1xcK1xcLV18XFxkXFxkKS9naTtcblxuICAgIGZ1bmN0aW9uIG9mZnNldEZyb21TdHJpbmcobWF0Y2hlciwgc3RyaW5nKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gKHN0cmluZyB8fCAnJykubWF0Y2gobWF0Y2hlcik7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNodW5rICAgPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0gfHwgW107XG4gICAgICAgIHZhciBwYXJ0cyAgID0gKGNodW5rICsgJycpLm1hdGNoKGNodW5rT2Zmc2V0KSB8fCBbJy0nLCAwLCAwXTtcbiAgICAgICAgdmFyIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pO1xuXG4gICAgICAgIHJldHVybiBtaW51dGVzID09PSAwID9cbiAgICAgICAgICAwIDpcbiAgICAgICAgICBwYXJ0c1swXSA9PT0gJysnID8gbWludXRlcyA6IC1taW51dGVzO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhIG1vbWVudCBmcm9tIGlucHV0LCB0aGF0IGlzIGxvY2FsL3V0Yy96b25lIGVxdWl2YWxlbnQgdG8gbW9kZWwuXG4gICAgZnVuY3Rpb24gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCBtb2RlbCkge1xuICAgICAgICB2YXIgcmVzLCBkaWZmO1xuICAgICAgICBpZiAobW9kZWwuX2lzVVRDKSB7XG4gICAgICAgICAgICByZXMgPSBtb2RlbC5jbG9uZSgpO1xuICAgICAgICAgICAgZGlmZiA9IChpc01vbWVudChpbnB1dCkgfHwgaXNEYXRlKGlucHV0KSA/IGlucHV0LnZhbHVlT2YoKSA6IGNyZWF0ZUxvY2FsKGlucHV0KS52YWx1ZU9mKCkpIC0gcmVzLnZhbHVlT2YoKTtcbiAgICAgICAgICAgIC8vIFVzZSBsb3ctbGV2ZWwgYXBpLCBiZWNhdXNlIHRoaXMgZm4gaXMgbG93LWxldmVsIGFwaS5cbiAgICAgICAgICAgIHJlcy5fZC5zZXRUaW1lKHJlcy5fZC52YWx1ZU9mKCkgKyBkaWZmKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChyZXMsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQpLmxvY2FsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXRlT2Zmc2V0IChtKSB7XG4gICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICAgICAgICByZXR1cm4gLU1hdGgucm91bmQobS5fZC5nZXRUaW1lem9uZU9mZnNldCgpIC8gMTUpICogMTU7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBtb21lbnQgaXMgbXV0YXRlZC5cbiAgICAvLyBJdCBpcyBpbnRlbmRlZCB0byBrZWVwIHRoZSBvZmZzZXQgaW4gc3luYyB3aXRoIHRoZSB0aW1lem9uZS5cbiAgICBob29rcy51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIGtlZXBMb2NhbFRpbWUgPSB0cnVlIG1lYW5zIG9ubHkgY2hhbmdlIHRoZSB0aW1lem9uZSwgd2l0aG91dFxuICAgIC8vIGFmZmVjdGluZyB0aGUgbG9jYWwgaG91ci4gU28gNTozMToyNiArMDMwMCAtLVt1dGNPZmZzZXQoMiwgdHJ1ZSldLS0+XG4gICAgLy8gNTozMToyNiArMDIwMCBJdCBpcyBwb3NzaWJsZSB0aGF0IDU6MzE6MjYgZG9lc24ndCBleGlzdCB3aXRoIG9mZnNldFxuICAgIC8vICswMjAwLCBzbyB3ZSBhZGp1c3QgdGhlIHRpbWUgYXMgbmVlZGVkLCB0byBiZSB2YWxpZC5cbiAgICAvL1xuICAgIC8vIEtlZXBpbmcgdGhlIHRpbWUgYWN0dWFsbHkgYWRkcy9zdWJ0cmFjdHMgKG9uZSBob3VyKVxuICAgIC8vIGZyb20gdGhlIGFjdHVhbCByZXByZXNlbnRlZCB0aW1lLiBUaGF0IGlzIHdoeSB3ZSBjYWxsIHVwZGF0ZU9mZnNldFxuICAgIC8vIGEgc2Vjb25kIHRpbWUuIEluIGNhc2UgaXQgd2FudHMgdXMgdG8gY2hhbmdlIHRoZSBvZmZzZXQgYWdhaW5cbiAgICAvLyBfY2hhbmdlSW5Qcm9ncmVzcyA9PSB0cnVlIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBhZGp1c3QsIGJlY2F1c2VcbiAgICAvLyB0aGVyZSBpcyBubyBzdWNoIHRpbWUgaW4gdGhlIGdpdmVuIHRpbWV6b25lLlxuICAgIGZ1bmN0aW9uIGdldFNldE9mZnNldCAoaW5wdXQsIGtlZXBMb2NhbFRpbWUsIGtlZXBNaW51dGVzKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9vZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIGxvY2FsQWRqdXN0O1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChNYXRoLmFicyhpbnB1dCkgPCAxNiAmJiAha2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0ICogNjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzVVRDICYmIGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICBsb2NhbEFkanVzdCA9IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXQgPSBpbnB1dDtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChsb2NhbEFkanVzdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGQobG9jYWxBZGp1c3QsICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmICgha2VlcExvY2FsVGltZSB8fCB0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGNyZWF0ZUR1cmF0aW9uKGlucHV0IC0gb2Zmc2V0LCAnbScpLCAxLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRab25lIChpbnB1dCwga2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IC1pbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb0xvY2FsIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1VUQykge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3VidHJhY3QoZ2V0RGF0ZU9mZnNldCh0aGlzKSwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldCAoKSB7XG4gICAgICAgIGlmICh0aGlzLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0LCB0aGlzLl9pKTtcbiAgICAgICAgICAgIGlmICh0Wm9uZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodFpvbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzQWxpZ25lZEhvdXJPZmZzZXQgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dCA9IGlucHV0ID8gY3JlYXRlTG9jYWwoaW5wdXQpLnV0Y09mZnNldCgpIDogMDtcblxuICAgICAgICByZXR1cm4gKHRoaXMudXRjT2Zmc2V0KCkgLSBpbnB1dCkgJSA2MCA9PT0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZSAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkICgpIHtcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9pc0RTVFNoaWZ0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBjb3B5Q29uZmlnKGMsIHRoaXMpO1xuICAgICAgICBjID0gcHJlcGFyZUNvbmZpZyhjKTtcblxuICAgICAgICBpZiAoYy5fYSkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gYy5faXNVVEMgPyBjcmVhdGVVVEMoYy5fYSkgOiBjcmVhdGVMb2NhbChjLl9hKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgY29tcGFyZUFycmF5cyhjLl9hLCBvdGhlci50b0FycmF5KCkpID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gIXRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGNPZmZzZXQgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVXRjICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4XG4gICAgdmFyIGFzcE5ldFJlZ2V4ID0gL14oXFwtfFxcKyk/KD86KFxcZCopWy4gXSk/KFxcZCspXFw6KFxcZCspKD86XFw6KFxcZCspKFxcLlxcZCopPyk/JC87XG5cbiAgICAvLyBmcm9tIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9naXQvY2xvc3VyZV9nb29nX2RhdGVfZGF0ZS5qcy5zb3VyY2UuaHRtbFxuICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmVcbiAgICAvLyBhbmQgZnVydGhlciBtb2RpZmllZCB0byBhbGxvdyBmb3Igc3RyaW5ncyBjb250YWluaW5nIGJvdGggd2VlayBhbmQgZGF5XG4gICAgdmFyIGlzb1JlZ2V4ID0gL14oLXxcXCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLztcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUR1cmF0aW9uIChpbnB1dCwga2V5KSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGlucHV0LFxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYWdhaW5zdCByZWdleHAgaXMgZXhwZW5zaXZlLCBkbyBpdCBvbiBkZW1hbmRcbiAgICAgICAgICAgIG1hdGNoID0gbnVsbCxcbiAgICAgICAgICAgIHNpZ24sXG4gICAgICAgICAgICByZXQsXG4gICAgICAgICAgICBkaWZmUmVzO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbXMgOiBpbnB1dC5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgICAgIGQgIDogaW5wdXQuX2RheXMsXG4gICAgICAgICAgICAgICAgTSAgOiBpbnB1dC5fbW9udGhzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbltrZXldID0gaW5wdXQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uLm1pbGxpc2Vjb25kcyA9IGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gYXNwTmV0UmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeSAgOiAwLFxuICAgICAgICAgICAgICAgIGQgIDogdG9JbnQobWF0Y2hbREFURV0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBoICA6IHRvSW50KG1hdGNoW0hPVVJdKSAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbSAgOiB0b0ludChtYXRjaFtNSU5VVEVdKSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIHMgIDogdG9JbnQobWF0Y2hbU0VDT05EXSkgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBtcyA6IHRvSW50KGFic1JvdW5kKG1hdGNoW01JTExJU0VDT05EXSAqIDEwMDApKSAqIHNpZ24gLy8gdGhlIG1pbGxpc2Vjb25kIGRlY2ltYWwgcG9pbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1hdGNoXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gaXNvUmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAobWF0Y2hbMV0gPT09ICcrJykgPyAxIDogMTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHkgOiBwYXJzZUlzbyhtYXRjaFsyXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgTSA6IHBhcnNlSXNvKG1hdGNoWzNdLCBzaWduKSxcbiAgICAgICAgICAgICAgICB3IDogcGFyc2VJc28obWF0Y2hbNF0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGQgOiBwYXJzZUlzbyhtYXRjaFs1XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgaCA6IHBhcnNlSXNvKG1hdGNoWzZdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBtIDogcGFyc2VJc28obWF0Y2hbN10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHMgOiBwYXJzZUlzbyhtYXRjaFs4XSwgc2lnbilcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoZHVyYXRpb24gPT0gbnVsbCkgey8vIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uID09PSAnb2JqZWN0JyAmJiAoJ2Zyb20nIGluIGR1cmF0aW9uIHx8ICd0bycgaW4gZHVyYXRpb24pKSB7XG4gICAgICAgICAgICBkaWZmUmVzID0gbW9tZW50c0RpZmZlcmVuY2UoY3JlYXRlTG9jYWwoZHVyYXRpb24uZnJvbSksIGNyZWF0ZUxvY2FsKGR1cmF0aW9uLnRvKSk7XG5cbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgICAgICBkdXJhdGlvbi5tcyA9IGRpZmZSZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgZHVyYXRpb24uTSA9IGRpZmZSZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0ID0gbmV3IER1cmF0aW9uKGR1cmF0aW9uKTtcblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkgJiYgaGFzT3duUHJvcChpbnB1dCwgJ19sb2NhbGUnKSkge1xuICAgICAgICAgICAgcmV0Ll9sb2NhbGUgPSBpbnB1dC5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBjcmVhdGVEdXJhdGlvbi5mbiA9IER1cmF0aW9uLnByb3RvdHlwZTtcbiAgICBjcmVhdGVEdXJhdGlvbi5pbnZhbGlkID0gY3JlYXRlSW52YWxpZCQxO1xuXG4gICAgZnVuY3Rpb24gcGFyc2VJc28gKGlucCwgc2lnbikge1xuICAgICAgICAvLyBXZSdkIG5vcm1hbGx5IHVzZSB+fmlucCBmb3IgdGhpcywgYnV0IHVuZm9ydHVuYXRlbHkgaXQgYWxzb1xuICAgICAgICAvLyBjb252ZXJ0cyBmbG9hdHMgdG8gaW50cy5cbiAgICAgICAgLy8gaW5wIG1heSBiZSB1bmRlZmluZWQsIHNvIGNhcmVmdWwgY2FsbGluZyByZXBsYWNlIG9uIGl0LlxuICAgICAgICB2YXIgcmVzID0gaW5wICYmIHBhcnNlRmxvYXQoaW5wLnJlcGxhY2UoJywnLCAnLicpKTtcbiAgICAgICAgLy8gYXBwbHkgc2lnbiB3aGlsZSB3ZSdyZSBhdCBpdFxuICAgICAgICByZXR1cm4gKGlzTmFOKHJlcykgPyAwIDogcmVzKSAqIHNpZ247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzID0ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcblxuICAgICAgICByZXMubW9udGhzID0gb3RoZXIubW9udGgoKSAtIGJhc2UubW9udGgoKSArXG4gICAgICAgICAgICAob3RoZXIueWVhcigpIC0gYmFzZS55ZWFyKCkpICogMTI7XG4gICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHtcbiAgICAgICAgICAgIC0tcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSArb3RoZXIgLSArKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzO1xuICAgICAgICBpZiAoIShiYXNlLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcbiAgICAgICAgfVxuXG4gICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zmc2V0KG90aGVyLCBiYXNlKTtcbiAgICAgICAgaWYgKGJhc2UuaXNCZWZvcmUob3RoZXIpKSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2Uob3RoZXIsIGJhc2UpO1xuICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1yZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRlciBkZXByZWNhdGlvbiBpcyByZW1vdmVkXG4gICAgZnVuY3Rpb24gY3JlYXRlQWRkZXIoZGlyZWN0aW9uLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBkdXIsIHRtcDtcbiAgICAgICAgICAgIC8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBjb21wbGFpbiBhYm91dCBpdFxuICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0gbnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUobmFtZSwgJ21vbWVudCgpLicgKyBuYW1lICArICcocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuJyArIG5hbWUgKyAnKG51bWJlciwgcGVyaW9kKS4gJyArXG4gICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICB0bXAgPSB2YWw7IHZhbCA9IHBlcmlvZDsgcGVyaW9kID0gdG1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWwgPSB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/ICt2YWwgOiB2YWw7XG4gICAgICAgICAgICBkdXIgPSBjcmVhdGVEdXJhdGlvbih2YWwsIHBlcmlvZCk7XG4gICAgICAgICAgICBhZGRTdWJ0cmFjdCh0aGlzLCBkdXIsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCAobW9tLCBkdXJhdGlvbiwgaXNBZGRpbmcsIHVwZGF0ZU9mZnNldCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSBhYnNSb3VuZChkdXJhdGlvbi5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVPZmZzZXQgPSB1cGRhdGVPZmZzZXQgPT0gbnVsbCA/IHRydWUgOiB1cGRhdGVPZmZzZXQ7XG5cbiAgICAgICAgaWYgKG1vbnRocykge1xuICAgICAgICAgICAgc2V0TW9udGgobW9tLCBnZXQobW9tLCAnTW9udGgnKSArIG1vbnRocyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF5cykge1xuICAgICAgICAgICAgc2V0JDEobW9tLCAnRGF0ZScsIGdldChtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICAgIG1vbS5fZC5zZXRUaW1lKG1vbS5fZC52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZU9mZnNldCkge1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KG1vbSwgZGF5cyB8fCBtb250aHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFkZCAgICAgID0gY3JlYXRlQWRkZXIoMSwgJ2FkZCcpO1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3QnKTtcblxuICAgIGZ1bmN0aW9uIGdldENhbGVuZGFyRm9ybWF0KG15TW9tZW50LCBub3cpIHtcbiAgICAgICAgdmFyIGRpZmYgPSBteU1vbWVudC5kaWZmKG5vdywgJ2RheXMnLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGRpZmYgPCAtNiA/ICdzYW1lRWxzZScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAtMSA/ICdsYXN0V2VlaycgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAwID8gJ2xhc3REYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMSA/ICdzYW1lRGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDIgPyAnbmV4dERheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCA3ID8gJ25leHRXZWVrJyA6ICdzYW1lRWxzZSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIkMSAodGltZSwgZm9ybWF0cykge1xuICAgICAgICAvLyBXZSB3YW50IHRvIGNvbXBhcmUgdGhlIHN0YXJ0IG9mIHRvZGF5LCB2cyB0aGlzLlxuICAgICAgICAvLyBHZXR0aW5nIHN0YXJ0LW9mLXRvZGF5IGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBsb2NhbC91dGMvb2Zmc2V0IG9yIG5vdC5cbiAgICAgICAgdmFyIG5vdyA9IHRpbWUgfHwgY3JlYXRlTG9jYWwoKSxcbiAgICAgICAgICAgIHNvZCA9IGNsb25lV2l0aE9mZnNldChub3csIHRoaXMpLnN0YXJ0T2YoJ2RheScpLFxuICAgICAgICAgICAgZm9ybWF0ID0gaG9va3MuY2FsZW5kYXJGb3JtYXQodGhpcywgc29kKSB8fCAnc2FtZUVsc2UnO1xuXG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRzICYmIChpc0Z1bmN0aW9uKGZvcm1hdHNbZm9ybWF0XSkgPyBmb3JtYXRzW2Zvcm1hdF0uY2FsbCh0aGlzLCBub3cpIDogZm9ybWF0c1tmb3JtYXRdKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQob3V0cHV0IHx8IHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGZvcm1hdCwgdGhpcywgY3JlYXRlTG9jYWwobm93KSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBZnRlciAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHMoIWlzVW5kZWZpbmVkKHVuaXRzKSA/IHVuaXRzIDogJ21pbGxpc2Vjb25kJyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID4gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxJbnB1dC52YWx1ZU9mKCkgPCB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZWZvcmUgKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKCFpc1VuZGVmaW5lZCh1bml0cykgPyB1bml0cyA6ICdtaWxsaXNlY29uZCcpO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JldHdlZW4gKGZyb20sIHRvLCB1bml0cywgaW5jbHVzaXZpdHkpIHtcbiAgICAgICAgaW5jbHVzaXZpdHkgPSBpbmNsdXNpdml0eSB8fCAnKCknO1xuICAgICAgICByZXR1cm4gKGluY2x1c2l2aXR5WzBdID09PSAnKCcgPyB0aGlzLmlzQWZ0ZXIoZnJvbSwgdW5pdHMpIDogIXRoaXMuaXNCZWZvcmUoZnJvbSwgdW5pdHMpKSAmJlxuICAgICAgICAgICAgKGluY2x1c2l2aXR5WzFdID09PSAnKScgPyB0aGlzLmlzQmVmb3JlKHRvLCB1bml0cykgOiAhdGhpcy5pc0FmdGVyKHRvLCB1bml0cykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCksXG4gICAgICAgICAgICBpbnB1dE1zO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzIHx8ICdtaWxsaXNlY29uZCcpO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA9PT0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dE1zID0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckFmdGVyIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0FmdGVyKGlucHV0LHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckJlZm9yZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNCZWZvcmUoaW5wdXQsdW5pdHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpZmYgKGlucHV0LCB1bml0cywgYXNGbG9hdCkge1xuICAgICAgICB2YXIgdGhhdCxcbiAgICAgICAgICAgIHpvbmVEZWx0YSxcbiAgICAgICAgICAgIG91dHB1dDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhhdCA9IGNsb25lV2l0aE9mZnNldChpbnB1dCwgdGhpcyk7XG5cbiAgICAgICAgaWYgKCF0aGF0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHpvbmVEZWx0YSA9ICh0aGF0LnV0Y09mZnNldCgpIC0gdGhpcy51dGNPZmZzZXQoKSkgKiA2ZTQ7XG5cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KSAvIDEyOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAzOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAxZTM7IGJyZWFrOyAvLyAxMDAwXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gNmU0OyBicmVhazsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBjYXNlICdob3VyJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDM2ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnZGF5Jzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDg2NGU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCwgbmVnYXRlIGRzdFxuICAgICAgICAgICAgY2FzZSAnd2Vlayc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA2MDQ4ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MCAqIDI0ICogNywgbmVnYXRlIGRzdFxuICAgICAgICAgICAgZGVmYXVsdDogb3V0cHV0ID0gdGhpcyAtIHRoYXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXNGbG9hdCA/IG91dHB1dCA6IGFic0Zsb29yKG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhEaWZmIChhLCBiKSB7XG4gICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gbW9udGhzXG4gICAgICAgIHZhciB3aG9sZU1vbnRoRGlmZiA9ICgoYi55ZWFyKCkgLSBhLnllYXIoKSkgKiAxMikgKyAoYi5tb250aCgpIC0gYS5tb250aCgpKSxcbiAgICAgICAgICAgIC8vIGIgaXMgaW4gKGFuY2hvciAtIDEgbW9udGgsIGFuY2hvciArIDEgbW9udGgpXG4gICAgICAgICAgICBhbmNob3IgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmLCAnbW9udGhzJyksXG4gICAgICAgICAgICBhbmNob3IyLCBhZGp1c3Q7XG5cbiAgICAgICAgaWYgKGIgLSBhbmNob3IgPCAwKSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiAtIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yIC0gYW5jaG9yMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiArIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yMiAtIGFuY2hvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NoZWNrIGZvciBuZWdhdGl2ZSB6ZXJvLCByZXR1cm4gemVybyBpZiBuZWdhdGl2ZSB6ZXJvXG4gICAgICAgIHJldHVybiAtKHdob2xlTW9udGhEaWZmICsgYWRqdXN0KSB8fCAwO1xuICAgIH1cblxuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXQgPSAnWVlZWS1NTS1ERFRISDptbTpzc1onO1xuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXRVdGMgPSAnWVlZWS1NTS1ERFRISDptbTpzc1taXSc7XG5cbiAgICBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCdlbicpLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWlonKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0lTT1N0cmluZyhrZWVwT2Zmc2V0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1dGMgPSBrZWVwT2Zmc2V0ICE9PSB0cnVlO1xuICAgICAgICB2YXIgbSA9IHV0YyA/IHRoaXMuY2xvbmUoKS51dGMoKSA6IHRoaXM7XG4gICAgICAgIGlmIChtLnllYXIoKSA8IDAgfHwgbS55ZWFyKCkgPiA5OTk5KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sIHV0YyA/ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nIDogJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGdW5jdGlvbihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZykpIHtcbiAgICAgICAgICAgIC8vIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpcyB+NTB4IGZhc3RlciwgdXNlIGl0IHdoZW4gd2UgY2FuXG4gICAgICAgICAgICBpZiAodXRjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpICsgdGhpcy51dGNPZmZzZXQoKSAqIDYwICogMTAwMCkudG9JU09TdHJpbmcoKS5yZXBsYWNlKCdaJywgZm9ybWF0TW9tZW50KG0sICdaJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQobSwgdXRjID8gJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nIDogJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgaHVtYW4gcmVhZGFibGUgcmVwcmVzZW50YXRpb24gb2YgYSBtb21lbnQgdGhhdCBjYW5cbiAgICAgKiBhbHNvIGJlIGV2YWx1YXRlZCB0byBnZXQgYSBuZXcgbW9tZW50IHdoaWNoIGlzIHRoZSBzYW1lXG4gICAgICpcbiAgICAgKiBAbGluayBodHRwczovL25vZGVqcy5vcmcvZGlzdC9sYXRlc3QvZG9jcy9hcGkvdXRpbC5odG1sI3V0aWxfY3VzdG9tX2luc3BlY3RfZnVuY3Rpb25fb25fb2JqZWN0c1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ21vbWVudC5pbnZhbGlkKC8qICcgKyB0aGlzLl9pICsgJyAqLyknO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmdW5jID0gJ21vbWVudCc7XG4gICAgICAgIHZhciB6b25lID0gJyc7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2FsKCkpIHtcbiAgICAgICAgICAgIGZ1bmMgPSB0aGlzLnV0Y09mZnNldCgpID09PSAwID8gJ21vbWVudC51dGMnIDogJ21vbWVudC5wYXJzZVpvbmUnO1xuICAgICAgICAgICAgem9uZSA9ICdaJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJlZml4ID0gJ1snICsgZnVuYyArICcoXCJdJztcbiAgICAgICAgdmFyIHllYXIgPSAoMCA8PSB0aGlzLnllYXIoKSAmJiB0aGlzLnllYXIoKSA8PSA5OTk5KSA/ICdZWVlZJyA6ICdZWVlZWVknO1xuICAgICAgICB2YXIgZGF0ZXRpbWUgPSAnLU1NLUREW1RdSEg6bW06c3MuU1NTJztcbiAgICAgICAgdmFyIHN1ZmZpeCA9IHpvbmUgKyAnW1wiKV0nO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChwcmVmaXggKyB5ZWFyICsgZGF0ZXRpbWUgKyBzdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZvcm1hdCAoaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgaWYgKCFpbnB1dFN0cmluZykge1xuICAgICAgICAgICAgaW5wdXRTdHJpbmcgPSB0aGlzLmlzVXRjKCkgPyBob29rcy5kZWZhdWx0Rm9ybWF0VXRjIDogaG9va3MuZGVmYXVsdEZvcm1hdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3V0cHV0ID0gZm9ybWF0TW9tZW50KHRoaXMsIGlucHV0U3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tICh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8XG4gICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7dG86IHRoaXMsIGZyb206IHRpbWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tTm93ICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG8gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHxcbiAgICAgICAgICAgICAgICAgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHtmcm9tOiB0aGlzLCB0bzogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTm93ICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIC8vIElmIHBhc3NlZCBhIGxvY2FsZSBrZXksIGl0IHdpbGwgc2V0IHRoZSBsb2NhbGUgZm9yIHRoaXNcbiAgICAvLyBpbnN0YW5jZS4gIE90aGVyd2lzZSwgaXQgd2lsbCByZXR1cm4gdGhlIGxvY2FsZSBjb25maWd1cmF0aW9uXG4gICAgLy8gdmFyaWFibGVzIGZvciB0aGlzIGluc3RhbmNlLlxuICAgIGZ1bmN0aW9uIGxvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBuZXdMb2NhbGVEYXRhO1xuXG4gICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZS5fYWJicjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0xvY2FsZURhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIGlmIChuZXdMb2NhbGVEYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2NhbGUgPSBuZXdMb2NhbGVEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFuZyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMuJyxcbiAgICAgICAgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVEYXRhICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE9mICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgLy8gdGhlIGZvbGxvd2luZyBzd2l0Y2ggaW50ZW50aW9uYWxseSBvbWl0cyBicmVhayBrZXl3b3Jkc1xuICAgICAgICAvLyB0byB1dGlsaXplIGZhbGxpbmcgdGhyb3VnaCB0aGUgY2FzZXMuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMubW9udGgoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlKDEpO1xuICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5ob3VycygwKTtcbiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm1pbnV0ZXMoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlY29uZHMoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm1pbGxpc2Vjb25kcygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlZWtzIGFyZSBhIHNwZWNpYWwgY2FzZVxuICAgICAgICBpZiAodW5pdHMgPT09ICd3ZWVrJykge1xuICAgICAgICAgICAgdGhpcy53ZWVrZGF5KDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ2lzb1dlZWsnKSB7XG4gICAgICAgICAgICB0aGlzLmlzb1dlZWtkYXkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBxdWFydGVycyBhcmUgYWxzbyBzcGVjaWFsXG4gICAgICAgIGlmICh1bml0cyA9PT0gJ3F1YXJ0ZXInKSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoKE1hdGguZmxvb3IodGhpcy5tb250aCgpIC8gMykgKiAzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSB1bmRlZmluZWQgfHwgdW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gJ2RhdGUnIGlzIGFuIGFsaWFzIGZvciAnZGF5Jywgc28gaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgc3VjaC5cbiAgICAgICAgaWYgKHVuaXRzID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHVuaXRzID0gJ2RheSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mKHVuaXRzKS5hZGQoMSwgKHVuaXRzID09PSAnaXNvV2VlaycgPyAnd2VlaycgOiB1bml0cykpLnN1YnRyYWN0KDEsICdtcycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbHVlT2YgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCkgLSAoKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bml4ICgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkgLyAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0RhdGUgKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQXJyYXkgKCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBbbS55ZWFyKCksIG0ubW9udGgoKSwgbS5kYXRlKCksIG0uaG91cigpLCBtLm1pbnV0ZSgpLCBtLnNlY29uZCgpLCBtLm1pbGxpc2Vjb25kKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvT2JqZWN0ICgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcnM6IG0ueWVhcigpLFxuICAgICAgICAgICAgbW9udGhzOiBtLm1vbnRoKCksXG4gICAgICAgICAgICBkYXRlOiBtLmRhdGUoKSxcbiAgICAgICAgICAgIGhvdXJzOiBtLmhvdXJzKCksXG4gICAgICAgICAgICBtaW51dGVzOiBtLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgIHNlY29uZHM6IG0uc2Vjb25kcygpLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzOiBtLm1pbGxpc2Vjb25kcygpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICAgICAgLy8gbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbFxuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLnRvSVNPU3RyaW5nKCkgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMiAoKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNpbmdGbGFncyAoKSB7XG4gICAgICAgIHJldHVybiBleHRlbmQoe30sIGdldFBhcnNpbmdGbGFncyh0aGlzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52YWxpZEF0ICgpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNpbmdGbGFncyh0aGlzKS5vdmVyZmxvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGlvbkRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnB1dDogdGhpcy5faSxcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fZixcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5fbG9jYWxlLFxuICAgICAgICAgICAgaXNVVEM6IHRoaXMuX2lzVVRDLFxuICAgICAgICAgICAgc3RyaWN0OiB0aGlzLl9zdHJpY3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnR0cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1llYXJGb3JtYXRUb2tlbiAodG9rZW4sIGdldHRlcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdldHRlcik7XG4gICAgfVxuXG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZycsICAgICAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnZycsICAgICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0cnLCAgJ2lzb1dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2Vla1llYXInLCAnZ2cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtZZWFyJywgJ0dHJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrWWVhcicsIDEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla1llYXInLCAxKTtcblxuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRycsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2cnLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdHRycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2dnJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2dnZycsICdnZ2dnZycsICdHR0dHJywgJ0dHR0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnJywgJ0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIHRoaXMud2VlaygpLFxuICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheSgpLFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyxcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LCB0aGlzLmlzb1dlZWsoKSwgdGhpcy5pc29XZWVrZGF5KCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luWWVhciAoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhckhlbHBlcihpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtzVGFyZ2V0O1xuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIodGhpcywgZG93LCBkb3kpLnllYXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3ZWVrc1RhcmdldCA9IHdlZWtzSW5ZZWFyKGlucHV0LCBkb3csIGRveSk7XG4gICAgICAgICAgICBpZiAod2VlayA+IHdlZWtzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgd2VlayA9IHdlZWtzVGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldFdlZWtBbGwuY2FsbCh0aGlzLCBpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0V2Vla0FsbCh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhckRhdGEgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKGRheU9mWWVhckRhdGEueWVhciwgMCwgZGF5T2ZZZWFyRGF0YS5kYXlPZlllYXIpO1xuXG4gICAgICAgIHRoaXMueWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgICAgICB0aGlzLm1vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgICAgIHRoaXMuZGF0ZShkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdRJywgMCwgJ1FvJywgJ3F1YXJ0ZXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygncXVhcnRlcicsICdRJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdxdWFydGVyJywgNyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTtcbiAgICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0UXVhcnRlciAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMykgOiB0aGlzLm1vbnRoKChpbnB1dCAtIDEpICogMyArIHRoaXMubW9udGgoKSAlIDMpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEJywgWydERCcsIDJdLCAnRG8nLCAnZGF0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXRlJywgJ0QnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXRlJywgOSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignREQnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignRG8nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgXCJvcmRpbmFsUGFyc2VcIiBmYWxsYmFjayBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/XG4gICAgICAgICAgKGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZSB8fCBsb2NhbGUuX29yZGluYWxQYXJzZSkgOlxuICAgICAgICAgIGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQ7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnRCcsICdERCddLCBEQVRFKTtcbiAgICBhZGRQYXJzZVRva2VuKCdEbycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbREFURV0gPSB0b0ludChpbnB1dC5tYXRjaChtYXRjaDF0bzIpWzBdKTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXREYXlPZk1vbnRoID0gbWFrZUdldFNldCgnRGF0ZScsIHRydWUpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0RERCcsIFsnRERERCcsIDNdLCAnREREbycsICdkYXlPZlllYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF5T2ZZZWFyJywgJ0RERCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheU9mWWVhcicsIDQpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignREREJywgIG1hdGNoMXRvMyk7XG4gICAgYWRkUmVnZXhUb2tlbignRERERCcsIG1hdGNoMyk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ0RERCcsICdEREREJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mWWVhciAoaW5wdXQpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhciA9IE1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKSAtIHRoaXMuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykpIC8gODY0ZTUpICsgMTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBkYXlPZlllYXIgOiB0aGlzLmFkZCgoaW5wdXQgLSBkYXlPZlllYXIpLCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdtJywgWydtbScsIDJdLCAwLCAnbWludXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbnV0ZScsICdtJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaW51dGUnLCAxNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdtJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignbW0nLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ20nLCAnbW0nXSwgTUlOVVRFKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaW51dGUgPSBtYWtlR2V0U2V0KCdNaW51dGVzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMl0sIDAsICdzZWNvbmQnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnc2Vjb25kJywgJ3MnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3NlY29uZCcsIDE1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3MnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdzcycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsncycsICdzcyddLCBTRUNPTkQpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFNlY29uZCA9IG1ha2VHZXRTZXQoJ1NlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTJywgM10sIDAsICdtaWxsaXNlY29uZCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTUycsIDRdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTJywgNV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTUycsIDZdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTUycsIDddLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTJywgOF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTUycsIDldLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDAwO1xuICAgIH0pO1xuXG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbGxpc2Vjb25kJywgJ21zJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaWxsaXNlY29uZCcsIDE2KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1MnLCAgICBtYXRjaDF0bzMsIG1hdGNoMSk7XG4gICAgYWRkUmVnZXhUb2tlbignU1MnLCAgIG1hdGNoMXRvMywgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCAgbWF0Y2gxdG8zLCBtYXRjaDMpO1xuXG4gICAgdmFyIHRva2VuO1xuICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUmVnZXhUb2tlbih0b2tlbiwgbWF0Y2hVbnNpZ25lZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VNcyhpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTUlMTElTRUNPTkRdID0gdG9JbnQoKCcwLicgKyBpbnB1dCkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmb3IgKHRva2VuID0gJ1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpO1xuICAgIH1cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0TWlsbGlzZWNvbmQgPSBtYWtlR2V0U2V0KCdNaWxsaXNlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigneicsICAwLCAwLCAnem9uZUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFpvbmVBYmJyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ1VUQycgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRab25lTmFtZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICdDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZScgOiAnJztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8gPSBNb21lbnQucHJvdG90eXBlO1xuXG4gICAgcHJvdG8uYWRkICAgICAgICAgICAgICAgPSBhZGQ7XG4gICAgcHJvdG8uY2FsZW5kYXIgICAgICAgICAgPSBjYWxlbmRhciQxO1xuICAgIHByb3RvLmNsb25lICAgICAgICAgICAgID0gY2xvbmU7XG4gICAgcHJvdG8uZGlmZiAgICAgICAgICAgICAgPSBkaWZmO1xuICAgIHByb3RvLmVuZE9mICAgICAgICAgICAgID0gZW5kT2Y7XG4gICAgcHJvdG8uZm9ybWF0ICAgICAgICAgICAgPSBmb3JtYXQ7XG4gICAgcHJvdG8uZnJvbSAgICAgICAgICAgICAgPSBmcm9tO1xuICAgIHByb3RvLmZyb21Ob3cgICAgICAgICAgID0gZnJvbU5vdztcbiAgICBwcm90by50byAgICAgICAgICAgICAgICA9IHRvO1xuICAgIHByb3RvLnRvTm93ICAgICAgICAgICAgID0gdG9Ob3c7XG4gICAgcHJvdG8uZ2V0ICAgICAgICAgICAgICAgPSBzdHJpbmdHZXQ7XG4gICAgcHJvdG8uaW52YWxpZEF0ICAgICAgICAgPSBpbnZhbGlkQXQ7XG4gICAgcHJvdG8uaXNBZnRlciAgICAgICAgICAgPSBpc0FmdGVyO1xuICAgIHByb3RvLmlzQmVmb3JlICAgICAgICAgID0gaXNCZWZvcmU7XG4gICAgcHJvdG8uaXNCZXR3ZWVuICAgICAgICAgPSBpc0JldHdlZW47XG4gICAgcHJvdG8uaXNTYW1lICAgICAgICAgICAgPSBpc1NhbWU7XG4gICAgcHJvdG8uaXNTYW1lT3JBZnRlciAgICAgPSBpc1NhbWVPckFmdGVyO1xuICAgIHByb3RvLmlzU2FtZU9yQmVmb3JlICAgID0gaXNTYW1lT3JCZWZvcmU7XG4gICAgcHJvdG8uaXNWYWxpZCAgICAgICAgICAgPSBpc1ZhbGlkJDI7XG4gICAgcHJvdG8ubGFuZyAgICAgICAgICAgICAgPSBsYW5nO1xuICAgIHByb3RvLmxvY2FsZSAgICAgICAgICAgID0gbG9jYWxlO1xuICAgIHByb3RvLmxvY2FsZURhdGEgICAgICAgID0gbG9jYWxlRGF0YTtcbiAgICBwcm90by5tYXggICAgICAgICAgICAgICA9IHByb3RvdHlwZU1heDtcbiAgICBwcm90by5taW4gICAgICAgICAgICAgICA9IHByb3RvdHlwZU1pbjtcbiAgICBwcm90by5wYXJzaW5nRmxhZ3MgICAgICA9IHBhcnNpbmdGbGFncztcbiAgICBwcm90by5zZXQgICAgICAgICAgICAgICA9IHN0cmluZ1NldDtcbiAgICBwcm90by5zdGFydE9mICAgICAgICAgICA9IHN0YXJ0T2Y7XG4gICAgcHJvdG8uc3VidHJhY3QgICAgICAgICAgPSBzdWJ0cmFjdDtcbiAgICBwcm90by50b0FycmF5ICAgICAgICAgICA9IHRvQXJyYXk7XG4gICAgcHJvdG8udG9PYmplY3QgICAgICAgICAgPSB0b09iamVjdDtcbiAgICBwcm90by50b0RhdGUgICAgICAgICAgICA9IHRvRGF0ZTtcbiAgICBwcm90by50b0lTT1N0cmluZyAgICAgICA9IHRvSVNPU3RyaW5nO1xuICAgIHByb3RvLmluc3BlY3QgICAgICAgICAgID0gaW5zcGVjdDtcbiAgICBwcm90by50b0pTT04gICAgICAgICAgICA9IHRvSlNPTjtcbiAgICBwcm90by50b1N0cmluZyAgICAgICAgICA9IHRvU3RyaW5nO1xuICAgIHByb3RvLnVuaXggICAgICAgICAgICAgID0gdW5peDtcbiAgICBwcm90by52YWx1ZU9mICAgICAgICAgICA9IHZhbHVlT2Y7XG4gICAgcHJvdG8uY3JlYXRpb25EYXRhICAgICAgPSBjcmVhdGlvbkRhdGE7XG4gICAgcHJvdG8ueWVhciAgICAgICA9IGdldFNldFllYXI7XG4gICAgcHJvdG8uaXNMZWFwWWVhciA9IGdldElzTGVhcFllYXI7XG4gICAgcHJvdG8ud2Vla1llYXIgICAgPSBnZXRTZXRXZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrWWVhciA9IGdldFNldElTT1dlZWtZZWFyO1xuICAgIHByb3RvLnF1YXJ0ZXIgPSBwcm90by5xdWFydGVycyA9IGdldFNldFF1YXJ0ZXI7XG4gICAgcHJvdG8ubW9udGggICAgICAgPSBnZXRTZXRNb250aDtcbiAgICBwcm90by5kYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoO1xuICAgIHByb3RvLndlZWsgICAgICAgICAgID0gcHJvdG8ud2Vla3MgICAgICAgID0gZ2V0U2V0V2VlaztcbiAgICBwcm90by5pc29XZWVrICAgICAgICA9IHByb3RvLmlzb1dlZWtzICAgICA9IGdldFNldElTT1dlZWs7XG4gICAgcHJvdG8ud2Vla3NJblllYXIgICAgPSBnZXRXZWVrc0luWWVhcjtcbiAgICBwcm90by5pc29XZWVrc0luWWVhciA9IGdldElTT1dlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmRhdGUgICAgICAgPSBnZXRTZXREYXlPZk1vbnRoO1xuICAgIHByb3RvLmRheSAgICAgICAgPSBwcm90by5kYXlzICAgICAgICAgICAgID0gZ2V0U2V0RGF5T2ZXZWVrO1xuICAgIHByb3RvLndlZWtkYXkgICAgPSBnZXRTZXRMb2NhbGVEYXlPZldlZWs7XG4gICAgcHJvdG8uaXNvV2Vla2RheSA9IGdldFNldElTT0RheU9mV2VlaztcbiAgICBwcm90by5kYXlPZlllYXIgID0gZ2V0U2V0RGF5T2ZZZWFyO1xuICAgIHByb3RvLmhvdXIgPSBwcm90by5ob3VycyA9IGdldFNldEhvdXI7XG4gICAgcHJvdG8ubWludXRlID0gcHJvdG8ubWludXRlcyA9IGdldFNldE1pbnV0ZTtcbiAgICBwcm90by5zZWNvbmQgPSBwcm90by5zZWNvbmRzID0gZ2V0U2V0U2Vjb25kO1xuICAgIHByb3RvLm1pbGxpc2Vjb25kID0gcHJvdG8ubWlsbGlzZWNvbmRzID0gZ2V0U2V0TWlsbGlzZWNvbmQ7XG4gICAgcHJvdG8udXRjT2Zmc2V0ICAgICAgICAgICAgPSBnZXRTZXRPZmZzZXQ7XG4gICAgcHJvdG8udXRjICAgICAgICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1VUQztcbiAgICBwcm90by5sb2NhbCAgICAgICAgICAgICAgICA9IHNldE9mZnNldFRvTG9jYWw7XG4gICAgcHJvdG8ucGFyc2Vab25lICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldDtcbiAgICBwcm90by5oYXNBbGlnbmVkSG91ck9mZnNldCA9IGhhc0FsaWduZWRIb3VyT2Zmc2V0O1xuICAgIHByb3RvLmlzRFNUICAgICAgICAgICAgICAgID0gaXNEYXlsaWdodFNhdmluZ1RpbWU7XG4gICAgcHJvdG8uaXNMb2NhbCAgICAgICAgICAgICAgPSBpc0xvY2FsO1xuICAgIHByb3RvLmlzVXRjT2Zmc2V0ICAgICAgICAgID0gaXNVdGNPZmZzZXQ7XG4gICAgcHJvdG8uaXNVdGMgICAgICAgICAgICAgICAgPSBpc1V0YztcbiAgICBwcm90by5pc1VUQyAgICAgICAgICAgICAgICA9IGlzVXRjO1xuICAgIHByb3RvLnpvbmVBYmJyID0gZ2V0Wm9uZUFiYnI7XG4gICAgcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTtcbiAgICBwcm90by5kYXRlcyAgPSBkZXByZWNhdGUoJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJywgZ2V0U2V0RGF5T2ZNb250aCk7XG4gICAgcHJvdG8ubW9udGhzID0gZGVwcmVjYXRlKCdtb250aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQnLCBnZXRTZXRNb250aCk7XG4gICAgcHJvdG8ueWVhcnMgID0gZGVwcmVjYXRlKCd5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkJywgZ2V0U2V0WWVhcik7XG4gICAgcHJvdG8uem9uZSAgID0gZGVwcmVjYXRlKCdtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLycsIGdldFNldFpvbmUpO1xuICAgIHByb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZSgnaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbicsIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVbml4IChpbnB1dCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJblpvbmUgKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYXJzZVpvbmUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVQYXJzZVBvc3RGb3JtYXQgKHN0cmluZykge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH1cblxuICAgIHZhciBwcm90byQxID0gTG9jYWxlLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDEuY2FsZW5kYXIgICAgICAgID0gY2FsZW5kYXI7XG4gICAgcHJvdG8kMS5sb25nRGF0ZUZvcm1hdCAgPSBsb25nRGF0ZUZvcm1hdDtcbiAgICBwcm90byQxLmludmFsaWREYXRlICAgICA9IGludmFsaWREYXRlO1xuICAgIHByb3RvJDEub3JkaW5hbCAgICAgICAgID0gb3JkaW5hbDtcbiAgICBwcm90byQxLnByZXBhcnNlICAgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnBvc3Rmb3JtYXQgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnJlbGF0aXZlVGltZSAgICA9IHJlbGF0aXZlVGltZTtcbiAgICBwcm90byQxLnBhc3RGdXR1cmUgICAgICA9IHBhc3RGdXR1cmU7XG4gICAgcHJvdG8kMS5zZXQgICAgICAgICAgICAgPSBzZXQ7XG5cbiAgICBwcm90byQxLm1vbnRocyAgICAgICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRocztcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0ICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRoc1Nob3J0O1xuICAgIHByb3RvJDEubW9udGhzUGFyc2UgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzUGFyc2U7XG4gICAgcHJvdG8kMS5tb250aHNSZWdleCAgICAgICA9IG1vbnRoc1JlZ2V4O1xuICAgIHByb3RvJDEubW9udGhzU2hvcnRSZWdleCAgPSBtb250aHNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2VlayA9IGxvY2FsZVdlZWs7XG4gICAgcHJvdG8kMS5maXJzdERheU9mWWVhciA9IGxvY2FsZUZpcnN0RGF5T2ZZZWFyO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZldlZWsgPSBsb2NhbGVGaXJzdERheU9mV2VlaztcblxuICAgIHByb3RvJDEud2Vla2RheXMgICAgICAgPSAgICAgICAgbG9jYWxlV2Vla2RheXM7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pbiAgICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c01pbjtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnQgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzU2hvcnQ7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1BhcnNlICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c1BhcnNlO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5c1JlZ2V4ICAgICAgID0gICAgICAgIHdlZWtkYXlzUmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0UmVnZXggID0gICAgICAgIHdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzTWluUmVnZXggICAgPSAgICAgICAgd2Vla2RheXNNaW5SZWdleDtcblxuICAgIHByb3RvJDEuaXNQTSA9IGxvY2FsZUlzUE07XG4gICAgcHJvdG8kMS5tZXJpZGllbSA9IGxvY2FsZU1lcmlkaWVtO1xuXG4gICAgZnVuY3Rpb24gZ2V0JDEgKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpO1xuICAgICAgICB2YXIgdXRjID0gY3JlYXRlVVRDKCkuc2V0KHNldHRlciwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gbG9jYWxlW2ZpZWxkXSh1dGMsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc0ltcGwgKGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIC8vICgpXG4gICAgLy8gKDUpXG4gICAgLy8gKGZtdCwgNSlcbiAgICAvLyAoZm10KVxuICAgIC8vICh0cnVlKVxuICAgIC8vICh0cnVlLCA1KVxuICAgIC8vICh0cnVlLCBmbXQsIDUpXG4gICAgLy8gKHRydWUsIGZtdClcbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNJbXBsIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbG9jYWxlU29ydGVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBsb2NhbGVTb3J0ZWQ7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGxvY2FsZVNvcnRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpLFxuICAgICAgICAgICAgc2hpZnQgPSBsb2NhbGVTb3J0ZWQgPyBsb2NhbGUuX3dlZWsuZG93IDogMDtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgKGkgKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRocyAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRocycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNTaG9ydCAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNTaG9ydCAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzU2hvcnQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNNaW4gKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpO1xuICAgIH1cblxuICAgIGdldFNldEdsb2JhbExvY2FsZSgnZW4nLCB7XG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodG9JbnQobnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG4gICAgaG9va3MubGFuZyA9IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4nLCBnZXRTZXRHbG9iYWxMb2NhbGUpO1xuICAgIGhvb2tzLmxhbmdEYXRhID0gZGVwcmVjYXRlKCdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJywgZ2V0TG9jYWxlKTtcblxuICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBhYnMgKCkge1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgICAgPSB0aGlzLl9kYXRhO1xuXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9IG1hdGhBYnModGhpcy5fbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgdGhpcy5fZGF5cyAgICAgICAgID0gbWF0aEFicyh0aGlzLl9kYXlzKTtcbiAgICAgICAgdGhpcy5fbW9udGhzICAgICAgID0gbWF0aEFicyh0aGlzLl9tb250aHMpO1xuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzICA9IG1hdGhBYnMoZGF0YS5taWxsaXNlY29uZHMpO1xuICAgICAgICBkYXRhLnNlY29uZHMgICAgICAgPSBtYXRoQWJzKGRhdGEuc2Vjb25kcyk7XG4gICAgICAgIGRhdGEubWludXRlcyAgICAgICA9IG1hdGhBYnMoZGF0YS5taW51dGVzKTtcbiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgID0gbWF0aEFicyhkYXRhLmhvdXJzKTtcbiAgICAgICAgZGF0YS5tb250aHMgICAgICAgID0gbWF0aEFicyhkYXRhLm1vbnRocyk7XG4gICAgICAgIGRhdGEueWVhcnMgICAgICAgICA9IG1hdGhBYnMoZGF0YS55ZWFycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QkMSAoZHVyYXRpb24sIGlucHV0LCB2YWx1ZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUR1cmF0aW9uKGlucHV0LCB2YWx1ZSk7XG5cbiAgICAgICAgZHVyYXRpb24uX21pbGxpc2Vjb25kcyArPSBkaXJlY3Rpb24gKiBvdGhlci5fbWlsbGlzZWNvbmRzO1xuICAgICAgICBkdXJhdGlvbi5fZGF5cyAgICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9kYXlzO1xuICAgICAgICBkdXJhdGlvbi5fbW9udGhzICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9tb250aHM7XG5cbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gYWRkJDEgKGlucHV0LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYWRkU3VidHJhY3QkMSh0aGlzLCBpbnB1dCwgdmFsdWUsIDEpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIHN1YnRyYWN0KDEsICdzJykgb3Igc3VidHJhY3QoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gc3VidHJhY3QkMSAoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0NlaWwgKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1YmJsZSAoKSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7XG4gICAgICAgIHZhciBkYXlzICAgICAgICAgPSB0aGlzLl9kYXlzO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gdGhpcy5fbW9udGhzO1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgID0gdGhpcy5fZGF0YTtcbiAgICAgICAgdmFyIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycywgbW9udGhzRnJvbURheXM7XG5cbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIG1peCBvZiBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdmFsdWVzLCBidWJibGUgZG93biBmaXJzdFxuICAgICAgICAvLyBjaGVjazogaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzIxNjZcbiAgICAgICAgaWYgKCEoKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRheXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHxcbiAgICAgICAgICAgICAgICAobWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAwKSkpIHtcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTtcbiAgICAgICAgICAgIGRheXMgPSAwO1xuICAgICAgICAgICAgbW9udGhzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3JcbiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLlxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG5cbiAgICAgICAgc2Vjb25kcyAgICAgICAgICAgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzICAgICAgPSBzZWNvbmRzICUgNjA7XG5cbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgICAgICA9IG1pbnV0ZXMgJSA2MDtcblxuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIGRhdGEuaG91cnMgICAgICAgID0gaG91cnMgJSAyNDtcblxuICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgICAgIC8vIGNvbnZlcnQgZGF5cyB0byBtb250aHNcbiAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9Nb250aHMoZGF5cykpO1xuICAgICAgICBtb250aHMgKz0gbW9udGhzRnJvbURheXM7XG4gICAgICAgIGRheXMgLT0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzRnJvbURheXMpKTtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cbiAgICAgICAgZGF0YS5kYXlzICAgPSBkYXlzO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRocztcbiAgICAgICAgZGF0YS55ZWFycyAgPSB5ZWFycztcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMgKGRheXMpIHtcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTQ2MDk3IGRheXMgKHRha2luZyBpbnRvIGFjY291bnQgbGVhcCB5ZWFyIHJ1bGVzKVxuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxMiBtb250aHMgPT09IDQ4MDBcbiAgICAgICAgcmV0dXJuIGRheXMgKiA0ODAwIC8gMTQ2MDk3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyAobW9udGhzKSB7XG4gICAgICAgIC8vIHRoZSByZXZlcnNlIG9mIGRheXNUb01vbnRoc1xuICAgICAgICByZXR1cm4gbW9udGhzICogMTQ2MDk3IC8gNDgwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcyAodW5pdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5cztcbiAgICAgICAgdmFyIG1vbnRocztcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBpZiAodW5pdHMgPT09ICdtb250aCcgfHwgdW5pdHMgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgZGF5cyAgID0gdGhpcy5fZGF5cyAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7XG4gICAgICAgICAgICBtb250aHMgPSB0aGlzLl9tb250aHMgKyBkYXlzVG9Nb250aHMoZGF5cyk7XG4gICAgICAgICAgICByZXR1cm4gdW5pdHMgPT09ICdtb250aCcgPyBtb250aHMgOiBtb250aHMgLyAxMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBtaWxsaXNlY29uZHMgc2VwYXJhdGVseSBiZWNhdXNlIG9mIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIChpc3N1ZSAjMTg2NylcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzICsgTWF0aC5yb3VuZChtb250aHNUb0RheXModGhpcy5fbW9udGhzKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnd2VlaycgICA6IHJldHVybiBkYXlzIC8gNyAgICAgKyBtaWxsaXNlY29uZHMgLyA2MDQ4ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGF5JyAgICA6IHJldHVybiBkYXlzICAgICAgICAgKyBtaWxsaXNlY29uZHMgLyA4NjRlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdob3VyJyAgIDogcmV0dXJuIGRheXMgKiAyNCAgICArIG1pbGxpc2Vjb25kcyAvIDM2ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWludXRlJyA6IHJldHVybiBkYXlzICogMTQ0MCAgKyBtaWxsaXNlY29uZHMgLyA2ZTQ7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kJyA6IHJldHVybiBkYXlzICogODY0MDAgKyBtaWxsaXNlY29uZHMgLyAxMDAwO1xuICAgICAgICAgICAgICAgIC8vIE1hdGguZmxvb3IgcHJldmVudHMgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgaGVyZVxuICAgICAgICAgICAgICAgIGNhc2UgJ21pbGxpc2Vjb25kJzogcmV0dXJuIE1hdGguZmxvb3IoZGF5cyAqIDg2NGU1KSArIG1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdW5pdCAnICsgdW5pdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIHRoaXMuYXMoJ21zJyk/XG4gICAgZnVuY3Rpb24gdmFsdWVPZiQxICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHRoaXMuX2RheXMgKiA4NjRlNSArXG4gICAgICAgICAgICAodGhpcy5fbW9udGhzICUgMTIpICogMjU5MmU2ICtcbiAgICAgICAgICAgIHRvSW50KHRoaXMuX21vbnRocyAvIDEyKSAqIDMxNTM2ZTZcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlQXMgKGFsaWFzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcyhhbGlhcyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGFzTWlsbGlzZWNvbmRzID0gbWFrZUFzKCdtcycpO1xuICAgIHZhciBhc1NlY29uZHMgICAgICA9IG1ha2VBcygncycpO1xuICAgIHZhciBhc01pbnV0ZXMgICAgICA9IG1ha2VBcygnbScpO1xuICAgIHZhciBhc0hvdXJzICAgICAgICA9IG1ha2VBcygnaCcpO1xuICAgIHZhciBhc0RheXMgICAgICAgICA9IG1ha2VBcygnZCcpO1xuICAgIHZhciBhc1dlZWtzICAgICAgICA9IG1ha2VBcygndycpO1xuICAgIHZhciBhc01vbnRocyAgICAgICA9IG1ha2VBcygnTScpO1xuICAgIHZhciBhc1llYXJzICAgICAgICA9IG1ha2VBcygneScpO1xuXG4gICAgZnVuY3Rpb24gY2xvbmUkMSAoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXQkMiAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXNbdW5pdHMgKyAncyddKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldHRlcihuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9kYXRhW25hbWVdIDogTmFOO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBtaWxsaXNlY29uZHMgPSBtYWtlR2V0dGVyKCdtaWxsaXNlY29uZHMnKTtcbiAgICB2YXIgc2Vjb25kcyAgICAgID0gbWFrZUdldHRlcignc2Vjb25kcycpO1xuICAgIHZhciBtaW51dGVzICAgICAgPSBtYWtlR2V0dGVyKCdtaW51dGVzJyk7XG4gICAgdmFyIGhvdXJzICAgICAgICA9IG1ha2VHZXR0ZXIoJ2hvdXJzJyk7XG4gICAgdmFyIGRheXMgICAgICAgICA9IG1ha2VHZXR0ZXIoJ2RheXMnKTtcbiAgICB2YXIgbW9udGhzICAgICAgID0gbWFrZUdldHRlcignbW9udGhzJyk7XG4gICAgdmFyIHllYXJzICAgICAgICA9IG1ha2VHZXR0ZXIoJ3llYXJzJyk7XG5cbiAgICBmdW5jdGlvbiB3ZWVrcyAoKSB7XG4gICAgICAgIHJldHVybiBhYnNGbG9vcih0aGlzLmRheXMoKSAvIDcpO1xuICAgIH1cblxuICAgIHZhciByb3VuZCA9IE1hdGgucm91bmQ7XG4gICAgdmFyIHRocmVzaG9sZHMgPSB7XG4gICAgICAgIHNzOiA0NCwgICAgICAgICAvLyBhIGZldyBzZWNvbmRzIHRvIHNlY29uZHNcbiAgICAgICAgcyA6IDQ1LCAgICAgICAgIC8vIHNlY29uZHMgdG8gbWludXRlXG4gICAgICAgIG0gOiA0NSwgICAgICAgICAvLyBtaW51dGVzIHRvIGhvdXJcbiAgICAgICAgaCA6IDIyLCAgICAgICAgIC8vIGhvdXJzIHRvIGRheVxuICAgICAgICBkIDogMjYsICAgICAgICAgLy8gZGF5cyB0byBtb250aFxuICAgICAgICBNIDogMTEgICAgICAgICAgLy8gbW9udGhzIHRvIHllYXJcbiAgICB9O1xuXG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBtb21lbnQuZm4uZnJvbSwgbW9tZW50LmZuLmZyb21Ob3csIGFuZCBtb21lbnQuZHVyYXRpb24uZm4uaHVtYW5pemVcbiAgICBmdW5jdGlvbiBzdWJzdGl0dXRlVGltZUFnbyhzdHJpbmcsIG51bWJlciwgd2l0aG91dFN1ZmZpeCwgaXNGdXR1cmUsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLnJlbGF0aXZlVGltZShudW1iZXIgfHwgMSwgISF3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUkMSAocG9zTmVnRHVyYXRpb24sIHdpdGhvdXRTdWZmaXgsIGxvY2FsZSkge1xuICAgICAgICB2YXIgZHVyYXRpb24gPSBjcmVhdGVEdXJhdGlvbihwb3NOZWdEdXJhdGlvbikuYWJzKCk7XG4gICAgICAgIHZhciBzZWNvbmRzICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdzJykpO1xuICAgICAgICB2YXIgbWludXRlcyAgPSByb3VuZChkdXJhdGlvbi5hcygnbScpKTtcbiAgICAgICAgdmFyIGhvdXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ2gnKSk7XG4gICAgICAgIHZhciBkYXlzICAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdkJykpO1xuICAgICAgICB2YXIgbW9udGhzICAgPSByb3VuZChkdXJhdGlvbi5hcygnTScpKTtcbiAgICAgICAgdmFyIHllYXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ3knKSk7XG5cbiAgICAgICAgdmFyIGEgPSBzZWNvbmRzIDw9IHRocmVzaG9sZHMuc3MgJiYgWydzJywgc2Vjb25kc10gIHx8XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA8IHRocmVzaG9sZHMucyAgICYmIFsnc3MnLCBzZWNvbmRzXSB8fFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPD0gMSAgICAgICAgICAgICAmJiBbJ20nXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBtaW51dGVzIDwgdGhyZXNob2xkcy5tICAgJiYgWydtbScsIG1pbnV0ZXNdIHx8XG4gICAgICAgICAgICAgICAgaG91cnMgICA8PSAxICAgICAgICAgICAgICYmIFsnaCddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIGhvdXJzICAgPCB0aHJlc2hvbGRzLmggICAmJiBbJ2hoJywgaG91cnNdICAgfHxcbiAgICAgICAgICAgICAgICBkYXlzICAgIDw9IDEgICAgICAgICAgICAgJiYgWydkJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgZGF5cyAgICA8IHRocmVzaG9sZHMuZCAgICYmIFsnZGQnLCBkYXlzXSAgICB8fFxuICAgICAgICAgICAgICAgIG1vbnRocyAgPD0gMSAgICAgICAgICAgICAmJiBbJ00nXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBtb250aHMgIDwgdGhyZXNob2xkcy5NICAgJiYgWydNTScsIG1vbnRoc10gIHx8XG4gICAgICAgICAgICAgICAgeWVhcnMgICA8PSAxICAgICAgICAgICAgICYmIFsneSddICAgICAgICAgICB8fCBbJ3l5JywgeWVhcnNdO1xuXG4gICAgICAgIGFbMl0gPSB3aXRob3V0U3VmZml4O1xuICAgICAgICBhWzNdID0gK3Bvc05lZ0R1cmF0aW9uID4gMDtcbiAgICAgICAgYVs0XSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGVUaW1lQWdvLmFwcGx5KG51bGwsIGEpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgdGhlIHJvdW5kaW5nIGZ1bmN0aW9uIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZyAocm91bmRpbmdGdW5jdGlvbikge1xuICAgICAgICBpZiAocm91bmRpbmdGdW5jdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcm91bmQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZihyb3VuZGluZ0Z1bmN0aW9uKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcm91bmQgPSByb3VuZGluZ0Z1bmN0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgYSB0aHJlc2hvbGQgZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZCAodGhyZXNob2xkLCBsaW1pdCkge1xuICAgICAgICBpZiAodGhyZXNob2xkc1t0aHJlc2hvbGRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRocmVzaG9sZHNbdGhyZXNob2xkXTtcbiAgICAgICAgfVxuICAgICAgICB0aHJlc2hvbGRzW3RocmVzaG9sZF0gPSBsaW1pdDtcbiAgICAgICAgaWYgKHRocmVzaG9sZCA9PT0gJ3MnKSB7XG4gICAgICAgICAgICB0aHJlc2hvbGRzLnNzID0gbGltaXQgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGh1bWFuaXplICh3aXRoU3VmZml4KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICB2YXIgb3V0cHV0ID0gcmVsYXRpdmVUaW1lJDEodGhpcywgIXdpdGhTdWZmaXgsIGxvY2FsZSk7XG5cbiAgICAgICAgaWYgKHdpdGhTdWZmaXgpIHtcbiAgICAgICAgICAgIG91dHB1dCA9IGxvY2FsZS5wYXN0RnV0dXJlKCt0aGlzLCBvdXRwdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsZS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFicyQxID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBzaWduKHgpIHtcbiAgICAgICAgcmV0dXJuICgoeCA+IDApIC0gKHggPCAwKSkgfHwgK3g7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmckMSgpIHtcbiAgICAgICAgLy8gZm9yIElTTyBzdHJpbmdzIHdlIGRvIG5vdCB1c2UgdGhlIG5vcm1hbCBidWJibGluZyBydWxlczpcbiAgICAgICAgLy8gICogbWlsbGlzZWNvbmRzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSBob3Vyc1xuICAgICAgICAvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUgYXQgYWxsXG4gICAgICAgIC8vICAqIG1vbnRocyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgeWVhcnNcbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbnRleHQtZnJlZSBjb252ZXJzaW9uIGJldHdlZW4gaG91cnMgYW5kIGRheXNcbiAgICAgICAgLy8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpXG4gICAgICAgIC8vIGFuZCBhbHNvIG5vdCBiZXR3ZWVuIGRheXMgYW5kIG1vbnRocyAoMjgtMzEgZGF5cyBwZXIgbW9udGgpXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlY29uZHMgPSBhYnMkMSh0aGlzLl9taWxsaXNlY29uZHMpIC8gMTAwMDtcbiAgICAgICAgdmFyIGRheXMgICAgICAgICA9IGFicyQxKHRoaXMuX2RheXMpO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gYWJzJDEodGhpcy5fbW9udGhzKTtcbiAgICAgICAgdmFyIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycztcblxuICAgICAgICAvLyAzNjAwIHNlY29uZHMgLT4gNjAgbWludXRlcyAtPiAxIGhvdXJcbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIHNlY29uZHMgJT0gNjA7XG4gICAgICAgIG1pbnV0ZXMgJT0gNjA7XG5cbiAgICAgICAgLy8gMTIgbW9udGhzIC0+IDEgeWVhclxuICAgICAgICB5ZWFycyAgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuXG4gICAgICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kb3JkaWxsZS9tb21lbnQtaXNvZHVyYXRpb24vYmxvYi9tYXN0ZXIvbW9tZW50Lmlzb2R1cmF0aW9uLmpzXG4gICAgICAgIHZhciBZID0geWVhcnM7XG4gICAgICAgIHZhciBNID0gbW9udGhzO1xuICAgICAgICB2YXIgRCA9IGRheXM7XG4gICAgICAgIHZhciBoID0gaG91cnM7XG4gICAgICAgIHZhciBtID0gbWludXRlcztcbiAgICAgICAgdmFyIHMgPSBzZWNvbmRzID8gc2Vjb25kcy50b0ZpeGVkKDMpLnJlcGxhY2UoL1xcLj8wKyQvLCAnJykgOiAnJztcbiAgICAgICAgdmFyIHRvdGFsID0gdGhpcy5hc1NlY29uZHMoKTtcblxuICAgICAgICBpZiAoIXRvdGFsKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBzYW1lIGFzIEMjJ3MgKE5vZGEpIGFuZCBweXRob24gKGlzb2RhdGUpLi4uXG4gICAgICAgICAgICAvLyBidXQgbm90IG90aGVyIEpTIChnb29nLmRhdGUpXG4gICAgICAgICAgICByZXR1cm4gJ1AwRCc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG90YWxTaWduID0gdG90YWwgPCAwID8gJy0nIDogJyc7XG4gICAgICAgIHZhciB5bVNpZ24gPSBzaWduKHRoaXMuX21vbnRocykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIHZhciBkYXlzU2lnbiA9IHNpZ24odGhpcy5fZGF5cykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIHZhciBobXNTaWduID0gc2lnbih0aGlzLl9taWxsaXNlY29uZHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuXG4gICAgICAgIHJldHVybiB0b3RhbFNpZ24gKyAnUCcgK1xuICAgICAgICAgICAgKFkgPyB5bVNpZ24gKyBZICsgJ1knIDogJycpICtcbiAgICAgICAgICAgIChNID8geW1TaWduICsgTSArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAoRCA/IGRheXNTaWduICsgRCArICdEJyA6ICcnKSArXG4gICAgICAgICAgICAoKGggfHwgbSB8fCBzKSA/ICdUJyA6ICcnKSArXG4gICAgICAgICAgICAoaCA/IGhtc1NpZ24gKyBoICsgJ0gnIDogJycpICtcbiAgICAgICAgICAgIChtID8gaG1zU2lnbiArIG0gKyAnTScgOiAnJykgK1xuICAgICAgICAgICAgKHMgPyBobXNTaWduICsgcyArICdTJyA6ICcnKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMiA9IER1cmF0aW9uLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDIuaXNWYWxpZCAgICAgICAgPSBpc1ZhbGlkJDE7XG4gICAgcHJvdG8kMi5hYnMgICAgICAgICAgICA9IGFicztcbiAgICBwcm90byQyLmFkZCAgICAgICAgICAgID0gYWRkJDE7XG4gICAgcHJvdG8kMi5zdWJ0cmFjdCAgICAgICA9IHN1YnRyYWN0JDE7XG4gICAgcHJvdG8kMi5hcyAgICAgICAgICAgICA9IGFzO1xuICAgIHByb3RvJDIuYXNNaWxsaXNlY29uZHMgPSBhc01pbGxpc2Vjb25kcztcbiAgICBwcm90byQyLmFzU2Vjb25kcyAgICAgID0gYXNTZWNvbmRzO1xuICAgIHByb3RvJDIuYXNNaW51dGVzICAgICAgPSBhc01pbnV0ZXM7XG4gICAgcHJvdG8kMi5hc0hvdXJzICAgICAgICA9IGFzSG91cnM7XG4gICAgcHJvdG8kMi5hc0RheXMgICAgICAgICA9IGFzRGF5cztcbiAgICBwcm90byQyLmFzV2Vla3MgICAgICAgID0gYXNXZWVrcztcbiAgICBwcm90byQyLmFzTW9udGhzICAgICAgID0gYXNNb250aHM7XG4gICAgcHJvdG8kMi5hc1llYXJzICAgICAgICA9IGFzWWVhcnM7XG4gICAgcHJvdG8kMi52YWx1ZU9mICAgICAgICA9IHZhbHVlT2YkMTtcbiAgICBwcm90byQyLl9idWJibGUgICAgICAgID0gYnViYmxlO1xuICAgIHByb3RvJDIuY2xvbmUgICAgICAgICAgPSBjbG9uZSQxO1xuICAgIHByb3RvJDIuZ2V0ICAgICAgICAgICAgPSBnZXQkMjtcbiAgICBwcm90byQyLm1pbGxpc2Vjb25kcyAgID0gbWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuc2Vjb25kcyAgICAgICAgPSBzZWNvbmRzO1xuICAgIHByb3RvJDIubWludXRlcyAgICAgICAgPSBtaW51dGVzO1xuICAgIHByb3RvJDIuaG91cnMgICAgICAgICAgPSBob3VycztcbiAgICBwcm90byQyLmRheXMgICAgICAgICAgID0gZGF5cztcbiAgICBwcm90byQyLndlZWtzICAgICAgICAgID0gd2Vla3M7XG4gICAgcHJvdG8kMi5tb250aHMgICAgICAgICA9IG1vbnRocztcbiAgICBwcm90byQyLnllYXJzICAgICAgICAgID0geWVhcnM7XG4gICAgcHJvdG8kMi5odW1hbml6ZSAgICAgICA9IGh1bWFuaXplO1xuICAgIHByb3RvJDIudG9JU09TdHJpbmcgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIudG9TdHJpbmcgICAgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIudG9KU09OICAgICAgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIubG9jYWxlICAgICAgICAgPSBsb2NhbGU7XG4gICAgcHJvdG8kMi5sb2NhbGVEYXRhICAgICA9IGxvY2FsZURhdGE7XG5cbiAgICBwcm90byQyLnRvSXNvU3RyaW5nID0gZGVwcmVjYXRlKCd0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKScsIHRvSVNPU3RyaW5nJDEpO1xuICAgIHByb3RvJDIubGFuZyA9IGxhbmc7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWCcsIDAsIDAsICd1bml4Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3gnLCAwLCAwLCAndmFsdWVPZicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigneCcsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdYJywgbWF0Y2hUaW1lc3RhbXApO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUocGFyc2VGbG9hdChpbnB1dCwgMTApICogMTAwMCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbigneCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSh0b0ludChpbnB1dCkpO1xuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG5cbiAgICBob29rcy52ZXJzaW9uID0gJzIuMjIuMic7XG5cbiAgICBzZXRIb29rQ2FsbGJhY2soY3JlYXRlTG9jYWwpO1xuXG4gICAgaG9va3MuZm4gICAgICAgICAgICAgICAgICAgID0gcHJvdG87XG4gICAgaG9va3MubWluICAgICAgICAgICAgICAgICAgID0gbWluO1xuICAgIGhvb2tzLm1heCAgICAgICAgICAgICAgICAgICA9IG1heDtcbiAgICBob29rcy5ub3cgICAgICAgICAgICAgICAgICAgPSBub3c7XG4gICAgaG9va3MudXRjICAgICAgICAgICAgICAgICAgID0gY3JlYXRlVVRDO1xuICAgIGhvb2tzLnVuaXggICAgICAgICAgICAgICAgICA9IGNyZWF0ZVVuaXg7XG4gICAgaG9va3MubW9udGhzICAgICAgICAgICAgICAgID0gbGlzdE1vbnRocztcbiAgICBob29rcy5pc0RhdGUgICAgICAgICAgICAgICAgPSBpc0RhdGU7XG4gICAgaG9va3MubG9jYWxlICAgICAgICAgICAgICAgID0gZ2V0U2V0R2xvYmFsTG9jYWxlO1xuICAgIGhvb2tzLmludmFsaWQgICAgICAgICAgICAgICA9IGNyZWF0ZUludmFsaWQ7XG4gICAgaG9va3MuZHVyYXRpb24gICAgICAgICAgICAgID0gY3JlYXRlRHVyYXRpb247XG4gICAgaG9va3MuaXNNb21lbnQgICAgICAgICAgICAgID0gaXNNb21lbnQ7XG4gICAgaG9va3Mud2Vla2RheXMgICAgICAgICAgICAgID0gbGlzdFdlZWtkYXlzO1xuICAgIGhvb2tzLnBhcnNlWm9uZSAgICAgICAgICAgICA9IGNyZWF0ZUluWm9uZTtcbiAgICBob29rcy5sb2NhbGVEYXRhICAgICAgICAgICAgPSBnZXRMb2NhbGU7XG4gICAgaG9va3MuaXNEdXJhdGlvbiAgICAgICAgICAgID0gaXNEdXJhdGlvbjtcbiAgICBob29rcy5tb250aHNTaG9ydCAgICAgICAgICAgPSBsaXN0TW9udGhzU2hvcnQ7XG4gICAgaG9va3Mud2Vla2RheXNNaW4gICAgICAgICAgID0gbGlzdFdlZWtkYXlzTWluO1xuICAgIGhvb2tzLmRlZmluZUxvY2FsZSAgICAgICAgICA9IGRlZmluZUxvY2FsZTtcbiAgICBob29rcy51cGRhdGVMb2NhbGUgICAgICAgICAgPSB1cGRhdGVMb2NhbGU7XG4gICAgaG9va3MubG9jYWxlcyAgICAgICAgICAgICAgID0gbGlzdExvY2FsZXM7XG4gICAgaG9va3Mud2Vla2RheXNTaG9ydCAgICAgICAgID0gbGlzdFdlZWtkYXlzU2hvcnQ7XG4gICAgaG9va3Mubm9ybWFsaXplVW5pdHMgICAgICAgID0gbm9ybWFsaXplVW5pdHM7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lUm91bmRpbmcgID0gZ2V0U2V0UmVsYXRpdmVUaW1lUm91bmRpbmc7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lVGhyZXNob2xkID0gZ2V0U2V0UmVsYXRpdmVUaW1lVGhyZXNob2xkO1xuICAgIGhvb2tzLmNhbGVuZGFyRm9ybWF0ICAgICAgICA9IGdldENhbGVuZGFyRm9ybWF0O1xuICAgIGhvb2tzLnByb3RvdHlwZSAgICAgICAgICAgICA9IHByb3RvO1xuXG4gICAgLy8gY3VycmVudGx5IEhUTUw1IGlucHV0IHR5cGUgb25seSBzdXBwb3J0cyAyNC1ob3VyIGZvcm1hdHNcbiAgICBob29rcy5IVE1MNV9GTVQgPSB7XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMOiAnWVlZWS1NTS1ERFRISDptbScsICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiAnWVlZWS1NTS1ERFRISDptbTpzcycsICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9NUzogJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJywgICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgREFURTogJ1lZWVktTU0tREQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJkYXRlXCIgLz5cbiAgICAgICAgVElNRTogJ0hIOm1tJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgLz5cbiAgICAgICAgVElNRV9TRUNPTkRTOiAnSEg6bW06c3MnLCAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBUSU1FX01TOiAnSEg6bW06c3MuU1NTJywgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMC4wMDFcIiAvPlxuICAgICAgICBXRUVLOiAnWVlZWS1bV11XVycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cIndlZWtcIiAvPlxuICAgICAgICBNT05USDogJ1lZWVktTU0nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cIm1vbnRoXCIgLz5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGhvb2tzO1xuXG59KSkpOyIsIi8qIVxuICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My4zLjFcbiAqIGh0dHBzOi8vanF1ZXJ5LmNvbS9cbiAqXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE4LTAxLTIwVDE3OjI0WlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsIGZhY3RvcnkgKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0aWYgKCB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2Bcblx0XHQvLyBpcyBwcmVzZW50LCBleGVjdXRlIHRoZSBmYWN0b3J5IGFuZCBnZXQgalF1ZXJ5LlxuXHRcdC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1lbnRgXG5cdFx0Ly8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuXG5cdFx0Ly8gVGhpcyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCBgd2luZG93YC5cblx0XHQvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpKHdpbmRvdyk7XG5cdFx0Ly8gU2VlIHRpY2tldCAjMTQ1NDkgZm9yIG1vcmUgaW5mby5cblx0XHRtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/XG5cdFx0XHRmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6XG5cdFx0XHRmdW5jdGlvbiggdyApIHtcblx0XHRcdFx0aWYgKCAhdy5kb2N1bWVudCApIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhY3RvcnkoIHcgKTtcblx0XHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeSggZ2xvYmFsICk7XG5cdH1cblxuLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXRcbn0gKSggdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5kb3csIG5vR2xvYmFsICkge1xuXG4vLyBFZGdlIDw9IDEyIC0gMTMrLCBGaXJlZm94IDw9MTggLSA0NSssIElFIDEwIC0gMTEsIFNhZmFyaSA1LjEgLSA5KywgaU9TIDYgLSA5LjFcbi8vIHRocm93IGV4Y2VwdGlvbnMgd2hlbiBub24tc3RyaWN0IGNvZGUgKGUuZy4sIEFTUC5ORVQgNC41KSBhY2Nlc3NlcyBzdHJpY3QgbW9kZVxuLy8gYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIgKHRyYWMtMTMzMzUpLiBCdXQgYXMgb2YgalF1ZXJ5IDMuMCAoMjAxNiksIHN0cmljdCBtb2RlIHNob3VsZCBiZSBjb21tb25cbi8vIGVub3VnaCB0aGF0IGFsbCBzdWNoIGF0dGVtcHRzIGFyZSBndWFyZGVkIGluIGEgdHJ5IGJsb2NrLlxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBhcnIgPSBbXTtcblxudmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuXG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cbnZhciBzbGljZSA9IGFyci5zbGljZTtcblxudmFyIGNvbmNhdCA9IGFyci5jb25jYXQ7XG5cbnZhciBwdXNoID0gYXJyLnB1c2g7XG5cbnZhciBpbmRleE9mID0gYXJyLmluZGV4T2Y7XG5cbnZhciBjbGFzczJ0eXBlID0ge307XG5cbnZhciB0b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7XG5cbnZhciBoYXNPd24gPSBjbGFzczJ0eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgZm5Ub1N0cmluZyA9IGhhc093bi50b1N0cmluZztcblxudmFyIE9iamVjdEZ1bmN0aW9uU3RyaW5nID0gZm5Ub1N0cmluZy5jYWxsKCBPYmplY3QgKTtcblxudmFyIHN1cHBvcnQgPSB7fTtcblxudmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKCBvYmogKSB7XG5cbiAgICAgIC8vIFN1cHBvcnQ6IENocm9tZSA8PTU3LCBGaXJlZm94IDw9NTJcbiAgICAgIC8vIEluIHNvbWUgYnJvd3NlcnMsIHR5cGVvZiByZXR1cm5zIFwiZnVuY3Rpb25cIiBmb3IgSFRNTCA8b2JqZWN0PiBlbGVtZW50c1xuICAgICAgLy8gKGkuZS4sIGB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvYmplY3RcIiApID09PSBcImZ1bmN0aW9uXCJgKS5cbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2xhc3NpZnkgKmFueSogRE9NIG5vZGUgYXMgYSBmdW5jdGlvbi5cbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iai5ub2RlVHlwZSAhPT0gXCJudW1iZXJcIjtcbiAgfTtcblxuXG52YXIgaXNXaW5kb3cgPSBmdW5jdGlvbiBpc1dpbmRvdyggb2JqICkge1xuXHRcdHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7XG5cdH07XG5cblxuXG5cblx0dmFyIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgPSB7XG5cdFx0dHlwZTogdHJ1ZSxcblx0XHRzcmM6IHRydWUsXG5cdFx0bm9Nb2R1bGU6IHRydWVcblx0fTtcblxuXHRmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBkb2MsIG5vZGUgKSB7XG5cdFx0ZG9jID0gZG9jIHx8IGRvY3VtZW50O1xuXG5cdFx0dmFyIGksXG5cdFx0XHRzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCggXCJzY3JpcHRcIiApO1xuXG5cdFx0c2NyaXB0LnRleHQgPSBjb2RlO1xuXHRcdGlmICggbm9kZSApIHtcblx0XHRcdGZvciAoIGkgaW4gcHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyApIHtcblx0XHRcdFx0aWYgKCBub2RlWyBpIF0gKSB7XG5cdFx0XHRcdFx0c2NyaXB0WyBpIF0gPSBub2RlWyBpIF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZG9jLmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdCApLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApO1xuXHR9XG5cblxuZnVuY3Rpb24gdG9UeXBlKCBvYmogKSB7XG5cdGlmICggb2JqID09IG51bGwgKSB7XG5cdFx0cmV0dXJuIG9iaiArIFwiXCI7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cClcblx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiID9cblx0XHRjbGFzczJ0eXBlWyB0b1N0cmluZy5jYWxsKCBvYmogKSBdIHx8IFwib2JqZWN0XCIgOlxuXHRcdHR5cGVvZiBvYmo7XG59XG4vKiBnbG9iYWwgU3ltYm9sICovXG4vLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuZXNsaW50cmMuanNvbiB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2JhbFxuLy8gdW5ndWFyZGVkIGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmluZSBnbG9iYWwgb25seSBmb3IgdGhpcyBtb2R1bGVcblxuXG5cbnZhclxuXHR2ZXJzaW9uID0gXCIzLjMuMVwiLFxuXG5cdC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblxuXHRcdC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJ1xuXHRcdC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQpXG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG5cdHJ0cmltID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nO1xuXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xuXG5cdC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWRcblx0anF1ZXJ5OiB2ZXJzaW9uLFxuXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXG5cdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdGlmICggbnVtID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRyZXR1cm4gbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXTtcblx0fSxcblxuXHQvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrXG5cdC8vIChyZXR1cm5pbmcgdGhlIG5ldyBtYXRjaGVkIGVsZW1lbnQgc2V0KVxuXHRwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblxuXHRcdC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0XG5cdFx0dmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApO1xuXG5cdFx0Ly8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSlcblx0XHRyZXQucHJldk9iamVjdCA9IHRoaXM7XG5cblx0XHQvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldFxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0Ly8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cblx0ZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2sgKTtcblx0fSxcblxuXHRtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRzbGljZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTtcblx0fSxcblxuXHRmaXJzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIDAgKTtcblx0fSxcblxuXHRsYXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcblx0fSxcblxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XG5cdFx0dmFyIGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0aiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzWyBqIF0gXSA6IFtdICk7XG5cdH0sXG5cblx0ZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTtcblx0fSxcblxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXG5cdC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLlxuXHRwdXNoOiBwdXNoLFxuXHRzb3J0OiBhcnIuc29ydCxcblx0c3BsaWNlOiBhcnIuc3BsaWNlXG59O1xuXG5qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyAwIF0gfHwge30sXG5cdFx0aSA9IDEsXG5cdFx0bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRkZWVwID0gZmFsc2U7XG5cblx0Ly8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cblx0XHQvLyBTa2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307XG5cdFx0aSsrO1xuXHR9XG5cblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG5cdGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblxuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHtcblxuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRzcmMgPSB0YXJnZXRbIG5hbWUgXTtcblx0XHRcdFx0Y29weSA9IG9wdGlvbnNbIG5hbWUgXTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICggdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fFxuXHRcdFx0XHRcdCggY29weUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCBjb3B5ICkgKSApICkge1xuXG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSApIHtcblx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBBcnJheS5pc0FycmF5KCBzcmMgKSA/IHNyYyA6IFtdO1xuXG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBzcmMgKSA/IHNyYyA6IHt9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcblxuXHRcdFx0XHQvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGNvcHk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZVxuXHRleHBhbmRvOiBcImpRdWVyeVwiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cXEQvZywgXCJcIiApLFxuXG5cdC8vIEFzc3VtZSBqUXVlcnkgaXMgcmVhZHkgd2l0aG91dCB0aGUgcmVhZHkgbW9kdWxlXG5cdGlzUmVhZHk6IHRydWUsXG5cblx0ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCBtc2cgKTtcblx0fSxcblxuXHRub29wOiBmdW5jdGlvbigpIHt9LFxuXG5cdGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIHByb3RvLCBDdG9yO1xuXG5cdFx0Ly8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzXG5cdFx0Ly8gVXNlIHRvU3RyaW5nIGluc3RlYWQgb2YgalF1ZXJ5LnR5cGUgdG8gY2F0Y2ggaG9zdCBvYmplY3RzXG5cdFx0aWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSBcIltvYmplY3QgT2JqZWN0XVwiICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHByb3RvID0gZ2V0UHJvdG8oIG9iaiApO1xuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwgYE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpblxuXHRcdGlmICggIXByb3RvICkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3RlZCBieSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb25cblx0XHRDdG9yID0gaGFzT3duLmNhbGwoIHByb3RvLCBcImNvbnN0cnVjdG9yXCIgKSAmJiBwcm90by5jb25zdHJ1Y3Rvcjtcblx0XHRyZXR1cm4gdHlwZW9mIEN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBmblRvU3RyaW5nLmNhbGwoIEN0b3IgKSA9PT0gT2JqZWN0RnVuY3Rpb25TdHJpbmc7XG5cdH0sXG5cblx0aXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblxuXHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vlcy82MTI1XG5cdFx0dmFyIG5hbWU7XG5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Ly8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHRcblx0Z2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7XG5cdFx0RE9NRXZhbCggY29kZSApO1xuXHR9LFxuXG5cdGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkge1xuXHRcdHZhciBsZW5ndGgsIGkgPSAwO1xuXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggb2JqICkgKSB7XG5cdFx0XHRsZW5ndGggPSBvYmoubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gb2JqICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvYmo7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5XG5cdHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdHJldHVybiB0ZXh0ID09IG51bGwgP1xuXHRcdFx0XCJcIiA6XG5cdFx0XHQoIHRleHQgKyBcIlwiICkucmVwbGFjZSggcnRyaW0sIFwiXCIgKTtcblx0fSxcblxuXHQvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1ha2VBcnJheTogZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHtcblx0XHR2YXIgcmV0ID0gcmVzdWx0cyB8fCBbXTtcblxuXHRcdGlmICggYXJyICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3QoIGFyciApICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggcmV0LFxuXHRcdFx0XHRcdHR5cGVvZiBhcnIgPT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFsgYXJyIF0gOiBhcnJcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guY2FsbCggcmV0LCBhcnIgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdGluQXJyYXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7XG5cdFx0cmV0dXJuIGFyciA9PSBudWxsID8gLTEgOiBpbmRleE9mLmNhbGwoIGFyciwgZWxlbSwgaSApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdG1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHtcblx0XHR2YXIgbGVuID0gK3NlY29uZC5sZW5ndGgsXG5cdFx0XHRqID0gMCxcblx0XHRcdGkgPSBmaXJzdC5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdO1xuXHRcdH1cblxuXHRcdGZpcnN0Lmxlbmd0aCA9IGk7XG5cblx0XHRyZXR1cm4gZmlyc3Q7XG5cdH0sXG5cblx0Z3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkge1xuXHRcdHZhciBjYWxsYmFja0ludmVyc2UsXG5cdFx0XHRtYXRjaGVzID0gW10sXG5cdFx0XHRpID0gMCxcblx0XHRcdGxlbmd0aCA9IGVsZW1zLmxlbmd0aCxcblx0XHRcdGNhbGxiYWNrRXhwZWN0ID0gIWludmVydDtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXNcblx0XHQvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvblxuXHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0Y2FsbGJhY2tJbnZlcnNlID0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7XG5cdFx0XHRpZiAoIGNhbGxiYWNrSW52ZXJzZSAhPT0gY2FsbGJhY2tFeHBlY3QgKSB7XG5cdFx0XHRcdG1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBtYXRjaGVzO1xuXHR9LFxuXG5cdC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHtcblx0XHR2YXIgbGVuZ3RoLCB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0cmV0ID0gW107XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlc1xuXHRcdGlmICggaXNBcnJheUxpa2UoIGVsZW1zICkgKSB7XG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGg7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0LFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIGVsZW1zICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdFx0cmV0dXJuIGNvbmNhdC5hcHBseSggW10sIHJldCApO1xuXHR9LFxuXG5cdC8vIEEgZ2xvYmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0c1xuXHRndWlkOiAxLFxuXG5cdC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpclxuXHQvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0LlxuXHRzdXBwb3J0OiBzdXBwb3J0XG59ICk7XG5cbmlmICggdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRqUXVlcnkuZm5bIFN5bWJvbC5pdGVyYXRvciBdID0gYXJyWyBTeW1ib2wuaXRlcmF0b3IgXTtcbn1cblxuLy8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwXG5qUXVlcnkuZWFjaCggXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbFwiLnNwbGl0KCBcIiBcIiApLFxuZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdGNsYXNzMnR5cGVbIFwiW29iamVjdCBcIiArIG5hbWUgKyBcIl1cIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xufSApO1xuXG5mdW5jdGlvbiBpc0FycmF5TGlrZSggb2JqICkge1xuXG5cdC8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVwcm9kdWNpYmxlIGluIHNpbXVsYXRvcilcblx0Ly8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KVxuXHQvLyBoYXNPd24gaXNuJ3QgdXNlZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXNcblx0Ly8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRVxuXHR2YXIgbGVuZ3RoID0gISFvYmogJiYgXCJsZW5ndGhcIiBpbiBvYmogJiYgb2JqLmxlbmd0aCxcblx0XHR0eXBlID0gdG9UeXBlKCBvYmogKTtcblxuXHRpZiAoIGlzRnVuY3Rpb24oIG9iaiApIHx8IGlzV2luZG93KCBvYmogKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4gdHlwZSA9PT0gXCJhcnJheVwiIHx8IGxlbmd0aCA9PT0gMCB8fFxuXHRcdHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7XG59XG52YXIgU2l6emxlID1cbi8qIVxuICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgdjIuMy4zXG4gKiBodHRwczovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICogRGF0ZTogMjAxNi0wOC0wOFxuICovXG4oZnVuY3Rpb24oIHdpbmRvdyApIHtcblxudmFyIGksXG5cdHN1cHBvcnQsXG5cdEV4cHIsXG5cdGdldFRleHQsXG5cdGlzWE1MLFxuXHR0b2tlbml6ZSxcblx0Y29tcGlsZSxcblx0c2VsZWN0LFxuXHRvdXRlcm1vc3RDb250ZXh0LFxuXHRzb3J0SW5wdXQsXG5cdGhhc0R1cGxpY2F0ZSxcblxuXHQvLyBMb2NhbCBkb2N1bWVudCB2YXJzXG5cdHNldERvY3VtZW50LFxuXHRkb2N1bWVudCxcblx0ZG9jRWxlbSxcblx0ZG9jdW1lbnRJc0hUTUwsXG5cdHJidWdneVFTQSxcblx0cmJ1Z2d5TWF0Y2hlcyxcblx0bWF0Y2hlcyxcblx0Y29udGFpbnMsXG5cblx0Ly8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YVxuXHRleHBhbmRvID0gXCJzaXp6bGVcIiArIDEgKiBuZXcgRGF0ZSgpLFxuXHRwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsXG5cdGRpcnJ1bnMgPSAwLFxuXHRkb25lID0gMCxcblx0Y2xhc3NDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0c29ydE9yZGVyID0gZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH0sXG5cblx0Ly8gSW5zdGFuY2UgbWV0aG9kc1xuXHRoYXNPd24gPSAoe30pLmhhc093blByb3BlcnR5LFxuXHRhcnIgPSBbXSxcblx0cG9wID0gYXJyLnBvcCxcblx0cHVzaF9uYXRpdmUgPSBhcnIucHVzaCxcblx0cHVzaCA9IGFyci5wdXNoLFxuXHRzbGljZSA9IGFyci5zbGljZSxcblx0Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZlXG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzVcblx0aW5kZXhPZiA9IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdGxlbiA9IGxpc3QubGVuZ3RoO1xuXHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0aWYgKCBsaXN0W2ldID09PSBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIC0xO1xuXHR9LFxuXG5cdGJvb2xlYW5zID0gXCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLFxuXG5cdC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnNcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllclxuXHRpZGVudGlmaWVyID0gXCIoPzpcXFxcXFxcXC58W1xcXFx3LV18W15cXDAtXFxcXHhhMF0pK1wiLFxuXG5cdC8vIEF0dHJpYnV0ZSBzZWxlY3RvcnM6IGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9yc1xuXHRhdHRyaWJ1dGVzID0gXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpXG5cdFx0XCIqKFsqXiR8IX5dPz0pXCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBcIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1cmUgNF1cIlxuXHRcdFwiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIgKyBpZGVudGlmaWVyICsgXCIpKXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIipcXFxcXVwiLFxuXG5cdHBzZXVkb3MgPSBcIjooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XFxcXCgoXCIgK1xuXHRcdC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6XG5cdFx0Ly8gMS4gcXVvdGVkIChjYXB0dXJlIDM7IGNhcHR1cmUgNCBvciBjYXB0dXJlIDUpXG5cdFx0XCIoJygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwiKXxcIiArXG5cdFx0Ly8gMi4gc2ltcGxlIChjYXB0dXJlIDYpXG5cdFx0XCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIgKyBhdHRyaWJ1dGVzICsgXCIpKil8XCIgK1xuXHRcdC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMilcblx0XHRcIi4qXCIgK1xuXHRcdFwiKVxcXFwpfClcIixcblxuXHQvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyXG5cdHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArIFwiK1wiLCBcImdcIiApLFxuXHRydHJpbSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArIHdoaXRlc3BhY2UgKyBcIiskXCIsIFwiZ1wiICksXG5cblx0cmNvbW1hID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqLFwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cdHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKihbPit+XXxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXG5cdHJhdHRyaWJ1dGVRdW90ZXMgPSBuZXcgUmVnRXhwKCBcIj1cIiArIHdoaXRlc3BhY2UgKyBcIiooW15cXFxcXSdcXFwiXSo/KVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFxdXCIsIFwiZ1wiICksXG5cblx0cnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSxcblx0cmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCBcIl5cIiArIGlkZW50aWZpZXIgKyBcIiRcIiApLFxuXG5cdG1hdGNoRXhwciA9IHtcblx0XHRcIklEXCI6IG5ldyBSZWdFeHAoIFwiXiMoXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIkNMQVNTXCI6IG5ldyBSZWdFeHAoIFwiXlxcXFwuKFwiICsgaWRlbnRpZmllciArIFwiKVwiICksXG5cdFx0XCJUQUdcIjogbmV3IFJlZ0V4cCggXCJeKFwiICsgaWRlbnRpZmllciArIFwifFsqXSlcIiApLFxuXHRcdFwiQVRUUlwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIGF0dHJpYnV0ZXMgKSxcblx0XHRcIlBTRVVET1wiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHBzZXVkb3MgKSxcblx0XHRcIkNISUxEXCI6IG5ldyBSZWdFeHAoIFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKGV2ZW58b2RkfCgoWystXXwpKFxcXFxkKilufClcIiArIHdoaXRlc3BhY2UgKyBcIiooPzooWystXXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihcXFxcZCspfCkpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KVwiLCBcImlcIiApLFxuXHRcdFwiYm9vbFwiOiBuZXcgUmVnRXhwKCBcIl4oPzpcIiArIGJvb2xlYW5zICsgXCIpJFwiLCBcImlcIiApLFxuXHRcdC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKVxuXHRcdC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGBcblx0XHRcIm5lZWRzQ29udGV4dFwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcXFwoXCIgK1xuXHRcdFx0d2hpdGVzcGFjZSArIFwiKigoPzotXFxcXGQpP1xcXFxkKilcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpKD89W14tXXwkKVwiLCBcImlcIiApXG5cdH0sXG5cblx0cmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJoZWFkZXIgPSAvXmhcXGQkL2ksXG5cblx0cm5hdGl2ZSA9IC9eW157XStcXHtcXHMqXFxbbmF0aXZlIFxcdy8sXG5cblx0Ly8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2YWJsZSBJRCBvciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzXG5cdHJxdWlja0V4cHIgPSAvXig/OiMoW1xcdy1dKyl8KFxcdyspfFxcLihbXFx3LV0rKSkkLyxcblxuXHRyc2libGluZyA9IC9bK35dLyxcblxuXHQvLyBDU1MgZXNjYXBlc1xuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzXG5cdHJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoIFwiXFxcXFxcXFwoW1xcXFxkYS1mXXsxLDZ9XCIgKyB3aGl0ZXNwYWNlICsgXCI/fChcIiArIHdoaXRlc3BhY2UgKyBcIil8LilcIiwgXCJpZ1wiICksXG5cdGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSApIHtcblx0XHR2YXIgaGlnaCA9IFwiMHhcIiArIGVzY2FwZWQgLSAweDEwMDAwO1xuXHRcdC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50XG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveDwyNFxuXHRcdC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgK1wiMHhcIlxuXHRcdHJldHVybiBoaWdoICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID9cblx0XHRcdGVzY2FwZWQgOlxuXHRcdFx0aGlnaCA8IDAgP1xuXHRcdFx0XHQvLyBCTVAgY29kZXBvaW50XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOlxuXHRcdFx0XHQvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50IChzdXJyb2dhdGUgcGFpcilcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7XG5cdH0sXG5cblx0Ly8gQ1NTIHN0cmluZy9pZGVudGlmaWVyIHNlcmlhbGl6YXRpb25cblx0Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRpb21zXG5cdHJjc3Nlc2NhcGUgPSAvKFtcXDAtXFx4MWZcXHg3Zl18Xi0/XFxkKXxeLSR8W15cXDAtXFx4MWZcXHg3Zi1cXHVGRkZGXFx3LV0vZyxcblx0ZmNzc2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwgYXNDb2RlUG9pbnQgKSB7XG5cdFx0aWYgKCBhc0NvZGVQb2ludCApIHtcblxuXHRcdFx0Ly8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSXG5cdFx0XHRpZiAoIGNoID09PSBcIlxcMFwiICkge1xuXHRcdFx0XHRyZXR1cm4gXCJcXHVGRkZEXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgKGRlcGVuZGVudCB1cG9uIHBvc2l0aW9uKSBudW1iZXJzIGdldCBlc2NhcGVkIGFzIGNvZGUgcG9pbnRzXG5cdFx0XHRyZXR1cm4gY2guc2xpY2UoIDAsIC0xICkgKyBcIlxcXFxcIiArIGNoLmNoYXJDb2RlQXQoIGNoLmxlbmd0aCAtIDEgKS50b1N0cmluZyggMTYgKSArIFwiIFwiO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyIHBvdGVudGlhbGx5LXNwZWNpYWwgQVNDSUkgY2hhcmFjdGVycyBnZXQgYmFja3NsYXNoLWVzY2FwZWRcblx0XHRyZXR1cm4gXCJcXFxcXCIgKyBjaDtcblx0fSxcblxuXHQvLyBVc2VkIGZvciBpZnJhbWVzXG5cdC8vIFNlZSBzZXREb2N1bWVudCgpXG5cdC8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhIFwiUGVybWlzc2lvbiBEZW5pZWRcIlxuXHQvLyBlcnJvciBpbiBJRVxuXHR1bmxvYWRIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG5cdFx0c2V0RG9jdW1lbnQoKTtcblx0fSxcblxuXHRkaXNhYmxlZEFuY2VzdG9yID0gYWRkQ29tYmluYXRvcihcblx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVlICYmIChcImZvcm1cIiBpbiBlbGVtIHx8IFwibGFiZWxcIiBpbiBlbGVtKTtcblx0XHR9LFxuXHRcdHsgZGlyOiBcInBhcmVudE5vZGVcIiwgbmV4dDogXCJsZWdlbmRcIiB9XG5cdCk7XG5cbi8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCApXG50cnkge1xuXHRwdXNoLmFwcGx5KFxuXHRcdChhcnIgPSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyApKSxcblx0XHRwcmVmZXJyZWREb2MuY2hpbGROb2Rlc1xuXHQpO1xuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMFxuXHQvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5XG5cdGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7XG59IGNhdGNoICggZSApIHtcblx0cHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggP1xuXG5cdFx0Ly8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGVcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHRwdXNoX25hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTtcblx0XHR9IDpcblxuXHRcdC8vIFN1cHBvcnQ6IElFPDlcblx0XHQvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5XG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0dmFyIGogPSB0YXJnZXQubGVuZ3RoLFxuXHRcdFx0XHRpID0gMDtcblx0XHRcdC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aFxuXHRcdFx0d2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsrXSkgKSB7fVxuXHRcdFx0dGFyZ2V0Lmxlbmd0aCA9IGogLSAxO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3IsXG5cdFx0bmV3Q29udGV4dCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LFxuXG5cdFx0Ly8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudFxuXHRcdG5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5O1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3RvciBvciBjb250ZXh0XG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0Ly8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50c1xuXHRpZiAoICFzZWVkICkge1xuXG5cdFx0aWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IHByZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHtcblx0XHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdFx0fVxuXHRcdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdFx0aWYgKCBkb2N1bWVudElzSFRNTCApIHtcblxuXHRcdFx0Ly8gSWYgdGhlIHNlbGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhIFwiZ2V0KkJ5KlwiIERPTSBtZXRob2Rcblx0XHRcdC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0aGUgbWV0aG9kcyBkb24ndCBleGlzdClcblx0XHRcdGlmICggbm9kZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0Ly8gSUQgc2VsZWN0b3Jcblx0XHRcdFx0aWYgKCAobSA9IG1hdGNoWzFdKSApIHtcblxuXHRcdFx0XHRcdC8vIERvY3VtZW50IGNvbnRleHRcblx0XHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0XHRpZiAoIGVsZW0uaWQgPT09IG0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRWxlbWVudCBjb250ZXh0XG5cdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRpZiAoIG5ld0NvbnRleHQgJiYgKGVsZW0gPSBuZXdDb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICYmXG5cdFx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiZcblx0XHRcdFx0XHRcdFx0ZWxlbS5pZCA9PT0gbSApIHtcblxuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFR5cGUgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7XG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHRcdC8vIENsYXNzIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJlxuXHRcdFx0XHRcdGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlTZWxlY3RvckFsbFxuXHRcdFx0aWYgKCBzdXBwb3J0LnFzYSAmJlxuXHRcdFx0XHQhY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdICYmXG5cdFx0XHRcdCghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0aWYgKCBub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gY29udGV4dDtcblx0XHRcdFx0XHRuZXdTZWxlY3RvciA9IHNlbGVjdG9yO1xuXG5cdFx0XHRcdC8vIHFTQSBsb29rcyBvdXRzaWRlIEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudFxuXHRcdFx0XHQvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhpcyB3b3JrYXJvdW5kIHRlY2huaXF1ZVxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PThcblx0XHRcdFx0Ly8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHNcblx0XHRcdFx0fSBlbHNlIGlmICggY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHRcdFx0Ly8gQ2FwdHVyZSB0aGUgY29udGV4dCBJRCwgc2V0dGluZyBpdCBmaXJzdCBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRpZiAoIChuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggXCJpZFwiICkpICkge1xuXHRcdFx0XHRcdFx0bmlkID0gbmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgKG5pZCA9IGV4cGFuZG8pICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJlZml4IGV2ZXJ5IHNlbGVjdG9yIGluIHRoZSBsaXN0XG5cdFx0XHRcdFx0Z3JvdXBzID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0XHRcdFx0aSA9IGdyb3Vwcy5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRncm91cHNbaV0gPSBcIiNcIiArIG5pZCArIFwiIFwiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oIFwiLFwiICk7XG5cblx0XHRcdFx0XHQvLyBFeHBhbmQgY29udGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnNcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHxcblx0XHRcdFx0XHRcdGNvbnRleHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIG5ld1NlbGVjdG9yICkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0XHRuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yIClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9IGNhdGNoICggcXNhRXJyb3IgKSB7XG5cdFx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRcdGlmICggbmlkID09PSBleHBhbmRvICkge1xuXHRcdFx0XHRcdFx0XHRjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtmdW5jdGlvbihzdHJpbmcsIG9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cdFx0Ly8gVXNlIChrZXkgKyBcIiBcIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1Nylcblx0XHRpZiAoIGtleXMucHVzaCgga2V5ICsgXCIgXCIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XG5cdFx0XHQvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXNcblx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07XG5cdFx0fVxuXHRcdHJldHVybiAoY2FjaGVbIGtleSArIFwiIFwiIF0gPSB2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGFzc2VydCggZm4gKSB7XG5cdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiKTtcblxuXHR0cnkge1xuXHRcdHJldHVybiAhIWZuKCBlbCApO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGZpbmFsbHkge1xuXHRcdC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdFxuXHRcdGlmICggZWwucGFyZW50Tm9kZSApIHtcblx0XHRcdGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsICk7XG5cdFx0fVxuXHRcdC8vIHJlbGVhc2UgbWVtb3J5IGluIElFXG5cdFx0ZWwgPSBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyc1xuICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkXG4gKi9cbmZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7XG5cdHZhciBhcnIgPSBhdHRycy5zcGxpdChcInxcIiksXG5cdFx0aSA9IGFyci5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0RXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNpYmxpbmdzXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGFcbiAqIEBwYXJhbSB7RWxlbWVudH0gYlxuICogQHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiXG4gKi9cbmZ1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiApIHtcblx0dmFyIGN1ciA9IGIgJiYgYSxcblx0XHRkaWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0YS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7XG5cblx0Ly8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzXG5cdGlmICggZGlmZiApIHtcblx0XHRyZXR1cm4gZGlmZjtcblx0fVxuXG5cdC8vIENoZWNrIGlmIGIgZm9sbG93cyBhXG5cdGlmICggY3VyICkge1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7XG5cdFx0XHRpZiAoIGN1ciA9PT0gYiApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBhID8gMSA6IC0xO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0b25zXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gKG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciA6ZW5hYmxlZC86ZGlzYWJsZWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZGlzYWJsZWQgdHJ1ZSBmb3IgOmRpc2FibGVkOyBmYWxzZSBmb3IgOmVuYWJsZWRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGRpc2FibGVkICkge1xuXG5cdC8vIEtub3duIDpkaXNhYmxlZCBmYWxzZSBwb3NpdGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShuKzIpIDpjYW4tZGlzYWJsZVxuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBPbmx5IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWVuYWJsZWRcblx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1kaXNhYmxlZFxuXHRcdGlmICggXCJmb3JtXCIgaW4gZWxlbSApIHtcblxuXHRcdFx0Ly8gQ2hlY2sgZm9yIGluaGVyaXRlZCBkaXNhYmxlZG5lc3Mgb24gcmVsZXZhbnQgbm9uLWRpc2FibGVkIGVsZW1lbnRzOlxuXHRcdFx0Ly8gKiBsaXN0ZWQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgZmllbGRzZXRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjYXRlZ29yeS1saXN0ZWRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LWZlLWRpc2FibGVkXG5cdFx0XHQvLyAqIG9wdGlvbiBlbGVtZW50cyBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1vcHRpb24tZGlzYWJsZWRcblx0XHRcdC8vIEFsbCBzdWNoIGVsZW1lbnRzIGhhdmUgYSBcImZvcm1cIiBwcm9wZXJ0eS5cblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICYmIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdC8vIE9wdGlvbiBlbGVtZW50cyBkZWZlciB0byBhIHBhcmVudCBvcHRncm91cCBpZiBwcmVzZW50XG5cdFx0XHRcdGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0ucGFyZW50Tm9kZS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA2IC0gMTFcblx0XHRcdFx0Ly8gVXNlIHRoZSBpc0Rpc2FibGVkIHNob3J0Y3V0IHByb3BlcnR5IHRvIGNoZWNrIGZvciBkaXNhYmxlZCBmaWVsZHNldCBhbmNlc3RvcnNcblx0XHRcdFx0cmV0dXJuIGVsZW0uaXNEaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHxcblxuXHRcdFx0XHRcdC8vIFdoZXJlIHRoZXJlIGlzIG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5XG5cdFx0XHRcdFx0LyoganNoaW50IC1XMDE4ICovXG5cdFx0XHRcdFx0ZWxlbS5pc0Rpc2FibGVkICE9PSAhZGlzYWJsZWQgJiZcblx0XHRcdFx0XHRcdGRpc2FibGVkQW5jZXN0b3IoIGVsZW0gKSA9PT0gZGlzYWJsZWQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblxuXHRcdC8vIFRyeSB0byB3aW5ub3cgb3V0IGVsZW1lbnRzIHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgYmVmb3JlIHRydXN0aW5nIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eS5cblx0XHQvLyBTb21lIHZpY3RpbXMgZ2V0IGNhdWdodCBpbiBvdXIgbmV0IChsYWJlbCwgbGVnZW5kLCBtZW51LCB0cmFjayksIGJ1dCBpdCBzaG91bGRuJ3Rcblx0XHQvLyBldmVuIGV4aXN0IG9uIHRoZW0sIGxldCBhbG9uZSBoYXZlIGEgYm9vbGVhbiB2YWx1ZS5cblx0XHR9IGVsc2UgaWYgKCBcImxhYmVsXCIgaW4gZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHR9XG5cblx0XHQvLyBSZW1haW5pbmcgZWxlbWVudHMgYXJlIG5laXRoZXIgOmVuYWJsZWQgbm9yIDpkaXNhYmxlZFxuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIHBvc2l0aW9uYWxzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICovXG5mdW5jdGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmbiApIHtcblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggYXJndW1lbnQgKSB7XG5cdFx0YXJndW1lbnQgPSArYXJndW1lbnQ7XG5cdFx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdHZhciBqLFxuXHRcdFx0XHRtYXRjaEluZGV4ZXMgPSBmbiggW10sIHNlZWQubGVuZ3RoLCBhcmd1bWVudCApLFxuXHRcdFx0XHRpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDtcblxuXHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRleGVzXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSApIHtcblx0XHRcdFx0XHRzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkgYXMgYSBTaXp6bGUgY29udGV4dFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHRcbiAqIEByZXR1cm5zIHtFbGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhlcndpc2UgYSBmYWxzeSB2YWx1ZVxuICovXG5mdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCApIHtcblx0cmV0dXJuIGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29udGV4dDtcbn1cblxuLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVuY2VcbnN1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9O1xuXG4vKipcbiAqIERldGVjdHMgWE1MIG5vZGVzXG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudFxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZmIGVsZW0gaXMgYSBub24tSFRNTCBYTUwgbm9kZVxuICovXG5pc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHQvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0XG5cdC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMzKVxuXHR2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDtcblx0cmV0dXJuIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gXCJIVE1MXCIgOiBmYWxzZTtcbn07XG5cbi8qKlxuICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudFxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudFxuICovXG5zZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkge1xuXHR2YXIgaGFzQ29tcGFyZSwgc3ViV2luZG93LFxuXHRcdGRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYztcblxuXHQvLyBSZXR1cm4gZWFybHkgaWYgZG9jIGlzIGludmFsaWQgb3IgYWxyZWFkeSBzZWxlY3RlZFxuXHRpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuXHRcdHJldHVybiBkb2N1bWVudDtcblx0fVxuXG5cdC8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzXG5cdGRvY3VtZW50ID0gZG9jO1xuXHRkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXHRkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9jdW1lbnQgKTtcblxuXHQvLyBTdXBwb3J0OiBJRSA5LTExLCBFZGdlXG5cdC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1lbnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgXCJwZXJtaXNzaW9uIGRlbmllZFwiIGVycm9ycyAoalF1ZXJ5ICMxMzkzNilcblx0aWYgKCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmXG5cdFx0KHN1YldpbmRvdyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3KSAmJiBzdWJXaW5kb3cudG9wICE9PSBzdWJXaW5kb3cgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSAxMSwgRWRnZVxuXHRcdGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJ1bmxvYWRcIiwgdW5sb2FkSGFuZGxlciwgZmFsc2UgKTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMCBvbmx5XG5cdFx0fSBlbHNlIGlmICggc3ViV2luZG93LmF0dGFjaEV2ZW50ICkge1xuXHRcdFx0c3ViV2luZG93LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIHVubG9hZEhhbmRsZXIgKTtcblx0XHR9XG5cdH1cblxuXHQvKiBBdHRyaWJ1dGVzXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBTdXBwb3J0OiBJRTw4XG5cdC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJvcGVydGllc1xuXHQvLyAoZXhjZXB0aW5nIElFOCBib29sZWFucylcblx0c3VwcG9ydC5hdHRyaWJ1dGVzID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5jbGFzc05hbWUgPSBcImlcIjtcblx0XHRyZXR1cm4gIWVsLmdldEF0dHJpYnV0ZShcImNsYXNzTmFtZVwiKTtcblx0fSk7XG5cblx0LyogZ2V0RWxlbWVudChzKUJ5KlxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpIHJldHVybnMgb25seSBlbGVtZW50c1xuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudChcIlwiKSApO1xuXHRcdHJldHVybiAhZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gU3VwcG9ydDogSUU8OVxuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTtcblxuXHQvLyBTdXBwb3J0OiBJRTwxMFxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWVcblx0Ly8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQgbmFtZXMsXG5cdC8vIHNvIHVzZSBhIHJvdW5kYWJvdXQgZ2V0RWxlbWVudHNCeU5hbWUgdGVzdFxuXHRzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaWQgPSBleHBhbmRvO1xuXHRcdHJldHVybiAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBJRCBmaWx0ZXIgYW5kIGZpbmRcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maWx0ZXJbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXHRcdEV4cHIuZmluZFtcIklEXCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXHRcdFx0XHRyZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gIGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IFwidW5kZWZpbmVkXCIgJiZcblx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0cmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgNiAtIDcgb25seVxuXHRcdC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXRcblx0XHRFeHByLmZpbmRbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBub2RlLCBpLCBlbGVtcyxcblx0XHRcdFx0XHRlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHQvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZVxuXHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRmFsbCBiYWNrIG9uIGdldEVsZW1lbnRzQnlOYW1lXG5cdFx0XHRcdFx0ZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApO1xuXHRcdFx0XHRcdGkgPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtc1tpKytdKSApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIFsgZWxlbSBdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0Ly8gVGFnXG5cdEV4cHIuZmluZFtcIlRBR1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgP1xuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgZG9uJ3QgaGF2ZSBnRUJUTlxuXHRcdFx0fSBlbHNlIGlmICggc3VwcG9ydC5xc2EgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyApO1xuXHRcdFx0fVxuXHRcdH0gOlxuXG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHR0bXAgPSBbXSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b29cblx0XHRcdFx0cmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzXG5cdFx0XHRpZiAoIHRhZyA9PT0gXCIqXCIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdHRtcC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRtcDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdH07XG5cblx0Ly8gQ2xhc3Ncblx0RXhwci5maW5kW1wiQ0xBU1NcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29udGV4dCApIHtcblx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzc4XG5cdHJidWdneVFTQSA9IFtdO1xuXG5cdGlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkge1xuXHRcdC8vIEJ1aWxkIFFTQSByZWdleFxuXHRcdC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmlcblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTlcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxyXFxcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0aW9uXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbXNhbGxvd2NhcHR1cmVePScnXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlsqXiRdPVwiICsgd2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCBcInZhbHVlXCIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseVxuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbChcIltzZWxlY3RlZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKig/OnZhbHVlfFwiICsgYm9vbGVhbnMgKyBcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWU8MjksIEFuZHJvaWQ8NC40LCBTYWZhcmk8Ny4wKywgaU9TPDcuMCssIFBoYW50b21KUzwxLjkuOCtcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW2lkfj1cIiArIGV4cGFuZG8gKyBcIi1dXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwifj1cIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6Y2hlY2tlZFwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiOmNoZWNrZWRcIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4KywgaU9TIDgrXG5cdFx0XHQvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODUxXG5cdFx0XHQvLyBJbi1wYWdlIGBzZWxlY3RvciNpZCBzaWJsaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcImEjXCIgKyBleHBhbmRvICsgXCIrKlwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIi4jLitbK35dXCIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHNcblx0XHRcdC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5lckhUTUwgYXNzaWdubWVudFxuXHRcdFx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJoaWRkZW5cIiApO1xuXHRcdFx0ZWwuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJEXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGVcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIltuYW1lPWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwibmFtZVwiICsgd2hpdGVzcGFjZSArIFwiKlsqXiR8IX5dPz1cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGRiAzLjUgLSA6ZW5hYmxlZC86ZGlzYWJsZWQgYW5kIGhpZGRlbiBlbGVtZW50cyAoaGlkZGVuIGVsZW1lbnRzIGFyZSBzdGlsbCBlbmFibGVkKVxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdFx0XHQvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGlsZHJlbiBvZiBkaXNhYmxlZCBmaWVsZHNldHNcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiOmRpc2FibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvc1xuXHRcdFx0ZWwucXVlcnlTZWxlY3RvckFsbChcIiosOnhcIik7XG5cdFx0XHRyYnVnZ3lRU0EucHVzaChcIiwuKjpcIik7XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHxcblx0XHRkb2NFbGVtLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tc01hdGNoZXNTZWxlY3RvcikgKSkgKSB7XG5cblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZWwsIFwiKlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZWwsIFwiW3MhPScnXTp4XCIgKTtcblx0XHRcdHJidWdneU1hdGNoZXMucHVzaCggXCIhPVwiLCBwc2V1ZG9zICk7XG5cdFx0fSk7XG5cdH1cblxuXHRyYnVnZ3lRU0EgPSByYnVnZ3lRU0EubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKFwifFwiKSApO1xuXHRyYnVnZ3lNYXRjaGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKFwifFwiKSApO1xuXG5cdC8qIENvbnRhaW5zXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0aGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApO1xuXG5cdC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlclxuXHQvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmVcblx0Ly8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBpdHNlbGZcblx0Y29udGFpbnMgPSBoYXNDb21wYXJlIHx8IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb250YWlucyApID9cblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsXG5cdFx0XHRcdGJ1cCA9IGIgJiYgYi5wYXJlbnROb2RlO1xuXHRcdFx0cmV0dXJuIGEgPT09IGJ1cCB8fCAhISggYnVwICYmIGJ1cC5ub2RlVHlwZSA9PT0gMSAmJiAoXG5cdFx0XHRcdGFkb3duLmNvbnRhaW5zID9cblx0XHRcdFx0XHRhZG93bi5jb250YWlucyggYnVwICkgOlxuXHRcdFx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNlxuXHRcdFx0KSk7XG5cdFx0fSA6XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHRpZiAoIGIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkge1xuXHRcdFx0XHRcdGlmICggYiA9PT0gYSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cblx0LyogU29ydGluZ1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gRG9jdW1lbnQgb3JkZXIgc29ydGluZ1xuXHRzb3J0T3JkZXIgPSBoYXNDb21wYXJlID9cblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cblx0XHQvLyBGbGFnIGZvciBkdXBsaWNhdGUgcmVtb3ZhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHQvLyBTb3J0IG9uIG1ldGhvZCBleGlzdGVuY2UgaWYgb25seSBvbmUgaW5wdXQgaGFzIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uXG5cdFx0dmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO1xuXHRcdGlmICggY29tcGFyZSApIHtcblx0XHRcdHJldHVybiBjb21wYXJlO1xuXHRcdH1cblxuXHRcdC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnRcblx0XHRjb21wYXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgP1xuXHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkXG5cdFx0XHQxO1xuXG5cdFx0Ly8gRGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0aWYgKCBjb21wYXJlICYgMSB8fFxuXHRcdFx0KCFzdXBwb3J0LnNvcnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUpICkge1xuXG5cdFx0XHQvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1lbnRcblx0XHRcdGlmICggYSA9PT0gZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBiID09PSBkb2N1bWVudCB8fCBiLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGIpICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXJcblx0XHRcdHJldHVybiBzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxO1xuXHR9IDpcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0Ly8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdXAgPSBhLnBhcmVudE5vZGUsXG5cdFx0XHRidXAgPSBiLnBhcmVudE5vZGUsXG5cdFx0XHRhcCA9IFsgYSBdLFxuXHRcdFx0YnAgPSBbIGIgXTtcblxuXHRcdC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkXG5cdFx0aWYgKCAhYXVwIHx8ICFidXAgKSB7XG5cdFx0XHRyZXR1cm4gYSA9PT0gZG9jdW1lbnQgPyAtMSA6XG5cdFx0XHRcdGIgPT09IGRvY3VtZW50ID8gMSA6XG5cdFx0XHRcdGF1cCA/IC0xIDpcblx0XHRcdFx0YnVwID8gMSA6XG5cdFx0XHRcdHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblxuXHRcdC8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrXG5cdFx0fSBlbHNlIGlmICggYXVwID09PSBidXAgKSB7XG5cdFx0XHRyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb25cblx0XHRjdXIgPSBhO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGFwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblx0XHRjdXIgPSBiO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGJwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblxuXHRcdC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5XG5cdFx0d2hpbGUgKCBhcFtpXSA9PT0gYnBbaV0gKSB7XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGkgP1xuXHRcdFx0Ly8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yXG5cdFx0XHRzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0XG5cdFx0XHRhcFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOlxuXHRcdFx0YnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOlxuXHRcdFx0MDtcblx0fTtcblxuXHRyZXR1cm4gZG9jdW1lbnQ7XG59O1xuXG5TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHtcblx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTtcbn07XG5cblNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0Ly8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVjdG9ycyBhcmUgcXVvdGVkXG5cdGV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsIFwiPSckMSddXCIgKTtcblxuXHRpZiAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmXG5cdFx0IWNvbXBpbGVyQ2FjaGVbIGV4cHIgKyBcIiBcIiBdICYmXG5cdFx0KCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgKSAmJlxuXHRcdCggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHtcblxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgcmV0ID0gbWF0Y2hlcy5jYWxsKCBlbGVtLCBleHByICk7XG5cblx0XHRcdC8vIElFIDkncyBtYXRjaGVzU2VsZWN0b3IgcmV0dXJucyBmYWxzZSBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRcdGlmICggcmV0IHx8IHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggfHxcblx0XHRcdFx0XHQvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudFxuXHRcdFx0XHRcdC8vIGZyYWdtZW50IGluIElFIDlcblx0XHRcdFx0XHRlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHt9XG5cdH1cblxuXHRyZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwO1xufTtcblxuU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXHRyZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTtcbn07XG5cblNpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdHZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2VyQ2FzZSgpIF0sXG5cdFx0Ly8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpXG5cdFx0dmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0Zm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRNTCApIDpcblx0XHRcdHVuZGVmaW5lZDtcblxuXHRyZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgP1xuXHRcdHZhbCA6XG5cdFx0c3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDpcblx0XHRcdCh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xufTtcblxuU2l6emxlLmVzY2FwZSA9IGZ1bmN0aW9uKCBzZWwgKSB7XG5cdHJldHVybiAoc2VsICsgXCJcIikucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApO1xufTtcblxuU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHtcblx0dGhyb3cgbmV3IEVycm9yKCBcIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246IFwiICsgbXNnICk7XG59O1xuXG4vKipcbiAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzXG4gKi9cblNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7XG5cdHZhciBlbGVtLFxuXHRcdGR1cGxpY2F0ZXMgPSBbXSxcblx0XHRqID0gMCxcblx0XHRpID0gMDtcblxuXHQvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlXG5cdGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7XG5cdHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApO1xuXHRyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApO1xuXG5cdGlmICggaGFzRHVwbGljYXRlICkge1xuXHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0aWYgKCBlbGVtID09PSByZXN1bHRzWyBpIF0gKSB7XG5cdFx0XHRcdGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRyZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byByZWxlYXNlIG9iamVjdHNcblx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1XG5cdHNvcnRJbnB1dCA9IG51bGw7XG5cblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5vZGVzXG4gKiBAcGFyYW0ge0FycmF5fEVsZW1lbnR9IGVsZW1cbiAqL1xuZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBub2RlLFxuXHRcdHJldCA9IFwiXCIsXG5cdFx0aSA9IDAsXG5cdFx0bm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdGlmICggIW5vZGVUeXBlICkge1xuXHRcdC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG5cdFx0d2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkgKSB7XG5cdFx0XHQvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2Rlc1xuXHRcdFx0cmV0ICs9IGdldFRleHQoIG5vZGUgKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHtcblx0XHQvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzXG5cdFx0Ly8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9yIGNvbnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1Mylcblx0XHRpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFRyYXZlcnNlIGl0cyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdHJldCArPSBnZXRUZXh0KCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVmFsdWU7XG5cdH1cblx0Ly8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzXG5cblx0cmV0dXJuIHJldDtcbn07XG5cbkV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0ge1xuXG5cdC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlclxuXHRjYWNoZUxlbmd0aDogNTAsXG5cblx0Y3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sXG5cblx0bWF0Y2g6IG1hdGNoRXhwcixcblxuXHRhdHRySGFuZGxlOiB7fSxcblxuXHRmaW5kOiB7fSxcblxuXHRyZWxhdGl2ZToge1xuXHRcdFwiPlwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCIgXCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiB9LFxuXHRcdFwiK1wiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIn5cIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIgfVxuXHR9LFxuXG5cdHByZUZpbHRlcjoge1xuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkXG5cdFx0XHRtYXRjaFszXSA9ICggbWF0Y2hbM10gfHwgbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgXCJcIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdGlmICggbWF0Y2hbMl0gPT09IFwifj1cIiApIHtcblx0XHRcdFx0bWF0Y2hbM10gPSBcIiBcIiArIG1hdGNoWzNdICsgXCIgXCI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApO1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHJbXCJDSElMRFwiXVxuXHRcdFx0XHQxIHR5cGUgKG9ubHl8bnRofC4uLilcblx0XHRcdFx0MiB3aGF0IChjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHQzIGFyZ3VtZW50IChldmVufG9kZHxcXGQqfFxcZCpuKFsrLV1cXGQrKT98Li4uKVxuXHRcdFx0XHQ0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50IChbKy1dP1xcZCpufClcblx0XHRcdFx0NSBzaWduIG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ2IHggb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDcgc2lnbiBvZiB5LWNvbXBvbmVudFxuXHRcdFx0XHQ4IHkgb2YgeS1jb21wb25lbnRcblx0XHRcdCovXG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRcdGlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gXCJudGhcIiApIHtcblx0XHRcdFx0Ly8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnRcblx0XHRcdFx0aWYgKCAhbWF0Y2hbM10gKSB7XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxEXG5cdFx0XHRcdC8vIHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzFcblx0XHRcdFx0bWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVdICsgKG1hdGNoWzZdIHx8IDEpIDogMiAqICggbWF0Y2hbM10gPT09IFwiZXZlblwiIHx8IG1hdGNoWzNdID09PSBcIm9kZFwiICkgKTtcblx0XHRcdFx0bWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApO1xuXG5cdFx0XHQvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaDtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0dmFyIGV4Y2Vzcyxcblx0XHRcdFx0dW5xdW90ZWQgPSAhbWF0Y2hbNl0gJiYgbWF0Y2hbMl07XG5cblx0XHRcdGlmICggbWF0Y2hFeHByW1wiQ0hJTERcIl0udGVzdCggbWF0Y2hbMF0gKSApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzXG5cdFx0XHRpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRtYXRjaFsyXSA9IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCI7XG5cblx0XHRcdC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCB1bnF1b3RlZCAmJiBycHNldWRvLnRlc3QoIHVucXVvdGVkICkgJiZcblx0XHRcdFx0Ly8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSlcblx0XHRcdFx0KGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJlxuXHRcdFx0XHQvLyBhZHZhbmNlIHRvIHRoZSBuZXh0IGNsb3NpbmcgcGFyZW50aGVzaXNcblx0XHRcdFx0KGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoIFwiKVwiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCkgKSB7XG5cblx0XHRcdFx0Ly8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXhcblx0XHRcdFx0bWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHRcdG1hdGNoWzJdID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudClcblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApO1xuXHRcdH1cblx0fSxcblxuXHRmaWx0ZXI6IHtcblxuXHRcdFwiVEFHXCI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVjdG9yICkge1xuXHRcdFx0dmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gXCIqXCIgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0gOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lO1xuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNMQVNTXCI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7XG5cdFx0XHR2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArIFwiIFwiIF07XG5cblx0XHRcdHJldHVybiBwYXR0ZXJuIHx8XG5cdFx0XHRcdChwYXR0ZXJuID0gbmV3IFJlZ0V4cCggXCIoXnxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIGNsYXNzTmFtZSArIFwiKFwiICsgd2hpdGVzcGFjZSArIFwifCQpXCIgKSkgJiZcblx0XHRcdFx0Y2xhc3NDYWNoZSggY2xhc3NOYW1lLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09IFwic3RyaW5nXCIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBcInVuZGVmaW5lZFwiICYmIGVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgfHwgXCJcIiApO1xuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0XHRcdGlmICggcmVzdWx0ID09IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIiE9XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCAhb3BlcmF0b3IgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXN1bHQgKz0gXCJcIjtcblxuXHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiPVwiID8gcmVzdWx0ID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiIT1cIiA/IHJlc3VsdCAhPT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIl49XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiKj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiQ9XCIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIn49XCIgPyAoIFwiIFwiICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCBcIiBcIiApICsgXCIgXCIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcInw9XCIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArIFwiLVwiIDpcblx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIHR5cGUsIHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHtcblx0XHRcdHZhciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09IFwibnRoXCIsXG5cdFx0XHRcdGZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSBcImxhc3RcIixcblx0XHRcdFx0b2ZUeXBlID0gd2hhdCA9PT0gXCJvZi10eXBlXCI7XG5cblx0XHRcdHJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID9cblxuXHRcdFx0XHQvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdFx0fSA6XG5cblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgY2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBub2RlSW5kZXgsIHN0YXJ0LFxuXHRcdFx0XHRcdFx0ZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gXCJuZXh0U2libGluZ1wiIDogXCJwcmV2aW91c1NpYmxpbmdcIixcblx0XHRcdFx0XHRcdHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSxcblx0XHRcdFx0XHRcdG5hbWUgPSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLFxuXHRcdFx0XHRcdFx0dXNlQ2FjaGUgPSAheG1sICYmICFvZlR5cGUsXG5cdFx0XHRcdFx0XHRkaWZmID0gZmFsc2U7XG5cblx0XHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHRcdFx0aWYgKCBzaW1wbGUgKSB7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggZGlyICkge1xuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4ndCB5ZXQgZG9uZSBzbylcblx0XHRcdFx0XHRcdFx0XHRzdGFydCA9IGRpciA9IHR5cGUgPT09IFwib25seVwiICYmICFzdGFydCAmJiBcIm5leHRTaWJsaW5nXCI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHN0YXJ0ID0gWyBmb3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFzdENoaWxkIF07XG5cblx0XHRcdFx0XHRcdC8vIG5vbi14bWwgOm50aC1jaGlsZCguLi4pIHN0b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgXG5cdFx0XHRcdFx0XHRpZiAoIGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU2VlayBgZWxlbWAgZnJvbSBhIHByZXZpb3VzbHktY2FjaGVkIGluZGV4XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheVxuXHRcdFx0XHRcdFx0XHRub2RlID0gcGFyZW50O1xuXHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4ICYmIGNhY2hlWyAyIF07XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdO1xuXG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQgYnJlYWtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBub2RlSW5kZXgsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxlbWVudCBpbmRleCBpZiBhdmFpbGFibGVcblx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8geG1sIDpudGgtY2hpbGQoLi4uKVxuXHRcdFx0XHRcdFx0XHQvLyBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlwZSguLi4pXG5cdFx0XHRcdFx0XHRcdGlmICggZGlmZiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICggKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0KytkaWZmICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gSW5jb3Jwb3JhdGUgdGhlIG9mZnNldCwgdGhlbiBjaGVjayBhZ2FpbnN0IGN5Y2xlIHNpemVcblx0XHRcdFx0XHRcdGRpZmYgLT0gbGFzdDtcblx0XHRcdFx0XHRcdHJldHVybiBkaWZmID09PSBmaXJzdCB8fCAoIGRpZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIHBzZXVkbywgYXJndW1lbnQgKSB7XG5cdFx0XHQvLyBwc2V1ZG8tY2xhc3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmVcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXNcblx0XHRcdC8vIFByaW9yaXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3RvbSBwc2V1ZG9zIGFyZSBhZGRlZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzXG5cdFx0XHQvLyBSZW1lbWJlciB0aGF0IHNldEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zXG5cdFx0XHR2YXIgYXJncyxcblx0XHRcdFx0Zm4gPSBFeHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fFxuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBwc2V1ZG86IFwiICsgcHNldWRvICk7XG5cblx0XHRcdC8vIFRoZSB1c2VyIG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRoYXRcblx0XHRcdC8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uXG5cdFx0XHQvLyBqdXN0IGFzIFNpenpsZSBkb2VzXG5cdFx0XHRpZiAoIGZuWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHJldHVybiBmbiggYXJndW1lbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQnV0IG1haW50YWluIHN1cHBvcnQgZm9yIG9sZCBzaWduYXR1cmVzXG5cdFx0XHRpZiAoIGZuLmxlbmd0aCA+IDEgKSB7XG5cdFx0XHRcdGFyZ3MgPSBbIHBzZXVkbywgcHNldWRvLCBcIlwiLCBhcmd1bWVudCBdO1xuXHRcdFx0XHRyZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2UoKSApID9cblx0XHRcdFx0XHRtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHRcdFx0XHR2YXIgaWR4LFxuXHRcdFx0XHRcdFx0XHRtYXRjaGVkID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksXG5cdFx0XHRcdFx0XHRcdGkgPSBtYXRjaGVkLmxlbmd0aDtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZHggPSBpbmRleE9mKCBzZWVkLCBtYXRjaGVkW2ldICk7XG5cdFx0XHRcdFx0XHRcdHNlZWRbIGlkeCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkgOlxuXHRcdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZuO1xuXHRcdH1cblx0fSxcblxuXHRwc2V1ZG9zOiB7XG5cdFx0Ly8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zXG5cdFx0XCJub3RcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdC8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0byBjb21waWxlXG5cdFx0XHQvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuXHRcdFx0Ly8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzXG5cdFx0XHR2YXIgaW5wdXQgPSBbXSxcblx0XHRcdFx0cmVzdWx0cyA9IFtdLFxuXHRcdFx0XHRtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApICk7XG5cblx0XHRcdHJldHVybiBtYXRjaGVyWyBleHBhbmRvIF0gP1xuXHRcdFx0XHRtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0XHRcdHVubWF0Y2hlZCA9IG1hdGNoZXIoIHNlZWQsIG51bGwsIHhtbCwgW10gKSxcblx0XHRcdFx0XHRcdGkgPSBzZWVkLmxlbmd0aDtcblxuXHRcdFx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0Y2hlcmBcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRzZWVkW2ldID0gIShtYXRjaGVzW2ldID0gZWxlbSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0aW5wdXRbMF0gPSBlbGVtO1xuXHRcdFx0XHRcdG1hdGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTtcblx0XHRcdFx0XHQvLyBEb24ndCBrZWVwIHRoZSBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0XHRcdGlucHV0WzBdID0gbnVsbDtcblx0XHRcdFx0XHRyZXR1cm4gIXJlc3VsdHMucG9wKCk7XG5cdFx0XHRcdH07XG5cdFx0fSksXG5cblx0XHRcImhhc1wiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gU2l6emxlKCBzZWxlY3RvciwgZWxlbSApLmxlbmd0aCA+IDA7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0XCJjb250YWluc1wiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IGdldFRleHQoIGVsZW0gKSApLmluZGV4T2YoIHRleHQgKSA+IC0xO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdC8vIFwiV2hldGhlciBhbiBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEgOmxhbmcoKSBzZWxlY3RvclxuXHRcdC8vIGlzIGJhc2VkIHNvbGVseSBvbiB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlXG5cdFx0Ly8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIgQyxcblx0XHQvLyBvciBiZWdpbm5pbmcgd2l0aCB0aGUgaWRlbnRpZmllciBDIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IFwiLVwiLlxuXHRcdC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LlxuXHRcdC8vIFRoZSBpZGVudGlmaWVyIEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxhbmd1YWdlIG5hbWUuXCJcblx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2xhbmctcHNldWRvXG5cdFx0XCJsYW5nXCI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7XG5cdFx0XHQvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyXG5cdFx0XHRpZiAoICFyaWRlbnRpZmllci50ZXN0KGxhbmcgfHwgXCJcIikgKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBsYW5nOiBcIiArIGxhbmcgKTtcblx0XHRcdH1cblx0XHRcdGxhbmcgPSBsYW5nLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIGVsZW1MYW5nO1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0aWYgKCAoZWxlbUxhbmcgPSBkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRcdFx0XHRlbGVtLmxhbmcgOlxuXHRcdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoXCJ4bWw6bGFuZ1wiKSB8fCBlbGVtLmdldEF0dHJpYnV0ZShcImxhbmdcIikpICkge1xuXG5cdFx0XHRcdFx0XHRlbGVtTGFuZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbUxhbmcgPT09IGxhbmcgfHwgZWxlbUxhbmcuaW5kZXhPZiggbGFuZyArIFwiLVwiICkgPT09IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IHdoaWxlICggKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdC8vIE1pc2NlbGxhbmVvdXNcblx0XHRcInRhcmdldFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHRcdFx0cmV0dXJuIGhhc2ggJiYgaGFzaC5zbGljZSggMSApID09PSBlbGVtLmlkO1xuXHRcdH0sXG5cblx0XHRcInJvb3RcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTtcblx0XHR9LFxuXG5cdFx0XCJmb2N1c1wiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICghZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBlIHx8IGVsZW0uaHJlZiB8fCB+ZWxlbS50YWJJbmRleCk7XG5cdFx0fSxcblxuXHRcdC8vIEJvb2xlYW4gcHJvcGVydGllc1xuXHRcdFwiZW5hYmxlZFwiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZmFsc2UgKSxcblx0XHRcImRpc2FibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksXG5cblx0XHRcImNoZWNrZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBJbiBDU1MzLCA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIGJvdGggY2hlY2tlZCBhbmQgc2VsZWN0ZWQgZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gKG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gXCJvcHRpb25cIiAmJiAhIWVsZW0uc2VsZWN0ZWQpO1xuXHRcdH0sXG5cblx0XHRcInNlbGVjdGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVsdFxuXHRcdFx0Ly8gb3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseVxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0Ly8gQ29udGVudHNcblx0XHRcImVtcHR5XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG9cblx0XHRcdC8vIDplbXB0eSBpcyBuZWdhdGVkIGJ5IGVsZW1lbnQgKDEpIG9yIGNvbnRlbnQgbm9kZXMgKHRleHQ6IDM7IGNkYXRhOiA0OyBlbnRpdHkgcmVmOiA1KSxcblx0XHRcdC8vICAgYnV0IG5vdCBieSBvdGhlcnMgKGNvbW1lbnQ6IDg7IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb246IDc7IGV0Yy4pXG5cdFx0XHQvLyBub2RlVHlwZSA8IDYgd29ya3MgYmVjYXVzZSBhdHRyaWJ1dGVzICgyKSBkbyBub3QgYXBwZWFyIGFzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlIDwgNiApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHRcInBhcmVudFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAhRXhwci5wc2V1ZG9zW1wiZW1wdHlcIl0oIGVsZW0gKTtcblx0XHR9LFxuXG5cdFx0Ly8gRWxlbWVudC9pbnB1dCB0eXBlc1xuXHRcdFwiaGVhZGVyXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJoZWFkZXIudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImlucHV0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJpbnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImJ1dHRvblwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IFwiYnV0dG9uXCIgfHwgbmFtZSA9PT0gXCJidXR0b25cIjtcblx0XHR9LFxuXG5cdFx0XCJ0ZXh0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGF0dHI7XG5cdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgJiZcblx0XHRcdFx0ZWxlbS50eXBlID09PSBcInRleHRcIiAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFPDhcblx0XHRcdFx0Ly8gTmV3IEhUTUw1IGF0dHJpYnV0ZSB2YWx1ZXMgKGUuZy4sIFwic2VhcmNoXCIpIGFwcGVhciB3aXRoIGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCJcblx0XHRcdFx0KCAoYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09IFwidGV4dFwiICk7XG5cdFx0fSxcblxuXHRcdC8vIFBvc2l0aW9uLWluLWNvbGxlY3Rpb25cblx0XHRcImZpcnN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gWyAwIF07XG5cdFx0fSksXG5cblx0XHRcImxhc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gWyBsZW5ndGggLSAxIF07XG5cdFx0fSksXG5cblx0XHRcImVxXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHJldHVybiBbIGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQgXTtcblx0XHR9KSxcblxuXHRcdFwiZXZlblwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwib2RkXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAxO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJsdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7IC0taSA+PSAwOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcImd0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgKytpIDwgbGVuZ3RoOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSlcblx0fVxufTtcblxuRXhwci5wc2V1ZG9zW1wibnRoXCJdID0gRXhwci5wc2V1ZG9zW1wiZXFcIl07XG5cbi8vIEFkZCBidXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zXG5mb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVJbnB1dFBzZXVkbyggaSApO1xufVxuZm9yICggaSBpbiB7IHN1Ym1pdDogdHJ1ZSwgcmVzZXQ6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVCdXR0b25Qc2V1ZG8oIGkgKTtcbn1cblxuLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzXG5mdW5jdGlvbiBzZXRGaWx0ZXJzKCkge31cbnNldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5maWx0ZXJzID0gRXhwci5wc2V1ZG9zO1xuRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTtcblxudG9rZW5pemUgPSBTaXp6bGUudG9rZW5pemUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIHBhcnNlT25seSApIHtcblx0dmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tlbnMsIHR5cGUsXG5cdFx0c29GYXIsIGdyb3VwcywgcHJlRmlsdGVycyxcblx0XHRjYWNoZWQgPSB0b2tlbkNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF07XG5cblx0aWYgKCBjYWNoZWQgKSB7XG5cdFx0cmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQuc2xpY2UoIDAgKTtcblx0fVxuXG5cdHNvRmFyID0gc2VsZWN0b3I7XG5cdGdyb3VwcyA9IFtdO1xuXHRwcmVGaWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7XG5cblx0d2hpbGUgKCBzb0ZhciApIHtcblxuXHRcdC8vIENvbW1hIGFuZCBmaXJzdCBydW5cblx0XHRpZiAoICFtYXRjaGVkIHx8IChtYXRjaCA9IHJjb21tYS5leGVjKCBzb0ZhciApKSApIHtcblx0XHRcdGlmICggbWF0Y2ggKSB7XG5cdFx0XHRcdC8vIERvbid0IGNvbnN1bWUgdHJhaWxpbmcgY29tbWFzIGFzIHZhbGlkXG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoWzBdLmxlbmd0aCApIHx8IHNvRmFyO1xuXHRcdFx0fVxuXHRcdFx0Z3JvdXBzLnB1c2goICh0b2tlbnMgPSBbXSkgKTtcblx0XHR9XG5cblx0XHRtYXRjaGVkID0gZmFsc2U7XG5cblx0XHQvLyBDb21iaW5hdG9yc1xuXHRcdGlmICggKG1hdGNoID0gcmNvbWJpbmF0b3JzLmV4ZWMoIHNvRmFyICkpICkge1xuXHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHQvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3BhY2Vcblx0XHRcdFx0dHlwZTogbWF0Y2hbMF0ucmVwbGFjZSggcnRyaW0sIFwiIFwiIClcblx0XHRcdH0pO1xuXHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGaWx0ZXJzXG5cdFx0Zm9yICggdHlwZSBpbiBFeHByLmZpbHRlciApIHtcblx0XHRcdGlmICggKG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHxcblx0XHRcdFx0KG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKCBtYXRjaCApKSkgKSB7XG5cdFx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0XHRtYXRjaGVzOiBtYXRjaFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoICFtYXRjaGVkICkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGludmFsaWQgZXhjZXNzXG5cdC8vIGlmIHdlJ3JlIGp1c3QgcGFyc2luZ1xuXHQvLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnNcblx0cmV0dXJuIHBhcnNlT25seSA/XG5cdFx0c29GYXIubGVuZ3RoIDpcblx0XHRzb0ZhciA/XG5cdFx0XHRTaXp6bGUuZXJyb3IoIHNlbGVjdG9yICkgOlxuXHRcdFx0Ly8gQ2FjaGUgdGhlIHRva2Vuc1xuXHRcdFx0dG9rZW5DYWNoZSggc2VsZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7XG59O1xuXG5mdW5jdGlvbiB0b1NlbGVjdG9yKCB0b2tlbnMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdHNlbGVjdG9yID0gXCJcIjtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0c2VsZWN0b3IgKz0gdG9rZW5zW2ldLnZhbHVlO1xuXHR9XG5cdHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZnVuY3Rpb24gYWRkQ29tYmluYXRvciggbWF0Y2hlciwgY29tYmluYXRvciwgYmFzZSApIHtcblx0dmFyIGRpciA9IGNvbWJpbmF0b3IuZGlyLFxuXHRcdHNraXAgPSBjb21iaW5hdG9yLm5leHQsXG5cdFx0a2V5ID0gc2tpcCB8fCBkaXIsXG5cdFx0Y2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYga2V5ID09PSBcInBhcmVudE5vZGVcIixcblx0XHRkb25lTmFtZSA9IGRvbmUrKztcblxuXHRyZXR1cm4gY29tYmluYXRvci5maXJzdCA/XG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBjbG9zZXN0IGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gOlxuXG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBvbGRDYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsXG5cdFx0XHRcdG5ld0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdO1xuXG5cdFx0XHQvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmdcblx0XHRcdGlmICggeG1sICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdIHx8IChvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdGlmICggc2tpcCAmJiBza2lwID09PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdGVsZW0gPSBlbGVtWyBkaXIgXSB8fCBlbGVtO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICggKG9sZENhY2hlID0gdW5pcXVlQ2FjaGVbIGtleSBdKSAmJlxuXHRcdFx0XHRcdFx0XHRvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAxIF0gPT09IGRvbmVOYW1lICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFzc2lnbiB0byBuZXdDYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHJldHVybiAobmV3Q2FjaGVbIDIgXSA9IG9sZENhY2hlWyAyIF0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmV1c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsga2V5IF0gPSBuZXdDYWNoZTtcblxuXHRcdFx0XHRcdFx0XHQvLyBBIG1hdGNoIG1lYW5zIHdlJ3JlIGRvbmU7IGEgZmFpbCBtZWFucyB3ZSBoYXZlIHRvIGtlZXAgY2hlY2tpbmdcblx0XHRcdFx0XHRcdFx0aWYgKCAobmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG59XG5cbmZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApIHtcblx0cmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgP1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgaSA9IG1hdGNoZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IDpcblx0XHRtYXRjaGVyc1swXTtcbn1cblxuZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gY29udGV4dHMubGVuZ3RoO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApO1xuXHR9XG5cdHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwgY29udGV4dCwgeG1sICkge1xuXHR2YXIgZWxlbSxcblx0XHRuZXdVbm1hdGNoZWQgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLFxuXHRcdG1hcHBlZCA9IG1hcCAhPSBudWxsO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0aWYgKCAhZmlsdGVyIHx8IGZpbHRlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdGlmICggbWFwcGVkICkge1xuXHRcdFx0XHRcdG1hcC5wdXNoKCBpICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbmV3VW5tYXRjaGVkO1xufVxuXG5mdW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9yLCBtYXRjaGVyLCBwb3N0RmlsdGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7XG5cdGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaWx0ZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmlsdGVyICk7XG5cdH1cblx0aWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApO1xuXHR9XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHtcblx0XHR2YXIgdGVtcCwgaSwgZWxlbSxcblx0XHRcdHByZU1hcCA9IFtdLFxuXHRcdFx0cG9zdE1hcCA9IFtdLFxuXHRcdFx0cHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHRcblx0XHRcdGVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCBcIipcIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCwgW10gKSxcblxuXHRcdFx0Ly8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uXG5cdFx0XHRtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID9cblx0XHRcdFx0Y29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRlbGVtcyxcblxuXHRcdFx0bWF0Y2hlck91dCA9IG1hdGNoZXIgP1xuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLFxuXHRcdFx0XHRwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/XG5cblx0XHRcdFx0XHQvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nhcnlcblx0XHRcdFx0XHRbXSA6XG5cblx0XHRcdFx0XHQvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHlcblx0XHRcdFx0XHRyZXN1bHRzIDpcblx0XHRcdFx0bWF0Y2hlckluO1xuXG5cdFx0Ly8gRmluZCBwcmltYXJ5IG1hdGNoZXNcblx0XHRpZiAoIG1hdGNoZXIgKSB7XG5cdFx0XHRtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJPdXQsIGNvbnRleHQsIHhtbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHBvc3RGaWx0ZXJcblx0XHRpZiAoIHBvc3RGaWx0ZXIgKSB7XG5cdFx0XHR0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTtcblx0XHRcdHBvc3RGaWx0ZXIoIHRlbXAsIFtdLCBjb250ZXh0LCB4bWwgKTtcblxuXHRcdFx0Ly8gVW4tbWF0Y2ggZmFpbGluZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJblxuXHRcdFx0aSA9IHRlbXAubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyT3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1hcFtpXSBdID0gZWxlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkge1xuXHRcdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdFx0Ly8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzXG5cdFx0XHRcdFx0dGVtcCA9IFtdO1xuXHRcdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSApIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2hcblx0XHRcdFx0XHRcdFx0dGVtcC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWRcblx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgJiZcblx0XHRcdFx0XHRcdCh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHtcblxuXHRcdFx0XHRcdFx0c2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkXG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXJPdXQgPSBjb25kZW5zZShcblx0XHRcdFx0bWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/XG5cdFx0XHRcdFx0bWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDpcblx0XHRcdFx0XHRtYXRjaGVyT3V0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkge1xuXHR2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0bGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSxcblx0XHRpbXBsaWNpdFJlbGF0aXZlID0gbGVhZGluZ1JlbGF0aXZlIHx8IEV4cHIucmVsYXRpdmVbXCIgXCJdLFxuXHRcdGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCxcblxuXHRcdC8vIFRoZSBmb3VuZGF0aW9uYWwgbWF0Y2hlciBlbnN1cmVzIHRoYXQgZWxlbWVudHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRvcC1sZXZlbCBjb250ZXh0KHMpXG5cdFx0bWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0O1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaEFueUNvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBpbmRleE9mKCBjaGVja0NvbnRleHQsIGVsZW0gKSA+IC0xO1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaGVycyA9IFsgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciByZXQgPSAoICFsZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKFxuXHRcdFx0XHQoY2hlY2tDb250ZXh0ID0gY29udGV4dCkubm9kZVR5cGUgP1xuXHRcdFx0XHRcdG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRcdG1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTtcblx0XHRcdC8vIEF2b2lkIGhhbmdpbmcgb250byBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0Y2hlY2tDb250ZXh0ID0gbnVsbDtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fSBdO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHtcblx0XHRcdG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0uYXBwbHkoIG51bGwsIHRva2Vuc1tpXS5tYXRjaGVzICk7XG5cblx0XHRcdC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyXG5cdFx0XHRpZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0Ly8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nXG5cdFx0XHRcdGogPSArK2k7XG5cdFx0XHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2pdLnR5cGUgXSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc2V0TWF0Y2hlcihcblx0XHRcdFx0XHRpID4gMSAmJiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSxcblx0XHRcdFx0XHRpID4gMSAmJiB0b1NlbGVjdG9yKFxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmBcblx0XHRcdFx0XHRcdHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09IFwiIFwiID8gXCIqXCIgOiBcIlwiIH0pXG5cdFx0XHRcdFx0KS5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksXG5cdFx0XHRcdFx0bWF0Y2hlcixcblx0XHRcdFx0XHRpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBqICkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAodG9rZW5zID0gdG9rZW5zLnNsaWNlKCBqICkpICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlcnMucHVzaCggbWF0Y2hlciApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkge1xuXHR2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdHN1cGVyTWF0Y2hlciA9IGZ1bmN0aW9uKCBzZWVkLCBjb250ZXh0LCB4bWwsIHJlc3VsdHMsIG91dGVybW9zdCApIHtcblx0XHRcdHZhciBlbGVtLCBqLCBtYXRjaGVyLFxuXHRcdFx0XHRtYXRjaGVkQ291bnQgPSAwLFxuXHRcdFx0XHRpID0gXCIwXCIsXG5cdFx0XHRcdHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sXG5cdFx0XHRcdHNldE1hdGNoZWQgPSBbXSxcblx0XHRcdFx0Y29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsXG5cdFx0XHRcdC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHRcblx0XHRcdFx0ZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbXCJUQUdcIl0oIFwiKlwiLCBvdXRlcm1vc3QgKSxcblx0XHRcdFx0Ly8gVXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXJcblx0XHRcdFx0ZGlycnVuc1VuaXF1ZSA9IChkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVsbCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSksXG5cdFx0XHRcdGxlbiA9IGVsZW1zLmxlbmd0aDtcblxuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ID09PSBkb2N1bWVudCB8fCBjb250ZXh0IHx8IG91dGVybW9zdDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHNcblx0XHRcdC8vIFN1cHBvcnQ6IElFPDksIFNhZmFyaVxuXHRcdFx0Ly8gVG9sZXJhdGUgTm9kZUxpc3QgcHJvcGVydGllcyAoSUU6IFwibGVuZ3RoXCI7IFNhZmFyaTogPG51bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5IGlkXG5cdFx0XHRmb3IgKCA7IGkgIT09IGxlbiAmJiAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0aWYgKCAhY29udGV4dCAmJiBlbGVtLm93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50ICkge1xuXHRcdFx0XHRcdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0XHRcdFx0XHRcdHhtbCA9ICFkb2N1bWVudElzSFRNTDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1bWVudCwgeG1sKSApIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnNcblx0XHRcdFx0aWYgKCBieVNldCApIHtcblx0XHRcdFx0XHQvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzXG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkge1xuXHRcdFx0XHRcdFx0bWF0Y2hlZENvdW50LS07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdFxuXHRcdFx0XHRcdGlmICggc2VlZCApIHtcblx0XHRcdFx0XHRcdHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIGBpYCBpcyBub3cgdGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFuZCBhZGRpbmcgaXQgdG8gYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRpdmUuXG5cdFx0XHRtYXRjaGVkQ291bnQgKz0gaTtcblxuXHRcdFx0Ly8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBOT1RFOiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJlIGFyZSBubyB1bm1hdGNoZWQgZWxlbWVudHMgKGkuZS4sIGBtYXRjaGVkQ291bnRgXG5cdFx0XHQvLyBlcXVhbHMgYGlgKSwgdW5sZXNzIHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0aGUgYWJvdmUgbG9vcCBiZWNhdXNlIHdlIGhhdmVcblx0XHRcdC8vIG5vIGVsZW1lbnQgbWF0Y2hlcnMgYW5kIG5vIHNlZWQuXG5cdFx0XHQvLyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5LXN0cmluZyBcIjBcIiBgaWAgYWxsb3dzIGBpYCB0byByZW1haW4gYSBzdHJpbmcgb25seSBpbiB0aGF0XG5cdFx0XHQvLyBjYXNlLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBhIFwiMDBcIiBgbWF0Y2hlZENvdW50YCB0aGF0IGRpZmZlcnMgZnJvbSBgaWAgYnV0IGlzIGFsc29cblx0XHRcdC8vIG51bWVyaWNhbGx5IHplcm8uXG5cdFx0XHRpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHtcblx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyKCB1bm1hdGNoZWQsIHNldE1hdGNoZWQsIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmdcblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRDb3VudCA+IDAgKSB7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRjaGVkW2ldID0gcG9wLmNhbGwoIHJlc3VsdHMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzXG5cdFx0XHRcdFx0c2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBZGQgbWF0Y2hlcyB0byByZXN1bHRzXG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTtcblxuXHRcdFx0XHQvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmdcblx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgJiYgIXNlZWQgJiYgc2V0TWF0Y2hlZC5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0KCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7XG5cblx0XHRcdFx0XHRTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVyc1xuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHVubWF0Y2hlZDtcblx0XHR9O1xuXG5cdHJldHVybiBieVNldCA/XG5cdFx0bWFya0Z1bmN0aW9uKCBzdXBlck1hdGNoZXIgKSA6XG5cdFx0c3VwZXJNYXRjaGVyO1xufVxuXG5jb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkge1xuXHR2YXIgaSxcblx0XHRzZXRNYXRjaGVycyA9IFtdLFxuXHRcdGVsZW1lbnRNYXRjaGVycyA9IFtdLFxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoICFjYWNoZWQgKSB7XG5cdFx0Ly8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50XG5cdFx0aWYgKCAhbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdH1cblx0XHRpID0gbWF0Y2gubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0Y2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7XG5cdFx0XHRpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25cblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlKCBzZWxlY3RvciwgbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgKTtcblxuXHRcdC8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvblxuXHRcdGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHR9XG5cdHJldHVybiBjYWNoZWQ7XG59O1xuXG4vKipcbiAqIEEgbG93LWxldmVsIHNlbGVjdGlvbiBmdW5jdGlvbiB0aGF0IHdvcmtzIHdpdGggU2l6emxlJ3MgY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBzZWxlY3RvciBBIHNlbGVjdG9yIG9yIGEgcHJlLWNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb24gYnVpbHQgd2l0aCBTaXp6bGUuY29tcGlsZVxuICogQHBhcmFtIHtFbGVtZW50fSBjb250ZXh0XG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0c11cbiAqIEBwYXJhbSB7QXJyYXl9IFtzZWVkXSBBIHNldCBvZiBlbGVtZW50cyB0byBtYXRjaCBhZ2FpbnN0XG4gKi9cbnNlbGVjdCA9IFNpenpsZS5zZWxlY3QgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLFxuXHRcdGNvbXBpbGVkID0gdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgc2VsZWN0b3IsXG5cdFx0bWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IpICk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gVHJ5IHRvIG1pbmltaXplIG9wZXJhdGlvbnMgaWYgdGhlcmUgaXMgb25seSBvbmUgc2VsZWN0b3IgaW4gdGhlIGxpc3QgYW5kIG5vIHNlZWRcblx0Ly8gKHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1cyBjb250ZXh0KVxuXHRpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHtcblxuXHRcdC8vIFJlZHVjZSBjb250ZXh0IGlmIHRoZSBsZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElEXG5cdFx0dG9rZW5zID0gbWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCApO1xuXHRcdGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50eXBlID09PSBcIklEXCIgJiZcblx0XHRcdFx0Y29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVudElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkge1xuXG5cdFx0XHRjb250ZXh0ID0gKCBFeHByLmZpbmRbXCJJRFwiXSggdG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwgZnVuZXNjYXBlKSwgY29udGV4dCApIHx8IFtdIClbMF07XG5cdFx0XHRpZiAoICFjb250ZXh0ICkge1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0Ly8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbFxuXHRcdFx0fSBlbHNlIGlmICggY29tcGlsZWQgKSB7XG5cdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cblx0XHRcdHNlbGVjdG9yID0gc2VsZWN0b3Iuc2xpY2UoIHRva2Vucy5zaGlmdCgpLnZhbHVlLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZldGNoIGEgc2VlZCBzZXQgZm9yIHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmdcblx0XHRpID0gbWF0Y2hFeHByW1wibmVlZHNDb250ZXh0XCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRva2VuID0gdG9rZW5zW2ldO1xuXG5cdFx0XHQvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yXG5cdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkge1xuXHRcdFx0XHQvLyBTZWFyY2gsIGV4cGFuZGluZyBjb250ZXh0IGZvciBsZWFkaW5nIHNpYmxpbmcgY29tYmluYXRvcnNcblx0XHRcdFx0aWYgKCAoc2VlZCA9IGZpbmQoXG5cdFx0XHRcdFx0dG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLFxuXHRcdFx0XHRcdHJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0XHRcdFx0KSkgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHlcblx0XHRcdFx0XHR0b2tlbnMuc3BsaWNlKCBpLCAxICk7XG5cdFx0XHRcdFx0c2VsZWN0b3IgPSBzZWVkLmxlbmd0aCAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKTtcblx0XHRcdFx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG5cdC8vIFByb3ZpZGUgYG1hdGNoYCB0byBhdm9pZCByZXRva2VuaXphdGlvbiBpZiB3ZSBtb2RpZmllZCB0aGUgc2VsZWN0b3IgYWJvdmVcblx0KCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKFxuXHRcdHNlZWQsXG5cdFx0Y29udGV4dCxcblx0XHQhZG9jdW1lbnRJc0hUTUwsXG5cdFx0cmVzdWx0cyxcblx0XHQhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdCk7XG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gT25lLXRpbWUgYXNzaWdubWVudHNcblxuLy8gU29ydCBzdGFiaWxpdHlcbnN1cHBvcnQuc29ydFN0YWJsZSA9IGV4cGFuZG8uc3BsaXQoXCJcIikuc29ydCggc29ydE9yZGVyICkuam9pbihcIlwiKSA9PT0gZXhwYW5kbztcblxuLy8gU3VwcG9ydDogQ2hyb21lIDE0LTM1K1xuLy8gQWx3YXlzIGFzc3VtZSBkdXBsaWNhdGVzIGlmIHRoZXkgYXJlbid0IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlvblxuc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzID0gISFoYXNEdXBsaWNhdGU7XG5cbi8vIEluaXRpYWxpemUgYWdhaW5zdCB0aGUgZGVmYXVsdCBkb2N1bWVudFxuc2V0RG9jdW1lbnQoKTtcblxuLy8gU3VwcG9ydDogV2Via2l0PDUzNy4zMiAtIFNhZmFyaSA2LjAuMy9DaHJvbWUgMjUgKGZpeGVkIGluIENocm9tZSAyNylcbi8vIERldGFjaGVkIG5vZGVzIGNvbmZvdW5kaW5nbHkgZm9sbG93ICplYWNoIG90aGVyKlxuc3VwcG9ydC5zb3J0RGV0YWNoZWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHQvLyBTaG91bGQgcmV0dXJuIDEsIGJ1dCByZXR1cm5zIDQgKGZvbGxvd2luZylcblx0cmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmllbGRzZXRcIikgKSAmIDE7XG59KTtcblxuLy8gU3VwcG9ydDogSUU8OFxuLy8gUHJldmVudCBhdHRyaWJ1dGUvcHJvcGVydHkgXCJpbnRlcnBvbGF0aW9uXCJcbi8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4XG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxhIGhyZWY9JyMnPjwvYT5cIjtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSA9PT0gXCIjXCIgO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInR5cGVcIiA/IDEgOiAyICk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBvZiBnZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKVxuaWYgKCAhc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxpbnB1dC8+XCI7XG5cdGVsLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCBcInZhbHVlXCIsIFwiXCIgKTtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gXCJcIjtcbn0pICkge1xuXHRhZGRIYW5kbGUoIFwidmFsdWVcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fSk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBnZXRBdHRyaWJ1dGVOb2RlIHRvIGZldGNoIGJvb2xlYW5zIHdoZW4gZ2V0QXR0cmlidXRlIGxpZXNcbmlmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSA9PSBudWxsO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggYm9vbGVhbnMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgdmFsO1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6XG5cdFx0XHRcdFx0KHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xuXHRcdH1cblx0fSk7XG59XG5cbnJldHVybiBTaXp6bGU7XG5cbn0pKCB3aW5kb3cgKTtcblxuXG5cbmpRdWVyeS5maW5kID0gU2l6emxlO1xualF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzO1xuXG4vLyBEZXByZWNhdGVkXG5qUXVlcnkuZXhwclsgXCI6XCIgXSA9IGpRdWVyeS5leHByLnBzZXVkb3M7XG5qUXVlcnkudW5pcXVlU29ydCA9IGpRdWVyeS51bmlxdWUgPSBTaXp6bGUudW5pcXVlU29ydDtcbmpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7XG5qUXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUuaXNYTUw7XG5qUXVlcnkuY29udGFpbnMgPSBTaXp6bGUuY29udGFpbnM7XG5qUXVlcnkuZXNjYXBlU2VsZWN0b3IgPSBTaXp6bGUuZXNjYXBlO1xuXG5cblxuXG52YXIgZGlyID0gZnVuY3Rpb24oIGVsZW0sIGRpciwgdW50aWwgKSB7XG5cdHZhciBtYXRjaGVkID0gW10sXG5cdFx0dHJ1bmNhdGUgPSB1bnRpbCAhPT0gdW5kZWZpbmVkO1xuXG5cdHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkge1xuXHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdGlmICggdHJ1bmNhdGUgJiYgalF1ZXJ5KCBlbGVtICkuaXMoIHVudGlsICkgKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXRjaGVkO1xufTtcblxuXG52YXIgc2libGluZ3MgPSBmdW5jdGlvbiggbiwgZWxlbSApIHtcblx0dmFyIG1hdGNoZWQgPSBbXTtcblxuXHRmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkge1xuXHRcdGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkge1xuXHRcdFx0bWF0Y2hlZC5wdXNoKCBuICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0O1xuXG5cblxuZnVuY3Rpb24gbm9kZU5hbWUoIGVsZW0sIG5hbWUgKSB7XG5cbiAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbn07XG52YXIgcnNpbmdsZVRhZyA9ICggL148KFthLXpdW15cXC9cXDA+OlxceDIwXFx0XFxyXFxuXFxmXSopW1xceDIwXFx0XFxyXFxuXFxmXSpcXC8/Pig/OjxcXC9cXDE+fCkkL2kgKTtcblxuXG5cbi8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90XG5mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIG5vdCApIHtcblx0aWYgKCBpc0Z1bmN0aW9uKCBxdWFsaWZpZXIgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBTaW5nbGUgZWxlbWVudFxuXHRpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGVsZW0gPT09IHF1YWxpZmllciApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVlcnksIGFyZ3VtZW50cywgQXJyYXkpXG5cdGlmICggdHlwZW9mIHF1YWxpZmllciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gRmlsdGVyZWQgZGlyZWN0bHkgZm9yIGJvdGggc2ltcGxlIGFuZCBjb21wbGV4IHNlbGVjdG9yc1xuXHRyZXR1cm4galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cywgbm90ICk7XG59XG5cbmpRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHtcblx0dmFyIGVsZW0gPSBlbGVtc1sgMCBdO1xuXG5cdGlmICggbm90ICkge1xuXHRcdGV4cHIgPSBcIjpub3QoXCIgKyBleHByICsgXCIpXCI7XG5cdH1cblxuXHRpZiAoIGVsZW1zLmxlbmd0aCA9PT0gMSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGVsZW0sIGV4cHIgKSA/IFsgZWxlbSBdIDogW107XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVHlwZSA9PT0gMTtcblx0fSApICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgaSwgcmV0LFxuXHRcdFx0bGVuID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRzZWxmID0gdGhpcztcblxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKSApO1xuXHRcdH1cblxuXHRcdHJldCA9IHRoaXMucHVzaFN0YWNrKCBbXSApO1xuXG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbGVuID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCByZXQgKSA6IHJldDtcblx0fSxcblx0ZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCBmYWxzZSApICk7XG5cdH0sXG5cdG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgdHJ1ZSApICk7XG5cdH0sXG5cdGlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuICEhd2lubm93KFxuXHRcdFx0dGhpcyxcblxuXHRcdFx0Ly8gSWYgdGhpcyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNldFxuXHRcdFx0Ly8gc28gJChcInA6Zmlyc3RcIikuaXMoXCJwOmxhc3RcIikgd29uJ3QgcmV0dXJuIHRydWUgZm9yIGEgZG9jIHdpdGggdHdvIFwicFwiLlxuXHRcdFx0dHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICYmIHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGpRdWVyeSggc2VsZWN0b3IgKSA6XG5cdFx0XHRcdHNlbGVjdG9yIHx8IFtdLFxuXHRcdFx0ZmFsc2Vcblx0XHQpLmxlbmd0aDtcblx0fVxufSApO1xuXG5cbi8vIEluaXRpYWxpemUgYSBqUXVlcnkgb2JqZWN0XG5cblxuLy8gQSBjZW50cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpXG52YXIgcm9vdGpRdWVyeSxcblxuXHQvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5nc1xuXHQvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAoIzk1MjEpXG5cdC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uICgjMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KVxuXHQvLyBTaG9ydGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkXG5cdHJxdWlja0V4cHIgPSAvXig/OlxccyooPFtcXHdcXFddKz4pW14+XSp8IyhbXFx3LV0rKSkkLyxcblxuXHRpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7XG5cdFx0dmFyIG1hdGNoLCBlbGVtO1xuXG5cdFx0Ly8gSEFORExFOiAkKFwiXCIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpXG5cdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHQvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnlcblx0XHQvLyBzbyBtaWdyYXRlIGNhbiBzdXBwb3J0IGpRdWVyeS5zdWIgKGdoLTIxMDEpXG5cdFx0cm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTtcblxuXHRcdC8vIEhhbmRsZSBIVE1MIHN0cmluZ3Ncblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGlmICggc2VsZWN0b3JbIDAgXSA9PT0gXCI8XCIgJiZcblx0XHRcdFx0c2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gXCI+XCIgJiZcblx0XHRcdFx0c2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XG5cblx0XHRcdFx0Ly8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2tcblx0XHRcdFx0bWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3VyZSBubyBjb250ZXh0IGlzIHNwZWNpZmllZCBmb3IgI2lkXG5cdFx0XHRpZiAoIG1hdGNoICYmICggbWF0Y2hbIDEgXSB8fCAhY29udGV4dCApICkge1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KVxuXHRcdFx0XHRpZiAoIG1hdGNoWyAxIF0gKSB7XG5cdFx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WyAwIF0gOiBjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdFx0Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoXG5cdFx0XHRcdFx0XHRtYXRjaFsgMSBdLFxuXHRcdFx0XHRcdFx0Y29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpICk7XG5cblx0XHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWyAxIF0gKSAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29udGV4dCApICkge1xuXHRcdFx0XHRcdFx0Zm9yICggbWF0Y2ggaW4gY29udGV4dCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTtcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKCNpZClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTtcblxuXHRcdFx0XHRcdGlmICggZWxlbSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmplY3Rcblx0XHRcdFx0XHRcdHRoaXNbIDAgXSA9IGVsZW07XG5cdFx0XHRcdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcblx0XHRcdFx0cmV0dXJuICggY29udGV4dCB8fCByb290ICkuZmluZCggc2VsZWN0b3IgKTtcblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXG5cdFx0XHQvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdC8vIEhBTkRMRTogJChET01FbGVtZW50KVxuXHRcdH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xuXHRcdFx0dGhpc1sgMCBdID0gc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcblx0XHQvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHlcblx0XHR9IGVsc2UgaWYgKCBpc0Z1bmN0aW9uKCBzZWxlY3RvciApICkge1xuXHRcdFx0cmV0dXJuIHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHJvb3QucmVhZHkoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIEV4ZWN1dGUgaW1tZWRpYXRlbHkgaWYgcmVhZHkgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0c2VsZWN0b3IoIGpRdWVyeSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cblx0Ly8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXRcblx0Z3VhcmFudGVlZFVuaXF1ZSA9IHtcblx0XHRjaGlsZHJlbjogdHJ1ZSxcblx0XHRjb250ZW50czogdHJ1ZSxcblx0XHRuZXh0OiB0cnVlLFxuXHRcdHByZXY6IHRydWVcblx0fTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7XG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0bWF0Y2hlZCA9IFtdLFxuXHRcdFx0dGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09IFwic3RyaW5nXCIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTtcblxuXHRcdC8vIFBvc2l0aW9uYWwgc2VsZWN0b3JzIG5ldmVyIG1hdGNoLCBzaW5jZSB0aGVyZSdzIG5vIF9zZWxlY3Rpb25fIGNvbnRleHRcblx0XHRpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmb3IgKCBjdXIgPSB0aGlzWyBpIF07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXG5cdFx0XHRcdFx0Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzXG5cdFx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHRhcmdldHMgP1xuXHRcdFx0XHRcdFx0dGFyZ2V0cy5pbmRleCggY3VyICkgPiAtMSA6XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdFx0Y3VyLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSApICkge1xuXG5cdFx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlU29ydChcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/XG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApXG5cdFx0KTtcblx0fVxufSApO1xuXG5mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHtcblx0d2hpbGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCgge1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIsIHVudGlsICk7XG5cdH0sXG5cdG5leHQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dEFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcbiAgICAgICAgaWYgKCBub2RlTmFtZSggZWxlbSwgXCJpZnJhbWVcIiApICkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0uY29udGVudERvY3VtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHksIGlPUyA3IG9ubHksIEFuZHJvaWQgQnJvd3NlciA8PTQuMyBvbmx5XG4gICAgICAgIC8vIFRyZWF0IHRoZSB0ZW1wbGF0ZSBlbGVtZW50IGFzIGEgcmVndWxhciBvbmUgaW4gYnJvd3NlcnMgdGhhdFxuICAgICAgICAvLyBkb24ndCBzdXBwb3J0IGl0LlxuICAgICAgICBpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRlbXBsYXRlXCIgKSApIHtcbiAgICAgICAgICAgIGVsZW0gPSBlbGVtLmNvbnRlbnQgfHwgZWxlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTtcblx0fVxufSwgZnVuY3Rpb24oIG5hbWUsIGZuICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7XG5cdFx0dmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTtcblxuXHRcdGlmICggbmFtZS5zbGljZSggLTUgKSAhPT0gXCJVbnRpbFwiICkge1xuXHRcdFx0c2VsZWN0b3IgPSB1bnRpbDtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG1hdGNoZWQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5sZW5ndGggPiAxICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgZHVwbGljYXRlc1xuXHRcdFx0aWYgKCAhZ3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdICkge1xuXHRcdFx0XHRqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlc1xuXHRcdFx0aWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRtYXRjaGVkLnJldmVyc2UoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTtcblx0fTtcbn0gKTtcbnZhciBybm90aHRtbHdoaXRlID0gKCAvW15cXHgyMFxcdFxcclxcblxcZl0rL2cgKTtcblxuXG5cbi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkge1xuXHR2YXIgb2JqZWN0ID0ge307XG5cdGpRdWVyeS5lYWNoKCBvcHRpb25zLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10sIGZ1bmN0aW9uKCBfLCBmbGFnICkge1xuXHRcdG9iamVjdFsgZmxhZyBdID0gdHJ1ZTtcblx0fSApO1xuXHRyZXR1cm4gb2JqZWN0O1xufVxuXG4vKlxuICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gKlxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcbiAqXHRcdFx0dGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdFxuICpcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXG4gKiBcImZpcmVkXCIgbXVsdGlwbGUgdGltZXMuXG4gKlxuICogUG9zc2libGUgb3B0aW9uczpcbiAqXG4gKlx0b25jZTpcdFx0XHR3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdG1lbW9yeTpcdFx0XHR3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkXG4gKlx0XHRcdFx0XHRhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCBcIm1lbW9yaXplZFwiXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0dW5pcXVlOlx0XHRcdHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KVxuICpcbiAqXHRzdG9wT25GYWxzZTpcdGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZVxuICpcbiAqL1xualF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcblx0Ly8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KVxuXHRvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgP1xuXHRcdGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSA6XG5cdFx0alF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTtcblxuXHR2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZ1xuXHRcdGZpcmluZyxcblxuXHRcdC8vIExhc3QgZmlyZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzXG5cdFx0bWVtb3J5LFxuXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWRcblx0XHRmaXJlZCxcblxuXHRcdC8vIEZsYWcgdG8gcHJldmVudCBmaXJpbmdcblx0XHRsb2NrZWQsXG5cblx0XHQvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdFxuXHRcdGxpc3QgPSBbXSxcblxuXHRcdC8vIFF1ZXVlIG9mIGV4ZWN1dGlvbiBkYXRhIGZvciByZXBlYXRhYmxlIGxpc3RzXG5cdFx0cXVldWUgPSBbXSxcblxuXHRcdC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKVxuXHRcdGZpcmluZ0luZGV4ID0gLTEsXG5cblx0XHQvLyBGaXJlIGNhbGxiYWNrc1xuXHRcdGZpcmUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5mb3JjZSBzaW5nbGUtZmlyaW5nXG5cdFx0XHRsb2NrZWQgPSBsb2NrZWQgfHwgb3B0aW9ucy5vbmNlO1xuXG5cdFx0XHQvLyBFeGVjdXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhlY3V0aW9ucyxcblx0XHRcdC8vIHJlc3BlY3RpbmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVzIGFuZCBydW50aW1lIGNoYW5nZXNcblx0XHRcdGZpcmVkID0gZmlyaW5nID0gdHJ1ZTtcblx0XHRcdGZvciAoIDsgcXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0xICkge1xuXHRcdFx0XHRtZW1vcnkgPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0XHR3aGlsZSAoICsrZmlyaW5nSW5kZXggPCBsaXN0Lmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdC8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBtZW1vcnlbIDAgXSwgbWVtb3J5WyAxIF0gKSA9PT0gZmFsc2UgJiZcblx0XHRcdFx0XHRcdG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEp1bXAgdG8gZW5kIGFuZCBmb3JnZXQgdGhlIGRhdGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmVcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRcdFx0XHRtZW1vcnkgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yZ2V0IHRoZSBkYXRhIGlmIHdlJ3JlIGRvbmUgd2l0aCBpdFxuXHRcdFx0aWYgKCAhb3B0aW9ucy5tZW1vcnkgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRmaXJpbmcgPSBmYWxzZTtcblxuXHRcdFx0Ly8gQ2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2Rcblx0XHRcdGlmICggbG9ja2VkICkge1xuXG5cdFx0XHRcdC8vIEtlZXAgYW4gZW1wdHkgbGlzdCBpZiB3ZSBoYXZlIGRhdGEgZm9yIGZ1dHVyZSBhZGQgY2FsbHNcblx0XHRcdFx0aWYgKCBtZW1vcnkgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgdGhpcyBvYmplY3QgaXMgc3BlbnRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsaXN0ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdFxuXHRcdHNlbGYgPSB7XG5cblx0XHRcdC8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29sbGVjdGlvbiBvZiBjYWxsYmFja3MgdG8gdGhlIGxpc3Rcblx0XHRcdGFkZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblxuXHRcdFx0XHRcdC8vIElmIHdlIGhhdmUgbWVtb3J5IGZyb20gYSBwYXN0IHJ1biwgd2Ugc2hvdWxkIGZpcmUgYWZ0ZXIgYWRkaW5nXG5cdFx0XHRcdFx0aWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGggLSAxO1xuXHRcdFx0XHRcdFx0cXVldWUucHVzaCggbWVtb3J5ICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0KCBmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoICFvcHRpb25zLnVuaXF1ZSB8fCAhc2VsZi5oYXMoIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdC5wdXNoKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcubGVuZ3RoICYmIHRvVHlwZSggYXJnICkgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5XG5cdFx0XHRcdFx0XHRcdFx0YWRkKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdH0gKSggYXJndW1lbnRzICk7XG5cblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhlIGxpc3Rcblx0XHRcdHJlbW92ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0dmFyIGluZGV4O1xuXHRcdFx0XHRcdHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0bGlzdC5zcGxpY2UoIGluZGV4LCAxICk7XG5cblx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlc1xuXHRcdFx0XHRcdFx0aWYgKCBpbmRleCA8PSBmaXJpbmdJbmRleCApIHtcblx0XHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXgtLTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LlxuXHRcdFx0Ly8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuXG5cdFx0XHRoYXM6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0cmV0dXJuIGZuID9cblx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDpcblx0XHRcdFx0XHRsaXN0Lmxlbmd0aCA+IDA7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0XG5cdFx0XHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBEaXNhYmxlIC5maXJlIGFuZCAuYWRkXG5cdFx0XHQvLyBBYm9ydCBhbnkgY3VycmVudC9wZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdC8vIENsZWFyIGFsbCBjYWxsYmFja3MgYW5kIHZhbHVlc1xuXHRcdFx0ZGlzYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxvY2tlZCA9IHF1ZXVlID0gW107XG5cdFx0XHRcdGxpc3QgPSBtZW1vcnkgPSBcIlwiO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRkaXNhYmxlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhbGlzdDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmVcblx0XHRcdC8vIEFsc28gZGlzYWJsZSAuYWRkIHVubGVzcyB3ZSBoYXZlIG1lbW9yeSAoc2luY2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QpXG5cdFx0XHQvLyBBYm9ydCBhbnkgcGVuZGluZyBleGVjdXRpb25zXG5cdFx0XHRsb2NrOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0aWYgKCAhbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0bG9ja2VkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhbG9ja2VkO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkge1xuXHRcdFx0XHRpZiAoICFsb2NrZWQgKSB7XG5cdFx0XHRcdFx0YXJncyA9IGFyZ3MgfHwgW107XG5cdFx0XHRcdFx0YXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBhcmdzICk7XG5cdFx0XHRcdFx0aWYgKCAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXG5cdFx0XHRmaXJlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWZpcmVkO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0cmV0dXJuIHNlbGY7XG59O1xuXG5cbmZ1bmN0aW9uIElkZW50aXR5KCB2ICkge1xuXHRyZXR1cm4gdjtcbn1cbmZ1bmN0aW9uIFRocm93ZXIoIGV4ICkge1xuXHR0aHJvdyBleDtcbn1cblxuZnVuY3Rpb24gYWRvcHRWYWx1ZSggdmFsdWUsIHJlc29sdmUsIHJlamVjdCwgbm9WYWx1ZSApIHtcblx0dmFyIG1ldGhvZDtcblxuXHR0cnkge1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0IHRvIHByaXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvclxuXHRcdGlmICggdmFsdWUgJiYgaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS5wcm9taXNlICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSApLmRvbmUoIHJlc29sdmUgKS5mYWlsKCByZWplY3QgKTtcblxuXHRcdC8vIE90aGVyIHRoZW5hYmxlc1xuXHRcdH0gZWxzZSBpZiAoIHZhbHVlICYmIGlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUudGhlbiApICkgKSB7XG5cdFx0XHRtZXRob2QuY2FsbCggdmFsdWUsIHJlc29sdmUsIHJlamVjdCApO1xuXG5cdFx0Ly8gT3RoZXIgbm9uLXRoZW5hYmxlc1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIENvbnRyb2wgYHJlc29sdmVgIGFyZ3VtZW50cyBieSBsZXR0aW5nIEFycmF5I3NsaWNlIGNhc3QgYm9vbGVhbiBgbm9WYWx1ZWAgdG8gaW50ZWdlcjpcblx0XHRcdC8vICogZmFsc2U6IFsgdmFsdWUgXS5zbGljZSggMCApID0+IHJlc29sdmUoIHZhbHVlIClcblx0XHRcdC8vICogdHJ1ZTogWyB2YWx1ZSBdLnNsaWNlKCAxICkgPT4gcmVzb2x2ZSgpXG5cdFx0XHRyZXNvbHZlLmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXS5zbGljZSggbm9WYWx1ZSApICk7XG5cdFx0fVxuXG5cdC8vIEZvciBQcm9taXNlcy9BKywgY29udmVydCBleGNlcHRpb25zIGludG8gcmVqZWN0aW9uc1xuXHQvLyBTaW5jZSBqUXVlcnkud2hlbiBkb2Vzbid0IHVud3JhcCB0aGVuYWJsZXMsIHdlIGNhbiBza2lwIHRoZSBleHRyYSBjaGVja3MgYXBwZWFyaW5nIGluXG5cdC8vIERlZmVycmVkI3RoZW4gdG8gY29uZGl0aW9uYWxseSBzdXBwcmVzcyByZWplY3Rpb24uXG5cdH0gY2F0Y2ggKCB2YWx1ZSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIG9ubHlcblx0XHQvLyBTdHJpY3QgbW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQgZ2xvYmFsLW9iamVjdCBjb250ZXh0XG5cdFx0cmVqZWN0LmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXSApO1xuXHR9XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHREZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7XG5cdFx0dmFyIHR1cGxlcyA9IFtcblxuXHRcdFx0XHQvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgY2FsbGJhY2tzLFxuXHRcdFx0XHQvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmluYWwgc3RhdGVdXG5cdFx0XHRcdFsgXCJub3RpZnlcIiwgXCJwcm9ncmVzc1wiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJtZW1vcnlcIiApLCAyIF0sXG5cdFx0XHRcdFsgXCJyZXNvbHZlXCIsIFwiZG9uZVwiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSwgMCwgXCJyZXNvbHZlZFwiIF0sXG5cdFx0XHRcdFsgXCJyZWplY3RcIiwgXCJmYWlsXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAxLCBcInJlamVjdGVkXCIgXVxuXHRcdFx0XSxcblx0XHRcdHN0YXRlID0gXCJwZW5kaW5nXCIsXG5cdFx0XHRwcm9taXNlID0ge1xuXHRcdFx0XHRzdGF0ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0YXRlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRhbHdheXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGRlZmVycmVkLmRvbmUoIGFyZ3VtZW50cyApLmZhaWwoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRcImNhdGNoXCI6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0cGlwZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkge1xuXHRcdFx0XHRcdHZhciBmbnMgPSBhcmd1bWVudHM7XG5cblx0XHRcdFx0XHRyZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gTWFwIHR1cGxlcyAocHJvZ3Jlc3MsIGRvbmUsIGZhaWwpIHRvIGFyZ3VtZW50cyAoZG9uZSwgZmFpbCwgcHJvZ3Jlc3MpXG5cdFx0XHRcdFx0XHRcdHZhciBmbiA9IGlzRnVuY3Rpb24oIGZuc1sgdHVwbGVbIDQgXSBdICkgJiYgZm5zWyB0dXBsZVsgNCBdIF07XG5cblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmRvbmUoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVzb2x2ZSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlamVjdCB9KVxuXHRcdFx0XHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCAmJiBpc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC5wcm9taXNlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LnByb2dyZXNzKCBuZXdEZWZlci5ub3RpZnkgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXJbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50c1xuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdGZucyA9IG51bGw7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblByb2dyZXNzICkge1xuXHRcdFx0XHRcdHZhciBtYXhEZXB0aCA9IDA7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcmVzb2x2ZSggZGVwdGgsIGRlZmVycmVkLCBoYW5kbGVyLCBzcGVjaWFsICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0YXJncyA9IGFyZ3VtZW50cyxcblx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQsIHRoZW47XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4zXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01OVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWdub3JlIGRvdWJsZS1yZXNvbHV0aW9uIGF0dGVtcHRzXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoIDwgbWF4RGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQgPSBoYW5kbGVyLmFwcGx5KCB0aGF0LCBhcmdzICk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjFcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTQ4XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkID09PSBkZWZlcnJlZC5wcm9taXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoIFwiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uXCIgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbnMgMi4zLjMuMSwgMy41XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01NFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNzVcblx0XHRcdFx0XHRcdFx0XHRcdC8vIFJldHJpZXZlIGB0aGVuYCBvbmx5IG9uY2Vcblx0XHRcdFx0XHRcdFx0XHRcdHRoZW4gPSByZXR1cm5lZCAmJlxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBjaGVjayBvYmplY3RzIGFuZCBmdW5jdGlvbnMgZm9yIHRoZW5hYmlsaXR5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCggdHlwZW9mIHJldHVybmVkID09PSBcIm9iamVjdFwiIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHJldHVybmVkID09PSBcImZ1bmN0aW9uXCIgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC50aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgYSByZXR1cm5lZCB0aGVuYWJsZVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCB0aGVuICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3BlY2lhbCBwcm9jZXNzb3JzIChub3RpZnkpIGp1c3Qgd2FpdCBmb3IgcmVzb2x1dGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWwgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGFsc28gaG9vayBpbnRvIHByb2dyZXNzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgZGlzcmVnYXJkIG9sZGVyIHJlc29sdXRpb24gdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWF4RGVwdGgrKztcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoZW4uY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzID0gWyByZXR1cm5lZCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gUHJvY2VzcyB0aGUgdmFsdWUocylcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmYXVsdCBwcm9jZXNzIGlzIHJlc29sdmVcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCBzcGVjaWFsIHx8IGRlZmVycmVkLnJlc29sdmVXaXRoICkoIHRoYXQsIGFyZ3MgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25zXG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcyA9IHNwZWNpYWwgP1xuXHRcdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rKCBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuNC4xXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBJZ25vcmUgcG9zdC1yZXNvbHV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoICsgMSA+PSBtYXhEZXB0aCApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGhhbmRsZXIgIT09IFRocm93ZXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIGUgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuMVxuXHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01N1xuXHRcdFx0XHRcdFx0XHQvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tXG5cdFx0XHRcdFx0XHRcdC8vIHN1YnNlcXVlbnQgZXJyb3JzXG5cdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcygpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ2FsbCBhbiBvcHRpb25hbCBob29rIHRvIHJlY29yZCB0aGUgc3RhY2ssIGluIGNhc2Ugb2YgZXhjZXB0aW9uXG5cdFx0XHRcdFx0XHRcdFx0Ly8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5zdGFja1RyYWNlID0galF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblxuXHRcdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25Qcm9ncmVzcyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlci5ub3RpZnlXaXRoXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDEgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uRnVsZmlsbGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25GdWxmaWxsZWQgOlxuXHRcdFx0XHRcdFx0XHRcdFx0SWRlbnRpdHlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAyIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25SZWplY3RlZCA6XG5cdFx0XHRcdFx0XHRcdFx0XHRUaHJvd2VyXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkXG5cdFx0XHRcdC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3Rcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRcdFx0XHRyZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWZlcnJlZCA9IHt9O1xuXG5cdFx0Ly8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kc1xuXHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHtcblx0XHRcdHZhciBsaXN0ID0gdHVwbGVbIDIgXSxcblx0XHRcdFx0c3RhdGVTdHJpbmcgPSB0dXBsZVsgNSBdO1xuXG5cdFx0XHQvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkXG5cdFx0XHQvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZFxuXHRcdFx0cHJvbWlzZVsgdHVwbGVbIDEgXSBdID0gbGlzdC5hZGQ7XG5cblx0XHRcdC8vIEhhbmRsZSBzdGF0ZVxuXHRcdFx0aWYgKCBzdGF0ZVN0cmluZyApIHtcblx0XHRcdFx0bGlzdC5hZGQoXG5cdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZXNvbHZlZFwiIChpLmUuLCBmdWxmaWxsZWQpXG5cdFx0XHRcdFx0XHQvLyBzdGF0ZSA9IFwicmVqZWN0ZWRcIlxuXHRcdFx0XHRcdFx0c3RhdGUgPSBzdGF0ZVN0cmluZztcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHR0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5kaXNhYmxlXG5cdFx0XHRcdFx0dHVwbGVzWyAzIC0gaSBdWyAzIF0uZGlzYWJsZSxcblxuXHRcdFx0XHRcdC8vIHByb2dyZXNzX2NhbGxiYWNrcy5sb2NrXG5cdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDIgXS5sb2NrLFxuXG5cdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAzIF0ubG9ja1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5maXJlXG5cdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0bGlzdC5hZGQoIHR1cGxlWyAzIF0uZmlyZSApO1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQubm90aWZ5V2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmUgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVzb2x2ZVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3QgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVqZWN0V2l0aCguLi4pIH1cblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHVuZGVmaW5lZCA6IHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH07XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlV2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdFdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xuXHRcdH0gKTtcblxuXHRcdC8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJvbWlzZVxuXHRcdHByb21pc2UucHJvbWlzZSggZGVmZXJyZWQgKTtcblxuXHRcdC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnlcblx0XHRpZiAoIGZ1bmMgKSB7XG5cdFx0XHRmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBkb25lIVxuXHRcdHJldHVybiBkZWZlcnJlZDtcblx0fSxcblxuXHQvLyBEZWZlcnJlZCBoZWxwZXJcblx0d2hlbjogZnVuY3Rpb24oIHNpbmdsZVZhbHVlICkge1xuXHRcdHZhclxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bmNvbXBsZXRlZCBzdWJvcmRpbmF0ZXNcblx0XHRcdHJlbWFpbmluZyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cblx0XHRcdC8vIGNvdW50IG9mIHVucHJvY2Vzc2VkIGFyZ3VtZW50c1xuXHRcdFx0aSA9IHJlbWFpbmluZyxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgZnVsZmlsbG1lbnQgZGF0YVxuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gQXJyYXkoIGkgKSxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblxuXHRcdFx0Ly8gdGhlIG1hc3RlciBEZWZlcnJlZFxuXHRcdFx0bWFzdGVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cblx0XHRcdC8vIHN1Ym9yZGluYXRlIGNhbGxiYWNrIGZhY3Rvcnlcblx0XHRcdHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXNvbHZlQ29udGV4dHNbIGkgXSA9IHRoaXM7XG5cdFx0XHRcdFx0cmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlO1xuXHRcdFx0XHRcdGlmICggISggLS1yZW1haW5pbmcgKSApIHtcblx0XHRcdFx0XHRcdG1hc3Rlci5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblxuXHRcdC8vIFNpbmdsZS0gYW5kIGVtcHR5IGFyZ3VtZW50cyBhcmUgYWRvcHRlZCBsaWtlIFByb21pc2UucmVzb2x2ZVxuXHRcdGlmICggcmVtYWluaW5nIDw9IDEgKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUsIG1hc3Rlci5yZWplY3QsXG5cdFx0XHRcdCFyZW1haW5pbmcgKTtcblxuXHRcdFx0Ly8gVXNlIC50aGVuKCkgdG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKVxuXHRcdFx0aWYgKCBtYXN0ZXIuc3RhdGUoKSA9PT0gXCJwZW5kaW5nXCIgfHxcblx0XHRcdFx0aXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdICYmIHJlc29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7XG5cblx0XHRcdFx0cmV0dXJuIG1hc3Rlci50aGVuKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gTXVsdGlwbGUgYXJndW1lbnRzIGFyZSBhZ2dyZWdhdGVkIGxpa2UgUHJvbWlzZS5hbGwgYXJyYXkgZWxlbWVudHNcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdGFkb3B0VmFsdWUoIHJlc29sdmVWYWx1ZXNbIGkgXSwgdXBkYXRlRnVuYyggaSApLCBtYXN0ZXIucmVqZWN0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1hc3Rlci5wcm9taXNlKCk7XG5cdH1cbn0gKTtcblxuXG4vLyBUaGVzZSB1c3VhbGx5IGluZGljYXRlIGEgcHJvZ3JhbW1lciBtaXN0YWtlIGR1cmluZyBkZXZlbG9wbWVudCxcbi8vIHdhcm4gYWJvdXQgdGhlbSBBU0FQIHJhdGhlciB0aGFuIHN3YWxsb3dpbmcgdGhlbSBieSBkZWZhdWx0LlxudmFyIHJlcnJvck5hbWVzID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87XG5cbmpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24oIGVycm9yLCBzdGFjayApIHtcblxuXHQvLyBTdXBwb3J0OiBJRSA4IC0gOSBvbmx5XG5cdC8vIENvbnNvbGUgZXhpc3RzIHdoZW4gZGV2IHRvb2xzIGFyZSBvcGVuLCB3aGljaCBjYW4gaGFwcGVuIGF0IGFueSB0aW1lXG5cdGlmICggd2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUud2FybiAmJiBlcnJvciAmJiByZXJyb3JOYW1lcy50ZXN0KCBlcnJvci5uYW1lICkgKSB7XG5cdFx0d2luZG93LmNvbnNvbGUud2FybiggXCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0aW9uOiBcIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFjayApO1xuXHR9XG59O1xuXG5cblxuXG5qUXVlcnkucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHR0aHJvdyBlcnJvcjtcblx0fSApO1xufTtcblxuXG5cblxuLy8gVGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5XG52YXIgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7XG5cbmpRdWVyeS5mbi5yZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHtcblxuXHRyZWFkeUxpc3Rcblx0XHQudGhlbiggZm4gKVxuXG5cdFx0Ly8gV3JhcCBqUXVlcnkucmVhZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29rdXBcblx0XHQvLyBoYXBwZW5zIGF0IHRoZSB0aW1lIG9mIGVycm9yIGhhbmRsaW5nIGluc3RlYWQgb2YgY2FsbGJhY2tcblx0XHQvLyByZWdpc3RyYXRpb24uXG5cdFx0LmNhdGNoKCBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdFx0XHRqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7XG5cdFx0fSApO1xuXG5cdHJldHVybiB0aGlzO1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuXG5cdGlzUmVhZHk6IGZhbHNlLFxuXG5cdC8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmVcblx0Ly8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODFcblx0cmVhZHlXYWl0OiAxLFxuXG5cdC8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHlcblx0cmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkge1xuXG5cdFx0Ly8gQWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeVxuXHRcdGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJlbWVtYmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeVxuXHRcdGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTtcblxuXHRcdC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBuZWVkIGJlXG5cdFx0aWYgKCB3YWl0ICE9PSB0cnVlICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZVxuXHRcdHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkucmVhZHkudGhlbiA9IHJlYWR5TGlzdC50aGVuO1xuXG4vLyBUaGUgcmVhZHkgZXZlbnQgaGFuZGxlciBhbmQgc2VsZiBjbGVhbnVwIG1ldGhvZFxuZnVuY3Rpb24gY29tcGxldGVkKCkge1xuXHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG5cdGpRdWVyeS5yZWFkeSgpO1xufVxuXG4vLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZFxuLy8gYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMCBvbmx5XG4vLyBPbGRlciBJRSBzb21ldGltZXMgc2lnbmFscyBcImludGVyYWN0aXZlXCIgdG9vIHNvb25cbmlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiIHx8XG5cdCggZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gXCJsb2FkaW5nXCIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCApICkge1xuXG5cdC8vIEhhbmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxvdyBzY3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0byBkZWxheSByZWFkeVxuXHR3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7XG5cbn0gZWxzZSB7XG5cblx0Ly8gVXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFja1xuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cblx0Ly8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmtcblx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBjb21wbGV0ZWQgKTtcbn1cblxuXG5cblxuLy8gTXVsdGlmdW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNldCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uXG4vLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBiZSBleGVjdXRlZCBpZiBpdCdzIGEgZnVuY3Rpb25cbnZhciBhY2Nlc3MgPSBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVtcHR5R2V0LCByYXcgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBlbGVtcy5sZW5ndGgsXG5cdFx0YnVsayA9IGtleSA9PSBudWxsO1xuXG5cdC8vIFNldHMgbWFueSB2YWx1ZXNcblx0aWYgKCB0b1R5cGUoIGtleSApID09PSBcIm9iamVjdFwiICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cdFx0Zm9yICggaSBpbiBrZXkgKSB7XG5cdFx0XHRhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTtcblx0XHR9XG5cblx0Ly8gU2V0cyBvbmUgdmFsdWVcblx0fSBlbHNlIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXG5cdFx0aWYgKCAhaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJhdyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBidWxrICkge1xuXG5cdFx0XHQvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhlIGVudGlyZSBzZXRcblx0XHRcdGlmICggcmF3ICkge1xuXHRcdFx0XHRmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTtcblx0XHRcdFx0Zm4gPSBudWxsO1xuXG5cdFx0XHQvLyAuLi5leGNlcHQgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24gdmFsdWVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidWxrID0gZm47XG5cdFx0XHRcdGZuID0gZnVuY3Rpb24oIGVsZW0sIGtleSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRmbihcblx0XHRcdFx0XHRlbGVtc1sgaSBdLCBrZXksIHJhdyA/XG5cdFx0XHRcdFx0dmFsdWUgOlxuXHRcdFx0XHRcdHZhbHVlLmNhbGwoIGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBjaGFpbmFibGUgKSB7XG5cdFx0cmV0dXJuIGVsZW1zO1xuXHR9XG5cblx0Ly8gR2V0c1xuXHRpZiAoIGJ1bGsgKSB7XG5cdFx0cmV0dXJuIGZuLmNhbGwoIGVsZW1zICk7XG5cdH1cblxuXHRyZXR1cm4gbGVuID8gZm4oIGVsZW1zWyAwIF0sIGtleSApIDogZW1wdHlHZXQ7XG59O1xuXG5cbi8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZ1xudmFyIHJtc1ByZWZpeCA9IC9eLW1zLS8sXG5cdHJkYXNoQWxwaGEgPSAvLShbYS16XSkvZztcblxuLy8gVXNlZCBieSBjYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpXG5mdW5jdGlvbiBmY2FtZWxDYXNlKCBhbGwsIGxldHRlciApIHtcblx0cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xufVxuXG4vLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDE1XG4vLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHByZWZpeCAoIzk1NzIpXG5mdW5jdGlvbiBjYW1lbENhc2UoIHN0cmluZyApIHtcblx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCBybXNQcmVmaXgsIFwibXMtXCIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7XG59XG52YXIgYWNjZXB0RGF0YSA9IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHQvLyBBY2NlcHRzIG9ubHk6XG5cdC8vICAtIE5vZGVcblx0Ly8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERVxuXHQvLyAgICAtIE5vZGUuRE9DVU1FTlRfTk9ERVxuXHQvLyAgLSBPYmplY3Rcblx0Ly8gICAgLSBBbnlcblx0cmV0dXJuIG93bmVyLm5vZGVUeXBlID09PSAxIHx8IG93bmVyLm5vZGVUeXBlID09PSA5IHx8ICEoICtvd25lci5ub2RlVHlwZSApO1xufTtcblxuXG5cblxuZnVuY3Rpb24gRGF0YSgpIHtcblx0dGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVpZCsrO1xufVxuXG5EYXRhLnVpZCA9IDE7XG5cbkRhdGEucHJvdG90eXBlID0ge1xuXG5cdGNhY2hlOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cblx0XHQvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGVcblx0XHR2YXIgdmFsdWUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHQvLyBJZiBub3QsIGNyZWF0ZSBvbmVcblx0XHRpZiAoICF2YWx1ZSApIHtcblx0XHRcdHZhbHVlID0ge307XG5cblx0XHRcdC8vIFdlIGNhbiBhY2NlcHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLFxuXHRcdFx0Ly8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS5cblx0XHRcdC8vIEFsd2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBvd25lciApICkge1xuXG5cdFx0XHRcdC8vIElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdpZnktZWQgb3IgbG9vcGVkIG92ZXJcblx0XHRcdFx0Ly8gdXNlIHBsYWluIGFzc2lnbm1lbnRcblx0XHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB2YWx1ZTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHlcblx0XHRcdFx0Ly8gY29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUgcHJvcGVydHkgdG8gYmVcblx0XHRcdFx0Ly8gZGVsZXRlZCB3aGVuIGRhdGEgaXMgcmVtb3ZlZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIsIHRoaXMuZXhwYW5kbywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9LFxuXHRzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7XG5cdFx0dmFyIHByb3AsXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzXG5cdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBkYXRhICkgXSA9IHZhbHVlO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMgfSBdIGFyZ3Ncblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdFxuXHRcdFx0Zm9yICggcHJvcCBpbiBkYXRhICkge1xuXHRcdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlO1xuXHR9LFxuXHRnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzLmNhY2hlKCBvd25lciApIDpcblxuXHRcdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdICYmIG93bmVyWyB0aGlzLmV4cGFuZG8gXVsgY2FtZWxDYXNlKCBrZXkgKSBdO1xuXHR9LFxuXHRhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSApIHtcblxuXHRcdC8vIEluIGNhc2VzIHdoZXJlIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWRcblx0XHQvLyAgIDIuIEEgc3RyaW5nIGtleSB3YXMgc3BlY2lmaWVkLCBidXQgbm8gdmFsdWUgcHJvdmlkZWRcblx0XHQvL1xuXHRcdC8vIFRha2UgdGhlIFwicmVhZFwiIHBhdGggYW5kIGFsbG93IHRoZSBnZXQgbWV0aG9kIHRvIGRldGVybWluZVxuXHRcdC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gVGhlIGVudGlyZSBjYWNoZSBvYmplY3Rcblx0XHQvLyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5XG5cdFx0Ly9cblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiApICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSApIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0KCBvd25lciwga2V5ICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWVcblx0XHQvLyBhcmUgc3BlY2lmaWVkLCBzZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXNcblx0XHQvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vXG5cdFx0dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7XG5cblx0XHQvLyBTaW5jZSB0aGUgXCJzZXRcIiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHNcblx0XHQvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5O1xuXHR9LFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHZhciBpLFxuXHRcdFx0Y2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHRpZiAoIGNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXNcblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSgga2V5ICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYga2V5IGlzIGFuIGFycmF5IG9mIGtleXMuLi5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuXG5cdFx0XHRcdGtleSA9IGtleS5tYXAoIGNhbWVsQ2FzZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0a2V5ID0gY2FtZWxDYXNlKCBrZXkgKTtcblxuXHRcdFx0XHQvLyBJZiBhIGtleSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzLCB1c2UgaXQuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlXG5cdFx0XHRcdGtleSA9IGtleSBpbiBjYWNoZSA/XG5cdFx0XHRcdFx0WyBrZXkgXSA6XG5cdFx0XHRcdFx0KCBrZXkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpID0ga2V5Lmxlbmd0aDtcblxuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5WyBpIF0gXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgdGhlcmUncyBubyBtb3JlIGRhdGFcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1XG5cdFx0XHQvLyBXZWJraXQgJiBCbGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4gZGVsZXRpbmcgcHJvcGVydGllc1xuXHRcdFx0Ly8gZnJvbSBET00gbm9kZXMsIHNvIHNldCB0byB1bmRlZmluZWQgaW5zdGVhZFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3RlZClcblx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlbGV0ZSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0dmFyIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKTtcblx0fVxufTtcbnZhciBkYXRhUHJpdiA9IG5ldyBEYXRhKCk7XG5cbnZhciBkYXRhVXNlciA9IG5ldyBEYXRhKCk7XG5cblxuXG4vL1x0SW1wbGVtZW50YXRpb24gU3VtbWFyeVxuLy9cbi8vXHQxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoXG4vL1x0Mi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlXG4vL1x0XHRwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uXG4vL1x0My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCBcInByaXZhdGVcIiBhbmQgXCJ1c2VyXCIgZGF0YS5cbi8vXHQ0LiBfTmV2ZXJfIGV4cG9zZSBcInByaXZhdGVcIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpXG4vL1x0NS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpXG4vL1x0Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0XG5cbnZhciByYnJhY2UgPSAvXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sXG5cdHJtdWx0aURhc2ggPSAvW0EtWl0vZztcblxuZnVuY3Rpb24gZ2V0RGF0YSggZGF0YSApIHtcblx0aWYgKCBkYXRhID09PSBcInRydWVcIiApIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJmYWxzZVwiICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJudWxsXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZ1xuXHRpZiAoIGRhdGEgPT09ICtkYXRhICsgXCJcIiApIHtcblx0XHRyZXR1cm4gK2RhdGE7XG5cdH1cblxuXHRpZiAoIHJicmFjZS50ZXN0KCBkYXRhICkgKSB7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKTtcblx0fVxuXG5cdHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkge1xuXHR2YXIgbmFtZTtcblxuXHQvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55XG5cdC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZVxuXHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdG5hbWUgPSBcImRhdGEtXCIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgXCItJCZcIiApLnRvTG93ZXJDYXNlKCk7XG5cdFx0ZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGF0YSA9IGdldERhdGEoIGRhdGEgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge31cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRkYXRhVXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKTtcblx0fSxcblxuXHRkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH0sXG5cblx0Ly8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWRcblx0Ly8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuXG5cdF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0X3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIGksIG5hbWUsIGRhdGEsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0YXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmlidXRlcztcblxuXHRcdC8vIEdldHMgYWxsIHZhbHVlc1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHRoaXMubGVuZ3RoICkge1xuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIgKSApIHtcblx0XHRcdFx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBUaGUgYXR0cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKCMxNDg5NClcblx0XHRcdFx0XHRcdGlmICggYXR0cnNbIGkgXSApIHtcblx0XHRcdFx0XHRcdFx0bmFtZSA9IGF0dHJzWyBpIF0ubmFtZTtcblx0XHRcdFx0XHRcdFx0aWYgKCBuYW1lLmluZGV4T2YoIFwiZGF0YS1cIiApID09PSAwICkge1xuXHRcdFx0XHRcdFx0XHRcdG5hbWUgPSBjYW1lbENhc2UoIG5hbWUuc2xpY2UoIDUgKSApO1xuXHRcdFx0XHRcdFx0XHRcdGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9XG5cblx0XHQvLyBTZXRzIG11bHRpcGxlIHZhbHVlc1xuXHRcdGlmICggdHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhVXNlci5zZXQoIHRoaXMsIGtleSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBkYXRhO1xuXG5cdFx0XHQvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eVxuXHRcdFx0Ly8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGVcblx0XHRcdC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0XG5cdFx0XHQvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsXG5cdFx0XHQvLyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLlxuXHRcdFx0aWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZVxuXHRcdFx0XHQvLyBUaGUga2V5IHdpbGwgYWx3YXlzIGJlIGNhbWVsQ2FzZWQgaW4gRGF0YVxuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIFwiZGlzY292ZXJcIiB0aGUgZGF0YSBpblxuXHRcdFx0XHQvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJzXG5cdFx0XHRcdGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gV2UgdHJpZWQgcmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCB0aGUgZGF0YS4uLlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBXZSBhbHdheXMgc3RvcmUgdGhlIGNhbWVsQ2FzZWQga2V5XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApO1xuXHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgdHJ1ZSApO1xuXHR9LFxuXG5cdHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkYXRhVXNlci5yZW1vdmUoIHRoaXMsIGtleSApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBxdWV1ZTtcblxuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHR5cGUgPSAoIHR5cGUgfHwgXCJmeFwiICkgKyBcInF1ZXVlXCI7XG5cdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHQvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwXG5cdFx0XHRpZiAoIGRhdGEgKSB7XG5cdFx0XHRcdGlmICggIXF1ZXVlIHx8IEFycmF5LmlzQXJyYXkoIGRhdGEgKSApIHtcblx0XHRcdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgdHlwZSwgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVldWUucHVzaCggZGF0YSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcXVldWUgfHwgW107XG5cdFx0fVxuXHR9LFxuXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLFxuXHRcdFx0c3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCksXG5cdFx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgdHlwZSApLFxuXHRcdFx0bmV4dCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApO1xuXHRcdFx0fTtcblxuXHRcdC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWxcblx0XHRpZiAoIGZuID09PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdHN0YXJ0TGVuZ3RoLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblxuXHRcdFx0Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZ1xuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBkZXF1ZXVlZFxuXHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgKSB7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoIFwiaW5wcm9ncmVzc1wiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb25cblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0Zm4uY2FsbCggZWxlbSwgbmV4dCwgaG9va3MgKTtcblx0XHR9XG5cblx0XHRpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gTm90IHB1YmxpYyAtIGdlbmVyYXRlIGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmVcblx0X3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHZhciBrZXkgPSB0eXBlICsgXCJxdWV1ZUhvb2tzXCI7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmdldCggZWxlbSwga2V5ICkgfHwgZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBrZXksIHtcblx0XHRcdGVtcHR5OiBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKS5hZGQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFsgdHlwZSArIFwicXVldWVcIiwga2V5IF0gKTtcblx0XHRcdH0gKVxuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgc2V0dGVyID0gMjtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRkYXRhID0gdHlwZTtcblx0XHRcdHR5cGUgPSBcImZ4XCI7XG5cdFx0XHRzZXR0ZXItLTtcblx0XHR9XG5cblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWyAwIF0sIHR5cGUgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMgOlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7XG5cblx0XHRcdFx0Ly8gRW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWVcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgJiYgcXVldWVbIDAgXSAhPT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHR9LFxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0fSApO1xuXHR9LFxuXHRjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdH0sXG5cblx0Ly8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZVxuXHQvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdClcblx0cHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHtcblx0XHR2YXIgdG1wLFxuXHRcdFx0Y291bnQgPSAxLFxuXHRcdFx0ZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGVsZW1lbnRzID0gdGhpcyxcblx0XHRcdGkgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJlc29sdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhKCAtLWNvdW50ICkgKSB7XG5cdFx0XHRcdFx0ZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRvYmogPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyBcInF1ZXVlSG9va3NcIiApO1xuXHRcdFx0aWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkge1xuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0XHR0bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlc29sdmUoKTtcblx0XHRyZXR1cm4gZGVmZXIucHJvbWlzZSggb2JqICk7XG5cdH1cbn0gKTtcbnZhciBwbnVtID0gKCAvWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLyApLnNvdXJjZTtcblxudmFyIHJjc3NOdW0gPSBuZXcgUmVnRXhwKCBcIl4oPzooWystXSk9fCkoXCIgKyBwbnVtICsgXCIpKFthLXolXSopJFwiLCBcImlcIiApO1xuXG5cbnZhciBjc3NFeHBhbmQgPSBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXTtcblxudmFyIGlzSGlkZGVuV2l0aGluVHJlZSA9IGZ1bmN0aW9uKCBlbGVtLCBlbCApIHtcblxuXHRcdC8vIGlzSGlkZGVuV2l0aGluVHJlZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uO1xuXHRcdC8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudFxuXHRcdGVsZW0gPSBlbCB8fCBlbGVtO1xuXG5cdFx0Ly8gSW5saW5lIHN0eWxlIHRydW1wcyBhbGxcblx0XHRyZXR1cm4gZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIm5vbmVcIiB8fFxuXHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmXG5cblx0XHRcdC8vIE90aGVyd2lzZSwgY2hlY2sgY29tcHV0ZWQgc3R5bGVcblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MyAtIDQ1XG5cdFx0XHQvLyBEaXNjb25uZWN0ZWQgZWxlbWVudHMgY2FuIGhhdmUgY29tcHV0ZWQgZGlzcGxheTogbm9uZSwgc28gZmlyc3QgY29uZmlybSB0aGF0IGVsZW0gaXNcblx0XHRcdC8vIGluIHRoZSBkb2N1bWVudC5cblx0XHRcdGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgJiZcblxuXHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSA9PT0gXCJub25lXCI7XG5cdH07XG5cbnZhciBzd2FwID0gZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrLCBhcmdzICkge1xuXHR2YXIgcmV0LCBuYW1lLFxuXHRcdG9sZCA9IHt9O1xuXG5cdC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0b2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFtZSBdO1xuXHR9XG5cblx0cmV0ID0gY2FsbGJhY2suYXBwbHkoIGVsZW0sIGFyZ3MgfHwgW10gKTtcblxuXHQvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn07XG5cblxuXG5cbmZ1bmN0aW9uIGFkanVzdENTUyggZWxlbSwgcHJvcCwgdmFsdWVQYXJ0cywgdHdlZW4gKSB7XG5cdHZhciBhZGp1c3RlZCwgc2NhbGUsXG5cdFx0bWF4SXRlcmF0aW9ucyA9IDIwLFxuXHRcdGN1cnJlbnRWYWx1ZSA9IHR3ZWVuID9cblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uY3VyKCk7XG5cdFx0XHR9IDpcblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5LmNzcyggZWxlbSwgcHJvcCwgXCJcIiApO1xuXHRcdFx0fSxcblx0XHRpbml0aWFsID0gY3VycmVudFZhbHVlKCksXG5cdFx0dW5pdCA9IHZhbHVlUGFydHMgJiYgdmFsdWVQYXJ0c1sgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApLFxuXG5cdFx0Ly8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXNcblx0XHRpbml0aWFsSW5Vbml0ID0gKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0gXCJweFwiICYmICtpbml0aWFsICkgJiZcblx0XHRcdHJjc3NOdW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7XG5cblx0aWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAhPT0gdW5pdCApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD01NFxuXHRcdC8vIEhhbHZlIHRoZSBpdGVyYXRpb24gdGFyZ2V0IHZhbHVlIHRvIHByZXZlbnQgaW50ZXJmZXJlbmNlIGZyb20gQ1NTIHVwcGVyIGJvdW5kcyAoZ2gtMjE0NClcblx0XHRpbml0aWFsID0gaW5pdGlhbCAvIDI7XG5cblx0XHQvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzXG5cdFx0dW5pdCA9IHVuaXQgfHwgaW5pdGlhbEluVW5pdFsgMyBdO1xuXG5cdFx0Ly8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnRcblx0XHRpbml0aWFsSW5Vbml0ID0gK2luaXRpYWwgfHwgMTtcblxuXHRcdHdoaWxlICggbWF4SXRlcmF0aW9ucy0tICkge1xuXG5cdFx0XHQvLyBFdmFsdWF0ZSBhbmQgdXBkYXRlIG91ciBiZXN0IGd1ZXNzIChkb3VibGluZyBndWVzc2VzIHRoYXQgemVybyBvdXQpLlxuXHRcdFx0Ly8gRmluaXNoIGlmIHRoZSBzY2FsZSBlcXVhbHMgb3IgY3Jvc3NlcyAxIChtYWtpbmcgdGhlIG9sZCpuZXcgcHJvZHVjdCBub24tcG9zaXRpdmUpLlxuXHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXHRcdFx0aWYgKCAoIDEgLSBzY2FsZSApICogKCAxIC0gKCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCB8fCAwLjUgKSApIDw9IDAgKSB7XG5cdFx0XHRcdG1heEl0ZXJhdGlvbnMgPSAwO1xuXHRcdFx0fVxuXHRcdFx0aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTtcblxuXHRcdH1cblxuXHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0ICogMjtcblx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uXG5cdFx0dmFsdWVQYXJ0cyA9IHZhbHVlUGFydHMgfHwgW107XG5cdH1cblxuXHRpZiAoIHZhbHVlUGFydHMgKSB7XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsSW5Vbml0IHx8ICtpbml0aWFsIHx8IDA7XG5cblx0XHQvLyBBcHBseSByZWxhdGl2ZSBvZmZzZXQgKCs9Ly09KSBpZiBzcGVjaWZpZWRcblx0XHRhZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/XG5cdFx0XHRpbml0aWFsSW5Vbml0ICsgKCB2YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOlxuXHRcdFx0K3ZhbHVlUGFydHNbIDIgXTtcblx0XHRpZiAoIHR3ZWVuICkge1xuXHRcdFx0dHdlZW4udW5pdCA9IHVuaXQ7XG5cdFx0XHR0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7XG5cdFx0XHR0d2Vlbi5lbmQgPSBhZGp1c3RlZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFkanVzdGVkO1xufVxuXG5cbnZhciBkZWZhdWx0RGlzcGxheU1hcCA9IHt9O1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHtcblx0dmFyIHRlbXAsXG5cdFx0ZG9jID0gZWxlbS5vd25lckRvY3VtZW50LFxuXHRcdG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSxcblx0XHRkaXNwbGF5ID0gZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF07XG5cblx0aWYgKCBkaXNwbGF5ICkge1xuXHRcdHJldHVybiBkaXNwbGF5O1xuXHR9XG5cblx0dGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxlbWVudCggbm9kZU5hbWUgKSApO1xuXHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggdGVtcCwgXCJkaXNwbGF5XCIgKTtcblxuXHR0ZW1wLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRlbXAgKTtcblxuXHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdGRpc3BsYXkgPSBcImJsb2NrXCI7XG5cdH1cblx0ZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF0gPSBkaXNwbGF5O1xuXG5cdHJldHVybiBkaXNwbGF5O1xufVxuXG5mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7XG5cdHZhciBkaXNwbGF5LCBlbGVtLFxuXHRcdHZhbHVlcyA9IFtdLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cblx0Ly8gRGV0ZXJtaW5lIG5ldyBkaXNwbGF5IHZhbHVlIGZvciBlbGVtZW50cyB0aGF0IG5lZWQgdG8gY2hhbmdlXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdO1xuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRkaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5O1xuXHRcdGlmICggc2hvdyApIHtcblxuXHRcdFx0Ly8gU2luY2Ugd2UgZm9yY2UgdmlzaWJpbGl0eSB1cG9uIGNhc2NhZGUtaGlkZGVuIGVsZW1lbnRzLCBhbiBpbW1lZGlhdGUgKGFuZCBzbG93KVxuXHRcdFx0Ly8gY2hlY2sgaXMgcmVxdWlyZWQgaW4gdGhpcyBmaXJzdCBsb29wIHVubGVzcyB3ZSBoYXZlIGEgbm9uZW1wdHkgZGlzcGxheSB2YWx1ZSAoZWl0aGVyXG5cdFx0XHQvLyBpbmxpbmUgb3IgYWJvdXQtdG8tYmUtcmVzdG9yZWQpXG5cdFx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZGlzcGxheVwiICkgfHwgbnVsbDtcblx0XHRcdFx0aWYgKCAhdmFsdWVzWyBpbmRleCBdICkge1xuXHRcdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGRpc3BsYXkgIT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBcIm5vbmVcIjtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB3aGF0IHdlJ3JlIG92ZXJ3cml0aW5nXG5cdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJkaXNwbGF5XCIsIGRpc3BsYXkgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93XG5cdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHtcblx0XHRcdGVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRzO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApO1xuXHR9LFxuXHRoaWRlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTtcblx0fSxcblx0dG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnNob3coKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcbnZhciByY2hlY2thYmxlVHlwZSA9ICggL14oPzpjaGVja2JveHxyYWRpbykkL2kgKTtcblxudmFyIHJ0YWdOYW1lID0gKCAvPChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSspL2kgKTtcblxudmFyIHJzY3JpcHRUeXBlID0gKCAvXiR8Xm1vZHVsZSR8XFwvKD86amF2YXxlY21hKXNjcmlwdC9pICk7XG5cblxuXG4vLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKVxudmFyIHdyYXBNYXAgPSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0b3B0aW9uOiBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF0sXG5cblx0Ly8gWEhUTUwgcGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGVcblx0Ly8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJzIGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlblxuXHQvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuXG5cdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0dHI6IFsgMiwgXCI8dGFibGU+PHRib2R5PlwiLCBcIjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxud3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uO1xuXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xud3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7XG5cblxuZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHQvLyBVc2UgdHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQgbWV0aG9kIGludm9jYXRpb24gb24gaG9zdCBvYmplY3RzICgjMTUxNTEpXG5cdHZhciByZXQ7XG5cblx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgXCIqXCIgKTtcblxuXHR9IGVsc2UgaWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdHJldCA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIHtcblx0XHRyZXQgPSBbXTtcblx0fVxuXG5cdGlmICggdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIG5vZGVOYW1lKCBjb250ZXh0LCB0YWcgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICk7XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufVxuXG5cbi8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZFxuZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZGF0YVByaXYuc2V0KFxuXHRcdFx0ZWxlbXNbIGkgXSxcblx0XHRcdFwiZ2xvYmFsRXZhbFwiLFxuXHRcdFx0IXJlZkVsZW1lbnRzIHx8IGRhdGFQcml2LmdldCggcmVmRWxlbWVudHNbIGkgXSwgXCJnbG9iYWxFdmFsXCIgKVxuXHRcdCk7XG5cdH1cbn1cblxuXG52YXIgcmh0bWwgPSAvPHwmIz9cXHcrOy87XG5cbmZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoIGVsZW1zLCBjb250ZXh0LCBzY3JpcHRzLCBzZWxlY3Rpb24sIGlnbm9yZWQgKSB7XG5cdHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosXG5cdFx0ZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRub2RlcyA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGVsZW0gPSBlbGVtc1sgaSBdO1xuXG5cdFx0aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7XG5cblx0XHRcdC8vIEFkZCBub2RlcyBkaXJlY3RseVxuXHRcdFx0aWYgKCB0b1R5cGUoIGVsZW0gKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7XG5cblx0XHRcdC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQgbm9kZVxuXHRcdFx0fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHtcblx0XHRcdFx0bm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7XG5cblx0XHRcdC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2Rlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApO1xuXG5cdFx0XHRcdC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb25cblx0XHRcdFx0dGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0O1xuXHRcdFx0XHR0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTtcblxuXHRcdFx0XHQvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnRcblx0XHRcdFx0aiA9IHdyYXBbIDAgXTtcblx0XHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdFx0dG1wID0gdG1wLmxhc3RDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXJcblx0XHRcdFx0dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0XHQvLyBFbnN1cmUgdGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIpXG5cdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRmcmFnbWVudC50ZXh0Q29udGVudCA9IFwiXCI7XG5cblx0aSA9IDA7XG5cdHdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBdICkgKSB7XG5cblx0XHQvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KVxuXHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkge1xuXHRcdFx0aWYgKCBpZ25vcmVkICkge1xuXHRcdFx0XHRpZ25vcmVkLnB1c2goIGVsZW0gKTtcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdC8vIEFwcGVuZCB0byBmcmFnbWVudFxuXHRcdHRtcCA9IGdldEFsbCggZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgXCJzY3JpcHRcIiApO1xuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGlmICggY29udGFpbnMgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCB0bXAgKTtcblx0XHR9XG5cblx0XHQvLyBDYXB0dXJlIGV4ZWN1dGFibGVzXG5cdFx0aWYgKCBzY3JpcHRzICkge1xuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRtcFsgaisrIF0gKSApIHtcblx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgXCJcIiApICkge1xuXHRcdFx0XHRcdHNjcmlwdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZyYWdtZW50O1xufVxuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICksXG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5XG5cdC8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5MDEpXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwicmFkaW9cIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcInRcIiApO1xuXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHlcblx0Ly8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzXG5cdHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcbn0gKSgpO1xudmFyIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG5cbnZhclxuXHRya2V5RXZlbnQgPSAvXmtleS8sXG5cdHJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLFxuXHRydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlxcLiguKyl8KS87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gU2VlICMxMzM5MyBmb3IgbW9yZSBpbmZvXG5mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0fSBjYXRjaCAoIGVyciApIHsgfVxufVxuXG5mdW5jdGlvbiBvbiggZWxlbSwgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgb25lICkge1xuXHR2YXIgb3JpZ0ZuLCB0eXBlO1xuXG5cdC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVyc1xuXHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtT2JqZWN0LCBkYXRhIClcblx0XHRcdGRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gZWxlbTtcblx0fVxuXG5cdGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7XG5cblx0XHQvLyAoIHR5cGVzLCBmbiApXG5cdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMsIHNlbGVjdG9yLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vICggdHlwZXMsIGRhdGEsIGZuIClcblx0XHRcdGZuID0gZGF0YTtcblx0XHRcdGRhdGEgPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHR9IGVsc2UgaWYgKCAhZm4gKSB7XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIG9uZSA9PT0gMSApIHtcblx0XHRvcmlnRm4gPSBmbjtcblx0XHRmbiA9IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvXG5cdFx0XHRqUXVlcnkoKS5vZmYoIGV2ZW50ICk7XG5cdFx0XHRyZXR1cm4gb3JpZ0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9O1xuXG5cdFx0Ly8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm5cblx0XHRmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTtcblx0fVxuXHRyZXR1cm4gZWxlbS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7XG5cdH0gKTtcbn1cblxuLypcbiAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS5cbiAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUgaWRlYXMuXG4gKi9cbmpRdWVyeS5ldmVudCA9IHtcblxuXHRnbG9iYWw6IHt9LFxuXG5cdGFkZDogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvciApIHtcblxuXHRcdHZhciBoYW5kbGVPYmpJbiwgZXZlbnRIYW5kbGUsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdC8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMpXG5cdFx0aWYgKCAhZWxlbURhdGEgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyXG5cdFx0aWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7XG5cdFx0XHRoYW5kbGVPYmpJbiA9IGhhbmRsZXI7XG5cdFx0XHRoYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjtcblx0XHRcdHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7XG5cdFx0fVxuXG5cdFx0Ly8gRW5zdXJlIHRoYXQgaW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRhY2ggdGltZVxuXHRcdC8vIEV2YWx1YXRlIGFnYWluc3QgZG9jdW1lbnRFbGVtZW50IGluIGNhc2UgZWxlbSBpcyBhIG5vbi1lbGVtZW50IG5vZGUgKGUuZy4sIGRvY3VtZW50KVxuXHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGRvY3VtZW50RWxlbWVudCwgc2VsZWN0b3IgKTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXJcblx0XHRpZiAoICFoYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrO1xuXHRcdH1cblxuXHRcdC8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRpZiAoICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0ZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0ge307XG5cdFx0fVxuXHRcdGlmICggISggZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgKSApIHtcblx0XHRcdGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7XG5cblx0XHRcdFx0Ly8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmRcblx0XHRcdFx0Ly8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZFxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgP1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2Vcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVGhlcmUgKm11c3QqIGJlIGEgdHlwZSwgbm8gYXR0YWNoaW5nIG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzXG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdlZCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNwZWNpYWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlXG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cblx0XHRcdC8vIFVwZGF0ZSBzcGVjaWFsIGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBoYW5kbGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVyc1xuXHRcdFx0aGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCgge1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRvcmlnVHlwZTogb3JpZ1R5cGUsXG5cdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdGhhbmRsZXI6IGhhbmRsZXIsXG5cdFx0XHRcdGd1aWQ6IGhhbmRsZXIuZ3VpZCxcblx0XHRcdFx0c2VsZWN0b3I6IHNlbGVjdG9yLFxuXHRcdFx0XHRuZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLFxuXHRcdFx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKVxuXHRcdFx0fSwgaGFuZGxlT2JqSW4gKTtcblxuXHRcdFx0Ly8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUgZmlyc3Rcblx0XHRcdGlmICggISggaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSApICkge1xuXHRcdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107XG5cdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwO1xuXG5cdFx0XHRcdC8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZVxuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnNldHVwIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdGlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHNwZWNpYWwuYWRkICkge1xuXHRcdFx0XHRzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblxuXHRcdFx0XHRpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkge1xuXHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnRcblx0XHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uXG5cdFx0XHRqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlO1xuXHRcdH1cblxuXHR9LFxuXG5cdC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZFR5cGVzICkge1xuXG5cdFx0dmFyIGosIG9yaWdDb3VudCwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdGlmICggIWVsZW1EYXRhIHx8ICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWRcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50XG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdO1xuXHRcdFx0dG1wID0gdG1wWyAyIF0gJiZcblx0XHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICk7XG5cblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcblx0XHRcdG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTtcblxuXHRcdFx0XHRpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmXG5cdFx0XHRcdFx0KCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiZcblx0XHRcdFx0XHQoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmXG5cdFx0XHRcdFx0KCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fFxuXHRcdFx0XHRcdFx0c2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcblx0XHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGosIDEgKTtcblxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNwZWNpYWwucmVtb3ZlICkge1xuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3Rcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxuXHRcdFx0aWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fFxuXHRcdFx0XHRcdHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBldmVudHNbIHR5cGUgXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZFxuXHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkge1xuXHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImhhbmRsZSBldmVudHNcIiApO1xuXHRcdH1cblx0fSxcblxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIG5hdGl2ZUV2ZW50ICkge1xuXG5cdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0dmFyIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggbmF0aXZlRXZlbnQgKTtcblxuXHRcdHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwgaGFuZGxlclF1ZXVlLFxuXHRcdFx0YXJncyA9IG5ldyBBcnJheSggYXJndW1lbnRzLmxlbmd0aCApLFxuXHRcdFx0aGFuZGxlcnMgPSAoIGRhdGFQcml2LmdldCggdGhpcywgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9O1xuXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcblx0XHRhcmdzWyAwIF0gPSBldmVudDtcblxuXHRcdGZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdFx0fVxuXG5cdFx0ZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZFxuXHRcdGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBoYW5kbGVyc1xuXHRcdGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTtcblxuXHRcdC8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtO1xuXG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmXG5cdFx0XHRcdCFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXG5cdFx0XHRcdC8vIFRyaWdnZXJlZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2Uocylcblx0XHRcdFx0Ly8gYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuXG5cdFx0XHRcdGlmICggIWV2ZW50LnJuYW1lc3BhY2UgfHwgZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XG5cblx0XHRcdFx0XHRldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7XG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xuXG5cdFx0XHRcdFx0cmV0ID0gKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fFxuXHRcdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZVxuXHRcdGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7XG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0aGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGksIGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsXG5cdFx0XHRoYW5kbGVyUXVldWUgPSBbXSxcblx0XHRcdGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LFxuXHRcdFx0Y3VyID0gZXZlbnQudGFyZ2V0O1xuXG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTlcblx0XHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICh0cmFjLTEzMTgwKVxuXHRcdFx0Y3VyLm5vZGVUeXBlICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MlxuXHRcdFx0Ly8gU3VwcHJlc3Mgc3BlYy12aW9sYXRpbmcgY2xpY2tzIGluZGljYXRpbmcgYSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAodHJhYy0zODYxKVxuXHRcdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnQtdHlwZS1jbGlja1xuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0Ly8gLi4uYnV0IG5vdCBhcnJvdyBrZXkgXCJjbGlja3NcIiBvZiByYWRpbyBpbnB1dHMsIHdoaWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKVxuXHRcdFx0ISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGV2ZW50LmJ1dHRvbiA+PSAxICkgKSB7XG5cblx0XHRcdGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkge1xuXG5cdFx0XHRcdC8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KVxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NClcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkge1xuXHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycyA9IFtdO1xuXHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnMgPSB7fTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkSGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggbWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVyc1xuXHRcdGN1ciA9IHRoaXM7XG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhbmRsZXJRdWV1ZTtcblx0fSxcblxuXHRhZGRQcm9wOiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cblx0XHRcdGdldDogaXNGdW5jdGlvbiggaG9vayApID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBob29rKCB0aGlzLm9yaWdpbmFsRXZlbnQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gOlxuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFtZSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwge1xuXHRcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0b3JpZ2luYWxFdmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7XG5cdH0sXG5cblx0c3BlY2lhbDoge1xuXHRcdGxvYWQ6IHtcblxuXHRcdFx0Ly8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZFxuXHRcdFx0bm9CdWJibGU6IHRydWVcblx0XHR9LFxuXHRcdGZvY3VzOiB7XG5cblx0XHRcdC8vIEZpcmUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdFxuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcyAhPT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmZvY3VzICkge1xuXHRcdFx0XHRcdHRoaXMuZm9jdXMoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNpblwiXG5cdFx0fSxcblx0XHRibHVyOiB7XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHtcblx0XHRcdFx0XHR0aGlzLmJsdXIoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNvdXRcIlxuXHRcdH0sXG5cdFx0Y2xpY2s6IHtcblxuXHRcdFx0Ly8gRm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwgYmUgcmlnaHRcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMudHlwZSA9PT0gXCJjaGVja2JveFwiICYmIHRoaXMuY2xpY2sgJiYgbm9kZU5hbWUoIHRoaXMsIFwiaW5wdXRcIiApICkge1xuXHRcdFx0XHRcdHRoaXMuY2xpY2soKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8vIEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3RlbmN5LCBkb24ndCBmaXJlIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5rc1xuXHRcdFx0X2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0cmV0dXJuIG5vZGVOYW1lKCBldmVudC50YXJnZXQsIFwiYVwiICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJlZm9yZXVubG9hZDoge1xuXHRcdFx0cG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCAyMCtcblx0XHRcdFx0Ly8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LlxuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0ZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHtcblxuXHQvLyBUaGlzIFwiaWZcIiBpcyBuZWVkZWQgZm9yIHBsYWluIG9iamVjdHNcblx0aWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUgKTtcblx0fVxufTtcblxualF1ZXJ5LkV2ZW50ID0gZnVuY3Rpb24oIHNyYywgcHJvcHMgKSB7XG5cblx0Ly8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkXG5cdGlmICggISggdGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCApICkge1xuXHRcdHJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBFdmVudCBvYmplY3Rcblx0aWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7XG5cdFx0dGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjO1xuXHRcdHRoaXMudHlwZSA9IHNyYy50eXBlO1xuXG5cdFx0Ly8gRXZlbnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2ZW50ZWRcblx0XHQvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8XG5cdFx0XHRcdHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHlcblx0XHRcdFx0c3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRyZXR1cm5UcnVlIDpcblx0XHRcdHJldHVybkZhbHNlO1xuXG5cdFx0Ly8gQ3JlYXRlIHRhcmdldCBwcm9wZXJ0aWVzXG5cdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDw9NiAtIDcgb25seVxuXHRcdC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpXG5cdFx0dGhpcy50YXJnZXQgPSAoIHNyYy50YXJnZXQgJiYgc3JjLnRhcmdldC5ub2RlVHlwZSA9PT0gMyApID9cblx0XHRcdHNyYy50YXJnZXQucGFyZW50Tm9kZSA6XG5cdFx0XHRzcmMudGFyZ2V0O1xuXG5cdFx0dGhpcy5jdXJyZW50VGFyZ2V0ID0gc3JjLmN1cnJlbnRUYXJnZXQ7XG5cdFx0dGhpcy5yZWxhdGVkVGFyZ2V0ID0gc3JjLnJlbGF0ZWRUYXJnZXQ7XG5cblx0Ly8gRXZlbnQgdHlwZVxuXHR9IGVsc2Uge1xuXHRcdHRoaXMudHlwZSA9IHNyYztcblx0fVxuXG5cdC8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0XG5cdGlmICggcHJvcHMgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTtcblx0fVxuXG5cdC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBldmVudCBkb2Vzbid0IGhhdmUgb25lXG5cdHRoaXMudGltZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtcblxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXG5cdHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlO1xufTtcblxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sXG5qUXVlcnkuRXZlbnQucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LkV2ZW50LFxuXHRpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuXHRpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNTaW11bGF0ZWQ6IGZhbHNlLFxuXG5cdHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdH1cblxuXHRcdHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH1cbn07XG5cbi8vIEluY2x1ZGVzIGFsbCBjb21tb24gZXZlbnQgcHJvcHMgaW5jbHVkaW5nIEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50IHNwZWNpZmljIHByb3BzXG5qUXVlcnkuZWFjaCgge1xuXHRhbHRLZXk6IHRydWUsXG5cdGJ1YmJsZXM6IHRydWUsXG5cdGNhbmNlbGFibGU6IHRydWUsXG5cdGNoYW5nZWRUb3VjaGVzOiB0cnVlLFxuXHRjdHJsS2V5OiB0cnVlLFxuXHRkZXRhaWw6IHRydWUsXG5cdGV2ZW50UGhhc2U6IHRydWUsXG5cdG1ldGFLZXk6IHRydWUsXG5cdHBhZ2VYOiB0cnVlLFxuXHRwYWdlWTogdHJ1ZSxcblx0c2hpZnRLZXk6IHRydWUsXG5cdHZpZXc6IHRydWUsXG5cdFwiY2hhclwiOiB0cnVlLFxuXHRjaGFyQ29kZTogdHJ1ZSxcblx0a2V5OiB0cnVlLFxuXHRrZXlDb2RlOiB0cnVlLFxuXHRidXR0b246IHRydWUsXG5cdGJ1dHRvbnM6IHRydWUsXG5cdGNsaWVudFg6IHRydWUsXG5cdGNsaWVudFk6IHRydWUsXG5cdG9mZnNldFg6IHRydWUsXG5cdG9mZnNldFk6IHRydWUsXG5cdHBvaW50ZXJJZDogdHJ1ZSxcblx0cG9pbnRlclR5cGU6IHRydWUsXG5cdHNjcmVlblg6IHRydWUsXG5cdHNjcmVlblk6IHRydWUsXG5cdHRhcmdldFRvdWNoZXM6IHRydWUsXG5cdHRvRWxlbWVudDogdHJ1ZSxcblx0dG91Y2hlczogdHJ1ZSxcblxuXHR3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBidXR0b24gPSBldmVudC5idXR0b247XG5cblx0XHQvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHNcblx0XHRpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHtcblx0XHRcdHJldHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVudC5rZXlDb2RlO1xuXHRcdH1cblxuXHRcdC8vIEFkZCB3aGljaCBmb3IgY2xpY2s6IDEgPT09IGxlZnQ7IDIgPT09IG1pZGRsZTsgMyA9PT0gcmlnaHRcblx0XHRpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7XG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDEgKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDIgKSB7XG5cdFx0XHRcdHJldHVybiAzO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDQgKSB7XG5cdFx0XHRcdHJldHVybiAyO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQud2hpY2g7XG5cdH1cbn0sIGpRdWVyeS5ldmVudC5hZGRQcm9wICk7XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gc28gdGhhdCBldmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS5cbi8vIERvIHRoZSBzYW1lIGZvciBwb2ludGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0XG4vL1xuLy8gU3VwcG9ydDogU2FmYXJpIDcgb25seVxuLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9mdGVuOyBzZWU6XG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNThcbi8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuXG5qUXVlcnkuZWFjaCgge1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuXG5cdFx0XHQvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvd1xuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID9cblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUgKyBcIi5cIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOlxuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzIFssIGZuXSApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxudmFyXG5cblx0LyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIyOVxuXHRyeGh0bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSopW14+XSopXFwvPi9naSxcblxuXHQvKiBlc2xpbnQtZW5hYmxlICovXG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExLCBFZGdlIDEyIC0gMTMgb25seVxuXHQvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3VwcyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLlxuXHQvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyL1xuXHRybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxcblxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXHRyY2xlYW5TY3JpcHQgPSAvXlxccyo8ISg/OlxcW0NEQVRBXFxbfC0tKXwoPzpcXF1cXF18LS0pPlxccyokL2c7XG5cbi8vIFByZWZlciBhIHRib2R5IG92ZXIgaXRzIHBhcmVudCB0YWJsZSBmb3IgY29udGFpbmluZyBuZXcgcm93c1xuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdG5vZGVOYW1lKCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQsIFwidHJcIiApICkge1xuXG5cdFx0cmV0dXJuIGpRdWVyeSggZWxlbSApLmNoaWxkcmVuKCBcInRib2R5XCIgKVsgMCBdIHx8IGVsZW07XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSAhPT0gbnVsbCApICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybiBlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0aWYgKCAoIGVsZW0udHlwZSB8fCBcIlwiICkuc2xpY2UoIDAsIDUgKSA9PT0gXCJ0cnVlL1wiICkge1xuXHRcdGVsZW0udHlwZSA9IGVsZW0udHlwZS5zbGljZSggNSApO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBcInR5cGVcIiApO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YVByaXYuYWNjZXNzKCBzcmMgKTtcblx0XHRwZGF0YUN1ciA9IGRhdGFQcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7XG5cdFx0XHRwZGF0YUN1ci5ldmVudHMgPSB7fTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhVXNlci5hY2Nlc3MoIHNyYyApO1xuXHRcdHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7XG5cblx0XHRkYXRhVXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxuZnVuY3Rpb24gZG9tTWFuaXAoIGNvbGxlY3Rpb24sIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICkge1xuXG5cdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0YXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcblxuXHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuXHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0dmFsdWVJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHQvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXRcblx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gfHxcblx0XHRcdCggbCA+IDEgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHRcdHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTtcblx0XHRcdGlmICggdmFsdWVJc0Z1bmN0aW9uICkge1xuXHRcdFx0XHRhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1sKCkgKTtcblx0XHRcdH1cblx0XHRcdGRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApO1xuXHRcdH0gKTtcblx0fVxuXG5cdGlmICggbCApIHtcblx0XHRmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApO1xuXHRcdGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICggZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRmcmFnbWVudCA9IGZpcnN0O1xuXHRcdH1cblxuXHRcdC8vIFJlcXVpcmUgZWl0aGVyIG5ldyBjb250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8gaW52b2tlIHRoZSBjYWxsYmFja1xuXHRcdGlmICggZmlyc3QgfHwgaWdub3JlZCApIHtcblx0XHRcdHNjcmlwdHMgPSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCBcInNjcmlwdFwiICksIGRpc2FibGVTY3JpcHQgKTtcblx0XHRcdGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDtcblxuXHRcdFx0Ly8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbVxuXHRcdFx0Ly8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwXG5cdFx0XHQvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLlxuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRub2RlID0gZnJhZ21lbnQ7XG5cblx0XHRcdFx0aWYgKCBpICE9PSBpTm9DbG9uZSApIHtcblx0XHRcdFx0XHRub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7XG5cblx0XHRcdFx0XHQvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYWxsYmFjay5jYWxsKCBjb2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXHRcdFx0XHRkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50O1xuXG5cdFx0XHRcdC8vIFJlZW5hYmxlIHNjcmlwdHNcblx0XHRcdFx0alF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApO1xuXG5cdFx0XHRcdC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb25cblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IHNjcmlwdHNbIGkgXTtcblx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCBcIlwiICkgJiZcblx0XHRcdFx0XHRcdCFkYXRhUHJpdi5hY2Nlc3MoIG5vZGUsIFwiZ2xvYmFsRXZhbFwiICkgJiZcblx0XHRcdFx0XHRcdGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7XG5cblx0XHRcdFx0XHRcdGlmICggbm9kZS5zcmMgJiYgKCBub2RlLnR5cGUgfHwgXCJcIiApLnRvTG93ZXJDYXNlKCkgICE9PSBcIm1vZHVsZVwiICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0RE9NRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSwgZG9jLCBub2RlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNvbGxlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSggZWxlbSwgc2VsZWN0b3IsIGtlZXBEYXRhICkge1xuXHR2YXIgbm9kZSxcblx0XHRub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIGVsZW0gKSA6IGVsZW0sXG5cdFx0aSA9IDA7XG5cblx0Zm9yICggOyAoIG5vZGUgPSBub2Rlc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApO1xuXHRcdH1cblxuXHRcdGlmICggbm9kZS5wYXJlbnROb2RlICkge1xuXHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIG5vZGUub3duZXJEb2N1bWVudCwgbm9kZSApICkge1xuXHRcdFx0XHRzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIG5vZGUsIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0fVxuXHRcdFx0bm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBub2RlICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aHRtbFByZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0cmV0dXJuIGh0bWwucmVwbGFjZSggcnhodG1sVGFnLCBcIjwkMT48LyQyPlwiICk7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHR2YXIgaSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cyxcblx0XHRcdGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKSxcblx0XHRcdGluUGFnZSA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cblx0XHQvLyBGaXggSUUgY2xvbmluZyBpc3N1ZXNcblx0XHRpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmXG5cdFx0XHRcdCFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblxuXHRcdFx0Ly8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zOiBodHRwczovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yXG5cdFx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7XG5cdFx0XHRzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApO1xuXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZVxuXHRcdGlmICggZGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRcdHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7XG5cdFx0XHRcdGRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7XG5cblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCBcInNjcmlwdFwiICk7XG5cdFx0aWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgY2xvbmVkIHNldFxuXHRcdHJldHVybiBjbG9uZTtcblx0fSxcblxuXHRjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblx0XHR2YXIgZGF0YSwgZWxlbSwgdHlwZSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT09IHVuZGVmaW5lZDsgaSsrICkge1xuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cdFx0XHRcdGlmICggKCBkYXRhID0gZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbFsgdHlwZSBdICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92ZSdzIG92ZXJoZWFkXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1K1xuXHRcdFx0XHRcdC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZVxuXHRcdFx0XHRcdGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IgKTtcblx0fSxcblxuXHR0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkudGV4dCggdGhpcyApIDpcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0dGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0YXBwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0cHJlcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZpcnN0Q2hpbGQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YmVmb3JlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRhZnRlcjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7ICggZWxlbSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rlc1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZlbnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7XG5cdFx0ZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzO1xuXG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBqUXVlcnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmlubmVySFRNTDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTFxuXHRcdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmXG5cdFx0XHRcdCF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHtcblxuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5odG1sUHJlZmlsdGVyKCB2YWx1ZSApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXSB8fCB7fTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXHRcdFx0XHRcdFx0XHRlbGVtLmlubmVySFRNTCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW0gPSAwO1xuXG5cdFx0XHRcdC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZFxuXHRcdFx0XHR9IGNhdGNoICggZSApIHt9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTtcblx0XHRcdH1cblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaWdub3JlZCA9IFtdO1xuXG5cdFx0Ly8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5nIGVhY2ggbm9uLWlnbm9yZWQgY29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcblxuXHRcdFx0aWYgKCBqUXVlcnkuaW5BcnJheSggdGhpcywgaWdub3JlZCApIDwgMCApIHtcblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCB0aGlzICkgKTtcblx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBGb3JjZSBjYWxsYmFjayBpbnZvY2F0aW9uXG5cdFx0fSwgaWdub3JlZCApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCB7XG5cdGFwcGVuZFRvOiBcImFwcGVuZFwiLFxuXHRwcmVwZW5kVG86IFwicHJlcGVuZFwiLFxuXHRpbnNlcnRCZWZvcmU6IFwiYmVmb3JlXCIsXG5cdGluc2VydEFmdGVyOiBcImFmdGVyXCIsXG5cdHJlcGxhY2VBbGw6IFwicmVwbGFjZVdpdGhcIlxufSwgZnVuY3Rpb24oIG5hbWUsIG9yaWdpbmFsICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgZWxlbXMsXG5cdFx0XHRyZXQgPSBbXSxcblx0XHRcdGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSxcblx0XHRcdGxhc3QgPSBpbnNlcnQubGVuZ3RoIC0gMSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHtcblx0XHRcdGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7XG5cdFx0XHRqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0Ly8gLmdldCgpIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0cHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0ICk7XG5cdH07XG59ICk7XG52YXIgcm51bW5vbnB4ID0gbmV3IFJlZ0V4cCggXCJeKFwiICsgcG51bSArIFwiKSg/IXB4KVthLXolXSskXCIsIFwiaVwiICk7XG5cbnZhciBnZXRTdHlsZXMgPSBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seSwgRmlyZWZveCA8PTMwICgjMTUwOTgsICMxNDE1MClcblx0XHQvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHNcblx0XHQvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggXCJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlXCJcblx0XHR2YXIgdmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcblxuXHRcdGlmICggIXZpZXcgfHwgIXZpZXcub3BlbmVyICkge1xuXHRcdFx0dmlldyA9IHdpbmRvdztcblx0XHR9XG5cblx0XHRyZXR1cm4gdmlldy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtICk7XG5cdH07XG5cbnZhciByYm94U3R5bGUgPSBuZXcgUmVnRXhwKCBjc3NFeHBhbmQuam9pbiggXCJ8XCIgKSwgXCJpXCIgKTtcblxuXG5cbiggZnVuY3Rpb24oKSB7XG5cblx0Ly8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRlc3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0XG5cdC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uXG5cdGZ1bmN0aW9uIGNvbXB1dGVTdHlsZVRlc3RzKCkge1xuXG5cdFx0Ly8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkgb25jZVxuXHRcdGlmICggIWRpdiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O1wiICtcblx0XHRcdFwibWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowXCI7XG5cdFx0ZGl2LnN0eWxlLmNzc1RleHQgPVxuXHRcdFx0XCJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7XCIgK1xuXHRcdFx0XCJtYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O1wiICtcblx0XHRcdFwid2lkdGg6NjAlO3RvcDoxJVwiO1xuXHRcdGRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICkuYXBwZW5kQ2hpbGQoIGRpdiApO1xuXG5cdFx0dmFyIGRpdlN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiApO1xuXHRcdHBpeGVsUG9zaXRpb25WYWwgPSBkaXZTdHlsZS50b3AgIT09IFwiMSVcIjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHksIEZpcmVmb3ggPD0zIC0gNDRcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnRWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLm1hcmdpbkxlZnQgKSA9PT0gMTI7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBTYWZhcmkgPD05LjEgLSAxMC4xLCBpT1MgPD03LjAgLSA5LjNcblx0XHQvLyBTb21lIHN0eWxlcyBjb21lIGJhY2sgd2l0aCBwZXJjZW50YWdlIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhleSBzaG91bGRuJ3Rcblx0XHRkaXYuc3R5bGUucmlnaHQgPSBcIjYwJVwiO1xuXHRcdHBpeGVsQm94U3R5bGVzVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS5yaWdodCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdFx0Ly8gRGV0ZWN0IG1pc3JlcG9ydGluZyBvZiBjb250ZW50IGRpbWVuc2lvbnMgZm9yIGJveC1zaXppbmc6Ym9yZGVyLWJveCBlbGVtZW50c1xuXHRcdGJveFNpemluZ1JlbGlhYmxlVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS53aWR0aCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgb25seVxuXHRcdC8vIERldGVjdCBvdmVyZmxvdzpzY3JvbGwgc2NyZXdpbmVzcyAoZ2gtMzY5OSlcblx0XHRkaXYuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG5cdFx0c2Nyb2xsYm94U2l6ZVZhbCA9IGRpdi5vZmZzZXRXaWR0aCA9PT0gMzYgfHwgXCJhYnNvbHV0ZVwiO1xuXG5cdFx0ZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdC8vIE51bGxpZnkgdGhlIGRpdiBzbyBpdCB3b3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeSBhbmRcblx0XHQvLyBpdCB3aWxsIGFsc28gYmUgYSBzaWduIHRoYXQgY2hlY2tzIGFscmVhZHkgcGVyZm9ybWVkXG5cdFx0ZGl2ID0gbnVsbDtcblx0fVxuXG5cdGZ1bmN0aW9uIHJvdW5kUGl4ZWxNZWFzdXJlcyggbWVhc3VyZSApIHtcblx0XHRyZXR1cm4gTWF0aC5yb3VuZCggcGFyc2VGbG9hdCggbWVhc3VyZSApICk7XG5cdH1cblxuXHR2YXIgcGl4ZWxQb3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsIHNjcm9sbGJveFNpemVWYWwsIHBpeGVsQm94U3R5bGVzVmFsLFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdFZhbCxcblx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICksXG5cdFx0ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdC8vIEZpbmlzaCBlYXJseSBpbiBsaW1pdGVkIChub24tYnJvd3NlcikgZW52aXJvbm1lbnRzXG5cdGlmICggIWRpdi5zdHlsZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdC8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50IGFmZmVjdHMgc291cmNlIGVsZW1lbnQgY2xvbmVkICgjODkwOClcblx0ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJjb250ZW50LWJveFwiO1xuXHRkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcIlwiO1xuXHRzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gXCJjb250ZW50LWJveFwiO1xuXG5cdGpRdWVyeS5leHRlbmQoIHN1cHBvcnQsIHtcblx0XHRib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsO1xuXHRcdH0sXG5cdFx0cGl4ZWxCb3hTdHlsZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbEJveFN0eWxlc1ZhbDtcblx0XHR9LFxuXHRcdHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbFBvc2l0aW9uVmFsO1xuXHRcdH0sXG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcmVsaWFibGVNYXJnaW5MZWZ0VmFsO1xuXHRcdH0sXG5cdFx0c2Nyb2xsYm94U2l6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGJveFNpemVWYWw7XG5cdFx0fVxuXHR9ICk7XG59ICkoKTtcblxuXG5mdW5jdGlvbiBjdXJDU1MoIGVsZW0sIG5hbWUsIGNvbXB1dGVkICkge1xuXHR2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LFxuXG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA1MStcblx0XHQvLyBSZXRyaWV2aW5nIHN0eWxlIGJlZm9yZSBjb21wdXRlZCBzb21laG93XG5cdFx0Ly8gZml4ZXMgYW4gaXNzdWUgd2l0aCBnZXR0aW5nIHdyb25nIHZhbHVlc1xuXHRcdC8vIG9uIGRldGFjaGVkIGVsZW1lbnRzXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7XG5cblx0Ly8gZ2V0UHJvcGVydHlWYWx1ZSBpcyBuZWVkZWQgZm9yOlxuXHQvLyAgIC5jc3MoJ2ZpbHRlcicpIChJRSA5IG9ubHksICMxMjUzNylcblx0Ly8gICAuY3NzKCctLWN1c3RvbVByb3BlcnR5KSAoIzMxNDQpXG5cdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0cmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07XG5cblx0XHRpZiAoIHJldCA9PT0gXCJcIiAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHtcblx0XHRcdHJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIEEgdHJpYnV0ZSB0byB0aGUgXCJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzXCJcblx0XHQvLyBBbmRyb2lkIEJyb3dzZXIgcmV0dXJucyBwZXJjZW50YWdlIGZvciBzb21lIHZhbHVlcyxcblx0XHQvLyBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzLlxuXHRcdC8vIFRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzpcblx0XHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVkLXZhbHVlc1xuXHRcdGlmICggIXN1cHBvcnQucGl4ZWxCb3hTdHlsZXMoKSAmJiBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcmJveFN0eWxlLnRlc3QoIG5hbWUgKSApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlc1xuXHRcdFx0d2lkdGggPSBzdHlsZS53aWR0aDtcblx0XHRcdG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7XG5cdFx0XHRtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoO1xuXG5cdFx0XHQvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7XG5cdFx0XHRyZXQgPSBjb21wdXRlZC53aWR0aDtcblxuXHRcdFx0Ly8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlc1xuXHRcdFx0c3R5bGUud2lkdGggPSB3aWR0aDtcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7XG5cdFx0XHRzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdFx0Ly8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci5cblx0XHRyZXQgKyBcIlwiIDpcblx0XHRyZXQ7XG59XG5cblxuZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkge1xuXG5cdC8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuXG5cdHJldHVybiB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggY29uZGl0aW9uRm4oKSApIHtcblxuXHRcdFx0XHQvLyBIb29rIG5vdCBuZWVkZWQgKG9yIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBpdCBkdWVcblx0XHRcdFx0Ly8gdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0LlxuXHRcdFx0XHRkZWxldGUgdGhpcy5nZXQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSG9vayBuZWVkZWQ7IHJlZGVmaW5lIGl0IHNvIHRoYXQgdGhlIHN1cHBvcnQgdGVzdCBpcyBub3QgZXhlY3V0ZWQgYWdhaW4uXG5cdFx0XHRyZXR1cm4gKCB0aGlzLmdldCA9IGhvb2tGbiApLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdH07XG59XG5cblxudmFyXG5cblx0Ly8gU3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZVxuXHQvLyBleGNlcHQgXCJ0YWJsZVwiLCBcInRhYmxlLWNlbGxcIiwgb3IgXCJ0YWJsZS1jYXB0aW9uXCJcblx0Ly8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5XG5cdHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxcblx0cmN1c3RvbVByb3AgPSAvXi0tLyxcblx0Y3NzU2hvdyA9IHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdmlzaWJpbGl0eTogXCJoaWRkZW5cIiwgZGlzcGxheTogXCJibG9ja1wiIH0sXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcblx0XHRsZXR0ZXJTcGFjaW5nOiBcIjBcIixcblx0XHRmb250V2VpZ2h0OiBcIjQwMFwiXG5cdH0sXG5cblx0Y3NzUHJlZml4ZXMgPSBbIFwiV2Via2l0XCIsIFwiTW96XCIsIFwibXNcIiBdLFxuXHRlbXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLnN0eWxlO1xuXG4vLyBSZXR1cm4gYSBjc3MgcHJvcGVydHkgbWFwcGVkIHRvIGEgcG90ZW50aWFsbHkgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5XG5mdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHtcblxuXHQvLyBTaG9ydGN1dCBmb3IgbmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZFxuXHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXNcblx0dmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSxcblx0XHRpID0gY3NzUHJlZml4ZXMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTtcblx0XHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRcdHJldHVybiBuYW1lO1xuXHRcdH1cblx0fVxufVxuXG4vLyBSZXR1cm4gYSBwcm9wZXJ0eSBtYXBwZWQgYWxvbmcgd2hhdCBqUXVlcnkuY3NzUHJvcHMgc3VnZ2VzdHMgb3IgdG9cbi8vIGEgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5LlxuZnVuY3Rpb24gZmluYWxQcm9wTmFtZSggbmFtZSApIHtcblx0dmFyIHJldCA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdO1xuXHRpZiAoICFyZXQgKSB7XG5cdFx0cmV0ID0galF1ZXJ5LmNzc1Byb3BzWyBuYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHx8IG5hbWU7XG5cdH1cblx0cmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApIHtcblxuXHQvLyBBbnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuXG5cdC8vIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludFxuXHR2YXIgbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKTtcblx0cmV0dXJuIG1hdGNoZXMgP1xuXG5cdFx0Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgXCJzdWJ0cmFjdFwiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3Ncblx0XHRNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApIDpcblx0XHR2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYm94TW9kZWxBZGp1c3RtZW50KCBlbGVtLCBkaW1lbnNpb24sIGJveCwgaXNCb3JkZXJCb3gsIHN0eWxlcywgY29tcHV0ZWRWYWwgKSB7XG5cdHZhciBpID0gZGltZW5zaW9uID09PSBcIndpZHRoXCIgPyAxIDogMCxcblx0XHRleHRyYSA9IDAsXG5cdFx0ZGVsdGEgPSAwO1xuXG5cdC8vIEFkanVzdG1lbnQgbWF5IG5vdCBiZSBuZWNlc3Nhcnlcblx0aWYgKCBib3ggPT09ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHtcblxuXHRcdC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpblxuXHRcdGlmICggYm94ID09PSBcIm1hcmdpblwiICkge1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgYm94ICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBjb250ZW50LWJveCwgd2UncmUgc2Vla2luZyBcInBhZGRpbmdcIiBvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCJcblx0XHRpZiAoICFpc0JvcmRlckJveCApIHtcblxuXHRcdFx0Ly8gQWRkIHBhZGRpbmdcblx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBGb3IgXCJib3JkZXJcIiBvciBcIm1hcmdpblwiLCBhZGQgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJwYWRkaW5nXCIgKSB7XG5cdFx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEJ1dCBzdGlsbCBrZWVwIHRyYWNrIG9mIGl0IG90aGVyd2lzZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZXh0cmEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBib3JkZXItYm94IChjb250ZW50ICsgcGFkZGluZyArIGJvcmRlciksIHdlJ3JlIHNlZWtpbmcgXCJjb250ZW50XCIgb3Jcblx0XHQvLyBcInBhZGRpbmdcIiBvciBcIm1hcmdpblwiXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gRm9yIFwiY29udGVudFwiLCBzdWJ0cmFjdCBwYWRkaW5nXG5cdFx0XHRpZiAoIGJveCA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIgb3IgXCJwYWRkaW5nXCIsIHN1YnRyYWN0IGJvcmRlclxuXHRcdFx0aWYgKCBib3ggIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWNjb3VudCBmb3IgcG9zaXRpdmUgY29udGVudC1ib3ggc2Nyb2xsIGd1dHRlciB3aGVuIHJlcXVlc3RlZCBieSBwcm92aWRpbmcgY29tcHV0ZWRWYWxcblx0aWYgKCAhaXNCb3JkZXJCb3ggJiYgY29tcHV0ZWRWYWwgPj0gMCApIHtcblxuXHRcdC8vIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBpcyBhIHJvdW5kZWQgc3VtIG9mIGNvbnRlbnQsIHBhZGRpbmcsIHNjcm9sbCBndXR0ZXIsIGFuZCBib3JkZXJcblx0XHQvLyBBc3N1bWluZyBpbnRlZ2VyIHNjcm9sbCBndXR0ZXIsIHN1YnRyYWN0IHRoZSByZXN0IGFuZCByb3VuZCBkb3duXG5cdFx0ZGVsdGEgKz0gTWF0aC5tYXgoIDAsIE1hdGguY2VpbChcblx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRjb21wdXRlZFZhbCAtXG5cdFx0XHRkZWx0YSAtXG5cdFx0XHRleHRyYSAtXG5cdFx0XHQwLjVcblx0XHQpICk7XG5cdH1cblxuXHRyZXR1cm4gZGVsdGE7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKSB7XG5cblx0Ly8gU3RhcnQgd2l0aCBjb21wdXRlZCBzdHlsZVxuXHR2YXIgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBkaW1lbnNpb24sIHN0eWxlcyApLFxuXHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHR2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3g7XG5cblx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTU0XG5cdC8vIFJldHVybiBhIGNvbmZvdW5kaW5nIG5vbi1waXhlbCB2YWx1ZSBvciBmZWlnbiBpZ25vcmFuY2UsIGFzIGFwcHJvcHJpYXRlLlxuXHRpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHtcblx0XHRpZiAoICFleHRyYSApIHtcblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fVxuXHRcdHZhbCA9IFwiYXV0b1wiO1xuXHR9XG5cblx0Ly8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXNcblx0Ly8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZVxuXHR2YWx1ZUlzQm9yZGVyQm94ID0gdmFsdWVJc0JvcmRlckJveCAmJlxuXHRcdCggc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8IHZhbCA9PT0gZWxlbS5zdHlsZVsgZGltZW5zaW9uIF0gKTtcblxuXHQvLyBGYWxsIGJhY2sgdG8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IHdoZW4gdmFsdWUgaXMgXCJhdXRvXCJcblx0Ly8gVGhpcyBoYXBwZW5zIGZvciBpbmxpbmUgZWxlbWVudHMgd2l0aCBubyBleHBsaWNpdCBzZXR0aW5nIChnaC0zNTcxKVxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIC0gNC4zIG9ubHlcblx0Ly8gQWxzbyB1c2Ugb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGZvciBtaXNyZXBvcnRlZCBpbmxpbmUgZGltZW5zaW9ucyAoZ2gtMzYwMilcblx0aWYgKCB2YWwgPT09IFwiYXV0b1wiIHx8XG5cdFx0IXBhcnNlRmxvYXQoIHZhbCApICYmIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiaW5saW5lXCIgKSB7XG5cblx0XHR2YWwgPSBlbGVtWyBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApIF07XG5cblx0XHQvLyBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgcHJvdmlkZSBib3JkZXItYm94IHZhbHVlc1xuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSB0cnVlO1xuXHR9XG5cblx0Ly8gTm9ybWFsaXplIFwiXCIgYW5kIGF1dG9cblx0dmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDtcblxuXHQvLyBBZGp1c3QgZm9yIHRoZSBlbGVtZW50J3MgYm94IG1vZGVsXG5cdHJldHVybiAoIHZhbCArXG5cdFx0Ym94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0ZWxlbSxcblx0XHRcdGRpbWVuc2lvbixcblx0XHRcdGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSxcblx0XHRcdHZhbHVlSXNCb3JkZXJCb3gsXG5cdFx0XHRzdHlsZXMsXG5cblx0XHRcdC8vIFByb3ZpZGUgdGhlIGN1cnJlbnQgY29tcHV0ZWQgc2l6ZSB0byByZXF1ZXN0IHNjcm9sbCBndXR0ZXIgY2FsY3VsYXRpb24gKGdoLTM1ODkpXG5cdFx0XHR2YWxcblx0XHQpXG5cdCkgKyBcInB4XCI7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHRcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XG5cdGNzc0hvb2tzOiB7XG5cdFx0b3BhY2l0eToge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eVxuXHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIFwib3BhY2l0eVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIFwicHhcIiB0byB0aGVzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzXG5cdGNzc051bWJlcjoge1xuXHRcdFwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnRcIjogdHJ1ZSxcblx0XHRcImNvbHVtbkNvdW50XCI6IHRydWUsXG5cdFx0XCJmaWxsT3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwiZmxleEdyb3dcIjogdHJ1ZSxcblx0XHRcImZsZXhTaHJpbmtcIjogdHJ1ZSxcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcblx0XHRcImxpbmVIZWlnaHRcIjogdHJ1ZSxcblx0XHRcIm9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcIm9yZGVyXCI6IHRydWUsXG5cdFx0XCJvcnBoYW5zXCI6IHRydWUsXG5cdFx0XCJ3aWRvd3NcIjogdHJ1ZSxcblx0XHRcInpJbmRleFwiOiB0cnVlLFxuXHRcdFwiem9vbVwiOiB0cnVlXG5cdH0sXG5cblx0Ly8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZVxuXHQvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlXG5cdGNzc1Byb3BzOiB7fSxcblxuXHQvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZVxuXHRzdHlsZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHtcblxuXHRcdC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZVxuXHRcdHZhciByZXQsIHR5cGUsIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBjYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIHF1ZXJ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiwgdGhlbiB1bnByZWZpeGVkIHZlcnNpb25cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZVxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cblx0XHRcdC8vIENvbnZlcnQgXCIrPVwiIG9yIFwiLT1cIiB0byByZWxhdGl2ZSBudW1iZXJzICgjNzM0NSlcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBdICkge1xuXHRcdFx0XHR2YWx1ZSA9IGFkanVzdENTUyggZWxlbSwgbmFtZSwgcmV0ICk7XG5cblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM5MjM3XG5cdFx0XHRcdHR5cGUgPSBcIm51bWJlclwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcylcblx0XHRcdGlmICggdHlwZSA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8XG5cdFx0XHRcdCggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRpZiAoIGlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0XHRzdHlsZS5zZXRQcm9wZXJ0eSggbmFtZSwgdmFsdWUgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3Rcblx0XHRcdHJldHVybiBzdHlsZVsgbmFtZSBdO1xuXHRcdH1cblx0fSxcblxuXHRjc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkge1xuXHRcdHZhciB2YWwsIG51bSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gVHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZVxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXRcblx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IFwibm9ybWFsXCIgdG8gY29tcHV0ZWQgdmFsdWVcblx0XHRpZiAoIHZhbCA9PT0gXCJub3JtYWxcIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHtcblx0XHRcdHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdO1xuXHRcdH1cblxuXHRcdC8vIE1ha2UgbnVtZXJpYyBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpY1xuXHRcdGlmICggZXh0cmEgPT09IFwiXCIgfHwgZXh0cmEgKSB7XG5cdFx0XHRudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTtcblx0XHRcdHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiBdLCBmdW5jdGlvbiggaSwgZGltZW5zaW9uICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIGRpbWVuc2lvbiBdID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0Ly8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtXG5cdFx0XHRcdC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5bGUgdGhhdCB3b3VsZCBiZW5lZml0XG5cdFx0XHRcdHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApICYmXG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCtcblx0XHRcdFx0XHQvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVyb1xuXHRcdFx0XHRcdC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVubGVzcyBkaXNwbGF5IGlzIGNoYW5nZWQuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0XHRcdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZVxuXHRcdFx0XHRcdC8vIGluIElFIHRocm93cyBhbiBlcnJvci5cblx0XHRcdFx0XHQoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoIHx8ICFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICkgP1xuXHRcdFx0XHRcdFx0c3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRcdFx0Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7XG5cdFx0XHR2YXIgbWF0Y2hlcyxcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0XHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHRcdFx0c3VidHJhY3QgPSBleHRyYSAmJiBib3hNb2RlbEFkanVzdG1lbnQoXG5cdFx0XHRcdFx0ZWxlbSxcblx0XHRcdFx0XHRkaW1lbnNpb24sXG5cdFx0XHRcdFx0ZXh0cmEsXG5cdFx0XHRcdFx0aXNCb3JkZXJCb3gsXG5cdFx0XHRcdFx0c3R5bGVzXG5cdFx0XHRcdCk7XG5cblx0XHRcdC8vIEFjY291bnQgZm9yIHVucmVsaWFibGUgYm9yZGVyLWJveCBkaW1lbnNpb25zIGJ5IGNvbXBhcmluZyBvZmZzZXQqIHRvIGNvbXB1dGVkIGFuZFxuXHRcdFx0Ly8gZmFraW5nIGEgY29udGVudC1ib3ggdG8gZ2V0IGJvcmRlciBhbmQgcGFkZGluZyAoZ2gtMzY5OSlcblx0XHRcdGlmICggaXNCb3JkZXJCb3ggJiYgc3VwcG9ydC5zY3JvbGxib3hTaXplKCkgPT09IHN0eWxlcy5wb3NpdGlvbiApIHtcblx0XHRcdFx0c3VidHJhY3QgLT0gTWF0aC5jZWlsKFxuXHRcdFx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRcdFx0cGFyc2VGbG9hdCggc3R5bGVzWyBkaW1lbnNpb24gXSApIC1cblx0XHRcdFx0XHRib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgXCJib3JkZXJcIiwgZmFsc2UsIHN0eWxlcyApIC1cblx0XHRcdFx0XHQwLjVcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWRcblx0XHRcdGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiZcblx0XHRcdFx0KCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgIT09IFwicHhcIiApIHtcblxuXHRcdFx0XHRlbGVtLnN0eWxlWyBkaW1lbnNpb24gXSA9IHZhbHVlO1xuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIGRpbWVuc2lvbiApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApO1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmNzc0hvb2tzLm1hcmdpbkxlZnQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJnaW5MZWZ0LFxuXHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRcdHJldHVybiAoIHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIgKSApIHx8XG5cdFx0XHRcdGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG5cdFx0XHRcdFx0c3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblx0XHRcdFx0XHR9IClcblx0XHRcdFx0KSArIFwicHhcIjtcblx0XHR9XG5cdH1cbik7XG5cbi8vIFRoZXNlIGhvb2tzIGFyZSB1c2VkIGJ5IGFuaW1hdGUgdG8gZXhwYW5kIHByb3BlcnRpZXNcbmpRdWVyeS5lYWNoKCB7XG5cdG1hcmdpbjogXCJcIixcblx0cGFkZGluZzogXCJcIixcblx0Ym9yZGVyOiBcIldpZHRoXCJcbn0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHtcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBpID0gMCxcblx0XHRcdFx0ZXhwYW5kZWQgPSB7fSxcblxuXHRcdFx0XHQvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJlciBpZiBub3QgYSBzdHJpbmdcblx0XHRcdFx0cGFydHMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS5zcGxpdCggXCIgXCIgKSA6IFsgdmFsdWUgXTtcblxuXHRcdFx0Zm9yICggOyBpIDwgNDsgaSsrICkge1xuXHRcdFx0XHRleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9XG5cdFx0XHRcdFx0cGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXhwYW5kZWQ7XG5cdFx0fVxuXHR9O1xuXG5cdGlmICggcHJlZml4ICE9PSBcIm1hcmdpblwiICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgc3R5bGVzLCBsZW4sXG5cdFx0XHRcdG1hcCA9IHt9LFxuXHRcdFx0XHRpID0gMDtcblxuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBuYW1lICkgKSB7XG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0XHRsZW4gPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbWFwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XG5cdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHR9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fVxufSApO1xuXG5cbmZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHtcblx0cmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTtcbn1cbmpRdWVyeS5Ud2VlbiA9IFR3ZWVuO1xuXG5Ud2Vlbi5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBUd2Vlbixcblx0aW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkge1xuXHRcdHRoaXMuZWxlbSA9IGVsZW07XG5cdFx0dGhpcy5wcm9wID0gcHJvcDtcblx0XHR0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0O1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0Ly8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCxcblx0XHRcdC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuXG5cdFx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHxcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07XG5cdFx0XHR9XG5cblx0XHRcdC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseVxuXHRcdFx0Ly8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlscy5cblx0XHRcdC8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyBcIjEwcHhcIiBhcmUgcGFyc2VkIHRvIEZsb2F0O1xuXHRcdFx0Ly8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyBcInJvdGF0ZSgxcmFkKVwiIGFyZSByZXR1cm5lZCBhcy1pcy5cblx0XHRcdHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIFwiXCIgKTtcblxuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gKSApIHtcblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gUGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzXG5Ud2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7XG5cdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZWFzaW5nID0ge1xuXHRsaW5lYXI6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiBwO1xuXHR9LFxuXHRzd2luZzogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDAuNSAtIE1hdGguY29zKCBwICogTWF0aC5QSSApIC8gMjtcblx0fSxcblx0X2RlZmF1bHQ6IFwic3dpbmdcIlxufTtcblxualF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7XG5cbi8vIEJhY2sgY29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50XG5qUXVlcnkuZnguc3RlcCA9IHt9O1xuXG5cblxuXG52YXJcblx0ZnhOb3csIGluUHJvZ3Jlc3MsXG5cdHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFxuXHRycnVuID0gL3F1ZXVlSG9va3MkLztcblxuZnVuY3Rpb24gc2NoZWR1bGUoKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRpZiAoIGRvY3VtZW50LmhpZGRlbiA9PT0gZmFsc2UgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSApIHtcblx0XHRcdHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHNjaGVkdWxlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBzY2hlZHVsZSwgalF1ZXJ5LmZ4LmludGVydmFsICk7XG5cdFx0fVxuXG5cdFx0alF1ZXJ5LmZ4LnRpY2soKTtcblx0fVxufVxuXG4vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5XG5mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHtcblx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdGZ4Tm93ID0gdW5kZWZpbmVkO1xuXHR9ICk7XG5cdHJldHVybiAoIGZ4Tm93ID0gRGF0ZS5ub3coKSApO1xufVxuXG4vLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvblxuZnVuY3Rpb24gZ2VuRngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHtcblx0dmFyIHdoaWNoLFxuXHRcdGkgPSAwLFxuXHRcdGF0dHJzID0geyBoZWlnaHQ6IHR5cGUgfTtcblxuXHQvLyBJZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsXG5cdC8vIG90aGVyd2lzZSBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0XG5cdGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aCA/IDEgOiAwO1xuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7XG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcblx0XHRhdHRyc1sgXCJtYXJnaW5cIiArIHdoaWNoIF0gPSBhdHRyc1sgXCJwYWRkaW5nXCIgKyB3aGljaCBdID0gdHlwZTtcblx0fVxuXG5cdGlmICggaW5jbHVkZVdpZHRoICkge1xuXHRcdGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7XG5cdH1cblxuXHRyZXR1cm4gYXR0cnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkge1xuXHR2YXIgdHdlZW4sXG5cdFx0Y29sbGVjdGlvbiA9ICggQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sgXCIqXCIgXSApLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoICggdHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApICkge1xuXG5cdFx0XHQvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBwcm9wZXJ0eVxuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0UHJlZmlsdGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHtcblx0dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJlLCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LFxuXHRcdGlzQm94ID0gXCJ3aWR0aFwiIGluIHByb3BzIHx8IFwiaGVpZ2h0XCIgaW4gcHJvcHMsXG5cdFx0YW5pbSA9IHRoaXMsXG5cdFx0b3JpZyA9IHt9LFxuXHRcdHN0eWxlID0gZWxlbS5zdHlsZSxcblx0XHRoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApLFxuXHRcdGRhdGFTaG93ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cblx0Ly8gUXVldWUtc2tpcHBpbmcgYW5pbWF0aW9ucyBoaWphY2sgdGhlIGZ4IGhvb2tzXG5cdGlmICggIW9wdHMucXVldWUgKSB7XG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xuXHRcdGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHtcblx0XHRcdGhvb2tzLnVucXVldWVkID0gMDtcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICFob29rcy51bnF1ZXVlZCApIHtcblx0XHRcdFx0XHRvbGRmaXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGhvb2tzLnVucXVldWVkKys7XG5cblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzXG5cdFx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGhvb2tzLnVucXVldWVkLS07XG5cdFx0XHRcdGlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgXCJmeFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLnRlc3QoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlmIHRoaXMgaXMgYSBcInNob3dcIiBhbmRcblx0XHRcdFx0Ly8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9tIGEgc3RvcHBlZCBzaG93L2hpZGVcblx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gXCJzaG93XCIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGhpZGRlbiA9IHRydWU7XG5cblx0XHRcdFx0Ly8gSWdub3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIEJhaWwgb3V0IGlmIHRoaXMgaXMgYSBuby1vcCBsaWtlIC5oaWRlKCkuaGlkZSgpXG5cdHByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTtcblx0aWYgKCAhcHJvcFR3ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVzdHJpY3QgXCJvdmVyZmxvd1wiIGFuZCBcImRpc3BsYXlcIiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRpb25zXG5cdGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTVcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90IGluZmVyIHRoZSBzaG9ydGhhbmRcblx0XHQvLyBmcm9tIGlkZW50aWNhbGx5LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WSBhbmQgRWRnZSBqdXN0IG1pcnJvcnNcblx0XHQvLyB0aGUgb3ZlcmZsb3dYIHZhbHVlIHRoZXJlLlxuXHRcdG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdO1xuXG5cdFx0Ly8gSWRlbnRpZnkgYSBkaXNwbGF5IHR5cGUsIHByZWZlcnJpbmcgb2xkIHNob3cvaGlkZSBkYXRhIG92ZXIgdGhlIENTUyBjYXNjYWRlXG5cdFx0cmVzdG9yZURpc3BsYXkgPSBkYXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5O1xuXHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdH1cblx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSApIHtcblx0XHRcdFx0ZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBHZXQgbm9uZW1wdHkgdmFsdWUocykgYnkgdGVtcG9yYXJpbHkgZm9yY2luZyB2aXNpYmlsaXR5XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApO1xuXHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9ja1xuXHRcdGlmICggZGlzcGxheSA9PT0gXCJpbmxpbmVcIiB8fCBkaXNwbGF5ID09PSBcImlubGluZS1ibG9ja1wiICYmIHJlc3RvcmVEaXNwbGF5ICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZmxvYXRcIiApID09PSBcIm5vbmVcIiApIHtcblxuXHRcdFx0XHQvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBkaXNwbGF5IHZhbHVlIGF0IHRoZSBlbmQgb2YgcHVyZSBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRcdFx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0ZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7XG5cdFx0XHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09IFwibm9uZVwiID8gXCJcIiA6IGRpc3BsYXk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggb3B0cy5vdmVyZmxvdyApIHtcblx0XHRzdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zXG5cdHByb3BUd2VlbiA9IGZhbHNlO1xuXHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cblx0XHQvLyBHZW5lcmFsIHNob3cvaGlkZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvblxuXHRcdGlmICggIXByb3BUd2VlbiApIHtcblx0XHRcdGlmICggZGF0YVNob3cgKSB7XG5cdFx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBcImZ4c2hvd1wiLCB7IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RvcmUgaGlkZGVuL3Zpc2libGUgZm9yIHRvZ2dsZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgXCJyZXZlcnNlc1wiXG5cdFx0XHRpZiAoIHRvZ2dsZSApIHtcblx0XHRcdFx0ZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2hvdyBlbGVtZW50cyBiZWZvcmUgYW5pbWF0aW5nIHRoZW1cblx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdFx0Ly8gVGhlIGZpbmFsIHN0ZXAgb2YgYSBcImhpZGVcIiBhbmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVtZW50XG5cdFx0XHRcdGlmICggIWhpZGRlbiApIHtcblx0XHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiZnhzaG93XCIgKTtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBQZXItcHJvcGVydHkgc2V0dXBcblx0XHRwcm9wVHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblx0XHRpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHtcblx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0cHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdFx0cHJvcFR3ZWVuLnN0YXJ0ID0gMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBjYW1lbENhc2UoIGluZGV4ICk7XG5cdFx0ZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdO1xuXHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF07XG5cdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBBbmltYXRpb24ucHJlZmlsdGVycy5sZW5ndGgsXG5cdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSApLFxuXHRcdHRpY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdFx0cmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLFxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHlcblx0XHRcdFx0Ly8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KVxuXHRcdFx0XHR0ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsXG5cdFx0XHRcdHBlcmNlbnQgPSAxIC0gdGVtcCxcblx0XHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0XHRsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDtcblxuXHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIHBlcmNlbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIHBlcmNlbnQsIHJlbWFpbmluZyBdICk7XG5cblx0XHRcdC8vIElmIHRoZXJlJ3MgbW9yZSB0byBkbywgeWllbGRcblx0XHRcdGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkge1xuXHRcdFx0XHRyZXR1cm4gcmVtYWluaW5nO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB0aGlzIHdhcyBhbiBlbXB0eSBhbmltYXRpb24sIHN5bnRoZXNpemUgYSBmaW5hbCBwcm9ncmVzcyBub3RpZmljYXRpb25cblx0XHRcdGlmICggIWxlbmd0aCApIHtcblx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXNvbHZlIHRoZSBhbmltYXRpb24gYW5kIHJlcG9ydCBpdHMgY29uY2x1c2lvblxuXHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2UoIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRwcm9wczogalF1ZXJ5LmV4dGVuZCgge30sIHByb3BlcnRpZXMgKSxcblx0XHRcdG9wdHM6IGpRdWVyeS5leHRlbmQoIHRydWUsIHtcblx0XHRcdFx0c3BlY2lhbEVhc2luZzoge30sXG5cdFx0XHRcdGVhc2luZzogalF1ZXJ5LmVhc2luZy5fZGVmYXVsdFxuXHRcdFx0fSwgb3B0aW9ucyApLFxuXHRcdFx0b3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuXHRcdFx0b3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLFxuXHRcdFx0c3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0XHR0d2VlbnM6IFtdLFxuXHRcdFx0Y3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7XG5cdFx0XHRcdHZhciB0d2VlbiA9IGpRdWVyeS5Ud2VlbiggZWxlbSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVuZCxcblx0XHRcdFx0XHRcdGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmdbIHByb3AgXSB8fCBhbmltYXRpb24ub3B0cy5lYXNpbmcgKTtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApO1xuXHRcdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0XHR9LFxuXHRcdFx0c3RvcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7XG5cdFx0XHRcdHZhciBpbmRleCA9IDAsXG5cblx0XHRcdFx0XHQvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnNcblx0XHRcdFx0XHQvLyBvdGhlcndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnRcblx0XHRcdFx0XHRsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwO1xuXHRcdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RvcHBlZCA9IHRydWU7XG5cdFx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lzZSwgcmVqZWN0XG5cdFx0XHRcdGlmICggZ290b0VuZCApIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0fSApLFxuXHRcdHByb3BzID0gYW5pbWF0aW9uLnByb3BzO1xuXG5cdHByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nICk7XG5cblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRyZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApO1xuXHRcdGlmICggcmVzdWx0ICkge1xuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCByZXN1bHQuc3RvcCApICkge1xuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIGFuaW1hdGlvbi5lbGVtLCBhbmltYXRpb24ub3B0cy5xdWV1ZSApLnN0b3AgPVxuXHRcdFx0XHRcdHJlc3VsdC5zdG9wLmJpbmQoIHJlc3VsdCApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH1cblxuXHRqUXVlcnkubWFwKCBwcm9wcywgY3JlYXRlVHdlZW4sIGFuaW1hdGlvbiApO1xuXG5cdGlmICggaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHtcblx0XHRhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTtcblx0fVxuXG5cdC8vIEF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXG5cdGFuaW1hdGlvblxuXHRcdC5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKVxuXHRcdC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApXG5cdFx0LmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKVxuXHRcdC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApO1xuXG5cdGpRdWVyeS5meC50aW1lcihcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0YW5pbTogYW5pbWF0aW9uLFxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlXG5cdFx0fSApXG5cdCk7XG5cblx0cmV0dXJuIGFuaW1hdGlvbjtcbn1cblxualF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwge1xuXG5cdHR3ZWVuZXJzOiB7XG5cdFx0XCIqXCI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkge1xuXHRcdFx0dmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTtcblx0XHRcdGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApO1xuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH0gXVxuXHR9LFxuXG5cdHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBwcm9wcyApICkge1xuXHRcdFx0Y2FsbGJhY2sgPSBwcm9wcztcblx0XHRcdHByb3BzID0gWyBcIipcIiBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7XG5cdFx0fVxuXG5cdFx0dmFyIHByb3AsXG5cdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0cHJvcCA9IHByb3BzWyBpbmRleCBdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9LFxuXG5cdHByZWZpbHRlcnM6IFsgZGVmYXVsdFByZWZpbHRlciBdLFxuXG5cdHByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkge1xuXHRcdGlmICggcHJlcGVuZCApIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHtcblx0dmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBzcGVlZCA9PT0gXCJvYmplY3RcIiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDoge1xuXHRcdGNvbXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8XG5cdFx0XHRpc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLFxuXHRcdGR1cmF0aW9uOiBzcGVlZCxcblx0XHRlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xuXHR9O1xuXG5cdC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9mZlxuXHRpZiAoIGpRdWVyeS5meC5vZmYgKSB7XG5cdFx0b3B0LmR1cmF0aW9uID0gMDtcblxuXHR9IGVsc2Uge1xuXHRcdGlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdGlmICggb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+IFwiZnhcIlxuXHRpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHtcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XG5cdH1cblxuXHQvLyBRdWV1ZWluZ1xuXHRvcHQub2xkID0gb3B0LmNvbXBsZXRlO1xuXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xuXHRcdFx0b3B0Lm9sZC5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHQucXVldWUgKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiBvcHQ7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHtcblxuXHRcdC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW5XaXRoaW5UcmVlICkuY3NzKCBcIm9wYWNpdHlcIiwgMCApLnNob3coKVxuXG5cdFx0XHQvLyBBbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWRcblx0XHRcdC5lbmQoKS5hbmltYXRlKCB7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH0sXG5cdGFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHR2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLFxuXHRcdFx0b3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLFxuXHRcdFx0ZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9wIHNvIHBlci1wcm9wZXJ0eSBlYXNpbmcgd29uJ3QgYmUgbG9zdFxuXHRcdFx0XHR2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwgb3B0YWxsICk7XG5cblx0XHRcdFx0Ly8gRW1wdHkgYW5pbWF0aW9ucywgb3IgZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5XG5cdFx0XHRcdGlmICggZW1wdHkgfHwgZGF0YVByaXYuZ2V0KCB0aGlzLCBcImZpbmlzaFwiICkgKSB7XG5cdFx0XHRcdFx0YW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjtcblxuXHRcdHJldHVybiBlbXB0eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID9cblx0XHRcdHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6XG5cdFx0XHR0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7XG5cdH0sXG5cdHN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkge1xuXHRcdHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7XG5cdFx0XHR2YXIgc3RvcCA9IGhvb2tzLnN0b3A7XG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdHN0b3AoIGdvdG9FbmQgKTtcblx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGdvdG9FbmQgPSBjbGVhclF1ZXVlO1xuXHRcdFx0Y2xlYXJRdWV1ZSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBkZXF1ZXVlID0gdHJ1ZSxcblx0XHRcdFx0aW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSArIFwicXVldWVIb29rc1wiLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7XG5cblx0XHRcdGlmICggaW5kZXggKSB7XG5cdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7XG5cdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoIGluZGV4IGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBycnVuLnRlc3QoIGluZGV4ICkgKSB7XG5cdFx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJlxuXHRcdFx0XHRcdCggdHlwZSA9PSBudWxsIHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApICkge1xuXG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApO1xuXHRcdFx0XHRcdGRlcXVldWUgPSBmYWxzZTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQuXG5cdFx0XHQvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoXG5cdFx0XHQvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuXG5cdFx0XHRpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXHRmaW5pc2g6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdGlmICggdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGluZGV4LFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICksXG5cdFx0XHRcdHF1ZXVlID0gZGF0YVsgdHlwZSArIFwicXVldWVcIiBdLFxuXHRcdFx0XHRob29rcyA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlSG9va3NcIiBdLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRsZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7XG5cblx0XHRcdC8vIEVuYWJsZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRhdGFcblx0XHRcdGRhdGEuZmluaXNoID0gdHJ1ZTtcblxuXHRcdFx0Ly8gRW1wdHkgdGhlIHF1ZXVlIGZpcnN0XG5cdFx0XHRqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIFtdICk7XG5cblx0XHRcdGlmICggaG9va3MgJiYgaG9va3Muc3RvcCApIHtcblx0XHRcdFx0aG9va3Muc3RvcC5jYWxsKCB0aGlzLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhY3RpdmUgYW5pbWF0aW9ucywgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApIHtcblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYW5pbWF0aW9ucyBpbiB0aGUgb2xkIHF1ZXVlIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0aWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7XG5cdFx0XHRcdFx0cXVldWVbIGluZGV4IF0uZmluaXNoLmNhbGwoIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUdXJuIG9mZiBmaW5pc2hpbmcgZmxhZ1xuXHRcdFx0ZGVsZXRlIGRhdGEuZmluaXNoO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcInRvZ2dsZVwiLCBcInNob3dcIiwgXCJoaWRlXCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdHZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdO1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0eXBlb2Ygc3BlZWQgPT09IFwiYm9vbGVhblwiID9cblx0XHRcdGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6XG5cdFx0XHR0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnNcbmpRdWVyeS5lYWNoKCB7XG5cdHNsaWRlRG93bjogZ2VuRngoIFwic2hvd1wiICksXG5cdHNsaWRlVXA6IGdlbkZ4KCBcImhpZGVcIiApLFxuXHRzbGlkZVRvZ2dsZTogZ2VuRngoIFwidG9nZ2xlXCIgKSxcblx0ZmFkZUluOiB7IG9wYWNpdHk6IFwic2hvd1wiIH0sXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcblx0ZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiBcInRvZ2dsZVwiIH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS50aW1lcnMgPSBbXTtcbmpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7XG5cdHZhciB0aW1lcixcblx0XHRpID0gMCxcblx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzO1xuXG5cdGZ4Tm93ID0gRGF0ZS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblxuXHRcdC8vIFJ1biB0aGUgdGltZXIgYW5kIHNhZmVseSByZW1vdmUgaXQgd2hlbiBkb25lIChhbGxvd2luZyBmb3IgZXh0ZXJuYWwgcmVtb3ZhbClcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRqUXVlcnkuZnguc3RhcnQoKTtcbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xualF1ZXJ5LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpblByb2dyZXNzID0gdHJ1ZTtcblx0c2NoZWR1bGUoKTtcbn07XG5cbmpRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdGluUHJvZ3Jlc3MgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cblx0Ly8gRGVmYXVsdCBzcGVlZFxuXHRfZGVmYXVsdDogNDAwXG59O1xuXG5cbi8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi5cbi8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMDMyNDAxNDc0Ny9odHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvXG5qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHtcblx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcblx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7XG5cdFx0dmFyIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSApO1xuXHRcdGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHtcblx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTtcblx0XHR9O1xuXHR9ICk7XG59O1xuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApLFxuXHRcdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2VsZWN0XCIgKSxcblx0XHRvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib3B0aW9uXCIgKSApO1xuXG5cdGlucHV0LnR5cGUgPSBcImNoZWNrYm94XCI7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5XG5cdC8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlIFwib25cIlxuXHRzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0gXCJcIjtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3Rcblx0c3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW9cblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcblx0aW5wdXQudHlwZSA9IFwicmFkaW9cIjtcblx0c3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09IFwidFwiO1xufSApKCk7XG5cblxudmFyIGJvb2xIb29rLFxuXHRhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZFxuXHRcdGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdC8vIEF0dHJpYnV0ZSBob29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNpb25cblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVuZGVmaW5lZCApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkXG5cdFx0cmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdG5vZGVOYW1lKCBlbGVtLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR2YXIgdmFsID0gZWxlbS52YWx1ZTtcblx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIHZhbHVlICk7XG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnZhbHVlID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdHZhciBuYW1lLFxuXHRcdFx0aSA9IDAsXG5cblx0XHRcdC8vIEF0dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMlxuXHRcdFx0YXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblxuXHRcdGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHR3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xuYm9vbEhvb2sgPSB7XG5cdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkge1xuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxufTtcblxualF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXFx3Ky9nICksIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5kLmF0dHI7XG5cblx0YXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciByZXQsIGhhbmRsZSxcblx0XHRcdGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRpZiAoICFpc1hNTCApIHtcblxuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRsb3dlcmNhc2VOYW1lIDpcblx0XHRcdFx0bnVsbDtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTtcblx0XHR9XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcbn0gKTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtWyBuYW1lIF07XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGVcblx0XHRcdFx0Ly8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG5cdFx0XHRcdC8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTExNjIzMzM0Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0L1xuXHRcdFx0XHQvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEyMDcyKVxuXHRcdFx0XHR2YXIgdGFiaW5kZXggPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInRhYmluZGV4XCIgKTtcblxuXHRcdFx0XHRpZiAoIHRhYmluZGV4ICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHxcblx0XHRcdFx0XHRyY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJlxuXHRcdFx0XHRcdGVsZW0uaHJlZlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cHJvcEZpeDoge1xuXHRcdFwiZm9yXCI6IFwiaHRtbEZvclwiLFxuXHRcdFwiY2xhc3NcIjogXCJjbGFzc05hbWVcIlxuXHR9XG59ICk7XG5cbi8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuLy8gQWNjZXNzaW5nIHRoZSBzZWxlY3RlZEluZGV4IHByb3BlcnR5XG4vLyBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0aW5nIHNlbGVjdGVkXG4vLyBvbiB0aGUgb3B0aW9uXG4vLyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBkZWZhdWx0IG9wdGlvbiBpcyBzZWxlY3RlZFxuLy8gd2hlbiBpbiBhbiBvcHRncm91cFxuLy8gZXNsaW50IHJ1bGUgXCJuby11bnVzZWQtZXhwcmVzc2lvbnNcIiBpcyBkaXNhYmxlZCBmb3IgdGhpcyBjb2RlXG4vLyBzaW5jZSBpdCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25zIG5vb3BcbmlmICggIXN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7XG5cdGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0LyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJvZmZcIiAqL1xuXG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRwYXJlbnQuc2VsZWN0ZWRJbmRleDtcblxuXHRcdFx0XHRpZiAoIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmpRdWVyeS5lYWNoKCBbXG5cdFwidGFiSW5kZXhcIixcblx0XCJyZWFkT25seVwiLFxuXHRcIm1heExlbmd0aFwiLFxuXHRcImNlbGxTcGFjaW5nXCIsXG5cdFwiY2VsbFBhZGRpbmdcIixcblx0XCJyb3dTcGFuXCIsXG5cdFwiY29sU3BhblwiLFxuXHRcInVzZU1hcFwiLFxuXHRcImZyYW1lQm9yZGVyXCIsXG5cdFwiY29udGVudEVkaXRhYmxlXCJcbl0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzO1xufSApO1xuXG5cblxuXG5cdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWNcblx0Ly8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS1hc2NpaS13aGl0ZXNwYWNlXG5cdGZ1bmN0aW9uIHN0cmlwQW5kQ29sbGFwc2UoIHZhbHVlICkge1xuXHRcdHZhciB0b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXHRcdHJldHVybiB0b2tlbnMuam9pbiggXCIgXCIgKTtcblx0fVxuXG5cbmZ1bmN0aW9uIGdldENsYXNzKCBlbGVtICkge1xuXHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiApIHx8IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApIHtcblx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0fVxuXHRyZXR1cm4gW107XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsXG5cdFx0XHRpID0gMDtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NlcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc2VzLmxlbmd0aCApIHtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApO1xuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgXCIgXCIgKTtcblxuXHRcdFx0XHRpZiAoIGN1ciApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkge1xuXHRcdFx0XHRcdFx0aWYgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPCAwICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgKz0gY2xhenogKyBcIiBcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hdHRyKCBcImNsYXNzXCIsIFwiXCIgKTtcblx0XHR9XG5cblx0XHRjbGFzc2VzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGNsYXNzZXMubGVuZ3RoICkge1xuXHRcdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0XHRjdXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7XG5cblx0XHRcdFx0Ly8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcylcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0Y3VyID0gY3VyLnJlcGxhY2UoIFwiIFwiICsgY2xhenogKyBcIiBcIiwgXCIgXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkge1xuXHRcdHZhciB0eXBlID0gdHlwZW9mIHZhbHVlLFxuXHRcdFx0aXNWYWxpZFZhbHVlID0gdHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGVWYWwgPT09IFwiYm9vbGVhblwiICYmIGlzVmFsaWRWYWx1ZSApIHtcblx0XHRcdHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyhcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLFxuXHRcdFx0XHRcdHN0YXRlVmFsXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzO1xuXG5cdFx0XHRpZiAoIGlzVmFsaWRWYWx1ZSApIHtcblxuXHRcdFx0XHQvLyBUb2dnbGUgaW5kaXZpZHVhbCBjbGFzcyBuYW1lc1xuXHRcdFx0XHRpID0gMDtcblx0XHRcdFx0c2VsZiA9IGpRdWVyeSggdGhpcyApO1xuXHRcdFx0XHRjbGFzc05hbWVzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRcdFx0d2hpbGUgKCAoIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3Rcblx0XHRcdFx0XHRpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkge1xuXHRcdFx0XHRcdFx0c2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZVxuXHRcdFx0fSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0Y2xhc3NOYW1lID0gZ2V0Q2xhc3MoIHRoaXMgKTtcblx0XHRcdFx0aWYgKCBjbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBjbGFzc05hbWUgaWYgc2V0XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiwgY2xhc3NOYW1lICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLFxuXHRcdFx0XHQvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLlxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLFxuXHRcdFx0XHQvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG5cdFx0XHRcdGlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIixcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0XHRcdFx0XCJcIiA6XG5cdFx0XHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiICkgfHwgXCJcIlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0aGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgY2xhc3NOYW1lLCBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRjbGFzc05hbWUgPSBcIiBcIiArIHNlbGVjdG9yICsgXCIgXCI7XG5cdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyBcIiBcIiApLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCB2YWx1ZUlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmXG5cdFx0XHRcdFx0XCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSApICE9PSB1bmRlZmluZWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRpZiAoIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCBcIlwiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcblx0XHRcdFx0cmV0dXJuIHJldCA9PSBudWxsID8gXCJcIiA6IHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWwgKz0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHZhbCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICsgXCJcIjtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgXCJ2YWx1ZVwiICkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbDtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHR2YWxIb29rczoge1xuXHRcdG9wdGlvbjoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSBvbmx5XG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KVxuXHRcdFx0XHRcdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3BhY2Vcblx0XHRcdFx0XHRzdHJpcEFuZENvbGxhcHNlKCBqUXVlcnkudGV4dCggZWxlbSApICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzZWxlY3Q6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWx1ZSwgb3B0aW9uLCBpLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0aW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsXG5cdFx0XHRcdFx0b25lID0gZWxlbS50eXBlID09PSBcInNlbGVjdC1vbmVcIixcblx0XHRcdFx0XHR2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sXG5cdFx0XHRcdFx0bWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0aWYgKCBpbmRleCA8IDAgKSB7XG5cdFx0XHRcdFx0aSA9IG1heDtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGkgPSBvbmUgPyBpbmRleCA6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0Ly8gSUU4LTkgZG9lc24ndCB1cGRhdGUgc2VsZWN0ZWQgYWZ0ZXIgZm9ybSByZXNldCAoIzI1NTEpXG5cdFx0XHRcdFx0aWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYmXG5cblx0XHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0XHRcdFx0XHQhb3B0aW9uLmRpc2FibGVkICYmXG5cdFx0XHRcdFx0XHRcdCggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8XG5cdFx0XHRcdFx0XHRcdFx0IW5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuXHRcdFx0XHRcdFx0dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xuXHRcdFx0XHRcdFx0aWYgKCBvbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXlcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIG9wdGlvblNldCwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0dmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSxcblx0XHRcdFx0XHRpID0gb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3NpZ24gKi9cblxuXHRcdFx0XHRcdGlmICggb3B0aW9uLnNlbGVjdGVkID1cblx0XHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVlcyApID4gLTFcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG9wdGlvblNldCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRseSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXRcblx0XHRcdFx0aWYgKCAhb3B0aW9uU2V0ICkge1xuXHRcdFx0XHRcdGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyXG5qUXVlcnkuZWFjaCggWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7XG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7XG5cdFx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFJldHVybiBqUXVlcnkgZm9yIGF0dHJpYnV0ZXMtb25seSBpbmNsdXNpb25cblxuXG5zdXBwb3J0LmZvY3VzaW4gPSBcIm9uZm9jdXNpblwiIGluIHdpbmRvdztcblxuXG52YXIgcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXG5cdHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrID0gZnVuY3Rpb24oIGUgKSB7XG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0fTtcblxualF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmV2ZW50LCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7XG5cblx0XHR2YXIgaSwgY3VyLCB0bXAsIGJ1YmJsZVR5cGUsIG9udHlwZSwgaGFuZGxlLCBzcGVjaWFsLCBsYXN0RWxlbWVudCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggXCIuXCIgKSA6IFtdO1xuXG5cdFx0Y3VyID0gbGFzdEVsZW1lbnQgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDtcblxuXHRcdC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XG5cdFx0aWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZS5pbmRleE9mKCBcIi5cIiApID4gLTEgKSB7XG5cblx0XHRcdC8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRvIG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKClcblx0XHRcdG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCBcIi5cIiApO1xuXHRcdFx0dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTtcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xuXHRcdH1cblx0XHRvbnR5cGUgPSB0eXBlLmluZGV4T2YoIFwiOlwiICkgPCAwICYmIFwib25cIiArIHR5cGU7XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmdcblx0XHRldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdGV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gXCJvYmplY3RcIiAmJiBldmVudCApO1xuXG5cdFx0Ly8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKVxuXHRcdGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKTtcblx0XHRldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID9cblx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApIDpcblx0XHRcdG51bGw7XG5cblx0XHQvLyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWRcblx0XHRldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZWxlbTtcblx0XHR9XG5cblx0XHQvLyBDbG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0XG5cdFx0ZGF0YSA9IGRhdGEgPT0gbnVsbCA/XG5cdFx0XHRbIGV2ZW50IF0gOlxuXHRcdFx0alF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7XG5cblx0XHQvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3IG91dHNpZGUgdGhlIGxpbmVzXG5cdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRyaWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpXG5cdFx0Ly8gQnViYmxlIHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xvYmFsIG93bmVyRG9jdW1lbnQgdmFyICgjOTcyNClcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwubm9CdWJibGUgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xuXHRcdFx0aWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHtcblx0XHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0dG1wID0gY3VyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSlcblx0XHRcdGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aFxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRsYXN0RWxlbWVudCA9IGN1cjtcblx0XHRcdGV2ZW50LnR5cGUgPSBpID4gMSA/XG5cdFx0XHRcdGJ1YmJsZVR5cGUgOlxuXHRcdFx0XHRzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7XG5cblx0XHRcdC8vIGpRdWVyeSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmXG5cdFx0XHRcdGRhdGFQcml2LmdldCggY3VyLCBcImhhbmRsZVwiICk7XG5cdFx0XHRpZiAoIGhhbmRsZSApIHtcblx0XHRcdFx0aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF0aXZlIGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdO1xuXHRcdFx0aWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHxcblx0XHRcdFx0c3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiZcblx0XHRcdFx0YWNjZXB0RGF0YSggZWxlbSApICkge1xuXG5cdFx0XHRcdC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MClcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgaXNGdW5jdGlvbiggZWxlbVsgdHlwZSBdICkgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXG5cdFx0XHRcdFx0dG1wID0gZWxlbVsgb250eXBlIF07XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZVxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlO1xuXG5cdFx0XHRcdFx0aWYgKCBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0XHRcdFx0bGFzdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgc3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtWyB0eXBlIF0oKTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSB0bXA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHQvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmVcblx0Ly8gVXNlZCBvbmx5IGZvciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHNcblx0c2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCApIHtcblx0XHR2YXIgZSA9IGpRdWVyeS5leHRlbmQoXG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCksXG5cdFx0XHRldmVudCxcblx0XHRcdHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0aXNTaW11bGF0ZWQ6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTtcblx0fVxuXG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7XG5cdFx0fSApO1xuXHR9LFxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF07XG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cblxuLy8gU3VwcG9ydDogRmlyZWZveCA8PTQ0XG4vLyBGaXJlZm94IGRvZXNuJ3QgaGF2ZSBmb2N1cyhpbiB8IG91dCkgZXZlbnRzXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4N1xuLy9cbi8vIFN1cHBvcnQ6IENocm9tZSA8PTQ4IC0gNDksIFNhZmFyaSA8PTkuMCAtIDkuMVxuLy8gZm9jdXMoaW4gfCBvdXQpIGV2ZW50cyBmaXJlIGFmdGVyIGZvY3VzICYgYmx1ciBldmVudHMsXG4vLyB3aGljaCBpcyBzcGVjIHZpb2xhdGlvbiAtIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWZvY3VzZXZlbnQtZXZlbnQtb3JkZXJcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ5ODU3XG5pZiAoICFzdXBwb3J0LmZvY3VzaW4gKSB7XG5cdGpRdWVyeS5lYWNoKCB7IGZvY3VzOiBcImZvY3VzaW5cIiwgYmx1cjogXCJmb2N1c291dFwiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cblx0XHQvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhlIGRvY3VtZW50IHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dFxuXHRcdHZhciBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSApO1xuXHRcdH07XG5cblx0XHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsICggYXR0YWNoZXMgfHwgMCApICsgMSApO1xuXHRcdFx0fSxcblx0XHRcdHRlYXJkb3duOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9ICk7XG59XG52YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG5cbnZhciBub25jZSA9IERhdGUubm93KCk7XG5cbnZhciBycXVlcnkgPSAoIC9cXD8vICk7XG5cblxuXG4vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXG5qUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSApIHtcblx0dmFyIHhtbDtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdC8vIElFIHRocm93cyBvbiBwYXJzZUZyb21TdHJpbmcgd2l0aCBpbnZhbGlkIGlucHV0LlxuXHR0cnkge1xuXHRcdHhtbCA9ICggbmV3IHdpbmRvdy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHhtbCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwicGFyc2VyZXJyb3JcIiApLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgZGF0YSApO1xuXHR9XG5cdHJldHVybiB4bWw7XG59O1xuXG5cbnZhclxuXHRyYnJhY2tldCA9IC9cXFtcXF0kLyxcblx0ckNSTEYgPSAvXFxyP1xcbi9nLFxuXHRyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksXG5cdHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcblxuZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkge1xuXHR2YXIgbmFtZTtcblxuXHRpZiAoIEFycmF5LmlzQXJyYXkoIG9iaiApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uXG5cdFx0alF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7XG5cdFx0XHRpZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkge1xuXG5cdFx0XHRcdC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci5cblx0XHRcdFx0YWRkKCBwcmVmaXgsIHYgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMgbnVtZXJpYyBpbmRleC5cblx0XHRcdFx0YnVpbGRQYXJhbXMoXG5cdFx0XHRcdFx0cHJlZml4ICsgXCJbXCIgKyAoIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT0gbnVsbCA/IGkgOiBcIlwiICkgKyBcIl1cIixcblx0XHRcdFx0XHR2LFxuXHRcdFx0XHRcdHRyYWRpdGlvbmFsLFxuXHRcdFx0XHRcdGFkZFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHR9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgdG9UeXBlKCBvYmogKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArIG5hbWUgKyBcIl1cIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS5cblx0XHRhZGQoIHByZWZpeCwgb2JqICk7XG5cdH1cbn1cblxuLy8gU2VyaWFsaXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2Zcbi8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZ1xualF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkge1xuXHR2YXIgcHJlZml4LFxuXHRcdHMgPSBbXSxcblx0XHRhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZU9yRnVuY3Rpb24gKSB7XG5cblx0XHRcdC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWVcblx0XHRcdHZhciB2YWx1ZSA9IGlzRnVuY3Rpb24oIHZhbHVlT3JGdW5jdGlvbiApID9cblx0XHRcdFx0dmFsdWVPckZ1bmN0aW9uKCkgOlxuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb247XG5cblx0XHRcdHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQoIGtleSApICsgXCI9XCIgK1xuXHRcdFx0XHRlbmNvZGVVUklDb21wb25lbnQoIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKTtcblx0XHR9O1xuXG5cdC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuXG5cdGlmICggQXJyYXkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50c1xuXHRcdGpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpIHtcblx0XHRcdGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7XG5cdFx0fSApO1xuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSBcIm9sZFwiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlclxuXHRcdC8vIGRpZCBpdCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LlxuXHRcdGZvciAoIHByZWZpeCBpbiBhICkge1xuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uXG5cdHJldHVybiBzLmpvaW4oIFwiJlwiICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNlcmlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7XG5cdH0sXG5cdHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBDYW4gYWRkIHByb3BIb29rIGZvciBcImVsZW1lbnRzXCIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzXG5cdFx0XHR2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCggdGhpcywgXCJlbGVtZW50c1wiICk7XG5cdFx0XHRyZXR1cm4gZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpcztcblx0XHR9IClcblx0XHQuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciB0eXBlID0gdGhpcy50eXBlO1xuXG5cdFx0XHQvLyBVc2UgLmlzKCBcIjpkaXNhYmxlZFwiICkgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3Ncblx0XHRcdHJldHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCBcIjpkaXNhYmxlZFwiICkgJiZcblx0XHRcdFx0cnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJlxuXHRcdFx0XHQoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7XG5cdFx0fSApXG5cdFx0Lm1hcCggZnVuY3Rpb24oIGksIGVsZW0gKSB7XG5cdFx0XHR2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7XG5cblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHR9ICkuZ2V0KCk7XG5cdH1cbn0gKTtcblxuXG52YXJcblx0cjIwID0gLyUyMC9nLFxuXHRyaGFzaCA9IC8jLiokLyxcblx0cmFudGlDYWNoZSA9IC8oWz8mXSlfPVteJl0qLyxcblx0cmhlYWRlcnMgPSAvXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKikkL21nLFxuXG5cdC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvblxuXHRybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLFxuXHRybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLyxcblx0cnByb3RvY29sID0gL15cXC9cXC8vLFxuXG5cdC8qIFByZWZpbHRlcnNcblx0ICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSlcblx0ICogMikgVGhlc2UgYXJlIGNhbGxlZDpcblx0ICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydFxuXHQgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpXG5cdCAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0cHJlZmlsdGVycyA9IHt9LFxuXG5cdC8qIFRyYW5zcG9ydHMgYmluZGluZ3Ncblx0ICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0dHJhbnNwb3J0cyA9IHt9LFxuXG5cdC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxuXHRhbGxUeXBlcyA9IFwiKi9cIi5jb25jYXQoIFwiKlwiICksXG5cblx0Ly8gQW5jaG9yIHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9yaWdpbkFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiYVwiICk7XG5cdG9yaWdpbkFuY2hvci5ocmVmID0gbG9jYXRpb24uaHJlZjtcblxuLy8gQmFzZSBcImNvbnN0cnVjdG9yXCIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydFxuZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7XG5cblx0Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBcIipcIlxuXHRyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHtcblxuXHRcdGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247XG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcblx0XHR9XG5cblx0XHR2YXIgZGF0YVR5cGUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblxuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbIDAgXSA9PT0gXCIrXCIgKSB7XG5cdFx0XHRcdFx0ZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8IFwiKlwiO1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXG5cdFx0XHRcdG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0aW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkge1xuXHRcdFx0XHRyZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyAjOTg4N1xuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XG5cdHZhciBrZXksIGRlZXAsXG5cdFx0ZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9O1xuXG5cdGZvciAoIGtleSBpbiBzcmMgKSB7XG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHQoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoIGRlZXAgPSB7fSApICkgKVsga2V5IF0gPSBzcmNbIGtleSBdO1xuXHRcdH1cblx0fVxuXHRpZiAoIGRlZXAgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0O1xufVxuXG4vKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6XG4gKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKVxuICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7XG5cblx0dmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBlLFxuXHRcdGNvbnRlbnRzID0gcy5jb250ZW50cyxcblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcztcblxuXHQvLyBSZW1vdmUgYXV0byBkYXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2Vzc1xuXHR3aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSBcIipcIiApIHtcblx0XHRkYXRhVHlwZXMuc2hpZnQoKTtcblx0XHRpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGVcblx0aWYgKCBjdCApIHtcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xuXHRcdFx0aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHtcblx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xuXHRcdGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTtcblx0fSBlbHNlIHtcblxuXHRcdC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXNcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcblx0XHRcdGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArIFwiIFwiICsgZGF0YVR5cGVzWyAwIF0gXSApIHtcblx0XHRcdFx0ZmluYWxEYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhZmlyc3REYXRhVHlwZSApIHtcblx0XHRcdFx0Zmlyc3REYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gT3IganVzdCB1c2UgZmlyc3Qgb25lXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTtcblx0fVxuXG5cdC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGVcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcblx0Ly8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuXHRpZiAoIGZpbmFsRGF0YVR5cGUgKSB7XG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcblx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7XG5cdFx0fVxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcblx0fVxufVxuXG4vKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlXG4gKiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkge1xuXHR2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldixcblx0XHRjb252ZXJ0ZXJzID0ge30sXG5cblx0XHQvLyBXb3JrIHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBjb252ZXJzaW9uXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTtcblxuXHQvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXNcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcblx0XHRmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHtcblx0XHRcdGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07XG5cdFx0fVxuXHR9XG5cblx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlXG5cdHdoaWxlICggY3VycmVudCApIHtcblxuXHRcdGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkge1xuXHRcdFx0anFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcblx0XHRpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7XG5cdFx0XHRyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTtcblx0XHR9XG5cblx0XHRwcmV2ID0gY3VycmVudDtcblx0XHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0XHRpZiAoIGN1cnJlbnQgKSB7XG5cblx0XHRcdC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG9cblx0XHRcdGlmICggY3VycmVudCA9PT0gXCIqXCIgKSB7XG5cblx0XHRcdFx0Y3VycmVudCA9IHByZXY7XG5cblx0XHRcdC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnRcblx0XHRcdH0gZWxzZSBpZiAoIHByZXYgIT09IFwiKlwiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXJcblx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyBcIiogXCIgKyBjdXJyZW50IF07XG5cblx0XHRcdFx0Ly8gSWYgbm9uZSBmb3VuZCwgc2VlayBhIHBhaXJcblx0XHRcdFx0aWYgKCAhY29udiApIHtcblx0XHRcdFx0XHRmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnRcblx0XHRcdFx0XHRcdHRtcCA9IGNvbnYyLnNwbGl0KCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCB0bXBbIDEgXSA9PT0gY3VycmVudCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXRcblx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIHRtcFsgMCBdIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJzWyBcIiogXCIgKyB0bXBbIDAgXSBdO1xuXHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHMudGhyb3dzICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogXCJwYXJzZXJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllc1xuXHRhY3RpdmU6IDAsXG5cblx0Ly8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdFxuXHRsYXN0TW9kaWZpZWQ6IHt9LFxuXHRldGFnOiB7fSxcblxuXHRhamF4U2V0dGluZ3M6IHtcblx0XHR1cmw6IGxvY2F0aW9uLmhyZWYsXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBsb2NhdGlvbi5wcm90b2NvbCApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblxuXHRcdC8qXG5cdFx0dGltZW91dDogMCxcblx0XHRkYXRhOiBudWxsLFxuXHRcdGRhdGFUeXBlOiBudWxsLFxuXHRcdHVzZXJuYW1lOiBudWxsLFxuXHRcdHBhc3N3b3JkOiBudWxsLFxuXHRcdGNhY2hlOiBudWxsLFxuXHRcdHRocm93czogZmFsc2UsXG5cdFx0dHJhZGl0aW9uYWw6IGZhbHNlLFxuXHRcdGhlYWRlcnM6IHt9LFxuXHRcdCovXG5cblx0XHRhY2NlcHRzOiB7XG5cdFx0XHRcIipcIjogYWxsVHlwZXMsXG5cdFx0XHR0ZXh0OiBcInRleHQvcGxhaW5cIixcblx0XHRcdGh0bWw6IFwidGV4dC9odG1sXCIsXG5cdFx0XHR4bWw6IFwiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbFwiLFxuXHRcdFx0anNvbjogXCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHRcIlxuXHRcdH0sXG5cblx0XHRjb250ZW50czoge1xuXHRcdFx0eG1sOiAvXFxieG1sXFxiLyxcblx0XHRcdGh0bWw6IC9cXGJodG1sLyxcblx0XHRcdGpzb246IC9cXGJqc29uXFxiL1xuXHRcdH0sXG5cblx0XHRyZXNwb25zZUZpZWxkczoge1xuXHRcdFx0eG1sOiBcInJlc3BvbnNlWE1MXCIsXG5cdFx0XHR0ZXh0OiBcInJlc3BvbnNlVGV4dFwiLFxuXHRcdFx0anNvbjogXCJyZXNwb25zZUpTT05cIlxuXHRcdH0sXG5cblx0XHQvLyBEYXRhIGNvbnZlcnRlcnNcblx0XHQvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwgXCIqXCIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG5cdFx0Y29udmVydGVyczoge1xuXG5cdFx0XHQvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHRcblx0XHRcdFwiKiB0ZXh0XCI6IFN0cmluZyxcblxuXHRcdFx0Ly8gVGV4dCB0byBodG1sICh0cnVlID0gbm8gdHJhbnNmb3JtYXRpb24pXG5cdFx0XHRcInRleHQgaHRtbFwiOiB0cnVlLFxuXG5cdFx0XHQvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uXG5cdFx0XHRcInRleHQganNvblwiOiBKU09OLnBhcnNlLFxuXG5cdFx0XHQvLyBQYXJzZSB0ZXh0IGFzIHhtbFxuXHRcdFx0XCJ0ZXh0IHhtbFwiOiBqUXVlcnkucGFyc2VYTUxcblx0XHR9LFxuXG5cdFx0Ly8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDpcblx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmXG5cdFx0Ly8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmVcblx0XHQvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZClcblx0XHRmbGF0T3B0aW9uczoge1xuXHRcdFx0dXJsOiB0cnVlLFxuXHRcdFx0Y29udGV4dDogdHJ1ZVxuXHRcdH1cblx0fSxcblxuXHQvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldFxuXHQvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuXG5cdC8vIElmIHRhcmdldCBpcyBvbWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuXG5cdGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7XG5cdFx0cmV0dXJuIHNldHRpbmdzID9cblxuXHRcdFx0Ly8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3Rcblx0XHRcdGFqYXhFeHRlbmQoIGFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApLCBzZXR0aW5ncyApIDpcblxuXHRcdFx0Ly8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5nc1xuXHRcdFx0YWpheEV4dGVuZCggalF1ZXJ5LmFqYXhTZXR0aW5ncywgdGFyZ2V0ICk7XG5cdH0sXG5cblx0YWpheFByZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksXG5cdGFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLFxuXG5cdC8vIE1haW4gbWV0aG9kXG5cdGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZVxuXHRcdGlmICggdHlwZW9mIHVybCA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdG9wdGlvbnMgPSB1cmw7XG5cdFx0XHR1cmwgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gRm9yY2Ugb3B0aW9ucyB0byBiZSBhbiBvYmplY3Rcblx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRcdHZhciB0cmFuc3BvcnQsXG5cblx0XHRcdC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW1cblx0XHRcdGNhY2hlVVJMLFxuXG5cdFx0XHQvLyBSZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcsXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXG5cblx0XHRcdC8vIHRpbWVvdXQgaGFuZGxlXG5cdFx0XHR0aW1lb3V0VGltZXIsXG5cblx0XHRcdC8vIFVybCBjbGVhbnVwIHZhclxuXHRcdFx0dXJsQW5jaG9yLFxuXG5cdFx0XHQvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVzIGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24pXG5cdFx0XHRjb21wbGV0ZWQsXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZFxuXHRcdFx0ZmlyZUdsb2JhbHMsXG5cblx0XHRcdC8vIExvb3AgdmFyaWFibGVcblx0XHRcdGksXG5cblx0XHRcdC8vIHVuY2FjaGVkIHBhcnQgb2YgdGhlIHVybFxuXHRcdFx0dW5jYWNoZWQsXG5cblx0XHRcdC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3Rcblx0XHRcdHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLFxuXG5cdFx0XHQvLyBDYWxsYmFja3MgY29udGV4dFxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXG5cblx0XHRcdC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMgaXMgY2FsbGJhY2tDb250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNvbGxlY3Rpb25cblx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJlxuXHRcdFx0XHQoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOlxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudCxcblxuXHRcdFx0Ly8gRGVmZXJyZWRzXG5cdFx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblxuXHRcdFx0Ly8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSlcblx0XHRcdHJlcXVlc3RIZWFkZXJzID0ge30sXG5cdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sXG5cblx0XHRcdC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZVxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXG5cblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHRcdGlmICggIXJlc3BvbnNlSGVhZGVycyApIHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzID0ge307XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gPVxuXHRcdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEgd2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzXG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApO1xuXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiApICsgXCJcIiApXG5cdFx0XHQucmVwbGFjZSggcnByb3RvY29sLCBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiApO1xuXG5cdFx0Ly8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgIzEyMDA0XG5cdFx0cy50eXBlID0gb3B0aW9ucy5tZXRob2QgfHwgb3B0aW9ucy50eXBlIHx8IHMubWV0aG9kIHx8IHMudHlwZTtcblxuXHRcdC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3Rcblx0XHRzLmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8fCBcIipcIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLlxuXHRcdGlmICggcy5jcm9zc0RvbWFpbiA9PSBudWxsICkge1xuXHRcdFx0dXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxNVxuXHRcdFx0Ly8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1hbGZvcm1lZCxcblx0XHRcdC8vIGUuZy4gaHR0cDovL2V4YW1wbGUuY29tOjgweC9cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gcy51cmw7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25seVxuXHRcdFx0XHQvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVybCBpcyByZWxhdGl2ZVxuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHVybEFuY2hvci5ocmVmO1xuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gb3JpZ2luQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgb3JpZ2luQW5jaG9yLmhvc3QgIT09XG5cdFx0XHRcdFx0dXJsQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgdXJsQW5jaG9yLmhvc3Q7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBjcm9zc0RvbWFpbixcblx0XHRcdFx0Ly8gaXQgY2FuIGJlIHJlamVjdGVkIGJ5IHRoZSB0cmFuc3BvcnQgaWYgaXQgaXMgaW52YWxpZFxuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcblx0XHRpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHByZWZpbHRlcnNcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlXG5cdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0YXJ0XCIgKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHQvLyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgXCJcIiApO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBoYXNoIHNvIHdlIGNhbiBwdXQgaXQgYmFja1xuXHRcdFx0dW5jYWNoZWQgPSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3RoICk7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICYmICggcy5wcm9jZXNzRGF0YSB8fCB0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICkgKSB7XG5cdFx0XHRcdGNhY2hlVVJMICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGE7XG5cblx0XHRcdFx0Ly8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeVxuXHRcdFx0XHRkZWxldGUgcy5kYXRhO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgb3IgdXBkYXRlIGFudGktY2FjaGUgcGFyYW0gaWYgbmVlZGVkXG5cdFx0XHRpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRjYWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJhbnRpQ2FjaGUsIFwiJDFcIiApO1xuXHRcdFx0XHR1bmNhY2hlZCA9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBcIl89XCIgKyAoIG5vbmNlKysgKSArIHVuY2FjaGVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQdXQgaGFzaCBhbmQgYW50aS1jYWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgKGdoLTE3MzIpXG5cdFx0XHRzLnVybCA9IGNhY2hlVVJMICsgdW5jYWNoZWQ7XG5cblx0XHQvLyBDaGFuZ2UgJyUyMCcgdG8gJysnIGlmIHRoaXMgaXMgZW5jb2RlZCBmb3JtIGJvZHkgY29udGVudCAoZ2gtMjY1OClcblx0XHR9IGVsc2UgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJlxuXHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKS5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgKSB7XG5cdFx0XHRzLmRhdGEgPSBzLmRhdGEucmVwbGFjZSggcjIwLCBcIitcIiApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTW9kaWZpZWQtU2luY2VcIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Ob25lLU1hdGNoXCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50XG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiLCBzLmNvbnRlbnRUeXBlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZVxuXHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXG5cdFx0XHRcIkFjY2VwdFwiLFxuXHRcdFx0cy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSA/XG5cdFx0XHRcdHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdICtcblx0XHRcdFx0XHQoIHMuZGF0YVR5cGVzWyAwIF0gIT09IFwiKlwiID8gXCIsIFwiICsgYWxsVHlwZXMgKyBcIjsgcT0wLjAxXCIgOiBcIlwiICkgOlxuXHRcdFx0XHRzLmFjY2VwdHNbIFwiKlwiIF1cblx0XHQpO1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uXG5cdFx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnRcblx0XHRpZiAoIHMuYmVmb3JlU2VuZCAmJlxuXHRcdFx0KCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQgKSApIHtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuXG5cdFx0XHRyZXR1cm4ganFYSFIuYWJvcnQoKTtcblx0XHR9XG5cblx0XHQvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb25cblx0XHRzdHJBYm9ydCA9IFwiYWJvcnRcIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkc1xuXHRcdGNvbXBsZXRlRGVmZXJyZWQuYWRkKCBzLmNvbXBsZXRlICk7XG5cdFx0anFYSFIuZG9uZSggcy5zdWNjZXNzICk7XG5cdFx0anFYSFIuZmFpbCggcy5lcnJvciApO1xuXG5cdFx0Ly8gR2V0IHRyYW5zcG9ydFxuXHRcdHRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0XG5cdFx0aWYgKCAhdHJhbnNwb3J0ICkge1xuXHRcdFx0ZG9uZSggLTEsIFwiTm8gVHJhbnNwb3J0XCIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IDE7XG5cblx0XHRcdC8vIFNlbmQgZ2xvYmFsIGV2ZW50XG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4U2VuZFwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYWpheFNlbmQsIHN0b3AgdGhlcmVcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRpbWVvdXRcblx0XHRcdGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkge1xuXHRcdFx0XHR0aW1lb3V0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0anFYSFIuYWJvcnQoIFwidGltZW91dFwiICk7XG5cdFx0XHRcdH0sIHMudGltZW91dCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb21wbGV0ZWQgPSBmYWxzZTtcblx0XHRcdFx0dHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBSZXRocm93IHBvc3QtY29tcGxldGlvbiBleGNlcHRpb25zXG5cdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBQcm9wYWdhdGUgb3RoZXJzIGFzIHJlc3VsdHNcblx0XHRcdFx0ZG9uZSggLTEsIGUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5nIGlzIGRvbmVcblx0XHRmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHtcblx0XHRcdHZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCByZXNwb25zZSwgbW9kaWZpZWQsXG5cdFx0XHRcdHN0YXR1c1RleHQgPSBuYXRpdmVTdGF0dXNUZXh0O1xuXG5cdFx0XHQvLyBJZ25vcmUgcmVwZWF0IGludm9jYXRpb25zXG5cdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb21wbGV0ZWQgPSB0cnVlO1xuXG5cdFx0XHQvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuXHRcdFx0aWYgKCB0aW1lb3V0VGltZXIgKSB7XG5cdFx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvblxuXHRcdFx0Ly8gKG5vIG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0IHdpbGwgYmUgdXNlZClcblx0XHRcdHRyYW5zcG9ydCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0Ly8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTZXQgcmVhZHlTdGF0ZVxuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IHN0YXR1cyA+IDAgPyA0IDogMDtcblxuXHRcdFx0Ly8gRGV0ZXJtaW5lIGlmIHN1Y2Nlc3NmdWxcblx0XHRcdGlzU3VjY2VzcyA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0O1xuXG5cdFx0XHQvLyBHZXQgcmVzcG9uc2UgZGF0YVxuXHRcdFx0aWYgKCByZXNwb25zZXMgKSB7XG5cdFx0XHRcdHJlc3BvbnNlID0gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb252ZXJ0IG5vIG1hdHRlciB3aGF0ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVsZHMgYXJlIGFsd2F5cyBzZXQpXG5cdFx0XHRyZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApO1xuXG5cdFx0XHQvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZ1xuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cblx0XHRcdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRcdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJMYXN0LU1vZGlmaWVkXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcImV0YWdcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGlmIG5vIGNvbnRlbnRcblx0XHRcdFx0aWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09IFwiSEVBRFwiICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vY29udGVudFwiO1xuXG5cdFx0XHRcdC8vIGlmIG5vdCBtb2RpZmllZFxuXHRcdFx0XHR9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub3Rtb2RpZmllZFwiO1xuXG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTtcblx0XHRcdFx0XHRzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRlcnJvciA9IHJlc3BvbnNlLmVycm9yO1xuXHRcdFx0XHRcdGlzU3VjY2VzcyA9ICFlcnJvcjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBFeHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dCBhbmQgbm9ybWFsaXplIGZvciBub24tYWJvcnRzXG5cdFx0XHRcdGVycm9yID0gc3RhdHVzVGV4dDtcblx0XHRcdFx0aWYgKCBzdGF0dXMgfHwgIXN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwiZXJyb3JcIjtcblx0XHRcdFx0XHRpZiAoIHN0YXR1cyA8IDAgKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXMgPSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgZGF0YSBmb3IgdGhlIGZha2UgeGhyIG9iamVjdFxuXHRcdFx0anFYSFIuc3RhdHVzID0gc3RhdHVzO1xuXHRcdFx0anFYSFIuc3RhdHVzVGV4dCA9ICggbmF0aXZlU3RhdHVzVGV4dCB8fCBzdGF0dXNUZXh0ICkgKyBcIlwiO1xuXG5cdFx0XHQvLyBTdWNjZXNzL0Vycm9yXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTtcblx0XHRcdHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBpc1N1Y2Nlc3MgPyBcImFqYXhTdWNjZXNzXCIgOiBcImFqYXhFcnJvclwiLFxuXHRcdFx0XHRcdFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbXBsZXRlXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4Q29tcGxldGVcIiwgWyBqcVhIUiwgcyBdICk7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBnbG9iYWwgQUpBWCBjb3VudGVyXG5cdFx0XHRcdGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0b3BcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpxWEhSO1xuXHR9LFxuXG5cdGdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCBcImpzb25cIiApO1xuXHR9LFxuXG5cdGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgXCJzY3JpcHRcIiApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiZ2V0XCIsIFwicG9zdFwiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7XG5cdGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHtcblxuXHRcdC8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBkYXRhICkgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBjYWxsYmFjaztcblx0XHRcdGNhbGxiYWNrID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlIHVybCBjYW4gYmUgYW4gb3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVzdCBoYXZlIC51cmwpXG5cdFx0cmV0dXJuIGpRdWVyeS5hamF4KCBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdHR5cGU6IG1ldGhvZCxcblx0XHRcdGRhdGFUeXBlOiB0eXBlLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IGNhbGxiYWNrXG5cdFx0fSwgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7XG5cdH07XG59ICk7XG5cblxualF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCApIHtcblx0cmV0dXJuIGpRdWVyeS5hamF4KCB7XG5cdFx0dXJsOiB1cmwsXG5cblx0XHQvLyBNYWtlIHRoaXMgZXhwbGljaXQsIHNpbmNlIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgdGhyb3VnaCBhamF4U2V0dXAgKCMxMTI2NClcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxuXHRcdGNhY2hlOiB0cnVlLFxuXHRcdGFzeW5jOiBmYWxzZSxcblx0XHRnbG9iYWw6IGZhbHNlLFxuXHRcdFwidGhyb3dzXCI6IHRydWVcblx0fSApO1xufTtcblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciB3cmFwO1xuXG5cdFx0aWYgKCB0aGlzWyAwIF0gKSB7XG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdFx0aHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gdGhpcztcblxuXHRcdFx0XHR3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZWxlbTtcblx0XHRcdH0gKS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBpICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpO1xuXG5cdFx0XHRpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y29udGVudHMud3JhcEFsbCggaHRtbCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWxmLmFwcGVuZCggaHRtbCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHR3cmFwOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgaHRtbElzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCBodG1sICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWxJc0Z1bmN0aW9uID8gaHRtbC5jYWxsKCB0aGlzLCBpICkgOiBodG1sICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHRoaXMucGFyZW50KCBzZWxlY3RvciApLm5vdCggXCJib2R5XCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTtcblx0XHR9ICk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSggZWxlbSApO1xufTtcbmpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApO1xufTtcblxuXG5cblxualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuXHR9IGNhdGNoICggZSApIHt9XG59O1xuXG52YXIgeGhyU3VjY2Vzc1N0YXR1cyA9IHtcblxuXHRcdC8vIEZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwXG5cdFx0MDogMjAwLFxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHQvLyAjMTQ1MDogc29tZXRpbWVzIElFIHJldHVybnMgMTIyMyB3aGVuIGl0IHNob3VsZCBiZSAyMDRcblx0XHQxMjIzOiAyMDRcblx0fSxcblx0eGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTtcblxuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhoclN1cHBvcnRlZCApO1xuc3VwcG9ydC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7XG5cbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0dmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrO1xuXG5cdC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3Rcblx0aWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHZhciBpLFxuXHRcdFx0XHRcdHhociA9IG9wdGlvbnMueGhyKCk7XG5cblx0XHRcdFx0eGhyLm9wZW4oXG5cdFx0XHRcdFx0b3B0aW9ucy50eXBlLFxuXHRcdFx0XHRcdG9wdGlvbnMudXJsLFxuXHRcdFx0XHRcdG9wdGlvbnMuYXN5bmMsXG5cdFx0XHRcdFx0b3B0aW9ucy51c2VybmFtZSxcblx0XHRcdFx0XHRvcHRpb25zLnBhc3N3b3JkXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0XHR4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7XG5cdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyXG5cdFx0XHRcdC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmVcblx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cblx0XHRcdFx0Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApXG5cdFx0XHRcdC8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLlxuXHRcdFx0XHRpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdICkge1xuXHRcdFx0XHRcdGhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gPSBcIlhNTEh0dHBSZXF1ZXN0XCI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTZXQgaGVhZGVyc1xuXHRcdFx0XHRmb3IgKCBpIGluIGhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0eGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRjYWxsYmFjayA9IGVycm9yQ2FsbGJhY2sgPSB4aHIub25sb2FkID1cblx0XHRcdFx0XHRcdFx0XHR4aHIub25lcnJvciA9IHhoci5vbmFib3J0ID0geGhyLm9udGltZW91dCA9XG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiYWJvcnRcIiApIHtcblx0XHRcdFx0XHRcdFx0XHR4aHIuYWJvcnQoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdHlwZSA9PT0gXCJlcnJvclwiICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBPbiBhIG1hbnVhbCBuYXRpdmUgYWJvcnQsIElFOSB0aHJvd3Ncblx0XHRcdFx0XHRcdFx0XHQvLyBlcnJvcnMgb24gYW55IHByb3BlcnR5IGFjY2VzcyB0aGF0IGlzIG5vdCByZWFkeVN0YXRlXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlb2YgeGhyLnN0YXR1cyAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCAwLCBcImVycm9yXCIgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRmlsZTogcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgMDsgc2VlICM4NjA1LCAjMTQyMDdcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHRcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dCxcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElFOSBoYXMgbm8gWEhSMiBidXQgdGhyb3dzIG9uIGJpbmFyeSAodHJhYy0xMTQyNilcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNhbGxlciBoYW5kbGUgaXQgKGdoLTI0OTgpXG5cdFx0XHRcdFx0XHRcdFx0XHQoIHhoci5yZXNwb25zZVR5cGUgfHwgXCJ0ZXh0XCIgKSAhPT0gXCJ0ZXh0XCIgIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCAhPT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgYmluYXJ5OiB4aHIucmVzcG9uc2UgfSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgdGV4dDogeGhyLnJlc3BvbnNlVGV4dCB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Ly8gTGlzdGVuIHRvIGV2ZW50c1xuXHRcdFx0XHR4aHIub25sb2FkID0gY2FsbGJhY2soKTtcblx0XHRcdFx0ZXJyb3JDYWxsYmFjayA9IHhoci5vbmVycm9yID0geGhyLm9udGltZW91dCA9IGNhbGxiYWNrKCBcImVycm9yXCIgKTtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHRcdFx0Ly8gVXNlIG9ucmVhZHlzdGF0ZWNoYW5nZSB0byByZXBsYWNlIG9uYWJvcnRcblx0XHRcdFx0Ly8gdG8gaGFuZGxlIHVuY2F1Z2h0IGFib3J0c1xuXHRcdFx0XHRpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0eGhyLm9uYWJvcnQgPSBlcnJvckNhbGxiYWNrO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2hlY2sgcmVhZHlTdGF0ZSBiZWZvcmUgdGltZW91dCBhcyBpdCBjaGFuZ2VzXG5cdFx0XHRcdFx0XHRpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVkIGZpcnN0LFxuXHRcdFx0XHRcdFx0XHQvLyBidXQgdGhhdCB3aWxsIG5vdCBoYW5kbGUgYSBuYXRpdmUgYWJvcnRcblx0XHRcdFx0XHRcdFx0Ly8gQWxzbywgc2F2ZSBlcnJvckNhbGxiYWNrIHRvIGEgdmFyaWFibGVcblx0XHRcdFx0XHRcdFx0Ly8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JDYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gY2FsbGJhY2soIFwiYWJvcnRcIiApO1xuXG5cdFx0XHRcdHRyeSB7XG5cblx0XHRcdFx0XHQvLyBEbyBzZW5kIHRoZSByZXF1ZXN0ICh0aGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24pXG5cdFx0XHRcdFx0eGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApO1xuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdC8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0XG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gUHJldmVudCBhdXRvLWV4ZWN1dGlvbiBvZiBzY3JpcHRzIHdoZW4gbm8gZXhwbGljaXQgZGF0YVR5cGUgd2FzIHByb3ZpZGVkIChTZWUgZ2gtMjQzMilcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMuY29udGVudHMuc2NyaXB0ID0gZmFsc2U7XG5cdH1cbn0gKTtcblxuLy8gSW5zdGFsbCBzY3JpcHQgZGF0YVR5cGVcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0YWNjZXB0czoge1xuXHRcdHNjcmlwdDogXCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIFwiICtcblx0XHRcdFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0XCJcblx0fSxcblx0Y29udGVudHM6IHtcblx0XHRzY3JpcHQ6IC9cXGIoPzpqYXZhfGVjbWEpc2NyaXB0XFxiL1xuXHR9LFxuXHRjb252ZXJ0ZXJzOiB7XG5cdFx0XCJ0ZXh0IHNjcmlwdFwiOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdGpRdWVyeS5nbG9iYWxFdmFsKCB0ZXh0ICk7XG5cdFx0XHRyZXR1cm4gdGV4dDtcblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBjcm9zc0RvbWFpblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRzLmNhY2hlID0gZmFsc2U7XG5cdH1cblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMudHlwZSA9IFwiR0VUXCI7XG5cdH1cbn0gKTtcblxuLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0XG5qUXVlcnkuYWpheFRyYW5zcG9ydCggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cblx0Ly8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0c1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0dmFyIHNjcmlwdCwgY2FsbGJhY2s7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0c2NyaXB0ID0galF1ZXJ5KCBcIjxzY3JpcHQ+XCIgKS5wcm9wKCB7XG5cdFx0XHRcdFx0Y2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LFxuXHRcdFx0XHRcdHNyYzogcy51cmxcblx0XHRcdFx0fSApLm9uKFxuXHRcdFx0XHRcdFwibG9hZCBlcnJvclwiLFxuXHRcdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBvbGRDYWxsYmFja3MgPSBbXSxcblx0cmpzb25wID0gLyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztcblxuLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5nc1xualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZSsrICkgKTtcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcblx0XHRyZXR1cm4gY2FsbGJhY2s7XG5cdH1cbn0gKTtcblxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJqc29uIGpzb25wXCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHtcblxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXG5cdFx0anNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID9cblx0XHRcdFwidXJsXCIgOlxuXHRcdFx0dHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApXG5cdFx0XHRcdFx0LmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCAmJlxuXHRcdFx0XHRyanNvbnAudGVzdCggcy5kYXRhICkgJiYgXCJkYXRhXCJcblx0XHQpO1xuXG5cdC8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyBcImpzb25wXCIgb3Igd2UgaGF2ZSBhIHBhcmFtZXRlciB0byBzZXRcblx0aWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSBcImpzb25wXCIgKSB7XG5cblx0XHQvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0XG5cdFx0Y2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0gaXNGdW5jdGlvbiggcy5qc29ucENhbGxiYWNrICkgP1xuXHRcdFx0cy5qc29ucENhbGxiYWNrKCkgOlxuXHRcdFx0cy5qc29ucENhbGxiYWNrO1xuXG5cdFx0Ly8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YVxuXHRcdGlmICgganNvblByb3AgKSB7XG5cdFx0XHRzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsIFwiJDFcIiArIGNhbGxiYWNrTmFtZSApO1xuXHRcdH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkge1xuXHRcdFx0cy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuanNvbnAgKyBcIj1cIiArIGNhbGxiYWNrTmFtZTtcblx0XHR9XG5cblx0XHQvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uXG5cdFx0cy5jb252ZXJ0ZXJzWyBcInNjcmlwdCBqc29uXCIgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7XG5cdFx0XHRcdGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgXCIgd2FzIG5vdCBjYWxsZWRcIiApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07XG5cdFx0fTtcblxuXHRcdC8vIEZvcmNlIGpzb24gZGF0YVR5cGVcblx0XHRzLmRhdGFUeXBlc1sgMCBdID0gXCJqc29uXCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrXG5cdFx0b3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdO1xuXHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzO1xuXHRcdH07XG5cblx0XHQvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycylcblx0XHRqcVhIUi5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBJZiBwcmV2aW91cyB2YWx1ZSBkaWRuJ3QgZXhpc3QgLSByZW1vdmUgaXRcblx0XHRcdGlmICggb3ZlcndyaXR0ZW4gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0alF1ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9wKCBjYWxsYmFja05hbWUgKTtcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhpc3RpbmcgdmFsdWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVyd3JpdHRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2F2ZSBiYWNrIGFzIGZyZWVcblx0XHRcdGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7XG5cblx0XHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5kXG5cdFx0XHRcdHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjaztcblxuXHRcdFx0XHQvLyBTYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlXG5cdFx0XHRcdG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FsbCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlXG5cdFx0XHRpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XG5cdFx0XHRcdG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4gPSB1bmRlZmluZWQ7XG5cdFx0fSApO1xuXG5cdFx0Ly8gRGVsZWdhdGUgdG8gc2NyaXB0XG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gU3VwcG9ydDogU2FmYXJpIDggb25seVxuLy8gSW4gU2FmYXJpIDggZG9jdW1lbnRzIGNyZWF0ZWQgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudFxuLy8gY29sbGFwc2Ugc2libGluZyBmb3JtczogdGhlIHNlY29uZCBvbmUgYmVjb21lcyBhIGNoaWxkIG9mIHRoZSBmaXJzdCBvbmUuXG4vLyBCZWNhdXNlIG9mIHRoYXQsIHRoaXMgc2VjdXJpdHkgbWVhc3VyZSBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gU2FmYXJpIDguXG4vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzM3XG5zdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCA9ICggZnVuY3Rpb24oKSB7XG5cdHZhciBib2R5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCBcIlwiICkuYm9keTtcblx0Ym9keS5pbm5lckhUTUwgPSBcIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+XCI7XG5cdHJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyO1xufSApKCk7XG5cblxuLy8gQXJndW1lbnQgXCJkYXRhXCIgc2hvdWxkIGJlIHN0cmluZyBvZiBodG1sXG4vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsXG4vLyBkZWZhdWx0cyB0byBkb2N1bWVudFxuLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xualF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHtcblx0aWYgKCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0a2VlcFNjcmlwdHMgPSBjb250ZXh0O1xuXHRcdGNvbnRleHQgPSBmYWxzZTtcblx0fVxuXG5cdHZhciBiYXNlLCBwYXJzZWQsIHNjcmlwdHM7XG5cblx0aWYgKCAhY29udGV4dCApIHtcblxuXHRcdC8vIFN0b3Agc2NyaXB0cyBvciBpbmxpbmUgZXZlbnQgaGFuZGxlcnMgZnJvbSBiZWluZyBleGVjdXRlZCBpbW1lZGlhdGVseVxuXHRcdC8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxlbWVudGF0aW9uXG5cdFx0aWYgKCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCApIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKTtcblxuXHRcdFx0Ly8gU2V0IHRoZSBiYXNlIGhyZWYgZm9yIHRoZSBjcmVhdGVkIGRvY3VtZW50XG5cdFx0XHQvLyBzbyBhbnkgcGFyc2VkIGVsZW1lbnRzIHdpdGggVVJMc1xuXHRcdFx0Ly8gYXJlIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIFVSTCAoZ2gtMjk2NSlcblx0XHRcdGJhc2UgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiYmFzZVwiICk7XG5cdFx0XHRiYXNlLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmO1xuXHRcdFx0Y29udGV4dC5oZWFkLmFwcGVuZENoaWxkKCBiYXNlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudDtcblx0XHR9XG5cdH1cblxuXHRwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTtcblx0c2NyaXB0cyA9ICFrZWVwU2NyaXB0cyAmJiBbXTtcblxuXHQvLyBTaW5nbGUgdGFnXG5cdGlmICggcGFyc2VkICkge1xuXHRcdHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWyAxIF0gKSBdO1xuXHR9XG5cblx0cGFyc2VkID0gYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTtcblxuXHRpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTtcbn07XG5cblxuLyoqXG4gKiBMb2FkIGEgdXJsIGludG8gYSBwYWdlXG4gKi9cbmpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHtcblx0dmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSxcblx0XHRzZWxmID0gdGhpcyxcblx0XHRvZmYgPSB1cmwuaW5kZXhPZiggXCIgXCIgKTtcblxuXHRpZiAoIG9mZiA+IC0xICkge1xuXHRcdHNlbGVjdG9yID0gc3RyaXBBbmRDb2xsYXBzZSggdXJsLnNsaWNlKCBvZmYgKSApO1xuXHRcdHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7XG5cdH1cblxuXHQvLyBJZiBpdCdzIGEgZnVuY3Rpb25cblx0aWYgKCBpc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrXG5cdFx0Y2FsbGJhY2sgPSBwYXJhbXM7XG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xuXG5cdC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmdcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0dHlwZSA9IFwiUE9TVFwiO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3Rcblx0aWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7XG5cdFx0alF1ZXJ5LmFqYXgoIHtcblx0XHRcdHVybDogdXJsLFxuXG5cdFx0XHQvLyBJZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkLlxuXHRcdFx0Ly8gTWFrZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGV4cGxpY2l0IHNpbmNlXG5cdFx0XHQvLyB1c2VyIGNhbiBvdmVycmlkZSBpdCB0aHJvdWdoIGFqYXhTZXR1cCBtZXRob2Rcblx0XHRcdHR5cGU6IHR5cGUgfHwgXCJHRVRcIixcblx0XHRcdGRhdGFUeXBlOiBcImh0bWxcIixcblx0XHRcdGRhdGE6IHBhcmFtc1xuXHRcdH0gKS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkge1xuXG5cdFx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcblx0XHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xuXG5cdFx0XHRzZWxmLmh0bWwoIHNlbGVjdG9yID9cblxuXHRcdFx0XHQvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXZcblx0XHRcdFx0Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzXG5cdFx0XHRcdGpRdWVyeSggXCI8ZGl2PlwiICkuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0XG5cdFx0XHRcdHJlc3BvbnNlVGV4dCApO1xuXG5cdFx0Ly8gSWYgdGhlIHJlcXVlc3Qgc3VjY2VlZHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImRhdGFcIiwgXCJzdGF0dXNcIiwgXCJqcVhIUlwiXG5cdFx0Ly8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSByZXNwb25zZSB3YXMgc2V0IGFib3ZlLlxuXHRcdC8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJqcVhIUlwiLCBcInN0YXR1c1wiLCBcImVycm9yXCJcblx0XHR9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdHNlbGYuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5cblxuXG4vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50c1xualF1ZXJ5LmVhY2goIFtcblx0XCJhamF4U3RhcnRcIixcblx0XCJhamF4U3RvcFwiLFxuXHRcImFqYXhDb21wbGV0ZVwiLFxuXHRcImFqYXhFcnJvclwiLFxuXHRcImFqYXhTdWNjZXNzXCIsXG5cdFwiYWpheFNlbmRcIlxuXSwgZnVuY3Rpb24oIGksIHR5cGUgKSB7XG5cdGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApO1xuXHR9O1xufSApO1xuXG5cblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiBqUXVlcnkuZ3JlcCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiBlbGVtID09PSBmbi5lbGVtO1xuXHR9ICkubGVuZ3RoO1xufTtcblxuXG5cblxualF1ZXJ5Lm9mZnNldCA9IHtcblx0c2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHtcblx0XHR2YXIgY3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLFxuXHRcdFx0cG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSxcblx0XHRcdHByb3BzID0ge307XG5cblx0XHQvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG5cdFx0aWYgKCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cdFx0fVxuXG5cdFx0Y3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTtcblx0XHRjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCBcInRvcFwiICk7XG5cdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICk7XG5cdFx0Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApICYmXG5cdFx0XHQoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKCBcImF1dG9cIiApID4gLTE7XG5cblx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlclxuXHRcdC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZFxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XG5cdFx0XHRjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTtcblx0XHRcdGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDtcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7XG5cdFx0XHRjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7XG5cblx0XHRcdC8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIGNvb3JkaW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KVxuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1clRvcDtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0O1xuXHRcdH1cblxuXHRcdGlmICggXCJ1c2luZ1wiIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0Ly8gb2Zmc2V0KCkgcmVsYXRlcyBhbiBlbGVtZW50J3MgYm9yZGVyIGJveCB0byB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBQcmVzZXJ2ZSBjaGFpbmluZyBmb3Igc2V0dGVyXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMgOlxuXHRcdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRcdGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHR2YXIgcmVjdCwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQgYW5kIGhpZGRlbiAoZGlzcGxheTogbm9uZSkgZWxlbWVudHMgKGdoLTIzMTApXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYVxuXHRcdC8vIGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvclxuXHRcdGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblx0XHR9XG5cblx0XHQvLyBHZXQgZG9jdW1lbnQtcmVsYXRpdmUgcG9zaXRpb24gYnkgYWRkaW5nIHZpZXdwb3J0IHNjcm9sbCB0byB2aWV3cG9ydC1yZWxhdGl2ZSBnQkNSXG5cdFx0cmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0d2luID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zmc2V0LFxuXHRcdFx0bGVmdDogcmVjdC5sZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0XG5cdFx0fTtcblx0fSxcblxuXHQvLyBwb3NpdGlvbigpIHJlbGF0ZXMgYW4gZWxlbWVudCdzIG1hcmdpbiBib3ggdG8gaXRzIG9mZnNldCBwYXJlbnQncyBwYWRkaW5nIGJveFxuXHQvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBiZWhhdmlvciBvZiBDU1MgYWJzb2x1dGUgcG9zaXRpb25pbmdcblx0cG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXNbIDAgXSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsIGRvYyxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRwYXJlbnRPZmZzZXQgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuXG5cdFx0Ly8gcG9zaXRpb246Zml4ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHRoZSB2aWV3cG9ydCwgd2hpY2ggaXRzZWxmIGFsd2F5cyBoYXMgemVybyBvZmZzZXRcblx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCIgKSB7XG5cblx0XHRcdC8vIEFzc3VtZSBwb3NpdGlvbjpmaXhlZCBpbXBsaWVzIGF2YWlsYWJpbGl0eSBvZiBnZXRCb3VuZGluZ0NsaWVudFJlY3Rcblx0XHRcdG9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0b2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuXHRcdFx0Ly8gQWNjb3VudCBmb3IgdGhlICpyZWFsKiBvZmZzZXQgcGFyZW50LCB3aGljaCBjYW4gYmUgdGhlIGRvY3VtZW50IG9yIGl0cyByb290IGVsZW1lbnRcblx0XHRcdC8vIHdoZW4gYSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudCBpcyBpZGVudGlmaWVkXG5cdFx0XHRkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQ7XG5cdFx0XHRvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudCB8fCBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiZcblx0XHRcdFx0KCBvZmZzZXRQYXJlbnQgPT09IGRvYy5ib2R5IHx8IG9mZnNldFBhcmVudCA9PT0gZG9jLmRvY3VtZW50RWxlbWVudCApICYmXG5cdFx0XHRcdGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQgIT09IGVsZW0gJiYgb2Zmc2V0UGFyZW50Lm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIEluY29ycG9yYXRlIGJvcmRlcnMgaW50byBpdHMgb2Zmc2V0LCBzaW5jZSB0aGV5IGFyZSBvdXRzaWRlIGl0cyBjb250ZW50IG9yaWdpblxuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBqUXVlcnkoIG9mZnNldFBhcmVudCApLm9mZnNldCgpO1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQudG9wICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHRcdHBhcmVudE9mZnNldC5sZWZ0ICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJMZWZ0V2lkdGhcIiwgdHJ1ZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnNcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luVG9wXCIsIHRydWUgKSxcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiwgdHJ1ZSApXG5cdFx0fTtcblx0fSxcblxuXHQvLyBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcblx0Ly8gMSkgRm9yIHRoZSBlbGVtZW50IGluc2lkZSB0aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVyblxuXHQvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5kb3dcblx0Ly8gMikgRm9yIHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudFxuXHQvLyAzKSBGb3IgYm9keSBvciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBub2RlIC0gaXQgd2lsbCByZXR1cm4gaXRzZWxmXG5cdC8vXG5cdC8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2ZXIgcHJlc2VudGVkIGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlc1xuXHQvLyBhbmQgbWlnaHQgYmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy5cblx0Ly9cblx0Ly8gVGhpcyBsb2dpYywgaG93ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHBvaW50IGluIHRoZSBmdXR1cmVcblx0b2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50O1xuXG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiBcInBhZ2VYT2Zmc2V0XCIsIHNjcm9sbFRvcDogXCJwYWdlWU9mZnNldFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XG5cdHZhciB0b3AgPSBcInBhZ2VZT2Zmc2V0XCIgPT09IHByb3A7XG5cblx0alF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkge1xuXG5cdFx0XHQvLyBDb2FsZXNjZSBkb2N1bWVudHMgYW5kIHdpbmRvd3Ncblx0XHRcdHZhciB3aW47XG5cdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW07XG5cdFx0XHR9IGVsc2UgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR3aW4gPSBlbGVtLmRlZmF1bHRWaWV3O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB3aW4gKSB7XG5cdFx0XHRcdHdpbi5zY3JvbGxUbyhcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogd2luLnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHRcdHRvcCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldFxuXHRcdFx0XHQpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtWyBtZXRob2QgXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9O1xufSApO1xuXG4vLyBTdXBwb3J0OiBTYWZhcmkgPD03IC0gOS4xLCBDaHJvbWUgPD0zNyAtIDQ5XG4vLyBBZGQgdGhlIHRvcC9sZWZ0IGNzc0hvb2tzIHVzaW5nIGpRdWVyeS5mbi5wb3NpdGlvblxuLy8gV2Via2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDg0XG4vLyBCbGluayBidWc6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU4OTM0N1xuLy8gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9sZWZ0L2JvdHRvbS9yaWdodDtcbi8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlXG5qUXVlcnkuZWFjaCggWyBcInRvcFwiLCBcImxlZnRcIiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbixcblx0XHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0XHRjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApO1xuXG5cdFx0XHRcdC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldFxuXHRcdFx0XHRyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArIFwicHhcIiA6XG5cdFx0XHRcdFx0Y29tcHV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufSApO1xuXG5cbi8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiBcImhlaWdodFwiLCBXaWR0aDogXCJ3aWR0aFwiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkge1xuXHRqUXVlcnkuZWFjaCggeyBwYWRkaW5nOiBcImlubmVyXCIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCBcIlwiOiBcIm91dGVyXCIgKyBuYW1lIH0sXG5cdFx0ZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7XG5cblx0XHQvLyBNYXJnaW4gaXMgb25seSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGhcblx0XHRqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHtcblx0XHRcdHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJhIHx8IHR5cGVvZiBtYXJnaW4gIT09IFwiYm9vbGVhblwiICksXG5cdFx0XHRcdGV4dHJhID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8gXCJtYXJnaW5cIiA6IFwiYm9yZGVyXCIgKTtcblxuXHRcdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgZG9jO1xuXG5cdFx0XHRcdGlmICggaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpXG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoIFwib3V0ZXJcIiApID09PSAwID9cblx0XHRcdFx0XHRcdGVsZW1bIFwiaW5uZXJcIiArIG5hbWUgXSA6XG5cdFx0XHRcdFx0XHRlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50O1xuXG5cdFx0XHRcdFx0Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLFxuXHRcdFx0XHRcdC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdFxuXHRcdFx0XHRcdHJldHVybiBNYXRoLm1heChcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJzY3JvbGxcIiArIG5hbWUgXSwgZG9jWyBcInNjcm9sbFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcIm9mZnNldFwiICsgbmFtZSBdLCBkb2NbIFwib2Zmc2V0XCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXG5cdFx0XHRcdFx0Ly8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOlxuXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7XG5cdFx0XHR9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApO1xuXHRcdH07XG5cdH0gKTtcbn0gKTtcblxuXG5qUXVlcnkuZWFjaCggKCBcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIFwiICtcblx0XCJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBcIiArXG5cdFwiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudVwiICkuc3BsaXQoIFwiIFwiICksXG5cdGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXG5cdC8vIEhhbmRsZSBldmVudCBiaW5kaW5nXG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/XG5cdFx0XHR0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDpcblx0XHRcdHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGhvdmVyOiBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHtcblx0XHRyZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTtcblx0fVxufSApO1xuXG5cblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApO1xuXHR9LFxuXG5cdGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHtcblxuXHRcdC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dIClcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/XG5cdFx0XHR0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDpcblx0XHRcdHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgXCIqKlwiLCBmbiApO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5IGFwcGx5aW5nIGFueVxuLy8gYXJndW1lbnRzLlxuLy8galF1ZXJ5LnByb3h5IGlzIGRlcHJlY2F0ZWQgdG8gcHJvbW90ZSBzdGFuZGFyZHMgKHNwZWNpZmljYWxseSBGdW5jdGlvbiNiaW5kKVxuLy8gSG93ZXZlciwgaXQgaXMgbm90IHNsYXRlZCBmb3IgcmVtb3ZhbCBhbnkgdGltZSBzb29uXG5qUXVlcnkucHJveHkgPSBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7XG5cdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0dG1wID0gZm5bIGNvbnRleHQgXTtcblx0XHRjb250ZXh0ID0gZm47XG5cdFx0Zm4gPSB0bXA7XG5cdH1cblxuXHQvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlY1xuXHQvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLlxuXHRpZiAoICFpc0Z1bmN0aW9uKCBmbiApICkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBTaW11bGF0ZWQgYmluZFxuXHRhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7XG5cdHByb3h5ID0gZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7XG5cdH07XG5cblx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXG5cdHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xuXG5cdHJldHVybiBwcm94eTtcbn07XG5cbmpRdWVyeS5ob2xkUmVhZHkgPSBmdW5jdGlvbiggaG9sZCApIHtcblx0aWYgKCBob2xkICkge1xuXHRcdGpRdWVyeS5yZWFkeVdhaXQrKztcblx0fSBlbHNlIHtcblx0XHRqUXVlcnkucmVhZHkoIHRydWUgKTtcblx0fVxufTtcbmpRdWVyeS5pc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbmpRdWVyeS5wYXJzZUpTT04gPSBKU09OLnBhcnNlO1xualF1ZXJ5Lm5vZGVOYW1lID0gbm9kZU5hbWU7XG5qUXVlcnkuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5qUXVlcnkuaXNXaW5kb3cgPSBpc1dpbmRvdztcbmpRdWVyeS5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG5qUXVlcnkudHlwZSA9IHRvVHlwZTtcblxualF1ZXJ5Lm5vdyA9IERhdGUubm93O1xuXG5qUXVlcnkuaXNOdW1lcmljID0gZnVuY3Rpb24oIG9iaiApIHtcblxuXHQvLyBBcyBvZiBqUXVlcnkgMy4wLCBpc051bWVyaWMgaXMgbGltaXRlZCB0b1xuXHQvLyBzdHJpbmdzIGFuZCBudW1iZXJzIChwcmltaXRpdmVzIG9yIG9iamVjdHMpXG5cdC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpXG5cdHZhciB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApO1xuXHRyZXR1cm4gKCB0eXBlID09PSBcIm51bWJlclwiIHx8IHR5cGUgPT09IFwic3RyaW5nXCIgKSAmJlxuXG5cdFx0Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKFwiXCIpXG5cdFx0Ly8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoXCIweC4uLlwiKVxuXHRcdC8vIHN1YnRyYWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTlxuXHRcdCFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTtcbn07XG5cblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSApO1xufVxuXG5cblxuXG52YXJcblxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpXG4vLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpXG5pZiAoICFub0dsb2JhbCApIHtcblx0d2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5O1xufVxuXG5cblxuXG5yZXR1cm4galF1ZXJ5O1xufSApO1xuIiwiLy8hIG1vbWVudC10aW1lem9uZS5qc1xuLy8hIHZlcnNpb24gOiAwLjUuMTdcbi8vISBDb3B5cmlnaHQgKGMpIEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuLy8hIGxpY2Vuc2UgOiBNSVRcbi8vISBnaXRodWIuY29tL21vbWVudC9tb21lbnQtdGltZXpvbmVcblxuKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdC8qZ2xvYmFsIGRlZmluZSovXG5cdGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcblx0XHRkZWZpbmUoWydtb21lbnQnXSwgZmFjdG9yeSk7ICAgICAgICAgICAgICAgICAvLyBBTURcblx0fSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKCdtb21lbnQnKSk7IC8vIE5vZGVcblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KHJvb3QubW9tZW50KTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBCcm93c2VyXG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKG1vbWVudCkge1xuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvLyBEbyBub3QgbG9hZCBtb21lbnQtdGltZXpvbmUgYSBzZWNvbmQgdGltZS5cblx0Ly8gaWYgKG1vbWVudC50eiAhPT0gdW5kZWZpbmVkKSB7XG5cdC8vIFx0bG9nRXJyb3IoJ01vbWVudCBUaW1lem9uZSAnICsgbW9tZW50LnR6LnZlcnNpb24gKyAnIHdhcyBhbHJlYWR5IGxvYWRlZCAnICsgKG1vbWVudC50ei5kYXRhVmVyc2lvbiA/ICd3aXRoIGRhdGEgZnJvbSAnIDogJ3dpdGhvdXQgYW55IGRhdGEnKSArIG1vbWVudC50ei5kYXRhVmVyc2lvbik7XG5cdC8vIFx0cmV0dXJuIG1vbWVudDtcblx0Ly8gfVxuXG5cdHZhciBWRVJTSU9OID0gXCIwLjUuMTdcIixcblx0XHR6b25lcyA9IHt9LFxuXHRcdGxpbmtzID0ge30sXG5cdFx0bmFtZXMgPSB7fSxcblx0XHRndWVzc2VzID0ge30sXG5cdFx0Y2FjaGVkR3Vlc3MsXG5cblx0XHRtb21lbnRWZXJzaW9uID0gbW9tZW50LnZlcnNpb24uc3BsaXQoJy4nKSxcblx0XHRtYWpvciA9ICttb21lbnRWZXJzaW9uWzBdLFxuXHRcdG1pbm9yID0gK21vbWVudFZlcnNpb25bMV07XG5cblx0Ly8gTW9tZW50LmpzIHZlcnNpb24gY2hlY2tcblx0aWYgKG1ham9yIDwgMiB8fCAobWFqb3IgPT09IDIgJiYgbWlub3IgPCA2KSkge1xuXHRcdGxvZ0Vycm9yKCdNb21lbnQgVGltZXpvbmUgcmVxdWlyZXMgTW9tZW50LmpzID49IDIuNi4wLiBZb3UgYXJlIHVzaW5nIE1vbWVudC5qcyAnICsgbW9tZW50LnZlcnNpb24gKyAnLiBTZWUgbW9tZW50anMuY29tJyk7XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0VW5wYWNraW5nXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRmdW5jdGlvbiBjaGFyQ29kZVRvSW50KGNoYXJDb2RlKSB7XG5cdFx0aWYgKGNoYXJDb2RlID4gOTYpIHtcblx0XHRcdHJldHVybiBjaGFyQ29kZSAtIDg3O1xuXHRcdH0gZWxzZSBpZiAoY2hhckNvZGUgPiA2NCkge1xuXHRcdFx0cmV0dXJuIGNoYXJDb2RlIC0gMjk7XG5cdFx0fVxuXHRcdHJldHVybiBjaGFyQ29kZSAtIDQ4O1xuXHR9XG5cblx0ZnVuY3Rpb24gdW5wYWNrQmFzZTYwKHN0cmluZykge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdHBhcnRzID0gc3RyaW5nLnNwbGl0KCcuJyksXG5cdFx0XHR3aG9sZSA9IHBhcnRzWzBdLFxuXHRcdFx0ZnJhY3Rpb25hbCA9IHBhcnRzWzFdIHx8ICcnLFxuXHRcdFx0bXVsdGlwbGllciA9IDEsXG5cdFx0XHRudW0sXG5cdFx0XHRvdXQgPSAwLFxuXHRcdFx0c2lnbiA9IDE7XG5cblx0XHQvLyBoYW5kbGUgbmVnYXRpdmUgbnVtYmVyc1xuXHRcdGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDUpIHtcblx0XHRcdGkgPSAxO1xuXHRcdFx0c2lnbiA9IC0xO1xuXHRcdH1cblxuXHRcdC8vIGhhbmRsZSBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsXG5cdFx0Zm9yIChpOyBpIDwgd2hvbGUubGVuZ3RoOyBpKyspIHtcblx0XHRcdG51bSA9IGNoYXJDb2RlVG9JbnQod2hvbGUuY2hhckNvZGVBdChpKSk7XG5cdFx0XHRvdXQgPSA2MCAqIG91dCArIG51bTtcblx0XHR9XG5cblx0XHQvLyBoYW5kbGUgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsXG5cdFx0Zm9yIChpID0gMDsgaSA8IGZyYWN0aW9uYWwubGVuZ3RoOyBpKyspIHtcblx0XHRcdG11bHRpcGxpZXIgPSBtdWx0aXBsaWVyIC8gNjA7XG5cdFx0XHRudW0gPSBjaGFyQ29kZVRvSW50KGZyYWN0aW9uYWwuY2hhckNvZGVBdChpKSk7XG5cdFx0XHRvdXQgKz0gbnVtICogbXVsdGlwbGllcjtcblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0ICogc2lnbjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFycmF5VG9JbnQgKGFycmF5KSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuXHRcdFx0YXJyYXlbaV0gPSB1bnBhY2tCYXNlNjAoYXJyYXlbaV0pO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGludFRvVW50aWwgKGFycmF5LCBsZW5ndGgpIHtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0XHRhcnJheVtpXSA9IE1hdGgucm91bmQoKGFycmF5W2kgLSAxXSB8fCAwKSArIChhcnJheVtpXSAqIDYwMDAwKSk7IC8vIG1pbnV0ZXMgdG8gbWlsbGlzZWNvbmRzXG5cdFx0fVxuXG5cdFx0YXJyYXlbbGVuZ3RoIC0gMV0gPSBJbmZpbml0eTtcblx0fVxuXG5cdGZ1bmN0aW9uIG1hcEluZGljZXMgKHNvdXJjZSwgaW5kaWNlcykge1xuXHRcdHZhciBvdXQgPSBbXSwgaTtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRvdXRbaV0gPSBzb3VyY2VbaW5kaWNlc1tpXV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdGZ1bmN0aW9uIHVucGFjayAoc3RyaW5nKSB7XG5cdFx0dmFyIGRhdGEgPSBzdHJpbmcuc3BsaXQoJ3wnKSxcblx0XHRcdG9mZnNldHMgPSBkYXRhWzJdLnNwbGl0KCcgJyksXG5cdFx0XHRpbmRpY2VzID0gZGF0YVszXS5zcGxpdCgnJyksXG5cdFx0XHR1bnRpbHMgID0gZGF0YVs0XS5zcGxpdCgnICcpO1xuXG5cdFx0YXJyYXlUb0ludChvZmZzZXRzKTtcblx0XHRhcnJheVRvSW50KGluZGljZXMpO1xuXHRcdGFycmF5VG9JbnQodW50aWxzKTtcblxuXHRcdGludFRvVW50aWwodW50aWxzLCBpbmRpY2VzLmxlbmd0aCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZSAgICAgICA6IGRhdGFbMF0sXG5cdFx0XHRhYmJycyAgICAgIDogbWFwSW5kaWNlcyhkYXRhWzFdLnNwbGl0KCcgJyksIGluZGljZXMpLFxuXHRcdFx0b2Zmc2V0cyAgICA6IG1hcEluZGljZXMob2Zmc2V0cywgaW5kaWNlcyksXG5cdFx0XHR1bnRpbHMgICAgIDogdW50aWxzLFxuXHRcdFx0cG9wdWxhdGlvbiA6IGRhdGFbNV0gfCAwXG5cdFx0fTtcblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRab25lIG9iamVjdFxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gWm9uZSAocGFja2VkU3RyaW5nKSB7XG5cdFx0aWYgKHBhY2tlZFN0cmluZykge1xuXHRcdFx0dGhpcy5fc2V0KHVucGFjayhwYWNrZWRTdHJpbmcpKTtcblx0XHR9XG5cdH1cblxuXHRab25lLnByb3RvdHlwZSA9IHtcblx0XHRfc2V0IDogZnVuY3Rpb24gKHVucGFja2VkKSB7XG5cdFx0XHR0aGlzLm5hbWUgICAgICAgPSB1bnBhY2tlZC5uYW1lO1xuXHRcdFx0dGhpcy5hYmJycyAgICAgID0gdW5wYWNrZWQuYWJicnM7XG5cdFx0XHR0aGlzLnVudGlscyAgICAgPSB1bnBhY2tlZC51bnRpbHM7XG5cdFx0XHR0aGlzLm9mZnNldHMgICAgPSB1bnBhY2tlZC5vZmZzZXRzO1xuXHRcdFx0dGhpcy5wb3B1bGF0aW9uID0gdW5wYWNrZWQucG9wdWxhdGlvbjtcblx0XHR9LFxuXG5cdFx0X2luZGV4IDogZnVuY3Rpb24gKHRpbWVzdGFtcCkge1xuXHRcdFx0dmFyIHRhcmdldCA9ICt0aW1lc3RhbXAsXG5cdFx0XHRcdHVudGlscyA9IHRoaXMudW50aWxzLFxuXHRcdFx0XHRpO1xuXG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgdW50aWxzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmICh0YXJnZXQgPCB1bnRpbHNbaV0pIHtcblx0XHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRwYXJzZSA6IGZ1bmN0aW9uICh0aW1lc3RhbXApIHtcblx0XHRcdHZhciB0YXJnZXQgID0gK3RpbWVzdGFtcCxcblx0XHRcdFx0b2Zmc2V0cyA9IHRoaXMub2Zmc2V0cyxcblx0XHRcdFx0dW50aWxzICA9IHRoaXMudW50aWxzLFxuXHRcdFx0XHRtYXggICAgID0gdW50aWxzLmxlbmd0aCAtIDEsXG5cdFx0XHRcdG9mZnNldCwgb2Zmc2V0TmV4dCwgb2Zmc2V0UHJldiwgaTtcblxuXHRcdFx0Zm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7XG5cdFx0XHRcdG9mZnNldCAgICAgPSBvZmZzZXRzW2ldO1xuXHRcdFx0XHRvZmZzZXROZXh0ID0gb2Zmc2V0c1tpICsgMV07XG5cdFx0XHRcdG9mZnNldFByZXYgPSBvZmZzZXRzW2kgPyBpIC0gMSA6IGldO1xuXG5cdFx0XHRcdGlmIChvZmZzZXQgPCBvZmZzZXROZXh0ICYmIHR6Lm1vdmVBbWJpZ3VvdXNGb3J3YXJkKSB7XG5cdFx0XHRcdFx0b2Zmc2V0ID0gb2Zmc2V0TmV4dDtcblx0XHRcdFx0fSBlbHNlIGlmIChvZmZzZXQgPiBvZmZzZXRQcmV2ICYmIHR6Lm1vdmVJbnZhbGlkRm9yd2FyZCkge1xuXHRcdFx0XHRcdG9mZnNldCA9IG9mZnNldFByZXY7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGFyZ2V0IDwgdW50aWxzW2ldIC0gKG9mZnNldCAqIDYwMDAwKSkge1xuXHRcdFx0XHRcdHJldHVybiBvZmZzZXRzW2ldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBvZmZzZXRzW21heF07XG5cdFx0fSxcblxuXHRcdGFiYnIgOiBmdW5jdGlvbiAobW9tKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hYmJyc1t0aGlzLl9pbmRleChtb20pXTtcblx0XHR9LFxuXG5cdFx0b2Zmc2V0IDogZnVuY3Rpb24gKG1vbSkge1xuXHRcdFx0bG9nRXJyb3IoXCJ6b25lLm9mZnNldCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHpvbmUudXRjT2Zmc2V0XCIpO1xuXHRcdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1t0aGlzLl9pbmRleChtb20pXTtcblx0XHR9LFxuXG5cdFx0dXRjT2Zmc2V0IDogZnVuY3Rpb24gKG1vbSkge1xuXHRcdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1t0aGlzLl9pbmRleChtb20pXTtcblx0XHR9XG5cdH07XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdEN1cnJlbnQgVGltZXpvbmVcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIE9mZnNldEF0KGF0KSB7XG5cdFx0dmFyIHRpbWVTdHJpbmcgPSBhdC50b1RpbWVTdHJpbmcoKTtcblx0XHR2YXIgYWJiciA9IHRpbWVTdHJpbmcubWF0Y2goL1xcKFthLXogXStcXCkvaSk7XG5cdFx0aWYgKGFiYnIgJiYgYWJiclswXSkge1xuXHRcdFx0Ly8gMTc6NTY6MzEgR01ULTA2MDAgKENTVClcblx0XHRcdC8vIDE3OjU2OjMxIEdNVC0wNjAwIChDZW50cmFsIFN0YW5kYXJkIFRpbWUpXG5cdFx0XHRhYmJyID0gYWJiclswXS5tYXRjaCgvW0EtWl0vZyk7XG5cdFx0XHRhYmJyID0gYWJiciA/IGFiYnIuam9pbignJykgOiB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIDE3OjU2OjMxIENTVFxuXHRcdFx0Ly8gMTc6NTY6MzEgR01UKzA4MDAgKOWPsOWMl+aomea6luaZgumWkylcblx0XHRcdGFiYnIgPSB0aW1lU3RyaW5nLm1hdGNoKC9bQS1aXXszLDV9L2cpO1xuXHRcdFx0YWJiciA9IGFiYnIgPyBhYmJyWzBdIDogdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmIChhYmJyID09PSAnR01UJykge1xuXHRcdFx0YWJiciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHR0aGlzLmF0ID0gK2F0O1xuXHRcdHRoaXMuYWJiciA9IGFiYnI7XG5cdFx0dGhpcy5vZmZzZXQgPSBhdC5nZXRUaW1lem9uZU9mZnNldCgpO1xuXHR9XG5cblx0ZnVuY3Rpb24gWm9uZVNjb3JlKHpvbmUpIHtcblx0XHR0aGlzLnpvbmUgPSB6b25lO1xuXHRcdHRoaXMub2Zmc2V0U2NvcmUgPSAwO1xuXHRcdHRoaXMuYWJiclNjb3JlID0gMDtcblx0fVxuXG5cdFpvbmVTY29yZS5wcm90b3R5cGUuc2NvcmVPZmZzZXRBdCA9IGZ1bmN0aW9uIChvZmZzZXRBdCkge1xuXHRcdHRoaXMub2Zmc2V0U2NvcmUgKz0gTWF0aC5hYnModGhpcy56b25lLnV0Y09mZnNldChvZmZzZXRBdC5hdCkgLSBvZmZzZXRBdC5vZmZzZXQpO1xuXHRcdGlmICh0aGlzLnpvbmUuYWJicihvZmZzZXRBdC5hdCkucmVwbGFjZSgvW15BLVpdL2csICcnKSAhPT0gb2Zmc2V0QXQuYWJicikge1xuXHRcdFx0dGhpcy5hYmJyU2NvcmUrKztcblx0XHR9XG5cdH07XG5cblx0ZnVuY3Rpb24gZmluZENoYW5nZShsb3csIGhpZ2gpIHtcblx0XHR2YXIgbWlkLCBkaWZmO1xuXG5cdFx0d2hpbGUgKChkaWZmID0gKChoaWdoLmF0IC0gbG93LmF0KSAvIDEyZTQgfCAwKSAqIDZlNCkpIHtcblx0XHRcdG1pZCA9IG5ldyBPZmZzZXRBdChuZXcgRGF0ZShsb3cuYXQgKyBkaWZmKSk7XG5cdFx0XHRpZiAobWlkLm9mZnNldCA9PT0gbG93Lm9mZnNldCkge1xuXHRcdFx0XHRsb3cgPSBtaWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRoaWdoID0gbWlkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBsb3c7XG5cdH1cblxuXHRmdW5jdGlvbiB1c2VyT2Zmc2V0cygpIHtcblx0XHR2YXIgc3RhcnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMixcblx0XHRcdGxhc3QgPSBuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyLCAwLCAxKSksXG5cdFx0XHRvZmZzZXRzID0gW2xhc3RdLFxuXHRcdFx0Y2hhbmdlLCBuZXh0LCBpO1xuXG5cdFx0Zm9yIChpID0gMTsgaSA8IDQ4OyBpKyspIHtcblx0XHRcdG5leHQgPSBuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyLCBpLCAxKSk7XG5cdFx0XHRpZiAobmV4dC5vZmZzZXQgIT09IGxhc3Qub2Zmc2V0KSB7XG5cdFx0XHRcdGNoYW5nZSA9IGZpbmRDaGFuZ2UobGFzdCwgbmV4dCk7XG5cdFx0XHRcdG9mZnNldHMucHVzaChjaGFuZ2UpO1xuXHRcdFx0XHRvZmZzZXRzLnB1c2gobmV3IE9mZnNldEF0KG5ldyBEYXRlKGNoYW5nZS5hdCArIDZlNCkpKTtcblx0XHRcdH1cblx0XHRcdGxhc3QgPSBuZXh0O1xuXHRcdH1cblxuXHRcdGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0XHRcdG9mZnNldHMucHVzaChuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyICsgaSwgMCwgMSkpKTtcblx0XHRcdG9mZnNldHMucHVzaChuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyICsgaSwgNiwgMSkpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb2Zmc2V0cztcblx0fVxuXG5cdGZ1bmN0aW9uIHNvcnRab25lU2NvcmVzIChhLCBiKSB7XG5cdFx0aWYgKGEub2Zmc2V0U2NvcmUgIT09IGIub2Zmc2V0U2NvcmUpIHtcblx0XHRcdHJldHVybiBhLm9mZnNldFNjb3JlIC0gYi5vZmZzZXRTY29yZTtcblx0XHR9XG5cdFx0aWYgKGEuYWJiclNjb3JlICE9PSBiLmFiYnJTY29yZSkge1xuXHRcdFx0cmV0dXJuIGEuYWJiclNjb3JlIC0gYi5hYmJyU2NvcmU7XG5cdFx0fVxuXHRcdHJldHVybiBiLnpvbmUucG9wdWxhdGlvbiAtIGEuem9uZS5wb3B1bGF0aW9uO1xuXHR9XG5cblx0ZnVuY3Rpb24gYWRkVG9HdWVzc2VzIChuYW1lLCBvZmZzZXRzKSB7XG5cdFx0dmFyIGksIG9mZnNldDtcblx0XHRhcnJheVRvSW50KG9mZnNldHMpO1xuXHRcdGZvciAoaSA9IDA7IGkgPCBvZmZzZXRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRvZmZzZXQgPSBvZmZzZXRzW2ldO1xuXHRcdFx0Z3Vlc3Nlc1tvZmZzZXRdID0gZ3Vlc3Nlc1tvZmZzZXRdIHx8IHt9O1xuXHRcdFx0Z3Vlc3Nlc1tvZmZzZXRdW25hbWVdID0gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBndWVzc2VzRm9yVXNlck9mZnNldHMgKG9mZnNldHMpIHtcblx0XHR2YXIgb2Zmc2V0c0xlbmd0aCA9IG9mZnNldHMubGVuZ3RoLFxuXHRcdFx0ZmlsdGVyZWRHdWVzc2VzID0ge30sXG5cdFx0XHRvdXQgPSBbXSxcblx0XHRcdGksIGosIGd1ZXNzZXNPZmZzZXQ7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgb2Zmc2V0c0xlbmd0aDsgaSsrKSB7XG5cdFx0XHRndWVzc2VzT2Zmc2V0ID0gZ3Vlc3Nlc1tvZmZzZXRzW2ldLm9mZnNldF0gfHwge307XG5cdFx0XHRmb3IgKGogaW4gZ3Vlc3Nlc09mZnNldCkge1xuXHRcdFx0XHRpZiAoZ3Vlc3Nlc09mZnNldC5oYXNPd25Qcm9wZXJ0eShqKSkge1xuXHRcdFx0XHRcdGZpbHRlcmVkR3Vlc3Nlc1tqXSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGkgaW4gZmlsdGVyZWRHdWVzc2VzKSB7XG5cdFx0XHRpZiAoZmlsdGVyZWRHdWVzc2VzLmhhc093blByb3BlcnR5KGkpKSB7XG5cdFx0XHRcdG91dC5wdXNoKG5hbWVzW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0ZnVuY3Rpb24gcmVidWlsZEd1ZXNzICgpIHtcblxuXHRcdC8vIHVzZSBJbnRsIEFQSSB3aGVuIGF2YWlsYWJsZSBhbmQgcmV0dXJuaW5nIHZhbGlkIHRpbWUgem9uZVxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgaW50bE5hbWUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XG5cdFx0XHRpZiAoaW50bE5hbWUgJiYgaW50bE5hbWUubGVuZ3RoID4gMykge1xuXHRcdFx0XHR2YXIgbmFtZSA9IG5hbWVzW25vcm1hbGl6ZU5hbWUoaW50bE5hbWUpXTtcblx0XHRcdFx0aWYgKG5hbWUpIHtcblx0XHRcdFx0XHRyZXR1cm4gbmFtZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dFcnJvcihcIk1vbWVudCBUaW1lem9uZSBmb3VuZCBcIiArIGludGxOYW1lICsgXCIgZnJvbSB0aGUgSW50bCBhcGksIGJ1dCBkaWQgbm90IGhhdmUgdGhhdCBkYXRhIGxvYWRlZC5cIik7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Ly8gSW50bCB1bmF2YWlsYWJsZSwgZmFsbCBiYWNrIHRvIG1hbnVhbCBndWVzc2luZy5cblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0cyA9IHVzZXJPZmZzZXRzKCksXG5cdFx0XHRvZmZzZXRzTGVuZ3RoID0gb2Zmc2V0cy5sZW5ndGgsXG5cdFx0XHRndWVzc2VzID0gZ3Vlc3Nlc0ZvclVzZXJPZmZzZXRzKG9mZnNldHMpLFxuXHRcdFx0em9uZVNjb3JlcyA9IFtdLFxuXHRcdFx0em9uZVNjb3JlLCBpLCBqO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGd1ZXNzZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHpvbmVTY29yZSA9IG5ldyBab25lU2NvcmUoZ2V0Wm9uZShndWVzc2VzW2ldKSwgb2Zmc2V0c0xlbmd0aCk7XG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgb2Zmc2V0c0xlbmd0aDsgaisrKSB7XG5cdFx0XHRcdHpvbmVTY29yZS5zY29yZU9mZnNldEF0KG9mZnNldHNbal0pO1xuXHRcdFx0fVxuXHRcdFx0em9uZVNjb3Jlcy5wdXNoKHpvbmVTY29yZSk7XG5cdFx0fVxuXG5cdFx0em9uZVNjb3Jlcy5zb3J0KHNvcnRab25lU2NvcmVzKTtcblxuXHRcdHJldHVybiB6b25lU2NvcmVzLmxlbmd0aCA+IDAgPyB6b25lU2NvcmVzWzBdLnpvbmUubmFtZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdGZ1bmN0aW9uIGd1ZXNzIChpZ25vcmVDYWNoZSkge1xuXHRcdGlmICghY2FjaGVkR3Vlc3MgfHwgaWdub3JlQ2FjaGUpIHtcblx0XHRcdGNhY2hlZEd1ZXNzID0gcmVidWlsZEd1ZXNzKCk7XG5cdFx0fVxuXHRcdHJldHVybiBjYWNoZWRHdWVzcztcblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRHbG9iYWwgTWV0aG9kc1xuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gbm9ybWFsaXplTmFtZSAobmFtZSkge1xuXHRcdHJldHVybiAobmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXC8vZywgJ18nKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZFpvbmUgKHBhY2tlZCkge1xuXHRcdHZhciBpLCBuYW1lLCBzcGxpdCwgbm9ybWFsaXplZDtcblxuXHRcdGlmICh0eXBlb2YgcGFja2VkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRwYWNrZWQgPSBbcGFja2VkXTtcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgcGFja2VkLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRzcGxpdCA9IHBhY2tlZFtpXS5zcGxpdCgnfCcpO1xuXHRcdFx0bmFtZSA9IHNwbGl0WzBdO1xuXHRcdFx0bm9ybWFsaXplZCA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG5cdFx0XHR6b25lc1tub3JtYWxpemVkXSA9IHBhY2tlZFtpXTtcblx0XHRcdG5hbWVzW25vcm1hbGl6ZWRdID0gbmFtZTtcblx0XHRcdGFkZFRvR3Vlc3Nlcyhub3JtYWxpemVkLCBzcGxpdFsyXS5zcGxpdCgnICcpKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRab25lIChuYW1lLCBjYWxsZXIpIHtcblx0XHRuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcblxuXHRcdHZhciB6b25lID0gem9uZXNbbmFtZV07XG5cdFx0dmFyIGxpbms7XG5cblx0XHRpZiAoem9uZSBpbnN0YW5jZW9mIFpvbmUpIHtcblx0XHRcdHJldHVybiB6b25lO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygem9uZSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHpvbmUgPSBuZXcgWm9uZSh6b25lKTtcblx0XHRcdHpvbmVzW25hbWVdID0gem9uZTtcblx0XHRcdHJldHVybiB6b25lO1xuXHRcdH1cblxuXHRcdC8vIFBhc3MgZ2V0Wm9uZSB0byBwcmV2ZW50IHJlY3Vyc2lvbiBtb3JlIHRoYW4gMSBsZXZlbCBkZWVwXG5cdFx0aWYgKGxpbmtzW25hbWVdICYmIGNhbGxlciAhPT0gZ2V0Wm9uZSAmJiAobGluayA9IGdldFpvbmUobGlua3NbbmFtZV0sIGdldFpvbmUpKSkge1xuXHRcdFx0em9uZSA9IHpvbmVzW25hbWVdID0gbmV3IFpvbmUoKTtcblx0XHRcdHpvbmUuX3NldChsaW5rKTtcblx0XHRcdHpvbmUubmFtZSA9IG5hbWVzW25hbWVdO1xuXHRcdFx0cmV0dXJuIHpvbmU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXROYW1lcyAoKSB7XG5cdFx0dmFyIGksIG91dCA9IFtdO1xuXG5cdFx0Zm9yIChpIGluIG5hbWVzKSB7XG5cdFx0XHRpZiAobmFtZXMuaGFzT3duUHJvcGVydHkoaSkgJiYgKHpvbmVzW2ldIHx8IHpvbmVzW2xpbmtzW2ldXSkgJiYgbmFtZXNbaV0pIHtcblx0XHRcdFx0b3V0LnB1c2gobmFtZXNbaV0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvdXQuc29ydCgpO1xuXHR9XG5cblx0ZnVuY3Rpb24gYWRkTGluayAoYWxpYXNlcykge1xuXHRcdHZhciBpLCBhbGlhcywgbm9ybWFsMCwgbm9ybWFsMTtcblxuXHRcdGlmICh0eXBlb2YgYWxpYXNlcyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0YWxpYXNlcyA9IFthbGlhc2VzXTtcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgYWxpYXNlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0YWxpYXMgPSBhbGlhc2VzW2ldLnNwbGl0KCd8Jyk7XG5cblx0XHRcdG5vcm1hbDAgPSBub3JtYWxpemVOYW1lKGFsaWFzWzBdKTtcblx0XHRcdG5vcm1hbDEgPSBub3JtYWxpemVOYW1lKGFsaWFzWzFdKTtcblxuXHRcdFx0bGlua3Nbbm9ybWFsMF0gPSBub3JtYWwxO1xuXHRcdFx0bmFtZXNbbm9ybWFsMF0gPSBhbGlhc1swXTtcblxuXHRcdFx0bGlua3Nbbm9ybWFsMV0gPSBub3JtYWwwO1xuXHRcdFx0bmFtZXNbbm9ybWFsMV0gPSBhbGlhc1sxXTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBsb2FkRGF0YSAoZGF0YSkge1xuXHRcdGFkZFpvbmUoZGF0YS56b25lcyk7XG5cdFx0YWRkTGluayhkYXRhLmxpbmtzKTtcblx0XHR0ei5kYXRhVmVyc2lvbiA9IGRhdGEudmVyc2lvbjtcblx0fVxuXG5cdGZ1bmN0aW9uIHpvbmVFeGlzdHMgKG5hbWUpIHtcblx0XHRpZiAoIXpvbmVFeGlzdHMuZGlkU2hvd0Vycm9yKSB7XG5cdFx0XHR6b25lRXhpc3RzLmRpZFNob3dFcnJvciA9IHRydWU7XG5cdFx0XHRcdGxvZ0Vycm9yKFwibW9tZW50LnR6LnpvbmVFeGlzdHMoJ1wiICsgbmFtZSArIFwiJykgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAhbW9tZW50LnR6LnpvbmUoJ1wiICsgbmFtZSArIFwiJylcIik7XG5cdFx0fVxuXHRcdHJldHVybiAhIWdldFpvbmUobmFtZSk7XG5cdH1cblxuXHRmdW5jdGlvbiBuZWVkc09mZnNldCAobSkge1xuXHRcdHZhciBpc1VuaXhUaW1lc3RhbXAgPSAobS5fZiA9PT0gJ1gnIHx8IG0uX2YgPT09ICd4Jyk7XG5cdFx0cmV0dXJuICEhKG0uX2EgJiYgKG0uX3R6bSA9PT0gdW5kZWZpbmVkKSAmJiAhaXNVbml4VGltZXN0YW1wKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGxvZ0Vycm9yIChtZXNzYWdlKSB7XG5cdFx0aWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Y29uc29sZS5lcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0bW9tZW50LnR6IG5hbWVzcGFjZVxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gdHogKGlucHV0KSB7XG5cdFx0dmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKSxcblx0XHRcdG5hbWUgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLFxuXHRcdFx0em9uZSA9IGdldFpvbmUobmFtZSksXG5cdFx0XHRvdXQgID0gbW9tZW50LnV0Yy5hcHBseShudWxsLCBhcmdzKTtcblxuXHRcdGlmICh6b25lICYmICFtb21lbnQuaXNNb21lbnQoaW5wdXQpICYmIG5lZWRzT2Zmc2V0KG91dCkpIHtcblx0XHRcdG91dC5hZGQoem9uZS5wYXJzZShvdXQpLCAnbWludXRlcycpO1xuXHRcdH1cblxuXHRcdG91dC50eihuYW1lKTtcblxuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHR0ei52ZXJzaW9uICAgICAgPSBWRVJTSU9OO1xuXHR0ei5kYXRhVmVyc2lvbiAgPSAnJztcblx0dHouX3pvbmVzICAgICAgID0gem9uZXM7XG5cdHR6Ll9saW5rcyAgICAgICA9IGxpbmtzO1xuXHR0ei5fbmFtZXMgICAgICAgPSBuYW1lcztcblx0dHouYWRkICAgICAgICAgID0gYWRkWm9uZTtcblx0dHoubGluayAgICAgICAgID0gYWRkTGluaztcblx0dHoubG9hZCAgICAgICAgID0gbG9hZERhdGE7XG5cdHR6LnpvbmUgICAgICAgICA9IGdldFpvbmU7XG5cdHR6LnpvbmVFeGlzdHMgICA9IHpvbmVFeGlzdHM7IC8vIGRlcHJlY2F0ZWQgaW4gMC4xLjBcblx0dHouZ3Vlc3MgICAgICAgID0gZ3Vlc3M7XG5cdHR6Lm5hbWVzICAgICAgICA9IGdldE5hbWVzO1xuXHR0ei5ab25lICAgICAgICAgPSBab25lO1xuXHR0ei51bnBhY2sgICAgICAgPSB1bnBhY2s7XG5cdHR6LnVucGFja0Jhc2U2MCA9IHVucGFja0Jhc2U2MDtcblx0dHoubmVlZHNPZmZzZXQgID0gbmVlZHNPZmZzZXQ7XG5cdHR6Lm1vdmVJbnZhbGlkRm9yd2FyZCAgID0gdHJ1ZTtcblx0dHoubW92ZUFtYmlndW91c0ZvcndhcmQgPSBmYWxzZTtcblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0SW50ZXJmYWNlIHdpdGggTW9tZW50LmpzXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHR2YXIgZm4gPSBtb21lbnQuZm47XG5cblx0bW9tZW50LnR6ID0gdHo7XG5cblx0bW9tZW50LmRlZmF1bHRab25lID0gbnVsbDtcblxuXHRtb21lbnQudXBkYXRlT2Zmc2V0ID0gZnVuY3Rpb24gKG1vbSwga2VlcFRpbWUpIHtcblx0XHR2YXIgem9uZSA9IG1vbWVudC5kZWZhdWx0Wm9uZSxcblx0XHRcdG9mZnNldDtcblxuXHRcdGlmIChtb20uX3ogPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKHpvbmUgJiYgbmVlZHNPZmZzZXQobW9tKSAmJiAhbW9tLl9pc1VUQykge1xuXHRcdFx0XHRtb20uX2QgPSBtb21lbnQudXRjKG1vbS5fYSkuX2Q7XG5cdFx0XHRcdG1vbS51dGMoKS5hZGQoem9uZS5wYXJzZShtb20pLCAnbWludXRlcycpO1xuXHRcdFx0fVxuXHRcdFx0bW9tLl96ID0gem9uZTtcblx0XHR9XG5cdFx0aWYgKG1vbS5feikge1xuXHRcdFx0b2Zmc2V0ID0gbW9tLl96LnV0Y09mZnNldChtb20pO1xuXHRcdFx0aWYgKE1hdGguYWJzKG9mZnNldCkgPCAxNikge1xuXHRcdFx0XHRvZmZzZXQgPSBvZmZzZXQgLyA2MDtcblx0XHRcdH1cblx0XHRcdGlmIChtb20udXRjT2Zmc2V0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0bW9tLnV0Y09mZnNldCgtb2Zmc2V0LCBrZWVwVGltZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtb20uem9uZShvZmZzZXQsIGtlZXBUaW1lKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0Zm4udHogPSBmdW5jdGlvbiAobmFtZSwga2VlcFRpbWUpIHtcblx0XHRpZiAobmFtZSkge1xuXHRcdFx0dGhpcy5feiA9IGdldFpvbmUobmFtZSk7XG5cdFx0XHRpZiAodGhpcy5feikge1xuXHRcdFx0XHRtb21lbnQudXBkYXRlT2Zmc2V0KHRoaXMsIGtlZXBUaW1lKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ0Vycm9yKFwiTW9tZW50IFRpbWV6b25lIGhhcyBubyBkYXRhIGZvciBcIiArIG5hbWUgKyBcIi4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vdGltZXpvbmUvZG9jcy8jL2RhdGEtbG9hZGluZy8uXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl96KSB7IHJldHVybiB0aGlzLl96Lm5hbWU7IH1cblx0fTtcblxuXHRmdW5jdGlvbiBhYmJyV3JhcCAob2xkKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdGlmICh0aGlzLl96KSB7IHJldHVybiB0aGlzLl96LmFiYnIodGhpcyk7IH1cblx0XHRcdHJldHVybiBvbGQuY2FsbCh0aGlzKTtcblx0XHR9O1xuXHR9XG5cblx0ZnVuY3Rpb24gcmVzZXRab25lV3JhcCAob2xkKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdHRoaXMuX3ogPSBudWxsO1xuXHRcdFx0cmV0dXJuIG9sZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdH07XG5cdH1cblxuXHRmbi56b25lTmFtZSA9IGFiYnJXcmFwKGZuLnpvbmVOYW1lKTtcblx0Zm4uem9uZUFiYnIgPSBhYmJyV3JhcChmbi56b25lQWJicik7XG5cdGZuLnV0YyAgICAgID0gcmVzZXRab25lV3JhcChmbi51dGMpO1xuXG5cdG1vbWVudC50ei5zZXREZWZhdWx0ID0gZnVuY3Rpb24obmFtZSkge1xuXHRcdGlmIChtYWpvciA8IDIgfHwgKG1ham9yID09PSAyICYmIG1pbm9yIDwgOSkpIHtcblx0XHRcdGxvZ0Vycm9yKCdNb21lbnQgVGltZXpvbmUgc2V0RGVmYXVsdCgpIHJlcXVpcmVzIE1vbWVudC5qcyA+PSAyLjkuMC4gWW91IGFyZSB1c2luZyBNb21lbnQuanMgJyArIG1vbWVudC52ZXJzaW9uICsgJy4nKTtcblx0XHR9XG5cdFx0bW9tZW50LmRlZmF1bHRab25lID0gbmFtZSA/IGdldFpvbmUobmFtZSkgOiBudWxsO1xuXHRcdHJldHVybiBtb21lbnQ7XG5cdH07XG5cblx0Ly8gQ2xvbmluZyBhIG1vbWVudCBzaG91bGQgaW5jbHVkZSB0aGUgX3ogcHJvcGVydHkuXG5cdHZhciBtb21lbnRQcm9wZXJ0aWVzID0gbW9tZW50Lm1vbWVudFByb3BlcnRpZXM7XG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobW9tZW50UHJvcGVydGllcykgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcblx0XHQvLyBtb21lbnQgMi44LjErXG5cdFx0bW9tZW50UHJvcGVydGllcy5wdXNoKCdfeicpO1xuXHRcdG1vbWVudFByb3BlcnRpZXMucHVzaCgnX2EnKTtcblx0fSBlbHNlIGlmIChtb21lbnRQcm9wZXJ0aWVzKSB7XG5cdFx0Ly8gbW9tZW50IDIuNy4wXG5cdFx0bW9tZW50UHJvcGVydGllcy5feiA9IG51bGw7XG5cdH1cblxuXHRsb2FkRGF0YSh7XG5cdFx0XCJ2ZXJzaW9uXCI6IFwiMjAxOGVcIixcblx0XHRcInpvbmVzXCI6IFtcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58TE1UIEdNVHxnLjggMHwwMXwtMmxkWEguUXw0OGU1XCIsXG5cdFx0XHRcIkFmcmljYS9BY2NyYXxMTVQgR01UICswMDIwfC5RIDAgLWt8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yNkJiWC44IDZ0elguOCBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkV8NDFlNVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxMTVQgRUFUICswMjMwICswMjQ1fC0yci5nIC0zMCAtMnUgLTJKfDAxMjMxfC0xRjNDci5nIDNEenIuZyBva011IE1GWEp8NDdlNVwiLFxuXHRcdFx0XCJBZnJpY2EvQWxnaWVyc3xQTVQgV0VUIFdFU1QgQ0VUIENFU1R8LTkubCAwIC0xMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEzNDM0MzEzMTIxMjM0MzEyMTN8LTJuY285LmwgY05iOS5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCBEQTAgSW1vMCByZDAgRGUwIDlYejAgMWZiMCAxYXAwIDE2SzAgMnlvMCBtRXAwIGh3TDAganhBMCAxMUEwIGREZDAgMTdiMCAxMUIwIDFjTjAgMkR5MCAxY04wIDFmQjAgMWNMMHwyNmU1XCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xMTVQgV0FUfC1kLkEgLTEwfDAxfC0yMnkwZC5BfDE3ZTZcIixcblx0XHRcdFwiQWZyaWNhL0Jpc3NhdXxMTVQgLTAxIEdNVHwxMi5rIDEwIDB8MDEyfC0ybGRYMCAyeG9vMHwzOWU0XCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98TE1UIENBVHwtMmEuayAtMjB8MDF8LTJHSmVhLmt8MjZlNVwiLFxuXHRcdFx0XCJBZnJpY2EvQ2Fpcm98RUVUIEVFU1R8LTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xYklPMCB2YjAgMWlwMCAxMXowIDFpTjAgMW56MCAxMnAwIDFwejAgMTBOMCAxcHowIDE2cDAgMWp6MCBzM2QwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxV0wwIHJkMCAxUnowIHdwMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFxTDAgWGQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW55MCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIFdMMCAxcU4wIFJiMCAxd3AwIE9uMCAxemQwIEx6MCAxRU4wIEZiMCBjMTAgOG4wIDhOZDAgZ0wwIGUxMCBtbjB8MTVlNlwiLFxuXHRcdFx0XCJBZnJpY2EvQ2FzYWJsYW5jYXxMTVQgV0VUIFdFU1QgQ0VUfHUuayAwIC0xMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdNbnQuRSAxMzBMdC5FIHJiMCBEZDAgZFZiMCBiNnAwIFRYMCBFb0IwIExMMCBnbmQwIHJ6MCA0M2QwIEFMMCAxTmQwIFhYMCAxQ3AwIHB6MCBkRXAwIDRtbjAgU3lOMCBBTDAgMU5kMCB3bjAgMUZCMCBEYjAgMXpkMCBMejAgMU5mMCB3TTAgY28wIGdvMCAxbzAwIHMwMCBkQTAgdmMwIDExQTAgQTAwIGUwMCB5MDAgMTFBMCB1TTAgZTAwIERjMCAxMUEwIHMwMCBlMDAgSU0wIFdNMCBtbzAgZ00wIExBMCBXTTAgakEwIGUwMCBSYzAgMTFBMCBlMDAgZTAwIFUwMCAxMUEwIDhvMCBlMDAgMTFBMCAxMUEwIDVBMCBlMDAgMTdjMCAxZkEwIDFhMDAgMWEwMCAxZkEwIDE3YzAgMWlvMCAxNG8wIDFsYzAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFsYzAgMTRvMCAxZkEwfDMyZTVcIixcblx0XHRcdFwiQWZyaWNhL0NldXRhfFdFVCBXRVNUIENFVCBDRVNUfDAgLTEwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yNUtOMCAxMXowIGRyZDAgMThwMCAzSFgwIDE3ZDAgMWZ6MCAxYTEwIDFpbzAgMWEwMCAxeTdvMCBMTDAgZ25kMCByejAgNDNkMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgZEVwMCA0VkIwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw4NWUzXCIsXG5cdFx0XHRcIkFmcmljYS9FbF9BYWl1bnxMTVQgLTAxIFdFVCBXRVNUfFEuTSAxMCAwIC0xMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMXJEejcuYyAxR1ZBNy5jIDZMMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgMWNCQjAgQUwwIDFOZDAgd24wIDFGQjAgRGIwIDF6ZDAgTHowIDFOZjAgd00wIGNvMCBnbzAgMW8wMCBzMDAgZEEwIHZjMCAxMUEwIEEwMCBlMDAgeTAwIDExQTAgdU0wIGUwMCBEYzAgMTFBMCBzMDAgZTAwIElNMCBXTTAgbW8wIGdNMCBMQTAgV00wIGpBMCBlMDAgUmMwIDExQTAgZTAwIGUwMCBVMDAgMTFBMCA4bzAgZTAwIDExQTAgMTFBMCA1QTAgZTAwIDE3YzAgMWZBMCAxYTAwIDFhMDAgMWZBMCAxN2MwIDFpbzAgMTRvMCAxbGMwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbGMwIDE0bzAgMWZBMHwyMGU0XCIsXG5cdFx0XHRcIkFmcmljYS9Kb2hhbm5lc2J1cmd8U0FTVCBTQVNUIFNBU1R8LTF1IC0yMCAtMzB8MDEyMTIxfC0yR0pkdSAxQWpkdSAxY0wwIDFjTjAgMWNMMHw4NGU1XCIsXG5cdFx0XHRcIkFmcmljYS9KdWJhfExNVCBDQVQgQ0FTVCBFQVR8LTI2LnMgLTIwIC0zMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTF5VzI2LnMgMXpLMDYucyAxNkwwIDFpTjAgMTdiMCAxamQwIDE3YjAgMWlwMCAxN3owIDFpMTAgMTdYMCAxaEIwIDE4bjAgMWhkMCAxOWIwIDFncDAgMTl6MCAxaU4wIDE3YjAgMWlwMCAxN3owIDFpMTAgMThuMCAxaGQwIDE4TDAgMWdOMCAxOWIwIDFncDAgMTl6MCAxaU4wIDE3ejAgMWkxMCAxN1gwIHlHZDBcIixcblx0XHRcdFwiQWZyaWNhL0toYXJ0b3VtfExNVCBDQVQgQ0FTVCBFQVR8LTJhLjggLTIwIC0zMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTMxfC0xeVcyYS44IDF6SzBhLjggMTZMMCAxaU4wIDE3YjAgMWpkMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE3WDAgMWhCMCAxOG4wIDFoZDAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE4bjAgMWhkMCAxOEwwIDFnTjAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN3owIDFpMTAgMTdYMCB5R2QwIEhqTDB8NTFlNVwiLFxuXHRcdFx0XCJBZnJpY2EvTW9ucm92aWF8TU1UIE1NVCBHTVR8SC44IEkudSAwfDAxMnwtMjNMemcuUSAyOEcwMS5tfDExZTVcIixcblx0XHRcdFwiQWZyaWNhL05kamFtZW5hfExNVCBXQVQgV0FTVHwtMTAuYyAtMTAgLTIwfDAxMjF8LTJsZTEwLmMgMkozYzAuYyBXbjB8MTNlNVwiLFxuXHRcdFx0XCJBZnJpY2EvU2FvX1RvbWV8TE1UIEdNVCBXQVR8QS5KIDAgLTEwfDAxMnwtMmxlMDAgNGk2TjBcIixcblx0XHRcdFwiQWZyaWNhL1RyaXBvbGl8TE1UIENFVCBDRVNUIEVFVHwtUS5JIC0xMCAtMjAgLTIwfDAxMjEyMTIxMzEyMTIxMjEyMTIxMjEyMTIxMzEyMzEyM3wtMjFKY1EuSSAxaG5CUS5JIHZ4MCA0aVAwIHh4MCA0ZU4wIEJiMCA3aXAwIFUwbjAgQTEwIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxZU4wIDFiYjAgMWUxMCAxY0wwIDFjMTAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFxMTAgZkFuMCAxZXAwIDFkYjAgQUtxMCBUQTAgMW8wMHwxMWU1XCIsXG5cdFx0XHRcIkFmcmljYS9UdW5pc3xQTVQgQ0VUIENFU1R8LTkubCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJuY285LmwgMThwYTkubCAxcU0wIERBMCAzVGMwIDExQjAgMXplMCBXTTAgN3owIDNkMCAxNEwwIDFjTjAgMWY5MCAxYXIwIDE2SjAgMWdYQjAgV00wIDFyQTAgMTFjMCBud28wIEtvMCAxY00wIDFjTTAgMXJBMCAxME0wIHp1TTAgMTBOMCAxYU4wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwfDIwZTVcIixcblx0XHRcdFwiQWZyaWNhL1dpbmRob2VrfCswMTMwIFNBU1QgU0FTVCBDQVQgV0FUfC0xdSAtMjAgLTMwIC0yMCAtMTB8MDEyMTM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTJHSmR1IDFBamR1IDFjTDAgMVNxTDAgOUlvMCAxNlAwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjB8MzJlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FkYWt8TlNUIE5XVCBOUFQgQlNUIEJEVCBBSFNUIEhTVCBIRFR8YjAgYTAgYTAgYjAgYTAgYTAgYTAgOTB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1NYMCA4d1cwIGlCMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbTAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzMjZcIixcblx0XHRcdFwiQW1lcmljYS9BbmNob3JhZ2V8QVNUIEFXVCBBUFQgQUhTVCBBSERUIFlTVCBBS1NUIEFLRFR8YTAgOTAgOTAgYTAgOTAgOTAgOTAgODB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1QwMCA4d1gwIGlBMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbTAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzMGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxMTVQgQVNUfDQ2LjQgNDB8MDF8LTJrTnZSLlV8NDNlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0FyYWd1YWluYXxMTVQgLTAzIC0wMnwzYy5NIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHdMLmMgSGRLTC5jIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIGRNTjAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIG55MTAgTHowfDE0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3AwIFJiMCAxd3AwIFRYMCBBNHAwIHVMMCAxcU4wIFdMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2F8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIHJsQjAgN0IwIDh6YjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NvcmRvYmF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIEE0cDAgdUwwIDFxTjAgV0wwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0p1anV5fENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzEyMTMyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXplMCBUWDAgMWxkMCBXSzAgMXdwMCBUWDAgQTRwMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvTGFfUmlvamF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMjMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFFuMCBxTzAgMTZuMCBSYjAgMXdwMCBUWDAgcmxCMCA3QjAgOHpiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvTWVuZG96YXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMxMjEyMTMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXUyMCBTTDAgMXZkMCBUYjAgMXdwMCBUVzAgcmkxMCBPcDAgN1RYMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvUmlvX0dhbGxlZ29zfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3AwIFJiMCAxd3AwIFRYMCBybEIwIDdCMCA4emIwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9TYWx0YXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzEzMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIEE0cDAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1Nhbl9KdWFufENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBRbjAgcU8wIDE2bjAgUmIwIDF3cDAgVFgwIHJsZDAgbTEwIDhsYjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1Nhbl9MdWlzfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzEyMTIxMjMyMTIxMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBYWDAgMXEyMCBTTDAgQU4wIHZEYjAgbTEwIDhsYjAgOEwwIGpkMCAxcU4wIFdMMCAxcU4wXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1R1Y3VtYW58Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjEyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdxMCBSYTAgMXdwMCBUWDAgcmxCMCA0TjAgOEJYMCB1TDAgMXFOMCBXTDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvVXNodWFpYXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdwMCBSYjAgMXdwMCBUWDAgcmtOMCA4cDAgOHpiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9DdXJhY2FvfExNVCAtMDQzMCBBU1R8NHouTCA0dSA0MHwwMTJ8LTJrVjdvLmQgMjhLTFMuZHwxNWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQXN1bmNpb258QU1UIC0wNCAtMDN8M08uRSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTF4NTg5LmsgMURLTTkuayAzQ0wwIDNEZDAgMTBMMCAxcEIwIDEwbjAgMXBCMCAxMG4wIDFwQjAgMWNMMCAxZGQwIDFkYjAgMWRkMCAxY0wwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxZGIwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxY0wwIDFkZDAgMWRiMCAxZGQwIDFjTDAgMWxCMCAxNG4wIDFkZDAgMWNMMCAxZmQwIFdMMCAxcmQwIDFhTDAgMWRCMCBYejAgMXFwMCBYYjAgMXFOMCAxMEwwIDFyQjAgVFgwIDF0QjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMWNMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMWlwMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBUWDAgMXRCMCBUWDAgMXRCMCAxOVgwIDFhMTAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDB8MjhlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0F0aWtva2FufENTVCBDRFQgQ1dUIENQVCBFU1R8NjAgNTAgNTAgNTAgNTB8MDEwMTIzNHwtMjVUUTAgMWluMCBSbmIwIDNqZTAgOHgzMCBpdzB8MjhlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0JhaGlhX0JhbmRlcmFzfExNVCBNU1QgQ1NUIFBTVCBNRFQgQ0RUfDcxIDcwIDYwIDgwIDYwIDUwfDAxMjEyMTIxMzE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTJ8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCBvdFgwIGdtTjAgUDJOMCAxM1ZkMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5XMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHw4NGUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQmFoaWF8TE1UIC0wMyAtMDJ8MnkuNCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseHAuVSBIZExwLlUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgbDVCMCBSYjB8MjdlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0JhcmJhZG9zfExNVCBCTVQgQVNUIEFEVHwzVy50IDNXLnQgNDAgMzB8MDEyMzIzMjMyMzJ8LTFRMEkxLnYganNNMCAxT0RDMS52IElMMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFsZDAgMTNiMHwyOGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQmVsZW18TE1UIC0wMyAtMDJ8M2QuVSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHdLLjQgSGRLSy40IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwfDIwZTVcIixcblx0XHRcdFwiQW1lcmljYS9CZWxpemV8TE1UIENTVCAtMDUzMCBDRFR8NVEuTSA2MCA1dSA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzEzMXwtMmtCdTcuYyBmUEE3LmMgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDFmME11IHFuMCBseEIwIG1uMHw1N2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQmxhbmMtU2FibG9ufEFTVCBBRFQgQVdUIEFQVHw0MCAzMCAzMCAzMHwwMTAyMzB8LTI1VFMwIDFpbjAgVUdwMCA4eDUwIGl1MHwxMWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQm9hX1Zpc3RhfExNVCAtMDQgLTAzfDQyLkUgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdlYuayBIZEtWLmsgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgc21wMCBXTDAgMXRCMCAyTDB8NjJlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0JvZ290YXxCTVQgLTA1IC0wNHw0VS5nIDUwIDQwfDAxMjF8LTJlYjczLkkgMzh5bzMuSSAyZW4wfDkwZTVcIixcblx0XHRcdFwiQW1lcmljYS9Cb2lzZXxQU1QgUERUIE1TVCBNV1QgTVBUIE1EVHw4MCA3MCA3MCA2MCA2MCA2MHwwMTAxMDIzNDI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0yNjFxMCAxblgwIDExQjAgMW5YMCA4QzEwIEpDTDAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIERkMCAxS24wIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FtYnJpZGdlX0JheXwtMDAgTVNUIE1XVCBNUFQgTUREVCBNRFQgQ1NUIENEVCBFU1R8MCA3MCA2MCA2MCA1MCA2MCA2MCA1MCA1MHwwMTIzMTQxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1Njc4NjUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxfC0yMUpjMCBSTzkwIDh4MjAgaXgwIExDTDAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQTAgMW5YMCAySzAgV1EwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FtcG9fR3JhbmRlfExNVCAtMDQgLTAzfDNDLnMgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yZ2x3bC53IEhkTGwudyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCAxRU4wIEx6MCAxQzEwIElMMCAxSEIwIERiMCAxSEIwIE9uMCAxemQwIE9uMCAxemQwIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCAxQzEwIEx6MCAxSXAwIEhYMCAxemQwIE9uMCAxSEIwIElMMCAxd3AwIE9uMCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIFJiMCAxemQwIEx6MCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIElMMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxS3AwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wfDc3ZTRcIixcblx0XHRcdFwiQW1lcmljYS9DYW5jdW58TE1UIENTVCBFU1QgRURUIENEVHw1TC40IDYwIDUwIDQwIDUwfDAxMjMyMzIzNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTJ8LTFVUUcwIDJxMm8wIHlMQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCBMejAgeEIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIERkMHw2M2U0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FyYWNhc3xDTVQgLTA0MzAgLTA0fDRyLkUgNHUgNDB8MDEyMTJ8LTJrVjd3LmsgMjhLTTIuayAxSXdPdSBrcW8wfDI5ZTVcIixcblx0XHRcdFwiQW1lcmljYS9DYXllbm5lfExNVCAtMDQgLTAzfDN0LmsgNDAgMzB8MDEyfC0ybXJ3dS5FIDJnV291LkV8NThlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BhbmFtYXxDTVQgRVNUfDVqLkEgNTB8MDF8LTJ1ZHVFLm98MTVlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0NoaWNhZ298Q1NUIENEVCBFU1QgQ1dUIENQVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMjAxMDEwMTAxMDEwMzQwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgMXdwMCBUWDAgV04wIDFxTDAgMWNOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMTFCMCAxSHowIDE0cDAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCBSQjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDkyZTVcIixcblx0XHRcdFwiQW1lcmljYS9DaGlodWFodWF8TE1UIE1TVCBDU1QgQ0RUIE1EVHw3NC5rIDcwIDYwIDUwIDYwfDAxMjEyMTIzMjMyNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDF8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCAyelFOMCAxbGIwIDE0cDAgMWxiMCAxNHEwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHw4MWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ29zdGFfUmljYXxTSk1UIENTVCBDRFR8NUEuZCA2MCA1MHwwMTIxMjEyMTIxfC0xWGQ2bi5MIDJsdTBuLkwgRGIwIDFLcDAgRGIwIHBSQjAgMTViMCAxa3AwIG1MMHwxMmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3Jlc3RvbnxNU1QgUFNUfDcwIDgwfDAxMHwtMjlEUjAgNDNCMHw1M2UyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VpYWJhfExNVCAtMDQgLTAzfDNJLmsgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd2YuRSBIZExmLkUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgNGExMCBIWDAgMXpkMCBPbjAgMUhCMCBJTDAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXpkMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBJTDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUtwMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMHw1NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvRGFubWFya3NoYXZufExNVCAtMDMgLTAyIEdNVHwxZS5FIDMwIDIwIDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTJhNVdKLmsgMno1ZkouayAxOVUwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIERDMHw4XCIsXG5cdFx0XHRcIkFtZXJpY2EvRGF3c29uX0NyZWVrfFBTVCBQRFQgUFdUIFBQVCBNU1R8ODAgNzAgNzAgNzAgNzB8MDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNHwtMjVUTzAgMWluMCBVR3AwIDh4MTAgaXkwIDNOQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCBNTDB8MTJlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0Rhd3NvbnxZU1QgWURUIFlXVCBZUFQgWUREVCBQU1QgUERUfDkwIDgwIDgwIDgwIDcwIDgwIDcwfDAxMDEwMjMwNDA1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjV8LTI1VE4wIDFpbjAgMW8xMCAxM1YwIFNlcjAgOHgwMCBpejAgTENMMCAxZkEwIGpyQTAgZk5kMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTNlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0RlbnZlcnxNU1QgTURUIE1XVCBNUFR8NzAgNjAgNjAgNjB8MDEwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgbW4wIE9yZDAgOHgyMCBpeDAgTENOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDI2ZTVcIixcblx0XHRcdFwiQW1lcmljYS9EZXRyb2l0fExNVCBDU1QgRVNUIEVXVCBFUFQgRURUfDV3LmIgNjAgNTAgNDAgNDAgNDB8MDEyMzQyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0yQ2dpci5OIHBlcXIuTiAxNTZMMCA4eDQwIGl2MCA2ZmQwIDExejAgWFFwMCAxY0wwIHMxMCAxVnowIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzdlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0VkbW9udG9ufExNVCBNU1QgTURUIE1XVCBNUFR8N3guUSA3MCA2MCA2MCA2MHwwMTIxMjEyMTIxMjEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMnlkNHEuOCBzaGRxLjggMWluMCAxN2QwIGh6MCAyZEIwIDFmejAgMWExMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCBJR04wIDh4MjAgaXgwIDNOQjAgMTF6MCBMRkIwIDFjTDAgM0NwMCAxY0wwIDY2TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTBlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0VpcnVuZXBlfExNVCAtMDUgLTA0fDRELnMgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdmsudyBIZExrLncgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgZFBCMCBPbjAgeVRkMCBkNVgwfDMxZTNcIixcblx0XHRcdFwiQW1lcmljYS9FbF9TYWx2YWRvcnxMTVQgQ1NUIENEVHw1VS5NIDYwIDUwfDAxMjEyMXwtMVhpRzMuYyAyRnZjMy5jIFdMMCAxcU4wIFdMMHwxMWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxMTVQgTVNUIFBTVCBQRFQgUFdUIFBQVHw3TS40IDcwIDgwIDcwIDcwIDcwfDAxMjEyMzI0NTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVVRRTAgNFBYMCA4bU0wIDhsYzAgU04wIDFjTDAgcEhCMCA4M3IwIHpJMCA1TzEwIDFSejAgY09PMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIEJVcDAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyMGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9OZWxzb258UFNUIFBEVCBQV1QgUFBUIE1TVHw4MCA3MCA3MCA3MCA3MHwwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNHwtMjVUTzAgMWluMCBVR3AwIDh4MTAgaXkwIDNOQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDB8MzllMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDQwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBRSTEwIERiMCBSQjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDVUejAgMW8xMCBxTGIwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0YWxlemF8TE1UIC0wMyAtMDJ8MnkgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseHEgSGRMcSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBuc3AwIFdMMCAxdEIwIDV6MCAybU4wIE9uMHwzNGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvR2xhY2VfQmF5fExNVCBBU1QgQURUIEFXVCBBUFR8M1guTSA0MCAzMCAzMCAzMHwwMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJJc0kwLmMgQ3dPMC5jIDFpbjAgVUdwMCA4eDUwIGl1MCBpcTEwIDExejAgSmcxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxOWUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvR29kdGhhYnxMTVQgLTAzIC0wMnwzcS5VIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJhNVV4LjQgMno1ZHguNCAxOVUwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTdlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0dvb3NlX0JheXxOU1QgTkRUIE5TVCBORFQgTldUIE5QVCBBU1QgQURUIEFERFR8M3UuUSAydS5RIDN1IDJ1IDJ1IDJ1IDQwIDMwIDIwfDAxMDIzMjMyMzIzMjMyMzI0NTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyNjc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2ODY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMjVUU3QuOCAxaW4wIERYYjAgMkhiWC44IFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFRYMCAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIDdVSHUgaXR1IDF0QjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgV0wwIDFsZDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIFMxMCBnMHUgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0bjEgMWxiMCAxNHAwIDFuVzAgMTFDMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6Y1ggT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NzZlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0dyYW5kX1R1cmt8S01UIEVTVCBFRFQgQVNUfDU3LmEgNTAgNDAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsMXVRLk8gMkhIQlEuTyAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIDVJcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzN2UyXCIsXG5cdFx0XHRcIkFtZXJpY2EvR3VhdGVtYWxhfExNVCBDU1QgQ0RUfDYyLjQgNjAgNTB8MDEyMTIxMjEyMXwtMjRLaFYuVSAyZWZYVi5VIEFuMCBtdGQwIE56MCBpZkIwIDE3YjAgekRCMCAxMXowfDEzZTVcIixcblx0XHRcdFwiQW1lcmljYS9HdWF5YXF1aWx8UU1UIC0wNSAtMDR8NWUgNTAgNDB8MDEyMXwtMXlWU0sgMnVJTEsgcnowfDI3ZTVcIixcblx0XHRcdFwiQW1lcmljYS9HdXlhbmF8TE1UIC0wMzQ1IC0wMyAtMDR8M1EuRSAzSiAzMCA0MHwwMTIzfC0yZHZVNy5rIDJyNkxRLmsgQnhiZnw4MGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSGFsaWZheHxMTVQgQVNUIEFEVCBBV1QgQVBUfDRlLm8gNDAgMzAgMzAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMklzSEouQSB4enpKLkEgMWRiMCAzSTMwIDFpbjAgM0hYMCBJTDAgMUUxMCBNTDAgMXlOMCBQYjAgMUJkMCBNbjAgMUJkMCBSejAgMXcxMCBYYjAgMXcxMCBMWDAgMXcxMCBYYjAgMXcxMCBMejAgMUMxMCBKejAgMUUxMCBPTDAgMXlOMCBVbjAgMXFwMCBYYjAgMXFwMCAxMVgwIDF3MTAgTHowIDFIQjAgTFgwIDFDMTAgRlgwIDF3MTAgWGIwIDFxcDAgWGIwIDFCQjAgTFgwIDF0ZDAgWGIwIDFxcDAgWGIwIFJmMCA4eDUwIGl1MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgM1FwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDNRcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCA2aTEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzOWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSGF2YW5hfEhNVCBDU1QgQ0RUfDV0LkEgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xTWV1dS5vIDcyenUubyBNTDAgc2xkMCBBbjAgMU5kMCBEYjAgMU5kMCBBbjAgNkVwMCBBbjAgMU5kMCBBbjAgSkRkMCBNbjAgMUFwMCBPbjAgMWZkMCAxMVgwIDFxTjAgV0wwIDF3cDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMTRuMCAxbGQwIDE0TDAgMWtOMCAxNWIwIDFrcDAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFmQjAgMTF6MCAxNHAwIDFuWDAgMTFCMCAxblgwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTRuMCAxbGQwIDE0bjAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDFhMTAgMWluMCAxYTEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMTdjMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTFBMCA2aTAwIFJjMCAxd28wIFUwMCAxdEEwIFJjMCAxd28wIFUwMCAxd28wIFUwMCAxemMwIFUwMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwfDIxZTVcIixcblx0XHRcdFwiQW1lcmljYS9IZXJtb3NpbGxvfExNVCBNU1QgQ1NUIFBTVCBNRFR8N24uUSA3MCA2MCA4MCA2MHwwMTIxMjEyMTMxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgb3RYMCBnbU4wIFAyTjAgMTNWZDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDY0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL0tub3h8Q1NUIENEVCBDV1QgQ1BUIEVTVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDNOQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAzQ24wIDh3cDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgejhvMCAxbzAwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9NYXJlbmdvfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0NTQ1NDU0MTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgZHlOMCAxMXowIDZmZDAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIGpyejAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWQTAgTEEwIDFCWDAgMWU2cDAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvUGV0ZXJzYnVyZ3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0MTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBualgwIFdOMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDNGYjAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMTljbzAgMW8wMCBSZDAgMXpiMCBPbzAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvVGVsbF9DaXR5fENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDU0NTQxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDFvMTAgMTF6MCBnMHAwIDExejAgMW8xMCAxMXowIDFxTDAgV04wIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIGNhTDAgMWNMMCAxY04wIDFjTDAgMXFoZDAgMW8wMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvVmV2YXl8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIGtQQjAgQXduMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFsbmQwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1ZpbmNlbm5lc3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0MTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgZzBwMCAxMXowIDFvMTAgMTF6MCAxcUwwIFdOMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCBjYUwwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFvMDAgUmQwIDF6YjAgT28wIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1dpbmFtYWN8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDEwNTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIGpyejAgMWNMMCAxY04wIDFjTDAgMXFoZDAgMW8wMCBSZDAgMXphMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0ludXZpa3wtMDAgUFNUIFBERFQgTVNUIE1EVHwwIDgwIDYwIDcwIDYwfDAxMjEzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LUZuQTAgdFdVMCAxZkEwIHdQZTAgMnB6MCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzVlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0lxYWx1aXR8LTAwIEVXVCBFUFQgRVNUIEVERFQgRURUIENTVCBDRFR8MCA0MCA0MCA1MCAzMCA0MCA2MCA1MHwwMTIzNDM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzU2NzM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1M3wtMTZLMDAgN25YMCBpdjAgTENMMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFDMCAxblgwIDExQTAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY3ZTJcIixcblx0XHRcdFwiQW1lcmljYS9KYW1haWNhfEtNVCBFU1QgRURUfDU3LmEgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmwxdVEuTyAydU0xUS5PIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MHw5NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSnVuZWF1fFBTVCBQV1QgUFBUIFBEVCBZRFQgWVNUIEFLU1QgQUtEVHw4MCA3MCA3MCA3MCA4MCA5MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDQwMzAzMDM1Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMTdUMjAgOHgxMCBpeTAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY00wIDFjTTAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNvMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDMzZTNcIixcblx0XHRcdFwiQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0MTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIDNGZDAgTmIwIExQZDAgMTF6MCBSQjAgOHgzMCBpdzAgQmIwIDEwTjAgMmJCMCA4aW4wIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIHh6MCBnc28wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZBMCBMQTAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9LZW50dWNreS9Nb250aWNlbGxvfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgU1dwMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQTAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvTGFfUGF6fENNVCBCU1QgLTA0fDR3LkEgM3cuQSA0MHwwMTJ8LTF4MzdyLm8gMTNiMHwxOWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTGltYXxMTVQgLTA1IC0wNHw1OC5BIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjF8LTJ0eUdQLm8gMWJEelAubyB6WDAgMWFOMCAxY0wwIDFjTjAgMWNMMCAxUHJCMCB6WDAgMU8xMCB6WDAgNkdwMCB6WDAgOThwMCB6WDB8MTFlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL0xvc19BbmdlbGVzfFBTVCBQRFQgUFdUIFBQVHw4MCA3MCA3MCA3MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXEwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgxMCBpeTAgNVdwMSAxVmFYIDNkQTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTVlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL01hY2Vpb3xMTVQgLTAzIC0wMnwybS5RIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseEIuOCBIZExCLjggMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgZE1OMCBMejAgOFExMCBXTDAgMXRCMCA1ejAgMm1OMCBPbjB8OTNlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL01hbmFndWF8TU1UIENTVCBFU1QgQ0RUfDVKLmMgNjAgNTAgNTB8MDEyMTMxMzEyMTIxMzEzMXwtMXF1aWUuTSAxeUFNZS5NIDRtbjAgOVVwMCBEejAgMUsxMCBEejAgczNGMCAxS0gwIERCMCA5SW4wIGs4cDAgMTlYMCAxbzMwIDExeTB8MjJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01hbmF1c3xMTVQgLTA0IC0wM3w0MC40IDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x2WC5VIEhkS1guVSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBkUEIwIE9uMHwxOWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWFydGluaXF1ZXxGRk1UIEFTVCBBRFR8NDQuayA0MCAzMHwwMTIxfC0ybVBUVC5FIDJMUGJULkUgMTlYMHwzOWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWF0YW1vcm9zfExNVCBDU1QgQ0RUfDZFIDYwIDUwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFVUUcwIDJGakMwIDFuWDAgaTZwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIFUxMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDQ1ZTRcIixcblx0XHRcdFwiQW1lcmljYS9NYXphdGxhbnxMTVQgTVNUIENTVCBQU1QgTURUfDc1LkUgNzAgNjAgODAgNjB8MDEyMTIxMjEzMTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MXwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIG90WDAgZ21OMCBQMk4wIDEzVmQwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDQ0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9NZW5vbWluZWV8Q1NUIENEVCBDV1QgQ1BUIEVTVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDIzMDEwMTA0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgTENOMCAxZnowIDY0MTAgOUpiMCAxY00wIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw4NWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTWVyaWRhfExNVCBDU1QgRVNUIENEVHw1Vy5zIDYwIDUwIDUwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzF8LTFVUUcwIDJxMm8wIDJoejAgd3UzMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHwxMWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWV0bGFrYXRsYXxQU1QgUFdUIFBQVCBQRFQgQUtTVCBBS0RUfDgwIDcwIDcwIDcwIDkwIDgwfDAxMjAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTE3VDIwIDh4MTAgaXkwIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxaFUxMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTWV4aWNvX0NpdHl8TE1UIE1TVCBDU1QgQ0RUIENXVHw2QS5BIDcwIDYwIDUwIDUwfDAxMjEyMTIzMjMyNDIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIGdFbjAgVFgwIDN4ZDAgSmIwIDZ6QjAgU0wwIGU1ZDAgMTdiMCAxUGZmMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHwyMGU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWlxdWVsb258TE1UIEFTVCAtMDMgLTAyfDNJLkUgNDAgMzAgMjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0ybUtrZi5rIDJMVEFmLmsgZ1ExMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2MWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTW9uY3RvbnxFU1QgQVNUIEFEVCBBV1QgQVBUfDUwIDQwIDMwIDMwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMklzSDAgQ3dOMCAxaW4wIHpBbzAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFLMTAgTHowIDF6QjAgTlgwIDF1MTAgV24wIFMyMCA4eDUwIGl1MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDNDcDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNG4xIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJlWCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY0ZTNcIixcblx0XHRcdFwiQW1lcmljYS9Nb250ZXJyZXl8TE1UIENTVCBDRFR8NkYuZyA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVVFHMCAyRmpDMCAxblgwIGk2cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8NDFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01vbnRldmlkZW98TE1UIE1NVCAtMDQgLTAzIC0wMzMwIC0wMjMwIC0wMiAtMDEzMHwzSS5QIDNJLlAgNDAgMzAgM3UgMnUgMjAgMXV8MDEyMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM1MzUzNjM2MzUzNjM2Mzc1MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzfC0ydFJVZi45IHNWYzAgOGpjZi45IDFkYjAgMWRjdSAxY0x1IDFkY3UgMWNMdSBpcmN1IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMXFNdSBXTHUgMXFNdSBXTHUgMWZBdSAxY0x1IDFvMHUgMTF6dSBOQXUgM2pYdSB6WHUgRHEwdSAxOVh1IHBjdSBqejAgY20xMCAxOVgwIDZ0QjAgMWZidSAzbzB1IGpYMCA0dkIwIHh6MCAzQ3AwIG1tdSAxYTEwIElNdSBEYjAgNGMxMCB1TDAgMU5kMCBBbjAgMVNOMCB1TDAgbXAwIDI4TDAgaVBCMCB1bjAgMVNOMCB4ejAgMXpkMCBMejAgMXpkMCBSYjAgMXpkMCBPbjAgMXdwMCBSYjAgczhwMCAxZkIwIDFpcDAgMTF6MCAxbGQwIDE0bjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDE0bjAgMWxkMCAxNG4wIDFsZDAgMTRuMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MHwxN2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvVG9yb250b3xFU1QgRURUIEVXVCBFUFR8NTAgNDAgNDAgNDB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFIwIDFpbjAgMTFXdSAxbnp1IDFmRDAgV0owIDF3cjAgTmIwIDFBcDAgT24wIDF6ZDAgT24wIDF3cDAgVFgwIDF0QjAgVFgwIDF0QjAgVFgwIDF0QjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDRrTTAgOHg0MCBpdjAgMW8xMCAxMXowIDFuWDAgMTF6MCAxbzEwIDExejAgMW8xMCAxcUwwIDExRDAgMW5YMCAxMUIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY1ZTVcIixcblx0XHRcdFwiQW1lcmljYS9OYXNzYXV8TE1UIEVTVCBFRFR8NTkudSA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJrTnVPLnUgMjZYZE8udSAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDI0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9OZXdfWW9ya3xFU1QgRURUIEVXVCBFUFR8NTAgNDAgNDAgNDB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXQwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCAxYTEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCBSQjAgOHg0MCBpdjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIxZTZcIixcblx0XHRcdFwiQW1lcmljYS9OaXBpZ29ufEVTVCBFRFQgRVdUIEVQVHw1MCA0MCA0MCA0MHwwMTAxMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFIwIDFpbjAgUm5iMCAzamUwIDh4NDAgaXYwIDE5eU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNmUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9tZXxOU1QgTldUIE5QVCBCU1QgQkRUIFlTVCBBS1NUIEFLRFR8YjAgYTAgYTAgYjAgYTAgOTAgOTAgODB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1NYMCA4d1cwIGlCMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbDAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzOGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9yb25oYXxMTVQgLTAyIC0wMXwyOS5FIDIwIDEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhPLmsgSGRLTy5rIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIG5zcDAgV0wwIDF0QjAgMkwwIDJwQjAgT24wfDMwZTJcIixcblx0XHRcdFwiQW1lcmljYS9Ob3J0aF9EYWtvdGEvQmV1bGFofE1TVCBNRFQgTVdUIE1QVCBDU1QgQ0RUfDcwIDYwIDYwIDYwIDYwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9vMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9ydGhfRGFrb3RhL0NlbnRlcnxNU1QgTURUIE1XVCBNUFQgQ1NUIENEVHw3MCA2MCA2MCA2MCA2MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRvMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcnRoX0Rha290YS9OZXdfU2FsZW18TVNUIE1EVCBNV1QgTVBUIENTVCBDRFR8NzAgNjAgNjAgNjAgNjAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRvMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9PamluYWdhfExNVCBNU1QgQ1NUIENEVCBNRFR8NlYuRSA3MCA2MCA1MCA2MHwwMTIxMjEyMzIzMjQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgMnpRTjAgMWxiMCAxNHAwIDFsYjAgMTRxMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGFuZ25pcnR1bmd8LTAwIEFTVCBBV1QgQVBUIEFERFQgQURUIEVEVCBFU1QgQ1NUIENEVHwwIDQwIDMwIDMwIDIwIDMwIDQwIDUwIDYwIDUwfDAxMjMxNDE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE2NzY3Njc2NzY4OTc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2N3wtMVhpTTAgUG5HMCA4eDUwIGl1MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxbzAwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUMwIDFuWDAgMTFBMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTRlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL1BhcmFtYXJpYm98TE1UIFBNVCBQTVQgLTAzMzAgLTAzfDNFLkUgM0UuUSAzRS5BIDN1IDMwfDAxMjM0fC0ybkRVai5rIFdxbzAuYyBxYW5YLkkgMXlWWE4ub3wyNGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUGhvZW5peHxNU1QgTURUIE1XVHw3MCA2MCA2MHwwMTAxMDIwMjAxMHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA0QWwxIEFwMCAxZGIwIFNXcVggMWNMMHw0MmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydC1hdS1QcmluY2V8UFBNVCBFU1QgRURUfDROIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yOFJIYiAyRm5NYiAxOVgwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgaTZuMCAxblgwIDExQjAgMW5YMCBkNDMwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgM2lOMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIzZTVcIixcblx0XHRcdFwiQW1lcmljYS9SaW9fQnJhbmNvfExNVCAtMDUgLTA0fDR2LmMgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZzLk0gSGRMcy5NIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIE5CZDAgZDVYMHwzMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydG9fVmVsaG98TE1UIC0wNCAtMDN8NGYuQSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZJLm8gSGRLSS5vIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwfDM3ZTRcIixcblx0XHRcdFwiQW1lcmljYS9QdWVydG9fUmljb3xBU1QgQVdUIEFQVHw0MCAzMCAzMHwwMTIwfC0xN2xVMCA3WFQwIGl1MHwyNGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUHVudGFfQXJlbmFzfFNNVCAtMDUgLTA0IC0wM3w0Ry5LIDUwIDQwIDMwfDAxMDIwMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTJxMmpoLmUgZkpBaC5lIDVrbkcuSyAxVnpoLmUgalJBRy5LIDFwYmguZSAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCBuSFgwIG9wMCBibHowIGtvMCBRZW8wIFdMMCAxemQwIE9uMCAxaXAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFsZDAgMTRuMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWZCMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCA0Nm4wIEFwMFwiLFxuXHRcdFx0XCJBbWVyaWNhL1JhaW55X1JpdmVyfENTVCBDRFQgQ1dUIENQVHw2MCA1MCA1MCA1MHwwMTAxMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFEwIDFpbjAgUm5iMCAzamUwIDh4MzAgaXcwIDE5eU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw4NDJcIixcblx0XHRcdFwiQW1lcmljYS9SYW5raW5fSW5sZXR8LTAwIENTVCBDRERUIENEVCBFU1R8MCA2MCA0MCA1MCA1MHwwMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTM0MzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzF8LXZEYzAga2V1MCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDI2ZTJcIixcblx0XHRcdFwiQW1lcmljYS9SZWNpZmV8TE1UIC0wMyAtMDJ8MmouQSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x4RS5vIEhkTEUubyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBuc3AwIFdMMCAxdEIwIDJMMCAycEIwIE9uMHwzM2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVnaW5hfExNVCBNU1QgTURUIE1XVCBNUFQgQ1NUfDZXLkEgNzAgNjAgNjAgNjAgNjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE1fC0yQUQ1MS5vIHVIZTEubyAxaW4wIHMyTDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCA2Nk4wIDFjTDAgMWNOMCAxOVgwIDFmQjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIE0zMCA4eDIwIGl4MCAxaXAwIDFjTDAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDNOQjAgMWNMMCAxY04wfDE5ZTRcIixcblx0XHRcdFwiQW1lcmljYS9SZXNvbHV0ZXwtMDAgQ1NUIENERFQgQ0RUIEVTVHwwIDYwIDQwIDUwIDUwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMXwtU25BMCBHV1MwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjI5XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudGFyZW18TE1UIC0wNCAtMDN8M0MuTSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yZ2x3bC5jIEhkTGwuYyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBOQmQwfDIxZTRcIixcblx0XHRcdFwiQW1lcmljYS9TYW50aWFnb3xTTVQgLTA1IC0wNCAtMDN8NEcuSyA1MCA0MCAzMHwwMTAyMDIxMjEyMTIxMjEyMTIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTJxMmpoLmUgZkpBaC5lIDVrbkcuSyAxVnpoLmUgalJBRy5LIDFwYmguZSAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCBuSFgwIG9wMCA5QnowIGpiMCAxb04wIGtvMCBRZW8wIFdMMCAxemQwIE9uMCAxaXAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFsZDAgMTRuMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWZCMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCA0Nm4wIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMHw2MmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudG9fRG9taW5nb3xTRE1UIEVTVCBFRFQgLTA0MzAgQVNUfDRFIDUwIDQwIDR1IDQwfDAxMjEzMTMxMzEzMTMxNDE0fC0xdHRqayAxbEpNayBNbjAgNnNwMCBMYnUgMUNvdSB5THUgMVJBdSB3THUgMVFNdSB4enUgMVEwdSB4WHUgMVBBdSAxM2pCMCBlMDB8MjllNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Nhb19QYXVsb3xMTVQgLTAzIC0wMnwzNi5zIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd1IudyBIZEtSLncgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcFRkMCBQWDAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgMUMxMCBMejAgMUlwMCBIWDAgMXpkMCBPbjAgMUhCMCBJTDAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXpkMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBJTDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUtwMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMHwyMGU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2NvcmVzYnlzdW5kfExNVCAtMDIgLTAxICswMHwxci5RIDIwIDEwIDB8MDEyMTMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMmE1V3cuOCAyejVldy44IDFhMDAgMWNLMCAxY0wwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0NTJcIixcblx0XHRcdFwiQW1lcmljYS9TaXRrYXxQU1QgUFdUIFBQVCBQRFQgWVNUIEFLU1QgQUtEVHw4MCA3MCA3MCA3MCA5MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDM0NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NXwtMTdUMjAgOHgxMCBpeTAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNvMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDkwZTJcIixcblx0XHRcdFwiQW1lcmljYS9TdF9Kb2huc3xOU1QgTkRUIE5TVCBORFQgTldUIE5QVCBORERUfDN1LlEgMnUuUSAzdSAydSAydSAydSAxdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMjMyMzIzMjMyMzIzMjMyNDUyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyNjIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjhvaXQuOCAxNEwwIDFuQjAgMWluMCAxZ20wIER6MCAxSkIwIDFjTDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxME8wIGVLWC44IDE5WDAgMWlxMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBUWDAgMXRCMCBXTDAgMXFOMCBXTDAgMXFOMCA3VUh1IGl0dSAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFdMMCAxbGQwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNG4xIDFsYjAgMTRwMCAxblcwIDExQzAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemNYIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDExZTRcIixcblx0XHRcdFwiQW1lcmljYS9Td2lmdF9DdXJyZW50fExNVCBNU1QgTURUIE1XVCBNUFQgQ1NUfDdiLmsgNzAgNjAgNjAgNjAgNjB8MDEyMTM0MTIxMjEyMTIxMjEyMTIxMjE1fC0yQUQ0TS5FIHVIZE0uRSAxaW4wIFVHcDAgOHgyMCBpeDAgMW8xMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIGlzTjAgMWNMMCAzQ3AwIDFjTDAgMWNOMCAxMXowIDFxTjAgV0wwIHBNcDB8MTZlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1RlZ3VjaWdhbHBhfExNVCBDU1QgQ0RUfDVNLlEgNjAgNTB8MDEyMTIxMjF8LTFXR0diLjggMkVUY2IuOCBXTDAgMXFOMCBXTDAgR1JkMCBBTDB8MTFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1RodWxlfExNVCBBU1QgQURUfDR6LjggNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYTVUby5RIDMxTkJvLlEgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NTZcIixcblx0XHRcdFwiQW1lcmljYS9UaHVuZGVyX0JheXxDU1QgRVNUIEVXVCBFUFQgRURUfDYwIDUwIDQwIDQwIDQwfDAxMjMxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDF8LTJxNVMwIDFpYU4wIDh4NDAgaXYwIFhOQjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDNDcDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDExZTRcIixcblx0XHRcdFwiQW1lcmljYS9WYW5jb3V2ZXJ8UFNUIFBEVCBQV1QgUFBUfDgwIDcwIDcwIDcwfDAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VE8wIDFpbjAgVUdwMCA4eDEwIGl5MCAxbzEwIDE3YjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIzZTVcIixcblx0XHRcdFwiQW1lcmljYS9XaGl0ZWhvcnNlfFlTVCBZRFQgWVdUIFlQVCBZRERUIFBTVCBQRFR8OTAgODAgODAgODAgNzAgODAgNzB8MDEwMTAyMzA0MDU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NXwtMjVUTjAgMWluMCAxbzEwIDEzVjAgU2VyMCA4eDAwIGl6MCBMQ0wwIDFmQTAgM05BMCB2cmQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvV2lubmlwZWd8Q1NUIENEVCBDV1QgQ1BUfDYwIDUwIDUwIDUwfDAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFJaTAgV0wwIDNORDAgMWluMCBKYXAwIFJiMCBhQ04wIDh4MzAgaXcwIDF0QjAgMTF6MCAxaXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcmQwIDEwTDAgMW9wMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFjTDAgMWNOMCAxMXowIDZpMTAgV0wwIDZpMTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjZlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1lha3V0YXR8WVNUIFlXVCBZUFQgWURUIEFLU1QgQUtEVHw5MCA4MCA4MCA4MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMTdUMTAgOHgwMCBpejAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNuMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY0MlwiLFxuXHRcdFx0XCJBbWVyaWNhL1llbGxvd2tuaWZlfC0wMCBNU1QgTVdUIE1QVCBNRERUIE1EVHwwIDcwIDYwIDYwIDUwIDYwfDAxMjMxNDE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MXwtMXBkQTAgaGl4MCA4eDIwIGl4MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTllM1wiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL0Nhc2V5fC0wMCArMDggKzExfDAgLTgwIC1iMHwwMTIxMjEyMXwtMnEwMCAxRGpTMCBUOTAgNDBQMCBLTDAgYmx6MCAzbTEwfDEwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvRGF2aXN8LTAwICswNyArMDV8MCAtNzAgLTUwfDAxMDEyMTIxfC12eW8wIGlYdDAgYWxqMCAxRDd2MCBWQjAgM1duMCBLTjB8NzBcIixcblx0XHRcdFwiQW50YXJjdGljYS9EdW1vbnREVXJ2aWxsZXwtMDAgKzEwfDAgLWEwfDAxMDF8LVUwbzAgY2ZxMCBiRm0wfDgwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvTWFjcXVhcmllfEFFU1QgQUVEVCAtMDAgKzExfC1hMCAtYjAgMCAtYjB8MDEwMjAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxM3wtMjlFODAgMTlYMCA0U0wwIDFheXkwIEx2czAgMWNNMCAxbzAwIFJjMCAxd28wIFJjMCAxd28wIFUwMCAxd28wIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMXFNMCBXTTAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXdvMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMUEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDExQTAgMW8wMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMHwxXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvTWF3c29ufC0wMCArMDYgKzA1fDAgLTYwIC01MHwwMTJ8LUNFbzAgMmZ5azB8NjBcIixcblx0XHRcdFwiUGFjaWZpYy9BdWNrbGFuZHxOWk1UIE5aU1QgTlpTVCBOWkRUfC1idSAtY3UgLWMwIC1kMHwwMTAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyM3wtMUdDVnUgTHowIDF0QjAgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFvMHUgMTRudSAxbGN1IDE0bnUgMWxjdSAxbGJ1IDExQXUgMW5YdSAxMUF1IDFuWHUgMTFBdSAxblh1IDExQXUgMW5YdSAxMUF1IDFxTHUgV011IDFxTHUgMTFBdSAxbjFidSBJTTAgMUMwMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXFNMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMHwxNGU1XCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvUGFsbWVyfC0wMCAtMDMgLTA0IC0wMnwwIDMwIDQwIDIwfDAxMjEyMTIxMjEyMTMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LWNhbzAgbkQwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAganNOMCAxNE4wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFmQjAgMTlYMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxaXAwIDFmejAgMWZCMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMW8xMCAxOVgwIDFmQjAgMW5YMCBHMTAgMUVMMCBPcDAgMXpiMCBSZDAgMXduMCBSZDAgNDZuMCBBcDB8NDBcIixcblx0XHRcdFwiQW50YXJjdGljYS9Sb3RoZXJhfC0wMCAtMDN8MCAzMHwwMXxnT28wfDEzMFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1N5b3dhfC0wMCArMDN8MCAtMzB8MDF8LXZzMDB8MjBcIixcblx0XHRcdFwiQW50YXJjdGljYS9Ucm9sbHwtMDAgKzAwICswMnwwIDAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfDFwdW8wIGhkMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1Zvc3Rva3wtMDAgKzA2fDAgLTYwfDAxfC10akEwfDI1XCIsXG5cdFx0XHRcIkV1cm9wZS9Pc2xvfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXdNMCBRbTAgVzZvMCA1cGYwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgd0pjMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMXFNMCBXTTAgenBjMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjJlNFwiLFxuXHRcdFx0XCJBc2lhL1JpeWFkaHxMTVQgKzAzfC0zNi5RIC0zMHwwMXwtVHZENi5RfDU3ZTVcIixcblx0XHRcdFwiQXNpYS9BbG1hdHl8TE1UICswNSArMDYgKzA3fC01Ny5NIC01MCAtNjAgLTcwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjNTcuTSBlVW83Lk0gMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTB8MTVlNVwiLFxuXHRcdFx0XCJBc2lhL0FtbWFufExNVCBFRVQgRUVTVHwtMm4uSSAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTF5VzJuLkkgMUhpTW4uSSBLTDAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDFkejAgMWNwMCAxMWIwIDFvcDAgMTFiMCBmTzEwIDFkYjAgMWUxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMXBkMCAxMG4wIDFsZDAgMTRuMCAxaEIwIDE1YjAgMWlwMCAxOVgwIDFjTjAgMWNMMCAxY04wIDE3YjAgMWxkMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFTbzAgeTAwIDFmYzAgMWRjMCAxY28wIDFkYzAgMWNNMCAxY00wIDFjTTAgMW8wMCAxMUEwIDFsYzAgMTdjMCAxY00wIDFjTTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDRiWDAgRGQwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMHwyNWU1XCIsXG5cdFx0XHRcIkFzaWEvQW5hZHlyfExNVCArMTIgKzEzICsxNCArMTF8LWJOLlUgLWMwIC1kMCAtZTAgLWIwfDAxMjMyMTIxMjEyMTIxMjEyMTIxMjE0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTQxfC0xUGNiTi5VIGVVbk4uVSAyM0NMMCAxZGIwIDJxMTAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMHwxM2UzXCIsXG5cdFx0XHRcIkFzaWEvQXF0YXV8TE1UICswNCArMDUgKzA2fC0zbC40IC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMVBjM2wuNCBlVW5sLjQgMjRQWDAgMnBYMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTB8MTVlNFwiLFxuXHRcdFx0XCJBc2lhL0FxdG9iZXxMTVQgKzA0ICswNSArMDZ8LTNNLkUgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjM00uRSBlVW5NLkUgMjNDTDAgM0RiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMHwyN2U0XCIsXG5cdFx0XHRcIkFzaWEvQXNoZ2FiYXR8TE1UICswNCArMDUgKzA2fC0zUi53IC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTFQYzNSLncgZVVuUi53IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTB8NDFlNFwiLFxuXHRcdFx0XCJBc2lhL0F0eXJhdXxMTVQgKzAzICswNSArMDYgKzA0fC0zci5JIC0zMCAtNTAgLTYwIC00MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzI0MjMyMzIzMjMyMzIzMjMyNDI0MjQyNDI0MnwtMVBjM3IuSSBlVW9yLkkgMjRQVzAgMnBYMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwXCIsXG5cdFx0XHRcIkFzaWEvQmFnaGRhZHxCTVQgKzAzICswNHwtMlYuQSAtMzAgLTQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCZVYuQSAyQUNuVi5BIDExYjAgMWNwMCAxZHowIDFkZDAgMWRiMCAxY04wIDFjcDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxZGUwIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxZGMwIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwfDY2ZTVcIixcblx0XHRcdFwiQXNpYS9RYXRhcnxMTVQgKzA0ICswM3wtM3EuOCAtNDAgLTMwfDAxMnwtMjFKZnEuOCAyN0JYcS44fDk2ZTRcIixcblx0XHRcdFwiQXNpYS9CYWt1fExNVCArMDMgKzA0ICswNXwtM2oubyAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjM2oubyAxalVvai5vIFdDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIDFjTTAgOUplMCAxbzAwIDExejAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDI3ZTVcIixcblx0XHRcdFwiQXNpYS9CYW5na29rfEJNVCArMDd8LTZHLjQgLTcwfDAxfC0yMThTRy40fDE1ZTZcIixcblx0XHRcdFwiQXNpYS9CYXJuYXVsfExNVCArMDYgKzA3ICswOHwtNXogLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjFTNXogcENueiAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBwOTAgTEUwIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmQwXCIsXG5cdFx0XHRcIkFzaWEvQmVpcnV0fEVFVCBFRVNUfC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yMWFxMCAxb24wIDE0MTAgMWRiMCAxOUIwIDFpbjAgMWlwMCBXTDAgMWxRcDAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIDExYjAgcTZOMCBFbjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCAxb3AwIDExYjAgZEExMCAxN2IwIDFpTjAgMTdiMCAxaU4wIDE3YjAgMWlOMCAxN2IwIDF2QjAgU0wwIDFtcDAgMTN6MCAxaU4wIDE3YjAgMWlOMCAxN2IwIDFqZDAgMTJuMCAxYTEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwfDIyZTVcIixcblx0XHRcdFwiQXNpYS9CaXNoa2VrfExNVCArMDUgKzA2ICswN3wtNFcubyAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTFQYzRXLm8gZVVuVy5vIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMmUwMCAxdFgwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFjUHUgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMHw4N2U0XCIsXG5cdFx0XHRcIkFzaWEvQnJ1bmVpfExNVCArMDczMCArMDh8LTdELkUgLTd1IC04MHwwMTJ8LTFLSVRELkUgZ0RjOS5FfDQyZTRcIixcblx0XHRcdFwiQXNpYS9Lb2xrYXRhfE1NVCBJU1QgKzA2MzB8LTVsLmEgLTV1IC02dXwwMTIxMjF8LTJ6T3RsLmEgMXIyTFAuYSAxdW4wIEhCMCA3elgwfDE1ZTZcIixcblx0XHRcdFwiQXNpYS9DaGl0YXxMTVQgKzA4ICswOSArMTB8LTd4LlEgLTgwIC05MCAtYTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzEyfC0yMVE3eC5RIHBBbnguUSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmUwfDMzZTRcIixcblx0XHRcdFwiQXNpYS9DaG9pYmFsc2FufExNVCArMDcgKzA4ICsxMCArMDl8LTdDIC03MCAtODAgLWEwIC05MHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDI0MjQyfC0yQVBIQyAyVWtvQyBjS24wIDFkYTAgMWRkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgNmhEMCAxMXowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgM0RiMCBoMWYwIDFjSjAgMWNQMCAxY0owfDM4ZTNcIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxDU1QgQ0RUfC04MCAtOTB8MDEwMTAxMDEwMTAxMDEwMTB8LTFjMUkwIExYMCAxNnAwIDFqejAgMU15cDAgUmIwIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejB8MjNlNlwiLFxuXHRcdFx0XCJBc2lhL0NvbG9tYm98TU1UICswNTMwICswNiArMDYzMHwtNWoudyAtNXUgLTYwIC02dXwwMTIzMTMyMXwtMnpPdGoudyAxckZiTi53IDF6enUgN0FwdSAyM2R6MCAxMXp1IG4zY3V8MjJlNVwiLFxuXHRcdFx0XCJBc2lhL0RoYWthfEhNVCArMDYzMCArMDUzMCArMDYgKzA3fC01Ui5rIC02dSAtNXUgLTYwIC03MHwwMTIxMzQzfC0xOExGUi5rIDF1bm4uayBIQjAgbTZuMCAya3hidSAxaTAwfDE2ZTZcIixcblx0XHRcdFwiQXNpYS9EYW1hc2N1c3xMTVQgRUVUIEVFU1R8LTJwLmMgLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjFKZXAuYyBIZXAuYyAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDF4UkIwIDExWDAgMW9OMCAxMEwwIDFwQjAgMTFiMCAxb04wIDEwTDAgMW1wMCAxM1gwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIE5iMCAxQU4wIE5iMCBiY3AwIDE5WDAgMWdwMCAxOVgwIDNsZDAgMXhYMCBWZDAgMUJ6MCBTcDAgMXZYMCAxMHAwIDFkejAgMWNOMCAxY0wwIDFkYjAgMWRiMCAxZzEwIDFhbjAgMWFwMCAxZGIwIDFmZDAgMWRiMCAxY04wIDFkYjAgMWRkMCAxZGIwIDFjcDAgMWR6MCAxYzEwIDFkWDAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMTl6MCAxZkIwIDFxTDAgMTFCMCAxb24wIFdwMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMHwyNmU1XCIsXG5cdFx0XHRcIkFzaWEvRGlsaXxMTVQgKzA4ICswOXwtOG0uayAtODAgLTkwfDAxMjEyfC0ybGU4bS5rIDFkblhtLmsgMW5mQTAgWGxkMHwxOWU0XCIsXG5cdFx0XHRcIkFzaWEvRHViYWl8TE1UICswNHwtM0YuYyAtNDB8MDF8LTIxSmZGLmN8MzllNVwiLFxuXHRcdFx0XCJBc2lhL0R1c2hhbmJlfExNVCArMDUgKzA2ICswN3wtNHouYyAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjF8LTFQYzR6LmMgZVVuei5jIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMmhCMHw3NmU0XCIsXG5cdFx0XHRcIkFzaWEvRmFtYWd1c3RhfExNVCBFRVQgRUVTVCArMDN8LTJmLk0gLTIwIC0zMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVZjMmYuTSAyYTNjZi5NIDFjTDAgMXFwMCBYejAgMTlCMCAxOVgwIDFmQjAgMWRiMCAxY3AwIDFjTDAgMWZCMCAxOVgwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxbzMwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDE1VTAgMktzMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJBc2lhL0dhemF8RUVUIEVFU1QgSVNUIElEVHwtMjAgLTMwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xYzJxMCA1UmIwIDEwcjAgMXB4MCAxME4wIDFwejAgMTZwMCAxakIwIDE2cDAgMWp4MCBwQmQwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIGRXMCBoZkIwIERiMCAxZkIwIFJiMCBucEIwIDExejAgMUMxMCBJTDAgMXMxMCAxMG4wIDFvMTAgV0wwIDF6ZDAgT24wIDFsZDAgMTF6MCAxbzEwIDE0bjAgMW8xMCAxNG4wIDFuZDAgMTJuMCAxbmQwIFh6MCAxcTEwIDEybjAgTTEwIEMwMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMW8wMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDE3YzAgMWlvMCAxOE4wIDFiejAgMTl6MCAxZ3AwIDE2MTAgMWlMMCAxMXowIDFvMTAgMTRvMCAxbEExIFNLWCAxeGQxIE1LWCAxQU4wIDFhMDAgMWZBMCAxY0wwIDFjTjAgMW5YMCAxMjEwIDFuejAgMTIyMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMHwxOGU1XCIsXG5cdFx0XHRcIkFzaWEvSGVicm9ufEVFVCBFRVNUIElTVCBJRFR8LTIwIC0zMCAtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xYzJxMCA1UmIwIDEwcjAgMXB4MCAxME4wIDFwejAgMTZwMCAxakIwIDE2cDAgMWp4MCBwQmQwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIGRXMCBoZkIwIERiMCAxZkIwIFJiMCBucEIwIDExejAgMUMxMCBJTDAgMXMxMCAxMG4wIDFvMTAgV0wwIDF6ZDAgT24wIDFsZDAgMTF6MCAxbzEwIDE0bjAgMW8xMCAxNG4wIDFuZDAgMTJuMCAxbmQwIFh6MCAxcTEwIDEybjAgTTEwIEMwMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMW8wMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDE3YzAgMWlvMCAxOE4wIDFiejAgMTl6MCAxZ3AwIDE2MTAgMWlMMCAxMkwwIDFtTjAgMTRvMCAxbGMwIFRiMCAxeGQxIE1LWCBiQjAgY24wIDFjTjAgMWEwMCAxZkEwIDFjTDAgMWNOMCAxblgwIDEyMTAgMW56MCAxMjIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwfDI1ZTRcIixcblx0XHRcdFwiQXNpYS9Ib19DaGlfTWluaHxMTVQgUExNVCArMDcgKzA4ICswOXwtNzYuRSAtNzYudSAtNzAgLTgwIC05MHwwMTIzNDIzMjMyfC0yeUM3Ni5FIGJLMDAuYSAxaDdiNi51IDVsejAgMThvMCAzT3EwIGs1YjAgYVcwMCBCQU0wfDkwZTVcIixcblx0XHRcdFwiQXNpYS9Ib25nX0tvbmd8TE1UIEhLVCBIS1NUIEpTVHwtN0EuRyAtODAgLTkwIC05MHwwMTIxMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yQ0ZIQS5HIDFzRVA2LkcgMWNMMCB5bHUgOTNYMCAxcVF1IDF0WDAgUmQwIDFJbjAgTkIwIDFjTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxa0wwIDE0TjAgMW5YMCBVMTAgMXR6MCBVMTAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXduMCBSZDAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCAxN2QwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCBzMTAgMVZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDZmZDAgMTRuMHw3M2U1XCIsXG5cdFx0XHRcIkFzaWEvSG92ZHxMTVQgKzA2ICswNyArMDh8LTY2LkEgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yQVBHNi5BIDJVa282LkEgY0tuMCAxZGIwIDFkZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDZoRDAgMTF6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIGtFcDAgMWNKMCAxY1AwIDFjSjB8ODFlM1wiLFxuXHRcdFx0XCJBc2lhL0lya3V0c2t8SU1UICswNyArMDggKzA5fC02Vi41IC03MCAtODAgLTkwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yMXpHVi41IHBqWFYuNSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHw2MGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9Jc3RhbmJ1bHxJTVQgRUVUIEVFU1QgKzA0ICswM3wtMVUuVSAtMjAgLTMwIC00MCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjM0MzQzNDM0MzQyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTI0fC0yb2dOVS5VIGR6elUuVSAxMWIwIDh0QjAgMW9uMCAxNDEwIDFkYjAgMTlCMCAxaW4wIDNSZDAgVW4wIDFvTjAgMTFiMCB6U3AwIENMMCBtTjAgMVZ6MCAxZ04wIDFwejAgNVJkMCAxZnowIDF5cDAgTUwwIDFrcDAgMTdiMCAxaXAwIDE3YjAgMWZCMCAxOVgwIDFqQjAgMThMMCAxaXAwIDE3ejAgcWRkMCB4WDAgM1MxMCBUejAgZEExMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMXplMCAxMUIwIFdNMCAxcU8wIFdJMCAxblgwIDFyQjAgMTBMMCAxMUIwIDFpbjAgMTdkMCAxaW4wIDJwWDAgMTlFMCAxZlUwIDE2UTAgMWlJMCAxNlEwIDFpSTAgMVZkMCBwYjAgM0twMCAxNG8wIDFkZTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV08wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgWGMwIDFxbzAgV00wIDFxTTAgMTFBMCAxbzAwIDEyMDAgMW5BMCAxMUEwIDF0QTAgVTAwIDE1dzB8MTNlNlwiLFxuXHRcdFx0XCJBc2lhL0pha2FydGF8Qk1UICswNzIwICswNzMwICswOSArMDggV0lCfC03Ny5jIC03ayAtN3UgLTkwIC04MCAtNzB8MDEyMzI0MjV8LTFRMFRrIGx1TTAgbVB6TyA4dld1IDZrcHUgNFBYdSB4aGN1fDMxZTZcIixcblx0XHRcdFwiQXNpYS9KYXlhcHVyYXxMTVQgKzA5ICswOTMwIFdJVHwtOW0uTSAtOTAgLTl1IC05MHwwMTIzfC0xdXU5bS5NIHNNTW0uTSBMNG51fDI2ZTRcIixcblx0XHRcdFwiQXNpYS9KZXJ1c2FsZW18Sk1UIElTVCBJRFQgSUREVHwtMmsuRSAtMjAgLTMwIC00MHwwMTIxMjEyMTIxMjEzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCZWsuRSBTeU1rLkUgNVJiMCAxMHIwIDFweDAgMTBOMCAxcHowIDE2cDAgMWpCMCAxNnAwIDFqeDAgM0xCMCBFbTAgb3IwIDFjbjAgMWRCMCAxNm4wIDEwTzAgMWphMCAxdEMwIDE0bzAgMWNNMCAxYTAwIDExQTAgMU5hMCBBbjAgMU1QMCBBSjAgMUtwMCBMQzAgMW9vMCBXbDAgRVFOMCBEYjAgMWZCMCBSYjAgbnBCMCAxMXowIDFDMTAgSUwwIDFzMTAgMTBuMCAxbzEwIFdMMCAxemQwIE9uMCAxbGQwIDExejAgMW8xMCAxNG4wIDFvMTAgMTRuMCAxbmQwIDEybjAgMW5kMCBYejAgMXExMCAxMm4wIDFoQjAgMWRYMCAxZXAwIDFhTDAgMWVOMCAxN1gwIDFuZjAgMTF6MCAxdEIwIDE5VzAgMWUxMCAxN2IwIDFlcDAgMWdMMCAxOE4wIDFmejAgMWVOMCAxN2IwIDFncTAgMWduMCAxOWQwIDFkejAgMWMxMCAxN1gwIDFoQjAgMWduMCAxOWQwIDFkejAgMWMxMCAxN1gwIDFrcDAgMWR6MCAxYzEwIDFhTDAgMWVOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwfDgxZTRcIixcblx0XHRcdFwiQXNpYS9LYWJ1bHwrMDQgKzA0MzB8LTQwIC00dXwwMXwtMTBRczB8NDZlNVwiLFxuXHRcdFx0XCJBc2lhL0thbWNoYXRrYXxMTVQgKzExICsxMiArMTN8LWF5LkEgLWIwIC1jMCAtZDB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyfC0xU0xLeS5BIGl2WHkuQSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wfDE4ZTRcIixcblx0XHRcdFwiQXNpYS9LYXJhY2hpfExNVCArMDUzMCArMDYzMCArMDUgUEtUIFBLU1R8LTRzLmMgLTV1IC02dSAtNTAgLTUwIC02MHwwMTIxMzQ1NDU0NTR8LTJ4b3NzLmMgMXFPS1cuYyA3elgwIGV1cDAgTHFNdSAxZnkwMCAxY0wwIGRLMTAgMTFiMCAxNjEwIDFqWDB8MjRlNlwiLFxuXHRcdFx0XCJBc2lhL1VydW1xaXxMTVQgKzA2fC01Ty5rIC02MHwwMXwtMUdndE8ua3wzMmU1XCIsXG5cdFx0XHRcIkFzaWEvS2F0aG1hbmR1fExNVCArMDUzMCArMDU0NXwtNUYuZyAtNXUgLTVKfDAxMnwtMjFKaEYuZyAyRUdNYi5nfDEyZTVcIixcblx0XHRcdFwiQXNpYS9LaGFuZHlnYXxMTVQgKzA4ICswOSArMTAgKzExfC05Mi5kIC04MCAtOTAgLWEwIC1iMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzQzNDM0MzQzNDM0MzQzNDMyfC0yMVE5Mi5kIHBBcDIuZCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIHFLMCB5TjAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMTdWMCA3ekQwfDY2ZTJcIixcblx0XHRcdFwiQXNpYS9LcmFzbm95YXJza3xMTVQgKzA2ICswNyArMDh8LTZiLnEgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTIxSGliLnEgcHJBYi5xIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDEwZTVcIixcblx0XHRcdFwiQXNpYS9LdWFsYV9MdW1wdXJ8U01UICswNyArMDcyMCArMDczMCArMDkgKzA4fC02VC5wIC03MCAtN2sgLTd1IC05MCAtODB8MDEyMzQzNXwtMkJnNlQucCAxN2FuVC5wIGw1WEUgMTdiTyA4Rnl1IDFzbzF1fDcxZTVcIixcblx0XHRcdFwiQXNpYS9LdWNoaW5nfExNVCArMDczMCArMDggKzA4MjAgKzA5fC03bC5rIC03dSAtODAgLThrIC05MHwwMTIzMjMyMzIzMjMyMzIzMjQyfC0xS0lUbC5rIGdEYlAuayA2eW51IEFuRSAxTzBrIEFuRSAxTkFrIEFuRSAxTkFrIEFuRSAxTkFrIEFuRSAxTzBrIEFuRSAxTkFrIEFuRSBwQWsgOEZ6MHwxM2U0XCIsXG5cdFx0XHRcIkFzaWEvTWFjYXV8TE1UIENTVCBDRFR8LTd5LmsgLTgwIC05MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsZTgwIDFYTzN1IDF3bjAgUmQwIDF3bjAgUjl1IDF3cXUgVTEwIDF0ejAgVFZ1IDF0ejAgMTdndSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNKdSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjT3UgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNKdSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDB8NTdlNFwiLFxuXHRcdFx0XCJBc2lhL01hZ2FkYW58TE1UICsxMCArMTEgKzEyfC1hMy5jIC1hMCAtYjAgLWMwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMxMnwtMVBjYTMuYyBlVW8zLmMgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM0NxMHw5NWUzXCIsXG5cdFx0XHRcIkFzaWEvTWFrYXNzYXJ8TE1UIE1NVCArMDggKzA5IFdJVEF8LTdWLkEgLTdWLkEgLTgwIC05MCAtODB8MDEyMzR8LTIxSmpWLkEgdmZjMCBteUxWLkEgOE1MMHwxNWU1XCIsXG5cdFx0XHRcIkFzaWEvTWFuaWxhfCswOCArMDl8LTgwIC05MHwwMTAxMDEwMTB8LTFrSkkwIEFMMCBjSzEwIDY1WDAgbVhCMCB2WDAgVksxMCAxZGIwfDI0ZTZcIixcblx0XHRcdFwiQXNpYS9OaWNvc2lhfExNVCBFRVQgRUVTVHwtMmQucyAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVmMyZC5zIDJhM2NkLnMgMWNMMCAxcXAwIFh6MCAxOUIwIDE5WDAgMWZCMCAxZGIwIDFjcDAgMWNMMCAxZkIwIDE5WDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFvMzAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzMmU0XCIsXG5cdFx0XHRcIkFzaWEvTm92b2t1em5ldHNrfExNVCArMDYgKzA3ICswOHwtNU0uTSAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTFQY3RNLk0gZVVMTS5NIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMnNwMCBXTTB8NTVlNFwiLFxuXHRcdFx0XCJBc2lhL05vdm9zaWJpcnNrfExNVCArMDYgKzA3ICswOHwtNXYuRSAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yMVFudi5FIHBBRnYuRSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgbWwwIE9zMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCA0ZU4wfDE1ZTVcIixcblx0XHRcdFwiQXNpYS9PbXNrfExNVCArMDUgKzA2ICswN3wtNFIudSAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjI0c1IudSBwTUxSLnUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTJlNVwiLFxuXHRcdFx0XCJBc2lhL09yYWx8TE1UICswMyArMDUgKzA2ICswNHwtM3AubyAtMzAgLTUwIC02MCAtNDB8MDEyMzIzMjMyMzIzMjMyMzI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDJ8LTFQYzNwLm8gZVVvcC5vIDIzQ0swIDNEYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMWNNMCAxY00wIElNMCAxRU0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTB8MjdlNFwiLFxuXHRcdFx0XCJBc2lhL1BvbnRpYW5ha3xMTVQgUE1UICswNzMwICswOSArMDggV0lUQSBXSUJ8LTdoLmsgLTdoLmsgLTd1IC05MCAtODAgLTgwIC03MHwwMTIzMjQyNTZ8LTJ1YTdoLmsgWEUwMCBtdW5MLmsgOFJhdSA2a3B1IDRQWHUgeGhjdSBXcW51fDIzZTRcIixcblx0XHRcdFwiQXNpYS9QeW9uZ3lhbmd8TE1UIEtTVCBKU1QgS1NUfC04biAtOHUgLTkwIC05MHwwMTIzMTN8LTJ1bThuIDk3WFIgMWxUenUgMk9uYzAgNkJBdXwyOWU1XCIsXG5cdFx0XHRcIkFzaWEvUXl6eWxvcmRhfExNVCArMDQgKzA1ICswNnwtNGwuUSAtNDAgLTUwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0xUGM0bC5RIGVVb2wuUSAyM0NMMCAzRGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgM2FvMCAxRU0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTB8NzNlNFwiLFxuXHRcdFx0XCJBc2lhL1Jhbmdvb258Uk1UICswNjMwICswOXwtNm8uTCAtNnUgLTkwfDAxMjF8LTIxSmlvLkwgU21uUy5MIDdqOXV8NDhlNVwiLFxuXHRcdFx0XCJBc2lhL1Nha2hhbGlufExNVCArMDkgKzExICsxMiArMTB8LTl1Lk0gLTkwIC1iMCAtYzAgLWEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyNDIzMjMyMzIzMjMyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyfC0yQUdWdS5NIDFCb011Lk0gMXFGYTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMnBCMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDB8NThlNFwiLFxuXHRcdFx0XCJBc2lhL1NhbWFya2FuZHxMTVQgKzA0ICswNSArMDZ8LTRyLlIgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzRyLlIgZVVvci5SIDIzQ0wwIDNEYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTB8MzZlNFwiLFxuXHRcdFx0XCJBc2lhL1Nlb3VsfExNVCBLU1QgSlNUIEtTVCBLRFQgS0RUfC04ci5RIC04dSAtOTAgLTkwIC05dSAtYTB8MDEyMzE0MTQxNDE0MTQxNDEzNTM1M3wtMnVtOHIuUSA5N1hWLlEgMW0xenUga0tvMCAySTB1IE9MMCAxRkIwIFJiMCAxcU4wIFRYMCAxdEIwIFRYMCAxdEIwIFRYMCAxdEIwIFRYMCAyYXAwIDEyRkJ1IDExQTAgMW8wMCAxMUEwfDIzZTZcIixcblx0XHRcdFwiQXNpYS9TcmVkbmVrb2x5bXNrfExNVCArMTAgKzExICsxMnwtYWUuUSAtYTAgLWIwIC1jMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjYWUuUSBlVW9lLlEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MzVlMlwiLFxuXHRcdFx0XCJBc2lhL1RhaXBlaXxDU1QgSlNUIENEVHwtODAgLTkwIC05MHwwMTAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMHwtMWl3ODAgam9NMCAxeW8wIFR6MCAxaXAwIDFqWDAgMWNOMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDEwTjAgMUJYMCAxMHAwIDFwejAgMTBwMCAxcHowIDEwcDAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMUJCMCBNTDAgMUJkMCBNTDAgdXExMCAxZGIwIDFjTjAgMWRiMCA5N0IwIEFMMHw3NGU1XCIsXG5cdFx0XHRcIkFzaWEvVGFzaGtlbnR8TE1UICswNSArMDYgKzA3fC00Qi5iIC01MCAtNjAgLTcwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMXwtMVBjNEIuYiBlVW5CLmIgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwfDIzZTVcIixcblx0XHRcdFwiQXNpYS9UYmlsaXNpfFRCTVQgKzAzICswNCArMDV8LTJYLmIgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMVBjMlguYiAxalVuWC5iIFdDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAycHowIDFjTDAgMWZCMCAzTnowIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIEFuMCBPczAgV00wfDExZTVcIixcblx0XHRcdFwiQXNpYS9UZWhyYW58TE1UIFRNVCArMDMzMCArMDQgKzA1ICswNDMwfC0zcC5JIC0zcC5JIC0zdSAtNDAgLTUwIC00dXwwMTIzNDMyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MnwtMmJ0RHAuSSAxZDNjMCAxaHVMVC5JIFRYdSAxcHowIHNOMCB2QXUgMWNMMCAxZEIwIDFlbjAgcE5CMCBVTDAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCA2NHAwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MHwxNGU2XCIsXG5cdFx0XHRcIkFzaWEvVGhpbXBodXxMTVQgKzA1MzAgKzA2fC01Vy5BIC01dSAtNjB8MDEyfC1TdTVXLkEgMUJHTXMuQXw3OWUzXCIsXG5cdFx0XHRcIkFzaWEvVG9reW98SlNUIEpEVHwtOTAgLWEwfDAxMDEwMTAxMHwtUUpKMCBSYjAgMWxkMCAxNG4wIDF6ZDAgT24wIDF6ZDAgT24wfDM4ZTZcIixcblx0XHRcdFwiQXNpYS9Ub21za3xMTVQgKzA2ICswNyArMDh8LTVELlAgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjFOaEQuUCBweHpELlAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCBjbzAgMWJCMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNRcDB8MTBlNVwiLFxuXHRcdFx0XCJBc2lhL1VsYWFuYmFhdGFyfExNVCArMDcgKzA4ICswOXwtNzcudyAtNzAgLTgwIC05MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJBUEg3LncgMlVrbzcudyBjS24wIDFkYjAgMWRkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgNmhEMCAxMXowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAga0VwMCAxY0owIDFjUDAgMWNKMHwxMmU1XCIsXG5cdFx0XHRcIkFzaWEvVXN0LU5lcmF8TE1UICswOCArMDkgKzEyICsxMSArMTB8LTl3LlMgLTgwIC05MCAtYzAgLWIwIC1hMHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDU0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDV8LTIxUTl3LlMgcEFwdy5TIDIzQ0wwIDFkOTAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxN1YwIDd6RDB8NjVlMlwiLFxuXHRcdFx0XCJBc2lhL1ZsYWRpdm9zdG9rfExNVCArMDkgKzEwICsxMXwtOEwudiAtOTAgLWEwIC1iMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVNKSUwudiBpdFhMLnYgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8NjBlNFwiLFxuXHRcdFx0XCJBc2lhL1lha3V0c2t8TE1UICswOCArMDkgKzEwfC04Qy5XIC04MCAtOTAgLWEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yMVE4Qy5XIHBBb0MuVyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwyOGU0XCIsXG5cdFx0XHRcIkFzaWEvWWVrYXRlcmluYnVyZ3xMTVQgUE1UICswNCArMDUgKzA2fC00Mi54IC0zSi41IC00MCAtNTAgLTYwfDAxMjM0MzQzNDM0MzQzNDM0MzQzNDM0MzIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0M3wtMmFnNDIueCA3bVFoLnMgcUJ2Si41IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDE0ZTVcIixcblx0XHRcdFwiQXNpYS9ZZXJldmFufExNVCArMDMgKzA0ICswNXwtMlcgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjMlcgMWpVblcgV0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCA0UlgwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMHwxM2U1XCIsXG5cdFx0XHRcIkF0bGFudGljL0F6b3Jlc3xITVQgLTAyIC0wMSArMDAgV0VUfDFTLncgMjAgMTAgMCAwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMTIzMjEyMzIxMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjM0MzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0ybGRXMCBhUFgwIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcUlsMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjVlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9CZXJtdWRhfExNVCBBU1QgQURUfDRqLmkgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMUJuUkUuRyAxTFRiRS5HIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NWUzXCIsXG5cdFx0XHRcIkF0bGFudGljL0NhbmFyeXxMTVQgLTAxIFdFVCBXRVNUfDExLkEgMTAgMCAtMTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFVdGFXLm8gWFBBVy5vIDFsQUswIDFhMTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw1NGU0XCIsXG5cdFx0XHRcIkF0bGFudGljL0NhcGVfVmVyZGV8TE1UIC0wMiAtMDF8MXkuNCAyMCAxMHwwMTIxMnwtMmxkVzAgMWVFbzAgN3pYMCAxZGpmMHw1MGU0XCIsXG5cdFx0XHRcIkF0bGFudGljL0Zhcm9lfExNVCBXRVQgV0VTVHxyLjQgMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJ1U253LlUgMldnb3cuVSAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0OWUzXCIsXG5cdFx0XHRcIkF0bGFudGljL01hZGVpcmF8Rk1UIC0wMSArMDAgKzAxIFdFVCBXRVNUfDE3LkEgMTAgMCAtMTAgMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTJsZFgwIGFQWDAgU3AwIExYMCAxdmMwIFRjMCAxdU0wIFNNMCAxdmMwIFRjMCAxdmMwIFNNMCAxdmMwIDY2MDAgMWNvMCAzRTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxaW8wIDE3YzAgM0kwMCAxN2MwIDFjTTAgMWNNMCAzRmMwIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgMXRBMCAxY00wIDFkYzAgMTQwMCBnTDAgSU0wIHMxMCBVMDAgZFgwIFJjMCBwZDAgUmMwIGdMMCBPbzAgcGQwIFJjMCBnTDAgT28wIHBkMCAxNG8wIDFjTTAgMWNQMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgM0NvMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBxSWwwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwyN2U0XCIsXG5cdFx0XHRcIkF0bGFudGljL1JleWtqYXZpa3xMTVQgLTAxICswMCBHTVR8MXMgMTAgMCAwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxM3wtMnVXbXcgbWZhdyAxQmQwIE1MMCAxTEIwIENuMCAxTEIwIDNmWDAgQzEwIEhyWDAgMWNPMCBMQjAgMUVMMCBMQTAgMUMwMCBPbzAgMXdvMCBSYzAgMXdvMCBSYzAgMXdvMCBSYzAgMXpjMCBPbzAgMXpjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFsYzAgMTRvMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxNG8wfDEyZTRcIixcblx0XHRcdFwiQXRsYW50aWMvU291dGhfR2VvcmdpYXwtMDJ8MjB8MHx8MzBcIixcblx0XHRcdFwiQXRsYW50aWMvU3RhbmxleXxTTVQgLTA0IC0wMyAtMDJ8M1AubyA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJrSnc4LkEgMTJiQTguQSAxOVgwIDFmQjAgMTlYMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIENuMCAxQ2MxMCBXTDAgMXFMMCBVMTAgMXR6MCAybU4wIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxdHowIFUxMCAxdHowIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxdHowIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcU4wIFUxMCAxd24wIFJkMCAxd24wIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxd24wIFUxMCAxdHowIFUxMCAxdHowIFUxMHwyMWUyXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9TeWRuZXl8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDE0bzAgMW8wMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDExQTAgMW8wMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHw0MGU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9BZGVsYWlkZXxBQ1NUIEFDRFR8LTl1IC1hdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgVTAwIDFxTTAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgT28wIDF6YzAgV00wIDFxTTAgUmMwIDF6YzAgVTAwIDF0QTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHwxMWU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9CcmlzYmFuZXxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMHwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCBIMUEwIE9vMCAxemMwIE9vMCAxemMwIE9vMHwyMGU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Ccm9rZW5fSGlsbHxBQ1NUIEFDRFR8LTl1IC1hdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTRvMCAxbzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MThlM1wiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQ3VycmllfEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5RTgwIDE5WDAgMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxcU0wIFdNMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxd28wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExQTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMTFBMCAxbzAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8NzQ2XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9EYXJ3aW58QUNTVCBBQ0RUfC05dSAtYXV8MDEwMTAxMDEwfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDB8MTJlNFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvRXVjbGF8KzA4NDUgKzA5NDV8LThKIC05SnwwMTAxMDEwMTAxMDEwMTAxMDEwfC0yOTNrSSB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZ1NwMCBPbzAgbDVBMCBPbzAgaUpBMCBHMDAgelUwMCBJTTAgMXFNMCAxMUEwIDFvMDAgMTFBMHwzNjhcIixcblx0XHRcdFwiQXVzdHJhbGlhL0hvYmFydHxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5RTgwIDE5WDAgMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgVmZCMCAxY00wIDFvMDAgUmMwIDF3bzAgUmMwIDF3bzAgVTAwIDF3bzAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxcU0wIFdNMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxd28wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExQTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMTFBMCAxbzAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MjFlNFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTG9yZF9Ib3dlfEFFU1QgKzEwMzAgKzExMzAgKzExfC1hMCAtYXUgLWJ1IC1iMHwwMTIxMjEyMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzfHJhQzAgMXpkdSBSYjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBUWHUgMXFNdSBXTHUgMXRBdSBXTHUgMXRBdSBUWHUgMXRBdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFxTXUgV0x1IDExQXUgMW5YdSAxcU11IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxcU11IFdMdSAxcU11IDExenUgMW8wdSBXTHUgMXFNdSAxNG51IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWZ6dSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdXwzNDdcIixcblx0XHRcdFwiQXVzdHJhbGlhL0xpbmRlbWFufEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCBIMUEwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMHwxMFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTWVsYm91cm5lfEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5M2xYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXFNMCAxMUEwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxMUEwIDFvMDAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MzllNVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvUGVydGh8QVdTVCBBV0RUfC04MCAtOTB8MDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkzalggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWdTcDAgT28wIGw1QTAgT28wIGlKQTAgRzAwIHpVMDAgSU0wIDFxTTAgMTFBMCAxbzAwIDExQTB8MThlNVwiLFxuXHRcdFx0XCJDRVR8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxNk0wIDFnTU0wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJQYWNpZmljL0Vhc3RlcnxFTVQgLTA3IC0wNiAtMDV8N2gucyA3MCA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTF1U2dHLncgMXM0SUcudyBXTDAgMXpkMCBPbjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxbGQwIDE0bjAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMnBBMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxZkIwIDE5WDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMWlwMCAxZnowIDFmQjAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFvMTAgMTlYMCAxZkIwIDFuWDAgRzEwIDFFTDAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDQ2bjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwfDMwZTJcIixcblx0XHRcdFwiQ1NUNkNEVHxDU1QgQ0RUIENXVCBDUFR8NjAgNTAgNTAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiRUVUfEVFVCBFRVNUfC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfGhEQjAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCIsXG5cdFx0XHRcIkV1cm9wZS9EdWJsaW58RE1UIElTVCBHTVQgQlNUIElTVHxwLmwgLXkuRCAwIC0xMCAtMTB8MDEyMzIzMjMyMzIzMjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDJ8LTJheDl5LkQgUmMwIDFmenkuRCAxNE0wIDFmYzAgMWcwMCAxY28wIDFkYzAgMWNvMCAxb28wIDE0MDAgMWRjMCAxOUEwIDFpbzAgMWlvMCBXTTAgMW8wMCAxNG8wIDFvMDAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxcU0wIERjMCBnNjAwIDE0bzAgMXdvMCAxN2MwIDFpbzAgMTFBMCAxbzAwIDE3YzAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFsYzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWEwMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBJTTAgOTBvMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMXowIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFU1R8RVNUfDUwfDB8XCIsXG5cdFx0XHRcIkVTVDVFRFR8RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxdDAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDQwIGl2MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVR8MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTF8KzAxfC0xMHwwfFwiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXwrMTB8LWEwfDB8fDI1ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Qb2hucGVpfCsxMXwtYjB8MHx8MzRlM1wiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXwrMTJ8LWMwfDB8fDI5ZTNcIixcblx0XHRcdFwiRXRjL0dNVC0xM3wrMTN8LWQwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQtMTR8KzE0fC1lMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTJ8KzAyfC0yMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTN8KzAzfC0zMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTR8KzA0fC00MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTV8KzA1fC01MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTZ8KzA2fC02MHwwfFwiLFxuXHRcdFx0XCJJbmRpYW4vQ2hyaXN0bWFzfCswN3wtNzB8MHx8MjFlMlwiLFxuXHRcdFx0XCJFdGMvR01ULTh8KzA4fC04MHwwfFwiLFxuXHRcdFx0XCJQYWNpZmljL1BhbGF1fCswOXwtOTB8MHx8MjFlM1wiLFxuXHRcdFx0XCJFdGMvR01UKzF8LTAxfDEwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrMTB8LTEwfGEwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrMTF8LTExfGIwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrMTJ8LTEyfGMwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrM3wtMDN8MzB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs0fC0wNHw0MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzV8LTA1fDUwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrNnwtMDZ8NjB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs3fC0wN3w3MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzh8LTA4fDgwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrOXwtMDl8OTB8MHxcIixcblx0XHRcdFwiRXRjL1VDVHxVQ1R8MHwwfFwiLFxuXHRcdFx0XCJFdGMvVVRDfFVUQ3wwfDB8XCIsXG5cdFx0XHRcIkV1cm9wZS9BbXN0ZXJkYW18QU1UIE5TVCArMDEyMCArMDAyMCBDRVNUIENFVHwtai53IC0xai53IC0xayAtayAtMjAgLTEwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMyMzIzNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NXwtMmFGY2oudyAxMWIwIDFpUDAgMTFBMCAxaW8wIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWNvMCAxaW8wIDF5bzAgUGMwIDFhMDAgMWZBMCAxQmMwIE1vMCAxdGMwIFVvMCAxdEEwIFUwMCAxdW8wIFcwMCAxczAwIFZBMCAxc28wIFZjMCAxc00wIFVNMCAxd28wIFJjMCAxdTAwIFdvMCAxckEwIFcwMCAxczAwIFZBMCAxc00wIFVNMCAxdzAwIGZWMCBCQ1gudyAxdEEwIFUwMCAxdTAwIFdvMCAxc20wIDYwMWsgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMTZNMCAxZ01NMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTZlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQW5kb3JyYXxXRVQgQ0VUIENFU1R8MCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtVUJBMCAxeElOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDc5ZTNcIixcblx0XHRcdFwiRXVyb3BlL0FzdHJha2hhbnxMTVQgKzAzICswNCArMDV8LTNjLmMgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0xUGNyYy5jIGVVTWMuYyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAxY00wIDNDbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDBcIixcblx0XHRcdFwiRXVyb3BlL0F0aGVuc3xBTVQgRUVUIEVFU1QgQ0VTVCBDRVR8LTF5LlEgLTIwIC0zMCAtMjAgLTEwfDAxMjEyMzQzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmE2MXguUSBDTmJ4LlEgbW4wIGtVMTAgOWIwIDNFczAgWGEwIDFmYjAgMWRkMCBrM1gwIE56MCBTQ3AwIDF2YzAgU08wIDFjTTAgMWEwMCAxYW8wIDFmYzAgMWExMCAxZkcwIDFjZzAgMWRYMCAxYlgwIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzVlNVwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEdNVCBCU1QgQkRTVHwwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMTIxMjEyMTIxMDEwMTIxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF4YTAgUmMwIDFmQTAgMTRNMCAxZmMwIDFnMDAgMWNvMCAxZGMwIDFjbzAgMW9vMCAxNDAwIDFkYzAgMTlBMCAxaW8wIDFpbzAgV00wIDFvMDAgMTRvMCAxbzAwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMXFNMCBEYzAgMlJ6MCBEYzAgMXpjMCBPbzAgMXpjMCBSYzAgMXdvMCAxN2MwIDFpTTAgRkEwIHhCMCAxZkEwIDFhMDAgMTRvMCBiYjAgTEEwIHhCMCBSYzAgMXdvMCAxMUEwIDFvMDAgMTdjMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWxjMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxYTAwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxdEEwIElNMCA5MG8wIFUwMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExejAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMGU2XCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xOVJDMCAzSVAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxcmMwIFFvMCAxdm1vMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVybGlufENFVCBDRVNUIENFTVR8LTEwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEyMTAxMDEyMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAga0wwIE5jMCBtMTAgV00wIDFhbzAgMWNwMCBkWDAganowIERkMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFlaEEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9QcmFndWV8Q0VUIENFU1QgR01UfC0xMCAtMjAgMHwwMTAxMDEwMTAxMDEwMTAxMDIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFxTTAgMTFjMCBtcDAgeEEwIG1uMCAxN2MwIDFpbzAgMTdjMCAxZmMwIDFhbzAgMWJOYzAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxM2U1XCIsXG5cdFx0XHRcIkV1cm9wZS9CcnVzc2Vsc3xXRVQgQ0VUIENFU1QgV0VTVHwwIC0xMCAtMjAgLTEwfDAxMjEyMTIxMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJlaGMwIDN6WDAgMTFjMCAxaU8wIDExQTAgMW8wMCAxMUEwIG15MCBJYzAgMXFNMCBSYzAgMUVNMCBVTTAgMXUwMCAxMG8wIDFpbzAgMWlvMCAxN2MwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgeTAwIDVXbjAgV00wIDFmQTAgMWNNMCAxNk0wIDFpTTAgMTZNMCAxQzAwIFVvMCAxZWVvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjFlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQnVjaGFyZXN0fEJNVCBFRVQgRUVTVHwtMUkubyAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTF4QXBJLm8gMjBMSS5vIFJBMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMUF4YzAgT24wIDFmQTAgMWExMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNLMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFFMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE5ZTVcIixcblx0XHRcdFwiRXVyb3BlL0J1ZGFwZXN0fENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMWlwMCAxN2IwIDFvcDAgMXRiMCBRMm0wIDNOZTAgV00wIDFmQTAgMWNNMCAxY00wIDFvSjAgMWRjMCAxMDMwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWlNMCAxZkEwIDhIYTAgUmIwIDF3TjAgUmIwIDFCQjAgTHowIDFDMjAgTEIwIFNOWDAgMWExMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE3ZTVcIixcblx0XHRcdFwiRXVyb3BlL1p1cmljaHxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xOUxjMCAxMUEwIDFvMDAgMTFBMCAxeEcxMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzOGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9DaGlzaW5hdXxDTVQgQk1UIEVFVCBFRVNUIENFU1QgQ0VUIE1TSyBNU0R8LTFUIC0xSS5vIC0yMCAtMzAgLTIwIC0xMCAtMzAgLTQwfDAxMjMyMzIzMjMyMzIzMjMyMzIzNDU0NTQ2NzY3Njc2NzY3Njc2NzY3Njc2NzMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjZqZFQgd0dNYS5BIDIwTEkubyBSQTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDI3QTAgMmVuMCAzOWcwIFdNMCAxZkEwIDFjTTAgVjkwIDF0N3owIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIGdMMCBXTzAgMWNNMCAxY00wIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFEMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDY3ZTRcIixcblx0XHRcdFwiRXVyb3BlL0NvcGVuaGFnZW58Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXpDMCBUejAgVnVPMCA2MHEwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIFMwMCAxSEEwIE5jMCAxQzAwIERjMCAxTmMwIEFvMCAxaDVBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvR2licmFsdGFyfEdNVCBCU1QgQkRTVCBDRVQgQ0VTVHwwIC0xMCAtMjAgLTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIxMjEyMTIxMjEwMTAxMjEwMTAxMDEwMTAxMDEwMTAxMDEwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTJheGEwIFJjMCAxZkEwIDE0TTAgMWZjMCAxZzAwIDFjbzAgMWRjMCAxY28wIDFvbzAgMTQwMCAxZGMwIDE5QTAgMWlvMCAxaW8wIFdNMCAxbzAwIDE0bzAgMW8wMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFxTTAgRGMwIDJSejAgRGMwIDF6YzAgT28wIDF6YzAgUmMwIDF3bzAgMTdjMCAxaU0wIEZBMCB4QjAgMWZBMCAxYTAwIDE0bzAgYmIwIExBMCB4QjAgUmMwIDF3bzAgMTFBMCAxbzAwIDE3YzAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFsYzAgMTdjMCAxZkEwIDEwSnowIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzBlM1wiLFxuXHRcdFx0XCJFdXJvcGUvSGVsc2lua2l8SE1UIEVFVCBFRVNUfC0xRC5OIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVd1TkQuTiBPVUxELk4gMWRBMCAxeEdxMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9LYWxpbmluZ3JhZHxDRVQgQ0VTVCBDRVQgQ0VTVCBNU0sgTVNEIEVFU1QgRUVUICswM3wtMTAgLTIwIC0yMCAtMzAgLTMwIC00MCAtMzAgLTIwIC0zMHwwMTAxMDEwMTAxMDEwMjMyNDU0NTQ1NDU0NTQ1NDU0NTQ2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2Nzg3fC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCBBbTAgTGIwIDFlbjAgb3AwIDFwTnowIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8NDRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvS2lldnxLTVQgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVHwtMjIuNCAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMHwwMTIzNDM0MjUyNTI1MjUyNTI1MjUyNTI1MjU2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxfC0xUGMyMi40IGVVbzIuNCBybnowIDJIZzAgV00wIDFmQTAgZGEwIDF2NG0wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIERiMCAzMjIwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjUTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM0ZTVcIixcblx0XHRcdFwiRXVyb3BlL0tpcm92fExNVCArMDMgKzA0ICswNXwtM2kuTSAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjJXTTAgcUg5MCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAxY00wIDNDbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDQ4ZTRcIixcblx0XHRcdFwiRXVyb3BlL0xpc2JvbnxMTVQgV0VUIFdFU1QgV0VNVCBDRVQgQ0VTVHxBLkogMCAtMTAgLTIwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTI0NTQ1NDU0MjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybGUwMCBhUFgwIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcHZ5MCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwyN2U1XCIsXG5cdFx0XHRcIkV1cm9wZS9MdXhlbWJvdXJnfExNVCBDRVQgQ0VTVCBXRVQgV0VTVCBXRVNUIFdFVHwtby5BIC0xMCAtMjAgMCAtMTAgLTIwIC0xMHwwMTIxMjEyMTM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0NTY1NjUxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yREcwby5BIHQ2bW8uQSBUQjAgMW5YMCBVcDAgMW8yMCAxMUEwIHJXMCBDTTAgMXFQMCBSOTAgMUVPMCBVSzAgMXUyMCAxMG0wIDFpcDAgMWluMCAxN2UwIDE5VzAgMWZCMCAxZGIwIDFjcDAgMWluMCAxN2QwIDFmejAgMWExMCAxaW4wIDFhMTAgMWluMCAxN2YwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgdkEwIDYwTDAgV00wIDFmQTAgMWNNMCAxN2MwIDFpbzAgMTZNMCAxQzAwIFVvMCAxZWVvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NTRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvTWFkcmlkfFdFVCBXRVNUIFdFTVQgQ0VUIENFU1R8MCAtMTAgLTIwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMjEwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC0yNVRkMCAxOUIwIDFjTDAgMWRkMCBiMXowIDE4cDAgM0hYMCAxN2QwIDFmejAgMWExMCAxaW8wIDFhMDAgMWluMCAxN2QwIGlJbjAgSGQwIDFjTDAgYmIwIDEyMDAgMnMyMCAxNG4wIDVhTDAgTXAwIDF2ejAgMTdkMCAxaW4wIDE3ZDAgMWluMCAxN2QwIDFpbjAgMTdkMCA2aFgwIDExQjAgWEhYMCAxYTEwIDFmejAgMWExMCAxOVgwIDFjTjAgMWZ6MCAxYTEwIDFmQzAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvTWFsdGF8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXJCMCBMejAgMWNOMCAxZGIwIDE0MTAgMW9uMCBXcDAgMXFMMCAxN2QwIDFjTDAgTTNCMCA1TTIwIFdNMCAxZkEwIDFjbzAgMTdjMCAxaU0wIDE2bTAgMWRlMCAxbGMwIDE0bTAgMWxjMCBXTzAgMXFNMCBHVFcwIE9uMCAxQzEwIExBMCAxQzAwIExBMCAxRU0wIExBMCAxQzAwIExBMCAxemMwIE9vMCAxQzAwIE9vMCAxY28wIDFjTTAgMWxBMCBYYzAgMXFxMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxaU4wIDE5ejAgMWZCMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MmU0XCIsXG5cdFx0XHRcIkV1cm9wZS9NaW5za3xNTVQgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVCArMDN8LTFPIC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwIC0zMHwwMTIzNDM0MzI1MjUyNTI1MjUyNTI1MjUyNTI2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxN3wtMVBjMU8gZVVuTyBxTlgwIDNnUTAgV00wIDFmQTAgMWNNMCBBbDAgMXRzbjAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNGYzAgMWNOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMHwxOWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9Nb25hY298UE1UIFdFVCBXRVNUIFdFTVQgQ0VUIENFU1R8LTkubCAwIC0xMCAtMjAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjM0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMm5jbzkubCBjTmI5LmwgSEEwIDE5QTAgMWlNMCAxMWMwIDFvbzAgV28wIDFyYzAgUU0wIDFFTTAgVU0wIDF1MDAgMTBvMCAxaW8wIDF3bzAgUmMwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEZjAgMlJWMCAxMXowIDExQjAgMXplMCBXTTAgMWZBMCAxY00wIDFmYTAgMWFxMCAxNk0wIDFla24wIDFjTDAgMWZDMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzhlM1wiLFxuXHRcdFx0XCJFdXJvcGUvTW9zY293fE1NVCBNTVQgTVNUIE1EU1QgTVNEIE1TSyArMDUgRUVUIEVFU1QgTVNLfC0ydS5oIC0ydi5qIC0zdi5qIC00di5qIC00MCAtMzAgLTUwIC0yMCAtMzAgLTQwfDAxMjEzMjM0NTQ2NDU3NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1ODc1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU5NXwtMmFnMnUuaCAycHlXLlcgMWJBMCAxMVgwIEdOMCAxSGIwIGM0di5qIGlrMCAzREEwIGR6MCAxNUEwIGMxMCAycTEwIGlNMTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwxNmU2XCIsXG5cdFx0XHRcIkV1cm9wZS9QYXJpc3xQTVQgV0VUIFdFU1QgQ0VTVCBDRVQgV0VNVHwtOS5sIDAgLTEwIC0yMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjM0MzQzNTI1NDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzR8LTJuY284LmwgY05iOC5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCAxdTAwIDEwbzAgMWlvMCAxd28wIFJjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGYwIElrMCA1TTMwIFdNMCAxZkEwIDFjTTAgVngwIGhCMCAxYXEwIDE2TTAgMWVrbjAgMWNMMCAxZkMwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMWU2XCIsXG5cdFx0XHRcIkV1cm9wZS9SaWdhfFJNVCBMU1QgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVHwtMUEueSAtMkEueSAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMHwwMTAxMDIzNDU0NTQ1MzYzNjM2MzYzNjM2MzYzNjM3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzJ8LTI1VHpBLnkgMTFBMCAxaU0wIGtvMCBnV20wIHlEWEEueSAyYlgwIDNmRTAgV00wIDFmQTAgMWNNMCAxY00wIDRtMCAxc0x5MCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDNvbzAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvUm9tZXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhckIwIEx6MCAxY04wIDFkYjAgMTQxMCAxb24wIFdwMCAxcUwwIDE3ZDAgMWNMMCBNM0IwIDVNMjAgV00wIDFmQTAgMWNNMCAxNk0wIDFpTTAgMTZtMCAxZGUwIDFsYzAgMTRtMCAxbGMwIFdPMCAxcU0wIEdUVzAgT24wIDFDMTAgTEEwIDFDMDAgTEEwIDFFTTAgTEEwIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgT28wIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgTEEwIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgT28wIDF6YzAgT28wIDFmQzAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM5ZTVcIixcblx0XHRcdFwiRXVyb3BlL1NhbWFyYXxMTVQgKzAzICswNCArMDV8LTNrLmsgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMjJXTTAgcUg5MCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAyeTEwIDE0bTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9TYXJhdG92fExNVCArMDMgKzA0ICswNXwtMzQuaSAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAzQ28wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCA1ODEwXCIsXG5cdFx0XHRcIkV1cm9wZS9TaW1mZXJvcG9sfFNNVCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUIE1TS3wtMmcgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzAgLTQwfDAxMjM0MzQzMjUyNTI1MjUyNTI1MjUyNTI1MjE2MTYxNjUyNTI1MjYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE3MnwtMVBjMmcgZVVvZyByRW4wIDJxczAgV00wIDFmQTAgMWNNMCAzVjAgMXUwTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFRMDAgNGVMMCAxY0wwIDFjTjAgMWNMMCAxY04wIGRYMCBXTDAgMWNOMCAxY0wwIDFmQjAgMW8zMCAxMUIwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTF6MCAxblcwfDMzZTRcIixcblx0XHRcdFwiRXVyb3BlL1NvZmlhfEVFVCBDRVQgQ0VTVCBFRVNUfC0yMCAtMTAgLTIwIC0zMHwwMTIxMjEwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMHwtMTY4TDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMW1LSDAgMWRkMCAxZmIwIDFhcDAgMWZiMCAxYTIwIDFmeTAgMWEzMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExRTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9TdG9ja2hvbG18Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF6QzAgVEIwIDJ5RGUwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxNWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9UYWxsaW5ufFRNVCBDRVQgQ0VTVCBFRVQgTVNLIE1TRCBFRVNUfC0xRCAtMTAgLTIwIC0yMCAtMzAgLTQwIC0zMHwwMTIxMDM0MjEyMTI0NTQ1NDU0NTQ1NDU0NTQ1NDYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjN8LTI2b05EIHRlRCAxMUEwIDFUYTAgNHJYbCBLU0xEIDJGWDAgMkpnMCBXTTAgMWZBMCAxY00wIDE4SjAgMXNUWDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzEwIDExQTAgMXFNMCA1UU0wIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDFlNFwiLFxuXHRcdFx0XCJFdXJvcGUvVGlyYW5lfExNVCBDRVQgQ0VTVHwtMWouayAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2xCai5rIDE0cGNqLmsgNUxDMCBXTTAgNE0wIDFmQ0swIDEwbjAgMW9wMCAxMXowIDFwZDAgMTF6MCAxcU4wIFdMMCAxcXAwIFhiMCAxcXAwIFhiMCAxcXAwIDExejAgMWxCMCAxMXowIDFxTjAgMTF6MCAxaU4wIDE2bjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MmU0XCIsXG5cdFx0XHRcIkV1cm9wZS9VbHlhbm92c2t8TE1UICswMyArMDQgKzA1ICswMnwtM2QuQSAtMzAgLTQwIC01MCAtMjB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDBcIixcblx0XHRcdFwiRXVyb3BlL1V6aGdvcm9kfENFVCBDRVNUIE1TSyBNU0QgRUVUIEVFU1R8LTEwIC0yMCAtMzAgLTQwIC0yMCAtMzB8MDEwMTAxMDIzMjMyMzIzMjMyMzIzMjMyMzIwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0xY3FMMCA2aTAwIFdNMCAxZkEwIDFjTTAgMW1sMCAxQ3AwIDFyM1cwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxUTAwIDFOZjAgMnB3MCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNRMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTFlNFwiLFxuXHRcdFx0XCJFdXJvcGUvVmllbm5hfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIDNLTTAgMTRvMCBMQTAwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgNDAwIDJxTTAgMWEwMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFnSGEwIDE5WDAgMWNQMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxOGU1XCIsXG5cdFx0XHRcIkV1cm9wZS9WaWxuaXVzfFdNVCBLTVQgQ0VUIEVFVCBNU0sgQ0VTVCBNU0QgRUVTVHwtMW8gLTF6LkEgLTEwIC0yMCAtMzAgLTIwIC00MCAtMzB8MDEyMzI0NTI1MjU0NjQ2NDY0NjQ2NDY0NjQ2NDczNzM3MzczNzM3MzczNzM3MzUyNTM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczfC0yOTNkbyA2SUxNLm8gMU9vei5BIHp6MCBNZmQwIDI5VzAgM2lzMCBXTTAgMWZBMCAxY00wIExWMCAxdGdMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUIwIDFvMDAgMTFBMCAxcU0wIDhpbzAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDU0ZTRcIixcblx0XHRcdFwiRXVyb3BlL1ZvbGdvZ3JhZHxMTVQgKzAzICswNCArMDV8LTJWLkUgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTIxSXFWLkUgcHNMVi5FIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgM0NvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTBlNVwiLFxuXHRcdFx0XCJFdXJvcGUvV2Fyc2F3fFdNVCBDRVQgQ0VTVCBFRVQgRUVTVHwtMW8gLTEwIC0yMCAtMjAgLTMwfDAxMjEyMTIzNDMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmN0ZG8gMUxYbyAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgMW9uMCAxMUEwIDZ6eTAgSFdQMCA1SU0wIFdNMCAxZkEwIDFjTTAgMWR6MCAxbUwwIDFlbjAgMTVCMCAxYXEwIDFuQTAgMTFBMCAxaW8wIDE3YzAgMWZBMCAxYTAwIGlEWDAgTEEwIDFjTTAgMWNNMCAxQzAwIE9vMCAxY00wIDFjTTAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMUMwMCBMQTAgdXNvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTdlNVwiLFxuXHRcdFx0XCJFdXJvcGUvWmFwb3Jvemh5ZXwrMDIyMCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUfC0yayAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMHwwMTIzNDM0MjUyNTI1MjUyNTI1MjUyNTI1MjUyNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MXwtMVBjMmsgZVVvayByZGIwIDJSRTAgV00wIDFmQTAgOG0wIDF2OWEwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY0swIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjUTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDc3ZTRcIixcblx0XHRcdFwiSFNUfEhTVHxhMHwwfFwiLFxuXHRcdFx0XCJJbmRpYW4vQ2hhZ29zfExNVCArMDUgKzA2fC00Ti5FIC01MCAtNjB8MDEyfC0yeG9zTi5FIDNBR0xOLkV8MzBlMlwiLFxuXHRcdFx0XCJJbmRpYW4vQ29jb3N8KzA2MzB8LTZ1fDB8fDU5NlwiLFxuXHRcdFx0XCJJbmRpYW4vS2VyZ3VlbGVufC0wMCArMDV8MCAtNTB8MDF8LU1HMDB8MTMwXCIsXG5cdFx0XHRcIkluZGlhbi9NYWhlfExNVCArMDR8LTNGLk0gLTQwfDAxfC0yeU8zRi5NfDc5ZTNcIixcblx0XHRcdFwiSW5kaWFuL01hbGRpdmVzfE1NVCArMDV8LTRTIC01MHwwMXwtb2xnU3wzNWU0XCIsXG5cdFx0XHRcIkluZGlhbi9NYXVyaXRpdXN8TE1UICswNCArMDV8LTNPIC00MCAtNTB8MDEyMTIxfC0yeG9yTyAzNHVuTyAxNEwwIDEya3IwIDExejB8MTVlNFwiLFxuXHRcdFx0XCJJbmRpYW4vUmV1bmlvbnxMTVQgKzA0fC0zRi5RIC00MHwwMXwtMm1EREYuUXw4NGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvS3dhamFsZWlufCsxMSAtMTIgKzEyfC1iMCBjMCAtYzB8MDEyfC1BWDAgVzlYMHwxNGUzXCIsXG5cdFx0XHRcIk1FVHxNRVQgTUVTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDE2TTAgMWdNTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCIsXG5cdFx0XHRcIk1TVHxNU1R8NzB8MHxcIixcblx0XHRcdFwiTVNUN01EVHxNU1QgTURUIE1XVCBNUFR8NzAgNjAgNjAgNjB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiUGFjaWZpYy9DaGF0aGFtfCsxMjE1ICsxMjQ1ICsxMzQ1fC1jZiAtY0ogLWRKfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtV3FBZiAxYWRlZiBJTTAgMUMwMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXFNMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMHw2MDBcIixcblx0XHRcdFwiUGFjaWZpYy9BcGlhfExNVCAtMTEzMCAtMTEgLTEwICsxNCArMTN8YnEuVSBidSBiMCBhMCAtZTAgLWQwfDAxMjMyMzQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0ybkRNeC40IDF5VzAzLjQgMnJSYnUgMWZmMCAxYTAwIENJMCBBUTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDB8MzdlM1wiLFxuXHRcdFx0XCJQYWNpZmljL0JvdWdhaW52aWxsZXwrMTAgKzA5ICsxMXwtYTAgLTkwIC1iMHwwMTAyfC0xNld5MCA3Q04wIDJNUXAwfDE4ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9FZmF0ZXxMTVQgKzExICsxMnwtYmQuZyAtYjAgLWMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsOW5kLmcgMlN6Y2QuZyAxY0wwIDFvTjAgMTBMMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIEx6MCAxTmQwIEFuMHw2NmUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvRW5kZXJidXJ5fC0xMiAtMTEgKzEzfGMwIGIwIC1kMHwwMTJ8bkljMCBCN1gwfDFcIixcblx0XHRcdFwiUGFjaWZpYy9GYWthb2ZvfC0xMSArMTN8YjAgLWQwfDAxfDFHZm4wfDQ4M1wiLFxuXHRcdFx0XCJQYWNpZmljL0Zpaml8TE1UICsxMiArMTN8LWJULkkgLWMwIC1kMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYlV6VC5JIDNtOE5ULkkgTEEwIDFFTTAgSU0wIG5KYzAgTEEwIDFvMDAgUmMwIDF3bzAgQW8wIDFOYzAgQW8wIDFRMDAgeHowIDFTTjAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wfDg4ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9HYWxhcGFnb3N8TE1UIC0wNSAtMDZ8NVcubyA1MCA2MHwwMTIxMnwtMXlWUzEuQSAyZFR6MS5BIGdOZDAgcnowfDI1ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9HYW1iaWVyfExNVCAtMDl8OFguTSA5MHwwMXwtMmpvZjAuY3wxMjVcIixcblx0XHRcdFwiUGFjaWZpYy9HdWFkYWxjYW5hbHxMTVQgKzExfC1hRC5NIC1iMHwwMXwtMmpveUQuTXwxMWU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvR3VhbXxHU1QgQ2hTVHwtYTAgLWEwfDAxfDFmcHEwfDE3ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Ib25vbHVsdXxIU1QgSERUIEhTVHxhdSA5dSBhMHwwMTAxMDJ8LTF0aEx1IDh4MCBsZWYwIDhQejAgNDZwMHwzN2U0XCIsXG5cdFx0XHRcIlBhY2lmaWMvS2lyaXRpbWF0aXwtMTA0MCAtMTAgKzE0fGFFIGEwIC1lMHwwMTJ8bklhRSBCN1hrfDUxZTJcIixcblx0XHRcdFwiUGFjaWZpYy9Lb3NyYWV8KzExICsxMnwtYjAgLWMwfDAxMHwtQVgwIDFiZHowfDY2ZTJcIixcblx0XHRcdFwiUGFjaWZpYy9NYWp1cm98KzExICsxMnwtYjAgLWMwfDAxfC1BWDB8MjhlM1wiLFxuXHRcdFx0XCJQYWNpZmljL01hcnF1ZXNhc3xMTVQgLTA5MzB8OWkgOXV8MDF8LTJqb2VHfDg2ZTJcIixcblx0XHRcdFwiUGFjaWZpYy9QYWdvX1BhZ298TE1UIFNTVHxibS5NIGIwfDAxfC0ybkRNQi5jfDM3ZTJcIixcblx0XHRcdFwiUGFjaWZpYy9OYXVydXxMTVQgKzExMzAgKzA5ICsxMnwtYjcuRSAtYnUgLTkwIC1jMHwwMTIxM3wtMVhkbjcuRSBQdnpCLkUgNVJDdSAxb3VKdXwxMGUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvTml1ZXwtMTEyMCAtMTEzMCAtMTF8YmsgYnUgYjB8MDEyfC1LZk1FIDE3eTBhfDEyZTJcIixcblx0XHRcdFwiUGFjaWZpYy9Ob3Jmb2xrfCsxMTEyICsxMTMwICsxMjMwICsxMXwtYmMgLWJ1IC1jdSAtYjB8MDEyMTN8LUtnYmMgVzAxRyBPbjAgMUNPcDB8MjVlNFwiLFxuXHRcdFx0XCJQYWNpZmljL05vdW1lYXxMTVQgKzExICsxMnwtYjUuTSAtYjAgLWMwfDAxMjEyMTIxfC0ybDluNS5NIDJFcU01Lk0geFgwIDFQQjAgeW4wIEhlUDAgQW8wfDk4ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9QaXRjYWlybnwtMDgzMCAtMDh8OHUgODB8MDF8MThWa3V8NTZcIixcblx0XHRcdFwiUGFjaWZpYy9SYXJvdG9uZ2F8LTEwMzAgLTA5MzAgLTEwfGF1IDl1IGEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnxseVd1IElMMCAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udXwxM2UzXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFoaXRpfExNVCAtMTB8OVcuZyBhMHwwMXwtMmpvZTEuSXwxOGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvVG9uZ2F0YXB1fCsxMjIwICsxMyArMTR8LWNrIC1kMCAtZTB8MDEyMTIxMjEyMXwtMWFCMGsgMm41ZGsgMTVBMCAxd28wIHh6MCAxUTEwIHh6MCB6V04wIHMwMHw3NWUzXCIsXG5cdFx0XHRcIlBTVDhQRFR8UFNUIFBEVCBQV1QgUFBUfDgwIDcwIDcwIDcwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxcTAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDEwIGl5MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIldFVHxXRVQgV0VTVHwwIC0xMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8aERCMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDBcIlxuXHRcdF0sXG5cdFx0XCJsaW5rc1wiOiBbXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9CYW1ha29cIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0Jhbmp1bFwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvQ29uYWtyeVwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvRGFrYXJcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0ZyZWV0b3duXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9Mb21lXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9Ob3Vha2Nob3R0XCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9PdWFnYWRvdWdvdVwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvVGltYnVrdHVcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QXRsYW50aWMvU3RfSGVsZW5hXCIsXG5cdFx0XHRcIkFmcmljYS9DYWlyb3xFZ3lwdFwiLFxuXHRcdFx0XCJBZnJpY2EvSm9oYW5uZXNidXJnfEFmcmljYS9NYXNlcnVcIixcblx0XHRcdFwiQWZyaWNhL0pvaGFubmVzYnVyZ3xBZnJpY2EvTWJhYmFuZVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0Jhbmd1aVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0JyYXp6YXZpbGxlXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvRG91YWxhXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvS2luc2hhc2FcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9MaWJyZXZpbGxlXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTHVhbmRhXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTWFsYWJvXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTmlhbWV5XCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvUG9ydG8tTm92b1wiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9CbGFudHlyZVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9CdWp1bWJ1cmFcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvR2Fib3JvbmVcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvSGFyYXJlXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0tpZ2FsaVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9MdWJ1bWJhc2hpXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0x1c2FrYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvQWRkaXNfQWJhYmFcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0FzbWFyYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvQXNtZXJhXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9EYXJfZXNfU2FsYWFtXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9Eamlib3V0aVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvS2FtcGFsYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvTW9nYWRpc2h1XCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEluZGlhbi9BbnRhbmFuYXJpdm9cIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8SW5kaWFuL0NvbW9yb1wiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxJbmRpYW4vTWF5b3R0ZVwiLFxuXHRcdFx0XCJBZnJpY2EvVHJpcG9saXxMaWJ5YVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FkYWt8QW1lcmljYS9BdGthXCIsXG5cdFx0XHRcIkFtZXJpY2EvQWRha3xVUy9BbGV1dGlhblwiLFxuXHRcdFx0XCJBbWVyaWNhL0FuY2hvcmFnZXxVUy9BbGFza2FcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzfEFtZXJpY2EvQnVlbm9zX0FpcmVzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYXxBbWVyaWNhL0FyZ2VudGluYS9Db21vZFJpdmFkYXZpYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2F8QW1lcmljYS9DYXRhbWFyY2FcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ29yZG9iYXxBbWVyaWNhL0NvcmRvYmFcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ29yZG9iYXxBbWVyaWNhL1Jvc2FyaW9cIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvSnVqdXl8QW1lcmljYS9KdWp1eVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9NZW5kb3phfEFtZXJpY2EvTWVuZG96YVwiLFxuXHRcdFx0XCJBbWVyaWNhL0F0aWtva2FufEFtZXJpY2EvQ29yYWxfSGFyYm91clwiLFxuXHRcdFx0XCJBbWVyaWNhL0NoaWNhZ298VVMvQ2VudHJhbFwiLFxuXHRcdFx0XCJBbWVyaWNhL0N1cmFjYW98QW1lcmljYS9BcnViYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0N1cmFjYW98QW1lcmljYS9LcmFsZW5kaWprXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VyYWNhb3xBbWVyaWNhL0xvd2VyX1ByaW5jZXNcIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8QW1lcmljYS9TaGlwcm9ja1wiLFxuXHRcdFx0XCJBbWVyaWNhL0RlbnZlcnxOYXZham9cIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8VVMvTW91bnRhaW5cIixcblx0XHRcdFwiQW1lcmljYS9EZXRyb2l0fFVTL01pY2hpZ2FuXCIsXG5cdFx0XHRcIkFtZXJpY2EvRWRtb250b258Q2FuYWRhL01vdW50YWluXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9XYXluZXxBbWVyaWNhL0luZGlhbmEvSW5kaWFuYXBvbGlzXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9XYXluZXxBbWVyaWNhL0luZGlhbmFwb2xpc1wiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8VVMvRWFzdC1JbmRpYW5hXCIsXG5cdFx0XHRcIkFtZXJpY2EvSGFsaWZheHxDYW5hZGEvQXRsYW50aWNcIixcblx0XHRcdFwiQW1lcmljYS9IYXZhbmF8Q3ViYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvS25veHxBbWVyaWNhL0tub3hfSU5cIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL0tub3h8VVMvSW5kaWFuYS1TdGFya2VcIixcblx0XHRcdFwiQW1lcmljYS9KYW1haWNhfEphbWFpY2FcIixcblx0XHRcdFwiQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlfEFtZXJpY2EvTG91aXN2aWxsZVwiLFxuXHRcdFx0XCJBbWVyaWNhL0xvc19BbmdlbGVzfFVTL1BhY2lmaWNcIixcblx0XHRcdFwiQW1lcmljYS9Mb3NfQW5nZWxlc3xVUy9QYWNpZmljLU5ld1wiLFxuXHRcdFx0XCJBbWVyaWNhL01hbmF1c3xCcmF6aWwvV2VzdFwiLFxuXHRcdFx0XCJBbWVyaWNhL01hemF0bGFufE1leGljby9CYWphU3VyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTWV4aWNvX0NpdHl8TWV4aWNvL0dlbmVyYWxcIixcblx0XHRcdFwiQW1lcmljYS9OZXdfWW9ya3xVUy9FYXN0ZXJuXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9yb25oYXxCcmF6aWwvRGVOb3JvbmhhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGFuYW1hfEFtZXJpY2EvQ2F5bWFuXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGhvZW5peHxVUy9Bcml6b25hXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0FuZ3VpbGxhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0FudGlndWFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvRG9taW5pY2FcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvR3JlbmFkYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9HdWFkZWxvdXBlXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL01hcmlnb3RcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvTW9udHNlcnJhdFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9CYXJ0aGVsZW15XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X0tpdHRzXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X0x1Y2lhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X1Rob21hc1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9WaW5jZW50XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1RvcnRvbGFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvVmlyZ2luXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVnaW5hfENhbmFkYS9TYXNrYXRjaGV3YW5cIixcblx0XHRcdFwiQW1lcmljYS9SaW9fQnJhbmNvfEFtZXJpY2EvUG9ydG9fQWNyZVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Jpb19CcmFuY298QnJhemlsL0FjcmVcIixcblx0XHRcdFwiQW1lcmljYS9TYW50aWFnb3xDaGlsZS9Db250aW5lbnRhbFwiLFxuXHRcdFx0XCJBbWVyaWNhL1Nhb19QYXVsb3xCcmF6aWwvRWFzdFwiLFxuXHRcdFx0XCJBbWVyaWNhL1N0X0pvaG5zfENhbmFkYS9OZXdmb3VuZGxhbmRcIixcblx0XHRcdFwiQW1lcmljYS9UaWp1YW5hfEFtZXJpY2EvRW5zZW5hZGFcIixcblx0XHRcdFwiQW1lcmljYS9UaWp1YW5hfEFtZXJpY2EvU2FudGFfSXNhYmVsXCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxNZXhpY28vQmFqYU5vcnRlXCIsXG5cdFx0XHRcIkFtZXJpY2EvVG9yb250b3xBbWVyaWNhL01vbnRyZWFsXCIsXG5cdFx0XHRcIkFtZXJpY2EvVG9yb250b3xDYW5hZGEvRWFzdGVyblwiLFxuXHRcdFx0XCJBbWVyaWNhL1ZhbmNvdXZlcnxDYW5hZGEvUGFjaWZpY1wiLFxuXHRcdFx0XCJBbWVyaWNhL1doaXRlaG9yc2V8Q2FuYWRhL1l1a29uXCIsXG5cdFx0XHRcIkFtZXJpY2EvV2lubmlwZWd8Q2FuYWRhL0NlbnRyYWxcIixcblx0XHRcdFwiQXNpYS9Bc2hnYWJhdHxBc2lhL0FzaGtoYWJhZFwiLFxuXHRcdFx0XCJBc2lhL0Jhbmdrb2t8QXNpYS9QaG5vbV9QZW5oXCIsXG5cdFx0XHRcIkFzaWEvQmFuZ2tva3xBc2lhL1ZpZW50aWFuZVwiLFxuXHRcdFx0XCJBc2lhL0RoYWthfEFzaWEvRGFjY2FcIixcblx0XHRcdFwiQXNpYS9EdWJhaXxBc2lhL011c2NhdFwiLFxuXHRcdFx0XCJBc2lhL0hvX0NoaV9NaW5ofEFzaWEvU2FpZ29uXCIsXG5cdFx0XHRcIkFzaWEvSG9uZ19Lb25nfEhvbmdrb25nXCIsXG5cdFx0XHRcIkFzaWEvSmVydXNhbGVtfEFzaWEvVGVsX0F2aXZcIixcblx0XHRcdFwiQXNpYS9KZXJ1c2FsZW18SXNyYWVsXCIsXG5cdFx0XHRcIkFzaWEvS2F0aG1hbmR1fEFzaWEvS2F0bWFuZHVcIixcblx0XHRcdFwiQXNpYS9Lb2xrYXRhfEFzaWEvQ2FsY3V0dGFcIixcblx0XHRcdFwiQXNpYS9LdWFsYV9MdW1wdXJ8QXNpYS9TaW5nYXBvcmVcIixcblx0XHRcdFwiQXNpYS9LdWFsYV9MdW1wdXJ8U2luZ2Fwb3JlXCIsXG5cdFx0XHRcIkFzaWEvTWFjYXV8QXNpYS9NYWNhb1wiLFxuXHRcdFx0XCJBc2lhL01ha2Fzc2FyfEFzaWEvVWp1bmdfUGFuZGFuZ1wiLFxuXHRcdFx0XCJBc2lhL05pY29zaWF8RXVyb3BlL05pY29zaWFcIixcblx0XHRcdFwiQXNpYS9RYXRhcnxBc2lhL0JhaHJhaW5cIixcblx0XHRcdFwiQXNpYS9SYW5nb29ufEFzaWEvWWFuZ29uXCIsXG5cdFx0XHRcIkFzaWEvUml5YWRofEFzaWEvQWRlblwiLFxuXHRcdFx0XCJBc2lhL1JpeWFkaHxBc2lhL0t1d2FpdFwiLFxuXHRcdFx0XCJBc2lhL1Nlb3VsfFJPS1wiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfEFzaWEvQ2hvbmdxaW5nXCIsXG5cdFx0XHRcIkFzaWEvU2hhbmdoYWl8QXNpYS9DaHVuZ2tpbmdcIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxBc2lhL0hhcmJpblwiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfFBSQ1wiLFxuXHRcdFx0XCJBc2lhL1RhaXBlaXxST0NcIixcblx0XHRcdFwiQXNpYS9UZWhyYW58SXJhblwiLFxuXHRcdFx0XCJBc2lhL1RoaW1waHV8QXNpYS9UaGltYnVcIixcblx0XHRcdFwiQXNpYS9Ub2t5b3xKYXBhblwiLFxuXHRcdFx0XCJBc2lhL1VsYWFuYmFhdGFyfEFzaWEvVWxhbl9CYXRvclwiLFxuXHRcdFx0XCJBc2lhL1VydW1xaXxBc2lhL0thc2hnYXJcIixcblx0XHRcdFwiQXRsYW50aWMvRmFyb2V8QXRsYW50aWMvRmFlcm9lXCIsXG5cdFx0XHRcIkF0bGFudGljL1JleWtqYXZpa3xJY2VsYW5kXCIsXG5cdFx0XHRcIkF0bGFudGljL1NvdXRoX0dlb3JnaWF8RXRjL0dNVCsyXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9BZGVsYWlkZXxBdXN0cmFsaWEvU291dGhcIixcblx0XHRcdFwiQXVzdHJhbGlhL0JyaXNiYW5lfEF1c3RyYWxpYS9RdWVlbnNsYW5kXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Ccm9rZW5fSGlsbHxBdXN0cmFsaWEvWWFuY293aW5uYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvRGFyd2lufEF1c3RyYWxpYS9Ob3J0aFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvSG9iYXJ0fEF1c3RyYWxpYS9UYXNtYW5pYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTG9yZF9Ib3dlfEF1c3RyYWxpYS9MSElcIixcblx0XHRcdFwiQXVzdHJhbGlhL01lbGJvdXJuZXxBdXN0cmFsaWEvVmljdG9yaWFcIixcblx0XHRcdFwiQXVzdHJhbGlhL1BlcnRofEF1c3RyYWxpYS9XZXN0XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9TeWRuZXl8QXVzdHJhbGlhL0FDVFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEF1c3RyYWxpYS9DYW5iZXJyYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEF1c3RyYWxpYS9OU1dcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HTVRcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HTVQrMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8RXRjL0dNVDBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HcmVlbndpY2hcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R01UKzBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVC0wXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVQwXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHcmVlbndpY2hcIixcblx0XHRcdFwiRXRjL1VDVHxVQ1RcIixcblx0XHRcdFwiRXRjL1VUQ3xFdGMvVW5pdmVyc2FsXCIsXG5cdFx0XHRcIkV0Yy9VVEN8RXRjL1p1bHVcIixcblx0XHRcdFwiRXRjL1VUQ3xVVENcIixcblx0XHRcdFwiRXRjL1VUQ3xVbml2ZXJzYWxcIixcblx0XHRcdFwiRXRjL1VUQ3xadWx1XCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvTGp1YmxqYW5hXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvUG9kZ29yaWNhXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvU2FyYWpldm9cIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfEV1cm9wZS9Ta29wamVcIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfEV1cm9wZS9aYWdyZWJcIixcblx0XHRcdFwiRXVyb3BlL0NoaXNpbmF1fEV1cm9wZS9UaXJhc3BvbFwiLFxuXHRcdFx0XCJFdXJvcGUvRHVibGlufEVpcmVcIixcblx0XHRcdFwiRXVyb3BlL0hlbHNpbmtpfEV1cm9wZS9NYXJpZWhhbW5cIixcblx0XHRcdFwiRXVyb3BlL0lzdGFuYnVsfEFzaWEvSXN0YW5idWxcIixcblx0XHRcdFwiRXVyb3BlL0lzdGFuYnVsfFR1cmtleVwiLFxuXHRcdFx0XCJFdXJvcGUvTGlzYm9ufFBvcnR1Z2FsXCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258RXVyb3BlL0JlbGZhc3RcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvR3Vlcm5zZXlcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvSXNsZV9vZl9NYW5cIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvSmVyc2V5XCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258R0JcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxHQi1FaXJlXCIsXG5cdFx0XHRcIkV1cm9wZS9Nb3Njb3d8Vy1TVVwiLFxuXHRcdFx0XCJFdXJvcGUvT3Nsb3xBcmN0aWMvTG9uZ3llYXJieWVuXCIsXG5cdFx0XHRcIkV1cm9wZS9Pc2xvfEF0bGFudGljL0phbl9NYXllblwiLFxuXHRcdFx0XCJFdXJvcGUvUHJhZ3VlfEV1cm9wZS9CcmF0aXNsYXZhXCIsXG5cdFx0XHRcIkV1cm9wZS9Sb21lfEV1cm9wZS9TYW5fTWFyaW5vXCIsXG5cdFx0XHRcIkV1cm9wZS9Sb21lfEV1cm9wZS9WYXRpY2FuXCIsXG5cdFx0XHRcIkV1cm9wZS9XYXJzYXd8UG9sYW5kXCIsXG5cdFx0XHRcIkV1cm9wZS9adXJpY2h8RXVyb3BlL0J1c2luZ2VuXCIsXG5cdFx0XHRcIkV1cm9wZS9adXJpY2h8RXVyb3BlL1ZhZHV6XCIsXG5cdFx0XHRcIkluZGlhbi9DaHJpc3RtYXN8RXRjL0dNVC03XCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8QW50YXJjdGljYS9NY011cmRvXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8QW50YXJjdGljYS9Tb3V0aF9Qb2xlXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8TlpcIixcblx0XHRcdFwiUGFjaWZpYy9DaGF0aGFtfE5aLUNIQVRcIixcblx0XHRcdFwiUGFjaWZpYy9FYXN0ZXJ8Q2hpbGUvRWFzdGVySXNsYW5kXCIsXG5cdFx0XHRcIlBhY2lmaWMvR3VhbXxQYWNpZmljL1NhaXBhblwiLFxuXHRcdFx0XCJQYWNpZmljL0hvbm9sdWx1fFBhY2lmaWMvSm9obnN0b25cIixcblx0XHRcdFwiUGFjaWZpYy9Ib25vbHVsdXxVUy9IYXdhaWlcIixcblx0XHRcdFwiUGFjaWZpYy9Ld2FqYWxlaW58S3dhamFsZWluXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfFBhY2lmaWMvTWlkd2F5XCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfFBhY2lmaWMvU2Ftb2FcIixcblx0XHRcdFwiUGFjaWZpYy9QYWdvX1BhZ298VVMvU2Ftb2FcIixcblx0XHRcdFwiUGFjaWZpYy9QYWxhdXxFdGMvR01ULTlcIixcblx0XHRcdFwiUGFjaWZpYy9Qb2hucGVpfEV0Yy9HTVQtMTFcIixcblx0XHRcdFwiUGFjaWZpYy9Qb2hucGVpfFBhY2lmaWMvUG9uYXBlXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5fEV0Yy9HTVQtMTBcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8UGFjaWZpYy9DaHV1a1wiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXxQYWNpZmljL1RydWtcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8UGFjaWZpYy9ZYXBcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8RXRjL0dNVC0xMlwiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXxQYWNpZmljL0Z1bmFmdXRpXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFyYXdhfFBhY2lmaWMvV2FrZVwiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXxQYWNpZmljL1dhbGxpc1wiXG5cdFx0XVxuXHR9KTtcblxuXG5cdHJldHVybiBtb21lbnQ7XG59KSk7IiwiLypcbiAqIFRpdGxlOiBUeXBld3JpdGVyIEpTXG4gKiBEZXNjcmlwdGlvbjogQSBuYXRpdmUgamF2YXNjcmlwdCBwbHVnaW4gdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW4gZWxlZ2VudCBhdXRvbWF0aWMgdHlwZXdyaXRlciBhbmltYXRpb24gZWZmZWN0IG9uIHdlYnNpdGVzLlxuICogQXV0aG9yOiBUYW1lZW0gU2FmaVxuICogV2Vic2l0ZTogaHR0cHM6Ly9zYWZpLm1lLnVrXG4gKiBWZXJzaW9uOiAxLjAuMFxuICovXG5cbihmdW5jdGlvbigpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvLyBodHRwOi8vcGF1bGlyaXNoLmNvbS8yMDExL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtYW5pbWF0aW5nL1xuXHQvLyBodHRwOi8vbXkub3BlcmEuY29tL2Vtb2xsZXIvYmxvZy8yMDExLzEyLzIwL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtZXItYW5pbWF0aW5nXG5cdC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBwb2x5ZmlsbCBieSBFcmlrIE3DtmxsZXIuIGZpeGVzIGZyb20gUGF1bCBJcmlzaCBhbmQgVGlubyBaaWpkZWxcblx0Ly8gTUlUIGxpY2Vuc2Vcblx0KGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGxhc3RUaW1lID0gMDtcblx0ICAgIHZhciB2ZW5kb3JzID0gWydtcycsICdtb3onLCAnd2Via2l0JywgJ28nXTtcblx0ICAgIGZvcih2YXIgeCA9IDA7IHggPCB2ZW5kb3JzLmxlbmd0aCAmJiAhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsgKyt4KSB7XG5cdCAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHdpbmRvd1t2ZW5kb3JzW3hdKydSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSB3aW5kb3dbdmVuZG9yc1t4XSsnQ2FuY2VsQW5pbWF0aW9uRnJhbWUnXVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHdpbmRvd1t2ZW5kb3JzW3hdKydDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgIH1cblxuXHQgICAgaWYgKCF3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihjYWxsYmFjaywgZWxlbWVudCkge1xuXHQgICAgICAgICAgICB2YXIgY3VyclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblx0ICAgICAgICAgICAgdmFyIHRpbWVUb0NhbGwgPSBNYXRoLm1heCgwLCAxNiAtIChjdXJyVGltZSAtIGxhc3RUaW1lKSk7XG5cdCAgICAgICAgICAgIHZhciBpZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayhjdXJyVGltZSArIHRpbWVUb0NhbGwpOyB9LFxuXHQgICAgICAgICAgICAgIHRpbWVUb0NhbGwpO1xuXHQgICAgICAgICAgICBsYXN0VGltZSA9IGN1cnJUaW1lICsgdGltZVRvQ2FsbDtcblx0ICAgICAgICAgICAgcmV0dXJuIGlkO1xuXHQgICAgICAgIH07XG5cblx0ICAgIGlmICghd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKGlkKSB7XG5cdCAgICAgICAgICAgIGNsZWFyVGltZW91dChpZCk7XG5cdCAgICAgICAgfTtcblx0fSgpKTtcblxuXHR3aW5kb3cuVHlwZXdyaXRlciA9IGZ1bmN0aW9uIFR5cGV3cml0ZXIoZWxlbWVudCwgb3B0aW9ucykge1xuXHRcdHRoaXMuX3NldHRpbmdzID0ge1xuXHRcdFx0Y3Vyc29yQW5pbWF0aW9uUGF1c2VkOiBmYWxzZSxcblx0XHRcdG9wYWNpdHlJbmNyZWFzaW5nOiBmYWxzZSxcblx0XHRcdGN1cnJlbnRPcGFjaXR5OiAxLFxuXHRcdFx0ZGVsYXllZFF1ZTogW10sXG5cdFx0XHRkZWxheUl0ZW1zQ291bnQ6IDAsXG5cdFx0XHRldmVudFF1ZTogW10sXG5cdFx0XHRjYWxsZWRFdmVudHM6IFtdLFxuXHRcdFx0ZXZlbnRSdW5uaW5nOiBmYWxzZSxcblx0XHRcdHRpbWVvdXQ6IGZhbHNlLFxuXHRcdFx0ZGVsYXlFeGVjdXRpb246IGZhbHNlLFxuXHRcdFx0ZnBzOiAoNjAvMTAwMCksXG5cdFx0XHR0eXBpbmdGcmFtZUNvdW50OiAwLFxuXHRcdFx0c3RyaW5nVG9UeXBlSFRNTEFycmF5OiBbXSxcblx0XHRcdGN1cnJlbnRUeXBlZENoYXJhY3RlcnM6IFtdLFxuXHRcdFx0dHlwaW5nOiBmYWxzZSxcblx0XHRcdHVzZWRJRHM6IFtdLFxuXHRcdFx0Y2hhckFtb3VudFRvRGVsZXRlOiBmYWxzZSxcblx0XHRcdHVzZXJPcHRpb25zOiB7fSxcblx0XHRcdGV2ZW50TG9vcFJlcnVuOiAwXG5cdFx0fTtcblxuXHRcdGlmKCFlbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGNob29zZSBhbiBET00gZWxlbWVudCBzbyB0aGF0IHR5cGUgd3JpdGVyIGNhbiBkaXNwbGF5IGl0c2VsZi4nKTtcblx0XHR9XG5cblx0XHQvLyBpZighb3B0aW9ucy5zdHJpbmdzICYmICEob3B0aW9ucy5zdHJpbmdzIGluc3RhbmNlb2YgQXJyYXkgfHwgdHlwZW9mIG9wdGlvbnMuc3RyaW5ncyA9PT0gJ3N0cmluZycpKSB7XG5cdFx0Ly8gXHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGVudGVyIGFuIGFycmF5IG9mIHN0cmluZ3MgZm9yIHRoZSB0eXBld3JpdGVyIGFuaW1hdGlvbiB0byB3b3JrLicpO1xuXHRcdC8vIH1cblxuXHRcdGlmKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHRoZSBvcHRpb25zIGFzIGFuIG9iamVjdC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyA9IG9wdGlvbnM7XG5cblx0XHR0aGlzLmRlZmF1bHRfb3B0aW9ucyA9IHtcblx0XHRcdHN0cmluZ3M6IGZhbHNlLFxuXHRcdFx0Y3Vyc29yQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jdXJzb3InLFxuXHRcdFx0Y3Vyc29yOiAnfCcsXG5cdFx0XHRhbmltYXRlQ3Vyc29yOiB0cnVlLFxuXHRcdFx0YmxpbmtTcGVlZDogNTAsXG5cdFx0XHR0eXBpbmdTcGVlZDogJ25hdHVyYWwnLFxuXHRcdFx0ZGVsZXRlU3BlZWQ6ICduYXR1cmFsJyxcblx0XHRcdGNoYXJTcGFuQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jaGFyJyxcblx0XHRcdHdyYXBwZXJDbGFzc05hbWU6ICd0eXBld3JpdGVyLXdyYXBwZXInLFxuXHRcdFx0bG9vcDogZmFsc2UsXG5cdFx0XHRhdXRvU3RhcnQ6IGZhbHNlLFxuXHRcdFx0ZGV2TW9kZTogZmFsc2Vcblx0XHR9O1xuXG5cdFx0dGhpcy5vcHRpb25zID0gdGhpcy5fc2V0dXBPcHRpb25zKG9wdGlvbnMpO1xuXG5cdFx0dGhpcy5lbCA9IGVsZW1lbnQ7XG5cblx0XHR0aGlzLl9zZXR1cFR5cHdyaXRlcldyYXBwZXIoKTtcblxuXHRcdHRoaXMuX3N0YXJ0Q3Vyc29yQW5pbWF0aW9uKCk7XG5cblx0XHRpZih0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0ID09PSB0cnVlICYmIHRoaXMub3B0aW9ucy5zdHJpbmdzKSB7XG5cdFx0XHR0aGlzLnR5cGVPdXRBbGxTdHJpbmdzKCk7XG5cdFx0fVxuXG5cdH07XG5cblx0dmFyIFR5cGV3cml0ZXJQcm90b3R5cGUgPSB3aW5kb3cuVHlwZXdyaXRlci5wcm90b3R5cGU7XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZSh0aGlzLl9zdG9wRXZlbnRMb29wKVxuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUucmVydW4gPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKHRoaXMuX3JlcnVuQ2FsbGVkRXZlbnRzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnR5cGVTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRpZighc3RyaW5nIHx8IHR5cGVvZiBzdHJpbmcgIT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBzdHJpbmcgYXMgdGhlIHBhcmFtYXRlci4nKTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyhzdHJpbmcpO1xuXG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fdHlwZUNoYXJhY3RlcnMsIFtzdHJpbmdfY2hhcnNdXSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5kZWxldGVBbGwgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgWydhbGwnXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgW2Ftb3VudF1dKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnBhdXNlRm9yID0gZnVuY3Rpb24obXMpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9wYXVzZUZvciwgW21zXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUudHlwZU91dEFsbFN0cmluZ3MgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2hhcmFjdGVyc19hcnJheSA9IHRoaXMuX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkoKTtcblxuXHRcdGlmKGNoYXJhY3RlcnNfYXJyYXkubGVuZ3RoID09PSAxKSB7XG5cdFx0XHR0aGlzLl90eXBlQ2hhcmFjdGVycyhjaGFyYWN0ZXJzX2FycmF5WzBdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yKHZhciBpID0gMCwgbGVuZ3RoID0gY2hhcmFjdGVyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl90eXBlQ2hhcmFjdGVycywgW2NoYXJhY3RlcnNfYXJyYXlbaV1dXSk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLmNoYW5nZVNldHRpbmdzID0gZnVuY3Rpb24obmV3X3NldHRpbmdzKSB7XG5cdFx0aWYoIW5ld19zZXR0aW5ncyAmJiB0eXBlb2YgbmV3X3NldHRpbmdzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgd2lsbCBvbmx5IGFjY2VwdCBhbiBvYmplY3QgYXMgdGhlIHNldHRpbmdzLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2FkZFRvRXZlbnRRdWUoW3RoaXMuX2NoYW5nZVNldHRpbmdzLCBbSlNPTi5zdHJpbmdpZnkobmV3X3NldHRpbmdzKV1dKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VCbGlua1NwZWVkID0gZnVuY3Rpb24obmV3X3NwZWVkKSB7XG5cdFx0aWYoIW5ld19zcGVlZCAmJiB0eXBlb2YgbmV3X3NwZWVkICE9PSAnbnVtYmVyJykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBhIG51bWJlciBmb3IgdGhlIG5ldyBibGluayBzcGVlZC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLmNoYW5nZVNldHRpbmdzKHtcblx0XHRcdGJsaW5rU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VUeXBpbmdTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgdHlwaW5nIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHZhciBuZXdfc2V0dGluZ3MgPSB7XG5cdFx0XHR0eXBpbmdTcGVlZDogbmV3X3NwZWVkXG5cdFx0fTtcblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0dHlwaW5nU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VEZWxldGVTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgZGVsZXRlIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0Y2hhbmdlRGVsZXRlU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcmVydW5DYWxsZWRFdmVudHMgPSBmdW5jdGlvbigpIHtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgncmVydW5DYWxsZWRFdmVudHMnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUgPSB0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHM7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMgPSBbXTtcblx0XHRcdHRoaXMub3B0aW9ucyA9IHRoaXMuX3NldHVwT3B0aW9ucyh0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy51c2VkSURzID0gW107XG5cdFx0XHR0aGlzLmNoYXJBbW91bnRUb0RlbGV0ZSA9IGZhbHNlO1xuXHRcdFx0dGhpcy5fc3RhcnRFdmVudExvb3AoKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblxuXG5cdFx0aWYoYW1vdW50KSB7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBhbW91bnQ7XG5cdFx0fVxuXHRcdHRoaXMuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcGF1c2VGb3IgPSBmdW5jdGlvbihtcykge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHRzZWxmLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRzZWxmLl9yZXNldEV2ZW50TG9vcCgncGF1c2VGb3InKTtcblx0XHR9LCBtcyk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fY2hhbmdlU2V0dGluZ3MgPSBmdW5jdGlvbihuZXdfc2V0dGluZ3MpIHtcblx0XHR0aGlzLm9wdGlvbnMgPSB0aGlzLl9zZXR1cE9wdGlvbnMoSlNPTi5wYXJzZShuZXdfc2V0dGluZ3NbMF0pKTtcblx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgnY2hhbmdlU2V0dGluZ3MnKTtcblxuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnTmV3IHNldHRpbmdzJywgdGhpcy5vcHRpb25zKTtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9kZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHR2YXIgZGVsZXRlX3NwZWVkID0gdGhpcy5vcHRpb25zLmRlbGV0ZVNwZWVkO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHNlbGYub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciBjdXJyZW50X3R5cGVkX2NoYXJfaWRzID0gc2VsZi5fc2V0dGluZ3MuY3VycmVudFR5cGVkQ2hhcmFjdGVycztcblx0XHR2YXIgY2hhcl9hbW91bnRfdG9fZGVsZXRlID0gc2VsZi5fc2V0dGluZ3MuY2hhckFtb3VudFRvRGVsZXRlO1xuXG5cdFx0aWYoIXNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSB8fCBzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPT09IDAgfHwgY3VycmVudF90eXBlZF9jaGFyX2lkcyA9PT0gMCkge1xuXHRcdFx0c2VsZi5fcmVzZXRFdmVudExvb3AoJ2RlbGV0aW5nQ2hhckFuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZihkZWxldGVfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHRkZWxldGVfc3BlZWQgPSBzZWxmLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdGlmKGNoYXJfYW1vdW50X3RvX2RlbGV0ZSA9PSAnYWxsJykge1xuXHRcdFx0Y2hhcl9hbW91bnRfdG9fZGVsZXRlID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGg7XG5cdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGU7XG5cdFx0fVxuXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdGlmKHNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSkge1xuXHRcdFx0XHR2YXIgbGFzdF90eXBlZF9jaGFyX2luZGV4ID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGggLSAxO1xuXHRcdFx0XHR2YXIgZ2V0X2xhc3RfdHlwZWRfY2hhciA9IGN1cnJlbnRfdHlwZWRfY2hhcl9pZHNbbGFzdF90eXBlZF9jaGFyX2luZGV4XTtcblxuXHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLnNwbGljZShsYXN0X3R5cGVkX2NoYXJfaW5kZXgsIDEpO1xuXG5cdFx0XHRcdHZhciBjaGFyX3RvX2RlbGV0ZV9lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXG5cdFx0XHRcdGlmKGNoYXJfdG9fZGVsZXRlX2VsKSB7XG5cdFx0XHRcdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9lbCA9IHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSk7XG5cdFx0XHRcdFx0dHlwZXdyaXRlcl93cmFwcGVyX2VsLnJlbW92ZUNoaWxkKGNoYXJfdG9fZGVsZXRlX2VsKTtcblx0XHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGUgLSAxO1xuXG5cdFx0XHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdEZWxldGVkIGNoYXIgd2l0aCBJRCcsIGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHRcdHNlbGYuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmKSk7XG5cblx0XHR9LCBkZWxldGVfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwT3B0aW9ucyA9IGZ1bmN0aW9uKG5ld19vcHRpb25zKSB7XG5cdCAgICB2YXIgbWVyZ2VkX29wdGlvbnMgPSB7fTtcblxuXHQgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gdGhpcy5kZWZhdWx0X29wdGlvbnMpIHtcblx0ICAgIFx0bWVyZ2VkX29wdGlvbnNbYXR0cm5hbWVdID0gdGhpcy5kZWZhdWx0X29wdGlvbnNbYXR0cm5hbWVdO1xuXHQgICAgfVxuXG5cdCAgICBpZih0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHQgICAgXHRmb3IgKHZhciBhdHRybmFtZSBpbiB0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHRcdCAgICBcdG1lcmdlZF9vcHRpb25zW2F0dHJuYW1lXSA9IHRoaXMuX3NldHRpbmdzLnVzZXJPcHRpb25zW2F0dHJuYW1lXTtcblx0XHQgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBuZXdfb3B0aW9ucykge1xuXHQgICAgXHRtZXJnZWRfb3B0aW9uc1thdHRybmFtZV0gPSBuZXdfb3B0aW9uc1thdHRybmFtZV07XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBtZXJnZWRfb3B0aW9ucztcblx0fVxuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2FkZFRvRXZlbnRRdWUgPSBmdW5jdGlvbihldmVudCkge1xuXHRcdHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLnB1c2goZXZlbnQpO1xuXHRcdGlmKHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA+IDAgJiYgIXRoaXMuX3NldHRpbmdzLmV2ZW50UnVubmluZyAmJiB0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0KSB7XG5cdFx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgbG9vcCBzdGFydGVkLicpO1xuXHRcdH1cblxuXHRcdGlmKCF0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcpIHtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0aGlzLmV2ZW50TG9vcFJlcnVuID0gMDtcblx0XHRcdFx0dmFyIGZpcnN0X2V2ZW50ID0gdGhpcy5fc2V0dGluZ3MuZXZlbnRRdWVbMF07XG5cdFx0XHRcdGlmKHR5cGVvZiBmaXJzdF9ldmVudCA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMucHVzaChmaXJzdF9ldmVudCk7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdGZpcnN0X2V2ZW50LmNhbGwodGhpcyk7XG5cdFx0XHRcdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBzdGFydGVkLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmKGZpcnN0X2V2ZW50IGluc3RhbmNlb2YgQXJyYXkpIHtcblx0XHRcdFx0XHRpZih0eXBlb2YgZmlyc3RfZXZlbnRbMF0gPT0gJ2Z1bmN0aW9uJyAmJiBmaXJzdF9ldmVudFsxXSBpbnN0YW5jZW9mIEFycmF5KSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY2FsbGVkRXZlbnRzLnB1c2goZmlyc3RfZXZlbnQpO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdFx0Zmlyc3RfZXZlbnRbMF0uY2FsbCh0aGlzLCBmaXJzdF9ldmVudFsxXSk7XG5cdFx0XHRcdFx0XHRpZih0aGlzLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgc3RhcnRlZC4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuX2V2ZW50UXVlQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9zdGFydEV2ZW50TG9vcC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cblx0XHRpZighdGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nICYmIHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA8PSAwKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihzZWxmLm9wdGlvbnMubG9vcCkge1xuXHRcdFx0XHRcdHNlbGYuZXZlbnRMb29wUmVydW4rKztcblx0XHRcdFx0XHRpZihzZWxmLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0JlZm9yZSBMb29wIFN0YXRlJywgc2VsZi5fc2V0dGluZ3MpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihzZWxmLmV2ZW50TG9vcFJlcnVuID4gNCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignTWF4aW11bSBhbW91bnQgb2YgbG9vcCByZXRyaWVzIHJlYWNoZWQuJyk7XG5cdFx0XHRcdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmKHNlbGYub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdMb29waW5nIGV2ZW50cy4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHNlbGYuX3JlcnVuQ2FsbGVkRXZlbnRzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMDAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXNldEV2ZW50TG9vcCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0XHR2YXIgZXZlbnRfbmFtZSA9IG5hbWUgfHwgJ0V2ZW50Jztcblx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSBmYWxzZTtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhldmVudF9uYW1lLCAnRmluaXNoZWQnKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fc3RvcEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9ldmVudFF1ZUFuaW1hdGlvbik7XG5cdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBsb29wIHN0b3BwZWQuJyk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwVHlwd3JpdGVyV3JhcHBlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0dHlwZXdyaXRlcl93cmFwcGVyLmNsYXNzTmFtZSA9IHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lO1xuXHRcdHRoaXMuZWwuaW5uZXJIVE1MID0gJyc7XG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZCh0eXBld3JpdGVyX3dyYXBwZXIpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3R5cGVDaGFyYWN0ZXJzID0gZnVuY3Rpb24oY2hhcmFjdGVyc19hcnJheSkge1xuXHRcdHRoaXMuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheSA9IHRoaXMuX2NvbnZlcnRDaGFyc1RvSFRNTChjaGFyYWN0ZXJzX2FycmF5KTtcblx0XHR0aGlzLl90eXBpbmdBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3R5cGluZ0FuaW1hdGlvbkZyYW1lLmJpbmQodGhpcywgY2hhcmFjdGVyc19hcnJheS5sZW5ndGgpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl90eXBpbmdBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKHRvdGFsX2l0ZW1zKSB7XG5cdFx0dmFyIHNlbGYgPSB0aGlzO1xuXHRcdHZhciB0eXBpbmdfc3BlZWQgPSB0aGlzLm9wdGlvbnMudHlwaW5nU3BlZWQ7XG5cdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lID0gc2VsZi5vcHRpb25zLndyYXBwZXJDbGFzc05hbWU7XG5cblx0XHRpZihzZWxmLl9zZXR0aW5ncy5zdHJpbmdUb1R5cGVIVE1MQXJyYXkubGVuZ3RoID09IDApIHtcblx0XHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShzZWxmLl90eXBpbmdBbmltYXRpb24pO1xuXHRcdFx0dGhpcy5fcmVzZXRFdmVudExvb3AoJ3R5cGluZ0FuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZih0eXBpbmdfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHR0eXBpbmdfc3BlZWQgPSB0aGlzLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZWxfaW5uZXJfaHRtbCA9IHNlbGYuZWwuaW5uZXJIVE1MO1xuXHRcdFx0dmFyIGl0ZW1fdG9fdHlwZSA9IHNlbGYuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheVswXTtcblx0XHRcdHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSkuYXBwZW5kQ2hpbGQoaXRlbV90b190eXBlLmVsKTtcblx0XHRcdHNlbGYuX3NldHRpbmdzLmN1cnJlbnRUeXBlZENoYXJhY3RlcnMucHVzaChpdGVtX3RvX3R5cGUuaWQpO1xuXHRcdFx0c2VsZi5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5LnNwbGljZSgwLCAxKTtcblx0XHRcdHNlbGYuX3R5cGluZ0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fdHlwaW5nQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmLCB0b3RhbF9pdGVtcykpO1xuXHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1R5cGVkJywgaXRlbV90b190eXBlKTtcblx0XHRcdH1cblx0XHR9LCB0eXBpbmdfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2NvbnZlcnRDaGFyc1RvSFRNTCA9IGZ1bmN0aW9uKGNoYXJzKSB7XG5cdFx0dmFyIGNoYXJzX2h0bWxfd3JhcF9hcnJheSA9IFtdO1xuXHRcdHZhciBjaGFyX2NsYXNzX25hbWUgPSB0aGlzLm9wdGlvbnMuY2hhclNwYW5DbGFzc05hbWU7XG5cdFx0dmFyIGNoYXJzX2FycmF5ID0gY2hhcnNbMF07XG5cblx0XHRmb3IodmFyIGkgPSAwLCBsZW5ndGggPSBjaGFyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGNoYXJfZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHZhciBjaGFyX2lkID0gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRCgpO1xuXHRcdFx0Y2hhcl9lbGVtZW50LmlkID0gY2hhcl9pZDtcblx0XHRcdGNoYXJfZWxlbWVudC5jbGFzc05hbWUgPSBjaGFyX2NsYXNzX25hbWUgKyAnIHR5cGV3cml0ZXItaXRlbS0nICsgaTtcblx0XHRcdGNoYXJfZWxlbWVudC5pbm5lckhUTUwgPSBjaGFyc19hcnJheVtpXTtcblx0XHRcdGNoYXJzX2h0bWxfd3JhcF9hcnJheS5wdXNoKHtcblx0XHRcdFx0aWQ6IGNoYXJfaWQsXG5cdFx0XHRcdGVsOiBjaGFyX2VsZW1lbnRcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBjaGFyc19odG1sX3dyYXBfYXJyYXk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0Q2hhcmFjdGVycyA9IGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdGlmKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBzdHJpbmcuc3BsaXQoXCJcIik7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0U3RyaW5nc0FzQ2hhcnNBcnJheSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzdHJpbmdzX2FycmF5X2NoZWNrID0gdGhpcy5vcHRpb25zLnN0cmluZ3MgaW5zdGFuY2VvZiBBcnJheTtcblx0XHR2YXIgc3RyaW5nc19zdHJpbmdfY2hlY2sgPSB0eXBlb2YgdGhpcy5vcHRpb25zLnN0cmluZ3MgPT09ICdzdHJpbmcnO1xuXHRcdGlmKCFzdHJpbmdzX2FycmF5X2NoZWNrKSB7XG5cdFx0XHRpZighc3RyaW5nc19zdHJpbmdfY2hlY2spIHtcblx0XHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHN0cmluZ3Mgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhcyB0aGUgaW5wdXQuJyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW3RoaXMub3B0aW9ucy5zdHJpbmdzLnNwbGl0KFwiXCIpXTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nc19jaGFyc19hcnJheSA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMub3B0aW9ucy5zdHJpbmdzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyh0aGlzLm9wdGlvbnMuc3RyaW5nc1tpXSk7XG5cdFx0XHRpZighc3RyaW5nX2NoYXJzKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBvbmx5IHN0cmluZ3MuJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0c3RyaW5nc19jaGFyc19hcnJheS5wdXNoKHN0cmluZ19jaGFycyk7XG4gICAgXHR9XG5cbiAgICBcdHJldHVybiBzdHJpbmdzX2NoYXJzX2FycmF5O1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2N1cnNvckFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0dmFyIGJsaW5rX3NwZWVkID0gdGhpcy5vcHRpb25zLmJsaW5rU3BlZWQ7XG5cdFx0XHR2YXIgb3BhY2l0eV9hbW91bnQgPSAoMS8xMDAwKSAqIGJsaW5rX3NwZWVkO1xuXG5cdFx0XHR2YXIgY3Vyc29yX2VsID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcudHlwZXdyaXRlci1jdXJzb3InKTtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gdHJ1ZSkge1xuXHRcdFx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA+PSAxKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSArPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gZmFsc2UpIHtcblx0XHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgPD0gMCkge1xuXHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLm9wYWNpdHlJbmNyZWFzaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSAtPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0Y3Vyc29yX2VsLnN0eWxlLm9wYWNpdHkgPSB0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eTtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuXHQgICAgdGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fYXBwZW5kVGV4dCwgW3RleHRdXSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuICAgICAgICAgICAgdmFyIGNoYXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jaGFyU3BhbkNsYXNzTmFtZTtcbiAgICAgICAgICAgIHZhciBjaGFyX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICB2YXIgY2hhcl9pZCA9IHRoaXMuX2dlbmVyYXRlVW5pcXVlSUQoKTtcbiAgICAgICAgICAgIGNoYXJfZWxlbWVudC5pZCA9IGNoYXJfaWQ7XG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuY2xhc3NOYW1lID0gY2hhcl9jbGFzc19uYW1lICsgJyBkb20tYXBwZW5kZWQnXG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuaW5uZXJIVE1MID0gdGV4dFxuICAgICAgICAgICAgdmFyIGl0ZW1zID0gIFtdXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogY2hhcl9pZCxcbiAgICAgICAgICAgICAgICBlbDogY2hhcl9lbGVtZW50XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5ID0gaXRlbXNcblxuICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl90eXBpbmdBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMsIDEpKTtcblxuICAgIH1cblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEN1cnNvckFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBjdXJzb3IgPSB0aGlzLm9wdGlvbnMuY3Vyc29yO1xuXHRcdHZhciBjdXJzb3JfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jdXJzb3JDbGFzc05hbWU7XG5cblx0XHR2YXIgY3Vyc29yX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuY2xhc3NOYW1lID0gY3Vyc29yX2NsYXNzX25hbWU7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuaW5uZXJIVE1MID0gY3Vyc29yO1xuXG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZChjdXJzb3JfZWxlbWVudCk7XG5cdFx0aWYodGhpcy5vcHRpb25zLmFuaW1hdGVDdXJzb3IpIHtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3BhdXNlQ3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2N1cnNvckFuaW1hdGlvbik7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJzb3JBbmltYXRpb25QYXVzZWQgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXN0YXJ0Q3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ0N1cnNvciBhbmltYXRpb24gaXMgYWxyZWFkeSBydW5uaW5nLicpXG5cdFx0fVxuXG5cdFx0dGhpcy5fc2V0dGluZ3MuY3Vyc29yQW5pbWF0aW9uUGF1c2VkID0gZmFsc2U7XG5cdFx0dGhpcy5fY3Vyc29yQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9jdXJzb3JBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMpKTtcblx0fTtcblxuXHQvKiBVdGlscyAqL1xuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JbnRlZ2VyID0gZnVuY3Rpb24obWluLCBtYXgpIHtcblx0XHRyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZXh0ID0gXCJcIjtcbiAgICBcdHZhciBwb3NzaWJsZSA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtcblxuICAgIFx0Zm9yKCB2YXIgaT0wOyBpIDwgdGhpcy5fcmFuZG9tSW50ZWdlcig1LCAxNSk7IGkrKyApIHtcbiAgICBcdFx0dGV4dCArPSBwb3NzaWJsZS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9zc2libGUubGVuZ3RoKSk7XG5cdFx0fVxuICAgIFx0cmV0dXJuIHRleHQ7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2VuZXJhdGVVbmlxdWVJRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZW1wX2lkID0gdGhpcy5fcmFuZG9tSUQoKTtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy51c2VkSURzLmluZGV4T2YodGVtcF9pZCkgPT0gLTEpIHtcblx0XHRcdHRoaXMuX3NldHRpbmdzLnVzZWRJRHMucHVzaCh0ZW1wX2lkKTtcblx0XHRcdHJldHVybiB0ZW1wX2lkO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRC5jYWxsKHRoaXMpO1xuXHR9O1xuXG5cbn0pKCk7IiwiLyohIFVJa2l0IDMuMC4wLXJjLjUgfCBodHRwOi8vd3d3LmdldHVpa2l0LmNvbSB8IChjKSAyMDE0IC0gMjAxNyBZT090aGVtZSB8IE1JVCBMaWNlbnNlICovXG5cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSgndWlraXQnLCBmYWN0b3J5KSA6XG4gICAgKGdsb2JhbC5VSWtpdCA9IGZhY3RvcnkoKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIGZ1bmN0aW9uIGJpbmQoZm4sIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gbCA/IGwgPiAxID8gZm4uYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKSA6IGZuLmNhbGwoY29udGV4dCwgYSkgOiBmbi5jYWxsKGNvbnRleHQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciByZWYgPSBPYmplY3QucHJvdG90eXBlO1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IHJlZi5oYXNPd25Qcm9wZXJ0eTtcblxuICAgIGZ1bmN0aW9uIGhhc093bihvYmosIGtleSkge1xuICAgICAgICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG4gICAgfVxuXG4gICAgdmFyIGh5cGhlbmF0ZUNhY2hlID0ge307XG4gICAgdmFyIGh5cGhlbmF0ZVJlID0gLyhbYS16XFxkXSkoW0EtWl0pL2c7XG5cbiAgICBmdW5jdGlvbiBoeXBoZW5hdGUoc3RyKSB7XG5cbiAgICAgICAgaWYgKCEoc3RyIGluIGh5cGhlbmF0ZUNhY2hlKSkge1xuICAgICAgICAgICAgaHlwaGVuYXRlQ2FjaGVbc3RyXSA9IHN0clxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKGh5cGhlbmF0ZVJlLCAnJDEtJDInKVxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGh5cGhlbmF0ZUNhY2hlW3N0cl07XG4gICAgfVxuXG4gICAgdmFyIGNhbWVsaXplUmUgPSAvLShcXHcpL2c7XG5cbiAgICBmdW5jdGlvbiBjYW1lbGl6ZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUmUsIHRvVXBwZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvVXBwZXIoXywgYykge1xuICAgICAgICByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVjZmlyc3Qoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIubGVuZ3RoID8gdG9VcHBlcihudWxsLCBzdHIuY2hhckF0KDApKSArIHN0ci5zbGljZSgxKSA6ICcnO1xuICAgIH1cblxuICAgIHZhciBzdHJQcm90b3R5cGUgPSBTdHJpbmcucHJvdG90eXBlO1xuICAgIHZhciBzdGFydHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuc3RhcnRzV2l0aCB8fCBmdW5jdGlvbiAoc2VhcmNoKSB7IHJldHVybiB0aGlzLmxhc3RJbmRleE9mKHNlYXJjaCwgMCkgPT09IDA7IH07XG5cbiAgICBmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgc2VhcmNoKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoRm4uY2FsbChzdHIsIHNlYXJjaCk7XG4gICAgfVxuXG4gICAgdmFyIGVuZHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuZW5kc1dpdGggfHwgZnVuY3Rpb24gKHNlYXJjaCkgeyByZXR1cm4gdGhpcy5zdWJzdHIoLXNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7IH07XG5cbiAgICBmdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCkge1xuICAgICAgICByZXR1cm4gZW5kc1dpdGhGbi5jYWxsKHN0ciwgc2VhcmNoKTtcbiAgICB9XG5cbiAgICB2YXIgaW5jbHVkZXNGbiA9IGZ1bmN0aW9uIChzZWFyY2gpIHsgcmV0dXJuIH50aGlzLmluZGV4T2Yoc2VhcmNoKTsgfTtcbiAgICB2YXIgaW5jbHVkZXNTdHIgPSBzdHJQcm90b3R5cGUuaW5jbHVkZXMgfHwgaW5jbHVkZXNGbjtcbiAgICB2YXIgaW5jbHVkZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyB8fCBpbmNsdWRlc0ZuO1xuXG4gICAgZnVuY3Rpb24gaW5jbHVkZXMob2JqLCBzZWFyY2gpIHtcbiAgICAgICAgcmV0dXJuIG9iaiAmJiAoaXNTdHJpbmcob2JqKSA/IGluY2x1ZGVzU3RyIDogaW5jbHVkZXNBcnJheSkuY2FsbChvYmosIHNlYXJjaCk7XG4gICAgfVxuXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihvYmopIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT09IE9iamVjdC5wcm90b3R5cGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNXaW5kb3cob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmIG9iaiA9PT0gb2JqLndpbmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RvY3VtZW50KG9iaikge1xuICAgICAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiBvYmoubm9kZVR5cGUgPT09IDk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNKUXVlcnkob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmICEhb2JqLmpxdWVyeTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05vZGUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIE5vZGUgfHwgaXNPYmplY3QoZWxlbWVudCkgJiYgZWxlbWVudC5ub2RlVHlwZSA9PT0gMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05vZGVDb2xsZWN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlTGlzdCB8fCBlbGVtZW50IGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWVyaWModmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBpc1N0cmluZyh2YWx1ZSkgJiYgIWlzTmFOKHZhbHVlIC0gcGFyc2VGbG9hdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQm9vbGVhbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNCb29sZWFuKHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiB2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSAnMScgfHwgdmFsdWUgPT09ICcnXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gJzAnXG4gICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICAgICAgICB2YXIgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuICFpc05hTihudW1iZXIpID8gbnVtYmVyIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9GbG9hdCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSkgfHwgMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b05vZGUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpIHx8IGlzV2luZG93KGVsZW1lbnQpIHx8IGlzRG9jdW1lbnQoZWxlbWVudClcbiAgICAgICAgICAgID8gZWxlbWVudFxuICAgICAgICAgICAgOiBpc05vZGVDb2xsZWN0aW9uKGVsZW1lbnQpIHx8IGlzSlF1ZXJ5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgPyBlbGVtZW50WzBdXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gdG9Ob2RlKGVsZW1lbnRbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbiAgICBmdW5jdGlvbiB0b05vZGVzKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KVxuICAgICAgICAgICAgPyBbZWxlbWVudF1cbiAgICAgICAgICAgIDogaXNOb2RlQ29sbGVjdGlvbihlbGVtZW50KVxuICAgICAgICAgICAgICAgID8gYXJyYXlQcm90by5zbGljZS5jYWxsKGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gZWxlbWVudC5tYXAodG9Ob2RlKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgOiBpc0pRdWVyeShlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlbGVtZW50LnRvQXJyYXkoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0xpc3QodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IGlzU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgICAgID8gdmFsdWUuc3BsaXQoLywoPyFbXihdKlxcKSkvKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBpc051bWVyaWModmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gdG9OdW1iZXIodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDogdG9Cb29sZWFuKHZhbHVlLnRyaW0oKSk7IH0pXG4gICAgICAgICAgICAgICAgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTXModGltZSkge1xuICAgICAgICByZXR1cm4gIXRpbWVcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBlbmRzV2l0aCh0aW1lLCAnbXMnKVxuICAgICAgICAgICAgICAgID8gdG9GbG9hdCh0aW1lKVxuICAgICAgICAgICAgICAgIDogdG9GbG9hdCh0aW1lKSAqIDEwMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3dhcCh2YWx1ZSwgYSwgYikge1xuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKChhICsgXCJ8XCIgKyBiKSwgJ21nJyksIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID09PSBhID8gYiA6IGE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICB0YXJnZXQgPSBPYmplY3QodGFyZ2V0KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJnc1tpXTtcbiAgICAgICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVhY2gob2JqLCBjYikge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICBjYi5jYWxsKG9ialtrZXldLCBvYmpba2V5XSwga2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNvcnRCeShjb2xsZWN0aW9uLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGFbcHJvcF0gPiBiW3Byb3BdXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiBiW3Byb3BdID4gYVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogMDsgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbWluLCBtYXgpIHtcbiAgICAgICAgaWYgKCBtaW4gPT09IHZvaWQgMCApIG1pbiA9IDA7XG4gICAgICAgIGlmICggbWF4ID09PSB2b2lkIDAgKSBtYXggPSAxO1xuXG4gICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChudW1iZXIsIG1pbiksIG1heCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9vcCgpIHt9XG5cbiAgICBmdW5jdGlvbiBpbnRlcnNlY3RSZWN0KHIxLCByMikge1xuICAgICAgICByZXR1cm4gcjEubGVmdCA8PSByMi5yaWdodCAmJlxuICAgICAgICAgICAgcjIubGVmdCA8PSByMS5yaWdodCAmJlxuICAgICAgICAgICAgcjEudG9wIDw9IHIyLmJvdHRvbSAmJlxuICAgICAgICAgICAgcjIudG9wIDw9IHIxLmJvdHRvbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb2ludEluUmVjdChwb2ludCwgcmVjdCkge1xuICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdCh7dG9wOiBwb2ludC55LCBib3R0b206IHBvaW50LnksIGxlZnQ6IHBvaW50LngsIHJpZ2h0OiBwb2ludC54fSwgcmVjdCk7XG4gICAgfVxuXG4gICAgdmFyIERpbWVuc2lvbnMgPSB7XG5cbiAgICAgICAgcmF0aW86IGZ1bmN0aW9uKGRpbWVuc2lvbnMsIHByb3AsIHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgb2JqO1xuXG5cbiAgICAgICAgICAgIHZhciBhUHJvcCA9IHByb3AgPT09ICd3aWR0aCcgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICAgICAgICAgIHJldHVybiAoIG9iaiA9IHt9LCBvYmpbYVByb3BdID0gTWF0aC5yb3VuZCh2YWx1ZSAqIGRpbWVuc2lvbnNbYVByb3BdIC8gZGltZW5zaW9uc1twcm9wXSksIG9ialtwcm9wXSA9IHZhbHVlLCBvYmogKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjb250YWluOiBmdW5jdGlvbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgZGltZW5zaW9ucyA9IGFzc2lnbih7fSwgZGltZW5zaW9ucyk7XG5cbiAgICAgICAgICAgIGVhY2goZGltZW5zaW9ucywgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zW3Byb3BdID4gbWF4RGltZW5zaW9uc1twcm9wXVxuICAgICAgICAgICAgICAgID8gdGhpcyQxLnJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb25zOyB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucztcbiAgICAgICAgfSxcblxuICAgICAgICBjb3ZlcjogZnVuY3Rpb24oZGltZW5zaW9ucywgbWF4RGltZW5zaW9ucykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIGRpbWVuc2lvbnMgPSB0aGlzLmNvbnRhaW4oZGltZW5zaW9ucywgbWF4RGltZW5zaW9ucyk7XG5cbiAgICAgICAgICAgIGVhY2goZGltZW5zaW9ucywgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zW3Byb3BdIDwgbWF4RGltZW5zaW9uc1twcm9wXVxuICAgICAgICAgICAgICAgID8gdGhpcyQxLnJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb25zOyB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucztcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGF0dHIoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcblxuICAgICAgICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBuYW1lKSB7XG4gICAgICAgICAgICAgICAgYXR0cihlbGVtZW50LCBrZXksIG5hbWVba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNhbGwoZWxlbWVudCwgYXR0cihlbGVtZW50LCBuYW1lKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWxlbWVudCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBdHRyKGVsZW1lbnQsIG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUobmFtZSk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUF0dHIoZWxlbWVudCwgbmFtZSkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlcyhlbGVtZW50KTtcbiAgICAgICAgbmFtZS5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIGVsZW1lbnQuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7IH1cbiAgICAgICAgICAgICk7IH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXJBdHRyKGVsZW1lbnQsIGF0dHJpYnV0ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcbiAgICAgICAgYXR0cihlbGVtZW50LCBhdHRyaWJ1dGUsIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPyB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KSA6IHZhbHVlOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXRhKGVsZW1lbnQsIGF0dHJpYnV0ZSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgYXR0cnMgPSBbYXR0cmlidXRlLCAoXCJkYXRhLVwiICsgYXR0cmlidXRlKV07IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGhhc0F0dHIoZWxlbWVudCwgYXR0cnNbaV0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIoZWxlbWVudCwgYXR0cnNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShzZWxlY3RvcikgfHwgZmluZChzZWxlY3RvciwgaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpID8gY29udGV4dCA6IGRvY3VtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBxdWVyeUFsbChzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICB2YXIgbm9kZXMgPSB0b05vZGVzKHNlbGVjdG9yKTtcbiAgICAgICAgcmV0dXJuIG5vZGVzLmxlbmd0aCAmJiBub2RlcyB8fCBmaW5kQWxsKHNlbGVjdG9yLCBpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikgPyBjb250ZXh0IDogZG9jdW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbmQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsICdxdWVyeVNlbGVjdG9yJykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbmRBbGwoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoX3F1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0LCAncXVlcnlTZWxlY3RvckFsbCcpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsIHF1ZXJ5Rm4pIHtcbiAgICAgICAgaWYgKCBjb250ZXh0ID09PSB2b2lkIDAgKSBjb250ZXh0ID0gZG9jdW1lbnQ7XG5cblxuICAgICAgICBpZiAoIXNlbGVjdG9yIHx8ICFpc1N0cmluZyhzZWxlY3RvcikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5yZXBsYWNlKGNvbnRleHRTYW5pdGl6ZVJlLCAnJDEgKicpO1xuXG4gICAgICAgIHZhciByZW1vdmVzO1xuXG4gICAgICAgIGlmIChpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikpIHtcblxuICAgICAgICAgICAgcmVtb3ZlcyA9IFtdO1xuXG4gICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChzZWxlY3RvciwgaSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN0eCA9IGNvbnRleHQ7XG5cbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvclswXSA9PT0gJyEnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9ycyA9IHNlbGVjdG9yLnN1YnN0cigxKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gY2xvc2VzdChjb250ZXh0LnBhcmVudE5vZGUsIHNlbGVjdG9yc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3JzLnNsaWNlKDEpLmpvaW4oJyAnKS50cmltKCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JbMF0gPT09ICctJykge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvcnMkMSA9IHNlbGVjdG9yLnN1YnN0cigxKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSAoY3R4IHx8IGNvbnRleHQpLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IG1hdGNoZXMocHJldiwgc2VsZWN0b3Iuc3Vic3RyKDEpKSA/IHByZXYgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycyQxLnNsaWNlKDEpLmpvaW4oJyAnKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghY3R4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghY3R4LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eC5pZCA9IFwidWstXCIgKyAoRGF0ZS5ub3coKSkgKyBpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2goZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlQXR0cihjdHgsICdpZCcpOyB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFwiI1wiICsgKGVzY2FwZShjdHguaWQpKSArIFwiIFwiICsgc2VsZWN0b3IpO1xuXG4gICAgICAgICAgICB9KS5maWx0ZXIoQm9vbGVhbikuam9pbignLCcpO1xuXG4gICAgICAgICAgICBjb250ZXh0ID0gZG9jdW1lbnQ7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0W3F1ZXJ5Rm5dKHNlbGVjdG9yKTtcblxuICAgICAgICB9IGNhdGNoIChlKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIH0gZmluYWxseSB7XG5cbiAgICAgICAgICAgIHJlbW92ZXMgJiYgcmVtb3Zlcy5mb3JFYWNoKGZ1bmN0aW9uIChyZW1vdmUpIHsgcmV0dXJuIHJlbW92ZSgpOyB9KTtcblxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICB2YXIgY29udGV4dFNlbGVjdG9yUmUgPSAvKF58LClcXHMqWyE+K34tXS87XG4gICAgdmFyIGNvbnRleHRTYW5pdGl6ZVJlID0gLyhbIT4rfi1dKSg/PVxccytbIT4rfi1dfFxccyokKS9nO1xuXG4gICAgZnVuY3Rpb24gaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5tYXRjaChjb250ZXh0U2VsZWN0b3JSZSk7XG4gICAgfVxuXG4gICAgdmFyIGVsUHJvdG8gPSBFbGVtZW50LnByb3RvdHlwZTtcbiAgICB2YXIgbWF0Y2hlc0ZuID0gZWxQcm90by5tYXRjaGVzIHx8IGVsUHJvdG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IGVsUHJvdG8ubXNNYXRjaGVzU2VsZWN0b3I7XG5cbiAgICBmdW5jdGlvbiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXNGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSk7XG4gICAgfVxuXG4gICAgdmFyIGNsb3Nlc3RGbiA9IGVsUHJvdG8uY2xvc2VzdCB8fCBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgICAgdmFyIGFuY2VzdG9yID0gdGhpcztcblxuICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzKGFuY2VzdG9yLCBzZWxlY3RvcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW5jZXN0b3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50Tm9kZTtcblxuICAgICAgICB9IHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3Rvci5ub2RlVHlwZSA9PT0gMSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNsb3Nlc3QoZWxlbWVudCwgc2VsZWN0b3IpIHtcblxuICAgICAgICBpZiAoc3RhcnRzV2l0aChzZWxlY3RvciwgJz4nKSkge1xuICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc05vZGUoZWxlbWVudClcbiAgICAgICAgICAgID8gZWxlbWVudC5wYXJlbnROb2RlICYmIGNsb3Nlc3RGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKVxuICAgICAgICAgICAgOiB0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlICYmIGNsb3Nlc3RGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcmVudHMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgICAgIHZhciBwYXJlbnQgPSB0b05vZGUoZWxlbWVudCkucGFyZW50Tm9kZTtcblxuICAgICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSA9PT0gMSkge1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcyhwYXJlbnQsIHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgfVxuXG4gICAgdmFyIGVzY2FwZUZuID0gd2luZG93LkNTUyAmJiBDU1MuZXNjYXBlIHx8IGZ1bmN0aW9uIChjc3MpIHsgcmV0dXJuIGNzcy5yZXBsYWNlKC8oW15cXHg3Zi1cXHVGRkZGXFx3LV0pL2csIGZ1bmN0aW9uIChtYXRjaCkgeyByZXR1cm4gKFwiXFxcXFwiICsgbWF0Y2gpOyB9KTsgfTtcbiAgICBmdW5jdGlvbiBlc2NhcGUoY3NzKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjc3MpID8gZXNjYXBlRm4uY2FsbChudWxsLCBjc3MpIDogJyc7XG4gICAgfVxuXG4gICAgdmFyIHZvaWRFbGVtZW50cyA9IHtcbiAgICAgICAgYXJlYTogdHJ1ZSxcbiAgICAgICAgYmFzZTogdHJ1ZSxcbiAgICAgICAgYnI6IHRydWUsXG4gICAgICAgIGNvbDogdHJ1ZSxcbiAgICAgICAgZW1iZWQ6IHRydWUsXG4gICAgICAgIGhyOiB0cnVlLFxuICAgICAgICBpbWc6IHRydWUsXG4gICAgICAgIGlucHV0OiB0cnVlLFxuICAgICAgICBrZXlnZW46IHRydWUsXG4gICAgICAgIGxpbms6IHRydWUsXG4gICAgICAgIG1lbnVpdGVtOiB0cnVlLFxuICAgICAgICBtZXRhOiB0cnVlLFxuICAgICAgICBwYXJhbTogdHJ1ZSxcbiAgICAgICAgc291cmNlOiB0cnVlLFxuICAgICAgICB0cmFjazogdHJ1ZSxcbiAgICAgICAgd2JyOiB0cnVlXG4gICAgfTtcbiAgICBmdW5jdGlvbiBpc1ZvaWRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdm9pZEVsZW1lbnRzW2VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpXTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWaXNpYmxlKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCBlbGVtZW50LmdldENsaWVudFJlY3RzKCkubGVuZ3RoOyB9KTtcbiAgICB9XG5cbiAgICB2YXIgc2VsSW5wdXQgPSAnaW5wdXQsc2VsZWN0LHRleHRhcmVhLGJ1dHRvbic7XG4gICAgZnVuY3Rpb24gaXNJbnB1dChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCwgc2VsSW5wdXQpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXIoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2l0aGluKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiAhaXNTdHJpbmcoc2VsZWN0b3IpXG4gICAgICAgICAgICA/IGVsZW1lbnQgPT09IHNlbGVjdG9yIHx8IChpc0RvY3VtZW50KHNlbGVjdG9yKVxuICAgICAgICAgICAgICAgID8gc2VsZWN0b3IuZG9jdW1lbnRFbGVtZW50XG4gICAgICAgICAgICAgICAgOiB0b05vZGUoc2VsZWN0b3IpKS5jb250YWlucyh0b05vZGUoZWxlbWVudCkpIC8vIElFIDExIGRvY3VtZW50IGRvZXMgbm90IGltcGxlbWVudCBjb250YWluc1xuICAgICAgICAgICAgOiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB8fCBjbG9zZXN0KGVsZW1lbnQsIHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuXG4gICAgICAgIHZhciByZWYgPSBnZXRBcmdzKGFyZ3MpO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmWzBdO1xuICAgICAgICB2YXIgdHlwZSA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gcmVmWzJdO1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSByZWZbM107XG4gICAgICAgIHZhciB1c2VDYXB0dXJlID0gcmVmWzRdO1xuXG4gICAgICAgIHRhcmdldCA9IHRvRXZlbnRUYXJnZXQodGFyZ2V0KTtcblxuICAgICAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3RvciwgbGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpc3RlbmVyLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gZGV0YWlsKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9mZih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvZmYodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkge1xuICAgICAgICBpZiAoIHVzZUNhcHR1cmUgPT09IHZvaWQgMCApIHVzZUNhcHR1cmUgPSBmYWxzZTtcblxuICAgICAgICB0YXJnZXQgPSB0b0V2ZW50VGFyZ2V0KHRhcmdldCk7XG4gICAgICAgIHRhcmdldCAmJiB0eXBlLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmNlKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG5cbiAgICAgICAgdmFyIHJlZiA9IGdldEFyZ3MoYXJncyk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gcmVmWzBdO1xuICAgICAgICB2YXIgdHlwZSA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gcmVmWzJdO1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSByZWZbM107XG4gICAgICAgIHZhciB1c2VDYXB0dXJlID0gcmVmWzRdO1xuICAgICAgICB2YXIgY29uZGl0aW9uID0gcmVmWzVdO1xuICAgICAgICB2YXIgb2ZmID0gb24oZWxlbWVudCwgdHlwZSwgc2VsZWN0b3IsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gIWNvbmRpdGlvbiB8fCBjb25kaXRpb24oZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgb2ZmKCk7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgdXNlQ2FwdHVyZSk7XG5cbiAgICAgICAgcmV0dXJuIG9mZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmlnZ2VyKHRhcmdldCwgZXZlbnQsIGRldGFpbCkge1xuICAgICAgICByZXR1cm4gdG9FdmVudFRhcmdldHModGFyZ2V0KS5yZWR1Y2UoZnVuY3Rpb24gKG5vdENhbmNlbGVkLCB0YXJnZXQpIHsgcmV0dXJuIG5vdENhbmNlbGVkICYmIHRhcmdldC5kaXNwYXRjaEV2ZW50KGNyZWF0ZUV2ZW50KGV2ZW50LCB0cnVlLCB0cnVlLCBkZXRhaWwpKTsgfVxuICAgICAgICAgICAgLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVFdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpIHtcbiAgICAgICAgaWYgKCBidWJibGVzID09PSB2b2lkIDAgKSBidWJibGVzID0gdHJ1ZTtcbiAgICAgICAgaWYgKCBjYW5jZWxhYmxlID09PSB2b2lkIDAgKSBjYW5jZWxhYmxlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKGUpKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTsgLy8gSUUgMTFcbiAgICAgICAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpO1xuICAgICAgICAgICAgZSA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0QXJncyhhcmdzKSB7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgICAgICAgICBhcmdzWzBdID0gZmluZChhcmdzWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGFyZ3NbMl0pKSB7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgyLCAwLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZWdhdGUoZWxlbWVudCwgc2VsZWN0b3IsIGxpc3RlbmVyKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgY3VycmVudCA9IHNlbGVjdG9yWzBdID09PSAnPidcbiAgICAgICAgICAgICAgICA/IGZpbmRBbGwoc2VsZWN0b3IsIGVsZW1lbnQpLnJldmVyc2UoKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsZW1lbnQpOyB9KVswXVxuICAgICAgICAgICAgICAgIDogY2xvc2VzdCh0YXJnZXQsIHNlbGVjdG9yKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBlLmRlbGVnYXRlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBlLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzJDEsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRldGFpbChsaXN0ZW5lcikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGlzQXJyYXkoZS5kZXRhaWwpID8gbGlzdGVuZXIuYXBwbHkodm9pZCAwLCBbZV0uY29uY2F0KGUuZGV0YWlsKSkgOiBsaXN0ZW5lcihlKTsgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0V2ZW50VGFyZ2V0KHRhcmdldCkge1xuICAgICAgICByZXR1cm4gJ0V2ZW50VGFyZ2V0JyBpbiB3aW5kb3dcbiAgICAgICAgICAgID8gdGFyZ2V0IGluc3RhbmNlb2YgRXZlbnRUYXJnZXRcbiAgICAgICAgICAgIDogdGFyZ2V0ICYmICdhZGRFdmVudExpc3RlbmVyJyBpbiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9FdmVudFRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIGlzRXZlbnRUYXJnZXQodGFyZ2V0KSA/IHRhcmdldCA6IHRvTm9kZSh0YXJnZXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRXZlbnRUYXJnZXRzKHRhcmdldCkge1xuICAgICAgICByZXR1cm4gaXNFdmVudFRhcmdldCh0YXJnZXQpXG4gICAgICAgICAgICA/IFt0YXJnZXRdXG4gICAgICAgICAgICA6IGlzQXJyYXkodGFyZ2V0KVxuICAgICAgICAgICAgICAgID8gdGFyZ2V0Lm1hcCh0b0V2ZW50VGFyZ2V0KS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICA6IHRvTm9kZXModGFyZ2V0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmV2ZW50Q2xpY2soKSB7XG5cbiAgICAgICAgdmFyIHRpbWVyID0gc2V0VGltZW91dChvbmNlKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuXG4gICAgICAgIH0sIHRydWUpKTtcblxuICAgICAgICB0cmlnZ2VyKGRvY3VtZW50LCAndG91Y2hjYW5jZWwnKTtcblxuICAgIH1cblxuICAgIC8qIGdsb2JhbCBzZXRJbW1lZGlhdGUgKi9cblxuICAgIHZhciBQcm9taXNlJDEgPSAnUHJvbWlzZScgaW4gd2luZG93ID8gd2luZG93LlByb21pc2UgOiBQcm9taXNlRm47XG5cbiAgICB2YXIgRGVmZXJyZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB0aGlzJDEucmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICAgICAgdGhpcyQxLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUHJvbWlzZXMvQSsgcG9seWZpbGwgdjEuMS40IChodHRwczovL2dpdGh1Yi5jb20vYnJhbXN0ZWluL3Byb21pcylcbiAgICAgKi9cblxuICAgIHZhciBSRVNPTFZFRCA9IDA7XG4gICAgdmFyIFJFSkVDVEVEID0gMTtcbiAgICB2YXIgUEVORElORyA9IDI7XG5cbiAgICB2YXIgYXN5bmMgPSAnc2V0SW1tZWRpYXRlJyBpbiB3aW5kb3cgPyBzZXRJbW1lZGlhdGUgOiBzZXRUaW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gUHJvbWlzZUZuKGV4ZWN1dG9yKSB7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IFBFTkRJTkc7XG4gICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGVmZXJyZWQgPSBbXTtcblxuICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXM7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGV4ZWN1dG9yKFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh4KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgUHJvbWlzZUZuLnJlamVjdCA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHJlamVjdChyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFByb21pc2VGbi5yZXNvbHZlID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgcmVzb2x2ZSh4KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFByb21pc2VGbi5hbGwgPSBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcblxuICAgICAgICAgICAgaWYgKGl0ZXJhYmxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZXIoaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSB4O1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PT0gaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZXJhYmxlLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZUZuLnJlc29sdmUoaXRlcmFibGVbaV0pLnRoZW4ocmVzb2x2ZXIoaSksIHJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBQcm9taXNlRm4ucmFjZSA9IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYWJsZS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIFByb21pc2VGbi5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICB2YXIgcCA9IFByb21pc2VGbi5wcm90b3R5cGU7XG5cbiAgICBwLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gcHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2Ugc2V0dGxlZCB3aXRoIGl0c2VsZi4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciB0aGVuID0geCAmJiB4LnRoZW47XG5cbiAgICAgICAgICAgICAgICBpZiAoeCAhPT0gbnVsbCAmJiBpc09iamVjdCh4KSAmJiBpc0Z1bmN0aW9uKHRoZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb21pc2Uuc3RhdGUgPSBSRVNPTFZFRDtcbiAgICAgICAgICAgIHByb21pc2UudmFsdWUgPSB4O1xuICAgICAgICAgICAgcHJvbWlzZS5ub3RpZnkoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwLnJlamVjdCA9IGZ1bmN0aW9uIHJlamVjdChyZWFzb24pIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgICAgICAgICBpZiAocmVhc29uID09PSBwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZSBzZXR0bGVkIHdpdGggaXRzZWxmLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9taXNlLnN0YXRlID0gUkVKRUNURUQ7XG4gICAgICAgICAgICBwcm9taXNlLnZhbHVlID0gcmVhc29uO1xuICAgICAgICAgICAgcHJvbWlzZS5ub3RpZnkoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSgpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgYXN5bmMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSAhPT0gUEVORElORykge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzJDEuZGVmZXJyZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzJDEuZGVmZXJyZWQuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9uUmVzb2x2ZWQgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvblJlamVjdGVkID0gcmVmWzFdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZSA9IHJlZlsyXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlamVjdCA9IHJlZlszXTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVTT0xWRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvblJlc29sdmVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uUmVzb2x2ZWQuY2FsbCh1bmRlZmluZWQsIHRoaXMkMS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcyQxLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVKRUNURUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvblJlamVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uUmVqZWN0ZWQuY2FsbCh1bmRlZmluZWQsIHRoaXMkMS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCh0aGlzJDEudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcC50aGVuID0gZnVuY3Rpb24gdGhlbihvblJlc29sdmVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRoaXMkMS5kZWZlcnJlZC5wdXNoKFtvblJlc29sdmVkLCBvblJlamVjdGVkLCByZXNvbHZlLCByZWplY3RdKTtcbiAgICAgICAgICAgIHRoaXMkMS5ub3RpZnkoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHAuY2F0Y2ggPSBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGFqYXgodXJsLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgdmFyIGVudiA9IGFzc2lnbih7XG4gICAgICAgICAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICAgICAgICAgIHhocjogbmV3IFhNTEh0dHBSZXF1ZXN0KCksXG4gICAgICAgICAgICAgICAgYmVmb3JlU2VuZDogbm9vcCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICcnXG4gICAgICAgICAgICB9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgZW52LmJlZm9yZVNlbmQoZW52KTtcblxuICAgICAgICAgICAgdmFyIHhociA9IGVudi54aHI7XG5cbiAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gZW52KSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3AgaW4geGhyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHhocltwcm9wXSA9IGVudltwcm9wXTtcblxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeGhyLm9wZW4oZW52Lm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB1cmwpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gZW52LmhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkZXIsIGVudi5oZWFkZXJzW2hlYWRlcl0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvbih4aHIsICdsb2FkJywgZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDAgfHwgeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCB8fCB4aHIuc3RhdHVzID09PSAzMDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh4aHIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChhc3NpZ24oRXJyb3IoeGhyLnN0YXR1c1RleHQpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4aHI6IHhocixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogeGhyLnN0YXR1c1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgb24oeGhyLCAnZXJyb3InLCBmdW5jdGlvbiAoKSB7IHJldHVybiByZWplY3QoYXNzaWduKEVycm9yKCdOZXR3b3JrIEVycm9yJyksIHt4aHI6IHhocn0pKTsgfSk7XG4gICAgICAgICAgICBvbih4aHIsICd0aW1lb3V0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVqZWN0KGFzc2lnbihFcnJvcignTmV0d29yayBUaW1lb3V0JyksIHt4aHI6IHhocn0pKTsgfSk7XG5cbiAgICAgICAgICAgIHhoci5zZW5kKGVudi5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SW1hZ2Uoc3JjLCBzcmNzZXQsIHNpemVzKSB7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuXG4gICAgICAgICAgICBpbWcub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKGltZyk7IH07XG5cbiAgICAgICAgICAgIGltZy5zcmMgPSBzcmM7XG4gICAgICAgICAgICBzcmNzZXQgJiYgKGltZy5zcmNzZXQgPSBzcmNzZXQpO1xuICAgICAgICAgICAgc2l6ZXMgJiYgKGltZy5zaXplcyA9IHNpemVzKTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1JlYWR5KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyB8fCBkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAnbG9hZGluZycgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkeShmbikge1xuXG4gICAgICAgIGlmIChpc1JlYWR5KCkpIHtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaGFuZGxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdW5iaW5kMSgpO1xuICAgICAgICAgICAgdW5iaW5kMigpO1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVuYmluZDEgPSBvbihkb2N1bWVudCwgJ0RPTUNvbnRlbnRMb2FkZWQnLCBoYW5kbGUpO1xuICAgICAgICB2YXIgdW5iaW5kMiA9IG9uKHdpbmRvdywgJ2xvYWQnLCBoYW5kbGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluZGV4KGVsZW1lbnQsIHJlZikge1xuICAgICAgICByZXR1cm4gcmVmXG4gICAgICAgICAgICA/IHRvTm9kZXMoZWxlbWVudCkuaW5kZXhPZih0b05vZGUocmVmKSlcbiAgICAgICAgICAgIDogdG9Ob2RlcygoZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KSkgJiYgZWxlbWVudC5wYXJlbnROb2RlLmNoaWxkcmVuKS5pbmRleE9mKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEluZGV4KGksIGVsZW1lbnRzLCBjdXJyZW50LCBmaW5pdGUpIHtcbiAgICAgICAgaWYgKCBjdXJyZW50ID09PSB2b2lkIDAgKSBjdXJyZW50ID0gMDtcbiAgICAgICAgaWYgKCBmaW5pdGUgPT09IHZvaWQgMCApIGZpbml0ZSA9IGZhbHNlO1xuXG5cbiAgICAgICAgZWxlbWVudHMgPSB0b05vZGVzKGVsZW1lbnRzKTtcblxuICAgICAgICB2YXIgbGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuXG4gICAgICAgIGkgPSBpc051bWVyaWMoaSlcbiAgICAgICAgICAgID8gdG9OdW1iZXIoaSlcbiAgICAgICAgICAgIDogaSA9PT0gJ25leHQnXG4gICAgICAgICAgICAgICAgPyBjdXJyZW50ICsgMVxuICAgICAgICAgICAgICAgIDogaSA9PT0gJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbnQgLSAxXG4gICAgICAgICAgICAgICAgICAgIDogaW5kZXgoZWxlbWVudHMsIGkpO1xuXG4gICAgICAgIGlmIChmaW5pdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjbGFtcChpLCAwLCBsZW5ndGggLSAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgJT0gbGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBpIDwgMCA/IGkgKyBsZW5ndGggOiBpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtcHR5KGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHRtbChwYXJlbnQsIGh0bWwpIHtcbiAgICAgICAgcGFyZW50ID0gdG9Ob2RlKHBhcmVudCk7XG4gICAgICAgIHJldHVybiBpc1VuZGVmaW5lZChodG1sKVxuICAgICAgICAgICAgPyBwYXJlbnQuaW5uZXJIVE1MXG4gICAgICAgICAgICA6IGFwcGVuZChwYXJlbnQuaGFzQ2hpbGROb2RlcygpID8gZW1wdHkocGFyZW50KSA6IHBhcmVudCwgaHRtbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcGVuZChwYXJlbnQsIGVsZW1lbnQpIHtcblxuICAgICAgICBwYXJlbnQgPSB0b05vZGUocGFyZW50KTtcblxuICAgICAgICBpZiAoIXBhcmVudC5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBlbmQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCBwYXJlbnQuZmlyc3RDaGlsZCk7IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwZW5kKHBhcmVudCwgZWxlbWVudCkge1xuICAgICAgICBwYXJlbnQgPSB0b05vZGUocGFyZW50KTtcbiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJlZm9yZShyZWYsIGVsZW1lbnQpIHtcbiAgICAgICAgcmVmID0gdG9Ob2RlKHJlZik7XG4gICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcmVmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHJlZik7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFmdGVyKHJlZiwgZWxlbWVudCkge1xuICAgICAgICByZWYgPSB0b05vZGUocmVmKTtcbiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiByZWYubmV4dFNpYmxpbmdcbiAgICAgICAgICAgID8gYmVmb3JlKHJlZi5uZXh0U2libGluZywgZWxlbWVudClcbiAgICAgICAgICAgIDogYXBwZW5kKHJlZi5wYXJlbnROb2RlLCBlbGVtZW50KTsgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc2VydE5vZGVzKGVsZW1lbnQsIGZuKSB7XG4gICAgICAgIGVsZW1lbnQgPSBpc1N0cmluZyhlbGVtZW50KSA/IGZyYWdtZW50KGVsZW1lbnQpIDogZWxlbWVudDtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRcbiAgICAgICAgICAgID8gJ2xlbmd0aCcgaW4gZWxlbWVudFxuICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZm4pXG4gICAgICAgICAgICAgICAgOiBmbihlbGVtZW50KVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgIHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGUgJiYgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3cmFwQWxsKGVsZW1lbnQsIHN0cnVjdHVyZSkge1xuXG4gICAgICAgIHN0cnVjdHVyZSA9IHRvTm9kZShiZWZvcmUoZWxlbWVudCwgc3RydWN0dXJlKSk7XG5cbiAgICAgICAgd2hpbGUgKHN0cnVjdHVyZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGVuZChzdHJ1Y3R1cmUsIGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd3JhcElubmVyKGVsZW1lbnQsIHN0cnVjdHVyZSkge1xuICAgICAgICByZXR1cm4gdG9Ob2Rlcyh0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNDaGlsZE5vZGVzID8gd3JhcEFsbCh0b05vZGVzKGVsZW1lbnQuY2hpbGROb2RlcyksIHN0cnVjdHVyZSkgOiBhcHBlbmQoZWxlbWVudCwgc3RydWN0dXJlKTsgfVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bndyYXAoZWxlbWVudCkge1xuICAgICAgICB0b05vZGVzKGVsZW1lbnQpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGU7IH0pXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHsgcmV0dXJuIHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4OyB9KVxuICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIGJlZm9yZShwYXJlbnQsIHBhcmVudC5jaGlsZE5vZGVzKTtcbiAgICAgICAgICAgICAgICByZW1vdmUocGFyZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmcmFnbWVudFJlID0gL15cXHMqPChcXHcrfCEpW14+XSo+LztcbiAgICB2YXIgc2luZ2xlVGFnUmUgPSAvXjwoXFx3KylcXHMqXFwvPz4oPzo8XFwvXFwxPik/JC87XG5cbiAgICBmdW5jdGlvbiBmcmFnbWVudChodG1sKSB7XG5cbiAgICAgICAgdmFyIG1hdGNoZXMgPSBzaW5nbGVUYWdSZS5leGVjKGh0bWwpO1xuICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobWF0Y2hlc1sxXSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGlmIChmcmFnbWVudFJlLnRlc3QoaHRtbCkpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGh0bWwudHJpbSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci50ZXh0Q29udGVudCA9IGh0bWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/IHRvTm9kZXMoY29udGFpbmVyLmNoaWxkTm9kZXMpIDogY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseShub2RlLCBmbikge1xuXG4gICAgICAgIGlmICghbm9kZSB8fCBub2RlLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmbihub2RlKTtcbiAgICAgICAgbm9kZSA9IG5vZGUuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICBhcHBseShub2RlLCBmbik7XG4gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgICAgICAgYXBwbHkkMShlbGVtZW50LCBhcmdzLCAnYWRkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gICAgICAgIGFwcGx5JDEoZWxlbWVudCwgYXJncywgJ3JlbW92ZScpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMoZWxlbWVudCwgY2xzKSB7XG4gICAgICAgIGZpbHRlckF0dHIoZWxlbWVudCwgJ2NsYXNzJywgbmV3IFJlZ0V4cCgoXCIoXnxcXFxccylcIiArIGNscyArIFwiKD8hXFxcXFMpXCIpLCAnZycpLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUNsYXNzKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICBhcmdzWzBdICYmIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGFyZ3NbMF0pO1xuICAgICAgICBhcmdzWzFdICYmIGFkZENsYXNzKGVsZW1lbnQsIGFyZ3NbMV0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNscykge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbHMpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b2dnbGVDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cblxuICAgICAgICBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzID0gZ2V0QXJncyQxKGFyZ3MpO1xuXG4gICAgICAgIHZhciBmb3JjZSA9ICFpc1N0cmluZyhhcmdzW2FyZ3MubGVuZ3RoIC0gMV0pID8gYXJncy5wb3AoKSA6IFtdOyAvLyBpbiBpT1MgOS4zIGZvcmNlID09PSB1bmRlZmluZWQgZXZhbHVhdGVzIHRvIGZhbHNlXG5cbiAgICAgICAgYXJncyA9IGFyZ3MuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgIHRvTm9kZXMoZWxlbWVudCkuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgY2xhc3NMaXN0ID0gcmVmLmNsYXNzTGlzdDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydHMuRm9yY2VcbiAgICAgICAgICAgICAgICAgICAgPyBjbGFzc0xpc3QudG9nZ2xlLmFwcGx5KGNsYXNzTGlzdCwgW2FyZ3NbaV1dLmNvbmNhdChmb3JjZSkpXG4gICAgICAgICAgICAgICAgICAgIDogKGNsYXNzTGlzdFsoIWlzVW5kZWZpbmVkKGZvcmNlKSA/IGZvcmNlIDogIWNsYXNzTGlzdC5jb250YWlucyhhcmdzW2ldKSkgPyAnYWRkJyA6ICdyZW1vdmUnXShhcmdzW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHkkMShlbGVtZW50LCBhcmdzLCBmbikge1xuICAgICAgICBhcmdzID0gZ2V0QXJncyQxKGFyZ3MpLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICBhcmdzLmxlbmd0aCAmJiB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGNsYXNzTGlzdCA9IHJlZi5jbGFzc0xpc3Q7XG5cbiAgICAgICAgICAgIHN1cHBvcnRzLk11bHRpcGxlXG4gICAgICAgICAgICAgICAgPyBjbGFzc0xpc3RbZm5dLmFwcGx5KGNsYXNzTGlzdCwgYXJncylcbiAgICAgICAgICAgICAgICA6IGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7IHJldHVybiBjbGFzc0xpc3RbZm5dKGNscyk7IH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRBcmdzJDEoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncy5yZWR1Y2UoZnVuY3Rpb24gKGFyZ3MsIGFyZykgeyByZXR1cm4gYXJncy5jb25jYXQuY2FsbChhcmdzLCBpc1N0cmluZyhhcmcpICYmIGluY2x1ZGVzKGFyZywgJyAnKSA/IGFyZy50cmltKCkuc3BsaXQoJyAnKSA6IGFyZyk7IH1cbiAgICAgICAgICAgICwgW10pO1xuICAgIH1cblxuICAgIHZhciBzdXBwb3J0cyA9IHt9O1xuXG4gICAgLy8gSUUgMTFcbiAgICAoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnXycpLmNsYXNzTGlzdDtcbiAgICAgICAgaWYgKGxpc3QpIHtcbiAgICAgICAgICAgIGxpc3QuYWRkKCdhJywgJ2InKTtcbiAgICAgICAgICAgIGxpc3QudG9nZ2xlKCdjJywgZmFsc2UpO1xuICAgICAgICAgICAgc3VwcG9ydHMuTXVsdGlwbGUgPSBsaXN0LmNvbnRhaW5zKCdiJyk7XG4gICAgICAgICAgICBzdXBwb3J0cy5Gb3JjZSA9ICFsaXN0LmNvbnRhaW5zKCdjJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGlzdCA9IG51bGw7XG5cbiAgICB9KSgpO1xuXG4gICAgdmFyIGNzc051bWJlciA9IHtcbiAgICAgICAgJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnOiB0cnVlLFxuICAgICAgICAnY29sdW1uLWNvdW50JzogdHJ1ZSxcbiAgICAgICAgJ2ZpbGwtb3BhY2l0eSc6IHRydWUsXG4gICAgICAgICdmbGV4LWdyb3cnOiB0cnVlLFxuICAgICAgICAnZmxleC1zaHJpbmsnOiB0cnVlLFxuICAgICAgICAnZm9udC13ZWlnaHQnOiB0cnVlLFxuICAgICAgICAnbGluZS1oZWlnaHQnOiB0cnVlLFxuICAgICAgICAnb3BhY2l0eSc6IHRydWUsXG4gICAgICAgICdvcmRlcic6IHRydWUsXG4gICAgICAgICdvcnBoYW5zJzogdHJ1ZSxcbiAgICAgICAgJ3dpZG93cyc6IHRydWUsXG4gICAgICAgICd6LWluZGV4JzogdHJ1ZSxcbiAgICAgICAgJ3pvb20nOiB0cnVlXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNzcyhlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpIHtcblxuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHByb3BlcnR5KSkge1xuXG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwcm9wTmFtZShwcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdHlsZShlbGVtZW50LCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBpc051bWVyaWModmFsdWUpICYmICFjc3NOdW1iZXJbcHJvcGVydHldID8gKHZhbHVlICsgXCJweFwiKSA6IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHByb3BlcnR5KSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHN0eWxlcyA9IGdldFN0eWxlcyhlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1twcm9wZXJ0eV0gPSBzdHlsZXNbcHJvcE5hbWUocHJvcGVydHkpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChwcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICBlYWNoKHByb3BlcnR5LCBmdW5jdGlvbiAodmFsdWUsIHByb3BlcnR5KSB7IHJldHVybiBjc3MoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuXG4gICAgICAgIH0pWzBdO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U3R5bGVzKGVsZW1lbnQsIHBzZXVkb0VsdCkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTdHlsZShlbGVtZW50LCBwcm9wZXJ0eSwgcHNldWRvRWx0KSB7XG4gICAgICAgIHJldHVybiBnZXRTdHlsZXMoZWxlbWVudCwgcHNldWRvRWx0KVtwcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgdmFyIHZhcnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGdldENzc1ZhcihuYW1lKSB7XG5cbiAgICAgICAgaWYgKCEobmFtZSBpbiB2YXJzKSkge1xuXG4gICAgICAgICAgICAvKiB1c2FnZSBpbiBjc3M6IC52YXItbmFtZTpiZWZvcmUgeyBjb250ZW50OlwieHl6XCIgfSAqL1xuXG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGFwcGVuZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcblxuICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgKFwidmFyLVwiICsgbmFtZSkpO1xuXG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgICAgdmFyc1tuYW1lXSA9IGdldFN0eWxlKGVsZW1lbnQsICdjb250ZW50JywgJzpiZWZvcmUnKS5yZXBsYWNlKC9eW1wiJ10oLiopW1wiJ10kLywgJyQxJyk7XG4gICAgICAgICAgICAgICAgdmFyc1tuYW1lXSA9IEpTT04ucGFyc2UodmFyc1tuYW1lXSk7XG5cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhcnNbbmFtZV07XG5cbiAgICB9XG5cbiAgICB2YXIgY3NzUHJvcHMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIHByb3BOYW1lKG5hbWUpIHtcblxuICAgICAgICB2YXIgcmV0ID0gY3NzUHJvcHNbbmFtZV07XG4gICAgICAgIGlmICghcmV0KSB7XG4gICAgICAgICAgICByZXQgPSBjc3NQcm9wc1tuYW1lXSA9IHZlbmRvclByb3BOYW1lKG5hbWUpIHx8IG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICB2YXIgY3NzUHJlZml4ZXMgPSBbJ3dlYmtpdCcsICdtb3onLCAnbXMnXTtcbiAgICB2YXIgcmVmJDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdfJyk7XG4gICAgdmFyIHN0eWxlID0gcmVmJDEuc3R5bGU7XG5cbiAgICBmdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZShuYW1lKSB7XG5cbiAgICAgICAgbmFtZSA9IGh5cGhlbmF0ZShuYW1lKTtcblxuICAgICAgICBpZiAobmFtZSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IGNzc1ByZWZpeGVzLmxlbmd0aCwgcHJlZml4ZWROYW1lO1xuXG4gICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgIHByZWZpeGVkTmFtZSA9IFwiLVwiICsgKGNzc1ByZWZpeGVzW2ldKSArIFwiLVwiICsgbmFtZTtcbiAgICAgICAgICAgIGlmIChwcmVmaXhlZE5hbWUgaW4gc3R5bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ZWROYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNpdGlvbihlbGVtZW50LCBwcm9wcywgZHVyYXRpb24sIHRpbWluZykge1xuICAgICAgICBpZiAoIGR1cmF0aW9uID09PSB2b2lkIDAgKSBkdXJhdGlvbiA9IDQwMDtcbiAgICAgICAgaWYgKCB0aW1pbmcgPT09IHZvaWQgMCApIHRpbWluZyA9ICdsaW5lYXInO1xuXG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UkMS5hbGwodG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcm9wcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjc3MoZWxlbWVudCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRyaWdnZXIoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnKTsgfSwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgb25jZShlbGVtZW50LCAndHJhbnNpdGlvbmVuZCB0cmFuc2l0aW9uY2FuY2VsZWQnLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG5cbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JzogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJzogJydcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICd0cmFuc2l0aW9uY2FuY2VsZWQnID8gcmVqZWN0KCkgOiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSwgZmFsc2UsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IHRhcmdldDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQsICd1ay10cmFuc2l0aW9uJyk7XG4gICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIGFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JzogT2JqZWN0LmtleXMocHJvcHMpLm1hcChwcm9wTmFtZSkuam9pbignLCcpLFxuICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IChkdXJhdGlvbiArIFwibXNcIiksXG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbic6IHRpbWluZ1xuICAgICAgICAgICAgICAgIH0sIHByb3BzKSk7XG5cbiAgICAgICAgICAgIH0pOyB9XG4gICAgICAgICkpO1xuXG4gICAgfVxuXG4gICAgdmFyIFRyYW5zaXRpb24gPSB7XG5cbiAgICAgICAgc3RhcnQ6IHRyYW5zaXRpb24sXG5cbiAgICAgICAgc3RvcDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICd0cmFuc2l0aW9uY2FuY2VsZWQnKTtcbiAgICAgICAgfSxcblxuICAgICAgICBpblByb2dyZXNzOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBhbmltYXRpb25QcmVmaXggPSAndWstYW5pbWF0aW9uLSc7XG4gICAgdmFyIGNsc0NhbmNlbEFuaW1hdGlvbiA9ICd1ay1jYW5jZWwtYW5pbWF0aW9uJztcblxuICAgIGZ1bmN0aW9uIGFuaW1hdGUoZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luLCBvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAoIGR1cmF0aW9uID09PSB2b2lkIDAgKSBkdXJhdGlvbiA9IDIwMDtcblxuXG4gICAgICAgIHJldHVybiBQcm9taXNlJDEuYWxsKHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyhlbGVtZW50LCBjbHNDYW5jZWxBbmltYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gYW5pbWF0ZS5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyQxKS50aGVuKHJlc29sdmUsIHJlamVjdCk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBjbHMgPSBhbmltYXRpb24gKyBcIiBcIiArIGFuaW1hdGlvblByZWZpeCArIChvdXQgPyAnbGVhdmUnIDogJ2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChhbmltYXRpb24sIGFuaW1hdGlvblByZWZpeCkpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHMgKz0gXCIgdWstdHJhbnNmb3JtLW9yaWdpbi1cIiArIG9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNscyArPSBcIiBcIiArIGFuaW1hdGlvblByZWZpeCArIFwicmV2ZXJzZVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgICAgICAgb25jZShlbGVtZW50LCAnYW5pbWF0aW9uZW5kIGFuaW1hdGlvbmNhbmNlbCcsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBoYXNSZXNldCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnYW5pbWF0aW9uY2FuY2VsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgUHJvbWlzZSQxLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNSZXNldCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzUmVzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LCBjbHNDYW5jZWxBbmltYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsc0NhbmNlbEFuaW1hdGlvbik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0sIGZhbHNlLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09PSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgKGR1cmF0aW9uICsgXCJtc1wiKSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgY2xzKTtcblxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJycpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2VzKGVsZW1lbnQsIChhbmltYXRpb25QcmVmaXggKyBcIlxcXFxTKlwiKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTsgfVxuICAgICAgICApKTtcblxuICAgIH1cblxuICAgIHZhciBpblByb2dyZXNzID0gbmV3IFJlZ0V4cCgoYW5pbWF0aW9uUHJlZml4ICsgXCIoZW50ZXJ8bGVhdmUpXCIpKTtcbiAgICB2YXIgQW5pbWF0aW9uID0ge1xuXG4gICAgICAgIGluOiBmdW5jdGlvbihlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBhbmltYXRlKGVsZW1lbnQsIGFuaW1hdGlvbiwgZHVyYXRpb24sIG9yaWdpbiwgZmFsc2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dDogZnVuY3Rpb24oZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gYW5pbWF0ZShlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4sIHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGluUHJvZ3Jlc3M6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpblByb2dyZXNzLnRlc3QoYXR0cihlbGVtZW50LCAnY2xhc3MnKSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICdhbmltYXRpb25jYW5jZWwnKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uICQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgICAgID8gdG9Ob2RlKHNlbGVjdG9yKVxuICAgICAgICAgICAgOiBpc0h0bWwoc2VsZWN0b3IpXG4gICAgICAgICAgICAgICAgPyB0b05vZGUoZnJhZ21lbnQoc2VsZWN0b3IpKVxuICAgICAgICAgICAgICAgIDogZmluZChzZWxlY3RvciwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gJCQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgICAgID8gdG9Ob2RlcyhzZWxlY3RvcilcbiAgICAgICAgICAgIDogaXNIdG1sKHNlbGVjdG9yKVxuICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhmcmFnbWVudChzZWxlY3RvcikpXG4gICAgICAgICAgICAgICAgOiBmaW5kQWxsKHNlbGVjdG9yLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0h0bWwoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHJbMF0gPT09ICc8JyB8fCBzdHIubWF0Y2goL15cXHMqPC8pO1xuICAgIH1cblxuICAgIHZhciBkaXJzID0ge1xuICAgICAgICB3aWR0aDogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgaGVpZ2h0OiBbJ3knLCAndG9wJywgJ2JvdHRvbSddXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBvc2l0aW9uQXQoZWxlbWVudCwgdGFyZ2V0LCBlbEF0dGFjaCwgdGFyZ2V0QXR0YWNoLCBlbE9mZnNldCwgdGFyZ2V0T2Zmc2V0LCBmbGlwLCBib3VuZGFyeSkge1xuXG4gICAgICAgIGVsQXR0YWNoID0gZ2V0UG9zKGVsQXR0YWNoKTtcbiAgICAgICAgdGFyZ2V0QXR0YWNoID0gZ2V0UG9zKHRhcmdldEF0dGFjaCk7XG5cbiAgICAgICAgdmFyIGZsaXBwZWQgPSB7ZWxlbWVudDogZWxBdHRhY2gsIHRhcmdldDogdGFyZ2V0QXR0YWNofTtcblxuICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIXRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIGZsaXBwZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGltID0gZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICAgICAgdmFyIHRhcmdldERpbSA9IGdldERpbWVuc2lvbnModGFyZ2V0KTtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gdGFyZ2V0RGltO1xuXG4gICAgICAgIG1vdmVUbyhwb3NpdGlvbiwgZWxBdHRhY2gsIGRpbSwgLTEpO1xuICAgICAgICBtb3ZlVG8ocG9zaXRpb24sIHRhcmdldEF0dGFjaCwgdGFyZ2V0RGltLCAxKTtcblxuICAgICAgICBlbE9mZnNldCA9IGdldE9mZnNldHMoZWxPZmZzZXQsIGRpbS53aWR0aCwgZGltLmhlaWdodCk7XG4gICAgICAgIHRhcmdldE9mZnNldCA9IGdldE9mZnNldHModGFyZ2V0T2Zmc2V0LCB0YXJnZXREaW0ud2lkdGgsIHRhcmdldERpbS5oZWlnaHQpO1xuXG4gICAgICAgIGVsT2Zmc2V0Wyd4J10gKz0gdGFyZ2V0T2Zmc2V0Wyd4J107XG4gICAgICAgIGVsT2Zmc2V0Wyd5J10gKz0gdGFyZ2V0T2Zmc2V0Wyd5J107XG5cbiAgICAgICAgcG9zaXRpb24ubGVmdCArPSBlbE9mZnNldFsneCddO1xuICAgICAgICBwb3NpdGlvbi50b3AgKz0gZWxPZmZzZXRbJ3knXTtcblxuICAgICAgICBib3VuZGFyeSA9IGdldERpbWVuc2lvbnMoYm91bmRhcnkgfHwgd2luZG93JDEoZWxlbWVudCkpO1xuXG4gICAgICAgIGlmIChmbGlwKSB7XG4gICAgICAgICAgICBlYWNoKGRpcnMsIGZ1bmN0aW9uIChyZWYsIHByb3ApIHtcbiAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHZhciBhbGlnbiA9IHJlZlsxXTtcbiAgICAgICAgICAgICAgICB2YXIgYWxpZ25GbGlwID0gcmVmWzJdO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIShmbGlwID09PSB0cnVlIHx8IGluY2x1ZGVzKGZsaXAsIGRpcikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgZWxlbU9mZnNldCA9IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduXG4gICAgICAgICAgICAgICAgICAgID8gLWRpbVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA6IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduRmxpcFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBkaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRPZmZzZXQgPSB0YXJnZXRBdHRhY2hbZGlyXSA9PT0gYWxpZ25cbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXREaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgOiB0YXJnZXRBdHRhY2hbZGlyXSA9PT0gYWxpZ25GbGlwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IC10YXJnZXREaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvblthbGlnbl0gPCBib3VuZGFyeVthbGlnbl0gfHwgcG9zaXRpb25bYWxpZ25dICsgZGltW3Byb3BdID4gYm91bmRhcnlbYWxpZ25GbGlwXSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXJPZmZzZXQgPSBkaW1bcHJvcF0gLyAyO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VudGVyVGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0QXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInID8gLXRhcmdldERpbVtwcm9wXSAvIDIgOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGVsQXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5KGNlbnRlck9mZnNldCwgY2VudGVyVGFyZ2V0T2Zmc2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgYXBwbHkoLWNlbnRlck9mZnNldCwgLWNlbnRlclRhcmdldE9mZnNldClcbiAgICAgICAgICAgICAgICAgICAgKSB8fCBhcHBseShlbGVtT2Zmc2V0LCB0YXJnZXRPZmZzZXQpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gYXBwbHkoZWxlbU9mZnNldCwgdGFyZ2V0T2Zmc2V0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1ZhbCA9IHBvc2l0aW9uW2FsaWduXSArIGVsZW1PZmZzZXQgKyB0YXJnZXRPZmZzZXQgLSBlbE9mZnNldFtkaXJdICogMjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsID49IGJvdW5kYXJ5W2FsaWduXSAmJiBuZXdWYWwgKyBkaW1bcHJvcF0gPD0gYm91bmRhcnlbYWxpZ25GbGlwXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25bYWxpZ25dID0gbmV3VmFsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBbJ2VsZW1lbnQnLCAndGFyZ2V0J10uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwcGVkW2VsXVtkaXJdID0gIWVsZW1PZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmbGlwcGVkW2VsXVtkaXJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmxpcHBlZFtlbF1bZGlyXSA9PT0gZGlyc1twcm9wXVsxXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkaXJzW3Byb3BdWzJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRpcnNbcHJvcF1bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBvZmZzZXQoZWxlbWVudCwgcG9zaXRpb24pO1xuXG4gICAgICAgIHJldHVybiBmbGlwcGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZnNldChlbGVtZW50LCBjb29yZGluYXRlcykge1xuXG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzKSB7XG5cbiAgICAgICAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0KGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIHBvcyA9IGNzcyhlbGVtZW50LCAncG9zaXRpb24nKTtcblxuICAgICAgICAgICAgWydsZWZ0JywgJ3RvcCddLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiBjb29yZGluYXRlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjc3MoZWxlbWVudCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBwcm9wLCBjb29yZGluYXRlc1twcm9wXSAtIGN1cnJlbnRPZmZzZXRbcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgICsgdG9GbG9hdChwb3MgPT09ICdhYnNvbHV0ZScgJiYgdmFsdWUgPT09ICdhdXRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcG9zaXRpb24oZWxlbWVudClbcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciByZWYgPSB3aW5kb3ckMShlbGVtZW50KTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZi5wYWdlWU9mZnNldDtcbiAgICAgICAgdmFyIGxlZnQgPSByZWYucGFnZVhPZmZzZXQ7XG5cbiAgICAgICAgaWYgKGlzV2luZG93KGVsZW1lbnQpKSB7XG5cbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBlbGVtZW50LmlubmVySGVpZ2h0O1xuICAgICAgICAgICAgdmFyIHdpZHRoID0gZWxlbWVudC5pbm5lcldpZHRoO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRvcDogdG9wLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogdG9wICsgaGVpZ2h0LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBsZWZ0ICsgd2lkdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0eWxlLCBoaWRkZW47XG5cbiAgICAgICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHN0eWxlID0gYXR0cihlbGVtZW50LCAnc3R5bGUnKTtcbiAgICAgICAgICAgIGhpZGRlbiA9IGF0dHIoZWxlbWVudCwgJ2hpZGRlbicpO1xuXG4gICAgICAgICAgICBhdHRyKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBzdHlsZTogKChzdHlsZSB8fCAnJykgKyBcIjtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7XCIpLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogbnVsbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChzdHlsZSkpIHtcbiAgICAgICAgICAgIGF0dHIoZWxlbWVudCwge3N0eWxlOiBzdHlsZSwgaGlkZGVuOiBoaWRkZW59KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgdG9wLFxuICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0ICsgbGVmdCxcbiAgICAgICAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20gKyB0b3AsXG4gICAgICAgICAgICByaWdodDogcmVjdC5yaWdodCArIGxlZnQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpb24oZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciBwYXJlbnQgPSBvZmZzZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgICAgIHZhciBwYXJlbnRPZmZzZXQgPSBwYXJlbnQgPT09IGRvY0VsKGVsZW1lbnQpID8ge3RvcDogMCwgbGVmdDogMH0gOiBvZmZzZXQocGFyZW50KTtcbiAgICAgICAgdmFyIHJlZiA9IFsndG9wJywgJ2xlZnQnXS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wKSB7XG4gICAgICAgICAgICB2YXIgcHJvcE5hbWUkJDEgPSB1Y2ZpcnN0KHByb3ApO1xuICAgICAgICAgICAgcHJvcHNbcHJvcF0gLT0gcGFyZW50T2Zmc2V0W3Byb3BdXG4gICAgICAgICAgICAgICAgKyAodG9GbG9hdChjc3MoZWxlbWVudCwgKFwibWFyZ2luXCIgKyBwcm9wTmFtZSQkMSkpKSB8fCAwKVxuICAgICAgICAgICAgICAgICsgKHRvRmxvYXQoY3NzKHBhcmVudCwgKFwiYm9yZGVyXCIgKyBwcm9wTmFtZSQkMSArIFwiV2lkdGhcIikpKSB8fCAwKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgfSwgb2Zmc2V0KGVsZW1lbnQpKTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG4gICAgICAgIHZhciBsZWZ0ID0gcmVmLmxlZnQ7XG5cbiAgICAgICAgcmV0dXJuIHt0b3A6IHRvcCwgbGVmdDogbGVmdH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcblxuICAgICAgICB2YXIgcGFyZW50ID0gdG9Ob2RlKGVsZW1lbnQpLm9mZnNldFBhcmVudDtcblxuICAgICAgICB3aGlsZSAocGFyZW50ICYmIGNzcyhwYXJlbnQsICdwb3NpdGlvbicpID09PSAnc3RhdGljJykge1xuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50Lm9mZnNldFBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJlbnQgfHwgZG9jRWwoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgdmFyIGhlaWdodCA9IGRpbWVuc2lvbignaGVpZ2h0Jyk7XG4gICAgdmFyIHdpZHRoID0gZGltZW5zaW9uKCd3aWR0aCcpO1xuXG4gICAgZnVuY3Rpb24gZGltZW5zaW9uKHByb3ApIHtcbiAgICAgICAgdmFyIHByb3BOYW1lJCQxID0gdWNmaXJzdChwcm9wKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCB2YWx1ZSkge1xuXG4gICAgICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3coZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRbKFwiaW5uZXJcIiArIHByb3BOYW1lJCQxKV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzRG9jdW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoZG9jWyhcIm9mZnNldFwiICsgcHJvcE5hbWUkJDEpXSwgZG9jWyhcInNjcm9sbFwiICsgcHJvcE5hbWUkJDEpXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBjc3MoZWxlbWVudCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gJ2F1dG8nID8gZWxlbWVudFsoXCJvZmZzZXRcIiArIHByb3BOYW1lJCQxKV0gOiB0b0Zsb2F0KHZhbHVlKSB8fCAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIC0gYm94TW9kZWxBZGp1c3QocHJvcCwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgcHJvcCwgIXZhbHVlICYmIHZhbHVlICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgOiArdmFsdWUgKyBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KSArICdweCdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBjc3MoZWxlbWVudCwgJ2JveFNpemluZycpID09PSAnYm9yZGVyLWJveCdcbiAgICAgICAgICAgID8gZGlyc1twcm9wXS5zbGljZSgxKS5tYXAodWNmaXJzdCkucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgeyByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgICAgICArIHRvRmxvYXQoY3NzKGVsZW1lbnQsIChcInBhZGRpbmdcIiArIHByb3ApKSlcbiAgICAgICAgICAgICAgICArIHRvRmxvYXQoY3NzKGVsZW1lbnQsIChcImJvcmRlclwiICsgcHJvcCArIFwiV2lkdGhcIikpKTsgfVxuICAgICAgICAgICAgICAgICwgMClcbiAgICAgICAgICAgIDogMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb3ZlVG8ocG9zaXRpb24sIGF0dGFjaCwgZGltLCBmYWN0b3IpIHtcbiAgICAgICAgZWFjaChkaXJzLCBmdW5jdGlvbiAocmVmLCBwcm9wKSB7XG4gICAgICAgICAgICB2YXIgZGlyID0gcmVmWzBdO1xuICAgICAgICAgICAgdmFyIGFsaWduID0gcmVmWzFdO1xuICAgICAgICAgICAgdmFyIGFsaWduRmxpcCA9IHJlZlsyXTtcblxuICAgICAgICAgICAgaWYgKGF0dGFjaFtkaXJdID09PSBhbGlnbkZsaXApIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gKz0gZGltW3Byb3BdICogZmFjdG9yO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRhY2hbZGlyXSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gKz0gZGltW3Byb3BdICogZmFjdG9yIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UG9zKHBvcykge1xuXG4gICAgICAgIHZhciB4ID0gL2xlZnR8Y2VudGVyfHJpZ2h0LztcbiAgICAgICAgdmFyIHkgPSAvdG9wfGNlbnRlcnxib3R0b20vO1xuXG4gICAgICAgIHBvcyA9IChwb3MgfHwgJycpLnNwbGl0KCcgJyk7XG5cbiAgICAgICAgaWYgKHBvcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHBvcyA9IHgudGVzdChwb3NbMF0pXG4gICAgICAgICAgICAgICAgPyBwb3MuY29uY2F0KFsnY2VudGVyJ10pXG4gICAgICAgICAgICAgICAgOiB5LnRlc3QocG9zWzBdKVxuICAgICAgICAgICAgICAgICAgICA/IFsnY2VudGVyJ10uY29uY2F0KHBvcylcbiAgICAgICAgICAgICAgICAgICAgOiBbJ2NlbnRlcicsICdjZW50ZXInXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4LnRlc3QocG9zWzBdKSA/IHBvc1swXSA6ICdjZW50ZXInLFxuICAgICAgICAgICAgeTogeS50ZXN0KHBvc1sxXSkgPyBwb3NbMV0gOiAnY2VudGVyJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE9mZnNldHMob2Zmc2V0cywgd2lkdGgsIGhlaWdodCkge1xuXG4gICAgICAgIHZhciByZWYgPSAob2Zmc2V0cyB8fCAnJykuc3BsaXQoJyAnKTtcbiAgICAgICAgdmFyIHggPSByZWZbMF07XG4gICAgICAgIHZhciB5ID0gcmVmWzFdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4ID8gdG9GbG9hdCh4KSAqIChlbmRzV2l0aCh4LCAnJScpID8gd2lkdGggLyAxMDAgOiAxKSA6IDAsXG4gICAgICAgICAgICB5OiB5ID8gdG9GbG9hdCh5KSAqIChlbmRzV2l0aCh5LCAnJScpID8gaGVpZ2h0IC8gMTAwIDogMSkgOiAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmxpcFBvc2l0aW9uKHBvcykge1xuICAgICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBwb3M7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0luVmlldyhlbGVtZW50LCB0b3BPZmZzZXQsIGxlZnRPZmZzZXQsIHJlbGF0aXZlVG9WaWV3cG9ydCkge1xuICAgICAgICBpZiAoIHRvcE9mZnNldCA9PT0gdm9pZCAwICkgdG9wT2Zmc2V0ID0gMDtcbiAgICAgICAgaWYgKCBsZWZ0T2Zmc2V0ID09PSB2b2lkIDAgKSBsZWZ0T2Zmc2V0ID0gMDtcblxuXG4gICAgICAgIGlmICghaXNWaXNpYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICB2YXIgd2luID0gd2luZG93JDEoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHJlbGF0aXZlVG9WaWV3cG9ydCkge1xuXG4gICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB7XG4gICAgICAgICAgICAgICAgdG9wOiAtdG9wT2Zmc2V0LFxuICAgICAgICAgICAgICAgIGxlZnQ6IC1sZWZ0T2Zmc2V0LFxuICAgICAgICAgICAgICAgIGJvdHRvbTogdG9wT2Zmc2V0ICsgaGVpZ2h0KHdpbiksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IGxlZnRPZmZzZXQgKyB3aWR0aCh3aW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7XG4gICAgICAgICAgICB2YXIgZWxUb3AgPSByZWZbMF07XG4gICAgICAgICAgICB2YXIgZWxMZWZ0ID0gcmVmWzFdO1xuICAgICAgICAgICAgdmFyIHRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuXG4gICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogZWxUb3AsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGVsTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBlbFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICByaWdodDogZWxUb3AgKyBlbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogdG9wIC0gdG9wT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0IC0gbGVmdE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB0b3AgKyB0b3BPZmZzZXQgKyBoZWlnaHQod2luKSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGxlZnQgKyBsZWZ0T2Zmc2V0ICsgd2lkdGgod2luKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjcm9sbGVkT3ZlcihlbGVtZW50LCBoZWlnaHRPZmZzZXQpIHtcbiAgICAgICAgaWYgKCBoZWlnaHRPZmZzZXQgPT09IHZvaWQgMCApIGhlaWdodE9mZnNldCA9IDA7XG5cblxuICAgICAgICBpZiAoIWlzVmlzaWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciB3aW4gPSB3aW5kb3ckMShlbGVtZW50KTtcbiAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50JDEoZWxlbWVudCk7XG4gICAgICAgIHZhciBlbEhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgaGVpZ2h0T2Zmc2V0O1xuICAgICAgICB2YXIgcmVmID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7XG4gICAgICAgIHZhciB0b3AgPSByZWZbMF07XG4gICAgICAgIHZhciB2cCA9IGhlaWdodCh3aW4pO1xuICAgICAgICB2YXIgdmggPSB2cCArIE1hdGgubWluKDAsIHRvcCAtIHZwKTtcbiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLm1heCgwLCB2cCAtIChoZWlnaHQoZG9jKSArIGhlaWdodE9mZnNldCAtICh0b3AgKyBlbEhlaWdodCkpKTtcblxuICAgICAgICByZXR1cm4gY2xhbXAoKCh2aCArIHdpbi5wYWdlWU9mZnNldCAtIHRvcCkgLyAoKHZoICsgKGVsSGVpZ2h0IC0gKGRpZmYgPCB2cCA/IGRpZmYgOiAwKSkpIC8gMTAwKSkgLyAxMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZnNldFBvc2l0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IFswLCAwXTtcblxuICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgIG9mZnNldFswXSArPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgIG9mZnNldFsxXSArPSBlbGVtZW50Lm9mZnNldExlZnQ7XG5cbiAgICAgICAgICAgIGlmIChjc3MoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2luID0gd2luZG93JDEoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WzBdICs9IHdpbi5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICBvZmZzZXRbMV0gKz0gd2luLnBhZ2VYT2Zmc2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSB3aGlsZSAoKGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCkpO1xuXG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2luZG93JDEoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gaXNXaW5kb3coZWxlbWVudCkgPyBlbGVtZW50IDogZG9jdW1lbnQkMShlbGVtZW50KS5kZWZhdWx0VmlldztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb2N1bWVudCQxKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShlbGVtZW50KS5vd25lckRvY3VtZW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvY0VsKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50JDEoZWxlbWVudCkuZG9jdW1lbnRFbGVtZW50O1xuICAgIH1cblxuICAgIC8qIGdsb2JhbCBEb2N1bWVudFRvdWNoICovXG5cbiAgICB2YXIgaXNSdGwgPSBhdHRyKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RpcicpID09PSAncnRsJztcblxuICAgIHZhciBoYXNUb3VjaEV2ZW50cyA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdztcbiAgICB2YXIgaGFzUG9pbnRlckV2ZW50cyA9IHdpbmRvdy5Qb2ludGVyRXZlbnQ7XG4gICAgdmFyIGhhc1RvdWNoID0gaGFzVG91Y2hFdmVudHNcbiAgICAgICAgfHwgd2luZG93LkRvY3VtZW50VG91Y2ggJiYgZG9jdW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudFRvdWNoXG4gICAgICAgIHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50czsgLy8gSUUgPj0xMVxuXG4gICAgdmFyIHBvaW50ZXJEb3duID0gIWhhc1RvdWNoID8gJ21vdXNlZG93bicgOiAoXCJtb3VzZWRvd24gXCIgKyAoaGFzVG91Y2hFdmVudHMgPyAndG91Y2hzdGFydCcgOiAncG9pbnRlcmRvd24nKSk7XG4gICAgdmFyIHBvaW50ZXJNb3ZlID0gIWhhc1RvdWNoID8gJ21vdXNlbW92ZScgOiAoXCJtb3VzZW1vdmUgXCIgKyAoaGFzVG91Y2hFdmVudHMgPyAndG91Y2htb3ZlJyA6ICdwb2ludGVybW92ZScpKTtcbiAgICB2YXIgcG9pbnRlclVwID0gIWhhc1RvdWNoID8gJ21vdXNldXAnIDogKFwibW91c2V1cCBcIiArIChoYXNUb3VjaEV2ZW50cyA/ICd0b3VjaGVuZCcgOiAncG9pbnRlcnVwJykpO1xuICAgIHZhciBwb2ludGVyRW50ZXIgPSBoYXNUb3VjaCAmJiBoYXNQb2ludGVyRXZlbnRzID8gJ3BvaW50ZXJlbnRlcicgOiAnbW91c2VlbnRlcic7XG4gICAgdmFyIHBvaW50ZXJMZWF2ZSA9IGhhc1RvdWNoICYmIGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcmxlYXZlJyA6ICdtb3VzZWxlYXZlJztcblxuICAgIC8qXG4gICAgICAgIEJhc2VkIG9uOlxuICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTYgV2lsc29uIFBhZ2Ugd2lsc29ucGFnZUBtZS5jb21cbiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3dpbHNvbnBhZ2UvZmFzdGRvbVxuICAgICovXG5cbiAgICB2YXIgZmFzdGRvbSA9IHtcblxuICAgICAgICByZWFkczogW10sXG4gICAgICAgIHdyaXRlczogW10sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgdGhpcy5yZWFkcy5wdXNoKHRhc2spO1xuICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgcmV0dXJuIHRhc2s7XG4gICAgICAgIH0sXG5cbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHRhc2spIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVzLnB1c2godGFzayk7XG4gICAgICAgICAgICBzY2hlZHVsZUZsdXNoKCk7XG4gICAgICAgICAgICByZXR1cm4gdGFzaztcbiAgICAgICAgfSxcblxuICAgICAgICBjbGVhcjogZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZSQxKHRoaXMucmVhZHMsIHRhc2spIHx8IHJlbW92ZSQxKHRoaXMud3JpdGVzLCB0YXNrKTtcbiAgICAgICAgfSxcblxuICAgICAgICBmbHVzaDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHJ1blRhc2tzKHRoaXMucmVhZHMpO1xuICAgICAgICAgICAgcnVuVGFza3ModGhpcy53cml0ZXMuc3BsaWNlKDAsIHRoaXMud3JpdGVzLmxlbmd0aCkpO1xuXG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkcy5sZW5ndGggfHwgdGhpcy53cml0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBzY2hlZHVsZUZsdXNoKCkge1xuICAgICAgICBpZiAoIWZhc3Rkb20uc2NoZWR1bGVkKSB7XG4gICAgICAgICAgICBmYXN0ZG9tLnNjaGVkdWxlZCA9IHRydWU7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZmFzdGRvbS5mbHVzaC5iaW5kKGZhc3Rkb20pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1blRhc2tzKHRhc2tzKSB7XG4gICAgICAgIHZhciB0YXNrO1xuICAgICAgICB3aGlsZSAoKHRhc2sgPSB0YXNrcy5zaGlmdCgpKSkge1xuICAgICAgICAgICAgdGFzaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlJDEoYXJyYXksIGl0ZW0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgcmV0dXJuICEhfmluZGV4ICYmICEhYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBNb3VzZVRyYWNrZXIoKSB7fVxuXG4gICAgTW91c2VUcmFja2VyLnByb3RvdHlwZSA9IHtcblxuICAgICAgICBwb3NpdGlvbnM6IFtdLFxuICAgICAgICBwb3NpdGlvbjogbnVsbCxcblxuICAgICAgICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gbnVsbDtcblxuICAgICAgICAgICAgdmFyIHRpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudW5iaW5kID0gb24oZG9jdW1lbnQsICdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRpY2tpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMkMS5wb3NpdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggJiYgKHRpbWUgLSB0aGlzJDEucG9zaXRpb25zW2xlbmd0aCAtIDFdLnRpbWUgPiAxMDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zaXRpb25zLnNwbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvc2l0aW9ucy5wdXNoKHt0aW1lOiB0aW1lLCB4OiBlLnBhZ2VYLCB5OiBlLnBhZ2VZfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5wb3NpdGlvbnMubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvc2l0aW9ucy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGlja2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUpO1xuXG4gICAgICAgICAgICAgICAgdGlja2luZyA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAodGhpcy51bmJpbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vdmVzVG86IGZ1bmN0aW9uKHRhcmdldCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHAgPSBvZmZzZXQodGFyZ2V0KTtcbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiQkMSA9IHRoaXMucG9zaXRpb25zW3RoaXMucG9zaXRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMucG9zaXRpb25zO1xuICAgICAgICAgICAgdmFyIHByZXZQb3MgPSByZWZbMF07XG5cbiAgICAgICAgICAgIGlmIChwLmxlZnQgPD0gcG9zaXRpb24kJDEueCAmJiBwb3NpdGlvbiQkMS54IDw9IHAucmlnaHQgJiYgcC50b3AgPD0gcG9zaXRpb24kJDEueSAmJiBwb3NpdGlvbiQkMS55IDw9IHAuYm90dG9tKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcG9pbnRzID0gW1xuICAgICAgICAgICAgICAgIFt7eDogcC5sZWZ0LCB5OiBwLnRvcH0sIHt4OiBwLnJpZ2h0LCB5OiBwLmJvdHRvbX1dLFxuICAgICAgICAgICAgICAgIFt7eDogcC5yaWdodCwgeTogcC50b3B9LCB7eDogcC5sZWZ0LCB5OiBwLmJvdHRvbX1dXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBpZiAocC5yaWdodCA8PSBwb3NpdGlvbiQkMS54KSA7IGVsc2UgaWYgKHAubGVmdCA+PSBwb3NpdGlvbiQkMS54KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICBwb2ludHNbMV0ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwLmJvdHRvbSA8PSBwb3NpdGlvbiQkMS55KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocC50b3AgPj0gcG9zaXRpb24kJDEueSkge1xuICAgICAgICAgICAgICAgIHBvaW50c1sxXS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAhIXBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgcG9pbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNsb3BlKHByZXZQb3MsIHBvaW50WzBdKSA8IHNsb3BlKHBvc2l0aW9uJCQxLCBwb2ludFswXSkgJiYgc2xvcGUocHJldlBvcywgcG9pbnRbMV0pID4gc2xvcGUocG9zaXRpb24kJDEsIHBvaW50WzFdKSk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNsb3BlKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChiLnkgLSBhLnkpIC8gKGIueCAtIGEueCk7XG4gICAgfVxuXG4gICAgdmFyIHN0cmF0cyA9IHt9O1xuXG4gICAgLy8gY29uY2F0IHN0cmF0ZWd5XG4gICAgc3RyYXRzLmFyZ3MgPVxuICAgIHN0cmF0cy5ldmVudHMgPVxuICAgIHN0cmF0cy5pbml0ID1cbiAgICBzdHJhdHMuY3JlYXRlZCA9XG4gICAgc3RyYXRzLmJlZm9yZUNvbm5lY3QgPVxuICAgIHN0cmF0cy5jb25uZWN0ZWQgPVxuICAgIHN0cmF0cy5yZWFkeSA9XG4gICAgc3RyYXRzLmJlZm9yZURpc2Nvbm5lY3QgPVxuICAgIHN0cmF0cy5kaXNjb25uZWN0ZWQgPVxuICAgIHN0cmF0cy5kZXN0cm95ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcblxuICAgICAgICBwYXJlbnRWYWwgPSBwYXJlbnRWYWwgJiYgIWlzQXJyYXkocGFyZW50VmFsKSA/IFtwYXJlbnRWYWxdIDogcGFyZW50VmFsO1xuXG4gICAgICAgIHJldHVybiBjaGlsZFZhbFxuICAgICAgICAgICAgPyBwYXJlbnRWYWxcbiAgICAgICAgICAgICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGNoaWxkVmFsKVxuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgICAgICAgICAgICAgIDogW2NoaWxkVmFsXVxuICAgICAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgfTtcblxuICAgIC8vIHVwZGF0ZSBzdHJhdGVneVxuICAgIHN0cmF0cy51cGRhdGUgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gc3RyYXRzLmFyZ3MocGFyZW50VmFsLCBpc0Z1bmN0aW9uKGNoaWxkVmFsKSA/IHtyZWFkOiBjaGlsZFZhbH0gOiBjaGlsZFZhbCk7XG4gICAgfTtcblxuICAgIC8vIHByb3BlcnR5IHN0cmF0ZWd5XG4gICAgc3RyYXRzLnByb3BzID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcblxuICAgICAgICBpZiAoaXNBcnJheShjaGlsZFZhbCkpIHtcbiAgICAgICAgICAgIGNoaWxkVmFsID0gY2hpbGRWYWwucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgICAgICAgICAgdmFsdWVba2V5XSA9IFN0cmluZztcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RyYXRzLm1ldGhvZHMocGFyZW50VmFsLCBjaGlsZFZhbCk7XG4gICAgfTtcblxuICAgIC8vIGV4dGVuZCBzdHJhdGVneVxuICAgIHN0cmF0cy5jb21wdXRlZCA9XG4gICAgc3RyYXRzLm1ldGhvZHMgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gY2hpbGRWYWxcbiAgICAgICAgICAgID8gcGFyZW50VmFsXG4gICAgICAgICAgICAgICAgPyBhc3NpZ24oe30sIHBhcmVudFZhbCwgY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgOiBjaGlsZFZhbFxuICAgICAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgfTtcblxuICAgIC8vIGRhdGEgc3RyYXRlZ3lcbiAgICBzdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSkge1xuXG4gICAgICAgIGlmICghdm0pIHtcblxuICAgICAgICAgICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRWYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkVmFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZXJnZUZuRGF0YShwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKSB7XG4gICAgICAgIHJldHVybiBzdHJhdHMuY29tcHV0ZWQoXG4gICAgICAgICAgICBpc0Z1bmN0aW9uKHBhcmVudFZhbClcbiAgICAgICAgICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgICAgICAgICA6IHBhcmVudFZhbCxcbiAgICAgICAgICAgIGlzRnVuY3Rpb24oY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgPyBjaGlsZFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgICAgICAgICA6IGNoaWxkVmFsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCBzdHJhdGVneVxuICAgIHZhciBkZWZhdWx0U3RyYXQgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQoY2hpbGRWYWwpID8gcGFyZW50VmFsIDogY2hpbGRWYWw7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLCB2bSkge1xuXG4gICAgICAgIHZhciBvcHRpb25zID0ge307XG5cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2hpbGQpKSB7XG4gICAgICAgICAgICBjaGlsZCA9IGNoaWxkLm9wdGlvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hpbGQuZXh0ZW5kcykge1xuICAgICAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQuZXh0ZW5kcywgdm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkLm1peGlucykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGFyZW50KSB7XG4gICAgICAgICAgICBtZXJnZUtleShrZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIga2V5JDEgaW4gY2hpbGQpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5JDEpKSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VLZXkoa2V5JDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbWVyZ2VLZXkoa2V5KSB7XG4gICAgICAgICAgICBvcHRpb25zW2tleV0gPSAoc3RyYXRzW2tleV0gfHwgZGVmYXVsdFN0cmF0KShwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VPcHRpb25zKG9wdGlvbnMsIGFyZ3MpIHtcbiAgICAgICAgdmFyIG9iajtcblxuICAgICAgICBpZiAoIGFyZ3MgPT09IHZvaWQgMCApIGFyZ3MgPSBbXTtcblxuICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICByZXR1cm4gIW9wdGlvbnNcbiAgICAgICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICAgICAgOiBzdGFydHNXaXRoKG9wdGlvbnMsICd7JylcbiAgICAgICAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIDogYXJncy5sZW5ndGggJiYgIWluY2x1ZGVzKG9wdGlvbnMsICc6JylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKCggb2JqID0ge30sIG9ialthcmdzWzBdXSA9IG9wdGlvbnMsIG9iaiApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25zLnNwbGl0KCc7JykucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zLCBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb3B0aW9uLnNwbGl0KC86KC4qKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcmVmWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgJiYgIWlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zW2tleS50cmltKCldID0gdmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHZhciBpZCA9IDA7XG5cbiAgICB2YXIgUGxheWVyID0gZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgdGhpcy5pZCA9ICsraWQ7XG4gICAgICAgIHRoaXMuZWwgPSB0b05vZGUoZWwpO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzVmlkZW8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzWW91dHViZSgpIHx8IHRoaXMuaXNWaW1lbygpIHx8IHRoaXMuaXNIVE1MNSgpO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzSFRNTDUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnRhZ05hbWUgPT09ICdWSURFTyc7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnRhZ05hbWUgPT09ICdJRlJBTUUnO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzWW91dHViZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJRnJhbWUoKSAmJiAhIXRoaXMuZWwuc3JjLm1hdGNoKC9cXC9cXC8uKj95b3V0dWJlKC1ub2Nvb2tpZSk/XFwuW2Etel0rXFwvKHdhdGNoXFw/dj1bXiZcXHNdK3xlbWJlZCl8eW91dHVcXC5iZVxcLy4qLyk7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNWaW1lbyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJRnJhbWUoKSAmJiAhIXRoaXMuZWwuc3JjLm1hdGNoKC92aW1lb1xcLmNvbVxcL3ZpZGVvXFwvLiovKTtcbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5lbmFibGVBcGkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICh0aGlzLnJlYWR5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB5b3V0dWJlID0gdGhpcy5pc1lvdXR1YmUoKTtcbiAgICAgICAgdmFyIHZpbWVvID0gdGhpcy5pc1ZpbWVvKCk7XG5cbiAgICAgICAgdmFyIHBvbGxlcjtcblxuICAgICAgICBpZiAoeW91dHViZSB8fCB2aW1lbykge1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcblxuICAgICAgICAgICAgICAgIG9uY2UodGhpcyQxLmVsLCAnbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHlvdXR1YmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBvc3QodGhpcyQxLmVsLCB7ZXZlbnQ6ICdsaXN0ZW5pbmcnLCBpZDogdGhpcyQxLmlkfSk7IH07XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xsZXIgPSBzZXRJbnRlcnZhbChsaXN0ZW5lciwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxpc3RlbihmdW5jdGlvbiAoZGF0YSQkMSkgeyByZXR1cm4geW91dHViZSAmJiBkYXRhJCQxLmlkID09PSB0aGlzJDEuaWQgJiYgZGF0YSQkMS5ldmVudCA9PT0gJ29uUmVhZHknIHx8IHZpbWVvICYmIE51bWJlcihkYXRhJCQxLnBsYXllcl9pZCkgPT09IHRoaXMkMS5pZDsgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGVyICYmIGNsZWFySW50ZXJ2YWwocG9sbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMkMS5lbCwgJ3NyYycsIChcIlwiICsgKHRoaXMkMS5lbC5zcmMpICsgKGluY2x1ZGVzKHRoaXMkMS5lbC5zcmMsICc/JykgPyAnJicgOiAnPycpICsgKHlvdXR1YmUgPyAnZW5hYmxlanNhcGk9MScgOiAoXCJhcGk9MSZwbGF5ZXJfaWQ9XCIgKyAodGhpcyQxLmlkKSkpKSk7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKTtcblxuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLnBsYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSUZyYW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwbGF5VmlkZW8nLCBtZXRob2Q6ICdwbGF5J30pOyB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSFRNTDUoKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXMuZWwucGxheSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5jYXRjaChub29wKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSUZyYW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwYXVzZVZpZGVvJywgbWV0aG9kOiAncGF1c2UnfSk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5tdXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICBpZiAoIXRoaXMuaXNWaWRlbygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0lGcmFtZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUFwaSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9zdCh0aGlzJDEuZWwsIHtmdW5jOiAnbXV0ZScsIG1ldGhvZDogJ3NldFZvbHVtZScsIHZhbHVlOiAwfSk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm11dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGF0dHIodGhpcy5lbCwgJ211dGVkJywgJycpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9zdChlbCwgY21kKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBlbC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGFzc2lnbih7ZXZlbnQ6ICdjb21tYW5kJ30sIGNtZCkpLCAnKicpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RlbihjYikge1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgIG9uY2Uod2luZG93LCAnbWVzc2FnZScsIGZ1bmN0aW9uIChfLCBkYXRhJCQxKSB7IHJldHVybiByZXNvbHZlKGRhdGEkJDEpOyB9LCBmYWxzZSwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhJCQxID0gcmVmLmRhdGE7XG5cblxuICAgICAgICAgICAgICAgIGlmICghZGF0YSQkMSB8fCAhaXNTdHJpbmcoZGF0YSQkMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEgPSBKU09OLnBhcnNlKGRhdGEkJDEpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxICYmIGNiKGRhdGEkJDEpO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIC8qXG4gICAgICAgIEJhc2VkIG9uOlxuICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNiBUaG9tYXMgRnVjaHNcbiAgICAgICAgaHR0cDovL3plcHRvanMuY29tL1xuICAgICovXG5cbiAgICB2YXIgdG91Y2ggPSB7fSwgY2xpY2tUaW1lb3V0LCBzd2lwZVRpbWVvdXQsIHRhcFRpbWVvdXQsIGNsaWNrZWQ7XG5cbiAgICBmdW5jdGlvbiBzd2lwZURpcmVjdGlvbihyZWYpIHtcbiAgICAgICAgdmFyIHgxID0gcmVmLngxO1xuICAgICAgICB2YXIgeDIgPSByZWYueDI7XG4gICAgICAgIHZhciB5MSA9IHJlZi55MTtcbiAgICAgICAgdmFyIHkyID0gcmVmLnkyO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmFicyh4MSAtIHgyKSA+PSBNYXRoLmFicyh5MSAtIHkyKSA/ICh4MSAtIHgyID4gMCA/ICdMZWZ0JyA6ICdSaWdodCcpIDogKHkxIC0geTIgPiAwID8gJ1VwJyA6ICdEb3duJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FuY2VsQWxsKCkge1xuICAgICAgICBjbGlja1RpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KGNsaWNrVGltZW91dCk7XG4gICAgICAgIHN3aXBlVGltZW91dCAmJiBjbGVhclRpbWVvdXQoc3dpcGVUaW1lb3V0KTtcbiAgICAgICAgdGFwVGltZW91dCAmJiBjbGVhclRpbWVvdXQodGFwVGltZW91dCk7XG4gICAgICAgIGNsaWNrVGltZW91dCA9IHN3aXBlVGltZW91dCA9IHRhcFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB0b3VjaCA9IHt9O1xuICAgIH1cblxuICAgIHJlYWR5KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xpY2tlZCA9IHRydWU7IH0sIHRydWUpO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyRG93biwgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHJlZiA9IGdldFBvcyQxKGUpO1xuICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7XG4gICAgICAgICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHZhciB0eXBlID0gZ2V0VHlwZShlLnR5cGUpO1xuXG4gICAgICAgICAgICBpZiAodG91Y2gudHlwZSAmJiB0b3VjaC50eXBlICE9PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b3VjaC5lbCA9ICd0YWdOYW1lJyBpbiB0YXJnZXQgPyB0YXJnZXQgOiB0YXJnZXQucGFyZW50Tm9kZTtcblxuICAgICAgICAgICAgY2xpY2tUaW1lb3V0ICYmIGNsZWFyVGltZW91dChjbGlja1RpbWVvdXQpO1xuXG4gICAgICAgICAgICB0b3VjaC54MSA9IHg7XG4gICAgICAgICAgICB0b3VjaC55MSA9IHk7XG5cbiAgICAgICAgICAgIGlmICh0b3VjaC5sYXN0ICYmIG5vdyAtIHRvdWNoLmxhc3QgPD0gMjUwKSB7XG4gICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG91Y2gudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB0b3VjaC5sYXN0ID0gbm93O1xuXG4gICAgICAgICAgICBjbGlja2VkID0gZS5idXR0b24gPiAwO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHJlZiA9IGdldFBvcyQxKGUpO1xuICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7XG5cbiAgICAgICAgICAgIHRvdWNoLngyID0geDtcbiAgICAgICAgICAgIHRvdWNoLnkyID0geTtcblxuICAgICAgICB9KTtcblxuICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlclVwLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cblxuICAgICAgICAgICAgaWYgKHRvdWNoLnR5cGUgIT09IGdldFR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN3aXBlXG4gICAgICAgICAgICBpZiAodG91Y2gueDIgJiYgTWF0aC5hYnModG91Y2gueDEgLSB0b3VjaC54MikgPiAzMCB8fCB0b3VjaC55MiAmJiBNYXRoLmFicyh0b3VjaC55MSAtIHRvdWNoLnkyKSA+IDMwKSB7XG5cbiAgICAgICAgICAgICAgICBzd2lwZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvdWNoLmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRvdWNoLmVsLCAnc3dpcGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodG91Y2guZWwsIChcInN3aXBlXCIgKyAoc3dpcGVEaXJlY3Rpb24odG91Y2gpKSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoID0ge307XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIG5vcm1hbCB0YXBcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2xhc3QnIGluIHRvdWNoKSB7XG5cbiAgICAgICAgICAgICAgICB0YXBUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiB0cmlnZ2VyKHRvdWNoLmVsLCAndGFwJyk7IH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBzaW5nbGUgY2xpY2sgYWZ0ZXIgMzUwbXMgb2YgaW5hY3Rpdml0eVxuICAgICAgICAgICAgICAgIGlmICh0b3VjaC5lbCAmJiB0eXBlICE9PSAnbW91c2V1cCcgJiYgd2l0aGluKHRhcmdldCwgdG91Y2guZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b3VjaC5lbCAmJiAhY2xpY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodG91Y2guZWwsICdjbGljaycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMzUwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICBvbihkb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgY2FuY2VsQWxsKTtcbiAgICAgICAgb24od2luZG93LCAnc2Nyb2xsJywgY2FuY2VsQWxsKTtcblxuICAgIH0pO1xuXG4gICAgdmFyIHRvdWNoaW5nID0gZmFsc2U7XG4gICAgb24oZG9jdW1lbnQsICd0b3VjaHN0YXJ0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gdG91Y2hpbmcgPSB0cnVlOyB9LCB0cnVlKTtcbiAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkge3RvdWNoaW5nID0gZmFsc2U7fSk7XG4gICAgb24oZG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvdWNoaW5nID0gZmFsc2U7IH0sIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gaXNUb3VjaChlKSB7XG4gICAgICAgIHJldHVybiB0b3VjaGluZyB8fCBlLnBvaW50ZXJUeXBlID09PSAndG91Y2gnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBvcyQxKGUpIHtcbiAgICAgICAgdmFyIHRvdWNoZXMgPSBlLnRvdWNoZXM7XG4gICAgICAgIHZhciBjaGFuZ2VkVG91Y2hlcyA9IGUuY2hhbmdlZFRvdWNoZXM7XG4gICAgICAgIHZhciByZWYgPSB0b3VjaGVzICYmIHRvdWNoZXNbMF0gfHwgY2hhbmdlZFRvdWNoZXMgJiYgY2hhbmdlZFRvdWNoZXNbMF0gfHwgZTtcbiAgICAgICAgdmFyIHggPSByZWYucGFnZVg7XG4gICAgICAgIHZhciB5ID0gcmVmLnBhZ2VZO1xuXG4gICAgICAgIHJldHVybiB7eDogeCwgeTogeX07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VHlwZSh0eXBlKSB7XG4gICAgICAgIHJldHVybiB0eXBlLnNsaWNlKDAsIDUpO1xuICAgIH1cblxuXG5cbiAgICB2YXIgdXRpbCA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgICAgICAgYWpheDogYWpheCxcbiAgICAgICAgZ2V0SW1hZ2U6IGdldEltYWdlLFxuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLFxuICAgICAgICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICAgICAgICBhbmltYXRlOiBhbmltYXRlLFxuICAgICAgICBBbmltYXRpb246IEFuaW1hdGlvbixcbiAgICAgICAgYXR0cjogYXR0cixcbiAgICAgICAgaGFzQXR0cjogaGFzQXR0cixcbiAgICAgICAgcmVtb3ZlQXR0cjogcmVtb3ZlQXR0cixcbiAgICAgICAgZmlsdGVyQXR0cjogZmlsdGVyQXR0cixcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgYWRkQ2xhc3M6IGFkZENsYXNzLFxuICAgICAgICByZW1vdmVDbGFzczogcmVtb3ZlQ2xhc3MsXG4gICAgICAgIHJlbW92ZUNsYXNzZXM6IHJlbW92ZUNsYXNzZXMsXG4gICAgICAgIHJlcGxhY2VDbGFzczogcmVwbGFjZUNsYXNzLFxuICAgICAgICBoYXNDbGFzczogaGFzQ2xhc3MsXG4gICAgICAgIHRvZ2dsZUNsYXNzOiB0b2dnbGVDbGFzcyxcbiAgICAgICAgJDogJCxcbiAgICAgICAgJCQ6ICQkLFxuICAgICAgICBwb3NpdGlvbkF0OiBwb3NpdGlvbkF0LFxuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBmbGlwUG9zaXRpb246IGZsaXBQb3NpdGlvbixcbiAgICAgICAgaXNJblZpZXc6IGlzSW5WaWV3LFxuICAgICAgICBzY3JvbGxlZE92ZXI6IHNjcm9sbGVkT3ZlcixcbiAgICAgICAgaXNSZWFkeTogaXNSZWFkeSxcbiAgICAgICAgcmVhZHk6IHJlYWR5LFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGdldEluZGV4OiBnZXRJbmRleCxcbiAgICAgICAgZW1wdHk6IGVtcHR5LFxuICAgICAgICBodG1sOiBodG1sLFxuICAgICAgICBwcmVwZW5kOiBwcmVwZW5kLFxuICAgICAgICBhcHBlbmQ6IGFwcGVuZCxcbiAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgIGFmdGVyOiBhZnRlcixcbiAgICAgICAgcmVtb3ZlOiByZW1vdmUsXG4gICAgICAgIHdyYXBBbGw6IHdyYXBBbGwsXG4gICAgICAgIHdyYXBJbm5lcjogd3JhcElubmVyLFxuICAgICAgICB1bndyYXA6IHVud3JhcCxcbiAgICAgICAgZnJhZ21lbnQ6IGZyYWdtZW50LFxuICAgICAgICBhcHBseTogYXBwbHksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgaGFzVG91Y2g6IGhhc1RvdWNoLFxuICAgICAgICBwb2ludGVyRG93bjogcG9pbnRlckRvd24sXG4gICAgICAgIHBvaW50ZXJNb3ZlOiBwb2ludGVyTW92ZSxcbiAgICAgICAgcG9pbnRlclVwOiBwb2ludGVyVXAsXG4gICAgICAgIHBvaW50ZXJFbnRlcjogcG9pbnRlckVudGVyLFxuICAgICAgICBwb2ludGVyTGVhdmU6IHBvaW50ZXJMZWF2ZSxcbiAgICAgICAgb246IG9uLFxuICAgICAgICBvZmY6IG9mZixcbiAgICAgICAgb25jZTogb25jZSxcbiAgICAgICAgdHJpZ2dlcjogdHJpZ2dlcixcbiAgICAgICAgY3JlYXRlRXZlbnQ6IGNyZWF0ZUV2ZW50LFxuICAgICAgICB0b0V2ZW50VGFyZ2V0czogdG9FdmVudFRhcmdldHMsXG4gICAgICAgIHByZXZlbnRDbGljazogcHJldmVudENsaWNrLFxuICAgICAgICBmYXN0ZG9tOiBmYXN0ZG9tLFxuICAgICAgICBpc1ZvaWRFbGVtZW50OiBpc1ZvaWRFbGVtZW50LFxuICAgICAgICBpc1Zpc2libGU6IGlzVmlzaWJsZSxcbiAgICAgICAgc2VsSW5wdXQ6IHNlbElucHV0LFxuICAgICAgICBpc0lucHV0OiBpc0lucHV0LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgd2l0aGluOiB3aXRoaW4sXG4gICAgICAgIGJpbmQ6IGJpbmQsXG4gICAgICAgIGhhc093bjogaGFzT3duLFxuICAgICAgICBoeXBoZW5hdGU6IGh5cGhlbmF0ZSxcbiAgICAgICAgY2FtZWxpemU6IGNhbWVsaXplLFxuICAgICAgICB1Y2ZpcnN0OiB1Y2ZpcnN0LFxuICAgICAgICBzdGFydHNXaXRoOiBzdGFydHNXaXRoLFxuICAgICAgICBlbmRzV2l0aDogZW5kc1dpdGgsXG4gICAgICAgIGluY2x1ZGVzOiBpbmNsdWRlcyxcbiAgICAgICAgaXNBcnJheTogaXNBcnJheSxcbiAgICAgICAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgICAgICAgaXNPYmplY3Q6IGlzT2JqZWN0LFxuICAgICAgICBpc1BsYWluT2JqZWN0OiBpc1BsYWluT2JqZWN0LFxuICAgICAgICBpc1dpbmRvdzogaXNXaW5kb3csXG4gICAgICAgIGlzRG9jdW1lbnQ6IGlzRG9jdW1lbnQsXG4gICAgICAgIGlzSlF1ZXJ5OiBpc0pRdWVyeSxcbiAgICAgICAgaXNOb2RlOiBpc05vZGUsXG4gICAgICAgIGlzTm9kZUNvbGxlY3Rpb246IGlzTm9kZUNvbGxlY3Rpb24sXG4gICAgICAgIGlzQm9vbGVhbjogaXNCb29sZWFuLFxuICAgICAgICBpc1N0cmluZzogaXNTdHJpbmcsXG4gICAgICAgIGlzTnVtYmVyOiBpc051bWJlcixcbiAgICAgICAgaXNOdW1lcmljOiBpc051bWVyaWMsXG4gICAgICAgIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgICAgICAgdG9Cb29sZWFuOiB0b0Jvb2xlYW4sXG4gICAgICAgIHRvTnVtYmVyOiB0b051bWJlcixcbiAgICAgICAgdG9GbG9hdDogdG9GbG9hdCxcbiAgICAgICAgdG9Ob2RlOiB0b05vZGUsXG4gICAgICAgIHRvTm9kZXM6IHRvTm9kZXMsXG4gICAgICAgIHRvTGlzdDogdG9MaXN0LFxuICAgICAgICB0b01zOiB0b01zLFxuICAgICAgICBzd2FwOiBzd2FwLFxuICAgICAgICBhc3NpZ246IGFzc2lnbixcbiAgICAgICAgZWFjaDogZWFjaCxcbiAgICAgICAgc29ydEJ5OiBzb3J0QnksXG4gICAgICAgIGNsYW1wOiBjbGFtcCxcbiAgICAgICAgbm9vcDogbm9vcCxcbiAgICAgICAgaW50ZXJzZWN0UmVjdDogaW50ZXJzZWN0UmVjdCxcbiAgICAgICAgcG9pbnRJblJlY3Q6IHBvaW50SW5SZWN0LFxuICAgICAgICBEaW1lbnNpb25zOiBEaW1lbnNpb25zLFxuICAgICAgICBNb3VzZVRyYWNrZXI6IE1vdXNlVHJhY2tlcixcbiAgICAgICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsXG4gICAgICAgIHBhcnNlT3B0aW9uczogcGFyc2VPcHRpb25zLFxuICAgICAgICBQbGF5ZXI6IFBsYXllcixcbiAgICAgICAgUHJvbWlzZTogUHJvbWlzZSQxLFxuICAgICAgICBEZWZlcnJlZDogRGVmZXJyZWQsXG4gICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgcXVlcnlBbGw6IHF1ZXJ5QWxsLFxuICAgICAgICBmaW5kOiBmaW5kLFxuICAgICAgICBmaW5kQWxsOiBmaW5kQWxsLFxuICAgICAgICBtYXRjaGVzOiBtYXRjaGVzLFxuICAgICAgICBjbG9zZXN0OiBjbG9zZXN0LFxuICAgICAgICBwYXJlbnRzOiBwYXJlbnRzLFxuICAgICAgICBlc2NhcGU6IGVzY2FwZSxcbiAgICAgICAgY3NzOiBjc3MsXG4gICAgICAgIGdldFN0eWxlczogZ2V0U3R5bGVzLFxuICAgICAgICBnZXRTdHlsZTogZ2V0U3R5bGUsXG4gICAgICAgIGdldENzc1ZhcjogZ2V0Q3NzVmFyLFxuICAgICAgICBwcm9wTmFtZTogcHJvcE5hbWUsXG4gICAgICAgIGlzVG91Y2g6IGlzVG91Y2gsXG4gICAgICAgIGdldFBvczogZ2V0UG9zJDFcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNvbXBvbmVudEFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7XG5cbiAgICAgICAgdmFyIGNvbXBvbmVudHMgPSB7fTtcblxuICAgICAgICBVSWtpdC5jb21wb25lbnQgPSBmdW5jdGlvbiAobmFtZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGNvbXBvbmVudHNbbmFtZV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHNbbmFtZV0gPSBVSWtpdC5leHRlbmQoY29tcG9uZW50c1tuYW1lXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbbmFtZV07XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgVUlraXRbbmFtZV0gPSBmdW5jdGlvbiAoZWxlbWVudCwgZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCwgYXJnc0FycmF5ID0gQXJyYXkoaSk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSBhcmdzQXJyYXlbaV0gPSBhcmd1bWVudHNbaV07XG5cblxuICAgICAgICAgICAgICAgIHZhciBjb21wb25lbnQgPSBVSWtpdC5jb21wb25lbnQobmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNvbXBvbmVudCh7ZGF0YTogZWxlbWVudH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQub3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgY29tcG9uZW50KHtkYXRhOiBbXS5jb25jYXQoIGFyZ3NBcnJheSApfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA/IGluaXQoZWxlbWVudCkgOiAkJChlbGVtZW50KS5tYXAoaW5pdClbMF07XG5cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbml0KGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBVSWtpdC5nZXRDb21wb25lbnQoZWxlbWVudCwgbmFtZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRkZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNvbXBvbmVudCh7ZWw6IGVsZW1lbnQsIGRhdGE6IGRhdGEkJDF9KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIG9wdCA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBhc3NpZ24oe30sIG9wdGlvbnMpIDogb3B0aW9ucy5vcHRpb25zO1xuXG4gICAgICAgICAgICBvcHQubmFtZSA9IG5hbWU7XG5cbiAgICAgICAgICAgIGlmIChvcHQuaW5zdGFsbCkge1xuICAgICAgICAgICAgICAgIG9wdC5pbnN0YWxsKFVJa2l0LCBvcHQsIG5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoVUlraXQuX2luaXRpYWxpemVkICYmICFvcHQuZnVuY3Rpb25hbCkge1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IGh5cGhlbmF0ZShuYW1lKTtcbiAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkgeyByZXR1cm4gVUlraXRbbmFtZV0oKFwiW3VrLVwiICsgaWQgKyBcIl0sW2RhdGEtdWstXCIgKyBpZCArIFwiXVwiKSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50c1tuYW1lXSA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBvcHQgOiBvcHRpb25zO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LmdldENvbXBvbmVudHMgPSBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50W0RBVEFdIHx8IHt9OyB9O1xuICAgICAgICBVSWtpdC5nZXRDb21wb25lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkgeyByZXR1cm4gVUlraXQuZ2V0Q29tcG9uZW50cyhlbGVtZW50KVtuYW1lXTsgfTtcblxuICAgICAgICBVSWtpdC5jb25uZWN0ID0gZnVuY3Rpb24gKG5vZGUpIHtcblxuICAgICAgICAgICAgaWYgKG5vZGVbREFUQV0pIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIG5vZGVbREFUQV0pIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZVtEQVRBXVtuYW1lXS5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIHZhciBuYW1lJDEgPSBnZXRDb21wb25lbnROYW1lKG5vZGUuYXR0cmlidXRlc1tpXS5uYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmIChuYW1lJDEgJiYgbmFtZSQxIGluIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgVUlraXRbbmFtZSQxXShub2RlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LmRpc2Nvbm5lY3QgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBub2RlW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgbm9kZVtEQVRBXVtuYW1lXS5fY2FsbERpc2Nvbm5lY3RlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZShhdHRyaWJ1dGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0c1dpdGgoYXR0cmlidXRlLCAndWstJykgfHwgc3RhcnRzV2l0aChhdHRyaWJ1dGUsICdkYXRhLXVrLScpXG4gICAgICAgICAgICA/IGNhbWVsaXplKGF0dHJpYnV0ZS5yZXBsYWNlKCdkYXRhLXVrLScsICcnKS5yZXBsYWNlKCd1ay0nLCAnJykpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJvb3QgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIGNvbm5lY3QgPSBVSWtpdC5jb25uZWN0O1xuICAgICAgICB2YXIgZGlzY29ubmVjdCA9IFVJa2l0LmRpc2Nvbm5lY3Q7XG5cbiAgICAgICAgaWYgKCEoJ011dGF0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkb2N1bWVudC5ib2R5KSB7XG5cbiAgICAgICAgICAgIGluaXQoKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAobmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGluaXQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pKS5vYnNlcnZlKGRvY3VtZW50LCB7Y2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG5cbiAgICAgICAgICAgIGFwcGx5JCQxKGRvY3VtZW50LmJvZHksIGNvbm5lY3QpO1xuXG4gICAgICAgICAgICBmYXN0ZG9tLmZsdXNoKCk7XG5cbiAgICAgICAgICAgIChuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zKSB7IHJldHVybiBtdXRhdGlvbnMuZm9yRWFjaChhcHBseU11dGF0aW9uKTsgfSkpLm9ic2VydmUoZG9jdW1lbnQsIHtcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBVSWtpdC5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlNdXRhdGlvbihtdXRhdGlvbikge1xuXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbXV0YXRpb24udGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHR5cGUgPSBtdXRhdGlvbi50eXBlO1xuXG4gICAgICAgICAgICB2YXIgdXBkYXRlID0gdHlwZSAhPT0gJ2F0dHJpYnV0ZXMnXG4gICAgICAgICAgICAgICAgPyBhcHBseUNoaWxkTGlzdChtdXRhdGlvbilcbiAgICAgICAgICAgICAgICA6IGFwcGx5QXR0cmlidXRlKG11dGF0aW9uKTtcblxuICAgICAgICAgICAgdXBkYXRlICYmIFVJa2l0LnVwZGF0ZSh0YXJnZXQpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhcHBseUF0dHJpYnV0ZShyZWYpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSByZWYuYXR0cmlidXRlTmFtZTtcblxuXG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2hyZWYnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShhdHRyaWJ1dGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKCFuYW1lIHx8ICEobmFtZSBpbiBVSWtpdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChoYXNBdHRyKHRhcmdldCwgYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBVSWtpdFtuYW1lXSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gVUlraXQuZ2V0Q29tcG9uZW50KHRhcmdldCwgbmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuJGRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlDaGlsZExpc3QocmVmKSB7XG4gICAgICAgICAgICB2YXIgYWRkZWROb2RlcyA9IHJlZi5hZGRlZE5vZGVzO1xuICAgICAgICAgICAgdmFyIHJlbW92ZWROb2RlcyA9IHJlZi5yZW1vdmVkTm9kZXM7XG5cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRlZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkkJDEoYWRkZWROb2Rlc1tpXSwgY29ubmVjdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHJlbW92ZWROb2Rlcy5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkkJDEocmVtb3ZlZE5vZGVzW2kkMV0sIGRpc2Nvbm5lY3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFwcGx5JCQxKG5vZGUsIGZuKSB7XG5cbiAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSAxIHx8IGhhc0F0dHIobm9kZSwgJ3VrLW5vLWJvb3QnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm4obm9kZSk7XG4gICAgICAgICAgICBub2RlID0gbm9kZS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBub2RlLm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBhcHBseSQkMShub2RlLCBmbik7XG4gICAgICAgICAgICAgICAgbm9kZSA9IG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdsb2JhbEFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7XG5cbiAgICAgICAgVUlraXQudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuXG4gICAgICAgICAgICBpZiAocGx1Z2luLmluc3RhbGxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGx1Z2luLmNhbGwobnVsbCwgdGhpcyk7XG4gICAgICAgICAgICBwbHVnaW4uaW5zdGFsbGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4sIGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29tcG9uZW50ID0gKGlzU3RyaW5nKGNvbXBvbmVudCkgPyBVSWtpdC5jb21wb25lbnQoY29tcG9uZW50KSA6IGNvbXBvbmVudCkgfHwgdGhpcztcbiAgICAgICAgICAgIG1peGluID0gbWVyZ2VPcHRpb25zKHt9LCBtaXhpbik7XG4gICAgICAgICAgICBtaXhpbi5taXhpbnMgPSBjb21wb25lbnQub3B0aW9ucy5taXhpbnM7XG4gICAgICAgICAgICBkZWxldGUgY29tcG9uZW50Lm9wdGlvbnMubWl4aW5zO1xuICAgICAgICAgICAgY29tcG9uZW50Lm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMobWl4aW4sIGNvbXBvbmVudC5vcHRpb25zKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5leHRlbmQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICAgICAgdmFyIFN1cGVyID0gdGhpcztcbiAgICAgICAgICAgIHZhciBTdWIgPSBmdW5jdGlvbiBVSWtpdENvbXBvbmVudCAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgICAgICAgICAgU3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YjtcbiAgICAgICAgICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFN1cGVyLm9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBTdWJbJ3N1cGVyJ10gPSBTdXBlcjtcbiAgICAgICAgICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7XG5cbiAgICAgICAgICAgIHJldHVybiBTdWI7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQudXBkYXRlID0gZnVuY3Rpb24gKGVsZW1lbnQsIGUpIHtcblxuICAgICAgICAgICAgZSA9IGNyZWF0ZUV2ZW50KGUgfHwgJ3VwZGF0ZScpO1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQgPyB0b05vZGUoZWxlbWVudCkgOiBkb2N1bWVudC5ib2R5O1xuXG4gICAgICAgICAgICBwYXRoKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdXBkYXRlKGVsZW1lbnRbREFUQV0sIGUpOyB9KTtcbiAgICAgICAgICAgIGFwcGx5KGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiB1cGRhdGUoZWxlbWVudFtEQVRBXSwgZSk7IH0pO1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGNvbnRhaW5lcjtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVJa2l0LCAnY29udGFpbmVyJywge1xuXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9ICQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlKGRhdGEkJDEsIGUpIHtcblxuICAgICAgICAgICAgaWYgKCFkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSQkMVtuYW1lXS5faXNSZWFkeSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW25hbWVdLl9jYWxsVXBkYXRlKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcGF0aChlbGVtZW50KSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgICAgICAgICB3aGlsZSAoZWxlbWVudCAmJiBlbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5ICYmIGVsZW1lbnQucGFyZW50Tm9kZSkge1xuXG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICBwYXRoLnVuc2hpZnQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvb2tzQVBJIChVSWtpdCkge1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbEhvb2sgPSBmdW5jdGlvbiAoaG9vaykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIGhhbmRsZXJzID0gdGhpcy4kb3B0aW9uc1tob29rXTtcblxuICAgICAgICAgICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gaGFuZGxlci5jYWxsKHRoaXMkMSk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbENvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSB7fTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRQcm9wcygpO1xuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnYmVmb3JlQ29ubmVjdCcpO1xuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5faW5pdEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5faW5pdE9ic2VydmVyKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdjb25uZWN0ZWQnKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmVhZHkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLl9jYWxsUmVhZHkoKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxVcGRhdGUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxEaXNjb25uZWN0ZWQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnYmVmb3JlRGlzY29ubmVjdCcpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl91bmJpbmRFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdkaXNjb25uZWN0ZWQnKTtcblxuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7XG5cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxSZWFkeSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2lzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ3JlYWR5Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbFVwZGF0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbFVwZGF0ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBlID0gY3JlYXRlRXZlbnQoZSB8fCAndXBkYXRlJyk7XG5cbiAgICAgICAgICAgIHZhciB0eXBlID0gZS50eXBlO1xuXG4gICAgICAgICAgICBpZiAoaW5jbHVkZXMoWyd1cGRhdGUnLCAnbG9hZCcsICdyZXNpemUnXSwgdHlwZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdXBkYXRlcyA9IHRoaXMuJG9wdGlvbnMudXBkYXRlO1xuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuX2ZyYW1lcztcbiAgICAgICAgICAgIHZhciByZWFkcyA9IHJlZi5yZWFkcztcbiAgICAgICAgICAgIHZhciB3cml0ZXMgPSByZWYud3JpdGVzO1xuXG4gICAgICAgICAgICBpZiAoIXVwZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVwZGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAocmVmLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlYWQgPSByZWYucmVhZDtcbiAgICAgICAgICAgICAgICB2YXIgd3JpdGUgPSByZWYud3JpdGU7XG4gICAgICAgICAgICAgICAgdmFyIGV2ZW50cyA9IHJlZi5ldmVudHM7XG5cblxuICAgICAgICAgICAgICAgIGlmICh0eXBlICE9PSAndXBkYXRlJyAmJiAhaW5jbHVkZXMoZXZlbnRzLCB0eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHJlYWQgJiYgIWluY2x1ZGVzKGZhc3Rkb20ucmVhZHMsIHJlYWRzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICByZWFkc1tpXSA9IGZhc3Rkb20ucmVhZChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzJDEuX2Nvbm5lY3RlZCAmJiByZWFkLmNhbGwodGhpcyQxLCB0aGlzJDEuX2RhdGEsIGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSAmJiB3cml0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20uY2xlYXIod3JpdGVzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgd3JpdGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ24odGhpcyQxLl9kYXRhLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlYWRzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAod3JpdGUgJiYgIWluY2x1ZGVzKGZhc3Rkb20ud3JpdGVzLCB3cml0ZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlc1tpXSA9IGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl9jb25uZWN0ZWQgJiYgd3JpdGUuY2FsbCh0aGlzJDEsIHRoaXMkMS5fZGF0YSwgZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgd3JpdGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGF0ZUFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgdWlkID0gMDtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAgICAgICAgIG9wdGlvbnMuZGF0YSA9IG5vcm1hbGl6ZURhdGEob3B0aW9ucywgdGhpcy5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcblxuICAgICAgICAgICAgdGhpcy4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLmNvbnN0cnVjdG9yLm9wdGlvbnMsIG9wdGlvbnMsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy4kZWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy4kcHJvcHMgPSB7fTtcblxuICAgICAgICAgICAgdGhpcy5fZnJhbWVzID0ge3JlYWRzOiB7fSwgd3JpdGVzOiB7fX07XG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5fdWlkID0gdWlkKys7XG4gICAgICAgICAgICB0aGlzLl9pbml0RGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5faW5pdE1ldGhvZHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRDb21wdXRlZHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdjcmVhdGVkJyk7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kbW91bnQob3B0aW9ucy5lbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0RGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSByZWYuZGF0YTsgaWYgKCBkYXRhJCQxID09PSB2b2lkIDAgKSBkYXRhJCQxID0ge307XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgdGhpcyQxLiRwcm9wc1trZXldID0gdGhpcyQxW2tleV0gPSBkYXRhJCQxW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0TWV0aG9kcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIG1ldGhvZHMgPSByZWYubWV0aG9kcztcblxuICAgICAgICAgICAgaWYgKG1ldGhvZHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGJpbmQobWV0aG9kc1trZXldLCB0aGlzJDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXRDb21wdXRlZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBjb21wdXRlZCA9IHJlZi5jb21wdXRlZDtcblxuICAgICAgICAgICAgdGhpcy5fcmVzZXRDb21wdXRlZHMoKTtcblxuICAgICAgICAgICAgaWYgKGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyQ29tcHV0ZWQodGhpcyQxLCBrZXksIGNvbXB1dGVkW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX3Jlc2V0Q29tcHV0ZWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY29tcHV0ZWRzID0ge307XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0UHJvcHMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciBrZXk7XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29tcHV0ZWRzKCk7XG5cbiAgICAgICAgICAgIHByb3BzID0gcHJvcHMgfHwgZ2V0UHJvcHModGhpcy4kb3B0aW9ucywgdGhpcy4kbmFtZSk7XG5cbiAgICAgICAgICAgIGZvciAoa2V5IGluIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChwcm9wc1trZXldKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHByb3BzW2tleV0gPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGV4Y2x1ZGUgPSBbdGhpcy4kb3B0aW9ucy5jb21wdXRlZCwgdGhpcy4kb3B0aW9ucy5tZXRob2RzXTtcbiAgICAgICAgICAgIGZvciAoa2V5IGluIHRoaXMkMS4kcHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHByb3BzICYmIG5vdEluKGV4Y2x1ZGUsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxW2tleV0gPSB0aGlzJDEuJHByb3BzW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGV2ZW50cyA9IHJlZi5ldmVudHM7XG5cbiAgICAgICAgICAgIGlmIChldmVudHMpIHtcblxuICAgICAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzT3duKGV2ZW50LCAnaGFuZGxlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KHRoaXMkMSwgZXZlbnRba2V5XSwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnQodGhpcyQxLCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fdW5iaW5kRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKHVuYmluZCkgeyByZXR1cm4gdW5iaW5kKCk7IH0pO1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gW107XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0T2JzZXJ2ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBhdHRycyA9IHJlZi5hdHRycztcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZi5wcm9wcztcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIGlmICh0aGlzLl9vYnNlcnZlciB8fCAhcHJvcHMgfHwgIWF0dHJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhdHRycyA9IGlzQXJyYXkoYXR0cnMpID8gYXR0cnMgOiBPYmplY3Qua2V5cyhwcm9wcykubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGh5cGhlbmF0ZShrZXkpOyB9KTtcblxuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZGF0YSQkMSA9IGdldFByb3BzKHRoaXMkMS4kb3B0aW9ucywgdGhpcyQxLiRuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoYXR0cnMuc29tZShmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAhaXNVbmRlZmluZWQoZGF0YSQkMVtrZXldKSAmJiBkYXRhJCQxW2tleV0gIT09IHRoaXMkMS4kcHJvcHNba2V5XTsgfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiRyZXNldCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoZWwsIHthdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IGF0dHJzLmNvbmNhdChbdGhpcy4kbmFtZSwgKFwiZGF0YS1cIiArICh0aGlzLiRuYW1lKSldKX0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldFByb3BzKG9wdHMsIG5hbWUpIHtcblxuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSB7fTtcbiAgICAgICAgICAgIHZhciBhcmdzID0gb3B0cy5hcmdzOyBpZiAoIGFyZ3MgPT09IHZvaWQgMCApIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IG9wdHMucHJvcHM7IGlmICggcHJvcHMgPT09IHZvaWQgMCApIHByb3BzID0ge307XG4gICAgICAgICAgICB2YXIgZWwgPSBvcHRzLmVsO1xuXG4gICAgICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0F0dHIoZWwsIHByb3ApKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY29lcmNlKHByb3BzW2tleV0sIGF0dHIoZWwsIHByb3ApKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3RhcmdldCcgJiYgKCF2YWx1ZSB8fCBzdGFydHNXaXRoKHZhbHVlLCAnXycpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gcGFyc2VPcHRpb25zKGRhdGEoZWwsIG5hbWUpLCBhcmdzKTtcblxuICAgICAgICAgICAgZm9yICh2YXIga2V5JDEgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wJDEgPSBjYW1lbGl6ZShrZXkkMSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW3Byb3AkMV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW3Byb3AkMV0gPSBjb2VyY2UocHJvcHNbcHJvcCQxXSwgb3B0aW9uc1trZXkkMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWdpc3RlckNvbXB1dGVkKGNvbXBvbmVudCwga2V5LCBjYikge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbXBvbmVudCwga2V5LCB7XG5cbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgX2NvbXB1dGVkcyA9IGNvbXBvbmVudC5fY29tcHV0ZWRzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHByb3BzID0gY29tcG9uZW50LiRwcm9wcztcbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IGNvbXBvbmVudC4kZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNPd24oX2NvbXB1dGVkcywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2NvbXB1dGVkc1trZXldID0gY2IuY2FsbChjb21wb25lbnQsICRwcm9wcywgJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcHV0ZWRzW2tleV07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Ll9jb21wdXRlZHNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50KGNvbXBvbmVudCwgZXZlbnQsIGtleSkge1xuXG4gICAgICAgICAgICBpZiAoIWlzUGxhaW5PYmplY3QoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQgPSAoe25hbWU6IGtleSwgaGFuZGxlcjogZXZlbnR9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG5hbWUgPSBldmVudC5uYW1lO1xuICAgICAgICAgICAgdmFyIGVsID0gZXZlbnQuZWw7XG4gICAgICAgICAgICB2YXIgaGFuZGxlciA9IGV2ZW50LmhhbmRsZXI7XG4gICAgICAgICAgICB2YXIgY2FwdHVyZSA9IGV2ZW50LmNhcHR1cmU7XG4gICAgICAgICAgICB2YXIgZGVsZWdhdGUgPSBldmVudC5kZWxlZ2F0ZTtcbiAgICAgICAgICAgIHZhciBmaWx0ZXIkJDEgPSBldmVudC5maWx0ZXI7XG4gICAgICAgICAgICB2YXIgc2VsZiA9IGV2ZW50LnNlbGY7XG4gICAgICAgICAgICBlbCA9IGlzRnVuY3Rpb24oZWwpXG4gICAgICAgICAgICAgICAgPyBlbC5jYWxsKGNvbXBvbmVudClcbiAgICAgICAgICAgICAgICA6IGVsIHx8IGNvbXBvbmVudC4kZWw7XG5cbiAgICAgICAgICAgIGlmIChpc0FycmF5KGVsKSkge1xuICAgICAgICAgICAgICAgIGVsLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZWdpc3RlckV2ZW50KGNvbXBvbmVudCwgYXNzaWduKHt9LCBldmVudCwge2VsOiBlbH0pLCBrZXkpOyB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZWwgfHwgZmlsdGVyJCQxICYmICFmaWx0ZXIkJDEuY2FsbChjb21wb25lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYW5kbGVyID0gZGV0YWlsKGlzU3RyaW5nKGhhbmRsZXIpID8gY29tcG9uZW50W2hhbmRsZXJdIDogYmluZChoYW5kbGVyLCBjb21wb25lbnQpKTtcblxuICAgICAgICAgICAgaWYgKHNlbGYpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVyID0gc2VsZkZpbHRlcihoYW5kbGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29tcG9uZW50Ll9ldmVudHMucHVzaChcbiAgICAgICAgICAgICAgICBvbihcbiAgICAgICAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICFkZWxlZ2F0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzU3RyaW5nKGRlbGVnYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZGVsZWdhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRlbGVnYXRlLmNhbGwoY29tcG9uZW50KSxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNlbGZGaWx0ZXIoaGFuZGxlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNlbGZIYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgPT09IGUuY3VycmVudFRhcmdldCB8fCBlLnRhcmdldCA9PT0gZS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGwobnVsbCwgZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5vdEluKG9wdGlvbnMsIGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZXZlcnkoZnVuY3Rpb24gKGFycikgeyByZXR1cm4gIWFyciB8fCAhaGFzT3duKGFyciwga2V5KTsgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBkZXRhaWwobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gaXNBcnJheShlLmRldGFpbCkgPyBsaXN0ZW5lci5hcHBseSh2b2lkIDAsIFtlXS5jb25jYXQoZS5kZXRhaWwpKSA6IGxpc3RlbmVyKGUpOyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29lcmNlKHR5cGUsIHZhbHVlKSB7XG5cbiAgICAgICAgICAgIGlmICh0eXBlID09PSBCb29sZWFuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvQm9vbGVhbih2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IE51bWJlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsaXN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b0xpc3QodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbWVkaWEnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTWVkaWEodmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHlwZSA/IHR5cGUodmFsdWUpIDogdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiB0b01lZGlhKHZhbHVlKSB7XG5cbiAgICAgICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVbMF0gPT09ICdAJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IFwibWVkaWEtXCIgKyAodmFsdWUuc3Vic3RyKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b0Zsb2F0KGdldENzc1ZhcihuYW1lKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmICFpc05hTih2YWx1ZSkgPyAoXCIobWluLXdpZHRoOiBcIiArIHZhbHVlICsgXCJweClcIikgOiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEocmVmLCByZWYkMSkge1xuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSByZWYuZGF0YTtcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIHZhciBhcmdzID0gcmVmJDEuYXJncztcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZiQxLnByb3BzOyBpZiAoIHByb3BzID09PSB2b2lkIDAgKSBwcm9wcyA9IHt9O1xuXG4gICAgICAgICAgICBkYXRhJCQxID0gaXNBcnJheShkYXRhJCQxKVxuICAgICAgICAgICAgICAgID8gYXJncyAmJiBhcmdzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGRhdGEkJDEuc2xpY2UoMCwgYXJncy5sZW5ndGgpLnJlZHVjZShmdW5jdGlvbiAoZGF0YSQkMSwgdmFsdWUsIGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ24oZGF0YSQkMSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW2FyZ3NbaW5kZXgkJDFdXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgICAgICAgICAgICAgIH0sIHt9KVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIDogZGF0YSQkMTtcblxuICAgICAgICAgICAgaWYgKGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQoZGF0YSQkMVtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGEkJDFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDFba2V5XSA9IHByb3BzW2tleV0gPyBjb2VyY2UocHJvcHNba2V5XSwgZGF0YSQkMVtrZXldLCBlbCkgOiBkYXRhJCQxW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFuY2VBUEkgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIERBVEEgPSBVSWtpdC5kYXRhO1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoZWwpIHtcblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IHJlZi5uYW1lO1xuXG4gICAgICAgICAgICBpZiAoIWVsW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgZWxbREFUQV0gPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVsW0RBVEFdW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbFtEQVRBXVtuYW1lXSA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuJGVsID0gdGhpcy4kb3B0aW9ucy5lbCA9IHRoaXMuJG9wdGlvbnMuZWwgfHwgZWw7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdpbml0Jyk7XG5cbiAgICAgICAgICAgIGlmICh3aXRoaW4oZWwsIGRvY3VtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxDb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdGhpcy5fY2FsbFVwZGF0ZShlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJHJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY2FsbERpc2Nvbm5lY3RlZCgpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0aW9uIChyZW1vdmVFbCkge1xuICAgICAgICAgICAgaWYgKCByZW1vdmVFbCA9PT0gdm9pZCAwICkgcmVtb3ZlRWwgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7XG5cbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxEaXNjb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2Rlc3Ryb3knKTtcblxuICAgICAgICAgICAgaWYgKCFlbCB8fCAhZWxbREFUQV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGV0ZSBlbFtEQVRBXVtuYW1lXTtcblxuICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbFtEQVRBXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGVsW0RBVEFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVtb3ZlRWwpIHtcbiAgICAgICAgICAgICAgICByZW1vdmUodGhpcy4kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kY3JlYXRlID0gZnVuY3Rpb24gKGNvbXBvbmVudCwgZWxlbWVudCwgZGF0YSQkMSkge1xuICAgICAgICAgICAgcmV0dXJuIFVJa2l0W2NvbXBvbmVudF0oZWxlbWVudCwgZGF0YSQkMSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLiR1cGRhdGUgPSBVSWtpdC51cGRhdGU7XG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZ2V0Q29tcG9uZW50ID0gVUlraXQuZ2V0Q29tcG9uZW50O1xuXG4gICAgICAgIHZhciBuYW1lcyA9IHt9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhVSWtpdC5wcm90b3R5cGUsIHtcblxuICAgICAgICAgICAgJGNvbnRhaW5lcjogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihVSWtpdCwgJ2NvbnRhaW5lcicpLFxuXG4gICAgICAgICAgICAkbmFtZToge1xuXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFuYW1lc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNbbmFtZV0gPSBVSWtpdC5wcmVmaXggKyBoeXBoZW5hdGUobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICB2YXIgVUlraXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICB0aGlzLl9pbml0KG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICBVSWtpdC51dGlsID0gdXRpbDtcbiAgICBVSWtpdC5kYXRhID0gJ19fdWlraXRfXyc7XG4gICAgVUlraXQucHJlZml4ID0gJ3VrLSc7XG4gICAgVUlraXQub3B0aW9ucyA9IHt9O1xuXG4gICAgZ2xvYmFsQVBJKFVJa2l0KTtcbiAgICBob29rc0FQSShVSWtpdCk7XG4gICAgc3RhdGVBUEkoVUlraXQpO1xuICAgIGNvbXBvbmVudEFQSShVSWtpdCk7XG4gICAgaW5zdGFuY2VBUEkoVUlraXQpO1xuXG4gICAgdmFyIENsYXNzID0ge1xuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy4kbmFtZSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgVG9nZ2xhYmxlID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHM6IEJvb2xlYW4sXG4gICAgICAgICAgICBhbmltYXRpb246ICdsaXN0JyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBOdW1iZXIsXG4gICAgICAgICAgICBvcmlnaW46IFN0cmluZyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246IFN0cmluZyxcbiAgICAgICAgICAgIHF1ZXVlZDogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsczogZmFsc2UsXG4gICAgICAgICAgICBhbmltYXRpb246IFtmYWxzZV0sXG4gICAgICAgICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgICAgICAgb3JpZ2luOiBmYWxzZSxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICdsaW5lYXInLFxuICAgICAgICAgICAgcXVldWVkOiBmYWxzZSxcblxuICAgICAgICAgICAgaW5pdFByb3BzOiB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICcnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogJycsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnJyxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206ICcnXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlUHJvcHM6IHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A6IDAsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAwXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBoYXNBbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICEhYW5pbWF0aW9uWzBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFzVHJhbnNpdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFuaW1hdGlvbiA9IHJlZi5hbmltYXRpb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNBbmltYXRpb24gJiYgYW5pbWF0aW9uWzBdID09PSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGVFbGVtZW50OiBmdW5jdGlvbih0YXJnZXRzLCBzaG93LCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHMgPSB0b05vZGVzKHRhcmdldHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhbGwgPSBmdW5jdGlvbiAodGFyZ2V0cykgeyByZXR1cm4gUHJvbWlzZSQxLmFsbCh0YXJnZXRzLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlRWxlbWVudChlbCwgc2hvdywgYW5pbWF0ZSQkMSk7IH0pKTsgfTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvZ2dsZWQgPSB0YXJnZXRzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5pc1RvZ2dsZWQoZWwpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVudG9nZ2xlZCA9IHRhcmdldHMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIWluY2x1ZGVzKHRvZ2dsZWQsIGVsKTsgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEucXVldWVkIHx8ICFpc1VuZGVmaW5lZChhbmltYXRlJCQxKSB8fCAhaXNVbmRlZmluZWQoc2hvdykgfHwgIXRoaXMkMS5oYXNBbmltYXRpb24gfHwgdGFyZ2V0cy5sZW5ndGggPCAyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhbGwodW50b2dnbGVkLmNvbmNhdCh0b2dnbGVkKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbCA9IGJvZHkuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsID0gdG9nZ2xlZFswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpblByb2dyZXNzID0gQW5pbWF0aW9uLmluUHJvZ3Jlc3MoZWwpICYmIGhhc0NsYXNzKGVsLCAndWstYW5pbWF0aW9uLWxlYXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKSAmJiBlbC5zdHlsZS5oZWlnaHQgPT09ICcwcHgnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBwID0gYWxsKHRvZ2dsZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBhbGwodW50b2dnbGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keS5zY3JvbGxUb3AgPSBzY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwLnRoZW4ocmVzb2x2ZSwgbm9vcCk7XG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRvZ2dsZU5vdzogZnVuY3Rpb24odGFyZ2V0cywgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIFByb21pc2UkMS5hbGwodG9Ob2Rlcyh0YXJnZXRzKS5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZUVsZW1lbnQoZWwsIHNob3csIGZhbHNlKTsgfSkpLnRoZW4ocmVzb2x2ZSwgbm9vcCk7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXNUb2dnbGVkOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IHRvTm9kZXMoZWwgfHwgdGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsc1xuICAgICAgICAgICAgICAgICAgICA/IGhhc0NsYXNzKG5vZGVzLCB0aGlzLmNscy5zcGxpdCgnICcpWzBdKVxuICAgICAgICAgICAgICAgICAgICA6ICFoYXNBdHRyKG5vZGVzLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGVBcmlhOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNscyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cihlbCwgJ2FyaWEtaGlkZGVuJywgIXRoaXMuaXNUb2dnbGVkKGVsKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUVsZW1lbnQ6IGZ1bmN0aW9uKGVsLCBzaG93LCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHNob3cgPSBpc0Jvb2xlYW4oc2hvdylcbiAgICAgICAgICAgICAgICAgICAgPyBzaG93XG4gICAgICAgICAgICAgICAgICAgIDogQW5pbWF0aW9uLmluUHJvZ3Jlc3MoZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhc0NsYXNzKGVsLCAndWstYW5pbWF0aW9uLWxlYXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZWwuc3R5bGUuaGVpZ2h0ID09PSAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIXRoaXMuaXNUb2dnbGVkKGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcihlbCwgKFwiYmVmb3JlXCIgKyAoc2hvdyA/ICdzaG93JyA6ICdoaWRlJykpLCBbdGhpc10pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByb21pc2UgPSAoYW5pbWF0ZSQkMSA9PT0gZmFsc2UgfHwgIXRoaXMuaGFzQW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5fdG9nZ2xlSW1tZWRpYXRlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5oYXNUcmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3RvZ2dsZUhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl90b2dnbGVBbmltYXRpb25cbiAgICAgICAgICAgICAgICApKGVsLCBzaG93KTtcblxuICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsIHNob3cgPyAnc2hvdycgOiAnaGlkZScsIFt0aGlzXSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgc2hvdyA/ICdzaG93bicgOiAnaGlkZGVuJywgW3RoaXMkMV0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShlbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlOiBmdW5jdGlvbihlbCwgdG9nZ2xlZCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCFlbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGNoYW5nZWQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBpbmNsdWRlcyh0aGlzLmNscywgJyAnKSB8fCBCb29sZWFuKHRvZ2dsZWQpICE9PSBoYXNDbGFzcyhlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIHRvZ2dsZUNsYXNzKGVsLCB0aGlzLmNscywgaW5jbHVkZXModGhpcy5jbHMsICcgJykgPyB1bmRlZmluZWQgOiB0b2dnbGVkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gQm9vbGVhbih0b2dnbGVkKSA9PT0gaGFzQXR0cihlbCwgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIGF0dHIoZWwsICdoaWRkZW4nLCAhdG9nZ2xlZCA/ICcnIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJCQoJ1thdXRvZm9jdXNdJywgZWwpLnNvbWUoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBpc1Zpc2libGUoZWwpICYmIChlbC5mb2N1cygpIHx8IHRydWUpOyB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYShlbCk7XG4gICAgICAgICAgICAgICAgY2hhbmdlZCAmJiB0aGlzLiR1cGRhdGUoZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUltbWVkaWF0ZTogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGUoZWwsIHNob3cpO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUhlaWdodDogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIGluUHJvZ3Jlc3MgPSBUcmFuc2l0aW9uLmluUHJvZ3Jlc3MoZWwpO1xuICAgICAgICAgICAgICAgIHZhciBpbm5lciA9IGVsLmhhc0NoaWxkTm9kZXMgPyB0b0Zsb2F0KGNzcyhlbC5maXJzdEVsZW1lbnRDaGlsZCwgJ21hcmdpblRvcCcpKSArIHRvRmxvYXQoY3NzKGVsLmxhc3RFbGVtZW50Q2hpbGQsICdtYXJnaW5Cb3R0b20nKSkgOiAwO1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50SGVpZ2h0ID0gaXNWaXNpYmxlKGVsKSA/IGhlaWdodChlbCkgKyAoaW5Qcm9ncmVzcyA/IDAgOiBpbm5lcikgOiAwO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwoZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzVG9nZ2xlZChlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlKGVsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQoZWwsICcnKTtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjaGlsZCBjb21wb25lbnRzIGZpcnN0XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGVuZEhlaWdodCA9IGhlaWdodChlbCkgKyAoaW5Qcm9ncmVzcyA/IDAgOiBpbm5lcik7XG4gICAgICAgICAgICAgICAgaGVpZ2h0KGVsLCBjdXJyZW50SGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoc2hvd1xuICAgICAgICAgICAgICAgICAgICA/IFRyYW5zaXRpb24uc3RhcnQoZWwsIGFzc2lnbih7fSwgdGhpcy5pbml0UHJvcHMsIHtvdmVyZmxvdzogJ2hpZGRlbicsIGhlaWdodDogZW5kSGVpZ2h0fSksIE1hdGgucm91bmQodGhpcy5kdXJhdGlvbiAqICgxIC0gY3VycmVudEhlaWdodCAvIGVuZEhlaWdodCkpLCB0aGlzLnRyYW5zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgIDogVHJhbnNpdGlvbi5zdGFydChlbCwgdGhpcy5oaWRlUHJvcHMsIE1hdGgucm91bmQodGhpcy5kdXJhdGlvbiAqIChjdXJyZW50SGVpZ2h0IC8gZW5kSGVpZ2h0KSksIHRoaXMudHJhbnNpdGlvbikudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZShlbCwgZmFsc2UpOyB9KVxuICAgICAgICAgICAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBjc3MoZWwsIHRoaXMkMS5pbml0UHJvcHMpOyB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUFuaW1hdGlvbjogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbChlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2hvdykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGUoZWwsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQW5pbWF0aW9uLmluKGVsLCB0aGlzLmFuaW1hdGlvblswXSwgdGhpcy5kdXJhdGlvbiwgdGhpcy5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBBbmltYXRpb24ub3V0KGVsLCB0aGlzLmFuaW1hdGlvblsxXSB8fCB0aGlzLmFuaW1hdGlvblswXSwgdGhpcy5kdXJhdGlvbiwgdGhpcy5vcmlnaW4pLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLl90b2dnbGUoZWwsIGZhbHNlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBBY2NvcmRpb24gPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldHM6IFN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2ZTogbnVsbCxcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlOiBCb29sZWFuLFxuICAgICAgICAgICAgbXVsdGlwbGU6IEJvb2xlYW4sXG4gICAgICAgICAgICB0b2dnbGU6IFN0cmluZyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldHM6ICc+IConLFxuICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogW3RydWVdLFxuICAgICAgICAgICAgY29sbGFwc2libGU6IHRydWUsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBjbHNPcGVuOiAndWstb3BlbicsXG4gICAgICAgICAgICB0b2dnbGU6ICc+IC51ay1hY2NvcmRpb24tdGl0bGUnLFxuICAgICAgICAgICAgY29udGVudDogJz4gLnVrLWFjY29yZGlvbi1jb250ZW50JyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICdlYXNlJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGl0ZW1zOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRzID0gcmVmLnRhcmdldHM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0cywgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRhcmdldHMpICsgXCIgXCIgKyAodGhpcy4kcHJvcHMudG9nZ2xlKSk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShpbmRleCgkJCgoKHRoaXMudGFyZ2V0cykgKyBcIiBcIiArICh0aGlzLiRwcm9wcy50b2dnbGUpKSwgdGhpcy4kZWwpLCBlLmN1cnJlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLml0ZW1zW051bWJlcih0aGlzLmFjdGl2ZSldO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiAhaGFzQ2xhc3MoYWN0aXZlLCB0aGlzLmNsc09wZW4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoYWN0aXZlLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlSW1tZWRpYXRlKCQodGhpcyQxLmNvbnRlbnQsIGVsKSwgaGFzQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuKSk7IH0pO1xuXG4gICAgICAgICAgICB2YXIgYWN0aXZlID0gIXRoaXMuY29sbGFwc2libGUgJiYgIWhhc0NsYXNzKHRoaXMuaXRlbXMsIHRoaXMuY2xzT3BlbikgJiYgdGhpcy5pdGVtc1swXTtcbiAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShhY3RpdmUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oaXRlbSwgYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSBnZXRJbmRleChpdGVtLCB0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gZmlsdGVyKHRoaXMuaXRlbXMsIChcIi5cIiArICh0aGlzLmNsc09wZW4pKSk7XG5cbiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtc1tpbmRleCQkMV07XG5cbiAgICAgICAgICAgICAgICBpdGVtICYmIFtpdGVtXVxuICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCF0aGlzLm11bHRpcGxlICYmICFpbmNsdWRlcyhhY3RpdmUsIGl0ZW0pICYmIGFjdGl2ZSB8fCBbXSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc0l0ZW0gPSBlbCA9PT0gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IGlzSXRlbSAmJiAhaGFzQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSAmJiBpc0l0ZW0gJiYgIXRoaXMkMS5jb2xsYXBzaWJsZSAmJiBhY3RpdmUubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuLCBzdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gZWwuX3dyYXBwZXIgPyBlbC5fd3JhcHBlci5maXJzdEVsZW1lbnRDaGlsZCA6ICQodGhpcyQxLmNvbnRlbnQsIGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbC5fd3JhcHBlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLl93cmFwcGVyID0gd3JhcEFsbChjb250ZW50LCAnPGRpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLl93cmFwcGVyLCAnaGlkZGVuJywgc3RhdGUgPyAnJyA6IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RvZ2dsZUltbWVkaWF0ZShjb250ZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGVFbGVtZW50KGVsLl93cmFwcGVyLCBzdGF0ZSwgYW5pbWF0ZSQkMSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCB0aGlzJDEuY2xzT3BlbikgPT09IHN0YXRlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl90b2dnbGVJbW1lZGlhdGUoY29udGVudCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuX3dyYXBwZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXAoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBBbGVydCA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgVG9nZ2xhYmxlXSxcblxuICAgICAgICBhcmdzOiAnYW5pbWF0aW9uJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xvc2U6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogW3RydWVdLFxuICAgICAgICAgICAgc2VsQ2xvc2U6ICcudWstYWxlcnQtY2xvc2UnLFxuICAgICAgICAgICAgZHVyYXRpb246IDE1MCxcbiAgICAgICAgICAgIGhpZGVQcm9wczogYXNzaWduKHtvcGFjaXR5OiAwfSwgVG9nZ2xhYmxlLmRhdGEuaGlkZVByb3BzKVxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxDbG9zZTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMuJGVsKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS4kZGVzdHJveSh0cnVlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIENvcmUgKFVJa2l0KSB7XG5cbiAgICAgICAgcmVhZHkoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICB2YXIgc2Nyb2xsID0gMDtcbiAgICAgICAgICAgIHZhciBzdGFydGVkID0gMDtcblxuICAgICAgICAgICAgb24od2luZG93LCAnbG9hZCByZXNpemUnLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gVUlraXQudXBkYXRlKG51bGwsIGUpOyB9KTtcbiAgICAgICAgICAgIG9uKHdpbmRvdywgJ3Njcm9sbCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgZS5kaXIgPSBzY3JvbGwgPD0gd2luZG93LnBhZ2VZT2Zmc2V0ID8gJ2Rvd24nIDogJ3VwJztcbiAgICAgICAgICAgICAgICBlLnBhZ2VZT2Zmc2V0ID0gc2Nyb2xsID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgIFVJa2l0LnVwZGF0ZShudWxsLCBlKTtcbiAgICAgICAgICAgIH0sIHtjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZX0pO1xuXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2FuaW1hdGlvbnN0YXJ0JywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgaWYgKChjc3ModGFyZ2V0LCAnYW5pbWF0aW9uTmFtZScpIHx8ICcnKS5tYXRjaCgvXnVrLS4qKGxlZnR8cmlnaHQpLykpIHtcblxuICAgICAgICAgICAgICAgICAgICBzdGFydGVkKys7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3dYJywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghLS1zdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1gnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHRvTXMoY3NzKHRhcmdldCwgJ2FuaW1hdGlvbkR1cmF0aW9uJykpICsgMTAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNUb3VjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNscyA9ICd1ay1ob3Zlcic7XG5cbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAndGFwJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCQoKFwiLlwiICsgY2xzKSkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuICF3aXRoaW4odGFyZ2V0LCBlbCkgJiYgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7IH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVJa2l0LCAnaG92ZXJTZWxlY3RvcicsIHtcblxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsICd0YXAnLCBzZWxlY3RvciwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENsYXNzKGN1cnJlbnQsIGNscyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFVJa2l0LmhvdmVyU2VsZWN0b3IgPSAnLnVrLWFuaW1hdGlvbi10b2dnbGUsIC51ay10cmFuc2l0aW9uLXRvZ2dsZSwgW3VrLWhvdmVyXSc7XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICB2YXIgVmlkZW8gPSB7XG5cbiAgICAgICAgYXJnczogJ2F1dG9wbGF5JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYXV0b211dGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBhdXRvcGxheTogQm9vbGVhbixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhdXRvbXV0ZTogZmFsc2UsXG4gICAgICAgICAgICBhdXRvcGxheTogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGluVmlldzogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGF1dG9wbGF5ID0gcmVmLmF1dG9wbGF5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF1dG9wbGF5ID09PSAnaW52aWV3JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmluVmlldyAmJiAhaGFzQXR0cih0aGlzLiRlbCwgJ3ByZWxvYWQnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLnByZWxvYWQgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICByZWFkeTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHRoaXMucGxheWVyID0gbmV3IFBsYXllcih0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9tdXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIubXV0ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKF8sIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLnBsYXllciB8fCAodHlwZSA9PT0gJ3Njcm9sbCcgfHwgdHlwZSA9PT0gJ3Jlc2l6ZScpICYmICF0aGlzLmluVmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogaXNWaXNpYmxlKHRoaXMuJGVsKSAmJiBjc3ModGhpcy4kZWwsICd2aXNpYmlsaXR5JykgIT09ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluVmlldzogdGhpcy5pblZpZXcgJiYgaXNJblZpZXcodGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gcmVmLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpblZpZXcgPSByZWYuaW5WaWV3O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlIHx8IHRoaXMuaW5WaWV3ICYmICFpblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRvcGxheSA9PT0gdHJ1ZSB8fCB0aGlzLmluVmlldyAmJiBpblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLnBsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZScsICdzY3JvbGwnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIHZhciBDb3ZlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgVmlkZW9dLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB3aWR0aDogTnVtYmVyLFxuICAgICAgICAgICAgaGVpZ2h0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhdXRvbXV0ZTogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZWwgPSB0aGlzLiRlbDtcblxuICAgICAgICAgICAgICAgIGlmICghaXNWaXNpYmxlKGVsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IGVsLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgY3NzKFxuICAgICAgICAgICAgICAgICAgICBjc3MoZWwsIHt3aWR0aDogJycsIGhlaWdodDogJyd9KSxcbiAgICAgICAgICAgICAgICAgICAgRGltZW5zaW9ucy5jb3ZlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy53aWR0aCB8fCBlbC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0IHx8IGVsLmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgkJDEgKyAod2lkdGgkJDEgJSAyID8gMSA6IDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0JCQxICsgKGhlaWdodCQkMSAlIDIgPyAxIDogMClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgbG9hZGVkbWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFBvc2l0aW9uID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBwb3M6IFN0cmluZyxcbiAgICAgICAgICAgIG9mZnNldDogbnVsbCxcbiAgICAgICAgICAgIGZsaXA6IEJvb2xlYW4sXG4gICAgICAgICAgICBjbHNQb3M6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHBvczogKFwiYm90dG9tLVwiICsgKCFpc1J0bCA/ICdsZWZ0JyA6ICdyaWdodCcpKSxcbiAgICAgICAgICAgIGZsaXA6IHRydWUsXG4gICAgICAgICAgICBvZmZzZXQ6IGZhbHNlLFxuICAgICAgICAgICAgY2xzUG9zOiAnJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHBvczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlZi5wb3M7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyArICghaW5jbHVkZXMocG9zLCAnLScpID8gJy1jZW50ZXInIDogJycpKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGlyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3NbMF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhbGlnbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBwb3NpdGlvbkF0OiBmdW5jdGlvbihlbGVtZW50LCB0YXJnZXQsIGJvdW5kYXJ5KSB7XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2VzKGVsZW1lbnQsICgodGhpcy5jbHNQb3MpICsgXCItKHRvcHxib3R0b218bGVmdHxyaWdodCkoLVthLXpdKyk/XCIpKTtcbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwge3RvcDogJycsIGxlZnQ6ICcnfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbm9kZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0JCQxID0gcmVmLm9mZnNldDtcblxuICAgICAgICAgICAgICAgIG9mZnNldCQkMSA9IGlzTnVtZXJpYyhvZmZzZXQkJDEpXG4gICAgICAgICAgICAgICAgICAgID8gb2Zmc2V0JCQxXG4gICAgICAgICAgICAgICAgICAgIDogKG5vZGUgPSAkKG9mZnNldCQkMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9mZnNldChub2RlKVtheGlzID09PSAneCcgPyAnbGVmdCcgOiAndG9wJ10gLSBvZmZzZXQodGFyZ2V0KVtheGlzID09PSAneCcgPyAncmlnaHQnIDogJ2JvdHRvbSddXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICAgICAgICB2YXIgYXhpcyA9IHRoaXMuZ2V0QXhpcygpO1xuICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHBvc2l0aW9uQXQoXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgYXhpcyA9PT0gJ3gnID8gKChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSArIFwiIFwiICsgKHRoaXMuYWxpZ24pKSA6ICgodGhpcy5hbGlnbikgKyBcIiBcIiArIChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSksXG4gICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/ICgodGhpcy5kaXIpICsgXCIgXCIgKyAodGhpcy5hbGlnbikpIDogKCh0aGlzLmFsaWduKSArIFwiIFwiICsgKHRoaXMuZGlyKSksXG4gICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/IChcIlwiICsgKHRoaXMuZGlyID09PSAnbGVmdCcgPyAtb2Zmc2V0JCQxIDogb2Zmc2V0JCQxKSkgOiAoXCIgXCIgKyAodGhpcy5kaXIgPT09ICd0b3AnID8gLW9mZnNldCQkMSA6IG9mZnNldCQkMSkpLFxuICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZsaXAsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIHggPSByZWYkMS54O1xuICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmJDEueTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZGlyID0gYXhpcyA9PT0gJ3gnID8geCA6IHk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbiA9IGF4aXMgPT09ICd4JyA/IHkgOiB4O1xuXG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWxlbWVudCwgKCh0aGlzLmNsc1BvcykgKyBcIi1cIiArICh0aGlzLmRpcikgKyBcIi1cIiArICh0aGlzLmFsaWduKSksIHRoaXMub2Zmc2V0ID09PSBmYWxzZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEF4aXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpciA9PT0gJ3RvcCcgfHwgdGhpcy5kaXIgPT09ICdib3R0b20nID8gJ3knIDogJ3gnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgYWN0aXZlO1xuXG4gICAgdmFyIERyb3AgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbUG9zaXRpb24sIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ3BvcycsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIG1vZGU6ICdsaXN0JyxcbiAgICAgICAgICAgIHRvZ2dsZTogQm9vbGVhbixcbiAgICAgICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogQm9vbGVhbixcbiAgICAgICAgICAgIGRlbGF5U2hvdzogTnVtYmVyLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiBOdW1iZXIsXG4gICAgICAgICAgICBjbHNEcm9wOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBtb2RlOiBbJ2NsaWNrJywgJ2hvdmVyJ10sXG4gICAgICAgICAgICB0b2dnbGU6ICctIConLFxuICAgICAgICAgICAgYm91bmRhcnk6IHdpbmRvdyxcbiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IGZhbHNlLFxuICAgICAgICAgICAgZGVsYXlTaG93OiAwLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiA4MDAsXG4gICAgICAgICAgICBjbHNEcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIGhvdmVySWRsZTogMjAwLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbJ3VrLWFuaW1hdGlvbi1mYWRlJ10sXG4gICAgICAgICAgICBjbHM6ICd1ay1vcGVuJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGJvdW5kYXJ5OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeSA9IHJlZi5ib3VuZGFyeTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeShib3VuZGFyeSwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0Ryb3A6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBjbHNEcm9wID0gcmVmLmNsc0Ryb3A7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2xzRHJvcCB8fCAoXCJ1ay1cIiArICh0aGlzLiRvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc1BvczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xzRHJvcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy50cmFja2VyID0gbmV3IE1vdXNlVHJhY2tlcigpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0Ryb3ApO1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7XG4gICAgICAgICAgICB2YXIgdG9nZ2xlID0gcmVmLnRvZ2dsZTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlID0gdG9nZ2xlICYmIHRoaXMuJGNyZWF0ZSgndG9nZ2xlJywgcXVlcnkodG9nZ2xlLCB0aGlzLiRlbCksIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMuJGVsLFxuICAgICAgICAgICAgICAgIG1vZGU6IHRoaXMubW9kZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYSh0aGlzLiRlbCk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFwiLlwiICsgKHRoaXMuY2xzRHJvcCkgKyBcIi1jbG9zZVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FbaHJlZl49XCIjXCJdJztcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGUudGFyZ2V0Lmhhc2g7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZCB8fCAhd2l0aGluKGlkLCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzY3JvbGwnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAndG9nZ2xlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codG9nZ2xlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJFbnRlcixcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdob3ZlcicpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIGFjdGl2ZSAhPT0gdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgYWN0aXZlLnRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgaW5jbHVkZXMoYWN0aXZlLnRvZ2dsZS5tb2RlLCAnaG92ZXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXdpdGhpbihlLnRhcmdldCwgYWN0aXZlLnRvZ2dsZS4kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhcG9pbnRJblJlY3Qoe3g6IGUucGFnZVgsIHk6IGUucGFnZVl9LCBvZmZzZXQoYWN0aXZlLiRlbCkpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codGhpcy50b2dnbGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3RvZ2dsZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgdG9nZ2xlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvZ2dsZSAmJiAhaW5jbHVkZXModG9nZ2xlLnRhcmdldCwgdGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0b2dnbGUgfHwgdGhpcy50b2dnbGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogKFwidG9nZ2xlaGlkZSBcIiArIHBvaW50ZXJMZWF2ZSksXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNUb3VjaChlKSB8fCB0b2dnbGUgJiYgIWluY2x1ZGVzKHRvZ2dsZS50YXJnZXQsIHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZSAmJiBpbmNsdWRlcyh0aGlzLnRvZ2dsZS5tb2RlLCAnaG92ZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIuaW5pdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMudG9nZ2xlLiRlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZS4kZWwsICdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiRlbCAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSBhY3RpdmUgPT09IG51bGwgJiYgd2l0aGluKHRhcmdldCwgdGhpcy4kZWwpICYmIHRoaXMuaXNUb2dnbGVkKCkgPyB0aGlzIDogYWN0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpID8gbnVsbCA6IGFjdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMudG9nZ2xlLiRlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZS4kZWwsICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZS4kZWwuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJCQoJ2EsIGJ1dHRvbicsIHRoaXMudG9nZ2xlLiRlbCkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmJsdXIoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIuY2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkgJiYgIUFuaW1hdGlvbi5pblByb2dyZXNzKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24odG9nZ2xlLCBkZWxheSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICggZGVsYXkgPT09IHZvaWQgMCApIGRlbGF5ID0gdHJ1ZTtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHNob3cgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAhdGhpcyQxLmlzVG9nZ2xlZCgpICYmIHRoaXMkMS50b2dnbGVFbGVtZW50KHRoaXMkMS4kZWwsIHRydWUpOyB9O1xuICAgICAgICAgICAgICAgIHZhciB0cnlTaG93ID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGUgPSB0b2dnbGUgfHwgdGhpcyQxLnRvZ2dsZTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY2xlYXJUaW1lcnMoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWxheSAmJiBhY3RpdmUgJiYgYWN0aXZlICE9PSB0aGlzJDEgJiYgYWN0aXZlLmlzRGVsYXlpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zaG93VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMkMS5zaG93LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcyQxLmlzUGFyZW50T2YoYWN0aXZlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlLmhpZGVUaW1lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aXZlICYmICF0aGlzJDEuaXNDaGlsZE9mKGFjdGl2ZSkgJiYgIXRoaXMkMS5pc1BhcmVudE9mKGFjdGl2ZSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXY7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYWN0aXZlICYmIGFjdGl2ZSAhPT0gcHJldiAmJiAhdGhpcyQxLmlzQ2hpbGRPZihhY3RpdmUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxheSAmJiB0aGlzJDEuZGVsYXlTaG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvd1RpbWVyID0gc2V0VGltZW91dChzaG93LCB0aGlzJDEuZGVsYXlTaG93KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IHRoaXMkMTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRvZ2dsZSAmJiB0aGlzLnRvZ2dsZSAmJiB0b2dnbGUuJGVsICE9PSB0aGlzLnRvZ2dsZS4kZWwpIHtcblxuICAgICAgICAgICAgICAgICAgICBvbmNlKHRoaXMuJGVsLCAnaGlkZScsIHRyeVNob3cpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5U2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKGRlbGF5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBkZWxheSA9PT0gdm9pZCAwICkgZGVsYXkgPSB0cnVlO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaGlkZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS50b2dnbGVOb3codGhpcyQxLiRlbCwgZmFsc2UpOyB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RlbGF5aW5nID0gdGhpcy50cmFja2VyLm1vdmVzVG8odGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5ICYmIHRoaXMuaXNEZWxheWluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQodGhpcy5oaWRlLCB0aGlzLmhvdmVySWRsZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWxheSAmJiB0aGlzLmRlbGF5SGlkZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQoaGlkZSwgdGhpcy5kZWxheUhpZGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbGVhclRpbWVyczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0RlbGF5aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc0FjdGl2ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZSA9PT0gdGhpcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzQ2hpbGRPZjogZnVuY3Rpb24oZHJvcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkcm9wICYmIGRyb3AgIT09IHRoaXMgJiYgd2l0aGluKHRoaXMuJGVsLCBkcm9wLiRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc1BhcmVudE9mOiBmdW5jdGlvbihkcm9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyb3AgJiYgZHJvcCAhPT0gdGhpcyAmJiB3aXRoaW4oZHJvcC4kZWwsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLShzdGFja3xib3VuZGFyeSlcIikpO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge3RvcDogJycsIGxlZnQ6ICcnLCBkaXNwbGF5OiAnYmxvY2snfSk7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLWJvdW5kYXJ5XCIpLCB0aGlzLmJvdW5kYXJ5QWxpZ24pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gb2Zmc2V0KHRoaXMuYm91bmRhcnkpO1xuICAgICAgICAgICAgICAgIHZhciBhbGlnblRvID0gdGhpcy5ib3VuZGFyeUFsaWduID8gYm91bmRhcnkgOiBvZmZzZXQodGhpcy50b2dnbGUuJGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsaWduID09PSAnanVzdGlmeScpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3AgPSB0aGlzLmdldEF4aXMoKSA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHByb3AsIGFsaWduVG9bcHJvcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy4kZWwub2Zmc2V0V2lkdGggPiBNYXRoLm1heChib3VuZGFyeS5yaWdodCAtIGFsaWduVG8ubGVmdCwgYWxpZ25Uby5yaWdodCAtIGJvdW5kYXJ5LmxlZnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAoKHRoaXMuY2xzRHJvcCkgKyBcIi1zdGFja1wiKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkF0KHRoaXMuJGVsLCB0aGlzLmJvdW5kYXJ5QWxpZ24gPyB0aGlzLmJvdW5kYXJ5IDogdGhpcy50b2dnbGUuJGVsLCB0aGlzLmJvdW5kYXJ5KTtcblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHJlZ2lzdGVyZWQ7XG5cbiAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50KCkge1xuXG4gICAgICAgIGlmIChyZWdpc3RlcmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZWdpc3RlcmVkID0gdHJ1ZTtcbiAgICAgICAgb24oZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSByZWYuZGVmYXVsdFByZXZlbnRlZDtcblxuICAgICAgICAgICAgdmFyIHByZXY7XG5cbiAgICAgICAgICAgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aGlsZSAoYWN0aXZlICYmIGFjdGl2ZSAhPT0gcHJldiAmJiAhd2l0aGluKHRhcmdldCwgYWN0aXZlLiRlbCkgJiYgIShhY3RpdmUudG9nZ2xlICYmIHdpdGhpbih0YXJnZXQsIGFjdGl2ZS50b2dnbGUuJGVsKSkpIHtcbiAgICAgICAgICAgICAgICBwcmV2ID0gYWN0aXZlO1xuICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIERyb3Bkb3duID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IERyb3BcblxuICAgIH07XG5cbiAgICB2YXIgRm9ybUN1c3RvbSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXJnczogJ3RhcmdldCcsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldDogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldDogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsSW5wdXQsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCAmJiAodGFyZ2V0ID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaW5wdXQucGFyZW50Tm9kZSA9PT0gJGVsXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgICAgICAgICAgICAgIHx8IHF1ZXJ5KHRhcmdldCwgJGVsKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGlucHV0ID0gcmVmLmlucHV0O1xuXG4gICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG9wdGlvbjtcbiAgICAgICAgICAgIHZhciBwcm9wID0gaXNJbnB1dCh0YXJnZXQpID8gJ3ZhbHVlJyA6ICd0ZXh0Q29udGVudCc7XG4gICAgICAgICAgICB2YXIgcHJldiA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzWzBdXG4gICAgICAgICAgICAgICAgPyBpbnB1dC5maWxlc1swXS5uYW1lXG4gICAgICAgICAgICAgICAgOiBtYXRjaGVzKGlucHV0LCAnc2VsZWN0JykgJiYgKG9wdGlvbiA9ICQkKCdvcHRpb24nLCBpbnB1dCkuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuc2VsZWN0ZWQ7IH0pWzBdKVxuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbi50ZXh0Q29udGVudFxuICAgICAgICAgICAgICAgICAgICA6IGlucHV0LnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAocHJldiAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnZm9jdXNpbiBmb2N1c291dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IHNlbElucHV0LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gcmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT09IHRoaXMuaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwidWstXCIgKyAoaW5jbHVkZXModHlwZSwgJ2ZvY3VzJykgPyAnZm9jdXMnIDogJ2hvdmVyJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzKFsnZm9jdXNpbicsICdtb3VzZWVudGVyJ10sIHR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2hhbmdlJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIC8vIERlcHJlY2F0ZWRcbiAgICB2YXIgR2lmID0ge1xuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaW52aWV3ID0gaXNJblZpZXcodGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbnZpZXcgfHwgZGF0YSQkMS5pc0luVmlldyA9PT0gaW52aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkYXRhJCQxLmlzSW5WaWV3ID0gaW52aWV3O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLnNyYyA9IHRoaXMuJGVsLnNyYztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIE1hcmdpbiA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbWFyZ2luOiBTdHJpbmcsXG4gICAgICAgICAgICBmaXJzdENvbHVtbjogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1hcmdpbjogJ3VrLW1hcmdpbi1zbWFsbC10b3AnLFxuICAgICAgICAgICAgZmlyc3RDb2x1bW46ICd1ay1maXJzdC1jb2x1bW4nXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpdGVtcyA9IHRoaXMuJGVsLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gW1tdXTtcblxuICAgICAgICAgICAgICAgIGlmICghaXRlbXMubGVuZ3RoIHx8ICFpc1Zpc2libGUodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxLnJvd3MgPSByb3dzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRhdGEkJDEucm93cyA9IGdldFJvd3MoaXRlbXMpO1xuICAgICAgICAgICAgICAgIGRhdGEkJDEuc3RhY2tzID0gIWRhdGEkJDEucm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG5cblxuICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7IHJldHVybiByb3cuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEubWFyZ2luLCBpICE9PSAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuZmlyc3RDb2x1bW4sIGogPT09IDApO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFJvd3MoaXRlbXMpIHtcbiAgICAgICAgdmFyIHJvd3MgPSBbW11dO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgdmFyIGVsID0gaXRlbXNbaV07XG4gICAgICAgICAgICB2YXIgZGltID0gZ2V0T2Zmc2V0KGVsKTtcblxuICAgICAgICAgICAgaWYgKCFkaW0uaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGogPSByb3dzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcm93ID0gcm93c1tqXTtcblxuICAgICAgICAgICAgICAgIGlmICghcm93WzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGxlZnREaW0gPSBnZXRPZmZzZXQocm93WzBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChkaW0udG9wID49IGxlZnREaW0uYm90dG9tIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICByb3dzLnB1c2goW2VsXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkaW0uYm90dG9tID4gbGVmdERpbS50b3ApIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGltLmxlZnQgPCBsZWZ0RGltLmxlZnQgJiYgIWlzUnRsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3cudW5zaGlmdChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy51bnNoaWZ0KFtlbF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJvd3M7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQoZWxlbWVudCkge1xuXG4gICAgICAgIHZhciBvZmZzZXRUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgdmFyIG9mZnNldExlZnQgPSBlbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICAgIHZhciBvZmZzZXRIZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBvZmZzZXRUb3AsXG4gICAgICAgICAgICBsZWZ0OiBvZmZzZXRMZWZ0LFxuICAgICAgICAgICAgaGVpZ2h0OiBvZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICBib3R0b206IG9mZnNldFRvcCArIG9mZnNldEhlaWdodFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBHcmlkID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IE1hcmdpbixcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgbmFtZTogJ2dyaWQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtYXNvbnJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgcGFyYWxsYXg6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1hcmdpbjogJ3VrLWdyaWQtbWFyZ2luJyxcbiAgICAgICAgICAgIGNsc1N0YWNrOiAndWstZ3JpZC1zdGFjaycsXG4gICAgICAgICAgICBtYXNvbnJ5OiBmYWxzZSxcbiAgICAgICAgICAgIHBhcmFsbGF4OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcGFyYWxsYXg6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBwYXJhbGxheCA9IHJlZi5wYXJhbGxheDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhwYXJhbGxheCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5tYXNvbnJ5ICYmIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleC10b3AgdWstZmxleC13cmFwLXRvcCcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hc29ucnkgfHwgdGhpcy5wYXJhbGxheCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93cyA9IHJvd3MubWFwKGZ1bmN0aW9uIChlbGVtZW50cykgeyByZXR1cm4gc29ydEJ5KGVsZW1lbnRzLCAnb2Zmc2V0TGVmdCcpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2xhdGVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hc29ucnkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZXMgPSByb3dzLnJlZHVjZShmdW5jdGlvbiAodHJhbnNsYXRlcywgcm93LCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVzW2ldID0gcm93Lm1hcChmdW5jdGlvbiAoXywgaikgeyByZXR1cm4gaSA9PT0gMCA/IDAgOiB0b0Zsb2F0KHRyYW5zbGF0ZXNbaSAtIDFdW2pdKSArIChoZWlnaHQkJDEgLSB0b0Zsb2F0KHJvd3NbaSAtIDFdW2pdICYmIHJvd3NbaSAtIDFdW2pdLm9mZnNldEhlaWdodCkpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSByb3cucmVkdWNlKGZ1bmN0aW9uIChoZWlnaHQkJDEsIGVsKSB7IHJldHVybiBNYXRoLm1heChoZWlnaHQkJDEsIGVsLm9mZnNldEhlaWdodCk7IH0sIDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxIZWlnaHQgPSBtYXhDb2x1bW5IZWlnaHQocm93cykgKyBnZXRNYXJnaW5Ub3AodGhpcy4kZWwsIHRoaXMubWFyZ2luKSAqIChyb3dzLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Jvd3M6IHJvd3MsIHRyYW5zbGF0ZXM6IHRyYW5zbGF0ZXMsIGhlaWdodDogZWxIZWlnaHR9O1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YWNrcyA9IHJlZi5zdGFja3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzU3RhY2ssIHN0YWNrcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAncGFkZGluZ0JvdHRvbScsIHRoaXMucGFyYWxsYXggJiYgcm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KSA/IHRoaXMucGFyYWxsYXggOiAnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0JCQxICYmIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIGhlaWdodCQkMSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxlZDogdGhpcy5wYXJhbGxheCAmJiByb3dzLnNvbWUoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gcm93Lmxlbmd0aCA+IDE7IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzY3JvbGxlZE92ZXIodGhpcy4kZWwsIGhlaWdodCQkMSA/IGhlaWdodCQkMSAtIGhlaWdodCh0aGlzLiRlbCkgOiAwKSAqIHRoaXMucGFyYWxsYXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbGVkID0gcmVmLnNjcm9sbGVkO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNsYXRlcyA9IHJlZi50cmFuc2xhdGVzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbGVkID09PSBmYWxzZSAmJiAhdHJhbnNsYXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGkpIHsgcmV0dXJuIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaikgeyByZXR1cm4gY3NzKGVsLCAndHJhbnNmb3JtJywgIXNjcm9sbGVkICYmICF0cmFuc2xhdGVzID8gJycgOiAoXCJ0cmFuc2xhdGVZKFwiICsgKCh0cmFuc2xhdGVzICYmIC10cmFuc2xhdGVzW2ldW2pdKSArIChzY3JvbGxlZCA/IGogJSAyID8gc2Nyb2xsZWQgOiBzY3JvbGxlZCAvIDggOiAwKSkgKyBcInB4KVwiKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRNYXJnaW5Ub3Aocm9vdCwgY2xzKSB7XG5cbiAgICAgICAgdmFyIG5vZGVzID0gdG9Ob2Rlcyhyb290LmNoaWxkcmVuKTtcbiAgICAgICAgdmFyIHJlZiA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGhhc0NsYXNzKGVsLCBjbHMpOyB9KTtcbiAgICAgICAgdmFyIG5vZGUgPSByZWZbMF07XG5cbiAgICAgICAgcmV0dXJuIHRvRmxvYXQobm9kZVxuICAgICAgICAgICAgPyBjc3Mobm9kZSwgJ21hcmdpblRvcCcpXG4gICAgICAgICAgICA6IGNzcyhub2Rlc1swXSwgJ3BhZGRpbmdMZWZ0JykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1heENvbHVtbkhlaWdodChyb3dzKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCByb3dzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCByb3cpIHtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gc3VtW2ldID0gKHN1bVtpXSB8fCAwKSArIGVsLm9mZnNldEhlaWdodDsgfSk7XG4gICAgICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgICB9LCBbXSkpO1xuICAgIH1cblxuICAgIHZhciBIZWlnaHRNYXRjaCA9IHtcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICByb3c6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0YXJnZXQ6ICc+IConLFxuICAgICAgICAgICAgcm93OiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0LCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5lbGVtZW50cywge1xuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICcnXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByb3dzOiAhdGhpcy5yb3dcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW3RoaXMubWF0Y2godGhpcy5lbGVtZW50cyldXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGdldFJvd3ModGhpcy5lbGVtZW50cykubWFwKGZ1bmN0aW9uIChlbGVtZW50cykgeyByZXR1cm4gdGhpcyQxLm1hdGNoKGVsZW1lbnRzKTsgfSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG5cblxuICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHMgPSByZWYuZWxlbWVudHM7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzcyhlbGVtZW50cywge1xuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IGhlaWdodCQkMSxcbiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgbWF0Y2g6IGZ1bmN0aW9uKGVsZW1lbnRzKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodHMgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gMDtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IE1hdGgubWF4KG1heCwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodHMucHVzaChoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gaGVpZ2h0c1tpXSA8IG1heDsgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge2hlaWdodDogbWF4LCBlbGVtZW50czogZWxlbWVudHN9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEhlaWdodFZpZXdwb3J0ID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBleHBhbmQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXRUb3A6IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXRCb3R0b206IEJvb2xlYW4sXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGV4cGFuZDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXRUb3A6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0Qm90dG9tOiBmYWxzZSxcbiAgICAgICAgICAgIG1pbkhlaWdodDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdib3hTaXppbmcnLCAnYm9yZGVyLWJveCcpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHZpZXdwb3J0ID0gaGVpZ2h0KHdpbmRvdyk7XG4gICAgICAgICAgICAgICAgdmFyIG1pbkhlaWdodCwgb2Zmc2V0VG9wID0gMDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge2hlaWdodDogJycsIG1pbkhlaWdodDogJyd9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHZpZXdwb3J0IC0gb2Zmc2V0SGVpZ2h0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRpZmYgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQgPSBvZmZzZXRIZWlnaHQodGhpcy4kZWwpICsgZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcCA8IHZpZXdwb3J0IC8gMiAmJiB0aGlzLm9mZnNldFRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IHRvcDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9mZnNldEJvdHRvbSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gb2Zmc2V0SGVpZ2h0KHRoaXMuJGVsLm5leHRFbGVtZW50U2libGluZyk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc051bWVyaWModGhpcy5vZmZzZXRCb3R0b20pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSAodmlld3BvcnQgLyAxMDApICogdGhpcy5vZmZzZXRCb3R0b207XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9mZnNldEJvdHRvbSAmJiBlbmRzV2l0aCh0aGlzLm9mZnNldEJvdHRvbSwgJ3B4JykpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IHRvRmxvYXQodGhpcy5vZmZzZXRCb3R0b20pO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcodGhpcy5vZmZzZXRCb3R0b20pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSBvZmZzZXRIZWlnaHQocXVlcnkodGhpcy5vZmZzZXRCb3R0b20sIHRoaXMuJGVsKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIG1vYmlsZSBkZXZpY2VzIChpT1MgYW5kIEFuZHJvaWQpIHdpbmRvdy5pbm5lckhlaWdodCAhPT0gMTAwdmhcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ID0gb2Zmc2V0VG9wID8gKFwiY2FsYygxMDB2aCAtIFwiICsgb2Zmc2V0VG9wICsgXCJweClcIikgOiAnMTAwdmgnO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFtaW5IZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge2hlaWdodDogJycsIG1pbkhlaWdodDogbWluSGVpZ2h0fSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSB0aGlzLiRlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0ICYmIHRoaXMubWluSGVpZ2h0ID4gZWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnbWluSGVpZ2h0JywgdGhpcy5taW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIElFIDExIGZpeCAobWluLWhlaWdodCBvbiBhIGZsZXggY29udGFpbmVyIHdvbid0IGFwcGx5IHRvIGl0cyBmbGV4IGl0ZW1zKVxuICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydCAtIG9mZnNldFRvcCA+PSBlbEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdoZWlnaHQnLCBtaW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0SGVpZ2h0KGVsKSB7XG4gICAgICAgIHJldHVybiBlbCAmJiBlbC5vZmZzZXRIZWlnaHQgfHwgMDtcbiAgICB9XG5cbiAgICB2YXIgc3ZncyA9IHt9O1xuXG4gICAgdmFyIFNWRyA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgaWQ6IFN0cmluZyxcbiAgICAgICAgICAgIGljb246IFN0cmluZyxcbiAgICAgICAgICAgIHNyYzogU3RyaW5nLFxuICAgICAgICAgICAgc3R5bGU6IFN0cmluZyxcbiAgICAgICAgICAgIHdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBoZWlnaHQ6IE51bWJlcixcbiAgICAgICAgICAgIHJhdGlvOiBOdW1iZXIsXG4gICAgICAgICAgICAnY2xhc3MnOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICByYXRpbzogMSxcbiAgICAgICAgICAgIGlkOiBmYWxzZSxcbiAgICAgICAgICAgIGV4Y2x1ZGU6IFsncmF0aW8nLCAnc3JjJywgJ2ljb24nXSxcbiAgICAgICAgICAgICdjbGFzcyc6ICcnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGFzc2lnbiQkMTtcblxuXG4gICAgICAgICAgICB0aGlzLmNsYXNzICs9ICcgdWstc3ZnJztcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmljb24gJiYgaW5jbHVkZXModGhpcy5zcmMsICcjJykpIHtcblxuICAgICAgICAgICAgICAgIHZhciBwYXJ0cyA9IHRoaXMuc3JjLnNwbGl0KCcjJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAoYXNzaWduJCQxID0gcGFydHMsIHRoaXMuc3JjID0gYXNzaWduJCQxWzBdLCB0aGlzLmljb24gPSBhc3NpZ24kJDFbMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdmcgPSB0aGlzLmdldFN2ZygpLnRoZW4oZnVuY3Rpb24gKHN2Zykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGVsO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHN2ZykpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmljb24gJiYgaW5jbHVkZXMoc3ZnLCAnPHN5bWJvbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdmcgPSBwYXJzZVN5bWJvbHMoc3ZnLCB0aGlzJDEuaWNvbikgfHwgc3ZnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZWwgPSAkKHN2Zy5zdWJzdHIoc3ZnLmluZGV4T2YoJzxzdmcnKSkpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwgPSBzdmcuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoJ1NWRyBub3QgZm91bmQuJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSBhdHRyKGVsLCAndmlld0JveCcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRpbWVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9ucyA9IGRpbWVuc2lvbnMuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLndpZHRoID0gdGhpcyQxLiRwcm9wcy53aWR0aCB8fCBkaW1lbnNpb25zWzJdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGVpZ2h0ID0gdGhpcyQxLiRwcm9wcy5oZWlnaHQgfHwgZGltZW5zaW9uc1szXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzJDEud2lkdGggKj0gdGhpcyQxLnJhdGlvO1xuICAgICAgICAgICAgICAgIHRoaXMkMS5oZWlnaHQgKj0gdGhpcyQxLnJhdGlvO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiB0aGlzJDEuJG9wdGlvbnMucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMVtwcm9wXSAmJiAhaW5jbHVkZXModGhpcyQxLmV4Y2x1ZGUsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLCBwcm9wLCB0aGlzJDFbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQXR0cihlbCwgJ2lkJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS53aWR0aCAmJiAhdGhpcyQxLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnaGVpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5oZWlnaHQgJiYgIXRoaXMkMS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnd2lkdGgnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IHRoaXMkMS4kZWw7XG4gICAgICAgICAgICAgICAgaWYgKGlzVm9pZEVsZW1lbnQocm9vdCkgfHwgcm9vdC50YWdOYW1lID09PSAnQ0FOVkFTJykge1xuXG4gICAgICAgICAgICAgICAgICAgIGF0dHIocm9vdCwge2hpZGRlbjogdHJ1ZSwgaWQ6IG51bGx9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHJvb3QubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBlbC5pc0VxdWFsTm9kZShuZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSBuZXh0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIocm9vdCwgZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ID0gcm9vdC5sYXN0RWxlbWVudENoaWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdCAmJiBlbC5pc0VxdWFsTm9kZShsYXN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSBsYXN0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJvb3QsIGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcyQxLnN2Z0VsID0gZWw7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZWw7XG5cbiAgICAgICAgICAgIH0sIG5vb3ApO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmIChpc1ZvaWRFbGVtZW50KHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHtoaWRkZW46IG51bGwsIGlkOiB0aGlzLmlkIHx8IG51bGx9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc3ZnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdmcudGhlbihmdW5jdGlvbiAoc3ZnKSB7IHJldHVybiAoIXRoaXMkMS5fY29ubmVjdGVkIHx8IHN2ZyAhPT0gdGhpcyQxLnN2Z0VsKSAmJiByZW1vdmUoc3ZnKTsgfSwgbm9vcCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3ZnID0gdGhpcy5zdmdFbCA9IG51bGw7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGdldFN2ZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3Znc1t0aGlzLnNyY10pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN2Z3NbdGhpcy5zcmNdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN2Z3NbdGhpcy5zcmNdID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodGhpcyQxLnNyYywgJ2RhdGE6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMkMS5zcmMuc3BsaXQoJywnKVsxXSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhamF4KHRoaXMkMS5zcmMpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHhocikgeyByZXR1cm4gcmVzb2x2ZSh4aHIucmVzcG9uc2UpOyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlamVjdCgnU1ZHIG5vdCBmb3VuZC4nKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBzdmdzW3RoaXMuc3JjXTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgc3ltYm9sUmUgPSAvPHN5bWJvbCguKj9pZD0oWydcIl0pKC4qPylcXDJbXl0qPzxcXC8pc3ltYm9sPi9nO1xuICAgIHZhciBzeW1ib2xzID0ge307XG5cbiAgICBmdW5jdGlvbiBwYXJzZVN5bWJvbHMoc3ZnLCBpY29uKSB7XG5cbiAgICAgICAgaWYgKCFzeW1ib2xzW3N2Z10pIHtcblxuICAgICAgICAgICAgc3ltYm9sc1tzdmddID0ge307XG5cbiAgICAgICAgICAgIHZhciBtYXRjaDtcbiAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzeW1ib2xSZS5leGVjKHN2ZykpKSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sc1tzdmddW21hdGNoWzNdXSA9IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiXCIgKyAobWF0Y2hbMV0pICsgXCJzdmc+XCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN5bWJvbFJlLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzeW1ib2xzW3N2Z11baWNvbl07XG4gICAgfVxuXG4gICAgdmFyIGNsb3NlSWNvbiA9IFwiPHN2ZyB3aWR0aD1cXFwiMTRcXFwiIGhlaWdodD1cXFwiMTRcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiB4MT1cXFwiMVxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxM1xcXCIgeTI9XFxcIjEzXFxcIi8+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMVxcXCIgeDE9XFxcIjEzXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjFcXFwiIHkyPVxcXCIxM1xcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIGNsb3NlTGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMTlcXFwiIHkyPVxcXCIxOVxcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHgxPVxcXCIxOVxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxXFxcIiB5Mj1cXFwiMTlcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBtYXJrZXIgPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeD1cXFwiOVxcXCIgeT1cXFwiNFxcXCIgd2lkdGg9XFxcIjFcXFwiIGhlaWdodD1cXFwiMTFcXFwiLz48cmVjdCB4PVxcXCI0XFxcIiB5PVxcXCI5XFxcIiB3aWR0aD1cXFwiMTFcXFwiIGhlaWdodD1cXFwiMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIG5hdmJhclRvZ2dsZUljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeT1cXFwiOVxcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjJcXFwiLz48cmVjdCB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMlxcXCIvPjxyZWN0IHk9XFxcIjE1XFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMlxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIG92ZXJsYXlJY29uID0gXCI8c3ZnIHdpZHRoPVxcXCI0MFxcXCIgaGVpZ2h0PVxcXCI0MFxcXCIgdmlld0JveD1cXFwiMCAwIDQwIDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxyZWN0IHg9XFxcIjE5XFxcIiB5PVxcXCIwXFxcIiB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCI0MFxcXCIvPjxyZWN0IHg9XFxcIjBcXFwiIHk9XFxcIjE5XFxcIiB3aWR0aD1cXFwiNDBcXFwiIGhlaWdodD1cXFwiMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHBhZ2luYXRpb25OZXh0ID0gXCI8c3ZnIHdpZHRoPVxcXCI3XFxcIiBoZWlnaHQ9XFxcIjEyXFxcIiB2aWV3Qm94PVxcXCIwIDAgNyAxMlxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMlxcXCIgcG9pbnRzPVxcXCIxIDEgNiA2IDEgMTFcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBwYWdpbmF0aW9uUHJldmlvdXMgPSBcIjxzdmcgd2lkdGg9XFxcIjdcXFwiIGhlaWdodD1cXFwiMTJcXFwiIHZpZXdCb3g9XFxcIjAgMCA3IDEyXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4yXFxcIiBwb2ludHM9XFxcIjYgMSAxIDYgNiAxMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNlYXJjaEljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBjeD1cXFwiOVxcXCIgY3k9XFxcIjlcXFwiIHI9XFxcIjdcXFwiLz48cGF0aCBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBkPVxcXCJNMTQsMTQgTDE4LDE4IEwxNCwxNCBaXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2VhcmNoTGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjQwXFxcIiBoZWlnaHQ9XFxcIjQwXFxcIiB2aWV3Qm94PVxcXCIwIDAgNDAgNDBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS44XFxcIiBjeD1cXFwiMTcuNVxcXCIgY3k9XFxcIjE3LjVcXFwiIHI9XFxcIjE2LjVcXFwiLz48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS44XFxcIiB4MT1cXFwiMzhcXFwiIHkxPVxcXCIzOVxcXCIgeDI9XFxcIjI5XFxcIiB5Mj1cXFwiMzBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzZWFyY2hOYXZiYXIgPSBcIjxzdmcgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBjeD1cXFwiMTAuNVxcXCIgY3k9XFxcIjEwLjVcXFwiIHI9XFxcIjkuNVxcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjFcXFwiIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjIzXFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCIxN1xcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNsaWRlbmF2TmV4dCA9IFwiPHN2ZyB3aWR0aD1cXFwiMTRweFxcXCIgaGVpZ2h0PVxcXCIyNHB4XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMjRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHBvaW50cz1cXFwiMS4yMjUsMjMgMTIuNzc1LDEyIDEuMjI1LDEgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZOZXh0TGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjI1cHhcXFwiIGhlaWdodD1cXFwiNDBweFxcXCIgdmlld0JveD1cXFwiMCAwIDI1IDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIgcG9pbnRzPVxcXCI0LjAwMiwzOC41NDcgMjIuNTI3LDIwLjAyNCA0LDEuNSBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzbGlkZW5hdlByZXZpb3VzID0gXCI8c3ZnIHdpZHRoPVxcXCIxNHB4XFxcIiBoZWlnaHQ9XFxcIjI0cHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAyNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgcG9pbnRzPVxcXCIxMi43NzUsMSAxLjIyNSwxMiAxMi43NzUsMjMgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZQcmV2aW91c0xhcmdlID0gXCI8c3ZnIHdpZHRoPVxcXCIyNXB4XFxcIiBoZWlnaHQ9XFxcIjQwcHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNSA0MFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIHBvaW50cz1cXFwiMjAuNTI3LDEuNSAyLDIwLjAyNCAyMC41MjUsMzguNTQ3IFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNwaW5uZXIgPSBcIjxzdmcgd2lkdGg9XFxcIjMwXFxcIiBoZWlnaHQ9XFxcIjMwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMzAgMzBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIGN4PVxcXCIxNVxcXCIgY3k9XFxcIjE1XFxcIiByPVxcXCIxNFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHRvdG9wID0gXCI8c3ZnIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxMFxcXCIgdmlld0JveD1cXFwiMCAwIDE4IDEwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4yXFxcIiBwb2ludHM9XFxcIjEgOSA5IDEgMTcgOSBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBwYXJzZWQgPSB7fTtcbiAgICB2YXIgaWNvbnMgPSB7XG4gICAgICAgIHNwaW5uZXI6IHNwaW5uZXIsXG4gICAgICAgIHRvdG9wOiB0b3RvcCxcbiAgICAgICAgbWFya2VyOiBtYXJrZXIsXG4gICAgICAgICdjbG9zZS1pY29uJzogY2xvc2VJY29uLFxuICAgICAgICAnY2xvc2UtbGFyZ2UnOiBjbG9zZUxhcmdlLFxuICAgICAgICAnbmF2YmFyLXRvZ2dsZS1pY29uJzogbmF2YmFyVG9nZ2xlSWNvbixcbiAgICAgICAgJ292ZXJsYXktaWNvbic6IG92ZXJsYXlJY29uLFxuICAgICAgICAncGFnaW5hdGlvbi1uZXh0JzogcGFnaW5hdGlvbk5leHQsXG4gICAgICAgICdwYWdpbmF0aW9uLXByZXZpb3VzJzogcGFnaW5hdGlvblByZXZpb3VzLFxuICAgICAgICAnc2VhcmNoLWljb24nOiBzZWFyY2hJY29uLFxuICAgICAgICAnc2VhcmNoLWxhcmdlJzogc2VhcmNoTGFyZ2UsXG4gICAgICAgICdzZWFyY2gtbmF2YmFyJzogc2VhcmNoTmF2YmFyLFxuICAgICAgICAnc2xpZGVuYXYtbmV4dCc6IHNsaWRlbmF2TmV4dCxcbiAgICAgICAgJ3NsaWRlbmF2LW5leHQtbGFyZ2UnOiBzbGlkZW5hdk5leHRMYXJnZSxcbiAgICAgICAgJ3NsaWRlbmF2LXByZXZpb3VzJzogc2xpZGVuYXZQcmV2aW91cyxcbiAgICAgICAgJ3NsaWRlbmF2LXByZXZpb3VzLWxhcmdlJzogc2xpZGVuYXZQcmV2aW91c0xhcmdlXG4gICAgfTtcblxuICAgIHZhciBJY29uID0ge1xuXG4gICAgICAgIGluc3RhbGw6IGluc3RhbGwsXG5cbiAgICAgICAgYXR0cnM6IFsnaWNvbicsICdyYXRpbyddLFxuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBTVkddLFxuXG4gICAgICAgIGFyZ3M6ICdpY29uJyxcblxuICAgICAgICBwcm9wczogWydpY29uJ10sXG5cbiAgICAgICAgZGF0YToge2V4Y2x1ZGU6IFsnaWQnLCAnc3R5bGUnLCAnY2xhc3MnLCAnc3JjJywgJ2ljb24nLCAncmF0aW8nXX0sXG5cbiAgICAgICAgaXNJY29uOiB0cnVlLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWljb24nKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGdldFN2ZzogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IGdldEljb24oYXBwbHlSdGwodGhpcy5pY29uKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoJ0ljb24gbm90IGZvdW5kLicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZShpY29uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEljb25Db21wb25lbnQgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbixcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAodm0pIHsgcmV0dXJuICh7XG4gICAgICAgICAgICBpY29uOiBoeXBoZW5hdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucy5uYW1lKVxuICAgICAgICB9KTsgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZW5hdiA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLXNsaWRlbmF2Jyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IHJlZi5pY29uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NsYXNzKCRlbCwgJ3VrLXNsaWRlbmF2LWxhcmdlJylcbiAgICAgICAgICAgICAgICAgICAgPyAoaWNvbiArIFwiLWxhcmdlXCIpXG4gICAgICAgICAgICAgICAgICAgIDogaWNvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNlYXJjaCA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGljb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGljb24gPSByZWYuaWNvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBoYXNDbGFzcygkZWwsICd1ay1zZWFyY2gtaWNvbicpICYmIHBhcmVudHMoJGVsLCAnLnVrLXNlYXJjaC1sYXJnZScpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/ICdzZWFyY2gtbGFyZ2UnXG4gICAgICAgICAgICAgICAgICAgIDogcGFyZW50cygkZWwsICcudWstc2VhcmNoLW5hdmJhcicpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc2VhcmNoLW5hdmJhcidcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaWNvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIENsb3NlID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcImNsb3NlLVwiICsgKGhhc0NsYXNzKHRoaXMuJGVsLCAndWstY2xvc2UtbGFyZ2UnKSA/ICdsYXJnZScgOiAnaWNvbicpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNwaW5uZXIgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbkNvbXBvbmVudCxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuc3ZnLnRoZW4oZnVuY3Rpb24gKHN2ZykgeyByZXR1cm4gdGhpcyQxLnJhdGlvICE9PSAxICYmIGNzcygkKCdjaXJjbGUnLCBzdmcpLCAnc3Ryb2tlV2lkdGgnLCAxIC8gdGhpcyQxLnJhdGlvKTsgfSwgbm9vcCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsKFVJa2l0KSB7XG4gICAgICAgIFVJa2l0Lmljb24uYWRkID0gZnVuY3Rpb24gKG5hbWUsIHN2Zykge1xuICAgICAgICAgICAgdmFyIG9iajtcblxuXG4gICAgICAgICAgICB2YXIgYWRkZWQgPSBpc1N0cmluZyhuYW1lKSA/ICgoIG9iaiA9IHt9LCBvYmpbbmFtZV0gPSBzdmcsIG9iaiApKSA6IG5hbWU7XG4gICAgICAgICAgICBlYWNoKGFkZGVkLCBmdW5jdGlvbiAoc3ZnLCBuYW1lKSB7XG4gICAgICAgICAgICAgICAgaWNvbnNbbmFtZV0gPSBzdmc7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZFtuYW1lXTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoVUlraXQuX2luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkoZG9jdW1lbnQuYm9keSwgZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlYWNoKFVJa2l0LmdldENvbXBvbmVudHMoZWwpLCBmdW5jdGlvbiAoY21wKSB7IHJldHVybiBjbXAuJG9wdGlvbnMuaXNJY29uICYmIGNtcC5pY29uIGluIGFkZGVkICYmIGNtcC4kcmVzZXQoKTsgfVxuICAgICAgICAgICAgICAgICAgICApOyB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJY29uKGljb24pIHtcblxuICAgICAgICBpZiAoIWljb25zW2ljb25dKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcGFyc2VkW2ljb25dKSB7XG4gICAgICAgICAgICBwYXJzZWRbaWNvbl0gPSAkKGljb25zW2ljb25dLnRyaW0oKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyc2VkW2ljb25dO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGx5UnRsKGljb24pIHtcbiAgICAgICAgcmV0dXJuIGlzUnRsID8gc3dhcChzd2FwKGljb24sICdsZWZ0JywgJ3JpZ2h0JyksICdwcmV2aW91cycsICduZXh0JykgOiBpY29uO1xuICAgIH1cblxuICAgIHZhciBJbWcgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRhdGFTcmM6IFN0cmluZyxcbiAgICAgICAgICAgIGRhdGFTcmNzZXQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBkYXRhU2l6ZXM6IEJvb2xlYW4sXG4gICAgICAgICAgICBzaXplczogU3RyaW5nLFxuICAgICAgICAgICAgd2lkdGg6IE51bWJlcixcbiAgICAgICAgICAgIGhlaWdodDogTnVtYmVyLFxuICAgICAgICAgICAgZGF0YVdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBkYXRhSGVpZ2h0OiBOdW1iZXIsXG4gICAgICAgICAgICBvZmZzZXRUb3A6IFN0cmluZyxcbiAgICAgICAgICAgIG9mZnNldExlZnQ6IFN0cmluZyxcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZGF0YVNyYzogJycsXG4gICAgICAgICAgICBkYXRhU3Jjc2V0OiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGFTaXplczogZmFsc2UsXG4gICAgICAgICAgICBzaXplczogZmFsc2UsXG4gICAgICAgICAgICB3aWR0aDogZmFsc2UsXG4gICAgICAgICAgICBoZWlnaHQ6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiAnNTB2aCcsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiAwLFxuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGNhY2hlS2V5OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVNyYyA9IHJlZi5kYXRhU3JjO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy4kbmFtZSkgKyBcIi5cIiArIGRhdGFTcmMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd2lkdGg6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVdpZHRoID0gcmVmLmRhdGFXaWR0aDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB3aWR0aCQkMSB8fCBkYXRhV2lkdGg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoZWlnaHQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBkYXRhSGVpZ2h0ID0gcmVmLmRhdGFIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0JCQxIHx8IGRhdGFIZWlnaHQ7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaXplczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNpemVzID0gcmVmLnNpemVzO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhU2l6ZXMgPSByZWYuZGF0YVNpemVzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemVzIHx8IGRhdGFTaXplcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzSW1nOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNJbWcoJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMuJGVsXS5jb25jYXQocXVlcnlBbGwodGFyZ2V0LCB0aGlzLiRlbCkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0VG9wID0gcmVmLm9mZnNldFRvcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0b1B4KG9mZnNldFRvcCwgJ2hlaWdodCcpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG9mZnNldExlZnQgPSByZWYub2Zmc2V0TGVmdDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0b1B4KG9mZnNldExlZnQsICd3aWR0aCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHN0b3JhZ2VbdGhpcy5jYWNoZUtleV0pIHtcbiAgICAgICAgICAgICAgICBzZXRTcmNBdHRycyh0aGlzLiRlbCwgc3RvcmFnZVt0aGlzLmNhY2hlS2V5XSB8fCB0aGlzLmRhdGFTcmMsIHRoaXMuZGF0YVNyY3NldCwgdGhpcy5zaXplcyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNJbWcgJiYgdGhpcy53aWR0aCAmJiB0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMuJGVsLCBnZXRQbGFjZWhvbGRlckltYWdlKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLnNpemVzKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsYXkgPSByZWYuZGVsYXk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IHJlZi5pbWFnZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZSB8fCAhdGhpcy50YXJnZXQuc29tZShmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGlzSW5WaWV3KGVsLCB0aGlzJDEub2Zmc2V0VG9wLCB0aGlzJDEub2Zmc2V0TGVmdCwgdHJ1ZSk7IH0pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0ltZyAmJiBpbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLnRoZW4oZnVuY3Rpb24gKGltZykgeyByZXR1cm4gaW1nICYmIHNldFNyY0F0dHJzKHRoaXMkMS4kZWwsIGN1cnJlbnRTcmMoaW1nKSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldEltYWdlKHRoaXMuZGF0YVNyYywgdGhpcy5kYXRhU3Jjc2V0LCB0aGlzLnNpemVzKS50aGVuKGZ1bmN0aW9uIChpbWcpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMkMS4kZWwsIGN1cnJlbnRTcmMoaW1nKSwgaW1nLnNyY3NldCwgaW1nLnNpemVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlW3RoaXMkMS5jYWNoZUtleV0gPSBjdXJyZW50U3JjKGltZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgbm9vcClcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEdpdmUgcGxhY2Vob2xkZXIgaW1hZ2VzIHRpbWUgdG8gYXBwbHkgdGhlaXIgZGltZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEkJDEuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxLmRlbGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNldFNyY0F0dHJzKGVsLCBzcmMsIHNyY3NldCwgc2l6ZXMpIHtcblxuICAgICAgICBpZiAoaXNJbWcoZWwpKSB7XG4gICAgICAgICAgICBzcmMgJiYgKGVsLnNyYyA9IHNyYyk7XG4gICAgICAgICAgICBzcmNzZXQgJiYgKGVsLnNyY3NldCA9IHNyY3NldCk7XG4gICAgICAgICAgICBzaXplcyAmJiAoZWwuc2l6ZXMgPSBzaXplcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzcmMgJiYgY3NzKGVsLCAnYmFja2dyb3VuZEltYWdlJywgKFwidXJsKFwiICsgc3JjICsgXCIpXCIpKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgdmFyIHVybENhY2hlID0ge307XG4gICAgdmFyIHNpemVzUmUgPSAvXFxzKiguKj8pXFxzKihcXHcrfGNhbGNcXCguKj9cXCkpXFxzKig/Oix8JCkvZztcbiAgICBmdW5jdGlvbiBnZXRQbGFjZWhvbGRlckltYWdlKHdpZHRoJCQxLCBoZWlnaHQkJDEsIHNpemVzLCBjb2xvcikge1xuICAgICAgICB2YXIgYXNzaWduJCQxO1xuXG4gICAgICAgIGlmICggY29sb3IgPT09IHZvaWQgMCApIGNvbG9yID0gJ3RyYW5zcGFyZW50JztcblxuICAgICAgICBpZiAoc2l6ZXMpIHtcbiAgICAgICAgICAgIHZhciBtYXRjaGVzJCQxO1xuXG4gICAgICAgICAgICB3aGlsZSAoKG1hdGNoZXMkJDEgPSBzaXplc1JlLmV4ZWMoc2l6ZXMpKSkge1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyQkMVsxXSB8fCB3aW5kb3cubWF0Y2hNZWRpYShtYXRjaGVzJCQxWzFdKS5tYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMkJDEgPSBldmFsdWF0ZVNpemUobWF0Y2hlcyQkMVsyXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2l6ZXNSZS5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgICAgICAoKGFzc2lnbiQkMSA9IERpbWVuc2lvbnMucmF0aW8oe3dpZHRoOiB3aWR0aCQkMSwgaGVpZ2h0OiBoZWlnaHQkJDF9LCAnd2lkdGgnLCB0b1B4KG1hdGNoZXMkJDEgfHwgJzEwMHZ3JykpLCB3aWR0aCQkMSA9IGFzc2lnbiQkMS53aWR0aCwgaGVpZ2h0JCQxID0gYXNzaWduJCQxLmhlaWdodCkpO1xuXG4gICAgICAgIH1cblxuICAgICAgICB2YXIga2V5ID0gd2lkdGgkJDEgKyBcIi5cIiArIGhlaWdodCQkMSArIFwiLlwiICsgY29sb3I7XG4gICAgICAgIGlmICh1cmxDYWNoZVtrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gdXJsQ2FjaGVba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjYW52YXMgPSBmcmFnbWVudCgnPGNhbnZhcz4nKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGgkJDE7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQkJDE7XG5cbiAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCB3aWR0aCQkMSwgaGVpZ2h0JCQxKTtcblxuICAgICAgICByZXR1cm4gdXJsQ2FjaGVba2V5XSA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgIH1cblxuICAgIHZhciBzaXplUmUgPSAvXFxkKyg/Olxcdyt8JSkvZztcbiAgICB2YXIgYWRkaXRpb25SZSA9IC9bKy1dPyhcXGQrKS9nO1xuICAgIGZ1bmN0aW9uIGV2YWx1YXRlU2l6ZShzaXplKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoKHNpemUsICdjYWxjJylcbiAgICAgICAgICAgID8gc2l6ZVxuICAgICAgICAgICAgICAgIC5zdWJzdHJpbmcoNSwgc2l6ZS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKHNpemVSZSwgZnVuY3Rpb24gKHNpemUpIHsgcmV0dXJuIHRvUHgoc2l6ZSk7IH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyAvZywgJycpXG4gICAgICAgICAgICAgICAgLm1hdGNoKGFkZGl0aW9uUmUpXG4gICAgICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArICtiOyB9LCAwKVxuICAgICAgICAgICAgOiBzaXplO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvUHgodmFsdWUsIHByb3BlcnR5LCBlbGVtZW50KSB7XG4gICAgICAgIGlmICggcHJvcGVydHkgPT09IHZvaWQgMCApIHByb3BlcnR5ID0gJ3dpZHRoJztcbiAgICAgICAgaWYgKCBlbGVtZW50ID09PSB2b2lkIDAgKSBlbGVtZW50ID0gd2luZG93O1xuXG4gICAgICAgIHJldHVybiBpc051bWVyaWModmFsdWUpXG4gICAgICAgICAgICA/ICt2YWx1ZVxuICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJ3Z3JylcbiAgICAgICAgICAgICAgICA/IHBlcmNlbnQoZWxlbWVudCwgJ3dpZHRoJywgdmFsdWUpXG4gICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJ3ZoJylcbiAgICAgICAgICAgICAgICAgICAgPyBwZXJjZW50KGVsZW1lbnQsICdoZWlnaHQnLCB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJyUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwZXJjZW50KGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdG9GbG9hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdmFyIGRpbWVuc2lvbnMgPSB7aGVpZ2h0OiBoZWlnaHQsIHdpZHRoOiB3aWR0aH07XG4gICAgZnVuY3Rpb24gcGVyY2VudChlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGRpbWVuc2lvbnNbcHJvcGVydHldKGVsZW1lbnQpICogdG9GbG9hdCh2YWx1ZSkgLyAxMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJbWcoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLnRhZ05hbWUgPT09ICdJTUcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnRTcmMoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLmN1cnJlbnRTcmMgfHwgZWwuc3JjO1xuICAgIH1cblxuICAgIHZhciBrZXkgPSAnX190ZXN0X18nO1xuICAgIHZhciBzdG9yYWdlO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBmb3IgU2FmYXJpJ3MgcHJpdmF0ZSBicm93c2luZyBtb2RlIGFuZCBhY2Nlc3Npbmcgc2Vzc2lvblN0b3JhZ2UgaW4gQmxpbmtcbiAgICB0cnkge1xuICAgICAgICBzdG9yYWdlID0gd2luZG93LnNlc3Npb25TdG9yYWdlIHx8IHt9O1xuICAgICAgICBzdG9yYWdlW2tleV0gPSAxO1xuICAgICAgICBkZWxldGUgc3RvcmFnZVtrZXldO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIHZhciBMZWFkZXIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBmaWxsOiBTdHJpbmcsXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGZpbGw6ICcnLFxuICAgICAgICAgICAgbWVkaWE6IGZhbHNlLFxuICAgICAgICAgICAgY2xzV3JhcHBlcjogJ3VrLWxlYWRlci1maWxsJyxcbiAgICAgICAgICAgIGNsc0hpZGU6ICd1ay1sZWFkZXItaGlkZScsXG4gICAgICAgICAgICBhdHRyRmlsbDogJ2RhdGEtZmlsbCdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBmaWxsOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmlsbCA9IHJlZi5maWxsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGwgfHwgZ2V0Q3NzVmFyKCdsZWFkZXItZmlsbCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBhc3NpZ24kJDE7XG5cbiAgICAgICAgICAgIChhc3NpZ24kJDEgPSB3cmFwSW5uZXIodGhpcy4kZWwsIChcIjxzcGFuIGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc1dyYXBwZXIpICsgXCJcXFwiPlwiKSksIHRoaXMud3JhcHBlciA9IGFzc2lnbiQkMVswXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHVud3JhcCh0aGlzLndyYXBwZXIuY2hpbGROb2Rlcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2hhbmdlZCA9IHJlZi5jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWYud2lkdGg7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHdpZHRoJCQxO1xuXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoJCQxID0gTWF0aC5mbG9vcih0aGlzLiRlbC5vZmZzZXRXaWR0aCAvIDIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgkJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkOiBjaGFuZ2VkIHx8IHByZXYgIT09IHdpZHRoJCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZTogdGhpcy5tZWRpYSAmJiAhd2luZG93Lm1hdGNoTWVkaWEodGhpcy5tZWRpYSkubWF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMud3JhcHBlciwgdGhpcy5jbHNIaWRlLCBkYXRhJCQxLmhpZGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhJCQxLmNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLndyYXBwZXIsIHRoaXMuYXR0ckZpbGwsIG5ldyBBcnJheShkYXRhJCQxLndpZHRoKS5qb2luKHRoaXMuZmlsbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIENvbnRhaW5lciA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY29udGFpbmVyOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgY29udGFpbmVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gcmVmLmNvbnRhaW5lcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIgPT09IHRydWUgJiYgdGhpcy4kY29udGFpbmVyIHx8IGNvbnRhaW5lciAmJiAkKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBhY3RpdmUkMTtcblxuICAgIHZhciBNb2RhbCA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgQ29udGFpbmVyLCBUb2dnbGFibGVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBzZWxQYW5lbDogU3RyaW5nLFxuICAgICAgICAgICAgc2VsQ2xvc2U6IFN0cmluZyxcbiAgICAgICAgICAgIGVzY0Nsb3NlOiBCb29sZWFuLFxuICAgICAgICAgICAgYmdDbG9zZTogQm9vbGVhbixcbiAgICAgICAgICAgIHN0YWNrOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzOiAndWstb3BlbicsXG4gICAgICAgICAgICBlc2NDbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIGJnQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICBvdmVybGF5OiB0cnVlLFxuICAgICAgICAgICAgc3RhY2s6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcGFuZWw6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbFBhbmVsID0gcmVmLnNlbFBhbmVsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsUGFuZWwsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRWxlbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b01zKGNzcyh0aGlzLnRyYW5zaXRpb25FbGVtZW50LCAndHJhbnNpdGlvbkR1cmF0aW9uJykpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYmdDbG9zZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJnQ2xvc2UgPSByZWYuYmdDbG9zZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBiZ0Nsb3NlICYmIHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsQ2xvc2U7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd0b2dnbGUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IGFjdGl2ZSQxICYmIGFjdGl2ZSQxICE9PSB0aGlzICYmIGFjdGl2ZSQxO1xuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LmhpZGUoKS50aGVuKHRoaXMuc2hvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnRzKCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEgPSBhY3RpdmUkMSAmJiBhY3RpdmUkMSAhPT0gdGhpcyAmJiBhY3RpdmUkMSB8fCB0aGlzLnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUkMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVyZWdpc3RlckV2ZW50cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxiYXJXaWR0aCA9IHdpZHRoKHdpbmRvdykgLSB3aWR0aChkb2N1bWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WScsIHRoaXMuc2Nyb2xsYmFyV2lkdGggJiYgdGhpcy5vdmVybGF5ID8gJ3Njcm9sbCcgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuY2xzUGFnZSk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gcmVmLnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHByZXYpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYuY2xzUGFnZSA9PT0gdGhpcyQxLmNsc1BhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPSBwcmV2LnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgIXRoaXMucHJldiAmJiBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WScsICcnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLiRlbC5wYXJlbnROb2RlICE9PSB0aGlzLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBhcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMudG9nZ2xlTm93KHRoaXMuJGVsLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgOiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aXZlJDE7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlSW1tZWRpYXRlOiBmdW5jdGlvbihlbCwgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RvZ2dsZShlbCwgc2hvdyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEudHJhbnNpdGlvbkR1cmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzJDEudHJhbnNpdGlvbkVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgcmVzb2x2ZSwgZmFsc2UsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldCA9PT0gdGhpcyQxLnRyYW5zaXRpb25FbGVtZW50OyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTsgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBldmVudHM7XG5cbiAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50cygpIHtcblxuICAgICAgICBpZiAoZXZlbnRzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudHMgPSBbXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0UHJldmVudGVkID0gcmVmLmRlZmF1bHRQcmV2ZW50ZWQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlJDEgJiYgYWN0aXZlJDEuYmdDbG9zZSAmJiAhZGVmYXVsdFByZXZlbnRlZCAmJiAoIWFjdGl2ZSQxLm92ZXJsYXkgfHwgd2l0aGluKHRhcmdldCwgYWN0aXZlJDEuJGVsKSkgJiYgIXdpdGhpbih0YXJnZXQsIGFjdGl2ZSQxLnBhbmVsKSkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmUkMS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmtleUNvZGUgPT09IDI3ICYmIGFjdGl2ZSQxICYmIGFjdGl2ZSQxLmVzY0Nsb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVyZWdpc3RlckV2ZW50cygpIHtcbiAgICAgICAgZXZlbnRzICYmIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uICh1bmJpbmQpIHsgcmV0dXJuIHVuYmluZCgpOyB9KTtcbiAgICAgICAgZXZlbnRzID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgTW9kYWwkMSA9IHtcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDEsXG5cbiAgICAgICAgbWl4aW5zOiBbTW9kYWxdLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1tb2RhbC1wYWdlJyxcbiAgICAgICAgICAgIHNlbFBhbmVsOiAnLnVrLW1vZGFsLWRpYWxvZycsXG4gICAgICAgICAgICBzZWxDbG9zZTogJy51ay1tb2RhbC1jbG9zZSwgLnVrLW1vZGFsLWNsb3NlLWRlZmF1bHQsIC51ay1tb2RhbC1jbG9zZS1vdXRzaWRlLCAudWstbW9kYWwtY2xvc2UtZnVsbCdcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3ModGhpcy5wYW5lbCwgJ3VrLW1hcmdpbi1hdXRvLXZlcnRpY2FsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleCcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuJGVsKTsgLy8gZm9yY2UgcmVmbG93XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCAndWstZmxleCcpO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsJDEgKFVJa2l0KSB7XG5cbiAgICAgICAgVUlraXQubW9kYWwuZGlhbG9nID0gZnVuY3Rpb24gKGNvbnRlbnQsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgdmFyIGRpYWxvZyA9IFVJa2l0Lm1vZGFsKChcIiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbFxcXCI+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWRpYWxvZ1xcXCI+XCIgKyBjb250ZW50ICsgXCI8L2Rpdj4gPC9kaXY+IFwiKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGRpYWxvZy5zaG93KCk7XG5cbiAgICAgICAgICAgIG9uKGRpYWxvZy4kZWwsICdoaWRkZW4nLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSByZWYuY3VycmVudFRhcmdldDtcblxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nLiRkZXN0cm95KHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZGlhbG9nO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmFsZXJ0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiBmYWxzZSwgbGFiZWxzOiBVSWtpdC5tb2RhbC5sYWJlbHN9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIG9uKFVJa2l0Lm1vZGFsLmRpYWxvZygoXCIgPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtYm9keVxcXCI+XCIgKyAoaXNTdHJpbmcobWVzc2FnZSkgPyBtZXNzYWdlIDogaHRtbChtZXNzYWdlKSkgKyBcIjwvZGl2PiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1mb290ZXIgdWstdGV4dC1yaWdodFxcXCI+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay1tb2RhbC1jbG9zZVxcXCIgYXV0b2ZvY3VzPlwiICsgKG9wdGlvbnMubGFiZWxzLm9rKSArIFwiPC9idXR0b24+IDwvZGl2PiBcIiksIG9wdGlvbnMpLiRlbCwgJ2hpZGUnLCByZXNvbHZlKTsgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5tb2RhbC5jb25maXJtID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiB0cnVlLCBsYWJlbHM6IFVJa2l0Lm1vZGFsLmxhYmVsc30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY29uZmlybSA9IFVJa2l0Lm1vZGFsLmRpYWxvZygoXCIgPGZvcm0+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWJvZHlcXFwiPlwiICsgKGlzU3RyaW5nKG1lc3NhZ2UpID8gbWVzc2FnZSA6IGh0bWwobWVzc2FnZSkpICsgXCI8L2Rpdj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstbW9kYWwtY2xvc2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArIFwiPC9idXR0b24+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVxcXCIgYXV0b2ZvY3VzPlwiICsgKG9wdGlvbnMubGFiZWxzLm9rKSArIFwiPC9idXR0b24+IDwvZGl2PiA8L2Zvcm0+IFwiKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIG9uKGNvbmZpcm0uJGVsLCAnc3VibWl0JywgJ2Zvcm0nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25maXJtLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvbihjb25maXJtLiRlbCwgJ2hpZGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLnByb21wdCA9IGZ1bmN0aW9uIChtZXNzYWdlLCB2YWx1ZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gYXNzaWduKHtiZ0Nsb3NlOiBmYWxzZSwgZXNjQ2xvc2U6IHRydWUsIGxhYmVsczogVUlraXQubW9kYWwubGFiZWxzfSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJvbXB0ID0gVUlraXQubW9kYWwuZGlhbG9nKChcIiA8Zm9ybSBjbGFzcz1cXFwidWstZm9ybS1zdGFja2VkXFxcIj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtYm9keVxcXCI+IDxsYWJlbD5cIiArIChpc1N0cmluZyhtZXNzYWdlKSA/IG1lc3NhZ2UgOiBodG1sKG1lc3NhZ2UpKSArIFwiPC9sYWJlbD4gPGlucHV0IGNsYXNzPVxcXCJ1ay1pbnB1dFxcXCIgYXV0b2ZvY3VzPiA8L2Rpdj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstbW9kYWwtY2xvc2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArIFwiPC9idXR0b24+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMub2spICsgXCI8L2J1dHRvbj4gPC9kaXY+IDwvZm9ybT4gXCIpLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSAkKCdpbnB1dCcsIHByb21wdC4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgb24ocHJvbXB0LiRlbCwgJ3N1Ym1pdCcsICdmb3JtJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGlucHV0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwcm9tcHQuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9uKHByb21wdC4kZWwsICdoaWRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmxhYmVscyA9IHtcbiAgICAgICAgICAgIG9rOiAnT2snLFxuICAgICAgICAgICAgY2FuY2VsOiAnQ2FuY2VsJ1xuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgdmFyIE5hdiA9IHtcblxuICAgICAgICBleHRlbmRzOiBBY2NvcmRpb24sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0czogJz4gLnVrLXBhcmVudCcsXG4gICAgICAgICAgICB0b2dnbGU6ICc+IGEnLFxuICAgICAgICAgICAgY29udGVudDogJz4gdWwnXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgTmF2YmFyID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZHJvcGRvd246IFN0cmluZyxcbiAgICAgICAgICAgIG1vZGU6ICdsaXN0JyxcbiAgICAgICAgICAgIGFsaWduOiBTdHJpbmcsXG4gICAgICAgICAgICBvZmZzZXQ6IE51bWJlcixcbiAgICAgICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogQm9vbGVhbixcbiAgICAgICAgICAgIGNsc0Ryb3A6IFN0cmluZyxcbiAgICAgICAgICAgIGRlbGF5U2hvdzogTnVtYmVyLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiBOdW1iZXIsXG4gICAgICAgICAgICBkcm9wYmFyOiBCb29sZWFuLFxuICAgICAgICAgICAgZHJvcGJhck1vZGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRyb3BiYXJBbmNob3I6IEJvb2xlYW4sXG4gICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZHJvcGRvd246ICcudWstbmF2YmFyLW5hdiA+IGxpJyxcbiAgICAgICAgICAgIGFsaWduOiAhaXNSdGwgPyAnbGVmdCcgOiAncmlnaHQnLFxuICAgICAgICAgICAgY2xzRHJvcDogJ3VrLW5hdmJhci1kcm9wZG93bicsXG4gICAgICAgICAgICBtb2RlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBvZmZzZXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlbGF5U2hvdzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBib3VuZGFyeUFsaWduOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBmbGlwOiAneCcsXG4gICAgICAgICAgICBib3VuZGFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGRyb3BiYXI6IGZhbHNlLFxuICAgICAgICAgICAgZHJvcGJhck1vZGU6ICdzbGlkZScsXG4gICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBmYWxzZSxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAsXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYm91bmRhcnk6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gcmVmLmJvdW5kYXJ5O1xuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeUFsaWduID0gcmVmLmJvdW5kYXJ5QWxpZ247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGJvdW5kYXJ5ID09PSB0cnVlIHx8IGJvdW5kYXJ5QWxpZ24pID8gJGVsIDogYm91bmRhcnk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBkcm9wYmFyQW5jaG9yID0gcmVmLmRyb3BiYXJBbmNob3I7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkoZHJvcGJhckFuY2hvciwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBvczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFsaWduID0gcmVmLmFsaWduO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcImJvdHRvbS1cIiArIGFsaWduKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3Bkb3duczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgZHJvcGRvd24gPSByZWYuZHJvcGRvd247XG4gICAgICAgICAgICAgICAgdmFyIGNsc0Ryb3AgPSByZWYuY2xzRHJvcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkJCgoZHJvcGRvd24gKyBcIiAuXCIgKyBjbHNEcm9wKSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGJlZm9yZUNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7XG4gICAgICAgICAgICB2YXIgZHJvcGJhciA9IHJlZi5kcm9wYmFyO1xuXG4gICAgICAgICAgICB0aGlzLmRyb3BiYXIgPSBkcm9wYmFyICYmIChxdWVyeShkcm9wYmFyLCB0aGlzLiRlbCkgfHwgJCgnKyAudWstbmF2YmFyLWRyb3BiYXInLCB0aGlzLiRlbCkgfHwgJCgnPGRpdj48L2Rpdj4nKSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyb3BiYXIpIHtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJvcGJhciwgJ3VrLW5hdmJhci1kcm9wYmFyJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcm9wYmFyTW9kZSA9PT0gJ3NsaWRlJykge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLmRyb3BiYXIsICd1ay1uYXZiYXItZHJvcGJhci1zbGlkZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3BiYXIgJiYgcmVtb3ZlKHRoaXMuZHJvcGJhcik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuJGNyZWF0ZShcbiAgICAgICAgICAgICAgICAnZHJvcCcsXG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bnMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIXRoaXMkMS5nZXREcm9wZG93bihlbCk7IH0pLFxuICAgICAgICAgICAgICAgIGFzc2lnbih7fSwgdGhpcy4kcHJvcHMsIHtib3VuZGFyeTogdGhpcy5ib3VuZGFyeSwgcG9zOiB0aGlzLnBvcywgb2Zmc2V0OiB0aGlzLmRyb3BiYXIgfHwgdGhpcy5vZmZzZXR9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlb3ZlcicsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiBhY3RpdmUudG9nZ2xlICYmICF3aXRoaW4oYWN0aXZlLnRvZ2dsZS4kZWwsIGN1cnJlbnQpICYmICFhY3RpdmUudHJhY2tlci5tb3Zlc1RvKGFjdGl2ZS4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbW91c2VsZWF2ZScsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlICYmICFtYXRjaGVzKHRoaXMuZHJvcGJhciwgJzpob3ZlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJvcGJhci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlcih0aGlzLmRyb3BiYXJBbmNob3IgfHwgdGhpcy4kZWwsIHRoaXMuZHJvcGJhcik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oXywgZHJvcCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSBkcm9wLiRlbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IGRyb3AuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xzRHJvcCAmJiBhZGRDbGFzcygkZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLWRyb3BiYXJcIikpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkaXIgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygkZWwub2Zmc2V0SGVpZ2h0ICsgdG9GbG9hdChjc3MoJGVsLCAnbWFyZ2luVG9wJykpICsgdG9GbG9hdChjc3MoJGVsLCAnbWFyZ2luQm90dG9tJykpLCAkZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVoaWRlJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gcmVmLiRlbDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzKHRoaXMuZHJvcGJhciwgJzpob3ZlcicpICYmIGFjdGl2ZSAmJiBhY3RpdmUuJGVsID09PSAkZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihfLCByZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IHJlZi4kZWw7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSB8fCBhY3RpdmUgJiYgYWN0aXZlLiRlbCA9PT0gJGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgZ2V0QWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5kcm9wZG93bnMubWFwKHRoaXMuZ2V0RHJvcGRvd24pLmZpbHRlcihmdW5jdGlvbiAoZHJvcCkgeyByZXR1cm4gZHJvcC5pc0FjdGl2ZSgpOyB9KTtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3RpdmUgJiYgaW5jbHVkZXMoYWN0aXZlLm1vZGUsICdob3ZlcicpICYmIHdpdGhpbihhY3RpdmUudG9nZ2xlLiRlbCwgdGhpcy4kZWwpICYmIGFjdGl2ZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zaXRpb25UbzogZnVuY3Rpb24obmV3SGVpZ2h0LCBlbCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIGRyb3BiYXIgPSByZWYuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gaXNWaXNpYmxlKGRyb3BiYXIpID8gaGVpZ2h0KGRyb3BiYXIpIDogMDtcblxuICAgICAgICAgICAgICAgIGVsID0gb2xkSGVpZ2h0IDwgbmV3SGVpZ2h0ICYmIGVsO1xuXG4gICAgICAgICAgICAgICAgY3NzKGVsLCAnY2xpcCcsIChcInJlY3QoMCxcIiArIChlbC5vZmZzZXRXaWR0aCkgKyBcInB4LFwiICsgb2xkSGVpZ2h0ICsgXCJweCwwKVwiKSk7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQoZHJvcGJhciwgb2xkSGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtlbCwgZHJvcGJhcl0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoZHJvcGJhciwge2hlaWdodDogbmV3SGVpZ2h0fSwgdGhpcy5kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoZWwsIHtjbGlwOiAoXCJyZWN0KDAsXCIgKyAoZWwub2Zmc2V0V2lkdGgpICsgXCJweCxcIiArIG5ld0hlaWdodCArIFwicHgsMClcIil9LCB0aGlzLmR1cmF0aW9uKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChub29wKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBjc3MoZWwsIHtjbGlwOiAnJ30pOyB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERyb3Bkb3duOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRnZXRDb21wb25lbnQoZWwsICdkcm9wJykgfHwgdGhpcy4kZ2V0Q29tcG9uZW50KGVsLCAnZHJvcGRvd24nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHNjcm9sbDtcblxuICAgIHZhciBPZmZjYW52YXMgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbTW9kYWxdLFxuXG4gICAgICAgIGFyZ3M6ICdtb2RlJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY29udGVudDogU3RyaW5nLFxuICAgICAgICAgICAgbW9kZTogU3RyaW5nLFxuICAgICAgICAgICAgZmxpcDogQm9vbGVhbixcbiAgICAgICAgICAgIG92ZXJsYXk6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnLnVrLW9mZmNhbnZhcy1jb250ZW50JyxcbiAgICAgICAgICAgIG1vZGU6ICdzbGlkZScsXG4gICAgICAgICAgICBmbGlwOiBmYWxzZSxcbiAgICAgICAgICAgIG92ZXJsYXk6IGZhbHNlLFxuICAgICAgICAgICAgY2xzUGFnZTogJ3VrLW9mZmNhbnZhcy1wYWdlJyxcbiAgICAgICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLW9mZmNhbnZhcy1jb250YWluZXInLFxuICAgICAgICAgICAgc2VsUGFuZWw6ICcudWstb2ZmY2FudmFzLWJhcicsXG4gICAgICAgICAgICBjbHNGbGlwOiAndWstb2ZmY2FudmFzLWZsaXAnLFxuICAgICAgICAgICAgY2xzQ29udGVudDogJ3VrLW9mZmNhbnZhcy1jb250ZW50JyxcbiAgICAgICAgICAgIGNsc0NvbnRlbnRBbmltYXRpb246ICd1ay1vZmZjYW52YXMtY29udGVudC1hbmltYXRpb24nLFxuICAgICAgICAgICAgY2xzU2lkZWJhckFuaW1hdGlvbjogJ3VrLW9mZmNhbnZhcy1iYXItYW5pbWF0aW9uJyxcbiAgICAgICAgICAgIGNsc01vZGU6ICd1ay1vZmZjYW52YXMnLFxuICAgICAgICAgICAgY2xzT3ZlcmxheTogJ3VrLW9mZmNhbnZhcy1vdmVybGF5JyxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLW9mZmNhbnZhcy1jbG9zZSdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjb250ZW50OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHJlZi5jb250ZW50O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY29udGVudCkgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0ZsaXA6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBmbGlwID0gcmVmLmZsaXA7XG4gICAgICAgICAgICAgICAgdmFyIGNsc0ZsaXAgPSByZWYuY2xzRmxpcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBmbGlwID8gY2xzRmxpcCA6ICcnO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzT3ZlcmxheTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG92ZXJsYXkgPSByZWYub3ZlcmxheTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzT3ZlcmxheSA9IHJlZi5jbHNPdmVybGF5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJsYXkgPyBjbHNPdmVybGF5IDogJyc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNNb2RlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgbW9kZSA9IHJlZi5tb2RlO1xuICAgICAgICAgICAgICAgIHZhciBjbHNNb2RlID0gcmVmLmNsc01vZGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGNsc01vZGUgKyBcIi1cIiArIG1vZGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzU2lkZWJhckFuaW1hdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzU2lkZWJhckFuaW1hdGlvbiA9IHJlZi5jbHNTaWRlYmFyQW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGUgPT09ICdub25lJyB8fCBtb2RlID09PSAncmV2ZWFsJyA/ICcnIDogY2xzU2lkZWJhckFuaW1hdGlvbjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0NvbnRlbnRBbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBtb2RlID0gcmVmLm1vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGNsc0NvbnRlbnRBbmltYXRpb24gPSByZWYuY2xzQ29udGVudEFuaW1hdGlvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlICE9PSAncHVzaCcgJiYgbW9kZSAhPT0gJ3JldmVhbCcgPyAnJyA6IGNsc0NvbnRlbnRBbmltYXRpb247XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRWxlbWVudDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlID09PSAncmV2ZWFsJyA/IHRoaXMucGFuZWwucGFyZW50Tm9kZSA6IHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0QWN0aXZlKCkgPT09IHRoaXMpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5IHx8IHRoaXMuY2xzQ29udGVudEFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgodGhpcy5jb250ZW50LCB3aWR0aCh3aW5kb3cpIC0gdGhpcy5zY3JvbGxiYXJXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5jb250ZW50LCBoZWlnaHQod2luZG93KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LnNjcm9sbFRvcCA9IHNjcm9sbC55O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnYVtocmVmXj1cIiNcIl0nO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5oYXNoICYmICQoY3VycmVudC5oYXNoLCB0aGlzLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzY3JvbGwnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgc2Nyb2xsLCB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAmJiB0YXJnZXQgJiYgdGhpcy5pc1RvZ2dsZWQoKSAmJiAkKHRhcmdldCwgdGhpcy5jb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzLiRlbCwgJ2hpZGRlbicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjcm9sbC5zY3JvbGxUbyh0YXJnZXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSBzY3JvbGwgfHwge3g6IHdpbmRvdy5wYWdlWE9mZnNldCwgeTogd2luZG93LnBhZ2VZT2Zmc2V0fTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmV2ZWFsJyAmJiAhaGFzQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNNb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JhcEFsbCh0aGlzLnBhbmVsLCAnPGRpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGFuZWwucGFyZW50Tm9kZSwgdGhpcy5jbHNNb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAoIXRoaXMuY2xzQ29udGVudEFuaW1hdGlvbiB8fCB0aGlzLmZsaXApICYmIHRoaXMuc2Nyb2xsYmFyV2lkdGggJiYgdGhpcy5vdmVybGF5ID8gJ3Njcm9sbCcgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmJvZHksIHRoaXMuY2xzQ29udGFpbmVyLCB0aGlzLmNsc0ZsaXAsIHRoaXMuY2xzT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodChkb2N1bWVudC5ib2R5KTsgLy8gZm9yY2UgcmVmbG93XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuY29udGVudCwgdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNTaWRlYmFyQW5pbWF0aW9uLCB0aGlzLm1vZGUgIT09ICdyZXZlYWwnID8gdGhpcy5jbHNNb2RlIDogJycpO1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNPdmVybGF5KTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy4kZWwpOyAvLyBmb3JjZSByZWZsb3dcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuY29udGVudCwgdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ25vbmUnIHx8IGFjdGl2ZSAmJiBhY3RpdmUgIT09IHRoaXMgJiYgYWN0aXZlICE9PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy5wYW5lbCwgJ3RyYW5zaXRpb25lbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZGVuJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmV2ZWFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwKHRoaXMucGFuZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IHt4OiB3aW5kb3cucGFnZVhPZmZzZXQsIHk6IHdpbmRvdy5wYWdlWU9mZnNldH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmLnNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHJlZi5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSB7eDogeCwgeTogeX07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnBhbmVsLCB0aGlzLmNsc1NpZGViYXJBbmltYXRpb24sIHRoaXMuY2xzTW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJycpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmNsc0NvbnRhaW5lciwgdGhpcy5jbHNGbGlwLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IHNjcm9sbC55O1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGgodGhpcy5jb250ZW50LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmNvbnRlbnQsICcnKTtcblxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKHNjcm9sbC54LCBzY3JvbGwueSk7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc3dpcGVMZWZ0IHN3aXBlUmlnaHQnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpICYmIGlzVG91Y2goZSkgJiYgKGUudHlwZSA9PT0gJ3N3aXBlTGVmdCcgJiYgIXRoaXMuZmxpcCB8fCBlLnR5cGUgPT09ICdzd2lwZVJpZ2h0JyAmJiB0aGlzLmZsaXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICB2YXIgT3ZlcmZsb3dBdXRvID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBtb2RhbDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCAnLnVrLW1vZGFsJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwYW5lbDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCAnLnVrLW1vZGFsLWRpYWxvZycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIDE1MCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYW5lbCB8fCAhdGhpcy5tb2RhbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnKTtcblxuICAgICAgICAgICAgICAgIGNzcyhjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnLCAxNTApLCAnbWF4SGVpZ2h0JywgTWF0aC5tYXgoMTUwLCAxNTAgKyBoZWlnaHQodGhpcy5tb2RhbCkgLSB0aGlzLnBhbmVsLm9mZnNldEhlaWdodCkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50ICE9PSBjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnKSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAncmVzaXplJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFJlc3BvbnNpdmUgPSB7XG5cbiAgICAgICAgcHJvcHM6IFsnd2lkdGgnLCAnaGVpZ2h0J10sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstcmVzcG9uc2l2ZS13aWR0aCcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNWaXNpYmxlKHRoaXMuJGVsKSAmJiB0aGlzLndpZHRoICYmIHRoaXMuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgID8ge3dpZHRoOiB3aWR0aCh0aGlzLiRlbC5wYXJlbnROb2RlKSwgaGVpZ2h0OiB0aGlzLmhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihkaW0pIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy4kZWwsIERpbWVuc2lvbnMuY29udGFpbih7aGVpZ2h0OiB0aGlzLmhlaWdodCwgd2lkdGg6IHRoaXMud2lkdGh9LCBkaW0pLmhlaWdodCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2Nyb2xsID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyLFxuICAgICAgICAgICAgb2Zmc2V0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMTAwMCxcbiAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2Nyb2xsVG86IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGVsID0gZWwgJiYgJChlbCkgfHwgZG9jdW1lbnQuYm9keTtcblxuICAgICAgICAgICAgICAgIHZhciBkb2NIZWlnaHQgPSBoZWlnaHQoZG9jdW1lbnQpO1xuICAgICAgICAgICAgICAgIHZhciB3aW5IZWlnaHQgPSBoZWlnaHQod2luZG93KTtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBvZmZzZXQoZWwpLnRvcCAtIHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgKyB3aW5IZWlnaHQgPiBkb2NIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gZG9jSGVpZ2h0IC0gd2luSGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcih0aGlzLiRlbCwgJ2JlZm9yZXNjcm9sbCcsIFt0aGlzLCBlbF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRZID0gc3RhcnRZICsgKHRhcmdldCAtIHN0YXJ0WSkgKiBlYXNlKGNsYW1wKChEYXRlLm5vdygpIC0gc3RhcnQpIC8gdGhpcyQxLmR1cmF0aW9uKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh3aW5kb3cucGFnZVhPZmZzZXQsIGN1cnJlbnRZKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBzY3JvbGwgbW9yZSBpZiB3ZSBoYXZlIG5vdCByZWFjaGVkIG91ciBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFkgIT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzJDEuJGVsLCAnc2Nyb2xsZWQnLCBbdGhpcyQxLCBlbF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc3RlcCgpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvKGVzY2FwZSh0aGlzLiRlbC5oYXNoKS5zdWJzdHIoMSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBlYXNlKGspIHtcbiAgICAgICAgcmV0dXJuIDAuNSAqICgxIC0gTWF0aC5jb3MoTWF0aC5QSSAqIGspKTtcbiAgICB9XG5cbiAgICB2YXIgU2Nyb2xsc3B5ID0ge1xuXG4gICAgICAgIGFyZ3M6ICdjbHMnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHM6ICdsaXN0JyxcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgaGlkZGVuOiBCb29sZWFuLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBOdW1iZXIsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiBOdW1iZXIsXG4gICAgICAgICAgICByZXBlYXQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWxheTogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGNsczogW10sXG4gICAgICAgICAgICB0YXJnZXQ6IGZhbHNlLFxuICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiAwLFxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogMCxcbiAgICAgICAgICAgIHJlcGVhdDogZmFsc2UsXG4gICAgICAgICAgICBkZWxheTogMCxcbiAgICAgICAgICAgIGluVmlld0NsYXNzOiAndWstc2Nyb2xsc3B5LWludmlldydcbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0ID8gJCQodGFyZ2V0LCAkZWwpIDogWyRlbF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhmaWx0ZXIodGhpcy5lbGVtZW50cywgKFwiOm5vdCguXCIgKyAodGhpcy5pblZpZXdDbGFzcykgKyBcIilcIikpLCAndmlzaWJpbGl0eScsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbHMuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsRGF0YSA9IGVsc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbERhdGEgfHwgZWxEYXRhLmVsICE9PSBlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbHMgPSBkYXRhKGVsLCAndWstc2Nyb2xsc3B5LWNsYXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhID0ge2VsOiBlbCwgdG9nZ2xlczogY2xzICYmIGNscy5zcGxpdCgnLCcpIHx8IHRoaXMkMS5jbHN9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbERhdGEuc2hvdyA9IGlzSW5WaWV3KGVsLCB0aGlzJDEub2Zmc2V0VG9wLCB0aGlzJDEub2Zmc2V0TGVmdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNbaV0gPSBlbERhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihlbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICAvLyBMZXQgY2hpbGQgY29tcG9uZW50cyBiZSBhcHBsaWVkIGF0IGxlYXN0IG9uY2UgZmlyc3RcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbHMuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbHMuZGVsYXkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gdGhpcy5lbGVtZW50cy5sZW5ndGggPT09IDEgPyAxIDogMDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbERhdGEgPSBlbHNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xzID0gZWxEYXRhLnRvZ2dsZXNbaV0gfHwgZWxEYXRhLnRvZ2dsZXNbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbERhdGEuc2hvdyAmJiAhZWxEYXRhLmludmlldyAmJiAhZWxEYXRhLnRpbWVyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGVsLCAndmlzaWJpbGl0eScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWwsIHRoaXMkMS5pblZpZXdDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBjbHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsICdpbnZpZXcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLmludmlldyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbERhdGEudGltZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuZGVsYXkgJiYgaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLnRpbWVyID0gc2V0VGltZW91dChzaG93LCB0aGlzJDEuZGVsYXkgKiBpbmRleCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4JCQxKys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVsRGF0YS5zaG93ICYmIGVsRGF0YS5pbnZpZXcgJiYgdGhpcyQxLnJlcGVhdCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsRGF0YS50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZWxEYXRhLnRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVsRGF0YS50aW1lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWwsICd2aXNpYmlsaXR5JywgdGhpcyQxLmhpZGRlbiA/ICdoaWRkZW4nIDogJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGVsLCB0aGlzJDEuaW5WaWV3Q2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBjbHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgJ291dHZpZXcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kdXBkYXRlKGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YS5pbnZpZXcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIFNjcm9sbHNweU5hdiA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xzOiBTdHJpbmcsXG4gICAgICAgICAgICBjbG9zZXN0OiBTdHJpbmcsXG4gICAgICAgICAgICBzY3JvbGw6IEJvb2xlYW4sXG4gICAgICAgICAgICBvdmVyZmxvdzogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsb3Nlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsOiBmYWxzZSxcbiAgICAgICAgICAgIG92ZXJmbG93OiB0cnVlLFxuICAgICAgICAgICAgb2Zmc2V0OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgbGlua3M6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkJCgnYVtocmVmXj1cIiNcIl0nLCAkZWwpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmhhc2g7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb3Nlc3QgPyBjbG9zZXN0KHRoaXMubGlua3MsIHRoaXMuY2xvc2VzdCkgOiB0aGlzLmxpbmtzO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRoaXMubGlua3MubWFwKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuaGFzaDsgfSkuam9pbignLCcpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRjcmVhdGUoJ3Njcm9sbCcsIHRoaXMubGlua3MsIHtvZmZzZXQ6IHRoaXMub2Zmc2V0IHx8IDB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQgKyB0aGlzLm9mZnNldCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXggPSBoZWlnaHQoZG9jdW1lbnQpIC0gaGVpZ2h0KHdpbmRvdykgKyB0aGlzLm9mZnNldDtcblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0cy5ldmVyeShmdW5jdGlvbiAoZWwsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ID0gaSArIDEgPT09IHRoaXMkMS50YXJnZXRzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEub3ZlcmZsb3cgJiYgKGkgPT09IDAgJiYgdG9wID4gc2Nyb2xsIHx8IGxhc3QgJiYgdG9wICsgZWwub2Zmc2V0VG9wIDwgc2Nyb2xsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0ICYmIG9mZnNldCh0aGlzJDEudGFyZ2V0c1tpICsgMV0pLnRvcCA8PSBzY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCA+PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gdGhpcyQxLnRhcmdldHMubGVuZ3RoIC0gMTsgaiA+IGk7IGotLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJblZpZXcodGhpcyQxLnRhcmdldHNbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbCA9IHRoaXMkMS50YXJnZXRzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKGRhdGEkJDEuYWN0aXZlID0gJChmaWx0ZXIodGhpcyQxLmxpbmtzLCAoXCJbaHJlZj1cXFwiI1wiICsgKGVsLmlkKSArIFwiXFxcIl1cIikpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmJsdXIoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudHMsIHRoaXMuY2xzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYWN0aXZlJywgW2FjdGl2ZSwgYWRkQ2xhc3ModGhpcy5jbG9zZXN0ID8gY2xvc2VzdChhY3RpdmUsIHRoaXMuY2xvc2VzdCkgOiBhY3RpdmUsIHRoaXMuY2xzKV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIFN0aWNreSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRvcDogbnVsbCxcbiAgICAgICAgICAgIGJvdHRvbTogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNBY3RpdmU6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0luYWN0aXZlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNGaXhlZDogU3RyaW5nLFxuICAgICAgICAgICAgY2xzQmVsb3c6IFN0cmluZyxcbiAgICAgICAgICAgIHNlbFRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgd2lkdGhFbGVtZW50OiBCb29sZWFuLFxuICAgICAgICAgICAgc2hvd09uVXA6IEJvb2xlYW4sXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJyxcbiAgICAgICAgICAgIHRhcmdldE9mZnNldDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgYm90dG9tOiBmYWxzZSxcbiAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogJycsXG4gICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzSW5hY3RpdmU6ICcnLFxuICAgICAgICAgICAgY2xzRml4ZWQ6ICd1ay1zdGlja3ktZml4ZWQnLFxuICAgICAgICAgICAgY2xzQmVsb3c6ICd1ay1zdGlja3ktYmVsb3cnLFxuICAgICAgICAgICAgc2VsVGFyZ2V0OiAnJyxcbiAgICAgICAgICAgIHdpZHRoRWxlbWVudDogZmFsc2UsXG4gICAgICAgICAgICBzaG93T25VcDogZmFsc2UsXG4gICAgICAgICAgICBtZWRpYTogZmFsc2UsXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXQ6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgc2VsVGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzZWxUYXJnZXQgPSByZWYuc2VsVGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbFRhcmdldCAmJiAkKHNlbFRhcmdldCwgJGVsKSB8fCAkZWw7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3aWR0aEVsZW1lbnQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoRWxlbWVudCA9IHJlZi53aWR0aEVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkod2lkdGhFbGVtZW50LCAkZWwpIHx8IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gJCgnKyAudWstc3RpY2t5LXBsYWNlaG9sZGVyJywgdGhpcy4kZWwpIHx8ICQoJzxkaXYgY2xhc3M9XCJ1ay1zdGlja3ktcGxhY2Vob2xkZXJcIj48L2Rpdj4nKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZW1vdmUodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMud2lkdGhFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdhY3RpdmUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUsIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaW5hY3RpdmUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlLCB0aGlzLmNsc0luYWN0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdsb2FkIGhhc2hjaGFuZ2UgcG9wc3RhdGUnLFxuXG4gICAgICAgICAgICAgICAgZWw6IHdpbmRvdyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHRoaXMudGFyZ2V0T2Zmc2V0ICE9PSBmYWxzZSAmJiBsb2NhdGlvbi5oYXNoICYmIHdpbmRvdy5wYWdlWU9mZnNldCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gJChsb2NhdGlvbi5oYXNoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbFRvcCA9IG9mZnNldCh0aGlzJDEuJGVsKS50b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gdGhpcyQxLiRlbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmlzQWN0aXZlICYmIGVsVG9wICsgZWxIZWlnaHQgPj0gdG9wICYmIGVsVG9wIDw9IHRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCgwLCB0b3AgLSBlbEhlaWdodCAtIChpc051bWVyaWModGhpcyQxLnRhcmdldE9mZnNldCkgPyB0aGlzJDEudGFyZ2V0T2Zmc2V0IDogMCkgLSB0aGlzJDEub2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IHJlZi5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IHJlZi4kZWwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhwbGFjZWhvbGRlciwgYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgICAge2hlaWdodDogY3NzKHRoaXMuJGVsLCAncG9zaXRpb24nKSAhPT0gJ2Fic29sdXRlJyA/IG9mZnNldEhlaWdodCA6ICcnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgWydtYXJnaW5Ub3AnLCAnbWFyZ2luQm90dG9tJywgJ21hcmdpbkxlZnQnLCAnbWFyZ2luUmlnaHQnXSlcbiAgICAgICAgICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aXRoaW4ocGxhY2Vob2xkZXIsIGRvY3VtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIodGhpcy4kZWwsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIocGxhY2Vob2xkZXIsICdoaWRkZW4nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcE9mZnNldCA9IG9mZnNldCh0aGlzLmlzQWN0aXZlID8gcGxhY2Vob2xkZXIgOiB0aGlzLiRlbCkudG9wO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbU9mZnNldCA9IHRoaXMudG9wT2Zmc2V0ICsgb2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSBwYXJzZVByb3AoJ2JvdHRvbScsIHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9wID0gTWF0aC5tYXgodG9GbG9hdChwYXJzZVByb3AoJ3RvcCcsIHRoaXMpKSwgdGhpcy50b3BPZmZzZXQpIC0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tID0gYm90dG9tICYmIGJvdHRvbSAtIG9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmFjdGl2ZSA9IHRoaXMubWVkaWEgJiYgIXdpbmRvdy5tYXRjaE1lZGlhKHRoaXMubWVkaWEpLm1hdGNoZXM7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oXywgcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxZID0gcmVmLnNjcm9sbFk7IGlmICggc2Nyb2xsWSA9PT0gdm9pZCAwICkgc2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSAoaXNWaXNpYmxlKHRoaXMud2lkdGhFbGVtZW50KSA/IHRoaXMud2lkdGhFbGVtZW50IDogdGhpcy4kZWwpLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IHRoaXMuc2Nyb2xsID0gc2Nyb2xsWSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGlzVmlzaWJsZSh0aGlzLiRlbClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZiwgcmVmJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gcmVmLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSByZWYuc2Nyb2xsO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiQxID09PSB2b2lkIDAgKSByZWYkMSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmJDEuZGlyO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCA8IDAgfHwgIXZpc2libGUgfHwgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnNob3dPblVwICYmICFkaXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzY3JvbGwgPCB0aGlzLnRvcFxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5zaG93T25VcCAmJiAoc2Nyb2xsIDw9IHRoaXMudG9wIHx8IGRpciA9PT0gJ2Rvd24nIHx8IGRpciA9PT0gJ3VwJyAmJiAhdGhpcy5pc0FjdGl2ZSAmJiBzY3JvbGwgPD0gdGhpcy5ib3R0b21PZmZzZXQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uICYmIHNjcm9sbCA+IHRoaXMudG9wT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLm91dCh0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLmhpZGUoKTsgfSwgbm9vcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0FjdGl2ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hbmltYXRpb24pIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5pbih0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLmNhdGNoKG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZScsICdzY3JvbGwnXVxuXG4gICAgICAgICAgICB9IF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLnBsYWNlaG9sZGVyLCAnaGlkZGVuJywgbnVsbCk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlIHx8IGhhc0NsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2luYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRml4ZWQsIHRoaXMuY2xzQmVsb3cpO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge3Bvc2l0aW9uOiAnJywgdG9wOiAnJywgd2lkdGg6ICcnfSk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLnBsYWNlaG9sZGVyLCAnaGlkZGVuJywgJycpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMudG9wICE9PSAwIHx8IHRoaXMuc2Nyb2xsID4gdGhpcy50b3A7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IE1hdGgubWF4KDAsIHRoaXMub2Zmc2V0KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJvdHRvbSAmJiB0aGlzLnNjcm9sbCA+IHRoaXMuYm90dG9tIC0gdGhpcy5vZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wID0gdGhpcy5ib3R0b20gLSB0aGlzLnNjcm9sbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogKHRvcCArIFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaW5hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0JlbG93LCB0aGlzLnNjcm9sbCA+IHRoaXMuYm90dG9tT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNGaXhlZCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcGFyc2VQcm9wKHByb3AsIHJlZikge1xuICAgICAgICB2YXIgJHByb3BzID0gcmVmLiRwcm9wcztcbiAgICAgICAgdmFyICRlbCA9IHJlZi4kZWw7XG4gICAgICAgIHZhciBwcm9wT2Zmc2V0ID0gcmVmWyhwcm9wICsgXCJPZmZzZXRcIildO1xuXG5cbiAgICAgICAgdmFyIHZhbHVlID0gJHByb3BzW3Byb3BdO1xuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc051bWVyaWModmFsdWUpKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBwcm9wT2Zmc2V0ICsgdG9GbG9hdCh2YWx1ZSk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChpc1N0cmluZyh2YWx1ZSkgJiYgdmFsdWUubWF0Y2goL14tP1xcZCt2aCQvKSkge1xuXG4gICAgICAgICAgICByZXR1cm4gaGVpZ2h0KHdpbmRvdykgKiB0b0Zsb2F0KHZhbHVlKSAvIDEwMDtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICB2YXIgZWwgPSB2YWx1ZSA9PT0gdHJ1ZSA/ICRlbC5wYXJlbnROb2RlIDogcXVlcnkodmFsdWUsICRlbCk7XG5cbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQoZWwpLnRvcCArIGVsLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFN3aXRjaGVyID0ge1xuXG4gICAgICAgIG1peGluczogW1RvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ2Nvbm5lY3QnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjb25uZWN0OiBTdHJpbmcsXG4gICAgICAgICAgICB0b2dnbGU6IFN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2ZTogTnVtYmVyLFxuICAgICAgICAgICAgc3dpcGluZzogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbm5lY3Q6ICd+LnVrLXN3aXRjaGVyJyxcbiAgICAgICAgICAgIHRvZ2dsZTogJz4gKicsXG4gICAgICAgICAgICBhY3RpdmU6IDAsXG4gICAgICAgICAgICBzd2lwaW5nOiB0cnVlLFxuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLXN3aXRjaGVyJyxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc3dpdGNoZXItaXRlbScsXG4gICAgICAgICAgICBxdWV1ZWQ6IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjb25uZWN0czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29ubmVjdCA9IHJlZi5jb25uZWN0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5QWxsKGNvbm5lY3QsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0b2dnbGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0b2dnbGUgPSByZWYudG9nZ2xlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRvZ2dsZSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRvZ2dsZSkgKyBcIjpub3QoLnVrLWRpc2FibGVkKVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhlLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RzO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZGF0YShlLmN1cnJlbnQsIHRoaXMuYXR0ckl0ZW0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3N3aXBlUmlnaHQgc3dpcGVMZWZ0JyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN3aXBpbmc7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdHM7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhlLnR5cGUgPT09ICdzd2lwZUxlZnQnID8gJ25leHQnIDogJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdGhpcy5jb25uZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0KSB7IHJldHVybiB0aGlzJDEudXBkYXRlQXJpYShsaXN0LmNoaWxkcmVuKTsgfSk7XG4gICAgICAgICAgICB0aGlzLnNob3coZmlsdGVyKHRoaXMudG9nZ2xlcywgKFwiLlwiICsgKHRoaXMuY2xzKSkpWzBdIHx8IHRoaXMudG9nZ2xlc1t0aGlzLmFjdGl2ZV0gfHwgdGhpcy50b2dnbGVzWzBdKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy50b2dnbGVzO1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gISF0aGlzLmNvbm5lY3RzLmxlbmd0aCAmJiBpbmRleChmaWx0ZXIodGhpcy5jb25uZWN0c1swXS5jaGlsZHJlbiwgKFwiLlwiICsgKHRoaXMuY2xzKSkpWzBdKTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzUHJldiA9IHByZXYgPj0gMDtcbiAgICAgICAgICAgICAgICB2YXIgZGlyID0gaXRlbSA9PT0gJ3ByZXZpb3VzJyA/IC0xIDogMTtcblxuICAgICAgICAgICAgICAgIHZhciB0b2dnbGUsIG5leHQgPSBnZXRJbmRleChpdGVtLCB0aGlzLnRvZ2dsZXMsIHByZXYpO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKywgbmV4dCA9IChuZXh0ICsgZGlyICsgbGVuZ3RoKSAlIGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXModGhpcyQxLnRvZ2dsZXNbbmV4dF0sICcudWstZGlzYWJsZWQsIFtkaXNhYmxlZF0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlID0gdGhpcyQxLnRvZ2dsZXNbbmV4dF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdG9nZ2xlIHx8IHByZXYgPj0gMCAmJiBoYXNDbGFzcyh0b2dnbGUsIHRoaXMuY2xzKSB8fCBwcmV2ID09PSBuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnRvZ2dsZXMsIHRoaXMuY2xzKTtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMudG9nZ2xlcywgJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModG9nZ2xlLCB0aGlzLmNscyk7XG4gICAgICAgICAgICAgICAgYXR0cih0b2dnbGUsICdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RzLmZvckVhY2goZnVuY3Rpb24gKGxpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlTm93KGxpc3QuY2hpbGRyZW5bbmV4dF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRvZ2dsZUVsZW1lbnQoW2xpc3QuY2hpbGRyZW5bcHJldl0sIGxpc3QuY2hpbGRyZW5bbmV4dF1dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBUYWIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIGV4dGVuZHM6IFN3aXRjaGVyLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1lZGlhOiA5NjAsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXRhYi1pdGVtJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHZhciBjbHMgPSBoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLXRhYi1sZWZ0JylcbiAgICAgICAgICAgICAgICA/ICd1ay10YWItbGVmdCdcbiAgICAgICAgICAgICAgICA6IGhhc0NsYXNzKHRoaXMuJGVsLCAndWstdGFiLXJpZ2h0JylcbiAgICAgICAgICAgICAgICAgICAgPyAndWstdGFiLXJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoY2xzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kY3JlYXRlKCd0b2dnbGUnLCB0aGlzLiRlbCwge2NsczogY2xzLCBtb2RlOiAnbWVkaWEnLCBtZWRpYTogdGhpcy5tZWRpYX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFRvZ2dsZSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtUb2dnbGFibGVdLFxuXG4gICAgICAgIGFyZ3M6ICd0YXJnZXQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBocmVmOiBTdHJpbmcsXG4gICAgICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgICAgICBtb2RlOiAnbGlzdCcsXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGhyZWY6IGZhbHNlLFxuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICAgIG1vZGU6ICdjbGljaycsXG4gICAgICAgICAgICBxdWV1ZWQ6IHRydWUsXG4gICAgICAgICAgICBtZWRpYTogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhyZWYgPSByZWYuaHJlZjtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHF1ZXJ5QWxsKHRhcmdldCB8fCBocmVmLCAkZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQubGVuZ3RoICYmIHRhcmdldCB8fCBbJGVsXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAocG9pbnRlckVudGVyICsgXCIgXCIgKyBwb2ludGVyTGVhdmUpLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgoXCJ0b2dnbGVcIiArIChlLnR5cGUgPT09IHBvaW50ZXJFbnRlciA/ICdzaG93JyA6ICdoaWRlJykpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdjbGljaycpIHx8IGhhc1RvdWNoICYmIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkgJiYgIWluY2x1ZGVzKHRoaXMubW9kZSwgJ2NsaWNrJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gYmV0dGVyIGlzVG9nZ2xlZCBoYW5kbGluZ1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3QoZS50YXJnZXQsICdhW2hyZWY9XCIjXCJdLCBidXR0b24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGxpbmsgPSBjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmXScpKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhaXNWaXNpYmxlKHRoaXMudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxpbmsuaGFzaCAmJiBtYXRjaGVzKHRoaXMudGFyZ2V0LCBsaW5rLmhhc2gpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZShkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUucHJldmVudERlZmF1bHQoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVzKHRoaXMubW9kZSwgJ21lZGlhJykgfHwgIXRoaXMubWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciB0b2dnbGVkID0gdGhpcy5pc1RvZ2dsZWQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzID8gIXRvZ2dsZWQgOiB0b2dnbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHJpZ2dlcih0aGlzLnRhcmdldCwgdHlwZSB8fCAndG9nZ2xlJywgW3RoaXNdKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY29yZSAoVUlraXQpIHtcblxuICAgICAgICAvLyBjb3JlIGNvbXBvbmVudHNcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdhY2NvcmRpb24nLCBBY2NvcmRpb24pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2FsZXJ0JywgQWxlcnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2NvdmVyJywgQ292ZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2Ryb3AnLCBEcm9wKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdkcm9wZG93bicsIERyb3Bkb3duKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdmb3JtQ3VzdG9tJywgRm9ybUN1c3RvbSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZ2lmJywgR2lmKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdncmlkJywgR3JpZCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaGVpZ2h0TWF0Y2gnLCBIZWlnaHRNYXRjaCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaGVpZ2h0Vmlld3BvcnQnLCBIZWlnaHRWaWV3cG9ydCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaWNvbicsIEljb24pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2ltZycsIEltZyk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbGVhZGVyJywgTGVhZGVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtYXJnaW4nLCBNYXJnaW4pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ21vZGFsJywgTW9kYWwkMSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbmF2JywgTmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXZiYXInLCBOYXZiYXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ29mZmNhbnZhcycsIE9mZmNhbnZhcyk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnb3ZlcmZsb3dBdXRvJywgT3ZlcmZsb3dBdXRvKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdyZXNwb25zaXZlJywgUmVzcG9uc2l2ZSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2Nyb2xsJywgU2Nyb2xsKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzY3JvbGxzcHknLCBTY3JvbGxzcHkpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3Njcm9sbHNweU5hdicsIFNjcm9sbHNweU5hdik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc3RpY2t5JywgU3RpY2t5KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzdmcnLCBTVkcpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3N3aXRjaGVyJywgU3dpdGNoZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3RhYicsIFRhYik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgndG9nZ2xlJywgVG9nZ2xlKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd2aWRlbycsIFZpZGVvKTtcblxuICAgICAgICAvLyBJY29uIGNvbXBvbmVudHNcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdjbG9zZScsIENsb3NlKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtYXJrZXInLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXZiYXJUb2dnbGVJY29uJywgSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnb3ZlcmxheUljb24nLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdwYWdpbmF0aW9uTmV4dCcsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3BhZ2luYXRpb25QcmV2aW91cycsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NlYXJjaEljb24nLCBTZWFyY2gpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlbmF2TmV4dCcsIFNsaWRlbmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzbGlkZW5hdlByZXZpb3VzJywgU2xpZGVuYXYpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NwaW5uZXInLCBTcGlubmVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd0b3RvcCcsIEljb25Db21wb25lbnQpO1xuXG4gICAgICAgIC8vIGNvcmUgZnVuY3Rpb25hbGl0eVxuICAgICAgICBVSWtpdC51c2UoQ29yZSk7XG5cbiAgICB9XG5cbiAgICBVSWtpdC52ZXJzaW9uID0gJzMuMC4wLXJjLjUnO1xuXG4gICAgY29yZShVSWtpdCk7XG5cbiAgICB2YXIgQ291bnRkb3duID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZGF0ZTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzV3JhcHBlcjogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZGF0ZTogJycsXG4gICAgICAgICAgICBjbHNXcmFwcGVyOiAnLnVrLWNvdW50ZG93bi0ldW5pdCUnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZGF0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGUgPSByZWYuZGF0ZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBEYXRlLnBhcnNlKGRhdGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGF5czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2xzV3JhcHBlciA9IHJlZi5jbHNXcmFwcGVyO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY2xzV3JhcHBlci5yZXBsYWNlKCcldW5pdCUnLCAnZGF5cycpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaG91cnM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsc1dyYXBwZXIgPSByZWYuY2xzV3JhcHBlcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKGNsc1dyYXBwZXIucmVwbGFjZSgnJXVuaXQlJywgJ2hvdXJzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBtaW51dGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdtaW51dGVzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZWNvbmRzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdzZWNvbmRzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1bml0czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWydkYXlzJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddLmZpbHRlcihmdW5jdGlvbiAodW5pdCkgeyByZXR1cm4gdGhpcyQxW3VuaXRdOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgIHRoaXMudW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCkgeyByZXR1cm4gZW1wdHkodGhpcyQxW3VuaXRdKTsgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd2aXNpYmlsaXR5Y2hhbmdlJyxcblxuICAgICAgICAgICAgICAgIGVsOiBkb2N1bWVudCxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVzcGFuID0gZ2V0VGltZVNwYW4odGhpcy5kYXRlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aW1lc3Bhbi50b3RhbCA8PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGltZXNwYW4uZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5ob3Vyc1xuICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5taW51dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICA9IHRpbWVzcGFuLnNlY29uZHNcbiAgICAgICAgICAgICAgICAgICAgICAgID0gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVuaXRzLmZvckVhY2goZnVuY3Rpb24gKHVuaXQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlnaXRzID0gU3RyaW5nKE1hdGguZmxvb3IodGltZXNwYW5bdW5pdF0pKTtcblxuICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMubGVuZ3RoIDwgMiA/IChcIjBcIiArIGRpZ2l0cykgOiBkaWdpdHM7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsID0gdGhpcyQxW3VuaXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwudGV4dENvbnRlbnQgIT09IGRpZ2l0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gZGlnaXRzLnNwbGl0KCcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0cy5sZW5ndGggIT09IGVsLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwoZWwsIGRpZ2l0cy5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gJzxzcGFuPjwvc3Bhbj4nOyB9KS5qb2luKCcnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cy5mb3JFYWNoKGZ1bmN0aW9uIChkaWdpdCwgaSkgeyByZXR1cm4gZWwuY2hpbGRyZW5baV0udGV4dENvbnRlbnQgPSBkaWdpdDsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlICYmIHRoaXMudW5pdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS4kZW1pdCgpOyB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFRpbWVTcGFuKGRhdGUpIHtcblxuICAgICAgICB2YXIgdG90YWwgPSBkYXRlIC0gRGF0ZS5ub3coKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG90YWw6IHRvdGFsLFxuICAgICAgICAgICAgc2Vjb25kczogdG90YWwgLyAxMDAwICUgNjAsXG4gICAgICAgICAgICBtaW51dGVzOiB0b3RhbCAvIDEwMDAgLyA2MCAlIDYwLFxuICAgICAgICAgICAgaG91cnM6IHRvdGFsIC8gMTAwMCAvIDYwIC8gNjAgJSAyNCxcbiAgICAgICAgICAgIGRheXM6IHRvdGFsIC8gMTAwMCAvIDYwIC8gNjAgLyAyNFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRDbGFzcyA9ICd1ay1hbmltYXRpb24tdGFyZ2V0JztcblxuICAgIHZhciBBbmltYXRlID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBhbmltYXRpb246IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogMTUwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGFuaW1hdGU6IGZ1bmN0aW9uKGFjdGlvbikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBhZGRTdHlsZSgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdG9Ob2Rlcyh0aGlzLnRhcmdldC5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzRnJvbSA9IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGdldFByb3BzKGVsLCB0cnVlKTsgfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gaGVpZ2h0KHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB2YXIgb2xkU2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuICAgICAgICAgICAgICAgIGFjdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goVHJhbnNpdGlvbi5jYW5jZWwpO1xuXG4gICAgICAgICAgICAgICAgcmVzZXQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZSh0aGlzLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIG5ld0hlaWdodCA9IGhlaWdodCh0aGlzLnRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdCh0b05vZGVzKHRoaXMudGFyZ2V0LmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhaW5jbHVkZXMoY2hpbGRyZW4sIGVsKTsgfSkpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzVG8gPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBlbC5wYXJlbnROb2RlICYmIGkgaW4gcHJvcHNGcm9tXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzRnJvbVtpXVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpc1Zpc2libGUoZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7b3BhY2l0eTogMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDoge29wYWNpdHk6IGlzVmlzaWJsZShlbCkgPyAxIDogMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2U7IH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcHJvcHNGcm9tID0gcHJvcHNUby5tYXAoZnVuY3Rpb24gKHByb3BzLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmcm9tID0gY2hpbGRyZW5baV0ucGFyZW50Tm9kZSA9PT0gdGhpcyQxLnRhcmdldFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wc0Zyb21baV0gfHwgZ2V0UHJvcHMoY2hpbGRyZW5baV0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoISgnb3BhY2l0eScgaW4gcHJvcHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9wYWNpdHkgPSBmcm9tLm9wYWNpdHk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BhY2l0eSAlIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMub3BhY2l0eSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMudGFyZ2V0LCB0YXJnZXRDbGFzcyk7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIHByb3BzRnJvbVtpXSAmJiBjc3MoZWwsIHByb3BzRnJvbVtpXSk7IH0pO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLnRhcmdldCwgJ21pbkhlaWdodCcsIG9sZEhlaWdodCk7XG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh3aW5kb3cucGFnZVhPZmZzZXQsIG9sZFNjcm9sbFkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5hbGwoY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gcHJvcHNGcm9tW2ldICYmIHByb3BzVG9baV1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gVHJhbnNpdGlvbi5zdGFydChlbCwgcHJvcHNUb1tpXSwgdGhpcyQxLmFuaW1hdGlvbiwgJ2Vhc2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBQcm9taXNlJDEucmVzb2x2ZSgpOyB9XG4gICAgICAgICAgICAgICAgKS5jb25jYXQoVHJhbnNpdGlvbi5zdGFydCh0aGlzLnRhcmdldCwge21pbkhlaWdodDogbmV3SGVpZ2h0fSwgdGhpcy5hbmltYXRpb24sICdlYXNlJykpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIGNzcyhlbCwge2Rpc3BsYXk6IHByb3BzVG9baV0ub3BhY2l0eSA9PT0gMCA/ICdub25lJyA6ICcnLCB6SW5kZXg6ICcnfSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICByZXNldCh0aGlzJDEudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUodGhpcyQxLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgfSwgbm9vcCk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRQcm9wcyhlbCwgb3BhY2l0eSkge1xuXG4gICAgICAgIHZhciB6SW5kZXggPSBjc3MoZWwsICd6SW5kZXgnKTtcblxuICAgICAgICByZXR1cm4gaXNWaXNpYmxlKGVsKVxuICAgICAgICAgICAgPyBhc3NpZ24oe1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICcnLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IG9wYWNpdHkgPyBjc3MoZWwsICdvcGFjaXR5JykgOiAnMCcsXG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHpJbmRleDogekluZGV4ID09PSAnYXV0bycgPyBpbmRleChlbCkgOiB6SW5kZXhcbiAgICAgICAgICAgIH0sIGdldFBvc2l0aW9uV2l0aE1hcmdpbihlbCkpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc2V0KGVsKSB7XG4gICAgICAgIGNzcyhlbC5jaGlsZHJlbiwge1xuICAgICAgICAgICAgaGVpZ2h0OiAnJyxcbiAgICAgICAgICAgIGxlZnQ6ICcnLFxuICAgICAgICAgICAgb3BhY2l0eTogJycsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnJyxcbiAgICAgICAgICAgIHRvcDogJycsXG4gICAgICAgICAgICB3aWR0aDogJydcbiAgICAgICAgfSk7XG4gICAgICAgIHJlbW92ZUNsYXNzKGVsLCB0YXJnZXRDbGFzcyk7XG4gICAgICAgIGNzcyhlbCwgJ21pbkhlaWdodCcsICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpIHtcbiAgICAgICAgdmFyIHJlZiA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICB2YXIgcmVmJDEgPSBwb3NpdGlvbihlbCk7XG4gICAgICAgIHZhciB0b3AgPSByZWYkMS50b3A7XG4gICAgICAgIHZhciBsZWZ0ID0gcmVmJDEubGVmdDtcbiAgICAgICAgdG9wICs9IHRvRmxvYXQoY3NzKGVsLCAnbWFyZ2luVG9wJykpO1xuXG4gICAgICAgIHJldHVybiB7dG9wOiB0b3AsIGxlZnQ6IGxlZnQsIGhlaWdodDogaGVpZ2h0JCQxLCB3aWR0aDogd2lkdGgkJDF9O1xuICAgIH1cblxuICAgIHZhciBzdHlsZSQxO1xuXG4gICAgZnVuY3Rpb24gYWRkU3R5bGUoKSB7XG4gICAgICAgIGlmICghc3R5bGUkMSkge1xuICAgICAgICAgICAgc3R5bGUkMSA9IGFwcGVuZChkb2N1bWVudC5oZWFkLCAnPHN0eWxlPicpLnNoZWV0O1xuICAgICAgICAgICAgc3R5bGUkMS5pbnNlcnRSdWxlKFxuICAgICAgICAgICAgICAgIChcIi5cIiArIHRhcmdldENsYXNzICsgXCIgPiAqIHtcXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgICAgICB9XCIpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIEZpbHRlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtBbmltYXRlXSxcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBCb29sZWFuLFxuICAgICAgICAgICAgc2VsQWN0aXZlOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICAgICAgc2VsQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstZmlsdGVyLWNvbnRyb2wnLFxuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogMjUwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdG9nZ2xlczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXR0ckl0ZW0gPSByZWYuYXR0ckl0ZW07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQoKFwiW1wiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdLFtkYXRhLVwiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdXCIpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQodGFyZ2V0LCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHkoZS5jdXJyZW50KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbEFjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBhY3RpdmVzID0gJCQodGhpcy5zZWxBY3RpdmUsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHMsIGluY2x1ZGVzKGFjdGl2ZXMsIGVsKSk7IH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICB2YXIgdG9nZ2xlcyA9IGRhdGEkJDEudG9nZ2xlcztcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGRhdGEkJDEuY2hpbGRyZW47XG4gICAgICAgICAgICBpZiAoaXNFcXVhbExpc3QodG9nZ2xlcywgdGhpcy50b2dnbGVzLCBmYWxzZSkgJiYgaXNFcXVhbExpc3QoY2hpbGRyZW4sIHRoaXMudGFyZ2V0LmNoaWxkcmVuLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEkJDEudG9nZ2xlcyA9IHRoaXMudG9nZ2xlcztcbiAgICAgICAgICAgIGRhdGEkJDEuY2hpbGRyZW4gPSB0aGlzLnRhcmdldC5jaGlsZHJlbjtcblxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh0aGlzLmdldFN0YXRlKCksIGZhbHNlKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShtZXJnZVN0YXRlKGVsLCB0aGlzLmF0dHJJdGVtLCB0aGlzLmdldFN0YXRlKCkpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZXNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaGFzQ2xhc3MoaXRlbSwgdGhpcyQxLmNscyk7IH0pXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBlbCkgeyByZXR1cm4gbWVyZ2VTdGF0ZShlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSk7IH0sIHtmaWx0ZXI6IHsnJzogJyd9LCBzb3J0OiBbXX0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0U3RhdGU6IGZ1bmN0aW9uKHN0YXRlLCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBhbmltYXRlJCQxID09PSB2b2lkIDAgKSBhbmltYXRlJCQxID0gdHJ1ZTtcblxuXG4gICAgICAgICAgICAgICAgc3RhdGUgPSBhc3NpZ24oe2ZpbHRlcjogeycnOiAnJ30sIHNvcnQ6IFtdfSwgc3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2JlZm9yZUZpbHRlcicsIFt0aGlzLCBzdGF0ZV0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdG9Ob2Rlcyh0aGlzLnRhcmdldC5jaGlsZHJlbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzLCBtYXRjaEZpbHRlcihlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSkpOyB9KTtcblxuICAgICAgICAgICAgICAgIHZhciBhcHBseSQkMSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSBnZXRTZWxlY3RvcihzdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGNzcyhlbCwgJ2Rpc3BsYXknLCBzZWxlY3RvciAmJiAhbWF0Y2hlcyhlbCwgc2VsZWN0b3IpID8gJ25vbmUnIDogJycpOyB9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gc3RhdGUuc29ydDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnQgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcmRlciA9IHJlZlsxXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc29ydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnRlZCA9IHNvcnRJdGVtcyhjaGlsZHJlbiwgc29ydCwgb3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsTGlzdChzb3J0ZWQsIGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gYXBwZW5kKHRoaXMkMS50YXJnZXQsIGVsKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoYXBwbHkkJDEpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJpZ2dlcih0aGlzJDEuJGVsLCAnYWZ0ZXJGaWx0ZXInLCBbdGhpcyQxXSk7IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5JCQxKCk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdhZnRlckZpbHRlcicsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldEZpbHRlcihlbCwgYXR0ciQkMSkge1xuICAgICAgICByZXR1cm4gcGFyc2VPcHRpb25zKGRhdGEoZWwsIGF0dHIkJDEpLCBbJ2ZpbHRlciddKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZVN0YXRlKGVsLCBhdHRyJCQxLCBzdGF0ZSkge1xuXG4gICAgICAgIHRvTm9kZXMoZWwpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyQnkgPSBnZXRGaWx0ZXIoZWwsIGF0dHIkJDEpO1xuICAgICAgICAgICAgdmFyIGZpbHRlciQkMSA9IGZpbHRlckJ5LmZpbHRlcjtcbiAgICAgICAgICAgIHZhciBncm91cCA9IGZpbHRlckJ5Lmdyb3VwO1xuICAgICAgICAgICAgdmFyIHNvcnQgPSBmaWx0ZXJCeS5zb3J0O1xuICAgICAgICAgICAgdmFyIG9yZGVyID0gZmlsdGVyQnkub3JkZXI7IGlmICggb3JkZXIgPT09IHZvaWQgMCApIG9yZGVyID0gJ2FzYyc7XG5cbiAgICAgICAgICAgIGlmIChmaWx0ZXIkJDEgfHwgaXNVbmRlZmluZWQoc29ydCkpIHtcblxuICAgICAgICAgICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3RhdGUuZmlsdGVyWycnXTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmlsdGVyW2dyb3VwXSA9IGZpbHRlciQkMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maWx0ZXIgPSB7Jyc6IGZpbHRlciQkMX07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoc29ydCkpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zb3J0ID0gW3NvcnQsIG9yZGVyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRmlsdGVyKGVsLCBhdHRyJCQxLCByZWYpIHtcbiAgICAgICAgdmFyIHN0YXRlRmlsdGVyID0gcmVmLmZpbHRlcjtcbiAgICAgICAgdmFyIHJlZl9zb3J0ID0gcmVmLnNvcnQ7XG4gICAgICAgIHZhciBzdGF0ZVNvcnQgPSByZWZfc29ydFswXTtcbiAgICAgICAgdmFyIHN0YXRlT3JkZXIgPSByZWZfc29ydFsxXTtcblxuICAgICAgICB2YXIgcmVmJDEgPSBnZXRGaWx0ZXIoZWwsIGF0dHIkJDEpO1xuICAgICAgICB2YXIgZmlsdGVyJCQxID0gcmVmJDEuZmlsdGVyO1xuICAgICAgICB2YXIgZ3JvdXAgPSByZWYkMS5ncm91cDsgaWYgKCBncm91cCA9PT0gdm9pZCAwICkgZ3JvdXAgPSAnJztcbiAgICAgICAgdmFyIHNvcnQgPSByZWYkMS5zb3J0O1xuICAgICAgICB2YXIgb3JkZXIgPSByZWYkMS5vcmRlcjsgaWYgKCBvcmRlciA9PT0gdm9pZCAwICkgb3JkZXIgPSAnYXNjJztcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICAoZmlsdGVyJCQxIHx8IGlzVW5kZWZpbmVkKHNvcnQpKSAmJiBncm91cCBpbiBzdGF0ZUZpbHRlciAmJiAoZmlsdGVyJCQxID09PSBzdGF0ZUZpbHRlcltncm91cF0gfHwgaXNVbmRlZmluZWQoZmlsdGVyJCQxKSAmJiAhc3RhdGVGaWx0ZXJbZ3JvdXBdKVxuICAgICAgICAgICAgfHwgc3RhdGVTb3J0ICYmIHNvcnQgJiYgc3RhdGVTb3J0ID09PSBzb3J0ICYmIHN0YXRlT3JkZXIgPT09IG9yZGVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNFcXVhbExpc3QobGlzdEEsIGxpc3RCLCBzdHJpY3QpIHtcbiAgICAgICAgaWYgKCBzdHJpY3QgPT09IHZvaWQgMCApIHN0cmljdCA9IHRydWU7XG5cblxuICAgICAgICBsaXN0QSA9IHRvTm9kZXMobGlzdEEpO1xuICAgICAgICBsaXN0QiA9IHRvTm9kZXMobGlzdEIpO1xuXG4gICAgICAgIHJldHVybiBsaXN0QS5sZW5ndGggPT09IGxpc3RCLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGlzdEEuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBzdHJpY3QgPyBlbCA9PT0gbGlzdEJbaV0gOiB+bGlzdEIuaW5kZXhPZihlbCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdG9yKHJlZikge1xuICAgICAgICB2YXIgZmlsdGVyJCQxID0gcmVmLmZpbHRlcjtcblxuICAgICAgICB2YXIgc2VsZWN0b3IgPSAnJztcbiAgICAgICAgZWFjaChmaWx0ZXIkJDEsIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gc2VsZWN0b3IgKz0gdmFsdWUgfHwgJyc7IH0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0b3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc29ydEl0ZW1zKG5vZGVzLCBzb3J0LCBvcmRlcikge1xuICAgICAgICByZXR1cm4gdG9Ob2Rlcyhub2Rlcykuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gZGF0YShhLCBzb3J0KS5sb2NhbGVDb21wYXJlKGRhdGEoYiwgc29ydCkpICogKG9yZGVyID09PSAnYXNjJyB8fCAtMSk7IH0pO1xuICAgIH1cblxuICAgIHZhciBBbmltYXRpb25zID0ge1xuXG4gICAgICAgIHNsaWRlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAtMTAwKX0sXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAtMTAwICogcGVyY2VudCl9LFxuICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoZGlyICogMTAwICogKDEgLSBwZXJjZW50KSl9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlZChlbCkge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMoY3NzKGVsLCAndHJhbnNmb3JtJykuc3BsaXQoJywnKVs0XSAvIGVsLm9mZnNldFdpZHRoKSB8fCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZSh2YWx1ZSwgdW5pdCkge1xuICAgICAgICBpZiAoIHZhbHVlID09PSB2b2lkIDAgKSB2YWx1ZSA9IDA7XG4gICAgICAgIGlmICggdW5pdCA9PT0gdm9pZCAwICkgdW5pdCA9ICclJztcblxuICAgICAgICByZXR1cm4gKFwidHJhbnNsYXRlWChcIiArIHZhbHVlICsgKHZhbHVlID8gdW5pdCA6ICcnKSArIFwiKVwiKTsgLy8gY3VycmVudGx5IG5vdCB0cmFuc2xhdGUzZCB0byBzdXBwb3J0IElFLCB0cmFuc2xhdGUzZCB3aXRoaW4gdHJhbnNsYXRlM2QgZG9lcyBub3Qgd29yayB3aGlsZSB0cmFuc2l0aW9uaW5nXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbGUzZCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gKFwic2NhbGUzZChcIiArIHZhbHVlICsgXCIsIFwiICsgdmFsdWUgKyBcIiwgMSlcIik7XG4gICAgfVxuXG4gICAgdmFyIEFuaW1hdGlvbnMkMSA9IGFzc2lnbih7fSwgQW5pbWF0aW9ucywge1xuXG4gICAgICAgIGZhZGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnR9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogcGVyY2VudH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2NhbGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDAsIHRyYW5zZm9ybTogc2NhbGUzZCgxIC0gLjIpfSxcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDEsIHRyYW5zZm9ybTogc2NhbGUzZCgxKX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHRyYW5zZm9ybTogc2NhbGUzZCgxIC0gLjIgKiBwZXJjZW50KX0sXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiBwZXJjZW50LCB0cmFuc2Zvcm06IHNjYWxlM2QoMSAtIC4yICsgLjIgKiBwZXJjZW50KX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gVHJhbnNpdGlvbmVyKHByZXYsIG5leHQsIGRpciwgcmVmKSB7XG4gICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZztcblxuXG4gICAgICAgIHZhciBwZXJjZW50ID0gYW5pbWF0aW9uLnBlcmNlbnQ7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBhbmltYXRpb24udHJhbnNsYXRlO1xuICAgICAgICB2YXIgc2hvdyA9IGFuaW1hdGlvbi5zaG93OyBpZiAoIHNob3cgPT09IHZvaWQgMCApIHNob3cgPSBub29wO1xuICAgICAgICB2YXIgcHJvcHMgPSBzaG93KGRpcik7XG4gICAgICAgIHZhciBkZWZlcnJlZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIHJldHVybiB7XG5cbiAgICAgICAgICAgIGRpcjogZGlyLFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCwgbGluZWFyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gMDtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IE1hdGgucm91bmQoZHVyYXRpb24gKiBjbGFtcChwZXJjZW50LCAtMSwgMSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKG5leHQsICdpdGVtaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZHVyYXRpb246IGR1cmF0aW9uLCB0aW1pbmc6IHRpbWluZywgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKHByZXYsICdpdGVtb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuXG4gICAgICAgICAgICAgICAgUHJvbWlzZSQxLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQobmV4dCwgcHJvcHNbMV0sIGR1cmF0aW9uLCB0aW1pbmcpLFxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KHByZXYsIHByb3BzWzBdLCBkdXJhdGlvbiwgdGltaW5nKVxuICAgICAgICAgICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sIG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVHJhbnNpdGlvbi5zdG9wKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBwcm9wc1swXSkge1xuICAgICAgICAgICAgICAgICAgICBjc3MoW25leHQsIHByZXZdLCBwcm9wLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZm9yd2FyZDogZnVuY3Rpb24oZHVyYXRpb24sIHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHBlcmNlbnQgPT09IHZvaWQgMCApIHBlcmNlbnQgPSB0aGlzLnBlcmNlbnQoKTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gdHJhbnNsYXRlKHBlcmNlbnQsIGRpcik7XG4gICAgICAgICAgICAgICAgY3NzKG5leHQsIHByb3BzWzFdKTtcbiAgICAgICAgICAgICAgICBjc3MocHJldiwgcHJvcHNbMF0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUobmV4dCwgJ2l0ZW10cmFuc2xhdGVpbicsIHtwZXJjZW50OiBwZXJjZW50LCBkaXI6IGRpcn0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUocHJldiwgJ2l0ZW10cmFuc2xhdGVvdXQnLCB7cGVyY2VudDogMSAtIHBlcmNlbnQsIGRpcjogZGlyfSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwZXJjZW50KHByZXYgfHwgbmV4dCwgbmV4dCwgZGlyKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERpc3RhbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldi5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJpZ2dlclVwZGF0ZShlbCwgdHlwZSwgZGF0YSQkMSkge1xuICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UsIGRhdGEkJDEpKTtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyQXV0b3BsYXkgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiBCb29sZWFuLFxuICAgICAgICAgICAgYXV0b3BsYXlJbnRlcnZhbDogTnVtYmVyLFxuICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgYXV0b3BsYXlJbnRlcnZhbDogNzAwMCxcbiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0QXV0b3BsYXkoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Zpc2liaWxpdHljaGFuZ2UnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGRvY3VtZW50LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0QXV0b3BsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogcG9pbnRlckRvd24sXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3N0b3BBdXRvcGxheSdcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlZW50ZXInLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0b3BsYXk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG92ZXJpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0b3BsYXk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG92ZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc3RhcnRBdXRvcGxheTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvcGxheSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiAhKHRoaXMkMS5pc0hvdmVyaW5nICYmIHRoaXMkMS5wYXVzZU9uSG92ZXIpICYmICF0aGlzJDEuc3RhY2subGVuZ3RoICYmIHRoaXMkMS5zaG93KCduZXh0Jyk7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9wbGF5SW50ZXJ2YWxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3BBdXRvcGxheTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZXJEcmFnID0ge1xuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRocmVzaG9sZDogMTAsXG4gICAgICAgICAgICBwcmV2ZW50Q2F0Y2g6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBbJ3N0YXJ0JywgJ21vdmUnLCAnZW5kJ10uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZm4gPSB0aGlzJDFba2V5XTtcbiAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IGdldFBvcyQxKGUpLnggKiAoaXNSdGwgPyAtMSA6IDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wcmV2UG9zID0gcG9zICE9PSB0aGlzJDEucG9zID8gdGhpcyQxLnBvcyA6IHRoaXMkMS5wcmV2UG9zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zID0gcG9zO1xuXG4gICAgICAgICAgICAgICAgICAgIGZuKGUpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJEb3duLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXNTZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSAmJiBoYXNUZXh0Tm9kZXNPbmx5KGUudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZS5idXR0b24gPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmxlbmd0aCA8IDJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMucHJldmVudENhdGNoXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydChlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnZHJhZ3N0YXJ0JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gdGhpcy5wb3M7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhbnNpdGlvbmVyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50ID0gdGhpcy5fdHJhbnNpdGlvbmVyLnBlcmNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnICs9IHRoaXMuX3RyYW5zaXRpb25lci5nZXREaXN0YW5jZSgpICogdGhpcy5wZXJjZW50ICogdGhpcy5kaXI7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyLnRyYW5zbGF0ZSh0aGlzLnBlcmNlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIuY2FuY2VsKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kTW92ZSA9IG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgdGhpcy5tb3ZlLCB7Y2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2V9KTtcbiAgICAgICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnVuYmluZE1vdmUpO1xuICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kLCB0cnVlKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbW92ZTogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSB0aGlzLnBvcyAtIHRoaXMuZHJhZztcblxuICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA9PT0gMCB8fCB0aGlzLnByZXZQb3MgPT09IHRoaXMucG9zIHx8ICF0aGlzLmRyYWdnaW5nICYmIE1hdGguYWJzKGRpc3RhbmNlKSA8IHRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLmNhbmNlbGFibGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXIgPSAoZGlzdGFuY2UgPCAwID8gMSA6IC0xKTtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZXMgPSByZWYuc2xpZGVzO1xuICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZJbmRleCA9IHJlZiQxLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICB2YXIgZGlzID0gTWF0aC5hYnMoZGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlzLmdldEluZGV4KHByZXZJbmRleCArIHRoaXMuZGlyLCBwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHRoaXMuX2dldERpc3RhbmNlKHByZXZJbmRleCwgbmV4dEluZGV4KSB8fCBzbGlkZXNbcHJldkluZGV4XS5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0SW5kZXggIT09IHByZXZJbmRleCAmJiBkaXMgPiB3aWR0aCQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5kcmFnIC09IHdpZHRoJCQxICogdGhpcyQxLmRpcjtcblxuICAgICAgICAgICAgICAgICAgICBwcmV2SW5kZXggPSBuZXh0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGRpcyAtPSB3aWR0aCQkMTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEluZGV4ID0gdGhpcyQxLmdldEluZGV4KHByZXZJbmRleCArIHRoaXMkMS5kaXIsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoJCQxID0gdGhpcyQxLl9nZXREaXN0YW5jZShwcmV2SW5kZXgsIG5leHRJbmRleCkgfHwgc2xpZGVzW3ByZXZJbmRleF0ub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnQgPSBkaXMgLyB3aWR0aCQkMTtcblxuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gc2xpZGVzW3ByZXZJbmRleF07XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBzbGlkZXNbbmV4dEluZGV4XTtcbiAgICAgICAgICAgICAgICB2YXIgY2hhbmdlZCA9IHRoaXMuaW5kZXggIT09IG5leHRJbmRleDtcbiAgICAgICAgICAgICAgICB2YXIgZWRnZSA9IHByZXZJbmRleCA9PT0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1TaG93bjtcblxuICAgICAgICAgICAgICAgIFt0aGlzLmluZGV4LCB0aGlzLnByZXZJbmRleF0uZmlsdGVyKGZ1bmN0aW9uIChpKSB7IHJldHVybiAhaW5jbHVkZXMoW25leHRJbmRleCwgcHJldkluZGV4XSwgaSk7IH0pLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihzbGlkZXNbaV0sICdpdGVtaGlkZGVuJywgW3RoaXMkMV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlZGdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2hvd24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gcHJldkluZGV4ICYmIHRoaXMucHJldkluZGV4ICE9PSBwcmV2SW5kZXggfHwgaXRlbVNob3duKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoc2xpZGVzW3RoaXMuaW5kZXhdLCAnaXRlbXNob3duJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAhZWRnZSAmJiB0cmlnZ2VyKHByZXYsICdiZWZvcmVpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2JlZm9yZWl0ZW1zaG93JywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIgPSB0aGlzLl90cmFuc2xhdGUoTWF0aC5hYnModGhpcy5wZXJjZW50KSwgcHJldiwgIWVkZ2UgJiYgbmV4dCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAhZWRnZSAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93JywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGVuZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBvZmYod2luZG93LCAnc2Nyb2xsJywgdGhpcy51bmJpbmRNb3ZlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZE1vdmUoKTtcbiAgICAgICAgICAgICAgICBvZmYoZG9jdW1lbnQsIHBvaW50ZXJVcCwgdGhpcy5lbmQsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gdGhpcy5wcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IDEgLSB0aGlzLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciAqPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3coZmFsc2UsIHRoaXMuaW5kZXgsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpckNoYW5nZSA9IChpc1J0bCA/IHRoaXMuZGlyICogKGlzUnRsID8gMSA6IC0xKSA6IHRoaXMuZGlyKSA8IDAgPT09IHRoaXMucHJldlBvcyA+IHRoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IGRpckNoYW5nZSA/IHRoaXMuaW5kZXggOiB0aGlzLnByZXZJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpckNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IDEgLSB0aGlzLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0aGlzLmRpciA+IDAgJiYgIWRpckNoYW5nZSB8fCB0aGlzLmRpciA8IDAgJiYgZGlyQ2hhbmdlID8gJ25leHQnIDogJ3ByZXZpb3VzJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwcmV2ZW50Q2xpY2soKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1xuICAgICAgICAgICAgICAgICAgICA9IHRoaXMucGVyY2VudFxuICAgICAgICAgICAgICAgICAgICA9IG51bGw7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFzVGV4dE5vZGVzT25seShlbCkge1xuICAgICAgICByZXR1cm4gIWVsLmNoaWxkcmVuLmxlbmd0aCAmJiBlbC5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyTmF2ID0ge1xuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHNlbE5hdjogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBuYXY6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbE5hdiA9IHJlZi5zZWxOYXY7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChzZWxOYXYsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBuYXZJdGVtU2VsZWN0b3I6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhdHRySXRlbSA9IHJlZi5hdHRySXRlbTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyBhdHRySXRlbSArIFwiXSxbZGF0YS1cIiArIGF0dHJJdGVtICsgXCJdXCIpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbmF2SXRlbXM6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkJCh0aGlzLm5hdkl0ZW1TZWxlY3RvciwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmF2ICYmIHRoaXMubGVuZ3RoICE9PSB0aGlzLm5hdi5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwodGhpcy5uYXYsIHRoaXMuc2xpZGVzLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gKFwiPGxpIFwiICsgKHRoaXMkMS5hdHRySXRlbSkgKyBcIj1cXFwiXCIgKyBpICsgXCJcXFwiPjxhIGhyZWY9XFxcIiNcXFwiPjwvYT48L2xpPlwiKTsgfSkuam9pbignJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoJCQodGhpcy5uYXZJdGVtU2VsZWN0b3IsIHRoaXMuJGVsKS5jb25jYXQodGhpcy5uYXYpLCAndWstaGlkZGVuJywgIXRoaXMubWF4SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTmF2KCk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5hdkl0ZW1TZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGUuY3VycmVudC5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhkYXRhKGUuY3VycmVudCwgdGhpcy5hdHRySXRlbSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93JyxcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAndXBkYXRlTmF2J1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHVwZGF0ZU5hdjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5nZXRWYWxpZEluZGV4KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjbWQgPSBkYXRhKGVsLCB0aGlzJDEuYXR0ckl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzQWN0aXZlLCB0b051bWJlcihjbWQpID09PSBpKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsICd1ay1pbnZpc2libGUnLCB0aGlzJDEuZmluaXRlICYmIChjbWQgPT09ICdwcmV2aW91cycgJiYgaSA9PT0gMCB8fCBjbWQgPT09ICduZXh0JyAmJiBpID49IHRoaXMkMS5tYXhJbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZXIgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgbWl4aW5zOiBbU2xpZGVyQXV0b3BsYXksIFNsaWRlckRyYWcsIFNsaWRlck5hdl0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNsc0FjdGl2YXRlZDogQm9vbGVhbixcbiAgICAgICAgICAgIGVhc2luZzogU3RyaW5nLFxuICAgICAgICAgICAgaW5kZXg6IE51bWJlcixcbiAgICAgICAgICAgIGZpbml0ZTogQm9vbGVhbixcbiAgICAgICAgICAgIHZlbG9jaXR5OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgZWFzaW5nOiAnZWFzZScsXG4gICAgICAgICAgICBmaW5pdGU6IGZhbHNlLFxuICAgICAgICAgICAgdmVsb2NpdHk6IDEsXG4gICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgIHN0YWNrOiBbXSxcbiAgICAgICAgICAgIHBlcmNlbnQ6IDAsXG4gICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzQWN0aXZhdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIFRyYW5zaXRpb25lcjogZmFsc2UsXG4gICAgICAgICAgICB0cmFuc2l0aW9uT3B0aW9uczoge31cbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZHVyYXRpb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZlbG9jaXR5ID0gcmVmLnZlbG9jaXR5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNwZWVkVXAoJGVsLm9mZnNldFdpZHRoIC8gdmVsb2NpdHkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbGVuZ3RoOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbGlzdDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsTGlzdCA9IHJlZi5zZWxMaXN0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsTGlzdCwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1heEluZGV4OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2xpZGVzU2VsZWN0b3I6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBzZWxMaXN0ID0gcmVmLnNlbExpc3Q7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKHNlbExpc3QgKyBcIiA+ICpcIik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzbGlkZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b05vZGVzKHRoaXMubGlzdC5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgaXRlbXNob3duOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGhpcy5saXN0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaW5kZXgkJDEsIGZvcmNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBmb3JjZSA9PT0gdm9pZCAwICkgZm9yY2UgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcgfHwgIXRoaXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgc3RhY2sgPSByZWYuc3RhY2s7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXVlSW5kZXggPSBmb3JjZSA/IDAgOiBzdGFjay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdmFyIHJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzdGFjay5zcGxpY2UocXVldWVJbmRleCwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNob3coc3RhY2suc2hpZnQoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc3RhY2tbZm9yY2UgPyAndW5zaGlmdCcgOiAncHVzaCddKGluZGV4JCQxKTtcblxuICAgICAgICAgICAgICAgIGlmICghZm9yY2UgJiYgc3RhY2subGVuZ3RoID4gMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci5mb3J3YXJkKE1hdGgubWluKHRoaXMuZHVyYXRpb24sIDIwMCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcmV2SW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gaGFzQ2xhc3ModGhpcy5zbGlkZXMsIHRoaXMuY2xzQWN0aXZlKSAmJiB0aGlzLnNsaWRlc1twcmV2SW5kZXhdO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlzLmdldEluZGV4KGluZGV4JCQxLCB0aGlzLmluZGV4KTtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMuc2xpZGVzW25leHRJbmRleF07XG5cbiAgICAgICAgICAgICAgICBpZiAocHJldiA9PT0gbmV4dCkge1xuICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5kaXIgPSBnZXREaXJlY3Rpb24oaW5kZXgkJDEsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgIHByZXYgJiYgdHJpZ2dlcihwcmV2LCAnYmVmb3JlaXRlbWhpZGUnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcihuZXh0LCAnYmVmb3JlaXRlbXNob3cnLCBbdGhpcywgcHJldl0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5fc2hvdyhwcmV2LCBuZXh0LCBmb3JjZSkudGhlbihmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZGVuJywgW3RoaXMkMV0pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdpdGVtc2hvd24nLCBbdGhpcyQxXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvdyhzdGFjay5zaGlmdCgpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RyYW5zaXRpb25lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcihuZXh0LCAnaXRlbXNob3cnLCBbdGhpc10pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEluZGV4OiBmdW5jdGlvbihpbmRleCQkMSwgcHJldikge1xuICAgICAgICAgICAgICAgIGlmICggaW5kZXgkJDEgPT09IHZvaWQgMCApIGluZGV4JCQxID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXYgPT09IHZvaWQgMCApIHByZXYgPSB0aGlzLmluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsYW1wKGdldEluZGV4KGluZGV4JCQxLCB0aGlzLnNsaWRlcywgcHJldiwgdGhpcy5maW5pdGUpLCAwLCB0aGlzLm1heEluZGV4KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFZhbGlkSW5kZXg6IGZ1bmN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2SW5kZXggPT09IHZvaWQgMCApIHByZXZJbmRleCA9IHRoaXMucHJldkluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5kZXgoaW5kZXgkJDEsIHByZXZJbmRleCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfc2hvdzogZnVuY3Rpb24ocHJldiwgbmV4dCwgZm9yY2UpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IHRoaXMuX2dldFRyYW5zaXRpb25lcihcbiAgICAgICAgICAgICAgICAgICAgcHJldixcbiAgICAgICAgICAgICAgICAgICAgbmV4dCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXIsXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IGZvcmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXh0Lm9mZnNldFdpZHRoIDwgNjAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2N1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KScgLyogZWFzZU91dFF1YWQgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0LCAwLjQ0LCAxKScgLyogZWFzZU91dFF1YXJ0ICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmVhc2luZ1xuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnRyYW5zaXRpb25PcHRpb25zKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWZvcmNlICYmICFwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci50cmFuc2xhdGUoMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnN0YWNrO1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2l0aW9uZXJbbGVuZ3RoID4gMSA/ICdmb3J3YXJkJyA6ICdzaG93J10obGVuZ3RoID4gMSA/IE1hdGgubWluKHRoaXMuZHVyYXRpb24sIDc1ICsgNzUgLyAobGVuZ3RoIC0gMSkpIDogdGhpcy5kdXJhdGlvbiwgdGhpcy5wZXJjZW50KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2dldERpc3RhbmNlOiBmdW5jdGlvbihwcmV2LCBuZXh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzLl9nZXRUcmFuc2l0aW9uZXIocHJldiwgcHJldiAhPT0gbmV4dCAmJiBuZXh0KS5nZXREaXN0YW5jZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCwgcHJldiwgbmV4dCkge1xuICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICB2YXIgdHJhbnNpdGlvbmVyID0gdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKHByZXYgIT09IG5leHQgPyBwcmV2IDogZmFsc2UsIG5leHQpO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb25lci50cmFuc2xhdGUocGVyY2VudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25lcjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9nZXRUcmFuc2l0aW9uZXI6IGZ1bmN0aW9uKHByZXYsIG5leHQsIGRpciwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBkaXIgPT09IHZvaWQgMCApIGRpciA9IHRoaXMuZGlyIHx8IDE7XG4gICAgICAgICAgICAgICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0gdGhpcy50cmFuc2l0aW9uT3B0aW9ucztcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdGhpcy5UcmFuc2l0aW9uZXIoXG4gICAgICAgICAgICAgICAgICAgIGlzTnVtYmVyKHByZXYpID8gdGhpcy5zbGlkZXNbcHJldl0gOiBwcmV2LFxuICAgICAgICAgICAgICAgICAgICBpc051bWJlcihuZXh0KSA/IHRoaXMuc2xpZGVzW25leHRdIDogbmV4dCxcbiAgICAgICAgICAgICAgICAgICAgZGlyICogKGlzUnRsID8gLTEgOiAxKSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldERpcmVjdGlvbihpbmRleCQkMSwgcHJldkluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleCQkMSA9PT0gJ25leHQnXG4gICAgICAgICAgICA/IDFcbiAgICAgICAgICAgIDogaW5kZXgkJDEgPT09ICdwcmV2aW91cydcbiAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgOiBpbmRleCQkMSA8IHByZXZJbmRleFxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzcGVlZFVwKHgpIHtcbiAgICAgICAgcmV0dXJuIC41ICogeCArIDMwMDsgLy8gcGFyYWJvbGEgdGhyb3VnaCAoNDAwLDUwMDsgNjAwLDYwMDsgMTgwMCwxMjAwKVxuICAgIH1cblxuICAgIHZhciBTbGlkZXNob3cgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbU2xpZGVyXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhbmltYXRpb246ICdzbGlkZScsXG4gICAgICAgICAgICBjbHNBY3RpdmF0ZWQ6ICd1ay10cmFuc2l0aW9uLWFjdGl2ZScsXG4gICAgICAgICAgICBBbmltYXRpb25zOiBBbmltYXRpb25zLFxuICAgICAgICAgICAgVHJhbnNpdGlvbmVyOiBUcmFuc2l0aW9uZXJcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBhbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuICAgICAgICAgICAgICAgIHZhciBBbmltYXRpb25zJCQxID0gcmVmLkFuaW1hdGlvbnM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXNzaWduKGFuaW1hdGlvbiBpbiBBbmltYXRpb25zJCQxID8gQW5pbWF0aW9ucyQkMVthbmltYXRpb25dIDogQW5pbWF0aW9ucyQkMS5zbGlkZSwge25hbWU6IGFuaW1hdGlvbn0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7YW5pbWF0aW9uOiB0aGlzLmFuaW1hdGlvbn07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgJ2l0ZW1zaG93IGl0ZW1oaWRlIGl0ZW1zaG93biBpdGVtaGlkZGVuJzogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGFyZ2V0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpc051bWJlcih0aGlzLnByZXZJbmRleCkgJiYgZmFzdGRvbS5mbHVzaCgpOyAvLyBpT1MgMTArIHdpbGwgaG9ub3IgdGhlIHZpZGVvLnBsYXkgb25seSBpZiBjYWxsZWQgZnJvbSBhIGdlc3R1cmUgaGFuZGxlclxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYmVmb3JlaXRlbXNob3c6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtc2hvd246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2YXRlZCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtaGlkZGVuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRhcmdldCwgdGhpcy5jbHNBY3RpdmUsIHRoaXMuY2xzQWN0aXZhdGVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIExpZ2h0Ym94UGFuZWwgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ29udGFpbmVyLCBNb2RhbCwgVG9nZ2xhYmxlLCBTbGlkZXNob3ddLFxuXG4gICAgICAgIGZ1bmN0aW9uYWw6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IE51bWJlcixcbiAgICAgICAgICAgIHByZWxvYWQ6IE51bWJlcixcbiAgICAgICAgICAgIHZpZGVvQXV0b3BsYXk6IEJvb2xlYW4sXG4gICAgICAgICAgICB0ZW1wbGF0ZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIHByZWxvYWQ6IDEsXG4gICAgICAgICAgICB2aWRlb0F1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IDMwMDAsXG4gICAgICAgICAgICBpdGVtczogW10sXG4gICAgICAgICAgICBjbHM6ICd1ay1vcGVuJyxcbiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1saWdodGJveC1wYWdlJyxcbiAgICAgICAgICAgIHNlbExpc3Q6ICcudWstbGlnaHRib3gtaXRlbXMnLFxuICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay1saWdodGJveC1pdGVtJyxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLWNsb3NlLWxhcmdlJyxcbiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICAgICAgICB2ZWxvY2l0eTogMixcbiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBcIjxkaXYgY2xhc3M9XFxcInVrLWxpZ2h0Ym94IHVrLW92ZXJmbG93LWhpZGRlblxcXCI+IDx1bCBjbGFzcz1cXFwidWstbGlnaHRib3gtaXRlbXNcXFwiPjwvdWw+IDxkaXYgY2xhc3M9XFxcInVrLWxpZ2h0Ym94LXRvb2xiYXIgdWstcG9zaXRpb24tdG9wIHVrLXRleHQtcmlnaHQgdWstdHJhbnNpdGlvbi1zbGlkZS10b3AgdWstdHJhbnNpdGlvbi1vcGFxdWVcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1saWdodGJveC10b29sYmFyLWljb24gdWstY2xvc2UtbGFyZ2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCIgdWstY2xvc2U+PC9idXR0b24+IDwvZGl2PiA8YSBjbGFzcz1cXFwidWstbGlnaHRib3gtYnV0dG9uIHVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcXFwiIGhyZWY9XFxcIiNcXFwiIHVrLXNsaWRlbmF2LXByZXZpb3VzIHVrLWxpZ2h0Ym94LWl0ZW09XFxcInByZXZpb3VzXFxcIj48L2E+IDxhIGNsYXNzPVxcXCJ1ay1saWdodGJveC1idXR0b24gdWstcG9zaXRpb24tY2VudGVyLXJpZ2h0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcXFwiIGhyZWY9XFxcIiNcXFwiIHVrLXNsaWRlbmF2LW5leHQgdWstbGlnaHRib3gtaXRlbT1cXFwibmV4dFxcXCI+PC9hPiA8ZGl2IGNsYXNzPVxcXCJ1ay1saWdodGJveC10b29sYmFyIHVrLWxpZ2h0Ym94LWNhcHRpb24gdWstcG9zaXRpb24tYm90dG9tIHVrLXRleHQtY2VudGVyIHVrLXRyYW5zaXRpb24tc2xpZGUtYm90dG9tIHVrLXRyYW5zaXRpb24tb3BhcXVlXFxcIj48L2Rpdj4gPC9kaXY+XCJcbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB0aGlzLiRtb3VudChhcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMudGVtcGxhdGUpKTtcblxuICAgICAgICAgICAgdGhpcy5jYXB0aW9uID0gJCgnLnVrLWxpZ2h0Ym94LWNhcHRpb24nLCB0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoKSB7IHJldHVybiBhcHBlbmQodGhpcyQxLmxpc3QsICc8bGk+PC9saT4nKTsgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogKHBvaW50ZXJNb3ZlICsgXCIgXCIgKyBwb2ludGVyRG93biArIFwiIGtleWRvd25cIiksXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAnc2hvd0NvbnRyb2xzJ1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzU2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93bicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3Nob3dDb250cm9scydcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVDb250cm9scygpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RvcCh0aGlzLnNsaWRlcyk7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAna2V5dXAnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGRvY3VtZW50LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RvZ2dsZWQodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUua2V5Q29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygnbmV4dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZWl0ZW1zaG93JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50Q2F0Y2ggPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb24gPSBBbmltYXRpb25zJDFbJ3NjYWxlJ107XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGUudGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2suc3BsaWNlKDEsIDAsIHRoaXMuaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3cnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpID0gaW5kZXgodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gdGhpcy5nZXRJdGVtKGkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2FwdGlvbiA9IHJlZiQxLmNhcHRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuY2FwdGlvbiwgJ2Rpc3BsYXknLCBjYXB0aW9uID8gJycgOiAnbm9uZScpO1xuICAgICAgICAgICAgICAgICAgICBodG1sKHRoaXMuY2FwdGlvbiwgY2FwdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPD0gdGhpcy5wcmVsb2FkOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5sb2FkSXRlbSh0aGlzJDEuZ2V0SW5kZXgoaSArIGopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5sb2FkSXRlbSh0aGlzJDEuZ2V0SW5kZXgoaSAtIGopKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3duJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRDYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1sb2FkJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKF8sIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNlID0gaXRlbS5zb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gaXRlbS50eXBlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWx0ID0gaXRlbS5hbHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtKGl0ZW0sICc8c3BhbiB1ay1zcGlubmVyPjwvc3Bhbj4nKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoZXMkJDE7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdpbWFnZScgfHwgc291cmNlLm1hdGNoKC9cXC4oanAoZSk/Z3xwbmd8Z2lmfHN2ZykoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEltYWdlKHNvdXJjZSkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoaW1nKSB7IHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCAoXCI8aW1nIHdpZHRoPVxcXCJcIiArIChpbWcud2lkdGgpICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyAoaW1nLmhlaWdodCkgKyBcIlxcXCIgc3JjPVxcXCJcIiArIHNvdXJjZSArIFwiXFxcIiBhbHQ9XFxcIlwiICsgKGFsdCA/IGFsdCA6ICcnKSArIFwiXFxcIj5cIikpOyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5zZXRFcnJvcihpdGVtKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmlkZW9cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmlkZW8nIHx8IHNvdXJjZS5tYXRjaCgvXFwuKG1wNHx3ZWJtfG9ndikoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlbyA9ICQoKFwiPHZpZGVvIGNvbnRyb2xzIHBsYXlzaW5saW5lXCIgKyAoaXRlbS5wb3N0ZXIgPyAoXCIgcG9zdGVyPVxcXCJcIiArIChpdGVtLnBvc3RlcikgKyBcIlxcXCJcIikgOiAnJykgKyBcIiB1ay12aWRlbz1cXFwiXCIgKyAodGhpcy52aWRlb0F1dG9wbGF5KSArIFwiXFxcIj48L3ZpZGVvPlwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHZpZGVvLCAnc3JjJywgc291cmNlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb24odmlkZW8sICdlcnJvcicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5zZXRFcnJvcihpdGVtKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbih2aWRlbywgJ2xvYWRlZG1ldGFkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIodmlkZW8sIHt3aWR0aDogdmlkZW8udmlkZW9XaWR0aCwgaGVpZ2h0OiB2aWRlby52aWRlb0hlaWdodH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIHZpZGVvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnaWZyYW1lJyB8fCBzb3VyY2UubWF0Y2goL1xcLihodG1sfHBocCkoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAoXCI8aWZyYW1lIGNsYXNzPVxcXCJ1ay1saWdodGJveC1pZnJhbWVcXFwiIHNyYz1cXFwiXCIgKyBzb3VyY2UgKyBcIlxcXCIgZnJhbWVib3JkZXI9XFxcIjBcXFwiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT5cIikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBZb3VUdWJlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoZXMkJDEgPSBzb3VyY2UubWF0Y2goL1xcL1xcLy4qP3lvdXR1YmUoLW5vY29va2llKT9cXC5bYS16XStcXC93YXRjaFxcP3Y9KFteJlxcc10rKS8pIHx8IHNvdXJjZS5tYXRjaCgvKCl5b3V0dVxcLmJlXFwvKC4qKS8pKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBtYXRjaGVzJCQxWzJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNldElmcmFtZSA9IGZ1bmN0aW9uICh3aWR0aCQkMSwgaGVpZ2h0JCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB3aWR0aCQkMSA9PT0gdm9pZCAwICkgd2lkdGgkJDEgPSA2NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBoZWlnaHQkJDEgPT09IHZvaWQgMCApIGhlaWdodCQkMSA9IDQ1MDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCBnZXRJZnJhbWUoKFwiaHR0cHM6Ly93d3cueW91dHViZVwiICsgKG1hdGNoZXMkJDFbMV0gfHwgJycpICsgXCIuY29tL2VtYmVkL1wiICsgaWQpLCB3aWR0aCQkMSwgaGVpZ2h0JCQxLCB0aGlzJDEudmlkZW9BdXRvcGxheSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2UoKFwiaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvXCIgKyBpZCArIFwiL21heHJlc2RlZmF1bHQuanBnXCIpKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZb3VUdWJlIGRlZmF1bHQgNDA0IHRodW1iLCBmYWxsIGJhY2sgdG8gbG93IHJlc29sdXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoJCQxID09PSAxMjAgJiYgaGVpZ2h0JCQxID09PSA5MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2UoKFwiaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvXCIgKyBpZCArIFwiLzAuanBnXCIpKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0SWZyYW1lKHdpZHRoJCQxLCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWUod2lkdGgkJDEsIGhlaWdodCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmltZW9cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobWF0Y2hlcyQkMSA9IHNvdXJjZS5tYXRjaCgvKFxcL1xcLy4qPyl2aW1lb1xcLlthLXpdK1xcLyhbMC05XSspLio/LykpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXgoKFwiaHR0cHM6Ly92aW1lby5jb20vYXBpL29lbWJlZC5qc29uP21heHdpZHRoPTE5MjAmdXJsPVwiICsgKGVuY29kZVVSSShzb3VyY2UpKSksIHtyZXNwb25zZVR5cGU6ICdqc29uJywgd2l0aENyZWRlbnRpYWxzOiBmYWxzZX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWZfcmVzcG9uc2UgPSByZWYucmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmX3Jlc3BvbnNlLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZl9yZXNwb25zZS53aWR0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIGdldElmcmFtZSgoXCJodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vXCIgKyAobWF0Y2hlcyQkMVsyXSkpLCB3aWR0aCQkMSwgaGVpZ2h0JCQxLCB0aGlzJDEudmlkZW9BdXRvcGxheSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLnNldEVycm9yKGl0ZW0pOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgbG9hZEl0ZW06IGZ1bmN0aW9uKGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpbmRleCQkMSA9PT0gdm9pZCAwICkgaW5kZXgkJDEgPSB0aGlzLmluZGV4O1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0SXRlbShpbmRleCQkMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWQnLCBbaXRlbV0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0SXRlbTogZnVuY3Rpb24oaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtc1tpbmRleCQkMV0gfHwge307XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRJdGVtOiBmdW5jdGlvbihpdGVtLCBjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgYXNzaWduKGl0ZW0sIHtjb250ZW50OiBjb250ZW50fSk7XG4gICAgICAgICAgICAgICAgdmFyIGVsID0gaHRtbCh0aGlzLnNsaWRlc1t0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSldLCBjb250ZW50KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWRlZCcsIFt0aGlzLCBlbF0pO1xuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZShlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRFcnJvcjogZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAnPHNwYW4gdWstaWNvbj1cImljb246IGJvbHQ7IHJhdGlvOiAyXCI+PC9zcGFuPicpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2hvd0NvbnRyb2xzOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbnRyb2xzVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNUaW1lciA9IHNldFRpbWVvdXQodGhpcy5oaWRlQ29udHJvbHMsIHRoaXMuZGVsYXlDb250cm9scyk7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWFjdGl2ZScsICd1ay10cmFuc2l0aW9uLWFjdGl2ZScpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlQ29udHJvbHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCAndWstYWN0aXZlJywgJ3VrLXRyYW5zaXRpb24tYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldElmcmFtZShzcmMsIHdpZHRoJCQxLCBoZWlnaHQkJDEsIGF1dG9wbGF5KSB7XG4gICAgICAgIHJldHVybiAoXCI8aWZyYW1lIHNyYz1cXFwiXCIgKyBzcmMgKyBcIlxcXCIgd2lkdGg9XFxcIlwiICsgd2lkdGgkJDEgKyBcIlxcXCIgaGVpZ2h0PVxcXCJcIiArIGhlaWdodCQkMSArIFwiXFxcIiBzdHlsZT1cXFwibWF4LXdpZHRoOiAxMDAlOyBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcXCIgZnJhbWVib3JkZXI9XFxcIjBcXFwiIGFsbG93ZnVsbHNjcmVlbiB1ay12aWRlbz1cXFwiYXV0b3BsYXk6IFwiICsgYXV0b3BsYXkgKyBcIlxcXCIgdWstcmVzcG9uc2l2ZT48L2lmcmFtZT5cIik7XG4gICAgfVxuXG4gICAgdmFyIHByb3BzID0gbWVyZ2UoTGlnaHRib3hQYW5lbCwgJ3Byb3BzJyk7XG4gICAgdmFyIGRlZmF1bHRzID0gbWVyZ2UoTGlnaHRib3hQYW5lbCwgJ2RhdGEnKTtcblxuICAgIHZhciBMaWdodGJveCA9IHtcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDIsXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IGFzc2lnbih7dG9nZ2xlOiBTdHJpbmd9LCBwcm9wcyksXG5cbiAgICAgICAgZGF0YTogYXNzaWduKHt0b2dnbGU6ICdhJ30sIE9iamVjdC5rZXlzKHByb3BzKS5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEkJDEsIGtleSkge1xuICAgICAgICAgICAgZGF0YSQkMVtrZXldID0gZGVmYXVsdHNba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9LCB7fSkpLFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvZ2dsZSA9IHJlZi50b2dnbGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodG9nZ2xlLCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3koKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy50b2dnbGUpICsgXCI6bm90KC51ay1kaXNhYmxlZClcIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaW5kZXgodGhpcy50b2dnbGVzLCBlLmN1cnJlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICBkYXRhJCQxLnRvZ2dsZXMgPSBkYXRhJCQxLnRvZ2dsZXMgfHwgdGhpcy50b2dnbGVzO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wYW5lbCAmJiB0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJHByb3BzLmFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJGVtaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLnBhbmVsIHx8IGlzRXF1YWxMaXN0JDEoZGF0YSQkMS50b2dnbGVzLCB0aGlzLnRvZ2dsZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhJCQxLnRvZ2dsZXMgPSB0aGlzLnRvZ2dsZXM7XG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0KCk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIF9pbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbCA9IHRoaXMucGFuZWwgfHwgdGhpcy4kY3JlYXRlKCdsaWdodGJveFBhbmVsJywgYXNzaWduKHt9LCB0aGlzLiRwcm9wcywge1xuICAgICAgICAgICAgICAgICAgICBpdGVtczogdGhpcy50b2dnbGVzLnJlZHVjZShmdW5jdGlvbiAoaXRlbXMsIGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKFsnaHJlZicsICdjYXB0aW9uJywgJ3R5cGUnLCAncG9zdGVyJywgJ2FsdCddLnJlZHVjZShmdW5jdGlvbiAob2JqLCBhdHRyJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2F0dHIkJDEgPT09ICdocmVmJyA/ICdzb3VyY2UnIDogYXR0ciQkMV0gPSBkYXRhKGVsLCBhdHRyJCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwge30pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJGRlc3Ryb3kodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGluZGV4JCQxKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFuZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsLnNob3coaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsICYmIHRoaXMucGFuZWwuaGlkZSgpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzRXF1YWxMaXN0JDEobGlzdEEsIGxpc3RCKSB7XG4gICAgICAgIHJldHVybiBsaXN0QS5sZW5ndGggPT09IGxpc3RCLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGlzdEEuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBlbCA9PT0gbGlzdEJbaV07IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlKG9wdGlvbnMsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGFzc2lnbi5hcHBseShcbiAgICAgICAgICAgIHZvaWQgMCwgWyB7fSBdLmNvbmNhdCggKG9wdGlvbnMubWl4aW5zID8gb3B0aW9ucy5taXhpbnMubWFwKGZ1bmN0aW9uIChtaXhpbikgeyByZXR1cm4gbWVyZ2UobWl4aW4sIHByb3ApOyB9KSA6IFtdKSxcbiAgICAgICAgICAgIFtpc0Z1bmN0aW9uKG9wdGlvbnNbcHJvcF0pID8gb3B0aW9uc1twcm9wXSgpIDogb3B0aW9uc1twcm9wXV0gKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbCQyKFVJa2l0KSB7XG4gICAgICAgIGlmICghVUlraXQubGlnaHRib3hQYW5lbCkge1xuICAgICAgICAgICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgTGlnaHRib3hQYW5lbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgb2JqO1xuXG4gICAgdmFyIGNvbnRhaW5lcnMgPSB7fTtcblxuICAgIHZhciBOb3RpZmljYXRpb24gPSB7XG5cbiAgICAgICAgZnVuY3Rpb25hbDogdHJ1ZSxcblxuICAgICAgICBhcmdzOiBbJ21lc3NhZ2UnLCAnc3RhdHVzJ10sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgdGltZW91dDogNTAwMCxcbiAgICAgICAgICAgIGdyb3VwOiBudWxsLFxuICAgICAgICAgICAgcG9zOiAndG9wLWNlbnRlcicsXG4gICAgICAgICAgICBjbHNDbG9zZTogJ3VrLW5vdGlmaWNhdGlvbi1jbG9zZScsXG4gICAgICAgICAgICBjbHNNc2c6ICd1ay1ub3RpZmljYXRpb24tbWVzc2FnZSdcbiAgICAgICAgfSxcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDMsXG5cbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICghY29udGFpbmVyc1t0aGlzLnBvc10pIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJzW3RoaXMucG9zXSA9IGFwcGVuZCh0aGlzLiRjb250YWluZXIsIChcIjxkaXYgY2xhc3M9XFxcInVrLW5vdGlmaWNhdGlvbiB1ay1ub3RpZmljYXRpb24tXCIgKyAodGhpcy5wb3MpICsgXCJcXFwiPjwvZGl2PlwiKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBjc3MoY29udGFpbmVyc1t0aGlzLnBvc10sICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG5cbiAgICAgICAgICAgIHRoaXMuJG1vdW50KGFwcGVuZChjb250YWluZXIsXG4gICAgICAgICAgICAgICAgKFwiPGRpdiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNNc2cpICsgKHRoaXMuc3RhdHVzID8gKFwiIFwiICsgKHRoaXMuY2xzTXNnKSArIFwiLVwiICsgKHRoaXMuc3RhdHVzKSkgOiAnJykgKyBcIlxcXCI+IDxhIGhyZWY9XFxcIiNcXFwiIGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc0Nsb3NlKSArIFwiXFxcIiBkYXRhLXVrLWNsb3NlPjwvYT4gPGRpdj5cIiArICh0aGlzLm1lc3NhZ2UpICsgXCI8L2Rpdj4gPC9kaXY+XCIpXG4gICAgICAgICAgICApKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIHJlYWR5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciBtYXJnaW5Cb3R0b20gPSB0b0Zsb2F0KGNzcyh0aGlzLiRlbCwgJ21hcmdpbkJvdHRvbScpKTtcbiAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7b3BhY2l0eTogMCwgbWFyZ2luVG9wOiAtdGhpcy4kZWwub2Zmc2V0SGVpZ2h0LCBtYXJnaW5Cb3R0b206IDB9KSxcbiAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSwgbWFyZ2luVG9wOiAwLCBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS50aW1lciA9IHNldFRpbWVvdXQodGhpcyQxLmNsb3NlLCB0aGlzJDEudGltZW91dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6ICggb2JqID0ge1xuXG4gICAgICAgICAgICBjbGljazogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmPVwiI1wiXScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sIG9ialtwb2ludGVyRW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmpbcG9pbnRlckxlYXZlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuY2xvc2UsIHRoaXMudGltZW91dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqICksXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oaW1tZWRpYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciByZW1vdmVGbiA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMkMS4kZWwsICdjbG9zZScsIFt0aGlzJDFdKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMkMS4kZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyc1t0aGlzJDEucG9zXS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhjb250YWluZXJzW3RoaXMkMS5wb3NdLCAnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVGbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQodGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IC10aGlzLiRlbC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IDBcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbihyZW1vdmVGbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsJDMoVUlraXQpIHtcbiAgICAgICAgVUlraXQubm90aWZpY2F0aW9uLmNsb3NlQWxsID0gZnVuY3Rpb24gKGdyb3VwLCBpbW1lZGlhdGUpIHtcbiAgICAgICAgICAgIGFwcGx5KGRvY3VtZW50LmJvZHksIGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHZhciBub3RpZmljYXRpb24gPSBVSWtpdC5nZXRDb21wb25lbnQoZWwsICdub3RpZmljYXRpb24nKTtcbiAgICAgICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uICYmICghZ3JvdXAgfHwgZ3JvdXAgPT09IG5vdGlmaWNhdGlvbi5ncm91cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmNsb3NlKGltbWVkaWF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHByb3BzJDEgPSBbJ3gnLCAneScsICdiZ3gnLCAnYmd5JywgJ3JvdGF0ZScsICdzY2FsZScsICdjb2xvcicsICdiYWNrZ3JvdW5kQ29sb3InLCAnYm9yZGVyQ29sb3InLCAnb3BhY2l0eScsICdibHVyJywgJ2h1ZScsICdncmF5c2NhbGUnLCAnaW52ZXJ0JywgJ3NhdHVyYXRlJywgJ3NlcGlhJywgJ2ZvcGFjaXR5J107XG5cbiAgICB2YXIgUGFyYWxsYXggPSB7XG5cbiAgICAgICAgcHJvcHM6IHByb3BzJDEucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgcHJvcCkge1xuICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSAnbGlzdCc7XG4gICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1lZGlhOiAnbWVkaWEnXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGRhdGE6IHByb3BzJDEucmVkdWNlKGZ1bmN0aW9uIChkYXRhJCQxLCBwcm9wKSB7XG4gICAgICAgICAgICBkYXRhJCQxW3Byb3BdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1lZGlhOiBmYWxzZVxuICAgICAgICB9KSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBwcm9wczogZnVuY3Rpb24ocHJvcGVydGllcywgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcyQxLnJlZHVjZShmdW5jdGlvbiAocHJvcHMsIHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQocHJvcGVydGllc1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0NvbG9yID0gcHJvcC5tYXRjaCgvY29sb3IvaSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0Nzc1Byb3AgPSBpc0NvbG9yIHx8IHByb3AgPT09ICdvcGFjaXR5JztcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcG9zLCBiZ1BvcywgZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcHJvcGVydGllc1twcm9wXS5zbGljZSgwKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDc3NQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoJGVsLCBwcm9wLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RlcHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMudW5zaGlmdCgocHJvcCA9PT0gJ3NjYWxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNDc3NQcm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY3NzKCRlbCwgcHJvcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB1bml0ID0gaW5jbHVkZXMoc3RlcHMuam9pbignJyksICclJykgPyAnJScgOiAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbG9yKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSAkZWwuc3R5bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSByZWYuY29sb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gcGFyc2VDb2xvcigkZWwsIHN0ZXApOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5zdHlsZS5jb2xvciA9IGNvbG9yO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKHRvRmxvYXQpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcC5tYXRjaCgvXmJnLykpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKCRlbCwgKFwiYmFja2dyb3VuZC1wb3NpdGlvbi1cIiArIChwcm9wWzJdKSksICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJnUG9zID0gY3NzKCRlbCwgJ2JhY2tncm91bmRQb3NpdGlvbicpLnNwbGl0KCcgJylbcHJvcFsyXSA9PT0gJ3gnID8gMCA6IDFdOyAvLyBJRSAxMSBjYW4ndCByZWFkIGJhY2tncm91bmQtcG9zaXRpb24tW3h8eV1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5jb3ZlcnMpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW4gPSBNYXRoLm1pbi5hcHBseShNYXRoLCBzdGVwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1heCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIHN0ZXBzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG93biA9IHN0ZXBzLmluZGV4T2YobWluKSA8IHN0ZXBzLmluZGV4T2YobWF4KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBtYXggLSBtaW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gc3RlcCAtIChkb3duID8gbWluIDogbWF4KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gKGRvd24gPyAtZGlmZiA6IDApICsgXCJweFwiO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gYmdQb3M7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByb3BzW3Byb3BdID0ge3N0ZXBzOiBzdGVwcywgdW5pdDogdW5pdCwgcG9zOiBwb3MsIGJnUG9zOiBiZ1BvcywgZGlmZjogZGlmZn07XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuXG4gICAgICAgICAgICAgICAgfSwge30pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBiZ1Byb3BzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBbJ2JneCcsICdiZ3knXS5maWx0ZXIoZnVuY3Rpb24gKGJnKSB7IHJldHVybiBiZyBpbiB0aGlzJDEucHJvcHM7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY292ZXJzOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY292ZXJzKCRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ltYWdlO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5hY3RpdmUgPSAhdGhpcy5tZWRpYSB8fCB3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhJCQxLmltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmltYWdlLmRpbUVsID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLiRlbC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuJGVsLm9mZnNldEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICgnaW1hZ2UnIGluIGRhdGEkJDEgfHwgIXRoaXMuY292ZXJzIHx8ICF0aGlzLmJnUHJvcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgc3JjID0gY3NzKHRoaXMuJGVsLCAnYmFja2dyb3VuZEltYWdlJykucmVwbGFjZSgvXm5vbmV8dXJsXFwoW1wiJ10/KC4rPylbXCInXT9cXCkkLywgJyQxJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuaW1hZ2UgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZShzcmMpLnRoZW4oZnVuY3Rpb24gKGltZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5pbWFnZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaW1nLm5hdHVyYWxXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGltZy5uYXR1cmFsSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGltYWdlID0gcmVmLmltYWdlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaW1hZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtiYWNrZ3JvdW5kU2l6ZTogJycsIGJhY2tncm91bmRSZXBlYXQ6ICcnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGltRWwgPSBpbWFnZS5kaW1FbDtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGltID0gRGltZW5zaW9ucy5jb3ZlcihpbWFnZSwgZGltRWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmdQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzJDEucHJvcHNbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHJlZi5kaWZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJnUG9zID0gcmVmLmJnUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcmVmLnN0ZXBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHIkJDEgPSBwcm9wID09PSAnYmd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcGFuID0gZGltW2F0dHIkJDFdIC0gZGltRWxbYXR0ciQkMV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYmdQb3MubWF0Y2goLyUkfDBweC8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BhbiA8IGRpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaW1FbFthdHRyJCQxXSA9IGRpbVthdHRyJCQxXSArIGRpZmYgLSBzcGFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzcGFuID4gZGlmZikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJnUG9zRmxvYXQgPSBwYXJzZUZsb2F0KGJnUG9zKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiZ1Bvc0Zsb2F0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wcm9wc1twcm9wXS5zdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gc3RlcCAtIChzcGFuIC0gZGlmZikgLyAoMTAwIC8gYmdQb3NGbG9hdCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZGltID0gRGltZW5zaW9ucy5jb3ZlcihpbWFnZSwgZGltRWwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRTaXplOiAoKGRpbS53aWR0aCkgKyBcInB4IFwiICsgKGRpbS5oZWlnaHQpICsgXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZXBlYXQ6ICduby1yZXBlYXQnXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgZWFjaCh0aGlzLmdldENzcygwKSwgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGNzcyh0aGlzJDEuJGVsLCBwcm9wLCAnJyk7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0Q3NzOiBmdW5jdGlvbihwZXJjZW50KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHMgPSByZWYucHJvcHM7XG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wcykucmVkdWNlKGZ1bmN0aW9uIChjc3MkJDEsIHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gcHJvcHNbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGVwcyA9IHJlZi5zdGVwcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVuaXQgPSByZWYudW5pdDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlZi5wb3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKHN0ZXBzLCBwZXJjZW50KTtcblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3Jtc1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5JzpcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IFsneCcsICd5J10ubWFwKGZ1bmN0aW9uIChkaXIpIHsgcmV0dXJuIHByb3AgPT09IGRpclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHZhbHVlICsgdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzW2Rpcl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0VmFsdWUocHJvcHNbZGlyXS5zdGVwcywgcGVyY2VudCkgKyBwcm9wc1tkaXJdLnVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmJDFbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmJDFbMV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gY3NzJCQxLnRyYW5zZm9ybSArPSBcIiB0cmFuc2xhdGUzZChcIiArIHggKyBcIiwgXCIgKyB5ICsgXCIsIDApXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb3RhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS50cmFuc2Zvcm0gKz0gXCIgcm90YXRlKFwiICsgdmFsdWUgKyBcImRlZylcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NjYWxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEudHJhbnNmb3JtICs9IFwiIHNjYWxlKFwiICsgdmFsdWUgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmcgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JneSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiZ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMVsoXCJiYWNrZ3JvdW5kLXBvc2l0aW9uLVwiICsgKHByb3BbMl0pKV0gPSBcImNhbGMoXCIgKyBwb3MgKyBcIiArIFwiICsgKHZhbHVlICsgdW5pdCkgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JhY2tncm91bmRDb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdib3JkZXJDb2xvcic6XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmJDIgPSBnZXRTdGVwKHN0ZXBzLCBwZXJjZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gcmVmJDJbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSByZWYkMlsxXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSByZWYkMlsyXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMVtwcm9wXSA9IFwicmdiYShcIiArIChzdGFydC5tYXAoZnVuY3Rpb24gKHZhbHVlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsgcCAqIChlbmRbaV0gLSB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gMyA/IHRvRmxvYXQodmFsdWUpIDogcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuam9pbignLCcpKSArIFwiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDU1MgRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibHVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIGJsdXIoXCIgKyB2YWx1ZSArIFwicHgpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdodWUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS5maWx0ZXIgKz0gXCIgaHVlLXJvdGF0ZShcIiArIHZhbHVlICsgXCJkZWcpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb3BhY2l0eSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxLmZpbHRlciArPSBcIiBvcGFjaXR5KFwiICsgdmFsdWUgKyBcIiUpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmF5c2NhbGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW52ZXJ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NhdHVyYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcGlhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIFwiICsgcHJvcCArIFwiKFwiICsgdmFsdWUgKyBcIiUpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3NzJCQxO1xuXG4gICAgICAgICAgICAgICAgfSwge3RyYW5zZm9ybTogJycsIGZpbHRlcjogJyd9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwYXJzZUNvbG9yKGVsLCBjb2xvcikge1xuICAgICAgICByZXR1cm4gY3NzKGNzcyhlbCwgJ2NvbG9yJywgY29sb3IpLCAnY29sb3InKS5zcGxpdCgvWygpLF0vZykuc2xpY2UoMSwgLTEpLmNvbmNhdCgxKS5zbGljZSgwLCA0KS5tYXAoZnVuY3Rpb24gKG4pIHsgcmV0dXJuIHRvRmxvYXQobik7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFN0ZXAoc3RlcHMsIHBlcmNlbnQpIHtcbiAgICAgICAgdmFyIGNvdW50ID0gc3RlcHMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIGluZGV4JCQxID0gTWF0aC5taW4oTWF0aC5mbG9vcihjb3VudCAqIHBlcmNlbnQpLCBjb3VudCAtIDEpO1xuICAgICAgICB2YXIgc3RlcCA9IHN0ZXBzLnNsaWNlKGluZGV4JCQxLCBpbmRleCQkMSArIDIpO1xuXG4gICAgICAgIHN0ZXAucHVzaChwZXJjZW50ID09PSAxID8gMSA6IHBlcmNlbnQgJSAoMSAvIGNvdW50KSAqIGNvdW50KTtcblxuICAgICAgICByZXR1cm4gc3RlcDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWYWx1ZShzdGVwcywgcGVyY2VudCkge1xuICAgICAgICB2YXIgcmVmID0gZ2V0U3RlcChzdGVwcywgcGVyY2VudCk7XG4gICAgICAgIHZhciBzdGFydCA9IHJlZlswXTtcbiAgICAgICAgdmFyIGVuZCA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHAgPSByZWZbMl07XG4gICAgICAgIHJldHVybiAoaXNOdW1iZXIoc3RhcnQpXG4gICAgICAgICAgICAgICAgPyBzdGFydCArIE1hdGguYWJzKHN0YXJ0IC0gZW5kKSAqIHAgKiAoc3RhcnQgPCBlbmQgPyAxIDogLTEpXG4gICAgICAgICAgICAgICAgOiArZW5kXG4gICAgICAgICkudG9GaXhlZCgyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb3ZlcnMoZWwpIHtcbiAgICAgICAgdmFyIHJlZiA9IGVsLnN0eWxlO1xuICAgICAgICB2YXIgYmFja2dyb3VuZFNpemUgPSByZWYuYmFja2dyb3VuZFNpemU7XG4gICAgICAgIHZhciBjb3ZlcnMgPSBjc3MoY3NzKGVsLCAnYmFja2dyb3VuZFNpemUnLCAnJyksICdiYWNrZ3JvdW5kU2l6ZScpID09PSAnY292ZXInO1xuICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9IGJhY2tncm91bmRTaXplO1xuICAgICAgICByZXR1cm4gY292ZXJzO1xuICAgIH1cblxuICAgIHZhciBQYXJhbGxheCQxID0ge1xuXG4gICAgICAgIG1peGluczogW1BhcmFsbGF4XSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICB2aWV3cG9ydDogTnVtYmVyLFxuICAgICAgICAgICAgZWFzaW5nOiBOdW1iZXIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICAgIHZpZXdwb3J0OiAxLFxuICAgICAgICAgICAgZWFzaW5nOiAxLFxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQgJiYgcXVlcnkodGFyZ2V0LCAkZWwpIHx8ICRlbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSByZWYucGVyY2VudDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldjogcGVyY2VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IGVhc2UkMShzY3JvbGxlZE92ZXIodGhpcy50YXJnZXQpIC8gKHRoaXMudmlld3BvcnQgfHwgMSksIHRoaXMuZWFzaW5nKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmLCByZWYkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHJlZi5wcmV2O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZi5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYkMS50eXBlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT09ICdzY3JvbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYgIT09IHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MocGVyY2VudCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVhc2UkMShwZXJjZW50LCBlYXNpbmcpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wKHBlcmNlbnQgKiAoMSAtIChlYXNpbmcgLSBlYXNpbmcgKiBwZXJjZW50KSkpO1xuICAgIH1cblxuICAgIHZhciBTbGlkZXJSZWFjdGl2ZSA9IHtcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCB8fCB0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSB0aGlzLmdldFZhbGlkSW5kZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSwgdGhpcy5jbHNBY3RpdmF0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gVHJhbnNpdGlvbmVyJDEgKHByZXYsIG5leHQsIGRpciwgcmVmKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSByZWYuY2VudGVyO1xuICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZztcbiAgICAgICAgdmFyIGxpc3QgPSByZWYubGlzdDtcblxuXG4gICAgICAgIHZhciBkZWZlcnJlZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIHZhciBmcm9tID0gcHJldlxuICAgICAgICAgICAgPyBnZXRMZWZ0KHByZXYsIGxpc3QsIGNlbnRlcilcbiAgICAgICAgICAgIDogZ2V0TGVmdChuZXh0LCBsaXN0LCBjZW50ZXIpICsgbmV4dC5vZmZzZXRXaWR0aCAqIGRpcjtcbiAgICAgICAgdmFyIHRvID0gbmV4dFxuICAgICAgICAgICAgPyBnZXRMZWZ0KG5leHQsIGxpc3QsIGNlbnRlcilcbiAgICAgICAgICAgIDogZnJvbSArIHByZXYub2Zmc2V0V2lkdGggKiBkaXIgKiAoaXNSdGwgPyAtMSA6IDEpO1xuXG4gICAgICAgIHJldHVybiB7XG5cbiAgICAgICAgICAgIGRpcjogZGlyLFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCwgbGluZWFyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gMDtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IE1hdGgucm91bmQoZHVyYXRpb24gKiBjbGFtcChwZXJjZW50LCAtMSwgMSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7XG5cbiAgICAgICAgICAgICAgICBwcmV2ICYmIHRoaXMudXBkYXRlVHJhbnNsYXRlcygpO1xuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBwcmV2ID8gcGVyY2VudCA6IGNsYW1wKHBlcmNlbnQsIDAsIDEpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMSh0aGlzLmdldEl0ZW1JbigpLCAnaXRlbWluJywge3BlcmNlbnQ6IHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7XG4gICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyVXBkYXRlJDEodGhpcy5nZXRJdGVtSW4odHJ1ZSksICdpdGVtb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvblxuICAgICAgICAgICAgICAgICAgICAuc3RhcnQobGlzdCwge3RyYW5zZm9ybTogdHJhbnNsYXRlKC10byAqIChpc1J0bCA/IC0xIDogMSksICdweCcpfSwgZHVyYXRpb24sIHRpbWluZylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZGVmZXJyZWQucmVzb2x2ZSwgbm9vcCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zaXRpb24uc3RvcChsaXN0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwobGlzdCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY3NzKGxpc3QsICd0cmFuc2Zvcm0nLCAnJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmb3J3YXJkOiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCkge1xuICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA9PT0gdm9pZCAwICkgcGVyY2VudCA9IHRoaXMucGVyY2VudCgpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwobGlzdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcblxuICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IHRoaXMuZ2V0RGlzdGFuY2UoKSAqIGRpciAqIChpc1J0bCA/IC0xIDogMSk7XG5cbiAgICAgICAgICAgICAgICBjc3MobGlzdCwgJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZShjbGFtcChcbiAgICAgICAgICAgICAgICAgICAgLXRvICsgKGRpc3RhbmNlIC0gZGlzdGFuY2UgKiBwZXJjZW50KSxcbiAgICAgICAgICAgICAgICAgICAgLWdldFdpZHRoKGxpc3QpLFxuICAgICAgICAgICAgICAgICAgICBsaXN0Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgICAgKSAqIChpc1J0bCA/IC0xIDogMSksICdweCcpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHJhbnNsYXRlcygpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudCA9IGNsYW1wKHBlcmNlbnQsIC0xLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKCksICdpdGVtdHJhbnNsYXRlaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKHRydWUpLCAnaXRlbXRyYW5zbGF0ZW91dCcsIHtwZXJjZW50OiAxIC0gcGVyY2VudCwgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicygoY3NzKGxpc3QsICd0cmFuc2Zvcm0nKS5zcGxpdCgnLCcpWzRdICogKGlzUnRsID8gLTEgOiAxKSArIGZyb20pIC8gKHRvIC0gZnJvbSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0RGlzdGFuY2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0byAtIGZyb20pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0SXRlbUluOiBmdW5jdGlvbihvdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIG91dCA9PT0gdm9pZCAwICkgb3V0ID0gZmFsc2U7XG5cblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5nZXRBY3RpdmVzKCk7XG4gICAgICAgICAgICAgICAgdmFyIGFsbCA9IHNvcnRCeShzbGlkZXMobGlzdCksICdvZmZzZXRMZWZ0Jyk7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBpbmRleChhbGwsIGFjdGl2ZXNbZGlyICogKG91dCA/IC0xIDogMSkgPiAwID8gYWN0aXZlcy5sZW5ndGggLSAxIDogMF0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIH5pICYmIGFsbFtpICsgKHByZXYgJiYgIW91dCA/IGRpciA6IDApXTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QWN0aXZlczogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IGdldExlZnQocHJldiB8fCBuZXh0LCBsaXN0LCBjZW50ZXIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRCeShzbGlkZXMobGlzdCkuZmlsdGVyKGZ1bmN0aW9uIChzbGlkZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVMZWZ0ID0gZ2V0RWxMZWZ0KHNsaWRlLCBsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNsaWRlTGVmdCA+PSBsZWZ0ICYmIHNsaWRlTGVmdCArIHNsaWRlLm9mZnNldFdpZHRoIDw9IGxpc3Qub2Zmc2V0V2lkdGggKyBsZWZ0O1xuICAgICAgICAgICAgICAgIH0pLCAnb2Zmc2V0TGVmdCcpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGVUcmFuc2xhdGVzOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5nZXRBY3RpdmVzKCk7XG5cbiAgICAgICAgICAgICAgICBzbGlkZXMobGlzdCkuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzQWN0aXZlID0gaW5jbHVkZXMoYWN0aXZlcywgc2xpZGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMShzbGlkZSwgKFwiaXRlbXRyYW5zbGF0ZVwiICsgKGlzQWN0aXZlID8gJ2luJyA6ICdvdXQnKSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IGlzQWN0aXZlID8gMSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXI6IHNsaWRlLm9mZnNldExlZnQgPD0gbmV4dC5vZmZzZXRMZWZ0ID8gMSA6IC0xXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRMZWZ0KGVsLCBsaXN0LCBjZW50ZXIpIHtcblxuICAgICAgICB2YXIgbGVmdCA9IGdldEVsTGVmdChlbCwgbGlzdCk7XG5cbiAgICAgICAgcmV0dXJuIGNlbnRlclxuICAgICAgICAgICAgPyBsZWZ0IC0gY2VudGVyRWwoZWwsIGxpc3QpXG4gICAgICAgICAgICA6IE1hdGgubWluKGxlZnQsIGdldE1heChsaXN0KSk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRNYXgobGlzdCkge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgZ2V0V2lkdGgobGlzdCkgLSBsaXN0Lm9mZnNldFdpZHRoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaWR0aChsaXN0KSB7XG4gICAgICAgIHJldHVybiBzbGlkZXMobGlzdCkucmVkdWNlKGZ1bmN0aW9uIChyaWdodCwgZWwpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoICsgcmlnaHQ7IH0sIDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE1heFdpZHRoKGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIHNsaWRlcyhsaXN0KS5yZWR1Y2UoZnVuY3Rpb24gKHJpZ2h0LCBlbCkgeyByZXR1cm4gTWF0aC5tYXgocmlnaHQsIGVsLm9mZnNldFdpZHRoKTsgfSwgMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2VudGVyRWwoZWwsIGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIGxpc3Qub2Zmc2V0V2lkdGggLyAyIC0gZWwub2Zmc2V0V2lkdGggLyAyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVsTGVmdChlbCwgbGlzdCkge1xuICAgICAgICByZXR1cm4gKGVsLm9mZnNldExlZnQgKyAoaXNSdGwgPyBlbC5vZmZzZXRXaWR0aCAtIGxpc3Qub2Zmc2V0V2lkdGggOiAwKSkgKiAoaXNSdGwgPyAtMSA6IDEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyaWdnZXJVcGRhdGUkMShlbCwgdHlwZSwgZGF0YSQkMSkge1xuICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UsIGRhdGEkJDEpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzbGlkZXMobGlzdCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhsaXN0LmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyJDEgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFNsaWRlciwgU2xpZGVyUmVhY3RpdmVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjZW50ZXI6IEJvb2xlYW4sXG4gICAgICAgICAgICBzZXRzOiBCb29sZWFuLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNlbnRlcjogZmFsc2UsXG4gICAgICAgICAgICBzZXRzOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc2xpZGVyLWl0ZW0nLFxuICAgICAgICAgICAgc2VsTGlzdDogJy51ay1zbGlkZXItaXRlbXMnLFxuICAgICAgICAgICAgc2VsTmF2OiAnLnVrLXNsaWRlci1uYXYnLFxuICAgICAgICAgICAgY2xzQ29udGFpbmVyOiAndWstc2xpZGVyLWNvbnRhaW5lcicsXG4gICAgICAgICAgICBUcmFuc2l0aW9uZXI6IFRyYW5zaXRpb25lciQxXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYXZnV2lkdGg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRXaWR0aCh0aGlzLmxpc3QpIC8gdGhpcy5sZW5ndGg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmaW5pdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBmaW5pdGUgPSByZWYuZmluaXRlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbml0ZSB8fCBnZXRXaWR0aCh0aGlzLmxpc3QpIDwgdGhpcy5saXN0Lm9mZnNldFdpZHRoICsgZ2V0TWF4V2lkdGgodGhpcy5saXN0KSArIHRoaXMuY2VudGVyO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbWF4SW5kZXg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmluaXRlIHx8IHRoaXMuY2VudGVyICYmICF0aGlzLnNldHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0c1t0aGlzLnNldHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuc2xpZGVzLCAnb3JkZXInLCAnJyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gZ2V0TWF4KHRoaXMubGlzdCk7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldEVsTGVmdCh0aGlzJDEubGlzdC5jaGlsZHJlbltpXSwgdGhpcyQxLmxpc3QpIDwgbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oaSArIDEsIHRoaXMkMS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0czogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHNldHMgPSByZWYuc2V0cztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gdGhpcy5saXN0Lm9mZnNldFdpZHRoIC8gKHRoaXMuY2VudGVyID8gMiA6IDEpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGxlZnQgPSAwO1xuICAgICAgICAgICAgICAgIHZhciBsZWZ0Q2VudGVyID0gd2lkdGgkJDE7XG4gICAgICAgICAgICAgICAgdmFyIHNsaWRlTGVmdCA9IDA7XG5cbiAgICAgICAgICAgICAgICBzZXRzID0gc2V0cyAmJiB0aGlzLnNsaWRlcy5yZWR1Y2UoZnVuY3Rpb24gKHNldHMsIHNsaWRlLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChzbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZVdpZHRoID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVSaWdodCA9IHNsaWRlTGVmdCArIHNsaWRlV2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNsaWRlUmlnaHQgPiBsZWZ0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcyQxLmNlbnRlciAmJiBpID4gdGhpcyQxLm1heEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMkMS5tYXhJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyhzZXRzLCBpKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNtcCA9IHRoaXMkMS5zbGlkZXNbaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuY2VudGVyICYmIGNtcCAmJiBzbGlkZVdpZHRoIDwgbGVmdENlbnRlciAtIG9mZnNldChjbXApLndpZHRoIC8gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0Q2VudGVyIC09IHNsaWRlV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdENlbnRlciA9IHdpZHRoJCQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBzbGlkZUxlZnQgKyB3aWR0aCQkMSArICh0aGlzJDEuY2VudGVyID8gc2xpZGVXaWR0aCAvIDIgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlTGVmdCArPSBzbGlkZVdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRzO1xuXG4gICAgICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldHMgJiYgc2V0cy5sZW5ndGggJiYgc2V0cztcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNlbnRlcjogdGhpcy5jZW50ZXIsXG4gICAgICAgICAgICAgICAgICAgIGxpc3Q6IHRoaXMubGlzdFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzQ29udGFpbmVyLCAhJCgoXCIuXCIgKyAodGhpcy5jbHNDb250YWluZXIpKSwgdGhpcy4kZWwpKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAkJCgoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIiksIHRoaXMuJGVsKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSBkYXRhKGVsLCB0aGlzJDEuYXR0ckl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEubWF4SW5kZXggJiYgdG9nZ2xlQ2xhc3MoZWwsICd1ay1oaWRkZW4nLCBpc051bWVyaWMoaW5kZXgkJDEpICYmICh0aGlzJDEuc2V0cyAmJiAhaW5jbHVkZXModGhpcyQxLnNldHMsIHRvRmxvYXQoaW5kZXgkJDEpKSB8fCBpbmRleCQkMSA+IHRoaXMkMS5tYXhJbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiB7XG5cbiAgICAgICAgICAgIGJlZm9yZWl0ZW1zaG93OiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnZ2luZyAmJiB0aGlzLnNldHMgJiYgdGhpcy5zdGFjay5sZW5ndGggPCAyICYmICFpbmNsdWRlcyh0aGlzLnNldHMsIHRoaXMuaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmdldFZhbGlkSW5kZXgoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4XG4gICAgICAgICAgICAgICAgICAgIC0gdGhpcy5wcmV2SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgKyAodGhpcy5kaXIgPiAwICYmIHRoaXMuaW5kZXggPCB0aGlzLnByZXZJbmRleCB8fCB0aGlzLmRpciA8IDAgJiYgdGhpcy5pbmRleCA+IHRoaXMucHJldkluZGV4ID8gKHRoaXMubWF4SW5kZXggKyAxKSAqIHRoaXMuZGlyIDogMClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nICYmIGRpZmYgPiAxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWZmOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zdGFjay5zcGxpY2UoMSwgMCwgdGhpcyQxLmRpciA+IDAgPyAnbmV4dCcgOiAncHJldmlvdXMnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZHVyYXRpb24gPSBzcGVlZFVwKHRoaXMuYXZnV2lkdGggLyB0aGlzLnZlbG9jaXR5KVxuICAgICAgICAgICAgICAgICAgICAqICgoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciA8IDAgfHwgIXRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zbGlkZXNbdGhpcy5pbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XVxuICAgICAgICAgICAgICAgICAgICApLm9mZnNldFdpZHRoIC8gdGhpcy5hdmdXaWR0aCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXIoKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICFpc1VuZGVmaW5lZCh0aGlzLnByZXZJbmRleCkgJiYgYWRkQ2xhc3ModGhpcy5fZ2V0VHJhbnNpdGlvbmVyKCkuZ2V0SXRlbUluKCksIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93bjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlcyA9IHRoaXMuX2dldFRyYW5zaXRpb25lcih0aGlzLmluZGV4KS5nZXRBY3RpdmVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKHNsaWRlLCB0aGlzJDEuY2xzQWN0aXZlLCBpbmNsdWRlcyhhY3RpdmVzLCBzbGlkZSkpOyB9KTtcbiAgICAgICAgICAgICAgICAoIXRoaXMuc2V0cyB8fCBpbmNsdWRlcyh0aGlzLnNldHMsIHRvRmxvYXQodGhpcy5pbmRleCkpKSAmJiB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSkgeyByZXR1cm4gdG9nZ2xlQ2xhc3Moc2xpZGUsIHRoaXMkMS5jbHNBY3RpdmF0ZWQsIGluY2x1ZGVzKGFjdGl2ZXMsIHNsaWRlKSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICByZW9yZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuc2xpZGVzLCAnb3JkZXInLCAnJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maW5pdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBpbmRleCQkMSA9IHRoaXMuZGlyID4gMCAmJiB0aGlzLnNsaWRlc1t0aGlzLnByZXZJbmRleF0gPyB0aGlzLnByZXZJbmRleCA6IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSwgaSkgeyByZXR1cm4gY3NzKHNsaWRlLCAnb3JkZXInLCB0aGlzJDEuZGlyID4gMCAmJiBpIDwgaW5kZXgkJDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzJDEuZGlyIDwgMCAmJiBpID49IHRoaXMkMS5pbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSB0aGlzLnNsaWRlc1tpbmRleCQkMV07XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gdGhpcy5saXN0Lm9mZnNldFdpZHRoIC8gMiAtIG5leHQub2Zmc2V0V2lkdGggLyAyO1xuICAgICAgICAgICAgICAgIHZhciBqID0gMDtcblxuICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aCQkMSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlSW5kZXggPSB0aGlzJDEuZ2V0SW5kZXgoLS1qICsgaW5kZXgkJDEsIGluZGV4JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlID0gdGhpcyQxLnNsaWRlc1tzbGlkZUluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICBjc3Moc2xpZGUsICdvcmRlcicsIHNsaWRlSW5kZXggPiBpbmRleCQkMSA/IC0yIDogLTEpO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCQkMSAtPSBzbGlkZS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFZhbGlkSW5kZXg6IGZ1bmN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2SW5kZXggPT09IHZvaWQgMCApIHByZXZJbmRleCA9IHRoaXMucHJldkluZGV4O1xuXG5cbiAgICAgICAgICAgICAgICBpbmRleCQkMSA9IHRoaXMuZ2V0SW5kZXgoaW5kZXgkJDEsIHByZXZJbmRleCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2V0cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXgkJDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByZXY7XG5cbiAgICAgICAgICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzKHRoaXMkMS5zZXRzLCBpbmRleCQkMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCQkMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByZXYgPSBpbmRleCQkMTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgkJDEgPSB0aGlzJDEuZ2V0SW5kZXgoaW5kZXgkJDEgKyB0aGlzJDEuZGlyLCBwcmV2SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXgkJDEgIT09IHByZXYpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4JCQxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2xpZGVyUGFyYWxsYXggPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbUGFyYWxsYXhdLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHNlbEl0ZW06ICchbGknXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaXRlbTogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsSXRlbSA9IHJlZi5zZWxJdGVtO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5KHNlbEl0ZW0sICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93bicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyguNSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtaW4gaXRlbW91dCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZl9kZXRhaWwgPSByZWYuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZl9kZXRhaWwucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0gcmVmX2RldGFpbC5kdXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IHJlZl9kZXRhaWwudGltaW5nO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmX2RldGFpbC5kaXI7XG5cblxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydCh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoaXNJbih0eXBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAuNVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXIgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgICAgICAgICksIGR1cmF0aW9uLCB0aW1pbmcpLmNhdGNoKG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd0cmFuc2l0aW9uY2FuY2VsZWQgdHJhbnNpdGlvbmVuZCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtdHJhbnNsYXRlaW4gaXRlbXRyYW5zbGF0ZW91dCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZl9kZXRhaWwgPSByZWYuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZl9kZXRhaWwucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IHJlZl9kZXRhaWwuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyhnZXRDdXJyZW50KHR5cGUsIGRpciwgcGVyY2VudCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzSW4odHlwZSkge1xuICAgICAgICByZXR1cm4gZW5kc1dpdGgodHlwZSwgJ2luJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpIHtcblxuICAgICAgICBwZXJjZW50IC89IDI7XG5cbiAgICAgICAgcmV0dXJuICFpc0luKHR5cGUpXG4gICAgICAgICAgICA/IGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IHBlcmNlbnRcbiAgICAgICAgICAgICAgICA6IDEgLSBwZXJjZW50XG4gICAgICAgICAgICA6IGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IDEgLSBwZXJjZW50XG4gICAgICAgICAgICAgICAgOiBwZXJjZW50O1xuICAgIH1cblxuICAgIHZhciBBbmltYXRpb25zJDIgPSBhc3NpZ24oe30sIEFuaW1hdGlvbnMsIHtcblxuICAgICAgICBmYWRlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAwLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBzY2FsZToge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAuNSksIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxIC0gcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAuNSAqIHBlcmNlbnQpLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcHVsbDoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogMH0gXVxuICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpLCB6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCwgbmV4dCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyAxIC0gdHJhbnNsYXRlZChuZXh0KVxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKDMwICogcGVyY2VudCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC1wZXJjZW50ICogMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcHVzaDoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogLTF9IF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwKSwgekluZGV4OiAtMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAwfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCwgbmV4dCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyAxIC0gdHJhbnNsYXRlZChuZXh0KVxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKHBlcmNlbnQgKiAxMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IC0xfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCAqIHBlcmNlbnQpLCB6SW5kZXg6IC0xfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgdmFyIFNsaWRlc2hvdyQxID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBTbGlkZXNob3csIFNsaWRlclJlYWN0aXZlXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgcmF0aW86IFN0cmluZyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogQm9vbGVhbixcbiAgICAgICAgICAgIG1heEhlaWdodDogQm9vbGVhbixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICByYXRpbzogJzE2OjknLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgIG1heEhlaWdodDogZmFsc2UsXG4gICAgICAgICAgICBzZWxMaXN0OiAnLnVrLXNsaWRlc2hvdy1pdGVtcycsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXNsaWRlc2hvdy1pdGVtJyxcbiAgICAgICAgICAgIHNlbE5hdjogJy51ay1zbGlkZXNob3ctbmF2JyxcbiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMlxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnJhdGlvLnNwbGl0KCc6JykubWFwKE51bWJlcik7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWZbMV07XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSBoZWlnaHQkJDEgKiB0aGlzLiRlbC5vZmZzZXRXaWR0aCAvIHdpZHRoJCQxO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCQkMSA9IE1hdGgubWF4KHRoaXMubWluSGVpZ2h0LCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSBNYXRoLm1pbih0aGlzLm1heEhlaWdodCwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge2hlaWdodDogaGVpZ2h0JCQxfTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgaGd0ID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmxpc3QsIE1hdGguZmxvb3IoaGd0KSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgb2JqJDE7XG5cbiAgICB2YXIgU29ydGFibGUgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIEFuaW1hdGVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBncm91cDogU3RyaW5nLFxuICAgICAgICAgICAgdGhyZXNob2xkOiBOdW1iZXIsXG4gICAgICAgICAgICBjbHNJdGVtOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNQbGFjZWhvbGRlcjogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRHJhZzogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRHJhZ1N0YXRlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNCYXNlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNOb0RyYWc6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0VtcHR5OiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNDdXN0b206IFN0cmluZyxcbiAgICAgICAgICAgIGhhbmRsZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZ3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgdGhyZXNob2xkOiA1LFxuICAgICAgICAgICAgY2xzSXRlbTogJ3VrLXNvcnRhYmxlLWl0ZW0nLFxuICAgICAgICAgICAgY2xzUGxhY2Vob2xkZXI6ICd1ay1zb3J0YWJsZS1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICBjbHNEcmFnOiAndWstc29ydGFibGUtZHJhZycsXG4gICAgICAgICAgICBjbHNEcmFnU3RhdGU6ICd1ay1kcmFnJyxcbiAgICAgICAgICAgIGNsc0Jhc2U6ICd1ay1zb3J0YWJsZScsXG4gICAgICAgICAgICBjbHNOb0RyYWc6ICd1ay1zb3J0YWJsZS1ub2RyYWcnLFxuICAgICAgICAgICAgY2xzRW1wdHk6ICd1ay1zb3J0YWJsZS1lbXB0eScsXG4gICAgICAgICAgICBjbHNDdXN0b206ICcnLFxuICAgICAgICAgICAgaGFuZGxlOiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIFsnaW5pdCcsICdzdGFydCcsICdtb3ZlJywgJ2VuZCddLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgIHZhciBmbiA9IHRoaXMkMVtrZXldO1xuICAgICAgICAgICAgICAgIHRoaXMkMVtrZXldID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBnZXRQb3MkMShlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSByZWYueTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvcyA9IHt4OiB4LCB5OiB5fTtcblxuICAgICAgICAgICAgICAgICAgICBmbihlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiAoIG9iaiQxID0ge30sIG9iaiQxW3BvaW50ZXJEb3duXSA9ICdpbml0Jywgb2JqJDEgKSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRW1wdHksICF0aGlzLiRlbC5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvZmZzZXQodGhpcy5kcmFnLCB7dG9wOiB0aGlzLnBvcy55ICsgdGhpcy5vcmlnaW4udG9wLCBsZWZ0OiB0aGlzLnBvcy54ICsgdGhpcy5vcmlnaW4ubGVmdH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLmRyYWcpO1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSB0b3AgKyB0aGlzLmRyYWcub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBzY3JvbGw7XG5cbiAgICAgICAgICAgICAgICBpZiAodG9wID4gMCAmJiB0b3AgPCB0aGlzLnNjcm9sbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gdGhpcy5zY3JvbGxZIC0gNTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJvdHRvbSA8IGhlaWdodChkb2N1bWVudCkgJiYgYm90dG9tID4gaGVpZ2h0KHdpbmRvdykgKyB0aGlzLnNjcm9sbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gdGhpcy5zY3JvbGxZICsgNTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzY3JvbGwgJiYgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cuc2Nyb2xsKHdpbmRvdy5wYWdlWE9mZnNldCwgc2Nyb2xsKTsgfSwgNSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICB2YXIgYnV0dG9uID0gZS5idXR0b247XG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBlLmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRvTm9kZXModGhpcy4kZWwuY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsKTsgfSk7XG4gICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gcmVmWzBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICB8fCBpc0lucHV0KGUudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmhhbmRsZSAmJiAhd2l0aGluKHRhcmdldCwgdGhpcy5oYW5kbGUpXG4gICAgICAgICAgICAgICAgICAgIHx8IGJ1dHRvbiA+IDBcbiAgICAgICAgICAgICAgICAgICAgfHwgd2l0aGluKHRhcmdldCwgKFwiLlwiICsgKHRoaXMuY2xzTm9EcmFnKSkpXG4gICAgICAgICAgICAgICAgICAgIHx8IGRlZmF1bHRQcmV2ZW50ZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hlZCA9IFt0aGlzXTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW4gPSBhc3NpZ24oe3RhcmdldDogdGFyZ2V0LCBpbmRleDogaW5kZXgocGxhY2Vob2xkZXIpfSwgdGhpcy5wb3MpO1xuXG4gICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJNb3ZlLCB0aGlzLm1vdmUpO1xuICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kKTtcbiAgICAgICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnNjcm9sbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gYXBwZW5kKHRoaXMuJGNvbnRhaW5lciwgdGhpcy5wbGFjZWhvbGRlci5vdXRlckhUTUwucmVwbGFjZSgvXjxsaS9pLCAnPGRpdicpLnJlcGxhY2UoL2xpPiQvaSwgJ2Rpdj4nKSk7XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5kcmFnLCBhc3NpZ24oe1xuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMucGxhY2Vob2xkZXIub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5wbGFjZWhvbGRlci5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICAgICB9LCBjc3ModGhpcy5wbGFjZWhvbGRlciwgWydwYWRkaW5nTGVmdCcsICdwYWRkaW5nUmlnaHQnLCAncGFkZGluZ1RvcCcsICdwYWRkaW5nQm90dG9tJ10pKSk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLmRyYWcsICd1ay1uby1ib290JywgJycpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJhZywgdGhpcy5jbHNEcmFnLCB0aGlzLmNsc0N1c3RvbSk7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5kcmFnLmZpcnN0RWxlbWVudENoaWxkLCBoZWlnaHQodGhpcy5wbGFjZWhvbGRlci5maXJzdEVsZW1lbnRDaGlsZCkpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IHJlZi5sZWZ0O1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgIGFzc2lnbih0aGlzLm9yaWdpbiwge2xlZnQ6IGxlZnQgLSB0aGlzLnBvcy54LCB0b3A6IHRvcCAtIHRoaXMucG9zLnl9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGxhY2Vob2xkZXIsIHRoaXMuY2xzUGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLmNoaWxkcmVuLCB0aGlzLmNsc0l0ZW0pO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0YXJ0JywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubW92ZShlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1vdmU6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMucG9zLnggLSB0aGlzLm9yaWdpbi54KSA+IHRoaXMudGhyZXNob2xkIHx8IE1hdGguYWJzKHRoaXMucG9zLnkgLSB0aGlzLm9yaWdpbi55KSA+IHRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnR5cGUgPT09ICdtb3VzZW1vdmUnID8gZS50YXJnZXQgOiBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHRoaXMucG9zLnggLSBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQsIHRoaXMucG9zLnkgLSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgc29ydGFibGUgPSB0aGlzLmdldFNvcnRhYmxlKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB2YXIgbW92ZSA9IHNvcnRhYmxlICE9PSBwcmV2aW91cztcblxuICAgICAgICAgICAgICAgIGlmICghc29ydGFibGUgfHwgd2l0aGluKHRhcmdldCwgdGhpcy5wbGFjZWhvbGRlcikgfHwgbW92ZSAmJiAoIXNvcnRhYmxlLmdyb3VwIHx8IHNvcnRhYmxlLmdyb3VwICE9PSBwcmV2aW91cy5ncm91cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHNvcnRhYmxlLiRlbCA9PT0gdGFyZ2V0LnBhcmVudE5vZGUgJiYgdGFyZ2V0IHx8IHRvTm9kZXMoc29ydGFibGUuJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsZW1lbnQpOyB9KVswXTtcblxuICAgICAgICAgICAgICAgIGlmIChtb3ZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzLnJlbW92ZSh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNvcnRhYmxlLmluc2VydCh0aGlzLnBsYWNlaG9sZGVyLCB0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyh0aGlzLnRvdWNoZWQsIHNvcnRhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdWNoZWQucHVzaChzb3J0YWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzY3JvbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAhPT0gdGhpcy5zY3JvbGxZKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zLnkgKz0gc2Nyb2xsIC0gdGhpcy5zY3JvbGxZO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFkgPSBzY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBlbmQ6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIG9mZihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSk7XG4gICAgICAgICAgICAgICAgb2ZmKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kKTtcbiAgICAgICAgICAgICAgICBvZmYod2luZG93LCAnc2Nyb2xsJywgdGhpcy5zY3JvbGwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWcpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS50eXBlICE9PSAnbW91c2V1cCcgJiYgd2l0aGluKGUudGFyZ2V0LCAnYVtocmVmXScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gY2xvc2VzdChlLnRhcmdldCwgJ2FbaHJlZl0nKS5ocmVmO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHByZXZlbnRDbGljaygpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHNvcnRhYmxlID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzID09PSBzb3J0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcmlnaW4uaW5kZXggIT09IGluZGV4KHRoaXMucGxhY2Vob2xkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnbW92ZWQnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihzb3J0YWJsZS4kZWwsICdhZGRlZCcsIFtzb3J0YWJsZSwgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAncmVtb3ZlZCcsIFt0aGlzLCB0aGlzLnBsYWNlaG9sZGVyXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0b3AnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuXG4gICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMuZHJhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHZhciBjbGFzc2VzID0gdGhpcy50b3VjaGVkLm1hcChmdW5jdGlvbiAoc29ydGFibGUpIHsgcmV0dXJuICgoc29ydGFibGUuY2xzUGxhY2Vob2xkZXIpICsgXCIgXCIgKyAoc29ydGFibGUuY2xzSXRlbSkpOyB9KS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgdGhpcy50b3VjaGVkLmZvckVhY2goZnVuY3Rpb24gKHNvcnRhYmxlKSB7IHJldHVybiByZW1vdmVDbGFzcyhzb3J0YWJsZS4kZWwuY2hpbGRyZW4sIGNsYXNzZXMpOyB9KTtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpbnNlcnQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbC5jaGlsZHJlbiwgdGhpcy5jbHNJdGVtKTtcblxuICAgICAgICAgICAgICAgIHZhciBpbnNlcnQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihlbGVtZW50LCB0aGlzJDEuJGVsKSB8fCBpc1ByZWRlY2Vzc29yKGVsZW1lbnQsIHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUodGFyZ2V0LCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIodGFyZ2V0LCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHRoaXMkMS4kZWwsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZShpbnNlcnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlbGVtZW50KSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihlbGVtZW50LCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlKGVsZW1lbnQpOyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRTb3J0YWJsZTogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmICh0aGlzLiRnZXRDb21wb25lbnQoZWxlbWVudCwgJ3NvcnRhYmxlJykgfHwgdGhpcy5nZXRTb3J0YWJsZShlbGVtZW50LnBhcmVudE5vZGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaXNQcmVkZWNlc3NvcihlbGVtZW50LCB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSA9PT0gdGFyZ2V0LnBhcmVudE5vZGUgJiYgaW5kZXgoZWxlbWVudCkgPiBpbmRleCh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZhciBvYmokMjtcblxuICAgIHZhciBhY3RpdmVzID0gW107XG5cbiAgICB2YXIgVG9vbHRpcCA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBhcmdzOiAndGl0bGUnLFxuXG4gICAgICAgIG1peGluczogW0NvbnRhaW5lciwgVG9nZ2xhYmxlLCBQb3NpdGlvbl0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRlbGF5OiBOdW1iZXIsXG4gICAgICAgICAgICB0aXRsZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcG9zOiAndG9wJyxcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgIGRlbGF5OiAwLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbJ3VrLWFuaW1hdGlvbi1zY2FsZS11cCddLFxuICAgICAgICAgICAgZHVyYXRpb246IDEwMCxcbiAgICAgICAgICAgIGNsczogJ3VrLWFjdGl2ZScsXG4gICAgICAgICAgICBjbHNQb3M6ICd1ay10b29sdGlwJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGJlZm9yZUNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5faGFzVGl0bGUgPSBoYXNBdHRyKHRoaXMuJGVsLCAndGl0bGUnKTtcbiAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHt0aXRsZTogJycsICdhcmlhLWV4cGFuZGVkJzogZmFsc2V9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCB7dGl0bGU6IHRoaXMuX2hhc1RpdGxlID8gdGhpcy50aXRsZSA6IG51bGwsICdhcmlhLWV4cGFuZGVkJzogbnVsbH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3RpdmVzLCB0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYWN0aXZlcy5mb3JFYWNoKGZ1bmN0aW9uIChhY3RpdmUpIHsgcmV0dXJuIGFjdGl2ZS5oaWRlKCk7IH0pO1xuICAgICAgICAgICAgICAgIGFjdGl2ZXMucHVzaCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3VuYmluZCA9IG9uKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIXdpdGhpbihlLnRhcmdldCwgdGhpcyQxLiRlbCkgJiYgdGhpcyQxLmhpZGUoKTsgfSk7XG5cbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gYXBwZW5kKHRoaXMuY29udGFpbmVyLCAoXCI8ZGl2IGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc1BvcykgKyBcIlxcXCIgYXJpYS1oaWRkZW4+PGRpdiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNQb3MpICsgXCItaW5uZXJcXFwiPlwiICsgKHRoaXMudGl0bGUpICsgXCI8L2Rpdj48L2Rpdj5cIikpO1xuXG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25BdCh0aGlzLnRvb2x0aXAsIHRoaXMuJGVsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gdGhpcy5nZXRBeGlzKCkgPT09ICd5JyA/ICgoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkgKyBcIi1cIiArICh0aGlzLmFsaWduKSkgOiAoKHRoaXMuYWxpZ24pICsgXCItXCIgKyAoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlRWxlbWVudCh0aGlzJDEudG9vbHRpcCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmhpZGVUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Zpc2libGUodGhpcyQxLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0sIDE1MCk7XG5cbiAgICAgICAgICAgICAgICB9LCB0aGlzLmRlbGF5KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gYWN0aXZlcy5pbmRleE9mKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF+aW5kZXgkJDEgfHwgbWF0Y2hlcyh0aGlzLiRlbCwgJ2lucHV0JykgJiYgdGhpcy4kZWwgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFjdGl2ZXMuc3BsaWNlKGluZGV4JCQxLCAxKTtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lcik7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmhpZGVUaW1lcik7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMudG9vbHRpcCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCAmJiByZW1vdmUodGhpcy50b29sdGlwKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl91bmJpbmQoKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiAoIG9iaiQyID0ge30sIG9iaiQyWyhcImZvY3VzIFwiICsgcG9pbnRlckVudGVyICsgXCIgXCIgKyBwb2ludGVyRG93bildID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50eXBlICE9PSBwb2ludGVyRG93biB8fCAhaXNUb3VjaChlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmokMi5ibHVyID0gJ2hpZGUnLCBvYmokMltwb2ludGVyTGVhdmVdID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqJDIgKVxuXG4gICAgfTtcblxuICAgIHZhciBVcGxvYWQgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGFsbG93OiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNEcmFnb3ZlcjogU3RyaW5nLFxuICAgICAgICAgICAgY29uY3VycmVudDogTnVtYmVyLFxuICAgICAgICAgICAgbWF4U2l6ZTogTnVtYmVyLFxuICAgICAgICAgICAgbWV0aG9kOiBTdHJpbmcsXG4gICAgICAgICAgICBtaW1lOiBTdHJpbmcsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTWltZTogU3RyaW5nLFxuICAgICAgICAgICAgbXNnSW52YWxpZE5hbWU6IFN0cmluZyxcbiAgICAgICAgICAgIG1zZ0ludmFsaWRTaXplOiBTdHJpbmcsXG4gICAgICAgICAgICBtdWx0aXBsZTogQm9vbGVhbixcbiAgICAgICAgICAgIG5hbWU6IFN0cmluZyxcbiAgICAgICAgICAgIHBhcmFtczogT2JqZWN0LFxuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgdXJsOiBTdHJpbmcsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYWxsb3c6IGZhbHNlLFxuICAgICAgICAgICAgY2xzRHJhZ292ZXI6ICd1ay1kcmFnb3ZlcicsXG4gICAgICAgICAgICBjb25jdXJyZW50OiAxLFxuICAgICAgICAgICAgbWF4U2l6ZTogMCxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgbWltZTogZmFsc2UsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTWltZTogJ0ludmFsaWQgRmlsZSBUeXBlOiAlcycsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTmFtZTogJ0ludmFsaWQgRmlsZSBOYW1lOiAlcycsXG4gICAgICAgICAgICBtc2dJbnZhbGlkU2l6ZTogJ0ludmFsaWQgRmlsZSBTaXplOiAlcyBLaWxvYnl0ZXMgTWF4JyxcbiAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWU6ICdmaWxlc1tdJyxcbiAgICAgICAgICAgIHBhcmFtczoge30sXG4gICAgICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgICAgIHVybDogJycsXG4gICAgICAgICAgICBhYm9ydDogbm9vcCxcbiAgICAgICAgICAgIGJlZm9yZUFsbDogbm9vcCxcbiAgICAgICAgICAgIGJlZm9yZVNlbmQ6IG5vb3AsXG4gICAgICAgICAgICBjb21wbGV0ZTogbm9vcCxcbiAgICAgICAgICAgIGNvbXBsZXRlQWxsOiBub29wLFxuICAgICAgICAgICAgZXJyb3I6IG5vb3AsXG4gICAgICAgICAgICBmYWlsOiBub29wLFxuICAgICAgICAgICAgbG9hZDogbm9vcCxcbiAgICAgICAgICAgIGxvYWRFbmQ6IG5vb3AsXG4gICAgICAgICAgICBsb2FkU3RhcnQ6IG5vb3AsXG4gICAgICAgICAgICBwcm9ncmVzczogbm9vcFxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czoge1xuXG4gICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyhlLnRhcmdldCwgJ2lucHV0W3R5cGU9XCJmaWxlXCJdJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZChlLnRhcmdldC5maWxlcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3A6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRyYW5zZmVyIHx8ICF0cmFuc2Zlci5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJhZ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWQodHJhbnNmZXIuZmlsZXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZHJhZ2VudGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyYWdvdmVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNEcmFnb3Zlcik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcmFnbGVhdmU6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0RyYWdvdmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdXBsb2FkOiBmdW5jdGlvbihmaWxlcykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3VwbG9hZCcsIFtmaWxlc10pO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEubWF4U2l6ZSAmJiB0aGlzJDEubWF4U2l6ZSAqIDEwMDAgPCBmaWxlc1tpXS5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuZmFpbCh0aGlzJDEubXNnSW52YWxpZFNpemUucmVwbGFjZSgnJXMnLCB0aGlzJDEubWF4U2l6ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5hbGxvdyAmJiAhbWF0Y2godGhpcyQxLmFsbG93LCBmaWxlc1tpXS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmZhaWwodGhpcyQxLm1zZ0ludmFsaWROYW1lLnJlcGxhY2UoJyVzJywgdGhpcyQxLmFsbG93KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLm1pbWUgJiYgIW1hdGNoKHRoaXMkMS5taW1lLCBmaWxlc1tpXS50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmZhaWwodGhpcyQxLm1zZ0ludmFsaWRNaW1lLnJlcGxhY2UoJyVzJywgdGhpcyQxLm1pbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzID0gW2ZpbGVzWzBdXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZUFsbCh0aGlzLCBmaWxlcyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgY2h1bmtzID0gY2h1bmsoZmlsZXMsIHRoaXMuY29uY3VycmVudCk7XG4gICAgICAgICAgICAgICAgdmFyIHVwbG9hZCA9IGZ1bmN0aW9uIChmaWxlcykge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhJCQxID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZmlsZXMuZm9yRWFjaChmdW5jdGlvbiAoZmlsZSkgeyByZXR1cm4gZGF0YSQkMS5hcHBlbmQodGhpcyQxLm5hbWUsIGZpbGUpOyB9KTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcyQxLnBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5hcHBlbmQoa2V5LCB0aGlzJDEucGFyYW1zW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWpheCh0aGlzJDEudXJsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhJCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiB0aGlzJDEubWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiB0aGlzJDEudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uIChlbnYpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4aHIgPSBlbnYueGhyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci51cGxvYWQgJiYgb24oeGhyLnVwbG9hZCwgJ3Byb2dyZXNzJywgdGhpcyQxLnByb2dyZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2xvYWRTdGFydCcsICdsb2FkJywgJ2xvYWRFbmQnLCAnYWJvcnQnXS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiBvbih4aHIsIHR5cGUudG9Mb3dlckNhc2UoKSwgdGhpcyQxW3R5cGVdKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuYmVmb3JlU2VuZChlbnYpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeGhyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY29tcGxldGUoeGhyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaHVua3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZChjaHVua3Muc2hpZnQoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmNvbXBsZXRlQWxsKHhocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMkMS5lcnJvcihlLm1lc3NhZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdXBsb2FkKGNodW5rcy5zaGlmdCgpKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYXRjaChwYXR0ZXJuLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoKFwiXlwiICsgKHBhdHRlcm4ucmVwbGFjZSgvXFwvL2csICdcXFxcLycpLnJlcGxhY2UoL1xcKlxcKi9nLCAnKFxcXFwvW15cXFxcL10rKSonKS5yZXBsYWNlKC9cXCovZywgJ1teXFxcXC9dKycpLnJlcGxhY2UoLygoPyFcXFxcKSlcXD8vZywgJyQxLicpKSArIFwiJFwiKSwgJ2knKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2h1bmsoZmlsZXMsIHNpemUpIHtcbiAgICAgICAgdmFyIGNodW5rcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSArPSBzaXplKSB7XG4gICAgICAgICAgICB2YXIgY2h1bmsgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgY2h1bmsucHVzaChmaWxlc1tpICsgal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaHVua3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RvcChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBVSWtpdC5jb21wb25lbnQoJ2NvdW50ZG93bicsIENvdW50ZG93bik7XG4gICAgVUlraXQuY29tcG9uZW50KCdmaWx0ZXInLCBGaWx0ZXIpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnbGlnaHRib3gnLCBMaWdodGJveCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgTGlnaHRib3hQYW5lbCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdub3RpZmljYXRpb24nLCBOb3RpZmljYXRpb24pO1xuICAgIFVJa2l0LmNvbXBvbmVudCgncGFyYWxsYXgnLCBQYXJhbGxheCQxKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlcicsIFNsaWRlciQxKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlclBhcmFsbGF4JywgU2xpZGVyUGFyYWxsYXgpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVzaG93JywgU2xpZGVzaG93JDEpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVzaG93UGFyYWxsYXgnLCBTbGlkZXJQYXJhbGxheCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdzb3J0YWJsZScsIFNvcnRhYmxlKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3Rvb2x0aXAnLCBUb29sdGlwKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3VwbG9hZCcsIFVwbG9hZCk7XG5cbiAgICB7XG4gICAgICAgIGJvb3QoVUlraXQpO1xuICAgIH1cblxuICAgIHJldHVybiBVSWtpdDtcblxufSkpKTtcbiJdfQ== diff --git a/templates/main/jams/team_view.html b/templates/main/jams/team_view.html index c420f35a..0554c3d4 100644 --- a/templates/main/jams/team_view.html +++ b/templates/main/jams/team_view.html @@ -223,6 +223,7 @@ const JAM_START_DATE = "{{ day_delta(team.jam.date_start, -1).strftime("%Y-%m-%d") }}"; // the start date of the jam, in order to ignore pushes prior to start const JAM_END_DATE = "{{ day_delta(team.jam.date_end, +1).strftime("%Y-%m-%d") }}"; // the end date of the jam, in order to ignore pushes after the end const GITLAB_PROJECT_EVENTS_ENDPOINT = () => `https://gitlab.com/api/v4/projects/${encodeURIComponent(GITLAB_PROJECT_ID)}/events?action=${GITLAB_EVENT_ACTIONS.join(",")}&after=${JAM_START_DATE}&before=${JAM_END_DATE}`; + const GITLAB_ACCEPTED_ACTIONS = ["pushed", "created"]; function gitlabBranchURL(branch) { return `https://gitlab.com/${GITLAB_PROJECT_ID}/tree/${branch}` @@ -241,7 +242,7 @@ let eventCount = 0; for (let i = 0; i < events.length; i++) { let event = events[i]; - if (event["push_data"]["action"] !== "pushed") { + if (!GITLAB_ACCEPTED_ACTIONS.includes(event["push_data"]["action"])) { continue; } let commit = event["push_data"]["commit_to"]; |