-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path448.4d765c8a.iframe.bundle.js
3 lines (3 loc) · 75.4 KB
/
448.4d765c8a.iframe.bundle.js
1
2
3
/*! For license information please see 448.4d765c8a.iframe.bundle.js.LICENSE.txt */
(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[448],{"./src/templates/SafeMarkdown.jsx":(module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _redactableMarkdown=_interopRequireDefault(__webpack_require__("./node_modules/@code-dot-org/redactable-markdown/dist/main.js")),_remarkPlugins=__webpack_require__("./node_modules/@code-dot-org/remark-plugins/src/index.js"),_github=_interopRequireDefault(__webpack_require__("./node_modules/hast-util-sanitize/lib/github.json")),_propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_rehypeRaw=_interopRequireDefault(__webpack_require__("./node_modules/rehype-raw/index.js")),_rehypeReact=_interopRequireDefault(__webpack_require__("./node_modules/rehype-react/index.js")),_rehypeSanitize=_interopRequireDefault(__webpack_require__("./node_modules/rehype-sanitize/index.js")),_remarkRehype=_interopRequireDefault(__webpack_require__("./node_modules/remark-rehype/index.js")),_unified=_interopRequireDefault(__webpack_require__("./node_modules/unified/index.js")),_externalLinks=_interopRequireDefault(__webpack_require__("./src/templates/plugins/externalLinks.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _typeof(o){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}var SafeMarkdown=function(_React$Component){function SafeMarkdown(){return _React$Component.apply(this,arguments)||this}return function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(SafeMarkdown,_React$Component),SafeMarkdown.prototype.render=function render(){var processor=this.props.openExternalLinksInNewTab?markdownToReactExternalLinks:markdownToReact,rendered=Object(processor.processSync(this.props.markdown).result),markdownProps={};return this.props.className&&(markdownProps.className=this.props.className),this.props.id&&(markdownProps.id=this.props.id),this.props.unwrapped?rendered.props.children:rendered&&"div"===rendered.type&&!Object.keys(markdownProps).length?rendered:_react.default.createElement("div",markdownProps,rendered)},SafeMarkdown}(_react.default.Component);!function _defineProperty(e,r,t){return(r=function _toPropertyKey(t){var i=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(i)?i:i+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}(SafeMarkdown,"propTypes",{markdown:_propTypes.default.string.isRequired,openExternalLinksInNewTab:_propTypes.default.bool,unwrapped:_propTypes.default.bool,className:_propTypes.default.string,id:_propTypes.default.string});var schema=Object.assign({},_github.default);schema.attributes.img.push("height","width"),schema.tagNames.push("span"),schema.attributes.span=["dataUrl","className"],schema.attributes["*"].push("style","className"),schema.attributes.b=["dataId"],schema.clobber=[];var blocklyTags=["block","functional_input","mutation","next","statement","title","field","value","xml"];schema.tagNames=schema.tagNames.concat(blocklyTags);var blocklyComponentWrappers={};blocklyTags.forEach((function(tag){schema.attributes[tag]=["block_text","id","inline","name","type"],blocklyComponentWrappers[tag]=function(props){var BlocklyElement=tag;return _react.default.createElement(BlocklyElement,_extends({is:tag},props))}}));var markdownToReact=(0,_unified.default)().use(_redactableMarkdown.default.getParser()).use([_remarkPlugins.clickableText,_remarkPlugins.expandableImages,_remarkPlugins.visualCodeBlock,_remarkPlugins.xmlAsTopLevelBlock,_remarkPlugins.details]).use(_remarkRehype.default,{allowDangerousHtml:!0}).use(_rehypeRaw.default).use(_rehypeSanitize.default,schema).use(_rehypeReact.default,{createElement:_react.default.createElement,components:blocklyComponentWrappers}),markdownToReactExternalLinks=markdownToReact().use(_externalLinks.default,{links:"all"});exports.default=SafeMarkdown;module.exports=exports.default},"./src/templates/plugins/externalLinks.js":(__unused_webpack_module,exports)=>{"use strict";function isExternalLink(url){return!/https?:\/\/([^.]+\.)*code.org(:[0-9]+)?\//.test(function fullyQualified(path){return(a=a||document.createElement("a")).href=path,a.href}(url))}var a;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function externalLinks(){var options=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},tokenizers=this.Parser.prototype.inlineTokenizers,original=tokenizers.link,all="all"===options.links;tokenizers.link=function(eat,value,silent){var link=original.call(this,eat,value,silent);if(link&&"link"===link.type&&(all||isExternalLink(link.url))){link.data=link.data||{},link.data.hProperties=link.data.hProperties||{};var props=link.data.hProperties;props.target=props.target||"_blank",props.rel="noreferrer noopener"}return link},tokenizers.link.locator=original.locator},exports.isExternalLink=isExternalLink},"./src/templates/studioHomepages/ResourceCard.jsx":(module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=_typeof(e)&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,t&&t.set(e,n),n}(__webpack_require__("./node_modules/react/index.js")),_reactRedux=__webpack_require__("./node_modules/react-redux/es/index.js"),_fontConstants=_interopRequireDefault(__webpack_require__("./src/fontConstants.js")),_Button=_interopRequireDefault(__webpack_require__("./src/legacySharedComponents/Button.jsx")),_SafeMarkdown=_interopRequireDefault(__webpack_require__("./src/templates/SafeMarkdown.jsx")),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js"));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r})(e)}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _typeof(o){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){_defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=function _toPropertyKey(t){var i=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(i)?i:i+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var ResourceCard=function(_Component){function ResourceCard(){return _Component.apply(this,arguments)||this}return function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(ResourceCard,_Component),ResourceCard.prototype.render=function render(){var _this$props=this.props,title=_this$props.title,callout=_this$props.callout,description=_this$props.description,buttonText=_this$props.buttonText,link=_this$props.link,isRtl=_this$props.isRtl,allowWrap=_this$props.allowWrap,allowMarkdown=_this$props.allowMarkdown,linkId=_this$props.linkId,linkClass=_this$props.linkClass,responsiveSize=_this$props.responsiveSize,localeStyle=isRtl?styles.rtl:styles.ltr,buttonStyles=styles.button,cardStyles=_objectSpread(_objectSpread({},styles.card),localeStyle),titleStyles=_objectSpread(_objectSpread({},styles.title),localeStyle),descriptionStyles=_objectSpread(_objectSpread(_objectSpread({},styles.text),styles.description),localeStyle);["sm","xs"].includes(responsiveSize)&&(Object.assign(cardStyles,styles.cardSmall),Object.assign(titleStyles,styles.titleSmall),Object.assign(descriptionStyles,styles.descriptionSmall)),allowWrap?(Object.assign(buttonStyles,styles.buttonAllowWrap),Object.assign(cardStyles,styles.cardAllowWrap),Object.assign(titleStyles,styles.titleAllowWrap)):Object.assign(titleStyles,styles.titleNoWrap);var descriptionContent=description;return allowMarkdown&&(descriptionContent=_react.default.createElement(_SafeMarkdown.default,{markdown:description})),_react.default.createElement("div",{style:cardStyles},_react.default.createElement("div",{style:styles.titleContainer},_react.default.createElement("div",{style:titleStyles},title),callout&&_react.default.createElement("div",{style:styles.callout},_react.default.createElement("i",null,callout))),_react.default.createElement("div",{style:descriptionStyles},descriptionContent),_react.default.createElement("br",null),_react.default.createElement(_Button.default,{__useDeprecatedTag:!0,id:linkId,className:linkClass,href:link,color:_Button.default.ButtonColor.brandSecondaryDefault,text:buttonText,style:buttonStyles}))},ResourceCard}(_react.Component);_defineProperty(ResourceCard,"propTypes",{title:_propTypes.default.string.isRequired,callout:_propTypes.default.string,description:_propTypes.default.string,buttonText:_propTypes.default.string.isRequired,link:_propTypes.default.string.isRequired,isRtl:_propTypes.default.bool.isRequired,responsiveSize:_propTypes.default.string.isRequired,allowWrap:_propTypes.default.bool,allowMarkdown:_propTypes.default.bool,linkId:_propTypes.default.string,linkClass:_propTypes.default.string});var styles={card:{height:250,width:308,background:_color.default.neutral_light,border:"1px solid ".concat(_color.default.neutral_dark20)},cardSmall:{width:"100%"},cardAllowWrap:{position:"relative"},text:{paddingLeft:20,paddingRight:20,color:_color.default.neutral_dark},titleContainer:{display:"flex",alignItems:"baseline",padding:"14px 20px 10px 20px"},title:_objectSpread(_objectSpread({color:_color.default.neutral_dark},_fontConstants.default["main-font-bold"]),{},{fontSize:27,lineHeight:"29px",boxSizing:"border-box"}),titleSmall:{boxSizing:"border-box"},titleNoWrap:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden"},titleAllowWrap:{lineHeight:"1.1"},callout:_objectSpread(_objectSpread({flex:"none",fontSize:14,margin:"0px 8px"},_fontConstants.default["main-font-semi-bold"]),{},{color:_color.default.brand_accent_default}),description:_objectSpread(_objectSpread({},_fontConstants.default["main-font-regular"]),{},{fontSize:14,lineHeight:"21px",height:140,marginBottom:5,overflowY:"auto"}),descriptionSmall:{width:"100%",boxSizing:"border-box"},button:{marginLeft:20,marginRight:20,whiteSpace:"inherit"},buttonAllowWrap:{position:"absolute",bottom:20,left:0},ltr:{float:"left"},rtl:{float:"right"}};exports.default=(0,_reactRedux.connect)((function(state){return{isRtl:state.isRtl,responsiveSize:state.responsive.responsiveSize}}))(ResourceCard);module.exports=exports.default},"./node_modules/classnames/index.js":(module,exports)=>{var __WEBPACK_AMD_DEFINE_RESULT__;!function(){"use strict";var hasOwn={}.hasOwnProperty;function classNames(){for(var classes=[],i=0;i<arguments.length;i++){var arg=arguments[i];if(arg){var argType=typeof arg;if("string"===argType||"number"===argType)classes.push(arg);else if(Array.isArray(arg)){if(arg.length){var inner=classNames.apply(null,arg);inner&&classes.push(inner)}}else if("object"===argType){if(arg.toString!==Object.prototype.toString&&!arg.toString.toString().includes("[native code]")){classes.push(arg.toString());continue}for(var key in arg)hasOwn.call(arg,key)&&arg[key]&&classes.push(key)}}}return classes.join(" ")}module.exports?(classNames.default=classNames,module.exports=classNames):void 0===(__WEBPACK_AMD_DEFINE_RESULT__=function(){return classNames}.apply(exports,[]))||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)}()},"./node_modules/css-loader/dist/runtime/api.js":module=>{"use strict";module.exports=function(cssWithMappingToString){var list=[];return list.toString=function toString(){return this.map((function(item){var content="",needLayer=void 0!==item[5];return item[4]&&(content+="@supports (".concat(item[4],") {")),item[2]&&(content+="@media ".concat(item[2]," {")),needLayer&&(content+="@layer".concat(item[5].length>0?" ".concat(item[5]):""," {")),content+=cssWithMappingToString(item),needLayer&&(content+="}"),item[2]&&(content+="}"),item[4]&&(content+="}"),content})).join("")},list.i=function i(modules,media,dedupe,supports,layer){"string"==typeof modules&&(modules=[[null,modules,void 0]]);var alreadyImportedModules={};if(dedupe)for(var k=0;k<this.length;k++){var id=this[k][0];null!=id&&(alreadyImportedModules[id]=!0)}for(var _k=0;_k<modules.length;_k++){var item=[].concat(modules[_k]);dedupe&&alreadyImportedModules[item[0]]||(void 0!==layer&&(void 0===item[5]||(item[1]="@layer".concat(item[5].length>0?" ".concat(item[5]):""," {").concat(item[1],"}")),item[5]=layer),media&&(item[2]?(item[1]="@media ".concat(item[2]," {").concat(item[1],"}"),item[2]=media):item[2]=media),supports&&(item[4]?(item[1]="@supports (".concat(item[4],") {").concat(item[1],"}"),item[4]=supports):item[4]="".concat(supports)),list.push(item))}},list}},"./node_modules/css-loader/dist/runtime/sourceMaps.js":module=>{"use strict";module.exports=function(item){var content=item[1],cssMapping=item[3];if(!cssMapping)return content;if("function"==typeof btoa){var base64=btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))),data="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64),sourceMapping="/*# ".concat(data," */"),sourceURLs=cssMapping.sources.map((function(source){return"/*# sourceURL=".concat(cssMapping.sourceRoot||"").concat(source," */")}));return[content].concat(sourceURLs).concat([sourceMapping]).join("\n")}return[content].join("\n")}},"./node_modules/redux-thunk/lib/index.js":(__unused_webpack_module,exports)=>{"use strict";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/style-loader/dist/runtime/injectStylesIntoStyleTag.js":module=>{"use strict";var stylesInDOM=[];function getIndexByIdentifier(identifier){for(var result=-1,i=0;i<stylesInDOM.length;i++)if(stylesInDOM[i].identifier===identifier){result=i;break}return result}function modulesToDom(list,options){for(var idCountMap={},identifiers=[],i=0;i<list.length;i++){var item=list[i],id=options.base?item[0]+options.base:item[0],count=idCountMap[id]||0,identifier="".concat(id," ").concat(count);idCountMap[id]=count+1;var indexByIdentifier=getIndexByIdentifier(identifier),obj={css:item[1],media:item[2],sourceMap:item[3],supports:item[4],layer:item[5]};if(-1!==indexByIdentifier)stylesInDOM[indexByIdentifier].references++,stylesInDOM[indexByIdentifier].updater(obj);else{var updater=addElementStyle(obj,options);options.byIndex=i,stylesInDOM.splice(i,0,{identifier,updater,references:1})}identifiers.push(identifier)}return identifiers}function addElementStyle(obj,options){var api=options.domAPI(options);api.update(obj);return function updater(newObj){if(newObj){if(newObj.css===obj.css&&newObj.media===obj.media&&newObj.sourceMap===obj.sourceMap&&newObj.supports===obj.supports&&newObj.layer===obj.layer)return;api.update(obj=newObj)}else api.remove()}}module.exports=function(list,options){var lastIdentifiers=modulesToDom(list=list||[],options=options||{});return function update(newList){newList=newList||[];for(var i=0;i<lastIdentifiers.length;i++){var index=getIndexByIdentifier(lastIdentifiers[i]);stylesInDOM[index].references--}for(var newLastIdentifiers=modulesToDom(newList,options),_i=0;_i<lastIdentifiers.length;_i++){var _index=getIndexByIdentifier(lastIdentifiers[_i]);0===stylesInDOM[_index].references&&(stylesInDOM[_index].updater(),stylesInDOM.splice(_index,1))}lastIdentifiers=newLastIdentifiers}}},"./node_modules/style-loader/dist/runtime/insertBySelector.js":module=>{"use strict";var memo={};module.exports=function insertBySelector(insert,style){var target=function getTarget(target){if(void 0===memo[target]){var styleTarget=document.querySelector(target);if(window.HTMLIFrameElement&&styleTarget instanceof window.HTMLIFrameElement)try{styleTarget=styleTarget.contentDocument.head}catch(e){styleTarget=null}memo[target]=styleTarget}return memo[target]}(insert);if(!target)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");target.appendChild(style)}},"./node_modules/style-loader/dist/runtime/insertStyleElement.js":module=>{"use strict";module.exports=function insertStyleElement(options){var element=document.createElement("style");return options.setAttributes(element,options.attributes),options.insert(element,options.options),element}},"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";module.exports=function setAttributesWithoutAttributes(styleElement){var nonce=__webpack_require__.nc;nonce&&styleElement.setAttribute("nonce",nonce)}},"./node_modules/style-loader/dist/runtime/styleDomAPI.js":module=>{"use strict";module.exports=function domAPI(options){var styleElement=options.insertStyleElement(options);return{update:function update(obj){!function apply(styleElement,options,obj){var css="";obj.supports&&(css+="@supports (".concat(obj.supports,") {")),obj.media&&(css+="@media ".concat(obj.media," {"));var needLayer=void 0!==obj.layer;needLayer&&(css+="@layer".concat(obj.layer.length>0?" ".concat(obj.layer):""," {")),css+=obj.css,needLayer&&(css+="}"),obj.media&&(css+="}"),obj.supports&&(css+="}");var sourceMap=obj.sourceMap;sourceMap&&"undefined"!=typeof btoa&&(css+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))))," */")),options.styleTagTransform(css,styleElement,options.options)}(styleElement,options,obj)},remove:function remove(){!function removeStyleElement(styleElement){if(null===styleElement.parentNode)return!1;styleElement.parentNode.removeChild(styleElement)}(styleElement)}}}},"./node_modules/style-loader/dist/runtime/styleTagTransform.js":module=>{"use strict";module.exports=function styleTagTransform(css,styleElement){if(styleElement.styleSheet)styleElement.styleSheet.cssText=css;else{for(;styleElement.firstChild;)styleElement.removeChild(styleElement.firstChild);styleElement.appendChild(document.createTextNode(css))}}}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFTLEdBQUksT0FHNUVtQyxLQUFPRCxJQUFJQyxJQUVQeEMsWUFDRndDLEtBQU8sS0FHTEQsSUFBSXJDLFFBQ05zQyxLQUFPLEtBR0xELElBQUluQyxXQUNOb0MsS0FBTyxLQUdULElBQUlDLFVBQVlGLElBQUlFLFVBRWhCQSxXQUE2QixvQkFBVC9CLE9BQ3RCOEIsS0FBTyx1REFBdURyTSxPQUFPdUssS0FBS0UsU0FBU0MsbUJBQW1CQyxLQUFLQyxVQUFVMEIsY0FBZSxRQU10SXBLLFFBQVF3TSxrQkFBa0JyQyxJQUFLa0MsYUFBY3JNLFFBQVFBLFFBQ3ZELENBaUJNekYsQ0FBTThSLGFBQWNyTSxRQUFTa0ssSUFDL0IsRUFDQVksT0FBUSxTQUFTQSxVQWpCckIsU0FBUzJCLG1CQUFtQkosY0FFMUIsR0FBZ0MsT0FBNUJBLGFBQWFLLFdBQ2YsT0FBTyxFQUdUTCxhQUFhSyxXQUFXQyxZQUFZTixhQUN0QyxDQVdNSSxDQUFtQkosYUFDckIsRUFFSix5RkNwREEvTSxPQUFPRCxRQVpQLFNBQVNtTixrQkFBa0JyQyxJQUFLa0MsY0FDOUIsR0FBSUEsYUFBYU8sV0FDZlAsYUFBYU8sV0FBV0MsUUFBVTFDLFFBQzdCLENBQ0wsS0FBT2tDLGFBQWFTLFlBQ2xCVCxhQUFhTSxZQUFZTixhQUFhUyxZQUd4Q1QsYUFBYUwsWUFBWWxNLFNBQVNpTixlQUFlNUMsS0FDbkQsQ0FDRiIsInNvdXJjZXMiOlsid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy90ZW1wbGF0ZXMvU2FmZU1hcmtkb3duLmpzeCIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL3BsdWdpbnMvZXh0ZXJuYWxMaW5rcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL3N0dWRpb0hvbWVwYWdlcy9SZXNvdXJjZUNhcmQuanN4Iiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlZHV4LXRodW5rL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9jZXNzb3IgZnJvbSAnQGNvZGUtZG90LW9yZy9yZWRhY3RhYmxlLW1hcmtkb3duJztcbmltcG9ydCB7XG4gIGRldGFpbHMsXG4gIGNsaWNrYWJsZVRleHQsXG4gIGV4cGFuZGFibGVJbWFnZXMsXG4gIHZpc3VhbENvZGVCbG9jayxcbiAgeG1sQXNUb3BMZXZlbEJsb2NrLFxufSBmcm9tICdAY29kZS1kb3Qtb3JnL3JlbWFyay1wbHVnaW5zJztcbmltcG9ydCBkZWZhdWx0U2FuaXRpemF0aW9uU2NoZW1hIGZyb20gJ2hhc3QtdXRpbC1zYW5pdGl6ZS9saWIvZ2l0aHViLmpzb24nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgcmVoeXBlUmF3IGZyb20gJ3JlaHlwZS1yYXcnO1xuaW1wb3J0IHJlaHlwZVJlYWN0IGZyb20gJ3JlaHlwZS1yZWFjdCc7XG5pbXBvcnQgcmVoeXBlU2FuaXRpemUgZnJvbSAncmVoeXBlLXNhbml0aXplJztcbmltcG9ydCByZW1hcmtSZWh5cGUgZnJvbSAncmVtYXJrLXJlaHlwZSc7XG5pbXBvcnQgdW5pZmllZCBmcm9tICd1bmlmaWVkJztcblxuaW1wb3J0IGV4dGVybmFsTGlua3MgZnJvbSAnLi9wbHVnaW5zL2V4dGVybmFsTGlua3MnO1xuXG4vKipcbiAqIEJhc2ljIGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGEgbWFya2Rvd24gc3RyaW5nIGFzIEhUTUwsIHdpdGggc2FuaXRpemF0aW9uLlxuICogQ2FuIHNhZmVseSByZW5kZXIgbWFya2Rvd24gZXZlbiBmcm9tIHVudHJ1c3RlZCBzb3VyY2VzLCB3aXRob3V0IHBvdGVudGlhbGx5XG4gKiBleHBvc2luZyB1cyB0byBhbiBYU1MgaW5qZWN0aW9uLlxuICovXG5jbGFzcyBTYWZlTWFya2Rvd24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG1hcmtkb3duOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb3BlbkV4dGVybmFsTGlua3NJbk5ld1RhYjogUHJvcFR5cGVzLmJvb2wsXG4gICAgdW53cmFwcGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIC8vIFdlIG9ubHkgb3BlbiBleHRlcm5hbCBsaW5rcyBpbiBhIG5ldyB0YWIgaWYgaXQncyBleHBsaWNpdGx5IHNwZWNpZmllZFxuICAgIC8vIHRoYXQgd2UgZG8gc287IHRoaXMgaXMgYWJzb2x1dGVseSBub3Qgc29tZXRoaW5nIHdlIHdhbnQgdG8gZG8gYXMgYVxuICAgIC8vIGdlbmVyYWwgcHJhY3RpY2UsIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgaW4gd2hpY2hcbiAgICAvLyBpdCBpcyBjdXJyZW50bHkgYSByZXF1aXJlbWVudC5cbiAgICBjb25zdCBwcm9jZXNzb3IgPSB0aGlzLnByb3BzLm9wZW5FeHRlcm5hbExpbmtzSW5OZXdUYWJcbiAgICAgID8gbWFya2Rvd25Ub1JlYWN0RXh0ZXJuYWxMaW5rc1xuICAgICAgOiBtYXJrZG93blRvUmVhY3Q7XG5cbiAgICBjb25zdCByZW5kZXJlZCA9IE9iamVjdChwcm9jZXNzb3IucHJvY2Vzc1N5bmModGhpcy5wcm9wcy5tYXJrZG93bikucmVzdWx0KTtcblxuICAgIGNvbnN0IG1hcmtkb3duUHJvcHMgPSB7fTtcbiAgICBpZiAodGhpcy5wcm9wcy5jbGFzc05hbWUpIHtcbiAgICAgIG1hcmtkb3duUHJvcHMuY2xhc3NOYW1lID0gdGhpcy5wcm9wcy5jbGFzc05hbWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLmlkKSB7XG4gICAgICBtYXJrZG93blByb3BzLmlkID0gdGhpcy5wcm9wcy5pZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy51bndyYXBwZWQpIHtcbiAgICAgIHJldHVybiByZW5kZXJlZC5wcm9wcy5jaGlsZHJlbjtcbiAgICB9XG4gICAgLy8gcmVoeXBlLXJlYWN0IHdpbGwgb25seSB3cmFwIHRoZSBjb21waWxlZCBtYXJrZG93biBpbiBhIDxkaXY+IHRhZ1xuICAgIC8vIGlmIGl0IG5lZWRzIHRvIChpZSwgaWYgdGhlcmUgd291bGQgb3RoZXJ3aXNlIGJlIG11bHRpcGxlIGVsZW1lbnRzXG4gICAgLy8gcmV0dXJuZWQpIG9yIHdlJ3JlIGFzc2lnbmluZyBwcm9wcy4gV2UgcHJlZmVyIGNvbnNpc3RlbmN5IG92ZXIgZmxleGliaWxpdHksXG4gICAgLy8gc28gaGVyZSB3ZSB3cmFwIHRoZSByZXN1bHQgaW4gYSBkaXYgaWYgaXQgd2Fzbid0IGFscmVhZHlcbiAgICBlbHNlIGlmIChcbiAgICAgIHJlbmRlcmVkICYmXG4gICAgICByZW5kZXJlZC50eXBlID09PSAnZGl2JyAmJlxuICAgICAgIU9iamVjdC5rZXlzKG1hcmtkb3duUHJvcHMpLmxlbmd0aFxuICAgICkge1xuICAgICAgcmV0dXJuIHJlbmRlcmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gPGRpdiB7Li4ubWFya2Rvd25Qcm9wc30+e3JlbmRlcmVkfTwvZGl2PjtcbiAgICB9XG4gIH1cbn1cblxuLy8gY3JlYXRlIGN1c3RvbSBzYW5pdGl6YXRpb24gc2NoZW1hIGFzIHBlclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3N5bnRheC10cmVlL2hhc3QtdXRpbC1zYW5pdGl6ZSNzY2hlbWFcbi8vIHRvIHN1cHBvcnQgb3VyIGN1c3RvbSBzeW50YXhlc1xuY29uc3Qgc2NoZW1hID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFNhbml0aXphdGlvblNjaGVtYSk7XG5cbi8vIFdlIHVzZSBhIF9sb3RfIG9mIGltYWdlIGZvcm1hdHRpbmcgc3R1ZmYgaW4gb3VyXG4vLyBpbnN0cnVjdGlvbnMsIHBhcnRpY3VsYXJseSBpbiBDU1BcbnNjaGVtYS5hdHRyaWJ1dGVzLmltZy5wdXNoKCdoZWlnaHQnLCAnd2lkdGgnKTtcblxuLy8gQWRkIHN1cHBvcnQgZm9yIGV4cGFuZGFibGVJbWFnZXNcbnNjaGVtYS50YWdOYW1lcy5wdXNoKCdzcGFuJyk7XG5zY2hlbWEuYXR0cmlidXRlcy5zcGFuID0gWydkYXRhVXJsJywgJ2NsYXNzTmFtZSddO1xuXG4vLyBBZGQgc3VwcG9ydCBmb3IgaW5saW5lIHN0eWxlcyAoZ3Jvc3MpXG4vLyBUT0RPIHJlcGxhY2UgYWxsIGlubGluZSBzdHlsZXMgaW4gb3VyIGN1cnJpY3VsdW0gY29udGVudCB3aXRoXG4vLyBzZW1hbnRpY2FsbHktc2lnbmlmaWNhbnQgY29udGVudFxuc2NoZW1hLmF0dHJpYnV0ZXNbJyonXS5wdXNoKCdzdHlsZScsICdjbGFzc05hbWUnKTtcblxuLy8gQ2xpY2thYmxlVGV4dCB1c2VzIGRhdGEtaWQgb24gYSBib2xkIHRhZy5cbnNjaGVtYS5hdHRyaWJ1dGVzWydiJ10gPSBbJ2RhdGFJZCddO1xuXG4vLyBBZGQgc3VwcG9ydCBmb3IgQmxvY2tseSBYTUxcbnNjaGVtYS5jbG9iYmVyID0gW107XG5jb25zdCBibG9ja2x5VGFncyA9IFtcbiAgJ2Jsb2NrJyxcbiAgJ2Z1bmN0aW9uYWxfaW5wdXQnLFxuICAnbXV0YXRpb24nLFxuICAnbmV4dCcsXG4gICdzdGF0ZW1lbnQnLFxuICAndGl0bGUnLFxuICAnZmllbGQnLFxuICAndmFsdWUnLFxuICAneG1sJyxcbl07XG5zY2hlbWEudGFnTmFtZXMgPSBzY2hlbWEudGFnTmFtZXMuY29uY2F0KGJsb2NrbHlUYWdzKTtcbmxldCBibG9ja2x5Q29tcG9uZW50V3JhcHBlcnMgPSB7fTtcbmJsb2NrbHlUYWdzLmZvckVhY2godGFnID0+IHtcbiAgc2NoZW1hLmF0dHJpYnV0ZXNbdGFnXSA9IFsnYmxvY2tfdGV4dCcsICdpZCcsICdpbmxpbmUnLCAnbmFtZScsICd0eXBlJ107XG5cbiAgLy8gQ3JlYXRlIGEgUmVhY3QgY29tcG9uZW50IHRvIHdyYXAgZWFjaCBCbG9ja2x5IHRhZy4gU2luY2UgdGhlc2UgZWxlbWVudHMgdWx0aW1hdGVseVxuICAvLyByZW5kZXIgYXMgUmVhY3QgY29tcG9uZW50cywgY3JlYXRpbmcgYSB3cmFwcGVyIG1ha2VzIHRoZW0gdmFsaWQgKHdoZXJlYXMgPHhtbD5cbiAgLy8gaXMgbm90IGEgdmFsaWQgUmVhY3QgdGFnKS5cbiAgYmxvY2tseUNvbXBvbmVudFdyYXBwZXJzW3RhZ10gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICBjb25zdCBCbG9ja2x5RWxlbWVudCA9IHRhZztcbiAgICAvLyBUaGUgXCJpc1wiIGF0dHJpYnV0ZSBwcmV2ZW50cyBSZWFjdCBmcm9tIHdhcm5pbmcgYWJvdXQgdW5yZWNvZ25pemVkIHRhZ3M6XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMTE4NCNpc3N1ZWNvbW1lbnQtMzM1OTQyNDM5XG4gICAgcmV0dXJuIDxCbG9ja2x5RWxlbWVudCBpcz17dGFnfSB7Li4ucHJvcHN9IC8+O1xuICB9O1xufSk7XG5jb25zdCBtYXJrZG93blRvUmVhY3QgPSB1bmlmaWVkKClcbiAgLnVzZShQcm9jZXNzb3IuZ2V0UGFyc2VyKCkpXG4gIC8vIGluY2x1ZGUgY3VzdG9tIHBsdWdpbnNcbiAgLnVzZShbXG4gICAgY2xpY2thYmxlVGV4dCxcbiAgICBleHBhbmRhYmxlSW1hZ2VzLFxuICAgIHZpc3VhbENvZGVCbG9jayxcbiAgICB4bWxBc1RvcExldmVsQmxvY2ssXG4gICAgZGV0YWlscyxcbiAgXSlcbiAgLy8gY29udmVydCBtYXJrZG93biB0byBhbiBIVE1MIEFic3RyYWN0IFN5bnRheCBUcmVlIChIQVNUKVxuICAudXNlKHJlbWFya1JlaHlwZSwge1xuICAgIC8vIGluY2x1ZGUgYW55IHJhdyBIVE1MIGluIHRoZSBtYXJrZG93biBhcyByYXcgSFRNTCBub2RlcyBpbiB0aGUgSEFTVFxuICAgIGFsbG93RGFuZ2Vyb3VzSHRtbDogdHJ1ZSxcbiAgfSlcbiAgLy8gcGFyc2UgdGhlIHJhdyBIVE1MIG5vZGVzIGluIHRoZSBIQVNUIHRvIGFjdHVhbCBIQVNUIG5vZGVzXG4gIC51c2UocmVoeXBlUmF3KVxuICAvLyBzYW5pdGl6ZSB0aGUgSEFTVFxuICAudXNlKHJlaHlwZVNhbml0aXplLCBzY2hlbWEpXG4gIC8vIGNvbnZlcnQgdGhlIEhBU1QgdG8gUmVhY3RcbiAgLnVzZShyZWh5cGVSZWFjdCwge1xuICAgIGNyZWF0ZUVsZW1lbnQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQsXG4gICAgLy8gVXNlIFJlYWN0IGNvbXBvbmVudCB3cmFwcGVycyBmb3IgQmxvY2tseSBYTUwgZWxlbWVudHMgdG8gcHJldmVudFxuICAgIC8vIFJlYWN0IGZyb20gd2FybmluZyB1cyBhYm91dCBpbnZhbGlkIGNvbXBvbmVudHMuXG4gICAgY29tcG9uZW50czogYmxvY2tseUNvbXBvbmVudFdyYXBwZXJzLFxuICB9KTtcblxuY29uc3QgbWFya2Rvd25Ub1JlYWN0RXh0ZXJuYWxMaW5rcyA9IG1hcmtkb3duVG9SZWFjdCgpLnVzZShleHRlcm5hbExpbmtzLCB7XG4gIGxpbmtzOiAnYWxsJyxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBTYWZlTWFya2Rvd247XG4iLCIvKipcbiAqIE9wZW4gZXh0ZXJuYWwgbGlua3MgaW4gYSBuZXcgdGFiLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHRlcm5hbExpbmtzKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBQYXJzZXIgPSB0aGlzLlBhcnNlcjtcbiAgY29uc3QgdG9rZW5pemVycyA9IFBhcnNlci5wcm90b3R5cGUuaW5saW5lVG9rZW5pemVycztcbiAgY29uc3Qgb3JpZ2luYWwgPSB0b2tlbml6ZXJzLmxpbms7XG4gIGNvbnN0IGFsbCA9IG9wdGlvbnMubGlua3MgPT09ICdhbGwnO1xuXG4gIHRva2VuaXplcnMubGluayA9IGZ1bmN0aW9uIChlYXQsIHZhbHVlLCBzaWxlbnQpIHtcbiAgICBjb25zdCBsaW5rID0gb3JpZ2luYWwuY2FsbCh0aGlzLCBlYXQsIHZhbHVlLCBzaWxlbnQpO1xuICAgIGlmIChsaW5rICYmIGxpbmsudHlwZSA9PT0gJ2xpbmsnICYmIChhbGwgfHwgaXNFeHRlcm5hbExpbmsobGluay51cmwpKSkge1xuICAgICAgbGluay5kYXRhID0gbGluay5kYXRhIHx8IHt9O1xuICAgICAgbGluay5kYXRhLmhQcm9wZXJ0aWVzID0gbGluay5kYXRhLmhQcm9wZXJ0aWVzIHx8IHt9O1xuXG4gICAgICBjb25zdCBwcm9wcyA9IGxpbmsuZGF0YS5oUHJvcGVydGllcztcbiAgICAgIHByb3BzLnRhcmdldCA9IHByb3BzLnRhcmdldCB8fCAnX2JsYW5rJztcbiAgICAgIHByb3BzLnJlbCA9ICdub3JlZmVycmVyIG5vb3BlbmVyJztcbiAgICB9XG5cbiAgICByZXR1cm4gbGluaztcbiAgfTtcbiAgdG9rZW5pemVycy5saW5rLmxvY2F0b3IgPSBvcmlnaW5hbC5sb2NhdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbExpbmsodXJsKSB7XG4gIHJldHVybiAhL2h0dHBzPzpcXC9cXC8oW14uXStcXC4pKmNvZGUub3JnKDpbMC05XSspP1xcLy8udGVzdChmdWxseVF1YWxpZmllZCh1cmwpKTtcbn1cblxubGV0IGE7XG5mdW5jdGlvbiBmdWxseVF1YWxpZmllZChwYXRoKSB7XG4gIGEgPSBhIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgYS5ocmVmID0gcGF0aDtcbiAgcmV0dXJuIGEuaHJlZjtcbn1cbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG5pbXBvcnQgZm9udENvbnN0YW50cyBmcm9tICdAY2RvL2FwcHMvZm9udENvbnN0YW50cyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BjZG8vYXBwcy9sZWdhY3lTaGFyZWRDb21wb25lbnRzL0J1dHRvbic7XG5pbXBvcnQgU2FmZU1hcmtkb3duIGZyb20gJ0BjZG8vYXBwcy90ZW1wbGF0ZXMvU2FmZU1hcmtkb3duJztcblxuaW1wb3J0IGNvbG9yIGZyb20gJy4uLy4uL3V0aWwvY29sb3InO1xuXG4vLyBJZiB5b3Ugd2FudCB0byBpbmNsdWRlIGFuIGltYWdlLCB5b3UncmUgcHJvYmFibHkgbG9va2luZyBmb3IgYSBJbWFnZVJlc291cmNlQ2FyZC5cbmNsYXNzIFJlc291cmNlQ2FyZCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBjYWxsb3V0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGJ1dHRvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBsaW5rOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgaXNSdGw6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgcmVzcG9uc2l2ZVNpemU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBhbGxvd1dyYXA6IFByb3BUeXBlcy5ib29sLFxuICAgIGFsbG93TWFya2Rvd246IFByb3BUeXBlcy5ib29sLFxuICAgIGxpbmtJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBsaW5rQ2xhc3M6IFByb3BUeXBlcy5zdHJpbmcsXG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHRpdGxlLFxuICAgICAgY2FsbG91dCxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgYnV0dG9uVGV4dCxcbiAgICAgIGxpbmssXG4gICAgICBpc1J0bCxcbiAgICAgIGFsbG93V3JhcCxcbiAgICAgIGFsbG93TWFya2Rvd24sXG4gICAgICBsaW5rSWQsXG4gICAgICBsaW5rQ2xhc3MsXG4gICAgICByZXNwb25zaXZlU2l6ZSxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBsb2NhbGVTdHlsZSA9IGlzUnRsID8gc3R5bGVzLnJ0bCA6IHN0eWxlcy5sdHI7XG5cbiAgICBjb25zdCBidXR0b25TdHlsZXMgPSBzdHlsZXMuYnV0dG9uO1xuICAgIGNvbnN0IGNhcmRTdHlsZXMgPSB7Li4uc3R5bGVzLmNhcmQsIC4uLmxvY2FsZVN0eWxlfTtcbiAgICBjb25zdCB0aXRsZVN0eWxlcyA9IHsuLi5zdHlsZXMudGl0bGUsIC4uLmxvY2FsZVN0eWxlfTtcbiAgICBjb25zdCBkZXNjcmlwdGlvblN0eWxlcyA9IHtcbiAgICAgIC4uLnN0eWxlcy50ZXh0LFxuICAgICAgLi4uc3R5bGVzLmRlc2NyaXB0aW9uLFxuICAgICAgLi4ubG9jYWxlU3R5bGUsXG4gICAgfTtcblxuICAgIGlmIChbJ3NtJywgJ3hzJ10uaW5jbHVkZXMocmVzcG9uc2l2ZVNpemUpKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGNhcmRTdHlsZXMsIHN0eWxlcy5jYXJkU21hbGwpO1xuICAgICAgT2JqZWN0LmFzc2lnbih0aXRsZVN0eWxlcywgc3R5bGVzLnRpdGxlU21hbGwpO1xuICAgICAgT2JqZWN0LmFzc2lnbihkZXNjcmlwdGlvblN0eWxlcywgc3R5bGVzLmRlc2NyaXB0aW9uU21hbGwpO1xuICAgIH1cblxuICAgIGlmIChhbGxvd1dyYXApIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYnV0dG9uU3R5bGVzLCBzdHlsZXMuYnV0dG9uQWxsb3dXcmFwKTtcbiAgICAgIE9iamVjdC5hc3NpZ24oY2FyZFN0eWxlcywgc3R5bGVzLmNhcmRBbGxvd1dyYXApO1xuICAgICAgT2JqZWN0LmFzc2lnbih0aXRsZVN0eWxlcywgc3R5bGVzLnRpdGxlQWxsb3dXcmFwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aXRsZVN0eWxlcywgc3R5bGVzLnRpdGxlTm9XcmFwKTtcbiAgICB9XG5cbiAgICBsZXQgZGVzY3JpcHRpb25Db250ZW50ID0gZGVzY3JpcHRpb247XG4gICAgaWYgKGFsbG93TWFya2Rvd24pIHtcbiAgICAgIGRlc2NyaXB0aW9uQ29udGVudCA9IDxTYWZlTWFya2Rvd24gbWFya2Rvd249e2Rlc2NyaXB0aW9ufSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17Y2FyZFN0eWxlc30+XG4gICAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy50aXRsZUNvbnRhaW5lcn0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17dGl0bGVTdHlsZXN9Pnt0aXRsZX08L2Rpdj5cbiAgICAgICAgICB7Y2FsbG91dCAmJiAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMuY2FsbG91dH0+XG4gICAgICAgICAgICAgIDxpPntjYWxsb3V0fTwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXtkZXNjcmlwdGlvblN0eWxlc30+e2Rlc2NyaXB0aW9uQ29udGVudH08L2Rpdj5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBfX3VzZURlcHJlY2F0ZWRUYWdcbiAgICAgICAgICBpZD17bGlua0lkfVxuICAgICAgICAgIGNsYXNzTmFtZT17bGlua0NsYXNzfVxuICAgICAgICAgIGhyZWY9e2xpbmt9XG4gICAgICAgICAgY29sb3I9e0J1dHRvbi5CdXR0b25Db2xvci5icmFuZFNlY29uZGFyeURlZmF1bHR9XG4gICAgICAgICAgdGV4dD17YnV0dG9uVGV4dH1cbiAgICAgICAgICBzdHlsZT17YnV0dG9uU3R5bGVzfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBzdHlsZXMgPSB7XG4gIGNhcmQ6IHtcbiAgICBoZWlnaHQ6IDI1MCxcbiAgICB3aWR0aDogMzA4LFxuICAgIGJhY2tncm91bmQ6IGNvbG9yLm5ldXRyYWxfbGlnaHQsXG4gICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7Y29sb3IubmV1dHJhbF9kYXJrMjB9YCxcbiAgfSxcbiAgY2FyZFNtYWxsOiB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgfSxcbiAgY2FyZEFsbG93V3JhcDoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICB9LFxuICB0ZXh0OiB7XG4gICAgcGFkZGluZ0xlZnQ6IDIwLFxuICAgIHBhZGRpbmdSaWdodDogMjAsXG4gICAgY29sb3I6IGNvbG9yLm5ldXRyYWxfZGFyayxcbiAgfSxcbiAgdGl0bGVDb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICBwYWRkaW5nOiAnMTRweCAyMHB4IDEwcHggMjBweCcsXG4gIH0sXG4gIHRpdGxlOiB7XG4gICAgY29sb3I6IGNvbG9yLm5ldXRyYWxfZGFyayxcbiAgICAuLi5mb250Q29uc3RhbnRzWydtYWluLWZvbnQtYm9sZCddLFxuICAgIGZvbnRTaXplOiAyNyxcbiAgICBsaW5lSGVpZ2h0OiAnMjlweCcsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIH0sXG4gIHRpdGxlU21hbGw6IHtcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgfSxcbiAgdGl0bGVOb1dyYXA6IHtcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICB9LFxuICB0aXRsZUFsbG93V3JhcDoge1xuICAgIGxpbmVIZWlnaHQ6ICcxLjEnLFxuICB9LFxuICBjYWxsb3V0OiB7XG4gICAgZmxleDogJ25vbmUnLFxuICAgIGZvbnRTaXplOiAxNCxcbiAgICBtYXJnaW46ICcwcHggOHB4JyxcbiAgICAuLi5mb250Q29uc3RhbnRzWydtYWluLWZvbnQtc2VtaS1ib2xkJ10sXG4gICAgY29sb3I6IGNvbG9yLmJyYW5kX2FjY2VudF9kZWZhdWx0LFxuICB9LFxuICBkZXNjcmlwdGlvbjoge1xuICAgIC4uLmZvbnRDb25zdGFudHNbJ21haW4tZm9udC1yZWd1bGFyJ10sXG4gICAgZm9udFNpemU6IDE0LFxuICAgIGxpbmVIZWlnaHQ6ICcyMXB4JyxcbiAgICBoZWlnaHQ6IDE0MCxcbiAgICBtYXJnaW5Cb3R0b206IDUsXG4gICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gIH0sXG4gIGRlc2NyaXB0aW9uU21hbGw6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW5MZWZ0OiAyMCxcbiAgICBtYXJnaW5SaWdodDogMjAsXG4gICAgd2hpdGVTcGFjZTogJ2luaGVyaXQnLFxuICB9LFxuICBidXR0b25BbGxvd1dyYXA6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICBib3R0b206IDIwLFxuICAgIGxlZnQ6IDAsXG4gIH0sXG4gIGx0cjoge1xuICAgIGZsb2F0OiAnbGVmdCcsXG4gIH0sXG4gIHJ0bDoge1xuICAgIGZsb2F0OiAncmlnaHQnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChzdGF0ZSA9PiAoe1xuICBpc1J0bDogc3RhdGUuaXNSdGwsXG4gIHJlc3BvbnNpdmVTaXplOiBzdGF0ZS5yZXNwb25zaXZlLnJlc3BvbnNpdmVTaXplLFxufSkpKFJlc291cmNlQ2FyZCk7XG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107IC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblxuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcblxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9OyAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuXG5cbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGlkID0gdGhpc1trXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZnVuY3Rpb24gY3JlYXRlVGh1bmtNaWRkbGV3YXJlKGV4dHJhQXJndW1lbnQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIGRpc3BhdGNoID0gX3JlZi5kaXNwYXRjaDtcbiAgICB2YXIgZ2V0U3RhdGUgPSBfcmVmLmdldFN0YXRlO1xuICAgIHJldHVybiBmdW5jdGlvbiAobmV4dCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gYWN0aW9uKGRpc3BhdGNoLCBnZXRTdGF0ZSwgZXh0cmFBcmd1bWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuXG52YXIgdGh1bmsgPSBjcmVhdGVUaHVua01pZGRsZXdhcmUoKTtcbnRodW5rLndpdGhFeHRyYUFyZ3VtZW50ID0gY3JlYXRlVGh1bmtNaWRkbGV3YXJlO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSB0aHVuazsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcblxuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdXBkYXRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cblxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cblxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuXG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cblxuICBjc3MgKz0gb2JqLmNzcztcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07Il0sIm5hbWVzIjpbIl9yZWRhY3RhYmxlTWFya2Rvd24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZW1hcmtQbHVnaW5zIiwiX2dpdGh1YiIsIl9wcm9wVHlwZXMiLCJfcmVhY3QiLCJfcmVoeXBlUmF3IiwiX3JlaHlwZVJlYWN0IiwiX3JlaHlwZVNhbml0aXplIiwiX3JlbWFya1JlaHlwZSIsIl91bmlmaWVkIiwiX2V4dGVybmFsTGlua3MiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0IiwiciIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3NldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJTYWZlTWFya2Rvd24iLCJfUmVhY3QkQ29tcG9uZW50IiwiX2luaGVyaXRzTG9vc2UiLCJjcmVhdGUiLCJyZW5kZXIiLCJwcm9jZXNzb3IiLCJ0aGlzIiwicHJvcHMiLCJvcGVuRXh0ZXJuYWxMaW5rc0luTmV3VGFiIiwibWFya2Rvd25Ub1JlYWN0RXh0ZXJuYWxMaW5rcyIsIm1hcmtkb3duVG9SZWFjdCIsInJlbmRlcmVkIiwicHJvY2Vzc1N5bmMiLCJtYXJrZG93biIsInJlc3VsdCIsIm1hcmtkb3duUHJvcHMiLCJjbGFzc05hbWUiLCJpZCIsInVud3JhcHBlZCIsImNoaWxkcmVuIiwidHlwZSIsImtleXMiLCJjcmVhdGVFbGVtZW50IiwiUmVhY3QiLCJDb21wb25lbnQiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsImkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiYm9vbCIsInNjaGVtYSIsImRlZmF1bHRTYW5pdGl6YXRpb25TY2hlbWEiLCJhdHRyaWJ1dGVzIiwiaW1nIiwicHVzaCIsInRhZ05hbWVzIiwic3BhbiIsImNsb2JiZXIiLCJibG9ja2x5VGFncyIsImNvbmNhdCIsImJsb2NrbHlDb21wb25lbnRXcmFwcGVycyIsImZvckVhY2giLCJ0YWciLCJCbG9ja2x5RWxlbWVudCIsImlzIiwidW5pZmllZCIsInVzZSIsIlByb2Nlc3NvciIsImdldFBhcnNlciIsImNsaWNrYWJsZVRleHQiLCJleHBhbmRhYmxlSW1hZ2VzIiwidmlzdWFsQ29kZUJsb2NrIiwieG1sQXNUb3BMZXZlbEJsb2NrIiwiZGV0YWlscyIsInJlbWFya1JlaHlwZSIsImFsbG93RGFuZ2Vyb3VzSHRtbCIsInJlaHlwZVJhdyIsInJlaHlwZVNhbml0aXplIiwicmVoeXBlUmVhY3QiLCJjb21wb25lbnRzIiwiZXh0ZXJuYWxMaW5rcyIsImxpbmtzIiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmF1bHQiLCJpc0V4dGVybmFsTGluayIsInVybCIsInRlc3QiLCJmdWxseVF1YWxpZmllZCIsInBhdGgiLCJhIiwiZG9jdW1lbnQiLCJocmVmIiwib3B0aW9ucyIsInVuZGVmaW5lZCIsInRva2VuaXplcnMiLCJQYXJzZXIiLCJpbmxpbmVUb2tlbml6ZXJzIiwib3JpZ2luYWwiLCJsaW5rIiwiYWxsIiwiZWF0Iiwic2lsZW50IiwiZGF0YSIsImhQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicmVsIiwibG9jYXRvciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiaGFzIiwiZ2V0IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInNldCIsIl9yZWFjdFJlZHV4IiwiX2ZvbnRDb25zdGFudHMiLCJfQnV0dG9uIiwiX1NhZmVNYXJrZG93biIsIl9jb2xvciIsIldlYWtNYXAiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiX29iamVjdFNwcmVhZCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiUmVzb3VyY2VDYXJkIiwiX0NvbXBvbmVudCIsIl90aGlzJHByb3BzIiwidGl0bGUiLCJjYWxsb3V0IiwiZGVzY3JpcHRpb24iLCJidXR0b25UZXh0IiwiaXNSdGwiLCJhbGxvd1dyYXAiLCJhbGxvd01hcmtkb3duIiwibGlua0lkIiwibGlua0NsYXNzIiwicmVzcG9uc2l2ZVNpemUiLCJsb2NhbGVTdHlsZSIsInN0eWxlcyIsInJ0bCIsImx0ciIsImJ1dHRvblN0eWxlcyIsImJ1dHRvbiIsImNhcmRTdHlsZXMiLCJjYXJkIiwidGl0bGVTdHlsZXMiLCJkZXNjcmlwdGlvblN0eWxlcyIsInRleHQiLCJpbmNsdWRlcyIsImNhcmRTbWFsbCIsInRpdGxlU21hbGwiLCJkZXNjcmlwdGlvblNtYWxsIiwiYnV0dG9uQWxsb3dXcmFwIiwiY2FyZEFsbG93V3JhcCIsInRpdGxlQWxsb3dXcmFwIiwidGl0bGVOb1dyYXAiLCJkZXNjcmlwdGlvbkNvbnRlbnQiLCJzdHlsZSIsInRpdGxlQ29udGFpbmVyIiwiX191c2VEZXByZWNhdGVkVGFnIiwiY29sb3IiLCJCdXR0b24iLCJCdXR0b25Db2xvciIsImJyYW5kU2Vjb25kYXJ5RGVmYXVsdCIsImhlaWdodCIsIndpZHRoIiwiYmFja2dyb3VuZCIsIm5ldXRyYWxfbGlnaHQiLCJib3JkZXIiLCJuZXV0cmFsX2RhcmsyMCIsInBvc2l0aW9uIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJuZXV0cmFsX2RhcmsiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsInBhZGRpbmciLCJmb250Q29uc3RhbnRzIiwiZm9udFNpemUiLCJsaW5lSGVpZ2h0IiwiYm94U2l6aW5nIiwid2hpdGVTcGFjZSIsInRleHRPdmVyZmxvdyIsIm92ZXJmbG93IiwiZmxleCIsIm1hcmdpbiIsImJyYW5kX2FjY2VudF9kZWZhdWx0IiwibWFyZ2luQm90dG9tIiwib3ZlcmZsb3dZIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImZsb2F0IiwiY29ubmVjdCIsInN0YXRlIiwicmVzcG9uc2l2ZSIsImhhc093biIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiYXJnIiwiYXJnVHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImlubmVyIiwidG9TdHJpbmciLCJrZXkiLCJqb2luIiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsImxpc3QiLCJtYXAiLCJpdGVtIiwiY29udGVudCIsIm5lZWRMYXllciIsIm1vZHVsZXMiLCJtZWRpYSIsImRlZHVwZSIsInN1cHBvcnRzIiwibGF5ZXIiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiayIsIl9rIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3VyY2VNYXBwaW5nIiwic291cmNlVVJMcyIsInNvdXJjZXMiLCJzb3VyY2UiLCJzb3VyY2VSb290IiwiY3JlYXRlVGh1bmtNaWRkbGV3YXJlIiwiZXh0cmFBcmd1bWVudCIsIl9yZWYiLCJkaXNwYXRjaCIsImdldFN0YXRlIiwibmV4dCIsImFjdGlvbiIsInRodW5rIiwid2l0aEV4dHJhQXJndW1lbnQiLCJzdHlsZXNJbkRPTSIsImdldEluZGV4QnlJZGVudGlmaWVyIiwiaWRlbnRpZmllciIsIm1vZHVsZXNUb0RvbSIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsImJhc2UiLCJjb3VudCIsImluZGV4QnlJZGVudGlmaWVyIiwib2JqIiwiY3NzIiwic291cmNlTWFwIiwicmVmZXJlbmNlcyIsInVwZGF0ZXIiLCJhZGRFbGVtZW50U3R5bGUiLCJieUluZGV4Iiwic3BsaWNlIiwiYXBpIiwiZG9tQVBJIiwidXBkYXRlIiwibmV3T2JqIiwicmVtb3ZlIiwibGFzdElkZW50aWZpZXJzIiwibmV3TGlzdCIsImluZGV4IiwibmV3TGFzdElkZW50aWZpZXJzIiwiX2kiLCJfaW5kZXgiLCJtZW1vIiwiaW5zZXJ0QnlTZWxlY3RvciIsImluc2VydCIsImdldFRhcmdldCIsInN0eWxlVGFyZ2V0IiwicXVlcnlTZWxlY3RvciIsIndpbmRvdyIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudERvY3VtZW50IiwiaGVhZCIsIkVycm9yIiwiYXBwZW5kQ2hpbGQiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJlbGVtZW50Iiwic2V0QXR0cmlidXRlcyIsInNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyIsInN0eWxlRWxlbWVudCIsIm5vbmNlIiwic2V0QXR0cmlidXRlIiwic3R5bGVUYWdUcmFuc2Zvcm0iLCJyZW1vdmVTdHlsZUVsZW1lbnQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImZpcnN0Q2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSJdLCJzb3VyY2VSb290IjoiIn0=