aem-core-components-contributions-react-core
Version:
AEM - React Wrapper components - for the OOTB AEM Core Components
2 lines • 36.3 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.cqCoreComponents=t():e.cqCoreComponents=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(n,s,function(t){return e[t]}.bind(null,s));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=25)}({0:function(e,t){e.exports=require("react")},1:function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));var n=r(0),s=r.n(n);class o extends n.Component{render(){const e=(null!=this.props.componentTitle&&this.props.componentTitle.length>0?this.props.componentTitle+" - ":"")+(null!=this.props.emptyTextAppend?this.props.emptyTextAppend:o.DEFAULT_EMPTY_TEXT_LABEL);return this.renderPlaceHolder(e)}renderPlaceHolder(e){return s.a.createElement("div",{className:"cq-placeholder"+(null!=this.props.classAppend?" "+this.props.classAppend:"")},e)}}o.DEFAULT_EMPTY_TEXT_LABEL="Please configure the component";class i extends s.a.Component{constructor(e,t,r){super(e),this.baseCssCls=t,this.emptyPlaceHolderText=r}__hidePlaceHolder(){return this.props.hidePlaceHolder}__renderPlaceHolder(e,t){return s.a.createElement(o,{emptyTextAppend:t,componentTitle:e})}render(){const e=this.isEmpty();return s.a.createElement(s.a.Fragment,null,!e&&this.renderComponent(),e&&this.props.isInEditor&&!this.__hidePlaceHolder()&&this.__renderPlaceHolder(this.emptyPlaceHolderText))}}i.defaultProps={hidePlaceHolder:!1,isInEditor:!1}},14:function(e,t,r){"use strict";r.r(t),r.d(t,"BreadCrumbV2IsEmptyFn",(function(){return c})),r.d(t,"BreadCrumbV2",(function(){return u}));var n=r(0),s=r.n(n),o=r(1),i=r(3),a=r(2);function c(e){return null==e.items||0===e.items.length}class u extends o.a{constructor(e){super(e,"cmp-breadcrumb","BreadCrumbV2")}isEmpty(){return c(this.props)}renderBreadCrumbListItem(e,t){const r=this.baseCssCls+"__item"+(e.active?` ${this.baseCssCls}__item--active`:""),n=t.toString(2);return s.a.createElement("li",{className:r,key:"crumbitem-"+t,itemProp:"itemListElement",itemScope:!0,itemType:"http://schema.org/ListItem"},!e.active&&this.renderBreadCrumbLink(e,t),e.active&&this.renderBreadCrumbSpan(e,t),s.a.createElement("meta",{itemProp:"position",content:n}))}renderBreadCrumbLink(e,t){return s.a.createElement(a.a,{to:e.url,isRouted:Object(i.a)(this.props,e),className:this.baseCssCls+"__item-link",itemProp:"item"},this.renderBreadCrumbSpan(e,t))}renderBreadCrumbSpan(e,t){return s.a.createElement("span",{itemProp:"name"},e.title)}renderComponent(){return s.a.createElement("nav",{className:this.baseCssCls,"aria-label":this.props.ariaLabelI18n},s.a.createElement("ol",{className:this.baseCssCls+"__list",itemScope:!0,itemType:"http://schema.org/BreadcrumbList"},this.props.items.map((e,t)=>this.renderBreadCrumbListItem(e,t))))}}u.defaultProps={isInEditor:!1,ariaLabelI18n:"BreadCrumbV2",hidePlaceHolder:!1}},2:function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));var n=r(0),s=r.n(n),o=r(4);const i=e=>{const{to:t,isRouted:r,...n}=e;if(void 0===t)return s.a.createElement("a",Object.assign({href:"#"},e));return/^https?:\/\//.test(t)||!r?s.a.createElement("a",Object.assign({href:t},e)):s.a.createElement(o.Link,Object.assign({},n,{to:t}))}},25:function(e,t,r){e.exports=r(14)},3:function(e,t,r){"use strict";function n(e,t){return!0===e.routed&&!1!==t.routed||!0===t.routed}r.d(t,"a",(function(){return n}))},4:function(e,t){e.exports=require("react-router-dom")}})}));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgXCJyZWFjdFwiIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tbW9uL3BsYWNlaG9sZGVyLnRzeCIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzLy4vc3JjL0Fic3RyYWN0Q29yZUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vY3FDb3JlQ29tcG9uZW50cy8uL3NyYy9sYXlvdXQvYnJlYWRjcnVtYi92Mi9CcmVhZENydW1iVjIudHN4Iiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvLi9zcmMvcm91dGluZy9Sb3V0ZWRMaW5rLnRzeCIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzLy4vc3JjL3JvdXRpbmcvUm91dGVkQ29yZUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vY3FDb3JlQ29tcG9uZW50cy9leHRlcm5hbCBcInJlYWN0LXJvdXRlci1kb21cIiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJyZXF1aXJlIiwiZW1wdHlUZXh0IiwicHJvcHMiLCJjb21wb25lbnRUaXRsZSIsImxlbmd0aCIsImVtcHR5VGV4dEFwcGVuZCIsIkRFRkFVTFRfRU1QVFlfVEVYVF9MQUJFTCIsInJlbmRlclBsYWNlSG9sZGVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNsYXNzQXBwZW5kIiwiQ29tcG9uZW50IiwiYmFzZUNzc0NscyIsImVtcHR5UGxhY2VIb2xkZXJUZXh0Iiwic3VwZXIiLCJoaWRlUGxhY2VIb2xkZXIiLCJ0aXRsZSIsImlzRW1wdHkiLCJGcmFnbWVudCIsInJlbmRlckNvbXBvbmVudCIsImlzSW5FZGl0b3IiLCJfX2hpZGVQbGFjZUhvbGRlciIsIl9fcmVuZGVyUGxhY2VIb2xkZXIiLCJkZWZhdWx0UHJvcHMiLCJCcmVhZENydW1iVjJJc0VtcHR5Rm4iLCJpdGVtcyIsIkJyZWFkQ3J1bWJWMiIsImNydW1iSXRlbSIsImluZGV4IiwiYWN0aXZlIiwiY29udGVudEluZGV4IiwidG9TdHJpbmciLCJpdGVtUHJvcCIsIml0ZW1TY29wZSIsIml0ZW1UeXBlIiwicmVuZGVyQnJlYWRDcnVtYkxpbmsiLCJyZW5kZXJCcmVhZENydW1iU3BhbiIsImNvbnRlbnQiLCJ0byIsInVybCIsImlzUm91dGVkIiwiYXJpYUxhYmVsSTE4biIsIm1hcCIsIml0ZW0iLCJyZW5kZXJCcmVhZENydW1iTGlzdEl0ZW0iLCJSb3V0ZWRMaW5rIiwib3RoZXJQcm9wcyIsInVuZGVmaW5lZCIsImFzc2lnbiIsImhyZWYiLCJ0ZXN0IiwiaXNJdGVtUm91dGVkIiwic2VsZlByb3BzIiwicm91dGVkIl0sIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsSUFDUSxtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLEdBQUlILEdBQ2UsaUJBQVpDLFFBQ2RBLFFBQTBCLGlC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YWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImNxQ29yZUNvbXBvbmVudHNcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3FDb3JlQ29tcG9uZW50c1wiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMjUpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBBZG9iZVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBjbGFzcyBFZGl0b3JQbGFjZUhvbGRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCBwYXJ0MSA9ICh0aGlzLnByb3BzLmNvbXBvbmVudFRpdGxlICE9IG51bGwgJiYgdGhpcy5wcm9wcy5jb21wb25lbnRUaXRsZS5sZW5ndGggPiAwKSA/IHRoaXMucHJvcHMuY29tcG9uZW50VGl0bGUgKyAnIC0gJyA6ICcnO1xuICAgICAgICBjb25zdCBwYXJ0MiA9ICh0aGlzLnByb3BzLmVtcHR5VGV4dEFwcGVuZCAhPSBudWxsKSA/IHRoaXMucHJvcHMuZW1wdHlUZXh0QXBwZW5kIDogRWRpdG9yUGxhY2VIb2xkZXIuREVGQVVMVF9FTVBUWV9URVhUX0xBQkVMO1xuICAgICAgICBjb25zdCBlbXB0eVRleHQgPSBwYXJ0MSArIHBhcnQyO1xuICAgICAgICByZXR1cm4gKHRoaXMucmVuZGVyUGxhY2VIb2xkZXIoZW1wdHlUZXh0KSk7XG4gICAgfVxuICAgIHJlbmRlclBsYWNlSG9sZGVyKGVtcHR5VGV4dCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2NxLXBsYWNlaG9sZGVyJyArICh0aGlzLnByb3BzLmNsYXNzQXBwZW5kICE9IG51bGwgPyAnICcgKyB0aGlzLnByb3BzLmNsYXNzQXBwZW5kIDogJycpIH0sIGVtcHR5VGV4dCk7XG4gICAgfVxufVxuRWRpdG9yUGxhY2VIb2xkZXIuREVGQVVMVF9FTVBUWV9URVhUX0xBQkVMID0gJ1BsZWFzZSBjb25maWd1cmUgdGhlIGNvbXBvbmVudCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljR3hoWTJWb2IyeGtaWEl1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SndiR0ZqWldodmJHUmxjaTUwYzNnaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlEwRTdPenM3T3pzN096czdPenM3TzBkQlkwYzdRVUZEU0N4UFFVRlBMRXRCUVVzc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eE5RVUZOTEU5QlFVOHNRMEZCUXp0QlFWRjJReXhOUVVGTkxFOUJRVThzYVVKQlFXdENMRk5CUVZFc1UwRkJaME03U1VGSmJrVXNUVUZCVFR0UlFVTkdMRTFCUVUwc1MwRkJTeXhIUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4alFVRmpMRWxCUVVrc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhqUVVGakxFZEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkROMGtzVFVGQlRTeExRVUZMTEVkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEhkQ1FVRjNRaXhEUVVGRE8xRkJRM1JKTEUxQlFVMHNVMEZCVXl4SFFVRkhMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRmFFTXNUMEZCVHl4RFFVTklMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkRjRU1zUTBGQlFUdEpRVU5NTEVOQlFVTTdTVUZIUkN4cFFrRkJhVUlzUTBGQlF5eFRRVUZwUWp0UlFVTXZRaXhQUVVGUExEWkNRVU5JTEZOQlFWTXNSVUZCUlN4blFrRkJaMElzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhKUVVGSkxFbEJRVWtzUTBGQlFTeERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkRhRWNzVTBGQlV5eERRVU5TTEVOQlFVTTdTVUZEV0N4RFFVRkRPenRCUVd4Q1RTd3dRMEZCZDBJc1IwRkJWeXhuUTBGQlowTXNRMEZCUXlKOSIsIi8qXG4gKiAgQ29weXJpZ2h0IDIwMjAgQWRvYmVcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEVkaXRvclBsYWNlSG9sZGVyIH0gZnJvbSBcIi4vY29tbW9uL3BsYWNlaG9sZGVyXCI7XG4vKipcbiAqIEFic3RyYWN0Q29yZUNvbXBvbmVudCAtIHByb3ZpZGVzIGFic3RyYWN0aW9uIGFuZCBoZWxwZXIgbWV0aG9kcyB0byBzaG93IGEgcGxhY2Vob2xkZXIgaWYgdGhlIGNvbXBvbmVudCBpcyBlbXB0eSBhbmQgYXV0aG9yIG1vZGUgaXMgb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdENvcmVDb21wb25lbnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIEJhc2UgQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gcHJvcHMgY29tcG9uZW50IHByb3BlcnRpZXNcbiAgICAgKiBAcGFyYW0gYmFzZUNzc0NscyB0aGUgYmFzZSBCRU0gY3NzIGNsYXNzIHRvIGJlIHVzZWQgZm9yIHRoZSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gZW1wdHlQbGFjZUhvbGRlclRleHQgZW1wdHkgcGxhY2Vob2xkZXIgbGFiZWwgZm9yIHdoZW4gdGhlIGNvbXBvbmVudCBuZWVkcyB0byBiZSBjb25maWd1cmVkIGluIGF1dGhvciBtb2RlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvcHMsIGJhc2VDc3NDbHMsIGVtcHR5UGxhY2VIb2xkZXJUZXh0KSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5iYXNlQ3NzQ2xzID0gYmFzZUNzc0NscztcbiAgICAgICAgdGhpcy5lbXB0eVBsYWNlSG9sZGVyVGV4dCA9IGVtcHR5UGxhY2VIb2xkZXJUZXh0O1xuICAgIH1cbiAgICBfX2hpZGVQbGFjZUhvbGRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaGlkZVBsYWNlSG9sZGVyO1xuICAgIH1cbiAgICBfX3JlbmRlclBsYWNlSG9sZGVyKHRpdGxlLCBlbXB0eVRleHQpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXRvclBsYWNlSG9sZGVyLCB7IGVtcHR5VGV4dEFwcGVuZDogZW1wdHlUZXh0LCBjb21wb25lbnRUaXRsZTogdGl0bGUgfSkpO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmlzRW1wdHkoKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgIWlzRW1wdHkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudCgpLFxuICAgICAgICAgICAgKGlzRW1wdHkgJiYgdGhpcy5wcm9wcy5pc0luRWRpdG9yICYmICF0aGlzLl9faGlkZVBsYWNlSG9sZGVyKCkpICYmIHRoaXMuX19yZW5kZXJQbGFjZUhvbGRlcih0aGlzLmVtcHR5UGxhY2VIb2xkZXJUZXh0KSkpO1xuICAgIH1cbn1cbkFic3RyYWN0Q29yZUNvbXBvbmVudC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgaGlkZVBsYWNlSG9sZGVyOiBmYWxzZSxcbiAgICBpc0luRWRpdG9yOiBmYWxzZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVFXSnpkSEpoWTNSRGIzSmxRMjl0Y0c5dVpXNTBMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVFXSnpkSEpoWTNSRGIzSmxRMjl0Y0c5dVpXNTBMblJ6ZUNKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdPenM3T3pzN096czdPenM3UjBGalJ6dEJRVVZJTEU5QlFVOHNTMEZCU3l4TlFVRk5MRTlCUVU4c1EwRkJRenRCUVVNeFFpeFBRVUZQTEVWQlFVTXNhVUpCUVdsQ0xFVkJRVU1zVFVGQlRTeHpRa0ZCYzBJc1EwRkJRenRCUVZsMlJEczdSMEZGUnp0QlFVTklMRTFCUVUwc1QwRkJaMElzY1VKQlFUQkdMRk5CUVZFc1MwRkJTeXhEUVVGRExGTkJRWE5DTzBsQlZXaEtPenM3T3p0UFFVdEhPMGxCUTBnc1dVRkJjMElzUzBGQlZ5eEZRVUZETEZWQlFXbENMRVZCUVVNc2IwSkJRVEpDTzFGQlF6TkZMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU5pTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1ZVRkJWU3hEUVVGRE8xRkJRemRDTEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUjBGQlJ5eHZRa0ZCYjBJc1EwRkJRenRKUVVOeVJDeERRVUZETzBsQldVOHNhVUpCUVdsQ08xRkJRM0pDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU03U1VGRGRFTXNRMEZCUXp0SlFVVlBMRzFDUVVGdFFpeERRVUZETEV0QlFXRXNSVUZCUlN4VFFVRnBRanRSUVVONFJDeFBRVUZOTEVOQlEwWXNiMEpCUVVNc2FVSkJRV2xDTEVsQlEyUXNaVUZCWlN4RlFVRkZMRk5CUVZNc1JVRkRNVUlzWTBGQll5eEZRVUZGTEV0QlFVc3NSMEZEZGtJc1EwRkRUQ3hEUVVGQk8wbEJRMHdzUTBGQlF6dEpRVVZFTEUxQlFVMDdVVUZEUml4TlFVRk5MRTlCUVU4c1IwRkJWeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZGZGtNc1QwRkJUeXhEUVVOSU8xbEJRMDBzUTBGQlF5eFBRVUZQTzJkQ1FVTk9MRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVU3V1VGSGRFSXNRMEZCUXl4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFZRVUZWTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNRMEZGTTBnc1EwRkRUaXhEUVVGQk8wbEJRMHdzUTBGQlF6czdRVUY0UkdFc2EwTkJRVmtzUjBGQlJ6dEpRVU42UWl4bFFVRmxMRVZCUVVVc1MwRkJTenRKUVVOMFFpeFZRVUZWTEVWQlFVVXNTMEZCU3p0RFFVTndRaXhEUVVGREluMD0iLCIvKlxuICogIENvcHlyaWdodCAyMDIwIEFkb2JlXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb3JlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uL0Fic3RyYWN0Q29yZUNvbXBvbmVudFwiO1xuaW1wb3J0IHsgaXNJdGVtUm91dGVkIH0gZnJvbSBcIi4uLy4uLy4uL3JvdXRpbmcvUm91dGVkQ29yZUNvbXBvbmVudFwiO1xuaW1wb3J0IHsgUm91dGVkTGluayB9IGZyb20gXCIuLi8uLi8uLi9yb3V0aW5nL1JvdXRlZExpbmtcIjtcbmV4cG9ydCBmdW5jdGlvbiBCcmVhZENydW1iVjJJc0VtcHR5Rm4ocHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMuaXRlbXMgPT0gbnVsbCB8fCBwcm9wcy5pdGVtcy5sZW5ndGggPT09IDA7XG59XG5leHBvcnQgY2xhc3MgQnJlYWRDcnVtYlYyIGV4dGVuZHMgQWJzdHJhY3RDb3JlQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcywgXCJjbXAtYnJlYWRjcnVtYlwiLCAnQnJlYWRDcnVtYlYyJyk7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBCcmVhZENydW1iVjJJc0VtcHR5Rm4odGhpcy5wcm9wcyk7XG4gICAgfVxuICAgIHJlbmRlckJyZWFkQ3J1bWJMaXN0SXRlbShjcnVtYkl0ZW0sIGluZGV4KSB7XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGAke3RoaXMuYmFzZUNzc0Nsc31fX2l0ZW1gICsgKGNydW1iSXRlbS5hY3RpdmUgPyBgICR7dGhpcy5iYXNlQ3NzQ2xzfV9faXRlbS0tYWN0aXZlYCA6ICcnKTtcbiAgICAgICAgY29uc3QgY29udGVudEluZGV4ID0gaW5kZXgudG9TdHJpbmcoMik7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGtleTogJ2NydW1iaXRlbS0nICsgaW5kZXgsIGl0ZW1Qcm9wOiBcIml0ZW1MaXN0RWxlbWVudFwiLCBpdGVtU2NvcGU6IHRydWUsIGl0ZW1UeXBlOiBcImh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtXCIgfSxcbiAgICAgICAgICAgICFjcnVtYkl0ZW0uYWN0aXZlICYmIHRoaXMucmVuZGVyQnJlYWRDcnVtYkxpbmsoY3J1bWJJdGVtLCBpbmRleCksXG4gICAgICAgICAgICBjcnVtYkl0ZW0uYWN0aXZlICYmIHRoaXMucmVuZGVyQnJlYWRDcnVtYlNwYW4oY3J1bWJJdGVtLCBpbmRleCksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwibWV0YVwiLCB7IGl0ZW1Qcm9wOiBcInBvc2l0aW9uXCIsIGNvbnRlbnQ6IGNvbnRlbnRJbmRleCB9KSkpO1xuICAgIH1cbiAgICByZW5kZXJCcmVhZENydW1iTGluayhjcnVtYkl0ZW0sIGluZGV4KSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSb3V0ZWRMaW5rLCB7IHRvOiBjcnVtYkl0ZW0udXJsLCBpc1JvdXRlZDogaXNJdGVtUm91dGVkKHRoaXMucHJvcHMsIGNydW1iSXRlbSksIGNsYXNzTmFtZTogYCR7dGhpcy5iYXNlQ3NzQ2xzfV9faXRlbS1saW5rYCwgaXRlbVByb3A6IFwiaXRlbVwiIH0sIHRoaXMucmVuZGVyQnJlYWRDcnVtYlNwYW4oY3J1bWJJdGVtLCBpbmRleCkpKTtcbiAgICB9XG4gICAgcmVuZGVyQnJlYWRDcnVtYlNwYW4oY3J1bWJJdGVtLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBpdGVtUHJvcDogXCJuYW1lXCIgfSwgY3J1bWJJdGVtLnRpdGxlKTtcbiAgICB9XG4gICAgcmVuZGVyQ29tcG9uZW50KCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJuYXZcIiwgeyBjbGFzc05hbWU6IHRoaXMuYmFzZUNzc0NscywgXCJhcmlhLWxhYmVsXCI6IHRoaXMucHJvcHMuYXJpYUxhYmVsSTE4biB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcIm9sXCIsIHsgY2xhc3NOYW1lOiB0aGlzLmJhc2VDc3NDbHMgKyAnX19saXN0JywgaXRlbVNjb3BlOiB0cnVlLCBpdGVtVHlwZTogXCJodHRwOi8vc2NoZW1hLm9yZy9CcmVhZGNydW1iTGlzdFwiIH0sIHRoaXMucHJvcHMuaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckJyZWFkQ3J1bWJMaXN0SXRlbShpdGVtLCBpbmRleCk7XG4gICAgICAgICAgICB9KSkpKTtcbiAgICB9XG59XG5CcmVhZENydW1iVjIuZGVmYXVsdFByb3BzID0ge1xuICAgIGlzSW5FZGl0b3I6IGZhbHNlLFxuICAgIGFyaWFMYWJlbEkxOG46IFwiQnJlYWRDcnVtYlYyXCIsXG4gICAgaGlkZVBsYWNlSG9sZGVyOiBmYWxzZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVFuSmxZV1JEY25WdFlsWXlMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVFuSmxZV1JEY25WdFlsWXlMblJ6ZUNKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdPenM3T3pzN096czdPenM3UjBGalJ6dEJRVVZJTEU5QlFVOHNTMEZCU3l4TlFVRk5MRTlCUVU4c1EwRkJRenRCUVVNeFFpeFBRVUZQTEVWQlFVTXNjVUpCUVhGQ0xFVkJRWGxETEUxQlFVMHNaME5CUVdkRExFTkJRVU03UVVGRE4wY3NUMEZCVHl4RlFVRkRMRmxCUVZrc1JVRkJkME1zVFVGQlRTeHpRMEZCYzBNc1EwRkJRenRCUVVONlJ5eFBRVUZQTEVWQlFVTXNWVUZCVlN4RlFVRkRMRTFCUVUwc05rSkJRVFpDTEVOQlFVTTdRVUZqZGtRc1RVRkJUU3hWUVVGVkxIRkNRVUZ4UWl4RFFVRkRMRXRCUVhWQ08wbEJRM3BFTEU5QlFVOHNTMEZCU3l4RFFVRkRMRXRCUVVzc1NVRkJTU3hKUVVGSkxFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRek5FTEVOQlFVTTdRVUZGUkN4TlFVRk5MRTlCUVU4c1dVRkJaMFlzVTBGQlVTeHhRa0ZCYlVNN1NVRlJjRWtzV1VGQldTeExRVUZYTzFGQlEyNUNMRXRCUVVzc1EwRkJReXhMUVVGTExFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1kwRkJZeXhEUVVGRExFTkJRVU03U1VGRGJrUXNRMEZCUXp0SlFVVkVMRTlCUVU4N1VVRkRTQ3hQUVVGUExIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlFUdEpRVU0xUXl4RFFVRkRPMGxCUlVRc2QwSkJRWGRDTEVOQlFVTXNVMEZCSzBJc1JVRkJReXhMUVVGWk8xRkJSV3BGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzVVVGQlVTeEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkROMGNzVFVGQlRTeFpRVUZaTEVkQlFWVXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVU1UXl4UFFVRlBMRU5CUTBnc05FSkJRVWtzVTBGQlV5eEZRVUZGTEZOQlFWTXNSVUZEY0VJc1IwRkJSeXhGUVVGRkxGbEJRVmtzUjBGQlJ5eExRVUZMTEVWQlEzcENMRkZCUVZFc1JVRkJReXhwUWtGQmFVSXNSVUZCUXl4VFFVRlRMRkZCUVVNc1VVRkJVU3hGUVVGRExEUkNRVUUwUWp0WlFVVjBSU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZOQlFWTXNSVUZCUXl4TFFVRkxMRU5CUVVNN1dVRkhMMFFzVTBGQlV5eERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNVMEZCVXl4RlFVRkRMRXRCUVVzc1EwRkJRenRaUVVWc1JTdzRRa0ZCVFN4UlFVRlJMRVZCUVVNc1ZVRkJWU3hGUVVGRExFOUJRVThzUlVGQlJTeFpRVUZaTEVkQlFVY3NRMEZEYWtRc1EwRkRVaXhEUVVGRE8wbEJRMDRzUTBGQlF6dEpRVVZFTEc5Q1FVRnZRaXhEUVVGRExGTkJRU3RDTEVWQlFVTXNTMEZCV1R0UlFVTTNSQ3hQUVVGUExFTkJRMGdzYjBKQlFVTXNWVUZCVlN4SlFVTkRMRVZCUVVVc1JVRkJSU3hUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVU5xUWl4UlFVRlJMRVZCUVVVc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVTXNVMEZCVXl4RFFVRkRMRVZCUXpWRExGTkJRVk1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMR0ZCUVdFc1JVRkRNVU1zVVVGQlVTeEZRVUZETEUxQlFVMHNTVUZEZEVJc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRk5CUVZNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGRGJrTXNRMEZEYUVJc1EwRkJRVHRKUVVOTUxFTkJRVU03U1VGRlJDeHZRa0ZCYjBJc1EwRkJReXhUUVVFclFpeEZRVUZETEV0QlFWazdVVUZETjBRc1QwRkJUeXc0UWtGQlRTeFJRVUZSTEVWQlFVTXNUVUZCVFN4SlFVRkZMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVkVzUTBGQlFUdEpRVU42UkN4RFFVRkRPMGxCUlVRc1pVRkJaVHRSUVVOWUxFOUJRVThzUTBGRFNDdzJRa0ZCU3l4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExGVkJRVlVzWjBKQlEyUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhoUVVGaE8xbEJRM0pETERSQ1FVRkpMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEZGQlFWRXNSVUZEY2tNc1UwRkJVeXhSUVVGRExGRkJRVkVzUlVGQlF5eHJRMEZCYTBNc1NVRkRjRVFzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZPMmRDUVVOc1F5eFBRVUZQTEVsQlFVa3NRMEZCUXl4M1FrRkJkMElzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVFN1dVRkRja1FzUTBGQlF5eERRVUZETEVOQlEwUXNRMEZEU0N4RFFVTlVMRU5CUVVFN1NVRkRUQ3hEUVVGRE96dEJRVGxFWVN4NVFrRkJXU3hIUVVGSE8wbEJRM3BDTEZWQlFWVXNSVUZCUlN4TFFVRkxPMGxCUTJwQ0xHRkJRV0VzUlVGQlJTeGpRVUZqTzBsQlF6ZENMR1ZCUVdVc1JVRkJSU3hMUVVGTE8wTkJRM3BDTEVOQlFVTWlmUT09IiwiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBBZG9iZVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmsgYXMgUm91dGVyTGluayB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuZXhwb3J0IGNvbnN0IFJvdXRlZExpbmsgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRvLCBpc1JvdXRlZCwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgaWYgKHRvID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIE9iamVjdC5hc3NpZ24oeyBocmVmOiAnIycgfSwgcHJvcHMpKTtcbiAgICB9XG4gICAgY29uc3QgaXNFeHRlcm5hbCA9IC9eaHR0cHM/OlxcL1xcLy8udGVzdCh0byk7XG4gICAgcmV0dXJuIGlzRXh0ZXJuYWwgfHwgIWlzUm91dGVkID9cbiAgICAgICAgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIE9iamVjdC5hc3NpZ24oeyBocmVmOiB0byB9LCBwcm9wcykpKVxuICAgICAgICA6XG4gICAgICAgICAgICAoUmVhY3QuY3JlYXRlRWxlbWVudChSb3V0ZXJMaW5rLCBPYmplY3QuYXNzaWduKHt9LCBvdGhlclByb3BzLCB7IHRvOiB0byB9KSkpO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVVtOTFkR1ZrVEdsdWF5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWxKdmRYUmxaRXhwYm1zdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdPenM3T3pzN096dEhRV05ITzBGQlJVZ3NUMEZCVHl4TFFVRkxMRTFCUVUwc1QwRkJUeXhEUVVGRE8wRkJRekZDTEU5QlFVOHNSVUZCUXl4SlFVRkpMRWxCUVVrc1ZVRkJWU3hGUVVGRExFMUJRVTBzYTBKQlFXdENMRU5CUVVNN1FVRlBjRVFzVFVGQlRTeERRVUZETEUxQlFVMHNWVUZCVlN4SFFVRkhMRU5CUVVNc1MwRkJaU3hGUVVGRkxFVkJRVVU3U1VGRE1VTXNUVUZCVFN4RlFVRkRMRVZCUVVVc1JVRkJSU3hSUVVGUkxFVkJRVVVzUjBGQlJ5eFZRVUZWTEVWQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkZOVU1zU1VGQlJ5eEZRVUZGTEV0QlFVc3NVMEZCVXl4RlFVRkRPMUZCUTJoQ0xFOUJRVThzZVVOQlFVY3NTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkRXQ3hMUVVGTExFVkJRMWdzUTBGQlF6dExRVU5PTzBsQlEwUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVVXpReXhQUVVGUExGVkJRVlVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUVN4RFFVRkRPMUZCUXpOQ0xFTkJRVU1zZVVOQlEwY3NTVUZCU1N4RlFVRkZMRVZCUVVVc1NVRkRTaXhMUVVGTExFVkJRMWdzUTBGQlF6dFJRVU5JTEVOQlFVTTdXVUZEUkN4RFFVRkZMRzlDUVVGRExGVkJRVlVzYjBKQlFVc3NWVUZCVlN4SlFVTmtMRVZCUVVVc1JVRkJSU3hGUVVGRkxFbEJRMnhDTEVOQlFVTXNRMEZCUVR0QlFVTllMRU5CUVVNc1EwRkJReUo5IiwiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBBZG9iZVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSXRlbVJvdXRlZChzZWxmUHJvcHMsIGl0ZW0pIHtcbiAgICByZXR1cm4gKChzZWxmUHJvcHMucm91dGVkID09PSB0cnVlICYmIGl0ZW0ucm91dGVkICE9PSBmYWxzZSkgfHwgaXRlbS5yb3V0ZWQgPT09IHRydWUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVW05MWRHVmtRMjl5WlVOdmJYQnZibVZ1ZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbEp2ZFhSbFpFTnZjbVZEYjIxd2IyNWxiblF1ZEhONElsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPenM3T3pzN096czdPenM3T3p0SFFXTkhPMEZCWVVnc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eFRRVUZ4UWl4RlFVRkZMRWxCUVdkQ08wbEJRMmhGTEU5QlFVOHNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFdEJRVXNzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNTMEZCU3l4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVNeFJpeERRVUZESW4wPSIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJvdXRlci1kb21cIik7Il0sInNvdXJjZVJvb3QiOiIifQ==