-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path1184.8a7d01b6.iframe.bundle.js
2 lines (2 loc) · 307 KB
/
1184.8a7d01b6.iframe.bundle.js
1
2
"use strict";(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[1184],{"./node_modules/ccount/index.js":module=>{module.exports=function ccount(value,character){var index,count=0;if(value=String(value),"string"!=typeof character||1!==character.length)throw new Error("Expected character");index=value.indexOf(character);for(;-1!==index;)count++,index=value.indexOf(character,index+1);return count}},"./node_modules/collapse-white-space/index.js":module=>{module.exports=function collapse(value){return String(value).replace(/\s+/g," ")}},"./node_modules/is-alphabetical/index.js":module=>{module.exports=function alphabetical(character){var code="string"==typeof character?character.charCodeAt(0):character;return code>=97&&code<=122||code>=65&&code<=90}},"./node_modules/is-alphanumerical/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{var alphabetical=__webpack_require__("./node_modules/is-alphabetical/index.js"),decimal=__webpack_require__("./node_modules/is-decimal/index.js");module.exports=function alphanumerical(character){return alphabetical(character)||decimal(character)}},"./node_modules/is-decimal/index.js":module=>{module.exports=function decimal(character){var code="string"==typeof character?character.charCodeAt(0):character;return code>=48&&code<=57}},"./node_modules/is-hexadecimal/index.js":module=>{module.exports=function hexadecimal(character){var code="string"==typeof character?character.charCodeAt(0):character;return code>=97&&code<=102||code>=65&&code<=70||code>=48&&code<=57}},"./node_modules/is-whitespace-character/index.js":module=>{module.exports=function whitespace(character){return re.test("number"==typeof character?fromCode(character):character.charAt(0))};var fromCode=String.fromCharCode,re=/\s/},"./node_modules/is-word-character/index.js":module=>{module.exports=function wordCharacter(character){return re.test("number"==typeof character?fromCode(character):character.charAt(0))};var fromCode=String.fromCharCode,re=/\w/},"./node_modules/markdown-escapes/index.js":module=>{module.exports=escapes;var defaults=["\\","`","*","{","}","[","]","(",")","#","+","-",".","!","_",">"],gfm=defaults.concat(["~","|"]),commonmark=gfm.concat(["\n",'"',"$","%","&","'",",","/",":",";","<","=","?","@","^"]);function escapes(options){var settings=options||{};return settings.commonmark?commonmark:settings.gfm?gfm:defaults}escapes.default=defaults,escapes.gfm=gfm,escapes.commonmark=commonmark},"./node_modules/parse-entities/decode-entity.browser.js":module=>{var el;module.exports=function decodeEntity(characters){var char,entity="&"+characters+";";if((el=el||document.createElement("i")).innerHTML=entity,59===(char=el.textContent).charCodeAt(char.length-1)&&"semi"!==characters)return!1;return char!==entity&&char}},"./node_modules/parse-entities/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{var legacy=__webpack_require__("./node_modules/character-entities-legacy/index.json"),invalid=__webpack_require__("./node_modules/character-reference-invalid/index.json"),decimal=__webpack_require__("./node_modules/is-decimal/index.js"),hexadecimal=__webpack_require__("./node_modules/is-hexadecimal/index.js"),alphanumerical=__webpack_require__("./node_modules/is-alphanumerical/index.js"),decodeEntity=__webpack_require__("./node_modules/parse-entities/decode-entity.browser.js");module.exports=function parseEntities(value,options){var option,key,settings={};options||(options={});for(key in defaults)option=options[key],settings[key]=null==option?defaults[key]:option;(settings.position.indent||settings.position.start)&&(settings.indent=settings.position.indent||[],settings.position=settings.position.start);return function parse(value,settings){var entityCharacters,namedEntity,terminated,characters,character,reference,following,warning,reason,output,entity,begin,start,type,test,prev,next,diff,end,additional=settings.additional,nonTerminated=settings.nonTerminated,handleText=settings.text,handleReference=settings.reference,handleWarning=settings.warning,textContext=settings.textContext,referenceContext=settings.referenceContext,warningContext=settings.warningContext,pos=settings.position,indent=settings.indent||[],length=value.length,index=0,lines=-1,column=pos.column||1,line=pos.line||1,queue="",result=[];"string"==typeof additional&&(additional=additional.charCodeAt(0));prev=now(),warning=handleWarning?parseError:noop,index--,length++;for(;++index<length;)if(character===lineFeed&&(column=indent[lines]||1),(character=value.charCodeAt(index))===ampersand){if((following=value.charCodeAt(index+1))===tab||following===lineFeed||following===formFeed||following===space||following===ampersand||following===lessThan||following!=following||additional&&following===additional){queue+=fromCharCode(character),column++;continue}for(begin=start=index+1,end=start,following===numberSign?(end=++begin,(following=value.charCodeAt(end))===uppercaseX||following===lowercaseX?(type=hexa,end=++begin):type=deci):type=name,entityCharacters="",entity="",characters="",test=tests[type],end--;++end<length&&test(following=value.charCodeAt(end));)characters+=fromCharCode(following),type===name&&own.call(legacy,characters)&&(entityCharacters=characters,entity=legacy[characters]);(terminated=value.charCodeAt(end)===semicolon)&&(end++,(namedEntity=type===name&&decodeEntity(characters))&&(entityCharacters=characters,entity=namedEntity)),diff=1+end-start,(terminated||nonTerminated)&&(characters?type===name?(terminated&&!entity?warning(namedUnknown,1):(entityCharacters!==characters&&(diff=1+(end=begin+entityCharacters.length)-begin,terminated=!1),terminated||(reason=entityCharacters?namedNotTerminated:namedEmpty,settings.attribute?(following=value.charCodeAt(end))===equalsTo?(warning(reason,diff),entity=null):alphanumerical(following)?entity=null:warning(reason,diff):warning(reason,diff))),reference=entity):(terminated||warning(numericNotTerminated,diff),prohibited(reference=parseInt(characters,bases[type]))?(warning(numericProhibited,diff),reference=fromCharCode(replacementCharacter)):reference in invalid?(warning(numericDisallowed,diff),reference=invalid[reference]):(output="",disallowed(reference)&&warning(numericDisallowed,diff),reference>65535&&(output+=fromCharCode((reference-=65536)>>>10|55296),reference=56320|1023&reference),reference=output+fromCharCode(reference))):type!==name&&warning(numericEmpty,diff)),reference?(flush(),prev=now(),index=end-1,column+=end-start+1,result.push(reference),(next=now()).offset++,handleReference&&handleReference.call(referenceContext,reference,{start:prev,end:next},value.slice(start-1,end)),prev=next):(characters=value.slice(start-1,end),queue+=characters,column+=characters.length,index=end-1)}else 10===character&&(line++,lines++,column=0),character==character?(queue+=fromCharCode(character),column++):flush();return result.join("");function now(){return{line,column,offset:index+(pos.offset||0)}}function parseError(code,offset){var position=now();position.column+=offset,position.offset+=offset,handleWarning.call(warningContext,messages[code],position,code)}function flush(){queue&&(result.push(queue),handleText&&handleText.call(textContext,queue,{start:prev,end:now()}),queue="")}}(value,settings)};var own={}.hasOwnProperty,fromCharCode=String.fromCharCode,noop=Function.prototype,defaults={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},tab=9,lineFeed=10,formFeed=12,space=32,ampersand=38,semicolon=59,lessThan=60,equalsTo=61,numberSign=35,uppercaseX=88,lowercaseX=120,replacementCharacter=65533,name="named",hexa="hexadecimal",deci="decimal",bases={};bases[hexa]=16,bases[deci]=10;var tests={};tests[name]=alphanumerical,tests[deci]=decimal,tests[hexa]=hexadecimal;var namedNotTerminated=1,numericNotTerminated=2,namedEmpty=3,numericEmpty=4,namedUnknown=5,numericDisallowed=6,numericProhibited=7,messages={};function prohibited(code){return code>=55296&&code<=57343||code>1114111}function disallowed(code){return code>=1&&code<=8||11===code||code>=13&&code<=31||code>=127&&code<=159||code>=64976&&code<=65007||!(65535&~code)||65534==(65535&code)}messages[namedNotTerminated]="Named character references must be terminated by a semicolon",messages[numericNotTerminated]="Numeric character references must be terminated by a semicolon",messages[namedEmpty]="Named character references cannot be empty",messages[numericEmpty]="Numeric character references cannot be empty",messages[namedUnknown]="Named character references must be known",messages[numericDisallowed]="Numeric character references cannot be disallowed",messages[numericProhibited]="Numeric character references cannot be outside the permissible Unicode range"},"./node_modules/redux-thunk/lib/index.js":(__unused_webpack_module,exports)=>{function createThunkMiddleware(extraArgument){return function(_ref){var dispatch=_ref.dispatch,getState=_ref.getState;return function(next){return function(action){return"function"==typeof action?action(dispatch,getState,extraArgument):next(action)}}}}exports.__esModule=!0;var thunk=createThunkMiddleware();thunk.withExtraArgument=createThunkMiddleware,exports.default=thunk},"./node_modules/remark-parse/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{var unherit=__webpack_require__("./node_modules/unherit/index.js"),xtend=__webpack_require__("./node_modules/xtend/immutable.js"),Parser=__webpack_require__("./node_modules/remark-parse/lib/parser.js");function parse(options){var settings=this.data("settings"),Local=unherit(Parser);Local.prototype.options=xtend(Local.prototype.options,settings,options),this.Parser=Local}module.exports=parse,parse.Parser=Parser},"./node_modules/remark-parse/lib/block-elements.js":module=>{module.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","pre","section","source","title","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},"./node_modules/remark-parse/lib/decode.js":(module,__unused_webpack_exports,__webpack_require__)=>{var xtend=__webpack_require__("./node_modules/xtend/immutable.js"),entities=__webpack_require__("./node_modules/parse-entities/index.js");module.exports=function factory(ctx){return decoder.raw=function decodeRaw(value,position,options){return entities(value,xtend(options,{position:normalize(position),warning:handleWarning}))},decoder;function normalize(position){for(var offsets=ctx.offset,line=position.line,result=[];++line&&line in offsets;)result.push((offsets[line]||0)+1);return{start:position,indent:result}}function decoder(value,position,handler){entities(value,{position:normalize(position),warning:handleWarning,text:handler,reference:handler,textContext:ctx,referenceContext:ctx})}function handleWarning(reason,position,code){3!==code&&ctx.file.message(reason,position)}}},"./node_modules/remark-parse/lib/defaults.js":(module,__unused_webpack_exports,__webpack_require__)=>{module.exports={position:!0,gfm:!0,commonmark:!1,pedantic:!1,blocks:__webpack_require__("./node_modules/remark-parse/lib/block-elements.js")}},"./node_modules/remark-parse/lib/locate/break.js":module=>{module.exports=function locate(value,fromIndex){var index=value.indexOf("\n",fromIndex);for(;index>fromIndex&&" "===value.charAt(index-1);)index--;return index}},"./node_modules/remark-parse/lib/locate/code-inline.js":module=>{module.exports=function locate(value,fromIndex){return value.indexOf("`",fromIndex)}},"./node_modules/remark-parse/lib/locate/delete.js":module=>{module.exports=function locate(value,fromIndex){return value.indexOf("~~",fromIndex)}},"./node_modules/remark-parse/lib/locate/email.js":(module,__unused_webpack_exports,__webpack_require__)=>{var decimal=__webpack_require__("./node_modules/is-decimal/index.js"),alphabetical=__webpack_require__("./node_modules/is-alphabetical/index.js"),plusSign=43,dash=45,dot=46,underscore=95;function isGfmAtext(code){return decimal(code)||alphabetical(code)||code===plusSign||code===dash||code===dot||code===underscore}module.exports=function locate(value,fromIndex){var at,position;if(!this.options.gfm)return-1;if(-1===(at=value.indexOf("@",fromIndex)))return-1;if((position=at)===fromIndex||!isGfmAtext(value.charCodeAt(position-1)))return locate.call(this,value,at+1);for(;position>fromIndex&&isGfmAtext(value.charCodeAt(position-1));)position--;return position}},"./node_modules/remark-parse/lib/locate/emphasis.js":module=>{module.exports=function locate(value,fromIndex){var asterisk=value.indexOf("*",fromIndex),underscore=value.indexOf("_",fromIndex);if(-1===underscore)return asterisk;if(-1===asterisk)return underscore;return underscore<asterisk?underscore:asterisk}},"./node_modules/remark-parse/lib/locate/escape.js":module=>{module.exports=function locate(value,fromIndex){return value.indexOf("\\",fromIndex)}},"./node_modules/remark-parse/lib/locate/link.js":module=>{module.exports=function locate(value,fromIndex){var link=value.indexOf("[",fromIndex),image=value.indexOf("![",fromIndex);if(-1===image)return link;return link<image?link:image}},"./node_modules/remark-parse/lib/locate/strong.js":module=>{module.exports=function locate(value,fromIndex){var asterisk=value.indexOf("**",fromIndex),underscore=value.indexOf("__",fromIndex);if(-1===underscore)return asterisk;if(-1===asterisk)return underscore;return underscore<asterisk?underscore:asterisk}},"./node_modules/remark-parse/lib/locate/tag.js":module=>{module.exports=function locate(value,fromIndex){return value.indexOf("<",fromIndex)}},"./node_modules/remark-parse/lib/locate/url.js":module=>{module.exports=function locate(value,fromIndex){var index,length,position,min=-1;if(!this.options.gfm)return min;length=values.length,index=-1;for(;++index<length;)-1!==(position=value.indexOf(values[index],fromIndex))&&(-1===min||position<min)&&(min=position);return min};var values=["www.","http://","https://"]},"./node_modules/remark-parse/lib/parse.js":(module,__unused_webpack_exports,__webpack_require__)=>{var xtend=__webpack_require__("./node_modules/xtend/immutable.js"),removePosition=__webpack_require__("./node_modules/remark-parse/node_modules/unist-util-remove-position/index.js");module.exports=function parse(){var node,value=String(this.file),start={line:1,column:1,offset:0},content=xtend(start);65279===(value=value.replace(lineBreaksExpression,lineFeed)).charCodeAt(0)&&(value=value.slice(1),content.column++,content.offset++);node={type:"root",children:this.tokenizeBlock(value,content),position:{start,end:this.eof||xtend(start)}},this.options.position||removePosition(node,!0);return node};var lineFeed="\n",lineBreaksExpression=/\r\n|\r/g},"./node_modules/remark-parse/lib/parser.js":(module,__unused_webpack_exports,__webpack_require__)=>{var xtend=__webpack_require__("./node_modules/xtend/immutable.js"),toggle=__webpack_require__("./node_modules/state-toggle/index.js"),vfileLocation=__webpack_require__("./node_modules/vfile-location/index.js"),unescape=__webpack_require__("./node_modules/remark-parse/lib/unescape.js"),decode=__webpack_require__("./node_modules/remark-parse/lib/decode.js"),tokenizer=__webpack_require__("./node_modules/remark-parse/lib/tokenizer.js");function Parser(doc,file){this.file=file,this.offset={},this.options=xtend(this.options),this.setOptions({}),this.inList=!1,this.inBlock=!1,this.inLink=!1,this.atStart=!0,this.toOffset=vfileLocation(file).toOffset,this.unescape=unescape(this,"escape"),this.decode=decode(this)}module.exports=Parser;var proto=Parser.prototype;function keys(value){var key,result=[];for(key in value)result.push(key);return result}proto.setOptions=__webpack_require__("./node_modules/remark-parse/lib/set-options.js"),proto.parse=__webpack_require__("./node_modules/remark-parse/lib/parse.js"),proto.options=__webpack_require__("./node_modules/remark-parse/lib/defaults.js"),proto.exitStart=toggle("atStart",!0),proto.enterList=toggle("inList",!1),proto.enterLink=toggle("inLink",!1),proto.enterBlock=toggle("inBlock",!1),proto.interruptParagraph=[["thematicBreak"],["list"],["atxHeading"],["fencedCode"],["blockquote"],["html"],["setextHeading",{commonmark:!1}],["definition",{commonmark:!1}]],proto.interruptList=[["atxHeading",{pedantic:!1}],["fencedCode",{pedantic:!1}],["thematicBreak",{pedantic:!1}],["definition",{commonmark:!1}]],proto.interruptBlockquote=[["indentedCode",{commonmark:!0}],["fencedCode",{commonmark:!0}],["atxHeading",{commonmark:!0}],["setextHeading",{commonmark:!0}],["thematicBreak",{commonmark:!0}],["html",{commonmark:!0}],["list",{commonmark:!0}],["definition",{commonmark:!1}]],proto.blockTokenizers={blankLine:__webpack_require__("./node_modules/remark-parse/lib/tokenize/blank-line.js"),indentedCode:__webpack_require__("./node_modules/remark-parse/lib/tokenize/code-indented.js"),fencedCode:__webpack_require__("./node_modules/remark-parse/lib/tokenize/code-fenced.js"),blockquote:__webpack_require__("./node_modules/remark-parse/lib/tokenize/blockquote.js"),atxHeading:__webpack_require__("./node_modules/remark-parse/lib/tokenize/heading-atx.js"),thematicBreak:__webpack_require__("./node_modules/remark-parse/lib/tokenize/thematic-break.js"),list:__webpack_require__("./node_modules/remark-parse/lib/tokenize/list.js"),setextHeading:__webpack_require__("./node_modules/remark-parse/lib/tokenize/heading-setext.js"),html:__webpack_require__("./node_modules/remark-parse/lib/tokenize/html-block.js"),definition:__webpack_require__("./node_modules/remark-parse/lib/tokenize/definition.js"),table:__webpack_require__("./node_modules/remark-parse/lib/tokenize/table.js"),paragraph:__webpack_require__("./node_modules/remark-parse/lib/tokenize/paragraph.js")},proto.inlineTokenizers={escape:__webpack_require__("./node_modules/remark-parse/lib/tokenize/escape.js"),autoLink:__webpack_require__("./node_modules/remark-parse/lib/tokenize/auto-link.js"),url:__webpack_require__("./node_modules/remark-parse/lib/tokenize/url.js"),email:__webpack_require__("./node_modules/remark-parse/lib/tokenize/email.js"),html:__webpack_require__("./node_modules/remark-parse/lib/tokenize/html-inline.js"),link:__webpack_require__("./node_modules/remark-parse/lib/tokenize/link.js"),reference:__webpack_require__("./node_modules/remark-parse/lib/tokenize/reference.js"),strong:__webpack_require__("./node_modules/remark-parse/lib/tokenize/strong.js"),emphasis:__webpack_require__("./node_modules/remark-parse/lib/tokenize/emphasis.js"),deletion:__webpack_require__("./node_modules/remark-parse/lib/tokenize/delete.js"),code:__webpack_require__("./node_modules/remark-parse/lib/tokenize/code-inline.js"),break:__webpack_require__("./node_modules/remark-parse/lib/tokenize/break.js"),text:__webpack_require__("./node_modules/remark-parse/lib/tokenize/text.js")},proto.blockMethods=keys(proto.blockTokenizers),proto.inlineMethods=keys(proto.inlineTokenizers),proto.tokenizeBlock=tokenizer("block"),proto.tokenizeInline=tokenizer("inline"),proto.tokenizeFactory=tokenizer},"./node_modules/remark-parse/lib/set-options.js":(module,__unused_webpack_exports,__webpack_require__)=>{var xtend=__webpack_require__("./node_modules/xtend/immutable.js"),escapes=__webpack_require__("./node_modules/markdown-escapes/index.js"),defaults=__webpack_require__("./node_modules/remark-parse/lib/defaults.js");module.exports=function setOptions(options){var key,value,current=this.options;if(null==options)options={};else{if("object"!=typeof options)throw new Error("Invalid value `"+options+"` for setting `options`");options=xtend(options)}for(key in defaults){if(null==(value=options[key])&&(value=current[key]),"blocks"!==key&&"boolean"!=typeof value||"blocks"===key&&"object"!=typeof value)throw new Error("Invalid value `"+value+"` for setting `options."+key+"`");options[key]=value}return this.options=options,this.escape=escapes(options),this}},"./node_modules/remark-parse/lib/tokenize/auto-link.js":(module,__unused_webpack_exports,__webpack_require__)=>{var whitespace=__webpack_require__("./node_modules/is-whitespace-character/index.js"),decode=__webpack_require__("./node_modules/parse-entities/index.js"),locate=__webpack_require__("./node_modules/remark-parse/lib/locate/tag.js");module.exports=autoLink,autoLink.locator=locate,autoLink.notInLink=!0;var lessThan="<",greaterThan=">",atSign="@",slash="/",mailto="mailto:",mailtoLength=mailto.length;function autoLink(eat,value,silent){var character,now,content,tokenizers,exit,subvalue="",length=value.length,index=0,queue="",hasAtCharacter=!1,link="";if(value.charAt(0)===lessThan){for(index++,subvalue=lessThan;index<length&&(character=value.charAt(index),!(whitespace(character)||character===greaterThan||character===atSign||":"===character&&value.charAt(index+1)===slash));)queue+=character,index++;if(queue){if(link+=queue,queue="",link+=character=value.charAt(index),index++,character===atSign)hasAtCharacter=!0;else{if(":"!==character||value.charAt(index+1)!==slash)return;link+=slash,index++}for(;index<length&&(character=value.charAt(index),!whitespace(character)&&character!==greaterThan);)queue+=character,index++;if(character=value.charAt(index),queue&&character===greaterThan)return!!silent||(content=link+=queue,subvalue+=link+character,(now=eat.now()).column++,now.offset++,hasAtCharacter&&(link.slice(0,mailtoLength).toLowerCase()===mailto?(content=content.slice(mailtoLength),now.column+=mailtoLength,now.offset+=mailtoLength):link=mailto+link),tokenizers=this.inlineTokenizers,this.inlineTokenizers={text:tokenizers.text},exit=this.enterLink(),content=this.tokenizeInline(content,now),this.inlineTokenizers=tokenizers,exit(),eat(subvalue)({type:"link",title:null,url:decode(link,{nonTerminated:!1}),children:content}))}}}},"./node_modules/remark-parse/lib/tokenize/blank-line.js":module=>{var reBlankLine=/^[ \t]*(\n|$)/;module.exports=function blankLine(eat,value,silent){var match,subvalue="",index=0,length=value.length;for(;index<length&&null!=(match=reBlankLine.exec(value.slice(index)));)index+=match[0].length,subvalue+=match[0];if(""===subvalue)return;if(silent)return!0;eat(subvalue)}},"./node_modules/remark-parse/lib/tokenize/blockquote.js":(module,__unused_webpack_exports,__webpack_require__)=>{var trim=__webpack_require__("./node_modules/trim/index.js"),interrupt=__webpack_require__("./node_modules/remark-parse/lib/util/interrupt.js");module.exports=function blockquote(eat,value,silent){var add,character,rest,nextIndex,content,line,startIndex,prefixed,exit,offsets=this.offset,tokenizers=this.blockTokenizers,interruptors=this.interruptBlockquote,now=eat.now(),currentLine=now.line,length=value.length,values=[],contents=[],indents=[],index=0;for(;index<length&&((character=value.charAt(index))===space||character===tab);)index++;if(value.charAt(index)!==greaterThan)return;if(silent)return!0;index=0;for(;index<length;){for(startIndex=index,prefixed=!1,-1===(nextIndex=value.indexOf(lineFeed,index))&&(nextIndex=length);index<length&&((character=value.charAt(index))===space||character===tab);)index++;if(value.charAt(index)===greaterThan?(index++,prefixed=!0,value.charAt(index)===space&&index++):index=startIndex,content=value.slice(index,nextIndex),!prefixed&&!trim(content)){index=startIndex;break}if(!prefixed&&(rest=value.slice(index),interrupt(interruptors,tokenizers,this,[eat,rest,!0])))break;line=startIndex===index?content:value.slice(startIndex,nextIndex),indents.push(index-startIndex),values.push(line),contents.push(content),index=nextIndex+1}index=-1,length=indents.length,add=eat(values.join(lineFeed));for(;++index<length;)offsets[currentLine]=(offsets[currentLine]||0)+indents[index],currentLine++;return exit=this.enterBlock(),contents=this.tokenizeBlock(contents.join(lineFeed),now),exit(),add({type:"blockquote",children:contents})};var lineFeed="\n",tab="\t",space=" ",greaterThan=">"},"./node_modules/remark-parse/lib/tokenize/break.js":(module,__unused_webpack_exports,__webpack_require__)=>{var locate=__webpack_require__("./node_modules/remark-parse/lib/locate/break.js");module.exports=hardBreak,hardBreak.locator=locate;var space=" ",lineFeed="\n",minBreakLength=2;function hardBreak(eat,value,silent){for(var character,length=value.length,index=-1,queue="";++index<length;){if((character=value.charAt(index))===lineFeed){if(index<minBreakLength)return;return!!silent||eat(queue+=character)({type:"break"})}if(character!==space)return;queue+=character}}},"./node_modules/remark-parse/lib/tokenize/code-fenced.js":module=>{module.exports=function fencedCode(eat,value,silent){var fenceCount,marker,character,flag,lang,meta,queue,content,exdentedContent,closing,exdentedClosing,indent,now,gfm=this.options.gfm,length=value.length+1,index=0,subvalue="";if(!gfm)return;for(;index<length&&((character=value.charAt(index))===space||character===tab);)subvalue+=character,index++;if(indent=index,(character=value.charAt(index))!==tilde&&character!==graveAccent)return;index++,marker=character,fenceCount=1,subvalue+=character;for(;index<length&&(character=value.charAt(index))===marker;)subvalue+=character,fenceCount++,index++;if(fenceCount<minFenceCount)return;for(;index<length&&((character=value.charAt(index))===space||character===tab);)subvalue+=character,index++;flag="",queue="";for(;index<length&&(character=value.charAt(index))!==lineFeed&&(marker!==graveAccent||character!==marker);)character===space||character===tab?queue+=character:(flag+=queue+character,queue=""),index++;if((character=value.charAt(index))&&character!==lineFeed)return;if(silent)return!0;(now=eat.now()).column+=subvalue.length,now.offset+=subvalue.length,subvalue+=flag,flag=this.decode.raw(this.unescape(flag),now),queue&&(subvalue+=queue);queue="",closing="",exdentedClosing="",content="",exdentedContent="";var skip=!0;for(;index<length;)if(content+=closing,exdentedContent+=exdentedClosing,closing="",exdentedClosing="",(character=value.charAt(index))===lineFeed){for(skip?(subvalue+=character,skip=!1):(closing+=character,exdentedClosing+=character),queue="",index++;index<length&&(character=value.charAt(index))===space;)queue+=character,index++;if(closing+=queue,exdentedClosing+=queue.slice(indent),!(queue.length>=tabSize)){for(queue="";index<length&&(character=value.charAt(index))===marker;)queue+=character,index++;if(closing+=queue,exdentedClosing+=queue,!(queue.length<fenceCount)){for(queue="";index<length&&((character=value.charAt(index))===space||character===tab);)closing+=character,exdentedClosing+=character,index++;if(!character||character===lineFeed)break}}}else content+=character,exdentedClosing+=character,index++;subvalue+=content+closing,index=-1,length=flag.length;for(;++index<length;)if((character=flag.charAt(index))===space||character===tab)lang||(lang=flag.slice(0,index));else if(lang){meta=flag.slice(index);break}return eat(subvalue)({type:"code",lang:lang||flag||null,meta:meta||null,value:exdentedContent})};var lineFeed="\n",tab="\t",space=" ",tilde="~",graveAccent="`",minFenceCount=3,tabSize=4},"./node_modules/remark-parse/lib/tokenize/code-indented.js":(module,__unused_webpack_exports,__webpack_require__)=>{var repeat=__webpack_require__("./node_modules/repeat-string/index.js"),trim=__webpack_require__("./node_modules/trim-trailing-lines/index.js");module.exports=function indentedCode(eat,value,silent){var character,blankQueue,indent,index=-1,length=value.length,subvalue="",content="",subvalueQueue="",contentQueue="";for(;++index<length;)if(character=value.charAt(index),indent)if(indent=!1,subvalue+=subvalueQueue,content+=contentQueue,subvalueQueue="",contentQueue="",character===lineFeed)subvalueQueue=character,contentQueue=character;else for(subvalue+=character,content+=character;++index<length;){if(!(character=value.charAt(index))||character===lineFeed){contentQueue=character,subvalueQueue=character;break}subvalue+=character,content+=character}else if(character===space&&value.charAt(index+1)===character&&value.charAt(index+2)===character&&value.charAt(index+3)===character)subvalueQueue+=codeIndent,index+=3,indent=!0;else if(character===tab)subvalueQueue+=character,indent=!0;else{for(blankQueue="";character===tab||character===space;)blankQueue+=character,character=value.charAt(++index);if(character!==lineFeed)break;subvalueQueue+=blankQueue+character,contentQueue+=character}if(content)return!!silent||eat(subvalue)({type:"code",lang:null,meta:null,value:trim(content)})};var lineFeed="\n",tab="\t",space=" ",codeIndent=repeat(space,4)},"./node_modules/remark-parse/lib/tokenize/code-inline.js":(module,__unused_webpack_exports,__webpack_require__)=>{var locate=__webpack_require__("./node_modules/remark-parse/lib/locate/code-inline.js");module.exports=inlineCode,inlineCode.locator=locate;var lineFeed=10,space=32,graveAccent=96;function inlineCode(eat,value,silent){for(var openingFenceEnd,closingFenceStart,closingFenceEnd,code,next,found,length=value.length,index=0;index<length&&value.charCodeAt(index)===graveAccent;)index++;if(0!==index&&index!==length){for(openingFenceEnd=index,next=value.charCodeAt(index);index<length;){if(code=next,next=value.charCodeAt(index+1),code===graveAccent){if(void 0===closingFenceStart&&(closingFenceStart=index),closingFenceEnd=index+1,next!==graveAccent&&closingFenceEnd-closingFenceStart===openingFenceEnd){found=!0;break}}else void 0!==closingFenceStart&&(closingFenceStart=void 0,closingFenceEnd=void 0);index++}if(found){if(silent)return!0;if(index=openingFenceEnd,length=closingFenceStart,code=value.charCodeAt(index),next=value.charCodeAt(length-1),found=!1,length-index>2&&(code===space||code===lineFeed)&&(next===space||next===lineFeed)){for(index++,length--;index<length;){if((code=value.charCodeAt(index))!==space&&code!==lineFeed){found=!0;break}index++}!0===found&&(openingFenceEnd++,closingFenceStart--)}return eat(value.slice(0,closingFenceEnd))({type:"inlineCode",value:value.slice(openingFenceEnd,closingFenceStart)})}}}},"./node_modules/remark-parse/lib/tokenize/definition.js":(module,__unused_webpack_exports,__webpack_require__)=>{var whitespace=__webpack_require__("./node_modules/is-whitespace-character/index.js"),normalize=__webpack_require__("./node_modules/remark-parse/lib/util/normalize.js");module.exports=function definition(eat,value,silent){var beforeURL,beforeTitle,queue,character,test,identifier,url,title,commonmark=this.options.commonmark,index=0,length=value.length,subvalue="";for(;index<length&&((character=value.charAt(index))===space||character===tab);)subvalue+=character,index++;if((character=value.charAt(index))!==leftSquareBracket)return;index++,subvalue+=character,queue="";for(;index<length&&(character=value.charAt(index))!==rightSquareBracket;)character===backslash&&(queue+=character,index++,character=value.charAt(index)),queue+=character,index++;if(!queue||value.charAt(index)!==rightSquareBracket||value.charAt(index+1)!==colon)return;identifier=queue,index=(subvalue+=queue+rightSquareBracket+colon).length,queue="";for(;index<length&&((character=value.charAt(index))===tab||character===space||character===lineFeed);)subvalue+=character,index++;if(character=value.charAt(index),queue="",beforeURL=subvalue,character===lessThan){for(index++;index<length&&isEnclosedURLCharacter(character=value.charAt(index));)queue+=character,index++;if((character=value.charAt(index))===isEnclosedURLCharacter.delimiter)subvalue+=lessThan+queue+character,index++;else{if(commonmark)return;index-=queue.length+1,queue=""}}if(!queue){for(;index<length&&isUnclosedURLCharacter(character=value.charAt(index));)queue+=character,index++;subvalue+=queue}if(!queue)return;url=queue,queue="";for(;index<length&&((character=value.charAt(index))===tab||character===space||character===lineFeed);)queue+=character,index++;character=value.charAt(index),test=null,character===quotationMark?test=quotationMark:character===apostrophe?test=apostrophe:character===leftParenthesis&&(test=rightParenthesis);if(test){if(!queue)return;for(index=(subvalue+=queue+character).length,queue="";index<length&&(character=value.charAt(index))!==test;){if(character===lineFeed){if(index++,(character=value.charAt(index))===lineFeed||character===test)return;queue+=lineFeed}queue+=character,index++}if((character=value.charAt(index))!==test)return;beforeTitle=subvalue,subvalue+=queue+character,index++,title=queue,queue=""}else queue="",index=subvalue.length;for(;index<length&&((character=value.charAt(index))===tab||character===space);)subvalue+=character,index++;if(!(character=value.charAt(index))||character===lineFeed)return!!silent||(beforeURL=eat(beforeURL).test().end,url=this.decode.raw(this.unescape(url),beforeURL,{nonTerminated:!1}),title&&(beforeTitle=eat(beforeTitle).test().end,title=this.decode.raw(this.unescape(title),beforeTitle)),eat(subvalue)({type:"definition",identifier:normalize(identifier),label:identifier,title:title||null,url}))};var quotationMark='"',apostrophe="'",backslash="\\",lineFeed="\n",tab="\t",space=" ",leftSquareBracket="[",rightSquareBracket="]",leftParenthesis="(",rightParenthesis=")",colon=":",lessThan="<",greaterThan=">";function isEnclosedURLCharacter(character){return character!==greaterThan&&character!==leftSquareBracket&&character!==rightSquareBracket}function isUnclosedURLCharacter(character){return character!==leftSquareBracket&&character!==rightSquareBracket&&!whitespace(character)}isEnclosedURLCharacter.delimiter=greaterThan},"./node_modules/remark-parse/lib/tokenize/delete.js":(module,__unused_webpack_exports,__webpack_require__)=>{var whitespace=__webpack_require__("./node_modules/is-whitespace-character/index.js"),locate=__webpack_require__("./node_modules/remark-parse/lib/locate/delete.js");module.exports=strikethrough,strikethrough.locator=locate;var tilde="~",fence="~~";function strikethrough(eat,value,silent){var index,length,now,character="",previous="",preceding="",subvalue="";if(this.options.gfm&&value.charAt(0)===tilde&&value.charAt(1)===tilde&&!whitespace(value.charAt(2)))for(index=1,length=value.length,(now=eat.now()).column+=2,now.offset+=2;++index<length;){if(!((character=value.charAt(index))!==tilde||previous!==tilde||preceding&&whitespace(preceding)))return!!silent||eat(fence+subvalue+fence)({type:"delete",children:this.tokenizeInline(subvalue,now)});subvalue+=previous,preceding=previous,previous=character}}},"./node_modules/remark-parse/lib/tokenize/email.js":(module,__unused_webpack_exports,__webpack_require__)=>{var decode=__webpack_require__("./node_modules/parse-entities/index.js"),decimal=__webpack_require__("./node_modules/is-decimal/index.js"),alphabetical=__webpack_require__("./node_modules/is-alphabetical/index.js"),locate=__webpack_require__("./node_modules/remark-parse/lib/locate/email.js");module.exports=email,email.locator=locate,email.notInLink=!0;var plusSign=43,dash=45,dot=46,atSign=64,underscore=95;function email(eat,value,silent){var code,content,children,exit,gfm=this.options.gfm,tokenizers=this.inlineTokenizers,index=0,length=value.length,firstDot=-1;if(gfm){for(code=value.charCodeAt(index);decimal(code)||alphabetical(code)||code===plusSign||code===dash||code===dot||code===underscore;)code=value.charCodeAt(++index);if(0!==index&&code===atSign){for(index++;index<length&&(code=value.charCodeAt(index),decimal(code)||alphabetical(code)||code===dash||code===dot||code===underscore);)index++,-1===firstDot&&code===dot&&(firstDot=index);if(-1!==firstDot&&firstDot!==index&&code!==dash&&code!==underscore)return code===dot&&index--,content=value.slice(0,index),!!silent||(exit=this.enterLink(),this.inlineTokenizers={text:tokenizers.text},children=this.tokenizeInline(content,eat.now()),this.inlineTokenizers=tokenizers,exit(),eat(content)({type:"link",title:null,url:"mailto:"+decode(content,{nonTerminated:!1}),children}))}}}},"./node_modules/remark-parse/lib/tokenize/emphasis.js":(module,__unused_webpack_exports,__webpack_require__)=>{var trim=__webpack_require__("./node_modules/trim/index.js"),word=__webpack_require__("./node_modules/is-word-character/index.js"),whitespace=__webpack_require__("./node_modules/is-whitespace-character/index.js"),locate=__webpack_require__("./node_modules/remark-parse/lib/locate/emphasis.js");module.exports=emphasis,emphasis.locator=locate;var asterisk="*",underscore="_",backslash="\\";function emphasis(eat,value,silent){var now,pedantic,marker,queue,subvalue,length,previous,index=0,character=value.charAt(index);if(!(character!==asterisk&&character!==underscore||(pedantic=this.options.pedantic,subvalue=character,marker=character,length=value.length,index++,queue="",character="",pedantic&&whitespace(value.charAt(index)))))for(;index<length;){if(previous=character,!((character=value.charAt(index))!==marker||pedantic&&whitespace(previous))){if((character=value.charAt(++index))!==marker){if(!trim(queue)||previous===marker)return;if(!pedantic&&marker===underscore&&word(character)){queue+=marker;continue}return!!silent||((now=eat.now()).column++,now.offset++,eat(subvalue+queue+marker)({type:"emphasis",children:this.tokenizeInline(queue,now)}))}queue+=marker}pedantic||character!==backslash||(queue+=character,character=value.charAt(++index)),queue+=character,index++}}},"./node_modules/remark-parse/lib/tokenize/escape.js":(module,__unused_webpack_exports,__webpack_require__)=>{var locate=__webpack_require__("./node_modules/remark-parse/lib/locate/escape.js");module.exports=escape,escape.locator=locate;var lineFeed="\n",backslash="\\";function escape(eat,value,silent){var character,node;if(value.charAt(0)===backslash&&(character=value.charAt(1),-1!==this.escape.indexOf(character)))return!!silent||(node=character===lineFeed?{type:"break"}:{type:"text",value:character},eat(backslash+character)(node))}},"./node_modules/remark-parse/lib/tokenize/heading-atx.js":module=>{module.exports=function atxHeading(eat,value,silent){var character,queue,depth,pedantic=this.options.pedantic,length=value.length+1,index=-1,now=eat.now(),subvalue="",content="";for(;++index<length;){if((character=value.charAt(index))!==space&&character!==tab){index--;break}subvalue+=character}depth=0;for(;++index<=length;){if((character=value.charAt(index))!==numberSign){index--;break}subvalue+=character,depth++}if(depth>maxFenceCount)return;if(!depth||!pedantic&&value.charAt(index+1)===numberSign)return;length=value.length+1,queue="";for(;++index<length;){if((character=value.charAt(index))!==space&&character!==tab){index--;break}queue+=character}if(!pedantic&&0===queue.length&&character&&character!==lineFeed)return;if(silent)return!0;subvalue+=queue,queue="",content="";for(;++index<length&&(character=value.charAt(index))&&character!==lineFeed;)if(character===space||character===tab||character===numberSign){for(;character===space||character===tab;)queue+=character,character=value.charAt(++index);if(pedantic||!content||queue||character!==numberSign){for(;character===numberSign;)queue+=character,character=value.charAt(++index);for(;character===space||character===tab;)queue+=character,character=value.charAt(++index);index--}else content+=character}else content+=queue+character,queue="";return now.column+=subvalue.length,now.offset+=subvalue.length,eat(subvalue+=content+queue)({type:"heading",depth,children:this.tokenizeInline(content,now)})};var lineFeed="\n",tab="\t",space=" ",numberSign="#",maxFenceCount=6},"./node_modules/remark-parse/lib/tokenize/heading-setext.js":module=>{module.exports=function setextHeading(eat,value,silent){var content,queue,character,marker,depth,now=eat.now(),length=value.length,index=-1,subvalue="";for(;++index<length;){if((character=value.charAt(index))!==space||index>=maxIndent){index--;break}subvalue+=character}content="",queue="";for(;++index<length;){if((character=value.charAt(index))===lineFeed){index--;break}character===space||character===tab?queue+=character:(content+=queue+character,queue="")}if(now.column+=subvalue.length,now.offset+=subvalue.length,subvalue+=content+queue,character=value.charAt(++index),marker=value.charAt(++index),character!==lineFeed||marker!==equalsTo&&marker!==dash)return;subvalue+=character,queue=marker,depth=marker===equalsTo?equalsToDepth:dashDepth;for(;++index<length;){if((character=value.charAt(index))!==marker){if(character!==lineFeed)return;index--;break}queue+=character}if(silent)return!0;return eat(subvalue+queue)({type:"heading",depth,children:this.tokenizeInline(content,now)})};var lineFeed="\n",tab="\t",space=" ",equalsTo="=",dash="-",maxIndent=3,equalsToDepth=1,dashDepth=2},"./node_modules/remark-parse/lib/tokenize/html-block.js":(module,__unused_webpack_exports,__webpack_require__)=>{var openCloseTag=__webpack_require__("./node_modules/remark-parse/lib/util/html.js").X;module.exports=function blockHtml(eat,value,silent){var next,line,offset,character,count,sequence,subvalue,blocks=this.options.blocks.join("|"),elementOpenExpression=new RegExp("^</?("+blocks+")(?=(\\s|/?>|$))","i"),length=value.length,index=0,sequences=[[rawOpenExpression,rawCloseExpression,!0],[commentOpenExpression,commentCloseExpression,!0],[instructionOpenExpression,instructionCloseExpression,!0],[directiveOpenExpression,directiveCloseExpression,!0],[cdataOpenExpression,cdataCloseExpression,!0],[elementOpenExpression,elementCloseExpression,!0],[otherElementOpenExpression,elementCloseExpression,!1]];for(;index<length&&((character=value.charAt(index))===tab||character===space);)index++;if(value.charAt(index)!==lessThan)return;next=-1===(next=value.indexOf(lineFeed,index+1))?length:next,line=value.slice(index,next),offset=-1,count=sequences.length;for(;++offset<count;)if(sequences[offset][0].test(line)){sequence=sequences[offset];break}if(!sequence)return;if(silent)return sequence[2];if(index=next,!sequence[1].test(line))for(;index<length;){if(next=-1===(next=value.indexOf(lineFeed,index+1))?length:next,line=value.slice(index+1,next),sequence[1].test(line)){line&&(index=next);break}index=next}return subvalue=value.slice(0,index),eat(subvalue)({type:"html",value:subvalue})};var tab="\t",space=" ",lineFeed="\n",lessThan="<",rawOpenExpression=/^<(script|pre|style)(?=(\s|>|$))/i,rawCloseExpression=/<\/(script|pre|style)>/i,commentOpenExpression=/^<!--/,commentCloseExpression=/-->/,instructionOpenExpression=/^<\?/,instructionCloseExpression=/\?>/,directiveOpenExpression=/^<![A-Za-z]/,directiveCloseExpression=/>/,cdataOpenExpression=/^<!\[CDATA\[/,cdataCloseExpression=/]]>/,elementCloseExpression=/^$/,otherElementOpenExpression=new RegExp(openCloseTag.source+"\\s*$")},"./node_modules/remark-parse/lib/tokenize/html-inline.js":(module,__unused_webpack_exports,__webpack_require__)=>{var alphabetical=__webpack_require__("./node_modules/is-alphabetical/index.js"),locate=__webpack_require__("./node_modules/remark-parse/lib/locate/tag.js"),tag=__webpack_require__("./node_modules/remark-parse/lib/util/html.js").T;module.exports=inlineHTML,inlineHTML.locator=locate;var lessThan="<",questionMark="?",exclamationMark="!",slash="/",htmlLinkOpenExpression=/^<a /i,htmlLinkCloseExpression=/^<\/a>/i;function inlineHTML(eat,value,silent){var character,subvalue,length=value.length;if(!(value.charAt(0)!==lessThan||length<3)&&(character=value.charAt(1),(alphabetical(character)||character===questionMark||character===exclamationMark||character===slash)&&(subvalue=value.match(tag))))return!!silent||(subvalue=subvalue[0],!this.inLink&&htmlLinkOpenExpression.test(subvalue)?this.inLink=!0:this.inLink&&htmlLinkCloseExpression.test(subvalue)&&(this.inLink=!1),eat(subvalue)({type:"html",value:subvalue}))}},"./node_modules/remark-parse/lib/tokenize/link.js":(module,__unused_webpack_exports,__webpack_require__)=>{var whitespace=__webpack_require__("./node_modules/is-whitespace-character/index.js"),locate=__webpack_require__("./node_modules/remark-parse/lib/locate/link.js");module.exports=link,link.locator=locate;var lineFeed="\n",exclamationMark="!",quotationMark='"',apostrophe="'",leftParenthesis="(",rightParenthesis=")",lessThan="<",greaterThan=">",leftSquareBracket="[",backslash="\\",rightSquareBracket="]",graveAccent="`";function link(eat,value,silent){var closed,count,opening,beforeURL,beforeTitle,subqueue,hasMarker,isImage,content,marker,length,title,depth,queue,url,now,exit,node,subvalue="",index=0,character=value.charAt(0),pedantic=this.options.pedantic,commonmark=this.options.commonmark,gfm=this.options.gfm;if(character===exclamationMark&&(isImage=!0,subvalue=character,character=value.charAt(++index)),character===leftSquareBracket&&(isImage||!this.inLink)){for(subvalue+=character,queue="",index++,length=value.length,depth=0,(now=eat.now()).column+=index,now.offset+=index;index<length;){if(subqueue=character=value.charAt(index),character===graveAccent){for(count=1;value.charAt(index+1)===graveAccent;)subqueue+=character,index++,count++;opening?count>=opening&&(opening=0):opening=count}else if(character===backslash)index++,subqueue+=value.charAt(index);else if(opening&&!gfm||character!==leftSquareBracket){if((!opening||gfm)&&character===rightSquareBracket){if(!depth){if(value.charAt(index+1)!==leftParenthesis)return;subqueue+=leftParenthesis,closed=!0,index++;break}depth--}}else depth++;queue+=subqueue,subqueue="",index++}if(closed){for(content=queue,subvalue+=queue+subqueue,index++;index<length&&(character=value.charAt(index),whitespace(character));)subvalue+=character,index++;if(queue="",beforeURL=subvalue,(character=value.charAt(index))===lessThan){for(index++,beforeURL+=lessThan;index<length&&(character=value.charAt(index))!==greaterThan;){if(commonmark&&character===lineFeed)return;queue+=character,index++}if(value.charAt(index)!==greaterThan)return;subvalue+=lessThan+queue+greaterThan,url=queue,index++}else{for(character=null,subqueue="";index<length&&(character=value.charAt(index),!subqueue||!(character===quotationMark||character===apostrophe||commonmark&&character===leftParenthesis));){if(whitespace(character)){if(!pedantic)break;subqueue+=character}else{if(character===leftParenthesis)depth++;else if(character===rightParenthesis){if(0===depth)break;depth--}queue+=subqueue,subqueue="",character===backslash&&(queue+=backslash,character=value.charAt(++index)),queue+=character}index++}url=queue,index=(subvalue+=queue).length}for(queue="";index<length&&(character=value.charAt(index),whitespace(character));)queue+=character,index++;if(character=value.charAt(index),subvalue+=queue,queue&&(character===quotationMark||character===apostrophe||commonmark&&character===leftParenthesis))if(index++,queue="",marker=character===leftParenthesis?rightParenthesis:character,beforeTitle=subvalue+=character,commonmark){for(;index<length&&(character=value.charAt(index))!==marker;)character===backslash&&(queue+=backslash,character=value.charAt(++index)),index++,queue+=character;if((character=value.charAt(index))!==marker)return;for(title=queue,subvalue+=queue+character,index++;index<length&&(character=value.charAt(index),whitespace(character));)subvalue+=character,index++}else for(subqueue="";index<length;){if((character=value.charAt(index))===marker)hasMarker&&(queue+=marker+subqueue,subqueue=""),hasMarker=!0;else if(hasMarker){if(character===rightParenthesis){subvalue+=queue+marker+subqueue,title=queue;break}whitespace(character)?subqueue+=character:(queue+=marker+subqueue+character,subqueue="",hasMarker=!1)}else queue+=character;index++}if(value.charAt(index)===rightParenthesis)return!!silent||(subvalue+=rightParenthesis,url=this.decode.raw(this.unescape(url),eat(beforeURL).test().end,{nonTerminated:!1}),title&&(beforeTitle=eat(beforeTitle).test().end,title=this.decode.raw(this.unescape(title),beforeTitle)),node={type:isImage?"image":"link",title:title||null,url},isImage?node.alt=this.decode.raw(this.unescape(content),now)||null:(exit=this.enterLink(),node.children=this.tokenizeInline(content,now),exit()),eat(subvalue)(node))}}}},"./node_modules/remark-parse/lib/tokenize/list.js":(module,__unused_webpack_exports,__webpack_require__)=>{var trim=__webpack_require__("./node_modules/trim/index.js"),repeat=__webpack_require__("./node_modules/repeat-string/index.js"),decimal=__webpack_require__("./node_modules/is-decimal/index.js"),getIndent=__webpack_require__("./node_modules/remark-parse/lib/util/get-indentation.js"),removeIndent=__webpack_require__("./node_modules/remark-parse/lib/util/remove-indentation.js"),interrupt=__webpack_require__("./node_modules/remark-parse/lib/util/interrupt.js");module.exports=function list(eat,value,silent){var size,queue,ordered,character,marker,nextIndex,startIndex,prefixed,currentMarker,content,line,previousEmpty,empty,items,allLines,emptyLines,item,enterTop,exitBlockquote,node,now,end,indented,commonmark=this.options.commonmark,pedantic=this.options.pedantic,tokenizers=this.blockTokenizers,interuptors=this.interruptList,index=0,length=value.length,start=null,spread=!1;for(;index<length&&((character=value.charAt(index))===tab||character===space);)index++;if((character=value.charAt(index))===asterisk||character===plusSign||character===dash)marker=character,ordered=!1;else{for(ordered=!0,queue="";index<length&&(character=value.charAt(index),decimal(character));)queue+=character,index++;if(character=value.charAt(index),!queue||!(character===dot||commonmark&&character===rightParenthesis))return;if(silent&&"1"!==queue)return;start=parseInt(queue,10),marker=character}if((character=value.charAt(++index))!==space&&character!==tab&&(pedantic||character!==lineFeed&&""!==character))return;if(silent)return!0;index=0,items=[],allLines=[],emptyLines=[];for(;index<length;){for(startIndex=index,prefixed=!1,indented=!1,-1===(nextIndex=value.indexOf(lineFeed,index))&&(nextIndex=length),size=0;index<length;){if((character=value.charAt(index))===tab)size+=tabSize-size%tabSize;else{if(character!==space)break;size++}index++}if(item&&size>=item.indent&&(indented=!0),character=value.charAt(index),currentMarker=null,!indented){if(character===asterisk||character===plusSign||character===dash)currentMarker=character,index++,size++;else{for(queue="";index<length&&(character=value.charAt(index),decimal(character));)queue+=character,index++;character=value.charAt(index),index++,queue&&(character===dot||commonmark&&character===rightParenthesis)&&(currentMarker=character,size+=queue.length+1)}if(currentMarker)if((character=value.charAt(index))===tab)size+=tabSize-size%tabSize,index++;else if(character===space){for(end=index+tabSize;index<end&&value.charAt(index)===space;)index++,size++;index===end&&value.charAt(index)===space&&(index-=tabSize-1,size-=tabSize-1)}else character!==lineFeed&&""!==character&&(currentMarker=null)}if(currentMarker){if(!pedantic&&marker!==currentMarker)break;prefixed=!0}else commonmark||indented||value.charAt(startIndex)!==space?commonmark&&item&&(indented=size>=item.indent||size>tabSize):indented=!0,prefixed=!1,index=startIndex;if(line=value.slice(startIndex,nextIndex),content=startIndex===index?line:value.slice(index,nextIndex),(currentMarker===asterisk||currentMarker===underscore||currentMarker===dash)&&tokenizers.thematicBreak.call(this,eat,line,!0))break;if(previousEmpty=empty,empty=!prefixed&&!trim(content).length,indented&&item)item.value=item.value.concat(emptyLines,line),allLines=allLines.concat(emptyLines,line),emptyLines=[];else if(prefixed)0!==emptyLines.length&&(spread=!0,item.value.push(""),item.trail=emptyLines.concat()),item={value:[line],indent:size,trail:[]},items.push(item),allLines=allLines.concat(emptyLines,line),emptyLines=[];else if(empty){if(previousEmpty&&!commonmark)break;emptyLines.push(line)}else{if(previousEmpty)break;if(interrupt(interuptors,tokenizers,this,[eat,line,!0]))break;item.value=item.value.concat(emptyLines,line),allLines=allLines.concat(emptyLines,line),emptyLines=[]}index=nextIndex+1}node=eat(allLines.join(lineFeed)).reset({type:"list",ordered,start,spread,children:[]}),enterTop=this.enterList(),exitBlockquote=this.enterBlock(),index=-1,length=items.length;for(;++index<length;)item=items[index].value.join(lineFeed),now=eat.now(),eat(item)(listItem(this,item,now),node),item=items[index].trail.join(lineFeed),index!==length-1&&(item+=lineFeed),eat(item);return enterTop(),exitBlockquote(),node};var asterisk="*",underscore="_",plusSign="+",dash="-",dot=".",space=" ",lineFeed="\n",tab="\t",rightParenthesis=")",lowercaseX="x",tabSize=4,looseListItemExpression=/\n\n(?!\s*$)/,taskItemExpression=/^\[([ X\tx])][ \t]/,bulletExpression=/^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/,pedanticBulletExpression=/^([ \t]*)([*+-]|\d+[.)])([ \t]+)/,initialIndentExpression=/^( {1,4}|\t)?/gm;function listItem(ctx,value,position){var task,indent,offsets=ctx.offset,checked=null;return value=(ctx.options.pedantic?pedanticListItem:normalListItem).apply(null,arguments),ctx.options.gfm&&(task=value.match(taskItemExpression))&&(indent=task[0].length,checked=task[1].toLowerCase()===lowercaseX,offsets[position.line]+=indent,value=value.slice(indent)),{type:"listItem",spread:looseListItemExpression.test(value),checked,children:ctx.tokenizeBlock(value,position)}}function pedanticListItem(ctx,value,position){var offsets=ctx.offset,line=position.line;return value=value.replace(pedanticBulletExpression,replacer),line=position.line,value.replace(initialIndentExpression,replacer);function replacer($0){return offsets[line]=(offsets[line]||0)+$0.length,line++,""}}function normalListItem(ctx,value,position){var max,bullet,rest,lines,trimmedLines,index,length,offsets=ctx.offset,line=position.line;for(lines=(value=value.replace(bulletExpression,(function replacer($0,$1,$2,$3,$4){bullet=$1+$2+$3,rest=$4,Number($2)<10&&bullet.length%2==1&&($2=space+$2);return(max=$1+repeat(space,$2.length)+$3)+rest}))).split(lineFeed),(trimmedLines=removeIndent(value,getIndent(max).indent).split(lineFeed))[0]=rest,offsets[line]=(offsets[line]||0)+bullet.length,line++,index=0,length=lines.length;++index<length;)offsets[line]=(offsets[line]||0)+lines[index].length-trimmedLines[index].length,line++;return trimmedLines.join(lineFeed)}},"./node_modules/remark-parse/lib/tokenize/paragraph.js":(module,__unused_webpack_exports,__webpack_require__)=>{var trim=__webpack_require__("./node_modules/trim/index.js"),trimTrailingLines=__webpack_require__("./node_modules/trim-trailing-lines/index.js"),interrupt=__webpack_require__("./node_modules/remark-parse/lib/util/interrupt.js");module.exports=function paragraph(eat,value,silent){var position,subvalue,character,size,now,commonmark=this.options.commonmark,tokenizers=this.blockTokenizers,interruptors=this.interruptParagraph,index=value.indexOf(lineFeed),length=value.length;for(;index<length;){if(-1===index){index=length;break}if(value.charAt(index+1)===lineFeed)break;if(commonmark){for(size=0,position=index+1;position<length;){if((character=value.charAt(position))===tab){size=tabSize;break}if(character!==space)break;size++,position++}if(size>=tabSize&&character!==lineFeed){index=value.indexOf(lineFeed,index+1);continue}}if(subvalue=value.slice(index+1),interrupt(interruptors,tokenizers,this,[eat,subvalue,!0]))break;if(position=index,-1!==(index=value.indexOf(lineFeed,index+1))&&""===trim(value.slice(position,index))){index=position;break}}if(subvalue=value.slice(0,index),silent)return!0;return now=eat.now(),subvalue=trimTrailingLines(subvalue),eat(subvalue)({type:"paragraph",children:this.tokenizeInline(subvalue,now)})};var tab="\t",lineFeed="\n",space=" ",tabSize=4},"./node_modules/remark-parse/lib/tokenize/reference.js":(module,__unused_webpack_exports,__webpack_require__)=>{var whitespace=__webpack_require__("./node_modules/is-whitespace-character/index.js"),locate=__webpack_require__("./node_modules/remark-parse/lib/locate/link.js"),normalize=__webpack_require__("./node_modules/remark-parse/lib/util/normalize.js");module.exports=reference,reference.locator=locate;var link="link",image="image",shortcut="shortcut",collapsed="collapsed",full="full",exclamationMark="!",leftSquareBracket="[",backslash="\\",rightSquareBracket="]";function reference(eat,value,silent){var content,identifier,now,node,exit,queue,bracketed,depth,commonmark=this.options.commonmark,character=value.charAt(0),index=0,length=value.length,subvalue="",intro="",type=link,referenceType=shortcut;if(character===exclamationMark&&(type=image,intro=character,character=value.charAt(++index)),character===leftSquareBracket){for(index++,intro+=character,queue="",depth=0;index<length;){if((character=value.charAt(index))===leftSquareBracket)bracketed=!0,depth++;else if(character===rightSquareBracket){if(!depth)break;depth--}character===backslash&&(queue+=backslash,character=value.charAt(++index)),queue+=character,index++}if(subvalue=queue,content=queue,(character=value.charAt(index))===rightSquareBracket){if(index++,subvalue+=character,queue="",!commonmark)for(;index<length&&(character=value.charAt(index),whitespace(character));)queue+=character,index++;if((character=value.charAt(index))===leftSquareBracket){for(identifier="",queue+=character,index++;index<length&&(character=value.charAt(index))!==leftSquareBracket&&character!==rightSquareBracket;)character===backslash&&(identifier+=backslash,character=value.charAt(++index)),identifier+=character,index++;(character=value.charAt(index))===rightSquareBracket?(referenceType=identifier?full:collapsed,queue+=identifier+character,index++):identifier="",subvalue+=queue,queue=""}else{if(!content)return;identifier=content}if(referenceType===full||!bracketed)return subvalue=intro+subvalue,type===link&&this.inLink?null:!!silent||((now=eat.now()).column+=intro.length,now.offset+=intro.length,node={type:type+"Reference",identifier:normalize(identifier=referenceType===full?identifier:content),label:identifier,referenceType},type===link?(exit=this.enterLink(),node.children=this.tokenizeInline(content,now),exit()):node.alt=this.decode.raw(this.unescape(content),now)||null,eat(subvalue)(node))}}}},"./node_modules/remark-parse/lib/tokenize/strong.js":(module,__unused_webpack_exports,__webpack_require__)=>{var trim=__webpack_require__("./node_modules/trim/index.js"),whitespace=__webpack_require__("./node_modules/is-whitespace-character/index.js"),locate=__webpack_require__("./node_modules/remark-parse/lib/locate/strong.js");module.exports=strong,strong.locator=locate;var backslash="\\",asterisk="*",underscore="_";function strong(eat,value,silent){var now,pedantic,marker,queue,subvalue,length,previous,index=0,character=value.charAt(index);if(!(character!==asterisk&&character!==underscore||value.charAt(++index)!==character||(pedantic=this.options.pedantic,subvalue=(marker=character)+marker,length=value.length,index++,queue="",character="",pedantic&&whitespace(value.charAt(index)))))for(;index<length;){if(previous=character,!((character=value.charAt(index))!==marker||value.charAt(index+1)!==marker||pedantic&&whitespace(previous))&&(character=value.charAt(index+2))!==marker){if(!trim(queue))return;return!!silent||((now=eat.now()).column+=2,now.offset+=2,eat(subvalue+queue+subvalue)({type:"strong",children:this.tokenizeInline(queue,now)}))}pedantic||character!==backslash||(queue+=character,character=value.charAt(++index)),queue+=character,index++}}},"./node_modules/remark-parse/lib/tokenize/table.js":(module,__unused_webpack_exports,__webpack_require__)=>{var whitespace=__webpack_require__("./node_modules/is-whitespace-character/index.js");module.exports=function table(eat,value,silent){var index,alignments,alignment,subvalue,row,length,lines,queue,character,hasDash,align,cell,preamble,now,position,lineCount,line,rows,table,lineIndex,pipeIndex,first;if(!this.options.gfm)return;index=0,lineCount=0,length=value.length+1,lines=[];for(;index<length;){if(lineIndex=value.indexOf(lineFeed,index),pipeIndex=value.indexOf(verticalBar,index+1),-1===lineIndex&&(lineIndex=value.length),-1===pipeIndex||pipeIndex>lineIndex){if(lineCount<minRows)return;break}lines.push(value.slice(index,lineIndex)),lineCount++,index=lineIndex+1}subvalue=lines.join(lineFeed),alignments=lines.splice(1,1)[0]||[],index=0,length=alignments.length,lineCount--,alignment=!1,align=[];for(;index<length;){if((character=alignments.charAt(index))===verticalBar){if(hasDash=null,!1===alignment){if(!1===first)return}else align.push(alignment),alignment=!1;first=!1}else if(character===dash)hasDash=!0,alignment=alignment||null;else if(character===colon)alignment=alignment===left?center:hasDash&&null===alignment?right:left;else if(!whitespace(character))return;index++}!1!==alignment&&align.push(alignment);if(align.length<minColumns)return;if(silent)return!0;position=-1,rows=[],table=eat(subvalue).reset({type:"table",align,children:rows});for(;++position<lineCount;){for(line=lines[position],row={type:"tableRow",children:[]},position&&eat(lineFeed),eat(line).reset(row,table),length=line.length+1,index=0,queue="",cell="",preamble=!0;index<length;)(character=line.charAt(index))!==tab&&character!==space?(""===character||character===verticalBar?preamble?eat(character):(!cell&&!character||preamble||(subvalue=cell,queue.length>1&&(character?(subvalue+=queue.slice(0,-1),queue=queue.charAt(queue.length-1)):(subvalue+=queue,queue="")),now=eat.now(),eat(subvalue)({type:"tableCell",children:this.tokenizeInline(cell,now)},row)),eat(queue+character),queue="",cell=""):(queue&&(cell+=queue,queue=""),cell+=character,character===backslash&&index!==length-2&&(cell+=line.charAt(index+1),index++)),preamble=!1,index++):(cell?queue+=character:eat(character),index++);position||eat(lineFeed+alignments)}return table};var tab="\t",lineFeed="\n",space=" ",dash="-",colon=":",backslash="\\",verticalBar="|",minColumns=1,minRows=2,left="left",center="center",right="right"},"./node_modules/remark-parse/lib/tokenize/text.js":module=>{module.exports=function text(eat,value,silent){var methods,tokenizers,index,length,subvalue,position,tokenizer,name,min,now;if(silent)return!0;methods=this.inlineMethods,length=methods.length,tokenizers=this.inlineTokenizers,index=-1,min=value.length;for(;++index<length;)"text"!==(name=methods[index])&&tokenizers[name]&&((tokenizer=tokenizers[name].locator)||eat.file.fail("Missing locator: `"+name+"`"),-1!==(position=tokenizer.call(this,value,1))&&position<min&&(min=position));subvalue=value.slice(0,min),now=eat.now(),this.decode(subvalue,now,(function handler(content,position,source){eat(source||content)({type:"text",value:content})}))}},"./node_modules/remark-parse/lib/tokenize/thematic-break.js":module=>{module.exports=function thematicBreak(eat,value,silent){var character,marker,markerCount,queue,index=-1,length=value.length+1,subvalue="";for(;++index<length&&((character=value.charAt(index))===tab||character===space);)subvalue+=character;if(character!==asterisk&&character!==dash&&character!==underscore)return;marker=character,subvalue+=character,markerCount=1,queue="";for(;++index<length;)if((character=value.charAt(index))===marker)markerCount++,subvalue+=queue+marker,queue="";else{if(character!==space)return markerCount>=maxCount&&(!character||character===lineFeed)?(subvalue+=queue,!!silent||eat(subvalue)({type:"thematicBreak"})):void 0;queue+=character}};var tab="\t",lineFeed="\n",space=" ",asterisk="*",dash="-",underscore="_",maxCount=3},"./node_modules/remark-parse/lib/tokenize/url.js":(module,__unused_webpack_exports,__webpack_require__)=>{var ccount=__webpack_require__("./node_modules/ccount/index.js"),decode=__webpack_require__("./node_modules/parse-entities/index.js"),decimal=__webpack_require__("./node_modules/is-decimal/index.js"),alphabetical=__webpack_require__("./node_modules/is-alphabetical/index.js"),whitespace=__webpack_require__("./node_modules/is-whitespace-character/index.js"),locate=__webpack_require__("./node_modules/remark-parse/lib/locate/url.js");module.exports=url,url.locator=locate,url.notInLink=!0;var exclamationMark=33,ampersand=38,rightParenthesis=41,asterisk=42,comma=44,dash=45,dot=46,colon=58,semicolon=59,questionMark=63,lessThan=60,underscore=95,tilde=126,leftParenthesisCharacter="(",rightParenthesisCharacter=")";function url(eat,value,silent){var dots,lastTwoPartsStart,start,index,pathStart,path,code,end,leftCount,rightCount,content,children,url,exit,gfm=this.options.gfm,tokenizers=this.inlineTokenizers,length=value.length,previousDot=-1,protocolless=!1;if(gfm){if("www."===value.slice(0,4))protocolless=!0,index=4;else if("http://"===value.slice(0,7).toLowerCase())index=7;else{if("https://"!==value.slice(0,8).toLowerCase())return;index=8}for(previousDot=index-1,start=index,dots=[];index<length;)if((code=value.charCodeAt(index))!==dot){if(!decimal(code)&&!alphabetical(code)&&code!==dash&&code!==underscore)break;index++}else{if(previousDot===index-1)break;dots.push(index),previousDot=index,index++}if(code===dot&&(dots.pop(),index--),void 0!==dots[0]&&(lastTwoPartsStart=dots.length<2?start:dots[dots.length-2]+1,-1===value.slice(lastTwoPartsStart,index).indexOf("_"))){if(silent)return!0;for(end=index,pathStart=index;index<length&&(code=value.charCodeAt(index),!whitespace(code)&&code!==lessThan);)index++,code===exclamationMark||code===asterisk||code===comma||code===dot||code===colon||code===questionMark||code===underscore||code===tilde||(end=index);if(index=end,value.charCodeAt(index-1)===rightParenthesis)for(path=value.slice(pathStart,index),leftCount=ccount(path,leftParenthesisCharacter),rightCount=ccount(path,rightParenthesisCharacter);rightCount>leftCount;)index=pathStart+path.lastIndexOf(rightParenthesisCharacter),path=value.slice(pathStart,index),rightCount--;if(value.charCodeAt(index-1)===semicolon&&(index--,alphabetical(value.charCodeAt(index-1)))){for(end=index-2;alphabetical(value.charCodeAt(end));)end--;value.charCodeAt(end)===ampersand&&(index=end)}return content=value.slice(0,index),url=decode(content,{nonTerminated:!1}),protocolless&&(url="http://"+url),exit=this.enterLink(),this.inlineTokenizers={text:tokenizers.text},children=this.tokenizeInline(content,eat.now()),this.inlineTokenizers=tokenizers,exit(),eat(content)({type:"link",title:null,url,children})}}}},"./node_modules/remark-parse/lib/tokenizer.js":module=>{function mergeable(node){var start,end;return"text"!==node.type||!node.position||(start=node.position.start,end=node.position.end,start.line!==end.line||end.column-start.column===node.value.length)}function mergeText(previous,node){return previous.value+=node.value,previous}function mergeBlockquote(previous,node){return this.options.commonmark||this.options.gfm?node:(previous.children=previous.children.concat(node.children),previous)}module.exports=function factory(type){return function tokenize(value,location){var index,length,method,matched,valueLength,self=this,offset=self.offset,tokens=[],methods=self[type+"Methods"],tokenizers=self[type+"Tokenizers"],line=location.line,column=location.column;if(!value)return tokens;eat.now=now,eat.file=self.file,updatePosition("");for(;value;){for(index=-1,length=methods.length,matched=!1;++index<length&&(!(method=tokenizers[methods[index]])||method.onlyAtStart&&!self.atStart||method.notInList&&self.inList||method.notInBlock&&self.inBlock||method.notInLink&&self.inLink||(valueLength=value.length,method.apply(self,[eat,value]),!(matched=valueLength!==value.length))););matched||self.file.fail(new Error("Infinite loop"),eat.now())}return self.eof=now(),tokens;function updatePosition(subvalue){for(var lastIndex=-1,index=subvalue.indexOf("\n");-1!==index;)line++,lastIndex=index,index=subvalue.indexOf("\n",index+1);-1===lastIndex?column+=subvalue.length:column=subvalue.length-lastIndex,line in offset&&(-1!==lastIndex?column+=offset[line]:column<=offset[line]&&(column=offset[line]+1))}function getOffset(){var indentation=[],pos=line+1;return function(){for(var last=line+1;pos<last;)indentation.push((offset[pos]||0)+1),pos++;return indentation}}function now(){var pos={line,column};return pos.offset=self.toOffset(pos),pos}function Position(start){this.start=start,this.end=now()}function validateEat(subvalue){value.slice(0,subvalue.length)!==subvalue&&self.file.fail(new Error("Incorrectly eaten value: please report this warning on https://git.io/vg5Ft"),now())}function position(){var before=now();return update;function update(node,indent){var previous=node.position,start=previous?previous.start:before,combined=[],n=previous&&previous.end.line,l=before.line;if(node.position=new Position(start),previous&&indent&&previous.indent){if(combined=previous.indent,n<l){for(;++n<l;)combined.push((offset[n]||0)+1);combined.push(before.column)}indent=combined.concat(indent)}return node.position.indent=indent||[],node}}function add(node,parent){var children=parent?parent.children:tokens,previous=children[children.length-1];return previous&&node.type===previous.type&&("text"===node.type||"blockquote"===node.type)&&mergeable(previous)&&mergeable(node)&&(node=("text"===node.type?mergeText:mergeBlockquote).call(self,previous,node)),node!==previous&&children.push(node),self.atStart&&0!==tokens.length&&self.exitStart(),node}function eat(subvalue){var indent=getOffset(),pos=position(),current=now();return validateEat(subvalue),apply.reset=reset,reset.test=test,apply.test=test,value=value.slice(subvalue.length),updatePosition(subvalue),indent=indent(),apply;function apply(node,parent){return pos(add(pos(node),parent),indent)}function reset(){var node=apply.apply(null,arguments);return line=current.line,column=current.column,value=subvalue+value,node}function test(){var result=pos({});return line=current.line,column=current.column,value=subvalue+value,result.position}}}}},"./node_modules/remark-parse/lib/unescape.js":module=>{module.exports=function factory(ctx,key){return function unescape(value){var character,previous=0,index=value.indexOf(backslash),escape=ctx[key],queue=[];for(;-1!==index;)queue.push(value.slice(previous,index)),previous=index+1,(character=value.charAt(previous))&&-1!==escape.indexOf(character)||queue.push(backslash),index=value.indexOf(backslash,previous+1);return queue.push(value.slice(previous)),queue.join("")}};var backslash="\\"},"./node_modules/remark-parse/lib/util/html.js":(__unused_webpack_module,exports)=>{var openTag="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",closeTag="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>";exports.X=new RegExp("^(?:"+openTag+"|"+closeTag+")"),exports.T=new RegExp("^(?:"+openTag+"|"+closeTag+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Za-z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)")},"./node_modules/remark-parse/lib/util/interrupt.js":module=>{module.exports=function interrupt(interruptors,tokenizers,ctx,parameters){var interruptor,config,length=interruptors.length,index=-1;for(;++index<length;)if((void 0===(config=(interruptor=interruptors[index])[1]||{}).pedantic||config.pedantic===ctx.options.pedantic)&&(void 0===config.commonmark||config.commonmark===ctx.options.commonmark)&&tokenizers[interruptor[0]].apply(ctx,parameters))return!0;return!1}},"./node_modules/remark-parse/lib/util/normalize.js":(module,__unused_webpack_exports,__webpack_require__)=>{var collapseWhiteSpace=__webpack_require__("./node_modules/collapse-white-space/index.js");module.exports=function normalize(value){return collapseWhiteSpace(value).toLowerCase()}},"./node_modules/remark-parse/node_modules/unist-util-remove-position/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{var visit=__webpack_require__("./node_modules/unist-util-visit/index.js");function hard(node){delete node.position}function soft(node){node.position=void 0}module.exports=function removePosition(node,force){return visit(node,force?hard:soft),node}},"./node_modules/state-toggle/index.js":module=>{module.exports=function factory(key,state,ctx){return function enter(){var context=ctx||this,current=context[key];return context[key]=!state,exit;function exit(){context[key]=current}}}},"./node_modules/trim-trailing-lines/index.js":module=>{module.exports=function trimTrailingLines(value){var val=String(value),index=val.length;for(;val.charAt(--index)===line;);return val.slice(0,index+1)};var line="\n"},"./node_modules/unherit/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{var xtend=__webpack_require__("./node_modules/xtend/immutable.js"),inherits=__webpack_require__("./node_modules/inherits/inherits_browser.js");module.exports=function unherit(Super){var result,key,value;for(key in inherits(Of,Super),inherits(From,Of),result=Of.prototype)(value=result[key])&&"object"==typeof value&&(result[key]="concat"in value?value.concat():xtend(value));return Of;function From(parameters){return Super.apply(this,parameters)}function Of(){return this instanceof Of?Super.apply(this,arguments):new From(arguments)}}},"./node_modules/character-entities-legacy/index.json":module=>{module.exports=JSON.parse('{"AElig":"Æ","AMP":"&","Aacute":"Á","Acirc":"Â","Agrave":"À","Aring":"Å","Atilde":"Ã","Auml":"Ä","COPY":"©","Ccedil":"Ç","ETH":"Ð","Eacute":"É","Ecirc":"Ê","Egrave":"È","Euml":"Ë","GT":">","Iacute":"Í","Icirc":"Î","Igrave":"Ì","Iuml":"Ï","LT":"<","Ntilde":"Ñ","Oacute":"Ó","Ocirc":"Ô","Ograve":"Ò","Oslash":"Ø","Otilde":"Õ","Ouml":"Ö","QUOT":"\\"","REG":"®","THORN":"Þ","Uacute":"Ú","Ucirc":"Û","Ugrave":"Ù","Uuml":"Ü","Yacute":"Ý","aacute":"á","acirc":"â","acute":"´","aelig":"æ","agrave":"à","amp":"&","aring":"å","atilde":"ã","auml":"ä","brvbar":"¦","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","curren":"¤","deg":"°","divide":"÷","eacute":"é","ecirc":"ê","egrave":"è","eth":"ð","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","iacute":"í","icirc":"î","iexcl":"¡","igrave":"ì","iquest":"¿","iuml":"ï","laquo":"«","lt":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","ntilde":"ñ","oacute":"ó","ocirc":"ô","ograve":"ò","ordf":"ª","ordm":"º","oslash":"ø","otilde":"õ","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","raquo":"»","reg":"®","sect":"§","shy":"","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","thorn":"þ","times":"×","uacute":"ú","ucirc":"û","ugrave":"ù","uml":"¨","uuml":"ü","yacute":"ý","yen":"¥","yuml":"ÿ"}')},"./node_modules/character-reference-invalid/index.json":module=>{module.exports=JSON.parse('{"0":"�","128":"€","130":"‚","131":"ƒ","132":"„","133":"…","134":"†","135":"‡","136":"ˆ","137":"‰","138":"Š","139":"‹","140":"Œ","142":"Ž","145":"‘","146":"’","147":"“","148":"”","149":"•","150":"–","151":"—","152":"˜","153":"™","154":"š","155":"›","156":"œ","158":"ž","159":"Ÿ"}')}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNqQm1GLFFBQVUyTyxRQUFRdFosS0FJdEIsT0FGQXNaLFFBQVF0WixNQUFRb1osTUFFVDlOLEtBRVAsU0FBU0EsT0FDUGdPLFFBQVF0WixLQUFPMkssT0FDakIsQ0FDRixDQUNGLEMseURDcEJBMU4sT0FBT0MsUUFLUCxTQUFTbVgsa0JBQWtCalgsT0FDekIsSUFBSW1jLElBQU0vYixPQUFPSixPQUNiRSxNQUFRaWMsSUFBSTliLE9BRWhCLEtBQU84YixJQUFJL2EsU0FBU2xCLFNBQVd5RSxPQUkvQixPQUFPd1gsSUFBSWpWLE1BQU0sRUFBR2hILE1BQVEsRUFDOUIsRUFaQSxJQUFJeUUsS0FBTyxJLDRGQ0ZYLElBQUl1RCxNQUFRLG9CQUFRLHFDQUNoQmtVLFNBQVcsb0JBQVEsK0NBRXZCdmMsT0FBT0MsUUFJUCxTQUFTbUksUUFBUW9VLE9BQ2YsSUFBSXhYLE9BQ0FqQyxJQUNBNUMsTUFRSixJQUFLNEMsT0FOTHdaLFNBQVNFLEdBQUlELE9BQ2JELFNBQVNHLEtBQU1ELElBR2Z6WCxPQUFTeVgsR0FBRy9VLFdBR1Z2SCxNQUFRNkUsT0FBT2pDLE9BRWUsaUJBQVY1QyxRQUNsQjZFLE9BQU9qQyxLQUFPLFdBQVk1QyxNQUFRQSxNQUFNMEIsU0FBV3dHLE1BQU1sSSxRQUk3RCxPQUFPc2MsR0FJUCxTQUFTQyxLQUFLZixZQUNaLE9BQU9hLE1BQU1qRyxNQUFNaE8sS0FBTW9ULFdBQzNCLENBR0EsU0FBU2MsS0FDUCxPQUFNbFUsZ0JBQWdCa1UsR0FJZkQsTUFBTWpHLE1BQU1oTyxLQUFNaU8sV0FIaEIsSUFBSWtHLEtBQUtsRyxVQUlwQixDQUNGLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvY2NvdW50L2luZGV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9jb2xsYXBzZS13aGl0ZS1zcGFjZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvaXMtYWxwaGFiZXRpY2FsL2luZGV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9pcy1hbHBoYW51bWVyaWNhbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvaXMtZGVjaW1hbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvaXMtaGV4YWRlY2ltYWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyL2luZGV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9pcy13b3JkLWNoYXJhY3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvbWFya2Rvd24tZXNjYXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcGFyc2UtZW50aXRpZXMvZGVjb2RlLWVudGl0eS5icm93c2VyLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9wYXJzZS1lbnRpdGllcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVkdXgtdGh1bmsvbGliL2luZGV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvYmxvY2stZWxlbWVudHMuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvZGVjb2RlLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2RlZmF1bHRzLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS9icmVhay5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvY29kZS1pbmxpbmUuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2RlbGV0ZS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvZW1haWwuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2VtcGhhc2lzLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS9lc2NhcGUuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL2xpbmsuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvbG9jYXRlL3N0cm9uZy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9sb2NhdGUvdGFnLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL2xvY2F0ZS91cmwuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvcGFyc2UuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvcGFyc2VyLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3NldC1vcHRpb25zLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2F1dG8tbGluay5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9ibGFuay1saW5lLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2Jsb2NrcXVvdGUuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvYnJlYWsuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1mZW5jZWQuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvY29kZS1pbmRlbnRlZC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9jb2RlLWlubGluZS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9kZWZpbml0aW9uLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2RlbGV0ZS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9lbWFpbC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9lbXBoYXNpcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9lc2NhcGUuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1hdHguanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaGVhZGluZy1zZXRleHQuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvaHRtbC1ibG9jay5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9odG1sLWlubGluZS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9saW5rLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL2xpc3QuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvcGFyYWdyYXBoLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3Rva2VuaXplL3JlZmVyZW5jZS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS9zdHJvbmcuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvdGFibGUuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemUvdGV4dC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS90aGVtYXRpYy1icmVhay5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi90b2tlbml6ZS91cmwuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlbWFyay1wYXJzZS9saWIvdG9rZW5pemVyLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3VuZXNjYXBlLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvbGliL3V0aWwvaHRtbC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91dGlsL2ludGVycnVwdC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi91dGlsL25vcm1hbGl6ZS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL25vZGVfbW9kdWxlcy91bmlzdC11dGlsLXJlbW92ZS1wb3NpdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvc3RhdGUtdG9nZ2xlL2luZGV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy90cmltLXRyYWlsaW5nLWxpbmVzL2luZGV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy91bmhlcml0L2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNjb3VudFxuXG5mdW5jdGlvbiBjY291bnQodmFsdWUsIGNoYXJhY3Rlcikge1xuICB2YXIgY291bnQgPSAwXG4gIHZhciBpbmRleFxuXG4gIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuXG4gIGlmICh0eXBlb2YgY2hhcmFjdGVyICE9PSAnc3RyaW5nJyB8fCBjaGFyYWN0ZXIubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBjaGFyYWN0ZXInKVxuICB9XG5cbiAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGNoYXJhY3RlcilcblxuICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgY291bnQrK1xuICAgIGluZGV4ID0gdmFsdWUuaW5kZXhPZihjaGFyYWN0ZXIsIGluZGV4ICsgMSlcbiAgfVxuXG4gIHJldHVybiBjb3VudFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY29sbGFwc2VcblxuLyogY29sbGFwc2UoJyBcXHRcXG5iYXIgXFxuYmF6XFx0Jyk7IC8vICcgYmFyIGJheiAnICovXG5mdW5jdGlvbiBjb2xsYXBzZSh2YWx1ZSkge1xuICByZXR1cm4gU3RyaW5nKHZhbHVlKS5yZXBsYWNlKC9cXHMrL2csICcgJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFscGhhYmV0aWNhbFxuXG4vKiBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXJcbiAqIGNvZGUgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgaXMgYWxwaGFiZXRpY2FsLiAqL1xuZnVuY3Rpb24gYWxwaGFiZXRpY2FsKGNoYXJhY3Rlcikge1xuICB2YXIgY29kZSA9IHR5cGVvZiBjaGFyYWN0ZXIgPT09ICdzdHJpbmcnID8gY2hhcmFjdGVyLmNoYXJDb2RlQXQoMCkgOiBjaGFyYWN0ZXJcblxuICByZXR1cm4gKFxuICAgIChjb2RlID49IDk3ICYmIGNvZGUgPD0gMTIyKSAvKiBhLXogKi8gfHxcbiAgICAoY29kZSA+PSA2NSAmJiBjb2RlIDw9IDkwKSAvKiBBLVogKi9cbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBhbHBoYWJldGljYWwgPSByZXF1aXJlKCdpcy1hbHBoYWJldGljYWwnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcblxubW9kdWxlLmV4cG9ydHMgPSBhbHBoYW51bWVyaWNhbFxuXG4vKiBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXJcbiAqIGNvZGUgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgaXMgYWxwaGFudW1lcmljYWwuICovXG5mdW5jdGlvbiBhbHBoYW51bWVyaWNhbChjaGFyYWN0ZXIpIHtcbiAgcmV0dXJuIGFscGhhYmV0aWNhbChjaGFyYWN0ZXIpIHx8IGRlY2ltYWwoY2hhcmFjdGVyKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZGVjaW1hbFxuXG4vKiBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXJcbiAqIGNvZGUgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgaXMgZGVjaW1hbC4gKi9cbmZ1bmN0aW9uIGRlY2ltYWwoY2hhcmFjdGVyKSB7XG4gIHZhciBjb2RlID0gdHlwZW9mIGNoYXJhY3RlciA9PT0gJ3N0cmluZycgPyBjaGFyYWN0ZXIuY2hhckNvZGVBdCgwKSA6IGNoYXJhY3RlclxuXG4gIHJldHVybiBjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcgLyogMC05ICovXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBoZXhhZGVjaW1hbFxuXG4vKiBDaGVjayBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUsIG9yIHRoZSBjaGFyYWN0ZXJcbiAqIGNvZGUgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgaXMgaGV4YWRlY2ltYWwuICovXG5mdW5jdGlvbiBoZXhhZGVjaW1hbChjaGFyYWN0ZXIpIHtcbiAgdmFyIGNvZGUgPSB0eXBlb2YgY2hhcmFjdGVyID09PSAnc3RyaW5nJyA/IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApIDogY2hhcmFjdGVyXG5cbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSA5NyAvKiBhICovICYmIGNvZGUgPD0gMTAyKSAvKiB6ICovIHx8XG4gICAgKGNvZGUgPj0gNjUgLyogQSAqLyAmJiBjb2RlIDw9IDcwKSAvKiBaICovIHx8XG4gICAgKGNvZGUgPj0gNDggLyogQSAqLyAmJiBjb2RlIDw9IDU3KSAvKiBaICovXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdoaXRlc3BhY2VcblxudmFyIGZyb21Db2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZVxudmFyIHJlID0gL1xccy9cblxuLyogQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyXG4gKiBjb2RlIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIsIGlzIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICovXG5mdW5jdGlvbiB3aGl0ZXNwYWNlKGNoYXJhY3Rlcikge1xuICByZXR1cm4gcmUudGVzdChcbiAgICB0eXBlb2YgY2hhcmFjdGVyID09PSAnbnVtYmVyJyA/IGZyb21Db2RlKGNoYXJhY3RlcikgOiBjaGFyYWN0ZXIuY2hhckF0KDApXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHdvcmRDaGFyYWN0ZXJcblxudmFyIGZyb21Db2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZVxudmFyIHJlID0gL1xcdy9cblxuLyogQ2hlY2sgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBjb2RlLCBvciB0aGUgY2hhcmFjdGVyXG4gKiBjb2RlIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIsIGlzIGEgd29yZCBjaGFyYWN0ZXIuICovXG5mdW5jdGlvbiB3b3JkQ2hhcmFjdGVyKGNoYXJhY3Rlcikge1xuICByZXR1cm4gcmUudGVzdChcbiAgICB0eXBlb2YgY2hhcmFjdGVyID09PSAnbnVtYmVyJyA/IGZyb21Db2RlKGNoYXJhY3RlcikgOiBjaGFyYWN0ZXIuY2hhckF0KDApXG4gIClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVzY2FwZXNcblxudmFyIGRlZmF1bHRzID0gW1xuICAnXFxcXCcsXG4gICdgJyxcbiAgJyonLFxuICAneycsXG4gICd9JyxcbiAgJ1snLFxuICAnXScsXG4gICcoJyxcbiAgJyknLFxuICAnIycsXG4gICcrJyxcbiAgJy0nLFxuICAnLicsXG4gICchJyxcbiAgJ18nLFxuICAnPidcbl1cblxudmFyIGdmbSA9IGRlZmF1bHRzLmNvbmNhdChbJ34nLCAnfCddKVxuXG52YXIgY29tbW9ubWFyayA9IGdmbS5jb25jYXQoW1xuICAnXFxuJyxcbiAgJ1wiJyxcbiAgJyQnLFxuICAnJScsXG4gICcmJyxcbiAgXCInXCIsXG4gICcsJyxcbiAgJy8nLFxuICAnOicsXG4gICc7JyxcbiAgJzwnLFxuICAnPScsXG4gICc/JyxcbiAgJ0AnLFxuICAnXidcbl0pXG5cbmVzY2FwZXMuZGVmYXVsdCA9IGRlZmF1bHRzXG5lc2NhcGVzLmdmbSA9IGdmbVxuZXNjYXBlcy5jb21tb25tYXJrID0gY29tbW9ubWFya1xuXG4vKiBHZXQgbWFya2Rvd24gZXNjYXBlcy4gKi9cbmZ1bmN0aW9uIGVzY2FwZXMob3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG5cbiAgaWYgKHNldHRpbmdzLmNvbW1vbm1hcmspIHtcbiAgICByZXR1cm4gY29tbW9ubWFya1xuICB9XG5cbiAgcmV0dXJuIHNldHRpbmdzLmdmbSA/IGdmbSA6IGRlZmF1bHRzXG59XG4iLCIndXNlIHN0cmljdCdcblxuLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbnZhciBlbFxuXG52YXIgc2VtaWNvbG9uID0gNTkgLy8gICc7J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29kZUVudGl0eVxuXG5mdW5jdGlvbiBkZWNvZGVFbnRpdHkoY2hhcmFjdGVycykge1xuICB2YXIgZW50aXR5ID0gJyYnICsgY2hhcmFjdGVycyArICc7J1xuICB2YXIgY2hhclxuXG4gIGVsID0gZWwgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpXG4gIGVsLmlubmVySFRNTCA9IGVudGl0eVxuICBjaGFyID0gZWwudGV4dENvbnRlbnRcblxuICAvLyBTb21lIGVudGl0aWVzIGRvIG5vdCByZXF1aXJlIHRoZSBjbG9zaW5nIHNlbWljb2xvbiAoYCZub3RgIC0gZm9yIGluc3RhbmNlKSxcbiAgLy8gd2hpY2ggbGVhZHMgdG8gc2l0dWF0aW9ucyB3aGVyZSBwYXJzaW5nIHRoZSBhc3N1bWVkIGVudGl0eSBvZiAmbm90aXQ7IHdpbGxcbiAgLy8gcmVzdWx0IGluIHRoZSBzdHJpbmcgYMKsaXQ7YC4gIFdoZW4gd2UgZW5jb3VudGVyIGEgdHJhaWxpbmcgc2VtaWNvbG9uIGFmdGVyXG4gIC8vIHBhcnNpbmcgYW5kIHRoZSBlbnRpdHkgdG8gZGVjb2RlIHdhcyBub3QgYSBzZW1pY29sb24gKGAmc2VtaTtgKSwgd2UgY2FuXG4gIC8vIGFzc3VtZSB0aGF0IHRoZSBtYXRjaGluZyB3YXMgaW5jb21wbGV0ZVxuICBpZiAoY2hhci5jaGFyQ29kZUF0KGNoYXIubGVuZ3RoIC0gMSkgPT09IHNlbWljb2xvbiAmJiBjaGFyYWN0ZXJzICE9PSAnc2VtaScpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIElmIHRoZSBkZWNvZGVkIHN0cmluZyBpcyBlcXVhbCB0byB0aGUgaW5wdXQsIHRoZSBlbnRpdHkgd2FzIG5vdCB2YWxpZFxuICByZXR1cm4gY2hhciA9PT0gZW50aXR5ID8gZmFsc2UgOiBjaGFyXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxlZ2FjeSA9IHJlcXVpcmUoJ2NoYXJhY3Rlci1lbnRpdGllcy1sZWdhY3knKVxudmFyIGludmFsaWQgPSByZXF1aXJlKCdjaGFyYWN0ZXItcmVmZXJlbmNlLWludmFsaWQnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBoZXhhZGVjaW1hbCA9IHJlcXVpcmUoJ2lzLWhleGFkZWNpbWFsJylcbnZhciBhbHBoYW51bWVyaWNhbCA9IHJlcXVpcmUoJ2lzLWFscGhhbnVtZXJpY2FsJylcbnZhciBkZWNvZGVFbnRpdHkgPSByZXF1aXJlKCcuL2RlY29kZS1lbnRpdHknKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlRW50aXRpZXNcblxudmFyIG93biA9IHt9Lmhhc093blByb3BlcnR5XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZVxudmFyIG5vb3AgPSBGdW5jdGlvbi5wcm90b3R5cGVcblxuLy8gRGVmYXVsdCBzZXR0aW5ncy5cbnZhciBkZWZhdWx0cyA9IHtcbiAgd2FybmluZzogbnVsbCxcbiAgcmVmZXJlbmNlOiBudWxsLFxuICB0ZXh0OiBudWxsLFxuICB3YXJuaW5nQ29udGV4dDogbnVsbCxcbiAgcmVmZXJlbmNlQ29udGV4dDogbnVsbCxcbiAgdGV4dENvbnRleHQ6IG51bGwsXG4gIHBvc2l0aW9uOiB7fSxcbiAgYWRkaXRpb25hbDogbnVsbCxcbiAgYXR0cmlidXRlOiBmYWxzZSxcbiAgbm9uVGVybWluYXRlZDogdHJ1ZVxufVxuXG4vLyBDaGFyYWN0ZXJzLlxudmFyIHRhYiA9IDkgLy8gJ1xcdCdcbnZhciBsaW5lRmVlZCA9IDEwIC8vICdcXG4nXG52YXIgZm9ybUZlZWQgPSAxMiAvLyAnXFxmJ1xudmFyIHNwYWNlID0gMzIgLy8gJyAnXG52YXIgYW1wZXJzYW5kID0gMzggLy8gJyYnXG52YXIgc2VtaWNvbG9uID0gNTkgLy8gJzsnXG52YXIgbGVzc1RoYW4gPSA2MCAvLyAnPCdcbnZhciBlcXVhbHNUbyA9IDYxIC8vICc9J1xudmFyIG51bWJlclNpZ24gPSAzNSAvLyAnIydcbnZhciB1cHBlcmNhc2VYID0gODggLy8gJ1gnXG52YXIgbG93ZXJjYXNlWCA9IDEyMCAvLyAneCdcbnZhciByZXBsYWNlbWVudENoYXJhY3RlciA9IDY1NTMzIC8vICfvv70nXG5cbi8vIFJlZmVyZW5jZSB0eXBlcy5cbnZhciBuYW1lID0gJ25hbWVkJ1xudmFyIGhleGEgPSAnaGV4YWRlY2ltYWwnXG52YXIgZGVjaSA9ICdkZWNpbWFsJ1xuXG4vLyBNYXAgb2YgYmFzZXMuXG52YXIgYmFzZXMgPSB7fVxuXG5iYXNlc1toZXhhXSA9IDE2XG5iYXNlc1tkZWNpXSA9IDEwXG5cbi8vIE1hcCBvZiB0eXBlcyB0byB0ZXN0cy5cbi8vIEVhY2ggdHlwZSBvZiBjaGFyYWN0ZXIgcmVmZXJlbmNlIGFjY2VwdHMgZGlmZmVyZW50IGNoYXJhY3RlcnMuXG4vLyBUaGlzIHRlc3QgaXMgdXNlZCB0byBkZXRlY3Qgd2hldGhlciBhIHJlZmVyZW5jZSBoYXMgZW5kZWQgKGFzIHRoZSBzZW1pY29sb25cbi8vIGlzIG5vdCBzdHJpY3RseSBuZWVkZWQpLlxudmFyIHRlc3RzID0ge31cblxudGVzdHNbbmFtZV0gPSBhbHBoYW51bWVyaWNhbFxudGVzdHNbZGVjaV0gPSBkZWNpbWFsXG50ZXN0c1toZXhhXSA9IGhleGFkZWNpbWFsXG5cbi8vIFdhcm5pbmcgdHlwZXMuXG52YXIgbmFtZWROb3RUZXJtaW5hdGVkID0gMVxudmFyIG51bWVyaWNOb3RUZXJtaW5hdGVkID0gMlxudmFyIG5hbWVkRW1wdHkgPSAzXG52YXIgbnVtZXJpY0VtcHR5ID0gNFxudmFyIG5hbWVkVW5rbm93biA9IDVcbnZhciBudW1lcmljRGlzYWxsb3dlZCA9IDZcbnZhciBudW1lcmljUHJvaGliaXRlZCA9IDdcblxuLy8gV2FybmluZyBtZXNzYWdlcy5cbnZhciBtZXNzYWdlcyA9IHt9XG5cbm1lc3NhZ2VzW25hbWVkTm90VGVybWluYXRlZF0gPVxuICAnTmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgbXVzdCBiZSB0ZXJtaW5hdGVkIGJ5IGEgc2VtaWNvbG9uJ1xubWVzc2FnZXNbbnVtZXJpY05vdFRlcm1pbmF0ZWRdID1cbiAgJ051bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgbXVzdCBiZSB0ZXJtaW5hdGVkIGJ5IGEgc2VtaWNvbG9uJ1xubWVzc2FnZXNbbmFtZWRFbXB0eV0gPSAnTmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIGVtcHR5J1xubWVzc2FnZXNbbnVtZXJpY0VtcHR5XSA9ICdOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGNhbm5vdCBiZSBlbXB0eSdcbm1lc3NhZ2VzW25hbWVkVW5rbm93bl0gPSAnTmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgbXVzdCBiZSBrbm93bidcbm1lc3NhZ2VzW251bWVyaWNEaXNhbGxvd2VkXSA9XG4gICdOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGNhbm5vdCBiZSBkaXNhbGxvd2VkJ1xubWVzc2FnZXNbbnVtZXJpY1Byb2hpYml0ZWRdID1cbiAgJ051bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2Fubm90IGJlIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlIFVuaWNvZGUgcmFuZ2UnXG5cbi8vIFdyYXAgdG8gZW5zdXJlIGNsZWFuIHBhcmFtZXRlcnMgYXJlIGdpdmVuIHRvIGBwYXJzZWAuXG5mdW5jdGlvbiBwYXJzZUVudGl0aWVzKHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciBzZXR0aW5ncyA9IHt9XG4gIHZhciBvcHRpb25cbiAgdmFyIGtleVxuXG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgZm9yIChrZXkgaW4gZGVmYXVsdHMpIHtcbiAgICBvcHRpb24gPSBvcHRpb25zW2tleV1cbiAgICBzZXR0aW5nc1trZXldID1cbiAgICAgIG9wdGlvbiA9PT0gbnVsbCB8fCBvcHRpb24gPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRzW2tleV0gOiBvcHRpb25cbiAgfVxuXG4gIGlmIChzZXR0aW5ncy5wb3NpdGlvbi5pbmRlbnQgfHwgc2V0dGluZ3MucG9zaXRpb24uc3RhcnQpIHtcbiAgICBzZXR0aW5ncy5pbmRlbnQgPSBzZXR0aW5ncy5wb3NpdGlvbi5pbmRlbnQgfHwgW11cbiAgICBzZXR0aW5ncy5wb3NpdGlvbiA9IHNldHRpbmdzLnBvc2l0aW9uLnN0YXJ0XG4gIH1cblxuICByZXR1cm4gcGFyc2UodmFsdWUsIHNldHRpbmdzKVxufVxuXG4vLyBQYXJzZSBlbnRpdGllcy5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5mdW5jdGlvbiBwYXJzZSh2YWx1ZSwgc2V0dGluZ3MpIHtcbiAgdmFyIGFkZGl0aW9uYWwgPSBzZXR0aW5ncy5hZGRpdGlvbmFsXG4gIHZhciBub25UZXJtaW5hdGVkID0gc2V0dGluZ3Mubm9uVGVybWluYXRlZFxuICB2YXIgaGFuZGxlVGV4dCA9IHNldHRpbmdzLnRleHRcbiAgdmFyIGhhbmRsZVJlZmVyZW5jZSA9IHNldHRpbmdzLnJlZmVyZW5jZVxuICB2YXIgaGFuZGxlV2FybmluZyA9IHNldHRpbmdzLndhcm5pbmdcbiAgdmFyIHRleHRDb250ZXh0ID0gc2V0dGluZ3MudGV4dENvbnRleHRcbiAgdmFyIHJlZmVyZW5jZUNvbnRleHQgPSBzZXR0aW5ncy5yZWZlcmVuY2VDb250ZXh0XG4gIHZhciB3YXJuaW5nQ29udGV4dCA9IHNldHRpbmdzLndhcm5pbmdDb250ZXh0XG4gIHZhciBwb3MgPSBzZXR0aW5ncy5wb3NpdGlvblxuICB2YXIgaW5kZW50ID0gc2V0dGluZ3MuaW5kZW50IHx8IFtdXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgbGluZXMgPSAtMVxuICB2YXIgY29sdW1uID0gcG9zLmNvbHVtbiB8fCAxXG4gIHZhciBsaW5lID0gcG9zLmxpbmUgfHwgMVxuICB2YXIgcXVldWUgPSAnJ1xuICB2YXIgcmVzdWx0ID0gW11cbiAgdmFyIGVudGl0eUNoYXJhY3RlcnNcbiAgdmFyIG5hbWVkRW50aXR5XG4gIHZhciB0ZXJtaW5hdGVkXG4gIHZhciBjaGFyYWN0ZXJzXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHJlZmVyZW5jZVxuICB2YXIgZm9sbG93aW5nXG4gIHZhciB3YXJuaW5nXG4gIHZhciByZWFzb25cbiAgdmFyIG91dHB1dFxuICB2YXIgZW50aXR5XG4gIHZhciBiZWdpblxuICB2YXIgc3RhcnRcbiAgdmFyIHR5cGVcbiAgdmFyIHRlc3RcbiAgdmFyIHByZXZcbiAgdmFyIG5leHRcbiAgdmFyIGRpZmZcbiAgdmFyIGVuZFxuXG4gIGlmICh0eXBlb2YgYWRkaXRpb25hbCA9PT0gJ3N0cmluZycpIHtcbiAgICBhZGRpdGlvbmFsID0gYWRkaXRpb25hbC5jaGFyQ29kZUF0KDApXG4gIH1cblxuICAvLyBDYWNoZSB0aGUgY3VycmVudCBwb2ludC5cbiAgcHJldiA9IG5vdygpXG5cbiAgLy8gV3JhcCBgaGFuZGxlV2FybmluZ2AuXG4gIHdhcm5pbmcgPSBoYW5kbGVXYXJuaW5nID8gcGFyc2VFcnJvciA6IG5vb3BcblxuICAvLyBFbnN1cmUgdGhlIGFsZ29yaXRobSB3YWxrcyBvdmVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIHRoZSBlbmRcbiAgLy8gKGluY2x1c2l2ZSkuXG4gIGluZGV4LS1cbiAgbGVuZ3RoKytcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIC8vIElmIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgd2FzIGEgbmV3bGluZS5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgY29sdW1uID0gaW5kZW50W2xpbmVzXSB8fCAxXG4gICAgfVxuXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGFtcGVyc2FuZCkge1xuICAgICAgZm9sbG93aW5nID0gdmFsdWUuY2hhckNvZGVBdChpbmRleCArIDEpXG5cbiAgICAgIC8vIFRoZSBiZWhhdmlvdXIgZGVwZW5kcyBvbiB0aGUgaWRlbnRpdHkgb2YgdGhlIG5leHQgY2hhcmFjdGVyLlxuICAgICAgaWYgKFxuICAgICAgICBmb2xsb3dpbmcgPT09IHRhYiB8fFxuICAgICAgICBmb2xsb3dpbmcgPT09IGxpbmVGZWVkIHx8XG4gICAgICAgIGZvbGxvd2luZyA9PT0gZm9ybUZlZWQgfHxcbiAgICAgICAgZm9sbG93aW5nID09PSBzcGFjZSB8fFxuICAgICAgICBmb2xsb3dpbmcgPT09IGFtcGVyc2FuZCB8fFxuICAgICAgICBmb2xsb3dpbmcgPT09IGxlc3NUaGFuIHx8XG4gICAgICAgIGZvbGxvd2luZyAhPT0gZm9sbG93aW5nIHx8XG4gICAgICAgIChhZGRpdGlvbmFsICYmIGZvbGxvd2luZyA9PT0gYWRkaXRpb25hbClcbiAgICAgICkge1xuICAgICAgICAvLyBOb3QgYSBjaGFyYWN0ZXIgcmVmZXJlbmNlLlxuICAgICAgICAvLyBObyBjaGFyYWN0ZXJzIGFyZSBjb25zdW1lZCwgYW5kIG5vdGhpbmcgaXMgcmV0dXJuZWQuXG4gICAgICAgIC8vIFRoaXMgaXMgbm90IGFuIGVycm9yLCBlaXRoZXIuXG4gICAgICAgIHF1ZXVlICs9IGZyb21DaGFyQ29kZShjaGFyYWN0ZXIpXG4gICAgICAgIGNvbHVtbisrXG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgc3RhcnQgPSBpbmRleCArIDFcbiAgICAgIGJlZ2luID0gc3RhcnRcbiAgICAgIGVuZCA9IHN0YXJ0XG5cbiAgICAgIGlmIChmb2xsb3dpbmcgPT09IG51bWJlclNpZ24pIHtcbiAgICAgICAgLy8gTnVtZXJpY2FsIGVudGl0eS5cbiAgICAgICAgZW5kID0gKytiZWdpblxuXG4gICAgICAgIC8vIFRoZSBiZWhhdmlvdXIgZnVydGhlciBkZXBlbmRzIG9uIHRoZSBuZXh0IGNoYXJhY3Rlci5cbiAgICAgICAgZm9sbG93aW5nID0gdmFsdWUuY2hhckNvZGVBdChlbmQpXG5cbiAgICAgICAgaWYgKGZvbGxvd2luZyA9PT0gdXBwZXJjYXNlWCB8fCBmb2xsb3dpbmcgPT09IGxvd2VyY2FzZVgpIHtcbiAgICAgICAgICAvLyBBU0NJSSBoZXggZGlnaXRzLlxuICAgICAgICAgIHR5cGUgPSBoZXhhXG4gICAgICAgICAgZW5kID0gKytiZWdpblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFTQ0lJIGRpZ2l0cy5cbiAgICAgICAgICB0eXBlID0gZGVjaVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOYW1lZCBlbnRpdHkuXG4gICAgICAgIHR5cGUgPSBuYW1lXG4gICAgICB9XG5cbiAgICAgIGVudGl0eUNoYXJhY3RlcnMgPSAnJ1xuICAgICAgZW50aXR5ID0gJydcbiAgICAgIGNoYXJhY3RlcnMgPSAnJ1xuICAgICAgdGVzdCA9IHRlc3RzW3R5cGVdXG4gICAgICBlbmQtLVxuXG4gICAgICB3aGlsZSAoKytlbmQgPCBsZW5ndGgpIHtcbiAgICAgICAgZm9sbG93aW5nID0gdmFsdWUuY2hhckNvZGVBdChlbmQpXG5cbiAgICAgICAgaWYgKCF0ZXN0KGZvbGxvd2luZykpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY2hhcmFjdGVycyArPSBmcm9tQ2hhckNvZGUoZm9sbG93aW5nKVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHdlIGNhbiBtYXRjaCBhIGxlZ2FjeSBuYW1lZCByZWZlcmVuY2UuXG4gICAgICAgIC8vIElmIHNvLCB3ZSBjYWNoZSB0aGF0IGFzIHRoZSBsYXN0IHZpYWJsZSBuYW1lZCByZWZlcmVuY2UuXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB3ZSBkbyBub3QgbmVlZCB0byB3YWxrIGJhY2t3YXJkcyBsYXRlci5cbiAgICAgICAgaWYgKHR5cGUgPT09IG5hbWUgJiYgb3duLmNhbGwobGVnYWN5LCBjaGFyYWN0ZXJzKSkge1xuICAgICAgICAgIGVudGl0eUNoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzXG4gICAgICAgICAgZW50aXR5ID0gbGVnYWN5W2NoYXJhY3RlcnNdXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGVybWluYXRlZCA9IHZhbHVlLmNoYXJDb2RlQXQoZW5kKSA9PT0gc2VtaWNvbG9uXG5cbiAgICAgIGlmICh0ZXJtaW5hdGVkKSB7XG4gICAgICAgIGVuZCsrXG5cbiAgICAgICAgbmFtZWRFbnRpdHkgPSB0eXBlID09PSBuYW1lID8gZGVjb2RlRW50aXR5KGNoYXJhY3RlcnMpIDogZmFsc2VcblxuICAgICAgICBpZiAobmFtZWRFbnRpdHkpIHtcbiAgICAgICAgICBlbnRpdHlDaGFyYWN0ZXJzID0gY2hhcmFjdGVyc1xuICAgICAgICAgIGVudGl0eSA9IG5hbWVkRW50aXR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGlmZiA9IDEgKyBlbmQgLSBzdGFydFxuXG4gICAgICBpZiAoIXRlcm1pbmF0ZWQgJiYgIW5vblRlcm1pbmF0ZWQpIHtcbiAgICAgICAgLy8gRW1wdHkuXG4gICAgICB9IGVsc2UgaWYgKCFjaGFyYWN0ZXJzKSB7XG4gICAgICAgIC8vIEFuIGVtcHR5IChwb3NzaWJsZSkgZW50aXR5IGlzIHZhbGlkLCB1bmxlc3MgaXTigJlzIG51bWVyaWMgKHRodXMgYW5cbiAgICAgICAgLy8gYW1wZXJzYW5kIGZvbGxvd2VkIGJ5IGFuIG9jdG90aG9ycCkuXG4gICAgICAgIGlmICh0eXBlICE9PSBuYW1lKSB7XG4gICAgICAgICAgd2FybmluZyhudW1lcmljRW1wdHksIGRpZmYpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gbmFtZSkge1xuICAgICAgICAvLyBBbiBhbXBlcnNhbmQgZm9sbG93ZWQgYnkgYW55dGhpbmcgdW5rbm93biwgYW5kIG5vdCB0ZXJtaW5hdGVkLCBpc1xuICAgICAgICAvLyBpbnZhbGlkLlxuICAgICAgICBpZiAodGVybWluYXRlZCAmJiAhZW50aXR5KSB7XG4gICAgICAgICAgd2FybmluZyhuYW1lZFVua25vd24sIDEpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgdGhlcmVzIHNvbWV0aGluZyBhZnRlciBhbiBlbnRpdHkgbmFtZSB3aGljaCBpcyBub3Qga25vd24sIGNhcFxuICAgICAgICAgIC8vIHRoZSByZWZlcmVuY2UuXG4gICAgICAgICAgaWYgKGVudGl0eUNoYXJhY3RlcnMgIT09IGNoYXJhY3RlcnMpIHtcbiAgICAgICAgICAgIGVuZCA9IGJlZ2luICsgZW50aXR5Q2hhcmFjdGVycy5sZW5ndGhcbiAgICAgICAgICAgIGRpZmYgPSAxICsgZW5kIC0gYmVnaW5cbiAgICAgICAgICAgIHRlcm1pbmF0ZWQgPSBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgbm90IHRlcm1pbmF0ZWQsIHdhcm4uXG4gICAgICAgICAgaWYgKCF0ZXJtaW5hdGVkKSB7XG4gICAgICAgICAgICByZWFzb24gPSBlbnRpdHlDaGFyYWN0ZXJzID8gbmFtZWROb3RUZXJtaW5hdGVkIDogbmFtZWRFbXB0eVxuXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICAgIGZvbGxvd2luZyA9IHZhbHVlLmNoYXJDb2RlQXQoZW5kKVxuXG4gICAgICAgICAgICAgIGlmIChmb2xsb3dpbmcgPT09IGVxdWFsc1RvKSB7XG4gICAgICAgICAgICAgICAgd2FybmluZyhyZWFzb24sIGRpZmYpXG4gICAgICAgICAgICAgICAgZW50aXR5ID0gbnVsbFxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFscGhhbnVtZXJpY2FsKGZvbGxvd2luZykpIHtcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSBudWxsXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2FybmluZyhyZWFzb24sIGRpZmYpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHdhcm5pbmcocmVhc29uLCBkaWZmKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJlZmVyZW5jZSA9IGVudGl0eVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCF0ZXJtaW5hdGVkKSB7XG4gICAgICAgICAgLy8gQWxsIG5vbi10ZXJtaW5hdGVkIG51bWVyaWMgZW50aXRpZXMgYXJlIG5vdCByZW5kZXJlZCwgYW5kIHRyaWdnZXIgYVxuICAgICAgICAgIC8vIHdhcm5pbmcuXG4gICAgICAgICAgd2FybmluZyhudW1lcmljTm90VGVybWluYXRlZCwgZGlmZilcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdoZW4gdGVybWluYXRlZCBhbmQgbnVtYmVyLCBwYXJzZSBhcyBlaXRoZXIgaGV4YWRlY2ltYWwgb3IgZGVjaW1hbC5cbiAgICAgICAgcmVmZXJlbmNlID0gcGFyc2VJbnQoY2hhcmFjdGVycywgYmFzZXNbdHlwZV0pXG5cbiAgICAgICAgLy8gVHJpZ2dlciBhIHdhcm5pbmcgd2hlbiB0aGUgcGFyc2VkIG51bWJlciBpcyBwcm9oaWJpdGVkLCBhbmQgcmVwbGFjZVxuICAgICAgICAvLyB3aXRoIHJlcGxhY2VtZW50IGNoYXJhY3Rlci5cbiAgICAgICAgaWYgKHByb2hpYml0ZWQocmVmZXJlbmNlKSkge1xuICAgICAgICAgIHdhcm5pbmcobnVtZXJpY1Byb2hpYml0ZWQsIGRpZmYpXG4gICAgICAgICAgcmVmZXJlbmNlID0gZnJvbUNoYXJDb2RlKHJlcGxhY2VtZW50Q2hhcmFjdGVyKVxuICAgICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZSBpbiBpbnZhbGlkKSB7XG4gICAgICAgICAgLy8gVHJpZ2dlciBhIHdhcm5pbmcgd2hlbiB0aGUgcGFyc2VkIG51bWJlciBpcyBkaXNhbGxvd2VkLCBhbmQgcmVwbGFjZVxuICAgICAgICAgIC8vIGJ5IGFuIGFsdGVybmF0aXZlLlxuICAgICAgICAgIHdhcm5pbmcobnVtZXJpY0Rpc2FsbG93ZWQsIGRpZmYpXG4gICAgICAgICAgcmVmZXJlbmNlID0gaW52YWxpZFtyZWZlcmVuY2VdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUGFyc2UgdGhlIG51bWJlci5cbiAgICAgICAgICBvdXRwdXQgPSAnJ1xuXG4gICAgICAgICAgLy8gVHJpZ2dlciBhIHdhcm5pbmcgd2hlbiB0aGUgcGFyc2VkIG51bWJlciBzaG91bGQgbm90IGJlIHVzZWQuXG4gICAgICAgICAgaWYgKGRpc2FsbG93ZWQocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgd2FybmluZyhudW1lcmljRGlzYWxsb3dlZCwgZGlmZilcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBTdHJpbmdpZnkgdGhlIG51bWJlci5cbiAgICAgICAgICBpZiAocmVmZXJlbmNlID4gMHhmZmZmKSB7XG4gICAgICAgICAgICByZWZlcmVuY2UgLT0gMHgxMDAwMFxuICAgICAgICAgICAgb3V0cHV0ICs9IGZyb21DaGFyQ29kZSgocmVmZXJlbmNlID4+PiAoMTAgJiAweDNmZikpIHwgMHhkODAwKVxuICAgICAgICAgICAgcmVmZXJlbmNlID0gMHhkYzAwIHwgKHJlZmVyZW5jZSAmIDB4M2ZmKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlZmVyZW5jZSA9IG91dHB1dCArIGZyb21DaGFyQ29kZShyZWZlcmVuY2UpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRm91bmQgaXQhXG4gICAgICAvLyBGaXJzdCBlYXQgdGhlIHF1ZXVlZCBjaGFyYWN0ZXJzIGFzIG5vcm1hbCB0ZXh0LCB0aGVuIGVhdCBhbiBlbnRpdHkuXG4gICAgICBpZiAocmVmZXJlbmNlKSB7XG4gICAgICAgIGZsdXNoKClcblxuICAgICAgICBwcmV2ID0gbm93KClcbiAgICAgICAgaW5kZXggPSBlbmQgLSAxXG4gICAgICAgIGNvbHVtbiArPSBlbmQgLSBzdGFydCArIDFcbiAgICAgICAgcmVzdWx0LnB1c2gocmVmZXJlbmNlKVxuICAgICAgICBuZXh0ID0gbm93KClcbiAgICAgICAgbmV4dC5vZmZzZXQrK1xuXG4gICAgICAgIGlmIChoYW5kbGVSZWZlcmVuY2UpIHtcbiAgICAgICAgICBoYW5kbGVSZWZlcmVuY2UuY2FsbChcbiAgICAgICAgICAgIHJlZmVyZW5jZUNvbnRleHQsXG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICB7c3RhcnQ6IHByZXYsIGVuZDogbmV4dH0sXG4gICAgICAgICAgICB2YWx1ZS5zbGljZShzdGFydCAtIDEsIGVuZClcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBwcmV2ID0gbmV4dFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgd2UgY291bGQgbm90IGZpbmQgYSByZWZlcmVuY2UsIHF1ZXVlIHRoZSBjaGVja2VkIGNoYXJhY3RlcnMgKGFzXG4gICAgICAgIC8vIG5vcm1hbCBjaGFyYWN0ZXJzKSwgYW5kIG1vdmUgdGhlIHBvaW50ZXIgdG8gdGhlaXIgZW5kLlxuICAgICAgICAvLyBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2Ugd2UgY2FuIGJlIGNlcnRhaW4gbmVpdGhlciBuZXdsaW5lcyBub3JcbiAgICAgICAgLy8gYW1wZXJzYW5kcyBhcmUgaW5jbHVkZWQuXG4gICAgICAgIGNoYXJhY3RlcnMgPSB2YWx1ZS5zbGljZShzdGFydCAtIDEsIGVuZClcbiAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyc1xuICAgICAgICBjb2x1bW4gKz0gY2hhcmFjdGVycy5sZW5ndGhcbiAgICAgICAgaW5kZXggPSBlbmQgLSAxXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBhbnl0aGluZyBvdGhlciB0aGFuIGFuIGFtcGVyc2FuZCwgaW5jbHVkaW5nIG5ld2xpbmVzIGFuZCBFT0YuXG4gICAgICBpZiAoXG4gICAgICAgIGNoYXJhY3RlciA9PT0gMTAgLy8gTGluZSBmZWVkXG4gICAgICApIHtcbiAgICAgICAgbGluZSsrXG4gICAgICAgIGxpbmVzKytcbiAgICAgICAgY29sdW1uID0gMFxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBjaGFyYWN0ZXIpIHtcbiAgICAgICAgcXVldWUgKz0gZnJvbUNoYXJDb2RlKGNoYXJhY3RlcilcbiAgICAgICAgY29sdW1uKytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsdXNoKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIHJlZHVjZWQgbm9kZXMuXG4gIHJldHVybiByZXN1bHQuam9pbignJylcblxuICAvLyBHZXQgY3VycmVudCBwb3NpdGlvbi5cbiAgZnVuY3Rpb24gbm93KCkge1xuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBsaW5lLFxuICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICBvZmZzZXQ6IGluZGV4ICsgKHBvcy5vZmZzZXQgfHwgMClcbiAgICB9XG4gIH1cblxuICAvLyDigJxUaHJvd+KAnSBhIHBhcnNlLWVycm9yOiBhIHdhcm5pbmcuXG4gIGZ1bmN0aW9uIHBhcnNlRXJyb3IoY29kZSwgb2Zmc2V0KSB7XG4gICAgdmFyIHBvc2l0aW9uID0gbm93KClcblxuICAgIHBvc2l0aW9uLmNvbHVtbiArPSBvZmZzZXRcbiAgICBwb3NpdGlvbi5vZmZzZXQgKz0gb2Zmc2V0XG5cbiAgICBoYW5kbGVXYXJuaW5nLmNhbGwod2FybmluZ0NvbnRleHQsIG1lc3NhZ2VzW2NvZGVdLCBwb3NpdGlvbiwgY29kZSlcbiAgfVxuXG4gIC8vIEZsdXNoIGBxdWV1ZWAgKG5vcm1hbCB0ZXh0KS5cbiAgLy8gTWFjcm8gaW52b2tlZCBiZWZvcmUgZWFjaCBlbnRpdHkgYW5kIGF0IHRoZSBlbmQgb2YgYHZhbHVlYC5cbiAgLy8gRG9lcyBub3RoaW5nIHdoZW4gYHF1ZXVlYCBpcyBlbXB0eS5cbiAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgaWYgKHF1ZXVlKSB7XG4gICAgICByZXN1bHQucHVzaChxdWV1ZSlcblxuICAgICAgaWYgKGhhbmRsZVRleHQpIHtcbiAgICAgICAgaGFuZGxlVGV4dC5jYWxsKHRleHRDb250ZXh0LCBxdWV1ZSwge3N0YXJ0OiBwcmV2LCBlbmQ6IG5vdygpfSlcbiAgICAgIH1cblxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgY2hhcmFjdGVyYCBpcyBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZSB1bmljb2RlIHJhbmdlLlxuZnVuY3Rpb24gcHJvaGliaXRlZChjb2RlKSB7XG4gIHJldHVybiAoY29kZSA+PSAweGQ4MDAgJiYgY29kZSA8PSAweGRmZmYpIHx8IGNvZGUgPiAweDEwZmZmZlxufVxuXG4vLyBDaGVjayBpZiBgY2hhcmFjdGVyYCBpcyBkaXNhbGxvd2VkLlxuZnVuY3Rpb24gZGlzYWxsb3dlZChjb2RlKSB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gMHgwMDAxICYmIGNvZGUgPD0gMHgwMDA4KSB8fFxuICAgIGNvZGUgPT09IDB4MDAwYiB8fFxuICAgIChjb2RlID49IDB4MDAwZCAmJiBjb2RlIDw9IDB4MDAxZikgfHxcbiAgICAoY29kZSA+PSAweDAwN2YgJiYgY29kZSA8PSAweDAwOWYpIHx8XG4gICAgKGNvZGUgPj0gMHhmZGQwICYmIGNvZGUgPD0gMHhmZGVmKSB8fFxuICAgIChjb2RlICYgMHhmZmZmKSA9PT0gMHhmZmZmIHx8XG4gICAgKGNvZGUgJiAweGZmZmYpID09PSAweGZmZmVcbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZnVuY3Rpb24gY3JlYXRlVGh1bmtNaWRkbGV3YXJlKGV4dHJhQXJndW1lbnQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIGRpc3BhdGNoID0gX3JlZi5kaXNwYXRjaDtcbiAgICB2YXIgZ2V0U3RhdGUgPSBfcmVmLmdldFN0YXRlO1xuICAgIHJldHVybiBmdW5jdGlvbiAobmV4dCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gYWN0aW9uKGRpc3BhdGNoLCBnZXRTdGF0ZSwgZXh0cmFBcmd1bWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuXG52YXIgdGh1bmsgPSBjcmVhdGVUaHVua01pZGRsZXdhcmUoKTtcbnRodW5rLndpdGhFeHRyYUFyZ3VtZW50ID0gY3JlYXRlVGh1bmtNaWRkbGV3YXJlO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSB0aHVuazsiLCIndXNlIHN0cmljdCdcblxudmFyIHVuaGVyaXQgPSByZXF1aXJlKCd1bmhlcml0JylcbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBQYXJzZXIgPSByZXF1aXJlKCcuL2xpYi9wYXJzZXIuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlXG5wYXJzZS5QYXJzZXIgPSBQYXJzZXJcblxuZnVuY3Rpb24gcGFyc2Uob3B0aW9ucykge1xuICB2YXIgc2V0dGluZ3MgPSB0aGlzLmRhdGEoJ3NldHRpbmdzJylcbiAgdmFyIExvY2FsID0gdW5oZXJpdChQYXJzZXIpXG5cbiAgTG9jYWwucHJvdG90eXBlLm9wdGlvbnMgPSB4dGVuZChMb2NhbC5wcm90b3R5cGUub3B0aW9ucywgc2V0dGluZ3MsIG9wdGlvbnMpXG5cbiAgdGhpcy5QYXJzZXIgPSBMb2NhbFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gW1xuICAnYWRkcmVzcycsXG4gICdhcnRpY2xlJyxcbiAgJ2FzaWRlJyxcbiAgJ2Jhc2UnLFxuICAnYmFzZWZvbnQnLFxuICAnYmxvY2txdW90ZScsXG4gICdib2R5JyxcbiAgJ2NhcHRpb24nLFxuICAnY2VudGVyJyxcbiAgJ2NvbCcsXG4gICdjb2xncm91cCcsXG4gICdkZCcsXG4gICdkZXRhaWxzJyxcbiAgJ2RpYWxvZycsXG4gICdkaXInLFxuICAnZGl2JyxcbiAgJ2RsJyxcbiAgJ2R0JyxcbiAgJ2ZpZWxkc2V0JyxcbiAgJ2ZpZ2NhcHRpb24nLFxuICAnZmlndXJlJyxcbiAgJ2Zvb3RlcicsXG4gICdmb3JtJyxcbiAgJ2ZyYW1lJyxcbiAgJ2ZyYW1lc2V0JyxcbiAgJ2gxJyxcbiAgJ2gyJyxcbiAgJ2gzJyxcbiAgJ2g0JyxcbiAgJ2g1JyxcbiAgJ2g2JyxcbiAgJ2hlYWQnLFxuICAnaGVhZGVyJyxcbiAgJ2hncm91cCcsXG4gICdocicsXG4gICdodG1sJyxcbiAgJ2lmcmFtZScsXG4gICdsZWdlbmQnLFxuICAnbGknLFxuICAnbGluaycsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbWVudWl0ZW0nLFxuICAnbWV0YScsXG4gICduYXYnLFxuICAnbm9mcmFtZXMnLFxuICAnb2wnLFxuICAnb3B0Z3JvdXAnLFxuICAnb3B0aW9uJyxcbiAgJ3AnLFxuICAncGFyYW0nLFxuICAncHJlJyxcbiAgJ3NlY3Rpb24nLFxuICAnc291cmNlJyxcbiAgJ3RpdGxlJyxcbiAgJ3N1bW1hcnknLFxuICAndGFibGUnLFxuICAndGJvZHknLFxuICAndGQnLFxuICAndGZvb3QnLFxuICAndGgnLFxuICAndGhlYWQnLFxuICAndGl0bGUnLFxuICAndHInLFxuICAndHJhY2snLFxuICAndWwnXG5dXG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGVudGl0aWVzID0gcmVxdWlyZSgncGFyc2UtZW50aXRpZXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gRmFjdG9yeSB0byBjcmVhdGUgYW4gZW50aXR5IGRlY29kZXIuXG5mdW5jdGlvbiBmYWN0b3J5KGN0eCkge1xuICBkZWNvZGVyLnJhdyA9IGRlY29kZVJhd1xuXG4gIHJldHVybiBkZWNvZGVyXG5cbiAgLy8gTm9ybWFsaXplIGBwb3NpdGlvbmAgdG8gYWRkIGFuIGBpbmRlbnRgLlxuICBmdW5jdGlvbiBub3JtYWxpemUocG9zaXRpb24pIHtcbiAgICB2YXIgb2Zmc2V0cyA9IGN0eC5vZmZzZXRcbiAgICB2YXIgbGluZSA9IHBvc2l0aW9uLmxpbmVcbiAgICB2YXIgcmVzdWx0ID0gW11cblxuICAgIHdoaWxlICgrK2xpbmUpIHtcbiAgICAgIGlmICghKGxpbmUgaW4gb2Zmc2V0cykpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2goKG9mZnNldHNbbGluZV0gfHwgMCkgKyAxKVxuICAgIH1cblxuICAgIHJldHVybiB7c3RhcnQ6IHBvc2l0aW9uLCBpbmRlbnQ6IHJlc3VsdH1cbiAgfVxuXG4gIC8vIERlY29kZSBgdmFsdWVgIChhdCBgcG9zaXRpb25gKSBpbnRvIHRleHQtbm9kZXMuXG4gIGZ1bmN0aW9uIGRlY29kZXIodmFsdWUsIHBvc2l0aW9uLCBoYW5kbGVyKSB7XG4gICAgZW50aXRpZXModmFsdWUsIHtcbiAgICAgIHBvc2l0aW9uOiBub3JtYWxpemUocG9zaXRpb24pLFxuICAgICAgd2FybmluZzogaGFuZGxlV2FybmluZyxcbiAgICAgIHRleHQ6IGhhbmRsZXIsXG4gICAgICByZWZlcmVuY2U6IGhhbmRsZXIsXG4gICAgICB0ZXh0Q29udGV4dDogY3R4LFxuICAgICAgcmVmZXJlbmNlQ29udGV4dDogY3R4XG4gICAgfSlcbiAgfVxuXG4gIC8vIERlY29kZSBgdmFsdWVgIChhdCBgcG9zaXRpb25gKSBpbnRvIGEgc3RyaW5nLlxuICBmdW5jdGlvbiBkZWNvZGVSYXcodmFsdWUsIHBvc2l0aW9uLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGVudGl0aWVzKFxuICAgICAgdmFsdWUsXG4gICAgICB4dGVuZChvcHRpb25zLCB7cG9zaXRpb246IG5vcm1hbGl6ZShwb3NpdGlvbiksIHdhcm5pbmc6IGhhbmRsZVdhcm5pbmd9KVxuICAgIClcbiAgfVxuXG4gIC8vIEhhbmRsZSBhIHdhcm5pbmcuXG4gIC8vIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9wYXJzZS1lbnRpdGllcz4gZm9yIHRoZSB3YXJuaW5ncy5cbiAgZnVuY3Rpb24gaGFuZGxlV2FybmluZyhyZWFzb24sIHBvc2l0aW9uLCBjb2RlKSB7XG4gICAgaWYgKGNvZGUgIT09IDMpIHtcbiAgICAgIGN0eC5maWxlLm1lc3NhZ2UocmVhc29uLCBwb3NpdGlvbilcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcG9zaXRpb246IHRydWUsXG4gIGdmbTogdHJ1ZSxcbiAgY29tbW9ubWFyazogZmFsc2UsXG4gIHBlZGFudGljOiBmYWxzZSxcbiAgYmxvY2tzOiByZXF1aXJlKCcuL2Jsb2NrLWVsZW1lbnRzJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSB2YWx1ZS5pbmRleE9mKCdcXG4nLCBmcm9tSW5kZXgpXG5cbiAgd2hpbGUgKGluZGV4ID4gZnJvbUluZGV4KSB7XG4gICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCAtIDEpICE9PSAnICcpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgtLVxuICB9XG5cbiAgcmV0dXJuIGluZGV4XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlLmluZGV4T2YoJ2AnLCBmcm9tSW5kZXgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlLmluZGV4T2YoJ35+JywgZnJvbUluZGV4KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBkZWNpbWFsID0gcmVxdWlyZSgnaXMtZGVjaW1hbCcpXG52YXIgYWxwaGFiZXRpY2FsID0gcmVxdWlyZSgnaXMtYWxwaGFiZXRpY2FsJylcblxudmFyIHBsdXNTaWduID0gNDMgLy8gJysnXG52YXIgZGFzaCA9IDQ1IC8vICctJ1xudmFyIGRvdCA9IDQ2IC8vICcuJ1xudmFyIHVuZGVyc2NvcmUgPSA5NSAvLyAnXydcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuZ2l0aHViLmNvbS9nZm0vI2V4dGVuZGVkLWVtYWlsLWF1dG9saW5rPlxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBhdFxuICB2YXIgcG9zaXRpb25cblxuICBpZiAoIXRoaXMub3B0aW9ucy5nZm0pIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuXG4gIGF0ID0gdmFsdWUuaW5kZXhPZignQCcsIGZyb21JbmRleClcblxuICBpZiAoYXQgPT09IC0xKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICBwb3NpdGlvbiA9IGF0XG5cbiAgaWYgKHBvc2l0aW9uID09PSBmcm9tSW5kZXggfHwgIWlzR2ZtQXRleHQodmFsdWUuY2hhckNvZGVBdChwb3NpdGlvbiAtIDEpKSkge1xuICAgIHJldHVybiBsb2NhdGUuY2FsbChzZWxmLCB2YWx1ZSwgYXQgKyAxKVxuICB9XG5cbiAgd2hpbGUgKHBvc2l0aW9uID4gZnJvbUluZGV4ICYmIGlzR2ZtQXRleHQodmFsdWUuY2hhckNvZGVBdChwb3NpdGlvbiAtIDEpKSkge1xuICAgIHBvc2l0aW9uLS1cbiAgfVxuXG4gIHJldHVybiBwb3NpdGlvblxufVxuXG5mdW5jdGlvbiBpc0dmbUF0ZXh0KGNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICBkZWNpbWFsKGNvZGUpIHx8XG4gICAgYWxwaGFiZXRpY2FsKGNvZGUpIHx8XG4gICAgY29kZSA9PT0gcGx1c1NpZ24gfHxcbiAgICBjb2RlID09PSBkYXNoIHx8XG4gICAgY29kZSA9PT0gZG90IHx8XG4gICAgY29kZSA9PT0gdW5kZXJzY29yZVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGFzdGVyaXNrID0gdmFsdWUuaW5kZXhPZignKicsIGZyb21JbmRleClcbiAgdmFyIHVuZGVyc2NvcmUgPSB2YWx1ZS5pbmRleE9mKCdfJywgZnJvbUluZGV4KVxuXG4gIGlmICh1bmRlcnNjb3JlID09PSAtMSkge1xuICAgIHJldHVybiBhc3Rlcmlza1xuICB9XG5cbiAgaWYgKGFzdGVyaXNrID09PSAtMSkge1xuICAgIHJldHVybiB1bmRlcnNjb3JlXG4gIH1cblxuICByZXR1cm4gdW5kZXJzY29yZSA8IGFzdGVyaXNrID8gdW5kZXJzY29yZSA6IGFzdGVyaXNrXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlLmluZGV4T2YoJ1xcXFwnLCBmcm9tSW5kZXgpXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxpbmsgPSB2YWx1ZS5pbmRleE9mKCdbJywgZnJvbUluZGV4KVxuICB2YXIgaW1hZ2UgPSB2YWx1ZS5pbmRleE9mKCchWycsIGZyb21JbmRleClcblxuICBpZiAoaW1hZ2UgPT09IC0xKSB7XG4gICAgcmV0dXJuIGxpbmtcbiAgfVxuXG4gIC8vIExpbmsgY2FuIG5ldmVyIGJlIGAtMWAgaWYgYW4gaW1hZ2UgaXMgZm91bmQsIHNvIHdlIGRvbuKAmXQgbmVlZCB0byBjaGVja1xuICAvLyBmb3IgdGhhdCA6KVxuICByZXR1cm4gbGluayA8IGltYWdlID8gbGluayA6IGltYWdlXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBsb2NhdGVcblxuZnVuY3Rpb24gbG9jYXRlKHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGFzdGVyaXNrID0gdmFsdWUuaW5kZXhPZignKionLCBmcm9tSW5kZXgpXG4gIHZhciB1bmRlcnNjb3JlID0gdmFsdWUuaW5kZXhPZignX18nLCBmcm9tSW5kZXgpXG5cbiAgaWYgKHVuZGVyc2NvcmUgPT09IC0xKSB7XG4gICAgcmV0dXJuIGFzdGVyaXNrXG4gIH1cblxuICBpZiAoYXN0ZXJpc2sgPT09IC0xKSB7XG4gICAgcmV0dXJuIHVuZGVyc2NvcmVcbiAgfVxuXG4gIHJldHVybiB1bmRlcnNjb3JlIDwgYXN0ZXJpc2sgPyB1bmRlcnNjb3JlIDogYXN0ZXJpc2tcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICByZXR1cm4gdmFsdWUuaW5kZXhPZignPCcsIGZyb21JbmRleClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvY2F0ZVxuXG52YXIgdmFsdWVzID0gWyd3d3cuJywgJ2h0dHA6Ly8nLCAnaHR0cHM6Ly8nXVxuXG5mdW5jdGlvbiBsb2NhdGUodmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgbWluID0gLTFcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIHBvc2l0aW9uXG5cbiAgaWYgKCF0aGlzLm9wdGlvbnMuZ2ZtKSB7XG4gICAgcmV0dXJuIG1pblxuICB9XG5cbiAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aFxuICBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBwb3NpdGlvbiA9IHZhbHVlLmluZGV4T2YodmFsdWVzW2luZGV4XSwgZnJvbUluZGV4KVxuXG4gICAgaWYgKHBvc2l0aW9uICE9PSAtMSAmJiAobWluID09PSAtMSB8fCBwb3NpdGlvbiA8IG1pbikpIHtcbiAgICAgIG1pbiA9IHBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pblxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciByZW1vdmVQb3NpdGlvbiA9IHJlcXVpcmUoJ3VuaXN0LXV0aWwtcmVtb3ZlLXBvc2l0aW9uJylcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIGxpbmVCcmVha3NFeHByZXNzaW9uID0gL1xcclxcbnxcXHIvZ1xuXG4vLyBQYXJzZSB0aGUgYm91bmQgZmlsZS5cbmZ1bmN0aW9uIHBhcnNlKCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHZhbHVlID0gU3RyaW5nKHNlbGYuZmlsZSlcbiAgdmFyIHN0YXJ0ID0ge2xpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwfVxuICB2YXIgY29udGVudCA9IHh0ZW5kKHN0YXJ0KVxuICB2YXIgbm9kZVxuXG4gIC8vIENsZWFuIG5vbi11bml4IG5ld2xpbmVzOiBgXFxyXFxuYCBhbmQgYFxccmAgYXJlIGFsbCBjaGFuZ2VkIHRvIGBcXG5gLlxuICAvLyBUaGlzIHNob3VsZCBub3QgYWZmZWN0IHBvc2l0aW9uYWwgaW5mb3JtYXRpb24uXG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShsaW5lQnJlYWtzRXhwcmVzc2lvbiwgbGluZUZlZWQpXG5cbiAgLy8gQk9NLlxuICBpZiAodmFsdWUuY2hhckNvZGVBdCgwKSA9PT0gMHhmZWZmKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKVxuXG4gICAgY29udGVudC5jb2x1bW4rK1xuICAgIGNvbnRlbnQub2Zmc2V0KytcbiAgfVxuXG4gIG5vZGUgPSB7XG4gICAgdHlwZTogJ3Jvb3QnLFxuICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplQmxvY2sodmFsdWUsIGNvbnRlbnQpLFxuICAgIHBvc2l0aW9uOiB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IHNlbGYuZW9mIHx8IHh0ZW5kKHN0YXJ0KX1cbiAgfVxuXG4gIGlmICghc2VsZi5vcHRpb25zLnBvc2l0aW9uKSB7XG4gICAgcmVtb3ZlUG9zaXRpb24obm9kZSwgdHJ1ZSlcbiAgfVxuXG4gIHJldHVybiBub2RlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIHRvZ2dsZSA9IHJlcXVpcmUoJ3N0YXRlLXRvZ2dsZScpXG52YXIgdmZpbGVMb2NhdGlvbiA9IHJlcXVpcmUoJ3ZmaWxlLWxvY2F0aW9uJylcbnZhciB1bmVzY2FwZSA9IHJlcXVpcmUoJy4vdW5lc2NhcGUnKVxudmFyIGRlY29kZSA9IHJlcXVpcmUoJy4vZGVjb2RlJylcbnZhciB0b2tlbml6ZXIgPSByZXF1aXJlKCcuL3Rva2VuaXplcicpXG5cbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyXG5cbmZ1bmN0aW9uIFBhcnNlcihkb2MsIGZpbGUpIHtcbiAgdGhpcy5maWxlID0gZmlsZVxuICB0aGlzLm9mZnNldCA9IHt9XG4gIHRoaXMub3B0aW9ucyA9IHh0ZW5kKHRoaXMub3B0aW9ucylcbiAgdGhpcy5zZXRPcHRpb25zKHt9KVxuXG4gIHRoaXMuaW5MaXN0ID0gZmFsc2VcbiAgdGhpcy5pbkJsb2NrID0gZmFsc2VcbiAgdGhpcy5pbkxpbmsgPSBmYWxzZVxuICB0aGlzLmF0U3RhcnQgPSB0cnVlXG5cbiAgdGhpcy50b09mZnNldCA9IHZmaWxlTG9jYXRpb24oZmlsZSkudG9PZmZzZXRcbiAgdGhpcy51bmVzY2FwZSA9IHVuZXNjYXBlKHRoaXMsICdlc2NhcGUnKVxuICB0aGlzLmRlY29kZSA9IGRlY29kZSh0aGlzKVxufVxuXG52YXIgcHJvdG8gPSBQYXJzZXIucHJvdG90eXBlXG5cbi8vIEV4cG9zZSBjb3JlLlxucHJvdG8uc2V0T3B0aW9ucyA9IHJlcXVpcmUoJy4vc2V0LW9wdGlvbnMnKVxucHJvdG8ucGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJylcblxuLy8gRXhwb3NlIGBkZWZhdWx0c2AuXG5wcm90by5vcHRpb25zID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpXG5cbi8vIEVudGVyIGFuZCBleGl0IGhlbHBlcnMuXG5wcm90by5leGl0U3RhcnQgPSB0b2dnbGUoJ2F0U3RhcnQnLCB0cnVlKVxucHJvdG8uZW50ZXJMaXN0ID0gdG9nZ2xlKCdpbkxpc3QnLCBmYWxzZSlcbnByb3RvLmVudGVyTGluayA9IHRvZ2dsZSgnaW5MaW5rJywgZmFsc2UpXG5wcm90by5lbnRlckJsb2NrID0gdG9nZ2xlKCdpbkJsb2NrJywgZmFsc2UpXG5cbi8vIE5vZGVzIHRoYXQgY2FuIGludGVydXB0IGEgcGFyYWdyYXBoOlxuLy9cbi8vIGBgYG1hcmtkb3duXG4vLyBBIHBhcmFncmFwaCwgZm9sbG93ZWQgYnkgYSB0aGVtYXRpYyBicmVhay5cbi8vIF9fX1xuLy8gYGBgXG4vL1xuLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSB0aGVtYXRpYyBicmVhayDigJxpbnRlcnVwdHPigJ0gdGhlIHBhcmFncmFwaC5cbnByb3RvLmludGVycnVwdFBhcmFncmFwaCA9IFtcbiAgWyd0aGVtYXRpY0JyZWFrJ10sXG4gIFsnbGlzdCddLFxuICBbJ2F0eEhlYWRpbmcnXSxcbiAgWydmZW5jZWRDb2RlJ10sXG4gIFsnYmxvY2txdW90ZSddLFxuICBbJ2h0bWwnXSxcbiAgWydzZXRleHRIZWFkaW5nJywge2NvbW1vbm1hcms6IGZhbHNlfV0sXG4gIFsnZGVmaW5pdGlvbicsIHtjb21tb25tYXJrOiBmYWxzZX1dXG5dXG5cbi8vIE5vZGVzIHRoYXQgY2FuIGludGVydXB0IGEgbGlzdDpcbi8vXG4vLyBgYGBtYXJrZG93blxuLy8gLSBPbmVcbi8vIF9fX1xuLy8gYGBgXG4vL1xuLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSB0aGVtYXRpYyBicmVhayDigJxpbnRlcnVwdHPigJ0gdGhlIGxpc3QuXG5wcm90by5pbnRlcnJ1cHRMaXN0ID0gW1xuICBbJ2F0eEhlYWRpbmcnLCB7cGVkYW50aWM6IGZhbHNlfV0sXG4gIFsnZmVuY2VkQ29kZScsIHtwZWRhbnRpYzogZmFsc2V9XSxcbiAgWyd0aGVtYXRpY0JyZWFrJywge3BlZGFudGljOiBmYWxzZX1dLFxuICBbJ2RlZmluaXRpb24nLCB7Y29tbW9ubWFyazogZmFsc2V9XVxuXVxuXG4vLyBOb2RlcyB0aGF0IGNhbiBpbnRlcnVwdCBhIGJsb2NrcXVvdGU6XG4vL1xuLy8gYGBgbWFya2Rvd25cbi8vID4gQSBwYXJhZ3JhcGguXG4vLyBfX19cbi8vIGBgYFxuLy9cbi8vIEluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUgdGhlbWF0aWMgYnJlYWsg4oCcaW50ZXJ1cHRz4oCdIHRoZSBibG9ja3F1b3RlLlxucHJvdG8uaW50ZXJydXB0QmxvY2txdW90ZSA9IFtcbiAgWydpbmRlbnRlZENvZGUnLCB7Y29tbW9ubWFyazogdHJ1ZX1dLFxuICBbJ2ZlbmNlZENvZGUnLCB7Y29tbW9ubWFyazogdHJ1ZX1dLFxuICBbJ2F0eEhlYWRpbmcnLCB7Y29tbW9ubWFyazogdHJ1ZX1dLFxuICBbJ3NldGV4dEhlYWRpbmcnLCB7Y29tbW9ubWFyazogdHJ1ZX1dLFxuICBbJ3RoZW1hdGljQnJlYWsnLCB7Y29tbW9ubWFyazogdHJ1ZX1dLFxuICBbJ2h0bWwnLCB7Y29tbW9ubWFyazogdHJ1ZX1dLFxuICBbJ2xpc3QnLCB7Y29tbW9ubWFyazogdHJ1ZX1dLFxuICBbJ2RlZmluaXRpb24nLCB7Y29tbW9ubWFyazogZmFsc2V9XVxuXVxuXG4vLyBIYW5kbGVycy5cbnByb3RvLmJsb2NrVG9rZW5pemVycyA9IHtcbiAgYmxhbmtMaW5lOiByZXF1aXJlKCcuL3Rva2VuaXplL2JsYW5rLWxpbmUnKSxcbiAgaW5kZW50ZWRDb2RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2NvZGUtaW5kZW50ZWQnKSxcbiAgZmVuY2VkQ29kZTogcmVxdWlyZSgnLi90b2tlbml6ZS9jb2RlLWZlbmNlZCcpLFxuICBibG9ja3F1b3RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2Jsb2NrcXVvdGUnKSxcbiAgYXR4SGVhZGluZzogcmVxdWlyZSgnLi90b2tlbml6ZS9oZWFkaW5nLWF0eCcpLFxuICB0aGVtYXRpY0JyZWFrOiByZXF1aXJlKCcuL3Rva2VuaXplL3RoZW1hdGljLWJyZWFrJyksXG4gIGxpc3Q6IHJlcXVpcmUoJy4vdG9rZW5pemUvbGlzdCcpLFxuICBzZXRleHRIZWFkaW5nOiByZXF1aXJlKCcuL3Rva2VuaXplL2hlYWRpbmctc2V0ZXh0JyksXG4gIGh0bWw6IHJlcXVpcmUoJy4vdG9rZW5pemUvaHRtbC1ibG9jaycpLFxuICBkZWZpbml0aW9uOiByZXF1aXJlKCcuL3Rva2VuaXplL2RlZmluaXRpb24nKSxcbiAgdGFibGU6IHJlcXVpcmUoJy4vdG9rZW5pemUvdGFibGUnKSxcbiAgcGFyYWdyYXBoOiByZXF1aXJlKCcuL3Rva2VuaXplL3BhcmFncmFwaCcpXG59XG5cbnByb3RvLmlubGluZVRva2VuaXplcnMgPSB7XG4gIGVzY2FwZTogcmVxdWlyZSgnLi90b2tlbml6ZS9lc2NhcGUnKSxcbiAgYXV0b0xpbms6IHJlcXVpcmUoJy4vdG9rZW5pemUvYXV0by1saW5rJyksXG4gIHVybDogcmVxdWlyZSgnLi90b2tlbml6ZS91cmwnKSxcbiAgZW1haWw6IHJlcXVpcmUoJy4vdG9rZW5pemUvZW1haWwnKSxcbiAgaHRtbDogcmVxdWlyZSgnLi90b2tlbml6ZS9odG1sLWlubGluZScpLFxuICBsaW5rOiByZXF1aXJlKCcuL3Rva2VuaXplL2xpbmsnKSxcbiAgcmVmZXJlbmNlOiByZXF1aXJlKCcuL3Rva2VuaXplL3JlZmVyZW5jZScpLFxuICBzdHJvbmc6IHJlcXVpcmUoJy4vdG9rZW5pemUvc3Ryb25nJyksXG4gIGVtcGhhc2lzOiByZXF1aXJlKCcuL3Rva2VuaXplL2VtcGhhc2lzJyksXG4gIGRlbGV0aW9uOiByZXF1aXJlKCcuL3Rva2VuaXplL2RlbGV0ZScpLFxuICBjb2RlOiByZXF1aXJlKCcuL3Rva2VuaXplL2NvZGUtaW5saW5lJyksXG4gIGJyZWFrOiByZXF1aXJlKCcuL3Rva2VuaXplL2JyZWFrJyksXG4gIHRleHQ6IHJlcXVpcmUoJy4vdG9rZW5pemUvdGV4dCcpXG59XG5cbi8vIEV4cG9zZSBwcmVjZWRlbmNlLlxucHJvdG8uYmxvY2tNZXRob2RzID0ga2V5cyhwcm90by5ibG9ja1Rva2VuaXplcnMpXG5wcm90by5pbmxpbmVNZXRob2RzID0ga2V5cyhwcm90by5pbmxpbmVUb2tlbml6ZXJzKVxuXG4vLyBUb2tlbml6ZXJzLlxucHJvdG8udG9rZW5pemVCbG9jayA9IHRva2VuaXplcignYmxvY2snKVxucHJvdG8udG9rZW5pemVJbmxpbmUgPSB0b2tlbml6ZXIoJ2lubGluZScpXG5wcm90by50b2tlbml6ZUZhY3RvcnkgPSB0b2tlbml6ZXJcblxuLy8gR2V0IGFsbCBrZXlzIGluIGB2YWx1ZWAuXG5mdW5jdGlvbiBrZXlzKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBbXVxuICB2YXIga2V5XG5cbiAgZm9yIChrZXkgaW4gdmFsdWUpIHtcbiAgICByZXN1bHQucHVzaChrZXkpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIGVzY2FwZXMgPSByZXF1aXJlKCdtYXJrZG93bi1lc2NhcGVzJylcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldE9wdGlvbnNcblxuZnVuY3Rpb24gc2V0T3B0aW9ucyhvcHRpb25zKSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgY3VycmVudCA9IHNlbGYub3B0aW9uc1xuICB2YXIga2V5XG4gIHZhciB2YWx1ZVxuXG4gIGlmIChvcHRpb25zID09IG51bGwpIHtcbiAgICBvcHRpb25zID0ge31cbiAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zID0geHRlbmQob3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgYCcgKyBvcHRpb25zICsgJ2AgZm9yIHNldHRpbmcgYG9wdGlvbnNgJylcbiAgfVxuXG4gIGZvciAoa2V5IGluIGRlZmF1bHRzKSB7XG4gICAgdmFsdWUgPSBvcHRpb25zW2tleV1cblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICB2YWx1ZSA9IGN1cnJlbnRba2V5XVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIChrZXkgIT09ICdibG9ja3MnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB8fFxuICAgICAgKGtleSA9PT0gJ2Jsb2NrcycgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0ludmFsaWQgdmFsdWUgYCcgKyB2YWx1ZSArICdgIGZvciBzZXR0aW5nIGBvcHRpb25zLicgKyBrZXkgKyAnYCdcbiAgICAgIClcbiAgICB9XG5cbiAgICBvcHRpb25zW2tleV0gPSB2YWx1ZVxuICB9XG5cbiAgc2VsZi5vcHRpb25zID0gb3B0aW9uc1xuICBzZWxmLmVzY2FwZSA9IGVzY2FwZXMob3B0aW9ucylcblxuICByZXR1cm4gc2VsZlxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIGRlY29kZSA9IHJlcXVpcmUoJ3BhcnNlLWVudGl0aWVzJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvdGFnJylcblxubW9kdWxlLmV4cG9ydHMgPSBhdXRvTGlua1xuYXV0b0xpbmsubG9jYXRvciA9IGxvY2F0ZVxuYXV0b0xpbmsubm90SW5MaW5rID0gdHJ1ZVxuXG52YXIgbGVzc1RoYW4gPSAnPCdcbnZhciBncmVhdGVyVGhhbiA9ICc+J1xudmFyIGF0U2lnbiA9ICdAJ1xudmFyIHNsYXNoID0gJy8nXG52YXIgbWFpbHRvID0gJ21haWx0bzonXG52YXIgbWFpbHRvTGVuZ3RoID0gbWFpbHRvLmxlbmd0aFxuXG5mdW5jdGlvbiBhdXRvTGluayhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBzdWJ2YWx1ZSA9ICcnXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgcXVldWUgPSAnJ1xuICB2YXIgaGFzQXRDaGFyYWN0ZXIgPSBmYWxzZVxuICB2YXIgbGluayA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG5vd1xuICB2YXIgY29udGVudFxuICB2YXIgdG9rZW5pemVyc1xuICB2YXIgZXhpdFxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoMCkgIT09IGxlc3NUaGFuKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCsrXG4gIHN1YnZhbHVlID0gbGVzc1RoYW5cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICB3aGl0ZXNwYWNlKGNoYXJhY3RlcikgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gZ3JlYXRlclRoYW4gfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gYXRTaWduIHx8XG4gICAgICAoY2hhcmFjdGVyID09PSAnOicgJiYgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IHNsYXNoKVxuICAgICkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBsaW5rICs9IHF1ZXVlXG4gIHF1ZXVlID0gJydcblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIGxpbmsgKz0gY2hhcmFjdGVyXG4gIGluZGV4KytcblxuICBpZiAoY2hhcmFjdGVyID09PSBhdFNpZ24pIHtcbiAgICBoYXNBdENoYXJhY3RlciA9IHRydWVcbiAgfSBlbHNlIHtcbiAgICBpZiAoY2hhcmFjdGVyICE9PSAnOicgfHwgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgIT09IHNsYXNoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsaW5rICs9IHNsYXNoXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKHdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoIXF1ZXVlIHx8IGNoYXJhY3RlciAhPT0gZ3JlYXRlclRoYW4pIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBsaW5rICs9IHF1ZXVlXG4gIGNvbnRlbnQgPSBsaW5rXG4gIHN1YnZhbHVlICs9IGxpbmsgKyBjaGFyYWN0ZXJcbiAgbm93ID0gZWF0Lm5vdygpXG4gIG5vdy5jb2x1bW4rK1xuICBub3cub2Zmc2V0KytcblxuICBpZiAoaGFzQXRDaGFyYWN0ZXIpIHtcbiAgICBpZiAobGluay5zbGljZSgwLCBtYWlsdG9MZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT09IG1haWx0bykge1xuICAgICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UobWFpbHRvTGVuZ3RoKVxuICAgICAgbm93LmNvbHVtbiArPSBtYWlsdG9MZW5ndGhcbiAgICAgIG5vdy5vZmZzZXQgKz0gbWFpbHRvTGVuZ3RoXG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmsgPSBtYWlsdG8gKyBsaW5rXG4gICAgfVxuICB9XG5cbiAgLy8gVGVtcG9yYXJpbHkgcmVtb3ZlIGFsbCB0b2tlbml6ZXJzIGV4Y2VwdCB0ZXh0IGluIGF1dG9saW5rcy5cbiAgdG9rZW5pemVycyA9IHNlbGYuaW5saW5lVG9rZW5pemVyc1xuICBzZWxmLmlubGluZVRva2VuaXplcnMgPSB7dGV4dDogdG9rZW5pemVycy50ZXh0fVxuXG4gIGV4aXQgPSBzZWxmLmVudGVyTGluaygpXG5cbiAgY29udGVudCA9IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgbm93KVxuXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHRva2VuaXplcnNcbiAgZXhpdCgpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdsaW5rJyxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB1cmw6IGRlY29kZShsaW5rLCB7bm9uVGVybWluYXRlZDogZmFsc2V9KSxcbiAgICBjaGlsZHJlbjogY29udGVudFxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbi8vIEEgbGluZSBjb250YWluaW5nIG5vIGNoYXJhY3RlcnMsIG9yIGEgbGluZSBjb250YWluaW5nIG9ubHkgc3BhY2VzIChVKzAwMjApIG9yXG4vLyB0YWJzIChVKzAwMDkpLCBpcyBjYWxsZWQgYSBibGFuayBsaW5lLlxuLy8gU2VlIDxodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4yOS8jYmxhbmstbGluZT4uXG52YXIgcmVCbGFua0xpbmUgPSAvXlsgXFx0XSooXFxufCQpL1xuXG4vLyBOb3RlIHRoYXQgdGhvdWdoIGJsYW5rIGxpbmVzIHBsYXkgYSBzcGVjaWFsIHJvbGUgaW4gbGlzdHMgdG8gZGV0ZXJtaW5lXG4vLyB3aGV0aGVyIHRoZSBsaXN0IGlzIHRpZ2h0IG9yIGxvb3NlXG4vLyAoPGh0dHBzOi8vc3BlYy5jb21tb25tYXJrLm9yZy8wLjI5LyNibGFuay1saW5lcz4pLCBpdOKAmXMgZG9uZSBieSB0aGUgbGlzdFxuLy8gdG9rZW5pemVyIGFuZCB0aGlzIGJsYW5rIGxpbmUgdG9rZW5pemVyIGRvZXMgbm90IGhhdmUgdG8gYmUgcmVzcG9uc2libGUgZm9yXG4vLyB0aGF0LlxuLy8gVGhlcmVmb3JlLCBjb25maWdzIHN1Y2ggYXMgYGJsYW5rTGluZS5ub3RJbkxpc3RgIGRvIG5vdCBoYXZlIHRvIGJlIHNldCBoZXJlLlxubW9kdWxlLmV4cG9ydHMgPSBibGFua0xpbmVcblxuZnVuY3Rpb24gYmxhbmtMaW5lKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgbWF0Y2hcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgbWF0Y2ggPSByZUJsYW5rTGluZS5leGVjKHZhbHVlLnNsaWNlKGluZGV4KSlcblxuICAgIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aFxuICAgIHN1YnZhbHVlICs9IG1hdGNoWzBdXG4gIH1cblxuICBpZiAoc3VidmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZWF0KHN1YnZhbHVlKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgaW50ZXJydXB0ID0gcmVxdWlyZSgnLi4vdXRpbC9pbnRlcnJ1cHQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJsb2NrcXVvdGVcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcblxuZnVuY3Rpb24gYmxvY2txdW90ZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBvZmZzZXRzID0gc2VsZi5vZmZzZXRcbiAgdmFyIHRva2VuaXplcnMgPSBzZWxmLmJsb2NrVG9rZW5pemVyc1xuICB2YXIgaW50ZXJydXB0b3JzID0gc2VsZi5pbnRlcnJ1cHRCbG9ja3F1b3RlXG4gIHZhciBub3cgPSBlYXQubm93KClcbiAgdmFyIGN1cnJlbnRMaW5lID0gbm93LmxpbmVcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgdmFsdWVzID0gW11cbiAgdmFyIGNvbnRlbnRzID0gW11cbiAgdmFyIGluZGVudHMgPSBbXVxuICB2YXIgYWRkXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgcmVzdFxuICB2YXIgbmV4dEluZGV4XG4gIHZhciBjb250ZW50XG4gIHZhciBsaW5lXG4gIHZhciBzdGFydEluZGV4XG4gIHZhciBwcmVmaXhlZFxuICB2YXIgZXhpdFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBncmVhdGVyVGhhbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpbmRleCA9IDBcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBuZXh0SW5kZXggPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkLCBpbmRleClcbiAgICBzdGFydEluZGV4ID0gaW5kZXhcbiAgICBwcmVmaXhlZCA9IGZhbHNlXG5cbiAgICBpZiAobmV4dEluZGV4ID09PSAtMSkge1xuICAgICAgbmV4dEluZGV4ID0gbGVuZ3RoXG4gICAgfVxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4KSA9PT0gZ3JlYXRlclRoYW4pIHtcbiAgICAgIGluZGV4KytcbiAgICAgIHByZWZpeGVkID0gdHJ1ZVxuXG4gICAgICBpZiAodmFsdWUuY2hhckF0KGluZGV4KSA9PT0gc3BhY2UpIHtcbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICB9XG5cbiAgICBjb250ZW50ID0gdmFsdWUuc2xpY2UoaW5kZXgsIG5leHRJbmRleClcblxuICAgIGlmICghcHJlZml4ZWQgJiYgIXRyaW0oY29udGVudCkpIHtcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoIXByZWZpeGVkKSB7XG4gICAgICByZXN0ID0gdmFsdWUuc2xpY2UoaW5kZXgpXG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBmb2xsb3dpbmcgY29kZSBjb250YWlucyBhIHBvc3NpYmxlIGJsb2NrLlxuICAgICAgaWYgKGludGVycnVwdChpbnRlcnJ1cHRvcnMsIHRva2VuaXplcnMsIHNlbGYsIFtlYXQsIHJlc3QsIHRydWVdKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGxpbmUgPSBzdGFydEluZGV4ID09PSBpbmRleCA/IGNvbnRlbnQgOiB2YWx1ZS5zbGljZShzdGFydEluZGV4LCBuZXh0SW5kZXgpXG5cbiAgICBpbmRlbnRzLnB1c2goaW5kZXggLSBzdGFydEluZGV4KVxuICAgIHZhbHVlcy5wdXNoKGxpbmUpXG4gICAgY29udGVudHMucHVzaChjb250ZW50KVxuXG4gICAgaW5kZXggPSBuZXh0SW5kZXggKyAxXG4gIH1cblxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IGluZGVudHMubGVuZ3RoXG4gIGFkZCA9IGVhdCh2YWx1ZXMuam9pbihsaW5lRmVlZCkpXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBvZmZzZXRzW2N1cnJlbnRMaW5lXSA9IChvZmZzZXRzW2N1cnJlbnRMaW5lXSB8fCAwKSArIGluZGVudHNbaW5kZXhdXG4gICAgY3VycmVudExpbmUrK1xuICB9XG5cbiAgZXhpdCA9IHNlbGYuZW50ZXJCbG9jaygpXG4gIGNvbnRlbnRzID0gc2VsZi50b2tlbml6ZUJsb2NrKGNvbnRlbnRzLmpvaW4obGluZUZlZWQpLCBub3cpXG4gIGV4aXQoKVxuXG4gIHJldHVybiBhZGQoe3R5cGU6ICdibG9ja3F1b3RlJywgY2hpbGRyZW46IGNvbnRlbnRzfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2JyZWFrJylcblxubW9kdWxlLmV4cG9ydHMgPSBoYXJkQnJlYWtcbmhhcmRCcmVhay5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciBtaW5CcmVha0xlbmd0aCA9IDJcblxuZnVuY3Rpb24gaGFyZEJyZWFrKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBxdWV1ZSA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICBpZiAoaW5kZXggPCBtaW5CcmVha0xlbmd0aCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcblxuICAgICAgcmV0dXJuIGVhdChxdWV1ZSkoe3R5cGU6ICdicmVhayd9KVxuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZmVuY2VkQ29kZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciB0aWxkZSA9ICd+J1xudmFyIGdyYXZlQWNjZW50ID0gJ2AnXG5cbnZhciBtaW5GZW5jZUNvdW50ID0gM1xudmFyIHRhYlNpemUgPSA0XG5cbmZ1bmN0aW9uIGZlbmNlZENvZGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgZ2ZtID0gc2VsZi5vcHRpb25zLmdmbVxuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoICsgMVxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBzdWJ2YWx1ZSA9ICcnXG4gIHZhciBmZW5jZUNvdW50XG4gIHZhciBtYXJrZXJcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgZmxhZ1xuICB2YXIgbGFuZ1xuICB2YXIgbWV0YVxuICB2YXIgcXVldWVcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGV4ZGVudGVkQ29udGVudFxuICB2YXIgY2xvc2luZ1xuICB2YXIgZXhkZW50ZWRDbG9zaW5nXG4gIHZhciBpbmRlbnRcbiAgdmFyIG5vd1xuXG4gIGlmICghZ2ZtKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBFYXQgaW5pdGlhbCBzcGFjaW5nLlxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBpbmRlbnQgPSBpbmRleFxuXG4gIC8vIEVhdCB0aGUgZmVuY2UuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoY2hhcmFjdGVyICE9PSB0aWxkZSAmJiBjaGFyYWN0ZXIgIT09IGdyYXZlQWNjZW50KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCsrXG4gIG1hcmtlciA9IGNoYXJhY3RlclxuICBmZW5jZUNvdW50ID0gMVxuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgZmVuY2VDb3VudCsrXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKGZlbmNlQ291bnQgPCBtaW5GZW5jZUNvdW50KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBFYXQgc3BhY2luZyBiZWZvcmUgZmxhZy5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgLy8gRWF0IGZsYWcuXG4gIGZsYWcgPSAnJ1xuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSBsaW5lRmVlZCB8fFxuICAgICAgKG1hcmtlciA9PT0gZ3JhdmVBY2NlbnQgJiYgY2hhcmFjdGVyID09PSBtYXJrZXIpXG4gICAgKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgcXVldWUgPSAnJ1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoY2hhcmFjdGVyICYmIGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbm93ID0gZWF0Lm5vdygpXG4gIG5vdy5jb2x1bW4gKz0gc3VidmFsdWUubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gc3VidmFsdWUubGVuZ3RoXG5cbiAgc3VidmFsdWUgKz0gZmxhZ1xuICBmbGFnID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUoZmxhZyksIG5vdylcblxuICBpZiAocXVldWUpIHtcbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICB9XG5cbiAgcXVldWUgPSAnJ1xuICBjbG9zaW5nID0gJydcbiAgZXhkZW50ZWRDbG9zaW5nID0gJydcbiAgY29udGVudCA9ICcnXG4gIGV4ZGVudGVkQ29udGVudCA9ICcnXG4gIHZhciBza2lwID0gdHJ1ZVxuXG4gIC8vIEVhdCBjb250ZW50LlxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgY29udGVudCArPSBjbG9zaW5nXG4gICAgZXhkZW50ZWRDb250ZW50ICs9IGV4ZGVudGVkQ2xvc2luZ1xuICAgIGNsb3NpbmcgPSAnJ1xuICAgIGV4ZGVudGVkQ2xvc2luZyA9ICcnXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgICAgY29udGVudCArPSBjaGFyYWN0ZXJcbiAgICAgIGV4ZGVudGVkQ2xvc2luZyArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gVGhlIGZpcnN0IGxpbmUgZmVlZCBpcyBpZ25vcmVkLiBPdGhlcnMgYXJlbuKAmXQuXG4gICAgaWYgKHNraXApIHtcbiAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgc2tpcCA9IGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIGNsb3NpbmcgKz0gY2hhcmFjdGVyXG4gICAgICBleGRlbnRlZENsb3NpbmcgKz0gY2hhcmFjdGVyXG4gICAgfVxuXG4gICAgcXVldWUgPSAnJ1xuICAgIGluZGV4KytcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBjbG9zaW5nICs9IHF1ZXVlXG4gICAgZXhkZW50ZWRDbG9zaW5nICs9IHF1ZXVlLnNsaWNlKGluZGVudClcblxuICAgIGlmIChxdWV1ZS5sZW5ndGggPj0gdGFiU2l6ZSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNsb3NpbmcgKz0gcXVldWVcbiAgICBleGRlbnRlZENsb3NpbmcgKz0gcXVldWVcblxuICAgIGlmIChxdWV1ZS5sZW5ndGggPCBmZW5jZUNvdW50KSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHF1ZXVlID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjbG9zaW5nICs9IGNoYXJhY3RlclxuICAgICAgZXhkZW50ZWRDbG9zaW5nICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmICghY2hhcmFjdGVyIHx8IGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgc3VidmFsdWUgKz0gY29udGVudCArIGNsb3NpbmdcblxuICAvLyBHZXQgbGFuZyBhbmQgbWV0YSBmcm9tIHRoZSBmbGFnLlxuICBpbmRleCA9IC0xXG4gIGxlbmd0aCA9IGZsYWcubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSBmbGFnLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBpZiAoIWxhbmcpIHtcbiAgICAgICAgbGFuZyA9IGZsYWcuc2xpY2UoMCwgaW5kZXgpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsYW5nKSB7XG4gICAgICBtZXRhID0gZmxhZy5zbGljZShpbmRleClcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgIHR5cGU6ICdjb2RlJyxcbiAgICBsYW5nOiBsYW5nIHx8IGZsYWcgfHwgbnVsbCxcbiAgICBtZXRhOiBtZXRhIHx8IG51bGwsXG4gICAgdmFsdWU6IGV4ZGVudGVkQ29udGVudFxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciByZXBlYXQgPSByZXF1aXJlKCdyZXBlYXQtc3RyaW5nJylcbnZhciB0cmltID0gcmVxdWlyZSgndHJpbS10cmFpbGluZy1saW5lcycpXG5cbm1vZHVsZS5leHBvcnRzID0gaW5kZW50ZWRDb2RlXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xuXG52YXIgdGFiU2l6ZSA9IDRcbnZhciBjb2RlSW5kZW50ID0gcmVwZWF0KHNwYWNlLCB0YWJTaXplKVxuXG5mdW5jdGlvbiBpbmRlbnRlZENvZGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGNvbnRlbnQgPSAnJ1xuICB2YXIgc3VidmFsdWVRdWV1ZSA9ICcnXG4gIHZhciBjb250ZW50UXVldWUgPSAnJ1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBibGFua1F1ZXVlXG4gIHZhciBpbmRlbnRcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChpbmRlbnQpIHtcbiAgICAgIGluZGVudCA9IGZhbHNlXG5cbiAgICAgIHN1YnZhbHVlICs9IHN1YnZhbHVlUXVldWVcbiAgICAgIGNvbnRlbnQgKz0gY29udGVudFF1ZXVlXG4gICAgICBzdWJ2YWx1ZVF1ZXVlID0gJydcbiAgICAgIGNvbnRlbnRRdWV1ZSA9ICcnXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKSB7XG4gICAgICAgIHN1YnZhbHVlUXVldWUgPSBjaGFyYWN0ZXJcbiAgICAgICAgY29udGVudFF1ZXVlID0gY2hhcmFjdGVyXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgY29udGVudCArPSBjaGFyYWN0ZXJcblxuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICAgIGlmICghY2hhcmFjdGVyIHx8IGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgICAgIGNvbnRlbnRRdWV1ZSA9IGNoYXJhY3RlclxuICAgICAgICAgICAgc3VidmFsdWVRdWV1ZSA9IGNoYXJhY3RlclxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgICBjb250ZW50ICs9IGNoYXJhY3RlclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGNoYXJhY3RlciA9PT0gc3BhY2UgJiZcbiAgICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBjaGFyYWN0ZXIgJiZcbiAgICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDIpID09PSBjaGFyYWN0ZXIgJiZcbiAgICAgIHZhbHVlLmNoYXJBdChpbmRleCArIDMpID09PSBjaGFyYWN0ZXJcbiAgICApIHtcbiAgICAgIHN1YnZhbHVlUXVldWUgKz0gY29kZUluZGVudFxuICAgICAgaW5kZXggKz0gM1xuICAgICAgaW5kZW50ID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSB0YWIpIHtcbiAgICAgIHN1YnZhbHVlUXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRlbnQgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIGJsYW5rUXVldWUgPSAnJ1xuXG4gICAgICB3aGlsZSAoY2hhcmFjdGVyID09PSB0YWIgfHwgY2hhcmFjdGVyID09PSBzcGFjZSkge1xuICAgICAgICBibGFua1F1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgc3VidmFsdWVRdWV1ZSArPSBibGFua1F1ZXVlICsgY2hhcmFjdGVyXG4gICAgICBjb250ZW50UXVldWUgKz0gY2hhcmFjdGVyXG4gICAgfVxuICB9XG5cbiAgaWYgKGNvbnRlbnQpIHtcbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICAgIHR5cGU6ICdjb2RlJyxcbiAgICAgIGxhbmc6IG51bGwsXG4gICAgICBtZXRhOiBudWxsLFxuICAgICAgdmFsdWU6IHRyaW0oY29udGVudClcbiAgICB9KVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9jb2RlLWlubGluZScpXG5cbm1vZHVsZS5leHBvcnRzID0gaW5saW5lQ29kZVxuaW5saW5lQ29kZS5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBsaW5lRmVlZCA9IDEwIC8vICAnXFxuJ1xudmFyIHNwYWNlID0gMzIgLy8gJyAnXG52YXIgZ3JhdmVBY2NlbnQgPSA5NiAvLyAgJ2AnXG5cbmZ1bmN0aW9uIGlubGluZUNvZGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgb3BlbmluZ0ZlbmNlRW5kXG4gIHZhciBjbG9zaW5nRmVuY2VTdGFydFxuICB2YXIgY2xvc2luZ0ZlbmNlRW5kXG4gIHZhciBjb2RlXG4gIHZhciBuZXh0XG4gIHZhciBmb3VuZFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmICh2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSAhPT0gZ3JhdmVBY2NlbnQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgaWYgKGluZGV4ID09PSAwIHx8IGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIG9wZW5pbmdGZW5jZUVuZCA9IGluZGV4XG4gIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNvZGUgPSBuZXh0XG4gICAgbmV4dCA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggKyAxKVxuXG4gICAgaWYgKGNvZGUgPT09IGdyYXZlQWNjZW50KSB7XG4gICAgICBpZiAoY2xvc2luZ0ZlbmNlU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbG9zaW5nRmVuY2VTdGFydCA9IGluZGV4XG4gICAgICB9XG5cbiAgICAgIGNsb3NpbmdGZW5jZUVuZCA9IGluZGV4ICsgMVxuXG4gICAgICBpZiAoXG4gICAgICAgIG5leHQgIT09IGdyYXZlQWNjZW50ICYmXG4gICAgICAgIGNsb3NpbmdGZW5jZUVuZCAtIGNsb3NpbmdGZW5jZVN0YXJ0ID09PSBvcGVuaW5nRmVuY2VFbmRcbiAgICAgICkge1xuICAgICAgICBmb3VuZCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNsb3NpbmdGZW5jZVN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsb3NpbmdGZW5jZVN0YXJ0ID0gdW5kZWZpbmVkXG4gICAgICBjbG9zaW5nRmVuY2VFbmQgPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoIWZvdW5kKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbml0aWFsIGFuZCBmaW5hbCBzcGFjZSAob3IgbGluZSBmZWVkKSwgaWZmIHRoZXkgZXhpc3QgYW5kIHRoZXJlXG4gIC8vIGFyZSBub24tc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgY29udGVudC5cbiAgaW5kZXggPSBvcGVuaW5nRmVuY2VFbmRcbiAgbGVuZ3RoID0gY2xvc2luZ0ZlbmNlU3RhcnRcbiAgY29kZSA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpXG4gIG5leHQgPSB2YWx1ZS5jaGFyQ29kZUF0KGxlbmd0aCAtIDEpXG4gIGZvdW5kID0gZmFsc2VcblxuICBpZiAoXG4gICAgbGVuZ3RoIC0gaW5kZXggPiAyICYmXG4gICAgKGNvZGUgPT09IHNwYWNlIHx8IGNvZGUgPT09IGxpbmVGZWVkKSAmJlxuICAgIChuZXh0ID09PSBzcGFjZSB8fCBuZXh0ID09PSBsaW5lRmVlZClcbiAgKSB7XG4gICAgaW5kZXgrK1xuICAgIGxlbmd0aC0tXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgICBpZiAoY29kZSAhPT0gc3BhY2UgJiYgY29kZSAhPT0gbGluZUZlZWQpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAoZm91bmQgPT09IHRydWUpIHtcbiAgICAgIG9wZW5pbmdGZW5jZUVuZCsrXG4gICAgICBjbG9zaW5nRmVuY2VTdGFydC0tXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVhdCh2YWx1ZS5zbGljZSgwLCBjbG9zaW5nRmVuY2VFbmQpKSh7XG4gICAgdHlwZTogJ2lubGluZUNvZGUnLFxuICAgIHZhbHVlOiB2YWx1ZS5zbGljZShvcGVuaW5nRmVuY2VFbmQsIGNsb3NpbmdGZW5jZVN0YXJ0KVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIG5vcm1hbGl6ZSA9IHJlcXVpcmUoJy4uL3V0aWwvbm9ybWFsaXplJylcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbml0aW9uXG5cbnZhciBxdW90YXRpb25NYXJrID0gJ1wiJ1xudmFyIGFwb3N0cm9waGUgPSBcIidcIlxudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgbGVmdFNxdWFyZUJyYWNrZXQgPSAnWydcbnZhciByaWdodFNxdWFyZUJyYWNrZXQgPSAnXSdcbnZhciBsZWZ0UGFyZW50aGVzaXMgPSAnKCdcbnZhciByaWdodFBhcmVudGhlc2lzID0gJyknXG52YXIgY29sb24gPSAnOidcbnZhciBsZXNzVGhhbiA9ICc8J1xudmFyIGdyZWF0ZXJUaGFuID0gJz4nXG5cbmZ1bmN0aW9uIGRlZmluaXRpb24oZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgY29tbW9ubWFyayA9IHNlbGYub3B0aW9ucy5jb21tb25tYXJrXG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgYmVmb3JlVVJMXG4gIHZhciBiZWZvcmVUaXRsZVxuICB2YXIgcXVldWVcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgdGVzdFxuICB2YXIgaWRlbnRpZmllclxuICB2YXIgdXJsXG4gIHZhciB0aXRsZVxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gdGFiKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoY2hhcmFjdGVyICE9PSBsZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXgrK1xuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgYnJlYWtcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoXG4gICAgIXF1ZXVlIHx8XG4gICAgdmFsdWUuY2hhckF0KGluZGV4KSAhPT0gcmlnaHRTcXVhcmVCcmFja2V0IHx8XG4gICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgIT09IGNvbG9uXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWRlbnRpZmllciA9IHF1ZXVlXG4gIHN1YnZhbHVlICs9IHF1ZXVlICsgcmlnaHRTcXVhcmVCcmFja2V0ICsgY29sb25cbiAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlICYmIGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICBxdWV1ZSA9ICcnXG4gIGJlZm9yZVVSTCA9IHN1YnZhbHVlXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gbGVzc1RoYW4pIHtcbiAgICBpbmRleCsrXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKCFpc0VuY2xvc2VkVVJMQ2hhcmFjdGVyKGNoYXJhY3RlcikpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfVxuXG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gaXNFbmNsb3NlZFVSTENoYXJhY3Rlci5kZWxpbWl0ZXIpIHtcbiAgICAgIHN1YnZhbHVlICs9IGxlc3NUaGFuICsgcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvbW1vbm1hcmspIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGluZGV4IC09IHF1ZXVlLmxlbmd0aCArIDFcbiAgICAgIHF1ZXVlID0gJydcbiAgICB9XG4gIH1cblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghaXNVbmNsb3NlZFVSTENoYXJhY3RlcihjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gIH1cblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB1cmwgPSBxdWV1ZVxuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSBsaW5lRmVlZCkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHRlc3QgPSBudWxsXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gcXVvdGF0aW9uTWFyaykge1xuICAgIHRlc3QgPSBxdW90YXRpb25NYXJrXG4gIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBhcG9zdHJvcGhlKSB7XG4gICAgdGVzdCA9IGFwb3N0cm9waGVcbiAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcykge1xuICAgIHRlc3QgPSByaWdodFBhcmVudGhlc2lzXG4gIH1cblxuICBpZiAoIXRlc3QpIHtcbiAgICBxdWV1ZSA9ICcnXG4gICAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgfSBlbHNlIGlmIChxdWV1ZSkge1xuICAgIHN1YnZhbHVlICs9IHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgaW5kZXggPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgICBxdWV1ZSA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGVzdCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgICBpbmRleCsrXG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCB8fCBjaGFyYWN0ZXIgPT09IHRlc3QpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHF1ZXVlICs9IGxpbmVGZWVkXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRlc3QpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJlZm9yZVRpdGxlID0gc3VidmFsdWVcbiAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgICB0aXRsZSA9IHF1ZXVlXG4gICAgcXVldWUgPSAnJ1xuICB9IGVsc2Uge1xuICAgIHJldHVyblxuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gdGFiICYmIGNoYXJhY3RlciAhPT0gc3BhY2UpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gIGlmICghY2hhcmFjdGVyIHx8IGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICBpZiAoc2lsZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGJlZm9yZVVSTCA9IGVhdChiZWZvcmVVUkwpLnRlc3QoKS5lbmRcbiAgICB1cmwgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZSh1cmwpLCBiZWZvcmVVUkwsIHtub25UZXJtaW5hdGVkOiBmYWxzZX0pXG5cbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIGJlZm9yZVRpdGxlID0gZWF0KGJlZm9yZVRpdGxlKS50ZXN0KCkuZW5kXG4gICAgICB0aXRsZSA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKHRpdGxlKSwgYmVmb3JlVGl0bGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe1xuICAgICAgdHlwZTogJ2RlZmluaXRpb24nLFxuICAgICAgaWRlbnRpZmllcjogbm9ybWFsaXplKGlkZW50aWZpZXIpLFxuICAgICAgbGFiZWw6IGlkZW50aWZpZXIsXG4gICAgICB0aXRsZTogdGl0bGUgfHwgbnVsbCxcbiAgICAgIHVybDogdXJsXG4gICAgfSlcbiAgfVxufVxuXG4vLyBDaGVjayBpZiBgY2hhcmFjdGVyYCBjYW4gYmUgaW5zaWRlIGFuIGVuY2xvc2VkIFVSSS5cbmZ1bmN0aW9uIGlzRW5jbG9zZWRVUkxDaGFyYWN0ZXIoY2hhcmFjdGVyKSB7XG4gIHJldHVybiAoXG4gICAgY2hhcmFjdGVyICE9PSBncmVhdGVyVGhhbiAmJlxuICAgIGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHJpZ2h0U3F1YXJlQnJhY2tldFxuICApXG59XG5cbmlzRW5jbG9zZWRVUkxDaGFyYWN0ZXIuZGVsaW1pdGVyID0gZ3JlYXRlclRoYW5cblxuLy8gQ2hlY2sgaWYgYGNoYXJhY3RlcmAgY2FuIGJlIGluc2lkZSBhbiB1bmNsb3NlZCBVUkkuXG5mdW5jdGlvbiBpc1VuY2xvc2VkVVJMQ2hhcmFjdGVyKGNoYXJhY3Rlcikge1xuICByZXR1cm4gKFxuICAgIGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHJpZ2h0U3F1YXJlQnJhY2tldCAmJlxuICAgICF3aGl0ZXNwYWNlKGNoYXJhY3RlcilcbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9kZWxldGUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmlrZXRocm91Z2hcbnN0cmlrZXRocm91Z2gubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgdGlsZGUgPSAnfidcbnZhciBmZW5jZSA9ICd+fidcblxuZnVuY3Rpb24gc3RyaWtldGhyb3VnaChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBjaGFyYWN0ZXIgPSAnJ1xuICB2YXIgcHJldmlvdXMgPSAnJ1xuICB2YXIgcHJlY2VkaW5nID0gJydcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcbiAgdmFyIG5vd1xuXG4gIGlmIChcbiAgICAhc2VsZi5vcHRpb25zLmdmbSB8fFxuICAgIHZhbHVlLmNoYXJBdCgwKSAhPT0gdGlsZGUgfHxcbiAgICB2YWx1ZS5jaGFyQXQoMSkgIT09IHRpbGRlIHx8XG4gICAgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoMikpXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW5kZXggPSAxXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBub3cgPSBlYXQubm93KClcbiAgbm93LmNvbHVtbiArPSAyXG4gIG5vdy5vZmZzZXQgKz0gMlxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyID09PSB0aWxkZSAmJlxuICAgICAgcHJldmlvdXMgPT09IHRpbGRlICYmXG4gICAgICAoIXByZWNlZGluZyB8fCAhd2hpdGVzcGFjZShwcmVjZWRpbmcpKVxuICAgICkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWF0KGZlbmNlICsgc3VidmFsdWUgKyBmZW5jZSkoe1xuICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUoc3VidmFsdWUsIG5vdylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gcHJldmlvdXNcbiAgICBwcmVjZWRpbmcgPSBwcmV2aW91c1xuICAgIHByZXZpb3VzID0gY2hhcmFjdGVyXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgZGVjb2RlID0gcmVxdWlyZSgncGFyc2UtZW50aXRpZXMnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBhbHBoYWJldGljYWwgPSByZXF1aXJlKCdpcy1hbHBoYWJldGljYWwnKVxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9lbWFpbCcpXG5cbm1vZHVsZS5leHBvcnRzID0gZW1haWxcbmVtYWlsLmxvY2F0b3IgPSBsb2NhdGVcbmVtYWlsLm5vdEluTGluayA9IHRydWVcblxudmFyIHBsdXNTaWduID0gNDMgLy8gJysnXG52YXIgZGFzaCA9IDQ1IC8vICctJ1xudmFyIGRvdCA9IDQ2IC8vICcuJ1xudmFyIGF0U2lnbiA9IDY0IC8vICdAJ1xudmFyIHVuZGVyc2NvcmUgPSA5NSAvLyAnXydcblxuZnVuY3Rpb24gZW1haWwoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgZ2ZtID0gc2VsZi5vcHRpb25zLmdmbVxuICB2YXIgdG9rZW5pemVycyA9IHNlbGYuaW5saW5lVG9rZW5pemVyc1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIGZpcnN0RG90ID0gLTFcbiAgdmFyIGNvZGVcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGNoaWxkcmVuXG4gIHZhciBleGl0XG5cbiAgaWYgKCFnZm0pIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gIHdoaWxlIChcbiAgICBkZWNpbWFsKGNvZGUpIHx8XG4gICAgYWxwaGFiZXRpY2FsKGNvZGUpIHx8XG4gICAgY29kZSA9PT0gcGx1c1NpZ24gfHxcbiAgICBjb2RlID09PSBkYXNoIHx8XG4gICAgY29kZSA9PT0gZG90IHx8XG4gICAgY29kZSA9PT0gdW5kZXJzY29yZVxuICApIHtcbiAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdCgrK2luZGV4KVxuICB9XG5cbiAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoY29kZSAhPT0gYXRTaWduKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbmRleCsrXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY29kZSA9IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICBkZWNpbWFsKGNvZGUpIHx8XG4gICAgICBhbHBoYWJldGljYWwoY29kZSkgfHxcbiAgICAgIGNvZGUgPT09IGRhc2ggfHxcbiAgICAgIGNvZGUgPT09IGRvdCB8fFxuICAgICAgY29kZSA9PT0gdW5kZXJzY29yZVxuICAgICkge1xuICAgICAgaW5kZXgrK1xuXG4gICAgICBpZiAoZmlyc3REb3QgPT09IC0xICYmIGNvZGUgPT09IGRvdCkge1xuICAgICAgICBmaXJzdERvdCA9IGluZGV4XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgYnJlYWtcbiAgfVxuXG4gIGlmIChcbiAgICBmaXJzdERvdCA9PT0gLTEgfHxcbiAgICBmaXJzdERvdCA9PT0gaW5kZXggfHxcbiAgICBjb2RlID09PSBkYXNoIHx8XG4gICAgY29kZSA9PT0gdW5kZXJzY29yZVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChjb2RlID09PSBkb3QpIHtcbiAgICBpbmRleC0tXG4gIH1cblxuICBjb250ZW50ID0gdmFsdWUuc2xpY2UoMCwgaW5kZXgpXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGV4aXQgPSBzZWxmLmVudGVyTGluaygpXG5cbiAgLy8gVGVtcG9yYXJpbHkgcmVtb3ZlIGFsbCB0b2tlbml6ZXJzIGV4Y2VwdCB0ZXh0IGluIHVybC5cbiAgc2VsZi5pbmxpbmVUb2tlbml6ZXJzID0ge3RleHQ6IHRva2VuaXplcnMudGV4dH1cbiAgY2hpbGRyZW4gPSBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIGVhdC5ub3coKSlcbiAgc2VsZi5pbmxpbmVUb2tlbml6ZXJzID0gdG9rZW5pemVyc1xuXG4gIGV4aXQoKVxuXG4gIHJldHVybiBlYXQoY29udGVudCkoe1xuICAgIHR5cGU6ICdsaW5rJyxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB1cmw6ICdtYWlsdG86JyArIGRlY29kZShjb250ZW50LCB7bm9uVGVybWluYXRlZDogZmFsc2V9KSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIHdvcmQgPSByZXF1aXJlKCdpcy13b3JkLWNoYXJhY3RlcicpXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvZW1waGFzaXMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGhhc2lzXG5lbXBoYXNpcy5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcblxuZnVuY3Rpb24gZW1waGFzaXMoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gIHZhciBub3dcbiAgdmFyIHBlZGFudGljXG4gIHZhciBtYXJrZXJcbiAgdmFyIHF1ZXVlXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgbGVuZ3RoXG4gIHZhciBwcmV2aW91c1xuXG4gIGlmIChjaGFyYWN0ZXIgIT09IGFzdGVyaXNrICYmIGNoYXJhY3RlciAhPT0gdW5kZXJzY29yZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgc3VidmFsdWUgPSBjaGFyYWN0ZXJcbiAgbWFya2VyID0gY2hhcmFjdGVyXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBpbmRleCsrXG4gIHF1ZXVlID0gJydcbiAgY2hhcmFjdGVyID0gJydcblxuICBpZiAocGVkYW50aWMgJiYgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoaW5kZXgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgcHJldmlvdXMgPSBjaGFyYWN0ZXJcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSBtYXJrZXIgJiYgKCFwZWRhbnRpYyB8fCAhd2hpdGVzcGFjZShwcmV2aW91cykpKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICAgIGlmICghdHJpbShxdWV1ZSkgfHwgcHJldmlvdXMgPT09IG1hcmtlcikge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwZWRhbnRpYyAmJiBtYXJrZXIgPT09IHVuZGVyc2NvcmUgJiYgd29yZChjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgcXVldWUgKz0gbWFya2VyXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBub3cgPSBlYXQubm93KClcbiAgICAgICAgbm93LmNvbHVtbisrXG4gICAgICAgIG5vdy5vZmZzZXQrK1xuXG4gICAgICAgIHJldHVybiBlYXQoc3VidmFsdWUgKyBxdWV1ZSArIG1hcmtlcikoe1xuICAgICAgICAgIHR5cGU6ICdlbXBoYXNpcycsXG4gICAgICAgICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUocXVldWUsIG5vdylcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcXVldWUgKz0gbWFya2VyXG4gICAgfVxuXG4gICAgaWYgKCFwZWRhbnRpYyAmJiBjaGFyYWN0ZXIgPT09IGJhY2tzbGFzaCkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2VzY2FwZScpXG5cbm1vZHVsZS5leHBvcnRzID0gZXNjYXBlXG5lc2NhcGUubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xuXG5mdW5jdGlvbiBlc2NhcGUoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBub2RlXG5cbiAgaWYgKHZhbHVlLmNoYXJBdCgwKSA9PT0gYmFja3NsYXNoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDEpXG5cbiAgICBpZiAoc2VsZi5lc2NhcGUuaW5kZXhPZihjaGFyYWN0ZXIpICE9PSAtMSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgICBub2RlID0ge3R5cGU6ICdicmVhayd9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlID0ge3R5cGU6ICd0ZXh0JywgdmFsdWU6IGNoYXJhY3Rlcn1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVhdChiYWNrc2xhc2ggKyBjaGFyYWN0ZXIpKG5vZGUpXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhdHhIZWFkaW5nXG5cbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgdGFiID0gJ1xcdCdcbnZhciBzcGFjZSA9ICcgJ1xudmFyIG51bWJlclNpZ24gPSAnIydcblxudmFyIG1heEZlbmNlQ291bnQgPSA2XG5cbmZ1bmN0aW9uIGF0eEhlYWRpbmcoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcbiAgdmFyIGluZGV4ID0gLTFcbiAgdmFyIG5vdyA9IGVhdC5ub3coKVxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY29udGVudCA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHF1ZXVlXG4gIHZhciBkZXB0aFxuXG4gIC8vIEVhdCBpbml0aWFsIHNwYWNpbmcuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciAhPT0gc3BhY2UgJiYgY2hhcmFjdGVyICE9PSB0YWIpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICAvLyBFYXQgaGFzaGVzLlxuICBkZXB0aCA9IDBcblxuICB3aGlsZSAoKytpbmRleCA8PSBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBudW1iZXJTaWduKSB7XG4gICAgICBpbmRleC0tXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgIGRlcHRoKytcbiAgfVxuXG4gIGlmIChkZXB0aCA+IG1heEZlbmNlQ291bnQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghZGVwdGggfHwgKCFwZWRhbnRpYyAmJiB2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSA9PT0gbnVtYmVyU2lnbikpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCArIDFcblxuICAvLyBFYXQgaW50ZXJtZWRpYXRlIHdoaXRlLXNwYWNlLlxuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYikge1xuICAgICAgaW5kZXgtLVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIC8vIEV4aXQgd2hlbiBub3QgaW4gcGVkYW50aWMgbW9kZSB3aXRob3V0IHNwYWNpbmcuXG4gIGlmICghcGVkYW50aWMgJiYgcXVldWUubGVuZ3RoID09PSAwICYmIGNoYXJhY3RlciAmJiBjaGFyYWN0ZXIgIT09IGxpbmVGZWVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIEVhdCBjb250ZW50LlxuICBzdWJ2YWx1ZSArPSBxdWV1ZVxuICBxdWV1ZSA9ICcnXG4gIGNvbnRlbnQgPSAnJ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKCFjaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09PSBsaW5lRmVlZCkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSBzcGFjZSAmJiBjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IG51bWJlclNpZ24pIHtcbiAgICAgIGNvbnRlbnQgKz0gcXVldWUgKyBjaGFyYWN0ZXJcbiAgICAgIHF1ZXVlID0gJydcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgd2hpbGUgKGNoYXJhY3RlciA9PT0gc3BhY2UgfHwgY2hhcmFjdGVyID09PSB0YWIpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgfVxuXG4gICAgLy8gYCNgIHdpdGhvdXQgYSBxdWV1ZSBpcyBwYXJ0IG9mIHRoZSBjb250ZW50LlxuICAgIGlmICghcGVkYW50aWMgJiYgY29udGVudCAmJiAhcXVldWUgJiYgY2hhcmFjdGVyID09PSBudW1iZXJTaWduKSB7XG4gICAgICBjb250ZW50ICs9IGNoYXJhY3RlclxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICB3aGlsZSAoY2hhcmFjdGVyID09PSBudW1iZXJTaWduKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgIH1cblxuICAgIHdoaWxlIChjaGFyYWN0ZXIgPT09IHNwYWNlIHx8IGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgIH1cblxuICAgIGluZGV4LS1cbiAgfVxuXG4gIG5vdy5jb2x1bW4gKz0gc3VidmFsdWUubGVuZ3RoXG4gIG5vdy5vZmZzZXQgKz0gc3VidmFsdWUubGVuZ3RoXG4gIHN1YnZhbHVlICs9IGNvbnRlbnQgKyBxdWV1ZVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgZGVwdGg6IGRlcHRoLFxuICAgIGNoaWxkcmVuOiBzZWxmLnRva2VuaXplSW5saW5lKGNvbnRlbnQsIG5vdylcbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldGV4dEhlYWRpbmdcblxudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHNwYWNlID0gJyAnXG52YXIgZXF1YWxzVG8gPSAnPSdcbnZhciBkYXNoID0gJy0nXG5cbnZhciBtYXhJbmRlbnQgPSAzXG5cbnZhciBlcXVhbHNUb0RlcHRoID0gMVxudmFyIGRhc2hEZXB0aCA9IDJcblxuZnVuY3Rpb24gc2V0ZXh0SGVhZGluZyhlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBub3cgPSBlYXQubm93KClcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAtMVxuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgY29udGVudFxuICB2YXIgcXVldWVcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgbWFya2VyXG4gIHZhciBkZXB0aFxuXG4gIC8vIEVhdCBpbml0aWFsIGluZGVudGF0aW9uLlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHNwYWNlIHx8IGluZGV4ID49IG1heEluZGVudCkge1xuICAgICAgaW5kZXgtLVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIC8vIEVhdCBjb250ZW50LlxuICBjb250ZW50ID0gJydcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UgfHwgY2hhcmFjdGVyID09PSB0YWIpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ICs9IHF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICBxdWV1ZSA9ICcnXG4gICAgfVxuICB9XG5cbiAgbm93LmNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgbm93Lm9mZnNldCArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgc3VidmFsdWUgKz0gY29udGVudCArIHF1ZXVlXG5cbiAgLy8gRW5zdXJlIHRoZSBjb250ZW50IGlzIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBhbmQgYSB2YWxpZCBtYXJrZXIuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICBtYXJrZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcblxuICBpZiAoY2hhcmFjdGVyICE9PSBsaW5lRmVlZCB8fCAobWFya2VyICE9PSBlcXVhbHNUbyAmJiBtYXJrZXIgIT09IGRhc2gpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcblxuICAvLyBFYXQgU2V0ZXh0LWxpbmUuXG4gIHF1ZXVlID0gbWFya2VyXG4gIGRlcHRoID0gbWFya2VyID09PSBlcXVhbHNUbyA/IGVxdWFsc1RvRGVwdGggOiBkYXNoRGVwdGhcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IG1hcmtlcikge1xuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGluZGV4LS1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gIH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUgKyBxdWV1ZSkoe1xuICAgIHR5cGU6ICdoZWFkaW5nJyxcbiAgICBkZXB0aDogZGVwdGgsXG4gICAgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgbm93KVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciBvcGVuQ2xvc2VUYWcgPSByZXF1aXJlKCcuLi91dGlsL2h0bWwnKS5vcGVuQ2xvc2VUYWdcblxubW9kdWxlLmV4cG9ydHMgPSBibG9ja0h0bWxcblxudmFyIHRhYiA9ICdcXHQnXG52YXIgc3BhY2UgPSAnICdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgbGVzc1RoYW4gPSAnPCdcblxudmFyIHJhd09wZW5FeHByZXNzaW9uID0gL148KHNjcmlwdHxwcmV8c3R5bGUpKD89KFxcc3w+fCQpKS9pXG52YXIgcmF3Q2xvc2VFeHByZXNzaW9uID0gLzxcXC8oc2NyaXB0fHByZXxzdHlsZSk+L2lcbnZhciBjb21tZW50T3BlbkV4cHJlc3Npb24gPSAvXjwhLS0vXG52YXIgY29tbWVudENsb3NlRXhwcmVzc2lvbiA9IC8tLT4vXG52YXIgaW5zdHJ1Y3Rpb25PcGVuRXhwcmVzc2lvbiA9IC9ePFxcPy9cbnZhciBpbnN0cnVjdGlvbkNsb3NlRXhwcmVzc2lvbiA9IC9cXD8+L1xudmFyIGRpcmVjdGl2ZU9wZW5FeHByZXNzaW9uID0gL148IVtBLVphLXpdL1xudmFyIGRpcmVjdGl2ZUNsb3NlRXhwcmVzc2lvbiA9IC8+L1xudmFyIGNkYXRhT3BlbkV4cHJlc3Npb24gPSAvXjwhXFxbQ0RBVEFcXFsvXG52YXIgY2RhdGFDbG9zZUV4cHJlc3Npb24gPSAvXV0+L1xudmFyIGVsZW1lbnRDbG9zZUV4cHJlc3Npb24gPSAvXiQvXG52YXIgb3RoZXJFbGVtZW50T3BlbkV4cHJlc3Npb24gPSBuZXcgUmVnRXhwKG9wZW5DbG9zZVRhZy5zb3VyY2UgKyAnXFxcXHMqJCcpXG5cbmZ1bmN0aW9uIGJsb2NrSHRtbChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBibG9ja3MgPSBzZWxmLm9wdGlvbnMuYmxvY2tzLmpvaW4oJ3wnKVxuICB2YXIgZWxlbWVudE9wZW5FeHByZXNzaW9uID0gbmV3IFJlZ0V4cChcbiAgICAnXjwvPygnICsgYmxvY2tzICsgJykoPz0oXFxcXHN8Lz8+fCQpKScsXG4gICAgJ2knXG4gIClcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBuZXh0XG4gIHZhciBsaW5lXG4gIHZhciBvZmZzZXRcbiAgdmFyIGNoYXJhY3RlclxuICB2YXIgY291bnRcbiAgdmFyIHNlcXVlbmNlXG4gIHZhciBzdWJ2YWx1ZVxuXG4gIHZhciBzZXF1ZW5jZXMgPSBbXG4gICAgW3Jhd09wZW5FeHByZXNzaW9uLCByYXdDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtjb21tZW50T3BlbkV4cHJlc3Npb24sIGNvbW1lbnRDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtpbnN0cnVjdGlvbk9wZW5FeHByZXNzaW9uLCBpbnN0cnVjdGlvbkNsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2RpcmVjdGl2ZU9wZW5FeHByZXNzaW9uLCBkaXJlY3RpdmVDbG9zZUV4cHJlc3Npb24sIHRydWVdLFxuICAgIFtjZGF0YU9wZW5FeHByZXNzaW9uLCBjZGF0YUNsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW2VsZW1lbnRPcGVuRXhwcmVzc2lvbiwgZWxlbWVudENsb3NlRXhwcmVzc2lvbiwgdHJ1ZV0sXG4gICAgW290aGVyRWxlbWVudE9wZW5FeHByZXNzaW9uLCBlbGVtZW50Q2xvc2VFeHByZXNzaW9uLCBmYWxzZV1cbiAgXVxuXG4gIC8vIEVhdCBpbml0aWFsIHNwYWNpbmcuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBsZXNzVGhhbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgbmV4dCA9IHZhbHVlLmluZGV4T2YobGluZUZlZWQsIGluZGV4ICsgMSlcbiAgbmV4dCA9IG5leHQgPT09IC0xID8gbGVuZ3RoIDogbmV4dFxuICBsaW5lID0gdmFsdWUuc2xpY2UoaW5kZXgsIG5leHQpXG4gIG9mZnNldCA9IC0xXG4gIGNvdW50ID0gc2VxdWVuY2VzLmxlbmd0aFxuXG4gIHdoaWxlICgrK29mZnNldCA8IGNvdW50KSB7XG4gICAgaWYgKHNlcXVlbmNlc1tvZmZzZXRdWzBdLnRlc3QobGluZSkpIHtcbiAgICAgIHNlcXVlbmNlID0gc2VxdWVuY2VzW29mZnNldF1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKCFzZXF1ZW5jZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiBzZXF1ZW5jZVsyXVxuICB9XG5cbiAgaW5kZXggPSBuZXh0XG5cbiAgaWYgKCFzZXF1ZW5jZVsxXS50ZXN0KGxpbmUpKSB7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBuZXh0ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZCwgaW5kZXggKyAxKVxuICAgICAgbmV4dCA9IG5leHQgPT09IC0xID8gbGVuZ3RoIDogbmV4dFxuICAgICAgbGluZSA9IHZhbHVlLnNsaWNlKGluZGV4ICsgMSwgbmV4dClcblxuICAgICAgaWYgKHNlcXVlbmNlWzFdLnRlc3QobGluZSkpIHtcbiAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICBpbmRleCA9IG5leHRcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gbmV4dFxuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaW5kZXgpXG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkoe3R5cGU6ICdodG1sJywgdmFsdWU6IHN1YnZhbHVlfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYWxwaGFiZXRpY2FsID0gcmVxdWlyZSgnaXMtYWxwaGFiZXRpY2FsJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvdGFnJylcbnZhciB0YWcgPSByZXF1aXJlKCcuLi91dGlsL2h0bWwnKS50YWdcblxubW9kdWxlLmV4cG9ydHMgPSBpbmxpbmVIVE1MXG5pbmxpbmVIVE1MLmxvY2F0b3IgPSBsb2NhdGVcblxudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgcXVlc3Rpb25NYXJrID0gJz8nXG52YXIgZXhjbGFtYXRpb25NYXJrID0gJyEnXG52YXIgc2xhc2ggPSAnLydcblxudmFyIGh0bWxMaW5rT3BlbkV4cHJlc3Npb24gPSAvXjxhIC9pXG52YXIgaHRtbExpbmtDbG9zZUV4cHJlc3Npb24gPSAvXjxcXC9hPi9pXG5cbmZ1bmN0aW9uIGlubGluZUhUTUwoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHN1YnZhbHVlXG5cbiAgaWYgKHZhbHVlLmNoYXJBdCgwKSAhPT0gbGVzc1RoYW4gfHwgbGVuZ3RoIDwgMykge1xuICAgIHJldHVyblxuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDEpXG5cbiAgaWYgKFxuICAgICFhbHBoYWJldGljYWwoY2hhcmFjdGVyKSAmJlxuICAgIGNoYXJhY3RlciAhPT0gcXVlc3Rpb25NYXJrICYmXG4gICAgY2hhcmFjdGVyICE9PSBleGNsYW1hdGlvbk1hcmsgJiZcbiAgICBjaGFyYWN0ZXIgIT09IHNsYXNoXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5tYXRjaCh0YWcpXG5cbiAgaWYgKCFzdWJ2YWx1ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbm90IHVzZWQgeWV0LiAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHN1YnZhbHVlID0gc3VidmFsdWVbMF1cblxuICBpZiAoIXNlbGYuaW5MaW5rICYmIGh0bWxMaW5rT3BlbkV4cHJlc3Npb24udGVzdChzdWJ2YWx1ZSkpIHtcbiAgICBzZWxmLmluTGluayA9IHRydWVcbiAgfSBlbHNlIGlmIChzZWxmLmluTGluayAmJiBodG1sTGlua0Nsb3NlRXhwcmVzc2lvbi50ZXN0KHN1YnZhbHVlKSkge1xuICAgIHNlbGYuaW5MaW5rID0gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHt0eXBlOiAnaHRtbCcsIHZhbHVlOiBzdWJ2YWx1ZX0pXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL2xpbmsnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpbmtcbmxpbmsubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIGV4Y2xhbWF0aW9uTWFyayA9ICchJ1xudmFyIHF1b3RhdGlvbk1hcmsgPSAnXCInXG52YXIgYXBvc3Ryb3BoZSA9IFwiJ1wiXG52YXIgbGVmdFBhcmVudGhlc2lzID0gJygnXG52YXIgcmlnaHRQYXJlbnRoZXNpcyA9ICcpJ1xudmFyIGxlc3NUaGFuID0gJzwnXG52YXIgZ3JlYXRlclRoYW4gPSAnPidcbnZhciBsZWZ0U3F1YXJlQnJhY2tldCA9ICdbJ1xudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xudmFyIHJpZ2h0U3F1YXJlQnJhY2tldCA9ICddJ1xudmFyIGdyYXZlQWNjZW50ID0gJ2AnXG5cbmZ1bmN0aW9uIGxpbmsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgc3VidmFsdWUgPSAnJ1xuICB2YXIgaW5kZXggPSAwXG4gIHZhciBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMClcbiAgdmFyIHBlZGFudGljID0gc2VsZi5vcHRpb25zLnBlZGFudGljXG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcmtcbiAgdmFyIGdmbSA9IHNlbGYub3B0aW9ucy5nZm1cbiAgdmFyIGNsb3NlZFxuICB2YXIgY291bnRcbiAgdmFyIG9wZW5pbmdcbiAgdmFyIGJlZm9yZVVSTFxuICB2YXIgYmVmb3JlVGl0bGVcbiAgdmFyIHN1YnF1ZXVlXG4gIHZhciBoYXNNYXJrZXJcbiAgdmFyIGlzSW1hZ2VcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIG1hcmtlclxuICB2YXIgbGVuZ3RoXG4gIHZhciB0aXRsZVxuICB2YXIgZGVwdGhcbiAgdmFyIHF1ZXVlXG4gIHZhciB1cmxcbiAgdmFyIG5vd1xuICB2YXIgZXhpdFxuICB2YXIgbm9kZVxuXG4gIC8vIERldGVjdCB3aGV0aGVyIHRoaXMgaXMgYW4gaW1hZ2UuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGV4Y2xhbWF0aW9uTWFyaykge1xuICAgIGlzSW1hZ2UgPSB0cnVlXG4gICAgc3VidmFsdWUgPSBjaGFyYWN0ZXJcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgfVxuXG4gIC8vIEVhdCB0aGUgb3BlbmluZy5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIEV4aXQgd2hlbiB0aGlzIGlzIGEgbGluayBhbmQgd2XigJlyZSBhbHJlYWR5IGluc2lkZSBhIGxpbmsuXG4gIGlmICghaXNJbWFnZSAmJiBzZWxmLmluTGluaykge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcbiAgaW5kZXgrK1xuXG4gIC8vIEVhdCB0aGUgY29udGVudC5cbiAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoXG4gIG5vdyA9IGVhdC5ub3coKVxuICBkZXB0aCA9IDBcblxuICBub3cuY29sdW1uICs9IGluZGV4XG4gIG5vdy5vZmZzZXQgKz0gaW5kZXhcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgc3VicXVldWUgPSBjaGFyYWN0ZXJcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGdyYXZlQWNjZW50KSB7XG4gICAgICAvLyBJbmxpbmUtY29kZSBpbiBsaW5rIGNvbnRlbnQuXG4gICAgICBjb3VudCA9IDFcblxuICAgICAgd2hpbGUgKHZhbHVlLmNoYXJBdChpbmRleCArIDEpID09PSBncmF2ZUFjY2VudCkge1xuICAgICAgICBzdWJxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBjb3VudCsrXG4gICAgICB9XG5cbiAgICAgIGlmICghb3BlbmluZykge1xuICAgICAgICBvcGVuaW5nID0gY291bnRcbiAgICAgIH0gZWxzZSBpZiAoY291bnQgPj0gb3BlbmluZykge1xuICAgICAgICBvcGVuaW5nID0gMFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIC8vIEFsbG93IGJyYWNrZXRzIHRvIGJlIGVzY2FwZWQuXG4gICAgICBpbmRleCsrXG4gICAgICBzdWJxdWV1ZSArPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgfSBlbHNlIGlmICgoIW9wZW5pbmcgfHwgZ2ZtKSAmJiBjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0KSB7XG4gICAgICAvLyBJbiBHRk0gbW9kZSwgYnJhY2tldHMgaW4gY29kZSBzdGlsbCBjb3VudC4gIEluIGFsbCBvdGhlciBtb2RlcyxcbiAgICAgIC8vIHRoZXkgZG9u4oCZdC5cbiAgICAgIGRlcHRoKytcbiAgICB9IGVsc2UgaWYgKCghb3BlbmluZyB8fCBnZm0pICYmIGNoYXJhY3RlciA9PT0gcmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBpZiAoZGVwdGgpIHtcbiAgICAgICAgZGVwdGgtLVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCArIDEpICE9PSBsZWZ0UGFyZW50aGVzaXMpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnF1ZXVlICs9IGxlZnRQYXJlbnRoZXNpc1xuICAgICAgICBjbG9zZWQgPSB0cnVlXG4gICAgICAgIGluZGV4KytcblxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHF1ZXVlICs9IHN1YnF1ZXVlXG4gICAgc3VicXVldWUgPSAnJ1xuICAgIGluZGV4KytcbiAgfVxuXG4gIC8vIEVhdCB0aGUgY29udGVudCBjbG9zaW5nLlxuICBpZiAoIWNsb3NlZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29udGVudCA9IHF1ZXVlXG4gIHN1YnZhbHVlICs9IHF1ZXVlICsgc3VicXVldWVcbiAgaW5kZXgrK1xuXG4gIC8vIEVhdCB3aGl0ZS1zcGFjZS5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgLy8gRWF0IHRoZSBVUkwuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcbiAgcXVldWUgPSAnJ1xuICBiZWZvcmVVUkwgPSBzdWJ2YWx1ZVxuXG4gIGlmIChjaGFyYWN0ZXIgPT09IGxlc3NUaGFuKSB7XG4gICAgaW5kZXgrK1xuICAgIGJlZm9yZVVSTCArPSBsZXNzVGhhblxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT09IGdyZWF0ZXJUaGFuKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChjb21tb25tYXJrICYmIGNoYXJhY3RlciA9PT0gbGluZUZlZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXgpICE9PSBncmVhdGVyVGhhbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc3VidmFsdWUgKz0gbGVzc1RoYW4gKyBxdWV1ZSArIGdyZWF0ZXJUaGFuXG4gICAgdXJsID0gcXVldWVcbiAgICBpbmRleCsrXG4gIH0gZWxzZSB7XG4gICAgY2hhcmFjdGVyID0gbnVsbFxuICAgIHN1YnF1ZXVlID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoXG4gICAgICAgIHN1YnF1ZXVlICYmXG4gICAgICAgIChjaGFyYWN0ZXIgPT09IHF1b3RhdGlvbk1hcmsgfHxcbiAgICAgICAgICBjaGFyYWN0ZXIgPT09IGFwb3N0cm9waGUgfHxcbiAgICAgICAgICAoY29tbW9ubWFyayAmJiBjaGFyYWN0ZXIgPT09IGxlZnRQYXJlbnRoZXNpcykpXG4gICAgICApIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKHdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICBpZiAoIXBlZGFudGljKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGVmdFBhcmVudGhlc2lzKSB7XG4gICAgICAgICAgZGVwdGgrK1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gcmlnaHRQYXJlbnRoZXNpcykge1xuICAgICAgICAgIGlmIChkZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZXB0aC0tXG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZSArPSBzdWJxdWV1ZVxuICAgICAgICBzdWJxdWV1ZSA9ICcnXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgICAgcXVldWUgKz0gYmFja3NsYXNoXG4gICAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIH1cblxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gICAgdXJsID0gcXVldWVcbiAgICBpbmRleCA9IHN1YnZhbHVlLmxlbmd0aFxuICB9XG5cbiAgLy8gRWF0IHdoaXRlLXNwYWNlLlxuICBxdWV1ZSA9ICcnXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKCF3aGl0ZXNwYWNlKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICBzdWJ2YWx1ZSArPSBxdWV1ZVxuXG4gIC8vIEVhdCB0aGUgdGl0bGUuXG4gIGlmIChcbiAgICBxdWV1ZSAmJlxuICAgIChjaGFyYWN0ZXIgPT09IHF1b3RhdGlvbk1hcmsgfHxcbiAgICAgIGNoYXJhY3RlciA9PT0gYXBvc3Ryb3BoZSB8fFxuICAgICAgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSBsZWZ0UGFyZW50aGVzaXMpKVxuICApIHtcbiAgICBpbmRleCsrXG4gICAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gICAgcXVldWUgPSAnJ1xuICAgIG1hcmtlciA9IGNoYXJhY3RlciA9PT0gbGVmdFBhcmVudGhlc2lzID8gcmlnaHRQYXJlbnRoZXNpcyA6IGNoYXJhY3RlclxuICAgIGJlZm9yZVRpdGxlID0gc3VidmFsdWVcblxuICAgIC8vIEluIGNvbW1vbm1hcmstbW9kZSwgdGhpbmdzIGFyZSBwcmV0dHkgZWFzeTogdGhlIG1hcmtlciBjYW5ub3Qgb2NjdXJcbiAgICAvLyBpbnNpZGUgdGhlIHRpdGxlLiAgTm9uLWNvbW1vbm1hcmsgZG9lcywgaG93ZXZlciwgc3VwcG9ydCBuZXN0ZWRcbiAgICAvLyBkZWxpbWl0ZXJzLlxuICAgIGlmIChjb21tb25tYXJrKSB7XG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IG1hcmtlcikge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgICAgICBxdWV1ZSArPSBiYWNrc2xhc2hcbiAgICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIGluZGV4KytcbiAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICB9XG5cbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciAhPT0gbWFya2VyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aXRsZSA9IHF1ZXVlXG4gICAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICAgIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YnF1ZXVlID0gJydcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSBtYXJrZXIpIHtcbiAgICAgICAgICBpZiAoaGFzTWFya2VyKSB7XG4gICAgICAgICAgICBxdWV1ZSArPSBtYXJrZXIgKyBzdWJxdWV1ZVxuICAgICAgICAgICAgc3VicXVldWUgPSAnJ1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGhhc01hcmtlciA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmICghaGFzTWFya2VyKSB7XG4gICAgICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSByaWdodFBhcmVudGhlc2lzKSB7XG4gICAgICAgICAgc3VidmFsdWUgKz0gcXVldWUgKyBtYXJrZXIgKyBzdWJxdWV1ZVxuICAgICAgICAgIHRpdGxlID0gcXVldWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKHdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICAgIHN1YnF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1ZXVlICs9IG1hcmtlciArIHN1YnF1ZXVlICsgY2hhcmFjdGVyXG4gICAgICAgICAgc3VicXVldWUgPSAnJ1xuICAgICAgICAgIGhhc01hcmtlciA9IGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IHJpZ2h0UGFyZW50aGVzaXMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIG5ldmVyIHVzZWQgKHlldCkgKi9cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBzdWJ2YWx1ZSArPSByaWdodFBhcmVudGhlc2lzXG5cbiAgdXJsID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUodXJsKSwgZWF0KGJlZm9yZVVSTCkudGVzdCgpLmVuZCwge1xuICAgIG5vblRlcm1pbmF0ZWQ6IGZhbHNlXG4gIH0pXG5cbiAgaWYgKHRpdGxlKSB7XG4gICAgYmVmb3JlVGl0bGUgPSBlYXQoYmVmb3JlVGl0bGUpLnRlc3QoKS5lbmRcbiAgICB0aXRsZSA9IHNlbGYuZGVjb2RlLnJhdyhzZWxmLnVuZXNjYXBlKHRpdGxlKSwgYmVmb3JlVGl0bGUpXG4gIH1cblxuICBub2RlID0ge1xuICAgIHR5cGU6IGlzSW1hZ2UgPyAnaW1hZ2UnIDogJ2xpbmsnLFxuICAgIHRpdGxlOiB0aXRsZSB8fCBudWxsLFxuICAgIHVybDogdXJsXG4gIH1cblxuICBpZiAoaXNJbWFnZSkge1xuICAgIG5vZGUuYWx0ID0gc2VsZi5kZWNvZGUucmF3KHNlbGYudW5lc2NhcGUoY29udGVudCksIG5vdykgfHwgbnVsbFxuICB9IGVsc2Uge1xuICAgIGV4aXQgPSBzZWxmLmVudGVyTGluaygpXG4gICAgbm9kZS5jaGlsZHJlbiA9IHNlbGYudG9rZW5pemVJbmxpbmUoY29udGVudCwgbm93KVxuICAgIGV4aXQoKVxuICB9XG5cbiAgcmV0dXJuIGVhdChzdWJ2YWx1ZSkobm9kZSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIHJlcGVhdCA9IHJlcXVpcmUoJ3JlcGVhdC1zdHJpbmcnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBnZXRJbmRlbnQgPSByZXF1aXJlKCcuLi91dGlsL2dldC1pbmRlbnRhdGlvbicpXG52YXIgcmVtb3ZlSW5kZW50ID0gcmVxdWlyZSgnLi4vdXRpbC9yZW1vdmUtaW5kZW50YXRpb24nKVxudmFyIGludGVycnVwdCA9IHJlcXVpcmUoJy4uL3V0aWwvaW50ZXJydXB0JylcblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0XG5cbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcbnZhciBwbHVzU2lnbiA9ICcrJ1xudmFyIGRhc2ggPSAnLSdcbnZhciBkb3QgPSAnLidcbnZhciBzcGFjZSA9ICcgJ1xudmFyIGxpbmVGZWVkID0gJ1xcbidcbnZhciB0YWIgPSAnXFx0J1xudmFyIHJpZ2h0UGFyZW50aGVzaXMgPSAnKSdcbnZhciBsb3dlcmNhc2VYID0gJ3gnXG5cbnZhciB0YWJTaXplID0gNFxudmFyIGxvb3NlTGlzdEl0ZW1FeHByZXNzaW9uID0gL1xcblxcbig/IVxccyokKS9cbnZhciB0YXNrSXRlbUV4cHJlc3Npb24gPSAvXlxcWyhbIFhcXHR4XSldWyBcXHRdL1xudmFyIGJ1bGxldEV4cHJlc3Npb24gPSAvXihbIFxcdF0qKShbKistXXxcXGQrWy4pXSkoIHsxLDR9KD8hICl8IHxcXHR8JHwoPz1cXG4pKShbXlxcbl0qKS9cbnZhciBwZWRhbnRpY0J1bGxldEV4cHJlc3Npb24gPSAvXihbIFxcdF0qKShbKistXXxcXGQrWy4pXSkoWyBcXHRdKykvXG52YXIgaW5pdGlhbEluZGVudEV4cHJlc3Npb24gPSAvXiggezEsNH18XFx0KT8vZ21cblxuZnVuY3Rpb24gbGlzdChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcmtcbiAgdmFyIHBlZGFudGljID0gc2VsZi5vcHRpb25zLnBlZGFudGljXG4gIHZhciB0b2tlbml6ZXJzID0gc2VsZi5ibG9ja1Rva2VuaXplcnNcbiAgdmFyIGludGVydXB0b3JzID0gc2VsZi5pbnRlcnJ1cHRMaXN0XG4gIHZhciBpbmRleCA9IDBcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgc3RhcnQgPSBudWxsXG4gIHZhciBzaXplXG4gIHZhciBxdWV1ZVxuICB2YXIgb3JkZXJlZFxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBtYXJrZXJcbiAgdmFyIG5leHRJbmRleFxuICB2YXIgc3RhcnRJbmRleFxuICB2YXIgcHJlZml4ZWRcbiAgdmFyIGN1cnJlbnRNYXJrZXJcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGxpbmVcbiAgdmFyIHByZXZpb3VzRW1wdHlcbiAgdmFyIGVtcHR5XG4gIHZhciBpdGVtc1xuICB2YXIgYWxsTGluZXNcbiAgdmFyIGVtcHR5TGluZXNcbiAgdmFyIGl0ZW1cbiAgdmFyIGVudGVyVG9wXG4gIHZhciBleGl0QmxvY2txdW90ZVxuICB2YXIgc3ByZWFkID0gZmFsc2VcbiAgdmFyIG5vZGVcbiAgdmFyIG5vd1xuICB2YXIgZW5kXG4gIHZhciBpbmRlbnRlZFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgIT09IHRhYiAmJiBjaGFyYWN0ZXIgIT09IHNwYWNlKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcbiAgfVxuXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoY2hhcmFjdGVyID09PSBhc3RlcmlzayB8fCBjaGFyYWN0ZXIgPT09IHBsdXNTaWduIHx8IGNoYXJhY3RlciA9PT0gZGFzaCkge1xuICAgIG1hcmtlciA9IGNoYXJhY3RlclxuICAgIG9yZGVyZWQgPSBmYWxzZVxuICB9IGVsc2Uge1xuICAgIG9yZGVyZWQgPSB0cnVlXG4gICAgcXVldWUgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgIGlmICghZGVjaW1hbChjaGFyYWN0ZXIpKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChcbiAgICAgICFxdWV1ZSB8fFxuICAgICAgIShjaGFyYWN0ZXIgPT09IGRvdCB8fCAoY29tbW9ubWFyayAmJiBjaGFyYWN0ZXIgPT09IHJpZ2h0UGFyZW50aGVzaXMpKVxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLyogU2xpZ2h0bHkgYWJ1c2luZyBgc2lsZW50YCBtb2RlLCB3aG9zZSBnb2FsIGlzIHRvIG1ha2UgaW50ZXJydXB0aW5nXG4gICAgICogcGFyYWdyYXBocyB3b3JrLlxuICAgICAqIFdlbGwsIHRoYXTigJlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50IHRvIGRvIGhlcmU6IGRvbuKAmXQgaW50ZXJydXB0OlxuICAgICAqIDIuIGhlcmUsIGJlY2F1c2UgdGhlIOKAnGxpc3TigJ0gZG9lc27igJl0IHN0YXJ0IHdpdGggYDFgLiAqL1xuICAgIGlmIChzaWxlbnQgJiYgcXVldWUgIT09ICcxJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc3RhcnQgPSBwYXJzZUludChxdWV1ZSwgMTApXG4gICAgbWFya2VyID0gY2hhcmFjdGVyXG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoKytpbmRleClcblxuICBpZiAoXG4gICAgY2hhcmFjdGVyICE9PSBzcGFjZSAmJlxuICAgIGNoYXJhY3RlciAhPT0gdGFiICYmXG4gICAgKHBlZGFudGljIHx8IChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkICYmIGNoYXJhY3RlciAhPT0gJycpKVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaW5kZXggPSAwXG4gIGl0ZW1zID0gW11cbiAgYWxsTGluZXMgPSBbXVxuICBlbXB0eUxpbmVzID0gW11cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBuZXh0SW5kZXggPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkLCBpbmRleClcbiAgICBzdGFydEluZGV4ID0gaW5kZXhcbiAgICBwcmVmaXhlZCA9IGZhbHNlXG4gICAgaW5kZW50ZWQgPSBmYWxzZVxuXG4gICAgaWYgKG5leHRJbmRleCA9PT0gLTEpIHtcbiAgICAgIG5leHRJbmRleCA9IGxlbmd0aFxuICAgIH1cblxuICAgIHNpemUgPSAwXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICAgIHNpemUgKz0gdGFiU2l6ZSAtIChzaXplICUgdGFiU2l6ZSlcbiAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSkge1xuICAgICAgICBzaXplKytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICBpZiAoaXRlbSAmJiBzaXplID49IGl0ZW0uaW5kZW50KSB7XG4gICAgICBpbmRlbnRlZCA9IHRydWVcbiAgICB9XG5cbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgY3VycmVudE1hcmtlciA9IG51bGxcblxuICAgIGlmICghaW5kZW50ZWQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2hhcmFjdGVyID09PSBhc3RlcmlzayB8fFxuICAgICAgICBjaGFyYWN0ZXIgPT09IHBsdXNTaWduIHx8XG4gICAgICAgIGNoYXJhY3RlciA9PT0gZGFzaFxuICAgICAgKSB7XG4gICAgICAgIGN1cnJlbnRNYXJrZXIgPSBjaGFyYWN0ZXJcbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBzaXplKytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlID0gJydcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICAgICAgICBpZiAoIWRlY2ltYWwoY2hhcmFjdGVyKSkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgIH1cblxuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG4gICAgICAgIGluZGV4KytcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgcXVldWUgJiZcbiAgICAgICAgICAoY2hhcmFjdGVyID09PSBkb3QgfHwgKGNvbW1vbm1hcmsgJiYgY2hhcmFjdGVyID09PSByaWdodFBhcmVudGhlc2lzKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY3VycmVudE1hcmtlciA9IGNoYXJhY3RlclxuICAgICAgICAgIHNpemUgKz0gcXVldWUubGVuZ3RoICsgMVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50TWFya2VyKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSB0YWIpIHtcbiAgICAgICAgICBzaXplICs9IHRhYlNpemUgLSAoc2l6ZSAlIHRhYlNpemUpXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgICAgICBlbmQgPSBpbmRleCArIHRhYlNpemVcblxuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmNoYXJBdChpbmRleCkgIT09IHNwYWNlKSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICAgIHNpemUrK1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpbmRleCA9PT0gZW5kICYmIHZhbHVlLmNoYXJBdChpbmRleCkgPT09IHNwYWNlKSB7XG4gICAgICAgICAgICBpbmRleCAtPSB0YWJTaXplIC0gMVxuICAgICAgICAgICAgc2l6ZSAtPSB0YWJTaXplIC0gMVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgIT09IGxpbmVGZWVkICYmIGNoYXJhY3RlciAhPT0gJycpIHtcbiAgICAgICAgICBjdXJyZW50TWFya2VyID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRNYXJrZXIpIHtcbiAgICAgIGlmICghcGVkYW50aWMgJiYgbWFya2VyICE9PSBjdXJyZW50TWFya2VyKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHByZWZpeGVkID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNvbW1vbm1hcmsgJiYgIWluZGVudGVkICYmIHZhbHVlLmNoYXJBdChzdGFydEluZGV4KSA9PT0gc3BhY2UpIHtcbiAgICAgICAgaW5kZW50ZWQgPSB0cnVlXG4gICAgICB9IGVsc2UgaWYgKGNvbW1vbm1hcmsgJiYgaXRlbSkge1xuICAgICAgICBpbmRlbnRlZCA9IHNpemUgPj0gaXRlbS5pbmRlbnQgfHwgc2l6ZSA+IHRhYlNpemVcbiAgICAgIH1cblxuICAgICAgcHJlZml4ZWQgPSBmYWxzZVxuICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgfVxuXG4gICAgbGluZSA9IHZhbHVlLnNsaWNlKHN0YXJ0SW5kZXgsIG5leHRJbmRleClcbiAgICBjb250ZW50ID0gc3RhcnRJbmRleCA9PT0gaW5kZXggPyBsaW5lIDogdmFsdWUuc2xpY2UoaW5kZXgsIG5leHRJbmRleClcblxuICAgIGlmIChcbiAgICAgIGN1cnJlbnRNYXJrZXIgPT09IGFzdGVyaXNrIHx8XG4gICAgICBjdXJyZW50TWFya2VyID09PSB1bmRlcnNjb3JlIHx8XG4gICAgICBjdXJyZW50TWFya2VyID09PSBkYXNoXG4gICAgKSB7XG4gICAgICBpZiAodG9rZW5pemVycy50aGVtYXRpY0JyZWFrLmNhbGwoc2VsZiwgZWF0LCBsaW5lLCB0cnVlKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHByZXZpb3VzRW1wdHkgPSBlbXB0eVxuICAgIGVtcHR5ID0gIXByZWZpeGVkICYmICF0cmltKGNvbnRlbnQpLmxlbmd0aFxuXG4gICAgaWYgKGluZGVudGVkICYmIGl0ZW0pIHtcbiAgICAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH0gZWxzZSBpZiAocHJlZml4ZWQpIHtcbiAgICAgIGlmIChlbXB0eUxpbmVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBzcHJlYWQgPSB0cnVlXG4gICAgICAgIGl0ZW0udmFsdWUucHVzaCgnJylcbiAgICAgICAgaXRlbS50cmFpbCA9IGVtcHR5TGluZXMuY29uY2F0KClcbiAgICAgIH1cblxuICAgICAgaXRlbSA9IHtcbiAgICAgICAgdmFsdWU6IFtsaW5lXSxcbiAgICAgICAgaW5kZW50OiBzaXplLFxuICAgICAgICB0cmFpbDogW11cbiAgICAgIH1cblxuICAgICAgaXRlbXMucHVzaChpdGVtKVxuICAgICAgYWxsTGluZXMgPSBhbGxMaW5lcy5jb25jYXQoZW1wdHlMaW5lcywgbGluZSlcbiAgICAgIGVtcHR5TGluZXMgPSBbXVxuICAgIH0gZWxzZSBpZiAoZW1wdHkpIHtcbiAgICAgIGlmIChwcmV2aW91c0VtcHR5ICYmICFjb21tb25tYXJrKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGVtcHR5TGluZXMucHVzaChsaW5lKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJldmlvdXNFbXB0eSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoaW50ZXJydXB0KGludGVydXB0b3JzLCB0b2tlbml6ZXJzLCBzZWxmLCBbZWF0LCBsaW5lLCB0cnVlXSkpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaXRlbS52YWx1ZSA9IGl0ZW0udmFsdWUuY29uY2F0KGVtcHR5TGluZXMsIGxpbmUpXG4gICAgICBhbGxMaW5lcyA9IGFsbExpbmVzLmNvbmNhdChlbXB0eUxpbmVzLCBsaW5lKVxuICAgICAgZW1wdHlMaW5lcyA9IFtdXG4gICAgfVxuXG4gICAgaW5kZXggPSBuZXh0SW5kZXggKyAxXG4gIH1cblxuICBub2RlID0gZWF0KGFsbExpbmVzLmpvaW4obGluZUZlZWQpKS5yZXNldCh7XG4gICAgdHlwZTogJ2xpc3QnLFxuICAgIG9yZGVyZWQ6IG9yZGVyZWQsXG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIHNwcmVhZDogc3ByZWFkLFxuICAgIGNoaWxkcmVuOiBbXVxuICB9KVxuXG4gIGVudGVyVG9wID0gc2VsZi5lbnRlckxpc3QoKVxuICBleGl0QmxvY2txdW90ZSA9IHNlbGYuZW50ZXJCbG9jaygpXG4gIGluZGV4ID0gLTFcbiAgbGVuZ3RoID0gaXRlbXMubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpdGVtID0gaXRlbXNbaW5kZXhdLnZhbHVlLmpvaW4obGluZUZlZWQpXG4gICAgbm93ID0gZWF0Lm5vdygpXG5cbiAgICBlYXQoaXRlbSkobGlzdEl0ZW0oc2VsZiwgaXRlbSwgbm93KSwgbm9kZSlcblxuICAgIGl0ZW0gPSBpdGVtc1tpbmRleF0udHJhaWwuam9pbihsaW5lRmVlZClcblxuICAgIGlmIChpbmRleCAhPT0gbGVuZ3RoIC0gMSkge1xuICAgICAgaXRlbSArPSBsaW5lRmVlZFxuICAgIH1cblxuICAgIGVhdChpdGVtKVxuICB9XG5cbiAgZW50ZXJUb3AoKVxuICBleGl0QmxvY2txdW90ZSgpXG5cbiAgcmV0dXJuIG5vZGVcbn1cblxuZnVuY3Rpb24gbGlzdEl0ZW0oY3R4LCB2YWx1ZSwgcG9zaXRpb24pIHtcbiAgdmFyIG9mZnNldHMgPSBjdHgub2Zmc2V0XG4gIHZhciBmbiA9IGN0eC5vcHRpb25zLnBlZGFudGljID8gcGVkYW50aWNMaXN0SXRlbSA6IG5vcm1hbExpc3RJdGVtXG4gIHZhciBjaGVja2VkID0gbnVsbFxuICB2YXIgdGFza1xuICB2YXIgaW5kZW50XG5cbiAgdmFsdWUgPSBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpXG5cbiAgaWYgKGN0eC5vcHRpb25zLmdmbSkge1xuICAgIHRhc2sgPSB2YWx1ZS5tYXRjaCh0YXNrSXRlbUV4cHJlc3Npb24pXG5cbiAgICBpZiAodGFzaykge1xuICAgICAgaW5kZW50ID0gdGFza1swXS5sZW5ndGhcbiAgICAgIGNoZWNrZWQgPSB0YXNrWzFdLnRvTG93ZXJDYXNlKCkgPT09IGxvd2VyY2FzZVhcbiAgICAgIG9mZnNldHNbcG9zaXRpb24ubGluZV0gKz0gaW5kZW50XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKGluZGVudClcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdsaXN0SXRlbScsXG4gICAgc3ByZWFkOiBsb29zZUxpc3RJdGVtRXhwcmVzc2lvbi50ZXN0KHZhbHVlKSxcbiAgICBjaGVja2VkOiBjaGVja2VkLFxuICAgIGNoaWxkcmVuOiBjdHgudG9rZW5pemVCbG9jayh2YWx1ZSwgcG9zaXRpb24pXG4gIH1cbn1cblxuLy8gQ3JlYXRlIGEgbGlzdC1pdGVtIHVzaW5nIG92ZXJseSBzaW1wbGUgbWVjaGFuaWNzLlxuZnVuY3Rpb24gcGVkYW50aWNMaXN0SXRlbShjdHgsIHZhbHVlLCBwb3NpdGlvbikge1xuICB2YXIgb2Zmc2V0cyA9IGN0eC5vZmZzZXRcbiAgdmFyIGxpbmUgPSBwb3NpdGlvbi5saW5lXG5cbiAgLy8gUmVtb3ZlIHRoZSBsaXN0LWl0ZW3igJlzIGJ1bGxldC5cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHBlZGFudGljQnVsbGV0RXhwcmVzc2lvbiwgcmVwbGFjZXIpXG5cbiAgLy8gVGhlIGluaXRpYWwgbGluZSB3YXMgYWxzbyBtYXRjaGVkIGJ5IHRoZSBiZWxvdywgc28gd2UgcmVzZXQgdGhlIGBsaW5lYC5cbiAgbGluZSA9IHBvc2l0aW9uLmxpbmVcblxuICByZXR1cm4gdmFsdWUucmVwbGFjZShpbml0aWFsSW5kZW50RXhwcmVzc2lvbiwgcmVwbGFjZXIpXG5cbiAgLy8gQSBzaW1wbGUgcmVwbGFjZXIgd2hpY2ggcmVtb3ZlZCBhbGwgbWF0Y2hlcywgYW5kIGFkZHMgdGhlaXIgbGVuZ3RoIHRvXG4gIC8vIGBvZmZzZXRgLlxuICBmdW5jdGlvbiByZXBsYWNlcigkMCkge1xuICAgIG9mZnNldHNbbGluZV0gPSAob2Zmc2V0c1tsaW5lXSB8fCAwKSArICQwLmxlbmd0aFxuICAgIGxpbmUrK1xuXG4gICAgcmV0dXJuICcnXG4gIH1cbn1cblxuLy8gQ3JlYXRlIGEgbGlzdC1pdGVtIHVzaW5nIHNhbmUgbWVjaGFuaWNzLlxuZnVuY3Rpb24gbm9ybWFsTGlzdEl0ZW0oY3R4LCB2YWx1ZSwgcG9zaXRpb24pIHtcbiAgdmFyIG9mZnNldHMgPSBjdHgub2Zmc2V0XG4gIHZhciBsaW5lID0gcG9zaXRpb24ubGluZVxuICB2YXIgbWF4XG4gIHZhciBidWxsZXRcbiAgdmFyIHJlc3RcbiAgdmFyIGxpbmVzXG4gIHZhciB0cmltbWVkTGluZXNcbiAgdmFyIGluZGV4XG4gIHZhciBsZW5ndGhcblxuICAvLyBSZW1vdmUgdGhlIGxpc3QtaXRlbeKAmXMgYnVsbGV0LlxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoYnVsbGV0RXhwcmVzc2lvbiwgcmVwbGFjZXIpXG5cbiAgbGluZXMgPSB2YWx1ZS5zcGxpdChsaW5lRmVlZClcblxuICB0cmltbWVkTGluZXMgPSByZW1vdmVJbmRlbnQodmFsdWUsIGdldEluZGVudChtYXgpLmluZGVudCkuc3BsaXQobGluZUZlZWQpXG5cbiAgLy8gV2UgcmVwbGFjZWQgdGhlIGluaXRpYWwgYnVsbGV0IHdpdGggc29tZXRoaW5nIGVsc2UgYWJvdmUsIHdoaWNoIHdhcyB1c2VkXG4gIC8vIHRvIHRyaWNrIGByZW1vdmVJbmRlbnRhdGlvbmAgaW50byByZW1vdmluZyBzb21lIG1vcmUgY2hhcmFjdGVycyB3aGVuXG4gIC8vIHBvc3NpYmxlLiAgSG93ZXZlciwgdGhhdCBjb3VsZCByZXN1bHQgaW4gdGhlIGluaXRpYWwgbGluZSB0byBiZSBzdHJpcHBlZFxuICAvLyBtb3JlIHRoYW4gaXQgc2hvdWxkIGJlLlxuICB0cmltbWVkTGluZXNbMF0gPSByZXN0XG5cbiAgb2Zmc2V0c1tsaW5lXSA9IChvZmZzZXRzW2xpbmVdIHx8IDApICsgYnVsbGV0Lmxlbmd0aFxuICBsaW5lKytcblxuICBpbmRleCA9IDBcbiAgbGVuZ3RoID0gbGluZXMubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBvZmZzZXRzW2xpbmVdID1cbiAgICAgIChvZmZzZXRzW2xpbmVdIHx8IDApICsgbGluZXNbaW5kZXhdLmxlbmd0aCAtIHRyaW1tZWRMaW5lc1tpbmRleF0ubGVuZ3RoXG4gICAgbGluZSsrXG4gIH1cblxuICByZXR1cm4gdHJpbW1lZExpbmVzLmpvaW4obGluZUZlZWQpXG5cbiAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXMgKi9cbiAgZnVuY3Rpb24gcmVwbGFjZXIoJDAsICQxLCAkMiwgJDMsICQ0KSB7XG4gICAgYnVsbGV0ID0gJDEgKyAkMiArICQzXG4gICAgcmVzdCA9ICQ0XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgbmluZSBudW1iZXJlZCBsaXN0IGl0ZW1zIGNhbiBpbmRlbnQgd2l0aCBhblxuICAgIC8vIGV4dHJhIHNwYWNlLiAgVGhhdCBpcywgd2hlbiB0aGUgYnVsbGV0IGRpZCBub3QgcmVjZWl2ZSBhbiBleHRyYSBmaW5hbFxuICAgIC8vIHNwYWNlLlxuICAgIGlmIChOdW1iZXIoJDIpIDwgMTAgJiYgYnVsbGV0Lmxlbmd0aCAlIDIgPT09IDEpIHtcbiAgICAgICQyID0gc3BhY2UgKyAkMlxuICAgIH1cblxuICAgIG1heCA9ICQxICsgcmVwZWF0KHNwYWNlLCAkMi5sZW5ndGgpICsgJDNcblxuICAgIHJldHVybiBtYXggKyByZXN0XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdHJpbSA9IHJlcXVpcmUoJ3RyaW0nKVxudmFyIHRyaW1UcmFpbGluZ0xpbmVzID0gcmVxdWlyZSgndHJpbS10cmFpbGluZy1saW5lcycpXG52YXIgaW50ZXJydXB0ID0gcmVxdWlyZSgnLi4vdXRpbC9pbnRlcnJ1cHQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmFncmFwaFxuXG52YXIgdGFiID0gJ1xcdCdcbnZhciBsaW5lRmVlZCA9ICdcXG4nXG52YXIgc3BhY2UgPSAnICdcblxudmFyIHRhYlNpemUgPSA0XG5cbi8vIFRva2VuaXNlIHBhcmFncmFwaC5cbmZ1bmN0aW9uIHBhcmFncmFwaChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBzZXR0aW5ncyA9IHNlbGYub3B0aW9uc1xuICB2YXIgY29tbW9ubWFyayA9IHNldHRpbmdzLmNvbW1vbm1hcmtcbiAgdmFyIHRva2VuaXplcnMgPSBzZWxmLmJsb2NrVG9rZW5pemVyc1xuICB2YXIgaW50ZXJydXB0b3JzID0gc2VsZi5pbnRlcnJ1cHRQYXJhZ3JhcGhcbiAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZihsaW5lRmVlZClcbiAgdmFyIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICB2YXIgcG9zaXRpb25cbiAgdmFyIHN1YnZhbHVlXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIHNpemVcbiAgdmFyIG5vd1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIC8vIEVhdCBldmVyeXRoaW5nIGlmIHRoZXJl4oCZcyBubyBmb2xsb3dpbmcgbmV3bGluZS5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICBpbmRleCA9IGxlbmd0aFxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICAvLyBTdG9wIGlmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyBORVdMSU5FLlxuICAgIGlmICh2YWx1ZS5jaGFyQXQoaW5kZXggKyAxKSA9PT0gbGluZUZlZWQpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gSW4gY29tbW9ubWFyay1tb2RlLCBmb2xsb3dpbmcgaW5kZW50ZWQgbGluZXMgYXJlIHBhcnQgb2YgdGhlIHBhcmFncmFwaC5cbiAgICBpZiAoY29tbW9ubWFyaykge1xuICAgICAgc2l6ZSA9IDBcbiAgICAgIHBvc2l0aW9uID0gaW5kZXggKyAxXG5cbiAgICAgIHdoaWxlIChwb3NpdGlvbiA8IGxlbmd0aCkge1xuICAgICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQocG9zaXRpb24pXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiKSB7XG4gICAgICAgICAgc2l6ZSA9IHRhYlNpemVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgICAgICBzaXplKytcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zaXRpb24rK1xuICAgICAgfVxuXG4gICAgICBpZiAoc2l6ZSA+PSB0YWJTaXplICYmIGNoYXJhY3RlciAhPT0gbGluZUZlZWQpIHtcbiAgICAgICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkLCBpbmRleCArIDEpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3VidmFsdWUgPSB2YWx1ZS5zbGljZShpbmRleCArIDEpXG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZm9sbG93aW5nIGNvZGUgY29udGFpbnMgYSBwb3NzaWJsZSBibG9jay5cbiAgICBpZiAoaW50ZXJydXB0KGludGVycnVwdG9ycywgdG9rZW5pemVycywgc2VsZiwgW2VhdCwgc3VidmFsdWUsIHRydWVdKSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBwb3NpdGlvbiA9IGluZGV4XG4gICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkLCBpbmRleCArIDEpXG5cbiAgICBpZiAoaW5kZXggIT09IC0xICYmIHRyaW0odmFsdWUuc2xpY2UocG9zaXRpb24sIGluZGV4KSkgPT09ICcnKSB7XG4gICAgICBpbmRleCA9IHBvc2l0aW9uXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHN1YnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaW5kZXgpXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5vdyA9IGVhdC5ub3coKVxuICBzdWJ2YWx1ZSA9IHRyaW1UcmFpbGluZ0xpbmVzKHN1YnZhbHVlKVxuXG4gIHJldHVybiBlYXQoc3VidmFsdWUpKHtcbiAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShzdWJ2YWx1ZSwgbm93KVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB3aGl0ZXNwYWNlID0gcmVxdWlyZSgnaXMtd2hpdGVzcGFjZS1jaGFyYWN0ZXInKVxudmFyIGxvY2F0ZSA9IHJlcXVpcmUoJy4uL2xvY2F0ZS9saW5rJylcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCcuLi91dGlsL25vcm1hbGl6ZScpXG5cbm1vZHVsZS5leHBvcnRzID0gcmVmZXJlbmNlXG5yZWZlcmVuY2UubG9jYXRvciA9IGxvY2F0ZVxuXG52YXIgbGluayA9ICdsaW5rJ1xudmFyIGltYWdlID0gJ2ltYWdlJ1xudmFyIHNob3J0Y3V0ID0gJ3Nob3J0Y3V0J1xudmFyIGNvbGxhcHNlZCA9ICdjb2xsYXBzZWQnXG52YXIgZnVsbCA9ICdmdWxsJ1xudmFyIGV4Y2xhbWF0aW9uTWFyayA9ICchJ1xudmFyIGxlZnRTcXVhcmVCcmFja2V0ID0gJ1snXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG52YXIgcmlnaHRTcXVhcmVCcmFja2V0ID0gJ10nXG5cbmZ1bmN0aW9uIHJlZmVyZW5jZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBjb21tb25tYXJrID0gc2VsZi5vcHRpb25zLmNvbW1vbm1hcmtcbiAgdmFyIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgwKVxuICB2YXIgaW5kZXggPSAwXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHN1YnZhbHVlID0gJydcbiAgdmFyIGludHJvID0gJydcbiAgdmFyIHR5cGUgPSBsaW5rXG4gIHZhciByZWZlcmVuY2VUeXBlID0gc2hvcnRjdXRcbiAgdmFyIGNvbnRlbnRcbiAgdmFyIGlkZW50aWZpZXJcbiAgdmFyIG5vd1xuICB2YXIgbm9kZVxuICB2YXIgZXhpdFxuICB2YXIgcXVldWVcbiAgdmFyIGJyYWNrZXRlZFxuICB2YXIgZGVwdGhcblxuICAvLyBDaGVjayB3aGV0aGVyIHdl4oCZcmUgZWF0aW5nIGFuIGltYWdlLlxuICBpZiAoY2hhcmFjdGVyID09PSBleGNsYW1hdGlvbk1hcmspIHtcbiAgICB0eXBlID0gaW1hZ2VcbiAgICBpbnRybyA9IGNoYXJhY3RlclxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICB9XG5cbiAgaWYgKGNoYXJhY3RlciAhPT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4KytcbiAgaW50cm8gKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICAvLyBFYXQgdGhlIHRleHQuXG4gIGRlcHRoID0gMFxuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IGxlZnRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBicmFja2V0ZWQgPSB0cnVlXG4gICAgICBkZXB0aCsrXG4gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgaWYgKCFkZXB0aCkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBkZXB0aC0tXG4gICAgfVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICBxdWV1ZSArPSBiYWNrc2xhc2hcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgIH1cblxuICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgIGluZGV4KytcbiAgfVxuXG4gIHN1YnZhbHVlID0gcXVldWVcbiAgY29udGVudCA9IHF1ZXVlXG4gIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICBpZiAoY2hhcmFjdGVyICE9PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGluZGV4KytcbiAgc3VidmFsdWUgKz0gY2hhcmFjdGVyXG4gIHF1ZXVlID0gJydcblxuICBpZiAoIWNvbW1vbm1hcmspIHtcbiAgICAvLyBUaGUgb3JpZ2luYWwgbWFya2Rvd24gc3ludGF4IGRlZmluaXRpb24gZXhwbGljaXRseSBhbGxvd3MgZm9yIHdoaXRlc3BhY2VcbiAgICAvLyBiZXR3ZWVuIHRoZSBsaW5rIHRleHQgYW5kIGxpbmsgbGFiZWw7IGNvbW1vbm1hcmsgZGVwYXJ0cyBmcm9tIHRoaXMsIGluXG4gICAgLy8gcGFydCB0byBpbXByb3ZlIHN1cHBvcnQgZm9yIHNob3J0Y3V0IHJlZmVyZW5jZSBsaW5rc1xuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgICBpZiAoIXdoaXRlc3BhY2UoY2hhcmFjdGVyKSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgIGluZGV4KytcbiAgICB9XG4gIH1cblxuICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgaWYgKGNoYXJhY3RlciA9PT0gbGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICBpZGVudGlmaWVyID0gJydcbiAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICBpbmRleCsrXG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gbGVmdFNxdWFyZUJyYWNrZXQgfHwgY2hhcmFjdGVyID09PSByaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoKSB7XG4gICAgICAgIGlkZW50aWZpZXIgKz0gYmFja3NsYXNoXG4gICAgICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdCgrK2luZGV4KVxuICAgICAgfVxuXG4gICAgICBpZGVudGlmaWVyICs9IGNoYXJhY3RlclxuICAgICAgaW5kZXgrK1xuICAgIH1cblxuICAgIGNoYXJhY3RlciA9IHZhbHVlLmNoYXJBdChpbmRleClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT09IHJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgcmVmZXJlbmNlVHlwZSA9IGlkZW50aWZpZXIgPyBmdWxsIDogY29sbGFwc2VkXG4gICAgICBxdWV1ZSArPSBpZGVudGlmaWVyICsgY2hhcmFjdGVyXG4gICAgICBpbmRleCsrXG4gICAgfSBlbHNlIHtcbiAgICAgIGlkZW50aWZpZXIgPSAnJ1xuICAgIH1cblxuICAgIHN1YnZhbHVlICs9IHF1ZXVlXG4gICAgcXVldWUgPSAnJ1xuICB9IGVsc2Uge1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWRlbnRpZmllciA9IGNvbnRlbnRcbiAgfVxuXG4gIC8vIEJyYWNrZXRzIGNhbm5vdCBiZSBpbnNpZGUgdGhlIGlkZW50aWZpZXIuXG4gIGlmIChyZWZlcmVuY2VUeXBlICE9PSBmdWxsICYmIGJyYWNrZXRlZCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgc3VidmFsdWUgPSBpbnRybyArIHN1YnZhbHVlXG5cbiAgaWYgKHR5cGUgPT09IGxpbmsgJiYgc2VsZi5pbkxpbmspIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIG5vdyA9IGVhdC5ub3coKVxuICBub3cuY29sdW1uICs9IGludHJvLmxlbmd0aFxuICBub3cub2Zmc2V0ICs9IGludHJvLmxlbmd0aFxuICBpZGVudGlmaWVyID0gcmVmZXJlbmNlVHlwZSA9PT0gZnVsbCA/IGlkZW50aWZpZXIgOiBjb250ZW50XG5cbiAgbm9kZSA9IHtcbiAgICB0eXBlOiB0eXBlICsgJ1JlZmVyZW5jZScsXG4gICAgaWRlbnRpZmllcjogbm9ybWFsaXplKGlkZW50aWZpZXIpLFxuICAgIGxhYmVsOiBpZGVudGlmaWVyLFxuICAgIHJlZmVyZW5jZVR5cGU6IHJlZmVyZW5jZVR5cGVcbiAgfVxuXG4gIGlmICh0eXBlID09PSBsaW5rKSB7XG4gICAgZXhpdCA9IHNlbGYuZW50ZXJMaW5rKClcbiAgICBub2RlLmNoaWxkcmVuID0gc2VsZi50b2tlbml6ZUlubGluZShjb250ZW50LCBub3cpXG4gICAgZXhpdCgpXG4gIH0gZWxzZSB7XG4gICAgbm9kZS5hbHQgPSBzZWxmLmRlY29kZS5yYXcoc2VsZi51bmVzY2FwZShjb250ZW50KSwgbm93KSB8fCBudWxsXG4gIH1cblxuICByZXR1cm4gZWF0KHN1YnZhbHVlKShub2RlKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB0cmltID0gcmVxdWlyZSgndHJpbScpXG52YXIgd2hpdGVzcGFjZSA9IHJlcXVpcmUoJ2lzLXdoaXRlc3BhY2UtY2hhcmFjdGVyJylcbnZhciBsb2NhdGUgPSByZXF1aXJlKCcuLi9sb2NhdGUvc3Ryb25nJylcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJvbmdcbnN0cm9uZy5sb2NhdG9yID0gbG9jYXRlXG5cbnZhciBiYWNrc2xhc2ggPSAnXFxcXCdcbnZhciBhc3RlcmlzayA9ICcqJ1xudmFyIHVuZGVyc2NvcmUgPSAnXydcblxuZnVuY3Rpb24gc3Ryb25nKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIGluZGV4ID0gMFxuICB2YXIgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuICB2YXIgbm93XG4gIHZhciBwZWRhbnRpY1xuICB2YXIgbWFya2VyXG4gIHZhciBxdWV1ZVxuICB2YXIgc3VidmFsdWVcbiAgdmFyIGxlbmd0aFxuICB2YXIgcHJldmlvdXNcblxuICBpZiAoXG4gICAgKGNoYXJhY3RlciAhPT0gYXN0ZXJpc2sgJiYgY2hhcmFjdGVyICE9PSB1bmRlcnNjb3JlKSB8fFxuICAgIHZhbHVlLmNoYXJBdCgrK2luZGV4KSAhPT0gY2hhcmFjdGVyXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgcGVkYW50aWMgPSBzZWxmLm9wdGlvbnMucGVkYW50aWNcbiAgbWFya2VyID0gY2hhcmFjdGVyXG4gIHN1YnZhbHVlID0gbWFya2VyICsgbWFya2VyXG4gIGxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuICBpbmRleCsrXG4gIHF1ZXVlID0gJydcbiAgY2hhcmFjdGVyID0gJydcblxuICBpZiAocGVkYW50aWMgJiYgd2hpdGVzcGFjZSh2YWx1ZS5jaGFyQXQoaW5kZXgpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgcHJldmlvdXMgPSBjaGFyYWN0ZXJcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoXG4gICAgICBjaGFyYWN0ZXIgPT09IG1hcmtlciAmJlxuICAgICAgdmFsdWUuY2hhckF0KGluZGV4ICsgMSkgPT09IG1hcmtlciAmJlxuICAgICAgKCFwZWRhbnRpYyB8fCAhd2hpdGVzcGFjZShwcmV2aW91cykpXG4gICAgKSB7XG4gICAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXggKyAyKVxuXG4gICAgICBpZiAoY2hhcmFjdGVyICE9PSBtYXJrZXIpIHtcbiAgICAgICAgaWYgKCF0cmltKHF1ZXVlKSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICAgICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIG5vdyA9IGVhdC5ub3coKVxuICAgICAgICBub3cuY29sdW1uICs9IDJcbiAgICAgICAgbm93Lm9mZnNldCArPSAyXG5cbiAgICAgICAgcmV0dXJuIGVhdChzdWJ2YWx1ZSArIHF1ZXVlICsgc3VidmFsdWUpKHtcbiAgICAgICAgICB0eXBlOiAnc3Ryb25nJyxcbiAgICAgICAgICBjaGlsZHJlbjogc2VsZi50b2tlbml6ZUlubGluZShxdWV1ZSwgbm93KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGVkYW50aWMgJiYgY2hhcmFjdGVyID09PSBiYWNrc2xhc2gpIHtcbiAgICAgIHF1ZXVlICs9IGNoYXJhY3RlclxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KCsraW5kZXgpXG4gICAgfVxuXG4gICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgaW5kZXgrK1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG5cbm1vZHVsZS5leHBvcnRzID0gdGFibGVcblxudmFyIHRhYiA9ICdcXHQnXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgZGFzaCA9ICctJ1xudmFyIGNvbG9uID0gJzonXG52YXIgYmFja3NsYXNoID0gJ1xcXFwnXG52YXIgdmVydGljYWxCYXIgPSAnfCdcblxudmFyIG1pbkNvbHVtbnMgPSAxXG52YXIgbWluUm93cyA9IDJcblxudmFyIGxlZnQgPSAnbGVmdCdcbnZhciBjZW50ZXIgPSAnY2VudGVyJ1xudmFyIHJpZ2h0ID0gJ3JpZ2h0J1xuXG5mdW5jdGlvbiB0YWJsZShlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBpbmRleFxuICB2YXIgYWxpZ25tZW50c1xuICB2YXIgYWxpZ25tZW50XG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgcm93XG4gIHZhciBsZW5ndGhcbiAgdmFyIGxpbmVzXG4gIHZhciBxdWV1ZVxuICB2YXIgY2hhcmFjdGVyXG4gIHZhciBoYXNEYXNoXG4gIHZhciBhbGlnblxuICB2YXIgY2VsbFxuICB2YXIgcHJlYW1ibGVcbiAgdmFyIG5vd1xuICB2YXIgcG9zaXRpb25cbiAgdmFyIGxpbmVDb3VudFxuICB2YXIgbGluZVxuICB2YXIgcm93c1xuICB2YXIgdGFibGVcbiAgdmFyIGxpbmVJbmRleFxuICB2YXIgcGlwZUluZGV4XG4gIHZhciBmaXJzdFxuXG4gIC8vIEV4aXQgd2hlbiBub3QgaW4gZ2ZtLW1vZGUuXG4gIGlmICghc2VsZi5vcHRpb25zLmdmbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gR2V0IHRoZSByb3dzLlxuICAvLyBEZXRlY3RpbmcgdGFibGVzIHNvb24gaXMgaGFyZCwgc28gdGhlcmUgYXJlIHNvbWUgY2hlY2tzIGZvciBwZXJmb3JtYW5jZVxuICAvLyBoZXJlLCBzdWNoIGFzIHRoZSBtaW5pbXVtIG51bWJlciBvZiByb3dzLCBhbmQgYWxsb3dlZCBjaGFyYWN0ZXJzIGluIHRoZVxuICAvLyBhbGlnbm1lbnQgcm93LlxuICBpbmRleCA9IDBcbiAgbGluZUNvdW50ID0gMFxuICBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG4gIGxpbmVzID0gW11cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBsaW5lSW5kZXggPSB2YWx1ZS5pbmRleE9mKGxpbmVGZWVkLCBpbmRleClcbiAgICBwaXBlSW5kZXggPSB2YWx1ZS5pbmRleE9mKHZlcnRpY2FsQmFyLCBpbmRleCArIDEpXG5cbiAgICBpZiAobGluZUluZGV4ID09PSAtMSkge1xuICAgICAgbGluZUluZGV4ID0gdmFsdWUubGVuZ3RoXG4gICAgfVxuXG4gICAgaWYgKHBpcGVJbmRleCA9PT0gLTEgfHwgcGlwZUluZGV4ID4gbGluZUluZGV4KSB7XG4gICAgICBpZiAobGluZUNvdW50IDwgbWluUm93cykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKHZhbHVlLnNsaWNlKGluZGV4LCBsaW5lSW5kZXgpKVxuICAgIGxpbmVDb3VudCsrXG4gICAgaW5kZXggPSBsaW5lSW5kZXggKyAxXG4gIH1cblxuICAvLyBQYXJzZSB0aGUgYWxpZ25tZW50IHJvdy5cbiAgc3VidmFsdWUgPSBsaW5lcy5qb2luKGxpbmVGZWVkKVxuICBhbGlnbm1lbnRzID0gbGluZXMuc3BsaWNlKDEsIDEpWzBdIHx8IFtdXG4gIGluZGV4ID0gMFxuICBsZW5ndGggPSBhbGlnbm1lbnRzLmxlbmd0aFxuICBsaW5lQ291bnQtLVxuICBhbGlnbm1lbnQgPSBmYWxzZVxuICBhbGlnbiA9IFtdXG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gYWxpZ25tZW50cy5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09PSB2ZXJ0aWNhbEJhcikge1xuICAgICAgaGFzRGFzaCA9IG51bGxcblxuICAgICAgaWYgKGFsaWdubWVudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZpcnN0ID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGlnbi5wdXNoKGFsaWdubWVudClcbiAgICAgICAgYWxpZ25tZW50ID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgZmlyc3QgPSBmYWxzZVxuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBkYXNoKSB7XG4gICAgICBoYXNEYXNoID0gdHJ1ZVxuICAgICAgYWxpZ25tZW50ID0gYWxpZ25tZW50IHx8IG51bGxcbiAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PT0gY29sb24pIHtcbiAgICAgIGlmIChhbGlnbm1lbnQgPT09IGxlZnQpIHtcbiAgICAgICAgYWxpZ25tZW50ID0gY2VudGVyXG4gICAgICB9IGVsc2UgaWYgKGhhc0Rhc2ggJiYgYWxpZ25tZW50ID09PSBudWxsKSB7XG4gICAgICAgIGFsaWdubWVudCA9IHJpZ2h0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGlnbm1lbnQgPSBsZWZ0XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghd2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpbmRleCsrXG4gIH1cblxuICBpZiAoYWxpZ25tZW50ICE9PSBmYWxzZSkge1xuICAgIGFsaWduLnB1c2goYWxpZ25tZW50KVxuICB9XG5cbiAgLy8gRXhpdCB3aGVuIHdpdGhvdXQgZW5vdWdoIGNvbHVtbnMuXG4gIGlmIChhbGlnbi5sZW5ndGggPCBtaW5Db2x1bW5zKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gUGFyc2UgdGhlIHJvd3MuXG4gIHBvc2l0aW9uID0gLTFcbiAgcm93cyA9IFtdXG5cbiAgdGFibGUgPSBlYXQoc3VidmFsdWUpLnJlc2V0KHt0eXBlOiAndGFibGUnLCBhbGlnbjogYWxpZ24sIGNoaWxkcmVuOiByb3dzfSlcblxuICB3aGlsZSAoKytwb3NpdGlvbiA8IGxpbmVDb3VudCkge1xuICAgIGxpbmUgPSBsaW5lc1twb3NpdGlvbl1cbiAgICByb3cgPSB7dHlwZTogJ3RhYmxlUm93JywgY2hpbGRyZW46IFtdfVxuXG4gICAgLy8gRWF0IGEgbmV3bGluZSBjaGFyYWN0ZXIgd2hlbiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgcm93LlxuICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgZWF0KGxpbmVGZWVkKVxuICAgIH1cblxuICAgIC8vIEVhdCB0aGUgcm93LlxuICAgIGVhdChsaW5lKS5yZXNldChyb3csIHRhYmxlKVxuXG4gICAgbGVuZ3RoID0gbGluZS5sZW5ndGggKyAxXG4gICAgaW5kZXggPSAwXG4gICAgcXVldWUgPSAnJ1xuICAgIGNlbGwgPSAnJ1xuICAgIHByZWFtYmxlID0gdHJ1ZVxuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBjaGFyYWN0ZXIgPSBsaW5lLmNoYXJBdChpbmRleClcblxuICAgICAgaWYgKGNoYXJhY3RlciA9PT0gdGFiIHx8IGNoYXJhY3RlciA9PT0gc3BhY2UpIHtcbiAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICBxdWV1ZSArPSBjaGFyYWN0ZXJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlYXQoY2hhcmFjdGVyKVxuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXgrK1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhcmFjdGVyID09PSAnJyB8fCBjaGFyYWN0ZXIgPT09IHZlcnRpY2FsQmFyKSB7XG4gICAgICAgIGlmIChwcmVhbWJsZSkge1xuICAgICAgICAgIGVhdChjaGFyYWN0ZXIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKChjZWxsIHx8IGNoYXJhY3RlcikgJiYgIXByZWFtYmxlKSB7XG4gICAgICAgICAgICBzdWJ2YWx1ZSA9IGNlbGxcblxuICAgICAgICAgICAgaWYgKHF1ZXVlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgaWYgKGNoYXJhY3Rlcikge1xuICAgICAgICAgICAgICAgIHN1YnZhbHVlICs9IHF1ZXVlLnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgIHF1ZXVlID0gcXVldWUuY2hhckF0KHF1ZXVlLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3VidmFsdWUgKz0gcXVldWVcbiAgICAgICAgICAgICAgICBxdWV1ZSA9ICcnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbm93ID0gZWF0Lm5vdygpXG5cbiAgICAgICAgICAgIGVhdChzdWJ2YWx1ZSkoXG4gICAgICAgICAgICAgIHt0eXBlOiAndGFibGVDZWxsJywgY2hpbGRyZW46IHNlbGYudG9rZW5pemVJbmxpbmUoY2VsbCwgbm93KX0sXG4gICAgICAgICAgICAgIHJvd1xuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGVhdChxdWV1ZSArIGNoYXJhY3RlcilcblxuICAgICAgICAgIHF1ZXVlID0gJydcbiAgICAgICAgICBjZWxsID0gJydcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHF1ZXVlKSB7XG4gICAgICAgICAgY2VsbCArPSBxdWV1ZVxuICAgICAgICAgIHF1ZXVlID0gJydcbiAgICAgICAgfVxuXG4gICAgICAgIGNlbGwgKz0gY2hhcmFjdGVyXG5cbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gYmFja3NsYXNoICYmIGluZGV4ICE9PSBsZW5ndGggLSAyKSB7XG4gICAgICAgICAgY2VsbCArPSBsaW5lLmNoYXJBdChpbmRleCArIDEpXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByZWFtYmxlID0gZmFsc2VcbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICAvLyBFYXQgdGhlIGFsaWdubWVudCByb3cuXG4gICAgaWYgKCFwb3NpdGlvbikge1xuICAgICAgZWF0KGxpbmVGZWVkICsgYWxpZ25tZW50cylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFibGVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRleHRcblxuZnVuY3Rpb24gdGV4dChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBtZXRob2RzXG4gIHZhciB0b2tlbml6ZXJzXG4gIHZhciBpbmRleFxuICB2YXIgbGVuZ3RoXG4gIHZhciBzdWJ2YWx1ZVxuICB2YXIgcG9zaXRpb25cbiAgdmFyIHRva2VuaXplclxuICB2YXIgbmFtZVxuICB2YXIgbWluXG4gIHZhciBub3dcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgLSBuZXZlciB1c2VkICh5ZXQpICovXG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbWV0aG9kcyA9IHNlbGYuaW5saW5lTWV0aG9kc1xuICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aFxuICB0b2tlbml6ZXJzID0gc2VsZi5pbmxpbmVUb2tlbml6ZXJzXG4gIGluZGV4ID0gLTFcbiAgbWluID0gdmFsdWUubGVuZ3RoXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBuYW1lID0gbWV0aG9kc1tpbmRleF1cblxuICAgIGlmIChuYW1lID09PSAndGV4dCcgfHwgIXRva2VuaXplcnNbbmFtZV0pIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdG9rZW5pemVyID0gdG9rZW5pemVyc1tuYW1lXS5sb2NhdG9yXG5cbiAgICBpZiAoIXRva2VuaXplcikge1xuICAgICAgZWF0LmZpbGUuZmFpbCgnTWlzc2luZyBsb2NhdG9yOiBgJyArIG5hbWUgKyAnYCcpXG4gICAgfVxuXG4gICAgcG9zaXRpb24gPSB0b2tlbml6ZXIuY2FsbChzZWxmLCB2YWx1ZSwgMSlcblxuICAgIGlmIChwb3NpdGlvbiAhPT0gLTEgJiYgcG9zaXRpb24gPCBtaW4pIHtcbiAgICAgIG1pbiA9IHBvc2l0aW9uXG4gICAgfVxuICB9XG5cbiAgc3VidmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBtaW4pXG4gIG5vdyA9IGVhdC5ub3coKVxuXG4gIHNlbGYuZGVjb2RlKHN1YnZhbHVlLCBub3csIGhhbmRsZXIpXG5cbiAgZnVuY3Rpb24gaGFuZGxlcihjb250ZW50LCBwb3NpdGlvbiwgc291cmNlKSB7XG4gICAgZWF0KHNvdXJjZSB8fCBjb250ZW50KSh7dHlwZTogJ3RleHQnLCB2YWx1ZTogY29udGVudH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRoZW1hdGljQnJlYWtcblxudmFyIHRhYiA9ICdcXHQnXG52YXIgbGluZUZlZWQgPSAnXFxuJ1xudmFyIHNwYWNlID0gJyAnXG52YXIgYXN0ZXJpc2sgPSAnKidcbnZhciBkYXNoID0gJy0nXG52YXIgdW5kZXJzY29yZSA9ICdfJ1xuXG52YXIgbWF4Q291bnQgPSAzXG5cbmZ1bmN0aW9uIHRoZW1hdGljQnJlYWsoZWF0LCB2YWx1ZSwgc2lsZW50KSB7XG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGggKyAxXG4gIHZhciBzdWJ2YWx1ZSA9ICcnXG4gIHZhciBjaGFyYWN0ZXJcbiAgdmFyIG1hcmtlclxuICB2YXIgbWFya2VyQ291bnRcbiAgdmFyIHF1ZXVlXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBjaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoaW5kZXgpXG5cbiAgICBpZiAoY2hhcmFjdGVyICE9PSB0YWIgJiYgY2hhcmFjdGVyICE9PSBzcGFjZSkge1xuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBzdWJ2YWx1ZSArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIGlmIChcbiAgICBjaGFyYWN0ZXIgIT09IGFzdGVyaXNrICYmXG4gICAgY2hhcmFjdGVyICE9PSBkYXNoICYmXG4gICAgY2hhcmFjdGVyICE9PSB1bmRlcnNjb3JlXG4gICkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbWFya2VyID0gY2hhcmFjdGVyXG4gIHN1YnZhbHVlICs9IGNoYXJhY3RlclxuICBtYXJrZXJDb3VudCA9IDFcbiAgcXVldWUgPSAnJ1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KGluZGV4KVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PT0gbWFya2VyKSB7XG4gICAgICBtYXJrZXJDb3VudCsrXG4gICAgICBzdWJ2YWx1ZSArPSBxdWV1ZSArIG1hcmtlclxuICAgICAgcXVldWUgPSAnJ1xuICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09PSBzcGFjZSkge1xuICAgICAgcXVldWUgKz0gY2hhcmFjdGVyXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG1hcmtlckNvdW50ID49IG1heENvdW50ICYmXG4gICAgICAoIWNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT09IGxpbmVGZWVkKVxuICAgICkge1xuICAgICAgc3VidmFsdWUgKz0gcXVldWVcblxuICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWF0KHN1YnZhbHVlKSh7dHlwZTogJ3RoZW1hdGljQnJlYWsnfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNjb3VudCA9IHJlcXVpcmUoJ2Njb3VudCcpXG52YXIgZGVjb2RlID0gcmVxdWlyZSgncGFyc2UtZW50aXRpZXMnKVxudmFyIGRlY2ltYWwgPSByZXF1aXJlKCdpcy1kZWNpbWFsJylcbnZhciBhbHBoYWJldGljYWwgPSByZXF1aXJlKCdpcy1hbHBoYWJldGljYWwnKVxudmFyIHdoaXRlc3BhY2UgPSByZXF1aXJlKCdpcy13aGl0ZXNwYWNlLWNoYXJhY3RlcicpXG52YXIgbG9jYXRlID0gcmVxdWlyZSgnLi4vbG9jYXRlL3VybCcpXG5cbm1vZHVsZS5leHBvcnRzID0gdXJsXG51cmwubG9jYXRvciA9IGxvY2F0ZVxudXJsLm5vdEluTGluayA9IHRydWVcblxudmFyIGV4Y2xhbWF0aW9uTWFyayA9IDMzIC8vICchJ1xudmFyIGFtcGVyc2FuZCA9IDM4IC8vICcmJ1xudmFyIHJpZ2h0UGFyZW50aGVzaXMgPSA0MSAvLyAnKSdcbnZhciBhc3RlcmlzayA9IDQyIC8vICcqJ1xudmFyIGNvbW1hID0gNDQgLy8gJywnXG52YXIgZGFzaCA9IDQ1IC8vICctJ1xudmFyIGRvdCA9IDQ2IC8vICcuJ1xudmFyIGNvbG9uID0gNTggLy8gJzonXG52YXIgc2VtaWNvbG9uID0gNTkgLy8gJzsnXG52YXIgcXVlc3Rpb25NYXJrID0gNjMgLy8gJz8nXG52YXIgbGVzc1RoYW4gPSA2MCAvLyAnPCdcbnZhciB1bmRlcnNjb3JlID0gOTUgLy8gJ18nXG52YXIgdGlsZGUgPSAxMjYgLy8gJ34nXG5cbnZhciBsZWZ0UGFyZW50aGVzaXNDaGFyYWN0ZXIgPSAnKCdcbnZhciByaWdodFBhcmVudGhlc2lzQ2hhcmFjdGVyID0gJyknXG5cbmZ1bmN0aW9uIHVybChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBnZm0gPSBzZWxmLm9wdGlvbnMuZ2ZtXG4gIHZhciB0b2tlbml6ZXJzID0gc2VsZi5pbmxpbmVUb2tlbml6ZXJzXG4gIHZhciBsZW5ndGggPSB2YWx1ZS5sZW5ndGhcbiAgdmFyIHByZXZpb3VzRG90ID0gLTFcbiAgdmFyIHByb3RvY29sbGVzcyA9IGZhbHNlXG4gIHZhciBkb3RzXG4gIHZhciBsYXN0VHdvUGFydHNTdGFydFxuICB2YXIgc3RhcnRcbiAgdmFyIGluZGV4XG4gIHZhciBwYXRoU3RhcnRcbiAgdmFyIHBhdGhcbiAgdmFyIGNvZGVcbiAgdmFyIGVuZFxuICB2YXIgbGVmdENvdW50XG4gIHZhciByaWdodENvdW50XG4gIHZhciBjb250ZW50XG4gIHZhciBjaGlsZHJlblxuICB2YXIgdXJsXG4gIHZhciBleGl0XG5cbiAgaWYgKCFnZm0pIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIGBXV1cuYCBkb2VzbuKAmXQgd29yay5cbiAgaWYgKHZhbHVlLnNsaWNlKDAsIDQpID09PSAnd3d3LicpIHtcbiAgICBwcm90b2NvbGxlc3MgPSB0cnVlXG4gICAgaW5kZXggPSA0XG4gIH0gZWxzZSBpZiAodmFsdWUuc2xpY2UoMCwgNykudG9Mb3dlckNhc2UoKSA9PT0gJ2h0dHA6Ly8nKSB7XG4gICAgaW5kZXggPSA3XG4gIH0gZWxzZSBpZiAodmFsdWUuc2xpY2UoMCwgOCkudG9Mb3dlckNhc2UoKSA9PT0gJ2h0dHBzOi8vJykge1xuICAgIGluZGV4ID0gOFxuICB9IGVsc2Uge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQWN0IGFzIGlmIHRoZSBzdGFydGluZyBib3VuZGFyeSBpcyBhIGRvdC5cbiAgcHJldmlvdXNEb3QgPSBpbmRleCAtIDFcblxuICAvLyBQYXJzZSBhIHZhbGlkIGRvbWFpbi5cbiAgc3RhcnQgPSBpbmRleFxuICBkb3RzID0gW11cblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgIGlmIChjb2RlID09PSBkb3QpIHtcbiAgICAgIC8vIERvdHMgbWF5IG5vdCBhcHBlYXIgYWZ0ZXIgZWFjaCBvdGhlci5cbiAgICAgIGlmIChwcmV2aW91c0RvdCA9PT0gaW5kZXggLSAxKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGRvdHMucHVzaChpbmRleClcbiAgICAgIHByZXZpb3VzRG90ID0gaW5kZXhcbiAgICAgIGluZGV4KytcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZGVjaW1hbChjb2RlKSB8fFxuICAgICAgYWxwaGFiZXRpY2FsKGNvZGUpIHx8XG4gICAgICBjb2RlID09PSBkYXNoIHx8XG4gICAgICBjb2RlID09PSB1bmRlcnNjb3JlXG4gICAgKSB7XG4gICAgICBpbmRleCsrXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGJyZWFrXG4gIH1cblxuICAvLyBJZ25vcmUgYSBmaW5hbCBkb3Q6XG4gIGlmIChjb2RlID09PSBkb3QpIHtcbiAgICBkb3RzLnBvcCgpXG4gICAgaW5kZXgtLVxuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIG5vdCBkb3RzLCBleGl0LlxuICBpZiAoZG90c1swXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBJZiB0aGVyZSBpcyBhbiB1bmRlcnNjb3JlIGluIHRoZSBsYXN0IHR3byBkb21haW4gcGFydHMsIGV4aXQ6XG4gIC8vIGB3d3cuZXhhbXBsZS5jX21gIGFuZCBgd3d3LmV4X2FtcGxlLmNvbWAgYXJlIG5vdCBPSywgYnV0XG4gIC8vIGB3d3cuc3ViX2RvbWFpbi5leGFtcGxlLmNvbWAgaXMuXG4gIGxhc3RUd29QYXJ0c1N0YXJ0ID0gZG90cy5sZW5ndGggPCAyID8gc3RhcnQgOiBkb3RzW2RvdHMubGVuZ3RoIC0gMl0gKyAxXG5cbiAgaWYgKHZhbHVlLnNsaWNlKGxhc3RUd29QYXJ0c1N0YXJ0LCBpbmRleCkuaW5kZXhPZignXycpICE9PSAtMSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbmV2ZXIgdXNlZCAoeWV0KSAqL1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGVuZCA9IGluZGV4XG4gIHBhdGhTdGFydCA9IGluZGV4XG5cbiAgLy8gUGFyc2UgYSBwYXRoLlxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChpbmRleClcblxuICAgIGlmICh3aGl0ZXNwYWNlKGNvZGUpIHx8IGNvZGUgPT09IGxlc3NUaGFuKSB7XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGluZGV4KytcblxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGV4Y2xhbWF0aW9uTWFyayB8fFxuICAgICAgY29kZSA9PT0gYXN0ZXJpc2sgfHxcbiAgICAgIGNvZGUgPT09IGNvbW1hIHx8XG4gICAgICBjb2RlID09PSBkb3QgfHxcbiAgICAgIGNvZGUgPT09IGNvbG9uIHx8XG4gICAgICBjb2RlID09PSBxdWVzdGlvbk1hcmsgfHxcbiAgICAgIGNvZGUgPT09IHVuZGVyc2NvcmUgfHxcbiAgICAgIGNvZGUgPT09IHRpbGRlXG4gICAgKSB7XG4gICAgICAvLyBFbXB0eVxuICAgIH0gZWxzZSB7XG4gICAgICBlbmQgPSBpbmRleFxuICAgIH1cbiAgfVxuXG4gIGluZGV4ID0gZW5kXG5cbiAgLy8gSWYgdGhlIHBhdGggZW5kcyBpbiBhIGNsb3NpbmcgcGFyZW4sIGFuZCB0aGUgY291bnQgb2YgY2xvc2luZyBwYXJlbnMgaXNcbiAgLy8gaGlnaGVyIHRoYW4gdGhlIG9wZW5pbmcgY291bnQsIHRoZW4gcmVtb3ZlIHRoZSBzdXBlZmx1b3VzIGNsb3NpbmcgcGFyZW5zLlxuICBpZiAodmFsdWUuY2hhckNvZGVBdChpbmRleCAtIDEpID09PSByaWdodFBhcmVudGhlc2lzKSB7XG4gICAgcGF0aCA9IHZhbHVlLnNsaWNlKHBhdGhTdGFydCwgaW5kZXgpXG4gICAgbGVmdENvdW50ID0gY2NvdW50KHBhdGgsIGxlZnRQYXJlbnRoZXNpc0NoYXJhY3RlcilcbiAgICByaWdodENvdW50ID0gY2NvdW50KHBhdGgsIHJpZ2h0UGFyZW50aGVzaXNDaGFyYWN0ZXIpXG5cbiAgICB3aGlsZSAocmlnaHRDb3VudCA+IGxlZnRDb3VudCkge1xuICAgICAgaW5kZXggPSBwYXRoU3RhcnQgKyBwYXRoLmxhc3RJbmRleE9mKHJpZ2h0UGFyZW50aGVzaXNDaGFyYWN0ZXIpXG4gICAgICBwYXRoID0gdmFsdWUuc2xpY2UocGF0aFN0YXJ0LCBpbmRleClcbiAgICAgIHJpZ2h0Q291bnQtLVxuICAgIH1cbiAgfVxuXG4gIGlmICh2YWx1ZS5jaGFyQ29kZUF0KGluZGV4IC0gMSkgPT09IHNlbWljb2xvbikge1xuICAgIC8vIEdpdEh1YiBkb2VzbuKAmXQgZG9jdW1lbnQgdGhpcywgYnV0IGZpbmFsIHNlbWljb2xvbnMgYXJlbuKAmXQgcGFyZXQgb2YgdGhlXG4gICAgLy8gVVJMIGVpdGhlci5cbiAgICBpbmRleC0tXG5cbiAgICAvLyAvLyBJZiB0aGUgcGF0aCBlbmRzIGluIHdoYXQgbG9va3MgbGlrZSBhbiBlbnRpdHksIGl04oCZcyBub3QgcGFydCBvZiB0aGUgcGF0aC5cbiAgICBpZiAoYWxwaGFiZXRpY2FsKHZhbHVlLmNoYXJDb2RlQXQoaW5kZXggLSAxKSkpIHtcbiAgICAgIGVuZCA9IGluZGV4IC0gMlxuXG4gICAgICB3aGlsZSAoYWxwaGFiZXRpY2FsKHZhbHVlLmNoYXJDb2RlQXQoZW5kKSkpIHtcbiAgICAgICAgZW5kLS1cbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlLmNoYXJDb2RlQXQoZW5kKSA9PT0gYW1wZXJzYW5kKSB7XG4gICAgICAgIGluZGV4ID0gZW5kXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29udGVudCA9IHZhbHVlLnNsaWNlKDAsIGluZGV4KVxuICB1cmwgPSBkZWNvZGUoY29udGVudCwge25vblRlcm1pbmF0ZWQ6IGZhbHNlfSlcblxuICBpZiAocHJvdG9jb2xsZXNzKSB7XG4gICAgdXJsID0gJ2h0dHA6Ly8nICsgdXJsXG4gIH1cblxuICBleGl0ID0gc2VsZi5lbnRlckxpbmsoKVxuXG4gIC8vIFRlbXBvcmFyaWx5IHJlbW92ZSBhbGwgdG9rZW5pemVycyBleGNlcHQgdGV4dCBpbiB1cmwuXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHt0ZXh0OiB0b2tlbml6ZXJzLnRleHR9XG4gIGNoaWxkcmVuID0gc2VsZi50b2tlbml6ZUlubGluZShjb250ZW50LCBlYXQubm93KCkpXG4gIHNlbGYuaW5saW5lVG9rZW5pemVycyA9IHRva2VuaXplcnNcblxuICBleGl0KClcblxuICByZXR1cm4gZWF0KGNvbnRlbnQpKHt0eXBlOiAnbGluaycsIHRpdGxlOiBudWxsLCB1cmw6IHVybCwgY2hpbGRyZW46IGNoaWxkcmVufSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gQ29uc3RydWN0IGEgdG9rZW5pemVyLiAgVGhpcyBjcmVhdGVzIGJvdGggYHRva2VuaXplSW5saW5lYCBhbmQgYHRva2VuaXplQmxvY2tgLlxuZnVuY3Rpb24gZmFjdG9yeSh0eXBlKSB7XG4gIHJldHVybiB0b2tlbml6ZVxuXG4gIC8vIFRva2VuaXplciBmb3IgYSBib3VuZCBgdHlwZWAuXG4gIGZ1bmN0aW9uIHRva2VuaXplKHZhbHVlLCBsb2NhdGlvbikge1xuICAgIHZhciBzZWxmID0gdGhpc1xuICAgIHZhciBvZmZzZXQgPSBzZWxmLm9mZnNldFxuICAgIHZhciB0b2tlbnMgPSBbXVxuICAgIHZhciBtZXRob2RzID0gc2VsZlt0eXBlICsgJ01ldGhvZHMnXVxuICAgIHZhciB0b2tlbml6ZXJzID0gc2VsZlt0eXBlICsgJ1Rva2VuaXplcnMnXVxuICAgIHZhciBsaW5lID0gbG9jYXRpb24ubGluZVxuICAgIHZhciBjb2x1bW4gPSBsb2NhdGlvbi5jb2x1bW5cbiAgICB2YXIgaW5kZXhcbiAgICB2YXIgbGVuZ3RoXG4gICAgdmFyIG1ldGhvZFxuICAgIHZhciBuYW1lXG4gICAgdmFyIG1hdGNoZWRcbiAgICB2YXIgdmFsdWVMZW5ndGhcblxuICAgIC8vIFRyaW0gd2hpdGUgc3BhY2Ugb25seSBsaW5lcy5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gdG9rZW5zXG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIG9uIGBlYXRgLlxuICAgIGVhdC5ub3cgPSBub3dcbiAgICBlYXQuZmlsZSA9IHNlbGYuZmlsZVxuXG4gICAgLy8gU3luYyBpbml0aWFsIG9mZnNldC5cbiAgICB1cGRhdGVQb3NpdGlvbignJylcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciBgdmFsdWVgLCBhbmQgaXRlcmF0ZSBvdmVyIGFsbCB0b2tlbml6ZXJzLiAgV2hlbiBvbmUgZWF0c1xuICAgIC8vIHNvbWV0aGluZywgcmUtaXRlcmF0ZSB3aXRoIHRoZSByZW1haW5pbmcgdmFsdWUuICBJZiBubyB0b2tlbml6ZXIgZWF0cyxcbiAgICAvLyBzb21ldGhpbmcgZmFpbGVkIChzaG91bGQgbm90IGhhcHBlbikgYW5kIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG4gICAgd2hpbGUgKHZhbHVlKSB7XG4gICAgICBpbmRleCA9IC0xXG4gICAgICBsZW5ndGggPSBtZXRob2RzLmxlbmd0aFxuICAgICAgbWF0Y2hlZCA9IGZhbHNlXG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG5hbWUgPSBtZXRob2RzW2luZGV4XVxuICAgICAgICBtZXRob2QgPSB0b2tlbml6ZXJzW25hbWVdXG5cbiAgICAgICAgLy8gUHJldmlvdXNseSwgd2UgaGFkIGNvbnN0cnVjdHMgc3VjaCBhcyBmb290bm90ZXMgYW5kIFlBTUwgdGhhdCB1c2VkXG4gICAgICAgIC8vIHRoZXNlIHByb3BlcnRpZXMuXG4gICAgICAgIC8vIFRob3NlIGFyZSBub3cgZXh0ZXJuYWwgKHBsdXMgdGhlcmUgYXJlIHVzZXJsYW5kIGV4dGVuc2lvbnMpLCB0aGF0IG1heVxuICAgICAgICAvLyBzdGlsbCB1c2UgdGhlbS5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1ldGhvZCAmJlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovICghbWV0aG9kLm9ubHlBdFN0YXJ0IHx8IHNlbGYuYXRTdGFydCkgJiZcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyAoIW1ldGhvZC5ub3RJbkxpc3QgfHwgIXNlbGYuaW5MaXN0KSAmJlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovICghbWV0aG9kLm5vdEluQmxvY2sgfHwgIXNlbGYuaW5CbG9jaykgJiZcbiAgICAgICAgICAoIW1ldGhvZC5ub3RJbkxpbmsgfHwgIXNlbGYuaW5MaW5rKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aFxuXG4gICAgICAgICAgbWV0aG9kLmFwcGx5KHNlbGYsIFtlYXQsIHZhbHVlXSlcblxuICAgICAgICAgIG1hdGNoZWQgPSB2YWx1ZUxlbmd0aCAhPT0gdmFsdWUubGVuZ3RoXG5cbiAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIW1hdGNoZWQpIHtcbiAgICAgICAgc2VsZi5maWxlLmZhaWwobmV3IEVycm9yKCdJbmZpbml0ZSBsb29wJyksIGVhdC5ub3coKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxmLmVvZiA9IG5vdygpXG5cbiAgICByZXR1cm4gdG9rZW5zXG5cbiAgICAvLyBVcGRhdGUgbGluZSwgY29sdW1uLCBhbmQgb2Zmc2V0IGJhc2VkIG9uIGB2YWx1ZWAuXG4gICAgZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oc3VidmFsdWUpIHtcbiAgICAgIHZhciBsYXN0SW5kZXggPSAtMVxuICAgICAgdmFyIGluZGV4ID0gc3VidmFsdWUuaW5kZXhPZignXFxuJylcblxuICAgICAgd2hpbGUgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaW5lKytcbiAgICAgICAgbGFzdEluZGV4ID0gaW5kZXhcbiAgICAgICAgaW5kZXggPSBzdWJ2YWx1ZS5pbmRleE9mKCdcXG4nLCBpbmRleCArIDEpXG4gICAgICB9XG5cbiAgICAgIGlmIChsYXN0SW5kZXggPT09IC0xKSB7XG4gICAgICAgIGNvbHVtbiArPSBzdWJ2YWx1ZS5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbiA9IHN1YnZhbHVlLmxlbmd0aCAtIGxhc3RJbmRleFxuICAgICAgfVxuXG4gICAgICBpZiAobGluZSBpbiBvZmZzZXQpIHtcbiAgICAgICAgaWYgKGxhc3RJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb2x1bW4gKz0gb2Zmc2V0W2xpbmVdXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uIDw9IG9mZnNldFtsaW5lXSkge1xuICAgICAgICAgIGNvbHVtbiA9IG9mZnNldFtsaW5lXSArIDFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCBvZmZzZXQuICBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgZWF0ZW4gdG8gcmV0cmlldmUgdGhlXG4gICAgLy8gcmFuZ2XigJlzIG9mZnNldHMuXG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0KCkge1xuICAgICAgdmFyIGluZGVudGF0aW9uID0gW11cbiAgICAgIHZhciBwb3MgPSBsaW5lICsgMVxuXG4gICAgICAvLyBEb25lLiAgQ2FsbGVkIHdoZW4gdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGVhdGVuIHRvIHJldHJpZXZlIHRoZSByYW5nZeKAmXNcbiAgICAgIC8vIG9mZnNldHMuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFzdCA9IGxpbmUgKyAxXG5cbiAgICAgICAgd2hpbGUgKHBvcyA8IGxhc3QpIHtcbiAgICAgICAgICBpbmRlbnRhdGlvbi5wdXNoKChvZmZzZXRbcG9zXSB8fCAwKSArIDEpXG5cbiAgICAgICAgICBwb3MrK1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGVudGF0aW9uXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uLlxuICAgIGZ1bmN0aW9uIG5vdygpIHtcbiAgICAgIHZhciBwb3MgPSB7bGluZTogbGluZSwgY29sdW1uOiBjb2x1bW59XG5cbiAgICAgIHBvcy5vZmZzZXQgPSBzZWxmLnRvT2Zmc2V0KHBvcylcblxuICAgICAgcmV0dXJuIHBvc1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHBvc2l0aW9uIGluZm9ybWF0aW9uIGZvciBhIG5vZGUuXG4gICAgZnVuY3Rpb24gUG9zaXRpb24oc3RhcnQpIHtcbiAgICAgIHRoaXMuc3RhcnQgPSBzdGFydFxuICAgICAgdGhpcy5lbmQgPSBub3coKVxuICAgIH1cblxuICAgIC8vIFRocm93IHdoZW4gYSB2YWx1ZSBpcyBpbmNvcnJlY3RseSBlYXRlbi4gIFRoaXMgc2hvdWxkbuKAmXQgaGFwcGVuIGJ1dCB3aWxsXG4gICAgLy8gdGhyb3cgb24gbmV3LCBpbmNvcnJlY3QgcnVsZXMuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVFYXQoc3VidmFsdWUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHZhbHVlLnNsaWNlKDAsIHN1YnZhbHVlLmxlbmd0aCkgIT09IHN1YnZhbHVlKSB7XG4gICAgICAgIC8vIENhcHR1cmUgc3RhY2stdHJhY2UuXG4gICAgICAgIHNlbGYuZmlsZS5mYWlsKFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICdJbmNvcnJlY3RseSBlYXRlbiB2YWx1ZTogcGxlYXNlIHJlcG9ydCB0aGlzIHdhcm5pbmcgb24gaHR0cHM6Ly9naXQuaW8vdmc1RnQnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBub3coKVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWFyayBwb3NpdGlvbiBhbmQgcGF0Y2ggYG5vZGUucG9zaXRpb25gLlxuICAgIGZ1bmN0aW9uIHBvc2l0aW9uKCkge1xuICAgICAgdmFyIGJlZm9yZSA9IG5vdygpXG5cbiAgICAgIHJldHVybiB1cGRhdGVcblxuICAgICAgLy8gQWRkIHRoZSBwb3NpdGlvbiB0byBhIG5vZGUuXG4gICAgICBmdW5jdGlvbiB1cGRhdGUobm9kZSwgaW5kZW50KSB7XG4gICAgICAgIHZhciBwcmV2aW91cyA9IG5vZGUucG9zaXRpb25cbiAgICAgICAgdmFyIHN0YXJ0ID0gcHJldmlvdXMgPyBwcmV2aW91cy5zdGFydCA6IGJlZm9yZVxuICAgICAgICB2YXIgY29tYmluZWQgPSBbXVxuICAgICAgICB2YXIgbiA9IHByZXZpb3VzICYmIHByZXZpb3VzLmVuZC5saW5lXG4gICAgICAgIHZhciBsID0gYmVmb3JlLmxpbmVcblxuICAgICAgICBub2RlLnBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHN0YXJ0KVxuXG4gICAgICAgIC8vIElmIHRoZXJlIHdhcyBhbHJlYWR5IGEgYHBvc2l0aW9uYCwgdGhpcyBub2RlIHdhcyBtZXJnZWQuICBGaXhpbmdcbiAgICAgICAgLy8gYHN0YXJ0YCB3YXNu4oCZdCBoYXJkLCBidXQgdGhlIGluZGVudCBpcyBkaWZmZXJlbnQuICBFc3BlY2lhbGx5XG4gICAgICAgIC8vIGJlY2F1c2Ugc29tZSBpbmZvcm1hdGlvbiwgdGhlIGluZGVudCBiZXR3ZWVuIGBuYCBhbmQgYGxgIHdhc27igJl0XG4gICAgICAgIC8vIHRyYWNrZWQuICBMdWNraWx5LCB0aGF0IHNwYWNlIGlzIChzaG91bGQgYmU/KSBlbXB0eSwgc28gd2UgY2FuXG4gICAgICAgIC8vIHNhZmVseSBjaGVjayBmb3IgaXQgbm93LlxuICAgICAgICBpZiAocHJldmlvdXMgJiYgaW5kZW50ICYmIHByZXZpb3VzLmluZGVudCkge1xuICAgICAgICAgIGNvbWJpbmVkID0gcHJldmlvdXMuaW5kZW50XG5cbiAgICAgICAgICBpZiAobiA8IGwpIHtcbiAgICAgICAgICAgIHdoaWxlICgrK24gPCBsKSB7XG4gICAgICAgICAgICAgIGNvbWJpbmVkLnB1c2goKG9mZnNldFtuXSB8fCAwKSArIDEpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbWJpbmVkLnB1c2goYmVmb3JlLmNvbHVtbilcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpbmRlbnQgPSBjb21iaW5lZC5jb25jYXQoaW5kZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5wb3NpdGlvbi5pbmRlbnQgPSBpbmRlbnQgfHwgW11cblxuICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBgbm9kZWAgdG8gYHBhcmVudGBzIGNoaWxkcmVuIG9yIHRvIGB0b2tlbnNgLiAgUGVyZm9ybXMgbWVyZ2VzIHdoZXJlXG4gICAgLy8gcG9zc2libGUuXG4gICAgZnVuY3Rpb24gYWRkKG5vZGUsIHBhcmVudCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50ID8gcGFyZW50LmNoaWxkcmVuIDogdG9rZW5zXG4gICAgICB2YXIgcHJldmlvdXMgPSBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXVxuICAgICAgdmFyIGZuXG5cbiAgICAgIGlmIChcbiAgICAgICAgcHJldmlvdXMgJiZcbiAgICAgICAgbm9kZS50eXBlID09PSBwcmV2aW91cy50eXBlICYmXG4gICAgICAgIChub2RlLnR5cGUgPT09ICd0ZXh0JyB8fCBub2RlLnR5cGUgPT09ICdibG9ja3F1b3RlJykgJiZcbiAgICAgICAgbWVyZ2VhYmxlKHByZXZpb3VzKSAmJlxuICAgICAgICBtZXJnZWFibGUobm9kZSlcbiAgICAgICkge1xuICAgICAgICBmbiA9IG5vZGUudHlwZSA9PT0gJ3RleHQnID8gbWVyZ2VUZXh0IDogbWVyZ2VCbG9ja3F1b3RlXG4gICAgICAgIG5vZGUgPSBmbi5jYWxsKHNlbGYsIHByZXZpb3VzLCBub2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAobm9kZSAhPT0gcHJldmlvdXMpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChub2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZi5hdFN0YXJ0ICYmIHRva2Vucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgc2VsZi5leGl0U3RhcnQoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBgc3VidmFsdWVgIGZyb20gYHZhbHVlYC4gIGBzdWJ2YWx1ZWAgbXVzdCBiZSBhdCB0aGUgc3RhcnQgb2ZcbiAgICAvLyBgdmFsdWVgLlxuICAgIGZ1bmN0aW9uIGVhdChzdWJ2YWx1ZSkge1xuICAgICAgdmFyIGluZGVudCA9IGdldE9mZnNldCgpXG4gICAgICB2YXIgcG9zID0gcG9zaXRpb24oKVxuICAgICAgdmFyIGN1cnJlbnQgPSBub3coKVxuXG4gICAgICB2YWxpZGF0ZUVhdChzdWJ2YWx1ZSlcblxuICAgICAgYXBwbHkucmVzZXQgPSByZXNldFxuICAgICAgcmVzZXQudGVzdCA9IHRlc3RcbiAgICAgIGFwcGx5LnRlc3QgPSB0ZXN0XG5cbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2Uoc3VidmFsdWUubGVuZ3RoKVxuXG4gICAgICB1cGRhdGVQb3NpdGlvbihzdWJ2YWx1ZSlcblxuICAgICAgaW5kZW50ID0gaW5kZW50KClcblxuICAgICAgcmV0dXJuIGFwcGx5XG5cbiAgICAgIC8vIEFkZCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBhZGQgYHBvc2l0aW9uYCB0byB0aGUgcmV0dXJuZWQgbm9kZSwgYW5kXG4gICAgICAvLyByZXR1cm4gdGhlIG5vZGUuXG4gICAgICBmdW5jdGlvbiBhcHBseShub2RlLCBwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvcyhhZGQocG9zKG5vZGUpLCBwYXJlbnQpLCBpbmRlbnQpXG4gICAgICB9XG5cbiAgICAgIC8vIEZ1bmN0aW9ucyBqdXN0IGxpa2UgYXBwbHksIGJ1dCByZXNldHMgdGhlIGNvbnRlbnQ6IHRoZSBsaW5lIGFuZFxuICAgICAgLy8gY29sdW1uIGFyZSByZXZlcnNlZCwgYW5kIHRoZSBlYXRlbiB2YWx1ZSBpcyByZS1hZGRlZC4gICBUaGlzIGlzXG4gICAgICAvLyB1c2VmdWwgZm9yIG5vZGVzIHdpdGggYSBzaW5nbGUgdHlwZSBvZiBjb250ZW50LCBzdWNoIGFzIGxpc3RzIGFuZFxuICAgICAgLy8gdGFibGVzLiAgU2VlIGBhcHBseWAgYWJvdmUgZm9yIHdoYXQgcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuXG4gICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBhcHBseS5hcHBseShudWxsLCBhcmd1bWVudHMpXG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZVxuICAgICAgICBjb2x1bW4gPSBjdXJyZW50LmNvbHVtblxuICAgICAgICB2YWx1ZSA9IHN1YnZhbHVlICsgdmFsdWVcblxuICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgfVxuXG4gICAgICAvLyBUZXN0IHRoZSBwb3NpdGlvbiwgYWZ0ZXIgZWF0aW5nLCBhbmQgcmV2ZXJzZSB0byBhIG5vdC1lYXRlbiBzdGF0ZS5cbiAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBwb3Moe30pXG5cbiAgICAgICAgbGluZSA9IGN1cnJlbnQubGluZVxuICAgICAgICBjb2x1bW4gPSBjdXJyZW50LmNvbHVtblxuICAgICAgICB2YWx1ZSA9IHN1YnZhbHVlICsgdmFsdWVcblxuICAgICAgICByZXR1cm4gcmVzdWx0LnBvc2l0aW9uXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrIHdoZXRoZXIgYSBub2RlIGlzIG1lcmdlYWJsZSB3aXRoIGFkamFjZW50IG5vZGVzLlxuZnVuY3Rpb24gbWVyZ2VhYmxlKG5vZGUpIHtcbiAgdmFyIHN0YXJ0XG4gIHZhciBlbmRcblxuICBpZiAobm9kZS50eXBlICE9PSAndGV4dCcgfHwgIW5vZGUucG9zaXRpb24pIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgc3RhcnQgPSBub2RlLnBvc2l0aW9uLnN0YXJ0XG4gIGVuZCA9IG5vZGUucG9zaXRpb24uZW5kXG5cbiAgLy8gT25seSBtZXJnZSBub2RlcyB3aGljaCBvY2N1cHkgdGhlIHNhbWUgc2l6ZSBhcyB0aGVpciBgdmFsdWVgLlxuICByZXR1cm4gKFxuICAgIHN0YXJ0LmxpbmUgIT09IGVuZC5saW5lIHx8IGVuZC5jb2x1bW4gLSBzdGFydC5jb2x1bW4gPT09IG5vZGUudmFsdWUubGVuZ3RoXG4gIClcbn1cblxuLy8gTWVyZ2UgdHdvIHRleHQgbm9kZXM6IGBub2RlYCBpbnRvIGBwcmV2YC5cbmZ1bmN0aW9uIG1lcmdlVGV4dChwcmV2aW91cywgbm9kZSkge1xuICBwcmV2aW91cy52YWx1ZSArPSBub2RlLnZhbHVlXG5cbiAgcmV0dXJuIHByZXZpb3VzXG59XG5cbi8vIE1lcmdlIHR3byBibG9ja3F1b3RlczogYG5vZGVgIGludG8gYHByZXZgLCB1bmxlc3MgaW4gQ29tbW9uTWFyayBvciBnZm0gbW9kZXMuXG5mdW5jdGlvbiBtZXJnZUJsb2NrcXVvdGUocHJldmlvdXMsIG5vZGUpIHtcbiAgaWYgKHRoaXMub3B0aW9ucy5jb21tb25tYXJrIHx8IHRoaXMub3B0aW9ucy5nZm0pIHtcbiAgICByZXR1cm4gbm9kZVxuICB9XG5cbiAgcHJldmlvdXMuY2hpbGRyZW4gPSBwcmV2aW91cy5jaGlsZHJlbi5jb25jYXQobm9kZS5jaGlsZHJlbilcblxuICByZXR1cm4gcHJldmlvdXNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxudmFyIGJhY2tzbGFzaCA9ICdcXFxcJ1xuXG4vLyBGYWN0b3J5IHRvIGRlLWVzY2FwZSBhIHZhbHVlLCBiYXNlZCBvbiBhIGxpc3QgYXQgYGtleWAgaW4gYGN0eGAuXG5mdW5jdGlvbiBmYWN0b3J5KGN0eCwga2V5KSB7XG4gIHJldHVybiB1bmVzY2FwZVxuXG4gIC8vIERlLWVzY2FwZSBhIHN0cmluZyB1c2luZyB0aGUgZXhwcmVzc2lvbiBhdCBga2V5YCBpbiBgY3R4YC5cbiAgZnVuY3Rpb24gdW5lc2NhcGUodmFsdWUpIHtcbiAgICB2YXIgcHJldmlvdXMgPSAwXG4gICAgdmFyIGluZGV4ID0gdmFsdWUuaW5kZXhPZihiYWNrc2xhc2gpXG4gICAgdmFyIGVzY2FwZSA9IGN0eFtrZXldXG4gICAgdmFyIHF1ZXVlID0gW11cbiAgICB2YXIgY2hhcmFjdGVyXG5cbiAgICB3aGlsZSAoaW5kZXggIT09IC0xKSB7XG4gICAgICBxdWV1ZS5wdXNoKHZhbHVlLnNsaWNlKHByZXZpb3VzLCBpbmRleCkpXG4gICAgICBwcmV2aW91cyA9IGluZGV4ICsgMVxuICAgICAgY2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KHByZXZpb3VzKVxuXG4gICAgICAvLyBJZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpcyBub3QgYSB2YWxpZCBlc2NhcGUsIGFkZCB0aGUgc2xhc2guXG4gICAgICBpZiAoIWNoYXJhY3RlciB8fCBlc2NhcGUuaW5kZXhPZihjaGFyYWN0ZXIpID09PSAtMSkge1xuICAgICAgICBxdWV1ZS5wdXNoKGJhY2tzbGFzaClcbiAgICAgIH1cblxuICAgICAgaW5kZXggPSB2YWx1ZS5pbmRleE9mKGJhY2tzbGFzaCwgcHJldmlvdXMgKyAxKVxuICAgIH1cblxuICAgIHF1ZXVlLnB1c2godmFsdWUuc2xpY2UocHJldmlvdXMpKVxuXG4gICAgcmV0dXJuIHF1ZXVlLmpvaW4oJycpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYXR0cmlidXRlTmFtZSA9ICdbYS16QS1aXzpdW2EtekEtWjAtOTouXy1dKidcbnZhciB1bnF1b3RlZCA9ICdbXlwiXFwnPTw+YFxcXFx1MDAwMC1cXFxcdTAwMjBdKydcbnZhciBzaW5nbGVRdW90ZWQgPSBcIidbXiddKidcIlxudmFyIGRvdWJsZVF1b3RlZCA9ICdcIlteXCJdKlwiJ1xudmFyIGF0dHJpYnV0ZVZhbHVlID1cbiAgJyg/OicgKyB1bnF1b3RlZCArICd8JyArIHNpbmdsZVF1b3RlZCArICd8JyArIGRvdWJsZVF1b3RlZCArICcpJ1xudmFyIGF0dHJpYnV0ZSA9XG4gICcoPzpcXFxccysnICsgYXR0cmlidXRlTmFtZSArICcoPzpcXFxccyo9XFxcXHMqJyArIGF0dHJpYnV0ZVZhbHVlICsgJyk/KSdcbnZhciBvcGVuVGFnID0gJzxbQS1aYS16XVtBLVphLXowLTlcXFxcLV0qJyArIGF0dHJpYnV0ZSArICcqXFxcXHMqXFxcXC8/PidcbnZhciBjbG9zZVRhZyA9ICc8XFxcXC9bQS1aYS16XVtBLVphLXowLTlcXFxcLV0qXFxcXHMqPidcbnZhciBjb21tZW50ID0gJzwhLS0tLT58PCEtLSg/Oi0/W14+LV0pKD86LT9bXi1dKSotLT4nXG52YXIgcHJvY2Vzc2luZyA9ICc8Wz9dLio/Wz9dPidcbnZhciBkZWNsYXJhdGlvbiA9ICc8IVtBLVphLXpdK1xcXFxzK1tePl0qPidcbnZhciBjZGF0YSA9ICc8IVxcXFxbQ0RBVEFcXFxcW1tcXFxcc1xcXFxTXSo/XFxcXF1cXFxcXT4nXG5cbmV4cG9ydHMub3BlbkNsb3NlVGFnID0gbmV3IFJlZ0V4cCgnXig/OicgKyBvcGVuVGFnICsgJ3wnICsgY2xvc2VUYWcgKyAnKScpXG5cbmV4cG9ydHMudGFnID0gbmV3IFJlZ0V4cChcbiAgJ14oPzonICtcbiAgICBvcGVuVGFnICtcbiAgICAnfCcgK1xuICAgIGNsb3NlVGFnICtcbiAgICAnfCcgK1xuICAgIGNvbW1lbnQgK1xuICAgICd8JyArXG4gICAgcHJvY2Vzc2luZyArXG4gICAgJ3wnICtcbiAgICBkZWNsYXJhdGlvbiArXG4gICAgJ3wnICtcbiAgICBjZGF0YSArXG4gICAgJyknXG4pXG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBpbnRlcnJ1cHRcblxuZnVuY3Rpb24gaW50ZXJydXB0KGludGVycnVwdG9ycywgdG9rZW5pemVycywgY3R4LCBwYXJhbWV0ZXJzKSB7XG4gIHZhciBsZW5ndGggPSBpbnRlcnJ1cHRvcnMubGVuZ3RoXG4gIHZhciBpbmRleCA9IC0xXG4gIHZhciBpbnRlcnJ1cHRvclxuICB2YXIgY29uZmlnXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpbnRlcnJ1cHRvciA9IGludGVycnVwdG9yc1tpbmRleF1cbiAgICBjb25maWcgPSBpbnRlcnJ1cHRvclsxXSB8fCB7fVxuXG4gICAgaWYgKFxuICAgICAgY29uZmlnLnBlZGFudGljICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGNvbmZpZy5wZWRhbnRpYyAhPT0gY3R4Lm9wdGlvbnMucGVkYW50aWNcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY29uZmlnLmNvbW1vbm1hcmsgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY29uZmlnLmNvbW1vbm1hcmsgIT09IGN0eC5vcHRpb25zLmNvbW1vbm1hcmtcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKHRva2VuaXplcnNbaW50ZXJydXB0b3JbMF1dLmFwcGx5KGN0eCwgcGFyYW1ldGVycykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG4iLCIndXNlIHN0cmljdCdcblxudmFyIGNvbGxhcHNlV2hpdGVTcGFjZSA9IHJlcXVpcmUoJ2NvbGxhcHNlLXdoaXRlLXNwYWNlJylcblxubW9kdWxlLmV4cG9ydHMgPSBub3JtYWxpemVcblxuLy8gTm9ybWFsaXplIGFuIGlkZW50aWZpZXIuICBDb2xsYXBzZXMgbXVsdGlwbGUgd2hpdGUgc3BhY2UgY2hhcmFjdGVycyBpbnRvIGFcbi8vIHNpbmdsZSBzcGFjZSwgYW5kIHJlbW92ZXMgY2FzaW5nLlxuZnVuY3Rpb24gbm9ybWFsaXplKHZhbHVlKSB7XG4gIHJldHVybiBjb2xsYXBzZVdoaXRlU3BhY2UodmFsdWUpLnRvTG93ZXJDYXNlKClcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgdmlzaXQgPSByZXF1aXJlKCd1bmlzdC11dGlsLXZpc2l0JylcblxubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVQb3NpdGlvblxuXG5mdW5jdGlvbiByZW1vdmVQb3NpdGlvbihub2RlLCBmb3JjZSkge1xuICB2aXNpdChub2RlLCBmb3JjZSA/IGhhcmQgOiBzb2Z0KVxuICByZXR1cm4gbm9kZVxufVxuXG5mdW5jdGlvbiBoYXJkKG5vZGUpIHtcbiAgZGVsZXRlIG5vZGUucG9zaXRpb25cbn1cblxuZnVuY3Rpb24gc29mdChub2RlKSB7XG4gIG5vZGUucG9zaXRpb24gPSB1bmRlZmluZWRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLyogQ29uc3RydWN0IGEgc3RhdGUgYHRvZ2dsZXJgOiBhIGZ1bmN0aW9uIHdoaWNoIGludmVyc2VzXG4gKiBgcHJvcGVydHlgIGluIGNvbnRleHQgYmFzZWQgb24gaXRzIGN1cnJlbnQgdmFsdWUuXG4gKiBUaGUgYnkgYHRvZ2dsZXJgIHJldHVybmVkIGZ1bmN0aW9uIHJlc3RvcmVzIHRoYXQgdmFsdWUuICovXG5mdW5jdGlvbiBmYWN0b3J5KGtleSwgc3RhdGUsIGN0eCkge1xuICByZXR1cm4gZW50ZXJcblxuICBmdW5jdGlvbiBlbnRlcigpIHtcbiAgICB2YXIgY29udGV4dCA9IGN0eCB8fCB0aGlzXG4gICAgdmFyIGN1cnJlbnQgPSBjb250ZXh0W2tleV1cblxuICAgIGNvbnRleHRba2V5XSA9ICFzdGF0ZVxuXG4gICAgcmV0dXJuIGV4aXRcblxuICAgIGZ1bmN0aW9uIGV4aXQoKSB7XG4gICAgICBjb250ZXh0W2tleV0gPSBjdXJyZW50XG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSB0cmltVHJhaWxpbmdMaW5lc1xuXG52YXIgbGluZSA9ICdcXG4nXG5cbi8qIFJlbW92ZSBmaW5hbCBuZXdsaW5lIGNoYXJhY3RlcnMgZnJvbSBgdmFsdWVgLiAqL1xuZnVuY3Rpb24gdHJpbVRyYWlsaW5nTGluZXModmFsdWUpIHtcbiAgdmFyIHZhbCA9IFN0cmluZyh2YWx1ZSlcbiAgdmFyIGluZGV4ID0gdmFsLmxlbmd0aFxuXG4gIHdoaWxlICh2YWwuY2hhckF0KC0taW5kZXgpID09PSBsaW5lKSB7XG4gICAgLyogRW1wdHkgKi9cbiAgfVxuXG4gIHJldHVybiB2YWwuc2xpY2UoMCwgaW5kZXggKyAxKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciB4dGVuZCA9IHJlcXVpcmUoJ3h0ZW5kJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxubW9kdWxlLmV4cG9ydHMgPSB1bmhlcml0XG5cbi8qIENyZWF0ZSBhIGN1c3RvbSBjb25zdHJ1Y3RvciB3aGljaCBjYW4gYmUgbW9kaWZpZWRcbiAqIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvcmlnaW5hbCBjbGFzcy4gKi9cbmZ1bmN0aW9uIHVuaGVyaXQoU3VwZXIpIHtcbiAgdmFyIHJlc3VsdFxuICB2YXIga2V5XG4gIHZhciB2YWx1ZVxuXG4gIGluaGVyaXRzKE9mLCBTdXBlcilcbiAgaW5oZXJpdHMoRnJvbSwgT2YpXG5cbiAgLyogQ2xvbmUgdmFsdWVzLiAqL1xuICByZXN1bHQgPSBPZi5wcm90b3R5cGVcblxuICBmb3IgKGtleSBpbiByZXN1bHQpIHtcbiAgICB2YWx1ZSA9IHJlc3VsdFtrZXldXG5cbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVzdWx0W2tleV0gPSAnY29uY2F0JyBpbiB2YWx1ZSA/IHZhbHVlLmNvbmNhdCgpIDogeHRlbmQodmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9mXG5cbiAgLyogQ29uc3RydWN0b3IgYWNjZXB0aW5nIGEgc2luZ2xlIGFyZ3VtZW50LFxuICAgKiB3aGljaCBpdHNlbGYgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LiAqL1xuICBmdW5jdGlvbiBGcm9tKHBhcmFtZXRlcnMpIHtcbiAgICByZXR1cm4gU3VwZXIuYXBwbHkodGhpcywgcGFyYW1ldGVycylcbiAgfVxuXG4gIC8qIENvbnN0cnVjdG9yIGFjY2VwdGluZyB2YXJpYWRpYyBhcmd1bWVudHMuICovXG4gIGZ1bmN0aW9uIE9mKCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBPZikpIHtcbiAgICAgIHJldHVybiBuZXcgRnJvbShhcmd1bWVudHMpXG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgfVxufVxuIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJjY291bnQiLCJ2YWx1ZSIsImNoYXJhY3RlciIsImluZGV4IiwiY291bnQiLCJTdHJpbmciLCJsZW5ndGgiLCJFcnJvciIsImluZGV4T2YiLCJjb2xsYXBzZSIsInJlcGxhY2UiLCJhbHBoYWJldGljYWwiLCJjb2RlIiwiY2hhckNvZGVBdCIsImRlY2ltYWwiLCJhbHBoYW51bWVyaWNhbCIsImhleGFkZWNpbWFsIiwid2hpdGVzcGFjZSIsInJlIiwidGVzdCIsImZyb21Db2RlIiwiY2hhckF0IiwiZnJvbUNoYXJDb2RlIiwid29yZENoYXJhY3RlciIsImVzY2FwZXMiLCJkZWZhdWx0cyIsImdmbSIsImNvbmNhdCIsImNvbW1vbm1hcmsiLCJvcHRpb25zIiwic2V0dGluZ3MiLCJkZWZhdWx0IiwiZWwiLCJkZWNvZGVFbnRpdHkiLCJjaGFyYWN0ZXJzIiwiY2hhciIsImVudGl0eSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRleHRDb250ZW50IiwibGVnYWN5IiwiaW52YWxpZCIsInBhcnNlRW50aXRpZXMiLCJvcHRpb24iLCJrZXkiLCJwb3NpdGlvbiIsImluZGVudCIsInN0YXJ0IiwicGFyc2UiLCJlbnRpdHlDaGFyYWN0ZXJzIiwibmFtZWRFbnRpdHkiLCJ0ZXJtaW5hdGVkIiwicmVmZXJlbmNlIiwiZm9sbG93aW5nIiwid2FybmluZyIsInJlYXNvbiIsIm91dHB1dCIsImJlZ2luIiwidHlwZSIsInByZXYiLCJuZXh0IiwiZGlmZiIsImVuZCIsImFkZGl0aW9uYWwiLCJub25UZXJtaW5hdGVkIiwiaGFuZGxlVGV4dCIsInRleHQiLCJoYW5kbGVSZWZlcmVuY2UiLCJoYW5kbGVXYXJuaW5nIiwidGV4dENvbnRleHQiLCJyZWZlcmVuY2VDb250ZXh0Iiwid2FybmluZ0NvbnRleHQiLCJwb3MiLCJsaW5lcyIsImNvbHVtbiIsImxpbmUiLCJxdWV1ZSIsInJlc3VsdCIsIm5vdyIsInBhcnNlRXJyb3IiLCJub29wIiwibGluZUZlZWQiLCJhbXBlcnNhbmQiLCJ0YWIiLCJmb3JtRmVlZCIsInNwYWNlIiwibGVzc1RoYW4iLCJudW1iZXJTaWduIiwidXBwZXJjYXNlWCIsImxvd2VyY2FzZVgiLCJoZXhhIiwiZGVjaSIsIm5hbWUiLCJ0ZXN0cyIsIm93biIsImNhbGwiLCJzZW1pY29sb24iLCJuYW1lZFVua25vd24iLCJuYW1lZE5vdFRlcm1pbmF0ZWQiLCJuYW1lZEVtcHR5IiwiYXR0cmlidXRlIiwiZXF1YWxzVG8iLCJudW1lcmljTm90VGVybWluYXRlZCIsInByb2hpYml0ZWQiLCJwYXJzZUludCIsImJhc2VzIiwibnVtZXJpY1Byb2hpYml0ZWQiLCJyZXBsYWNlbWVudENoYXJhY3RlciIsIm51bWVyaWNEaXNhbGxvd2VkIiwiZGlzYWxsb3dlZCIsIm51bWVyaWNFbXB0eSIsImZsdXNoIiwicHVzaCIsIm9mZnNldCIsInNsaWNlIiwiam9pbiIsIm1lc3NhZ2VzIiwiaGFzT3duUHJvcGVydHkiLCJGdW5jdGlvbiIsInByb3RvdHlwZSIsImNyZWF0ZVRodW5rTWlkZGxld2FyZSIsImV4dHJhQXJndW1lbnQiLCJfcmVmIiwiZGlzcGF0Y2giLCJnZXRTdGF0ZSIsImFjdGlvbiIsIl9fZXNNb2R1bGUiLCJ0aHVuayIsIndpdGhFeHRyYUFyZ3VtZW50IiwidW5oZXJpdCIsInh0ZW5kIiwiUGFyc2VyIiwidGhpcyIsImRhdGEiLCJMb2NhbCIsImVudGl0aWVzIiwiZmFjdG9yeSIsImN0eCIsImRlY29kZXIiLCJyYXciLCJkZWNvZGVSYXciLCJub3JtYWxpemUiLCJvZmZzZXRzIiwiaGFuZGxlciIsImZpbGUiLCJtZXNzYWdlIiwicGVkYW50aWMiLCJibG9ja3MiLCJsb2NhdGUiLCJmcm9tSW5kZXgiLCJwbHVzU2lnbiIsImRhc2giLCJkb3QiLCJ1bmRlcnNjb3JlIiwiaXNHZm1BdGV4dCIsImF0IiwiYXN0ZXJpc2siLCJsaW5rIiwiaW1hZ2UiLCJtaW4iLCJ2YWx1ZXMiLCJyZW1vdmVQb3NpdGlvbiIsIm5vZGUiLCJjb250ZW50IiwibGluZUJyZWFrc0V4cHJlc3Npb24iLCJjaGlsZHJlbiIsInRva2VuaXplQmxvY2siLCJlb2YiLCJ0b2dnbGUiLCJ2ZmlsZUxvY2F0aW9uIiwidW5lc2NhcGUiLCJkZWNvZGUiLCJ0b2tlbml6ZXIiLCJkb2MiLCJzZXRPcHRpb25zIiwiaW5MaXN0IiwiaW5CbG9jayIsImluTGluayIsImF0U3RhcnQiLCJ0b09mZnNldCIsInByb3RvIiwia2V5cyIsImV4aXRTdGFydCIsImVudGVyTGlzdCIsImVudGVyTGluayIsImVudGVyQmxvY2siLCJpbnRlcnJ1cHRQYXJhZ3JhcGgiLCJpbnRlcnJ1cHRMaXN0IiwiaW50ZXJydXB0QmxvY2txdW90ZSIsImJsb2NrVG9rZW5pemVycyIsImJsYW5rTGluZSIsImluZGVudGVkQ29kZSIsImZlbmNlZENvZGUiLCJibG9ja3F1b3RlIiwiYXR4SGVhZGluZyIsInRoZW1hdGljQnJlYWsiLCJsaXN0Iiwic2V0ZXh0SGVhZGluZyIsImh0bWwiLCJkZWZpbml0aW9uIiwidGFibGUiLCJwYXJhZ3JhcGgiLCJpbmxpbmVUb2tlbml6ZXJzIiwiZXNjYXBlIiwiYXV0b0xpbmsiLCJ1cmwiLCJlbWFpbCIsInN0cm9uZyIsImVtcGhhc2lzIiwiZGVsZXRpb24iLCJicmVhayIsImJsb2NrTWV0aG9kcyIsImlubGluZU1ldGhvZHMiLCJ0b2tlbml6ZUlubGluZSIsInRva2VuaXplRmFjdG9yeSIsImN1cnJlbnQiLCJsb2NhdG9yIiwibm90SW5MaW5rIiwiZ3JlYXRlclRoYW4iLCJhdFNpZ24iLCJzbGFzaCIsIm1haWx0byIsIm1haWx0b0xlbmd0aCIsImVhdCIsInNpbGVudCIsInRva2VuaXplcnMiLCJleGl0Iiwic3VidmFsdWUiLCJoYXNBdENoYXJhY3RlciIsInRvTG93ZXJDYXNlIiwidGl0bGUiLCJyZUJsYW5rTGluZSIsIm1hdGNoIiwiZXhlYyIsInRyaW0iLCJpbnRlcnJ1cHQiLCJhZGQiLCJyZXN0IiwibmV4dEluZGV4Iiwic3RhcnRJbmRleCIsInByZWZpeGVkIiwiaW50ZXJydXB0b3JzIiwiY3VycmVudExpbmUiLCJjb250ZW50cyIsImluZGVudHMiLCJoYXJkQnJlYWsiLCJtaW5CcmVha0xlbmd0aCIsImZlbmNlQ291bnQiLCJtYXJrZXIiLCJmbGFnIiwibGFuZyIsIm1ldGEiLCJleGRlbnRlZENvbnRlbnQiLCJjbG9zaW5nIiwiZXhkZW50ZWRDbG9zaW5nIiwidGlsZGUiLCJncmF2ZUFjY2VudCIsIm1pbkZlbmNlQ291bnQiLCJza2lwIiwidGFiU2l6ZSIsInJlcGVhdCIsImJsYW5rUXVldWUiLCJzdWJ2YWx1ZVF1ZXVlIiwiY29udGVudFF1ZXVlIiwiY29kZUluZGVudCIsImlubGluZUNvZGUiLCJvcGVuaW5nRmVuY2VFbmQiLCJjbG9zaW5nRmVuY2VTdGFydCIsImNsb3NpbmdGZW5jZUVuZCIsImZvdW5kIiwidW5kZWZpbmVkIiwiYmVmb3JlVVJMIiwiYmVmb3JlVGl0bGUiLCJpZGVudGlmaWVyIiwibGVmdFNxdWFyZUJyYWNrZXQiLCJyaWdodFNxdWFyZUJyYWNrZXQiLCJiYWNrc2xhc2giLCJjb2xvbiIsImlzRW5jbG9zZWRVUkxDaGFyYWN0ZXIiLCJkZWxpbWl0ZXIiLCJpc1VuY2xvc2VkVVJMQ2hhcmFjdGVyIiwicXVvdGF0aW9uTWFyayIsImFwb3N0cm9waGUiLCJsZWZ0UGFyZW50aGVzaXMiLCJyaWdodFBhcmVudGhlc2lzIiwibGFiZWwiLCJzdHJpa2V0aHJvdWdoIiwiZmVuY2UiLCJwcmV2aW91cyIsInByZWNlZGluZyIsImZpcnN0RG90Iiwid29yZCIsImRlcHRoIiwibWF4RmVuY2VDb3VudCIsIm1heEluZGVudCIsImVxdWFsc1RvRGVwdGgiLCJkYXNoRGVwdGgiLCJvcGVuQ2xvc2VUYWciLCJibG9ja0h0bWwiLCJzZXF1ZW5jZSIsImVsZW1lbnRPcGVuRXhwcmVzc2lvbiIsIlJlZ0V4cCIsInNlcXVlbmNlcyIsInJhd09wZW5FeHByZXNzaW9uIiwicmF3Q2xvc2VFeHByZXNzaW9uIiwiY29tbWVudE9wZW5FeHByZXNzaW9uIiwiY29tbWVudENsb3NlRXhwcmVzc2lvbiIsImluc3RydWN0aW9uT3BlbkV4cHJlc3Npb24iLCJpbnN0cnVjdGlvbkNsb3NlRXhwcmVzc2lvbiIsImRpcmVjdGl2ZU9wZW5FeHByZXNzaW9uIiwiZGlyZWN0aXZlQ2xvc2VFeHByZXNzaW9uIiwiY2RhdGFPcGVuRXhwcmVzc2lvbiIsImNkYXRhQ2xvc2VFeHByZXNzaW9uIiwiZWxlbWVudENsb3NlRXhwcmVzc2lvbiIsIm90aGVyRWxlbWVudE9wZW5FeHByZXNzaW9uIiwic291cmNlIiwidGFnIiwiaW5saW5lSFRNTCIsInF1ZXN0aW9uTWFyayIsImV4Y2xhbWF0aW9uTWFyayIsImh0bWxMaW5rT3BlbkV4cHJlc3Npb24iLCJodG1sTGlua0Nsb3NlRXhwcmVzc2lvbiIsImNsb3NlZCIsIm9wZW5pbmciLCJzdWJxdWV1ZSIsImhhc01hcmtlciIsImlzSW1hZ2UiLCJhbHQiLCJnZXRJbmRlbnQiLCJyZW1vdmVJbmRlbnQiLCJzaXplIiwib3JkZXJlZCIsImN1cnJlbnRNYXJrZXIiLCJwcmV2aW91c0VtcHR5IiwiZW1wdHkiLCJpdGVtcyIsImFsbExpbmVzIiwiZW1wdHlMaW5lcyIsIml0ZW0iLCJlbnRlclRvcCIsImV4aXRCbG9ja3F1b3RlIiwiaW5kZW50ZWQiLCJpbnRlcnVwdG9ycyIsInNwcmVhZCIsInRyYWlsIiwicmVzZXQiLCJsaXN0SXRlbSIsImxvb3NlTGlzdEl0ZW1FeHByZXNzaW9uIiwidGFza0l0ZW1FeHByZXNzaW9uIiwiYnVsbGV0RXhwcmVzc2lvbiIsInBlZGFudGljQnVsbGV0RXhwcmVzc2lvbiIsImluaXRpYWxJbmRlbnRFeHByZXNzaW9uIiwidGFzayIsImNoZWNrZWQiLCJwZWRhbnRpY0xpc3RJdGVtIiwibm9ybWFsTGlzdEl0ZW0iLCJhcHBseSIsImFyZ3VtZW50cyIsInJlcGxhY2VyIiwiJDAiLCJtYXgiLCJidWxsZXQiLCJ0cmltbWVkTGluZXMiLCIkMSIsIiQyIiwiJDMiLCIkNCIsIk51bWJlciIsInNwbGl0IiwidHJpbVRyYWlsaW5nTGluZXMiLCJzaG9ydGN1dCIsImNvbGxhcHNlZCIsImZ1bGwiLCJicmFja2V0ZWQiLCJpbnRybyIsInJlZmVyZW5jZVR5cGUiLCJhbGlnbm1lbnRzIiwiYWxpZ25tZW50Iiwicm93IiwiaGFzRGFzaCIsImFsaWduIiwiY2VsbCIsInByZWFtYmxlIiwibGluZUNvdW50Iiwicm93cyIsImxpbmVJbmRleCIsInBpcGVJbmRleCIsImZpcnN0IiwidmVydGljYWxCYXIiLCJtaW5Sb3dzIiwic3BsaWNlIiwibGVmdCIsImNlbnRlciIsInJpZ2h0IiwibWluQ29sdW1ucyIsIm1ldGhvZHMiLCJmYWlsIiwibWFya2VyQ291bnQiLCJtYXhDb3VudCIsImNvbW1hIiwibGVmdFBhcmVudGhlc2lzQ2hhcmFjdGVyIiwicmlnaHRQYXJlbnRoZXNpc0NoYXJhY3RlciIsImRvdHMiLCJsYXN0VHdvUGFydHNTdGFydCIsInBhdGhTdGFydCIsInBhdGgiLCJsZWZ0Q291bnQiLCJyaWdodENvdW50IiwicHJldmlvdXNEb3QiLCJwcm90b2NvbGxlc3MiLCJwb3AiLCJsYXN0SW5kZXhPZiIsIm1lcmdlYWJsZSIsIm1lcmdlVGV4dCIsIm1lcmdlQmxvY2txdW90ZSIsInRva2VuaXplIiwibG9jYXRpb24iLCJtZXRob2QiLCJtYXRjaGVkIiwidmFsdWVMZW5ndGgiLCJzZWxmIiwidG9rZW5zIiwidXBkYXRlUG9zaXRpb24iLCJvbmx5QXRTdGFydCIsIm5vdEluTGlzdCIsIm5vdEluQmxvY2siLCJsYXN0SW5kZXgiLCJnZXRPZmZzZXQiLCJpbmRlbnRhdGlvbiIsImxhc3QiLCJQb3NpdGlvbiIsInZhbGlkYXRlRWF0IiwiYmVmb3JlIiwidXBkYXRlIiwiY29tYmluZWQiLCJuIiwibCIsInBhcmVudCIsIm9wZW5UYWciLCJjbG9zZVRhZyIsInBhcmFtZXRlcnMiLCJpbnRlcnJ1cHRvciIsImNvbmZpZyIsImNvbGxhcHNlV2hpdGVTcGFjZSIsInZpc2l0IiwiaGFyZCIsInNvZnQiLCJmb3JjZSIsInN0YXRlIiwiZW50ZXIiLCJjb250ZXh0IiwidmFsIiwiaW5oZXJpdHMiLCJTdXBlciIsIk9mIiwiRnJvbSJdLCJzb3VyY2VSb290IjoiIn0=