| Server IP : 82.208.35.60 / Your IP : 216.73.216.89 Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31 System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64 User : studiokobylisy_cz ( 1008) PHP Version : 7.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/air-sport_cz/www/admin939wizxmp/themes/new-theme/public/ |
Upload File : |
/*! For license information please see carrier.bundle.js.LICENSE.txt */
(()=>{var t={4110:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=window.$;e.default=function(t,e){n.post(t).then((function(){return window.location.assign(e)}))}},61353:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=window.$,s=function(){function t(e){(0,r.default)(this,t),this.selector=".ps-sortable-column",this.columns=a(e).find(this.selector)}return(0,o.default)(t,[{key:"attach",value:function(){var t=this;this.columns.on("click",(function(e){var n=a(e.delegateTarget);t.sortByColumn(n,t.getToggledSortDirection(n))}))}},{key:"sortBy",value:function(t,e){var n=this.columns.is('[data-sort-col-name="'+t+'"]');if(!n)throw new Error('Cannot sort by "'+t+'": invalid column');this.sortByColumn(n,e)}},{key:"sortByColumn",value:function(t,e){window.location=this.getUrl(t.data("sortColName"),"desc"===e?"desc":"asc",t.data("sortPrefix"))}},{key:"getToggledSortDirection",value:function(t){return"asc"===t.data("sortDirection")?"desc":"asc"}},{key:"getUrl",value:function(t,e,n){var r=new URL(window.location.href),o=r.searchParams;return n?(o.set(n+"[orderBy]",t),o.set(n+"[sortOrder]",e)):(o.set("orderBy",t),o.set("sortOrder",e)),r.toString()}}]),t}();e.default=s},91781:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(99663)),o=a(n(22600)),i=a(n(68840));function a(t){return t&&t.__esModule?t:{default:t}}var s=window.$,u=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){var e=this;t.getContainer().on("click",".js-submit-row-action",(function(n){n.preventDefault();var r=s(n.currentTarget),o=r.data("confirmMessage"),i=r.data("title"),a=r.data("method");if(i)e.showConfirmModal(r,t,o,i,a);else{if(o.length&&!window.confirm(o))return;e.postForm(r,a)}}))}},{key:"postForm",value:function(t,e){var n=["GET","POST"].includes(e),r=s("<form>",{action:t.data("url"),method:n?e:"POST"}).appendTo("body");n||r.append(s("<input>",{type:"_hidden",name:"_method",value:e})),r.submit()}},{key:"showConfirmModal",value:function(t,e,n,r,o){var a=this,s=t.data("confirmButtonLabel"),u=t.data("closeButtonLabel"),l=t.data("confirmButtonClass");new i.default({id:e.getId()+"-grid-confirm-modal",confirmTitle:r,confirmMessage:n,confirmButtonLabel:s,closeButtonLabel:u,confirmButtonClass:l},(function(){return a.postForm(t,o)})).show()}}]),t}();e.default=u},5595:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=window.$,s=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){this.handleBulkActionCheckboxSelect(t),this.handleBulkActionSelectAllCheckbox(t)}},{key:"handleBulkActionSelectAllCheckbox",value:function(t){var e=this;t.getContainer().on("change",".js-bulk-action-select-all",(function(n){var r=a(n.currentTarget).is(":checked");r?e.enableBulkActionsBtn(t):e.disableBulkActionsBtn(t),t.getContainer().find(".js-bulk-action-checkbox").prop("checked",r)}))}},{key:"handleBulkActionCheckboxSelect",value:function(t){var e=this;t.getContainer().on("change",".js-bulk-action-checkbox",(function(){t.getContainer().find(".js-bulk-action-checkbox:checked").length>0?e.enableBulkActionsBtn(t):e.disableBulkActionsBtn(t)}))}},{key:"enableBulkActionsBtn",value:function(t){t.getContainer().find(".js-bulk-actions-btn").prop("disabled",!1)}},{key:"disableBulkActionsBtn",value:function(t){t.getContainer().find(".js-bulk-actions-btn").prop("disabled",!0)}}]),t}();e.default=s},4499:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=window.$,s=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){var e=this;t.getContainer().find("table.table").find(".ps-togglable-row").on("click",(function(t){t.preventDefault(),e.toggleValue(a(t.delegateTarget))}))}},{key:"toggleValue",value:function(t){var e=t.data("toggleUrl");this.submitAsForm(e)}},{key:"submitAsForm",value:function(t){a("<form>",{action:t,method:"POST"}).appendTo("body").submit()}}]),t}();e.default=s},2573:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=window.$,s=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){var e=this;t.getHeaderContainer().on("click",".js-common_show_query-grid-action",(function(){return e.onShowSqlQueryClick(t)})),t.getHeaderContainer().on("click",".js-common_export_sql_manager-grid-action",(function(){return e.onExportSqlManagerClick(t)}))}},{key:"onShowSqlQueryClick",value:function(t){var e=a("#"+t.getId()+"_common_show_query_modal_form");this.fillExportForm(e,t);var n=a("#"+t.getId()+"_grid_common_show_query_modal");n.modal("show"),n.on("click",".btn-sql-submit",(function(){return e.submit()}))}},{key:"onExportSqlManagerClick",value:function(t){var e=a("#"+t.getId()+"_common_show_query_modal_form");this.fillExportForm(e,t),e.submit()}},{key:"fillExportForm",value:function(t,e){var n=e.getContainer().find(".js-grid-table").data("query");t.find('textarea[name="sql"]').val(n),t.find('input[name="name"]').val(this.getNameFromBreadcrumb())}},{key:"getNameFromBreadcrumb",value:function(){var t=a(".header-toolbar").find(".breadcrumb-item"),e="";return t.each((function(t,n){var r=a(n),o=r.find("a").length>0?r.find("a").text():r.text();e.length>0&&(e=e.concat(" > ")),e=e.concat(o)})),e}}]),t}();e.default=s},96803:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(99663)),o=a(n(22600)),i=a(n(4110));function a(t){return t&&t.__esModule?t:{default:t}}var s=window.$,u=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){t.getContainer().on("click",".js-reset-search",(function(t){(0,i.default)(s(t.currentTarget).data("url"),s(t.currentTarget).data("redirect"))}))}}]),t}();e.default=u},91137:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){var e=t.getContainer().find(".column-filters");e.find(".grid-search-button").prop("disabled",!0),e.find("input:not(.js-bulk-action-select-all), select").on("input dp.change",(function(){e.find(".grid-search-button").prop("disabled",!1),e.find(".js-grid-reset-button").prop("hidden",!1)}))}}]),t}();e.default=a},58899:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=window.$,s=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){this.initRowLinks(t),this.initConfirmableActions(t)}},{key:"initConfirmableActions",value:function(t){t.getContainer().on("click",".js-link-row-action",(function(t){var e=a(t.currentTarget).data("confirm-message");e.length&&!window.confirm(e)&&t.preventDefault()}))}},{key:"initRowLinks",value:function(t){a("tr",t.getContainer()).each((function(){var t=a(this);a(".js-link-row-action[data-clickable-row=1]:first",t).each((function(){var e=a(this),n=e.closest("td"),r=a("td.clickable",t).not(n),o=!1;r.addClass("cursor-pointer").mousedown((function(){a(window).mousemove((function(){o=!0,a(window).unbind("mousemove")}))})),r.mouseup((function(){var t=o;if(o=!1,a(window).unbind("mousemove"),!t){var n=e.data("confirm-message");n.length&&!window.confirm(n)||(document.location=e.attr("href"))}}))}))}))}}]),t}();e.default=s},92448:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(12424)),o=a(n(99663)),i=a(n(22600));function a(t){return t&&t.__esModule?t:{default:t}}n(73867);var s=window.$,u=function(){function t(){var e=this;return(0,o.default)(this,t),{extend:function(t){return e.extend(t)}}}return(0,i.default)(t,[{key:"extend",value:function(t){var e=this;this.grid=t,this.addIdsToGridTableRows(),t.getContainer().find(".js-grid-table").tableDnD({onDragClass:"position-row-while-drag",dragHandle:".js-drag-handle",onDrop:function(t,n){return e.handlePositionChange(n)}}),t.getContainer().find(".js-drag-handle").hover((function(){s(this).closest("tr").addClass("hover")}),(function(){s(this).closest("tr").removeClass("hover")}))}},{key:"handlePositionChange",value:function(t){var e=s(t).find(".js-"+this.grid.getId()+"-position:first"),n=e.data("update-url"),r=e.data("update-method"),o={positions:this.getRowsPositions()};this.updatePosition(n,o,r)}},{key:"getRowsPositions",value:function(){for(var t=JSON.parse(s.tableDnD.jsonize())[this.grid.getId()+"_grid_table"],e=[],n=void 0,r=0;r<t.length;r+=1)n=this.grid.getContainer().find("#"+t[r]),e.push({rowMarker:t[r],offset:n.data("dragAndDropOffset")});return this.computeMappingBetweenOldAndNewPositions(e)}},{key:"addIdsToGridTableRows",value:function(){var t=0;this.grid.getContainer().find(".js-grid-table .js-"+this.grid.getId()+"-position").each((function(e,n){var r=s(n),o="row_"+r.data("id")+"_"+r.data("position");r.closest("tr").attr("id",o),r.closest("td").addClass("js-drag-handle"),r.closest("tr").data("dragAndDropOffset",t),t+=1}))}},{key:"updatePosition",value:function(t,e,n){for(var r=["GET","POST"].includes(n),o=s("<form>",{action:t,method:r?n:"POST"}).appendTo("body"),i=e.positions.length,a=void 0,u=0;u<i;u+=1)a=e.positions[u],o.append(s("<input>",{type:"hidden",name:"positions["+u+"][rowId]",value:a.rowId}),s("<input>",{type:"hidden",name:"positions["+u+"][oldPosition]",value:a.oldPosition}),s("<input>",{type:"hidden",name:"positions["+u+"][newPosition]",value:a.newPosition}));r||o.append(s("<input>",{type:"hidden",name:"_method",value:n})),o.submit()}},{key:"computeMappingBetweenOldAndNewPositions",value:function(t){for(var e=/^row_(\d+)_(\d+)$/,n=Array(t.length).fill().map(Object),o=0;o<t.length;o+=1){var i=e.exec(t[o].rowMarker),a=(0,r.default)(i,3),s=a[1],u=a[2];n[o].rowId=s,n[o].oldPosition=parseInt(u,10),n[t[o].offset].newPosition=n[o].oldPosition}return n}}]),t}();e.default=u},37758:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){t.getHeaderContainer().on("click",".js-common_refresh_list-grid-action",(function(){window.location.reload()}))}}]),t}();e.default=a},58630:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(99663)),o=a(n(22600)),i=a(n(61353));function a(t){return t&&t.__esModule?t:{default:t}}var s=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){var e=t.getContainer().find("table.table");new i.default(e).attach()}}]),t}();e.default=s},17868:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(99663)),o=a(n(22600)),i=a(n(68840));function a(t){return t&&t.__esModule?t:{default:t}}var s=window.$,u=function(){function t(){var e=this;return(0,r.default)(this,t),{extend:function(t){return e.extend(t)}}}return(0,o.default)(t,[{key:"extend",value:function(t){var e=this;t.getContainer().on("click",".js-bulk-action-submit-btn",(function(n){e.submit(n,t)}))}},{key:"submit",value:function(t,e){var n=s(t.currentTarget),r=n.data("confirm-message"),o=n.data("confirmTitle");void 0!==r&&r.length>0?void 0!==o?this.showConfirmModal(n,e,r,o):window.confirm(r)&&this.postForm(n,e):this.postForm(n,e)}},{key:"showConfirmModal",value:function(t,e,n,r){var o=this,a=t.data("confirmButtonLabel"),s=t.data("closeButtonLabel"),u=t.data("confirmButtonClass");new i.default({id:e.getId()+"-grid-confirm-modal",confirmTitle:r,confirmMessage:n,confirmButtonLabel:a,closeButtonLabel:s,confirmButtonClass:u},(function(){return o.postForm(t,e)})).show()}},{key:"postForm",value:function(t,e){var n=s("#"+e.getId()+"_filter_form");n.attr("action",t.data("form-url")),n.attr("method",t.data("form-method")),n.submit()}}]),t}();e.default=u},53277:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=window.$,s=function(){function t(e){(0,r.default)(this,t),this.id=e,this.$container=a("#"+this.id+"_grid")}return(0,o.default)(t,[{key:"getId",value:function(){return this.id}},{key:"getContainer",value:function(){return this.$container}},{key:"getHeaderContainer",value:function(){return this.$container.closest(".js-grid-panel").find(".js-grid-header")}},{key:"addExtension",value:function(t){t.extend(this)}}]),t}();e.default=s},68840:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=(r=n(85315))&&r.__esModule?r:{default:r};e.default=function(t,e,n){var r=this,a=t.id,s=t.closable;this.modal=function(t){var e,n=t.id,r=void 0===n?"confirm-modal":n,i=t.confirmTitle,a=t.confirmMessage,s=void 0===a?"":a,u=t.closeButtonLabel,l=void 0===u?"Close":u,d=t.confirmButtonLabel,c=void 0===d?"Accept":d,f=t.confirmButtonClass,h=void 0===f?"btn-primary":f,v=t.customButtons,p=void 0===v?[]:v,m={};return m.container=document.createElement("div"),m.container.classList.add("modal","fade"),m.container.id=r,m.dialog=document.createElement("div"),m.dialog.classList.add("modal-dialog"),m.content=document.createElement("div"),m.content.classList.add("modal-content"),m.header=document.createElement("div"),m.header.classList.add("modal-header"),i&&(m.title=document.createElement("h4"),m.title.classList.add("modal-title"),m.title.innerHTML=i),m.closeIcon=document.createElement("button"),m.closeIcon.classList.add("close"),m.closeIcon.setAttribute("type","button"),m.closeIcon.dataset.dismiss="modal",m.closeIcon.innerHTML="×",m.body=document.createElement("div"),m.body.classList.add("modal-body","text-left","font-weight-normal"),m.message=document.createElement("p"),m.message.classList.add("confirm-message"),m.message.innerHTML=s,m.footer=document.createElement("div"),m.footer.classList.add("modal-footer"),m.closeButton=document.createElement("button"),m.closeButton.setAttribute("type","button"),m.closeButton.classList.add("btn","btn-outline-secondary","btn-lg"),m.closeButton.dataset.dismiss="modal",m.closeButton.innerHTML=l,m.confirmButton=document.createElement("button"),m.confirmButton.setAttribute("type","button"),m.confirmButton.classList.add("btn",h,"btn-lg","btn-confirm-submit"),m.confirmButton.dataset.dismiss="modal",m.confirmButton.innerHTML=c,i?m.header.append(m.title,m.closeIcon):m.header.appendChild(m.closeIcon),m.body.appendChild(m.message),(e=m.footer).append.apply(e,[m.closeButton].concat((0,o.default)(p),[m.confirmButton])),m.content.append(m.header,m.body,m.footer),m.dialog.appendChild(m.content),m.container.appendChild(m.dialog),m}(t),this.$modal=i(this.modal.container),this.show=function(){r.$modal.modal()},this.modal.confirmButton.addEventListener("click",e),this.$modal.modal({backdrop:!!s||"static",keyboard:void 0===s||s,closable:void 0===s||s,show:!1}),this.$modal.on("hidden.bs.modal",(function(){document.querySelector("#"+a).remove(),n&&n()})),document.body.appendChild(this.modal.container)};var i=window.$},3010:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=window.$,s=function(){function t(){(0,r.default)(this,t)}return(0,o.default)(t,[{key:"extend",value:function(t){var e=t.getContainer();e.on("click",".js-remove-helper-block",(function(t){e.remove();var n=a(t.target),r=n.data("closeUrl"),o=n.data("cardName");r&&a.post(r,{close:1,name:o})}))}}]),t}();e.default=s},50204:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(99663)),o=i(n(22600));function i(t){return t&&t.__esModule?t:{default:t}}var a=window.$,s=function(){function t(e){(0,r.default)(this,t),this.id=e,this.$container=a("#"+this.id)}return(0,o.default)(t,[{key:"getContainer",value:function(){return this.$container}},{key:"addExtension",value:function(t){t.extend(this)}}]),t}();e.default=s},24043:(t,e,n)=>{t.exports={default:n(47185),__esModule:!0}},26378:(t,e,n)=>{t.exports={default:n(3597),__esModule:!0}},40863:(t,e,n)=>{t.exports={default:n(21035),__esModule:!0}},32242:(t,e,n)=>{t.exports={default:n(33391),__esModule:!0}},99663:(t,e)=>{"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},22600:(t,e,n)=>{"use strict";e.__esModule=!0;var r,o=(r=n(32242))&&r.__esModule?r:{default:r};e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,o.default)(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},12424:(t,e,n)=>{"use strict";e.__esModule=!0;var r=i(n(40863)),o=i(n(26378));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return function(t,e){var n=[],r=!0,i=!1,a=void 0;try{for(var s,u=(0,o.default)(t);!(r=(s=u.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){i=!0,a=t}finally{try{!r&&u.return&&u.return()}finally{if(i)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},85315:(t,e,n)=>{"use strict";e.__esModule=!0;var r,o=(r=n(24043))&&r.__esModule?r:{default:r};e.default=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return(0,o.default)(t)}},47185:(t,e,n)=>{n(91867),n(2586),t.exports=n(34579).Array.from},3597:(t,e,n)=>{n(73871),n(91867),t.exports=n(46459)},21035:(t,e,n)=>{n(73871),n(91867),t.exports=n(89553)},33391:(t,e,n)=>{n(31477);var r=n(34579).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},85663:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},79003:t=>{t.exports=function(){}},12159:(t,e,n)=>{var r=n(36727);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},57428:(t,e,n)=>{var r=n(7932),o=n(78728),i=n(16531);t.exports=function(t){return function(e,n,a){var s,u=r(e),l=o(u.length),d=i(a,l);if(t&&n!=n){for(;l>d;)if((s=u[d++])!=s)return!0}else for(;l>d;d++)if((t||d in u)&&u[d]===n)return t||d||0;return!t&&-1}}},14677:(t,e,n)=>{var r=n(32894),o=n(22939)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},32894:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},34579:t=>{var e=t.exports={version:"2.6.11"};"number"==typeof __e&&(__e=e)},52445:(t,e,n)=>{"use strict";var r=n(4743),o=n(83101);t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},19216:(t,e,n)=>{var r=n(85663);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},8333:t=>{t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},89666:(t,e,n)=>{t.exports=!n(7929)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},97467:(t,e,n)=>{var r=n(36727),o=n(33938).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},73338:t=>{t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},83856:(t,e,n)=>{var r=n(33938),o=n(34579),i=n(19216),a=n(41818),s=n(27069),u=function(t,e,n){var l,d,c,f=t&u.F,h=t&u.G,v=t&u.S,p=t&u.P,m=t&u.B,g=t&u.W,b=h?o:o[e]||(o[e]={}),y=b.prototype,w=h?r:v?r[e]:(r[e]||{}).prototype;for(l in h&&(n=e),n)(d=!f&&w&&void 0!==w[l])&&s(b,l)||(c=d?w[l]:n[l],b[l]=h&&"function"!=typeof w[l]?n[l]:m&&d?i(c,r):g&&w[l]==c?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(c):p&&"function"==typeof c?i(Function.call,c):c,p&&((b.virtual||(b.virtual={}))[l]=c,t&u.R&&y&&!y[l]&&a(y,l,c)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},7929:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},33938:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},27069:t=>{var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},41818:(t,e,n)=>{var r=n(4743),o=n(83101);t.exports=n(89666)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},54881:(t,e,n)=>{var r=n(33938).document;t.exports=r&&r.documentElement},33758:(t,e,n)=>{t.exports=!n(89666)&&!n(7929)((function(){return 7!=Object.defineProperty(n(97467)("div"),"a",{get:function(){return 7}}).a}))},50799:(t,e,n)=>{var r=n(32894);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},45991:(t,e,n)=>{var r=n(15449),o=n(22939)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},36727:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},95602:(t,e,n)=>{var r=n(12159);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&r(i.call(t)),e}}},33945:(t,e,n)=>{"use strict";var r=n(98989),o=n(83101),i=n(25378),a={};n(41818)(a,n(22939)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},45700:(t,e,n)=>{"use strict";var r=n(16227),o=n(83856),i=n(57470),a=n(41818),s=n(15449),u=n(33945),l=n(25378),d=n(95089),c=n(22939)("iterator"),f=!([].keys&&"next"in[].keys()),h="keys",v="values",p=function(){return this};t.exports=function(t,e,n,m,g,b,y){u(n,e,m);var w,D,_,x=function(t){if(!f&&t in O)return O[t];switch(t){case h:case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",C=g==v,j=!1,O=t.prototype,T=O[c]||O["@@iterator"]||g&&O[g],M=T||x(g),S=g?C?x("entries"):M:void 0,P="Array"==e&&O.entries||T;if(P&&(_=d(P.call(new t)))!==Object.prototype&&_.next&&(l(_,k,!0),r||"function"==typeof _[c]||a(_,c,p)),C&&T&&T.name!==v&&(j=!0,M=function(){return T.call(this)}),r&&!y||!f&&!j&&O[c]||a(O,c,M),s[e]=M,s[k]=p,g)if(w={values:C?M:x(v),keys:b?M:x(h),entries:S},y)for(D in w)D in O||i(O,D,w[D]);else o(o.P+o.F*(f||j),e,w);return w}},96630:(t,e,n)=>{var r=n(22939)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},t(i)}catch(t){}return n}},85084:t=>{t.exports=function(t,e){return{value:e,done:!!t}}},15449:t=>{t.exports={}},16227:t=>{t.exports=!0},98989:(t,e,n)=>{var r=n(12159),o=n(57856),i=n(73338),a=n(58989)("IE_PROTO"),s=function(){},u=function(){var t,e=n(97467)("iframe"),r=i.length;for(e.style.display="none",n(54881).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),u=t.F;r--;)delete u.prototype[i[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=u(),void 0===e?n:o(n,e)}},4743:(t,e,n)=>{var r=n(12159),o=n(33758),i=n(33206),a=Object.defineProperty;e.f=n(89666)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},57856:(t,e,n)=>{var r=n(4743),o=n(12159),i=n(46162);t.exports=n(89666)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),s=a.length,u=0;s>u;)r.f(t,n=a[u++],e[n]);return t}},95089:(t,e,n)=>{var r=n(27069),o=n(66530),i=n(58989)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},12963:(t,e,n)=>{var r=n(27069),o=n(7932),i=n(57428)(!1),a=n(58989)("IE_PROTO");t.exports=function(t,e){var n,s=o(t),u=0,l=[];for(n in s)n!=a&&r(s,n)&&l.push(n);for(;e.length>u;)r(s,n=e[u++])&&(~i(l,n)||l.push(n));return l}},46162:(t,e,n)=>{var r=n(12963),o=n(73338);t.exports=Object.keys||function(t){return r(t,o)}},83101:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},57470:(t,e,n)=>{t.exports=n(41818)},25378:(t,e,n)=>{var r=n(4743).f,o=n(27069),i=n(22939)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},58989:(t,e,n)=>{var r=n(20250)("keys"),o=n(65730);t.exports=function(t){return r[t]||(r[t]=o(t))}},20250:(t,e,n)=>{var r=n(34579),o=n(33938),i="__core-js_shared__",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(16227)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},90510:(t,e,n)=>{var r=n(11052),o=n(8333);t.exports=function(t){return function(e,n){var i,a,s=String(o(e)),u=r(n),l=s.length;return u<0||u>=l?t?"":void 0:(i=s.charCodeAt(u))<55296||i>56319||u+1===l||(a=s.charCodeAt(u+1))<56320||a>57343?t?s.charAt(u):i:t?s.slice(u,u+2):a-56320+(i-55296<<10)+65536}}},16531:(t,e,n)=>{var r=n(11052),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},11052:t=>{var e=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:e)(t)}},7932:(t,e,n)=>{var r=n(50799),o=n(8333);t.exports=function(t){return r(o(t))}},78728:(t,e,n)=>{var r=n(11052),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},66530:(t,e,n)=>{var r=n(8333);t.exports=function(t){return Object(r(t))}},33206:(t,e,n)=>{var r=n(36727);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},65730:t=>{var e=0,n=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+n).toString(36))}},22939:(t,e,n)=>{var r=n(20250)("wks"),o=n(65730),i=n(33938).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},83728:(t,e,n)=>{var r=n(14677),o=n(22939)("iterator"),i=n(15449);t.exports=n(34579).getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},46459:(t,e,n)=>{var r=n(12159),o=n(83728);t.exports=n(34579).getIterator=function(t){var e=o(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},89553:(t,e,n)=>{var r=n(14677),o=n(22939)("iterator"),i=n(15449);t.exports=n(34579).isIterable=function(t){var e=Object(t);return void 0!==e[o]||"@@iterator"in e||i.hasOwnProperty(r(e))}},2586:(t,e,n)=>{"use strict";var r=n(19216),o=n(83856),i=n(66530),a=n(95602),s=n(45991),u=n(78728),l=n(52445),d=n(83728);o(o.S+o.F*!n(96630)((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,o,c,f=i(t),h="function"==typeof this?this:Array,v=arguments.length,p=v>1?arguments[1]:void 0,m=void 0!==p,g=0,b=d(f);if(m&&(p=r(p,v>2?arguments[2]:void 0,2)),null==b||h==Array&&s(b))for(n=new h(e=u(f.length));e>g;g++)l(n,g,m?p(f[g],g):f[g]);else for(c=b.call(f),n=new h;!(o=c.next()).done;g++)l(n,g,m?a(c,p,[o.value,g],!0):o.value);return n.length=g,n}})},3882:(t,e,n)=>{"use strict";var r=n(79003),o=n(85084),i=n(15449),a=n(7932);t.exports=n(45700)(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},31477:(t,e,n)=>{var r=n(83856);r(r.S+r.F*!n(89666),"Object",{defineProperty:n(4743).f})},91867:(t,e,n)=>{"use strict";var r=n(90510)(!0);n(45700)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},73871:(t,e,n)=>{n(3882);for(var r=n(33938),o=n(41818),i=n(15449),a=n(22939)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),u=0;u<s.length;u++){var l=s[u],d=r[l],c=d&&d.prototype;c&&!c[a]&&o(c,a,l),i[l]=i.Array}},73867:(t,e,n)=>{var r,o,i,a,s,u,l=n(73609);r=l,o=window,i=window.document,a="touchstart mousedown",s="touchmove mousemove",u="touchend mouseup",r(i).ready((function(){function t(t){for(var e={},n=t.match(/([^;:]+)/g)||[];n.length;)e[n.shift()]=n.shift().trim();return e}r("table").each((function(){"dnd"===r(this).data("table")&&r(this).tableDnD({onDragStyle:r(this).data("ondragstyle")&&t(r(this).data("ondragstyle"))||null,onDropStyle:r(this).data("ondropstyle")&&t(r(this).data("ondropstyle"))||null,onDragClass:void 0===r(this).data("ondragclass")?"tDnD_whileDrag":r(this).data("ondragclass"),onDrop:r(this).data("ondrop")&&new Function("table","row",r(this).data("ondrop")),onDragStart:r(this).data("ondragstart")&&new Function("table","row",r(this).data("ondragstart")),onDragStop:r(this).data("ondragstop")&&new Function("table","row",r(this).data("ondragstop")),scrollAmount:r(this).data("scrollamount")||5,sensitivity:r(this).data("sensitivity")||10,hierarchyLevel:r(this).data("hierarchylevel")||0,indentArtifact:r(this).data("indentartifact")||'<div class="indent"> </div>',autoWidthAdjust:r(this).data("autowidthadjust")||!0,autoCleanRelations:r(this).data("autocleanrelations")||!0,jsonPretifySeparator:r(this).data("jsonpretifyseparator")||"\t",serializeRegexp:r(this).data("serializeregexp")&&new RegExp(r(this).data("serializeregexp"))||/[^\-]*$/,serializeParamName:r(this).data("serializeparamname")||!1,dragHandle:r(this).data("draghandle")||null})}))})),l.tableDnD={currentTable:null,dragObject:null,mouseOffset:null,oldX:0,oldY:0,build:function(t){return this.each((function(){this.tableDnDConfig=r.extend({onDragStyle:null,onDropStyle:null,onDragClass:"tDnD_whileDrag",onDrop:null,onDragStart:null,onDragStop:null,scrollAmount:5,sensitivity:10,hierarchyLevel:0,indentArtifact:'<div class="indent"> </div>',autoWidthAdjust:!0,autoCleanRelations:!0,jsonPretifySeparator:"\t",serializeRegexp:/[^\-]*$/,serializeParamName:!1,dragHandle:null},t||{}),r.tableDnD.makeDraggable(this),this.tableDnDConfig.hierarchyLevel&&r.tableDnD.makeIndented(this)})),this},makeIndented:function(t){var e,n,o=t.tableDnDConfig,i=t.rows,a=r(i).first().find("td:first")[0],s=0,u=0;if(r(t).hasClass("indtd"))return null;n=r(t).addClass("indtd").attr("style"),r(t).css({whiteSpace:"nowrap"});for(var l=0;l<i.length;l++)u<r(i[l]).find("td:first").text().length&&(u=r(i[l]).find("td:first").text().length,e=l);for(r(a).css({width:"auto"}),l=0;l<o.hierarchyLevel;l++)r(i[e]).find("td:first").prepend(o.indentArtifact);for(a&&r(a).css({width:a.offsetWidth}),n&&r(t).css(n),l=0;l<o.hierarchyLevel;l++)r(i[e]).find("td:first").children(":first").remove();return o.hierarchyLevel&&r(i).each((function(){(s=r(this).data("level")||0)<=o.hierarchyLevel&&r(this).data("level",s)||r(this).data("level",0);for(var t=0;t<r(this).data("level");t++)r(this).find("td:first").prepend(o.indentArtifact)})),this},makeDraggable:function(t){var e=t.tableDnDConfig;e.dragHandle&&r(e.dragHandle,t).each((function(){r(this).bind(a,(function(n){return r.tableDnD.initialiseDrag(r(this).parents("tr")[0],t,this,n,e),!1}))}))||r(t.rows).each((function(){r(this).hasClass("nodrag")?r(this).css("cursor",""):r(this).bind(a,(function(n){if("TD"===n.target.tagName)return r.tableDnD.initialiseDrag(this,t,this,n,e),!1})).css("cursor","move")}))},currentOrder:function(){var t=this.currentTable.rows;return r.map(t,(function(t){return(r(t).data("level")+t.id).replace(/\s/g,"")})).join("")},initialiseDrag:function(t,e,n,o,a){this.dragObject=t,this.currentTable=e,this.mouseOffset=this.getMouseOffset(n,o),this.originalOrder=this.currentOrder(),r(i).bind(s,this.mousemove).bind(u,this.mouseup),a.onDragStart&&a.onDragStart(e,n)},updateTables:function(){this.each((function(){this.tableDnDConfig&&r.tableDnD.makeDraggable(this)}))},mouseCoords:function(t){return t.originalEvent.changedTouches?{x:t.originalEvent.changedTouches[0].clientX,y:t.originalEvent.changedTouches[0].clientY}:t.pageX||t.pageY?{x:t.pageX,y:t.pageY}:{x:t.clientX+i.body.scrollLeft-i.body.clientLeft,y:t.clientY+i.body.scrollTop-i.body.clientTop}},getMouseOffset:function(t,e){var n,r;return e=e||o.event,r=this.getPosition(t),{x:(n=this.mouseCoords(e)).x-r.x,y:n.y-r.y}},getPosition:function(t){var e=0,n=0;for(0===t.offsetHeight&&(t=t.firstChild);t.offsetParent;)e+=t.offsetLeft,n+=t.offsetTop,t=t.offsetParent;return{x:e+=t.offsetLeft,y:n+=t.offsetTop}},autoScroll:function(t){var e=this.currentTable.tableDnDConfig,n=o.pageYOffset,r=o.innerHeight?o.innerHeight:i.documentElement.clientHeight?i.documentElement.clientHeight:i.body.clientHeight;i.all&&(void 0!==i.compatMode&&"BackCompat"!==i.compatMode?n=i.documentElement.scrollTop:void 0!==i.body&&(n=i.body.scrollTop)),t.y-n<e.scrollAmount&&o.scrollBy(0,-e.scrollAmount)||r-(t.y-n)<e.scrollAmount&&o.scrollBy(0,e.scrollAmount)},moveVerticle:function(t,e){0!==t.vertical&&e&&this.dragObject!==e&&this.dragObject.parentNode===e.parentNode&&(0>t.vertical&&this.dragObject.parentNode.insertBefore(this.dragObject,e.nextSibling)||0<t.vertical&&this.dragObject.parentNode.insertBefore(this.dragObject,e))},moveHorizontal:function(t,e){var n,o=this.currentTable.tableDnDConfig;if(!o.hierarchyLevel||0===t.horizontal||!e||this.dragObject!==e)return null;n=r(e).data("level"),0<t.horizontal&&n>0&&r(e).find("td:first").children(":first").remove()&&r(e).data("level",--n),0>t.horizontal&&n<o.hierarchyLevel&&r(e).prev().data("level")>=n&&r(e).children(":first").prepend(o.indentArtifact)&&r(e).data("level",++n)},mousemove:function(t){var e,n,o,i,a,s=r(r.tableDnD.dragObject),u=r.tableDnD.currentTable.tableDnDConfig;return t&&t.preventDefault(),!!r.tableDnD.dragObject&&("touchmove"===t.type&&event.preventDefault(),u.onDragClass&&s.addClass(u.onDragClass)||s.css(u.onDragStyle),i=(n=r.tableDnD.mouseCoords(t)).x-r.tableDnD.mouseOffset.x,a=n.y-r.tableDnD.mouseOffset.y,r.tableDnD.autoScroll(n),e=r.tableDnD.findDropTargetRow(s,a),o=r.tableDnD.findDragDirection(i,a),r.tableDnD.moveVerticle(o,e),r.tableDnD.moveHorizontal(o,e),!1)},findDragDirection:function(t,e){var n=this.currentTable.tableDnDConfig.sensitivity,r=this.oldX,o=this.oldY,i={horizontal:t>=r-n&&t<=r+n?0:t>r?-1:1,vertical:e>=o-n&&e<=o+n?0:e>o?-1:1};return 0!==i.horizontal&&(this.oldX=t),0!==i.vertical&&(this.oldY=e),i},findDropTargetRow:function(t,e){for(var n=0,o=this.currentTable.rows,i=this.currentTable.tableDnDConfig,a=0,s=null,u=0;u<o.length;u++)if(s=o[u],a=this.getPosition(s).y,n=parseInt(s.offsetHeight)/2,0===s.offsetHeight&&(a=this.getPosition(s.firstChild).y,n=parseInt(s.firstChild.offsetHeight)/2),e>a-n&&e<a+n)return t.is(s)||i.onAllowDrop&&!i.onAllowDrop(t,s)||r(s).hasClass("nodrop")?null:s;return null},processMouseup:function(){if(!this.currentTable||!this.dragObject)return null;var t=this.currentTable.tableDnDConfig,e=this.dragObject,n=0,o=0;r(i).unbind(s,this.mousemove).unbind(u,this.mouseup),t.hierarchyLevel&&t.autoCleanRelations&&r(this.currentTable.rows).first().find("td:first").children().each((function(){(o=r(this).parents("tr:first").data("level"))&&r(this).parents("tr:first").data("level",--o)&&r(this).remove()}))&&t.hierarchyLevel>1&&r(this.currentTable.rows).each((function(){if((o=r(this).data("level"))>1)for(n=r(this).prev().data("level");o>n+1;)r(this).find("td:first").children(":first").remove(),r(this).data("level",--o)})),t.onDragClass&&r(e).removeClass(t.onDragClass)||r(e).css(t.onDropStyle),this.dragObject=null,t.onDrop&&this.originalOrder!==this.currentOrder()&&r(e).hide().fadeIn("fast")&&t.onDrop(this.currentTable,e),t.onDragStop&&t.onDragStop(this.currentTable,e),this.currentTable=null},mouseup:function(t){return t&&t.preventDefault(),r.tableDnD.processMouseup(),!1},jsonize:function(t){var e=this.currentTable;return t?JSON.stringify(this.tableData(e),null,e.tableDnDConfig.jsonPretifySeparator):JSON.stringify(this.tableData(e))},serialize:function(){return r.param(this.tableData(this.currentTable))},serializeTable:function(t){for(var e="",n=t.tableDnDConfig.serializeParamName||t.id,r=t.rows,o=0;o<r.length;o++){e.length>0&&(e+="&");var i=r[o].id;i&&t.tableDnDConfig&&t.tableDnDConfig.serializeRegexp&&(e+=n+"[]="+(i=i.match(t.tableDnDConfig.serializeRegexp)[0]))}return e},serializeTables:function(){var t=[];return r("table").each((function(){this.id&&t.push(r.param(r.tableDnD.tableData(this)))})),t.join("&")},tableData:function(t){var e,n,o,i,a=t.tableDnDConfig,s=[],u=0,l=0,d=null,c={};if(t||(t=this.currentTable),!t||!t.rows||!t.rows.length)return{error:{code:500,message:"Not a valid table."}};if(!t.id&&!a.serializeParamName)return{error:{code:500,message:"No serializable unique id provided."}};i=a.autoCleanRelations&&t.rows||r.makeArray(t.rows),e=function(t){return t&&a&&a.serializeRegexp?t.match(a.serializeRegexp)[0]:t},c[o=n=a.serializeParamName||t.id]=[],!a.autoCleanRelations&&r(i[0]).data("level")&&i.unshift({id:"undefined"});for(var f=0;f<i.length;f++)if(a.hierarchyLevel){if(0===(l=r(i[f]).data("level")||0))o=n,s=[];else if(l>u)s.push([o,u]),o=e(i[f-1].id);else if(l<u)for(var h=0;h<s.length;h++)s[h][1]===l&&(o=s[h][0]),s[h][1]>=u&&(s[h][1]=0);u=l,r.isArray(c[o])||(c[o]=[]),(d=e(i[f].id))&&c[o].push(d)}else(d=e(i[f].id))&&c[o].push(d);return c}},l.fn.extend({tableDnD:r.tableDnD.build,tableDnDUpdate:r.tableDnD.updateTables,tableDnDSerialize:r.proxy(r.tableDnD.serialize,r.tableDnD),tableDnDSerializeAll:r.tableDnD.serializeTables,tableDnDData:r.proxy(r.tableDnD.tableData,r.tableDnD)})},73609:t=>{"use strict";t.exports=window.jQuery}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r](i,i.exports,n),i.exports}(()=>{"use strict";var t=p(n(50204)),e=p(n(3010)),r=p(n(53277)),o=p(n(58630)),i=p(n(96803)),a=p(n(37758)),s=p(n(4499)),u=p(n(91781)),l=p(n(17868)),d=p(n(5595)),c=p(n(2573)),f=p(n(91137)),h=p(n(58899)),v=p(n(92448));function p(t){return t&&t.__esModule?t:{default:t}}(0,window.$)((function(){var n=new r.default("carrier");n.addExtension(new o.default),n.addExtension(new a.default),n.addExtension(new v.default),n.addExtension(new f.default),n.addExtension(new i.default),n.addExtension(new c.default),n.addExtension(new s.default),n.addExtension(new h.default),n.addExtension(new u.default),n.addExtension(new l.default),n.addExtension(new d.default),new t.default("carriersShowcaseCard").addExtension(new e.default)}))})(),window.carrier={}})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvdXRpbHMvcmVzZXRfc2VhcmNoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2FwcC91dGlscy90YWJsZS1zb3J0aW5nLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vYWN0aW9uL3Jvdy9zdWJtaXQtcm93LWFjdGlvbi1leHRlbnNpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9idWxrLWFjdGlvbi1jaGVja2JveC1leHRlbnNpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9jb2x1bW4tdG9nZ2xpbmctZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vZXhwb3J0LXRvLXNxbC1tYW5hZ2VyLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2ZpbHRlcnMtcmVzZXQtZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vZmlsdGVycy1zdWJtaXQtYnV0dG9uLWVuYWJsZXItZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vbGluay1yb3ctYWN0aW9uLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3Bvc2l0aW9uLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3JlbG9hZC1saXN0LWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3NvcnRpbmctZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vc3VibWl0LWJ1bGstYWN0aW9uLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZ3JpZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL21vZGFsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvc2hvd2Nhc2UtY2FyZC9leHRlbnNpb24vc2hvd2Nhc2UtY2FyZC1jbG9zZS1leHRlbnNpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9zaG93Y2FzZS1jYXJkL3Nob3djYXNlLWNhcmQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9hcnJheS9mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvZ2V0LWl0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvaXMtaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb20uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9pcy1pdGVyYWJsZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYWRkLXRvLXVuc2NvcGFibGVzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jbGFzc29mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZmFpbHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNhbGwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZXRlY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLXN0ZXAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyYXRvcnMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19saWJyYXJ5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuaXMtaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy90YWJsZWRuZC9kaXN0L2pxdWVyeS50YWJsZWRuZC5taW4uanMiLCJ3ZWJwYWNrOi8vW25hbWVdL2V4dGVybmFsIFwialF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL1tuYW1lXS8uL2pzL3BhZ2VzL2NhcnJpZXIvaW5kZXguanMiXSwibmFtZXMiOlsiJCIsIndpbmRvdyIsInVybCIsInJlZGlyZWN0VXJsIiwicG9zdCIsInRoZW4iLCJsb2NhdGlvbiIsImFzc2lnbiIsIlRhYmxlU29ydGluZyIsInRhYmxlIiwidGhpcyIsInNlbGVjdG9yIiwiY29sdW1ucyIsImZpbmQiLCJvbiIsImUiLCIkY29sdW1uIiwiZGVsZWdhdGVUYXJnZXQiLCJzb3J0QnlDb2x1bW4iLCJnZXRUb2dnbGVkU29ydERpcmVjdGlvbiIsImNvbHVtbk5hbWUiLCJkaXJlY3Rpb24iLCJpcyIsIkVycm9yIiwiY29sdW1uIiwiZ2V0VXJsIiwiZGF0YSIsImNvbE5hbWUiLCJwcmVmaXgiLCJVUkwiLCJocmVmIiwicGFyYW1zIiwic2VhcmNoUGFyYW1zIiwic2V0IiwidG9TdHJpbmciLCJTdWJtaXRSb3dBY3Rpb25FeHRlbnNpb24iLCJncmlkIiwiZ2V0Q29udGFpbmVyIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsIiRidXR0b24iLCJjdXJyZW50VGFyZ2V0IiwiY29uZmlybU1lc3NhZ2UiLCJjb25maXJtVGl0bGUiLCJtZXRob2QiLCJzaG93Q29uZmlybU1vZGFsIiwibGVuZ3RoIiwiY29uZmlybSIsInBvc3RGb3JtIiwiaXNHZXRPclBvc3RNZXRob2QiLCJpbmNsdWRlcyIsIiRmb3JtIiwiYWN0aW9uIiwiYXBwZW5kVG8iLCJhcHBlbmQiLCJ0eXBlIiwibmFtZSIsInZhbHVlIiwic3VibWl0IiwiJHN1Ym1pdEJ0biIsImNvbmZpcm1CdXR0b25MYWJlbCIsImNsb3NlQnV0dG9uTGFiZWwiLCJjb25maXJtQnV0dG9uQ2xhc3MiLCJDb25maXJtTW9kYWwiLCJpZCIsImdldElkIiwic2hvdyIsIkJ1bGtBY3Rpb25DaGVja2JveEV4dGVuc2lvbiIsImhhbmRsZUJ1bGtBY3Rpb25DaGVja2JveFNlbGVjdCIsImhhbmRsZUJ1bGtBY3Rpb25TZWxlY3RBbGxDaGVja2JveCIsImlzQ2hlY2tlZCIsImVuYWJsZUJ1bGtBY3Rpb25zQnRuIiwiZGlzYWJsZUJ1bGtBY3Rpb25zQnRuIiwicHJvcCIsIkNvbHVtblRvZ2dsaW5nRXh0ZW5zaW9uIiwidG9nZ2xlVmFsdWUiLCJyb3ciLCJ0b2dnbGVVcmwiLCJzdWJtaXRBc0Zvcm0iLCJFeHBvcnRUb1NxbE1hbmFnZXJFeHRlbnNpb24iLCJnZXRIZWFkZXJDb250YWluZXIiLCJvblNob3dTcWxRdWVyeUNsaWNrIiwib25FeHBvcnRTcWxNYW5hZ2VyQ2xpY2siLCIkc3FsTWFuYWdlckZvcm0iLCJmaWxsRXhwb3J0Rm9ybSIsIiRtb2RhbCIsIm1vZGFsIiwicXVlcnkiLCJ2YWwiLCJnZXROYW1lRnJvbUJyZWFkY3J1bWIiLCIkYnJlYWRjcnVtYnMiLCJlYWNoIiwiaSIsIml0ZW0iLCIkYnJlYWRjcnVtYiIsImJyZWFkY3J1bWJUaXRsZSIsInRleHQiLCJjb25jYXQiLCJGaWx0ZXJzUmVzZXRFeHRlbnNpb24iLCJGaWx0ZXJzU3VibWl0QnV0dG9uRW5hYmxlckV4dGVuc2lvbiIsIiRmaWx0ZXJzUm93IiwiTGlua1Jvd0FjdGlvbkV4dGVuc2lvbiIsImluaXRSb3dMaW5rcyIsImluaXRDb25maXJtYWJsZUFjdGlvbnMiLCIkcGFyZW50Um93IiwiJHJvd0FjdGlvbiIsIiRwYXJlbnRDZWxsIiwiY2xvc2VzdCIsImNsaWNrYWJsZUNlbGxzIiwibm90IiwiaXNEcmFnZ2luZyIsImFkZENsYXNzIiwibW91c2Vkb3duIiwibW91c2Vtb3ZlIiwidW5iaW5kIiwibW91c2V1cCIsIndhc0RyYWdnaW5nIiwiZG9jdW1lbnQiLCJhdHRyIiwiUG9zaXRpb25FeHRlbnNpb24iLCJleHRlbmQiLCJhZGRJZHNUb0dyaWRUYWJsZVJvd3MiLCJ0YWJsZURuRCIsIm9uRHJhZ0NsYXNzIiwiZHJhZ0hhbmRsZSIsIm9uRHJvcCIsImhhbmRsZVBvc2l0aW9uQ2hhbmdlIiwiaG92ZXIiLCJyZW1vdmVDbGFzcyIsIiRyb3dQb3NpdGlvbkNvbnRhaW5lciIsInVwZGF0ZVVybCIsInBvc2l0aW9ucyIsImdldFJvd3NQb3NpdGlvbnMiLCJ1cGRhdGVQb3NpdGlvbiIsInJvd3NEYXRhIiwiSlNPTiIsInBhcnNlIiwianNvbml6ZSIsImNvbXBsZXRlUm93c0RhdGEiLCJ0ckRhdGEiLCJwdXNoIiwicm93TWFya2VyIiwib2Zmc2V0IiwiY29tcHV0ZU1hcHBpbmdCZXR3ZWVuT2xkQW5kTmV3UG9zaXRpb25zIiwiY291bnRlciIsImluZGV4IiwicG9zaXRpb25XcmFwcGVyIiwiJHBvc2l0aW9uV3JhcHBlciIsInBvc2l0aW9uc05iIiwicG9zaXRpb24iLCJyb3dJZCIsIm9sZFBvc2l0aW9uIiwibmV3UG9zaXRpb24iLCJyZWdleCIsIm1hcHBpbmciLCJBcnJheSIsImZpbGwiLCJtYXAiLCJPYmplY3QiLCJleGVjIiwicGFyc2VJbnQiLCJSZWxvYWRMaXN0RXh0ZW5zaW9uIiwicmVsb2FkIiwiU29ydGluZ0V4dGVuc2lvbiIsIiRzb3J0YWJsZVRhYmxlIiwiYXR0YWNoIiwiU3VibWl0QnVsa0FjdGlvbkV4dGVuc2lvbiIsInVuZGVmaW5lZCIsIkdyaWQiLCIkY29udGFpbmVyIiwiZXh0ZW5zaW9uIiwiY29uZmlybUNhbGxiYWNrIiwiY2FuY2VsQ2FsbGJhY2siLCJjbG9zYWJsZSIsImN1c3RvbUJ1dHRvbnMiLCJjb250YWluZXIiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiZGlhbG9nIiwiY29udGVudCIsImhlYWRlciIsInRpdGxlIiwiaW5uZXJIVE1MIiwiY2xvc2VJY29uIiwic2V0QXR0cmlidXRlIiwiZGF0YXNldCIsImRpc21pc3MiLCJib2R5IiwibWVzc2FnZSIsImZvb3RlciIsImNsb3NlQnV0dG9uIiwiY29uZmlybUJ1dHRvbiIsImFwcGVuZENoaWxkIiwiTW9kYWwiLCJhZGRFdmVudExpc3RlbmVyIiwiYmFja2Ryb3AiLCJrZXlib2FyZCIsInF1ZXJ5U2VsZWN0b3IiLCJyZW1vdmUiLCJTaG93Y2FzZUNhcmRDbG9zZUV4dGVuc2lvbiIsImhlbHBlckJsb2NrIiwiZXZ0IiwiJGJ0biIsInRhcmdldCIsImNhcmROYW1lIiwiY2xvc2UiLCJTaG93Y2FzZUNhcmQiLCJtb2R1bGUiLCJleHBvcnRzIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwib2JqIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJrZXkiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJwcm90b3R5cGUiLCJfaXNJdGVyYWJsZTMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2dldEl0ZXJhdG9yMyIsImFyciIsImlzQXJyYXkiLCJfYXJyIiwiX24iLCJfZCIsIl9lIiwiX3MiLCJfaSIsIm5leHQiLCJkb25lIiwiZXJyIiwic2xpY2VJdGVyYXRvciIsIl9mcm9tMiIsImFycjIiLCIkT2JqZWN0IiwiaXQiLCJkZXNjIiwiZGVmaW5lUHJvcGVydHkiLCJpc09iamVjdCIsInRvSU9iamVjdCIsInRvTGVuZ3RoIiwidG9BYnNvbHV0ZUluZGV4IiwiSVNfSU5DTFVERVMiLCIkdGhpcyIsImVsIiwiZnJvbUluZGV4IiwiTyIsImNvZiIsIlRBRyIsIkFSRyIsImFyZ3VtZW50cyIsIlQiLCJCIiwidHJ5R2V0IiwiY2FsbGVlIiwiY2FsbCIsInNsaWNlIiwiY29yZSIsInZlcnNpb24iLCJfX2UiLCIkZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVEZXNjIiwib2JqZWN0IiwiZiIsImFGdW5jdGlvbiIsImZuIiwidGhhdCIsImEiLCJiIiwiYyIsImFwcGx5IiwiZ2V0Iiwic3BsaXQiLCJnbG9iYWwiLCJjdHgiLCJoaWRlIiwiaGFzIiwiJGV4cG9ydCIsInNvdXJjZSIsIm93biIsIm91dCIsIklTX0ZPUkNFRCIsIkYiLCJJU19HTE9CQUwiLCJHIiwiSVNfU1RBVElDIiwiUyIsIklTX1BST1RPIiwiUCIsIklTX0JJTkQiLCJJU19XUkFQIiwiVyIsImV4cFByb3RvIiwiQyIsIkZ1bmN0aW9uIiwidmlydHVhbCIsIlIiLCJVIiwiTWF0aCIsInNlbGYiLCJfX2ciLCJoYXNPd25Qcm9wZXJ0eSIsImRQIiwiZG9jdW1lbnRFbGVtZW50IiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJJdGVyYXRvcnMiLCJJVEVSQVRPUiIsIkFycmF5UHJvdG8iLCJhbk9iamVjdCIsIml0ZXJhdG9yIiwiZW50cmllcyIsInJldCIsImNyZWF0ZSIsInNldFRvU3RyaW5nVGFnIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJOQU1FIiwiTElCUkFSWSIsInJlZGVmaW5lIiwiJGl0ZXJDcmVhdGUiLCJnZXRQcm90b3R5cGVPZiIsIkJVR0dZIiwia2V5cyIsIktFWVMiLCJWQUxVRVMiLCJyZXR1cm5UaGlzIiwiQmFzZSIsIkRFRkFVTFQiLCJJU19TRVQiLCJGT1JDRUQiLCJtZXRob2RzIiwiZ2V0TWV0aG9kIiwia2luZCIsInByb3RvIiwiREVGX1ZBTFVFUyIsIlZBTFVFU19CVUciLCIkbmF0aXZlIiwiJGRlZmF1bHQiLCIkZW50cmllcyIsIiRhbnlOYXRpdmUiLCJ2YWx1ZXMiLCJTQUZFX0NMT1NJTkciLCJyaXRlciIsImZyb20iLCJza2lwQ2xvc2luZyIsInNhZmUiLCJpdGVyIiwiZFBzIiwiZW51bUJ1Z0tleXMiLCJJRV9QUk9UTyIsIkVtcHR5IiwiY3JlYXRlRGljdCIsImlmcmFtZURvY3VtZW50IiwiaWZyYW1lIiwic3R5bGUiLCJkaXNwbGF5Iiwic3JjIiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJ3cml0ZSIsImx0IiwiUHJvcGVydGllcyIsInJlc3VsdCIsIklFOF9ET01fREVGSU5FIiwidG9QcmltaXRpdmUiLCJBdHRyaWJ1dGVzIiwiZ2V0S2V5cyIsInRvT2JqZWN0IiwiT2JqZWN0UHJvdG8iLCJjb25zdHJ1Y3RvciIsImFycmF5SW5kZXhPZiIsIm5hbWVzIiwiJGtleXMiLCJiaXRtYXAiLCJkZWYiLCJ0YWciLCJzdGF0Iiwic2hhcmVkIiwidWlkIiwiU0hBUkVEIiwic3RvcmUiLCJtb2RlIiwiY29weXJpZ2h0IiwidG9JbnRlZ2VyIiwiZGVmaW5lZCIsIlRPX1NUUklORyIsInBvcyIsInMiLCJTdHJpbmciLCJsIiwiY2hhckNvZGVBdCIsImNoYXJBdCIsIm1heCIsIm1pbiIsImNlaWwiLCJmbG9vciIsImlzTmFOIiwiSU9iamVjdCIsInZhbHVlT2YiLCJweCIsInJhbmRvbSIsIlN5bWJvbCIsIlVTRV9TWU1CT0wiLCJjbGFzc29mIiwiaXRlckZuIiwiaXNBcnJheUl0ZXIiLCJjcmVhdGVQcm9wZXJ0eSIsImdldEl0ZXJGbiIsImFycmF5TGlrZSIsInN0ZXAiLCJhTGVuIiwibWFwZm4iLCJhZGRUb1Vuc2NvcGFibGVzIiwiaXRlcmF0ZWQiLCJfdCIsIl9rIiwiQXJndW1lbnRzIiwiJGF0IiwicG9pbnQiLCJUT19TVFJJTkdfVEFHIiwiRE9NSXRlcmFibGVzIiwiQ29sbGVjdGlvbiIsImciLCJqUXVlcnkiLCJyZWFkeSIsIm1hdGNoIiwic2hpZnQiLCJ0cmltIiwib25EcmFnU3R5bGUiLCJvbkRyb3BTdHlsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnU3RvcCIsInNjcm9sbEFtb3VudCIsInNlbnNpdGl2aXR5IiwiaGllcmFyY2h5TGV2ZWwiLCJpbmRlbnRBcnRpZmFjdCIsImF1dG9XaWR0aEFkanVzdCIsImF1dG9DbGVhblJlbGF0aW9ucyIsImpzb25QcmV0aWZ5U2VwYXJhdG9yIiwic2VyaWFsaXplUmVnZXhwIiwiUmVnRXhwIiwic2VyaWFsaXplUGFyYW1OYW1lIiwiY3VycmVudFRhYmxlIiwiZHJhZ09iamVjdCIsIm1vdXNlT2Zmc2V0Iiwib2xkWCIsIm9sZFkiLCJidWlsZCIsInRhYmxlRG5EQ29uZmlnIiwibWFrZURyYWdnYWJsZSIsIm1ha2VJbmRlbnRlZCIsImQiLCJyb3dzIiwiZmlyc3QiLCJoIiwiaGFzQ2xhc3MiLCJjc3MiLCJ3aGl0ZVNwYWNlIiwiaiIsIndpZHRoIiwicHJlcGVuZCIsIm9mZnNldFdpZHRoIiwiY2hpbGRyZW4iLCJiaW5kIiwiaW5pdGlhbGlzZURyYWciLCJwYXJlbnRzIiwidGFnTmFtZSIsImN1cnJlbnRPcmRlciIsInJlcGxhY2UiLCJqb2luIiwiZ2V0TW91c2VPZmZzZXQiLCJvcmlnaW5hbE9yZGVyIiwidXBkYXRlVGFibGVzIiwibW91c2VDb29yZHMiLCJvcmlnaW5hbEV2ZW50IiwiY2hhbmdlZFRvdWNoZXMiLCJ4IiwiY2xpZW50WCIsInkiLCJjbGllbnRZIiwicGFnZVgiLCJwYWdlWSIsInNjcm9sbExlZnQiLCJjbGllbnRMZWZ0Iiwic2Nyb2xsVG9wIiwiY2xpZW50VG9wIiwiZ2V0UG9zaXRpb24iLCJvZmZzZXRIZWlnaHQiLCJmaXJzdENoaWxkIiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsImF1dG9TY3JvbGwiLCJwYWdlWU9mZnNldCIsImlubmVySGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiYWxsIiwiY29tcGF0TW9kZSIsInNjcm9sbEJ5IiwibW92ZVZlcnRpY2xlIiwidmVydGljYWwiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJtb3ZlSG9yaXpvbnRhbCIsImhvcml6b250YWwiLCJwcmV2IiwiZmluZERyb3BUYXJnZXRSb3ciLCJmaW5kRHJhZ0RpcmVjdGlvbiIsIm9uQWxsb3dEcm9wIiwicHJvY2Vzc01vdXNldXAiLCJmYWRlSW4iLCJzdHJpbmdpZnkiLCJ0YWJsZURhdGEiLCJzZXJpYWxpemUiLCJwYXJhbSIsInNlcmlhbGl6ZVRhYmxlIiwic2VyaWFsaXplVGFibGVzIiwiayIsImVycm9yIiwiY29kZSIsIm1ha2VBcnJheSIsInVuc2hpZnQiLCJtIiwibiIsInRhYmxlRG5EVXBkYXRlIiwidGFibGVEbkRTZXJpYWxpemUiLCJwcm94eSIsInRhYmxlRG5EU2VyaWFsaXplQWxsIiwidGFibGVEbkREYXRhIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImNhcnJpZXJHcmlkIiwiYWRkRXh0ZW5zaW9uIiwiUmVsb2FkTGlzdEFjdGlvbkV4dGVuc2lvbiIsIlN1Ym1pdEJ1bGtFeHRlbnNpb24iXSwibWFwcGluZ3MiOiI7NEZBNkJPQSxFQUFLQyxPQUFMRCxFLFVBRU0sU0FBcUJFLEVBQUtDLEdBQ3JDSCxFQUFFSSxLQUFLRixHQUFLRyxNQUFLLGtCQUFNSixPQUFPSyxTQUFTQyxPQUFPSixRLHFLQ1B6Q0gsRUFBS0MsT0FBTEQsRUFNRFEsRSxXQUlKLFdBQVlDLElBQU8scUJBQ2pCQyxLQUFLQyxTQUFXLHNCQUNoQkQsS0FBS0UsUUFBVVosRUFBRVMsR0FBT0ksS0FBS0gsS0FBS0MsVSxzREFNM0IsV0FDUEQsS0FBS0UsUUFBUUUsR0FBRyxTQUFTLFNBQUNDLEdBQ3hCLElBQU1DLEVBQVVoQixFQUFFZSxFQUFFRSxnQkFDcEIsRUFBS0MsYUFBYUYsRUFBUyxFQUFLRyx3QkFBd0JILFMsNkJBU3JESSxFQUFZQyxHQUNqQixJQUFNTCxFQUFVTixLQUFLRSxRQUFRVSxHQUFiLHdCQUF3Q0YsRUFBeEMsTUFFaEIsSUFBS0osRUFDSCxNQUFNLElBQUlPLE1BQUosbUJBQTZCSCxFQUE3QixxQkFHUlYsS0FBS1EsYUFBYUYsRUFBU0ssSyxtQ0FTaEJHLEVBQVFILEdBQ25CcEIsT0FBT0ssU0FBV0ksS0FBS2UsT0FDckJELEVBQU9FLEtBQUssZUFDRyxTQUFkTCxFQUF3QixPQUFT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SUFBSTliLFdBQzdCNmIsRUFBWUMsYUFBYSxJQUFJL2IsV0FDN0I4YixFQUFZQyxhQUFhLElBQUlsZCxXQUM3QmlkLEVBQVlDLGFBQWEsSUFBSXZkLFdBQzdCc2QsRUFBWUMsYUFBYSxJQUFJNWIsV0FDN0IyYixFQUFZQyxhQUFhLElBQUk5ZixXQUM3QjZmLEVBQVlDLGFBQWEsSUFBSUUsV0FDN0JILEVBQVlDLGFBQWEsSUFBSTlkLFdBRVIsSUFBSTRJLFVBQWEsd0JBQ3pCa1YsYUFBYSxJQUFJelYsZSIsImZpbGUiOiJjYXJyaWVyLmJ1bmRsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuLyoqXG4gKiBTZW5kIGEgUG9zdCBSZXF1ZXN0IHRvIHJlc2V0IHNlYXJjaCBBY3Rpb24uXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG5jb25zdCBpbml0ID0gZnVuY3Rpb24gcmVzZXRTZWFyY2godXJsLCByZWRpcmVjdFVybCkge1xuICAkLnBvc3QodXJsKS50aGVuKCgpID0+IHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24ocmVkaXJlY3RVcmwpKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGluaXQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBNYWtlcyBhIHRhYmxlIHNvcnRhYmxlIGJ5IGNvbHVtbnMuXG4gKiBUaGlzIGZvcmNlcyBhIHBhZ2UgcmVsb2FkIHdpdGggbW9yZSBxdWVyeSBwYXJhbWV0ZXJzLlxuICovXG5jbGFzcyBUYWJsZVNvcnRpbmcge1xuICAvKipcbiAgICogQHBhcmFtIHtqUXVlcnl9IHRhYmxlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0YWJsZSkge1xuICAgIHRoaXMuc2VsZWN0b3IgPSAnLnBzLXNvcnRhYmxlLWNvbHVtbic7XG4gICAgdGhpcy5jb2x1bW5zID0gJCh0YWJsZSkuZmluZCh0aGlzLnNlbGVjdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyB0aGUgbGlzdGVuZXJzXG4gICAqL1xuICBhdHRhY2goKSB7XG4gICAgdGhpcy5jb2x1bW5zLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICBjb25zdCAkY29sdW1uID0gJChlLmRlbGVnYXRlVGFyZ2V0KTtcbiAgICAgIHRoaXMuc29ydEJ5Q29sdW1uKCRjb2x1bW4sIHRoaXMuZ2V0VG9nZ2xlZFNvcnREaXJlY3Rpb24oJGNvbHVtbikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgdXNpbmcgYSBjb2x1bW4gbmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sdW1uTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIFwiYXNjXCIgb3IgXCJkZXNjXCJcbiAgICovXG4gIHNvcnRCeShjb2x1bW5OYW1lLCBkaXJlY3Rpb24pIHtcbiAgICBjb25zdCAkY29sdW1uID0gdGhpcy5jb2x1bW5zLmlzKGBbZGF0YS1zb3J0LWNvbC1uYW1lPVwiJHtjb2x1bW5OYW1lfVwiXWApO1xuXG4gICAgaWYgKCEkY29sdW1uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzb3J0IGJ5IFwiJHtjb2x1bW5OYW1lfVwiOiBpbnZhbGlkIGNvbHVtbmApO1xuICAgIH1cblxuICAgIHRoaXMuc29ydEJ5Q29sdW1uKCRjb2x1bW4sIGRpcmVjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogU29ydCB1c2luZyBhIGNvbHVtbiBlbGVtZW50XG4gICAqIEBwYXJhbSB7alF1ZXJ5fSBjb2x1bW5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvbiBcImFzY1wiIG9yIFwiZGVzY1wiXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzb3J0QnlDb2x1bW4oY29sdW1uLCBkaXJlY3Rpb24pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSB0aGlzLmdldFVybChcbiAgICAgIGNvbHVtbi5kYXRhKCdzb3J0Q29sTmFtZScpLFxuICAgICAgKGRpcmVjdGlvbiA9PT0gJ2Rlc2MnKSA/ICdkZXNjJyA6ICdhc2MnLFxuICAgICAgY29sdW1uLmRhdGEoJ3NvcnRQcmVmaXgnKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGludmVydGVkIGRpcmVjdGlvbiB0byBzb3J0IGFjY29yZGluZyB0byB0aGUgY29sdW1uJ3MgY3VycmVudCBvbmVcbiAgICogQHBhcmFtIHtqUXVlcnl9IGNvbHVtblxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRUb2dnbGVkU29ydERpcmVjdGlvbihjb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmRhdGEoJ3NvcnREaXJlY3Rpb24nKSA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB1cmwgZm9yIHRoZSBzb3J0ZWQgdGFibGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4XG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGdldFVybChjb2xOYW1lLCBkaXJlY3Rpb24sIHByZWZpeCkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHVybC5zZWFyY2hQYXJhbXM7XG5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICBwYXJhbXMuc2V0KGAke3ByZWZpeH1bb3JkZXJCeV1gLCBjb2xOYW1lKTtcbiAgICAgIHBhcmFtcy5zZXQoYCR7cHJlZml4fVtzb3J0T3JkZXJdYCwgZGlyZWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zLnNldCgnb3JkZXJCeScsIGNvbE5hbWUpO1xuICAgICAgcGFyYW1zLnNldCgnc29ydE9yZGVyJywgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGFibGVTb3J0aW5nO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgQ29uZmlybU1vZGFsIGZyb20gJ0Bjb21wb25lbnRzL21vZGFsJztcblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIENsYXNzIFN1Ym1pdFJvd0FjdGlvbkV4dGVuc2lvbiBoYW5kbGVzIHN1Ym1pdHRpbmcgb2Ygcm93IGFjdGlvblxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJtaXRSb3dBY3Rpb25FeHRlbnNpb24ge1xuICAvKipcbiAgICogRXh0ZW5kIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkub24oJ2NsaWNrJywgJy5qcy1zdWJtaXQtcm93LWFjdGlvbicsIChldmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgY29uc3QgJGJ1dHRvbiA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICBjb25zdCBjb25maXJtTWVzc2FnZSA9ICRidXR0b24uZGF0YSgnY29uZmlybU1lc3NhZ2UnKTtcbiAgICAgIGNvbnN0IGNvbmZpcm1UaXRsZSA9ICRidXR0b24uZGF0YSgndGl0bGUnKTtcblxuICAgICAgY29uc3QgbWV0aG9kID0gJGJ1dHRvbi5kYXRhKCdtZXRob2QnKTtcblxuICAgICAgaWYgKGNvbmZpcm1UaXRsZSkge1xuICAgICAgICB0aGlzLnNob3dDb25maXJtTW9kYWwoJGJ1dHRvbiwgZ3JpZCwgY29uZmlybU1lc3NhZ2UsIGNvbmZpcm1UaXRsZSwgbWV0aG9kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjb25maXJtTWVzc2FnZS5sZW5ndGggJiYgIXdpbmRvdy5jb25maXJtKGNvbmZpcm1NZXNzYWdlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9zdEZvcm0oJGJ1dHRvbiwgbWV0aG9kKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHBvc3RGb3JtKCRidXR0b24sIG1ldGhvZCkge1xuICAgIGNvbnN0IGlzR2V0T3JQb3N0TWV0aG9kID0gWydHRVQnLCAnUE9TVCddLmluY2x1ZGVzKG1ldGhvZCk7XG5cbiAgICBjb25zdCAkZm9ybSA9ICQoJzxmb3JtPicsIHtcbiAgICAgIGFjdGlvbjogJGJ1dHRvbi5kYXRhKCd1cmwnKSxcbiAgICAgIG1ldGhvZDogaXNHZXRPclBvc3RNZXRob2QgPyBtZXRob2QgOiAnUE9TVCcsXG4gICAgfSkuYXBwZW5kVG8oJ2JvZHknKTtcblxuICAgIGlmICghaXNHZXRPclBvc3RNZXRob2QpIHtcbiAgICAgICRmb3JtLmFwcGVuZCgkKCc8aW5wdXQ+Jywge1xuICAgICAgICB0eXBlOiAnX2hpZGRlbicsXG4gICAgICAgIG5hbWU6ICdfbWV0aG9kJyxcbiAgICAgICAgdmFsdWU6IG1ldGhvZCxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAkZm9ybS5zdWJtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJHN1Ym1pdEJ0blxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpcm1NZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb25maXJtVGl0bGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZFxuICAgKi9cbiAgc2hvd0NvbmZpcm1Nb2RhbCgkc3VibWl0QnRuLCBncmlkLCBjb25maXJtTWVzc2FnZSwgY29uZmlybVRpdGxlLCBtZXRob2QpIHtcbiAgICBjb25zdCBjb25maXJtQnV0dG9uTGFiZWwgPSAkc3VibWl0QnRuLmRhdGEoJ2NvbmZpcm1CdXR0b25MYWJlbCcpO1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uTGFiZWwgPSAkc3VibWl0QnRuLmRhdGEoJ2Nsb3NlQnV0dG9uTGFiZWwnKTtcbiAgICBjb25zdCBjb25maXJtQnV0dG9uQ2xhc3MgPSAkc3VibWl0QnRuLmRhdGEoJ2NvbmZpcm1CdXR0b25DbGFzcycpO1xuXG4gICAgY29uc3QgbW9kYWwgPSBuZXcgQ29uZmlybU1vZGFsKHtcbiAgICAgIGlkOiBgJHtncmlkLmdldElkKCl9LWdyaWQtY29uZmlybS1tb2RhbGAsXG4gICAgICBjb25maXJtVGl0bGUsXG4gICAgICBjb25maXJtTWVzc2FnZSxcbiAgICAgIGNvbmZpcm1CdXR0b25MYWJlbCxcbiAgICAgIGNsb3NlQnV0dG9uTGFiZWwsXG4gICAgICBjb25maXJtQnV0dG9uQ2xhc3MsXG4gICAgfSwgKCkgPT4gdGhpcy5wb3N0Rm9ybSgkc3VibWl0QnRuLCBtZXRob2QpKTtcblxuICAgIG1vZGFsLnNob3coKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgQnVsa0FjdGlvblNlbGVjdENoZWNrYm94RXh0ZW5zaW9uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1bGtBY3Rpb25DaGVja2JveEV4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZCB3aXRoIGJ1bGsgYWN0aW9uIGNoZWNrYm94ZXMgaGFuZGxpbmcgZnVuY3Rpb25hbGl0eVxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgdGhpcy5oYW5kbGVCdWxrQWN0aW9uQ2hlY2tib3hTZWxlY3QoZ3JpZCk7XG4gICAgdGhpcy5oYW5kbGVCdWxrQWN0aW9uU2VsZWN0QWxsQ2hlY2tib3goZ3JpZCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBcIlNlbGVjdCBhbGxcIiBidXR0b24gaW4gdGhlIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBoYW5kbGVCdWxrQWN0aW9uU2VsZWN0QWxsQ2hlY2tib3goZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkub24oJ2NoYW5nZScsICcuanMtYnVsay1hY3Rpb24tc2VsZWN0LWFsbCcsIChlKSA9PiB7XG4gICAgICBjb25zdCAkY2hlY2tib3ggPSAkKGUuY3VycmVudFRhcmdldCk7XG5cbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9ICRjaGVja2JveC5pcygnOmNoZWNrZWQnKTtcblxuICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICB0aGlzLmVuYWJsZUJ1bGtBY3Rpb25zQnRuKGdyaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlQnVsa0FjdGlvbnNCdG4oZ3JpZCk7XG4gICAgICB9XG5cbiAgICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWJ1bGstYWN0aW9uLWNoZWNrYm94JykucHJvcCgnY2hlY2tlZCcsIGlzQ2hlY2tlZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBlYWNoIGJ1bGsgYWN0aW9uIGNoZWNrYm94IHNlbGVjdCBpbiB0aGUgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGhhbmRsZUJ1bGtBY3Rpb25DaGVja2JveFNlbGVjdChncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5vbignY2hhbmdlJywgJy5qcy1idWxrLWFjdGlvbi1jaGVja2JveCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGNoZWNrZWRSb3dzQ291bnQgPSBncmlkLmdldENvbnRhaW5lcigpLmZpbmQoJy5qcy1idWxrLWFjdGlvbi1jaGVja2JveDpjaGVja2VkJykubGVuZ3RoO1xuXG4gICAgICBpZiAoY2hlY2tlZFJvd3NDb3VudCA+IDApIHtcbiAgICAgICAgdGhpcy5lbmFibGVCdWxrQWN0aW9uc0J0bihncmlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUJ1bGtBY3Rpb25zQnRuKGdyaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBidWxrIGFjdGlvbnMgYnV0dG9uXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW5hYmxlQnVsa0FjdGlvbnNCdG4oZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWJ1bGstYWN0aW9ucy1idG4nKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGJ1bGsgYWN0aW9ucyBidXR0b25cbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkaXNhYmxlQnVsa0FjdGlvbnNCdG4oZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWJ1bGstYWN0aW9ucy1idG4nKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDbGFzcyBSZWxvYWRMaXN0RXh0ZW5zaW9uIGV4dGVuZHMgZ3JpZCB3aXRoIFwiQ29sdW1uIHRvZ2dsaW5nXCIgZmVhdHVyZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2x1bW5Ub2dnbGluZ0V4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgY29uc3QgJHRhYmxlID0gZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCd0YWJsZS50YWJsZScpO1xuICAgICR0YWJsZS5maW5kKCcucHMtdG9nZ2xhYmxlLXJvdycpLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnRvZ2dsZVZhbHVlKCQoZS5kZWxlZ2F0ZVRhcmdldCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSByb3dcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHRvZ2dsZVZhbHVlKHJvdykge1xuICAgIGNvbnN0IHRvZ2dsZVVybCA9IHJvdy5kYXRhKCd0b2dnbGVVcmwnKTtcblxuICAgIHRoaXMuc3VibWl0QXNGb3JtKHRvZ2dsZVVybCk7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0cyByZXF1ZXN0IHVybCBhcyBmb3JtXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b2dnbGVVcmxcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN1Ym1pdEFzRm9ybSh0b2dnbGVVcmwpIHtcbiAgICBjb25zdCAkZm9ybSA9ICQoJzxmb3JtPicsIHtcbiAgICAgIGFjdGlvbjogdG9nZ2xlVXJsLFxuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgfSkuYXBwZW5kVG8oJ2JvZHknKTtcblxuICAgICRmb3JtLnN1Ym1pdCgpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDbGFzcyBFeHBvcnRUb1NxbE1hbmFnZXJFeHRlbnNpb24gZXh0ZW5kcyBncmlkIHdpdGggZXhwb3J0aW5nIHF1ZXJ5IHRvIFNRTCBNYW5hZ2VyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9ydFRvU3FsTWFuYWdlckV4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgZ3JpZC5nZXRIZWFkZXJDb250YWluZXIoKS5vbignY2xpY2snLCAnLmpzLWNvbW1vbl9zaG93X3F1ZXJ5LWdyaWQtYWN0aW9uJywgKCkgPT4gdGhpcy5vblNob3dTcWxRdWVyeUNsaWNrKGdyaWQpKTtcbiAgICBncmlkLmdldEhlYWRlckNvbnRhaW5lcigpLm9uKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgICcuanMtY29tbW9uX2V4cG9ydF9zcWxfbWFuYWdlci1ncmlkLWFjdGlvbicsXG4gICAgICAoKSA9PiB0aGlzLm9uRXhwb3J0U3FsTWFuYWdlckNsaWNrKGdyaWQpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIGNsaWNraW5nIG9uIHRoZSBcInNob3cgc3FsIHF1ZXJ5XCIgdG9vbGJhciBidXR0b25cbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBvblNob3dTcWxRdWVyeUNsaWNrKGdyaWQpIHtcbiAgICBjb25zdCAkc3FsTWFuYWdlckZvcm0gPSAkKGAjJHtncmlkLmdldElkKCl9X2NvbW1vbl9zaG93X3F1ZXJ5X21vZGFsX2Zvcm1gKTtcbiAgICB0aGlzLmZpbGxFeHBvcnRGb3JtKCRzcWxNYW5hZ2VyRm9ybSwgZ3JpZCk7XG5cbiAgICBjb25zdCAkbW9kYWwgPSAkKGAjJHtncmlkLmdldElkKCl9X2dyaWRfY29tbW9uX3Nob3dfcXVlcnlfbW9kYWxgKTtcbiAgICAkbW9kYWwubW9kYWwoJ3Nob3cnKTtcblxuICAgICRtb2RhbC5vbignY2xpY2snLCAnLmJ0bi1zcWwtc3VibWl0JywgKCkgPT4gJHNxbE1hbmFnZXJGb3JtLnN1Ym1pdCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gY2xpY2tpbmcgb24gdGhlIFwiZXhwb3J0IHRvIHRoZSBzcWwgcXVlcnlcIiB0b29sYmFyIGJ1dHRvblxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG9uRXhwb3J0U3FsTWFuYWdlckNsaWNrKGdyaWQpIHtcbiAgICBjb25zdCAkc3FsTWFuYWdlckZvcm0gPSAkKGAjJHtncmlkLmdldElkKCl9X2NvbW1vbl9zaG93X3F1ZXJ5X21vZGFsX2Zvcm1gKTtcblxuICAgIHRoaXMuZmlsbEV4cG9ydEZvcm0oJHNxbE1hbmFnZXJGb3JtLCBncmlkKTtcblxuICAgICRzcWxNYW5hZ2VyRm9ybS5zdWJtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWxsIGV4cG9ydCBmb3JtIHdpdGggU1FMIGFuZCBpdCdzIG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHtqUXVlcnl9ICRzcWxNYW5hZ2VyRm9ybVxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZpbGxFeHBvcnRGb3JtKCRzcWxNYW5hZ2VyRm9ybSwgZ3JpZCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuanMtZ3JpZC10YWJsZScpLmRhdGEoJ3F1ZXJ5Jyk7XG5cbiAgICAkc3FsTWFuYWdlckZvcm0uZmluZCgndGV4dGFyZWFbbmFtZT1cInNxbFwiXScpLnZhbChxdWVyeSk7XG4gICAgJHNxbE1hbmFnZXJGb3JtLmZpbmQoJ2lucHV0W25hbWU9XCJuYW1lXCJdJykudmFsKHRoaXMuZ2V0TmFtZUZyb21CcmVhZGNydW1iKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBleHBvcnQgbmFtZSBmcm9tIHBhZ2UncyBicmVhZGNydW1iXG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGdldE5hbWVGcm9tQnJlYWRjcnVtYigpIHtcbiAgICBjb25zdCAkYnJlYWRjcnVtYnMgPSAkKCcuaGVhZGVyLXRvb2xiYXInKS5maW5kKCcuYnJlYWRjcnVtYi1pdGVtJyk7XG4gICAgbGV0IG5hbWUgPSAnJztcblxuICAgICRicmVhZGNydW1icy5lYWNoKChpLCBpdGVtKSA9PiB7XG4gICAgICBjb25zdCAkYnJlYWRjcnVtYiA9ICQoaXRlbSk7XG5cbiAgICAgIGNvbnN0IGJyZWFkY3J1bWJUaXRsZSA9ICRicmVhZGNydW1iLmZpbmQoJ2EnKS5sZW5ndGggPiAwXG4gICAgICAgID8gJGJyZWFkY3J1bWIuZmluZCgnYScpLnRleHQoKVxuICAgICAgICA6ICRicmVhZGNydW1iLnRleHQoKTtcblxuICAgICAgaWYgKG5hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICBuYW1lID0gbmFtZS5jb25jYXQoJyA+ICcpO1xuICAgICAgfVxuXG4gICAgICBuYW1lID0gbmFtZS5jb25jYXQoYnJlYWRjcnVtYlRpdGxlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuYW1lO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCByZXNldFNlYXJjaCBmcm9tICdAYXBwL3V0aWxzL3Jlc2V0X3NlYXJjaCc7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDbGFzcyBGaWx0ZXJzUmVzZXRFeHRlbnNpb24gZXh0ZW5kcyBncmlkIHdpdGggZmlsdGVycyByZXNldHRpbmdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsdGVyc1Jlc2V0RXh0ZW5zaW9uIHtcbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICBncmlkLmdldENvbnRhaW5lcigpLm9uKCdjbGljaycsICcuanMtcmVzZXQtc2VhcmNoJywgKGV2ZW50KSA9PiB7XG4gICAgICByZXNldFNlYXJjaCgkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ3VybCcpLCAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ3JlZGlyZWN0JykpO1xuICAgIH0pO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbi8qKlxuICogUmVzcG9uc2libGUgZm9yIGdyaWQgZmlsdGVycyBzZWFyY2ggYW5kIHJlc2V0IGJ1dHRvbiBhdmFpbGFiaWxpdHkgd2hlbiBmaWx0ZXIgaW5wdXRzIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlcnNTdWJtaXRCdXR0b25FbmFibGVyRXh0ZW5zaW9uIHtcbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICBjb25zdCAkZmlsdGVyc1JvdyA9IGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmNvbHVtbi1maWx0ZXJzJyk7XG4gICAgJGZpbHRlcnNSb3cuZmluZCgnLmdyaWQtc2VhcmNoLWJ1dHRvbicpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG5cbiAgICAkZmlsdGVyc1Jvdy5maW5kKCdpbnB1dDpub3QoLmpzLWJ1bGstYWN0aW9uLXNlbGVjdC1hbGwpLCBzZWxlY3QnKS5vbignaW5wdXQgZHAuY2hhbmdlJywgKCkgPT4ge1xuICAgICAgJGZpbHRlcnNSb3cuZmluZCgnLmdyaWQtc2VhcmNoLWJ1dHRvbicpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgICAgJGZpbHRlcnNSb3cuZmluZCgnLmpzLWdyaWQtcmVzZXQtYnV0dG9uJykucHJvcCgnaGlkZGVuJywgZmFsc2UpO1xuICAgIH0pO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDbGFzcyBMaW5rUm93QWN0aW9uRXh0ZW5zaW9uIGhhbmRsZXMgbGluayByb3cgYWN0aW9uc1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaW5rUm93QWN0aW9uRXh0ZW5zaW9uIHtcbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICB0aGlzLmluaXRSb3dMaW5rcyhncmlkKTtcbiAgICB0aGlzLmluaXRDb25maXJtYWJsZUFjdGlvbnMoZ3JpZCk7XG4gIH1cblxuICAvKipcbiAgICogRXh0ZW5kIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBpbml0Q29uZmlybWFibGVBY3Rpb25zKGdyaWQpIHtcbiAgICBncmlkLmdldENvbnRhaW5lcigpLm9uKCdjbGljaycsICcuanMtbGluay1yb3ctYWN0aW9uJywgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBjb25maXJtTWVzc2FnZSA9ICQoZXZlbnQuY3VycmVudFRhcmdldCkuZGF0YSgnY29uZmlybS1tZXNzYWdlJyk7XG5cbiAgICAgIGlmIChjb25maXJtTWVzc2FnZS5sZW5ndGggJiYgIXdpbmRvdy5jb25maXJtKGNvbmZpcm1NZXNzYWdlKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNsaWNrIGV2ZW50IG9uIHJvd3MgdGhhdCBtYXRjaGVzIHRoZSBmaXJzdCBsaW5rIGFjdGlvbiAoaWYgcHJlc2VudClcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBpbml0Um93TGlua3MoZ3JpZCkge1xuICAgICQoJ3RyJywgZ3JpZC5nZXRDb250YWluZXIoKSkuZWFjaChmdW5jdGlvbiBpbml0RWFjaFJvdygpIHtcbiAgICAgIGNvbnN0ICRwYXJlbnRSb3cgPSAkKHRoaXMpO1xuXG4gICAgICAkKCcuanMtbGluay1yb3ctYWN0aW9uW2RhdGEtY2xpY2thYmxlLXJvdz0xXTpmaXJzdCcsICRwYXJlbnRSb3cpLmVhY2goZnVuY3Rpb24gcHJvcGFnYXRlRmlyc3RMaW5rQWN0aW9uKCkge1xuICAgICAgICBjb25zdCAkcm93QWN0aW9uID0gJCh0aGlzKTtcbiAgICAgICAgY29uc3QgJHBhcmVudENlbGwgPSAkcm93QWN0aW9uLmNsb3Nlc3QoJ3RkJyk7XG5cbiAgICAgICAgY29uc3QgY2xpY2thYmxlQ2VsbHMgPSAkKCd0ZC5jbGlja2FibGUnLCAkcGFyZW50Um93KS5ub3QoJHBhcmVudENlbGwpO1xuICAgICAgICBsZXQgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICBjbGlja2FibGVDZWxscy5hZGRDbGFzcygnY3Vyc29yLXBvaW50ZXInKS5tb3VzZWRvd24oKCkgPT4ge1xuICAgICAgICAgICQod2luZG93KS5tb3VzZW1vdmUoKCkgPT4ge1xuICAgICAgICAgICAgaXNEcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICAkKHdpbmRvdykudW5iaW5kKCdtb3VzZW1vdmUnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xpY2thYmxlQ2VsbHMubW91c2V1cCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2FzRHJhZ2dpbmcgPSBpc0RyYWdnaW5nO1xuICAgICAgICAgIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgICAkKHdpbmRvdykudW5iaW5kKCdtb3VzZW1vdmUnKTtcblxuICAgICAgICAgIGlmICghd2FzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gJHJvd0FjdGlvbi5kYXRhKCdjb25maXJtLW1lc3NhZ2UnKTtcblxuICAgICAgICAgICAgaWYgKCFjb25maXJtTWVzc2FnZS5sZW5ndGggfHwgd2luZG93LmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpKSB7XG4gICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uID0gJHJvd0FjdGlvbi5hdHRyKCdocmVmJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCAndGFibGVkbmQvZGlzdC9qcXVlcnkudGFibGVkbmQubWluJztcblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIENsYXNzIFBvc2l0aW9uRXh0ZW5zaW9uIGV4dGVuZHMgR3JpZCB3aXRoIHJlb3JkZXJhYmxlIHBvc2l0aW9uc1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb3NpdGlvbkV4dGVuc2lvbiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB7XG4gICAgICBleHRlbmQ6IChncmlkKSA9PiB0aGlzLmV4dGVuZChncmlkKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICB0aGlzLmdyaWQgPSBncmlkO1xuICAgIHRoaXMuYWRkSWRzVG9HcmlkVGFibGVSb3dzKCk7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuanMtZ3JpZC10YWJsZScpLnRhYmxlRG5EKHtcbiAgICAgIG9uRHJhZ0NsYXNzOiAncG9zaXRpb24tcm93LXdoaWxlLWRyYWcnLFxuICAgICAgZHJhZ0hhbmRsZTogJy5qcy1kcmFnLWhhbmRsZScsXG4gICAgICBvbkRyb3A6ICh0YWJsZSwgcm93KSA9PiB0aGlzLmhhbmRsZVBvc2l0aW9uQ2hhbmdlKHJvdyksXG4gICAgfSk7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuanMtZHJhZy1oYW5kbGUnKS5ob3ZlcihcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCd0cicpLmFkZENsYXNzKCdob3ZlcicpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCd0cicpLnJlbW92ZUNsYXNzKCdob3ZlcicpO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gcG9zaXRpb24gaXMgY2hhbmdlZCBoYW5kbGUgdXBkYXRlXG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHJvd1xuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGFuZGxlUG9zaXRpb25DaGFuZ2Uocm93KSB7XG4gICAgY29uc3QgJHJvd1Bvc2l0aW9uQ29udGFpbmVyID0gJChyb3cpLmZpbmQoYC5qcy0ke3RoaXMuZ3JpZC5nZXRJZCgpfS1wb3NpdGlvbjpmaXJzdGApO1xuICAgIGNvbnN0IHVwZGF0ZVVybCA9ICRyb3dQb3NpdGlvbkNvbnRhaW5lci5kYXRhKCd1cGRhdGUtdXJsJyk7XG4gICAgY29uc3QgbWV0aG9kID0gJHJvd1Bvc2l0aW9uQ29udGFpbmVyLmRhdGEoJ3VwZGF0ZS1tZXRob2QnKTtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLmdldFJvd3NQb3NpdGlvbnMoKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7cG9zaXRpb25zfTtcblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb24odXBkYXRlVXJsLCBwYXJhbXMsIG1ldGhvZCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCB0YWJsZSBwb3NpdGlvbnNcbiAgICogQHJldHVybnMge0FycmF5fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0Um93c1Bvc2l0aW9ucygpIHtcbiAgICBjb25zdCB0YWJsZURhdGEgPSBKU09OLnBhcnNlKCQudGFibGVEbkQuanNvbml6ZSgpKTtcbiAgICBjb25zdCByb3dzRGF0YSA9IHRhYmxlRGF0YVtgJHt0aGlzLmdyaWQuZ2V0SWQoKX1fZ3JpZF90YWJsZWBdO1xuICAgIGNvbnN0IGNvbXBsZXRlUm93c0RhdGEgPSBbXTtcblxuICAgIGxldCB0ckRhdGE7XG5cbiAgICAvLyByZXRyaWV2ZSBkcmFnQW5kRHJvcE9mZnNldCBvZmZzZXQgdG8gaGF2ZSBhbGwgbmVlZGVkIGRhdGFcbiAgICAvLyBmb3IgcG9zaXRpb25zIG1hcHBpbmcgZXZvbHV0aW9uIG92ZXIgdGltZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93c0RhdGEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHRyRGF0YSA9IHRoaXMuZ3JpZC5nZXRDb250YWluZXIoKVxuICAgICAgICAuZmluZChgIyR7cm93c0RhdGFbaV19YCk7XG5cbiAgICAgIGNvbXBsZXRlUm93c0RhdGEucHVzaCh7XG4gICAgICAgIHJvd01hcmtlcjogcm93c0RhdGFbaV0sXG4gICAgICAgIG9mZnNldDogdHJEYXRhLmRhdGEoJ2RyYWdBbmREcm9wT2Zmc2V0JyksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb21wdXRlTWFwcGluZ0JldHdlZW5PbGRBbmROZXdQb3NpdGlvbnMoY29tcGxldGVSb3dzRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIElEJ3MgdG8gR3JpZCB0YWJsZSByb3dzIHRvIG1ha2UgdGFibGVEbkQub25Ecm9wKCkgZnVuY3Rpb24gd29yay5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGFkZElkc1RvR3JpZFRhYmxlUm93cygpIHtcbiAgICBsZXQgY291bnRlciA9IDA7XG5cbiAgICB0aGlzLmdyaWQuZ2V0Q29udGFpbmVyKClcbiAgICAgIC5maW5kKGAuanMtZ3JpZC10YWJsZSAuanMtJHt0aGlzLmdyaWQuZ2V0SWQoKX0tcG9zaXRpb25gKVxuICAgICAgLmVhY2goKGluZGV4LCBwb3NpdGlvbldyYXBwZXIpID0+IHtcbiAgICAgICAgY29uc3QgJHBvc2l0aW9uV3JhcHBlciA9ICQocG9zaXRpb25XcmFwcGVyKTtcbiAgICAgICAgY29uc3Qgcm93SWQgPSAkcG9zaXRpb25XcmFwcGVyLmRhdGEoJ2lkJyk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gJHBvc2l0aW9uV3JhcHBlci5kYXRhKCdwb3NpdGlvbicpO1xuICAgICAgICBjb25zdCBpZCA9IGByb3dfJHtyb3dJZH1fJHtwb3NpdGlvbn1gO1xuICAgICAgICAkcG9zaXRpb25XcmFwcGVyLmNsb3Nlc3QoJ3RyJykuYXR0cignaWQnLCBpZCk7XG4gICAgICAgICRwb3NpdGlvbldyYXBwZXIuY2xvc2VzdCgndGQnKS5hZGRDbGFzcygnanMtZHJhZy1oYW5kbGUnKTtcbiAgICAgICAgJHBvc2l0aW9uV3JhcHBlci5jbG9zZXN0KCd0cicpLmRhdGEoJ2RyYWdBbmREcm9wT2Zmc2V0JywgY291bnRlcik7XG5cbiAgICAgICAgY291bnRlciArPSAxO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyByb3dzIHBvc2l0aW9ucyB1cGRhdGVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2RcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHVwZGF0ZVBvc2l0aW9uKHVybCwgcGFyYW1zLCBtZXRob2QpIHtcbiAgICBjb25zdCBpc0dldE9yUG9zdE1ldGhvZCA9IFsnR0VUJywgJ1BPU1QnXS5pbmNsdWRlcyhtZXRob2QpO1xuXG4gICAgY29uc3QgJGZvcm0gPSAkKCc8Zm9ybT4nLCB7XG4gICAgICBhY3Rpb246IHVybCxcbiAgICAgIG1ldGhvZDogaXNHZXRPclBvc3RNZXRob2QgPyBtZXRob2QgOiAnUE9TVCcsXG4gICAgfSkuYXBwZW5kVG8oJ2JvZHknKTtcblxuICAgIGNvbnN0IHBvc2l0aW9uc05iID0gcGFyYW1zLnBvc2l0aW9ucy5sZW5ndGg7XG4gICAgbGV0IHBvc2l0aW9uO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnNOYjsgaSArPSAxKSB7XG4gICAgICBwb3NpdGlvbiA9IHBhcmFtcy5wb3NpdGlvbnNbaV07XG4gICAgICAkZm9ybS5hcHBlbmQoXG4gICAgICAgICQoJzxpbnB1dD4nLCB7XG4gICAgICAgICAgdHlwZTogJ2hpZGRlbicsXG4gICAgICAgICAgbmFtZTogYHBvc2l0aW9uc1ske2l9XVtyb3dJZF1gLFxuICAgICAgICAgIHZhbHVlOiBwb3NpdGlvbi5yb3dJZCxcbiAgICAgICAgfSksXG4gICAgICAgICQoJzxpbnB1dD4nLCB7XG4gICAgICAgICAgdHlwZTogJ2hpZGRlbicsXG4gICAgICAgICAgbmFtZTogYHBvc2l0aW9uc1ske2l9XVtvbGRQb3NpdGlvbl1gLFxuICAgICAgICAgIHZhbHVlOiBwb3NpdGlvbi5vbGRQb3NpdGlvbixcbiAgICAgICAgfSksXG4gICAgICAgICQoJzxpbnB1dD4nLCB7XG4gICAgICAgICAgdHlwZTogJ2hpZGRlbicsXG4gICAgICAgICAgbmFtZTogYHBvc2l0aW9uc1ske2l9XVtuZXdQb3NpdGlvbl1gLFxuICAgICAgICAgIHZhbHVlOiBwb3NpdGlvbi5uZXdQb3NpdGlvbixcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFRoaXMgX21ldGhvZCBwYXJhbSBpcyB1c2VkIGJ5IFN5bWZvbnkgdG8gc2ltdWxhdGUgREVMRVRFIGFuZCBQVVQgbWV0aG9kc1xuICAgIGlmICghaXNHZXRPclBvc3RNZXRob2QpIHtcbiAgICAgICRmb3JtLmFwcGVuZCgkKCc8aW5wdXQ+Jywge1xuICAgICAgICB0eXBlOiAnaGlkZGVuJyxcbiAgICAgICAgbmFtZTogJ19tZXRob2QnLFxuICAgICAgICB2YWx1ZTogbWV0aG9kLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgICRmb3JtLnN1Ym1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvd3MgaGF2ZSBiZWVuIHJlb3JkZXJlZC4gVGhpcyBmdW5jdGlvblxuICAgKiBmaW5kcywgZm9yIGVhY2ggcm93IElEOiB0aGUgb2xkIHBvc2l0aW9uLCB0aGUgbmV3IHBvc2l0aW9uXG4gICAqXG4gICAqIEByZXR1cm5zIHtBcnJheX1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbXB1dGVNYXBwaW5nQmV0d2Vlbk9sZEFuZE5ld1Bvc2l0aW9ucyhyb3dzRGF0YSkge1xuICAgIGNvbnN0IHJlZ2V4ID0gL15yb3dfKFxcZCspXyhcXGQrKSQvO1xuICAgIGNvbnN0IG1hcHBpbmcgPSBBcnJheShyb3dzRGF0YS5sZW5ndGgpLmZpbGwoKS5tYXAoT2JqZWN0KTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93c0RhdGEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IFssIHJvd0lkLCBvbGRQb3NpdGlvbl0gPSByZWdleC5leGVjKHJvd3NEYXRhW2ldLnJvd01hcmtlcik7XG4gICAgICBtYXBwaW5nW2ldLnJvd0lkID0gcm93SWQ7XG4gICAgICBtYXBwaW5nW2ldLm9sZFBvc2l0aW9uID0gcGFyc2VJbnQob2xkUG9zaXRpb24sIDEwKTtcbiAgICAgIC8vIFRoaXMgcm93IHdpbGwgaGF2ZSBhcyBhIG5ldyBwb3NpdGlvbiB0aGUgb2xkIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IG9uZVxuICAgICAgbWFwcGluZ1tyb3dzRGF0YVtpXS5vZmZzZXRdLm5ld1Bvc2l0aW9uID0gbWFwcGluZ1tpXS5vbGRQb3NpdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwcGluZztcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG4vKipcbiAqIENsYXNzIFJlbG9hZExpc3RFeHRlbnNpb24gZXh0ZW5kcyBncmlkIHdpdGggXCJMaXN0IHJlbG9hZFwiIGFjdGlvblxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWxvYWRMaXN0RXh0ZW5zaW9uIHtcbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICBncmlkLmdldEhlYWRlckNvbnRhaW5lcigpLm9uKCdjbGljaycsICcuanMtY29tbW9uX3JlZnJlc2hfbGlzdC1ncmlkLWFjdGlvbicsICgpID0+IHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgVGFibGVTb3J0aW5nIGZyb20gJ0BhcHAvdXRpbHMvdGFibGUtc29ydGluZyc7XG5cbi8qKlxuICogQ2xhc3MgUmVsb2FkTGlzdEV4dGVuc2lvbiBleHRlbmRzIGdyaWQgd2l0aCBcIkxpc3QgcmVsb2FkXCIgYWN0aW9uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNvcnRpbmdFeHRlbnNpb24ge1xuICAvKipcbiAgICogRXh0ZW5kIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGNvbnN0ICRzb3J0YWJsZVRhYmxlID0gZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCd0YWJsZS50YWJsZScpO1xuXG4gICAgbmV3IFRhYmxlU29ydGluZygkc29ydGFibGVUYWJsZSkuYXR0YWNoKCk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IENvbmZpcm1Nb2RhbCBmcm9tICdAY29tcG9uZW50cy9tb2RhbCc7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBIYW5kbGVzIHN1Ym1pdCBvZiBncmlkIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3VibWl0QnVsa0FjdGlvbkV4dGVuc2lvbiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB7XG4gICAgICBleHRlbmQ6IChncmlkKSA9PiB0aGlzLmV4dGVuZChncmlkKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkIHdpdGggYnVsayBhY3Rpb24gc3VibWl0dGluZ1xuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5vbignY2xpY2snLCAnLmpzLWJ1bGstYWN0aW9uLXN1Ym1pdC1idG4nLCAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMuc3VibWl0KGV2ZW50LCBncmlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYnVsayBhY3Rpb24gc3VibWl0dGluZ1xuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN1Ym1pdChldmVudCwgZ3JpZCkge1xuICAgIGNvbnN0ICRzdWJtaXRCdG4gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gJHN1Ym1pdEJ0bi5kYXRhKCdjb25maXJtLW1lc3NhZ2UnKTtcbiAgICBjb25zdCBjb25maXJtVGl0bGUgPSAkc3VibWl0QnRuLmRhdGEoJ2NvbmZpcm1UaXRsZScpO1xuXG4gICAgaWYgKGNvbmZpcm1NZXNzYWdlICE9PSB1bmRlZmluZWQgJiYgY29uZmlybU1lc3NhZ2UubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGNvbmZpcm1UaXRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0NvbmZpcm1Nb2RhbCgkc3VibWl0QnRuLCBncmlkLCBjb25maXJtTWVzc2FnZSwgY29uZmlybVRpdGxlKTtcbiAgICAgIH0gZWxzZSBpZiAod2luZG93LmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpKSB7XG4gICAgICAgIHRoaXMucG9zdEZvcm0oJHN1Ym1pdEJ0biwgZ3JpZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9zdEZvcm0oJHN1Ym1pdEJ0biwgZ3JpZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkc3VibWl0QnRuXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZmlybU1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpcm1UaXRsZVxuICAgKi9cbiAgc2hvd0NvbmZpcm1Nb2RhbCgkc3VibWl0QnRuLCBncmlkLCBjb25maXJtTWVzc2FnZSwgY29uZmlybVRpdGxlKSB7XG4gICAgY29uc3QgY29uZmlybUJ1dHRvbkxhYmVsID0gJHN1Ym1pdEJ0bi5kYXRhKCdjb25maXJtQnV0dG9uTGFiZWwnKTtcbiAgICBjb25zdCBjbG9zZUJ1dHRvbkxhYmVsID0gJHN1Ym1pdEJ0bi5kYXRhKCdjbG9zZUJ1dHRvbkxhYmVsJyk7XG4gICAgY29uc3QgY29uZmlybUJ1dHRvbkNsYXNzID0gJHN1Ym1pdEJ0bi5kYXRhKCdjb25maXJtQnV0dG9uQ2xhc3MnKTtcblxuICAgIGNvbnN0IG1vZGFsID0gbmV3IENvbmZpcm1Nb2RhbCh7XG4gICAgICBpZDogYCR7Z3JpZC5nZXRJZCgpfS1ncmlkLWNvbmZpcm0tbW9kYWxgLFxuICAgICAgY29uZmlybVRpdGxlLFxuICAgICAgY29uZmlybU1lc3NhZ2UsXG4gICAgICBjb25maXJtQnV0dG9uTGFiZWwsXG4gICAgICBjbG9zZUJ1dHRvbkxhYmVsLFxuICAgICAgY29uZmlybUJ1dHRvbkNsYXNzLFxuICAgIH0sICgpID0+IHRoaXMucG9zdEZvcm0oJHN1Ym1pdEJ0biwgZ3JpZCkpO1xuXG4gICAgbW9kYWwuc2hvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkc3VibWl0QnRuXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgcG9zdEZvcm0oJHN1Ym1pdEJ0biwgZ3JpZCkge1xuICAgIGNvbnN0ICRmb3JtID0gJChgIyR7Z3JpZC5nZXRJZCgpfV9maWx0ZXJfZm9ybWApO1xuXG4gICAgJGZvcm0uYXR0cignYWN0aW9uJywgJHN1Ym1pdEJ0bi5kYXRhKCdmb3JtLXVybCcpKTtcbiAgICAkZm9ybS5hdHRyKCdtZXRob2QnLCAkc3VibWl0QnRuLmRhdGEoJ2Zvcm0tbWV0aG9kJykpO1xuICAgICRmb3JtLnN1Ym1pdCgpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgR3JpZCBldmVudHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR3JpZCB7XG4gIC8qKlxuICAgKiBHcmlkIGlkXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZFxuICAgKi9cbiAgY29uc3RydWN0b3IoaWQpIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy4kY29udGFpbmVyID0gJChgIyR7dGhpcy5pZH1fZ3JpZGApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBncmlkIGlkXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBnZXRJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ3JpZCBjb250YWluZXJcbiAgICpcbiAgICogQHJldHVybnMge2pRdWVyeX1cbiAgICovXG4gIGdldENvbnRhaW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBncmlkIGhlYWRlciBjb250YWluZXJcbiAgICpcbiAgICogQHJldHVybnMge2pRdWVyeX1cbiAgICovXG4gIGdldEhlYWRlckNvbnRhaW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyLmNsb3Nlc3QoJy5qcy1ncmlkLXBhbmVsJykuZmluZCgnLmpzLWdyaWQtaGVhZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogRXh0ZW5kIGdyaWQgd2l0aCBleHRlcm5hbCBleHRlbnNpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBleHRlbnNpb25cbiAgICovXG4gIGFkZEV4dGVuc2lvbihleHRlbnNpb24pIHtcbiAgICBleHRlbnNpb24uZXh0ZW5kKHRoaXMpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDb25maXJtTW9kYWwgY29tcG9uZW50XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybVRpdGxlXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybU1lc3NhZ2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBjbG9zZUJ1dHRvbkxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybUJ1dHRvbkxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybUJ1dHRvbkNsYXNzXG4gKiBAcGFyYW0ge0FycmF5fSBjdXN0b21CdXR0b25zXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGNsb3NhYmxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25maXJtQ2FsbGJhY2tcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbmNlbENhbGxiYWNrXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb25maXJtTW9kYWwocGFyYW1zLCBjb25maXJtQ2FsbGJhY2ssIGNhbmNlbENhbGxiYWNrKSB7XG4gIC8vIENvbnN0cnVjdCB0aGUgbW9kYWxcbiAgY29uc3Qge2lkLCBjbG9zYWJsZX0gPSBwYXJhbXM7XG4gIHRoaXMubW9kYWwgPSBNb2RhbChwYXJhbXMpO1xuXG4gIC8vIGpRdWVyeSBtb2RhbCBvYmplY3RcbiAgdGhpcy4kbW9kYWwgPSAkKHRoaXMubW9kYWwuY29udGFpbmVyKTtcblxuICB0aGlzLnNob3cgPSAoKSA9PiB7XG4gICAgdGhpcy4kbW9kYWwubW9kYWwoKTtcbiAgfTtcblxuICB0aGlzLm1vZGFsLmNvbmZpcm1CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjb25maXJtQ2FsbGJhY2spO1xuXG4gIHRoaXMuJG1vZGFsLm1vZGFsKHtcbiAgICBiYWNrZHJvcDogY2xvc2FibGUgPyB0cnVlIDogJ3N0YXRpYycsXG4gICAga2V5Ym9hcmQ6IGNsb3NhYmxlICE9PSB1bmRlZmluZWQgPyBjbG9zYWJsZSA6IHRydWUsXG4gICAgY2xvc2FibGU6IGNsb3NhYmxlICE9PSB1bmRlZmluZWQgPyBjbG9zYWJsZSA6IHRydWUsXG4gICAgc2hvdzogZmFsc2UsXG4gIH0pO1xuXG4gIHRoaXMuJG1vZGFsLm9uKCdoaWRkZW4uYnMubW9kYWwnLCAoKSA9PiB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7aWR9YCkucmVtb3ZlKCk7XG4gICAgaWYgKGNhbmNlbENhbGxiYWNrKSB7XG4gICAgICBjYW5jZWxDYWxsYmFjaygpO1xuICAgIH1cbiAgfSk7XG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLm1vZGFsLmNvbnRhaW5lcik7XG59XG5cbi8qKlxuICogTW9kYWwgY29tcG9uZW50IHRvIGltcHJvdmUgbGlzaWJpbGl0eSBieSBjb25zdHJ1Y3RpbmcgdGhlIG1vZGFsIG91dHNpZGUgdGhlIG1haW4gZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gKlxuICovXG5mdW5jdGlvbiBNb2RhbCh7XG4gIGlkID0gJ2NvbmZpcm0tbW9kYWwnLFxuICBjb25maXJtVGl0bGUsXG4gIGNvbmZpcm1NZXNzYWdlID0gJycsXG4gIGNsb3NlQnV0dG9uTGFiZWwgPSAnQ2xvc2UnLFxuICBjb25maXJtQnV0dG9uTGFiZWwgPSAnQWNjZXB0JyxcbiAgY29uZmlybUJ1dHRvbkNsYXNzID0gJ2J0bi1wcmltYXJ5JyxcbiAgY3VzdG9tQnV0dG9ucyA9IFtdLFxufSkge1xuICBjb25zdCBtb2RhbCA9IHt9O1xuXG4gIC8vIE1haW4gbW9kYWwgZWxlbWVudFxuICBtb2RhbC5jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbW9kYWwuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ21vZGFsJywgJ2ZhZGUnKTtcbiAgbW9kYWwuY29udGFpbmVyLmlkID0gaWQ7XG5cbiAgLy8gTW9kYWwgZGlhbG9nIGVsZW1lbnRcbiAgbW9kYWwuZGlhbG9nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmRpYWxvZy5jbGFzc0xpc3QuYWRkKCdtb2RhbC1kaWFsb2cnKTtcblxuICAvLyBNb2RhbCBjb250ZW50IGVsZW1lbnRcbiAgbW9kYWwuY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBtb2RhbC5jb250ZW50LmNsYXNzTGlzdC5hZGQoJ21vZGFsLWNvbnRlbnQnKTtcblxuICAvLyBNb2RhbCBoZWFkZXIgZWxlbWVudFxuICBtb2RhbC5oZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbW9kYWwuaGVhZGVyLmNsYXNzTGlzdC5hZGQoJ21vZGFsLWhlYWRlcicpO1xuXG4gIC8vIE1vZGFsIHRpdGxlIGVsZW1lbnRcbiAgaWYgKGNvbmZpcm1UaXRsZSkge1xuICAgIG1vZGFsLnRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDQnKTtcbiAgICBtb2RhbC50aXRsZS5jbGFzc0xpc3QuYWRkKCdtb2RhbC10aXRsZScpO1xuICAgIG1vZGFsLnRpdGxlLmlubmVySFRNTCA9IGNvbmZpcm1UaXRsZTtcbiAgfVxuXG4gIC8vIE1vZGFsIGNsb3NlIGJ1dHRvbiBpY29uXG4gIG1vZGFsLmNsb3NlSWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICBtb2RhbC5jbG9zZUljb24uY2xhc3NMaXN0LmFkZCgnY2xvc2UnKTtcbiAgbW9kYWwuY2xvc2VJY29uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcbiAgbW9kYWwuY2xvc2VJY29uLmRhdGFzZXQuZGlzbWlzcyA9ICdtb2RhbCc7XG4gIG1vZGFsLmNsb3NlSWNvbi5pbm5lckhUTUwgPSAnw5cnO1xuXG4gIC8vIE1vZGFsIGJvZHkgZWxlbWVudFxuICBtb2RhbC5ib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmJvZHkuY2xhc3NMaXN0LmFkZCgnbW9kYWwtYm9keScsICd0ZXh0LWxlZnQnLCAnZm9udC13ZWlnaHQtbm9ybWFsJyk7XG5cbiAgLy8gTW9kYWwgbWVzc2FnZSBlbGVtZW50XG4gIG1vZGFsLm1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gIG1vZGFsLm1lc3NhZ2UuY2xhc3NMaXN0LmFkZCgnY29uZmlybS1tZXNzYWdlJyk7XG4gIG1vZGFsLm1lc3NhZ2UuaW5uZXJIVE1MID0gY29uZmlybU1lc3NhZ2U7XG5cbiAgLy8gTW9kYWwgZm9vdGVyIGVsZW1lbnRcbiAgbW9kYWwuZm9vdGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmZvb3Rlci5jbGFzc0xpc3QuYWRkKCdtb2RhbC1mb290ZXInKTtcblxuICAvLyBNb2RhbCBjbG9zZSBidXR0b24gZWxlbWVudFxuICBtb2RhbC5jbG9zZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICBtb2RhbC5jbG9zZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYnV0dG9uJyk7XG4gIG1vZGFsLmNsb3NlQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2J0bicsICdidG4tb3V0bGluZS1zZWNvbmRhcnknLCAnYnRuLWxnJyk7XG4gIG1vZGFsLmNsb3NlQnV0dG9uLmRhdGFzZXQuZGlzbWlzcyA9ICdtb2RhbCc7XG4gIG1vZGFsLmNsb3NlQnV0dG9uLmlubmVySFRNTCA9IGNsb3NlQnV0dG9uTGFiZWw7XG5cbiAgLy8gTW9kYWwgY29uZmlybSBidXR0b24gZWxlbWVudFxuICBtb2RhbC5jb25maXJtQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gIG1vZGFsLmNvbmZpcm1CdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuICBtb2RhbC5jb25maXJtQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2J0bicsIGNvbmZpcm1CdXR0b25DbGFzcywgJ2J0bi1sZycsICdidG4tY29uZmlybS1zdWJtaXQnKTtcbiAgbW9kYWwuY29uZmlybUJ1dHRvbi5kYXRhc2V0LmRpc21pc3MgPSAnbW9kYWwnO1xuICBtb2RhbC5jb25maXJtQnV0dG9uLmlubmVySFRNTCA9IGNvbmZpcm1CdXR0b25MYWJlbDtcblxuICAvLyBDb25zdHJ1Y3RpbmcgdGhlIG1vZGFsXG4gIGlmIChjb25maXJtVGl0bGUpIHtcbiAgICBtb2RhbC5oZWFkZXIuYXBwZW5kKG1vZGFsLnRpdGxlLCBtb2RhbC5jbG9zZUljb24pO1xuICB9IGVsc2Uge1xuICAgIG1vZGFsLmhlYWRlci5hcHBlbmRDaGlsZChtb2RhbC5jbG9zZUljb24pO1xuICB9XG5cbiAgbW9kYWwuYm9keS5hcHBlbmRDaGlsZChtb2RhbC5tZXNzYWdlKTtcbiAgbW9kYWwuZm9vdGVyLmFwcGVuZChtb2RhbC5jbG9zZUJ1dHRvbiwgLi4uY3VzdG9tQnV0dG9ucywgbW9kYWwuY29uZmlybUJ1dHRvbik7XG4gIG1vZGFsLmNvbnRlbnQuYXBwZW5kKG1vZGFsLmhlYWRlciwgbW9kYWwuYm9keSwgbW9kYWwuZm9vdGVyKTtcbiAgbW9kYWwuZGlhbG9nLmFwcGVuZENoaWxkKG1vZGFsLmNvbnRlbnQpO1xuICBtb2RhbC5jb250YWluZXIuYXBwZW5kQ2hpbGQobW9kYWwuZGlhbG9nKTtcblxuICByZXR1cm4gbW9kYWw7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDbGFzcyBTaG93Y2FzZUNhcmRDbG9zZUV4dGVuc2lvbiBpcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIGhlbHBlciBibG9jayBjbG9zaW5nIGJlaGF2aW9yXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNob3djYXNlQ2FyZENsb3NlRXh0ZW5zaW9uIHtcbiAgLyoqXG4gICAqIEV4dGVuZCBoZWxwZXIgYmxvY2suXG4gICAqXG4gICAqIEBwYXJhbSB7U2hvd2Nhc2VDYXJkfSBoZWxwZXJCbG9ja1xuICAgKi9cbiAgZXh0ZW5kKGhlbHBlckJsb2NrKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gaGVscGVyQmxvY2suZ2V0Q29udGFpbmVyKCk7XG4gICAgY29udGFpbmVyLm9uKCdjbGljaycsICcuanMtcmVtb3ZlLWhlbHBlci1ibG9jaycsIChldnQpID0+IHtcbiAgICAgIGNvbnRhaW5lci5yZW1vdmUoKTtcblxuICAgICAgY29uc3QgJGJ0biA9ICQoZXZ0LnRhcmdldCk7XG4gICAgICBjb25zdCB1cmwgPSAkYnRuLmRhdGEoJ2Nsb3NlVXJsJyk7XG4gICAgICBjb25zdCBjYXJkTmFtZSA9ICRidG4uZGF0YSgnY2FyZE5hbWUnKTtcblxuICAgICAgaWYgKHVybCkge1xuICAgICAgICAvLyBub3RpZnkgdGhlIGNhcmQgd2FzIGNsb3NlZFxuICAgICAgICAkLnBvc3QoXG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsb3NlOiAxLFxuICAgICAgICAgICAgbmFtZTogY2FyZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgU2hvd2Nhc2VDYXJkIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBldmVudHMgcmVsYXRlZCB3aXRoIHNob3djYXNlIGNhcmQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNob3djYXNlQ2FyZCB7XG4gIC8qKlxuICAgKiBTaG93Y2FzZSBjYXJkIGlkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKGlkKSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoYCMke3RoaXMuaWR9YCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNob3djYXNlIGNhcmQgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7alF1ZXJ5fVxuICAgKi9cbiAgZ2V0Q29udGFpbmVyKCkge1xuICAgIHJldHVybiB0aGlzLiRjb250YWluZXI7XG4gIH1cblxuICAvKipcbiAgICogRXh0ZW5kIHNob3djYXNlIGNhcmQgd2l0aCBleHRlcm5hbCBleHRlbnNpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXh0ZW5zaW9uXG4gICAqL1xuICBhZGRFeHRlbnNpb24oZXh0ZW5zaW9uKSB7XG4gICAgZXh0ZW5zaW9uLmV4dGVuZCh0aGlzKTtcbiAgfVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb21cIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vZ2V0LWl0ZXJhdG9yXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2lzLWl0ZXJhYmxlXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfaXNJdGVyYWJsZTIgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9pcy1pdGVyYWJsZVwiKTtcblxudmFyIF9pc0l0ZXJhYmxlMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzSXRlcmFibGUyKTtcblxudmFyIF9nZXRJdGVyYXRvcjIgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9nZXQtaXRlcmF0b3JcIik7XG5cbnZhciBfZ2V0SXRlcmF0b3IzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0SXRlcmF0b3IyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBzbGljZUl0ZXJhdG9yKGFyciwgaSkge1xuICAgIHZhciBfYXJyID0gW107XG4gICAgdmFyIF9uID0gdHJ1ZTtcbiAgICB2YXIgX2QgPSBmYWxzZTtcbiAgICB2YXIgX2UgPSB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgZm9yICh2YXIgX2kgPSAoMCwgX2dldEl0ZXJhdG9yMy5kZWZhdWx0KShhcnIpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIF9kID0gdHJ1ZTtcbiAgICAgIF9lID0gZXJyO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdKSBfaVtcInJldHVyblwiXSgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gX2FycjtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9IGVsc2UgaWYgKCgwLCBfaXNJdGVyYWJsZTMuZGVmYXVsdCkoT2JqZWN0KGFycikpKSB7XG4gICAgICByZXR1cm4gc2xpY2VJdGVyYXRvcihhcnIsIGkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTtcbiAgICB9XG4gIH07XG59KCk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZnJvbSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL2FycmF5L2Zyb21cIik7XG5cbnZhciBfZnJvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mcm9tKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyMltpXSA9IGFycltpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKDAsIF9mcm9tMi5kZWZhdWx0KShhcnIpO1xuICB9XG59OyIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYuYXJyYXkuZnJvbScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuQXJyYXkuZnJvbTtcbiIsInJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3InKTtcbiIsInJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvY29yZS5pcy1pdGVyYWJsZScpO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKSB7XG4gIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG4iLCIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjExJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGluZGV4LCB2YWx1ZSkge1xuICBpZiAoaW5kZXggaW4gb2JqZWN0KSAkZGVmaW5lUHJvcGVydHkuZihvYmplY3QsIGluZGV4LCBjcmVhdGVEZXNjKDAsIHZhbHVlKSk7XG4gIGVsc2Ugb2JqZWN0W2luZGV4XSA9IHZhbHVlO1xufTtcbiIsIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCBzb3VyY2UpIHtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkY7XG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xuICB2YXIgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUztcbiAgdmFyIElTX1BST1RPID0gdHlwZSAmICRleHBvcnQuUDtcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xuICB2YXIgSVNfV1JBUCA9IHR5cGUgJiAkZXhwb3J0Llc7XG4gIHZhciBleHBvcnRzID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSk7XG4gIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXTtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV07XG4gIHZhciBrZXksIG93biwgb3V0O1xuICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lO1xuICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIGlmIChvd24gJiYgaGFzKGV4cG9ydHMsIGtleSkpIGNvbnRpbnVlO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTtcbiAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcbiAgICBleHBvcnRzW2tleV0gPSBJU19HTE9CQUwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5jdGlvbicgPyBzb3VyY2Vba2V5XVxuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgOiBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbClcbiAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFyeVxuICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24gKEMpIHtcbiAgICAgIHZhciBGID0gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBDKSB7XG4gICAgICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgQygpO1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEMoYSk7XG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTtcbiAgICAgICAgICB9IHJldHVybiBuZXcgQyhhLCBiLCBjKTtcbiAgICAgICAgfSByZXR1cm4gQy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICAgIEZbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcbiAgICAgIHJldHVybiBGO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIH0pKG91dCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUubWV0aG9kcy4lTkFNRSVcbiAgICBpZiAoSVNfUFJPVE8pIHtcbiAgICAgIChleHBvcnRzLnZpcnR1YWwgfHwgKGV4cG9ydHMudmlydHVhbCA9IHt9KSlba2V5XSA9IG91dDtcbiAgICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5wcm90b3R5cGUuJU5BTUUlXG4gICAgICBpZiAodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSkgaGlkZShleHBQcm90bywga2V5LCBvdXQpO1xuICAgIH1cbiAgfVxufTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuIiwibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iLCIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuIiwiLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVudHJpZXMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaCAoZSkge1xuICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSBhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19oaWRlJykoSXRlcmF0b3JQcm90b3R5cGUsIHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciAkaXRlckNyZWF0ZSA9IHJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbnZhciBGRl9JVEVSQVRPUiA9ICdAQGl0ZXJhdG9yJztcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkge1xuICAgIGlmICghQlVHR1kgJiYga2luZCBpbiBwcm90bykgcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVM7XG4gIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7XG4gIHZhciBwcm90byA9IEJhc2UucHJvdG90eXBlO1xuICB2YXIgJG5hdGl2ZSA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXTtcbiAgdmFyICRkZWZhdWx0ID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVCk7XG4gIHZhciAkZW50cmllcyA9IERFRkFVTFQgPyAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJykgOiB1bmRlZmluZWQ7XG4gIHZhciAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZTtcbiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYgKCRhbnlOYXRpdmUpIHtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZiAoIUxJQlJBUlkgJiYgdHlwZW9mIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgfVxuICB9XG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykge1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gJG5hdGl2ZS5jYWxsKHRoaXMpOyB9O1xuICB9XG4gIC8vIERlZmluZSBpdGVyYXRvclxuICBpZiAoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpIHtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddID0gcmV0dXJuVGhpcztcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoa2V5IGluIG1ldGhvZHMpIHtcbiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iLCJ2YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBTQUZFX0NMT1NJTkcgPSBmYWxzZTtcblxudHJ5IHtcbiAgdmFyIHJpdGVyID0gWzddW0lURVJBVE9SXSgpO1xuICByaXRlclsncmV0dXJuJ10gPSBmdW5jdGlvbiAoKSB7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIEFycmF5LmZyb20ocml0ZXIsIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYywgc2tpcENsb3NpbmcpIHtcbiAgaWYgKCFza2lwQ2xvc2luZyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBzYWZlID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IFs3XTtcbiAgICB2YXIgaXRlciA9IGFycltJVEVSQVRPUl0oKTtcbiAgICBpdGVyLm5leHQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB7IGRvbmU6IHNhZmUgPSB0cnVlIH07IH07XG4gICAgYXJyW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXI7IH07XG4gICAgZXhlYyhhcnIpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIHNhZmU7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuIiwiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcbiIsIi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faGlkZScpO1xuIiwidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcbiIsInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuIiwiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG4iLCIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCIvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcbiIsIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuIiwidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXQgPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIGl0ZXJGbiA9IGdldChpdCk7XG4gIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuICByZXR1cm4gYW5PYmplY3QoaXRlckZuLmNhbGwoaXQpKTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuaXNJdGVyYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTyA9IE9iamVjdChpdCk7XG4gIHJldHVybiBPW0lURVJBVE9SXSAhPT0gdW5kZWZpbmVkXG4gICAgfHwgJ0BAaXRlcmF0b3InIGluIE9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgfHwgSXRlcmF0b3JzLmhhc093blByb3BlcnR5KGNsYXNzb2YoTykpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24gKGl0ZXIpIHsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChtYXBwaW5nKSBtYXBmbiA9IGN0eChtYXBmbiwgYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQygpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBraW5kID0gdGhpcy5faztcbiAgdmFyIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZiAoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpIHtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9lczYuYXJyYXkuaXRlcmF0b3InKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIFRPX1NUUklOR19UQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxudmFyIERPTUl0ZXJhYmxlcyA9ICgnQ1NTUnVsZUxpc3QsQ1NTU3R5bGVEZWNsYXJhdGlvbixDU1NWYWx1ZUxpc3QsQ2xpZW50UmVjdExpc3QsRE9NUmVjdExpc3QsRE9NU3RyaW5nTGlzdCwnICtcbiAgJ0RPTVRva2VuTGlzdCxEYXRhVHJhbnNmZXJJdGVtTGlzdCxGaWxlTGlzdCxIVE1MQWxsQ29sbGVjdGlvbixIVE1MQ29sbGVjdGlvbixIVE1MRm9ybUVsZW1lbnQsSFRNTFNlbGVjdEVsZW1lbnQsJyArXG4gICdNZWRpYUxpc3QsTWltZVR5cGVBcnJheSxOYW1lZE5vZGVNYXAsTm9kZUxpc3QsUGFpbnRSZXF1ZXN0TGlzdCxQbHVnaW4sUGx1Z2luQXJyYXksU1ZHTGVuZ3RoTGlzdCxTVkdOdW1iZXJMaXN0LCcgK1xuICAnU1ZHUGF0aFNlZ0xpc3QsU1ZHUG9pbnRMaXN0LFNWR1N0cmluZ0xpc3QsU1ZHVHJhbnNmb3JtTGlzdCxTb3VyY2VCdWZmZXJMaXN0LFN0eWxlU2hlZXRMaXN0LFRleHRUcmFja0N1ZUxpc3QsJyArXG4gICdUZXh0VHJhY2tMaXN0LFRvdWNoTGlzdCcpLnNwbGl0KCcsJyk7XG5cbmZvciAodmFyIGkgPSAwOyBpIDwgRE9NSXRlcmFibGVzLmxlbmd0aDsgaSsrKSB7XG4gIHZhciBOQU1FID0gRE9NSXRlcmFibGVzW2ldO1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIHByb3RvID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgaWYgKHByb3RvICYmICFwcm90b1tUT19TVFJJTkdfVEFHXSkgaGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IEl0ZXJhdG9ycy5BcnJheTtcbn1cbiIsIi8qISBqcXVlcnkudGFibGVkbmQuanMgMzAtMTItMjAxNyAqL1xuIWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPVwidG91Y2hzdGFydCBtb3VzZWRvd25cIixmPVwidG91Y2htb3ZlIG1vdXNlbW92ZVwiLGc9XCJ0b3VjaGVuZCBtb3VzZXVwXCI7YShjKS5yZWFkeShmdW5jdGlvbigpe2Z1bmN0aW9uIGIoYSl7Zm9yKHZhciBiPXt9LGM9YS5tYXRjaCgvKFteOzpdKykvZyl8fFtdO2MubGVuZ3RoOyliW2Muc2hpZnQoKV09Yy5zaGlmdCgpLnRyaW0oKTtyZXR1cm4gYn1hKFwidGFibGVcIikuZWFjaChmdW5jdGlvbigpe1wiZG5kXCI9PT1hKHRoaXMpLmRhdGEoXCJ0YWJsZVwiKSYmYSh0aGlzKS50YWJsZURuRCh7b25EcmFnU3R5bGU6YSh0aGlzKS5kYXRhKFwib25kcmFnc3R5bGVcIikmJmIoYSh0aGlzKS5kYXRhKFwib25kcmFnc3R5bGVcIikpfHxudWxsLG9uRHJvcFN0eWxlOmEodGhpcykuZGF0YShcIm9uZHJvcHN0eWxlXCIpJiZiKGEodGhpcykuZGF0YShcIm9uZHJvcHN0eWxlXCIpKXx8bnVsbCxvbkRyYWdDbGFzczphKHRoaXMpLmRhdGEoXCJvbmRyYWdjbGFzc1wiKT09PWQmJlwidERuRF93aGlsZURyYWdcInx8YSh0aGlzKS5kYXRhKFwib25kcmFnY2xhc3NcIiksb25Ecm9wOmEodGhpcykuZGF0YShcIm9uZHJvcFwiKSYmbmV3IEZ1bmN0aW9uKFwidGFibGVcIixcInJvd1wiLGEodGhpcykuZGF0YShcIm9uZHJvcFwiKSksb25EcmFnU3RhcnQ6YSh0aGlzKS5kYXRhKFwib25kcmFnc3RhcnRcIikmJm5ldyBGdW5jdGlvbihcInRhYmxlXCIsXCJyb3dcIixhKHRoaXMpLmRhdGEoXCJvbmRyYWdzdGFydFwiKSksb25EcmFnU3RvcDphKHRoaXMpLmRhdGEoXCJvbmRyYWdzdG9wXCIpJiZuZXcgRnVuY3Rpb24oXCJ0YWJsZVwiLFwicm93XCIsYSh0aGlzKS5kYXRhKFwib25kcmFnc3RvcFwiKSksc2Nyb2xsQW1vdW50OmEodGhpcykuZGF0YShcInNjcm9sbGFtb3VudFwiKXx8NSxzZW5zaXRpdml0eTphKHRoaXMpLmRhdGEoXCJzZW5zaXRpdml0eVwiKXx8MTAsaGllcmFyY2h5TGV2ZWw6YSh0aGlzKS5kYXRhKFwiaGllcmFyY2h5bGV2ZWxcIil8fDAsaW5kZW50QXJ0aWZhY3Q6YSh0aGlzKS5kYXRhKFwiaW5kZW50YXJ0aWZhY3RcIil8fCc8ZGl2IGNsYXNzPVwiaW5kZW50XCI+Jm5ic3A7PC9kaXY+JyxhdXRvV2lkdGhBZGp1c3Q6YSh0aGlzKS5kYXRhKFwiYXV0b3dpZHRoYWRqdXN0XCIpfHwhMCxhdXRvQ2xlYW5SZWxhdGlvbnM6YSh0aGlzKS5kYXRhKFwiYXV0b2NsZWFucmVsYXRpb25zXCIpfHwhMCxqc29uUHJldGlmeVNlcGFyYXRvcjphKHRoaXMpLmRhdGEoXCJqc29ucHJldGlmeXNlcGFyYXRvclwiKXx8XCJcXHRcIixzZXJpYWxpemVSZWdleHA6YSh0aGlzKS5kYXRhKFwic2VyaWFsaXplcmVnZXhwXCIpJiZuZXcgUmVnRXhwKGEodGhpcykuZGF0YShcInNlcmlhbGl6ZXJlZ2V4cFwiKSl8fC9bXlxcLV0qJC8sc2VyaWFsaXplUGFyYW1OYW1lOmEodGhpcykuZGF0YShcInNlcmlhbGl6ZXBhcmFtbmFtZVwiKXx8ITEsZHJhZ0hhbmRsZTphKHRoaXMpLmRhdGEoXCJkcmFnaGFuZGxlXCIpfHxudWxsfSl9KX0pLGpRdWVyeS50YWJsZURuRD17Y3VycmVudFRhYmxlOm51bGwsZHJhZ09iamVjdDpudWxsLG1vdXNlT2Zmc2V0Om51bGwsb2xkWDowLG9sZFk6MCxidWlsZDpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy50YWJsZURuRENvbmZpZz1hLmV4dGVuZCh7b25EcmFnU3R5bGU6bnVsbCxvbkRyb3BTdHlsZTpudWxsLG9uRHJhZ0NsYXNzOlwidERuRF93aGlsZURyYWdcIixvbkRyb3A6bnVsbCxvbkRyYWdTdGFydDpudWxsLG9uRHJhZ1N0b3A6bnVsbCxzY3JvbGxBbW91bnQ6NSxzZW5zaXRpdml0eToxMCxoaWVyYXJjaHlMZXZlbDowLGluZGVudEFydGlmYWN0Oic8ZGl2IGNsYXNzPVwiaW5kZW50XCI+Jm5ic3A7PC9kaXY+JyxhdXRvV2lkdGhBZGp1c3Q6ITAsYXV0b0NsZWFuUmVsYXRpb25zOiEwLGpzb25QcmV0aWZ5U2VwYXJhdG9yOlwiXFx0XCIsc2VyaWFsaXplUmVnZXhwOi9bXlxcLV0qJC8sc2VyaWFsaXplUGFyYW1OYW1lOiExLGRyYWdIYW5kbGU6bnVsbH0sYnx8e30pLGEudGFibGVEbkQubWFrZURyYWdnYWJsZSh0aGlzKSx0aGlzLnRhYmxlRG5EQ29uZmlnLmhpZXJhcmNoeUxldmVsJiZhLnRhYmxlRG5ELm1ha2VJbmRlbnRlZCh0aGlzKX0pLHRoaXN9LG1ha2VJbmRlbnRlZDpmdW5jdGlvbihiKXt2YXIgYyxkLGU9Yi50YWJsZURuRENvbmZpZyxmPWIucm93cyxnPWEoZikuZmlyc3QoKS5maW5kKFwidGQ6Zmlyc3RcIilbMF0saD0wLGk9MDtpZihhKGIpLmhhc0NsYXNzKFwiaW5kdGRcIikpcmV0dXJuIG51bGw7ZD1hKGIpLmFkZENsYXNzKFwiaW5kdGRcIikuYXR0cihcInN0eWxlXCIpLGEoYikuY3NzKHt3aGl0ZVNwYWNlOlwibm93cmFwXCJ9KTtmb3IodmFyIGo9MDtqPGYubGVuZ3RoO2orKylpPGEoZltqXSkuZmluZChcInRkOmZpcnN0XCIpLnRleHQoKS5sZW5ndGgmJihpPWEoZltqXSkuZmluZChcInRkOmZpcnN0XCIpLnRleHQoKS5sZW5ndGgsYz1qKTtmb3IoYShnKS5jc3Moe3dpZHRoOlwiYXV0b1wifSksaj0wO2o8ZS5oaWVyYXJjaHlMZXZlbDtqKyspYShmW2NdKS5maW5kKFwidGQ6Zmlyc3RcIikucHJlcGVuZChlLmluZGVudEFydGlmYWN0KTtmb3IoZyYmYShnKS5jc3Moe3dpZHRoOmcub2Zmc2V0V2lkdGh9KSxkJiZhKGIpLmNzcyhkKSxqPTA7ajxlLmhpZXJhcmNoeUxldmVsO2orKylhKGZbY10pLmZpbmQoXCJ0ZDpmaXJzdFwiKS5jaGlsZHJlbihcIjpmaXJzdFwiKS5yZW1vdmUoKTtyZXR1cm4gZS5oaWVyYXJjaHlMZXZlbCYmYShmKS5lYWNoKGZ1bmN0aW9uKCl7KGg9YSh0aGlzKS5kYXRhKFwibGV2ZWxcIil8fDApPD1lLmhpZXJhcmNoeUxldmVsJiZhKHRoaXMpLmRhdGEoXCJsZXZlbFwiLGgpfHxhKHRoaXMpLmRhdGEoXCJsZXZlbFwiLDApO2Zvcih2YXIgYj0wO2I8YSh0aGlzKS5kYXRhKFwibGV2ZWxcIik7YisrKWEodGhpcykuZmluZChcInRkOmZpcnN0XCIpLnByZXBlbmQoZS5pbmRlbnRBcnRpZmFjdCl9KSx0aGlzfSxtYWtlRHJhZ2dhYmxlOmZ1bmN0aW9uKGIpe3ZhciBjPWIudGFibGVEbkRDb25maWc7Yy5kcmFnSGFuZGxlJiZhKGMuZHJhZ0hhbmRsZSxiKS5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5iaW5kKGUsZnVuY3Rpb24oZCl7cmV0dXJuIGEudGFibGVEbkQuaW5pdGlhbGlzZURyYWcoYSh0aGlzKS5wYXJlbnRzKFwidHJcIilbMF0sYix0aGlzLGQsYyksITF9KX0pfHxhKGIucm93cykuZWFjaChmdW5jdGlvbigpe2EodGhpcykuaGFzQ2xhc3MoXCJub2RyYWdcIik/YSh0aGlzKS5jc3MoXCJjdXJzb3JcIixcIlwiKTphKHRoaXMpLmJpbmQoZSxmdW5jdGlvbihkKXtpZihcIlREXCI9PT1kLnRhcmdldC50YWdOYW1lKXJldHVybiBhLnRhYmxlRG5ELmluaXRpYWxpc2VEcmFnKHRoaXMsYix0aGlzLGQsYyksITF9KS5jc3MoXCJjdXJzb3JcIixcIm1vdmVcIil9KX0sY3VycmVudE9yZGVyOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5jdXJyZW50VGFibGUucm93cztyZXR1cm4gYS5tYXAoYixmdW5jdGlvbihiKXtyZXR1cm4oYShiKS5kYXRhKFwibGV2ZWxcIikrYi5pZCkucmVwbGFjZSgvXFxzL2csXCJcIil9KS5qb2luKFwiXCIpfSxpbml0aWFsaXNlRHJhZzpmdW5jdGlvbihiLGQsZSxoLGkpe3RoaXMuZHJhZ09iamVjdD1iLHRoaXMuY3VycmVudFRhYmxlPWQsdGhpcy5tb3VzZU9mZnNldD10aGlzLmdldE1vdXNlT2Zmc2V0KGUsaCksdGhpcy5vcmlnaW5hbE9yZGVyPXRoaXMuY3VycmVudE9yZGVyKCksYShjKS5iaW5kKGYsdGhpcy5tb3VzZW1vdmUpLmJpbmQoZyx0aGlzLm1vdXNldXApLGkub25EcmFnU3RhcnQmJmkub25EcmFnU3RhcnQoZCxlKX0sdXBkYXRlVGFibGVzOmZ1bmN0aW9uKCl7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy50YWJsZURuRENvbmZpZyYmYS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpfSl9LG1vdXNlQ29vcmRzOmZ1bmN0aW9uKGEpe3JldHVybiBhLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXM/e3g6YS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFgseTphLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WX06YS5wYWdlWHx8YS5wYWdlWT97eDphLnBhZ2VYLHk6YS5wYWdlWX06e3g6YS5jbGllbnRYK2MuYm9keS5zY3JvbGxMZWZ0LWMuYm9keS5jbGllbnRMZWZ0LHk6YS5jbGllbnRZK2MuYm9keS5zY3JvbGxUb3AtYy5ib2R5LmNsaWVudFRvcH19LGdldE1vdXNlT2Zmc2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQsZTtyZXR1cm4gYz1jfHxiLmV2ZW50LGU9dGhpcy5nZXRQb3NpdGlvbihhKSxkPXRoaXMubW91c2VDb29yZHMoYykse3g6ZC54LWUueCx5OmQueS1lLnl9fSxnZXRQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj0wLGM9MDtmb3IoMD09PWEub2Zmc2V0SGVpZ2h0JiYoYT1hLmZpcnN0Q2hpbGQpO2Eub2Zmc2V0UGFyZW50OyliKz1hLm9mZnNldExlZnQsYys9YS5vZmZzZXRUb3AsYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYis9YS5vZmZzZXRMZWZ0LGMrPWEub2Zmc2V0VG9wLHt4OmIseTpjfX0sYXV0b1Njcm9sbDpmdW5jdGlvbihhKXt2YXIgZD10aGlzLmN1cnJlbnRUYWJsZS50YWJsZURuRENvbmZpZyxlPWIucGFnZVlPZmZzZXQsZj1iLmlubmVySGVpZ2h0P2IuaW5uZXJIZWlnaHQ6Yy5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0P2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDpjLmJvZHkuY2xpZW50SGVpZ2h0O2MuYWxsJiYodm9pZCAwIT09Yy5jb21wYXRNb2RlJiZcIkJhY2tDb21wYXRcIiE9PWMuY29tcGF0TW9kZT9lPWMuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDp2b2lkIDAhPT1jLmJvZHkmJihlPWMuYm9keS5zY3JvbGxUb3ApKSxhLnktZTxkLnNjcm9sbEFtb3VudCYmYi5zY3JvbGxCeSgwLC1kLnNjcm9sbEFtb3VudCl8fGYtKGEueS1lKTxkLnNjcm9sbEFtb3VudCYmYi5zY3JvbGxCeSgwLGQuc2Nyb2xsQW1vdW50KX0sbW92ZVZlcnRpY2xlOmZ1bmN0aW9uKGEsYil7MCE9PWEudmVydGljYWwmJmImJnRoaXMuZHJhZ09iamVjdCE9PWImJnRoaXMuZHJhZ09iamVjdC5wYXJlbnROb2RlPT09Yi5wYXJlbnROb2RlJiYoMD5hLnZlcnRpY2FsJiZ0aGlzLmRyYWdPYmplY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5kcmFnT2JqZWN0LGIubmV4dFNpYmxpbmcpfHwwPGEudmVydGljYWwmJnRoaXMuZHJhZ09iamVjdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmRyYWdPYmplY3QsYikpfSxtb3ZlSG9yaXpvbnRhbDpmdW5jdGlvbihiLGMpe3ZhciBkLGU9dGhpcy5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7aWYoIWUuaGllcmFyY2h5TGV2ZWx8fDA9PT1iLmhvcml6b250YWx8fCFjfHx0aGlzLmRyYWdPYmplY3QhPT1jKXJldHVybiBudWxsO2Q9YShjKS5kYXRhKFwibGV2ZWxcIiksMDxiLmhvcml6b250YWwmJmQ+MCYmYShjKS5maW5kKFwidGQ6Zmlyc3RcIikuY2hpbGRyZW4oXCI6Zmlyc3RcIikucmVtb3ZlKCkmJmEoYykuZGF0YShcImxldmVsXCIsLS1kKSwwPmIuaG9yaXpvbnRhbCYmZDxlLmhpZXJhcmNoeUxldmVsJiZhKGMpLnByZXYoKS5kYXRhKFwibGV2ZWxcIik+PWQmJmEoYykuY2hpbGRyZW4oXCI6Zmlyc3RcIikucHJlcGVuZChlLmluZGVudEFydGlmYWN0KSYmYShjKS5kYXRhKFwibGV2ZWxcIiwrK2QpfSxtb3VzZW1vdmU6ZnVuY3Rpb24oYil7dmFyIGMsZCxlLGYsZyxoPWEoYS50YWJsZURuRC5kcmFnT2JqZWN0KSxpPWEudGFibGVEbkQuY3VycmVudFRhYmxlLnRhYmxlRG5EQ29uZmlnO3JldHVybiBiJiZiLnByZXZlbnREZWZhdWx0KCksISFhLnRhYmxlRG5ELmRyYWdPYmplY3QmJihcInRvdWNobW92ZVwiPT09Yi50eXBlJiZldmVudC5wcmV2ZW50RGVmYXVsdCgpLGkub25EcmFnQ2xhc3MmJmguYWRkQ2xhc3MoaS5vbkRyYWdDbGFzcyl8fGguY3NzKGkub25EcmFnU3R5bGUpLGQ9YS50YWJsZURuRC5tb3VzZUNvb3JkcyhiKSxmPWQueC1hLnRhYmxlRG5ELm1vdXNlT2Zmc2V0LngsZz1kLnktYS50YWJsZURuRC5tb3VzZU9mZnNldC55LGEudGFibGVEbkQuYXV0b1Njcm9sbChkKSxjPWEudGFibGVEbkQuZmluZERyb3BUYXJnZXRSb3coaCxnKSxlPWEudGFibGVEbkQuZmluZERyYWdEaXJlY3Rpb24oZixnKSxhLnRhYmxlRG5ELm1vdmVWZXJ0aWNsZShlLGMpLGEudGFibGVEbkQubW92ZUhvcml6b250YWwoZSxjKSwhMSl9LGZpbmREcmFnRGlyZWN0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWcuc2Vuc2l0aXZpdHksZD10aGlzLm9sZFgsZT10aGlzLm9sZFksZj1kLWMsZz1kK2MsaD1lLWMsaT1lK2Msaj17aG9yaXpvbnRhbDphPj1mJiZhPD1nPzA6YT5kPy0xOjEsdmVydGljYWw6Yj49aCYmYjw9aT8wOmI+ZT8tMToxfTtyZXR1cm4gMCE9PWouaG9yaXpvbnRhbCYmKHRoaXMub2xkWD1hKSwwIT09ai52ZXJ0aWNhbCYmKHRoaXMub2xkWT1iKSxqfSxmaW5kRHJvcFRhcmdldFJvdzpmdW5jdGlvbihiLGMpe2Zvcih2YXIgZD0wLGU9dGhpcy5jdXJyZW50VGFibGUucm93cyxmPXRoaXMuY3VycmVudFRhYmxlLnRhYmxlRG5EQ29uZmlnLGc9MCxoPW51bGwsaT0wO2k8ZS5sZW5ndGg7aSsrKWlmKGg9ZVtpXSxnPXRoaXMuZ2V0UG9zaXRpb24oaCkueSxkPXBhcnNlSW50KGgub2Zmc2V0SGVpZ2h0KS8yLDA9PT1oLm9mZnNldEhlaWdodCYmKGc9dGhpcy5nZXRQb3NpdGlvbihoLmZpcnN0Q2hpbGQpLnksZD1wYXJzZUludChoLmZpcnN0Q2hpbGQub2Zmc2V0SGVpZ2h0KS8yKSxjPmctZCYmYzxnK2QpcmV0dXJuIGIuaXMoaCl8fGYub25BbGxvd0Ryb3AmJiFmLm9uQWxsb3dEcm9wKGIsaCl8fGEoaCkuaGFzQ2xhc3MoXCJub2Ryb3BcIik/bnVsbDpoO3JldHVybiBudWxsfSxwcm9jZXNzTW91c2V1cDpmdW5jdGlvbigpe2lmKCF0aGlzLmN1cnJlbnRUYWJsZXx8IXRoaXMuZHJhZ09iamVjdClyZXR1cm4gbnVsbDt2YXIgYj10aGlzLmN1cnJlbnRUYWJsZS50YWJsZURuRENvbmZpZyxkPXRoaXMuZHJhZ09iamVjdCxlPTAsaD0wO2EoYykudW5iaW5kKGYsdGhpcy5tb3VzZW1vdmUpLnVuYmluZChnLHRoaXMubW91c2V1cCksYi5oaWVyYXJjaHlMZXZlbCYmYi5hdXRvQ2xlYW5SZWxhdGlvbnMmJmEodGhpcy5jdXJyZW50VGFibGUucm93cykuZmlyc3QoKS5maW5kKFwidGQ6Zmlyc3RcIikuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7KGg9YSh0aGlzKS5wYXJlbnRzKFwidHI6Zmlyc3RcIikuZGF0YShcImxldmVsXCIpKSYmYSh0aGlzKS5wYXJlbnRzKFwidHI6Zmlyc3RcIikuZGF0YShcImxldmVsXCIsLS1oKSYmYSh0aGlzKS5yZW1vdmUoKX0pJiZiLmhpZXJhcmNoeUxldmVsPjEmJmEodGhpcy5jdXJyZW50VGFibGUucm93cykuZWFjaChmdW5jdGlvbigpe2lmKChoPWEodGhpcykuZGF0YShcImxldmVsXCIpKT4xKWZvcihlPWEodGhpcykucHJldigpLmRhdGEoXCJsZXZlbFwiKTtoPmUrMTspYSh0aGlzKS5maW5kKFwidGQ6Zmlyc3RcIikuY2hpbGRyZW4oXCI6Zmlyc3RcIikucmVtb3ZlKCksYSh0aGlzKS5kYXRhKFwibGV2ZWxcIiwtLWgpfSksYi5vbkRyYWdDbGFzcyYmYShkKS5yZW1vdmVDbGFzcyhiLm9uRHJhZ0NsYXNzKXx8YShkKS5jc3MoYi5vbkRyb3BTdHlsZSksdGhpcy5kcmFnT2JqZWN0PW51bGwsYi5vbkRyb3AmJnRoaXMub3JpZ2luYWxPcmRlciE9PXRoaXMuY3VycmVudE9yZGVyKCkmJmEoZCkuaGlkZSgpLmZhZGVJbihcImZhc3RcIikmJmIub25Ecm9wKHRoaXMuY3VycmVudFRhYmxlLGQpLGIub25EcmFnU3RvcCYmYi5vbkRyYWdTdG9wKHRoaXMuY3VycmVudFRhYmxlLGQpLHRoaXMuY3VycmVudFRhYmxlPW51bGx9LG1vdXNldXA6ZnVuY3Rpb24oYil7cmV0dXJuIGImJmIucHJldmVudERlZmF1bHQoKSxhLnRhYmxlRG5ELnByb2Nlc3NNb3VzZXVwKCksITF9LGpzb25pemU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jdXJyZW50VGFibGU7cmV0dXJuIGE/SlNPTi5zdHJpbmdpZnkodGhpcy50YWJsZURhdGEoYiksbnVsbCxiLnRhYmxlRG5EQ29uZmlnLmpzb25QcmV0aWZ5U2VwYXJhdG9yKTpKU09OLnN0cmluZ2lmeSh0aGlzLnRhYmxlRGF0YShiKSl9LHNlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBhLnBhcmFtKHRoaXMudGFibGVEYXRhKHRoaXMuY3VycmVudFRhYmxlKSl9LHNlcmlhbGl6ZVRhYmxlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1cIlwiLGM9YS50YWJsZURuRENvbmZpZy5zZXJpYWxpemVQYXJhbU5hbWV8fGEuaWQsZD1hLnJvd3MsZT0wO2U8ZC5sZW5ndGg7ZSsrKXtiLmxlbmd0aD4wJiYoYis9XCImXCIpO3ZhciBmPWRbZV0uaWQ7ZiYmYS50YWJsZURuRENvbmZpZyYmYS50YWJsZURuRENvbmZpZy5zZXJpYWxpemVSZWdleHAmJihmPWYubWF0Y2goYS50YWJsZURuRENvbmZpZy5zZXJpYWxpemVSZWdleHApWzBdLGIrPWMrXCJbXT1cIitmKX1yZXR1cm4gYn0sc2VyaWFsaXplVGFibGVzOmZ1bmN0aW9uKCl7dmFyIGI9W107cmV0dXJuIGEoXCJ0YWJsZVwiKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5pZCYmYi5wdXNoKGEucGFyYW0oYS50YWJsZURuRC50YWJsZURhdGEodGhpcykpKX0pLGIuam9pbihcIiZcIil9LHRhYmxlRGF0YTpmdW5jdGlvbihiKXt2YXIgYyxkLGUsZixnPWIudGFibGVEbkRDb25maWcsaD1bXSxpPTAsaj0wLGs9bnVsbCxsPXt9O2lmKGJ8fChiPXRoaXMuY3VycmVudFRhYmxlKSwhYnx8IWIucm93c3x8IWIucm93cy5sZW5ndGgpcmV0dXJue2Vycm9yOntjb2RlOjUwMCxtZXNzYWdlOlwiTm90IGEgdmFsaWQgdGFibGUuXCJ9fTtpZighYi5pZCYmIWcuc2VyaWFsaXplUGFyYW1OYW1lKXJldHVybntlcnJvcjp7Y29kZTo1MDAsbWVzc2FnZTpcIk5vIHNlcmlhbGl6YWJsZSB1bmlxdWUgaWQgcHJvdmlkZWQuXCJ9fTtmPWcuYXV0b0NsZWFuUmVsYXRpb25zJiZiLnJvd3N8fGEubWFrZUFycmF5KGIucm93cyksZD1nLnNlcmlhbGl6ZVBhcmFtTmFtZXx8Yi5pZCxlPWQsYz1mdW5jdGlvbihhKXtyZXR1cm4gYSYmZyYmZy5zZXJpYWxpemVSZWdleHA/YS5tYXRjaChnLnNlcmlhbGl6ZVJlZ2V4cClbMF06YX0sbFtlXT1bXSwhZy5hdXRvQ2xlYW5SZWxhdGlvbnMmJmEoZlswXSkuZGF0YShcImxldmVsXCIpJiZmLnVuc2hpZnQoe2lkOlwidW5kZWZpbmVkXCJ9KTtmb3IodmFyIG09MDttPGYubGVuZ3RoO20rKylpZihnLmhpZXJhcmNoeUxldmVsKXtpZigwPT09KGo9YShmW21dKS5kYXRhKFwibGV2ZWxcIil8fDApKWU9ZCxoPVtdO2Vsc2UgaWYoaj5pKWgucHVzaChbZSxpXSksZT1jKGZbbS0xXS5pZCk7ZWxzZSBpZihqPGkpZm9yKHZhciBuPTA7bjxoLmxlbmd0aDtuKyspaFtuXVsxXT09PWomJihlPWhbbl1bMF0pLGhbbl1bMV0+PWkmJihoW25dWzFdPTApO2k9aixhLmlzQXJyYXkobFtlXSl8fChsW2VdPVtdKSxrPWMoZlttXS5pZCksayYmbFtlXS5wdXNoKGspfWVsc2Uoaz1jKGZbbV0uaWQpKSYmbFtlXS5wdXNoKGspO3JldHVybiBsfX0salF1ZXJ5LmZuLmV4dGVuZCh7dGFibGVEbkQ6YS50YWJsZURuRC5idWlsZCx0YWJsZURuRFVwZGF0ZTphLnRhYmxlRG5ELnVwZGF0ZVRhYmxlcyx0YWJsZURuRFNlcmlhbGl6ZTphLnByb3h5KGEudGFibGVEbkQuc2VyaWFsaXplLGEudGFibGVEbkQpLHRhYmxlRG5EU2VyaWFsaXplQWxsOmEudGFibGVEbkQuc2VyaWFsaXplVGFibGVzLHRhYmxlRG5ERGF0YTphLnByb3h5KGEudGFibGVEbkQudGFibGVEYXRhLGEudGFibGVEbkQpfSl9KGpRdWVyeSx3aW5kb3csd2luZG93LmRvY3VtZW50KTsiLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcImpRdWVyeVwiXTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgU2hvd2Nhc2VDYXJkIGZyb20gJ0Bjb21wb25lbnRzL3Nob3djYXNlLWNhcmQvc2hvd2Nhc2UtY2FyZCc7XG5pbXBvcnQgU2hvd2Nhc2VDYXJkQ2xvc2VFeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvc2hvd2Nhc2UtY2FyZC9leHRlbnNpb24vc2hvd2Nhc2UtY2FyZC1jbG9zZS1leHRlbnNpb24nO1xuaW1wb3J0IEdyaWQgZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9ncmlkJztcbmltcG9ydCBTb3J0aW5nRXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3NvcnRpbmctZXh0ZW5zaW9uJztcbmltcG9ydCBGaWx0ZXJzUmVzZXRFeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vZmlsdGVycy1yZXNldC1leHRlbnNpb24nO1xuaW1wb3J0IFJlbG9hZExpc3RBY3Rpb25FeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vcmVsb2FkLWxpc3QtZXh0ZW5zaW9uJztcbmltcG9ydCBDb2x1bW5Ub2dnbGluZ0V4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9jb2x1bW4tdG9nZ2xpbmctZXh0ZW5zaW9uJztcbmltcG9ydCBTdWJtaXRSb3dBY3Rpb25FeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vYWN0aW9uL3Jvdy9zdWJtaXQtcm93LWFjdGlvbi1leHRlbnNpb24nO1xuaW1wb3J0IFN1Ym1pdEJ1bGtFeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vc3VibWl0LWJ1bGstYWN0aW9uLWV4dGVuc2lvbic7XG5pbXBvcnQgQnVsa0FjdGlvbkNoZWNrYm94RXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2J1bGstYWN0aW9uLWNoZWNrYm94LWV4dGVuc2lvbic7XG5pbXBvcnQgRXhwb3J0VG9TcWxNYW5hZ2VyRXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2V4cG9ydC10by1zcWwtbWFuYWdlci1leHRlbnNpb24nO1xuaW1wb3J0IEZpbHRlcnNTdWJtaXRCdXR0b25FbmFibGVyRXh0ZW5zaW9uXG4gIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2ZpbHRlcnMtc3VibWl0LWJ1dHRvbi1lbmFibGVyLWV4dGVuc2lvbic7XG5pbXBvcnQgTGlua1Jvd0FjdGlvbkV4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9saW5rLXJvdy1hY3Rpb24tZXh0ZW5zaW9uJztcbmltcG9ydCBQb3NpdGlvbkV4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9wb3NpdGlvbi1leHRlbnNpb24nO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbiQoKCkgPT4ge1xuICBjb25zdCBjYXJyaWVyR3JpZCA9IG5ldyBHcmlkKCdjYXJyaWVyJyk7XG5cbiAgY2FycmllckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBTb3J0aW5nRXh0ZW5zaW9uKCkpO1xuICBjYXJyaWVyR3JpZC5hZGRFeHRlbnNpb24obmV3IFJlbG9hZExpc3RBY3Rpb25FeHRlbnNpb24oKSk7XG4gIGNhcnJpZXJHcmlkLmFkZEV4dGVuc2lvbihuZXcgUG9zaXRpb25FeHRlbnNpb24oKSk7XG4gIGNhcnJpZXJHcmlkLmFkZEV4dGVuc2lvbihuZXcgRmlsdGVyc1N1Ym1pdEJ1dHRvbkVuYWJsZXJFeHRlbnNpb24oKSk7XG4gIGNhcnJpZXJHcmlkLmFkZEV4dGVuc2lvbihuZXcgRmlsdGVyc1Jlc2V0RXh0ZW5zaW9uKCkpO1xuICBjYXJyaWVyR3JpZC5hZGRFeHRlbnNpb24obmV3IEV4cG9ydFRvU3FsTWFuYWdlckV4dGVuc2lvbigpKTtcbiAgY2FycmllckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBDb2x1bW5Ub2dnbGluZ0V4dGVuc2lvbigpKTtcbiAgY2FycmllckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBMaW5rUm93QWN0aW9uRXh0ZW5zaW9uKCkpO1xuICBjYXJyaWVyR3JpZC5hZGRFeHRlbnNpb24obmV3IFN1Ym1pdFJvd0FjdGlvbkV4dGVuc2lvbigpKTtcbiAgY2FycmllckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBTdWJtaXRCdWxrRXh0ZW5zaW9uKCkpO1xuICBjYXJyaWVyR3JpZC5hZGRFeHRlbnNpb24obmV3IEJ1bGtBY3Rpb25DaGVja2JveEV4dGVuc2lvbigpKTtcblxuICBjb25zdCBzaG93Y2FzZUNhcmQgPSBuZXcgU2hvd2Nhc2VDYXJkKCdjYXJyaWVyc1Nob3djYXNlQ2FyZCcpO1xuICBzaG93Y2FzZUNhcmQuYWRkRXh0ZW5zaW9uKG5ldyBTaG93Y2FzZUNhcmRDbG9zZUV4dGVuc2lvbigpKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==