(()=>{"use strict";const e="/productos/",t="product",o="home";!function(){const n=new Date,r="10000000-1000-4000-8000-100000000000".replace(/[018]/g,(e=>{const t=+e;return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)})),i=[".js-product-variants"],d=document.querySelector('script[data-id][data-name="nuvemAddiWidget"]'),a=d.getAttribute("data-element-reference"),c=d.getAttribute("data-ally-slug"),u={showBanner:!1,bannerId:"",bannerElementRef:""},l={borderColor:d.getAttribute("widget-border-color"),borderRadius:d.getAttribute("widget-border-radius"),fontColor:d.getAttribute("widget-font-color"),fontFamily:d.getAttribute("widget-font-family"),fontSize:d.getAttribute("widget-font-size"),badgeBackgroundColor:d.getAttribute("widget-badge-background-color"),infoBackgroundColor:d.getAttribute("widget-info-background-color"),iconType:d.getAttribute("widget-addi-icon-type"),iconSize:d.getAttribute("widget-addi-icon-size"),margin:d.getAttribute("widget-margin")},s={backgroundColor:d.getAttribute("modal-background-color"),fontColor:d.getAttribute("modal-font-color"),fontFamily:d.getAttribute("modal-font-family"),priceColor:d.getAttribute("modal-price-color"),badgeBackgroundColor:d.getAttribute("modal-badge-background-color"),badgeFontColor:d.getAttribute("modal-badge-font-color"),badgeBorderRadius:d.getAttribute("modal-badge-border-radius"),cardColor:d.getAttribute("modal-card-color"),buttonBorderColor:d.getAttribute("modal-button-border-color"),buttonBorderRadius:d.getAttribute("modal-button-border-radius"),buttonBackgroundColor:d.getAttribute("modal-button-background-color"),buttonFontColor:d.getAttribute("modal-button-font-color")};let g=null,m=null;const b=()=>{var e,t;e=r,t=c,m=(o="",n={})=>(({source:e,id:t,title:o,params:n,channel:r,allySlug:i})=>{const d={id:t,title:o,params:{executedAt:(new Date).toString(),...n},properties:{channel:r,allySlug:i}};return(async(e,t,o={},n={})=>{const r=`${e}${t}`;return n={method:"POST",headers:{"content-type":"application/json"},...n},await fetch(r,{...n,body:o}).then((e=>e.json())).catch((e=>e))})("https://logger.addi.com",`/api/events/${e}`,JSON.stringify(d))})({id:e,title:o,params:n,source:"ALLY_INTEGRATION_PRODUCT",channel:"E_COMMERCE_NUVEMSHOP",allySlug:t}).then()};function w(e){if(e)return g=document.querySelector(e),g;for(let e=0;ee.available))).price_number)}n===o&&(u.showBanner="true"===d.getAttribute("data-show-banner"),u.bannerElementRef=d.getAttribute("data-banner-element-reference"),u.bannerId=d.getAttribute("data-banner-id"),u.showBanner&&function(){const e=g||w(u.bannerElementRef);if(e){const t=document.getElementsByTagName("addi-home-banner");t[0]&&t[0].remove();const o=document.createElement("addi-home-banner");u.bannerId&&(o.setAttribute("ally-slug",c),o.setAttribute("banner-id",u.bannerId)),f(o,e),setTimeout((()=>{const e=document.querySelector("addi-home-banner");e||console.log("Banner was NOT created"),e?.shadowRoot?.hasChildNodes()||console.log("Banner was NOT inserted")}),7e3)}else console.log("No reference node was not found for home banner.")}())}function A(e){const t=g||w(a);if(t){const o=document.getElementsByTagName("addi-product-widget");o[0]&&o[0].remove();const r=document.createElement("addi-product-widget");r.setAttribute("ally-slug",c),r.setAttribute("price",e),r.setAttribute("country","co"),r.setAttribute("custom-widget-styles",function(){const e=e=>{const t=Object.keys(e),o={};for(let n=0;n{m&&m("PDP_SCRIPT.WIDGET_CLICKED")})),f(r,t);const i=new Date;m&&m("PDP_SCRIPT.WIDGET_INSERTED",{onScriptInitTimeMs:n.getTime(),onWdgInsertedTimeMs:i.getTime(),onWdgInsertedDurationMs:i.getTime()-n.getTime()}),setTimeout((()=>{const e=document.querySelector("addi-product-widget");e||(console.log("Widget was NOT created"),m&&m("PDP_SCRIPT.WIDGET_NOT_INSERTED",{onScriptInitTimeMs:n.getTime(),widgetInsertionFailedTimeMs:i.getTime()})),e?.shadowRoot?.hasChildNodes()||m&&m("PDP_SCRIPT.WIDGET_NOT_DISPLAYED",{onScriptInitTimeMs:n.getTime(),widgetInsertionFailedTimeMs:i.getTime()})}),7e3)}else console.log("No reference node was not found.")}"complete"===document.readyState||"interactive"===document.readyState?p():window.addEventListener("DOMContentLoaded",p),window?.LS?.registerOnChangeVariant&&window?.LS?.registerOnChangeVariant((function(e){A(e.price_number)}))}()})(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnV2ZW0td2lkZ2V0LXdyYXBwZXItY28uYnVuZGxlLm1pbi5qcyIsIm1hcHBpbmdzIjoibUJBS08sTUNtQk1BLEVBQ0YsY0FJRUMsRUFDRixVQURFQSxFQUVMLFFDM0JSLFdBZ0NFLE1BQU1DLEVBQW1CLElBQUlDLEtBQ3ZCQyxFRi9CRSx1Q0FBdUNDLFFBQVEsVUFBV0MsSUFDaEUsTUFBTUMsR0FBT0QsRUFDYixPQUFRQyxFQUFNQyxPQUFPQyxnQkFBZ0IsSUFBSUMsV0FBVyxJQUFJLEdBQUssSUFBTUgsRUFBTSxHQUFHSSxTQUFTLEdBQUcsSUUrQnBGQyxFQUFvQixDQUN4Qix3QkFFSUMsRUFBa0JDLFNBQVNDLGNBQWMsZ0RBQ3pDQyxFQUFrQ0gsRUFBZ0JJLGFBQWEsMEJBQy9EQyxFQUFZTCxFQUFnQkksYUFBYSxrQkFDekNFLEVBQXFCLENBQ3pCQyxZQUFZLEVBQ1pDLFNBQVUsR0FDVkMsaUJBQWtCLElBR2RDLEVBQXVCLENBQzNCQyxZQUFhWCxFQUFnQkksYUFBYSx1QkFDMUNRLGFBQWNaLEVBQWdCSSxhQUFhLHdCQUMzQ1MsVUFBV2IsRUFBZ0JJLGFBQWEscUJBQ3hDVSxXQUFZZCxFQUFnQkksYUFBYSxzQkFDekNXLFNBQVVmLEVBQWdCSSxhQUFhLG9CQUN2Q1kscUJBQXNCaEIsRUFBZ0JJLGFBQWEsaUNBQ25EYSxvQkFBcUJqQixFQUFnQkksYUFBYSxnQ0FDbERjLFNBQVVsQixFQUFnQkksYUFBYSx5QkFDdkNlLFNBQVVuQixFQUFnQkksYUFBYSx5QkFDdkNnQixPQUFRcEIsRUFBZ0JJLGFBQWEsa0JBR2pDaUIsRUFBc0IsQ0FDMUJDLGdCQUFpQnRCLEVBQWdCSSxhQUFhLDBCQUM5Q1MsVUFBV2IsRUFBZ0JJLGFBQWEsb0JBQ3hDVSxXQUFZZCxFQUFnQkksYUFBYSxxQkFDekNtQixXQUFZdkIsRUFBZ0JJLGFBQWEscUJBQ3pDWSxxQkFBc0JoQixFQUFnQkksYUFBYSxnQ0FDbkRvQixlQUFnQnhCLEVBQWdCSSxhQUFhLDBCQUM3Q3FCLGtCQUFtQnpCLEVBQWdCSSxhQUFhLDZCQUNoRHNCLFVBQVcxQixFQUFnQkksYUFBYSxvQkFDeEN1QixrQkFBbUIzQixFQUFnQkksYUFBYSw2QkFDaER3QixtQkFBb0I1QixFQUFnQkksYUFBYSw4QkFDakR5QixzQkFBdUI3QixFQUFnQkksYUFBYSxpQ0FDcEQwQixnQkFBaUI5QixFQUFnQkksYUFBYSw0QkFHaEQsSUFBSTJCLEVBQXVCLEtBQ3ZCQyxFQUFtQixLQVF2QixNQUFNQyxFQUF1QixLQ3JGTyxJQUNwQ0MsRUFDQUMsRUFEQUQsRURxRjRDM0MsRUNwRjVDNEMsRURvRmtEOUIsRUFBaEQyQixFQ2xGSyxDQUNMSSxFQUFRLEdBQ1JDLEVBQVMsQ0FBQyxJQ05tQixHQUFHQyxTQUFRSixLQUFJRSxRQUFPQyxTQUFRRSxVQUFTSixlQUN0RSxNQUFNSyxFQUFPLENBQ1hOLEtBQ0FFLFFBQ0FDLE9BQVEsQ0FDTkksWUFBWSxJQUFLbkQsTUFBUVEsY0FDdEJ1QyxHQUVMSyxXQUFZLENBQ1ZILFVBQ0FKLGFBSUosTUNqQnNCUSxPQUFPQyxFQUFRQyxFQUFNTCxFQUFPLENBQUMsRUFBR00sRUFBVSxDQUFDLEtBQ2pFLE1BQU1DLEVBQU0sR0FBR0gsSUFBU0MsSUFTeEIsT0FSQUMsRUFBVSxDQUNSRSxPQUFRLE9BQ1JDLFFBQVMsQ0FDUCxlQUFnQix1QkFFZkgsU0FHUUksTUFBTUgsRUFBSyxJQUFLRCxFQUFTTixTQUNuQ1csTUFBS0MsR0FBWUEsRUFBU0MsU0FDMUJDLE9BQU9DLEdBQVVBLEdBQU0sRURLbkJDLENIQXdCLDBCR0FJLGVBQWVsQixJQUFVbUIsS0FBS0MsVUFBVWxCLEdBQU0sRURQNUVtQixDQUFrQixDQUNyQnpCLEtBQ0FFLFFBQ0FDLFNBQ0FDLE9GYndCLDJCRWN4QkMsUUZBbUIsdUJFQ25CSixhQUNDZ0IsTUR3RXlELEVBUzVELFNBQVNTLEVBQWtCQyxHQUN6QixHQUFJQSxFQUVGLE9BREE5QixFQUF1QjlCLFNBQVNDLGNBQWMyRCxHQUN2QzlCLEVBRVAsSUFBSyxJQUFJK0IsRUFBSSxFQUFHQSxFQUFJL0QsRUFBa0JnRSxPQUFRRCxJQUU1QyxHQURBL0IsRUFBdUI5QixTQUFTQyxjQUFjSCxFQUFrQitELElBQzVEL0IsRUFBc0IsT0FBT0EsRUFHbkMsT0FBTyxJQUVYLENBUUEsU0FBU2lDLEVBQWFDLEVBQVNDLEdBQzdCQSxFQUFjQyxXQUFXQyxhQUFhSCxFQUFTQyxFQUFjRyxZQUMvRCxDQUVBLFNBQVNDLElBQ1AsTUFBTUMsRUFBZ0JDLE9BQU9DLEdBQUtELE9BQU9DLEdBQUdDLFNBZ0M5QyxXQUNFLE1BQU1DLEVBQWNILE9BQU9JLFNBQVNDLFNBRXBDLE1EcElJLE1Db0lBRixFQUNLdkYsRUFDRXVGLEVBQVlHLFNBQVMzRixJQUE2QndGLEVBQVlJLFNBQVM1RixHQUN6RUMsRUFHRixFQUNULENBMUN5RDRGLEdBS3ZELEdBbEhGLFNBQWlDQyxHQUMvQixHQUFJQSxJQUFrQjdGLEVBQWlCLENBQ3JDLE1BQU04RixFQUF3QmpGLFNBQVNrRixjQUFjLFVBQ3JERCxFQUFzQkUsS0FBTyxTQUM3QkYsRUFBc0JHLElESVEsNEVDSDlCcEYsU0FBU3FGLEtBQUtDLE9BQU9MLEVBQ3ZCLENBRUEsR0FBSUQsSUFBa0I3RixFQUFvQixDQUN4QyxNQUFNb0csRUFBc0J2RixTQUFTa0YsY0FBYyxVQUNuREssRUFBb0JKLEtBQU8sU0FDM0JJLEVBQW9CSCxJRExTLG9GQ003QnBGLFNBQVNxRixLQUFLQyxPQUFPQyxFQUN2QixDQUNGLENBaUdFQyxDQUF1QmxCLEdBQ3ZCdEMsSUFFSXNDLElBQWtCbkYsRUFBb0IsQ0FDeEMsTUFBTXNHLEVBQWNsQixPQUFPQyxJQUFNLENBQUMsRUFJbENrQixHQUhvQkQsRUFBWUUsVUFBWUYsRUFBWUUsU0FBU0MsTUFBS0MsR0FBV0EsRUFBUUMsYUFDeERDLGFBR25DLENBRUl6QixJQUFrQm5GLElBQ3BCa0IsRUFBbUJDLFdBQWtFLFNBQXJEUCxFQUFnQkksYUFBYSxvQkFDN0RFLEVBQW1CRyxpQkFBbUJULEVBQWdCSSxhQUFhLGlDQUNuRUUsRUFBbUJFLFNBQVdSLEVBQWdCSSxhQUFhLGtCQUV2REUsRUFBbUJDLFlBaUczQixXQUNFLE1BQU0wRixFQUFtQmxFLEdBQXdCNkIsRUFBaUJ0RCxFQUFtQkcsa0JBRXJGLEdBQUl3RixFQUFrQixDQUNwQixNQUFNQyxFQUFvQmpHLFNBQVNrRyxxQkFBcUIsb0JBQ3BERCxFQUFrQixJQUNwQkEsRUFBa0IsR0FBR0UsU0FHdkIsTUFBTUMsRUFBaUJwRyxTQUFTa0YsY0FBYyxvQkFFMUM3RSxFQUFtQkUsV0FDckI2RixFQUFlQyxhQUFhLFlBQWFqRyxHQUN6Q2dHLEVBQWVDLGFBQWEsWUFBYWhHLEVBQW1CRSxXQUc5RHdELEVBQVlxQyxFQUFnQkosR0FFNUJNLFlBQVcsS0FDVCxNQUFNQyxFQUFnQnZHLFNBQVNDLGNBQWMsb0JBQ3hDc0csR0FDSEMsUUFBUUMsSUFBSSwwQkFHUkYsR0FBZUcsWUFBWUMsaUJBQy9CSCxRQUFRQyxJQUFJLDBCQUNkLEdBQ0MsSUFDTCxNQUNFRCxRQUFRQyxJQUFJLG1EQUVoQixDQS9ITUcsR0FHTixDQTBDQSxTQUFTbEIsRUFBa0JtQixHQUN6QixNQUFNYixFQUFtQmxFLEdBQXdCNkIsRUFBaUJ6RCxHQUVsRSxHQUFJOEYsRUFBa0IsQ0FDcEIsTUFBTWMsRUFBZ0I5RyxTQUFTa0cscUJBQXFCLHVCQUNoRFksRUFBYyxJQUNoQkEsRUFBYyxHQUFHWCxTQUVuQixNQUFNWSxFQUFhL0csU0FBU2tGLGNBQWMsdUJBRTFDNkIsRUFBV1YsYUFBYSxZQUFhakcsR0FDckMyRyxFQUFXVixhQUFhLFFBQVNRLEdBQ2pDRSxFQUFXVixhQUFhLFVEcktQLE1Dc0tqQlUsRUFBV1YsYUFBYSx1QkFqQzVCLFdBQ0UsTUFBTVcsRUFBdUJDLElBQzNCLE1BQU1DLEVBQVVDLE9BQU9DLEtBQUtILEdBQ3RCSSxFQUFZLENBQUMsRUFFbkIsSUFBSyxJQUFJeEQsRUFBSSxFQUFHQSxFQUFJc0QsT0FBT0MsS0FBS0gsR0FBS25ELE9BQVFELElBQ3ZDb0QsRUFBSUMsRUFBUXJELE1BQ2R3RCxFQUFVSCxFQUFRckQsSUFBTW9ELEVBQUlDLEVBQVFyRCxLQUl4QyxPQUFPd0QsQ0FBUyxFQUdsQixPQUFPN0QsS0FBS0MsVUFBVSxDQUNwQjZELE9BQVFOLEVBQW9CdkcsR0FDNUI4RyxNQUFPUCxFQUFvQjVGLElBRS9CLENBZW9Eb0csSUFFaERULEVBQVdVLGlCQUFpQix3QkFBd0IsS0FDbEQxRixHQUFvQkEsRURsTVYsNEJDa00wRCxJQUd0RWdDLEVBQVlnRCxFQUFZZixHQUV4QixNQUFNMEIsRUFBb0IsSUFBSXJJLEtBQzlCMEMsR0FBb0JBLEVEM01QLDZCQzJNeUQsQ0FDcEU0RixtQkFBb0J2SSxFQUFpQndJLFVBQ3JDQyxvQkFBcUJILEVBQWtCRSxVQUN2Q0Usd0JBQXlCSixFQUFrQkUsVUFBWXhJLEVBQWlCd0ksWUFJMUV0QixZQUFXLEtBQ1QsTUFBTXlCLEVBQWdCL0gsU0FBU0MsY0FBYyx1QkFDeEM4SCxJQUNIdkIsUUFBUUMsSUFBSSwwQkFDWjFFLEdBQW9CQSxFRHJOUCxpQ0NxTjZELENBQ3hFNEYsbUJBQW9CdkksRUFBaUJ3SSxVQUNyQ0ksNEJBQTZCTixFQUFrQkUsYUFJN0NHLEdBQWVyQixZQUFZQyxpQkFDL0I1RSxHQUFvQkEsRUR6Tk4sa0NDeU42RCxDQUN6RTRGLG1CQUFvQnZJLEVBQWlCd0ksVUFDckNJLDRCQUE2Qk4sRUFBa0JFLFdBRW5ELEdBQ0MsSUFDTCxNQUNFcEIsUUFBUUMsSUFBSSxtQ0FFaEIsQ0F1QzRCLGFBQXhCekcsU0FBU2lJLFlBQXFELGdCQUF4QmpJLFNBQVNpSSxXQUNqRDVELElBRUFFLE9BQU9rRCxpQkFBaUIsbUJBQW9CcEQsR0FHMUNFLFFBQVFDLElBQUkwRCx5QkFBMkIzRCxRQUFRQyxJQUFJMEQseUJBdEl2RCxTQUFtQ0MsR0FDakN6QyxFQUFpQnlDLEVBQW1CcEMsYUFDdEMsR0FxSUQsQ0F0UkQsRSIsInNvdXJjZXMiOlsid2VicGFjazovL2FkZGktd2lkZ2V0LXRpZW5kYW51YmUvLi9zcmMvaGVscGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9hZGRpLXdpZGdldC10aWVuZGFudWJlLy4vc3JjL2NvbnN0YW50cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9hZGRpLXdpZGdldC10aWVuZGFudWJlLy4vc3JjL2luZGV4LmpzIiwid2VicGFjazovL2FkZGktd2lkZ2V0LXRpZW5kYW51YmUvLi9zcmMvc2VydmljZXMvdHJhY2tlci5qcyIsIndlYnBhY2s6Ly9hZGRpLXdpZGdldC10aWVuZGFudWJlLy4vc3JjL3NlcnZpY2VzL2FtcGxpdHVkZS5qcyIsIndlYnBhY2s6Ly9hZGRpLXdpZGdldC10aWVuZGFudWJlLy4vc3JjL3NlcnZpY2VzL2h0dHBzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIEByZXR1cm5zIHJldHVybiB1bmlxdWUgSURcbiAqL1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVVVJRCA9ICgpID0+IHtcbiAgcmV0dXJuIChgJHsxZTd9LSR7MWUzfS0kezRlM30tJHs4ZTN9LSR7MWUxMX1gKS5yZXBsYWNlKC9bMDE4XS9nLCAoYykgPT4ge1xuICAgIGNvbnN0IG51bSA9ICtjO1xuICAgIHJldHVybiAobnVtIF4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgxKSlbMF0gJiAxNSA+PiBudW0gLyA0KS50b1N0cmluZygxNik7XG4gIH0pO1xufTtcbiIsImV4cG9ydCBjb25zdCBBcHBTb3VyY2VzID0ge1xuICBBTExZX0lOVEVHUkFUSU9OX1BST0RVQ1Q6ICdBTExZX0lOVEVHUkFUSU9OX1BST0RVQ1QnXG59O1xuXG5leHBvcnQgY29uc3QgQU1QTElUVURFX0VWRU5UID0ge1xuICBTQ1JJUFRfU1RBUlRFRDogJ1BEUF9TQ1JJUFQuU0NSSVBUX1NUQVJURUQnLFxuICBXSURHRVRfSU5TRVJURUQ6ICdQRFBfU0NSSVBULldJREdFVF9JTlNFUlRFRCcsXG4gIFdJREdFVF9OT1RfSU5TRVJURUQ6ICdQRFBfU0NSSVBULldJREdFVF9OT1RfSU5TRVJURUQnLFxuICBXSURHRVRfUkVOREVSRUQ6ICdQRFBfU0NSSVBULldJREdFVF9SRU5ERVJFRCcsXG4gIFdJREdFVF9DTElDS0VEOiAnUERQX1NDUklQVC5XSURHRVRfQ0xJQ0tFRCcsXG4gIFdJREdFVF9OT1RfRElTUExBWUVEOiAnUERQX1NDUklQVC5XSURHRVRfTk9UX0RJU1BMQVlFRCcsXG4gIEJBTk5FUl9OT1RfSU5TRVJURUQ6ICdQRFBfU0NSSVBULkJBTk5FUl9OT1RfSU5TRVJURUQnLFxuICBCQU5ORVJfTk9UX0RJU1BMQVlFRDogJ1BEUF9TQ1JJUFQuQkFOTkVSX05PVF9ESVNQTEFZRUQnXG59O1xuXG5leHBvcnQgY29uc3QgQ0hBTk5FTCA9ICdFX0NPTU1FUkNFX05VVkVNU0hPUCc7XG5cbmV4cG9ydCBjb25zdCBMT0dHRVJfQVBQX0RPTUFJTiA9ICdodHRwczovL2xvZ2dlci5hZGRpLmNvbSc7XG5cbmV4cG9ydCBjb25zdCBQRFBfV0lER0VUX1NUQUdJTkdfVVJMID0gJ2h0dHBzOi8vY2RuLmFkZGktc3RhZ2luZy5jb20vcHJvZHVjdC1kZXRhaWxzLXdpZGdldC9zdGFnaW5nL3YxL3Byb2R1Y3QtZGV0YWlscy13aWRnZXQuZXNtLmpzJztcbmV4cG9ydCBjb25zdCBQRFBfV0lER0VUX1BST0RfVVJMID0gJ2h0dHBzOi8vY2RuLmFkZGkuY29tL3Byb2R1Y3QtZGV0YWlscy13aWRnZXQvcHJvZC92MS9wcm9kdWN0LWRldGFpbHMtd2lkZ2V0LmVzbS5qcyc7XG5leHBvcnQgY29uc3QgSE9NRV9CQU5ORVJfU1RBR0lOR19VUkwgPSAnaHR0cHM6Ly9jZG4uYWRkaS1zdGFnaW5nLmNvbS9ob21lLWJhbm5lci13aWRnZXQvc3RhZ2luZy92MS9ob21lLWJhbm5lci13aWRnZXQuZXNtLmpzJztcbmV4cG9ydCBjb25zdCBIT01FX0JBTk5FUl9QUk9EX1VSTCA9ICdodHRwczovL2Nkbi5hZGRpLmNvbS9ob21lLWJhbm5lci13aWRnZXQvcHJvZC92MS9ob21lLWJhbm5lci13aWRnZXQuZXNtLmpzJztcblxuZXhwb3J0IGNvbnN0IEVDT01NRVJDRV9ST1VURVMgPSB7XG4gIHByb2R1Y3Q6ICcvcHJvZHVjdG9zLycsXG4gIGhvbWU6ICcvJ1xufTtcblxuZXhwb3J0IGNvbnN0IFBBR0VfVFlQRVMgPSB7XG4gIHByb2R1Y3Q6ICdwcm9kdWN0JyxcbiAgaG9tZTogJ2hvbWUnXG59O1xuXG5leHBvcnQgY29uc3QgQ09VTlRSWSA9ICdjbyc7XG5cbmV4cG9ydCBjb25zdCBURVNUX0VOVklST05NRU5UX0VOQUJMRUQgPSBmYWxzZTtcblxuIiwiaW1wb3J0IHsgY3JlYXRlVVVJRCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBBTVBMSVRVREVfRVZFTlQsIENPVU5UUlksIEVDT01NRVJDRV9ST1VURVMsIEhPTUVfQkFOTkVSX1BST0RfVVJMLCBIT01FX0JBTk5FUl9TVEFHSU5HX1VSTCwgUEFHRV9UWVBFUywgUERQX1dJREdFVF9QUk9EX1VSTCwgUERQX1dJREdFVF9TVEFHSU5HX1VSTCwgVEVTVF9FTlZJUk9OTUVOVF9FTkFCTEVEIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgd2lkZ2V0VHJhY2tlckFtcGxpdHVkZSB9IGZyb20gJy4vc2VydmljZXMvdHJhY2tlcic7XG5cbihmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgICAqXG4gICAgICogSU1QT1JUU1xuICAgICAqXG4gICAgICovXG5cbiAgLyoqXG4gICAgICogSW1wb3J0IHdpZGdldCBidW5kbGVzXG4gICAgICovXG4gIGZ1bmN0aW9uIGltcG9ydEFkZGlXaWRnZXRCdW5kbGUgKFBBR0VfQ0FURUdPUlkpIHtcbiAgICBpZiAoUEFHRV9DQVRFR09SWSA9PT0gUEFHRV9UWVBFUy5ob21lKSB7XG4gICAgICBjb25zdCBobUJhbm5lclNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIGhtQmFubmVyU2NyaXB0RWxlbWVudC50eXBlID0gJ21vZHVsZSc7XG4gICAgICBobUJhbm5lclNjcmlwdEVsZW1lbnQuc3JjID0gVEVTVF9FTlZJUk9OTUVOVF9FTkFCTEVEID8gSE9NRV9CQU5ORVJfU1RBR0lOR19VUkwgOiBIT01FX0JBTk5FUl9QUk9EX1VSTDtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKGhtQmFubmVyU2NyaXB0RWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKFBBR0VfQ0FURUdPUlkgPT09IFBBR0VfVFlQRVMucHJvZHVjdCkge1xuICAgICAgY29uc3QgcGRwV2RnU2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgcGRwV2RnU2NyaXB0RWxlbWVudC50eXBlID0gJ21vZHVsZSc7XG4gICAgICBwZHBXZGdTY3JpcHRFbGVtZW50LnNyYyA9IFRFU1RfRU5WSVJPTk1FTlRfRU5BQkxFRCA/IFBEUF9XSURHRVRfU1RBR0lOR19VUkwgOiBQRFBfV0lER0VUX1BST0RfVVJMO1xuICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmQocGRwV2RnU2NyaXB0RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAgICpcbiAgICAgKiBEQVRBIElOSVRJQUxJWkFUSU9OXG4gICAgICpcbiAgICAgKi9cblxuICBjb25zdCBvblNjcmlwdEluaXRUaW1lID0gbmV3IERhdGUoKTtcbiAgY29uc3QgVVVJZCA9IGNyZWF0ZVVVSUQoKTtcblxuICBjb25zdCBHRU5FUklDX1NFTEVDVE9SUyA9IFtcbiAgICAnLmpzLXByb2R1Y3QtdmFyaWFudHMnXG4gIF07XG4gIGNvbnN0IEFERElfU0NSSVBUX1RBRyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtkYXRhLWlkXVtkYXRhLW5hbWU9XCJudXZlbUFkZGlXaWRnZXRcIl0nKTtcbiAgY29uc3QgSFRNTF9FTEVNRU5UX1JFRkVSRU5DRV9GUk9NX1RBRyA9IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ2RhdGEtZWxlbWVudC1yZWZlcmVuY2UnKTtcbiAgY29uc3QgQUxMWV9TTFVHID0gQURESV9TQ1JJUFRfVEFHLmdldEF0dHJpYnV0ZSgnZGF0YS1hbGx5LXNsdWcnKTtcbiAgY29uc3QgV0lER0VUX0JBTk5FUl9EQVRBID0ge1xuICAgIHNob3dCYW5uZXI6IGZhbHNlLFxuICAgIGJhbm5lcklkOiAnJyxcbiAgICBiYW5uZXJFbGVtZW50UmVmOiAnJ1xuICB9O1xuXG4gIGNvbnN0IFdJREdFVF9DVVNUT01fU1RZTEVTID0ge1xuICAgIGJvcmRlckNvbG9yOiBBRERJX1NDUklQVF9UQUcuZ2V0QXR0cmlidXRlKCd3aWRnZXQtYm9yZGVyLWNvbG9yJyksXG4gICAgYm9yZGVyUmFkaXVzOiBBRERJX1NDUklQVF9UQUcuZ2V0QXR0cmlidXRlKCd3aWRnZXQtYm9yZGVyLXJhZGl1cycpLFxuICAgIGZvbnRDb2xvcjogQURESV9TQ1JJUFRfVEFHLmdldEF0dHJpYnV0ZSgnd2lkZ2V0LWZvbnQtY29sb3InKSxcbiAgICBmb250RmFtaWx5OiBBRERJX1NDUklQVF9UQUcuZ2V0QXR0cmlidXRlKCd3aWRnZXQtZm9udC1mYW1pbHknKSxcbiAgICBmb250U2l6ZTogQURESV9TQ1JJUFRfVEFHLmdldEF0dHJpYnV0ZSgnd2lkZ2V0LWZvbnQtc2l6ZScpLFxuICAgIGJhZGdlQmFja2dyb3VuZENvbG9yOiBBRERJX1NDUklQVF9UQUcuZ2V0QXR0cmlidXRlKCd3aWRnZXQtYmFkZ2UtYmFja2dyb3VuZC1jb2xvcicpLFxuICAgIGluZm9CYWNrZ3JvdW5kQ29sb3I6IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ3dpZGdldC1pbmZvLWJhY2tncm91bmQtY29sb3InKSxcbiAgICBpY29uVHlwZTogQURESV9TQ1JJUFRfVEFHLmdldEF0dHJpYnV0ZSgnd2lkZ2V0LWFkZGktaWNvbi10eXBlJyksXG4gICAgaWNvblNpemU6IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ3dpZGdldC1hZGRpLWljb24tc2l6ZScpLFxuICAgIG1hcmdpbjogQURESV9TQ1JJUFRfVEFHLmdldEF0dHJpYnV0ZSgnd2lkZ2V0LW1hcmdpbicpXG4gIH07XG5cbiAgY29uc3QgTU9EQUxfQ1VTVE9NX1NUWUxFUyA9IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ21vZGFsLWJhY2tncm91bmQtY29sb3InKSxcbiAgICBmb250Q29sb3I6IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ21vZGFsLWZvbnQtY29sb3InKSxcbiAgICBmb250RmFtaWx5OiBBRERJX1NDUklQVF9UQUcuZ2V0QXR0cmlidXRlKCdtb2RhbC1mb250LWZhbWlseScpLFxuICAgIHByaWNlQ29sb3I6IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ21vZGFsLXByaWNlLWNvbG9yJyksXG4gICAgYmFkZ2VCYWNrZ3JvdW5kQ29sb3I6IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ21vZGFsLWJhZGdlLWJhY2tncm91bmQtY29sb3InKSxcbiAgICBiYWRnZUZvbnRDb2xvcjogQURESV9TQ1JJUFRfVEFHLmdldEF0dHJpYnV0ZSgnbW9kYWwtYmFkZ2UtZm9udC1jb2xvcicpLFxuICAgIGJhZGdlQm9yZGVyUmFkaXVzOiBBRERJX1NDUklQVF9UQUcuZ2V0QXR0cmlidXRlKCdtb2RhbC1iYWRnZS1ib3JkZXItcmFkaXVzJyksXG4gICAgY2FyZENvbG9yOiBBRERJX1NDUklQVF9UQUcuZ2V0QXR0cmlidXRlKCdtb2RhbC1jYXJkLWNvbG9yJyksXG4gICAgYnV0dG9uQm9yZGVyQ29sb3I6IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ21vZGFsLWJ1dHRvbi1ib3JkZXItY29sb3InKSxcbiAgICBidXR0b25Cb3JkZXJSYWRpdXM6IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ21vZGFsLWJ1dHRvbi1ib3JkZXItcmFkaXVzJyksXG4gICAgYnV0dG9uQmFja2dyb3VuZENvbG9yOiBBRERJX1NDUklQVF9UQUcuZ2V0QXR0cmlidXRlKCdtb2RhbC1idXR0b24tYmFja2dyb3VuZC1jb2xvcicpLFxuICAgIGJ1dHRvbkZvbnRDb2xvcjogQURESV9TQ1JJUFRfVEFHLmdldEF0dHJpYnV0ZSgnbW9kYWwtYnV0dG9uLWZvbnQtY29sb3InKVxuICB9O1xuXG4gIGxldCBodG1sRWxlbWVudFJlZmVyZW5jZSA9IG51bGw7XG4gIGxldCBhbXBsaXR1ZGVUcmFja2VyID0gbnVsbDtcblxuICAvKipcbiAgICAgKiAqICogKiAqICpcbiAgICAgKiAqICogVFJBQ0tFUlxuICAgICAqICogKiAqICogKlxuICAgICovXG5cbiAgY29uc3Qgc3RhcnRBbXBsaXR1ZGVFdmVudHMgPSAoKSA9PiB7XG4gICAgYW1wbGl0dWRlVHJhY2tlciA9IHdpZGdldFRyYWNrZXJBbXBsaXR1ZGUoVVVJZCwgQUxMWV9TTFVHKTtcbiAgfTtcblxuICAvKipcbiAgICAgKlxuICAgICAqIE1FVEhPRFNcbiAgICAgKlxuICAgICAqL1xuXG4gIGZ1bmN0aW9uIGdldFJlZmVyZW5jZU5vZGUgKHJlZmVyZW5jZSkge1xuICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgIGh0bWxFbGVtZW50UmVmZXJlbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihyZWZlcmVuY2UpO1xuICAgICAgcmV0dXJuIGh0bWxFbGVtZW50UmVmZXJlbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IEdFTkVSSUNfU0VMRUNUT1JTLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGh0bWxFbGVtZW50UmVmZXJlbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihHRU5FUklDX1NFTEVDVE9SU1tpXSk7XG4gICAgICAgIGlmIChodG1sRWxlbWVudFJlZmVyZW5jZSkgcmV0dXJuIGh0bWxFbGVtZW50UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgaW5zZXJ0IGEgbmV3Tm9kZSBpbnRvIHRoZSBET00ganVzdCBhZnRlciB0aGUgZ2l2ZW4gcmVmZXJlbmNlTm9kZVxuICAgICAqIEBwYXJhbSB7Kn0gbmV3Tm9kZVxuICAgICAqIEBwYXJhbSB7Kn0gcmVmZXJlbmNlTm9kZVxuICAgICAqL1xuXG4gIGZ1bmN0aW9uIGluc2VydEFmdGVyIChuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gICAgcmVmZXJlbmNlTm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuZXdOb2RlLCByZWZlcmVuY2VOb2RlLm5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUGFnZUxvYWRlZCAoKSB7XG4gICAgY29uc3QgUEFHRV9URU1QTEFURSA9IHdpbmRvdy5MUyA/IHdpbmRvdy5MUy50ZW1wbGF0ZSA6IGdldFBhZ2VUZW1wbGF0ZUZyb21VcmwoKTtcblxuICAgIGltcG9ydEFkZGlXaWRnZXRCdW5kbGUoUEFHRV9URU1QTEFURSk7XG4gICAgc3RhcnRBbXBsaXR1ZGVFdmVudHMoKTtcblxuICAgIGlmIChQQUdFX1RFTVBMQVRFID09PSBQQUdFX1RZUEVTLnByb2R1Y3QpIHtcbiAgICAgIGNvbnN0IHByb2R1Y3REYXRhID0gd2luZG93LkxTIHx8IHt9O1xuICAgICAgY29uc3QgcHJvZHVjdEluZm8gPSBwcm9kdWN0RGF0YS52YXJpYW50cyAmJiBwcm9kdWN0RGF0YS52YXJpYW50cy5maW5kKHZhcmlhbnQgPT4gdmFyaWFudC5hdmFpbGFibGUpO1xuICAgICAgY29uc3QgcHJvZHVjdFByaWNlID0gcHJvZHVjdEluZm8ucHJpY2VfbnVtYmVyO1xuXG4gICAgICByZW5kZXJBZGRpV2lkZ2V0KHByb2R1Y3RQcmljZSk7XG4gICAgfVxuXG4gICAgaWYgKFBBR0VfVEVNUExBVEUgPT09IFBBR0VfVFlQRVMuaG9tZSkge1xuICAgICAgV0lER0VUX0JBTk5FUl9EQVRBLnNob3dCYW5uZXIgPSBBRERJX1NDUklQVF9UQUcuZ2V0QXR0cmlidXRlKCdkYXRhLXNob3ctYmFubmVyJykgPT09ICd0cnVlJztcbiAgICAgIFdJREdFVF9CQU5ORVJfREFUQS5iYW5uZXJFbGVtZW50UmVmID0gQURESV9TQ1JJUFRfVEFHLmdldEF0dHJpYnV0ZSgnZGF0YS1iYW5uZXItZWxlbWVudC1yZWZlcmVuY2UnKTtcbiAgICAgIFdJREdFVF9CQU5ORVJfREFUQS5iYW5uZXJJZCA9IEFERElfU0NSSVBUX1RBRy5nZXRBdHRyaWJ1dGUoJ2RhdGEtYmFubmVyLWlkJyk7XG5cbiAgICAgIGlmIChXSURHRVRfQkFOTkVSX0RBVEEuc2hvd0Jhbm5lcikge1xuICAgICAgICByZW5kZXJBZGRpSG9tZUJhbm5lcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUHJvZHVjdFZhcmlhbnRTZWxlY3RlZCAoUHJvZHVjdFZhcmlhbnREYXRhKSB7XG4gICAgcmVuZGVyQWRkaVdpZGdldChQcm9kdWN0VmFyaWFudERhdGEucHJpY2VfbnVtYmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgICAqIEdldCBsb2NhdGlvblxuICAgICAqL1xuXG4gIGZ1bmN0aW9uIGdldFBhZ2VUZW1wbGF0ZUZyb21VcmwgKCkge1xuICAgIGNvbnN0IFVSTHBhdGhOYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuXG4gICAgaWYgKFVSTHBhdGhOYW1lID09PSBFQ09NTUVSQ0VfUk9VVEVTLmhvbWUpIHtcbiAgICAgIHJldHVybiBQQUdFX1RZUEVTLmhvbWU7XG4gICAgfSBlbHNlIGlmIChVUkxwYXRoTmFtZS5lbmRzV2l0aChFQ09NTUVSQ0VfUk9VVEVTLnByb2R1Y3QpIHx8IFVSTHBhdGhOYW1lLmluY2x1ZGVzKEVDT01NRVJDRV9ST1VURVMucHJvZHVjdCkpIHtcbiAgICAgIHJldHVybiBQQUdFX1RZUEVTLnByb2R1Y3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Q3VzdG9taXphYmxlV2lkZ2V0U3R5bGVzICgpIHtcbiAgICBjb25zdCBnZXRTdHlsZXNQcm9wZXJ0aWVzID0gKE9iaikgPT4ge1xuICAgICAgY29uc3Qgb2JqS2V5cyA9IE9iamVjdC5rZXlzKE9iaik7XG4gICAgICBjb25zdCBuZXdPYmplY3QgPSB7fTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBPYmplY3Qua2V5cyhPYmopLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChPYmpbb2JqS2V5c1tpXV0pIHtcbiAgICAgICAgICBuZXdPYmplY3Rbb2JqS2V5c1tpXV0gPSBPYmpbb2JqS2V5c1tpXV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld09iamVjdDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpZGdldDogZ2V0U3R5bGVzUHJvcGVydGllcyhXSURHRVRfQ1VTVE9NX1NUWUxFUyksXG4gICAgICBtb2RhbDogZ2V0U3R5bGVzUHJvcGVydGllcyhNT0RBTF9DVVNUT01fU1RZTEVTKVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVyQWRkaVdpZGdldCAocHJpY2UpIHtcbiAgICBjb25zdCBlbGVtZW50UmVmZXJlbmNlID0gaHRtbEVsZW1lbnRSZWZlcmVuY2UgfHwgZ2V0UmVmZXJlbmNlTm9kZShIVE1MX0VMRU1FTlRfUkVGRVJFTkNFX0ZST01fVEFHKTtcblxuICAgIGlmIChlbGVtZW50UmVmZXJlbmNlKSB7XG4gICAgICBjb25zdCBjdXJyZW50V2lkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2FkZGktcHJvZHVjdC13aWRnZXQnKTtcbiAgICAgIGlmIChjdXJyZW50V2lkZ2V0WzBdKSB7XG4gICAgICAgIGN1cnJlbnRXaWRnZXRbMF0ucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBhZGRpV2lkZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYWRkaS1wcm9kdWN0LXdpZGdldCcpO1xuXG4gICAgICBhZGRpV2lkZ2V0LnNldEF0dHJpYnV0ZSgnYWxseS1zbHVnJywgQUxMWV9TTFVHKTtcbiAgICAgIGFkZGlXaWRnZXQuc2V0QXR0cmlidXRlKCdwcmljZScsIHByaWNlKTtcbiAgICAgIGFkZGlXaWRnZXQuc2V0QXR0cmlidXRlKCdjb3VudHJ5JywgQ09VTlRSWSk7XG4gICAgICBhZGRpV2lkZ2V0LnNldEF0dHJpYnV0ZSgnY3VzdG9tLXdpZGdldC1zdHlsZXMnLCBnZXRDdXN0b21pemFibGVXaWRnZXRTdHlsZXMoKSk7XG5cbiAgICAgIGFkZGlXaWRnZXQuYWRkRXZlbnRMaXN0ZW5lcignb25XaWRnZXRDbGlja2VkRXZlbnQnLCAoKSA9PiB7XG4gICAgICAgIGFtcGxpdHVkZVRyYWNrZXIgJiYgYW1wbGl0dWRlVHJhY2tlcihBTVBMSVRVREVfRVZFTlQuV0lER0VUX0NMSUNLRUQpO1xuICAgICAgfSk7XG5cbiAgICAgIGluc2VydEFmdGVyKGFkZGlXaWRnZXQsIGVsZW1lbnRSZWZlcmVuY2UpO1xuXG4gICAgICBjb25zdCBvbldkZ0luc2VydGVkVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICBhbXBsaXR1ZGVUcmFja2VyICYmIGFtcGxpdHVkZVRyYWNrZXIoQU1QTElUVURFX0VWRU5ULldJREdFVF9JTlNFUlRFRCwge1xuICAgICAgICBvblNjcmlwdEluaXRUaW1lTXM6IG9uU2NyaXB0SW5pdFRpbWUuZ2V0VGltZSgpLFxuICAgICAgICBvbldkZ0luc2VydGVkVGltZU1zOiBvbldkZ0luc2VydGVkVGltZS5nZXRUaW1lKCksXG4gICAgICAgIG9uV2RnSW5zZXJ0ZWREdXJhdGlvbk1zOiBvbldkZ0luc2VydGVkVGltZS5nZXRUaW1lKCkgLSBvblNjcmlwdEluaXRUaW1lLmdldFRpbWUoKVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRoaXMgaXMgYSB0ZW1wb3JhcnkgZXZlbnRcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB3aWRnZXRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYWRkaS1wcm9kdWN0LXdpZGdldCcpO1xuICAgICAgICBpZiAoIXdpZGdldEVsZW1lbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnV2lkZ2V0IHdhcyBOT1QgY3JlYXRlZCcpO1xuICAgICAgICAgIGFtcGxpdHVkZVRyYWNrZXIgJiYgYW1wbGl0dWRlVHJhY2tlcihBTVBMSVRVREVfRVZFTlQuV0lER0VUX05PVF9JTlNFUlRFRCwge1xuICAgICAgICAgICAgb25TY3JpcHRJbml0VGltZU1zOiBvblNjcmlwdEluaXRUaW1lLmdldFRpbWUoKSxcbiAgICAgICAgICAgIHdpZGdldEluc2VydGlvbkZhaWxlZFRpbWVNczogb25XZGdJbnNlcnRlZFRpbWUuZ2V0VGltZSgpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISh3aWRnZXRFbGVtZW50Py5zaGFkb3dSb290Py5oYXNDaGlsZE5vZGVzKCkpKSB7XG4gICAgICAgICAgYW1wbGl0dWRlVHJhY2tlciAmJiBhbXBsaXR1ZGVUcmFja2VyKEFNUExJVFVERV9FVkVOVC5XSURHRVRfTk9UX0RJU1BMQVlFRCwge1xuICAgICAgICAgICAgb25TY3JpcHRJbml0VGltZU1zOiBvblNjcmlwdEluaXRUaW1lLmdldFRpbWUoKSxcbiAgICAgICAgICAgIHdpZGdldEluc2VydGlvbkZhaWxlZFRpbWVNczogb25XZGdJbnNlcnRlZFRpbWUuZ2V0VGltZSgpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDcwMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnTm8gcmVmZXJlbmNlIG5vZGUgd2FzIG5vdCBmb3VuZC4nKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW5kZXJBZGRpSG9tZUJhbm5lciAoKSB7XG4gICAgY29uc3QgZWxlbWVudFJlZmVyZW5jZSA9IGh0bWxFbGVtZW50UmVmZXJlbmNlIHx8IGdldFJlZmVyZW5jZU5vZGUoV0lER0VUX0JBTk5FUl9EQVRBLmJhbm5lckVsZW1lbnRSZWYpO1xuXG4gICAgaWYgKGVsZW1lbnRSZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRIb21lQmFubmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2FkZGktaG9tZS1iYW5uZXInKTtcbiAgICAgIGlmIChjdXJyZW50SG9tZUJhbm5lclswXSkge1xuICAgICAgICBjdXJyZW50SG9tZUJhbm5lclswXS5yZW1vdmUoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWRkaUhvbWVCYW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhZGRpLWhvbWUtYmFubmVyJyk7XG5cbiAgICAgIGlmIChXSURHRVRfQkFOTkVSX0RBVEEuYmFubmVySWQpIHtcbiAgICAgICAgYWRkaUhvbWVCYW5uZXIuc2V0QXR0cmlidXRlKCdhbGx5LXNsdWcnLCBBTExZX1NMVUcpO1xuICAgICAgICBhZGRpSG9tZUJhbm5lci5zZXRBdHRyaWJ1dGUoJ2Jhbm5lci1pZCcsIFdJREdFVF9CQU5ORVJfREFUQS5iYW5uZXJJZCk7XG4gICAgICB9XG5cbiAgICAgIGluc2VydEFmdGVyKGFkZGlIb21lQmFubmVyLCBlbGVtZW50UmVmZXJlbmNlKTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhbm5lckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhZGRpLWhvbWUtYmFubmVyJyk7XG4gICAgICAgIGlmICghYmFubmVyRWxlbWVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdCYW5uZXIgd2FzIE5PVCBjcmVhdGVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIShiYW5uZXJFbGVtZW50Py5zaGFkb3dSb290Py5oYXNDaGlsZE5vZGVzKCkpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Jhbm5lciB3YXMgTk9UIGluc2VydGVkJyk7XG4gICAgICAgIH1cbiAgICAgIH0sIDcwMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnTm8gcmVmZXJlbmNlIG5vZGUgd2FzIG5vdCBmb3VuZCBmb3IgaG9tZSBiYW5uZXIuJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAgICogRXZlbnQncyBsaXN0ZW5lcnNcbiAgICAgKi9cblxuICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyB8fCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnKSB7XG4gICAgb25QYWdlTG9hZGVkKCk7XG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBvblBhZ2VMb2FkZWQpO1xuICB9XG5cbiAgaWYgKHdpbmRvdz8uTFM/LnJlZ2lzdGVyT25DaGFuZ2VWYXJpYW50KSB7IHdpbmRvdz8uTFM/LnJlZ2lzdGVyT25DaGFuZ2VWYXJpYW50KG9uUHJvZHVjdFZhcmlhbnRTZWxlY3RlZCk7IH1cbn0pKCk7XG4iLCJpbXBvcnQgeyBBcHBTb3VyY2VzLCBDSEFOTkVMIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGh0dHBQb3N0QW1wbGl0dWRlIH0gZnJvbSAnLi9hbXBsaXR1ZGUnO1xuXG5leHBvcnQgY29uc3Qgd2lkZ2V0VHJhY2tlckFtcGxpdHVkZSA9IChcbiAgaWQsXG4gIGFsbHlTbHVnXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICB0aXRsZSA9ICcnLFxuICAgIHBhcmFtcyA9IHt9XG4gICkgPT4gaHR0cFBvc3RBbXBsaXR1ZGUoe1xuICAgIGlkLFxuICAgIHRpdGxlLFxuICAgIHBhcmFtcyxcbiAgICBzb3VyY2U6IEFwcFNvdXJjZXMuQUxMWV9JTlRFR1JBVElPTl9QUk9EVUNULFxuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgYWxseVNsdWdcbiAgfSkudGhlbigpO1xufTtcbiIsImltcG9ydCB7IGh0dHBQb3N0IH0gZnJvbSAnLi9odHRwcyc7XG5pbXBvcnQgeyBMT0dHRVJfQVBQX0RPTUFJTiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBodHRwUG9zdEFtcGxpdHVkZSA9ICh7IHNvdXJjZSwgaWQsIHRpdGxlLCBwYXJhbXMsIGNoYW5uZWwsIGFsbHlTbHVnIH0pID0+IHtcbiAgY29uc3QgYm9keSA9IHtcbiAgICBpZCxcbiAgICB0aXRsZSxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGV4ZWN1dGVkQXQ6IChuZXcgRGF0ZSgpKS50b1N0cmluZygpLFxuICAgICAgLi4ucGFyYW1zXG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBjaGFubmVsLFxuICAgICAgYWxseVNsdWdcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGh0dHBQb3N0KExPR0dFUl9BUFBfRE9NQUlOLCBgL2FwaS9ldmVudHMvJHtzb3VyY2V9YCwgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xufTtcbiIsImV4cG9ydCBjb25zdCBodHRwUG9zdCA9IGFzeW5jIChkb21haW4sIHBhdGgsIGJvZHkgPSB7fSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHVybCA9IGAke2RvbWFpbn0ke3BhdGh9YDtcbiAgb3B0aW9ucyA9IHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG5cbiAgcmV0dXJuIGF3YWl0IGZldGNoKHVybCwgeyAuLi5vcHRpb25zLCBib2R5IH0pXG4gICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuanNvbigpKVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IGVycm9yKTtcbn07XG4iXSwibmFtZXMiOlsiRUNPTU1FUkNFX1JPVVRFUyIsIlBBR0VfVFlQRVMiLCJvblNjcmlwdEluaXRUaW1lIiwiRGF0ZSIsIlVVSWQiLCJyZXBsYWNlIiwiYyIsIm51bSIsImNyeXB0byIsImdldFJhbmRvbVZhbHVlcyIsIlVpbnQ4QXJyYXkiLCJ0b1N0cmluZyIsIkdFTkVSSUNfU0VMRUNUT1JTIiwiQURESV9TQ1JJUFRfVEFHIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiSFRNTF9FTEVNRU5UX1JFRkVSRU5DRV9GUk9NX1RBRyIsImdldEF0dHJpYnV0ZSIsIkFMTFlfU0xVRyIsIldJREdFVF9CQU5ORVJfREFUQSIsInNob3dCYW5uZXIiLCJiYW5uZXJJZCIsImJhbm5lckVsZW1lbnRSZWYiLCJXSURHRVRfQ1VTVE9NX1NUWUxFUyIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiZm9udENvbG9yIiwiZm9udEZhbWlseSIsImZvbnRTaXplIiwiYmFkZ2VCYWNrZ3JvdW5kQ29sb3IiLCJpbmZvQmFja2dyb3VuZENvbG9yIiwiaWNvblR5cGUiLCJpY29uU2l6ZSIsIm1hcmdpbiIsIk1PREFMX0NVU1RPTV9TVFlMRVMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmljZUNvbG9yIiwiYmFkZ2VGb250Q29sb3IiLCJiYWRnZUJvcmRlclJhZGl1cyIsImNhcmRDb2xvciIsImJ1dHRvbkJvcmRlckNvbG9yIiwiYnV0dG9uQm9yZGVyUmFkaXVzIiwiYnV0dG9uQmFja2dyb3VuZENvbG9yIiwiYnV0dG9uRm9udENvbG9yIiwiaHRtbEVsZW1lbnRSZWZlcmVuY2UiLCJhbXBsaXR1ZGVUcmFja2VyIiwic3RhcnRBbXBsaXR1ZGVFdmVudHMiLCJpZCIsImFsbHlTbHVnIiwidGl0bGUiLCJwYXJhbXMiLCJzb3VyY2UiLCJjaGFubmVsIiwiYm9keSIsImV4ZWN1dGVkQXQiLCJwcm9wZXJ0aWVzIiwiYXN5bmMiLCJkb21haW4iLCJwYXRoIiwib3B0aW9ucyIsInVybCIsIm1ldGhvZCIsImhlYWRlcnMiLCJmZXRjaCIsInRoZW4iLCJyZXNwb25zZSIsImpzb24iLCJjYXRjaCIsImVycm9yIiwiaHR0cFBvc3QiLCJKU09OIiwic3RyaW5naWZ5IiwiaHR0cFBvc3RBbXBsaXR1ZGUiLCJnZXRSZWZlcmVuY2VOb2RlIiwicmVmZXJlbmNlIiwiaSIsImxlbmd0aCIsImluc2VydEFmdGVyIiwibmV3Tm9kZSIsInJlZmVyZW5jZU5vZGUiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJvblBhZ2VMb2FkZWQiLCJQQUdFX1RFTVBMQVRFIiwid2luZG93IiwiTFMiLCJ0ZW1wbGF0ZSIsIlVSTHBhdGhOYW1lIiwibG9jYXRpb24iLCJwYXRobmFtZSIsImVuZHNXaXRoIiwiaW5jbHVkZXMiLCJnZXRQYWdlVGVtcGxhdGVGcm9tVXJsIiwiUEFHRV9DQVRFR09SWSIsImhtQmFubmVyU2NyaXB0RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwic3JjIiwiaGVhZCIsImFwcGVuZCIsInBkcFdkZ1NjcmlwdEVsZW1lbnQiLCJpbXBvcnRBZGRpV2lkZ2V0QnVuZGxlIiwicHJvZHVjdERhdGEiLCJyZW5kZXJBZGRpV2lkZ2V0IiwidmFyaWFudHMiLCJmaW5kIiwidmFyaWFudCIsImF2YWlsYWJsZSIsInByaWNlX251bWJlciIsImVsZW1lbnRSZWZlcmVuY2UiLCJjdXJyZW50SG9tZUJhbm5lciIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicmVtb3ZlIiwiYWRkaUhvbWVCYW5uZXIiLCJzZXRBdHRyaWJ1dGUiLCJzZXRUaW1lb3V0IiwiYmFubmVyRWxlbWVudCIsImNvbnNvbGUiLCJsb2ciLCJzaGFkb3dSb290IiwiaGFzQ2hpbGROb2RlcyIsInJlbmRlckFkZGlIb21lQmFubmVyIiwicHJpY2UiLCJjdXJyZW50V2lkZ2V0IiwiYWRkaVdpZGdldCIsImdldFN0eWxlc1Byb3BlcnRpZXMiLCJPYmoiLCJvYmpLZXlzIiwiT2JqZWN0Iiwia2V5cyIsIm5ld09iamVjdCIsIndpZGdldCIsIm1vZGFsIiwiZ2V0Q3VzdG9taXphYmxlV2lkZ2V0U3R5bGVzIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9uV2RnSW5zZXJ0ZWRUaW1lIiwib25TY3JpcHRJbml0VGltZU1zIiwiZ2V0VGltZSIsIm9uV2RnSW5zZXJ0ZWRUaW1lTXMiLCJvbldkZ0luc2VydGVkRHVyYXRpb25NcyIsIndpZGdldEVsZW1lbnQiLCJ3aWRnZXRJbnNlcnRpb25GYWlsZWRUaW1lTXMiLCJyZWFkeVN0YXRlIiwicmVnaXN0ZXJPbkNoYW5nZVZhcmlhbnQiLCJQcm9kdWN0VmFyaWFudERhdGEiXSwic291cmNlUm9vdCI6IiJ9