UNPKG

aem-core-components-contributions-react-core

Version:
2 lines 31.7 kB
!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 n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(r,s,function(t){return e[t]}.bind(null,s));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=21)}({0:function(e,t){e.exports=require("react")},1:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),s=n.n(r);class o extends r.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,n){super(e),this.baseCssCls=t,this.emptyPlaceHolderText=n}__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}},2:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),s=n.n(r),o=n(4);const i=e=>{const{to:t,isRouted:n,...r}=e;if(void 0===t)return s.a.createElement("a",Object.assign({href:"#"},e));return/^https?:\/\//.test(t)||!n?s.a.createElement("a",Object.assign({href:t},e)):s.a.createElement(o.Link,Object.assign({},r,{to:t}))}},21:function(e,t,n){e.exports=n(6)},4:function(e,t){e.exports=require("react-router-dom")},6:function(e,t,n){"use strict";n.r(t),n.d(t,"ImageV2IsEmptyFn",(function(){return p})),n.d(t,"ImageV2",(function(){return a}));var r=n(0),s=n.n(r),o=n(1),i=n(2);function p(e){return!e.src||0===e.src.length}class a extends o.a{constructor(e){super(e,"cmp-image","ImageV2")}generateLink(){return s.a.createElement(i.a,{className:this.baseCssCls+"__link",isRouted:this.props.routed,to:this.props.link},this.getInnerContents())}getInnerContents(){return s.a.createElement(s.a.Fragment,null,s.a.createElement("img",{src:this.props.src,className:this.baseCssCls+"__image",alt:this.props.alt}),!!this.props.title&&s.a.createElement("span",{className:this.baseCssCls+"__title",itemProp:"caption"},this.props.title),this.props.displayPopupTitle&&!!this.props.title&&s.a.createElement("meta",{itemProp:"caption",content:this.props.title}))}getContents(){return this.props.link&&this.props.link.trim().length>0?this.generateLink():this.getInnerContents()}isEmpty(){return p(this.props)}renderComponent(){const e=this.props.isInEditor?this.baseCssCls+" cq-dd-image":this.baseCssCls;return s.a.createElement("div",{className:e},this.getContents())}}a.defaultProps={hidePlaceHolder:!1,isInEditor:!1}}})})); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgXCJyZWFjdFwiIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tbW9uL3BsYWNlaG9sZGVyLnRzeCIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzLy4vc3JjL0Fic3RyYWN0Q29yZUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vY3FDb3JlQ29tcG9uZW50cy8uL3NyYy9yb3V0aW5nL1JvdXRlZExpbmsudHN4Iiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgXCJyZWFjdC1yb3V0ZXItZG9tXCIiLCJ3ZWJwYWNrOi8vY3FDb3JlQ29tcG9uZW50cy8uL3NyYy9hdXRob3JpbmcvaW1hZ2UvdjIvSW1hZ2VWMi50c3giXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsInRoaXMiLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwicmVxdWlyZSIsImVtcHR5VGV4dCIsInByb3BzIiwiY29tcG9uZW50VGl0bGUiLCJsZW5ndGgiLCJlbXB0eVRleHRBcHBlbmQiLCJERUZBVUxUX0VNUFRZX1RFWFRfTEFCRUwiLCJyZW5kZXJQbGFjZUhvbGRlciIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjbGFzc0FwcGVuZCIsIkNvbXBvbmVudCIsImJhc2VDc3NDbHMiLCJlbXB0eVBsYWNlSG9sZGVyVGV4dCIsInN1cGVyIiwiaGlkZVBsYWNlSG9sZGVyIiwidGl0bGUiLCJpc0VtcHR5IiwiRnJhZ21lbnQiLCJyZW5kZXJDb21wb25lbnQiLCJpc0luRWRpdG9yIiwiX19oaWRlUGxhY2VIb2xkZXIiLCJfX3JlbmRlclBsYWNlSG9sZGVyIiwiZGVmYXVsdFByb3BzIiwiUm91dGVkTGluayIsInRvIiwiaXNSb3V0ZWQiLCJvdGhlclByb3BzIiwidW5kZWZpbmVkIiwiYXNzaWduIiwiaHJlZiIsInRlc3QiLCJJbWFnZVYySXNFbXB0eUZuIiwic3JjIiwiSW1hZ2VWMiIsInJvdXRlZCIsImxpbmsiLCJnZXRJbm5lckNvbnRlbnRzIiwiYWx0IiwiaXRlbVByb3AiLCJkaXNwbGF5UG9wdXBUaXRsZSIsImNvbnRlbnQiLCJ0cmltIiwiZ2VuZXJhdGVMaW5rIiwiY3NzQ2xhc3NOYW1lIiwiZ2V0Q29udGVudHMiXSwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxJQUNRLG1CQUFYRyxRQUF5QkEsT0FBT0MsSUFDOUNELE9BQU8sR0FBSUgsR0FDZSxpQkFBWkMsUUFDZEEsUUFBMEIsaUJBQUlELElBRTlCRCxFQUF1QixpQkFBSUMsSUFSN0IsQ0FTbUIsb0JBQVRLLEtBQXVCQSxLQUFPQyxNQUFNLFdBQzlDLE8sWUNURSxJQUFJQyxFQUFtQixHQUd2QixTQUFTQyxFQUFvQkMsR0FHNUIsR0FBR0YsRUFBaUJFLEdBQ25CLE9BQU9GLEVBQWlCRSxHQUFVUixRQUduQyxJQUFJQyxFQUFTSyxFQUFpQkUsR0FBWSxDQUN6Q0MsRUFBR0QsRUFD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S0FBS3NDLE1BQU1jLE9BQ2hJcEQsS0FBS3NDLE1BQU1zQyxxQkFBd0I1RSxLQUFLc0MsTUFBTWMsT0FBVSxJQUFNUixjQUFjLE9BQVEsQ0FBRStCLFNBQVUsVUFBV0UsUUFBUzdFLEtBQUtzQyxNQUFNYyxTQUV2SSxjQUNJLE9BQUlwRCxLQUFLc0MsTUFBTWtDLE1BQVF4RSxLQUFLc0MsTUFBTWtDLEtBQUtNLE9BQU90QyxPQUFTLEVBQzVDeEMsS0FBSytFLGVBRVQvRSxLQUFLeUUsbUJBRWhCLFVBQ0ksT0FBT0wsRUFBaUJwRSxLQUFLc0MsT0FFakMsa0JBQ0ksTUFBTTBDLEVBQWdCaEYsS0FBS3NDLE1BQWdCLFdBQUl0QyxLQUFLZ0QsV0FBYSxlQUFpQmhELEtBQUtnRCxXQUN2RixPQUFRLElBQU1KLGNBQWMsTUFBTyxDQUFFQyxVQUFXbUMsR0FBZ0JoRixLQUFLaUYsZ0JBRzdFWCxFQUFRWCxhQUFlLENBQ25CUixpQkFBaUIsRUFDakJLLFlBQVkiLCJmaWxlIjoiSW1hZ2VWMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImNxQ29yZUNvbXBvbmVudHNcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3FDb3JlQ29tcG9uZW50c1wiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMjEpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBBZG9iZVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBjbGFzcyBFZGl0b3JQbGFjZUhvbGRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCBwYXJ0MSA9ICh0aGlzLnByb3BzLmNvbXBvbmVudFRpdGxlICE9IG51bGwgJiYgdGhpcy5wcm9wcy5jb21wb25lbnRUaXRsZS5sZW5ndGggPiAwKSA/IHRoaXMucHJvcHMuY29tcG9uZW50VGl0bGUgKyAnIC0gJyA6ICcnO1xuICAgICAgICBjb25zdCBwYXJ0MiA9ICh0aGlzLnByb3BzLmVtcHR5VGV4dEFwcGVuZCAhPSBudWxsKSA/IHRoaXMucHJvcHMuZW1wdHlUZXh0QXBwZW5kIDogRWRpdG9yUGxhY2VIb2xkZXIuREVGQVVMVF9FTVBUWV9URVhUX0xBQkVMO1xuICAgICAgICBjb25zdCBlbXB0eVRleHQgPSBwYXJ0MSArIHBhcnQyO1xuICAgICAgICByZXR1cm4gKHRoaXMucmVuZGVyUGxhY2VIb2xkZXIoZW1wdHlUZXh0KSk7XG4gICAgfVxuICAgIHJlbmRlclBsYWNlSG9sZGVyKGVtcHR5VGV4dCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2NxLXBsYWNlaG9sZGVyJyArICh0aGlzLnByb3BzLmNsYXNzQXBwZW5kICE9IG51bGwgPyAnICcgKyB0aGlzLnByb3BzLmNsYXNzQXBwZW5kIDogJycpIH0sIGVtcHR5VGV4dCk7XG4gICAgfVxufVxuRWRpdG9yUGxhY2VIb2xkZXIuREVGQVVMVF9FTVBUWV9URVhUX0xBQkVMID0gJ1BsZWFzZSBjb25maWd1cmUgdGhlIGNvbXBvbmVudCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljR3hoWTJWb2IyeGtaWEl1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SndiR0ZqWldodmJHUmxjaTUwYzNnaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlEwRTdPenM3T3pzN096czdPenM3TzBkQlkwYzdRVUZEU0N4UFFVRlBMRXRCUVVzc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eE5RVUZOTEU5QlFVOHNRMEZCUXp0QlFWRjJReXhOUVVGTkxFOUJRVThzYVVKQlFXdENMRk5CUVZFc1UwRkJaME03U1VGSmJrVXNUVUZCVFR0UlFVTkdMRTFCUVUwc1MwRkJTeXhIUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4alFVRmpMRWxCUVVrc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhqUVVGakxFZEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkROMGtzVFVGQlRTeExRVUZMTEVkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEhkQ1FVRjNRaXhEUVVGRE8xRkJRM1JKTEUxQlFVMHNVMEZCVXl4SFFVRkhMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRmFFTXNUMEZCVHl4RFFVTklMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkRjRU1zUTBGQlFUdEpRVU5NTEVOQlFVTTdTVUZIUkN4cFFrRkJhVUlzUTBGQlF5eFRRVUZwUWp0UlFVTXZRaXhQUVVGUExEWkNRVU5JTEZOQlFWTXNSVUZCUlN4blFrRkJaMElzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhKUVVGSkxFbEJRVWtzUTBGQlFTeERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkRhRWNzVTBGQlV5eERRVU5TTEVOQlFVTTdTVUZEV0N4RFFVRkRPenRCUVd4Q1RTd3dRMEZCZDBJc1IwRkJWeXhuUTBGQlowTXNRMEZCUXlKOSIsIi8qXG4gKiAgQ29weXJpZ2h0IDIwMjAgQWRvYmVcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEVkaXRvclBsYWNlSG9sZGVyIH0gZnJvbSBcIi4vY29tbW9uL3BsYWNlaG9sZGVyXCI7XG4vKipcbiAqIEFic3RyYWN0Q29yZUNvbXBvbmVudCAtIHByb3ZpZGVzIGFic3RyYWN0aW9uIGFuZCBoZWxwZXIgbWV0aG9kcyB0byBzaG93IGEgcGxhY2Vob2xkZXIgaWYgdGhlIGNvbXBvbmVudCBpcyBlbXB0eSBhbmQgYXV0aG9yIG1vZGUgaXMgb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdENvcmVDb21wb25lbnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIEJhc2UgQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gcHJvcHMgY29tcG9uZW50IHByb3BlcnRpZXNcbiAgICAgKiBAcGFyYW0gYmFzZUNzc0NscyB0aGUgYmFzZSBCRU0gY3NzIGNsYXNzIHRvIGJlIHVzZWQgZm9yIHRoZSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gZW1wdHlQbGFjZUhvbGRlclRleHQgZW1wdHkgcGxhY2Vob2xkZXIgbGFiZWwgZm9yIHdoZW4gdGhlIGNvbXBvbmVudCBuZWVkcyB0byBiZSBjb25maWd1cmVkIGluIGF1dGhvciBtb2RlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvcHMsIGJhc2VDc3NDbHMsIGVtcHR5UGxhY2VIb2xkZXJUZXh0KSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5iYXNlQ3NzQ2xzID0gYmFzZUNzc0NscztcbiAgICAgICAgdGhpcy5lbXB0eVBsYWNlSG9sZGVyVGV4dCA9IGVtcHR5UGxhY2VIb2xkZXJUZXh0O1xuICAgIH1cbiAgICBfX2hpZGVQbGFjZUhvbGRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaGlkZVBsYWNlSG9sZGVyO1xuICAgIH1cbiAgICBfX3JlbmRlclBsYWNlSG9sZGVyKHRpdGxlLCBlbXB0eVRleHQpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXRvclBsYWNlSG9sZGVyLCB7IGVtcHR5VGV4dEFwcGVuZDogZW1wdHlUZXh0LCBjb21wb25lbnRUaXRsZTogdGl0bGUgfSkpO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmlzRW1wdHkoKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgIWlzRW1wdHkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudCgpLFxuICAgICAgICAgICAgKGlzRW1wdHkgJiYgdGhpcy5wcm9wcy5pc0luRWRpdG9yICYmICF0aGlzLl9faGlkZVBsYWNlSG9sZGVyKCkpICYmIHRoaXMuX19yZW5kZXJQbGFjZUhvbGRlcih0aGlzLmVtcHR5UGxhY2VIb2xkZXJUZXh0KSkpO1xuICAgIH1cbn1cbkFic3RyYWN0Q29yZUNvbXBvbmVudC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgaGlkZVBsYWNlSG9sZGVyOiBmYWxzZSxcbiAgICBpc0luRWRpdG9yOiBmYWxzZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVFXSnpkSEpoWTNSRGIzSmxRMjl0Y0c5dVpXNTBMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVFXSnpkSEpoWTNSRGIzSmxRMjl0Y0c5dVpXNTBMblJ6ZUNKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdPenM3T3pzN096czdPenM3UjBGalJ6dEJRVVZJTEU5QlFVOHNTMEZCU3l4TlFVRk5MRTlCUVU4c1EwRkJRenRCUVVNeFFpeFBRVUZQTEVWQlFVTXNhVUpCUVdsQ0xFVkJRVU1zVFVGQlRTeHpRa0ZCYzBJc1EwRkJRenRCUVZsMlJEczdSMEZGUnp0QlFVTklMRTFCUVUwc1QwRkJaMElzY1VKQlFUQkdMRk5CUVZFc1MwRkJTeXhEUVVGRExGTkJRWE5DTzBsQlZXaEtPenM3T3p0UFFVdEhPMGxCUTBnc1dVRkJjMElzUzBGQlZ5eEZRVUZETEZWQlFXbENMRVZCUVVNc2IwSkJRVEpDTzFGQlF6TkZMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU5pTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1ZVRkJWU3hEUVVGRE8xRkJRemRDTEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUjBGQlJ5eHZRa0ZCYjBJc1EwRkJRenRKUVVOeVJDeERRVUZETzBsQldVOHNhVUpCUVdsQ08xRkJRM0pDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU03U1VGRGRFTXNRMEZCUXp0SlFVVlBMRzFDUVVGdFFpeERRVUZETEV0QlFXRXNSVUZCUlN4VFFVRnBRanRSUVVONFJDeFBRVUZOTEVOQlEwWXNiMEpCUVVNc2FVSkJRV2xDTEVsQlEyUXNaVUZCWlN4RlFVRkZMRk5CUVZNc1JVRkRNVUlzWTBGQll5eEZRVUZGTEV0QlFVc3NSMEZEZGtJc1EwRkRUQ3hEUVVGQk8wbEJRMHdzUTBGQlF6dEpRVVZFTEUxQlFVMDdVVUZEUml4TlFVRk5MRTlCUVU4c1IwRkJWeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZGZGtNc1QwRkJUeXhEUVVOSU8xbEJRMDBzUTBGQlF5eFBRVUZQTzJkQ1FVTk9MRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVU3V1VGSGRFSXNRMEZCUXl4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFZRVUZWTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNRMEZGTTBnc1EwRkRUaXhEUVVGQk8wbEJRMHdzUTBGQlF6czdRVUY0UkdFc2EwTkJRVmtzUjBGQlJ6dEpRVU42UWl4bFFVRmxMRVZCUVVVc1MwRkJTenRKUVVOMFFpeFZRVUZWTEVWQlFVVXNTMEZCU3p0RFFVTndRaXhEUVVGREluMD0iLCIvKlxuICogIENvcHlyaWdodCAyMDIwIEFkb2JlXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTGluayBhcyBSb3V0ZXJMaW5rIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5leHBvcnQgY29uc3QgUm91dGVkTGluayA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgdG8sIGlzUm91dGVkLCAuLi5vdGhlclByb3BzIH0gPSBwcm9wcztcbiAgICBpZiAodG8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgT2JqZWN0LmFzc2lnbih7IGhyZWY6ICcjJyB9LCBwcm9wcykpO1xuICAgIH1cbiAgICBjb25zdCBpc0V4dGVybmFsID0gL15odHRwcz86XFwvXFwvLy50ZXN0KHRvKTtcbiAgICByZXR1cm4gaXNFeHRlcm5hbCB8fCAhaXNSb3V0ZWQgP1xuICAgICAgICAoUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgT2JqZWN0LmFzc2lnbih7IGhyZWY6IHRvIH0sIHByb3BzKSkpXG4gICAgICAgIDpcbiAgICAgICAgICAgIChSZWFjdC5jcmVhdGVFbGVtZW50KFJvdXRlckxpbmssIE9iamVjdC5hc3NpZ24oe30sIG90aGVyUHJvcHMsIHsgdG86IHRvIH0pKSk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVW05MWRHVmtUR2x1YXk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbEp2ZFhSbFpFeHBibXN1ZEhONElsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPenM3T3pzN096czdPenM3T3p0SFFXTkhPMEZCUlVnc1QwRkJUeXhMUVVGTExFMUJRVTBzVDBGQlR5eERRVUZETzBGQlF6RkNMRTlCUVU4c1JVRkJReXhKUVVGSkxFbEJRVWtzVlVGQlZTeEZRVUZETEUxQlFVMHNhMEpCUVd0Q0xFTkJRVU03UVVGUGNFUXNUVUZCVFN4RFFVRkRMRTFCUVUwc1ZVRkJWU3hIUVVGSExFTkJRVU1zUzBGQlpTeEZRVUZGTEVWQlFVVTdTVUZETVVNc1RVRkJUU3hGUVVGRExFVkJRVVVzUlVGQlJTeFJRVUZSTEVWQlFVVXNSMEZCUnl4VlFVRlZMRVZCUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03U1VGRk5VTXNTVUZCUnl4RlFVRkZMRXRCUVVzc1UwRkJVeXhGUVVGRE8xRkJRMmhDTEU5QlFVOHNlVU5CUVVjc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGRFdDeExRVUZMTEVWQlExZ3NRMEZCUXp0TFFVTk9PMGxCUTBRc1RVRkJUU3hWUVVGVkxFZEJRVWNzWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVVelF5eFBRVUZQTEZWQlFWVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRU3hEUVVGRE8xRkJRek5DTEVOQlFVTXNlVU5CUTBjc1NVRkJTU3hGUVVGRkxFVkJRVVVzU1VGRFNpeExRVUZMTEVWQlExZ3NRMEZCUXp0UlFVTklMRU5CUVVNN1dVRkRSQ3hEUVVGRkxHOUNRVUZETEZWQlFWVXNiMEpCUVVzc1ZVRkJWU3hKUVVOa0xFVkJRVVVzUlVGQlJTeEZRVUZGTEVsQlEyeENMRU5CUVVNc1EwRkJRVHRCUVVOWUxFTkJRVU1zUTBGQlF5SjkiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yb3V0ZXItZG9tXCIpOyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvcmVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vQWJzdHJhY3RDb3JlQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBSb3V0ZWRMaW5rIH0gZnJvbSBcIi4uLy4uLy4uL3JvdXRpbmcvUm91dGVkTGlua1wiO1xuZXhwb3J0IGZ1bmN0aW9uIEltYWdlVjJJc0VtcHR5Rm4ocHJvcHMpIHtcbiAgICByZXR1cm4gKCFwcm9wcy5zcmMpIHx8IHByb3BzLnNyYy5sZW5ndGggPT09IDA7XG59XG5leHBvcnQgY2xhc3MgSW1hZ2VWMiBleHRlbmRzIEFic3RyYWN0Q29yZUNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMsICdjbXAtaW1hZ2UnLCAnSW1hZ2VWMicpO1xuICAgIH1cbiAgICBnZW5lcmF0ZUxpbmsoKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSb3V0ZWRMaW5rLCB7IGNsYXNzTmFtZTogdGhpcy5iYXNlQ3NzQ2xzICsgJ19fbGluaycsIGlzUm91dGVkOiB0aGlzLnByb3BzLnJvdXRlZCwgdG86IHRoaXMucHJvcHMubGluayB9LCB0aGlzLmdldElubmVyQ29udGVudHMoKSkpO1xuICAgIH1cbiAgICBnZXRJbm5lckNvbnRlbnRzKCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgc3JjOiB0aGlzLnByb3BzLnNyYywgY2xhc3NOYW1lOiB0aGlzLmJhc2VDc3NDbHMgKyAnX19pbWFnZScsIGFsdDogdGhpcy5wcm9wcy5hbHQgfSksXG4gICAgICAgICAgICAhISh0aGlzLnByb3BzLnRpdGxlKSAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogdGhpcy5iYXNlQ3NzQ2xzICsgJ19fdGl0bGUnLCBpdGVtUHJvcDogXCJjYXB0aW9uXCIgfSwgdGhpcy5wcm9wcy50aXRsZSksXG4gICAgICAgICAgICB0aGlzLnByb3BzLmRpc3BsYXlQb3B1cFRpdGxlICYmICghIXRoaXMucHJvcHMudGl0bGUpICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJtZXRhXCIsIHsgaXRlbVByb3A6IFwiY2FwdGlvblwiLCBjb250ZW50OiB0aGlzLnByb3BzLnRpdGxlIH0pKSk7XG4gICAgfVxuICAgIGdldENvbnRlbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5saW5rICYmIHRoaXMucHJvcHMubGluay50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVMaW5rKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5uZXJDb250ZW50cygpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gSW1hZ2VWMklzRW1wdHlGbih0aGlzLnByb3BzKTtcbiAgICB9XG4gICAgcmVuZGVyQ29tcG9uZW50KCkge1xuICAgICAgICBjb25zdCBjc3NDbGFzc05hbWUgPSAodGhpcy5wcm9wcy5pc0luRWRpdG9yKSA/IHRoaXMuYmFzZUNzc0NscyArICcgY3EtZGQtaW1hZ2UnIDogdGhpcy5iYXNlQ3NzQ2xzO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNzc0NsYXNzTmFtZSB9LCB0aGlzLmdldENvbnRlbnRzKCkpKTtcbiAgICB9XG59XG5JbWFnZVYyLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBoaWRlUGxhY2VIb2xkZXI6IGZhbHNlLFxuICAgIGlzSW5FZGl0b3I6IGZhbHNlXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pU1cxaFoyVldNaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklrbHRZV2RsVmpJdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEU5QlFVOHNTMEZCU3l4TlFVRk5MRTlCUVU4c1EwRkJRenRCUVVNeFFpeFBRVUZQTEVWQlFVTXNjVUpCUVhGQ0xFVkJRWEZDTEUxQlFVMHNaME5CUVdkRExFTkJRVU03UVVGRmVrWXNUMEZCVHl4RlFVRkRMRlZCUVZVc1JVRkJReXhOUVVGTkxEWkNRVUUyUWl4RFFVRkRPMEZCVlhaRUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhMUVVFMlFqdEpRVU14UkN4UFFVRlBMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEyeEVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxFOUJRVThzVDBGQlowWXNVMEZCVVN4eFFrRkJhME03U1VGUmJra3NXVUZCV1N4TFFVRlpPMUZCUTNCQ0xFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNWMEZCVnl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8wbEJRM3BETEVOQlFVTTdTVUZGUkN4WlFVRlpPMUZCUTFJc1QwRkJUeXhEUVVOSUxHOUNRVUZETEZWQlFWVXNTVUZCUXl4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFJRVUZSTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGRE9VWXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEVOQlEyWXNRMEZEYUVJc1EwRkJRVHRKUVVOTUxFTkJRVU03U1VGRlJDeG5Ra0ZCWjBJN1VVRkRXaXhQUVVGUExFTkJRMGc3V1VGRFNTdzJRa0ZCU3l4SFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVWQlEyNUNMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEZOQlFWTXNSVUZEZEVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4SFFVRkhPMWxCUlhaQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzT0VKQlFVMHNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzVTBGQlV5eEZRVUZGTEZGQlFWRXNSVUZCUXl4VFFVRlRMRWxCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFWRTdXVUZIYkVnc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxEaENRVUZOTEZGQlFWRXNSVUZCUXl4VFFVRlRMRVZCUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUld4SUxFTkJRMDRzUTBGQlF6dEpRVU5PTEVOQlFVTTdTVUZGUkN4WFFVRlhPMUZCUTFBc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRE8xbEJRM0pFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8xTkJRemxDTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNRMEZCUXp0SlFVTnVReXhEUVVGRE8wbEJSVVFzVDBGQlR6dFJRVU5JTEU5QlFVOHNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTNoRExFTkJRVU03U1VGRlJDeGxRVUZsTzFGQlExZ3NUVUZCVFN4WlFVRlpMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF6dFJRVVZzUnl4UFFVRlBMRU5CUTBnc05rSkJRVXNzVTBGQlV5eEZRVUZGTEZsQlFWa3NTVUZEZGtJc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVU5xUWl4RFFVTlVMRU5CUVVFN1NVRkRUQ3hEUVVGRE96dEJRWEpFWVN4dlFrRkJXU3hIUVVGSE8wbEJRM3BDTEdWQlFXVXNSVUZCUlN4TFFVRkxPMGxCUTNSQ0xGVkJRVlVzUlVGQlJTeExRVUZMTzBOQlEzQkNMRU5CUVVNaWZRPT0iXSwic291cmNlUm9vdCI6IiJ9