New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ryuu.js

Package Overview
Dependencies
Maintainers
5
Versions
54
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ryuu.js - npm Package Compare versions

Comparing version 4.4.1 to 4.5.0

7

dist/domo.d.ts

@@ -30,3 +30,3 @@ import { RequestOptions, ObjectRequestOptions, ArrayRequestOptions, QueryParams, Filter, RequestBody, ResponseBody, ObjectResponseBody, ArrayResponseBody } from "./models";

};
static connect: () => void;
static connect: (skipFilters?: boolean) => void;
/**

@@ -37,2 +37,6 @@ * Let the domoapp handle its own filter updates

/**
* Receive arbitrary messages to an embedded domoapp
*/
static onAppData: (callback: Function) => () => void;
/**
* Request a navigation change

@@ -42,2 +46,3 @@ */

static filterContainer(filters: Filter[] | null): void;
static sendAppData(appData: string): void;
static env: QueryParams;

@@ -44,0 +49,0 @@ static __util: {

4

dist/domo.js
/*! For license information please see domo.js.LICENSE.txt */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.domo=t():e.domo=t()}(self,(()=>(()=>{"use strict";var e={727:(e,t,r)=>{var o=r(554),n=r(206),a=function(){function e(){}return e.post=function(e,t,r){return i(o.RequestMethods.POST,e,r,!0,t)},e.put=function(e,t,r){return i(o.RequestMethods.PUT,e,r,!0,t)},e.get=function(e,t){return i(o.RequestMethods.GET,e,t)},e.delete=function(e,t){return i(o.RequestMethods.DELETE,e,t)},e.getAll=function(t,r){return Promise.all(t.map((function(t){return e.get(t,r)})))},e.onDataUpdate=function(e){function t(t){if(c(t.origin)&&"string"==typeof t.data&&t.data.length>0)try{var r=JSON.parse(t.data);if(!r.hasOwnProperty("alias"))return;var o=r.alias,n=JSON.stringify({event:"ack",alias:o});t.source instanceof MessagePort||t.source instanceof ServiceWorker||t.source.postMessage(n,t.origin),e(o)}catch(e){console.warn("There was an error in onDataUpdate! It may be that our event listener caught a message from another source and tried to parse it, so your update still may have worked. If you would like more info, here is the error: \n",e)}}return window.addEventListener("message",t),function(){return window.removeEventListener("message",t)}},e.navigate=function(e,t){var r=JSON.stringify({event:"navigate",url:e,isNewWindow:t});window.parent.postMessage(r,"*")},e.filterContainer=function(e){var t=window.navigator.userAgent.toLowerCase(),r=/safari/.test(t),o=/iphone|ipod|ipad/.test(t),n=JSON.stringify({event:"filter",filter:e&&e.map((function(e){return{columnName:e.column,operator:e.operator||e.operand,values:e.values,dataType:e.dataType}}))});o&&!r?window.webkit.messageHandlers.domofilter.postMessage(e&&e.map((function(e){return{column:e.column,operand:e.operator||e.operand,values:e.values,dataType:e.dataType}}))):window.parent.postMessage(n,"*")},e.connected=!1,e.listeners={onFiltersUpdate:[]},e.connect=function(){e.connected||(e.connected=!0,e.channel=new MessageChannel,window.parent.postMessage(JSON.stringify({event:"subscribe"}),"*",[e.channel.port2]))},e.onFiltersUpdate=function(t){e.connect();var r=e.listeners.onFiltersUpdate.push(t)-1;return e.channel.port1.onmessage=function(t){var r=t.ports[0];void 0!==r&&"filtersUpdated"===t.data.event&&e.listeners.onFiltersUpdate.length>0&&(r.postMessage({}),e.listeners.onFiltersUpdate.forEach((function(e){return e(t.data.filters)})))},function(){e.listeners.onFiltersUpdate.splice(r,1)}},e.env=d(),e.__util={isVerifiedOrigin:c,getQueryParams:d,setFormatHeaders:p,isSuccess:u},e}(),s=window.__RYUU_SID__;function i(e,t,r,n,a){return r=r||{},new Promise((function(i,c){var d=new XMLHttpRequest;if(n?d.open(e,t,n):d.open(e,t),p(d,t,r),function(e,t){t.contentType?"multipart"!==t.contentType&&e.setRequestHeader("Content-Type",t.contentType):e.setRequestHeader("Content-Type",o.DataFormats.JSON)}(d,r),function(e){s&&e.setRequestHeader("X-DOMO-Ryuu-Session",s)}(d),function(e,t){void 0!==t.responseType&&(e.responseType=t.responseType)}(d,r),d.onload=function(){var e;if(u(d.status)){!["csv","excel"].includes(r.format)&&d.response||i(d.response),"blob"===r.responseType&&i(new Blob([d.response],{type:d.getResponseHeader("content-type")}));var t=d.response;try{e=JSON.parse(t)}catch(e){return void c(Error("Invalid JSON response"))}i(e)}else c(Error(d.statusText))},d.onerror=function(){c(Error("Network Error"))},a)if(r.contentType&&r.contentType!==o.DataFormats.JSON)d.send(a);else{var f=JSON.stringify(a);d.send(f)}else d.send()}))}function u(e){return e>=200&&e<300}function c(e){var t=e.match("^https?://([^/]+[.])?(domo|domotech|domorig).(com|io)?(/.*)?$"),r=e.match("(.*).(domoapps).(.*)");return!!t&&!r}function d(){var e=location.search.substr(1),t={};return e.split("&").forEach((function(e){var r=e.split("=");t[r[0]]=decodeURIComponent(r[1])})),t}function p(e,t,r){if(-1!==t.indexOf("data/v")){var a=void 0!==r.format?(0,n.domoFormatToRequestFormat)(r.format):o.DataFormats.DEFAULT;e.setRequestHeader("Accept",a)}}function f(e){if(e===document.body||e===document.head)return l(e);var t=e.dataset&&e.dataset.domoHref||e.getAttribute("href"),r=e.dataset&&e.dataset.domoSrc||e.getAttribute("src"),o=t?"href":"src",n=t||r;if(n&&s&&!n.includes(s)){var a=new URL(n,document.location.origin);a.origin===document.location.origin&&(a.searchParams.append("ryuu_sid",s),e.setAttribute(o,a.href))}}function l(e){for(var t=0;t<e.children.length;t++)f(e.children[t])}var m=new MutationObserver((function(e){for(var t=0,r=e;t<r.length;t++)l(r[t].target)}));m.observe(document.body,{childList:!0,subtree:!0}),m.observe(document.head,{childList:!0,subtree:!0}),e.exports=a},548:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.DataFormats=void 0,(r=t.DataFormats||(t.DataFormats={})).DEFAULT="application/array-of-objects",r.ARRAY_OF_OBJECTS="application/array-of-objects",r.JSON="application/json",r.CSV="text/csv",r.EXCEL="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",r.PLAIN="text/plain"},64:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.RequestMethods=void 0,(r=t.RequestMethods||(t.RequestMethods={})).get="GET",r.GET="GET",r.post="POST",r.POST="POST",r.put="PUT",r.PUT="PUT",r.delete="DELETE",r.DELETE="DELETE"},554:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FilterDataTypes=t.DataFormats=t.RequestMethods=void 0;var o=r(64);Object.defineProperty(t,"RequestMethods",{enumerable:!0,get:function(){return o.RequestMethods}});var n=r(548);Object.defineProperty(t,"DataFormats",{enumerable:!0,get:function(){return n.DataFormats}});var a=r(616);Object.defineProperty(t,"FilterDataTypes",{enumerable:!0,get:function(){return a.FilterDataTypes}})},616:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.FilterDataTypes=void 0,(r=t.FilterDataTypes||(t.FilterDataTypes={})).NUMERIC="NUMERIC",r.DATE="DATE",r.DATETIME="DATETIME",r.STRING="STRING"},206:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.domoFormatToRequestFormat=void 0;var o=r(554);t.domoFormatToRequestFormat=function(e){switch(e){case"array-of-objects":return o.DataFormats.ARRAY_OF_OBJECTS;case"array-of-arrays":return o.DataFormats.JSON;case"excel":return o.DataFormats.EXCEL;case"csv":return o.DataFormats.CSV;default:return o.DataFormats.DEFAULT}}}},t={};return function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.exports}(727)})()));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QWpFLFlBQVlrRSxJQUVyQixRQUNFLE9BQU8sRUFBQWxFLFlBQVltQyxRQUd6QixJQ25CSWdDLEVBQTJCLENBQUMsU0FHaEMsU0FBU0MsRUFBb0JDLEdBRTVCLElBQUlDLEVBQWVILEVBQXlCRSxHQUM1QyxRQUFxQnhGLElBQWpCeUYsRUFDSCxPQUFPQSxFQUFhOUssUUFHckIsSUFBSUMsRUFBUzBLLEVBQXlCRSxHQUFZLENBR2pEN0ssUUFBUyxDQUFDLEdBT1gsT0FIQStLLEVBQW9CRixHQUFVNUssRUFBUUEsRUFBT0QsUUFBUzRLLEdBRy9DM0ssRUFBT0QsT0FDZixDQ25CMEI0SyxDQUFvQixNUk85QyIsInNvdXJjZXMiOlsid2VicGFjazovL2RvbW8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL2RvbW8vLi9zcmMvZG9tby50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9lbnVtcy9kYXRhLWZvcm1hdHMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvZW51bXMvcmVxdWVzdC1tZXRob2RzLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2luZGV4LnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2ludGVyZmFjZXMvZmlsdGVyLWRhdGEtdHlwZXMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy91dGlscy9kYXRhLWhlbHBlcnMudHMiLCJ3ZWJwYWNrOi8vZG9tby93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJkb21vXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImRvbW9cIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgUmVxdWVzdE1ldGhvZHMsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBPYmplY3RSZXF1ZXN0T3B0aW9ucyxcbiAgQXJyYXlSZXF1ZXN0T3B0aW9ucyxcbiAgRGF0YUZvcm1hdHMsXG4gIFF1ZXJ5UGFyYW1zLFxuICBGaWx0ZXIsXG4gIFJlcXVlc3RCb2R5LFxuICBSZXNwb25zZUJvZHksXG4gIE9iamVjdFJlc3BvbnNlQm9keSxcbiAgQXJyYXlSZXNwb25zZUJvZHksXG59IGZyb20gXCIuL21vZGVsc1wiO1xuaW1wb3J0IHsgZG9tb0Zvcm1hdFRvUmVxdWVzdEZvcm1hdCB9IGZyb20gXCIuL3V0aWxzL2RhdGEtaGVscGVyc1wiO1xuXG5leHBvcnQgPSBkb21vO1xuXG5jbGFzcyBkb21vIHtcbiAgc3RhdGljIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keT86IFJlcXVlc3RCb2R5LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBwb3N0PFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk/OiBSZXF1ZXN0Qm9keSxcbiAgICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxUPjtcbiAgc3RhdGljIHBvc3Q8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keT86IFJlcXVlc3RCb2R5LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gZG9tb0h0dHA8VD4oUmVxdWVzdE1ldGhvZHMuUE9TVCwgdXJsLCBvcHRpb25zLCB0cnVlLCBib2R5KTtcbiAgfVxuXG4gIHN0YXRpYyBwdXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keT86IFJlcXVlc3RCb2R5LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keT86IFJlcXVlc3RCb2R5LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFQ+O1xuICBzdGF0aWMgcHV0PFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk/OiBSZXF1ZXN0Qm9keSxcbiAgICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGRvbW9IdHRwPFQ+KFJlcXVlc3RNZXRob2RzLlBVVCwgdXJsLCBvcHRpb25zLCB0cnVlLCBib2R5KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczogT2JqZWN0UmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxPYmplY3RSZXNwb25zZUJvZHlbXT47XG4gIHN0YXRpYyBnZXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczogQXJyYXlSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPEFycmF5UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIGdldCh1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgZ2V0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICBzdGF0aWMgZ2V0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gZG9tb0h0dHA8VD4oUmVxdWVzdE1ldGhvZHMuR0VULCB1cmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgc3RhdGljIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICBzdGF0aWMgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gZG9tb0h0dHA8VD4oUmVxdWVzdE1ldGhvZHMuREVMRVRFLCB1cmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgc3RhdGljIGdldEFsbChcbiAgICB1cmxzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiBPYmplY3RSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPE9iamVjdFJlc3BvbnNlQm9keVtdW10+O1xuICBzdGF0aWMgZ2V0QWxsKFxuICAgIHVybHM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IEFycmF5UmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxBcnJheVJlc3BvbnNlQm9keVtdPjtcbiAgc3RhdGljIGdldEFsbChcbiAgICB1cmxzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxSZXNwb25zZUJvZHlbXT47XG4gIHN0YXRpYyBnZXRBbGw8VD4odXJsczogc3RyaW5nW10sIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VFtdPjtcbiAgc3RhdGljIGdldEFsbDxUPih1cmxzOiBzdHJpbmdbXSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICB1cmxzLm1hcChmdW5jdGlvbiAodXJsKSB7XG4gICAgICAgIHJldHVybiBkb21vLmdldDxUPih1cmwsIG9wdGlvbnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExldCB0aGUgZG9tb2FwcCBvcHRpb25hbGx5IGhhbmRsZSBpdHMgb3duIGRhdGEgdXBkYXRlcy5cbiAgICovXG4gIHN0YXRpYyBvbkRhdGFVcGRhdGUoY2I6IChhbGlhczogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhldmVudDogTWVzc2FnZUV2ZW50KSB7XG4gICAgICBpZiAoIWlzVmVyaWZpZWRPcmlnaW4oZXZlbnQub3JpZ2luKSkgcmV0dXJuO1xuXG4gICAgICBpZiAodHlwZW9mIGV2ZW50LmRhdGEgPT09IFwic3RyaW5nXCIgJiYgZXZlbnQuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgaWYgKCFtZXNzYWdlLmhhc093blByb3BlcnR5KFwiYWxpYXNcIikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBhbGlhcyA9IG1lc3NhZ2UuYWxpYXM7XG5cbiAgICAgICAgICAvLyBzZW5kIGFja25vd2xlZGdlbWVudCB0byBwcmV2ZW50IGF1dG9yZWZyZXNoXG4gICAgICAgICAgY29uc3QgYWNrID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgZXZlbnQ6IFwiYWNrXCIsXG4gICAgICAgICAgICBhbGlhczogYWxpYXMsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBPbmx5IFdpbmRvd1Byb3h5IHwgV2luZG93IGhhdmUgdGhlIHBvc3RNZXNzYWdlIG1ldGhvZCBhbmQgdGhlIHR5cGUgb2YgZXZlbnQuc291cmNlIHZhcmllcyBiZXR3ZWVuIGJyb3dzZXJzXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShldmVudC5zb3VyY2UgaW5zdGFuY2VvZiBNZXNzYWdlUG9ydCkgJiZcbiAgICAgICAgICAgICEoZXZlbnQuc291cmNlIGluc3RhbmNlb2YgU2VydmljZVdvcmtlcilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShhY2ssIGV2ZW50Lm9yaWdpbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaW5mb3JtIGRvbW8gYXBwIHdoaWNoIGFsaWFzIGhhcyBiZWVuIHVwZGF0ZWRcbiAgICAgICAgICBjYihhbGlhcyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnN0IGluZm8gPVxuICAgICAgICAgICAgXCJUaGVyZSB3YXMgYW4gZXJyb3IgaW4gb25EYXRhVXBkYXRlISBJdCBtYXkgYmUgdGhhdCBvdXIgZXZlbnQgbGlzdGVuZXIgY2F1Z2h0IFwiICtcbiAgICAgICAgICAgIFwiYSBtZXNzYWdlIGZyb20gYW5vdGhlciBzb3VyY2UgYW5kIHRyaWVkIHRvIHBhcnNlIGl0LCBzbyB5b3VyIHVwZGF0ZSBzdGlsbCBtYXkgaGF2ZSB3b3JrZWQuIFwiICtcbiAgICAgICAgICAgIFwiSWYgeW91IHdvdWxkIGxpa2UgbW9yZSBpbmZvLCBoZXJlIGlzIHRoZSBlcnJvcjogXFxuXCI7XG4gICAgICAgICAgY29uc29sZS53YXJuKGluZm8sIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGlubmVyQ2FsbGJhY2spO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaW5uZXJDYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogTGV0IHRoZSBkb21vYXBwIG9wdGlvbmFsbHkgaGFuZGxlIG90aGVyIGV2ZW50c1xuICAgKi9cbiAgc3RhdGljIGNoYW5uZWw/OiBNZXNzYWdlQ2hhbm5lbDtcbiAgc3RhdGljIGNvbm5lY3RlZCA9IGZhbHNlO1xuICBzdGF0aWMgbGlzdGVuZXJzOiB7IFtpbmRleDogc3RyaW5nXTogRnVuY3Rpb25bXSB9ID0ge1xuICAgIG9uRmlsdGVyc1VwZGF0ZTogW10sXG4gIH07XG5cbiAgc3RhdGljIGNvbm5lY3QgPSAoKSA9PiB7XG4gICAgaWYgKGRvbW8uY29ubmVjdGVkKSByZXR1cm47XG4gICAgZG9tby5jb25uZWN0ZWQgPSB0cnVlO1xuICAgIGRvbW8uY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoeyBldmVudDogXCJzdWJzY3JpYmVcIiB9KSwgXCIqXCIsIFtcbiAgICAgIGRvbW8uY2hhbm5lbC5wb3J0MixcbiAgICBdKTtcbiAgfTtcblxuICAvKipcbiAgICogTGV0IHRoZSBkb21vYXBwIGhhbmRsZSBpdHMgb3duIGZpbHRlciB1cGRhdGVzXG4gICAqL1xuICBzdGF0aWMgb25GaWx0ZXJzVXBkYXRlID0gKGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICAgIGRvbW8uY29ubmVjdCgpO1xuICAgIGNvbnN0IGluZGV4ID0gZG9tby5saXN0ZW5lcnMub25GaWx0ZXJzVXBkYXRlLnB1c2goY2FsbGJhY2spIC0gMTtcblxuICAgIGRvbW8uY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSAoZTogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBbcmVzcG9uc2VQb3J0XSA9IGUucG9ydHM7XG4gICAgICBpZiAocmVzcG9uc2VQb3J0ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgaWYgKFxuICAgICAgICBlLmRhdGEuZXZlbnQgPT09IFwiZmlsdGVyc1VwZGF0ZWRcIiAmJlxuICAgICAgICBkb21vLmxpc3RlbmVycy5vbkZpbHRlcnNVcGRhdGUubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlUG9ydC5wb3N0TWVzc2FnZSh7fSk7IC8vIFByZXZlbnRzIHRoZSBhcHAgZnJvbSByZWxvYWRpbmcuIFNheXMgd2UndmUgaGFuZGxlZCBpdFxuICAgICAgICBkb21vLmxpc3RlbmVycy5vbkZpbHRlcnNVcGRhdGUuZm9yRWFjaCgoY2IpID0+IGNiKGUuZGF0YS5maWx0ZXJzKSk7IC8vIDwtIHNwbGl0IG91dCBvbkZpbHRlcnNVcGRhdGUgc28gdGhhdCB5b3UgY2FuIGhhbmRsZSBlYWNoIG1lc3NhZ2UgZGlmZmVyZW50bHkgaGVyZVxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyB1bnJlZ2lzdGVyXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvbW8ubGlzdGVuZXJzLm9uRmlsdGVyc1VwZGF0ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgYSBuYXZpZ2F0aW9uIGNoYW5nZVxuICAgKi9cbiAgc3RhdGljIG5hdmlnYXRlKHVybDogc3RyaW5nLCBpc05ld1dpbmRvdzogYm9vbGVhbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBldmVudDogXCJuYXZpZ2F0ZVwiLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBpc05ld1dpbmRvdzogaXNOZXdXaW5kb3csXG4gICAgfSk7XG4gICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShtZXNzYWdlLCBcIipcIik7XG4gIH1cblxuICBzdGF0aWMgZmlsdGVyQ29udGFpbmVyKGZpbHRlcnM6IEZpbHRlcltdIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksXG4gICAgICBzYWZhcmkgPSAvc2FmYXJpLy50ZXN0KHVzZXJBZ2VudCksXG4gICAgICBpb3MgPSAvaXBob25lfGlwb2R8aXBhZC8udGVzdCh1c2VyQWdlbnQpO1xuXG4gICAgY29uc3QgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGV2ZW50OiBcImZpbHRlclwiLFxuICAgICAgZmlsdGVyOlxuICAgICAgICBmaWx0ZXJzICYmXG4gICAgICAgIGZpbHRlcnMubWFwKChmaWx0ZXIpID0+ICh7XG4gICAgICAgICAgY29sdW1uTmFtZTogZmlsdGVyLmNvbHVtbixcbiAgICAgICAgICBvcGVyYXRvcjogZmlsdGVyLm9wZXJhdG9yIHx8IChmaWx0ZXIgYXMgYW55KS5vcGVyYW5kLCAvLyBNb3N0IGZpbHRlciBjb2RlIChpbmNsdWRpbmcgUGhvZW5peCkgc3RpbGwgdXNlcyBcIm9wZXJhbmRcIiBpbnN0ZWFkIG9mIFwib3BlcmF0b3JcIlxuICAgICAgICAgIHZhbHVlczogZmlsdGVyLnZhbHVlcyxcbiAgICAgICAgICBkYXRhVHlwZTogZmlsdGVyLmRhdGFUeXBlLFxuICAgICAgICB9KSksXG4gICAgfSk7XG5cbiAgICBpZiAoaW9zICYmICFzYWZhcmkpIHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmRvbW9maWx0ZXIucG9zdE1lc3NhZ2UoXG4gICAgICAgIGZpbHRlcnMgJiZcbiAgICAgICAgICBmaWx0ZXJzLm1hcCgoZmlsdGVyKSA9PiAoe1xuICAgICAgICAgICAgY29sdW1uOiBmaWx0ZXIuY29sdW1uLFxuICAgICAgICAgICAgb3BlcmFuZDogZmlsdGVyLm9wZXJhdG9yIHx8IChmaWx0ZXIgYXMgYW55KS5vcGVyYW5kLFxuICAgICAgICAgICAgdmFsdWVzOiBmaWx0ZXIudmFsdWVzLFxuICAgICAgICAgICAgZGF0YVR5cGU6IGZpbHRlci5kYXRhVHlwZSxcbiAgICAgICAgICB9KSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UobWVzc2FnZSwgXCIqXCIpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBlbnYgPSBnZXRRdWVyeVBhcmFtcygpO1xuXG4gIHN0YXRpYyBfX3V0aWwgPSB7XG4gICAgaXNWZXJpZmllZE9yaWdpbixcbiAgICBnZXRRdWVyeVBhcmFtcyxcbiAgICBzZXRGb3JtYXRIZWFkZXJzLFxuICAgIGlzU3VjY2VzcyxcbiAgfTtcbn1cblxuY29uc3QgdG9rZW4gPSAod2luZG93IGFzIGFueSkuX19SWVVVX1NJRF9fO1xuXG5mdW5jdGlvbiBkb21vSHR0cChcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IE9iamVjdFJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxPYmplY3RSZXNwb25zZUJvZHlbXT47XG5mdW5jdGlvbiBkb21vSHR0cChcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IEFycmF5UmVxdWVzdE9wdGlvbnMsXG4gIGFzeW5jPzogYm9vbGVhbixcbiAgYm9keT86IFJlcXVlc3RCb2R5XG4pOiBQcm9taXNlPEFycmF5UmVzcG9uc2VCb2R5PjtcbmZ1bmN0aW9uIGRvbW9IdHRwKFxuICBtZXRob2Q6IFJlcXVlc3RNZXRob2RzLFxuICB1cmw6IHN0cmluZyxcbiAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMsXG4gIGFzeW5jPzogYm9vbGVhbixcbiAgYm9keT86IFJlcXVlc3RCb2R5XG4pOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG5mdW5jdGlvbiBkb21vSHR0cDxUPihcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxUPjtcbmZ1bmN0aW9uIGRvbW9IdHRwKFxuICBtZXRob2Q6IFJlcXVlc3RNZXRob2RzLFxuICB1cmw6IHN0cmluZyxcbiAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMsXG4gIGFzeW5jPzogYm9vbGVhbixcbiAgYm9keT86IFJlcXVlc3RCb2R5XG4pOiBQcm9taXNlPFJlc3BvbnNlQm9keT4ge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChcbiAgICByZXNvbHZlOiAodmFsdWU/OiBSZXNwb25zZUJvZHkpID0+IHZvaWQsXG4gICAgcmVqZWN0OiAocmVhc29uPzogRXJyb3IpID0+IHZvaWRcbiAgKSB7XG4gICAgLy8gRG8gdGhlIHVzdWFsIFhIUiBzdHVmZlxuICAgIGxldCByZXE6IFhNTEh0dHBSZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgaWYgKGFzeW5jKSB7XG4gICAgICByZXEub3BlbihtZXRob2QsIHVybCwgYXN5bmMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXEub3BlbihtZXRob2QsIHVybCk7XG4gICAgfVxuICAgIHNldEZvcm1hdEhlYWRlcnMocmVxLCB1cmwsIG9wdGlvbnMpO1xuICAgIHNldENvbnRlbnRIZWFkZXJzKHJlcSwgb3B0aW9ucyk7XG4gICAgc2V0QXV0aFRva2VuSGVhZGVyKHJlcSk7XG4gICAgc2V0UmVzcG9uc2VUeXBlKHJlcSwgb3B0aW9ucyk7XG5cbiAgICByZXEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IGRhdGE7XG4gICAgICAvLyBUaGlzIGlzIGNhbGxlZCBldmVuIG9uIDQwNCBldGMgc28gY2hlY2sgdGhlIHN0YXR1c1xuICAgICAgaWYgKGlzU3VjY2VzcyhyZXEuc3RhdHVzKSkge1xuICAgICAgICBpZiAoW1wiY3N2XCIsIFwiZXhjZWxcIl0uaW5jbHVkZXMob3B0aW9ucy5mb3JtYXQpIHx8ICFyZXEucmVzcG9uc2UpIHtcbiAgICAgICAgICByZXNvbHZlKHJlcS5yZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucmVzcG9uc2VUeXBlID09PSBcImJsb2JcIikge1xuICAgICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgICBuZXcgQmxvYihbcmVxLnJlc3BvbnNlXSwge1xuICAgICAgICAgICAgICB0eXBlOiByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoXCJjb250ZW50LXR5cGVcIiksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVzcG9uc2VTdHIgPSByZXEucmVzcG9uc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gaWYoIXJlc3BvbnNlU3RyKSB7XG4gICAgICAgICAgLy8gICByZXNwb25zZVN0ciA9IFwie31cIjtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2VTdHIpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIHJlamVjdChFcnJvcihcIkludmFsaWQgSlNPTiByZXNwb25zZVwiKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCB0aGUgcmVzcG9uc2UgdGV4dFxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIHJlamVjdCB3aXRoIHRoZSBzdGF0dXMgdGV4dFxuICAgICAgICAvLyB3aGljaCB3aWxsIGhvcGVmdWxseSBiZSBhIG1lYW5pbmdmdWwgZXJyb3JcbiAgICAgICAgcmVqZWN0KEVycm9yKHJlcS5zdGF0dXNUZXh0KSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBuZXR3b3JrIGVycm9yc1xuICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmVqZWN0KEVycm9yKFwiTmV0d29yayBFcnJvclwiKSk7XG4gICAgfTtcblxuICAgIC8vIE1ha2UgdGhlIHJlcXVlc3RcbiAgICBpZiAoYm9keSkge1xuICAgICAgaWYgKCFvcHRpb25zLmNvbnRlbnRUeXBlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgPT09IERhdGFGb3JtYXRzLkpTT04pIHtcbiAgICAgICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgICAvLyBNYWtlIHRoZSByZXF1ZXN0XG4gICAgICAgIHJlcS5zZW5kKGpzb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYm9keSBjYW4gbm8gbG9uZ2VyIGJlIEpTT05cbiAgICAgICAgcmVxLnNlbmQoYm9keSBhcyBEb2N1bWVudCB8IFhNTEh0dHBSZXF1ZXN0Qm9keUluaXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXEuc2VuZCgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzU3VjY2VzcyhzdGF0dXM6IG51bWJlcikge1xuICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG59XG5cbmZ1bmN0aW9uIGlzVmVyaWZpZWRPcmlnaW4ob3JpZ2luOiBzdHJpbmcpIHtcbiAgY29uc3Qgd2hpdGVsaXN0ZWQgPSBvcmlnaW4ubWF0Y2goXG4gICAgXCJeaHR0cHM/Oi8vKFteL10rWy5dKT8oZG9tb3xkb21vdGVjaHxkb21vcmlnKS4oY29tfGlvKT8oLy4qKT8kXCJcbiAgKTtcbiAgY29uc3QgYmxhY2tsaXN0ZWQgPSBvcmlnaW4ubWF0Y2goXCIoLiopLihkb21vYXBwcykuKC4qKVwiKTtcbiAgcmV0dXJuICEhd2hpdGVsaXN0ZWQgJiYgIWJsYWNrbGlzdGVkO1xufVxuXG5mdW5jdGlvbiBnZXRRdWVyeVBhcmFtcygpOiBRdWVyeVBhcmFtcyB7XG4gIGNvbnN0IHF1ZXJ5ID0gbG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKTtcbiAgbGV0IHJlc3VsdDogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gIHF1ZXJ5LnNwbGl0KFwiJlwiKS5mb3JFYWNoKGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgY29uc3QgaXRlbSA9IHBhcnQuc3BsaXQoXCI9XCIpO1xuICAgIHJlc3VsdFtpdGVtWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudChpdGVtWzFdKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHNldEZvcm1hdEhlYWRlcnMoXG4gIHJlcTogWE1MSHR0cFJlcXVlc3QsXG4gIHVybDogc3RyaW5nLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbikge1xuICBpZiAodXJsLmluZGV4T2YoXCJkYXRhL3ZcIikgPT09IC0xKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIHNldCBmb3JtYXRcbiAgY29uc3QgcmVxdWVzdEZvcm1hdDogRGF0YUZvcm1hdHMgPVxuICAgIG9wdGlvbnMuZm9ybWF0ICE9PSB1bmRlZmluZWRcbiAgICAgID8gZG9tb0Zvcm1hdFRvUmVxdWVzdEZvcm1hdChvcHRpb25zLmZvcm1hdClcbiAgICAgIDogRGF0YUZvcm1hdHMuREVGQVVMVDtcblxuICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLCByZXF1ZXN0Rm9ybWF0KTtcbn1cblxuZnVuY3Rpb24gc2V0Q29udGVudEhlYWRlcnMocmVxOiBYTUxIdHRwUmVxdWVzdCwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLmNvbnRlbnRUeXBlKSB7XG4gICAgLy8gc2V0IGNvbnRlbnQgdHlwZSBpZiB1c2VyIHBhc3NlZCBvcHRpb25cbiAgICBpZiAob3B0aW9ucy5jb250ZW50VHlwZSAhPT0gXCJtdWx0aXBhcnRcIikge1xuICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgb3B0aW9ucy5jb250ZW50VHlwZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIERhdGFGb3JtYXRzLkpTT04pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF1dGhUb2tlbkhlYWRlcihyZXE6IFhNTEh0dHBSZXF1ZXN0KSB7XG4gIGlmICh0b2tlbikge1xuICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiWC1ET01PLVJ5dXUtU2Vzc2lvblwiLCB0b2tlbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0UmVzcG9uc2VUeXBlKHJlcTogWE1MSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykge1xuICAvL3NldCByZXNwb25zZSB0eXBlIGlmIHVzZXIgcGFzc2VkIG9wdGlvblxuICBpZiAob3B0aW9ucy5yZXNwb25zZVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlcS5yZXNwb25zZVR5cGUgPSBvcHRpb25zLnJlc3BvbnNlVHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVOb2RlKG5vZGU6IEhUTUxFbGVtZW50KSB7XG4gIGlmIChub2RlID09PSBkb2N1bWVudC5ib2R5IHx8IG5vZGUgPT09IGRvY3VtZW50LmhlYWQpXG4gICAgcmV0dXJuIHByb2Nlc3NCb2R5KG5vZGUpO1xuXG4gIGNvbnN0IGhyZWZBdHRyaWJ1dGUgPVxuICAgIChub2RlLmRhdGFzZXQgJiYgbm9kZS5kYXRhc2V0LmRvbW9IcmVmKSB8fCBub2RlLmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG4gIGNvbnN0IHNyY0F0dHJpYnV0ZSA9XG4gICAgKG5vZGUuZGF0YXNldCAmJiBub2RlLmRhdGFzZXQuZG9tb1NyYykgfHwgbm9kZS5nZXRBdHRyaWJ1dGUoXCJzcmNcIik7XG4gIGNvbnN0IGF0dHIgPSBocmVmQXR0cmlidXRlID8gXCJocmVmXCIgOiBcInNyY1wiO1xuICBjb25zdCB1cmwgPSBocmVmQXR0cmlidXRlIHx8IHNyY0F0dHJpYnV0ZTtcblxuICBpZiAoIXVybCB8fCAhdG9rZW4gfHwgdXJsLmluY2x1ZGVzKHRva2VuKSkgcmV0dXJuO1xuXG4gIGNvbnN0IG5ld1VybCA9IG5ldyBVUkwodXJsLCBkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4pO1xuICBjb25zdCBpc1JlbGF0aXZlVXJsID0gbmV3VXJsLm9yaWdpbiA9PT0gZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luO1xuICBpZiAoaXNSZWxhdGl2ZVVybCkge1xuICAgIG5ld1VybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwicnl1dV9zaWRcIiwgdG9rZW4pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIG5ld1VybC5ocmVmKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQm9keShub2RlOiBhbnkpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgaGFuZGxlTm9kZSg8SFRNTEVsZW1lbnQ+bm9kZS5jaGlsZHJlbltpXSk7XG4gIH1cbn1cblxuY29uc3Qgb2IgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gIGZvciAoY29uc3QgcmVjb3JkIG9mIG11dGF0aW9ucykge1xuICAgIHByb2Nlc3NCb2R5KHJlY29yZC50YXJnZXQpO1xuICB9XG59KTtcblxub2Iub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbm9iLm9ic2VydmUoZG9jdW1lbnQuaGVhZCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4iLCIvKipcbiAqIFN1cHBvcnRlZCBgYWNjZXB0YCBoZWFkZXJzIGZvciBjb250cm9sbGluZyB0aGUgZm9ybWF0XG4gKiBvZiB0aGUgZGF0YSByZXR1cm5lZCBmcm9tIERvbW8uXG4gKlxuICogU2VlIFtkZXZlbG9wZXIuZG9tby5jb21dKGh0dHBzOi8vZGV2ZWxvcGVyLmRvbW8uY29tL2RvY3MvZGV2LXN0dWRpby1yZWZlcmVuY2VzL2RhdGEtYXBpI0RhdGElMjBGb3JtYXRzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGVudW0gRGF0YUZvcm1hdHMge1xuICBERUZBVUxUID0gJ2FwcGxpY2F0aW9uL2FycmF5LW9mLW9iamVjdHMnLFxuICBBUlJBWV9PRl9PQkpFQ1RTID0gJ2FwcGxpY2F0aW9uL2FycmF5LW9mLW9iamVjdHMnLFxuICBKU09OID0gJ2FwcGxpY2F0aW9uL2pzb24nLFxuICBDU1YgPSAndGV4dC9jc3YnLFxuICBFWENFTCA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gIFBMQUlOID0gJ3RleHQvcGxhaW4nXG59IiwiZXhwb3J0IGVudW0gUmVxdWVzdE1ldGhvZHMge1xuICBnZXQgPSAnR0VUJyxcbiAgR0VUID0gJ0dFVCcsXG4gIHBvc3QgPSAnUE9TVCcsXG4gIFBPU1QgPSAnUE9TVCcsXG4gIHB1dCA9ICdQVVQnLFxuICBQVVQgPSAnUFVUJyxcbiAgZGVsZXRlID0gJ0RFTEVURScsXG4gIERFTEVURSA9ICdERUxFVEUnLFxufVxuIiwiZXhwb3J0IHsgUmVxdWVzdE1ldGhvZHMgfSBmcm9tICcuL2VudW1zL3JlcXVlc3QtbWV0aG9kcyc7XG5leHBvcnQgeyBEb21vRGF0YUZvcm1hdHMgfSBmcm9tICcuL2ludGVyZmFjZXMvZG9tby1kYXRhLWZvcm1hdHMnO1xuZXhwb3J0IHsgRGF0YUZvcm1hdHMgfSBmcm9tICcuL2VudW1zL2RhdGEtZm9ybWF0cyc7XG5leHBvcnQgeyBGaWx0ZXJEYXRhVHlwZXMgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWRhdGEtdHlwZXMnO1xuZXhwb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlcic7XG5cbmV4cG9ydCB7IFJlcXVlc3RPcHRpb25zLCBPYmplY3RSZXF1ZXN0T3B0aW9ucywgQXJyYXlSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXF1ZXN0LW9wdGlvbnMnO1xuZXhwb3J0IHsgUXVlcnlQYXJhbXMgfSBmcm9tICcuL2ludGVyZmFjZXMvcXVlcnktcGFyYW1zJztcbmV4cG9ydCB7IFJlcXVlc3RCb2R5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcXVlc3QtYm9keSc7XG5leHBvcnQgeyBSZXNwb25zZUJvZHksIE9iamVjdFJlc3BvbnNlQm9keSwgQXJyYXlSZXNwb25zZUJvZHkgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVzcG9uc2UtYm9keSc7XG5leHBvcnQgeyBKc29uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2pzb24nO1xuIiwiZXhwb3J0IGVudW0gRmlsdGVyRGF0YVR5cGVze1xuICBOVU1FUklDID0gXCJOVU1FUklDXCIsXG4gIERBVEUgPSBcIkRBVEVcIixcbiAgREFURVRJTUUgPSBcIkRBVEVUSU1FXCIsXG4gIFNUUklORyA9IFwiU1RSSU5HXCIsXG59XG4iLCJpbXBvcnQgeyBEb21vRGF0YUZvcm1hdHMsIERhdGFGb3JtYXRzIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRvbW9Gb3JtYXRUb1JlcXVlc3RGb3JtYXQoZm9ybWF0OiBEb21vRGF0YUZvcm1hdHMpOiBEYXRhRm9ybWF0cyB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnYXJyYXktb2Ytb2JqZWN0cyc6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5BUlJBWV9PRl9PQkpFQ1RTO1xuICAgIH1cbiAgICBjYXNlICdhcnJheS1vZi1hcnJheXMnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuSlNPTjtcbiAgICB9XG4gICAgY2FzZSAnZXhjZWwnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuRVhDRUw7XG4gICAgfVxuICAgIGNhc2UgJ2Nzdic6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5DU1Y7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5ERUZBVUxUO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MjcpO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJwb3N0IiwidXJsIiwiYm9keSIsIm9wdGlvbnMiLCJkb21vSHR0cCIsIlJlcXVlc3RNZXRob2RzIiwiUE9TVCIsInB1dCIsIlBVVCIsImdldCIsIkdFVCIsImRlbGV0ZSIsIkRFTEVURSIsImdldEFsbCIsInVybHMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiZG9tbyIsIm9uRGF0YVVwZGF0ZSIsImNiIiwiaW5uZXJDYWxsYmFjayIsImV2ZW50IiwiaXNWZXJpZmllZE9yaWdpbiIsIm9yaWdpbiIsImRhdGEiLCJsZW5ndGgiLCJtZXNzYWdlIiwiSlNPTiIsInBhcnNlIiwiaGFzT3duUHJvcGVydHkiLCJhbGlhcyIsImFjayIsInN0cmluZ2lmeSIsInNvdXJjZSIsIk1lc3NhZ2VQb3J0IiwiU2VydmljZVdvcmtlciIsInBvc3RNZXNzYWdlIiwiZXJyIiwiY29uc29sZSIsIndhcm4iLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5hdmlnYXRlIiwiaXNOZXdXaW5kb3ciLCJwYXJlbnQiLCJmaWx0ZXJDb250YWluZXIiLCJmaWx0ZXJzIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidG9Mb3dlckNhc2UiLCJzYWZhcmkiLCJ0ZXN0IiwiaW9zIiwiZmlsdGVyIiwiY29sdW1uTmFtZSIsImNvbHVtbiIsIm9wZXJhdG9yIiwib3BlcmFuZCIsInZhbHVlcyIsImRhdGFUeXBlIiwid2Via2l0IiwibWVzc2FnZUhhbmRsZXJzIiwiZG9tb2ZpbHRlciIsImNvbm5lY3RlZCIsImxpc3RlbmVycyIsIm9uRmlsdGVyc1VwZGF0ZSIsImNvbm5lY3QiLCJjaGFubmVsIiwiTWVzc2FnZUNoYW5uZWwiLCJwb3J0MiIsImNhbGxiYWNrIiwiaW5kZXgiLCJwdXNoIiwicG9ydDEiLCJvbm1lc3NhZ2UiLCJlIiwicmVzcG9uc2VQb3J0IiwicG9ydHMiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwic3BsaWNlIiwiZW52IiwiZ2V0UXVlcnlQYXJhbXMiLCJfX3V0aWwiLCJzZXRGb3JtYXRIZWFkZXJzIiwiaXNTdWNjZXNzIiwidG9rZW4iLCJfX1JZVVVfU0lEX18iLCJtZXRob2QiLCJhc3luYyIsInJlc29sdmUiLCJyZWplY3QiLCJyZXEiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJjb250ZW50VHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJEYXRhRm9ybWF0cyIsInNldENvbnRlbnRIZWFkZXJzIiwic2V0QXV0aFRva2VuSGVhZGVyIiwicmVzcG9uc2VUeXBlIiwic2V0UmVzcG9uc2VUeXBlIiwib25sb2FkIiwic3RhdHVzIiwiaW5jbHVkZXMiLCJmb3JtYXQiLCJyZXNwb25zZSIsIkJsb2IiLCJ0eXBlIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJyZXNwb25zZVN0ciIsImV4IiwiRXJyb3IiLCJzdGF0dXNUZXh0Iiwib25lcnJvciIsInNlbmQiLCJqc29uIiwid2hpdGVsaXN0ZWQiLCJtYXRjaCIsImJsYWNrbGlzdGVkIiwicXVlcnkiLCJsb2NhdGlvbiIsInNlYXJjaCIsInN1YnN0ciIsInJlc3VsdCIsInNwbGl0IiwicGFydCIsIml0ZW0iLCJkZWNvZGVVUklDb21wb25lbnQiLCJpbmRleE9mIiwicmVxdWVzdEZvcm1hdCIsImRvbW9Gb3JtYXRUb1JlcXVlc3RGb3JtYXQiLCJERUZBVUxUIiwiaGFuZGxlTm9kZSIsIm5vZGUiLCJkb2N1bWVudCIsImhlYWQiLCJwcm9jZXNzQm9keSIsImhyZWZBdHRyaWJ1dGUiLCJkYXRhc2V0IiwiZG9tb0hyZWYiLCJnZXRBdHRyaWJ1dGUiLCJzcmNBdHRyaWJ1dGUiLCJkb21vU3JjIiwiYXR0ciIsIm5ld1VybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsImFwcGVuZCIsInNldEF0dHJpYnV0ZSIsImhyZWYiLCJpIiwiY2hpbGRyZW4iLCJvYiIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJ0YXJnZXQiLCJvYnNlcnZlIiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsIkZpbHRlckRhdGFUeXBlcyIsIkFSUkFZX09GX09CSkVDVFMiLCJFWENFTCIsIkNTViIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iXSwic291cmNlUm9vdCI6IiJ9
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.domo=t():e.domo=t()}(self,(()=>(()=>{"use strict";var e={727:(e,t,r)=>{var n=r(554),o=r(206),a=function(){function e(){}return e.post=function(e,t,r){return i(n.RequestMethods.POST,e,r,!0,t)},e.put=function(e,t,r){return i(n.RequestMethods.PUT,e,r,!0,t)},e.get=function(e,t){return i(n.RequestMethods.GET,e,t)},e.delete=function(e,t){return i(n.RequestMethods.DELETE,e,t)},e.getAll=function(t,r){return Promise.all(t.map((function(t){return e.get(t,r)})))},e.onDataUpdate=function(e){function t(t){if(p(t.origin)&&"string"==typeof t.data&&t.data.length>0)try{var r=JSON.parse(t.data);if(!r.hasOwnProperty("alias"))return;var n=r.alias,o=JSON.stringify({event:"ack",alias:n});t.source instanceof MessagePort||t.source instanceof ServiceWorker||t.source.postMessage(o,t.origin),e(n)}catch(e){console.warn("There was an error in onDataUpdate! It may be that our event listener caught a message from another source and tried to parse it, so your update still may have worked. If you would like more info, here is the error: \n",e)}}return window.addEventListener("message",t),function(){return window.removeEventListener("message",t)}},e.navigate=function(e,t){var r=JSON.stringify({event:"navigate",url:e,isNewWindow:t});window.parent.postMessage(r,"*")},e.filterContainer=function(e){var t=window.navigator.userAgent.toLowerCase(),r=/safari/.test(t),n=/iphone|ipod|ipad/.test(t),o=JSON.stringify({event:"filter",filter:e&&e.map((function(e){return{columnName:e.column,operator:e.operator||e.operand,values:e.values,dataType:e.dataType}}))});n&&!r?window.webkit.messageHandlers.domofilter.postMessage(e&&e.map((function(e){return{column:e.column,operand:e.operator||e.operand,values:e.values,dataType:e.dataType}}))):window.parent.postMessage(o,"*")},e.sendAppData=function(e){var t=JSON.stringify({event:"appData",appData:e});window.parent.postMessage(t,"*")},e.connected=!1,e.listeners={onFiltersUpdate:[],onAppData:[]},e.connect=function(t){void 0===t&&(t=!1),e.connected||(e.connected=!0,e.channel=new MessageChannel,window.parent.postMessage(JSON.stringify({event:"subscribe",skipFilters:t}),"*",[e.channel.port2]),e.channel.port1.onmessage=function(t){var r=t.ports[0];void 0!==r&&("filtersUpdated"===t.data.event&&e.listeners.onFiltersUpdate.length>0?(r.postMessage({}),e.listeners.onFiltersUpdate.forEach((function(e){return e(t.data.filters)}))):"appData"===t.data.event&&e.listeners.onAppData.length>0&&(r.postMessage({}),e.listeners.onAppData.forEach((function(e){return e(t.data.appData)}))))})},e.onFiltersUpdate=function(t){return e.connect(),e.listeners.onFiltersUpdate.push(t),function(){var r=e.listeners.onFiltersUpdate.indexOf(t);e.listeners.onFiltersUpdate.splice(r,1)}},e.onAppData=function(t){return e.connect(!0),e.listeners.onAppData.push(t),function(){var r=e.listeners.onAppData.indexOf(t);e.listeners.onAppData.splice(r,1)}},e.env=c(),e.__util={isVerifiedOrigin:p,getQueryParams:c,setFormatHeaders:d,isSuccess:u},e}(),s=window.__RYUU_SID__;function i(e,t,r,o,a){return r=r||{},new Promise((function(i,p){var c=new XMLHttpRequest;if(o?c.open(e,t,o):c.open(e,t),d(c,t,r),function(e,t){t.contentType?"multipart"!==t.contentType&&e.setRequestHeader("Content-Type",t.contentType):e.setRequestHeader("Content-Type",n.DataFormats.JSON)}(c,r),function(e){s&&e.setRequestHeader("X-DOMO-Ryuu-Session",s)}(c),function(e,t){void 0!==t.responseType&&(e.responseType=t.responseType)}(c,r),c.onload=function(){var e;if(u(c.status)){!["csv","excel"].includes(r.format)&&c.response||i(c.response),"blob"===r.responseType&&i(new Blob([c.response],{type:c.getResponseHeader("content-type")}));var t=c.response;try{e=JSON.parse(t)}catch(e){return void p(Error("Invalid JSON response"))}i(e)}else p(Error(c.statusText))},c.onerror=function(){p(Error("Network Error"))},a)if(r.contentType&&r.contentType!==n.DataFormats.JSON)c.send(a);else{var f=JSON.stringify(a);c.send(f)}else c.send()}))}function u(e){return e>=200&&e<300}function p(e){var t=e.match("^https?://([^/]+[.])?(domo|domotech|domorig).(com|io)?(/.*)?$"),r=e.match("(.*).(domoapps).(.*)");return!!t&&!r}function c(){var e=location.search.substr(1),t={};return e.split("&").forEach((function(e){var r=e.split("=");t[r[0]]=decodeURIComponent(r[1])})),t}function d(e,t,r){if(-1!==t.indexOf("data/v")){var a=void 0!==r.format?(0,o.domoFormatToRequestFormat)(r.format):n.DataFormats.DEFAULT;e.setRequestHeader("Accept",a)}}function f(e){if(e===document.body||e===document.head)return l(e);var t=e.dataset&&e.dataset.domoHref||e.getAttribute("href"),r=e.dataset&&e.dataset.domoSrc||e.getAttribute("src"),n=t?"href":"src",o=t||r;if(o&&s&&!o.includes(s)){var a=new URL(o,document.location.origin);a.origin===document.location.origin&&(a.searchParams.append("ryuu_sid",s),e.setAttribute(n,a.href))}}function l(e){for(var t=0;t<e.children.length;t++)f(e.children[t])}var m=new MutationObserver((function(e){for(var t=0,r=e;t<r.length;t++)l(r[t].target)}));m.observe(document.body,{childList:!0,subtree:!0}),m.observe(document.head,{childList:!0,subtree:!0}),e.exports=a},548:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.DataFormats=void 0,(r=t.DataFormats||(t.DataFormats={})).DEFAULT="application/array-of-objects",r.ARRAY_OF_OBJECTS="application/array-of-objects",r.JSON="application/json",r.CSV="text/csv",r.EXCEL="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",r.PLAIN="text/plain"},64:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.RequestMethods=void 0,(r=t.RequestMethods||(t.RequestMethods={})).get="GET",r.GET="GET",r.post="POST",r.POST="POST",r.put="PUT",r.PUT="PUT",r.delete="DELETE",r.DELETE="DELETE"},554:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FilterDataTypes=t.DataFormats=t.RequestMethods=void 0;var n=r(64);Object.defineProperty(t,"RequestMethods",{enumerable:!0,get:function(){return n.RequestMethods}});var o=r(548);Object.defineProperty(t,"DataFormats",{enumerable:!0,get:function(){return o.DataFormats}});var a=r(616);Object.defineProperty(t,"FilterDataTypes",{enumerable:!0,get:function(){return a.FilterDataTypes}})},616:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.FilterDataTypes=void 0,(r=t.FilterDataTypes||(t.FilterDataTypes={})).NUMERIC="NUMERIC",r.DATE="DATE",r.DATETIME="DATETIME",r.STRING="STRING"},206:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.domoFormatToRequestFormat=void 0;var n=r(554);t.domoFormatToRequestFormat=function(e){switch(e){case"array-of-objects":return n.DataFormats.ARRAY_OF_OBJECTS;case"array-of-arrays":return n.DataFormats.JSON;case"excel":return n.DataFormats.EXCEL;case"csv":return n.DataFormats.CSV;default:return n.DataFormats.DEFAULT}}}},t={};return function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}(727)})()));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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R0ksUUFBUXRCLFNBQVNDLEtBQU0sQ0FBRXNCLFdBQVcsRUFBTUMsU0FBUyxJQTdjdEQsVUFBU25KLGVDUlQsSUFBWXNGLHlFQUFBQSxFQUFBLEVBQUFBLGNBQUEsRUFBQUEsWUFBVyxLQUNyQix1Q0FDQSxrREFDQSwwQkFDQSxpQkFDQSw0RUFDQSxpQ0NiRixJQUFZbkcsNEVBQUFBLEVBQUEsRUFBQUEsaUJBQUEsRUFBQUEsZUFBYyxLQUN4QixVQUNBLFlBQ0EsY0FDQSxjQUNBLFlBQ0EsWUFDQSxrQkFDQSwwSUNSRixZQUFTLGdGQUFBQSxjQUFjLElBRXZCLGFBQVMsNkVBQUFtRyxXQUFXLElBQ3BCLGFBQVMsaUZBQUE4RCxlQUFlLGlCQ0h4QixJQUFZQSw2RUFBQUEsRUFBQSxFQUFBQSxrQkFBQSxFQUFBQSxnQkFBZSxLQUN6QixrQkFDQSxjQUNBLHNCQUNBLHFIQ0pGLGFBRUEscUNBQTBDdEQsR0FDeEMsT0FBUUEsR0FDTixJQUFLLG1CQUNILE9BQU8sRUFBQVIsWUFBWStELGlCQUVyQixJQUFLLGtCQUNILE9BQU8sRUFBQS9ELFlBQVk1RSxLQUVyQixJQUFLLFFBQ0gsT0FBTyxFQUFBNEUsWUFBWWdFLE1BRXJCLElBQUssTUFDSCxPQUFPLEVBQUFoRSxZQUFZaUUsSUFFckIsUUFDRSxPQUFPLEVBQUFqRSxZQUFZa0MsUUFHekIsSUNuQklnQyxFQUEyQixDQUFDLFNBR2hDLFNBQVNDLEVBQW9CQyxHQUU1QixJQUFJQyxFQUFlSCxFQUF5QkUsR0FDNUMsUUFBcUIzRixJQUFqQjRGLEVBQ0gsT0FBT0EsRUFBYWxMLFFBR3JCLElBQUlDLEVBQVM4SyxFQUF5QkUsR0FBWSxDQUdqRGpMLFFBQVMsQ0FBQyxHQU9YLE9BSEFtTCxFQUFvQkYsR0FBVWhMLEVBQVFBLEVBQU9ELFFBQVNnTCxHQUcvQy9LLEVBQU9ELE9BQ2YsQ0NuQjBCZ0wsQ0FBb0IsTVJPOUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL2RvbW8udHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvZW51bXMvZGF0YS1mb3JtYXRzLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2VudW1zL3JlcXVlc3QtbWV0aG9kcy50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9pbmRleC50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9pbnRlcmZhY2VzL2ZpbHRlci1kYXRhLXR5cGVzLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvdXRpbHMvZGF0YS1oZWxwZXJzLnRzIiwid2VicGFjazovL2RvbW8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vZG9tby93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiZG9tb1wiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJkb21vXCJdID0gZmFjdG9yeSgpO1xufSkoc2VsZiwgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIFJlcXVlc3RNZXRob2RzLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgT2JqZWN0UmVxdWVzdE9wdGlvbnMsXG4gIEFycmF5UmVxdWVzdE9wdGlvbnMsXG4gIERhdGFGb3JtYXRzLFxuICBRdWVyeVBhcmFtcyxcbiAgRmlsdGVyLFxuICBSZXF1ZXN0Qm9keSxcbiAgUmVzcG9uc2VCb2R5LFxuICBPYmplY3RSZXNwb25zZUJvZHksXG4gIEFycmF5UmVzcG9uc2VCb2R5LFxufSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCB7IGRvbW9Gb3JtYXRUb1JlcXVlc3RGb3JtYXQgfSBmcm9tIFwiLi91dGlscy9kYXRhLWhlbHBlcnNcIjtcblxuZXhwb3J0ID0gZG9tbztcblxuY2xhc3MgZG9tbyB7XG4gIHN0YXRpYyBwb3N0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk/OiBSZXF1ZXN0Qm9keSxcbiAgICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgcG9zdDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8VD47XG4gIHN0YXRpYyBwb3N0PFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk/OiBSZXF1ZXN0Qm9keSxcbiAgICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGRvbW9IdHRwPFQ+KFJlcXVlc3RNZXRob2RzLlBPU1QsIHVybCwgb3B0aW9ucywgdHJ1ZSwgYm9keSk7XG4gIH1cblxuICBzdGF0aWMgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk/OiBSZXF1ZXN0Qm9keSxcbiAgICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgcHV0PFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk/OiBSZXF1ZXN0Qm9keSxcbiAgICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxUPjtcbiAgc3RhdGljIHB1dDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBkb21vSHR0cDxUPihSZXF1ZXN0TWV0aG9kcy5QVVQsIHVybCwgb3B0aW9ucywgdHJ1ZSwgYm9keSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IE9iamVjdFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8T2JqZWN0UmVzcG9uc2VCb2R5W10+O1xuICBzdGF0aWMgZ2V0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEFycmF5UmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxBcnJheVJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBnZXQodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIGdldDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgc3RhdGljIGdldDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGRvbW9IdHRwPFQ+KFJlcXVlc3RNZXRob2RzLkdFVCwgdXJsLCBvcHRpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBkZWxldGUodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIGRlbGV0ZTxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgc3RhdGljIGRlbGV0ZTxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGRvbW9IdHRwPFQ+KFJlcXVlc3RNZXRob2RzLkRFTEVURSwgdXJsLCBvcHRpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRBbGwoXG4gICAgdXJsczogc3RyaW5nW10sXG4gICAgb3B0aW9uczogT2JqZWN0UmVxdWVzdE9wdGlvbnNcbiAgKTogUHJvbWlzZTxPYmplY3RSZXNwb25zZUJvZHlbXVtdPjtcbiAgc3RhdGljIGdldEFsbChcbiAgICB1cmxzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiBBcnJheVJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8QXJyYXlSZXNwb25zZUJvZHlbXT47XG4gIHN0YXRpYyBnZXRBbGwoXG4gICAgdXJsczogc3RyaW5nW10sXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8UmVzcG9uc2VCb2R5W10+O1xuICBzdGF0aWMgZ2V0QWxsPFQ+KHVybHM6IHN0cmluZ1tdLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFRbXT47XG4gIHN0YXRpYyBnZXRBbGw8VD4odXJsczogc3RyaW5nW10sIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgdXJscy5tYXAoZnVuY3Rpb24gKHVybCkge1xuICAgICAgICByZXR1cm4gZG9tby5nZXQ8VD4odXJsLCBvcHRpb25zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMZXQgdGhlIGRvbW9hcHAgb3B0aW9uYWxseSBoYW5kbGUgaXRzIG93biBkYXRhIHVwZGF0ZXMuXG4gICAqL1xuICBzdGF0aWMgb25EYXRhVXBkYXRlKGNiOiAoYWxpYXM6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xuICAgICAgaWYgKCFpc1ZlcmlmaWVkT3JpZ2luKGV2ZW50Lm9yaWdpbikpIHJldHVybjtcblxuICAgICAgaWYgKHR5cGVvZiBldmVudC5kYXRhID09PSBcInN0cmluZ1wiICYmIGV2ZW50LmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuICAgICAgICAgIGlmICghbWVzc2FnZS5oYXNPd25Qcm9wZXJ0eShcImFsaWFzXCIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYWxpYXMgPSBtZXNzYWdlLmFsaWFzO1xuXG4gICAgICAgICAgLy8gc2VuZCBhY2tub3dsZWRnZW1lbnQgdG8gcHJldmVudCBhdXRvcmVmcmVzaFxuICAgICAgICAgIGNvbnN0IGFjayA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGV2ZW50OiBcImFja1wiLFxuICAgICAgICAgICAgYWxpYXM6IGFsaWFzLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gT25seSBXaW5kb3dQcm94eSB8IFdpbmRvdyBoYXZlIHRoZSBwb3N0TWVzc2FnZSBtZXRob2QgYW5kIHRoZSB0eXBlIG9mIGV2ZW50LnNvdXJjZSB2YXJpZXMgYmV0d2VlbiBicm93c2Vyc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEoZXZlbnQuc291cmNlIGluc3RhbmNlb2YgTWVzc2FnZVBvcnQpICYmXG4gICAgICAgICAgICAhKGV2ZW50LnNvdXJjZSBpbnN0YW5jZW9mIFNlcnZpY2VXb3JrZXIpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoYWNrLCBldmVudC5vcmlnaW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGluZm9ybSBkb21vIGFwcCB3aGljaCBhbGlhcyBoYXMgYmVlbiB1cGRhdGVkXG4gICAgICAgICAgY2IoYWxpYXMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zdCBpbmZvID1cbiAgICAgICAgICAgIFwiVGhlcmUgd2FzIGFuIGVycm9yIGluIG9uRGF0YVVwZGF0ZSEgSXQgbWF5IGJlIHRoYXQgb3VyIGV2ZW50IGxpc3RlbmVyIGNhdWdodCBcIiArXG4gICAgICAgICAgICBcImEgbWVzc2FnZSBmcm9tIGFub3RoZXIgc291cmNlIGFuZCB0cmllZCB0byBwYXJzZSBpdCwgc28geW91ciB1cGRhdGUgc3RpbGwgbWF5IGhhdmUgd29ya2VkLiBcIiArXG4gICAgICAgICAgICBcIklmIHlvdSB3b3VsZCBsaWtlIG1vcmUgaW5mbywgaGVyZSBpcyB0aGUgZXJyb3I6IFxcblwiO1xuICAgICAgICAgIGNvbnNvbGUud2FybihpbmZvLCBlcnIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBpbm5lckNhbGxiYWNrKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGlubmVyQ2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIExldCB0aGUgZG9tb2FwcCBvcHRpb25hbGx5IGhhbmRsZSBvdGhlciBldmVudHNcbiAgICovXG4gIHN0YXRpYyBjaGFubmVsPzogTWVzc2FnZUNoYW5uZWw7XG4gIHN0YXRpYyBjb25uZWN0ZWQgPSBmYWxzZTtcbiAgc3RhdGljIGxpc3RlbmVyczogeyBbaW5kZXg6IHN0cmluZ106IEZ1bmN0aW9uW10gfSA9IHtcbiAgICBvbkZpbHRlcnNVcGRhdGU6IFtdLFxuICAgIG9uQXBwRGF0YTogW10sXG4gIH07XG5cbiAgLy8gc2tpcEZpbHRlcnMgaW5kaWNhdGVzIHRoYXQgd2Ugc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmZXRjaCB0aGUgZmlsdGVycyBmcm9tIHRoZSBwYWdlXG4gIC8vIGlmIHVzaW5nIGNvbm5lY3QoKSB0byBzdWJzY3JpYmUgdG8gbm9uLWZpbHRlciBldmVudHMsIGZldGNoaW5nIGZpbHRlcnMgaW1tZWRpYXRlbHkgd291bGQgY2F1c2UgYSByZWxvYWRcbiAgc3RhdGljIGNvbm5lY3QgPSAoc2tpcEZpbHRlcnMgPSBmYWxzZSkgPT4ge1xuICAgIGlmIChkb21vLmNvbm5lY3RlZCkgcmV0dXJuO1xuICAgIGRvbW8uY29ubmVjdGVkID0gdHJ1ZTtcbiAgICBkb21vLmNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHsgZXZlbnQ6IFwic3Vic2NyaWJlXCIgLCBza2lwRmlsdGVyc30pLCBcIipcIiwgW1xuICAgICAgZG9tby5jaGFubmVsLnBvcnQyLFxuICAgIF0pO1xuICAgIGRvbW8uY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSAoZTogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBbcmVzcG9uc2VQb3J0XSA9IGUucG9ydHM7XG4gICAgICBpZiAocmVzcG9uc2VQb3J0ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgaWYgKFxuICAgICAgICBlLmRhdGEuZXZlbnQgPT09IFwiZmlsdGVyc1VwZGF0ZWRcIiAmJlxuICAgICAgICBkb21vLmxpc3RlbmVycy5vbkZpbHRlcnNVcGRhdGUubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlUG9ydC5wb3N0TWVzc2FnZSh7fSk7IC8vIFByZXZlbnRzIHRoZSBhcHAgZnJvbSByZWxvYWRpbmcuIFNheXMgd2UndmUgaGFuZGxlZCBpdFxuICAgICAgICBkb21vLmxpc3RlbmVycy5vbkZpbHRlcnNVcGRhdGUuZm9yRWFjaCgoY2IpID0+IGNiKGUuZGF0YS5maWx0ZXJzKSk7IC8vIDwtIHNwbGl0IG91dCBvbkZpbHRlcnNVcGRhdGUgc28gdGhhdCB5b3UgY2FuIGhhbmRsZSBlYWNoIG1lc3NhZ2UgZGlmZmVyZW50bHkgaGVyZVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZS5kYXRhLmV2ZW50ID09PSBcImFwcERhdGFcIiAmJlxuICAgICAgICBkb21vLmxpc3RlbmVycy5vbkFwcERhdGEubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlUG9ydC5wb3N0TWVzc2FnZSh7fSk7IC8vIFByZXZlbnRzIHRoZSBhcHAgZnJvbSByZWxvYWRpbmcuIFNheXMgd2UndmUgaGFuZGxlZCBpdFxuICAgICAgICBkb21vLmxpc3RlbmVycy5vbkFwcERhdGEuZm9yRWFjaCgoY2IpID0+IGNiKGUuZGF0YS5hcHBEYXRhKSk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogTGV0IHRoZSBkb21vYXBwIGhhbmRsZSBpdHMgb3duIGZpbHRlciB1cGRhdGVzXG4gICAqL1xuICBzdGF0aWMgb25GaWx0ZXJzVXBkYXRlID0gKGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICAgIGRvbW8uY29ubmVjdCgpO1xuICAgIGRvbW8ubGlzdGVuZXJzLm9uRmlsdGVyc1VwZGF0ZS5wdXNoKGNhbGxiYWNrKTtcblxuICAgIC8vIHVucmVnaXN0ZXJcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBkb21vLmxpc3RlbmVycy5vbkZpbHRlcnNVcGRhdGUuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICBkb21vLmxpc3RlbmVycy5vbkZpbHRlcnNVcGRhdGUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZWNlaXZlIGFyYml0cmFyeSBtZXNzYWdlcyB0byBhbiBlbWJlZGRlZCBkb21vYXBwXG4gICAqL1xuICBzdGF0aWMgb25BcHBEYXRhID0gKGNhbGxiYWNrOiBGdW5jdGlvbikgPT4ge1xuICAgIGRvbW8uY29ubmVjdCh0cnVlKTtcbiAgICBkb21vLmxpc3RlbmVycy5vbkFwcERhdGEucHVzaChjYWxsYmFjayk7XG5cbiAgICAvLyB1bnJlZ2lzdGVyXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZG9tby5saXN0ZW5lcnMub25BcHBEYXRhLmluZGV4T2YoY2FsbGJhY2spO1xuICAgICAgZG9tby5saXN0ZW5lcnMub25BcHBEYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogUmVxdWVzdCBhIG5hdmlnYXRpb24gY2hhbmdlXG4gICAqL1xuICBzdGF0aWMgbmF2aWdhdGUodXJsOiBzdHJpbmcsIGlzTmV3V2luZG93OiBib29sZWFuKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGV2ZW50OiBcIm5hdmlnYXRlXCIsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGlzTmV3V2luZG93OiBpc05ld1dpbmRvdyxcbiAgICB9KTtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKG1lc3NhZ2UsIFwiKlwiKTtcbiAgfVxuXG4gIHN0YXRpYyBmaWx0ZXJDb250YWluZXIoZmlsdGVyczogRmlsdGVyW10gfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxcbiAgICAgIHNhZmFyaSA9IC9zYWZhcmkvLnRlc3QodXNlckFnZW50KSxcbiAgICAgIGlvcyA9IC9pcGhvbmV8aXBvZHxpcGFkLy50ZXN0KHVzZXJBZ2VudCk7XG5cbiAgICBjb25zdCBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZXZlbnQ6IFwiZmlsdGVyXCIsXG4gICAgICBmaWx0ZXI6XG4gICAgICAgIGZpbHRlcnMgJiZcbiAgICAgICAgZmlsdGVycy5tYXAoKGZpbHRlcikgPT4gKHtcbiAgICAgICAgICBjb2x1bW5OYW1lOiBmaWx0ZXIuY29sdW1uLFxuICAgICAgICAgIG9wZXJhdG9yOiBmaWx0ZXIub3BlcmF0b3IgfHwgKGZpbHRlciBhcyBhbnkpLm9wZXJhbmQsIC8vIE1vc3QgZmlsdGVyIGNvZGUgKGluY2x1ZGluZyBQaG9lbml4KSBzdGlsbCB1c2VzIFwib3BlcmFuZFwiIGluc3RlYWQgb2YgXCJvcGVyYXRvclwiXG4gICAgICAgICAgdmFsdWVzOiBmaWx0ZXIudmFsdWVzLFxuICAgICAgICAgIGRhdGFUeXBlOiBmaWx0ZXIuZGF0YVR5cGUsXG4gICAgICAgIH0pKSxcbiAgICB9KTtcblxuICAgIGlmIChpb3MgJiYgIXNhZmFyaSkge1xuICAgICAgKHdpbmRvdyBhcyBhbnkpLndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZG9tb2ZpbHRlci5wb3N0TWVzc2FnZShcbiAgICAgICAgZmlsdGVycyAmJlxuICAgICAgICAgIGZpbHRlcnMubWFwKChmaWx0ZXIpID0+ICh7XG4gICAgICAgICAgICBjb2x1bW46IGZpbHRlci5jb2x1bW4sXG4gICAgICAgICAgICBvcGVyYW5kOiBmaWx0ZXIub3BlcmF0b3IgfHwgKGZpbHRlciBhcyBhbnkpLm9wZXJhbmQsXG4gICAgICAgICAgICB2YWx1ZXM6IGZpbHRlci52YWx1ZXMsXG4gICAgICAgICAgICBkYXRhVHlwZTogZmlsdGVyLmRhdGFUeXBlLFxuICAgICAgICAgIH0pKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShtZXNzYWdlLCBcIipcIik7XG4gICAgfVxuICB9XG5cbiAgLy8gU2VuZCBhcmJpdHJhcnkgZGF0YSB1cCB0byBhbiBlbWJlZGRpbmcgc2l0ZVxuICBzdGF0aWMgc2VuZEFwcERhdGEoYXBwRGF0YTogc3RyaW5nKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGV2ZW50OiBcImFwcERhdGFcIixcbiAgICAgIGFwcERhdGFcbiAgICB9KTtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKG1lc3NhZ2UsIFwiKlwiKTtcbiAgfVxuXG4gIHN0YXRpYyBlbnYgPSBnZXRRdWVyeVBhcmFtcygpO1xuXG4gIHN0YXRpYyBfX3V0aWwgPSB7XG4gICAgaXNWZXJpZmllZE9yaWdpbixcbiAgICBnZXRRdWVyeVBhcmFtcyxcbiAgICBzZXRGb3JtYXRIZWFkZXJzLFxuICAgIGlzU3VjY2VzcyxcbiAgfTtcbn1cblxuY29uc3QgdG9rZW4gPSAod2luZG93IGFzIGFueSkuX19SWVVVX1NJRF9fO1xuXG5mdW5jdGlvbiBkb21vSHR0cChcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IE9iamVjdFJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxPYmplY3RSZXNwb25zZUJvZHlbXT47XG5mdW5jdGlvbiBkb21vSHR0cChcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IEFycmF5UmVxdWVzdE9wdGlvbnMsXG4gIGFzeW5jPzogYm9vbGVhbixcbiAgYm9keT86IFJlcXVlc3RCb2R5XG4pOiBQcm9taXNlPEFycmF5UmVzcG9uc2VCb2R5PjtcbmZ1bmN0aW9uIGRvbW9IdHRwKFxuICBtZXRob2Q6IFJlcXVlc3RNZXRob2RzLFxuICB1cmw6IHN0cmluZyxcbiAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMsXG4gIGFzeW5jPzogYm9vbGVhbixcbiAgYm9keT86IFJlcXVlc3RCb2R5XG4pOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG5mdW5jdGlvbiBkb21vSHR0cDxUPihcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxUPjtcbmZ1bmN0aW9uIGRvbW9IdHRwKFxuICBtZXRob2Q6IFJlcXVlc3RNZXRob2RzLFxuICB1cmw6IHN0cmluZyxcbiAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMsXG4gIGFzeW5jPzogYm9vbGVhbixcbiAgYm9keT86IFJlcXVlc3RCb2R5XG4pOiBQcm9taXNlPFJlc3BvbnNlQm9keT4ge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChcbiAgICByZXNvbHZlOiAodmFsdWU/OiBSZXNwb25zZUJvZHkpID0+IHZvaWQsXG4gICAgcmVqZWN0OiAocmVhc29uPzogRXJyb3IpID0+IHZvaWRcbiAgKSB7XG4gICAgLy8gRG8gdGhlIHVzdWFsIFhIUiBzdHVmZlxuICAgIGxldCByZXE6IFhNTEh0dHBSZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgaWYgKGFzeW5jKSB7XG4gICAgICByZXEub3BlbihtZXRob2QsIHVybCwgYXN5bmMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXEub3BlbihtZXRob2QsIHVybCk7XG4gICAgfVxuICAgIHNldEZvcm1hdEhlYWRlcnMocmVxLCB1cmwsIG9wdGlvbnMpO1xuICAgIHNldENvbnRlbnRIZWFkZXJzKHJlcSwgb3B0aW9ucyk7XG4gICAgc2V0QXV0aFRva2VuSGVhZGVyKHJlcSk7XG4gICAgc2V0UmVzcG9uc2VUeXBlKHJlcSwgb3B0aW9ucyk7XG5cbiAgICByZXEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IGRhdGE7XG4gICAgICAvLyBUaGlzIGlzIGNhbGxlZCBldmVuIG9uIDQwNCBldGMgc28gY2hlY2sgdGhlIHN0YXR1c1xuICAgICAgaWYgKGlzU3VjY2VzcyhyZXEuc3RhdHVzKSkge1xuICAgICAgICBpZiAoW1wiY3N2XCIsIFwiZXhjZWxcIl0uaW5jbHVkZXMob3B0aW9ucy5mb3JtYXQpIHx8ICFyZXEucmVzcG9uc2UpIHtcbiAgICAgICAgICByZXNvbHZlKHJlcS5yZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucmVzcG9uc2VUeXBlID09PSBcImJsb2JcIikge1xuICAgICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgICBuZXcgQmxvYihbcmVxLnJlc3BvbnNlXSwge1xuICAgICAgICAgICAgICB0eXBlOiByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoXCJjb250ZW50LXR5cGVcIiksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVzcG9uc2VTdHIgPSByZXEucmVzcG9uc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gaWYoIXJlc3BvbnNlU3RyKSB7XG4gICAgICAgICAgLy8gICByZXNwb25zZVN0ciA9IFwie31cIjtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2VTdHIpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIHJlamVjdChFcnJvcihcIkludmFsaWQgSlNPTiByZXNwb25zZVwiKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCB0aGUgcmVzcG9uc2UgdGV4dFxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIHJlamVjdCB3aXRoIHRoZSBzdGF0dXMgdGV4dFxuICAgICAgICAvLyB3aGljaCB3aWxsIGhvcGVmdWxseSBiZSBhIG1lYW5pbmdmdWwgZXJyb3JcbiAgICAgICAgcmVqZWN0KEVycm9yKHJlcS5zdGF0dXNUZXh0KSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBuZXR3b3JrIGVycm9yc1xuICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmVqZWN0KEVycm9yKFwiTmV0d29yayBFcnJvclwiKSk7XG4gICAgfTtcblxuICAgIC8vIE1ha2UgdGhlIHJlcXVlc3RcbiAgICBpZiAoYm9keSkge1xuICAgICAgaWYgKCFvcHRpb25zLmNvbnRlbnRUeXBlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgPT09IERhdGFGb3JtYXRzLkpTT04pIHtcbiAgICAgICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgICAvLyBNYWtlIHRoZSByZXF1ZXN0XG4gICAgICAgIHJlcS5zZW5kKGpzb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYm9keSBjYW4gbm8gbG9uZ2VyIGJlIEpTT05cbiAgICAgICAgcmVxLnNlbmQoYm9keSBhcyBEb2N1bWVudCB8IFhNTEh0dHBSZXF1ZXN0Qm9keUluaXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXEuc2VuZCgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzU3VjY2VzcyhzdGF0dXM6IG51bWJlcikge1xuICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG59XG5cbmZ1bmN0aW9uIGlzVmVyaWZpZWRPcmlnaW4ob3JpZ2luOiBzdHJpbmcpIHtcbiAgY29uc3Qgd2hpdGVsaXN0ZWQgPSBvcmlnaW4ubWF0Y2goXG4gICAgXCJeaHR0cHM/Oi8vKFteL10rWy5dKT8oZG9tb3xkb21vdGVjaHxkb21vcmlnKS4oY29tfGlvKT8oLy4qKT8kXCJcbiAgKTtcbiAgY29uc3QgYmxhY2tsaXN0ZWQgPSBvcmlnaW4ubWF0Y2goXCIoLiopLihkb21vYXBwcykuKC4qKVwiKTtcbiAgcmV0dXJuICEhd2hpdGVsaXN0ZWQgJiYgIWJsYWNrbGlzdGVkO1xufVxuXG5mdW5jdGlvbiBnZXRRdWVyeVBhcmFtcygpOiBRdWVyeVBhcmFtcyB7XG4gIGNvbnN0IHF1ZXJ5ID0gbG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKTtcbiAgbGV0IHJlc3VsdDogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gIHF1ZXJ5LnNwbGl0KFwiJlwiKS5mb3JFYWNoKGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgY29uc3QgaXRlbSA9IHBhcnQuc3BsaXQoXCI9XCIpO1xuICAgIHJlc3VsdFtpdGVtWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudChpdGVtWzFdKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHNldEZvcm1hdEhlYWRlcnMoXG4gIHJlcTogWE1MSHR0cFJlcXVlc3QsXG4gIHVybDogc3RyaW5nLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbikge1xuICBpZiAodXJsLmluZGV4T2YoXCJkYXRhL3ZcIikgPT09IC0xKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIHNldCBmb3JtYXRcbiAgY29uc3QgcmVxdWVzdEZvcm1hdDogRGF0YUZvcm1hdHMgPVxuICAgIG9wdGlvbnMuZm9ybWF0ICE9PSB1bmRlZmluZWRcbiAgICAgID8gZG9tb0Zvcm1hdFRvUmVxdWVzdEZvcm1hdChvcHRpb25zLmZvcm1hdClcbiAgICAgIDogRGF0YUZvcm1hdHMuREVGQVVMVDtcblxuICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLCByZXF1ZXN0Rm9ybWF0KTtcbn1cblxuZnVuY3Rpb24gc2V0Q29udGVudEhlYWRlcnMocmVxOiBYTUxIdHRwUmVxdWVzdCwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLmNvbnRlbnRUeXBlKSB7XG4gICAgLy8gc2V0IGNvbnRlbnQgdHlwZSBpZiB1c2VyIHBhc3NlZCBvcHRpb25cbiAgICBpZiAob3B0aW9ucy5jb250ZW50VHlwZSAhPT0gXCJtdWx0aXBhcnRcIikge1xuICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgb3B0aW9ucy5jb250ZW50VHlwZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsIERhdGFGb3JtYXRzLkpTT04pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF1dGhUb2tlbkhlYWRlcihyZXE6IFhNTEh0dHBSZXF1ZXN0KSB7XG4gIGlmICh0b2tlbikge1xuICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiWC1ET01PLVJ5dXUtU2Vzc2lvblwiLCB0b2tlbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0UmVzcG9uc2VUeXBlKHJlcTogWE1MSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykge1xuICAvL3NldCByZXNwb25zZSB0eXBlIGlmIHVzZXIgcGFzc2VkIG9wdGlvblxuICBpZiAob3B0aW9ucy5yZXNwb25zZVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlcS5yZXNwb25zZVR5cGUgPSBvcHRpb25zLnJlc3BvbnNlVHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVOb2RlKG5vZGU6IEhUTUxFbGVtZW50KSB7XG4gIGlmIChub2RlID09PSBkb2N1bWVudC5ib2R5IHx8IG5vZGUgPT09IGRvY3VtZW50LmhlYWQpXG4gICAgcmV0dXJuIHByb2Nlc3NCb2R5KG5vZGUpO1xuXG4gIGNvbnN0IGhyZWZBdHRyaWJ1dGUgPVxuICAgIChub2RlLmRhdGFzZXQgJiYgbm9kZS5kYXRhc2V0LmRvbW9IcmVmKSB8fCBub2RlLmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG4gIGNvbnN0IHNyY0F0dHJpYnV0ZSA9XG4gICAgKG5vZGUuZGF0YXNldCAmJiBub2RlLmRhdGFzZXQuZG9tb1NyYykgfHwgbm9kZS5nZXRBdHRyaWJ1dGUoXCJzcmNcIik7XG4gIGNvbnN0IGF0dHIgPSBocmVmQXR0cmlidXRlID8gXCJocmVmXCIgOiBcInNyY1wiO1xuICBjb25zdCB1cmwgPSBocmVmQXR0cmlidXRlIHx8IHNyY0F0dHJpYnV0ZTtcblxuICBpZiAoIXVybCB8fCAhdG9rZW4gfHwgdXJsLmluY2x1ZGVzKHRva2VuKSkgcmV0dXJuO1xuXG4gIGNvbnN0IG5ld1VybCA9IG5ldyBVUkwodXJsLCBkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4pO1xuICBjb25zdCBpc1JlbGF0aXZlVXJsID0gbmV3VXJsLm9yaWdpbiA9PT0gZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luO1xuICBpZiAoaXNSZWxhdGl2ZVVybCkge1xuICAgIG5ld1VybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwicnl1dV9zaWRcIiwgdG9rZW4pO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIG5ld1VybC5ocmVmKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQm9keShub2RlOiBhbnkpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgaGFuZGxlTm9kZSg8SFRNTEVsZW1lbnQ+bm9kZS5jaGlsZHJlbltpXSk7XG4gIH1cbn1cblxuY29uc3Qgb2IgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gIGZvciAoY29uc3QgcmVjb3JkIG9mIG11dGF0aW9ucykge1xuICAgIHByb2Nlc3NCb2R5KHJlY29yZC50YXJnZXQpO1xuICB9XG59KTtcblxub2Iub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbm9iLm9ic2VydmUoZG9jdW1lbnQuaGVhZCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4iLCIvKipcbiAqIFN1cHBvcnRlZCBgYWNjZXB0YCBoZWFkZXJzIGZvciBjb250cm9sbGluZyB0aGUgZm9ybWF0XG4gKiBvZiB0aGUgZGF0YSByZXR1cm5lZCBmcm9tIERvbW8uXG4gKlxuICogU2VlIFtkZXZlbG9wZXIuZG9tby5jb21dKGh0dHBzOi8vZGV2ZWxvcGVyLmRvbW8uY29tL2RvY3MvZGV2LXN0dWRpby1yZWZlcmVuY2VzL2RhdGEtYXBpI0RhdGElMjBGb3JtYXRzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGVudW0gRGF0YUZvcm1hdHMge1xuICBERUZBVUxUID0gJ2FwcGxpY2F0aW9uL2FycmF5LW9mLW9iamVjdHMnLFxuICBBUlJBWV9PRl9PQkpFQ1RTID0gJ2FwcGxpY2F0aW9uL2FycmF5LW9mLW9iamVjdHMnLFxuICBKU09OID0gJ2FwcGxpY2F0aW9uL2pzb24nLFxuICBDU1YgPSAndGV4dC9jc3YnLFxuICBFWENFTCA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gIFBMQUlOID0gJ3RleHQvcGxhaW4nXG59IiwiZXhwb3J0IGVudW0gUmVxdWVzdE1ldGhvZHMge1xuICBnZXQgPSAnR0VUJyxcbiAgR0VUID0gJ0dFVCcsXG4gIHBvc3QgPSAnUE9TVCcsXG4gIFBPU1QgPSAnUE9TVCcsXG4gIHB1dCA9ICdQVVQnLFxuICBQVVQgPSAnUFVUJyxcbiAgZGVsZXRlID0gJ0RFTEVURScsXG4gIERFTEVURSA9ICdERUxFVEUnLFxufVxuIiwiZXhwb3J0IHsgUmVxdWVzdE1ldGhvZHMgfSBmcm9tICcuL2VudW1zL3JlcXVlc3QtbWV0aG9kcyc7XG5leHBvcnQgeyBEb21vRGF0YUZvcm1hdHMgfSBmcm9tICcuL2ludGVyZmFjZXMvZG9tby1kYXRhLWZvcm1hdHMnO1xuZXhwb3J0IHsgRGF0YUZvcm1hdHMgfSBmcm9tICcuL2VudW1zL2RhdGEtZm9ybWF0cyc7XG5leHBvcnQgeyBGaWx0ZXJEYXRhVHlwZXMgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWRhdGEtdHlwZXMnO1xuZXhwb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlcic7XG5cbmV4cG9ydCB7IFJlcXVlc3RPcHRpb25zLCBPYmplY3RSZXF1ZXN0T3B0aW9ucywgQXJyYXlSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXF1ZXN0LW9wdGlvbnMnO1xuZXhwb3J0IHsgUXVlcnlQYXJhbXMgfSBmcm9tICcuL2ludGVyZmFjZXMvcXVlcnktcGFyYW1zJztcbmV4cG9ydCB7IFJlcXVlc3RCb2R5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcXVlc3QtYm9keSc7XG5leHBvcnQgeyBSZXNwb25zZUJvZHksIE9iamVjdFJlc3BvbnNlQm9keSwgQXJyYXlSZXNwb25zZUJvZHkgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVzcG9uc2UtYm9keSc7XG5leHBvcnQgeyBKc29uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2pzb24nO1xuIiwiZXhwb3J0IGVudW0gRmlsdGVyRGF0YVR5cGVze1xuICBOVU1FUklDID0gXCJOVU1FUklDXCIsXG4gIERBVEUgPSBcIkRBVEVcIixcbiAgREFURVRJTUUgPSBcIkRBVEVUSU1FXCIsXG4gIFNUUklORyA9IFwiU1RSSU5HXCIsXG59XG4iLCJpbXBvcnQgeyBEb21vRGF0YUZvcm1hdHMsIERhdGFGb3JtYXRzIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRvbW9Gb3JtYXRUb1JlcXVlc3RGb3JtYXQoZm9ybWF0OiBEb21vRGF0YUZvcm1hdHMpOiBEYXRhRm9ybWF0cyB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnYXJyYXktb2Ytb2JqZWN0cyc6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5BUlJBWV9PRl9PQkpFQ1RTO1xuICAgIH1cbiAgICBjYXNlICdhcnJheS1vZi1hcnJheXMnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuSlNPTjtcbiAgICB9XG4gICAgY2FzZSAnZXhjZWwnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuRVhDRUw7XG4gICAgfVxuICAgIGNhc2UgJ2Nzdic6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5DU1Y7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5ERUZBVUxUO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MjcpO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJwb3N0IiwidXJsIiwiYm9keSIsIm9wdGlvbnMiLCJkb21vSHR0cCIsIlJlcXVlc3RNZXRob2RzIiwiUE9TVCIsInB1dCIsIlBVVCIsImdldCIsIkdFVCIsImRlbGV0ZSIsIkRFTEVURSIsImdldEFsbCIsInVybHMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiZG9tbyIsIm9uRGF0YVVwZGF0ZSIsImNiIiwiaW5uZXJDYWxsYmFjayIsImV2ZW50IiwiaXNWZXJpZmllZE9yaWdpbiIsIm9yaWdpbiIsImRhdGEiLCJsZW5ndGgiLCJtZXNzYWdlIiwiSlNPTiIsInBhcnNlIiwiaGFzT3duUHJvcGVydHkiLCJhbGlhcyIsImFjayIsInN0cmluZ2lmeSIsInNvdXJjZSIsIk1lc3NhZ2VQb3J0IiwiU2VydmljZVdvcmtlciIsInBvc3RNZXNzYWdlIiwiZXJyIiwiY29uc29sZSIsIndhcm4iLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5hdmlnYXRlIiwiaXNOZXdXaW5kb3ciLCJwYXJlbnQiLCJmaWx0ZXJDb250YWluZXIiLCJmaWx0ZXJzIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidG9Mb3dlckNhc2UiLCJzYWZhcmkiLCJ0ZXN0IiwiaW9zIiwiZmlsdGVyIiwiY29sdW1uTmFtZSIsImNvbHVtbiIsIm9wZXJhdG9yIiwib3BlcmFuZCIsInZhbHVlcyIsImRhdGFUeXBlIiwid2Via2l0IiwibWVzc2FnZUhhbmRsZXJzIiwiZG9tb2ZpbHRlciIsInNlbmRBcHBEYXRhIiwiYXBwRGF0YSIsImNvbm5lY3RlZCIsImxpc3RlbmVycyIsIm9uRmlsdGVyc1VwZGF0ZSIsIm9uQXBwRGF0YSIsImNvbm5lY3QiLCJza2lwRmlsdGVycyIsImNoYW5uZWwiLCJNZXNzYWdlQ2hhbm5lbCIsInBvcnQyIiwicG9ydDEiLCJvbm1lc3NhZ2UiLCJlIiwicmVzcG9uc2VQb3J0IiwicG9ydHMiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwiY2FsbGJhY2siLCJwdXNoIiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwiZW52IiwiZ2V0UXVlcnlQYXJhbXMiLCJfX3V0aWwiLCJzZXRGb3JtYXRIZWFkZXJzIiwiaXNTdWNjZXNzIiwidG9rZW4iLCJfX1JZVVVfU0lEX18iLCJtZXRob2QiLCJhc3luYyIsInJlc29sdmUiLCJyZWplY3QiLCJyZXEiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJjb250ZW50VHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJEYXRhRm9ybWF0cyIsInNldENvbnRlbnRIZWFkZXJzIiwic2V0QXV0aFRva2VuSGVhZGVyIiwicmVzcG9uc2VUeXBlIiwic2V0UmVzcG9uc2VUeXBlIiwib25sb2FkIiwic3RhdHVzIiwiaW5jbHVkZXMiLCJmb3JtYXQiLCJyZXNwb25zZSIsIkJsb2IiLCJ0eXBlIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJyZXNwb25zZVN0ciIsImV4IiwiRXJyb3IiLCJzdGF0dXNUZXh0Iiwib25lcnJvciIsInNlbmQiLCJqc29uIiwid2hpdGVsaXN0ZWQiLCJtYXRjaCIsImJsYWNrbGlzdGVkIiwicXVlcnkiLCJsb2NhdGlvbiIsInNlYXJjaCIsInN1YnN0ciIsInJlc3VsdCIsInNwbGl0IiwicGFydCIsIml0ZW0iLCJkZWNvZGVVUklDb21wb25lbnQiLCJyZXF1ZXN0Rm9ybWF0IiwiZG9tb0Zvcm1hdFRvUmVxdWVzdEZvcm1hdCIsIkRFRkFVTFQiLCJoYW5kbGVOb2RlIiwibm9kZSIsImRvY3VtZW50IiwiaGVhZCIsInByb2Nlc3NCb2R5IiwiaHJlZkF0dHJpYnV0ZSIsImRhdGFzZXQiLCJkb21vSHJlZiIsImdldEF0dHJpYnV0ZSIsInNyY0F0dHJpYnV0ZSIsImRvbW9TcmMiLCJhdHRyIiwibmV3VXJsIiwiVVJMIiwic2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwic2V0QXR0cmlidXRlIiwiaHJlZiIsImkiLCJjaGlsZHJlbiIsIm9iIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsInRhcmdldCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiRmlsdGVyRGF0YVR5cGVzIiwiQVJSQVlfT0ZfT0JKRUNUUyIsIkVYQ0VMIiwiQ1NWIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyJdLCJzb3VyY2VSb290IjoiIn0=
/*!
* domo.js v4.4.1
* domo.js v4.5.0
* Optional utility library for Custom Apps
*/
{
"name": "ryuu.js",
"version": "4.4.1",
"version": "4.5.0",
"description": "Ryuu JavaScript Utility Library",

@@ -5,0 +5,0 @@ "main": "dist/domo.js",

@@ -148,20 +148,14 @@ import {

onFiltersUpdate: [],
onAppData: [],
};
static connect = () => {
// skipFilters indicates that we should not immediately fetch the filters from the page
// if using connect() to subscribe to non-filter events, fetching filters immediately would cause a reload
static connect = (skipFilters = false) => {
if (domo.connected) return;
domo.connected = true;
domo.channel = new MessageChannel();
window.parent.postMessage(JSON.stringify({ event: "subscribe" }), "*", [
window.parent.postMessage(JSON.stringify({ event: "subscribe" , skipFilters}), "*", [
domo.channel.port2,
]);
};
/**
* Let the domoapp handle its own filter updates
*/
static onFiltersUpdate = (callback: Function) => {
domo.connect();
const index = domo.listeners.onFiltersUpdate.push(callback) - 1;
domo.channel.port1.onmessage = (e: MessageEvent) => {

@@ -177,7 +171,22 @@ const [responsePort] = e.ports;

domo.listeners.onFiltersUpdate.forEach((cb) => cb(e.data.filters)); // <- split out onFiltersUpdate so that you can handle each message differently here
} else if (
e.data.event === "appData" &&
domo.listeners.onAppData.length > 0
) {
responsePort.postMessage({}); // Prevents the app from reloading. Says we've handled it
domo.listeners.onAppData.forEach((cb) => cb(e.data.appData));
}
};
};
/**
* Let the domoapp handle its own filter updates
*/
static onFiltersUpdate = (callback: Function) => {
domo.connect();
domo.listeners.onFiltersUpdate.push(callback);
// unregister
return () => {
const index = domo.listeners.onFiltersUpdate.indexOf(callback);
domo.listeners.onFiltersUpdate.splice(index, 1);

@@ -188,2 +197,16 @@ };

/**
* Receive arbitrary messages to an embedded domoapp
*/
static onAppData = (callback: Function) => {
domo.connect(true);
domo.listeners.onAppData.push(callback);
// unregister
return () => {
const index = domo.listeners.onAppData.indexOf(callback);
domo.listeners.onAppData.splice(index, 1);
};
};
/**
* Request a navigation change

@@ -232,2 +255,11 @@ */

// Send arbitrary data up to an embedding site
static sendAppData(appData: string) {
const message = JSON.stringify({
event: "appData",
appData
});
window.parent.postMessage(message, "*");
}
static env = getQueryParams();

@@ -234,0 +266,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc