@hpcc-js/other 2.15.1 → 2.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","bind","f","setTimeout","clearNow","Timer","_call","_time","_next","timer","callback","delay","time","t","restart","wake","e","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","stop","Audio","_super","_this","_tag","_sections","section","label","offset","beatLength","beatCount","arguments","length","endOffset","getType","fileExt","enter","domNode","element","context","on","onPlay","update","selectAll","data","source","append","attr","createTimer","params","startTime","beat","d3Timer","onTick","key","i","play","_element","d2","node","load","HTMLWidget","_class","publish","autoComplete","options","document","querySelector","o","selector","minChars","offsetLeft","offsetTop","cache","menuClass","renderItem","item","search","replace","re","RegExp","split","join","onSelect","term","k","elems","querySelectorAll","that","sc","createElement","className","autocompleteAttr","getAttribute","setAttribute","last_val","updateSC","resize","next","rect","getBoundingClientRect","style","left","Math","round","pageXOffset","documentElement","scrollLeft","top","bottom","pageYOffset","scrollTop","width","right","display","classList","remove","maxHeight","parseInt","getComputedStyle","currentStyle","suggestionHeight","offsetHeight","scrTop","selTop","addEvent","body","appendChild","live","sel","hasClass","v","value","add","blurHandler","over_sb","activeElement","focus","suggest","val","s","innerHTML","keydownHandler","event","keyCode","which","nextSibling","previousSibling","childNodes","preventDefault","keyupHandler","part","slice","focusHandler","destroy","removeEvent","removeAttribute","removeChild","el","contains","test","type","handler","attachEvent","addEventListener","detachEvent","removeEventListener","elClass","cb","found","target","srcElement","parentElement","module","exports","styleInject","css","ref","insertAt","head","getElementsByTagName","firstChild","insertBefore","styleSheet","cssText","createTextNode","AutoCompleteText","autoCompleteTextData","_db","rollupView","textColumn","valueColumn","entries","map","row","idx","text","values","origRow","_span","_prompt","id","_input","placeholder","textboxWidth_exists","textboxWidth","_prevMinCharsText","minCharsText","_autoComplete","context_1","AutoComplete","field","fieldByLabel","toLowerCase","filter","indexOf","rowIdx","click","rowToObj","exit","column","selected","optional","columns","newInterval","floori","offseti","count","date","floor","ceil","d0","d1","step","range","start","previous","push","setTime","end","every","isFinite","days","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","months","setMonth","getMonth","getFullYear","year","setFullYear","d3TimeYear","CalendarHeatMap","Utility","SimpleSelectionMixin","calendarData","fields","dateParser","d3TimeParse","datePattern","valueFormatter","aggrDeltaColumn","d3Format","_prevDateColumn","dateColumn","_prevAggrType","aggrType","_prevAggrColumn","aggrColumn","_prevAggrDeltaColumn","_view","aggregateView","dateKey","formattedValues","aggregate","origRows","calcDelta","Close","Open","d3Select","parentNode","_selection","widgetElement","_palette","switch","paletteID","cellSize","height","mappedData","d3Map","dateExtent","d3Extent","svg","d3Range","svgUpdate","each","g","_d3TimeMonths","d3TimeMonths","_months","forEach","_m","calcMonthPath","monthStrokeColor","monthStrokeWidth","merge","select","dataExtent","max","abs","dayRect","d3TimeDays","dayRectUpdate","data2","get","dblclick","d3TimeWeek","dayStrokeColor","dayStrokeWidth","has","monthPath","w0","w1","mixin","Palette","rainbow","tags","disable","w","espValFix","trim","Row","espRowFix","retVal","isNaN","Number","ESPUrl","_protocol","_hostname","url","_","_url","parser","href","tmp","substring","tmpItem","decodeURIComponent","protocol","hostname","_port","port","_pathname","pathname","_search","_params","_hash","hash","_host","host","param","isWsWorkunits","isWorkunitResult","isWsEcl","isWsWorkunits_GetStats","getUrl","overrides","undefined","ESPMappings","mappings","resultName","_mappings","_reverseMappings","origField","exists","mapResult","response","mapping","x","y","mapResponse","serialize","obj","str","encodeURIComponent","jsonp","request","Promise","resolve","reject","respondedTimeout","callbackName","random","doCallback","script","src","progress","Error","Comms","_proxyMappings","_timeout","_hipieResults","hipieResults","_hipieResultsLength","newUrlParts","newUrl","espUrl","IP","PORT","PATH","ajax","method","uri","xhr","XMLHttpRequest","onload","status","JSON","parse","statusText","onerror","open","setRequestHeader","send","post","proxyMappings","Basic","cacheCalls","_cacheCalls","localStorage","getItem","console","error","catch","then","response2","setItem","stringify","removeItem","locateRoxieResponse","locateRoxieException","Exception","WsECL","_target","_query","apply","query","pathParts","queryParts","constructUrl","_response","reduce","previousValue","exception","index","array","Source","Code","Message","WsWorkunits","_wuid","_jobname","_sequence","_resultName","_fetchResultNamesPromise","_fetchResultPromise","_resultNameCache","_resultNameCacheCount","wuid","sequence","urlParts","urlParts2","jobname","appendParam","_fetchResult","skipMapping","resultname","_start","_count","Wuid","ResultName","SuppressXmlSchema","Start","Count","context_2","Result","responseKey","_total","Total","fetchResult","context_3","WUQuery","_request","Jobname","WUQueryResponse","Workunits","ECLWorkunit","fetchResultNames","url_1","request_1","TruncateEclTo64k","IncludeExceptions","IncludeGraphs","IncludeSourceFiles","IncludeResults","IncludeResultsViewNames","IncludeVariables","IncludeTimers","IncludeResourceURLs","IncludeDebugValues","IncludeApplicationValues","IncludeWorkflows","IncludeXmlSchemas","SuppressResultSchemas","context_4","WUInfoResponse","Workunit","Archived","warn","Results","ECLResult","Name","fetchResults","fetchArray","all","responseArray","postFilter","request_key","WsWorkunits_GetStats","HIPIERoxie","HIPIEWorkunit","HIPIEDatabomb","createESPConnection","URL","testURL","WUGetStatsResponse","Statistics","WUStatisticItem","name","hipieKey","from","refresh","filterResults","request2","changedFilter","hipieResult","outputFilter","filters","isRange","fieldid","key2","matches","databomb","_databomb","databombOutput","func","nestedRowFix","enableBasicCommsCache","basicCommsCache","BasicComms","Comms.Basic","baseUrl","WUResult","_name","_xmlSchema","LogicalFile","logicalName","_logicalName","RoxieQuery","queryName","pop","_queryName","trimRight","results","createResult","_espUrl","dataSource","Comms.ESPUrl","requestStr","wuQuery","Type","Cluster","RoxieCluster","Owner","State","StartDate","EndDate","ECL","LogicalFileSearchType","After","Before","PageSize","PageStartFrom","PageEndAt","LastNDays","Sortby","Descending","CacheHint","wuInfo","includeKey","wuUpdate","appData","appID","persistString","ApplicationValues","ApplicationValue","Application","Value","result","filterIdx","fKey","WUResultResponse","XmlSchema","LogicalName","simpleheat","canvas","_canvas","getElementById","_ctx","getContext","_width","_height","_max","_data","defaultRadius","defaultGradient","point","clear","radius","r","blur","circle","_circle","_createCanvas","ctx","r2","_r","shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","beginPath","arc","PI","closePath","fill","gradient","grad","createLinearGradient","addColorStop","fillStyle","fillRect","_grad","getImageData","draw","minOpacity","clearRect","len","globalAlpha","drawImage","colored","_colorize","putImageData","pixels","j","_simpleheat","_simpleheat.default","HeatMap","_size","_heat","useClonedPalette","cloneNotExists","topLeftX_exists","topLeftY_exists","bottomRightX_exists","bottomRightY_exists","skewedData","usePalette","colorCount","size","CanvasWidget","retArr","arr","box","coordsWidth","bottomRightX","topLeftX","coordsHeight","bottomRightY","topLeftY","pixelValueX","pixelValueY","n","newX","newY","HPCCBadge","testData","root","logo","logo_accent","line","circle_accent","logo_circles","circle_1","circle_2","circle_3","circle_4","circle_5","circle_6","circle_7","circle_8","text_hpccsystems","text_r","text_tm","bbox","getBBox","centerX","centerY","scale","min","animation","transition","duration","ease","SVGWidget","Html","overflowX_exists","overflowX","overflowY_exists","overflowY","html","IconList","_entity_list","_content_list","_list","HorizontalList","orientation_default","flexWrap_default","listWidgets","widgets","updateListProperties","updateEntityProperties","htmlColumnIndex_exists","htmlColumnIndex","VerticalList","Entity","render","list","disableScroll","widgetsFlexBasis","iconSize","concat","entity","icon","iconColumnIndex_exists","iconColumnIndex","iconColor","iconColorColumnIndex_exists","iconColorColumnIndex","iconDiameter","iconPaddingPercent","Paginator","_tNumPages","_numList","postUpdate","paginator","side","classed","property","pageNumber","_onSelect","numItems","itemsPerPage","adjacentPages","page","li","a","linkText","span","d3Event","order","Table","_paginator","_selectionBag","Selection","_selectionPrevClick","_paginatorTableSpacing","tableDiv","topMargin","showHeader","fixedHeader","thead","isHidden","colIdx","pivot","hiddenColumns","_empty_col_idx_arr","tableColumns","tableData","col","noTransform","transform","calcFieldsIndex","colLen","visibleCount","getEmptyColumnIdxArr","ret_arr","hideEmptyColumns","col_idx","column_is_empty","row_idx","_placeholderElement","table","fixedHead","fixedHeadTable","fixedThead","unfixedThead","tbody","tfoot","fixedCol","fixedColTable","fixedColHead","fixedColHeadRow","fixedColBody","fixedColFoot","fixedColFootRow","sortByFieldIndex_exists","_prevSortByFieldIndex","sortByFieldIndex","_prevDescending","descending","multiSort","reverse","_hasChildWidgets","thSel","thUpdate","element2","headerClick","theadRowBackgroundColor","theadCellBorderColor","theadFontColor","theadFontSize","theadFontFamily","fieldsIdx","paginationLimit","pagination","ipp","_calcRowsPerPage","startIndex","itemsOnPage","tData","topN","totalRow","totalledLabel","totalledColumns","sum","tfSel","tfootRowBackgroundColor","tfootCellBorderColor","tfootFontColor","tfootFontSize","renderHtmlDataCells","rowsSel","rowsUpdate","_d","selectionBagClick","applyRowStyles","getBodyRow","applyFirstColRowStyles","getFixedRow","fixedLeftRows","empty","tbodyRows","applyStyleToRows","isSelected","_createSelectionObject","_id","cellsSel","_trIdx","cell","rowInfo","tdContents","tdIdx","alignment","getColumnAlignment","verticalAlign","Widget","widgetDiv","minWidgetWidth","minWidgetHeight","widgetDiv2","_parentWidget","lazyRender","tableMarginHeight","fixedColWidth","fixedColThSel","fixedColumn","fixedColThUpdate","fixedColTrSel","fixedColTrUpdate","fixedColTdSel","fixedColTdUpdate","fixedColFootTdSel","fixedColFootTdUpdate","fixedSize","setColumnWidths","newTableHeight_1","finalWidth_1","calcWidth","calcHeight","setOnScrollEvents","hasVScroll","Platform","getScrollbarWidth","hasHScroll","rows","firstRow","tds","d3SelectAll","totalWidth","tdWidths","offsetWidth","thwidth","tdwidth","usewidth","scrollNode","margHeight","onscroll","topDelta","leftDelta","_generateTempRow","trow","th","thHeight","clientHeight","tfootHeight","tmpRow","tcellHeight","paginatorHeight","sort","selection","set","multiSelect","shiftKey","inRange_1","rows_1","i2","lastInRangeRow","selObj","ctrlKey","applyHoverRowStyles","tbodyHoverRowFontColor","tbodyHoverRowBackgroundColor","applySelectedRowStyles","tbodySelectedRowFontColor","tbodySelectedRowBackgroundColor","isFirstCol","dataRow","datum","tbodyFirstColFontColor","tbodyFontColor","tbodyFirstColBackgroundColor","tableZebraColor_exists","tbodyRowBackgroundColor","tableZebraColor","tr","__prop_type","stringAlign","numberAlign","serializeState","deserializeState","state","publishProxy","_htmlColorBlock","hexColor","Legend","isRainbow","widget","getWidget","targetWidget","_targetWidget","_targetWidgetMonitor","monitor","newProp","oldProp","classID","chart","getPalette","ordinal","dataArr","oPalette_1","dataFamily","rPalette","format","rainbowFormat","steps","rainbowBins","weightMin","_dataMinWeight","weightMax","_dataMaxWeight","stepWeightDiff","mid","orientation","tableRect","elementRect","onClick","onDblClick","onMouseOver","rowData","origGetBBox","_scale","MorphText","fontSize","_fontWidth","_textElement","dateTime","seconds","getSeconds","toString","minutes","getMinutes","hours","getHours","ampm","newText","anchor","_origText","usedChars_1","chars","charCodeAt","NestedTable","origColumns","_columns","origData","Column","owner","_owner","valid","headerLabel","PropertyExt","MouseHoverColumn","hoverValue","hoverList","getIds","ColumnDropdown","columnIndex","ColumnDropdownList","Opportunity","_drawStartPos","groupCount","h","tooltipdiv","dropDownOption","opportunityId","cur_group","groups","paddingTop","nodeRectHeight","nodeRectWidthPadding","nodeRectWidth","group","groupHeadings","headerLabels","previousGroup","currentGroup","node_date_change","htmlInput","mouseHover","prevDate","prevdate","fromDate","curdate","pageY","node_prev_group","tooltipHtml","delta","prev_group","changeLines","node_cur_group","colIndex","columnData","this_1","dropdownList","unshift","discover","publishedProperties","widgetPropertyWalker","widget2","visitor","widgetWalker","propertyWalker","serializeThemeToObject","propObj","publishedProperty","origDefaultValue","defaultValue","ret","_isFilterMatch","classParts","HasOwnProperty","serializeToObject","includeData","includeState","__class","_idSeed","__id","version","__version","__properties","childWwidget2","childWwidget","vertices","__vertices","__data","__state","editor_input","setProperty","autoExpand","themeObj","widget3","applyTheme","hasProperties","PropertyEditor","_childPE","d3Local","_show_header","watchDepth","_parentPropertyEditor","_show_settings","parentPropertyEditor","depth","parent","show_header","show_settings","rootWidgets","_selectedItems","_owningWidget","excludeObjs","tableElement","enterHeader","updateHeader","renderInputs","watchWidget","_watch","__hpcc_debug","info","_paramId","newVal","oldVal","peInputIcon","refreshExpandIcon","sortIcon","refreshSortIcon","hideNonWidgets","spanText","refreshHideParamsIcon","peInputCount","peInputCollapsedCount","collapsed","newIcon","increment","sorting","types","sorting_options","icons","__meta_sorting","ext","hideParamsIcon","gatherDataTree","children","Persist.discover","prop","getDataTree","_rowSorting","paramArr","typeOrder_1","filterInputs","discArr","filterTags","excludeTags","excludeParams","_idx","_i","_a","widgetName","excludeParam","class","some","showFields","showData","inputCell","enterInputs","description","updateWidgetRow","updateInputs","tmpWidget","widgetArr","lastModified_1","noEmpties","widgetDisabled","changed","autoExpandWidget","peInput","peInputElement","clickTarget","peDiv","topWidget","topPropEditor","oldValue","propEditor","broadcast","checked","multiline","isIE","_key","Persist.serialize","_widgetOrig","Grid","postSelectionChange","RadioCheckbox","rcData","view","sort_exists","descending_1","l","_label","_Checkbox","radioCheckbox","checkboxDiv","selectedData","handleClick","rcDiv","multiple","Select","selectData","_select","options_dom_node","optionNode","selectSize","option","optionUpdate","_localStorage","mod","hasLocalStorage","getThemes","g_defaultThemes","getSerials","g_defaultSerials","getThemeNames","loadedThemes","themes","themeName","getSerialNames","loadedSerials","serials","serialName","camelizeString","toUpperCase","tableInputHtml","rowObj","idSuffix","inputType","inputHtml","inputID","dataWIDs","valueAttr","_options","saveButtonID","saveButton","ThemeEditor","_current_grouping","_showing_columns","_showing_data","_contentEditors","_showSettings","_defaultThemes","_widgetObjsById","showSettings","onChange","propID","widgetProperty","elmValue","save","needsPropTableRedraw","needsRedraw","_group_params_by","showColumns","paramGrouping","_sharedProperties","findSharedProperties","teParams","editorComplexity","teParamVal","input","propertiesTableHtml","evt","createEvent","initEvent","dispatchEvent","buildTableObjects","initFunctionality","editorParams","tableObj","rowArr","modeTableObj","themeMode","td","trClass","tableObjHtml","targetElement","propObjs","sectionObjs","chartColorSection","rowObjArr","surfaceSection","fontSection","nonSurfaceSection","sharedPropertyTableHtml","elm","elm2","tableArr","getElementsByClassName","onclick","elm3","toElement","tagName","tbodyClass","sharedRowArr","subRowClass","nextSib","_expandCollapse","teInputs","inputElm","onchange","nameToLoad","elmType","splitId","genericId","widsStr","paramId","wid","individualId","indElm","_inputOnChange","clickedElm","loadSelect","loadOptions","saveExists","alert","_inputOnClick","sectionObj","widgetObj","widgetIdx","_sharedPropertyLabel","_sharedPropertyInput","_propertyLabel","_propertyInput","rowObj2","idx2","value2","_sharedValue","tableRowObjHtml","setWidgetObjsById","widgetProp","checkTagFilter","tagArr","allowTags","tag","propsByID","allProps_1","surfacePropsByID_1","nonSurfacePropsByID_1","gpResponse","_getParams","tempIdx","i1","childWidget","cwArr","temp","getDefaultThemes","getDefaultSerials","espConnection","Comms.createESPConnection","Comms.WsWorkunits","colIdx_1"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/d3-timer/src/timer.js","../src/Audio.ts","../../../node_modules/javascript-autocomplete/auto-complete.js","../../../node_modules/style-inject/dist/style-inject.es.js","../src/AutoCompleteText.ts","../../../node_modules/d3-time/src/interval.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/month.js","../../../node_modules/d3-time/src/year.js","../src/CalendarHeatMap.ts","../src/Comms.ts","../src/ESP.ts","../../../node_modules/simpleheat/simpleheat.js","../src/HeatMap.ts","../src/HPCCBadge.ts","../src/Html.ts","../src/IconList.ts","../src/Paginator.ts","../src/Table.ts","../src/Legend.ts","../src/MorphText.ts","../src/NestedTable.ts","../src/Opportunity.ts","../src/Persist.ts","../src/PropertyEditor.ts","../src/RadioCheckbox.ts","../src/Select.ts","../src/ThemeEditor.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/other\";\r\nexport const PKG_VERSION = \"2.15.1\";\r\nexport const BUILD_VERSION = \"2.104.2\";\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { timer as d3Timer } from \"d3-timer\";\n\nexport class Audio extends HTMLWidget {\n _sections;\n\n constructor() {\n super();\n this._tag = \"audio\";\n\n this._sections = {};\n }\n\n section(label, offset, beatLength, beatCount) {\n if (!arguments.length) return this._sections;\n if (arguments.length === 1) return this._sections[label];\n this._sections[label] = {\n label,\n offset,\n beatLength,\n beatCount,\n endOffset: offset + beatCount * beatLength\n };\n return this;\n }\n\n getType(fileExt) {\n switch (fileExt) {\n case \"mp3\":\n return \"audio/mpeg; codecs='mp3'\";\n case \"ogg\":\n return \"audio/ogg; codecs='vorbis'\";\n }\n return \"\";\n }\n\n enter(domNode, element) {\n const context = this;\n element.on(\"play\", function (d) { context.onPlay(d); });\n }\n\n update(domNode, element) {\n const source = element.selectAll(\"source\").data(this.source(), function (d) { return d; });\n source.enter().append(\"source\")\n .attr(\"src\", function (d) { return d; })\n ;\n }\n\n createTimer(params, startTime, beat) {\n const context = this;\n d3Timer(function () {\n context.onTick(params.label, beat, params);\n return true;\n }, beat * params.beatLength, startTime + params.offset);\n }\n\n onTick(label, beat, params) {\n }\n\n onPlay(d) {\n const startTime = Date.now();\n for (const key in this._sections) {\n const section = this._sections[key];\n for (let i = 0; i < section.beatCount; ++i) {\n this.createTimer(section, startTime, i);\n }\n }\n }\n\n play(d) {\n const context = this;\n this._element.on(\"canplaythrough\", function (d2) {\n context.node().play();\n });\n this.node().load();\n }\n\n source: { (): string; (_: string): Audio };\n source_exists: () => boolean;\n}\nAudio.prototype._class += \" other_Audio\";\n\nAudio.prototype.publish(\"source\", \"\", \"string\", \"Audio Source\");\n","/*\n JavaScript autoComplete v1.0.5\n Copyright (c) 2014 Simon Steinberger / Pixabay\n GitHub: https://github.com/Pixabay/JavaScript-autoComplete\n License: http://www.opensource.org/licenses/mit-license.php\n*/\n\nvar autoComplete = (function(){\n // \"use strict\";\n function autoComplete(options){\n if (!document.querySelector) return;\n\n // helpers\n function hasClass(el, className){ return el.classList ? el.classList.contains(className) : new RegExp('\\\\b'+ className+'\\\\b').test(el.className); }\n\n function addEvent(el, type, handler){\n if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler);\n }\n function removeEvent(el, type, handler){\n // if (el.removeEventListener) not working in IE11\n if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler);\n }\n function live(elClass, event, cb, context){\n addEvent(context || document, event, function(e){\n var found, el = e.target || e.srcElement;\n while (el && !(found = hasClass(el, elClass))) el = el.parentElement;\n if (found) cb.call(el, e);\n });\n }\n\n var o = {\n selector: 0,\n source: 0,\n minChars: 3,\n delay: 150,\n offsetLeft: 0,\n offsetTop: 1,\n cache: 1,\n menuClass: '',\n renderItem: function (item, search){\n // escape special characters\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n var re = new RegExp(\"(\" + search.split(' ').join('|') + \")\", \"gi\");\n return '<div class=\"autocomplete-suggestion\" data-val=\"' + item + '\">' + item.replace(re, \"<b>$1</b>\") + '</div>';\n },\n onSelect: function(e, term, item){}\n };\n for (var k in options) { if (options.hasOwnProperty(k)) o[k] = options[k]; }\n\n // init\n var elems = typeof o.selector == 'object' ? [o.selector] : document.querySelectorAll(o.selector);\n for (var i=0; i<elems.length; i++) {\n var that = elems[i];\n\n // create suggestions container \"sc\"\n that.sc = document.createElement('div');\n that.sc.className = 'autocomplete-suggestions '+o.menuClass;\n\n that.autocompleteAttr = that.getAttribute('autocomplete');\n that.setAttribute('autocomplete', 'off');\n that.cache = {};\n that.last_val = '';\n\n that.updateSC = function(resize, next){\n var rect = that.getBoundingClientRect();\n that.sc.style.left = Math.round(rect.left + (window.pageXOffset || document.documentElement.scrollLeft) + o.offsetLeft) + 'px';\n that.sc.style.top = Math.round(rect.bottom + (window.pageYOffset || document.documentElement.scrollTop) + o.offsetTop) + 'px';\n that.sc.style.width = Math.round(rect.right - rect.left) + 'px'; // outerWidth\n if (!resize) {\n that.sc.style.display = 'block';\n that.sc.classList.remove('hide')\n if (!that.sc.maxHeight) { that.sc.maxHeight = parseInt((window.getComputedStyle ? getComputedStyle(that.sc, null) : that.sc.currentStyle).maxHeight); }\n if (!that.sc.suggestionHeight) that.sc.suggestionHeight = that.sc.querySelector('.autocomplete-suggestion').offsetHeight;\n if (that.sc.suggestionHeight)\n if (!next) that.sc.scrollTop = 0;\n else {\n var scrTop = that.sc.scrollTop, selTop = next.getBoundingClientRect().top - that.sc.getBoundingClientRect().top;\n if (selTop + that.sc.suggestionHeight - that.sc.maxHeight > 0)\n that.sc.scrollTop = selTop + that.sc.suggestionHeight + scrTop - that.sc.maxHeight;\n else if (selTop < 0)\n that.sc.scrollTop = selTop + scrTop;\n }\n }\n }\n addEvent(window, 'resize', that.updateSC);\n document.body.appendChild(that.sc);\n\n live('autocomplete-suggestion', 'mouseleave', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) setTimeout(function(){ sel.className = sel.className.replace('selected', ''); }, 20);\n }, that.sc);\n\n live('autocomplete-suggestion', 'mouseover', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) sel.className = sel.className.replace('selected', '');\n this.className += ' selected';\n }, that.sc);\n\n live('autocomplete-suggestion', 'mousedown', function(e){\n if (hasClass(this, 'autocomplete-suggestion')) { // else outside click\n var v = this.getAttribute('data-val');\n that.value = v;\n o.onSelect(e, v, this);\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n\n }\n }, that.sc);\n\n that.blurHandler = function(){\n try { var over_sb = document.querySelector('.autocomplete-suggestions:hover'); } catch(e){ var over_sb = 0; }\n if (!over_sb) {\n that.last_val = that.value;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n setTimeout(function(){\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }, 350); // hide suggestions on fast input\n } else if (that !== document.activeElement) setTimeout(function(){ that.focus(); }, 20);\n };\n addEvent(that, 'blur', that.blurHandler);\n\n var suggest = function(data, val){\n if (!val) {\n var val = that.value;\n }\n that.cache[val] = data;\n if (data.length && val.length >= o.minChars) {\n var s = '';\n for (var i=0;i<data.length;i++) s += o.renderItem(data[i], val);\n that.sc.innerHTML = s;\n that.updateSC(0);\n }\n else {\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n }\n\n that.keydownHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n // down (40), up (38)\n if ((key == 40 || key == 38) && that.sc.innerHTML) {\n var next, sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (!sel) {\n next = (key == 40) ? that.sc.querySelector('.autocomplete-suggestion') : that.sc.childNodes[that.sc.childNodes.length - 1]; // first : last\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n } else {\n next = (key == 40) ? sel.nextSibling : sel.previousSibling;\n if (next) {\n sel.className = sel.className.replace('selected', '');\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n }\n else { sel.className = sel.className.replace('selected', ''); that.value = that.last_val; next = 0; }\n }\n that.updateSC(0, next);\n return false;\n }\n // esc\n else if (key == 27) {\n that.value = that.last_val;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n // enter\n else if (key == 13 || key == 9) {\n if (that.sc.style.display !== 'none') {\n e.preventDefault();\n }\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel && that.sc.style.display != 'none') {\n o.onSelect(e, sel.getAttribute('data-val'), sel);\n setTimeout(function(){\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }, 20); }\n }\n };\n addEvent(that, 'keydown', that.keydownHandler);\n\n that.keyupHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n if (!key || (key < 35 || key > 40) && key != 13 && key != 27) {\n var val = that.value;\n if (val.length >= o.minChars) {\n if (val != that.last_val) {\n that.last_val = val;\n clearTimeout(that.timer);\n if (o.cache) {\n if (val in that.cache) { suggest(that.cache[val]); return; }\n // no requests if previous suggestions were empty\n for (var i=1; i<val.length-o.minChars; i++) {\n var part = val.slice(0, val.length-i);\n if (part in that.cache && !that.cache[part].length) { suggest([]); return; }\n }\n }\n that.timer = setTimeout(function(){ o.source(val, suggest) }, o.delay);\n }\n } else {\n that.last_val = val;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n }\n };\n addEvent(that, 'keyup', that.keyupHandler);\n\n that.focusHandler = function(e){\n that.last_val = '\\n';\n that.keyupHandler(e)\n };\n if (!o.minChars) addEvent(that, 'focus', that.focusHandler);\n }\n\n // public destroy method\n this.destroy = function(){\n for (var i=0; i<elems.length; i++) {\n var that = elems[i];\n removeEvent(window, 'resize', that.updateSC);\n removeEvent(that, 'blur', that.blurHandler);\n removeEvent(that, 'focus', that.focusHandler);\n removeEvent(that, 'keydown', that.keydownHandler);\n removeEvent(that, 'keyup', that.keyupHandler);\n if (that.autocompleteAttr)\n that.setAttribute('autocomplete', that.autocompleteAttr);\n else\n that.removeAttribute('autocomplete');\n document.body.removeChild(that.sc);\n that = null;\n }\n };\n }\n return autoComplete;\n})();\n\n(function(){\n if (typeof define === 'function' && define.amd)\n define('autoComplete', function () { return autoComplete; });\n else if (typeof module !== 'undefined' && module.exports)\n module.exports = autoComplete;\n else\n window.autoComplete = autoComplete;\n})();\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport * as AutoComplete from \"javascript-autocomplete\";\n\nimport \"../src/AutoCompleteText.css\";\n\nexport class AutoCompleteText extends HTMLWidget {\n _span;\n _prompt;\n _input;\n _prevMinCharsText;\n _autoComplete;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n autoCompleteTextData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n return view.entries().map(function (row, idx) {\n return {\n idx,\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].value.length ? row.values[0].value[0] : []\n };\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._prompt = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n ;\n this._input = this._span.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"name\", this.id() + \"_input_name\")\n .attr(\"type\", \"text\")\n .attr(\"placeholder\", this.placeholder())\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._prompt.text(this.label());\n this._input.style(\"width\", this.textboxWidth_exists() ? this.textboxWidth() + \"px\" : null);\n\n if (this._prevMinCharsText !== this.minCharsText()) {\n this._prevMinCharsText = this.minCharsText();\n\n if (this._autoComplete) {\n this._autoComplete.destroy();\n }\n const context = this;\n this._autoComplete = new AutoComplete({\n selector: \"#\" + this.id() + \"_input\",\n minChars: this.minCharsText(),\n delay: 150,\n offsetLeft: 0,\n offsetTop: 1,\n source: (term, suggest) => {\n const field = context._db.fieldByLabel(context.textColumn());\n if (field) {\n term = term.toLowerCase();\n const suggestions = context.autoCompleteTextData().filter(function (row) {\n return row.origRow[field.idx].toLowerCase().indexOf(term) >= 0;\n }).map(function (row) {\n return {\n text: row.origRow[field.idx],\n rowIdx: row.idx\n };\n });\n suggest(suggestions);\n }\n },\n renderItem: (item, search) => {\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n const re = new RegExp(\"(\" + search.split(\" \").join(\"|\") + \")\", \"gi\");\n return '<div class=\"autocomplete-suggestion\" data-val=\"' + item.text + '\" data-row-idx=\"' + item.rowIdx + '\">' + item.text.replace(re, \"<b>$1</b>\") + \"</div>\";\n },\n onSelect: (e, term, item) => {\n const rowIdx = +item.getAttribute(\"data-row-idx\");\n const row = context.autoCompleteTextData()[rowIdx];\n context.click(context.rowToObj(row.origRow), context.valueColumn(), true);\n }\n });\n }\n }\n\n exit(domNode, element) {\n if (this._autoComplete) {\n this._autoComplete.destroy();\n }\n this._span.remove();\n super.exit(domNode, element);\n }\n\n click(row, column, selected) {\n }\n\n label: { (): string; (_: string): AutoCompleteText };\n label_exists: () => boolean;\n textboxWidth: { (): number; (_: number): AutoCompleteText };\n textboxWidth_exists: () => boolean;\n placeholder: { (): string; (_: string): AutoCompleteText };\n placeholder_exists: () => boolean;\n valueColumn: { (): string; (_: string): AutoCompleteText };\n valueColumn_exists: () => boolean;\n textColumn: { (): string; (_: string): AutoCompleteText };\n textColumn_exists: () => boolean;\n minCharsText: { (): number; (_: number): AutoCompleteText };\n minCharsText_exists: () => boolean;\n}\nAutoCompleteText.prototype._class += \" other_AutoCompleteText\";\n\nAutoCompleteText.prototype.publish(\"label\", \"Label: \", \"string\", \"Label for AutoCompleteText\");\nAutoCompleteText.prototype.publish(\"textboxWidth\", null, \"number\", \"width of textbox\", null, { optional: true });\nAutoCompleteText.prototype.publish(\"placeholder\", \"Search...\", \"string\", \"Placeholder for AutoCompleteText\");\nAutoCompleteText.prototype.publish(\"valueColumn\", null, \"set\", \"Select column for autocomplete\", function () { return this.columns(); }, { optional: true });\nAutoCompleteText.prototype.publish(\"textColumn\", null, \"set\", \"Select value(s)\", function () { return this.columns(); }, { optional: true });\nAutoCompleteText.prototype.publish(\"minCharsText\", 1, \"number\", \"Size of multiAutoCompleteText box\");\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import { HTMLWidget, Palette, Utility } from \"@hpcc-js/common\";\nimport { extent as d3Extent, range as d3Range } from \"d3-array\";\nimport { map as d3Map } from \"d3-collection\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { timeDays as d3TimeDays, timeMonths as d3TimeMonths, timeWeek as d3TimeWeek, timeYear as d3TimeYear } from \"d3-time\";\nimport { timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/CalendarHeatMap.css\";\n\nexport class CalendarHeatMap extends HTMLWidget {\n _prevDateColumn;\n _prevAggrType;\n _prevAggrColumn;\n _prevAggrDeltaColumn;\n _view;\n _parentNode;\n\n constructor() {\n super();\n\n Utility.SimpleSelectionMixin.call(this);\n }\n\n calendarData() {\n if (this.fields().length === 0 || this.data().length === 0) {\n return [];\n }\n const dateParser = d3TimeParse(this.datePattern());\n const valueFormatter = this.aggrDeltaColumn() ? d3Format(\".1%\") : d3Format(\"s\");\n if (this._prevDateColumn !== this.dateColumn() ||\n this._prevAggrType !== this.aggrType() ||\n this._prevAggrColumn !== this.aggrColumn() ||\n this._prevAggrDeltaColumn !== this.aggrDeltaColumn()) {\n this._prevDateColumn = this.dateColumn();\n this._prevAggrType = this.aggrType();\n this._prevAggrColumn = this.aggrColumn();\n this._prevAggrDeltaColumn = this.aggrDeltaColumn();\n this._view = this._db.aggregateView([this.dateColumn()], this.aggrType(), this.aggrColumn(), this.aggrDeltaColumn());\n }\n return this._view.entries().map(function (row) {\n row.dateKey = dateParser(row.key);\n row.formattedValues = valueFormatter(row.value.aggregate);\n row.origRows = row.value;\n return row;\n });\n }\n\n calcDelta(row) {\n return (row.Close - row.Open) / row.Open;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode)\n .style(\"overflow-y\", \"scroll\")\n .style(\"overflow-x\", \"hidden\")\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n this._selection.widgetElement(element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._palette = this._palette.switch(this.paletteID());\n\n const width = this.width();\n const cellSize = (width / 12) / 5;\n const height = cellSize * 8;\n\n const data = this.calendarData();\n const mappedData = d3Map(data, function (d: any) { return d.dateKey; });\n const dateExtent = d3Extent(data, function (d: any) {\n return d.dateKey.getFullYear();\n });\n const context = this;\n const svg = element.selectAll(\"svg\").data(d3Range(+dateExtent[0], +dateExtent[1] + 1));\n const svgUpdate = svg.enter().append(\"svg\")\n .each(function (d) {\n const svgElement = d3Select(this);\n const g = svgElement.append(\"g\");\n g.append(\"text\")\n .style(\"text-anchor\", \"middle\")\n ;\n g.append(\"g\")\n .attr(\"class\", \"days\")\n ;\n\n const _d3TimeMonths = d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1));\n const _months = g.append(\"g\").attr(\"class\", \"months\");\n _d3TimeMonths.forEach(function (_m) {\n _months.append(\"path\")\n .attr(\"class\", \"month\")\n .attr(\"d\", calcMonthPath(_m))\n .style(\"stroke\", context.monthStrokeColor())\n .style(\"stroke-width\", context.monthStrokeWidth())\n ;\n });\n })\n .merge(svg)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n svgUpdate.select(\"g\")\n .attr(\"transform\", \"translate(\" + ((width - cellSize * 53) / 2) + \",\" + (height - cellSize * 7 - 1) + \")\")\n ;\n svgUpdate.select(\"text\")\n .attr(\"transform\", \"translate(-6,\" + cellSize * 3.5 + \")rotate(-90)\")\n .text(d => d)\n ;\n svg.exit().remove();\n\n let dataExtent: [any, any] = d3Extent<number>(data, function (d: any) {\n return d.value.aggregate;\n });\n if (this.aggrDeltaColumn()) {\n const max = Math.max(Math.abs(+dataExtent[0]), Math.abs(+dataExtent[1]));\n dataExtent = [-max, max];\n }\n const dayRect = svgUpdate.select(\".days\").selectAll(\".day\").data(function (d) { return d3TimeDays(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });\n const dayRectUpdate = dayRect.enter().append(\"rect\")\n .attr(\"class\", \"day\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n const data2 = mappedData.get(d);\n if (data2 && data2.value && data2.value && data2.value.length) {\n context.click(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));\n }\n })\n .on(\"dblclick\", function (d) {\n const data2 = mappedData.get(d);\n if (data2 && data2.value && data2.value && data2.value.length) {\n context.dblclick(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));\n }\n }).each(function (d) {\n const dayRectElement = d3Select(this);\n dayRectElement.append(\"title\");\n })\n .merge(dayRect)\n .attr(\"x\", function (d) { return d3TimeWeek.count(d3TimeYear(d), d) * cellSize; })\n .attr(\"y\", function (d) { return d.getDay() * cellSize; })\n .attr(\"width\", cellSize)\n .attr(\"height\", cellSize)\n .style(\"stroke\", this.dayStrokeColor())\n .style(\"stroke-width\", this.dayStrokeWidth())\n .style(\"fill\", null)\n ;\n dayRectUpdate.select(\"title\")\n .text(d => d)\n ;\n dayRectUpdate.filter(function (d) { return mappedData.has(d); })\n .style(\"fill\", function (d) {\n const row = mappedData.get(d);\n if (!row || !row.value || !row.value.aggregate) {\n return null;\n }\n return context._palette(row.value.aggregate, dataExtent[0], dataExtent[1]);\n })\n .select(\"title\")\n .text(function (d) {\n const data2 = mappedData.get(d);\n return data2.key + \": \" + data2.formattedValues;\n })\n ;\n dayRect.exit().remove();\n\n const monthPath = svg.select(\".months\").selectAll(\".month\").data(function (d) { return d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });\n monthPath.enter().append(\"path\")\n .attr(\"class\", \"month\")\n .merge(monthPath)\n .attr(\"d\", calcMonthPath)\n .style(\"stroke\", this.monthStrokeColor())\n .style(\"stroke-width\", this.monthStrokeWidth())\n ;\n monthPath.exit().remove();\n\n function calcMonthPath(t0) {\n const t1 = new Date(t0.getFullYear(), t0.getMonth() + 1, 0);\n const d0 = t0.getDay();\n const w0 = d3TimeWeek.count(d3TimeYear(t0), t0);\n const d1 = t1.getDay();\n const w1 = d3TimeWeek.count(d3TimeYear(t1), t1);\n return \"M\" + (w0 + 1) * cellSize + \",\" + d0 * cellSize +\n \"H\" + w0 * cellSize + \"V\" + 7 * cellSize +\n \"H\" + w1 * cellSize + \"V\" + (d1 + 1) * cellSize +\n \"H\" + (w1 + 1) * cellSize + \"V\" + 0 +\n \"H\" + (w0 + 1) * cellSize + \"Z\";\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n\n _palette;\n paletteID: { (): string; (_: string): CalendarHeatMap };\n paletteID_exists: () => boolean;\n dateColumn: { (): string; (_: string): CalendarHeatMap };\n dateColumn_exists: () => boolean;\n datePattern: { (): string; (_: string): CalendarHeatMap };\n datePattern_exists: () => boolean;\n aggrType: { (): string; (_: string): CalendarHeatMap };\n aggrType_exists: () => boolean;\n aggrColumn: { (): string; (_: string): CalendarHeatMap };\n aggrColumn_exists: () => boolean;\n aggrDeltaColumn: { (): string; (_: string): CalendarHeatMap };\n aggrDeltaColumn_exists: () => boolean;\n\n // SimpleSelectionMixin\n _selection;\n}\nCalendarHeatMap.prototype._class += \" other_CalendarHeatMap\";\nCalendarHeatMap.prototype.mixin(Utility.SimpleSelectionMixin);\nCalendarHeatMap.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface CalendarHeatMap {\n dayStrokeColor(): string;\n dayStrokeColor(_: string): this;\n monthStrokeColor(): string;\n monthStrokeColor(_: string): this;\n dayStrokeWidth(): number;\n dayStrokeWidth(_: number): this;\n monthStrokeWidth(): number;\n monthStrokeWidth(_: number): this;\n}\nCalendarHeatMap.prototype.publish(\"paletteID\", \"YlOrRd\", \"set\", \"Color palette for this widget\", CalendarHeatMap.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nCalendarHeatMap.prototype.publish(\"dayStrokeColor\", \"#ccc\", \"html-color\", \"Color of day border\");\nCalendarHeatMap.prototype.publish(\"monthStrokeColor\", \"#000\", \"html-color\", \"Color of month border\");\nCalendarHeatMap.prototype.publish(\"dayStrokeWidth\", 1, \"number\", \"Pixel width of day border\");\nCalendarHeatMap.prototype.publish(\"monthStrokeWidth\", 2, \"number\", \"Pixel width of month border\");\nCalendarHeatMap.prototype.publish(\"dateColumn\", null, \"set\", \"Date Column\", function () { return this.columns(); }, { optional: true });\nCalendarHeatMap.prototype.publish(\"datePattern\", \"%Y-%m-%d\", \"string\", \"Date Pattern\");\nCalendarHeatMap.prototype.publish(\"aggrType\", null, \"set\", \"Aggregation Type\", [null, \"mean\", \"median\", \"sum\", \"min\", \"max\"], { optional: true });\nCalendarHeatMap.prototype.publish(\"aggrColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\nCalendarHeatMap.prototype.publish(\"aggrDeltaColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\n","import { Utility } from \"@hpcc-js/common\";\n\nconst TIMEOUT_DEFAULT = 60;\nfunction espValFix(val) {\n if (val === undefined || val === null) {\n return null;\n }\n if (!val.trim) {\n if (val.Row) {\n return espRowFix(val.Row);\n }\n return val;\n }\n const retVal = val.trim();\n if (retVal !== \"\" && !isNaN(retVal)) {\n if (retVal.length <= 1 || retVal[0] !== \"0\" || retVal[1] === \".\") {\n return Number(retVal);\n }\n }\n return retVal;\n}\n\nfunction espRowFix(row) {\n for (const key in row) {\n row[key] = espValFix(row[key]);\n }\n return row;\n}\n\nexport class ESPUrl {\n protected _protocol = \"http:\";\n protected _hostname = \"localhost\";\n protected _url;\n protected _port;\n protected _search;\n protected _pathname;\n protected _params;\n protected _hash;\n protected _host;\n\n constructor() {\n }\n\n url(_: string): this;\n url(): string;\n url(_?): string | this {\n if (!arguments.length) return this._url;\n this._url = _;\n const parser = document.createElement(\"a\");\n parser.href = this._url;\n // eslint-disable-next-line no-self-assign\n parser.href = parser.href; // This fixes an IE9/IE10 DOM value issue\n\n const params = {};\n if (parser.search.length) {\n let tmp: any = parser.search;\n if (tmp[0] === \"?\") {\n tmp = tmp.substring(1);\n }\n tmp = tmp.split(\"&\");\n tmp.map(function (item) {\n const tmpItem = item.split(\"=\");\n params[decodeURIComponent(tmpItem[0])] = decodeURIComponent(tmpItem[1]);\n });\n }\n this._protocol = parser.protocol;\n this._hostname = parser.hostname;\n this._port = parser.port;\n this._pathname = parser.pathname;\n while (this._pathname.length && this._pathname[0] === \"/\") {\n this._pathname = this._pathname.substring(1);\n }\n this._search = parser.search;\n this._params = params;\n this._hash = parser.hash;\n this._host = parser.host;\n\n return this;\n }\n\n protocol(_: string): this;\n protocol(): string;\n protocol(_?: string): string | this {\n if (!arguments.length) return this._protocol;\n this._protocol = _;\n return this;\n }\n\n hostname(_: string): this;\n hostname(): string;\n hostname(_?: string): string | this {\n if (!arguments.length) return this._hostname;\n this._hostname = _;\n return this;\n }\n\n port(_: string): this;\n port(): string;\n port(_?: string) {\n if (!arguments.length) return this._port;\n this._port = _;\n return this;\n }\n\n search(_: string): this;\n search(): string;\n search(_?: string) {\n if (!arguments.length) return this._search;\n this._search = _;\n return this;\n }\n\n pathname(_: string): this;\n pathname(): string;\n pathname(_?: string) {\n if (!arguments.length) return this._pathname;\n this._pathname = _;\n return this;\n }\n\n hash(_: string): this;\n hash(): string;\n hash(_?: string) {\n if (!arguments.length) return this._hash;\n this._hash = _;\n return this;\n }\n\n host(_: string): this;\n host(): string;\n host(_?: string) {\n if (!arguments.length) return this._host;\n this._host = _;\n return this;\n }\n\n params(_: string): this;\n params(): string;\n params(_?: string) {\n if (!arguments.length) return this._params;\n this._params = _;\n return this;\n }\n\n param(key: string) {\n return this._params[key];\n }\n\n isWsWorkunits() {\n return this._pathname.toLowerCase().indexOf(\"wsworkunits\") >= 0 || this._params[\"Wuid\"];\n }\n\n isWorkunitResult() {\n return this.isWsWorkunits() && (this._params[\"Sequence\"] || this._params[\"ResultName\"]);\n }\n\n isWsEcl() {\n return this._pathname.toLowerCase().indexOf(\"wsecl\") >= 0 || (this._params[\"QuerySetId\"] && this._params[\"Id\"]);\n }\n\n isWsWorkunits_GetStats() {\n return this._pathname.toLowerCase().indexOf(\"wsworkunits/wugetstats\") >= 0 && this._params[\"WUID\"];\n }\n\n getUrl(overrides) {\n overrides = overrides || {};\n return (overrides.protocol !== undefined ? overrides.protocol : this._protocol) + \"//\" +\n (overrides.hostname !== undefined ? overrides.hostname : this._hostname) + \":\" +\n (overrides.port !== undefined ? overrides.port : this._port) + \"/\" +\n (overrides.pathname !== undefined ? overrides.pathname : this._pathname);\n }\n}\n\nexport function ESPMappings(mappings) {\n this._mappings = mappings;\n this._reverseMappings = {};\n for (const resultName in this._mappings) {\n this._reverseMappings[resultName] = {};\n for (const key in this._mappings[resultName]) {\n this._reverseMappings[resultName][this._mappings[resultName][key]] = key;\n }\n }\n}\n\nESPMappings.prototype.contains = function (resultName, origField) {\n return Utility.exists(resultName + \".\" + origField, this._mappings);\n};\n\nESPMappings.prototype.mapResult = function (response, resultName) {\n const mapping = this._mappings[resultName];\n if (mapping) {\n response[resultName] = response[resultName].map(function (item) {\n let row = [];\n if (mapping.x && mapping.x instanceof Array) {\n // LINE Mapping ---\n row = [];\n for (let i = 0; i < mapping.x.length; ++i) {\n row.push(item[mapping.y[i]]);\n }\n } else {\n // Regular Mapping ---\n for (const key in mapping) {\n if (mapping[key] === \"label\") {\n row[0] = item[key];\n } else if (mapping[key] === \"weight\") {\n row[1] = item[key];\n }\n }\n }\n return row;\n }, this);\n }\n};\n\nESPMappings.prototype.mapResponse = function (response) {\n for (const key in response) {\n this.mapResult(response, key);\n }\n};\n\nconst serialize = function (obj) {\n const str = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const val = obj[key];\n if (val !== undefined && val !== null) {\n str.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(val));\n }\n }\n }\n return str.join(\"&\");\n};\n\nlet jsonp = function (url, request, timeout) {\n return new Promise(function (resolve, reject) {\n let respondedTimeout = timeout * 1000;\n const respondedTick = 5000;\n const callbackName = \"jsonp_callback_\" + Math.round(Math.random() * 999999);\n window[callbackName] = function (response) {\n respondedTimeout = 0;\n doCallback();\n resolve(response);\n };\n const script = document.createElement(\"script\");\n script.src = url + (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + \"jsonp=\" + callbackName + \"&\" + serialize(request);\n document.body.appendChild(script);\n const progress = setInterval(function () {\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n } else {\n respondedTimeout -= respondedTick;\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n doCallback();\n reject(Error(\"Request timeout: \" + script.src));\n }\n }\n }, respondedTick);\n\n function doCallback() {\n delete window[callbackName];\n document.body.removeChild(script);\n }\n });\n};\n\nexport class Comms extends ESPUrl {\n protected _proxyMappings;\n protected _mappings;\n protected _timeout;\n protected _hipieResults;\n protected _hipieResultsLength;\n\n constructor() {\n super();\n this._proxyMappings = {};\n this._mappings = new ESPMappings({});\n this._timeout = TIMEOUT_DEFAULT;\n this._hipieResults = {};\n }\n\n hipieResults(_) {\n if (!arguments.length) return this._hipieResults;\n this._hipieResultsLength = 0;\n this._hipieResults = {};\n const context = this;\n _.forEach(function (item) {\n context._hipieResultsLength++;\n context._hipieResults[item.id] = item;\n });\n return this;\n }\n\n jsonp(url, request) {\n for (const key in this._proxyMappings) {\n const newUrlParts = url.split(key);\n const newUrl = newUrlParts[0];\n if (newUrlParts.length > 1) {\n const espUrl = new ESPUrl()\n .url(url)\n ;\n url = newUrl + this._proxyMappings[key];\n request.IP = espUrl.hostname();\n request.PORT = espUrl.port();\n if (newUrlParts.length > 0) {\n request.PATH = newUrlParts[1];\n }\n break;\n }\n }\n return jsonp(url, request, this.timeout());\n }\n\n ajax(method, url, request?) {\n return new Promise(function (resolve, reject) {\n let uri = url;\n if (method === \"GET\" && request) {\n uri += \"?\" + serialize(request);\n }\n const xhr: any = new XMLHttpRequest();\n xhr.onload = function (e) {\n if (this.status >= 200 && this.status < 300) {\n resolve(JSON.parse(this.response));\n } else {\n reject(Error(this.statusText));\n }\n };\n xhr.onerror = function () {\n reject(Error(this.statusText));\n };\n xhr.open(method, uri);\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n if (method === \"GET\") {\n xhr.send();\n } else {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n xhr.send(serialize(request));\n }\n });\n }\n\n get(url, request?) {\n return this.ajax(\"GET\", url, request);\n }\n\n post(url, request) {\n return this.ajax(\"POST\", url, request);\n }\n\n mappings(_?) {\n if (!arguments.length) return this._mappings;\n this._mappings = new ESPMappings(_);\n return this;\n }\n\n proxyMappings(_?) {\n if (!arguments.length) return this._proxyMappings;\n this._proxyMappings = _;\n return this;\n }\n\n timeout(_?) {\n if (!arguments.length) return this._timeout;\n this._timeout = _ || TIMEOUT_DEFAULT;\n return this;\n }\n}\n\nexport class Basic extends Comms {\n\n protected _cacheCalls;\n\n constructor() {\n super();\n }\n\n cacheCalls(_?) {\n if (!arguments.length) return this._cacheCalls;\n this._cacheCalls = _;\n return this;\n }\n\n call(request, callback) {\n const url = this._url + (this._url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + serialize(request);\n if (this._cacheCalls) {\n const context = this;\n return new Promise(function (resolve, reject) {\n const response = JSON.parse(localStorage.getItem(\"hpcc.viz.\" + url));\n if (!response) {\n throw Error(\"not cached\");\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response);\n }\n resolve(response);\n }).catch(function (response) {\n return context.get(url).then(function (response2) {\n localStorage.setItem(\"hpcc.viz.\" + url, JSON.stringify(response2));\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response2);\n }\n return response2;\n });\n });\n } else {\n localStorage.removeItem(\"hpcc.viz.\" + url);\n return this.get(url).then(function (response) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response);\n }\n return response;\n });\n }\n }\n}\n\nfunction locateRoxieResponse(response): object {\n // v5 and v6 compatible ---\n for (const key in response) {\n if (response[key].Row && response[key].Row instanceof Array) {\n return response;\n }\n let retVal;\n if (typeof (response[key]) !== \"string\") {\n retVal = locateRoxieResponse(response[key]);\n }\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nfunction locateRoxieException(response) {\n for (const key in response) {\n if (response[key].Exception && response[key].Exception instanceof Array) {\n return response[key];\n }\n const retVal = locateRoxieException(response[key]);\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nexport class WsECL extends Comms {\n\n protected _target;\n protected _query;\n\n constructor() {\n super();\n\n this._port = \"8002\";\n this._target = \"\";\n this._query = \"\";\n }\n\n url(_?) {\n const retVal = super.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/esp/files/stub.htm?QuerySetId=roxie&Id=stock.3&Widget=QuerySetDetailsWidget\n this._port = this._port === \"8010\" ? \"8002\" : this._port; // Need a better way ---\n for (const key in this._params) {\n switch (key) {\n case \"QuerySetId\":\n this.target(this._params[key]);\n break;\n case \"Id\":\n this.query(this._params[key]);\n break;\n }\n }\n\n let pathParts;\n let queryParts;\n if (!this._target || !this._query) {\n // http://localhost:8002/WsEcl/forms/default/query/roxie/wecare\n pathParts = this._pathname.split(\"/query/\");\n if (pathParts.length >= 2) {\n queryParts = pathParts[1].split(\"/\");\n if (queryParts.length >= 2) {\n this.target(queryParts[0]);\n this.query(queryParts[1]);\n }\n }\n }\n }\n return retVal;\n }\n\n target(_?) {\n if (!arguments.length) return this._target;\n this._target = _;\n return this;\n }\n\n query(_?) {\n if (!arguments.length) return this._query;\n this._query = _;\n return this;\n }\n\n constructUrl() {\n return Comms.prototype.getUrl.call(this, {\n pathname: \"WsEcl/submit/query/\" + this._target + \"/\" + this._query + \"/json\"\n });\n }\n\n call(target, request, callback) {\n target = target || {};\n target.target = target.target || this._target;\n target.query = target.query || this._query;\n const context = this;\n const url = this.getUrl({\n pathname: \"WsEcl/submit/query/\" + target.target + \"/\" + target.query + \"/json\"\n });\n return this.jsonp(url, request).then(function (response: any) {\n let _response = locateRoxieResponse(response);\n if (!_response) {\n _response = locateRoxieException(response);\n }\n response = _response;\n\n // Check for exceptions\n if (response.Exception) {\n throw Error(response.Exception.reduce(function (previousValue, exception, index, array) {\n if (previousValue.length) {\n previousValue += \"\\n\";\n }\n return previousValue + exception.Source + \" \" + exception.Code + \": \" + exception.Message;\n }, \"\"));\n }\n // Remove \"response.result.Row\"\n for (const key in response) {\n if (response[key].Row) {\n response[key] = response[key].Row.map(espRowFix);\n }\n }\n context._mappings.mapResponse(response);\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsECL.prototype.call)\");\n callback(response);\n }\n return response;\n });\n }\n\n send(request, callback) {\n return this.call({ target: this._target, query: this._query }, request, callback);\n }\n}\n\nexport class WsWorkunits extends Comms {\n\n protected _wuid = \"\";\n protected _jobname = \"\";\n protected _sequence = null;\n protected _resultName = null;\n\n protected _fetchResultNamesPromise = null;\n protected _fetchResultPromise = {};\n protected _resultNameCache = {};\n protected _resultNameCacheCount = 0;\n protected _total;\n\n constructor() {\n super();\n this._port = \"8010\";\n }\n\n url(_?) {\n const retVal = Comms.prototype.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/WsWorkunit/WuResult?Wuid=xxx&ResultName=yyy\n for (const key in this._params) {\n switch (key) {\n case \"Wuid\":\n this.wuid(this._params[key]);\n break;\n case \"ResultName\":\n this.resultName(this._params[key]);\n break;\n case \"Sequence\":\n this.sequence(this._params[key]);\n break;\n }\n }\n if (!this._wuid) {\n // http://localhost:8010/WsWorkunits/res/W20140922-213329/c:/temp/index.html\n const urlParts = this._url.split(\"/res/\");\n if (urlParts.length >= 2) {\n const urlParts2 = urlParts[1].split(\"/\");\n this.wuid(urlParts2[0]);\n }\n }\n }\n return retVal;\n }\n\n wuid(_?) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n }\n\n jobname(_?) {\n if (!arguments.length) return this._jobname;\n this._jobname = _;\n return this;\n }\n\n sequence(_?) {\n if (!arguments.length) return this._sequence;\n this._sequence = _;\n return this;\n }\n\n resultName(_?) {\n if (!arguments.length) return this._resultName;\n this._resultName = _;\n return this;\n }\n\n appendParam(label, value, params) {\n if (value) {\n if (params) {\n params += \"&\";\n }\n return params + label + \"=\" + value;\n }\n return params;\n }\n\n constructUrl() {\n const url = Comms.prototype.getUrl.call(this, {\n pathname: \"WsWorkunits/res/\" + this._wuid + \"/\"\n });\n let params = \"\";\n params = this.appendParam(\"ResultName\", this._resultName, params);\n return url + (params ? \"?\" + params : \"\");\n }\n\n _fetchResult(target, callback, skipMapping) {\n target = target || {};\n if (!this._fetchResultPromise[target.resultname]) {\n target._start = target._start || 0;\n target._count = target._count || -1;\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUResult.json\"\n });\n const request = {\n Wuid: target.wuid,\n ResultName: target.resultname,\n SuppressXmlSchema: true,\n Start: target._start,\n Count: target._count\n };\n this._resultNameCache[target.resultname] = {};\n const context = this;\n this._fetchResultPromise[target.resultname] = this.jsonp(url, request).then(function (response: any) {\n // Remove \"xxxResponse.Result\"\n for (const key in response) {\n if (!response[key].Result) {\n throw new Error(\"No result found.\");\n }\n context._total = response[key].Total;\n response = response[key].Result;\n for (const responseKey in response) {\n response = response[responseKey].Row.map(espRowFix);\n break;\n }\n break;\n }\n context._resultNameCache[target.resultname] = response;\n if (!skipMapping) {\n context._mappings.mapResult(context._resultNameCache, target.resultname);\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype._fetchResult)\");\n callback(context._resultNameCache[target.resultname]);\n }\n return context._resultNameCache[target.resultname];\n });\n }\n return this._fetchResultPromise[target.resultname];\n }\n\n fetchResult(target, callback, skipMapping) {\n if (target.wuid) {\n return this._fetchResult(target, callback, skipMapping);\n } else if (target.jobname) {\n const context = this;\n return this.WUQuery(target, function (response) {\n target.wuid = response[0].Wuid;\n return context._fetchResult(target, callback, skipMapping);\n });\n }\n }\n\n WUQuery(_request, callback) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUQuery.json\"\n });\n const request = {\n Jobname: _request.jobname,\n Count: 1\n };\n\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n return this.jsonp(url, request).then(function (response: any) {\n if (!Utility.exists(\"WUQueryResponse.Workunits.ECLWorkunit\", response)) {\n throw Error(\"No workunit found.\");\n }\n response = response.WUQueryResponse.Workunits.ECLWorkunit;\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.WUQuery)\");\n callback(response);\n }\n return response;\n });\n }\n\n fetchResultNames(callback?) {\n if (!this._fetchResultNamesPromise) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUInfo.json\"\n });\n const request = {\n Wuid: this._wuid,\n TruncateEclTo64k: true,\n IncludeExceptions: false,\n IncludeGraphs: false,\n IncludeSourceFiles: false,\n IncludeResults: true,\n IncludeResultsViewNames: false,\n IncludeVariables: false,\n IncludeTimers: false,\n IncludeResourceURLs: false,\n IncludeDebugValues: false,\n IncludeApplicationValues: false,\n IncludeWorkflows: false,\n IncludeXmlSchemas: false,\n SuppressResultSchemas: true\n };\n\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n const context = this;\n this._fetchResultNamesPromise = this.jsonp(url, request).then(function (response: any) {\n if (Utility.exists(\"WUInfoResponse.Workunit.Archived\", response) && response.WUInfoResponse.Workunit.Archived) {\n console.warn(\"WU is archived: \" + url + \" \" + JSON.stringify(request));\n }\n if (Utility.exists(\"WUInfoResponse.Workunit.Results.ECLResult\", response)) {\n response.WUInfoResponse.Workunit.Results.ECLResult.map(function (item) {\n context._resultNameCache[item.Name] = [];\n ++context._resultNameCacheCount;\n });\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.fetchResultNames)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n }\n return this._fetchResultNamesPromise;\n }\n\n fetchResults(callback, skipMapping) {\n const context = this;\n return this.fetchResultNames().then(function (response) {\n const fetchArray = [];\n for (const key in context._resultNameCache) {\n fetchArray.push(context.fetchResult({ wuid: context._wuid, resultname: key }, null, skipMapping));\n }\n return Promise.all(fetchArray).then(function (responseArray) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n });\n }\n\n postFilter(request, response) {\n const retVal = {};\n for (const key in response) {\n retVal[key] = response[key].filter(function (row, idx) {\n for (const request_key in request) {\n if (row[request_key] !== undefined && request[request_key] !== undefined && row[request_key] != request[request_key]) {\n return false;\n }\n }\n return true;\n });\n }\n this._mappings.mapResponse(retVal);\n return retVal;\n }\n\n send(request, callback) {\n const context = this;\n if (!this._resultNameCacheCount) {\n this.fetchResults(function (response) {\n callback(context.postFilter(request, response));\n }, true);\n } else {\n callback(context.postFilter(request, this._resultNameCache));\n }\n }\n}\n\nfunction WsWorkunits_GetStats() {\n Comms.call(this);\n\n this._port = \"8010\";\n this._wuid = null;\n}\nWsWorkunits_GetStats.prototype = Object.create(Comms.prototype);\n\nWsWorkunits_GetStats.prototype.url = function (_) {\n const retVal = Comms.prototype.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/WsWorkunits/WUGetStats?WUID=\"xxx\"\n for (const key in this._params) {\n switch (key) {\n case \"WUID\":\n this.wuid(this._params[key]);\n break;\n }\n }\n }\n return retVal;\n};\n\nWsWorkunits_GetStats.prototype.wuid = function (_) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n};\n\nWsWorkunits_GetStats.prototype.constructUrl = function () {\n return Comms.prototype.getUrl.call(this, {\n pathname: \"WsWorkunits/WUGetStats?WUID=\" + this._wuid\n });\n};\n\nWsWorkunits_GetStats.prototype.send = function (request, callback) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUGetStats.json?WUID=\" + this._wuid\n });\n return this.jsonp(url, request).then(function (response) {\n if (Utility.exists(\"WUGetStatsResponse.Statistics.WUStatisticItem\", response)) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits_GetStats.prototype.send)\");\n callback(response.WUGetStatsResponse.Statistics.WUStatisticItem);\n }\n return response.WUGetStatsResponse.Statistics.WUStatisticItem;\n } else {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits_GetStats.prototype.send)\");\n callback([]);\n }\n return [];\n }\n });\n};\n\n// HIPIERoxie ---\nfunction HIPIERoxie() {\n Comms.call(this);\n}\nHIPIERoxie.prototype = Object.create(Comms.prototype);\n\nHIPIERoxie.prototype.fetchResults = function (request, callback) {\n const url = this.getUrl({});\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n const context = this;\n return this.jsonp(url, request).then(function (response) {\n let _response = locateRoxieResponse(response);\n if (!_response) {\n _response = locateRoxieException(response);\n }\n response = _response;\n\n // Check for exceptions\n if (response.Exception) {\n throw Error(response.Exception.reduce(function (previousValue, exception, index, array) {\n if (previousValue.length) {\n previousValue += \"\\n\";\n }\n return previousValue + exception.Source + \" \" + exception.Code + \": \" + exception.Message;\n }, \"\"));\n }\n // Remove \"response.result.Row\"\n for (const key in response) {\n if (response[key].Row) {\n context._resultNameCache[key] = response[key].Row.map(espRowFix);\n ++context._resultNameCacheCount;\n }\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIERoxie.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n};\n\nHIPIERoxie.prototype.fetchResult = function (name, callback) {\n const context = this;\n return new Promise(function (resolve, reject) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIERoxie.prototype.fetchResult)\");\n callback(context._resultNameCache[name]);\n }\n resolve(context._resultNameCache[name]);\n });\n};\n\nHIPIERoxie.prototype.call = function (request, callback) {\n const context = this;\n return this.fetchResults(request, callback).then(function (response) {\n const retVal = {};\n for (const hipieKey in context._hipieResults) {\n const item = context._hipieResults[hipieKey];\n retVal[item.id] = response[item.from];\n }\n return retVal;\n });\n};\n\n// HIPIEWorkunit ---\nfunction HIPIEWorkunit() {\n WsWorkunits.call(this);\n}\nHIPIEWorkunit.prototype = Object.create(WsWorkunits.prototype);\n\nHIPIEWorkunit.prototype.fetchResults = function (callback) {\n const context = this;\n return WsWorkunits.prototype.fetchResultNames.call(this).then(function (response) {\n const fetchArray = [];\n for (const key in context._hipieResults) {\n const item = context._hipieResults[key];\n fetchArray.push(context.fetchResult(item.from));\n }\n return Promise.all(fetchArray).then(function (response2) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEWorkunit.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n });\n};\n\nHIPIEWorkunit.prototype.fetchResult = function (name, callback) {\n return WsWorkunits.prototype.fetchResult.call(this, { wuid: this._wuid, resultname: name }).then(function (response) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEWorkunit.prototype.fetchResult)\");\n callback(response);\n }\n return response;\n });\n};\n\nHIPIEWorkunit.prototype.call = function (request, callback) {\n const context = this;\n if (request.refresh || !this._resultNameCache || !this._resultNameCacheCount) {\n return this.fetchResults(callback).then(function (response) {\n return filterResults(request);\n });\n } else {\n return new Promise(function (resolve, reject) {\n resolve(filterResults(request));\n });\n }\n\n function filterResults(request2) {\n const changedFilter = {};\n for (const key in request2) {\n if (request2[key + \"_changed\"] !== undefined) {\n changedFilter[key] = {\n value: request2[key]\n };\n }\n }\n const retVal = {};\n for (const hipieKey in context._hipieResults) {\n const hipieResult = context._hipieResults[hipieKey];\n const outputFilter = {};\n for (let i = 0; i < hipieResult.filters.length; ++i) {\n const filter = hipieResult.filters[i];\n if (!filter.isRange()) {\n outputFilter[filter.fieldid] = changedFilter[filter.fieldid] || { value: undefined };\n outputFilter[filter.fieldid].filter = filter;\n }\n }\n retVal[hipieResult.id] = context._resultNameCache[hipieResult.from].filter(function (row) {\n for (const key2 in outputFilter) {\n if (!outputFilter[key2].filter.matches(row, outputFilter[key2].value)) {\n return false;\n }\n }\n return true;\n });\n }\n return retVal;\n }\n};\n\n// HIPIEDatabomb ---\nfunction HIPIEDatabomb() {\n HIPIEWorkunit.call(this);\n}\nHIPIEDatabomb.prototype = Object.create(HIPIEWorkunit.prototype);\n\nHIPIEDatabomb.prototype.databomb = function (_) {\n if (!arguments.length) return this._databomb;\n this._databomb = _;\n return this;\n};\n\nHIPIEDatabomb.prototype.databombOutput = function (from, id) {\n if (!arguments.length) return undefined;\n this._resultNameCacheCount++;\n if (this._databomb instanceof Array) {\n this._resultNameCache[from] = this._databomb.map(espRowFix);\n } else {\n this._resultNameCache[from] = this._databomb[from].map(espRowFix);\n }\n return this;\n};\n\nHIPIEDatabomb.prototype.fetchResults = function (callback) {\n const context = this;\n return new Promise(function (resolve, reject) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEDatabomb.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n resolve(context._resultNameCache);\n });\n};\n\nexport function createESPConnection(url) {\n url = url || document.URL;\n const testURL = new ESPUrl()\n .url(url)\n ;\n if (testURL.isWsWorkunits_GetStats()) {\n return new WsWorkunits_GetStats()\n .url(url)\n ;\n }\n if (testURL.isWsWorkunits()) {\n return new WsWorkunits()\n .url(url)\n ;\n }\n if (testURL.isWsEcl()) {\n return new WsECL()\n .url(url)\n ;\n }\n return null;\n}\n\nexport function hookJsonp(func) {\n jsonp = func;\n}\n\nexport {\n HIPIEWorkunit,\n HIPIERoxie,\n HIPIEDatabomb\n};\n","import { Utility } from \"@hpcc-js/common\";\nimport * as Comms from \"./Comms\";\n\nfunction nestedRowFix(row) {\n if (row.Row && row.Row instanceof Array) {\n return row.Row.map(nestedRowFix);\n } else if (row instanceof Object) {\n for (const key in row) {\n row[key] = nestedRowFix(row[key]);\n }\n }\n return row;\n}\n\n// Basic Comms ---\nlet enableBasicCommsCache = false;\nlet basicCommsCache = {};\nfunction BasicComms() {\n Comms.Basic.call(this);\n}\nBasicComms.prototype = Object.create(Comms.Basic.prototype);\n\nBasicComms.prototype.jsonp = function (url, request) {\n const requestStr = JSON.stringify(request);\n if (enableBasicCommsCache && basicCommsCache[url] && basicCommsCache[url][requestStr]) {\n return Promise.resolve(basicCommsCache[url][requestStr]);\n }\n return Comms.Basic.prototype.jsonp.apply(this, arguments).then(function (response) {\n if (enableBasicCommsCache) {\n if (!basicCommsCache[url]) {\n basicCommsCache[url] = {};\n }\n basicCommsCache[url][requestStr] = response;\n }\n return response;\n });\n};\n\n// WsWorkunits ---\nfunction WsWorkunits(baseUrl) {\n BasicComms.call(this);\n\n this.url(baseUrl + \"WsWorkunits/\");\n}\nWsWorkunits.prototype = Object.create(BasicComms.prototype);\n\nWsWorkunits.prototype.wuQuery = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUQuery.json\"\n });\n const request = {\n Wuid: \"\",\n Type: \"\",\n Cluster: \"\",\n RoxieCluster: \"\",\n Owner: \"\",\n State: \"\",\n StartDate: \"\",\n EndDate: \"\",\n ECL: \"\",\n Jobname: \"\",\n LogicalFile: \"\",\n LogicalFileSearchType: \"\",\n /*\n ApplicationValues>\n ApplicationValue>\n Application: \"\",\n Name: \"\",\n Value: \"\",\n /ApplicationValue>\n /ApplicationValues>\n */\n After: \"\",\n Before: \"\",\n Count: \"\",\n PageSize: 100,\n PageStartFrom: 0,\n PageEndAt: \"\",\n LastNDays: \"\",\n Sortby: \"\",\n Descending: 0,\n CacheHint: \"\"\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.jsonp(url, request).then(function (response) {\n if (response.WUQueryResponse && response.WUQueryResponse.Workunits) {\n return response.WUQueryResponse.Workunits.ECLWorkunit;\n }\n return [];\n });\n};\n\n// Workunit ---\nfunction Workunit(baseUrl, wuid) {\n BasicComms.call(this);\n\n this.url(baseUrl + \"WsWorkunits/\");\n this._wuid = wuid;\n}\nWorkunit.prototype = Object.create(BasicComms.prototype);\n\nWorkunit.prototype.wuInfo = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUInfo.json\"\n });\n const request = {\n Wuid: this._wuid,\n TruncateEclTo64k: true,\n IncludeExceptions: false,\n IncludeGraphs: false,\n IncludeSourceFiles: false,\n IncludeResults: false,\n IncludeResultsViewNames: false,\n IncludeVariables: false,\n IncludeTimers: false,\n IncludeResourceURLs: false,\n IncludeDebugValues: false,\n IncludeApplicationValues: false,\n IncludeWorkflows: false,\n IncludeXmlSchemas: false,\n SuppressResultSchemas: true\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.jsonp(url, request).then(function (response) {\n if (enableBasicCommsCache) {\n const retVal = { WUInfoResponse: { Workunit: {} } };\n for (const key in options) {\n const includeKey = key.substring(7);\n retVal.WUInfoResponse.Workunit[includeKey] = response.WUInfoResponse.Workunit[includeKey];\n }\n basicCommsCache[url][JSON.stringify(request)] = retVal;\n }\n return response;\n });\n};\n\nWorkunit.prototype.wuUpdate = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUUpdate.json\"\n });\n const request = {\n Wuid: this._wuid\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.post(url, request);\n};\n\nWorkunit.prototype.appData = function (appID, key, _) {\n if (arguments.length === 2) {\n return this.wuInfo({\n IncludeApplicationValues: true\n }).then(function (response) {\n let persistString;\n if (response.WUInfoResponse && response.WUInfoResponse.Workunit && response.WUInfoResponse.Workunit.ApplicationValues && response.WUInfoResponse.Workunit.ApplicationValues.ApplicationValue) {\n response.WUInfoResponse.Workunit.ApplicationValues.ApplicationValue.filter(function (row) {\n return row.Application === appID && row.Name === key;\n }).forEach(function (row) {\n persistString = row.Value;\n });\n }\n return persistString;\n });\n } else if (arguments.length === 3) {\n return this.wuUpdate({\n \"ApplicationValues.ApplicationValue.0.Application\": appID,\n \"ApplicationValues.ApplicationValue.0.Name\": key,\n \"ApplicationValues.ApplicationValue.0.Value\": _,\n \"ApplicationValues.ApplicationValue.itemcount\": 1\n });\n }\n};\n\nWorkunit.prototype.results = function () {\n const context = this;\n return this.wuInfo({\n IncludeResults: true\n }).then(function (response) {\n let retVal = [];\n if (Utility.exists(\"WUInfoResponse.Workunit.Results.ECLResult\", response)) {\n retVal = response.WUInfoResponse.Workunit.Results.ECLResult.map(function (result) {\n return new WUResult(context.getUrl({ pathname: \"WsWorkunits/\" }), context._wuid, result.Name);\n });\n }\n return retVal;\n });\n};\n\nWorkunit.prototype.result = function (dataSource, resultName) {\n dataSource = dataSource || this._wuid;\n return createResult(dataSource, resultName);\n};\n\n// Workunit Result ---\nfunction WUResult(baseUrl, wuid, name) {\n BasicComms.call(this);\n this.url(baseUrl + \"WUResult.json\");\n this._wuid = wuid;\n this._name = name;\n this._xmlSchema = null;\n}\nWUResult.prototype = Object.create(BasicComms.prototype);\n\nWUResult.prototype.wuid = function (_) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n};\n\nWUResult.prototype.name = function (_) {\n if (!arguments.length) return this._name;\n this._name = _;\n return this;\n};\n\nWUResult.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n Wuid: this._wuid,\n ResultName: this._name,\n SuppressXmlSchema: true,\n Start: 0,\n Count: -1\n };\n for (const key in options) {\n request[key] = options[key];\n }\n let filterIdx = 0;\n for (const fKey in filter) {\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Name\"] = fKey;\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Value\"] = filter[fKey];\n ++filterIdx;\n }\n if (filterIdx) {\n request[\"FilterBy.NamedValue.itemcount\"] = filterIdx;\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n if (response.WUResultResponse &&\n response.WUResultResponse.Result &&\n response.WUResultResponse.Result[context._name]) {\n if (enableBasicCommsCache) {\n basicCommsCache[context.url()][JSON.stringify(request)] = {\n WUResultResponse: {\n Result: response.WUResultResponse.Result\n }\n };\n }\n context._xmlSchema = response.WUResultResponse.Result.XmlSchema;\n return nestedRowFix(response.WUResultResponse.Result[context._name]);\n }\n return [];\n });\n};\n\n// Logical File ---\nfunction LogicalFile(baseUrl, logicalName) {\n BasicComms.call(this);\n this.url(baseUrl + \"WUResult.json\");\n this._logicalName = logicalName;\n this._xmlSchema = null;\n}\nLogicalFile.prototype = Object.create(BasicComms.prototype);\n\nLogicalFile.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n Cluster: \"hthor\", // TODO: Should not be needed ---\n LogicalName: this._logicalName,\n SuppressXmlSchema: this._xmlSchema !== null,\n Start: 0,\n Count: -1\n };\n for (const key in options) {\n request[key] = options[key];\n }\n let filterIdx = 0;\n for (const fKey in filter) {\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Name\"] = fKey;\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Value\"] = filter[fKey];\n ++filterIdx;\n }\n if (filterIdx) {\n request[\"FilterBy.NamedValue.itemcount\"] = filterIdx;\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n if (response.WUResultResponse &&\n response.WUResultResponse.Result &&\n response.WUResultResponse.Result.Row) {\n context._xmlSchema = response.WUResultResponse.Result.XmlSchema;\n return nestedRowFix(response.WUResultResponse.Result.Row);\n }\n return [];\n });\n};\n\n// Roxie Query ---\nfunction RoxieQuery(baseUrl, resultName) {\n BasicComms.call(this);\n const urlParts = baseUrl.split(\"/\");\n let queryName = urlParts.pop();\n if (queryName.toLowerCase() === \"json\") {\n queryName = urlParts.pop();\n }\n this._queryName = queryName;\n this._resultName = resultName;\n this.url(urlParts.join(\"/\") + \"/\" + queryName + \"/json\");\n}\nRoxieQuery.prototype = Object.create(BasicComms.prototype);\n\nfunction trimRight(str) {\n if (str && str.replace) {\n return str.replace(/ +$/, \"\");\n }\n return str;\n}\n\nfunction postFilter(results, filter) {\n return results.filter(function (row) {\n for (const key in filter) {\n if (row[key] !== undefined && trimRight(filter[key]) !== trimRight(row[key])) {\n return false;\n }\n }\n return true;\n });\n}\n\nfunction locateRoxieResponse(response) {\n // v5 and v6 compatible ---\n for (const key in response) {\n if (response[key].Row && response[key].Row instanceof Array) {\n return response;\n }\n const retVal = locateRoxieResponse(response[key]);\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nRoxieQuery.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n };\n for (const key in options) {\n request[key] = options[key];\n }\n for (const fKey in filter) {\n request[fKey] = filter[fKey];\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n response = locateRoxieResponse(response);\n if (response) {\n if (context._resultName) {\n if (response && response[context._resultName] && response[context._resultName].Row) {\n return nestedRowFix(postFilter(response[context._resultName].Row, filter));\n }\n } else {\n for (const key in response) {\n if (response[key].Row) {\n return nestedRowFix(postFilter(response[key].Row, filter));\n }\n }\n }\n }\n return [];\n });\n};\n\nexport function createResult(_espUrl, dataSource, resultName?) {\n const espUrl = new Comms.ESPUrl()\n .url(_espUrl)\n ;\n if (dataSource.indexOf(\"http\") === 0) {\n return new RoxieQuery(dataSource, resultName);\n } else if (dataSource.indexOf(\"~\") === 0 || dataSource.indexOf(\"::\") >= 0) {\n return new LogicalFile(espUrl.getUrl({ pathname: \"WsWorkunits/\" }), dataSource);\n } else if (dataSource) {\n return new WUResult(espUrl.getUrl({ pathname: \"WsWorkunits/\" }), dataSource, resultName);\n }\n return null;\n}\n\nexport function enableCache(_?: any): any | undefined {\n if (!arguments.length) return enableBasicCommsCache;\n enableBasicCommsCache = _;\n if (!_) {\n basicCommsCache = {};\n }\n}\nexport function cache(_?: any): any | undefined {\n if (!arguments.length) return basicCommsCache;\n basicCommsCache = _;\n}\nexport function createConnection(url) {\n url = url || document.URL;\n const testURL = new Comms.ESPUrl()\n .url(url)\n ;\n if (testURL.isWsWorkunits()) {\n const espConnection = Comms.createESPConnection(url);\n if (espConnection instanceof Comms.WsWorkunits && espConnection.wuid()) {\n return new Workunit(espConnection.getUrl({ pathname: \"\" }), espConnection.wuid())\n .url(url)\n ;\n }\n }\n return null;\n}\nexport function flattenResult(result, mappings) {\n const retVal = {\n columns: [],\n data: []\n };\n if (result && result.length) {\n const colIdx = {};\n if (mappings && mappings.length) {\n mappings.forEach(function (mapping) {\n colIdx[mapping.value.toLowerCase()] = retVal.columns.length;\n retVal.columns.push(mapping.key);\n });\n } else {\n for (const key in result[0]) {\n colIdx[key.toLowerCase()] = retVal.columns.length;\n retVal.columns.push(key);\n }\n }\n result.forEach(function (row, rowIdx) {\n const rowArr = [];\n for (const key in row) {\n if (colIdx[key.toLowerCase()] !== undefined) {\n rowArr[colIdx[key.toLowerCase()]] = row[key];\n }\n }\n retVal.data.push(rowArr);\n });\n }\n return retVal;\n}\n","'use strict';\n\nif (typeof module !== 'undefined') module.exports = simpleheat;\n\nfunction simpleheat(canvas) {\n if (!(this instanceof simpleheat)) return new simpleheat(canvas);\n\n this._canvas = canvas = typeof canvas === 'string' ? document.getElementById(canvas) : canvas;\n\n this._ctx = canvas.getContext('2d');\n this._width = canvas.width;\n this._height = canvas.height;\n\n this._max = 1;\n this._data = [];\n}\n\nsimpleheat.prototype = {\n\n defaultRadius: 25,\n\n defaultGradient: {\n 0.4: 'blue',\n 0.6: 'cyan',\n 0.7: 'lime',\n 0.8: 'yellow',\n 1.0: 'red'\n },\n\n data: function (data) {\n this._data = data;\n return this;\n },\n\n max: function (max) {\n this._max = max;\n return this;\n },\n\n add: function (point) {\n this._data.push(point);\n return this;\n },\n\n clear: function () {\n this._data = [];\n return this;\n },\n\n radius: function (r, blur) {\n blur = blur === undefined ? 15 : blur;\n\n // create a grayscale blurred circle image that we'll use for drawing points\n var circle = this._circle = this._createCanvas(),\n ctx = circle.getContext('2d'),\n r2 = this._r = r + blur;\n\n circle.width = circle.height = r2 * 2;\n\n ctx.shadowOffsetX = ctx.shadowOffsetY = r2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = 'black';\n\n ctx.beginPath();\n ctx.arc(-r2, -r2, r, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n\n return this;\n },\n\n resize: function () {\n this._width = this._canvas.width;\n this._height = this._canvas.height;\n },\n\n gradient: function (grad) {\n // create a 256x1 gradient that we'll use to turn a grayscale heatmap into a colored one\n var canvas = this._createCanvas(),\n ctx = canvas.getContext('2d'),\n gradient = ctx.createLinearGradient(0, 0, 0, 256);\n\n canvas.width = 1;\n canvas.height = 256;\n\n for (var i in grad) {\n gradient.addColorStop(+i, grad[i]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 1, 256);\n\n this._grad = ctx.getImageData(0, 0, 1, 256).data;\n\n return this;\n },\n\n draw: function (minOpacity) {\n if (!this._circle) this.radius(this.defaultRadius);\n if (!this._grad) this.gradient(this.defaultGradient);\n\n var ctx = this._ctx;\n\n ctx.clearRect(0, 0, this._width, this._height);\n\n // draw a grayscale heatmap by putting a blurred circle at each data point\n for (var i = 0, len = this._data.length, p; i < len; i++) {\n p = this._data[i];\n ctx.globalAlpha = Math.max(p[2] / this._max, minOpacity === undefined ? 0.05 : minOpacity);\n ctx.drawImage(this._circle, p[0] - this._r, p[1] - this._r);\n }\n\n // colorize the heatmap, using opacity value of each pixel to get the right color from our gradient\n var colored = ctx.getImageData(0, 0, this._width, this._height);\n this._colorize(colored.data, this._grad);\n ctx.putImageData(colored, 0, 0);\n\n return this;\n },\n\n _colorize: function (pixels, gradient) {\n for (var i = 0, len = pixels.length, j; i < len; i += 4) {\n j = pixels[i + 3] * 4; // get gradient color from opacity value\n\n if (j) {\n pixels[i] = gradient[j];\n pixels[i + 1] = gradient[j + 1];\n pixels[i + 2] = gradient[j + 2];\n }\n }\n },\n\n _createCanvas: function () {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else {\n // create a new canvas instance in node.js\n // the canvas class needs to have a default constructor without any parameter\n return new this._canvas.constructor();\n }\n }\n};\n","import { CanvasWidget, Palette } from \"@hpcc-js/common\";\nimport * as _simpleheat from \"simpleheat\";\n\nconst simpleheat = (window as any).simpleheat || (_simpleheat && _simpleheat.default) || _simpleheat;\n\nexport class HeatMap extends CanvasWidget {\n _heat;\n _palette;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n // canvas size needs to be set before render\n this.resize(this._size);\n this._heat = simpleheat(domNode);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n if (this.topLeftX_exists() && this.topLeftY_exists() && this.bottomRightX_exists() && this.bottomRightY_exists()) {\n this._heat.data(this.skewedData());\n } else {\n this._heat.data(this.data());\n }\n\n if (this.radius()) {\n this._heat.radius(this.radius(), this.blur());\n }\n if (this.usePalette()) {\n const grad = {};\n for (let idx = 1; idx <= this.colorCount(); idx++) {\n const value = idx / this.colorCount();\n grad[value] = this._palette(idx, 1, this.colorCount());\n }\n this._heat.defaultGradient = grad;\n this._heat.gradient(grad);\n } else if (this.gradient()) {\n this._heat.defaultGradient = this.gradient();\n this._heat.gradient(this.gradient());\n }\n\n this._heat.draw();\n }\n\n exit(domNode, element) {\n delete this._heat;\n super.exit(domNode, element);\n }\n\n resize(size: any): this {\n const retVal = CanvasWidget.prototype.resize.apply(this, arguments);\n if (this._heat !== undefined) {\n this._heat.resize();\n }\n return retVal;\n }\n\n skewedData() {\n const context = this;\n const retArr = [];\n const arr = this.data();\n const box = this.size();\n\n const coordsWidth = this.bottomRightX() - this.topLeftX();\n const coordsHeight = this.bottomRightY() - this.topLeftY();\n\n const pixelValueX = coordsWidth / box.width;\n const pixelValueY = coordsHeight / box.height;\n\n arr.forEach(function (n) {\n const left = Math.abs(n[0] - context.topLeftX());\n const top = Math.abs(n[1] - context.topLeftY());\n\n const newX = left / pixelValueX;\n const newY = top / pixelValueY;\n\n retArr.push([newX, newY, n[2]]);\n });\n\n return retArr;\n }\n\n radius: { (): number; (_: number): HeatMap };\n radius_exists: () => boolean;\n blur: { (): number; (_: number): HeatMap };\n blur_exists: () => boolean;\n max: { (): number; (_: number): HeatMap };\n max_exists: () => boolean;\n gradient: { (): object; (_: object): HeatMap };\n gradient_exists: () => boolean;\n usePalette: { (): boolean; (_: boolean): HeatMap };\n usePalette_exists: () => boolean;\n colorCount: { (): number; (_: number): HeatMap };\n colorCount_exists: () => boolean;\n paletteID: { (): string; (_: string): HeatMap };\n paletteID_exists: () => boolean;\n useClonedPalette: { (): boolean; (_: boolean): HeatMap };\n useClonedPalette_exists: () => boolean;\n topLeftX: { (): number; (_: number): HeatMap };\n topLeftX_exists: () => boolean;\n topLeftY: { (): number; (_: number): HeatMap };\n topLeftY_exists: () => boolean;\n bottomRightX: { (): number; (_: number): HeatMap };\n bottomRightX_exists: () => boolean;\n bottomRightY: { (): number; (_: number): HeatMap };\n bottomRightY_exists: () => boolean;\n}\nHeatMap.prototype._class += \" other_HeatMap\";\nHeatMap.prototype._palette = Palette.rainbow(\"default\");\n\nHeatMap.prototype.publish(\"radius\", 15, \"number\", \"Set point radius\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"blur\", 15, \"number\", \"Set point blur\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"max\", 1, \"number\", \"Set max data value\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"gradient\", { 0.4: \"blue\", 0.6: \"cyan\", 0.7: \"lime\", 0.8: \"yellow\", 1.0: \"red\" }, \"object\", \"Set gradient colors\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"usePalette\", false, \"boolean\", \"If true, uses paletteID and colorCount to determine gradient\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"colorCount\", 10, \"number\", \"Top left x-value\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", HeatMap.prototype._palette.switch(), { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n\nHeatMap.prototype.publish(\"topLeftX\", null, \"number\", \"Top left x-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"topLeftY\", null, \"number\", \"Top left y-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"bottomRightX\", null, \"number\", \"Bottom right x-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"bottomRightY\", null, \"number\", \"Bottom right y-value\", null, { tags: [\"Basic\"], optional: true });\n","import { SVGWidget } from \"@hpcc-js/common\";\n\nexport class HPCCBadge extends SVGWidget {\n protected root;\n protected logo;\n protected logo_accent;\n protected logo_circles;\n protected line;\n protected circle_1;\n protected circle_2;\n protected circle_3;\n protected circle_4;\n protected circle_5;\n protected circle_6;\n protected circle_7;\n protected circle_8;\n protected circle_accent;\n protected text;\n protected text_hpccsystems;\n protected text_r;\n protected text_tm;\n\n constructor() {\n super();\n }\n\n testData(domNode, element) {\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this.root = element.append(\"g\");\n this.logo = this.root.append(\"g\");\n this.logo_accent = this.root.append(\"g\");\n this.line = this.logo_accent.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 189.38849,364.55373 c 191.6,3.8 0,0 191.6,3.8 l 0.1,-4.2 c -191.7,0.4 0,0 -191.7,0.4 z\")\n ;\n this.circle_accent = this.logo_accent.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M421.3,354.2c6.9,6.9,3.1,18.7-8.6,26.1c-11.8,7.4-26.3,6.9-32.1-0.6c-5.5-7.2-1.1-18.2,9.6-25C401,348,414.7,347.6,421.3,354.2z\")\n ;\n this.logo_circles = this.logo.append(\"g\");\n this.circle_1 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 258.9815,363.84947 c 1.3,-3 1.5,-5.9 0.4,-8.1 -2.6,-5.4 -11.8,-5.1 -20.6,0.4 -3.5,2.2 -6.5,4.9 -8.7,7.8 -0.11933,0.35821 -0.39477,0.60735 -0.6,0.9 -2.9,4.1 -4.2,8.3 -3,11.6 2.1,6 11.4,6.3 20.9,0.4 5,-3.2 8.9,-7.3 11,-11.4 -0.59813,0.54778 0.47385,-1.28911 0.6,-1.6 z\")\n ;\n this.circle_2 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M291.3,349.3c9.5-5.9,14.1-15,10.5-20c-3.5-4.8-13.3-4.2-22.1,1.3c-8.8,5.5-13.7,14.1-10.9,19.3C271.7,355.4,281.9,355.2,291.3,349.3z\")\n ;\n this.circle_3 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M335.3,321.7c9.5-5.9,13.3-14.5,8.9-19c-4.3-4.3-14.8-3.2-23.6,2.3c-8.8,5.5-13.1,13.7-9.4,18.4C315,328.3,325.9,327.7,335.3,321.7z\")\n ;\n this.circle_4 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M273.2,384c-3.2-6.5-13.5-6.7-23.2-0.7c-9.7,6-15.6,16.4-13.2,23.4c2.5,7.3,13.1,8.2,23.6,1.7 C270.8,401.9,276.5,390.8,273.2,384z\")\n ;\n this.circle_5 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 320.84499,363.83119 c 1,-3.4 0.8,-6.6 -1,-9.1 -4.2,-5.9 -15.3,-5.6 -25,0.5 -3.89999,2.4 -7.09999,5.5 -9.19999,8.7 -1.18854,2.2092 -0.0404,-0.09 -1.2,2.2 -2.2,4.1 -2.7,8.3 -0.9,11.5 3.6,6.7 15.09999,7 25.59999,0.5 5,-3.2 8.7,-7.2 10.7,-11.3 0.95557,-2.97582 0.0423,0.0306 1,-3 z\")\n ;\n this.circle_6 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M330.4,348.2c4.6,6,17,5.8,27.5-0.8c10.5-6.6,14.3-16.5,8.9-22c-5.2-5.3-17.1-4.4-26.8,1.6C330.3,333.1,325.9,342.4,330.4,348.2z\")\n ;\n this.circle_7 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M264.1,417.4c-10.8,6.7-17.2,19-14.2,27.8c3.2,9.2,15.4,11.1,27.2,3.7c11.8-7.4,17.8-20.6,13.6-29.2C286.6,411.6,274.8,410.7,264.1,417.4z\")\n ;\n this.circle_8 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M314.2,386.1c-10.8,6.7-16.2,18.4-11.9,26.4c4.5,8.4,17.8,9.5,29.6,2.2c11.8-7.4,16.6-19.9,11.1-27.7C337.7,379.6,324.9,379.3,314.2,386.1z\")\n ;\n\n // Text ---\n this.text = this.root.append(\"g\");\n this.text_hpccsystems = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M224.2,476.3c0.1-1.3,0.1-2.7,0.2-4.1c-0.3,0-0.5,0.1-0.8,0.1c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5-0.1-0.8-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v1.1c-1.1,0-2.3,0-3.3,0.1c-1.1,0-2.2,0-3.3,0c-1.1,0-2.3,0-3.3,0c-1.1,0-2.2,0-3.3-0.1v-1.1c0-1.4,0-2.8,0.1-4.1c0.1-1.3,0.1-2.7,0.2-4.1c-0.3,0-0.5,0.1-0.8,0.1c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5-0.1-0.8-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-2.9c1.1,0,2.3,0,3.3,0c1.1,0,2.2,0,3.3,0c1.1,0,2.3,0,3.3,0c1.1,0,2.2,0,3.3,0v2.9c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-5.5C224.1,479,224.1,477.7,224.2,476.3z M242.7,473.8c-0.4-0.4-0.9-0.7-1.4-0.9c-0.5-0.2-1-0.4-1.5-0.5c-0.5-0.1-1-0.2-1.5-0.2c-0.5,0-0.9,0-1.2,0c-0.2,0-0.5,0-0.9,0c-0.3,0-0.7,0-1.1,0c-0.4,0-0.7,0-1.1,0c-0.4,0-0.7,0-0.9,0c-0.5,0-1,0-1.5,0c-0.5,0-1-0.1-1.5-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-1.8c0.4,0,0.8,0.1,1.2,0.1c0.4,0,0.8,0,1.3,0c0.8,0,1.6-0.1,2.6-0.3c1-0.2,1.9-0.5,2.8-1c0.9-0.5,1.6-1.2,2.2-2c0.6-0.9,0.9-2,0.9-3.4c0-0.9-0.1-1.6-0.4-2.2C243.5,474.7,243.1,474.2,242.7,473.8z M240.6,480.4c-0.4,0.7-0.9,1.2-1.4,1.6c-0.6,0.4-1.2,0.7-1.9,0.8c-0.7,0.1-1.4,0.2-2,0.2c-0.8,0-1.5-0.1-2.3-0.3v-9.5h2.9c0.8,0,1.6,0.1,2.2,0.2c0.7,0.1,1.2,0.3,1.7,0.7c0.5,0.3,0.8,0.8,1.1,1.3c0.3,0.6,0.4,1.3,0.4,2.2C241.2,478.8,241,479.7,240.6,480.4z M251.9,475.4c0.8-0.8,1.7-1.5,2.8-1.9c1.1-0.4,2.2-0.6,3.5-0.6c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.2,0.5,1.7,0.7c0.5,0.3,1,0.6,1.3,0.9c0.4,0.3,0.7,0.6,0.9,0.9l0.2-0.1c0.1-0.3,0.1-0.8,0.3-1.3c0.1-0.5,0.2-0.9,0.4-1.2c-0.9-0.4-1.9-0.7-3.1-1c-1.2-0.3-2.4-0.4-3.8-0.4c-1.8,0-3.4,0.3-4.8,0.8c-1.5,0.5-2.7,1.3-3.8,2.2c-1.1,1-1.9,2.2-2.5,3.6c-0.6,1.4-0.9,3-0.9,4.8c0,1.8,0.3,3.4,0.9,4.8c0.6,1.4,1.4,2.6,2.4,3.6c1,1,2.3,1.7,3.7,2.2c1.4,0.5,3,0.7,4.7,0.7c0.8,0,1.5-0.1,2.3-0.2c0.7-0.1,1.4-0.3,2-0.4c0.6-0.2,1.1-0.3,1.5-0.5c0.4-0.2,0.7-0.4,0.9-0.6l0.3-1.9l-0.1-0.1c-0.3,0.2-0.7,0.5-1.1,0.8c-0.4,0.3-0.9,0.6-1.5,0.9c-0.5,0.3-1.1,0.5-1.8,0.7c-0.6,0.2-1.4,0.3-2.1,0.3c-1.3,0-2.4-0.2-3.5-0.6c-1.1-0.4-2-1-2.8-1.9c-0.8-0.8-1.4-1.9-1.9-3.2c-0.4-1.3-0.7-2.8-0.7-4.6c0-1.8,0.2-3.3,0.7-4.6 C250.5,477.3,251.1,476.3,251.9,475.4z M273.2,475.4c0.8-0.8,1.7-1.5,2.8-1.9c1.1-0.4,2.2-0.6,3.5-0.6c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.2,0.5,1.7,0.7c0.5,0.3,1,0.6,1.3,0.9c0.4,0.3,0.7,0.6,0.9,0.9l0.2-0.1c0.1-0.3,0.1-0.8,0.3-1.3c0.1-0.5,0.2-0.9,0.4-1.2c-0.9-0.4-1.9-0.7-3.1-1c-1.2-0.3-2.4-0.4-3.8-0.4c-1.8,0-3.4,0.3-4.8,0.8c-1.5,0.5-2.7,1.3-3.8,2.2c-1.1,1-1.9,2.2-2.5,3.6c-0.6,1.4-0.9,3-0.9,4.8c0,1.8,0.3,3.4,0.9,4.8c0.6,1.4,1.4,2.6,2.4,3.6c1,1,2.3,1.7,3.7,2.2c1.4,0.5,3,0.7,4.7,0.7c0.8,0,1.5-0.1,2.3-0.2c0.7-0.1,1.4-0.3,2-0.4c0.6-0.2,1.1-0.3,1.5-0.5c0.4-0.2,0.7-0.4,0.9-0.6l0.3-1.9l-0.1-0.1c-0.3,0.2-0.7,0.5-1.1,0.8c-0.4,0.3-0.9,0.6-1.5,0.9c-0.5,0.3-1.1,0.5-1.8,0.7c-0.6,0.2-1.4,0.3-2.1,0.3c-1.3,0-2.4-0.2-3.5-0.6c-1.1-0.4-2-1-2.8-1.9c-0.8-0.8-1.4-1.9-1.9-3.2c-0.4-1.3-0.7-2.8-0.7-4.6c0-1.8,0.2-3.3,0.7-4.6 C271.8,477.3,272.4,476.3,273.2,475.4z M308.2,482.9c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8c0-1.2-0.2-2.1-0.7-2.8C309.6,483.9,309,483.3,308.2,482.9z M328.6,472.2c-0.4,0.9-0.9,1.9-1.4,2.8c-0.5,1-1,1.9-1.5,2.9c-0.5,1-1.1,1.9-1.6,2.8c-0.5,0.9-1,1.8-1.5,2.5c-1.1-1.9-2.2-3.8-3.1-5.6c-1-1.8-2-3.6-2.9-5.5c-0.3,0-0.6,0.1-0.9,0.1c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6-0.1-0.9-0.1c0.2,0.3,0.5,0.8,0.9,1.5c0.4,0.7,0.9,1.4,1.4,2.3c0.5,0.8,1,1.7,1.6,2.6c0.6,0.9,1.1,1.8,1.6,2.6c0.5,0.8,1,1.6,1.4,2.3c0.4,0.7,0.7,1.2,0.9,1.6c0,1.7,0,3.4,0,4.9c0,1.6-0.1,2.9-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c0-0.4-0.1-1-0.1-1.8c0-0.7-0.1-1.5-0.1-2.4c0-0.9,0-1.7,0-2.6c0-0.9,0-1.7,0-2.5c0.3-0.7,0.7-1.4,1.2-2.2c0.5-0.8,1-1.7,1.6-2.8c0.6-1,1.3-2.2,2.1-3.4c0.8-1.3,1.7-2.7,2.7-4.2c-0.5,0.1-0.9,0.2-1.2,0.2C329.5,472.3,329.1,472.3,328.6,472.2z M343.6,482.9c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8c0-1.2-0.2-2.1-0.7-2.8C345,483.9,344.4,483.3,343.6,482.9z M360.7,472.3c-1.3,0-2.7,0-4.1,0c-1.4,0-2.8,0-4.1,0c-1.3,0-2.7-0.1-4.1-0.1c0.1,0.4,0.2,0.8,0.2,1c0,0.3-0.1,0.6-0.2,1c0.4-0.1,1-0.1,1.5-0.2c0.6,0,1.1-0.1,1.8-0.1c0.6,0,1.2-0.1,1.8-0.1c0.6,0,1.2,0,1.7,0c0.1,2.2,0.1,4.4,0.1,6.6v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-5.5c0-2.2,0-4.4,0.1-6.6c0.6,0,1.1,0,1.7,0c0.6,0,1.2,0,1.8,0.1c0.6,0,1.2,0.1,1.8,0.1c0.6,0,1.1,0.1,1.5,0.2c-0.1-0.4-0.2-0.7-0.2-1c0-0.3,0.1-0.6,0.2-1C363.4,472.2,362,472.3,360.7,472.3z M379.8,492.3c-0.5,0.1-1.1,0.2-1.8,0.2c-0.7,0.1-1.4,0.1-2.2,0.1c-0.8,0-1.6,0-2.4,0h-2.2c0-0.4,0-1,0-1.8c0-0.8,0-1.8,0-3v-3.2c0-0.3,0-0.6,0-0.8c0-0.2,0-0.4,0-0.6c0.4,0,0.9,0,1.5,0c0.6,0,1.3,0,2.1,0c0.7,0,1.5,0,2.2,0.1c0.7,0,1.4,0.1,1.9,0.2c-0.1-0.3-0.1-0.6-0.1-1c0-0.3,0-0.7,0.1-1c-0.5,0-1,0.1-1.5,0.1c-0.5,0-1.1,0.1-1.7,0.1c-0.6,0-1.3,0.1-2,0.1c-0.7,0-1.6,0-2.5,0c0-0.4,0-1,0-1.8c0-0.8,0-1.6,0-2.4c0-0.8,0-1.5,0-2.1c0-0.6,0.1-1.3,0.1-1.9c1,0,1.9,0,2.7,0c0.7,0,1.4,0.1,2.1,0.1c0.6,0,1.2,0.1,1.8,0.1c0.6,0,1.2,0.1,1.9,0.1c-0.1-0.3-0.1-0.6-0.1-1c0-0.3,0-0.6,0.1-1c-1,0-1.9,0.1-2.8,0.1c-0.9,0-1.9,0-2.8,0c-1,0-1.9,0-2.9,0c-0.9,0-1.9-0.1-2.9-0.1c0.1,1.4,0.1,2.7,0.2,4.1c0.1,1.4,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4.1c1,0,1.9-0.1,2.9-0.1h5.8c0.9,0,1.9,0,2.9,0.1c-0.1-0.2-0.1-0.5-0.1-0.8c0-0.1,0-0.3,0-0.5C379.7,492.6,379.8,492.4,379.8,492.3z M406.8,483.3c-0.2-1.8-0.4-3.7-0.6-5.6c-0.2-1.9-0.4-3.9-0.7-5.9h-0.4c-0.5,1-1.1,2-1.7,3.2c-0.6,1.1-1.2,2.3-1.9,3.4c-0.6,1.2-1.2,2.3-1.8,3.5c-0.6,1.1-1.2,2.2-1.7,3.2c-0.5,1-1,1.8-1.4,2.6c-0.4,0.8-0.7,1.3-0.9,1.7c-1.6-3-3.2-5.9-4.7-8.8c-1.5-2.8-3-5.8-4.4-8.8H386c-0.2,1.7-0.4,3.5-0.6,5.4c-0.2,1.9-0.5,3.8-0.8,5.7c-0.3,1.9-0.6,3.9-0.9,5.8c-0.3,1.9-0.6,3.7-0.9,5.5c0.3,0,0.7-0.1,1.1-0.1c0.4,0,0.8,0,1.1,0.1c0-0.9,0.1-1.9,0.2-3.3c0.1-1.3,0.2-2.7,0.4-4.2c0.1-1.5,0.3-3,0.5-4.6c0.2-1.5,0.3-3,0.5-4.3h0.1c1.4,2.8,2.8,5.6,4.2,8.2c1.4,2.7,2.7,5.4,4,8h0.3c1.3-2.9,2.6-5.7,4-8.3c1.4-2.6,2.9-5.3,4.3-8h0.1c0.3,2.8,0.6,5.5,0.9,8.1c0.2,2.7,0.5,5.4,0.7,8.2c0.3,0,0.5-0.1,0.7-0.1h1.5c0.2,0,0.5,0,0.7,0.1c-0.3-1.8-0.5-3.5-0.7-5.3 C407.2,486.9,407,485.1,406.8,483.3z M423.4,484.6c-0.5-0.7-1.1-1.3-1.9-1.7c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8 C424.2,486.3,423.9,485.3,423.4,484.6z\")\n ;\n this.text_r = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M433.1,472.1c2.2,0,3.9,1.8,3.9,3.9c0,2.2-1.8,3.9-3.9,3.9c-2.2,0-3.9-1.8-3.9-3.9 C429.2,473.8,430.9,472.1,433.1,472.1z M433.1,479.5c1.9,0,3.5-1.6,3.5-3.5s-1.5-3.5-3.5-3.5s-3.5,1.6-3.5,3.5 S431.2,479.5,433.1,479.5z M431.7,475c0-0.5,0-1.1-0.1-1.5c0.3,0,0.6,0.1,0.9,0.1c0.3,0,0.6-0.1,0.9-0.1c0.8,0,1.4,0.4,1.4,1.1c0,0.9-1,1.3-1.5,1.4c0.6,0.7,1.5,2,1.9,2.4v0.1c-0.1,0-0.3-0.1-0.4-0.1c-0.1,0-0.3,0-0.4,0.1c-0.5-0.8-1.1-1.6-1.8-2.4h-0.4v0.8c0,0.5,0,1.1,0.1,1.6c-0.1,0-0.2-0.1-0.4-0.1c-0.1,0-0.2,0-0.4,0.1c0-0.5,0.1-1,0.1-1.5V475z M432.2,475.7c0.1,0,0.3,0,0.5,0c0.7,0,1.4-0.3,1.4-1.1c0-0.6-0.4-0.9-1-0.9c-0.3,0-0.5,0-0.8,0.1c0,0.3-0.1,0.7-0.1,1V475.7z\")\n ;\n this.text_tm = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M376.1,322.1c0-0.6,0-1.2,0-1.9c-0.6,0-1.4,0-1.9,0.1c0-0.1,0-0.2,0-0.3c0-0.1,0-0.2,0-0.3c0.8,0,1.5,0,2.3,0s1.5,0,2.3,0c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3c-0.5-0.1-1.3-0.1-1.9-0.1c0,0.6,0,1.2,0,1.9v1.5c0,0.8,0,1.6,0.1,2.3c-0.2,0-0.3,0-0.4,0c-0.1,0-0.3,0-0.4,0c0-0.8,0.1-1.6,0.1-2.3V322.1zM380.5,319.7c0.8,1.7,1.7,3.3,2.6,5c0.4-0.7,1.8-3.3,2.7-5h0.1c0.3,2.3,0.5,4.3,0.7,6.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.3,0-0.4,0c-0.1-1.6-0.3-3.1-0.4-4.6h0c-0.8,1.5-1.6,3-2.4,4.6h-0.1c-0.7-1.5-1.5-3-2.3-4.6h0c-0.2,1.5-0.4,3.6-0.4,4.6c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0-0.3,0c0.3-2,0.7-4.4,0.9-6.3H380.5z\")\n ;\n\n const bbox = this.root.node().getBBox();\n const centerX = bbox.x + bbox.width / 2;\n const centerY = bbox.y + bbox.height / 2;\n const scale = Math.min(this.width(), this.height()) / Math.max(bbox.width, bbox.height);\n this.root\n .attr(\"transform\", \"translate(\" + (-centerX * scale) + \",\" + (-centerY * scale) + \")scale(\" + scale + \")\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n switch (this.animation()) {\n case \"none\":\n break;\n case \"accentInOut\":\n this.logo.attr(\"opacity\", 0);\n this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().ease(\"back\").delay(7000).duration(1500)\n .attr(\"transform\", \"translate(400, 0)\")\n ;\n this.text.transition().delay(8400).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo_accent.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n break;\n case \"accentIn\":\n this.logo.attr(\"opacity\", 0);\n this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n break;\n case \"fade_in\":\n this.logo.attr(\"opacity\", 0);\n // this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.logo_accent.attr(\"opacity\", 0);\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n /*\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n */\n this.logo_accent.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n /*\n this.logo_accent.transition().ease(\"back\").delay(7000).duration(1500)\n .attr(\"transform\", \"translate(400, 0)\")\n ;\n */\n /*\n this.text.transition().delay(8400).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo_accent.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n */\n break;\n default:\n break;\n }\n }\n}\nHPCCBadge.prototype._class += \" other_HPCCBadge\";\n\nexport interface HPCCBadge {\n animation(): \"none\" | \"accentInOut\" | \"accentIn\" | \"fade_in\";\n animation(_: \"none\" | \"accentInOut\" | \"accentIn\" | \"fade_in\"): this;\n}\n\nHPCCBadge.prototype.publish(\"animation\", \"none\", \"set\", \"Animation Style\", [\"none\", \"accentInOut\", \"accentIn\", \"fade_in\"]);\n","import { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Html.css\";\n\nexport class Html extends HTMLWidget {\n constructor() {\n super();\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n element\n .style(\"overflow-x\", this.overflowX_exists() ? this.overflowX() : \"\")\n .style(\"overflow-y\", this.overflowY_exists() ? this.overflowY() : \"\")\n ;\n\n const html = element.selectAll(\".htmlWrapper\").data(this.data().length > 0 ? this.data() : [this.html()]);\n html.enter().append(\"div\")\n .attr(\"class\", \"htmlWrapper\")\n .merge(html)\n .html(function (d) { return d; })\n ;\n html.exit().remove();\n }\n\n html: { (): string; (_: string): Html };\n html_exists: () => boolean;\n overflowX: { (): string; (_: string): Html };\n overflowX_exists: () => boolean;\n overflowY: { (): string; (_: string): Html };\n overflowY_exists: () => boolean;\n}\nHtml.prototype._class += \" other_Html\";\n\nHtml.prototype.publish(\"html\", \"\", \"string\", \"Html to render\", null, { tags: [\"Basic\"] });\nHtml.prototype.publish(\"overflowX\", null, \"set\", \"CSS overflow-x\", [\"\", \"visible\", \"hidden\", \"scroll\", \"auto\", \"initial\", \"inherit\"], { tags: [\"Basic\"], optional: true });\nHtml.prototype.publish(\"overflowY\", null, \"set\", \"CSS overflow-y\", [\"\", \"visible\", \"hidden\", \"scroll\", \"auto\", \"initial\", \"inherit\"], { tags: [\"Basic\"], optional: true });\n","import { Entity, HTMLWidget } from \"@hpcc-js/common\";\nimport { HorizontalList, VerticalList } from \"@hpcc-js/layout\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Html } from \"./Html\";\n\nimport \"../src/IconList.css\";\n\nexport class IconList extends HTMLWidget {\n protected _list;\n protected _entity_list = [];\n protected _content_list = [];\n constructor() {\n super();\n this._list = new HorizontalList()\n .orientation_default(\"horizontal\")\n .flexWrap_default(\"nowrap\")\n ;\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n element\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n d3Select(domNode.parentElement)\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n this._list.target(domNode);\n }\n update(domNode, element) {\n super.update(domNode, element);\n const listWidgets = this._list.widgets();\n this.data().forEach((row, idx) => {\n if (!listWidgets[idx]) {\n listWidgets[idx] = this.updateListProperties(new VerticalList(), idx)\n .widgets([\n this.updateEntityProperties(new Entity(), idx),\n new Html().html(this.data()[idx][this.htmlColumnIndex_exists() ? this.htmlColumnIndex() : 1])\n ]);\n } else {\n listWidgets[idx] = this.updateListProperties(listWidgets[idx], idx);\n this.updateEntityProperties(listWidgets[idx].widgets()[0], idx);\n listWidgets[idx]\n .widgets()[1]\n .html(this.data()[idx][this.htmlColumnIndex_exists() ? this.htmlColumnIndex() : 1])\n ;\n }\n });\n this._list.widgets(listWidgets.slice(0, this.data().length));\n this._list.resize().render();\n }\n updateListProperties(list, idx) {\n return list\n .disableScroll(true)\n .widgetsFlexBasis([this.iconSize() + \"px\", `calc(100% - ${this.iconSize()}px)`])\n ;\n }\n updateEntityProperties(entity, idx) {\n return entity\n .icon(this.iconColumnIndex_exists() ? this.data()[idx][this.iconColumnIndex()] : \"?\")\n .iconColor(this.iconColorColumnIndex_exists() ? this.data()[idx][this.iconColorColumnIndex()] : \"#000\")\n .iconDiameter(this.iconSize())\n .iconPaddingPercent(0)\n ;\n }\n}\nIconList.prototype._class += \" other_IconList\";\n\nexport interface IconList {\n iconSize(): number;\n iconSize(_: number): this;\n iconColumnIndex(): number;\n iconColumnIndex(_: number): this;\n iconColumnIndex_exists(): boolean;\n iconColorColumnIndex(): number;\n iconColorColumnIndex(_: number): this;\n iconColorColumnIndex_exists(): boolean;\n htmlColumnIndex(): number;\n htmlColumnIndex(_: number): this;\n htmlColumnIndex_exists(): boolean;\n}\nIconList.prototype.publish(\"iconSize\", 72, \"number\", \"Size of icon (pixels)\");\nIconList.prototype.publish(\"iconColumnIndex\", 0, \"number\", \"Index of column containing icon character\");\nIconList.prototype.publish(\"iconColorColumnIndex\", 1, \"number\", \"Index of column containing icon color\");\nIconList.prototype.publish(\"htmlColumnIndex\", 2, \"number\", \"Index of column containing html string\");\n","import { d3Event, HTMLWidget, select as d3Select } from \"@hpcc-js/common\";\n\nimport \"../src/Paginator.css\";\n\nexport class Paginator extends HTMLWidget {\n _tNumPages;\n _numList;\n paginator;\n side;\n _onSelect;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n\n this._tNumPages = 1; // np\n\n this._numList = []; // pn\n }\n\n postUpdate(domNode, element) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n this.paginator = element.append(\"ul\").attr(\"class\", \"paginator pagination pagination-sm\");\n this.side = element.append(\"div\").attr(\"class\", \"paginator pagination side\");\n\n this.side.append(\"span\")\n .classed(\"side\", true)\n .text(\"Page \")\n ;\n\n this.side.append(\"input\")\n .attr(\"type\", \"number\")\n .attr(\"class\", \"currentPageNumber\")\n .property(\"value\", 1)\n .attr(\"min\", 1)\n .on(\"change\", function () {\n context.pageNumber(this.value);\n context._onSelect(this.value);\n })\n ;\n\n this.side.append(\"span\")\n .classed(\"side total\", true)\n .text(\" of 1\")\n ;\n }\n\n update(domNode, element) {\n const context = this;\n element\n .style(\"bottom\", this.bottom() + \"px\")\n .style(\"right\", this.right() + \"px\")\n ;\n\n this._tNumPages = Math.ceil(this.numItems() / this.itemsPerPage()) || 1;\n\n if (this.pageNumber() > this._tNumPages) { this.pageNumber(1); }\n\n this._numList = [];\n if (this.numItems()) {\n this._numList.push(\"first\");\n for (let x = -this.adjacentPages(); x <= this.adjacentPages(); x++) {\n if (this.pageNumber() + x > 0 && this.pageNumber() + x <= this._tNumPages) {\n this._numList.push(this.pageNumber() + x);\n }\n }\n this._numList.push(\"last\");\n }\n\n this.side.select(\".total\").text(\" of \" + this._tNumPages);\n this.side.select(\".currentPageNumber\").property(\"value\", this.pageNumber());\n this.side.select(\".currentPageNumber\").attr(\"max\", this._tNumPages);\n\n const page = this.paginator.selectAll(\"li\").data(this._numList, function (d) { return d; });\n page\n .enter()\n .append(function (d) {\n const li = document.createElement(\"li\");\n\n if (d !== context.pageNumber()) {\n const a = document.createElement(\"a\");\n const linkText = document.createTextNode(d);\n\n a.appendChild(linkText);\n a.href = \"#\";\n li.appendChild(a);\n\n return li;\n } else {\n const span = document.createElement(\"span\");\n span.innerHTML = d;\n\n li.appendChild(span);\n\n return li;\n }\n })\n .on(\"click\", function (d, i) {\n d3Event().preventDefault();\n context.side.select(\".currentPageNumber\").property(\"value\", context.pageNumber());\n switch (d) {\n case \"first\":\n if (context.pageNumber() !== 1) {\n context.pageNumber(1);\n context._onSelect(1, \"previous\");\n }\n break;\n case \"last\":\n if (context.pageNumber() !== context._tNumPages) {\n context.pageNumber(context._tNumPages);\n context._onSelect(context._tNumPages, \"previous\");\n }\n break;\n default:\n context.pageNumber(d);\n context._onSelect(d);\n }\n })\n ;\n\n page.classed(\"active\", function (e, j) { return e === context.pageNumber(); })\n .select(\"a\")\n .text(function (d) { return d; })\n ;\n\n page.exit().remove();\n page.order();\n\n if (this.numItems() === 0) {\n d3Select(domNode).remove();\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n itemsPerPage: { (): number; (_: number): Paginator };\n itemsPerPage_exists: () => boolean;\n numItems: { (): number; (_: number): Paginator };\n numItems_exists: () => boolean;\n pageNumber: { (): number; (_: number): Paginator };\n pageNumber_exists: () => boolean;\n adjacentPages: { (): number; (_: number): Paginator };\n adjacentPages_exists: () => boolean;\n bottom: { (): number; (_: number): Paginator };\n bottom_exists: () => boolean;\n right: { (): number; (_: number): Paginator };\n right_exists: () => boolean;\n}\nPaginator.prototype._class += \" other_Paginator\";\n\nPaginator.prototype.publish(\"itemsPerPage\", 2, \"number\", \"Pagination items per page\", null, { tags: [\"Private\"] });\n\nPaginator.prototype.publish(\"numItems\", 10, \"number\", \"Pagination total number of items\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"pageNumber\", 1, \"number\", \"Pagination set or get the page number\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"adjacentPages\", 2, \"number\", \"Number of page indexes either side of current one\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"bottom\", 20, \"number\", \"Pagination bottom offset\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"right\", 20, \"number\", \"Pagination right offset\", null, { tags: [\"Private\"] });\n","import { d3Event, HTMLWidget, Platform, select as d3Select, selectAll as d3SelectAll, Utility, Widget } from \"@hpcc-js/common\";\nimport { Paginator } from \"./Paginator\";\n\nimport \"../src/Table.css\";\n\nexport class Table extends HTMLWidget {\n protected _paginator;\n protected _selectionBag;\n protected _selectionPrevClick;\n protected _paginatorTableSpacing;\n\n tableDiv;\n thead;\n table;\n fixedHead;\n fixedHeadTable;\n fixedThead;\n unfixedThead;\n tbody;\n tfoot;\n fixedCol;\n fixedColTable;\n fixedColHead;\n fixedColHeadRow;\n fixedColBody;\n fixedColFoot;\n fixedColFootRow;\n protected _prevDescending;\n protected _prevSortByFieldIndex;\n protected _hasChildWidgets;\n protected _tNumPages;\n protected _empty_col_idx_arr: any[];\n\n constructor() {\n super();\n this._tag = \"div\";\n this.columns([]);\n this._paginator = new Paginator();\n this._selectionBag = new Utility.Selection(this);\n this._selectionPrevClick = null;\n this._paginatorTableSpacing = 4;\n }\n\n size(): any;\n size(_): Widget;\n size(_?): any | Widget {\n const retVal = super.size.apply(this, arguments);\n if (arguments.length) {\n if (this.tableDiv) {\n const topMargin = this.showHeader() && this.fixedHeader() ? this.thead.property(\"offsetHeight\") : 0;\n this.tableDiv\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height - topMargin + \"px\")\n ;\n this._element\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n }\n }\n\n return retVal;\n }\n\n isHidden(colIdx) {\n if (this.pivot()) return false;\n if (this.hiddenColumns().indexOf(colIdx) !== -1) return true;\n const fields = this.fields();\n if (fields && fields[colIdx] && (fields[colIdx].type() === \"hidden\" || this._empty_col_idx_arr.indexOf(colIdx) !== -1)) {\n return true;\n }\n return false;\n }\n\n tableColumns(_?: string[]): string[] {\n const retVal = this.columns.apply(this, arguments);\n if (!arguments.length && this.pivot()) {\n return this._db.column(0);\n }\n return retVal;\n }\n\n tableData(_?) {\n const retVal = this.data.apply(this, arguments);\n if (!arguments.length && this.pivot()) {\n return this._db.columns().filter(function (col, idx) { return idx > 0; });\n }\n return retVal;\n }\n\n field(rowIdx, colIdx) {\n const noTransform = { transform: d => d };\n if (this.pivot()) {\n if (colIdx === 0) return noTransform;\n return this.fields()[rowIdx + 1];\n }\n if (rowIdx === -1) return noTransform;\n return this.fields()[colIdx];\n }\n\n calcFieldsIndex(colIdx) {\n let i = -1;\n let offset = 0;\n const colLen = this.columns().length;\n let visibleCount = 0;\n while (i < colLen && visibleCount <= colIdx) {\n i++;\n if (this.isHidden(i)) {\n offset++;\n } else {\n visibleCount++;\n }\n }\n return colIdx + offset;\n }\n\n getEmptyColumnIdxArr(columns, data) {\n const ret_arr = [];\n if (this.hideEmptyColumns()) {\n for (let col_idx = 0; col_idx < columns.length; col_idx++) {\n let column_is_empty = true;\n for (let row_idx = 0; row_idx < data.length; row_idx++) {\n if ([\"\", null, undefined].indexOf(data[row_idx][col_idx]) === -1) {\n column_is_empty = false;\n break;\n }\n }\n if (column_is_empty) {\n ret_arr.push(col_idx);\n }\n }\n }\n return ret_arr;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._placeholderElement.style(\"overflow\", \"hidden\");\n\n this.tableDiv = element.append(\"div\").attr(\"class\", \"tableDiv\");\n this.table = this.tableDiv.append(\"table\");\n this.fixedHead = element.append(\"div\").classed(\"header-wrapper\", true);\n this.fixedHeadTable = this.fixedHead.append(\"table\");\n this.fixedThead = this.fixedHeadTable.append(\"thead\").append(\"tr\");\n this.unfixedThead = this.table.append(\"thead\").append(\"tr\");\n this.tbody = this.table.append(\"tbody\");\n this.tfoot = this.table.append(\"tfoot\").append(\"tr\");\n this.fixedCol = element.append(\"div\").classed(\"rows-wrapper\", true);\n this.fixedColTable = this.fixedCol.append(\"table\");\n this.fixedColHead = this.fixedColTable.append(\"thead\");\n this.fixedColHeadRow = this.fixedColHead.append(\"tr\");\n this.fixedColBody = this.fixedColTable.append(\"tbody\");\n this.fixedColFoot = this.fixedColTable.append(\"tfoot\");\n this.fixedColFootRow = this.fixedColFoot.append(\"tr\");\n\n this.tableDiv\n .style(\"overflow\", \"auto\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const columns = context.tableColumns();\n const data = context.tableData();\n const scrollLeft = this.tableDiv.node().scrollLeft;\n this._empty_col_idx_arr = this.getEmptyColumnIdxArr(columns, data);\n\n this.element().selectAll(\"table,tbody,th,td\").style(\"width\", null);\n\n if (this.sortByFieldIndex_exists() && (this._prevSortByFieldIndex !== this.sortByFieldIndex() || this._prevDescending !== this.descending())) {\n Utility.multiSort(data, [{ idx: this.sortByFieldIndex(), reverse: this.descending() }]);\n this._prevSortByFieldIndex = this.sortByFieldIndex();\n this._prevDescending = this.descending();\n }\n\n this._hasChildWidgets = false;\n\n if (this.fixedHeader()) {\n this.thead = this.fixedThead;\n } else {\n this.thead = this.unfixedThead;\n }\n this.fixedHead.style(\"display\", this.fixedHeader() ? \"table-row\" : \"none\");\n this.unfixedThead.style(\"display\", this.fixedHeader() ? \"none\" : \"table-row\");\n\n const thSel = this.thead.selectAll(\"th\").data(this.showHeader() ? columns.filter(function (col, idx) {\n return !context.isHidden(idx) && context._empty_col_idx_arr.indexOf(idx) === -1;\n }) : []);\n const thUpdate = thSel.enter().append(\"th\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2\n .append(\"span\")\n .attr(\"class\", \"thText\")\n ;\n element2\n .append(\"span\")\n .attr(\"class\", \"thIcon\")\n ;\n })\n .on(\"click\", function (column, idx) {\n context.headerClick(column, idx);\n })\n .merge(thSel)\n .style(\"background-color\", this.theadRowBackgroundColor())\n .style(\"border-color\", this.theadCellBorderColor())\n .style(\"color\", this.theadFontColor())\n .style(\"font-size\", this.theadFontSize())\n ;\n thUpdate.select(\".thText\")\n .style(\"font-family\", this.theadFontFamily())\n .text(function (column, idx) {\n const fieldsIdx = context.calcFieldsIndex(idx);\n return context.field(-1, fieldsIdx).transform(column);\n })\n ;\n thUpdate.select(\".thIcon\")\n .text(function (column, idx) {\n if (context.descending()) {\n return context.sortByFieldIndex() === idx ? \"\\uf078\" : \"\";\n } else {\n return context.sortByFieldIndex() === idx ? \"\\uf077\" : \"\";\n }\n })\n ;\n thSel.exit()\n .remove()\n ;\n thUpdate.order();\n\n if (this.paginationLimit()) {\n this.pagination(data.length >= parseInt(this.paginationLimit()) ? true : false);\n }\n if (this.pagination()) {\n if (this._paginator.target() === null) {\n this._paginator.target(element.node());\n }\n\n const ipp = this._calcRowsPerPage(thUpdate);\n this.itemsPerPage(ipp);\n\n this._paginator.numItems(data.length);\n this._tNumPages = Math.ceil(this._paginator.numItems() / this.itemsPerPage()) || 1;\n if (this.pageNumber() > this._tNumPages || this.pageNumber() <= 0) { this.pageNumber(1); } // resets if current pagenum selected out of range\n\n this._paginator._onSelect = function (p, d) {\n context.pageNumber(p);\n context.render();\n return;\n };\n } else {\n this._paginator.numItems(0); // remove widget\n }\n\n // pageNumber starts at index 1\n const startIndex = this.pageNumber() - 1;\n const itemsOnPage = this.itemsPerPage();\n\n const start = startIndex * itemsOnPage;\n const end = startIndex * parseInt(itemsOnPage) + parseInt(itemsOnPage);\n\n let tData = null;\n\n if (this.topN()) {\n tData = data.slice(0, this.topN());\n } else if (this.pagination()) {\n tData = data.slice(start, end);\n } else {\n tData = data;\n }\n\n const totalRow: any[] = [this.totalledLabel() ? this.totalledLabel() : null];\n if (this.totalledColumns().length !== 0) {\n for (let i = 0; i < this.totalledColumns().length; i++) this.totalledColumns()[i] = +this.totalledColumns()[i];\n for (let j = 1; j < columns.length; j++) {\n let sum = 0;\n if (this.totalledColumns().indexOf(j) !== -1) {\n for (let k = 0; k < tData.length; k++) {\n sum = sum + tData[k][j];\n }\n totalRow.push(sum);\n } else {\n totalRow.push(\"\");\n }\n }\n\n const tfSel = this.tfoot.selectAll(\"td\").data(totalRow);\n tfSel.enter()\n .append(\"td\")\n .merge(tfSel)\n .style(\"background-color\", this.tfootRowBackgroundColor())\n .style(\"border-color\", this.tfootCellBorderColor())\n .style(\"color\", this.tfootFontColor())\n .style(\"font-size\", this.tfootFontSize())\n [this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d, idx) {\n return context.fields()[idx].transform(d);\n });\n tfSel.exit()\n .remove()\n ;\n }\n\n const rowsSel = this.tbody.selectAll(\"tr.tr_\" + this.id()).data(tData.map(function (d, idx) {\n // TODO - Move fix closer to data source?\n for (let i = 0; i < d.length; ++i) {\n if (d[i] === undefined) {\n d[i] = null;\n }\n }\n return {\n rowIdx: idx,\n row: d\n };\n }));\n const rowsUpdate = rowsSel.enter().append(\"tr\")\n .attr(\"class\", \"tr_\" + this.id())\n .on(\"click.selectionBag\", function (_d) {\n if (_d.row) {\n const d = _d.row;\n const i = _d.rowIdx;\n context.selectionBagClick(d, i);\n context.applyRowStyles(context.getBodyRow(i));\n context.applyFirstColRowStyles(context.getFixedRow(i));\n }\n }, true) // capture=true: event is caught on the way down the DOM before the cell click.\n .on(\"mouseover\", function (_d) {\n if (_d.row) {\n const i = _d.rowIdx;\n const fixedLeftRows = context.getFixedRow(i);\n if (!fixedLeftRows.empty()) {\n fixedLeftRows.classed(\"hover\", true);\n }\n const tbodyRows = context.getBodyRow(i);\n tbodyRows.classed(\"hover\", true);\n context.applyStyleToRows(tbodyRows);\n context.applyFirstColRowStyles(fixedLeftRows);\n }\n })\n .on(\"mouseout\", function (_d) {\n if (_d.row) {\n const i = _d.rowIdx;\n const fixedLeftRows = context.getFixedRow(i);\n fixedLeftRows.classed(\"hover\", false);\n const tbodyRows = context.getBodyRow(i);\n tbodyRows.classed(\"hover\", false);\n context.applyStyleToRows(tbodyRows);\n context.applyFirstColRowStyles(fixedLeftRows);\n }\n })\n .merge(rowsSel)\n .classed(\"selected\", function (_d) {\n const d = _d.row;\n return context._selectionBag.isSelected(context._createSelectionObject(d));\n })\n .classed(\"trId\" + this._id, true)\n ;\n rowsSel.exit()\n .remove()\n ;\n this.applyStyleToRows(rowsUpdate);\n\n const cellsSel = rowsUpdate.selectAll(\".td_\" + this.id()).data(function (_d, _trIdx) {\n return _d.row.filter(function (cell, idx) {\n return idx < columns.length && !context.isHidden(idx) && context._empty_col_idx_arr.indexOf(idx) === -1;\n }).map(function (cell, idx) {\n return {\n rowInfo: _d,\n colIdx: idx,\n cell\n };\n });\n });\n cellsSel.enter()\n .append(\"td\")\n .attr(\"class\", \"td_\" + this.id())\n .on(\"click\", function (tdContents) {\n if (tdContents.rowInfo) {\n context.click(context.rowToObj(tdContents.rowInfo.row), context.columns()[tdContents.colIdx], context._selectionBag.isSelected(context._createSelectionObject(tdContents.rowInfo.row)));\n }\n })\n .on(\"dblclick\", function (tdContents, idx) {\n if (tdContents.rowInfo) {\n context.dblclick(context.rowToObj(tdContents.rowInfo.row), context.columns()[tdContents.colIdx], context._selectionBag.isSelected(context._createSelectionObject(tdContents.rowInfo.row)));\n }\n })\n .each(function (tdContents, tdIdx) {\n const alignment = context.getColumnAlignment(tdContents.rowInfo.rowIdx, tdContents.colIdx, tdContents.cell);\n const el = d3Select(this);\n el\n .style(\"height\", null)\n .style(\"text-align\", alignment)\n .style(\"vertical-align\", context.verticalAlign())\n .classed(\"tr-\" + tdContents.rowInfo.rowIdx + \"-td-\" + tdIdx, true)\n ;\n })\n .merge(cellsSel)\n .each(function (tdContents) {\n const el = d3Select(this);\n if (tdContents.cell instanceof Widget) {\n el[context.renderHtmlDataCells() ? \"html\" : \"text\"](null);\n const widgetDiv = el.selectAll(\".div_\" + context.id()).data([tdContents.cell], function (d: any) { return d.id(); });\n widgetDiv.exit()\n .each(function (d: any) {\n d.target(null);\n })\n .remove()\n ;\n widgetDiv.enter().append(\"div\")\n .attr(\"class\", \"div_\" + context.id())\n .style(\"width\", context.minWidgetWidth() + \"px\")\n .style(\"height\", context.minWidgetHeight() + \"px\")\n .each(function (d) {\n const widgetDiv2 = d3Select(this);\n d._parentWidget = context;\n if (d._class.indexOf(\"childWidget\") < 0) {\n d._class = \"childWidget \" + d._class;\n }\n d\n .target(null)\n .target(widgetDiv2.node())\n ;\n })\n .merge(widgetDiv as any)\n .each(function (d) {\n d\n .resize()\n .lazyRender()\n ;\n context._hasChildWidgets = true;\n })\n ;\n } else {\n el.selectAll(\".div_\" + context.id()).remove();\n const fieldsIdx = context.calcFieldsIndex(tdContents.colIdx);\n el[context.renderHtmlDataCells() ? \"html\" : \"text\"](\n context.field(tdContents.rowInfo.rowIdx, fieldsIdx).transform(tdContents.cell)\n );\n }\n })\n ;\n cellsSel.exit()\n .remove()\n ;\n const tableMarginHeight = parseInt(this.thead.node().offsetHeight);\n\n if (this.pagination() && this._hasChildWidgets) {\n this.tableDiv.style(\"overflow-y\", \"auto\");\n this.table.style(\"margin-bottom\", \"50px\");\n console.warn(\"Warning: displaying another widget in the table may cause problems with pagination\");\n } else {\n this.tableDiv.style(\"overflow-y\", null);\n this.table.style(\"margin-bottom\", null);\n\n }\n this.size(this._size);\n\n let fixedColWidth = 0;\n const fixedColThSel = this.fixedColHeadRow.selectAll(\"th\").data(this.fixedColumn() && this.showHeader() ? [columns[0]] : []);\n const fixedColThUpdate = fixedColThSel.enter().append(\"th\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2\n .append(\"span\")\n .attr(\"class\", \"thText\")\n ;\n element2\n .append(\"span\")\n .attr(\"class\", \"thIcon\")\n ;\n })\n .on(\"click\", function (column, idx) {\n context.headerClick(column, idx);\n })\n .merge(fixedColThSel)\n .style(\"background-color\", this.theadRowBackgroundColor())\n .style(\"border-color\", this.theadCellBorderColor())\n .style(\"color\", this.theadFontColor())\n .style(\"font-size\", this.theadFontSize())\n ;\n fixedColThUpdate.select(\".thText\")\n .style(\"font-family\", this.theadFontFamily())\n .text(function (column) {\n return column;\n })\n ;\n fixedColThUpdate.select(\".thIcon\")\n .text(function (column, idx) {\n if (context.descending()) {\n return context.sortByFieldIndex() === idx ? \"\\uf078\" : \"\";\n } else {\n return context.sortByFieldIndex() === idx ? \"\\uf077\" : \"\";\n }\n })\n ;\n fixedColThSel.exit()\n .remove()\n ;\n\n const fixedColTrSel = this.fixedColBody.selectAll(\"tr\").data(this.fixedColumn() ? tData : []);\n const fixedColTrUpdate = fixedColTrSel.enter().append(\"tr\")\n .attr(\"class\", function () {\n return \"trId\" + context._id;\n })\n .merge(fixedColTrSel)\n .on(\"click\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"click.selectionBag\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .on(\"mouseover\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"mouseover\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .on(\"mouseout\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"mouseout\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .classed(\"selected\", function (d) {\n return context._selectionBag.isSelected(context._createSelectionObject(d));\n })\n ;\n fixedColTrSel.exit()\n .remove()\n ;\n const fixedColTdSel = fixedColTrUpdate.selectAll(\"td\").data(function (d, i) {\n return [d[0]];\n });\n const fixedColTdUpdate = fixedColTdSel.enter().append(\"td\")\n .merge(fixedColTdSel)[this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d): any {\n if (typeof (d) === \"string\") {\n return d.trim();\n } else if (typeof (d) === \"number\") {\n return d;\n }\n return \"\";\n });\n fixedColTdSel.exit()\n .remove()\n ;\n\n const fixedColFootTdSel = this.fixedColFootRow.selectAll(\"td\").data(this.fixedColumn() && this.totalledLabel() ? [this.totalledLabel()] : []);\n const fixedColFootTdUpdate = fixedColFootTdSel.enter().append(\"td\")\n .merge(fixedColFootTdSel)[this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d): any {\n if (typeof (d) === \"string\") {\n return d.trim();\n } else if (typeof (d) === \"number\") {\n return d;\n }\n return \"\";\n });\n fixedColFootTdSel.exit()\n .remove()\n ;\n\n if (this.fixedColumn() && !this.fixedSize() && fixedColFootTdUpdate.length) {\n if (this.showHeader()) {\n fixedColWidth = fixedColFootTdUpdate.property(\"offsetWidth\") > fixedColFootTdUpdate.property(\"offsetWidth\") ? fixedColFootTdUpdate.property(\"offsetWidth\") : fixedColFootTdUpdate.property(\"offsetWidth\");\n } else {\n fixedColWidth = fixedColFootTdUpdate.property(\"offsetWidth\");\n }\n this.fixedCol\n .style(\"position\", \"absolute\")\n .style(\"margin-top\", -this.tableDiv.property(\"scrollTop\") + tableMarginHeight + \"px\")\n ;\n fixedColTdUpdate\n .style(\"width\", fixedColWidth + \"px\")\n ;\n this.fixedColHead\n .style(\"position\", \"absolute\")\n .style(\"margin-top\", (this.fixedHeader() ? this.tableDiv.property(\"scrollTop\") : 0) - tableMarginHeight + \"px\")\n ;\n fixedColThUpdate\n .style(\"width\", fixedColWidth + \"px\")\n ;\n rowsUpdate.each(function (d, i) {\n const height = d3Select(this).select(\"td\").property(\"offsetHeight\");\n d3Select(fixedColTdUpdate[i][0]).style(\"height\", height + \"px\");\n });\n }\n\n this.table\n .style(\"margin-left\", -fixedColWidth + \"px\")\n ;\n this.tableDiv\n .style(\"margin-left\", fixedColWidth + \"px\")\n .style(\"width\", this.width() - fixedColWidth + \"px\")\n ;\n\n if (!rowsUpdate.empty()) this.setColumnWidths(rowsUpdate);\n\n let box;\n let newTableHeight;\n let finalWidth;\n let maxWidth;\n if (this.fixedSize()) {\n const node = d3Select(\".tableDiv > table\").node();\n if (node) {\n box = (node as any).getBoundingClientRect();\n let newTableHeight;\n let finalWidth;\n if (box.width !== 0 && box.height !== 0) {\n calcWidth();\n calcHeight();\n } else {\n if (box.height - tableMarginHeight <= context.tableDiv.property(\"offsetHeight\")) {\n calcHeight();\n } else {\n if (context.fixedHeader()) {\n newTableHeight = context.tableDiv.property(\"offsetHeight\"); // is tableDiv correct?\n newTableHeight = newTableHeight + \"px\";\n } else {\n newTableHeight = \"100%\";\n }\n }\n if (box.width - fixedColWidth < context.tableDiv.property(\"offsetWidth\")) {\n calcWidth();\n } else {\n if (context.fixedColumn()) {\n finalWidth = context.tableDiv.property(\"offsetWidth\") - fixedColWidth; // is tableDiv correct?\n finalWidth = finalWidth + \"px\";\n } else {\n finalWidth = \"100%\";\n }\n }\n }\n if (element.classed(\"childWidget\")) {\n context._placeholderElement\n .style(\"width\", finalWidth + \"px\")\n .style(\"height\", newTableHeight + \"px\")\n ;\n context.tableDiv\n .style(\"overflow\", \"hidden\")\n ;\n }\n context.size({ width: finalWidth, height: newTableHeight });\n }\n }\n\n this.setOnScrollEvents(this.tableDiv.node(), tableMarginHeight);\n\n function calcWidth() {\n const newTableWidth = box.width;\n maxWidth = context.tbody.property(\"offsetWidth\") + 1;\n finalWidth = newTableWidth > maxWidth ? maxWidth : newTableWidth;\n finalWidth = finalWidth;\n }\n\n function calcHeight() {\n newTableHeight = context.tbody.property(\"offsetHeight\") + tableMarginHeight;\n newTableHeight = newTableHeight;\n }\n\n this._paginator.render();\n setTimeout(function () {\n context._paginator\n .right((context.hasVScroll(element) ? Platform.getScrollbarWidth() : 0) + context._paginatorTableSpacing)\n .bottom((context.hasHScroll(element) ? Platform.getScrollbarWidth() : 0) + context._paginatorTableSpacing)\n .render(function () {\n context.tableDiv.node().scrollLeft = scrollLeft;\n })\n ;\n }, 0);\n }\n\n exit(domNode, element) {\n this._paginator.target(null);\n super.exit(domNode, element);\n }\n\n setColumnWidths(rows) {\n const context = this;\n const firstRow = rows.filter(function (d, i) { return i === 0; });\n\n let tds = d3Select(null);\n firstRow.each(function (d) {\n tds = d3SelectAll(this.childNodes);\n });\n\n const tableMarginHeight = this.fixedHeader() ? this.thead.property(\"offsetHeight\") : 0;\n let totalWidth = 1;\n const tdWidths = {};\n\n tds.each(function (d, i) {\n tdWidths[i] = (this as any).offsetWidth;\n });\n\n const th = this.thead.selectAll(\"th\");\n th.each(function (d, i) {\n const thwidth = this.offsetWidth;\n const tdwidth = tds.empty() ? 0 : tdWidths[i];\n const usewidth = thwidth >= tdwidth ? thwidth : tdwidth;\n this.style.width = usewidth + \"px\";\n tds\n .filter((_d, idx) => idx === 0)\n .each(function () {\n d3Select(this).style(\"width\", usewidth + \"px\");\n })\n ;\n totalWidth += usewidth;\n });\n this.thead\n .style(\"position\", this.fixedHeader() ? \"absolute\" : \"relative\")\n .style(\"width\", totalWidth + \"px\")\n .style(\"margin-top\", \"0px\")\n ;\n this.table\n .style(\"width\", totalWidth + \"px\")\n ;\n this.tableDiv\n .style(\"margin-top\", (context.fixedHeader() ? tableMarginHeight : 0) + \"px\")\n ;\n this.tbody\n .style(\"width\", totalWidth + \"px\")\n ;\n }\n\n getBodyRow(i) {\n return this.table.selectAll(\"tbody tr.trId\" + this._id)\n .filter(function (d, idx) {\n return idx === i;\n })\n ;\n }\n\n getFixedRow(i) {\n return this._element.selectAll(\".rows-wrapper tbody tr\")\n .filter(function (d, idx) {\n return idx === i;\n })\n ;\n }\n\n setOnScrollEvents(scrollNode, margHeight) {\n const context = this;\n scrollNode.onscroll = function (e) {\n const topDelta = e.target.scrollTop;\n const leftDelta = e.target.scrollLeft;\n if (context.fixedHeader()) {\n context.thead\n .style(\"margin-left\", -leftDelta + \"px\")\n ;\n }\n if (context.fixedColumn()) {\n context.fixedCol\n .style(\"margin-top\", -topDelta + margHeight + \"px\")\n ;\n if (context.fixedHeader()) {\n context.fixedColHead\n .style(\"margin-top\", topDelta - margHeight + \"px\")\n ;\n }\n }\n };\n }\n\n _generateTempRow() {\n const trow = this.tbody.append(\"tr\");\n trow.append(\"td\").text(\"QQQ\");\n return trow;\n }\n\n _createSelectionObject(d) {\n const context = this;\n return {\n _id: d,\n element: () => context.tbody ? context.tbody.selectAll(\"tr\").filter(function (d2) { return d2 === d; }) : d3Select(null)\n };\n }\n\n _calcRowsPerPage(th) {\n if (this._paginator.numItems() === 0) { // only run on first render\n this._paginator.numItems(1);\n this.itemsPerPage(1);\n }\n this._paginator.render();\n\n const thHeight = this.thead.selectAll(\"th\").node() ? this.thead.selectAll(\"th\").node().clientHeight : 0;\n const tfootHeight = this.tfoot.selectAll(\"td\").node() ? this.tfoot.selectAll(\"td\").node().clientHeight : 0;\n const tmpRow = this._generateTempRow();\n const tcellHeight = tmpRow.node().clientHeight;\n tmpRow.remove();\n const paginatorHeight = this.calcHeight(this._paginator.element());\n let ipp = Math.floor((this.height() - thHeight - tfootHeight - paginatorHeight - (this.table.style(\"width\") >= this.table.style(\"width\") ? Platform.getScrollbarWidth() : 0) - this._paginatorTableSpacing * 2) / tcellHeight) || 1;\n if (this.totalledColumns().length !== 0) {\n ipp -= 1;\n }\n return ipp;\n }\n\n sort(idx) {\n if (this.sortByFieldIndex() !== idx) {\n this.descending(false);\n } else {\n this.descending(!this.descending());\n }\n this.sortByFieldIndex(idx);\n\n return this;\n }\n\n selection(_) {\n if (!arguments.length) return this._selectionBag.get().map(function (d) { return d._id; });\n this._selectionBag.set(_.map(function (row) {\n return this._createSelectionObject(row);\n }, this));\n return this;\n }\n\n selectionBagClick(d, i) {\n if (this.multiSelect() && d3Event().shiftKey && this._selectionPrevClick) {\n let inRange = false;\n const rows = [];\n const selection = this.tableData().filter(function (row, i2) {\n let lastInRangeRow = false;\n if (row === d || row === this._selectionPrevClick) {\n if (inRange) {\n lastInRangeRow = true;\n }\n inRange = !inRange;\n rows.push(i2);\n }\n return inRange || lastInRangeRow;\n }, this);\n this.selection(selection);\n } else if (this.multiSelect()) {\n this._selectionBag.click(this._createSelectionObject(d), d3Event);\n this._selectionPrevClick = d;\n } else {\n const selObj = this._createSelectionObject(d);\n this._selectionBag.click(selObj, { ctrlKey: this._selectionBag.isSelected(selObj) });\n this._selectionPrevClick = d;\n }\n this.render();\n }\n\n applyHoverRowStyles(row) {\n const context = this;\n row\n .style(\"color\", context.tbodyHoverRowFontColor())\n .style(\"background-color\", context.tbodyHoverRowBackgroundColor())\n ;\n }\n applySelectedRowStyles(row) {\n const context = this;\n row\n .style(\"color\", context.tbodySelectedRowFontColor())\n .style(\"background-color\", context.tbodySelectedRowBackgroundColor())\n ;\n }\n applyRowStyles(row, isFirstCol: boolean = false) {\n const dataRow = row.datum().row;\n row\n .style(\"color\", isFirstCol ? this.tbodyFirstColFontColor() : this.tbodyFontColor())\n .style(\"background-color\", isFirstCol ? this.tbodyFirstColBackgroundColor() : this.tableZebraColor_exists() && this.tableData().indexOf(dataRow) % 2 ? this.tbodyRowBackgroundColor() : this.tableZebraColor())\n ;\n }\n applyFirstColRowStyles(rows) {\n this.applyStyleToRows(rows, true);\n }\n applyStyleToRows(rows, isFirstCol: boolean = false) {\n isFirstCol = typeof isFirstCol !== \"undefined\" ? isFirstCol : false;\n const context = this;\n rows.each(function () {\n const tr = d3Select(this);\n if (tr.classed(\"hover\")) {\n context.applyHoverRowStyles(tr);\n } else if (tr.classed(\"selected\")) {\n context.applySelectedRowStyles(tr);\n } else {\n context.applyRowStyles(tr, isFirstCol);\n }\n })\n ;\n }\n\n getColumnAlignment(rowIdx, colIdx, cell) {\n const fieldsIdx = this.calcFieldsIndex(colIdx);\n const field = this.field(rowIdx, fieldsIdx);\n switch ((field as any).__prop_type) {\n case \"string\":\n return this.stringAlign();\n case \"number\":\n return this.numberAlign();\n case \"\":\n case undefined:\n switch (typeof cell) {\n case \"string\":\n return this.stringAlign();\n case \"number\":\n return this.numberAlign();\n }\n }\n return null;\n }\n\n serializeState() {\n return {\n selection: this._selectionBag.get().map(function (d) {\n return d._id;\n }),\n data: this.data()\n };\n }\n\n deserializeState(state) {\n if (state) {\n if (state.selection) {\n const context = this;\n this._selectionBag.set(state.selection.map(function (d) {\n return context._createSelectionObject(d);\n }));\n }\n if (state.data) {\n this.data(state.data);\n }\n }\n return this;\n }\n\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n\n headerClick(column, idx) {\n this\n .sort(idx)\n .render()\n ;\n }\n renderHtmlDataCells: { (): boolean; (_: boolean): Table; };\n pagination: { (): boolean; (_: boolean): Table; };\n paginationLimit: { (): any; (_: any): Table; };\n itemsPerPage: { (): any; (_: any): Table; };\n pageNumber: { (): number; (_: number): Table; };\n adjacentPages: { (): number; (_: number): Table; };\n topN: { (): number; (_: number): Table; };\n pivot: { (): boolean; (_: boolean): Table; };\n showHeader: { (): boolean; (_: boolean): Table; };\n fixedHeader: { (): boolean; (_: boolean): Table; };\n fixedColumn: { (): boolean; (_: boolean): Table; };\n multiSelect: { (): boolean; (_: boolean): Table; };\n\n fixedSize: { (): boolean; (_: boolean): Table; };\n\n hideEmptyColumns: { (): boolean; (_: boolean): Table; };\n\n theadFontSize: { (): string; (_: string): Table; };\n tbodyFontSize: { (): string; (_: string): Table; };\n tfootFontSize: { (): string; (_: string): Table; };\n theadFontColor: { (): string; (_: string): Table; };\n tbodyFontColor: { (): string; (_: string): Table; };\n tfootFontColor: { (): string; (_: string): Table; };\n theadFontFamily: { (): string; (_: string): Table; };\n tbodyFontFamily: { (): string; (_: string): Table; };\n tfootFontFamily: { (): string; (_: string): Table; };\n\n theadCellBorderColor: { (): string; (_: string): Table; };\n tfootCellBorderColor: { (): string; (_: string): Table; };\n theadRowBackgroundColor: { (): string; (_: string): Table; };\n tfootRowBackgroundColor: { (): string; (_: string): Table; };\n\n tbodyCellBorderColor: { (): string; (_: string): Table; };\n\n tbodyRowBackgroundColor: { (): string; (_: string): Table; };\n tbodyFirstColFontColor: { (): string; (_: string): Table; };\n tbodyFirstColBackgroundColor: { (): string; (_: string): Table; };\n\n tbodyHoverRowFontColor: { (): string; (_: string): Table; };\n tbodyHoverRowBackgroundColor: { (): string; (_: string): Table; };\n\n tbodySelectedRowFontColor: { (): string; (_: string): Table; };\n tbodySelectedRowBackgroundColor: { (): string; (_: string): Table; };\n tableZebraColor: { (): string; (_: string): Table; };\n tableZebraColor_exists: () => boolean;\n totalledColumns: { (): any[]; (_: any[]): Table; };\n totalledLabel: { (): string; (_: string): Table; };\n hiddenColumns: { (): any[]; (_: any[]): Table; };\n\n stringAlign: { (): string; (_: string): Table; };\n numberAlign: { (): string; (_: string): Table; };\n verticalAlign: { (): string; (_: string): Table; };\n\n minWidgetWidth: { (): number; (_: number): Table; };\n minWidgetHeight: { (): number; (_: number): Table; };\n\n sortByFieldIndex: { (): number; (_: number): Table; };\n sortByFieldIndex_exists: () => boolean;\n descending: { (): boolean; (_: boolean): Table; };\n}\nTable.prototype._class += \" other_Table\";\n\nTable.prototype.publish(\"renderHtmlDataCells\", false, \"boolean\", \"enable or disable HTML within cells\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"pagination\", true, \"boolean\", \"Enable or disable pagination\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"paginationLimit\", null, \"number\", \"Maximum number of rows allowed before pagination defaults to on\", null, { tags: [\"Private\"] });\nTable.prototype.publishProxy(\"itemsPerPage\", \"_paginator\");\nTable.prototype.publishProxy(\"pageNumber\", \"_paginator\", \"pageNumber\", 1);\nTable.prototype.publishProxy(\"adjacentPages\", \"_paginator\");\nTable.prototype.publish(\"topN\", null, \"number\", \"Total number or rows of data to be displayed in the table\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"pivot\", false, \"boolean\", \"Pivot Table\");\nTable.prototype.publish(\"showHeader\", true, \"boolean\", \"Show or hide the table header\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"fixedHeader\", true, \"boolean\", \"Enable or disable fixed table header\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"fixedColumn\", false, \"boolean\", \"Enable or disable fixed first column\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\", null, { tags: [\"Basic\"] });\n\nTable.prototype.publish(\"fixedSize\", false, \"boolean\", \"Fix Size to Min Width/Height\");\n\nTable.prototype.publish(\"hideEmptyColumns\", false, \"boolean\", \"Hide columns with all empty cells\");\n\nTable.prototype.publish(\"theadFontSize\", null, \"string\", \"Table head font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontSize\", null, \"string\", \"Table body font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontSize\", null, \"string\", \"Table body font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadFontColor\", null, \"html-color\", \"Table head font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontColor\", null, \"html-color\", \"Table body font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontColor\", null, \"html-color\", \"Table body font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadFontFamily\", null, \"string\", \"Table head font family\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontFamily\", null, \"string\", \"Table body font family\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontFamily\", null, \"string\", \"Table body font family\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"theadCellBorderColor\", null, \"html-color\", \"Table head cell border color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootCellBorderColor\", null, \"html-color\", \"Table head cell border color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadRowBackgroundColor\", null, \"html-color\", \"Table head row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootRowBackgroundColor\", null, \"html-color\", \"Table head row color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyCellBorderColor\", null, \"html-color\", \"Table body cell border color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyRowBackgroundColor\", null, \"html-color\", \"Table body row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFirstColFontColor\", null, \"html-color\", \"Table body first column font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFirstColBackgroundColor\", null, \"html-color\", \"Table body first column background color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyHoverRowFontColor\", null, \"html-color\", \"Table body hover row font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyHoverRowBackgroundColor\", null, \"html-color\", \"Table body hover row background color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodySelectedRowFontColor\", null, \"html-color\", \"Table body selected row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodySelectedRowBackgroundColor\", null, \"html-color\", \"Table body selected row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tableZebraColor\", null, \"html-color\", \"Table zebra row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"totalledColumns\", [], \"array\", \"Array of indices of the columns to be totalled\", null, { tags: [\"Basic\"], optional: true, disable: (w: any) => w.pivot() });\nTable.prototype.publish(\"totalledLabel\", null, \"string\", \"Adds a label to the first column of the 'Totalled' row\", null, { tags: [\"Basic\"], optional: true, disable: (w: any) => w.pivot() });\nTable.prototype.publish(\"hiddenColumns\", [], \"array\", \"Array of indices of the columns to be hidden\", null, { tags: [\"Basic\"], optional: true, disable: (w) => w.pivot() });\n\nTable.prototype.publish(\"stringAlign\", \"left\", \"set\", \"Cell alignment for strings\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"numberAlign\", \"right\", \"set\", \"Cell alignment for numbers\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"verticalAlign\", null, \"set\", \"Cell vertical alignment\", [null, \"middle\", \"top\", \"bottom\"], { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"minWidgetWidth\", 320, \"number\", \"Minimum width of a child widget\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"minWidgetHeight\", 240, \"number\", \"Minimum height of a child widget\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"sortByFieldIndex\", null, \"number\", \"Index for the field/column to sort the data\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"descending\", false, \"boolean\", \"Direction for sorting the data: ascending (true) or descending (false)\", null, { tags: [\"Basic\"], optional: true });\n","import { Palette, Platform } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Table } from \"./Table\";\n\nimport \"../src/Legend.css\";\n\nfunction _htmlColorBlock(hexColor) {\n return \"<div class=\\\"colorBlock\\\" style=\\\"background-color:\" + hexColor + \";\\\"></div>\";\n}\n\nexport class Legend extends Table {\n _targetWidget;\n _targetWidgetMonitor;\n\n constructor() {\n super();\n\n this.showHeader(false);\n this.pagination(false);\n }\n\n isRainbow() {\n const widget = this.getWidget();\n return widget && widget._palette && widget._palette.type() === \"rainbow\";\n }\n\n targetWidget(): any;\n targetWidget(_: any): this;\n targetWidget(_?: any): any | this {\n if (!arguments.length) return this._targetWidget;\n this._targetWidget = _;\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n const context = this;\n this._targetWidgetMonitor = this._targetWidget.monitor(function (key, newProp, oldProp, source) {\n switch (key) {\n case \"chart\":\n case \"columns\":\n case \"data\":\n case \"paletteID\":\n context.lazyRender();\n break;\n }\n });\n return this;\n }\n\n getWidget() {\n if (this._targetWidget) {\n switch (this._targetWidget.classID()) {\n case \"chart_MultiChart\":\n return this._targetWidget.chart();\n }\n }\n return this._targetWidget;\n }\n\n getPalette() {\n const widget = this.getWidget();\n if (widget && widget._palette) {\n switch (widget._palette.type()) {\n case \"ordinal\":\n return Palette.ordinal(widget._palette.id());\n case \"rainbow\":\n return Palette.rainbow(widget._palette.id());\n }\n }\n return Palette.ordinal(\"default\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode).style(\"overflow-y\", \"auto\");\n\n this.renderHtmlDataCells(true);\n this.fixedHeader(false);\n this.fixedSize(true);\n element.classed(\"other_Legend\", true);\n }\n\n update(domNode, element) {\n const colArr = [\"Key\", \"Label\"];\n let dataArr = [];\n if (this._targetWidget) {\n const _palette = this.getPalette();\n switch (_palette.type()) {\n case \"ordinal\":\n const oPalette = _palette as Palette.OrdinalPaletteFunc;\n switch (this.dataFamily()) {\n case \"2D\":\n dataArr = this._targetWidget.data().map(function (n) {\n return [_htmlColorBlock(oPalette(n[0])), n[0]];\n }, this);\n break;\n case \"ND\":\n const widgetColumns = this._targetWidget.columns();\n dataArr = widgetColumns.filter(function (n, i) { return i > 0; }).map(function (n) {\n return [_htmlColorBlock(oPalette(n)), n];\n }, this);\n break;\n }\n break;\n case \"rainbow\":\n const rPalette = _palette as Palette.RainbowPaletteFunc;\n const format = d3Format(this.rainbowFormat());\n const widget = this.getWidget();\n const steps = this.rainbowBins();\n const weightMin = widget._dataMinWeight;\n const weightMax = widget._dataMaxWeight;\n const stepWeightDiff = (weightMax - weightMin) / (steps - 1);\n dataArr.push([_htmlColorBlock(rPalette(weightMin, weightMin, weightMax)), format(weightMin)]);\n for (let x = 1; x < steps - 1; ++x) {\n const mid = stepWeightDiff * x;\n dataArr.push([_htmlColorBlock(rPalette(mid, weightMin, weightMax)), format(Math.floor(mid))]);\n }\n dataArr.push([_htmlColorBlock(rPalette(weightMax, weightMin, weightMax)), format(weightMax)]);\n break;\n }\n }\n this.columns(colArr);\n this.data(dataArr);\n super.update(domNode, element);\n\n element.classed(\"horiz-legend\", this.orientation() === \"horizontal\");\n\n const table = element.select(\".tableDiv > table\");\n const tableRect = table.node().getBoundingClientRect();\n const elementRect = this._placeholderElement.node().getBoundingClientRect();\n\n element.select(\".tableDiv\").style(\"overflow\", \"visible\");\n\n const top = elementRect.height / 2 - tableRect.height / 2;\n const left = elementRect.width / 2 - tableRect.width / 2;\n table\n .style(\"position\", \"absolute\")\n .style(\"top\", top + \"px\")\n .style(\"left\", left + \"px\")\n ;\n\n const startIndex = this.pageNumber() - 1;\n const itemsOnPage = this.itemsPerPage();\n\n const start = startIndex * itemsOnPage;\n const end = startIndex * parseInt(itemsOnPage) + parseInt(itemsOnPage);\n\n let tData = null;\n if (this.pagination()) {\n tData = this.data().slice(start, end);\n } else {\n tData = this.data();\n }\n\n const rows = this.tbody.selectAll(\"tr\").data(tData);\n const context = this;\n rows\n .on(\"click\", function (d, i) {\n context.onClick(d, i);\n })\n .on(\"dblclick\", function (d, i) {\n context.onDblClick(d, i);\n })\n .on(\"mouseover\", function (d, i) {\n context.onMouseOver(d, i);\n })\n ;\n }\n\n exit(domNode, element) {\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n super.exit(domNode, element);\n }\n\n onClick(rowData, rowIdx) {\n }\n\n onDblClick(rowData, rowIdx) {\n }\n\n onMouseOver(rowData, rowIdx) {\n }\n\n dataFamily: { (): string; (_: string): Legend };\n dataFamily_exists: () => boolean;\n orientation: { (): string; (_: string): Legend };\n orientation_exists: () => boolean;\n rainbowFormat: { (): string; (_: string): Legend };\n rainbowFormat_exists: () => boolean;\n rainbowBins: { (): number; (_: number): Legend };\n rainbowBins_exists: () => boolean;\n}\nLegend.prototype._class += \" other_Legend\";\n\nLegend.prototype.publish(\"dataFamily\", \"ND\", \"set\", \"Type of data\", [\"1D\", \"2D\", \"ND\", \"map\", \"any\", \"other\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"orientation\", \"vertical\", \"set\", \"Orientation of Legend rows\", [\"vertical\", \"horizontal\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"rainbowFormat\", \",\", \"string\", \"Rainbow number formatting\", null, { tags: [\"Private\"], optional: true, disable: w => !w.isRainbow() });\nLegend.prototype.publish(\"rainbowBins\", 8, \"number\", \"Number of rainbow bins\", null, { tags: [\"Private\"], disable: w => !w.isRainbow() });\n\nconst origGetBBox = Table.prototype.getBBox;\nLegend.prototype.getBBox = function (refresh, round) {\n const retVal = origGetBBox.apply(this, arguments);\n const table = this.element().select(\".tableDiv > table\");\n if (!table.empty()) {\n const tableRect = table.node().getBoundingClientRect();\n const width = tableRect.width + 8 + (this.hasVScroll(this._placeholderElement) ? Platform.getScrollbarWidth() : 0);\n const height = tableRect.height + 8 + (this.hasHScroll(this._placeholderElement) ? Platform.getScrollbarWidth() : 0);\n return {\n x: retVal.x,\n y: retVal.y,\n width: (round ? Math.round(width) : width) * this._scale,\n height: (round ? Math.round(height) : height) * this._scale\n };\n }\n return retVal;\n};\n","import { SVGWidget } from \"@hpcc-js/common\";\n\nimport \"../src/MorphText.css\";\n\nexport class MorphText extends SVGWidget {\n _fontWidth;\n _textElement;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n if (!this.fontSize()) {\n const style = window.getComputedStyle(domNode, null);\n this.fontSize(parseInt(style.fontSize));\n }\n this._fontWidth = this.fontSize() * 32 / 48;\n this._textElement = element.append(\"g\")\n ;\n }\n\n dateTime() {\n const d = new Date();\n const seconds = d.getSeconds().toString().length === 1 ? \"0\" + d.getSeconds() : d.getSeconds();\n const minutes = d.getMinutes().toString().length === 1 ? \"0\" + d.getMinutes() : d.getMinutes();\n const hours = d.getHours().toString().length === 1 ? \"0\" + d.getHours() : d.getHours();\n const ampm = d.getHours() >= 12 ? \"pm\" : \"am\";\n const months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n const days = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n return days[d.getDay()] + \" \" + months[d.getMonth()] + \" \" + d.getDate() + \" \" + d.getFullYear() + \" \" + hours + \":\" + minutes + \":\" + seconds + ampm;\n }\n\n update(domNode, element) {\n const context = this;\n const text = this._textElement.selectAll(\"text\")\n .data(this.data(), function (d) { return d.id; })\n ;\n text\n .attr(\"class\", \"update\")\n ;\n this.transition.apply(text)\n .attr(\"x\", function (d, i) { return (-context.data().length / 2 + i) * context._fontWidth + context._fontWidth / 2; })\n ;\n\n const newText = text.enter().append(\"text\")\n .attr(\"class\", \"enter\")\n .attr(\"font-size\", this.fontSize())\n .attr(\"dy\", \".35em\")\n .attr(\"y\", (this.reverse() ? +1 : -1) * this._fontWidth * 2)\n .attr(\"x\", function (d, i) { return (-context.data().length / 2 + i) * context._fontWidth + context._fontWidth / 2; })\n .style(\"fill-opacity\", 1e-6)\n .style(\"text-anchor\", this.anchor())\n .text(function (d) { return d.text; })\n ;\n this.transition.apply(newText)\n .attr(\"y\", 0)\n .style(\"fill-opacity\", 1)\n ;\n\n text.exit()\n .attr(\"class\", \"exit\")\n ;\n this.transition.apply(text.exit())\n .attr(\"y\", (this.reverse() ? -1 : +1) * this._fontWidth * 2)\n .style(\"fill-opacity\", 1e-6)\n .remove()\n ;\n }\n anchor: { (): string; (_: string): MorphText };\n anchor_exists: () => boolean;\n fontSize: { (): number; (_: number): MorphText };\n fontSize_exists: () => boolean;\n reverse: { (): boolean; (_: boolean): MorphText };\n reverse_exists: () => boolean;\n text: (_?: string) => MorphText | this;\n text_exists: () => boolean;\n}\nMorphText.prototype._class += \" other_MorphText\";\n\nMorphText.prototype.publish(\"anchor\", \"middle\", \"set\", \"Sets anchor point\", [\"middle\"], { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"fontSize\", 14, \"number\", \"Sets fontsize\", null, { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"reverse\", false, \"boolean\", \"Reverse Animation\", null, { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"text\", \"\", \"string\", \"Sets text/data of widget\", null, { tags: [\"Basic\"] });\n\nconst _origText = MorphText.prototype.text;\nMorphText.prototype.text = function (_) {\n const retVal = _origText.apply(this, arguments);\n if (arguments.length) {\n const usedChars = {};\n const chars = _.split(\"\");\n this.data(chars.map(function (d) {\n const id = \"_\" + d;\n if (usedChars[id] === undefined) {\n usedChars[id] = 0;\n }\n usedChars[id]++;\n return { text: d, id: d.charCodeAt(0) + (1024 * usedChars[id]) };\n }));\n }\n return retVal;\n};\n","import { Table } from \"./Table\";\n\nexport class NestedTable extends Table {\n constructor() {\n super();\n this.minWidgetHeight(240);\n this.minWidgetWidth(360);\n }\n}\nNestedTable.prototype._class += \" other_NestedTable\";\n\nconst origColumns = NestedTable.prototype.columns;\nNestedTable.prototype.columns = function (_?) {\n if (arguments.length) {\n this._columns = _;\n return origColumns.call(this, _.map(function (col) {\n if (typeof col === \"object\") {\n return col.label;\n }\n return col;\n }));\n }\n return origColumns.apply(this, arguments);\n};\n\nconst origData = NestedTable.prototype.data;\nNestedTable.prototype.data = function (_?: any): NestedTable | any {\n if (arguments.length) {\n const context = this;\n return origData.call(this, _.map(function (row) {\n return row.map(function (cell, idx) {\n if (cell instanceof Array) {\n let columns = [];\n if (typeof context._columns[idx] === \"object\" && context._columns[idx].columns) {\n columns = context._columns[idx].columns;\n } else {\n for (let i = 0; i < cell.length; ++i) {\n columns.push(context._columns[idx] + \".\" + i);\n }\n }\n return new Table()\n .columns(columns)\n .data(cell)\n ;\n }\n return cell;\n });\n }));\n }\n return origData.apply(this, arguments);\n};\n","import { d3Event, PropertyExt, select as d3Select, selectAll as d3SelectAll, SVGWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Opportunity.css\";\n\nexport class Column extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.headerLabel();\n }\n}\nColumn.prototype._class += \" other_Opportunity.Column\";\n\nexport interface Column {\n headerLabel(): string;\n headerLabel(_: string): this;\n}\nColumn.prototype.publish(\"headerLabel\", null, \"string\", \"Header value of a table\", function (this: Column) { return this._owner ? this._owner.columns() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class MouseHoverColumn extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.hoverValue() && !!this.hoverList();\n }\n}\nMouseHoverColumn.prototype._class += \" other_Opportunity.MouseHoverColumn\";\n\nexport interface MouseHoverColumn {\n hoverValue(): string;\n hoverValue(_: string): this;\n hoverList(): string;\n hoverList(_: string): this;\n}\nMouseHoverColumn.prototype.publish(\"hoverValue\", null, \"string\", \"Hover value of a table\", function () { return this._owner ? this._owner.columns() : []; }, { tags: [\"Basic\"], optional: true });\nMouseHoverColumn.prototype.publish(\"hoverList\", null, \"set\", \"Hover value of a table\", function () { return this._owner ? this._owner.getIds() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class ColumnDropdown extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.columnIndex() && !!this.ColumnDropdownList();\n }\n}\nColumnDropdown.prototype._class += \" other_Opportunity.ColumnDropdown\";\n\nexport interface ColumnDropdown {\n columnIndex(): number;\n columnIndex(_: number): this;\n ColumnDropdownList(): string;\n ColumnDropdownList(_: string): this;\n}\nColumnDropdown.prototype.publish(\"columnIndex\", null, \"number\", \"Column index for display context data based on column dropdown list selction\", {}, { tags: [\"Basic\", \"Shared\"] });\nColumnDropdown.prototype.publish(\"ColumnDropdownList\", null, \"set\", \"column value of a table\", function () { return this._owner ? this._owner.getIds() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class Opportunity extends SVGWidget {\n groupCount;\n svg;\n tooltipdiv;\n Column;\n MouseHoverColumn;\n ColumnDropdown;\n\n constructor() {\n super();\n this._drawStartPos = \"origin\";\n this.groupCount = 7;\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n const paddingTop = 30;\n const nodeRectHeight = 14;\n const verticalPadding = 10;\n const h = (this.data().length + 1) * (nodeRectHeight + verticalPadding + 1) + paddingTop;\n this.svg = element.append(\"g\")\n .attr(\"width\", ((this.groupCount * 100) + 1))\n .attr(\"height\", h);\n this.svg.append(\"defs\").append(\"marker\")\n .classed(\"arrowhead\", true)\n .attr(\"id\", \"end-arrow\")\n .attr(\"viewBox\", \"0 -5 10 10\")\n .attr(\"refX\", 6)\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 8)\n .attr(\"orient\", \"auto\")\n .append(\"svg:path\")\n .attr(\"d\", \"M0,-5L10,0L0,5\")\n .attr(\"fill\", \"rgb(100,100,100)\");\n this.tooltipdiv = d3Select(\"body\").append(\"div\")\n .attr(\"class\", \"other_Opportunity-tooltip tooltip\")\n .style(\"opacity\", 0);\n }\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const data = this.data();\n const dropDownOption = this.opportunityId();\n data.sort(function (a, b) {\n if (a.cur_group > b.cur_group) return 1;\n else if (a.cur_group < b.cur_group) return -1;\n else return 0;\n });\n const groups = [];\n for (let i = 1; i <= context.groupCount; i++) {\n groups.push(i);\n }\n const paddingTop = 30;\n const nodeRectHeight = 14;\n const verticalPadding = 10;\n const h = (data.length + 1) * (nodeRectHeight + verticalPadding + 1) + paddingTop;\n const w = this.width();\n const nodeRectWidthPadding = 30;\n const nodeRectWidth = ((w / context.groupCount) - nodeRectWidthPadding);\n // Groups ---\n const group = this.svg.selectAll(\".group\").data(groups);\n group.enter().append(\"rect\")\n .attr(\"class\", \"group\");\n group\n .attr(\"x\", function (d, i) {\n return (i * w / context.groupCount) + 1;\n })\n .attr(\"y\", paddingTop)\n .attr(\"width\", w / this.groupCount)\n .attr(\"height\", h - paddingTop);\n group.exit().remove();\n // Group Headings ---\n const groupHeadings = this.svg.selectAll(\".group_headings\").data(groups);\n groupHeadings.enter().append(\"text\")\n .attr(\"class\", \"group_headings\")\n .attr(\"y\", 20);\n groupHeadings\n .attr(\"x\", function (d, i) {\n return (i * w / context.groupCount) + ((w / context.groupCount) / context.groupCount);\n })\n .text(function (d, i) {\n if (context.headerLabels().length > 0) {\n if (context.headerLabels()[i] && (context.headerLabels()[i]).headerLabel()) {\n return (context.headerLabels()[i]).headerLabel();\n }\n }\n return \"\";\n });\n groupHeadings.exit().remove();\n if (this.previousGroup() === \"prev_group\" && this.currentGroup() === \"cur_group\") {\n // Node Date Change ---\n const node_date_change = this.svg.selectAll(\".node_date_change\").data(data);\n node_date_change.enter().append(\"g\")\n .attr(\"class\", \"node_date_change update\")\n .on(\"mouseover\", function (d) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let htmlInput = \"<span style='font-weight:bolder'>\" + \"Close Date Change \" + \"</span>\" + \"<br/>\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n htmlInput = htmlInput + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n let prevDate = d.prevdate + \"\";\n prevDate = prevDate.replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/g, \"$3-$2-$1\");\n let fromDate = d.curdate + \"\";\n fromDate = fromDate.replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/g, \"$3-$2-$1\");\n htmlInput = htmlInput + \"<span style='font-weight:bold'>\" + \"From: \" + \"</span>\" + prevDate + \"<br/>\" + \"<span style='font-weight:bold'>\" + \"To: \" + \"</span>\" + fromDate + \"<br/>\";\n const event = d3Event();\n context.tooltipdiv.html(htmlInput)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 50) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_date_change_rect\")\n .attr(\"width\", 5)\n .attr(\"height\", nodeRectHeight)\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n });\n node_date_change\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((9 * w / context.groupCount) + (nodeRectWidthPadding) - 80) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 12 + paddingTop) + \")\";\n });\n node_date_change.exit().remove();\n // Node Prev Group ---\n const node_prev_group = this.svg.selectAll(\".node_prev_group\").data(data);\n node_prev_group.enter().append(\"g\")\n .attr(\"class\", \"node_prev_group\")\n .on(\"mouseover\", function (d, i) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let tooltipHtml = \"\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n tooltipHtml = tooltipHtml + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n const event = d3Event();\n context.tooltipdiv.html(tooltipHtml)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 100) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_prev_rect\")\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n element2.append(\"text\")\n .attr(\"class\", \"node_prev_text\");\n });\n node_prev_group\n .classed(\"update\", true)\n .classed(\"changed\", function (d) {\n return d.delta !== 0;\n })\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.prev_group - 1)) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .each(function (d) {\n const element2 = d3Select(this);\n // Change Lines ---\n const changeLines = element2.selectAll(\".arrow\").data(d.delta !== 0 ? [d] : []);\n changeLines.enter().append(\"line\")\n .attr(\"class\", \"arrow update\");\n changeLines\n .attr(\"x1\", function (d2) {\n return (d2.delta > 0) ? nodeRectWidth : 0;\n })\n .attr(\"y1\", nodeRectHeight / 2)\n .attr(\"x2\", function (d2) {\n return (d2.delta > 0) ? (nodeRectWidth + nodeRectWidthPadding - 4) + ((Math.abs(d2.delta) - 1)) * (w / context.groupCount) : ((-nodeRectWidthPadding - ((Math.abs(d2.delta) - 1)) * (w / context.groupCount)) + 4);\n })\n .attr(\"y2\", nodeRectHeight / 2)\n .style(\"stroke-dasharray\", (\"3, 3\"))\n .style(\"stroke\", \"rgb(100,100,100)\")\n .style(\"marker-end\", \"url(#end-arrow)\")\n .style(\"opacity\", \"1\");\n changeLines.exit().remove();\n });\n const node_previous_rect = node_prev_group.select(\".node_prev_rect\");\n node_previous_rect\n .attr(\"width\", nodeRectWidth)\n .attr(\"height\", nodeRectHeight);\n const node_previous_text = node_prev_group.select(\".node_prev_text\");\n node_previous_text\n .attr(\"dy\", (nodeRectHeight / 2) + 3)\n .attr(\"dx\", (nodeRectWidth / 4))\n .text(function (d) {\n if (typeof d[dropDownOption] === \"number\")\n return d[dropDownOption];\n else\n return d[dropDownOption].substring(0, 14);\n });\n node_prev_group.exit().remove();\n // Node Cur Group ---\n const node_cur_group = this.svg.selectAll(\".node_cur_group\").data(data);\n node_cur_group.enter().append(\"g\")\n .attr(\"class\", \"node_cur_group\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.prev_group - 1)) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .on(\"mouseover\", function (d, i) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let tooltipHtml = \"\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n tooltipHtml = tooltipHtml + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n const event = d3Event();\n context.tooltipdiv.html(tooltipHtml)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 100) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_cur_rect\")\n .attr(\"fill\", function (d2: any) {\n let color;\n if (d2.delta < 0 || d2.cur_group === 7) {\n color = \"#F78181\";\n } else {\n color = \"#A9F5A9\";\n }\n return color;\n })\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n element2.append(\"a\")\n .append(\"text\")\n .attr(\"class\", \"node_cur_text\");\n });\n node_cur_group\n .classed(\"update\", true)\n .classed(\"changed\", function (d) {\n return d.delta !== 0;\n })\n .transition().duration(800)\n .ease(\"linear\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.cur_group) - 1) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .each(\"end\", function () {\n d3SelectAll(\".arrow\").style(\"opacity\", \"1\");\n });\n const node_current_anchor = node_cur_group.select(\".node_cur_group a\");\n node_current_anchor.classed(\"update\", true)\n .attr(\"xlink:href\", function (d) {\n return context.url() + d.id;\n })\n .attr(\"xlink:show\", \"new\");\n const node_current_rect = node_cur_group.select(\".node_cur_rect\");\n node_current_rect\n .attr(\"width\", nodeRectWidth)\n .attr(\"height\", nodeRectHeight);\n const node_current_text = node_cur_group.select(\".node_cur_text\");\n node_current_text\n .classed(\"update\", true)\n .attr(\"dy\", (nodeRectHeight / 2) + 3)\n .attr(\"dx\", (nodeRectWidth / 4))\n .style(\"fill\", \"blue\")\n .text(function (d) {\n if (typeof d[dropDownOption] === \"number\")\n return d[dropDownOption];\n else\n return d[dropDownOption].substring(0, 14);\n });\n node_cur_group.exit().remove();\n }\n for (let colIndex = 0; colIndex < context.columnData().length; colIndex++) {\n if ((context.columnData()[colIndex]) && (context.columnData()[colIndex]).ColumnDropdownList()) {\n const columnData = this.svg.selectAll(\".columnDataText_\" + colIndex).data(data);\n columnData.enter().append(\"g\")\n .attr(\"class\", \"columnDataText_\" + colIndex + \" update\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"text\");\n });\n columnData\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + (((context.columnData()[colIndex]).columnIndex() * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 12 + paddingTop) + \")\";\n })\n .attr(\"width\", 5)\n .attr(\"height\", nodeRectHeight)\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n const textLable = columnData.select(\"text\");\n textLable\n .attr(\"y\", -6)\n .attr(\"dy\", (nodeRectHeight) + 14)\n .attr(\"dx\", 0)\n .attr(\"height\", 20)\n .attr(\"width\", 29)\n .text(function (d, i) {\n return d[(context.columnData()[colIndex]).ColumnDropdownList()];\n });\n columnData.exit().remove();\n }\n }\n }\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n getIds() {\n const dropdownList = this.columns();\n dropdownList.unshift(\"default\");\n return dropdownList;\n }\n previousGroup: { (): string; (_: string): Opportunity };\n previousGroup_exists: () => boolean;\n currentGroup: { (): string; (_: string): Opportunity };\n currentGroup_exists: () => boolean;\n opportunityId: { (): string; (_: string): Opportunity };\n opportunityId_exists: () => boolean;\n url: { (): string; (_: string): Opportunity };\n url_exists: () => boolean;\n // width: { (): number; (_: number): Opportunity };\n width_exists: () => boolean;\n addColumn: { (): string; (_: string): Opportunity };\n addColumn_exists: () => boolean;\n removeColumn: { (): string; (_: string): Opportunity };\n removeColumn_exists: () => boolean;\n headerLabels: { (): any[]; (_: any[]): Opportunity };\n headerLabels_exists: () => boolean;\n mouseHover: { (): any[]; (_: any[]): Opportunity };\n mouseHover_exists: () => boolean;\n columnData: { (): any[]; (_: any[]): Opportunity };\n columnData_exists: () => boolean;\n}\nOpportunity.prototype._class += \" other_Opportunity\";\nOpportunity.prototype.Column = Column;\nOpportunity.prototype.MouseHoverColumn = MouseHoverColumn;\nOpportunity.prototype.ColumnDropdown = ColumnDropdown;\n\nOpportunity.prototype.publish(\"previousGroup\", \"\", \"set\", \"label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"currentGroup\", \"\", \"set\", \"label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"opportunityId\", \"id\", \"set\", \"Id for label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"url\", null, \"string\", \"URL in Opportunity\", {}, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"width\", 1100, \"number\", \"label in Opportunity\", {}, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"addColumn\", null, \"string\", \"number of columns in a table\", {}, {\n tags: [\"Basic\", \"Shared\"],\n editor_input: (context, widget, cell, param) => {\n cell.append(\"button\")\n .attr(\"id\", context.id() + \"_addColumn\" + param.id)\n .classed(\"property-input custom-editor-input addColumn update\", true)\n .text(\"AddColumn\")\n .on(\"click\", function () {\n widget.groupCount = widget.groupCount + 1;\n const new_value_after_click = \"Added a new column\";\n context.setProperty(widget, param.id, new_value_after_click);\n });\n }\n});\nOpportunity.prototype.publish(\"removeColumn\", null, \"string\", \"number of columns in a table\", function () { return this.columns(); }, {\n tags: [\"Basic\", \"Shared\"],\n editor_input: (context, widget, cell, param) => {\n cell.append(\"button\")\n .attr(\"id\", context.id() + \"_removeColumn\" + param.id)\n .classed(\"property-input custom-editor-input removeColumn update\", true)\n .text(\"RemoveColumn\")\n .on(\"click\", function () {\n widget.groupCount = widget.groupCount - 1;\n const new_value_after_click = \"Removed a column\";\n context.setProperty(widget, param.id, new_value_after_click);\n });\n }\n});\nOpportunity.prototype.publish(\"headerLabels\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: Column });\nOpportunity.prototype.publish(\"mouseHover\", [], \"propertyArray\", \"mouse hover options\", null, { autoExpand: MouseHoverColumn });\nOpportunity.prototype.publish(\"columnData\", [], \"propertyArray\", \"column data\", null, { autoExpand: ColumnDropdown });\n","export function discover(widget) {\n return widget.publishedProperties(false, true);\n}\n\nexport function widgetArrayWalker(widgets, visitor) {\n if (!widgets)\n return;\n widgets.forEach(function (widget) {\n widget.widgetWalker(visitor);\n });\n}\n\nexport function widgetPropertyWalker(widget2, visitor, filter?) {\n widget2.widgetWalker(function (widget) {\n widget.propertyWalker(visitor, filter);\n });\n}\n\nexport function serializeTheme(widget, filter) {\n return JSON.stringify(serializeThemeToObject(widget, filter));\n}\n\nexport function serializeThemeToObject(widget2, filter?) {\n filter = filter || [\"surface\", \"Color\", \"Font\", \"palette\"];\n\n const propObj = {};\n widgetPropertyWalker(widget2, null, function (widget, item) {\n if (widget[item.id + \"_modified\"]() || widget.publishedProperty(item.id).origDefaultValue !== widget.publishedProperty(item.id).defaultValue) {\n if (_isFilterMatch(item.id, filter)) {\n const classParts = widget._class.trim().split(\" \");\n for (const i in classParts) {\n if (classParts.HasOwnProperty(i)) {\n if (propObj[classParts[i]] === undefined) {\n propObj[classParts[i]] = {};\n }\n if (propObj[classParts[i]][item.id] === undefined) {\n propObj[classParts[i]][item.id] = widget[item.id]();\n break;\n } else if (propObj[classParts[i]][item.id] === widget[item.id]()) {\n break;\n }\n }\n }\n }\n }\n });\n\n function _isFilterMatch(str, arr) {\n let ret = false;\n for (const i in arr) {\n if (str.indexOf(arr[i]) !== -1) {\n ret = true;\n break;\n }\n }\n return ret;\n }\n return propObj;\n}\nexport function removeTheme(widget2, callback) {\n widgetPropertyWalker(widget2, null, function (widget, item) {\n widget.publishedProperty(item.id).defaultValue = widget.publishedProperty(item.id).origDefaultValue;\n });\n\n if (typeof (callback) === \"function\") {\n callback.call(this);\n }\n}\nexport function applyTheme(widget2, themeObj, callback) {\n const context = this;\n widgetPropertyWalker(widget2, null, function (widget3, item) {\n switch (item.type) {\n case \"widget\":\n context.applyTheme(widget3[item.id](), themeObj);\n return true;\n case \"widgetArray\":\n const widgetArray = widget3[item.id]();\n widgetArray.forEach(function (widget) {\n context.applyTheme(widget, themeObj);\n }, this);\n return true;\n default:\n widget3.applyTheme(themeObj);\n break;\n }\n });\n if (typeof (callback) === \"function\") {\n callback.call(this);\n }\n}\n\nexport function serializeToObject(widget, filter?, includeData?, includeState?) {\n const retVal: any = {\n __class: widget.classID()\n };\n if (widget._id.indexOf(widget._idSeed) !== 0) {\n retVal.__id = widget._id;\n }\n if (widget.version) {\n retVal.__version = widget.version();\n }\n retVal.__properties = {};\n\n widget.propertyWalker((childWwidget2, item) => {\n if (childWwidget2[item.id + \"_modified\"]()) {\n switch (item.type) {\n case \"widget\":\n retVal.__properties[item.id] = serializeToObject(childWwidget2[item.id](), null, includeData, includeState && !widget.serializeState); // Only include state once\n return true;\n case \"widgetArray\":\n case \"propertyArray\":\n retVal.__properties[item.id] = [];\n const widgetArray = childWwidget2[item.id]();\n widgetArray.forEach((childWwidget) => {\n retVal.__properties[item.id].push(serializeToObject(childWwidget, null, includeData, includeState && !widget.serializeState)); // Only include state once\n });\n return true;\n default:\n retVal.__properties[item.id] = childWwidget2[item.id]();\n break;\n }\n }\n }, filter);\n\n if (widget.classID() === \"marshaller_Graph\") {\n const vertices = widget.data().vertices;\n if (vertices) {\n this.__vertices = vertices.map(item => {\n return serializeToObject(item, null, includeData, includeState && !widget.serializeState);\n });\n }\n }\n if (includeData && widget.data) {\n if (!retVal.__data) retVal.__data = {};\n retVal.__data.data = widget.data();\n }\n if (includeState) {\n if (widget.serializeState) {\n retVal.__state = widget.serializeState();\n } else if (widget.data) {\n retVal.__state = {\n data: widget.data()\n };\n }\n }\n return retVal;\n}\n\nexport function serialize(widget, filter?, includeData?, includeState?) {\n return JSON.stringify(serializeToObject(widget, filter, includeData, includeState));\n}\n","import { HTMLWidget, Platform, PropertyExt, Widget } from \"@hpcc-js/common\";\nimport { Grid } from \"@hpcc-js/layout\";\nimport { local as d3Local, select as d3Select, selectAll as d3SelectAll } from \"d3-selection\";\nimport * as Persist from \"./Persist\";\n\nimport \"../src/PropertyEditor.css\";\n\nfunction hasProperties(type) {\n switch (type) {\n case \"widget\":\n case \"widgetArray\":\n case \"propertyArray\":\n return true;\n default:\n }\n return false;\n}\n\nexport class PropertyEditor extends HTMLWidget {\n _widgetOrig;\n _parentPropertyEditor;\n _show_settings: boolean;\n _selectedItems;\n __meta_sorting;\n _watch;\n private _childPE = d3Local<PropertyEditor>();\n\n constructor() {\n super();\n this._parentPropertyEditor = null;\n\n this._tag = \"div\";\n this._show_settings = false;\n }\n\n parentPropertyEditor(_?: PropertyEditor): PropertyEditor {\n if (!arguments.length) return this._parentPropertyEditor;\n this._parentPropertyEditor = _;\n return this;\n }\n\n depth(): number {\n let retVal = 0;\n let parent = this.parentPropertyEditor();\n while (parent) {\n ++retVal;\n parent = parent.parentPropertyEditor();\n }\n return retVal;\n }\n\n _show_header = true;\n show_header(): boolean;\n show_header(_: boolean): PropertyEditor;\n show_header(_?: boolean): boolean | PropertyEditor {\n if (!arguments.length) {\n return this._show_header;\n }\n this._show_header = _;\n return this;\n }\n\n show_settings(): boolean;\n show_settings(_: boolean): PropertyEditor;\n show_settings(_?: boolean): boolean | PropertyEditor {\n if (!arguments.length) {\n return this._show_settings;\n }\n this._show_settings = _;\n return this;\n }\n\n rootWidgets() {\n if (this._selectedItems && this._selectedItems.length) {\n return this._selectedItems;\n }\n return this.show_settings() ? [this] : this.widget() ? [this.widget()] : [];\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n const rootWidgets = this.rootWidgets().filter(function (w) {\n if (w._owningWidget && w._owningWidget.excludeObjs instanceof Array) {\n if (w._owningWidget.excludeObjs.indexOf(w.classID()) !== -1) {\n return false;\n }\n }\n return true;\n });\n\n const table = element.selectAll(`table.property-table.table-${this.depth()}`).data(rootWidgets, function (d) {\n // We reuse the existing DOM Nodes and this node _might_ have been a regular Input previously ---\n if (typeof d.id !== \"function\") {\n return `meta-${d.id}`;\n }\n return d.id();\n });\n table.enter().append(\"table\")\n .attr(\"class\", `property-table table-${this.depth()}`)\n .each(function () {\n const tableElement = d3Select(this);\n\n // Header ---\n if (context._show_header && context.parentPropertyEditor() === null) {\n tableElement.append(\"thead\").append(\"tr\").append(\"th\")// .datum(tableElement)\n .attr(\"colspan\", \"2\")\n .each(function () {\n context.enterHeader(d3Select(this));\n })\n ;\n }\n\n // Body ---\n tableElement.append(\"tbody\");\n })\n .merge(table)\n .each(function (tableData) {\n const tableElement = d3Select(this);\n\n // Header ---\n if (context._show_header && context.parentPropertyEditor() === null) {\n context.updateHeader(tableElement.select(\"thead > tr > th\"));\n }\n\n // Body ---\n context.renderInputs(tableElement.select(\"tbody\"), tableData);\n })\n ;\n table.exit()\n .each(function () {\n context.renderInputs(element.select(\"tbody\"), null);\n })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n this.watchWidget(null);\n }\n\n private watchDepth = 0;\n watchWidget(widget) {\n if (this._watch) {\n if ((window as any).__hpcc_debug) {\n --this.watchDepth;\n console.info(\"watchDepth: \" + this.watchDepth);\n }\n this._watch.remove();\n delete this._watch;\n }\n if (widget) {\n const context = this;\n this._watch = widget.monitor(function (_paramId, newVal, oldVal) {\n if (oldVal !== newVal) {\n const propEditor = context.parentPropertyEditor() || context;\n propEditor.lazyRender();\n }\n });\n if ((window as any).__hpcc_debug) {\n ++this.watchDepth;\n console.info(\"watchDepth: \" + this.watchDepth);\n }\n }\n }\n\n enterHeader(th) {\n const context = this;\n\n th.append(\"span\");\n th.append(\"i\")\n .attr(\"class\", \"expandIcon fa\")\n .on(\"click\", function () {\n switch (context.peInputIcon()) {\n case \"fa-caret-up\":\n case \"fa-caret-right\":\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > .property-table-collapsed`)\n .classed(\"property-table-collapsed\", false)\n ;\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > i`)\n .classed(\"fa-minus-square-o\", true)\n .classed(\"fa-plus-square-o\", false)\n ;\n break;\n case \"fa-caret-down\":\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > div`)\n .classed(\"property-table-collapsed\", true)\n ;\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > i`)\n .classed(\"fa-minus-square-o\", false)\n .classed(\"fa-plus-square-o\", true)\n ;\n break;\n }\n context.refreshExpandIcon();\n })\n ;\n\n const sortIcon = th.append(\"i\")\n .attr(\"class\", \"sortIcon fa\")\n .on(\"click\", function () {\n context.refreshSortIcon(sortIcon, true);\n })\n ;\n\n th.append(\"i\")\n .attr(\"class\", \"hideParamsIcon fa\")\n .on(\"click\", function () {\n context.hideNonWidgets(!context.hideNonWidgets()).render();\n })\n ;\n }\n\n updateHeader(th) {\n const widget: any = this.widget();\n let spanText = \"\";\n if (widget) {\n if (widget.label) {\n spanText += widget.label();\n }\n if (widget.classID) {\n if (spanText) {\n spanText += \" - \";\n }\n spanText += widget.classID();\n }\n }\n th.select(\"span\")\n .text(spanText)\n ;\n this.refreshExpandIcon();\n this.refreshSortIcon(th.select(\".sortIcon\"));\n this.refreshHideParamsIcon(th.select(\".hideParamsIcon\"));\n }\n\n peInputCount() {\n return this.element().selectAll(`.table-${this.depth()} > tbody > tr > .headerRow > .peInput > div`).size();\n }\n\n peInputCollapsedCount() {\n return this.element().selectAll(`.table-${this.depth()} > tbody > tr > .headerRow > .peInput > div.property-table-collapsed`).size();\n }\n\n peInputIcon(): \"fa-caret-down\" | \"fa-caret-up\" | \"fa-caret-right\" {\n const collapsed = this.peInputCollapsedCount();\n if (collapsed === 0) {\n return \"fa-caret-down\";\n } else if (collapsed === this.peInputCount()) {\n return \"fa-caret-up\";\n }\n return \"fa-caret-right\";\n }\n\n refreshExpandIcon() {\n const newIcon = this.peInputIcon();\n this.element().select(`.table-${this.depth()} > thead > tr > th > .expandIcon`)\n .classed(\"fa-caret-up\", false)\n .classed(\"fa-caret-right\", false)\n .classed(\"fa-caret-down\", false)\n .classed(newIcon, true)\n ;\n }\n\n refreshSortIcon(sortIcon, increment = false) {\n const sort = this.sorting();\n const types = this.sorting_options();\n const icons = this.__meta_sorting.ext.icons;\n if (increment) {\n sortIcon.classed(icons[types.indexOf(sort)], false);\n this.sorting(types[(types.indexOf(sort) + 1) % types.length]).render();\n } else {\n sortIcon\n .classed(icons[(types.indexOf(sort)) % types.length], true)\n .attr(\"title\", sort)\n ;\n }\n }\n\n refreshHideParamsIcon(hideParamsIcon) {\n hideParamsIcon\n .classed(\"fa-eye\", !this.hideNonWidgets())\n .classed(\"fa-eye-slash\", this.hideNonWidgets())\n ;\n }\n\n gatherDataTree(widget) {\n if (!widget) return null;\n const retVal = {\n label: widget.id() + \" (\" + widget.classID() + \")\",\n children: []\n };\n const arr2 = Persist.discover(widget);\n arr2.forEach(function (prop) {\n const node = {\n label: prop.id,\n children: []\n };\n switch (prop.type) {\n case \"widget\":\n node.children.push(this.gatherDataTree(widget[prop.id]()));\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const arr = widget[prop.id]();\n if (arr) {\n arr.forEach(function (item) {\n node.children.push(this.gatherDataTree(item));\n }, this);\n }\n break;\n default:\n }\n retVal.children.push(node);\n }, this);\n return retVal;\n }\n\n getDataTree() {\n return this.gatherDataTree(this.widget());\n }\n\n _rowSorting(paramArr) {\n if (this.sorting() === \"type\") {\n const typeOrder = [\"boolean\", \"number\", \"string\", \"html-color\", \"array\", \"object\", \"widget\", \"widgetArray\", \"propertyArray\"];\n paramArr.sort(function (a, b) {\n if (a.type === b.type) {\n return a.id < b.id ? -1 : 1;\n } else {\n return typeOrder.indexOf(a.type) < typeOrder.indexOf(b.type) ? -1 : 1;\n }\n });\n } else if (this.sorting() === \"A-Z\") {\n paramArr.sort(function (a, b) { return a.id < b.id ? -1 : 1; });\n } else if (this.sorting() === \"Z-A\") {\n paramArr.sort(function (a, b) { return a.id > b.id ? -1 : 1; });\n }\n }\n\n filterInputs(d) {\n const discArr = Persist.discover(d);\n if ((this.filterTags() || this.excludeTags().length > 0 || this.excludeParams.length > 0) && d instanceof PropertyEditor === false) {\n const context = this;\n return discArr.filter(function (param, _idx) {\n if (d[param.id + \"_hidden\"] && d[param.id + \"_hidden\"]()) return false;\n for (const excludeParamItem of context.excludeParams()) {\n const arr = excludeParamItem.split(\".\");\n let widgetName;\n let excludeParam;\n if (arr.length > 2) {\n widgetName = arr[0];\n excludeParam = arr[2];\n } else {\n widgetName = arr[0];\n excludeParam = arr[1];\n }\n if (d.class().indexOf(widgetName) !== -1) {\n if (param.id === excludeParam) {\n return false;\n }\n return true;\n }\n }\n if (context.excludeTags().length > 0 && param.ext && param.ext.tags && param.ext.tags.some(function (item) { return (context.excludeTags().indexOf(item) > -1); })) {\n return false;\n }\n if ((context.filterTags() && param.ext && param.ext.tags && param.ext.tags.indexOf(context.filterTags()) !== -1) || !context.filterTags()) {\n return true;\n }\n return false;\n });\n }\n return discArr;\n }\n\n renderInputs(element, d) {\n const context = this;\n let discArr = [];\n const showFields = !this.show_settings() && this.showFields();\n if (d) {\n discArr = this.filterInputs(d).filter(function (prop) { return prop.id !== \"fields\" ? true : showFields; });\n if (!this.show_settings() && this.showData() && d.data) {\n discArr.push({ id: \"data\", type: \"array\" });\n }\n if (this.hideNonWidgets()) {\n discArr = discArr.filter(function (n) {\n return hasProperties(n.type);\n });\n }\n this._rowSorting(discArr);\n }\n\n const rows = element.selectAll(\"tr.prop\" + this.id()).data(discArr, function (d2) { return d2.id; });\n rows.enter().append(\"tr\")\n .attr(\"class\", \"property-wrapper prop\" + this.id())\n .each(function (param) {\n const tr = d3Select(this);\n if (hasProperties(param.type)) {\n tr.classed(\"property-widget-wrapper\", true);\n tr.append(\"td\")\n .attr(\"colspan\", \"2\")\n ;\n } else {\n tr.classed(\"property-input-wrapper\", true);\n tr.append(\"td\")\n .classed(\"property-label\", true)\n .text(param.id)\n ;\n const inputCell = tr.append(\"td\")\n .classed(\"property-input-cell\", true)\n ;\n context.enterInputs(d, inputCell, param);\n }\n }).merge(rows)\n .each(function (param) {\n const tr = d3Select(this);\n tr.classed(\"disabled\", d[param.id + \"_disabled\"] && d[param.id + \"_disabled\"]());\n tr.classed(\"invalid\", d[param.id + \"_valid\"] && !d[param.id + \"_valid\"]());\n tr.attr(\"title\", param.description);\n if (hasProperties(param.type)) {\n context.updateWidgetRow(d, tr.select(\"td\"), param);\n } else {\n context.updateInputs(d, param);\n }\n });\n rows.exit().each(function (param) {\n const tr = d3Select(this);\n if (hasProperties(param.type)) {\n context.updateWidgetRow(d, tr.select(\"td\"), null);\n }\n }).remove();\n rows.order();\n }\n\n updateWidgetRow(widget: PropertyExt, element, param) {\n let tmpWidget = [];\n if (widget && param) {\n tmpWidget = widget[param.id]() || [];\n }\n let widgetArr = tmpWidget instanceof Array ? tmpWidget : [tmpWidget];\n if (param && param.ext && param.ext.autoExpand) {\n // remove empties and ensure last row is an empty ---\n let lastModified = true;\n const noEmpties = widgetArr.filter(function (row, idx) {\n lastModified = row.valid();\n row._owner = widget;\n return lastModified || idx === widgetArr.length - 1;\n }, this);\n const widgetDisabled = widget[param.id + \"_disabled\"] && widget[param.id + \"_disabled\"]();\n let changed = !!(widgetArr.length - noEmpties.length);\n if (lastModified && !widgetDisabled) {\n changed = true;\n const autoExpandWidget = new param.ext.autoExpand()\n .owner(widget)\n ;\n // autoExpandWidget.monitor((id, newVal, oldVal, source) => {\n // widget.broadcast(param.id, newVal, oldVal, source);\n // });\n noEmpties.push(autoExpandWidget);\n }\n if (changed) {\n widget[param.id](noEmpties);\n widgetArr = noEmpties;\n }\n }\n\n const context = this;\n element.classed(\"headerRow\", true);\n const peInput = element.selectAll(`div.peInput-${this.depth()}`).data(widgetArr, function (d) { return d.id(); });\n peInput.enter().append(\"div\")\n .attr(\"class\", `peInput peInput-${this.depth()}`)\n .each(function (w) {\n const peInputElement = d3Select(this);\n\n // Header ---\n peInputElement.append(\"span\");\n peInputElement.append(\"i\")\n .attr(\"class\", \"fa\")\n .on(\"click\", function (d) {\n const clickTarget = peInputElement.select(\"div\");\n clickTarget\n .classed(\"property-table-collapsed\", !clickTarget.classed(\"property-table-collapsed\"))\n ;\n d3Select(this)\n .classed(\"fa-minus-square-o\", !clickTarget.classed(\"property-table-collapsed\"))\n .classed(\"fa-plus-square-o\", clickTarget.classed(\"property-table-collapsed\"))\n ;\n context.refreshExpandIcon();\n })\n ;\n\n // Body ---\n const peDiv = peInputElement.append(\"div\")\n // .attr(\"class\", `property- input - cell propEditor-${context.depth() }`)\n ;\n context._childPE.set(this, new PropertyEditor().label(param.id).target(peDiv.node() as HTMLElement));\n })\n .merge(peInput)\n .each(function (w) {\n const peInputElement = d3Select(this);\n const clickTarget = peInputElement.select(\"div\");\n\n // Header ---\n d3Select(this).select(\"span\")\n .text(`${param.id}`)\n ;\n\n d3Select(this).select(\"i\")\n .classed(\"fa-minus-square-o\", !clickTarget.classed(\"property-table-collapsed\"))\n .classed(\"fa-plus-square-o\", clickTarget.classed(\"property-table-collapsed\"))\n ;\n\n // Body ---\n context._childPE.get(this)\n .parentPropertyEditor(context)\n .showFields(context.showFields())\n .showData(context.showData())\n .sorting(context.sorting())\n .filterTags(context.filterTags())\n .excludeTags(context.excludeTags())\n .excludeParams(context.excludeParams())\n .hideNonWidgets(context.hideNonWidgets() && w._class.indexOf(\"layout_\") >= 0)\n .widget(w)\n .render()\n ;\n })\n ;\n peInput.exit()\n .each(function (w) {\n context._childPE.get(this)\n .widget(null)\n .render()\n .target(null)\n ;\n context._childPE.remove(this);\n })\n .remove()\n ;\n }\n\n setProperty(widget, id, value) {\n // With PropertyExt not all \"widgets\" have a render, if not use top most render...\n let topWidget: Widget;\n let topPropEditor: Widget;\n let propEditor: PropertyEditor = this;\n let oldValue;\n while (propEditor && widget) {\n if (propEditor === this) {\n oldValue = widget[id]();\n widget[id](value);\n }\n if (propEditor) {\n topPropEditor = propEditor;\n const w: PropertyExt = propEditor.widget();\n if (w instanceof Widget) {\n topWidget = w;\n }\n }\n propEditor = propEditor.parentPropertyEditor();\n }\n if (topWidget) {\n topWidget.render();\n }\n if (topPropEditor) {\n topPropEditor.broadcast(id, value, oldValue, widget);\n }\n }\n\n enterInputs(widget, cell, param) {\n cell.classed(param.type + \"-cell\", true);\n const context = this;\n if (typeof (param.ext.editor_input) === \"function\") {\n param.ext.editor_input(this, widget, cell, param);\n }\n switch (param.type) {\n case \"boolean\":\n cell.append(\"input\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"type\", \"checkbox\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.checked);\n })\n ;\n break;\n case \"set\":\n cell.append(\"select\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n break;\n case \"array\":\n case \"object\":\n cell.append(\"textarea\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"autocomplete\", \"off\")\n .attr(\"autocorrect\", \"off\")\n .attr(\"autocapitalize\", \"off\")\n .attr(\"spellcheck\", \"false\")\n .on(\"change\", function () {\n let value;\n try {\n value = JSON.parse(this.value);\n } catch (e) {\n value = this.value;\n }\n context.setProperty(widget, param.id, value);\n })\n ;\n break;\n default:\n if (param.ext && param.ext.range) {\n cell.append(\"span\")\n .classed(\"property-input-span\", true)\n .attr(\"id\", this.id() + \"_\" + param.id + \"_currentVal\")\n .text(param.defaultValue)\n ;\n cell.append(\"input\")\n .attr(\"type\", \"range\")\n .attr(\"step\", param.ext.range.step)\n .attr(\"min\", param.ext.range.min)\n .attr(\"max\", param.ext.range.max)\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .on(\"input\", function () {\n context.setProperty(widget, param.id, this.value);\n d3Select(\"#\" + this.id + \"_currentVal\").text(\"Current Value: \" + this.value);\n })\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n d3Select(\"#\" + this.id + \"_currentVal\").text(\"Current Value: \" + this.value);\n })\n ;\n } else {\n cell.append(param.ext && param.ext.multiline ? \"textarea\" : \"input\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"autocomplete\", \"off\")\n .attr(\"autocorrect\", \"off\")\n .attr(\"autocapitalize\", \"off\")\n .attr(\"spellcheck\", \"false\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n if (param.type === \"html-color\" && !Platform.isIE) {\n cell.append(\"input\")\n .attr(\"id\", this.id() + \"_\" + param.id + \"_2\")\n .classed(\"property-input\", true)\n .attr(\"type\", \"color\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n }\n }\n break;\n }\n }\n\n updateInputs(widget, param) {\n const element = d3SelectAll(\"#\" + this.id() + \"_\" + param.id + \", #\" + this.id() + \"_\" + param.id + \"_2\");\n const val = widget ? widget[param.id]() : \"\";\n element.property(\"disabled\", widget[param.id + \"_disabled\"] && widget[param.id + \"_disabled\"]());\n element.property(\"invalid\", widget[param.id + \"_valid\"] && !widget[param.id + \"_valid\"]());\n switch (param.type) {\n case \"boolean\":\n element.property(\"checked\", val);\n break;\n case \"set\":\n const options = element.selectAll(\"option\").data<string | { value: string, text: string }>(widget[param.id + \"_options\"]());\n options.enter().append(\"option\")\n .merge(options as any)\n .attr(\"value\", (d: any) => (d && d.value !== undefined) ? d.value : d)\n .text((d: any) => (d && d.text !== undefined) ? d.text : d)\n ;\n options.exit().remove();\n element.property(\"value\", val);\n break;\n case \"array\":\n case \"object\":\n element.property(\"value\", JSON.stringify(val, function replacer(_key, value) {\n if (value instanceof Widget) {\n return Persist.serialize(value);\n }\n return value;\n }, \" \"));\n break;\n default:\n if (param.ext && param.ext.range) {\n d3Select(\"#\" + this.id() + \"_\" + param.id + \"_currentVal\").text(\"Current Value: \" + val);\n }\n element.property(\"value\", val && val.length && val.length > 100000 ? \"...too big to display...\" : val);\n break;\n }\n }\n\n showFields: { (): boolean; (_: boolean): PropertyEditor; };\n showData: { (): boolean; (_: boolean): PropertyEditor; };\n\n sorting: { (): string; (_: string): PropertyEditor; };\n sorting_options: () => string[];\n\n hideNonWidgets: { (): boolean; (_: boolean): PropertyEditor; };\n\n label: { (): string; (_: string): PropertyEditor; };\n filterTags: { (): string; (_: string): PropertyEditor; };\n excludeTags: { (): string[]; (_: string[]): PropertyEditor; };\n excludeParams: { (): string[]; (_: string[]): PropertyEditor; };\n\n widget: { (): PropertyExt; (_: PropertyExt): PropertyEditor };\n}\nPropertyEditor.prototype._class += \" other_PropertyEditor\";\n\nPropertyEditor.prototype.publish(\"showFields\", false, \"boolean\", \"If true, widget.fields() will display as if it was a publish parameter.\", null, { tags: [\"Basic\"] });\nPropertyEditor.prototype.publish(\"showData\", false, \"boolean\", \"If true, widget.data() will display as if it was a publish parameter.\", null, { tags: [\"Basic\"] });\n\nPropertyEditor.prototype.publish(\"sorting\", \"none\", \"set\", \"Specify the sorting type\", [\"none\", \"A-Z\", \"Z-A\", \"type\"], { tags: [\"Basic\"], icons: [\"fa-sort\", \"fa-sort-alpha-asc\", \"fa-sort-alpha-desc\", \"fa-sort-amount-asc\"] });\n\nPropertyEditor.prototype.publish(\"hideNonWidgets\", false, \"boolean\", \"Hides non-widget params (at this tier only)\", null, { tags: [\"Basic\"] });\n\nPropertyEditor.prototype.publish(\"label\", \"\", \"string\", \"Label to display in header of property editor table\", null, { tags: [\"Basic\"] });\nPropertyEditor.prototype.publish(\"filterTags\", \"\", \"set\", \"Only show Publish Params of this type\", [\"Basic\", \"Intermediate\", \"Advance\", \"\"], {});\nPropertyEditor.prototype.publish(\"excludeTags\", [\"Private\"], \"array\", \"Exclude this array of tags\", null, {});\nPropertyEditor.prototype.publish(\"excludeParams\", [], \"array\", \"Exclude this array of params (widget.param)\", null, {});\n\nPropertyEditor.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Basic\"], render: false });\n\nconst _widgetOrig = PropertyEditor.prototype.widget;\n(PropertyEditor.prototype as any).widget = function (_?: Widget): Widget | PropertyEditor {\n if (arguments.length && _widgetOrig.call(this) === _) return this;\n const retVal = _widgetOrig.apply(this, arguments);\n if (arguments.length) {\n this.watchWidget(_);\n if (_ instanceof Grid) {\n const context = this;\n _.postSelectionChange = function () {\n context._selectedItems = _._selectionBag.get().map(function (item) { return item.widget; });\n context.lazyRender();\n };\n }\n }\n return retVal;\n};\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/RadioCheckbox.css\";\n\nexport class RadioCheckbox extends HTMLWidget {\n _span;\n _label;\n _Checkbox;\n\n constructor() {\n super();\n }\n\n rcData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n let retVal = [];\n retVal = retVal.concat(view.entries().map(function (row) {\n return {\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].values.length ? row.values[0].values[0] : []\n };\n }, this));\n if (this.sort_exists()) {\n const descending = this.sort() === \"descending\";\n retVal.sort(function (l, r) {\n if (l.text < r.text) return descending ? 1 : -1;\n if (l.text > r.text) return descending ? -1 : 1;\n return 0;\n });\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._label = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_radioCheckbox\")\n ;\n this._Checkbox = this._span.append(\"div\")\n .attr(\"id\", this.id() + \"_radioCheckbox\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this._label\n .text(this.label())\n ;\n const radioCheckbox = this._Checkbox.selectAll(\".dataRow\").data(this.rcData());\n radioCheckbox.enter().append(\"div\")\n .attr(\"class\", \"dataRow\")\n .each(function (row, idx) {\n const checkboxDiv = d3Select(this);\n const id = context.id() + \"_checkbox_\" + idx;\n checkboxDiv.append(\"input\")\n .attr(\"id\", id)\n .attr(\"name\", context.id() + \"_radioCheckbox\")\n .on(\"change\", function (selectedData) {\n context.handleClick();\n });\n checkboxDiv.append(\"label\")\n .attr(\"for\", id);\n });\n radioCheckbox\n .each(function (row, idx) {\n const rcDiv = d3Select(this);\n rcDiv.select(\"input\")\n .attr(\"type\", context.multiple() ? \"checkbox\" : \"radio\")\n .attr(\"value\", row.value);\n rcDiv.select(\"label\")\n .text(row.text);\n });\n radioCheckbox.exit().remove();\n radioCheckbox.order();\n }\n\n exit(domNode, element) {\n this._span.remove();\n super.exit(domNode, element);\n }\n\n handleClick() {\n const options = [];\n this._Checkbox.selectAll(\".dataRow > input\")\n .each(function (row, idx) {\n const input = d3Select(this);\n if (input.property(\"checked\") && row && row.origRow) {\n options.push(row.origRow);\n }\n });\n if (options.length) {\n // TODO Handle Multiple Selections - part of 1.16.x\n this.click(this.rowToObj(options[0]), this.valueColumn(), true);\n } else {\n this.click([], this.valueColumn(), false);\n }\n }\n\n click(row, column, selected) {\n }\n\n label: { (): string; (_: string): RadioCheckbox };\n label_exists: () => boolean;\n valueColumn: { (): string; (_: string): RadioCheckbox };\n valueColumn_exists: () => boolean;\n textColumn: { (): string; (_: string): RadioCheckbox };\n textColumn_exists: () => boolean;\n sort: { (): string; (_: string): RadioCheckbox };\n sort_exists: () => boolean;\n multiple: { (): boolean; (_: boolean): RadioCheckbox };\n multiple_exists: () => boolean;\n}\nRadioCheckbox.prototype._class += \" other_RadioCheckbox\";\n\nRadioCheckbox.prototype.publish(\"label\", null, \"string\", \"Label for RadioCheckbox\");\nRadioCheckbox.prototype.publish(\"valueColumn\", null, \"set\", \"RadioCheckbox display value\", function () { return this.columns(); }, { optional: true });\nRadioCheckbox.prototype.publish(\"textColumn\", null, \"set\", \"RadioCheckbox value(s)\", function () { return this.columns(); }, { optional: true });\nRadioCheckbox.prototype.publish(\"sort\", null, \"set\", \"Sort contents\", [\"\", \"ascending\", \"descending\"], { optional: true });\nRadioCheckbox.prototype.publish(\"multiple\", false, \"boolean\", \"Multiple selection\");\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Select.css\";\n\nexport class Select extends HTMLWidget {\n _span;\n _prompt;\n _select;\n\n constructor() {\n super();\n }\n\n selectData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n let retVal = [];\n retVal = retVal.concat(view.entries().map(function (row) {\n return {\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].value.length ? row.values[0].value[0] : []\n };\n }, this));\n if (this.sort_exists()) {\n const descending = this.sort() === \"descending\";\n retVal.sort(function (l, r) {\n if (l.text < r.text) return descending ? 1 : -1;\n if (l.text > r.text) return descending ? -1 : 1;\n return 0;\n });\n }\n if (this.optional()) {\n retVal.unshift({ value: \"\", text: \"\" });\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._prompt = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_select\")\n ;\n\n const context = this;\n this._select = this._span.append(\"select\")\n .attr(\"id\", this.id() + \"_select\")\n .on(\"change\", function (d) {\n const options = [];\n const options_dom_node = context._select.node().options;\n for (let i = 0; i < options_dom_node.length; ++i) {\n const optionNode = options_dom_node[i];\n if (optionNode.selected) {\n options.push((d3Select(optionNode).datum() as any).origRow);\n }\n }\n if (options.length) {\n context.click(context.rowToObj(options[0]), context.valueColumn(), true); // TODO: Multiselect not support in HIPIE\n } else {\n context.click([], context.valueColumn(), false);\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._prompt\n .text(this.label())\n ;\n this._select\n .attr(\"multiple\", this.multiple() ? this.multiple() : null)\n .attr(\"size\", this.multiple() && this.selectSize() ? this.selectSize() : null)\n ;\n\n const option = this._select.selectAll(\".dataRow\").data(this.selectData());\n const optionUpdate = option.enter().append(\"option\")\n .attr(\"class\", \"dataRow\")\n .merge(option)\n .attr(\"value\", function (row) { return row.value; })\n .text(function (row) { return row.text; })\n ;\n option.exit().remove();\n optionUpdate.order();\n }\n\n exit(domNode, element) {\n this._span.remove();\n super.exit(domNode, element);\n }\n\n click(row, column, selected) {\n }\n label: { (): string; (_: string): Select };\n label_exists: () => boolean;\n valueColumn: { (): string; (_: string): Select };\n valueColumn_exists: () => boolean;\n textColumn: { (): string; (_: string): Select };\n textColumn_exists: () => boolean;\n optional: { (): boolean; (_: boolean): Select };\n optional_exists: () => boolean;\n sort: { (): string; (_: string): Select };\n sort_exists: () => boolean;\n multiple: { (): boolean; (_: boolean): Select };\n multiple_exists: () => boolean;\n selectSize: { (): number; (_: number): Select };\n selectSize_exists: () => boolean;\n}\nSelect.prototype._class += \" other_Select\";\n\nSelect.prototype.publish(\"label\", null, \"string\", \"Label for select\");\nSelect.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSelect.prototype.publish(\"textColumn\", null, \"set\", \"Select value(s)\", function () { return this.columns(); }, { optional: true });\nSelect.prototype.publish(\"optional\", true, \"boolean\", \"Optional Select\");\nSelect.prototype.publish(\"sort\", null, \"set\", \"Sort contents\", [\"\", \"ascending\", \"descending\"], { optional: true });\nSelect.prototype.publish(\"multiple\", false, \"boolean\", \"Multiple selection\");\nSelect.prototype.publish(\"selectSize\", 5, \"number\", \"Size of multiselect box\", null, { disable: w => !w.multiple() });\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport * as Persist from \"./Persist\";\n\nimport \"../src/ThemeEditor.css\";\n\nfunction hasLocalStorage(): boolean {\n const mod = \"@hpcc-js/other\";\n try {\n localStorage.setItem(mod, mod);\n localStorage.removeItem(mod);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Polyfill for IE in file:// mode ----\nconst _localStorage: { getItem: (id: string) => any; } = hasLocalStorage() ? localStorage : {\n getItem(id: string): any {\n return undefined;\n }\n};\n\nconst getThemes = function (idx?) {\n if (typeof ((window as any).g_defaultThemes) === \"function\") {\n (window as any).g_defaultThemes(idx);\n }\n return JSON.parse(_localStorage.getItem(\"themeEditorThemes\") || \"{}\");\n};\nconst getSerials = function (idx?) {\n if (typeof ((window as any).g_defaultSerials) === \"function\") {\n (window as any).g_defaultSerials(idx);\n }\n return JSON.parse(_localStorage.getItem(\"themeEditorSerials\") || \"{}\");\n};\nconst getThemeNames = function (idx?) {\n const loadedThemes = getThemes();\n let themes = [];\n for (const themeName in loadedThemes) {\n themes.push(themeName);\n }\n if (typeof (idx) !== \"undefined\" && typeof (themes[idx]) !== \"undefined\") {\n themes = themes[idx];\n }\n return themes;\n};\nconst getSerialNames = function (idx?) {\n const loadedSerials = getSerials();\n let serials = [];\n for (const serialName in loadedSerials) {\n serials.push(serialName);\n }\n if (typeof (idx) !== \"undefined\" && typeof (serials[idx]) !== \"undefined\") {\n serials = serials[idx];\n }\n return serials;\n};\nconst tableNeedsRedraw = function (context) {\n let needsRedraw = false;\n if (typeof (context._current_grouping) === \"undefined\") {\n context._current_grouping = context._group_params_by;\n } else if (context._current_grouping !== context._group_params_by) {\n needsRedraw = true;\n }\n if (typeof (context._showing_columns) === \"undefined\") {\n context._showing_columns = context.showColumns();\n } else if (context._showing_columns !== context.showColumns()) {\n needsRedraw = true;\n }\n if (typeof (context._showing_data) === \"undefined\") {\n context._showing_data = context.showData();\n } else if (context._showing_data !== context.showData()) {\n needsRedraw = true;\n }\n return needsRedraw;\n};\nconst camelizeString = function (str) {\n const spacedText = str.split(/(?=[0-9A-Z])/).map(function (n) { return n.length > 1 ? n + \" \" : n; }).join(\"\");\n return spacedText.replace(/(?:^|\\s)\\S/g, function (a) { return a.toUpperCase(); });\n};\n\nconst tableInputHtml = function (rowObj, value, widgetArr, idSuffix) {\n let inputHtml = \"\";\n let id = \"te-input-\" + rowObj.id + \"-\" + idSuffix;\n\n let inputType;\n if (typeof (rowObj.ext) !== \"undefined\" && typeof (rowObj.ext.inputType) !== \"undefined\") {\n inputType = rowObj.ext.inputType;\n }\n\n if (typeof (rowObj.inputID) !== \"undefined\") {\n id = rowObj.inputID;\n }\n\n const dataWIDs = \"data-paramid='\" + rowObj.id + \"' data-wids='\" + widgetArr.map(function (w) {\n if (typeof (w.widget) === \"object\") {\n return w.widget._id;\n } else {\n return w;\n }\n }).join(\",\") + \"'\";\n switch (rowObj.type) {\n case \"boolean\":\n const checked = value ? \" checked\" : \"\";\n inputHtml = \"<input id='\" + id + \"' \" + dataWIDs + \" type='checkbox' class='te-checkbox te-input'\" + checked + \">\"; break;\n case \"number\":\n if (typeof (inputType) !== \"undefined\") {\n if (inputType === \"textarea\") {\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' \" + dataWIDs + \">\" + value + \"</textarea>\";\n } else if (inputType === \"range\") {\n inputHtml = \"<input id='\" + id + \"' class='te-input' type='range' \" + dataWIDs + \" value='\" + value + \"' min='\" + rowObj.ext.min + \"' max='\" + rowObj.ext.max + \"' step='\" + rowObj.ext.step + \"'>\";\n }\n } else {\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-text te-input' \" + dataWIDs + \" value='\" + value + \"'>\";\n }\n break;\n case \"string\":\n if (typeof (inputType) !== \"undefined\") {\n if (inputType === \"textarea\") {\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' \" + dataWIDs + \">\" + value + \"</textarea>\";\n }\n } else {\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-text te-input' value='\" + value + \"' \" + dataWIDs + \">\";\n }\n break;\n case \"html-color\":\n const valueAttr = value === \"\" ? \"\" : \" value='\" + value + \"'\";\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-html-color-input te-input' \" + dataWIDs + \" \" + valueAttr + \">\";\n inputHtml += \"<input type='color' class='te-html-color-button te-input' \" + dataWIDs + \" \" + valueAttr + \">\";\n break;\n case \"set\":\n const options = _options(rowObj, value);\n inputHtml = \"<select id='\" + id + \"' class='te-select te-input'\" + dataWIDs + \">\" + options + \"</select>\";\n break;\n case \"array\":\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' data-type='array' \" + dataWIDs + \">\" + value + \"</textarea>\";\n break;\n default:\n break;\n }\n if (typeof (rowObj.ext.saveButton) !== \"undefined\") {\n inputHtml += \"<button id='\" + rowObj.ext.saveButtonID + \"'>\" + rowObj.ext.saveButton + \"</button>\";\n }\n return inputHtml;\n\n function _options(obj, val) {\n let options = \"\";\n obj.set.forEach(function (s) {\n const selected = s === val ? \" selected\" : \"\";\n options += \"<option value='\" + s + \"'\" + selected + \">\" + s + \"</option>\";\n });\n return options;\n }\n};\n\nexport class ThemeEditor extends HTMLWidget {\n _current_grouping;\n _showing_columns;\n _showing_data;\n _contentEditors;\n _showSettings;\n _defaultThemes;\n _widgetObjsById;\n _sharedProperties;\n getThemes;\n getSerials;\n getDefaultThemes;\n getDefaultSerials;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._current_grouping = undefined;\n this._showing_columns = undefined;\n this._showing_data = undefined;\n this.columns([\"Key\", \"Value\"]);\n this._contentEditors = [];\n this._showSettings = true;\n\n this._defaultThemes = [];\n\n this._widgetObjsById = {};\n }\n\n showSettings(_?) {\n if (!arguments.length) {\n return this._showSettings;\n }\n this._showSettings = _;\n return this;\n }\n\n onChange(widget, propID) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._placeholderElement.style(\"overflow\", \"auto\");\n }\n\n widgetProperty(widget, propID, _?) {\n if (_ === undefined) {\n return widget[propID]();\n }\n return widget[propID](_);\n }\n\n load(elmValue) { }\n\n save(themeName) { }\n\n needsPropTableRedraw() {\n const ret = document.getElementById(\"te-themeEditorOptions\") === null;\n return ret;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (tableNeedsRedraw(this)) {\n element.selectAll(\"#\" + this._id + \" > table\").remove();\n }\n this._current_grouping = this.paramGrouping();\n this._widgetObjsById[this._id] = this;\n this._sharedProperties = this.findSharedProperties(this.data());\n\n const needsPropertiesTableRedraw = this.needsPropTableRedraw();\n if (needsPropertiesTableRedraw && this.showSettings()) {\n const teParams = Persist.discover(this);\n for (const i in teParams) {\n if (teParams[i].ext.tags.indexOf(this.editorComplexity()) !== -1) {\n const teParamVal = this[teParams[i].id]();\n if (teParams[i].id === \"loadedTheme\" || teParams[i].id === \"loadedSerial\") {\n teParams[i].inputID = \"te-load-theme\";\n }\n teParams[i].input = tableInputHtml(teParams[i], teParamVal, [this._id], this._id);\n } else {\n delete teParams[i];\n }\n }\n domNode.innerHTML = this.propertiesTableHtml(teParams);\n const evt = document.createEvent(\"Events\");\n evt.initEvent(\"TE Properties Ready\", true, true);\n document.dispatchEvent(evt);\n }\n\n this.buildTableObjects(domNode, this._sharedProperties);\n\n this.initFunctionality(domNode);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n click(d) {\n }\n\n propertiesTableHtml(editorParams) {\n const tableObj = {\n id: \"te-themeEditorOptions\",\n label: \"Editor Options\",\n rowArr: []\n };\n const modeTableObj = {\n id: \"te-tableModeOptions\",\n label: this.themeMode() ? \"Save/Load Theme\" : \"Save/Load Serial\",\n rowArr: []\n };\n for (const i in editorParams) {\n if (this.themeMode()) {\n if (editorParams[i].ext.tags.indexOf(\"Theme\") === -1 && editorParams[i].ext.tags.indexOf(\"Serial\") === -1) {\n tableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n } else if (editorParams[i].ext.tags.indexOf(\"Theme\") !== -1) {\n modeTableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n }\n } else {\n if (editorParams[i].ext.tags.indexOf(\"Serial\") === -1 && editorParams[i].ext.tags.indexOf(\"Theme\") === -1) {\n tableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n } else if (editorParams[i].ext.tags.indexOf(\"Serial\") !== -1) {\n modeTableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n }\n }\n\n }\n let html = \"\";\n if (tableObj.rowArr.length > 0) {\n html += this.tableObjHtml(tableObj);\n }\n if (modeTableObj.rowArr.length > 0) {\n html += this.tableObjHtml(modeTableObj);\n }\n return html;\n }\n buildTableObjects(targetElement, propObjs) {\n let sectionObjs = {};\n if (this.themeMode()) {\n sectionObjs = {\n chartColorSection: {\n id: \"te-colorOptions\",\n label: \"Chart Colors\",\n rowObjArr: []\n },\n surfaceSection: {\n id: \"te-containerOptions\",\n label: \"Container Styles/Colors\",\n rowObjArr: []\n },\n fontSection: {\n id: \"te-fontOptions\",\n label: \"Font Styles/Colors\",\n rowObjArr: []\n }\n };\n } else {\n sectionObjs = {\n nonSurfaceSection: {\n id: \"te-chartOptions\",\n label: \"Chart Properties\",\n rowObjArr: []\n }\n };\n }\n for (const p in propObjs) {\n if (this.themeMode()) {\n if (p.toUpperCase().indexOf(\"FONT\") !== -1 && !(propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") !== -1 && p.toUpperCase().indexOf(\"COLOR\") !== -1)) {\n sectionObjs[\"fontSection\"].rowObjArr.push(propObjs[p]);\n } else if (p === \"paletteID\") {\n sectionObjs[\"chartColorSection\"].rowObjArr.push(propObjs[p]);\n } else if (propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") !== -1) {\n sectionObjs[\"surfaceSection\"].rowObjArr.push(propObjs[p]);\n }\n } else {\n if (propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") === -1) {\n sectionObjs[\"nonSurfaceSection\"].rowObjArr.push(propObjs[p]);\n }\n }\n }\n let html = \"\";\n for (const i in sectionObjs) {\n html += this.sharedPropertyTableHtml(sectionObjs[i]);\n }\n targetElement.innerHTML += html;\n }\n\n initFunctionality(elm) {\n const context = this;\n _expandCollapse(elm);\n _inputOnChange(elm);\n _inputOnClick(elm);\n function _inputOnClick(elm2) {\n if (context.showSettings()) {\n const saveBtn = document.getElementById(\"te-save-button\");\n saveBtn.onclick = function (e) {\n const clickedElm: any = e.target;\n const themeName = clickedElm.previousSibling.value;\n if (themeName.length > 1) {\n const loadSelect = document.getElementById(\"te-load-theme\");\n const loadOptions = loadSelect.getElementsByTagName(\"option\");\n let saveExists = false;\n for (const i in loadOptions) {\n const val = loadOptions[i].value;\n if (val === themeName) {\n saveExists = true;\n }\n }\n if (!saveExists) {\n loadSelect.innerHTML += \"<option value='\" + themeName + \"'>\" + themeName + \"</option>\";\n }\n clickedElm.previousSibling.value = \"\";\n (loadSelect as any).value = themeName;\n } else {\n alert(\"Save Name cannot be empty.\");\n }\n };\n }\n }\n function _inputOnChange(elm2) {\n const teInputs = elm2.getElementsByClassName(\"te-input\");\n for (const i in teInputs) {\n if (isNaN(parseInt(i))) break;\n const inputElm = teInputs[i];\n const inputID = inputElm.getAttribute(\"id\");\n if (inputID === \"te-load-theme\") {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n context.load(elm3.value);\n };\n } else if (inputID !== null && inputID.indexOf(\"te-input-themeMode\") !== -1) {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n context.themeMode(elm3.checked);\n\n const name = document.getElementById(\"te-load-theme\");\n const nameToLoad = name !== null ? (name as any).value : \"Default\";\n context.load(nameToLoad);\n };\n } else if (inputElm.tagName === \"INPUT\" || inputElm.tagName === \"SELECT\" || inputElm.tagName === \"TEXTAREA\") {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n\n let id = elm3.getAttribute(\"id\");\n\n if (elm3.className.split(\" \").indexOf(\"te-html-color-button\") !== -1) {\n id = elm3.previousSibling.getAttribute(\"id\");\n elm3.previousSibling.value = elm3.value;\n }\n const elmType = elm3.getAttribute(\"type\");\n const splitId = id.split(\"-\");\n const genericId = splitId.slice(0, splitId.length - 1).join(\"-\") + \"-\";\n\n const widsStr = elm3.getAttribute(\"data-wids\");\n const paramId = elm3.getAttribute(\"data-paramid\");\n const widArr = widsStr.split(\",\");\n widArr.forEach(function (wid) {\n const individualId = genericId + wid;\n const indElm = document.getElementById(individualId);\n if (elmType === \"checkbox\") {\n (indElm as any).checked = elm3.checked;\n context._widgetObjsById[wid][paramId](elm3.checked);\n } else if (elm3.getAttribute(\"data-type\") === \"array\") {\n (indElm as any).value = elm3.value;\n try {\n context._widgetObjsById[wid][paramId](JSON.parse(elm3.value));\n } catch (e) { }\n } else {\n (indElm as any).value = elm3.value;\n context._widgetObjsById[wid][paramId](elm3.value);\n\n if (indElm.className.split(\" \").indexOf(\"te-html-color-input\") !== -1) {\n (indElm.nextSibling as any).value = elm3.value;\n } else if (indElm.className.split(\" \").indexOf(\"te-html-color-button\") !== -1) {\n (indElm.previousSibling as any).value = elm3.value;\n }\n }\n });\n context.data().forEach(function (d) {\n d.render();\n });\n };\n }\n }\n }\n function _expandCollapse(elm2) {\n const tableArr = elm2.getElementsByClassName(\"te-section-table\");\n for (const i in tableArr) {\n if (typeof (tableArr[i].getElementsByTagName) === \"function\") {\n const thead = tableArr[i].getElementsByTagName(\"thead\");\n thead[0].onclick = function (e) {\n let elm3 = e.toElement;\n if (elm3.tagName === \"TH\") {\n elm3 = elm3.parentElement.parentElement;\n }\n const parent = elm3.parentElement;\n let tbodyClass = \"\";\n if (parent.className.split(\" \").indexOf(\"expanded\") === -1) {\n parent.className = \"te-section-table expanded\";\n tbodyClass = \"shown\";\n } else {\n parent.className = \"te-section-table collapsed\";\n tbodyClass = \"hidden\";\n }\n const tbody = parent.getElementsByTagName(\"tbody\");\n tbody[0].className = tbodyClass;\n };\n }\n }\n const sharedRowArr = elm2.getElementsByClassName(\"sharedPropertyRow\");\n for (const n in sharedRowArr) {\n if (typeof (sharedRowArr[n].getElementsByClassName) === \"function\") {\n const label = sharedRowArr[n].getElementsByClassName(\"te-label\");\n label[0].onclick = function (e) {\n const elm3 = e.toElement;\n const parent = elm3.parentElement;\n let subRowClass = \"\";\n if (parent.className.split(\" \").indexOf(\"expanded\") === -1) {\n parent.className = \"sharedPropertyRow expanded\";\n subRowClass = \"shown\";\n } else {\n parent.className = \"sharedPropertyRow collapsed\";\n subRowClass = \"hidden\";\n }\n let nextSib = parent.nextSibling;\n while (nextSib !== null) {\n if (nextSib.className.split(\" \").indexOf(\"sharedPropertyRow\") === -1) {\n nextSib.className = \"propertyRow \" + subRowClass;\n nextSib = nextSib.nextSibling;\n } else {\n nextSib = null;\n }\n }\n };\n }\n }\n }\n }\n sharedPropertyTableHtml(sectionObj) {\n const tableObj = {\n id: sectionObj.id,\n label: sectionObj.label,\n rowArr: []\n };\n sectionObj.rowObjArr.forEach(function (rowObj) {\n rowObj.arr.forEach(function (widgetObj, widgetIdx) {\n if (widgetIdx === 0) {\n tableObj.rowArr.push({\n th: _sharedPropertyLabel(rowObj),\n td: _sharedPropertyInput(rowObj),\n trClass: \"sharedPropertyRow collapsed\"\n });\n }\n tableObj.rowArr.push({\n th: _propertyLabel(widgetObj),\n td: _propertyInput(rowObj, widgetIdx),\n trClass: \"propertyRow hidden\"\n });\n });\n });\n\n return this.tableObjHtml(tableObj);\n\n function _propertyLabel(widgetObj) {\n const splitClass = widgetObj.widget.classID().split(\"_\");\n const displayClass = splitClass.join(\"/\");\n return displayClass + \" <i>[\" + widgetObj.widget._id + \"]</i>\";\n }\n function _sharedPropertyLabel(rowObj) {\n return camelizeString(rowObj.id);\n }\n\n function _propertyInput(rowObj, idx) {\n const value = _value(rowObj, idx);\n const html = tableInputHtml(rowObj, value, [rowObj.arr[idx]], rowObj.arr[idx].widget._id);\n return html;\n\n function _value(rowObj2, idx2) {\n const value2 = rowObj2.arr[idx2].widget[rowObj2.id]();\n return value2 !== null ? value2 : \"\";\n }\n }\n function _sharedPropertyInput(rowObj) {\n const value = _sharedValue(rowObj);\n const html = tableInputHtml(rowObj, value, rowObj.arr, \"shared\");\n return html;\n\n function _sharedValue(rowObj2) {\n const value2 = rowObj2.arr[0].widget[rowObj2.id]();\n rowObj2.arr.forEach(function (w, i) {\n if (value2 !== w.widget[w.id]()) {\n return \"\";\n }\n });\n if (value2 !== null) {\n if (rowObj2.type === \"array\") {\n return JSON.stringify(value2);\n }\n return value2;\n }\n return \"\";\n }\n }\n }\n\n tableObjHtml(tableObj) {\n let html = \"<table id='\" + tableObj.id + \"' class='te-section-table expanded'>\";\n html += \"<thead><tr><th colspan='2'>\" + tableObj.label + \"</th></tr></thead>\";\n html += \"<tbody>\";\n tableObj.rowArr.forEach(function (rowObj) {\n html += this.tableRowObjHtml(rowObj);\n }, this);\n html += \"</tbody>\";\n return html + \"</table>\";\n }\n tableRowObjHtml(rowObj) {\n let html = typeof (rowObj.trClass) !== \"undefined\" ? \"<tr class='\" + rowObj.trClass + \"'>\" : \"<tr>\";\n html += \"<th class='te-label'>\" + rowObj.th + \"</th>\";\n html += \"<td>\" + rowObj.td + \"</td>\";\n return html + \"</tr>\";\n }\n\n setWidgetObjsById(widgetProp) {\n const context = this;\n const val = widgetProp.widget[widgetProp.id]();\n if (widgetProp.type === \"widgetArray\") {\n val.forEach(function (widget) {\n context._widgetObjsById[widget._id] = widget;\n });\n } else if (widgetProp.type === \"widget\" && val !== null) {\n this._widgetObjsById[val._id] = val;\n }\n }\n checkTagFilter(tagArr) {\n const allowTags = [\"Basic\"];\n let ret = false;\n tagArr.forEach(function (tag) {\n if (allowTags.indexOf(tag) !== -1) {\n ret = true;\n }\n });\n return ret;\n }\n findSharedProperties(data) {\n const context = this;\n let propsByID;\n if (typeof (data) !== \"undefined\" && data.length > 0) {\n let allProps = [];\n propsByID = {};\n const surfacePropsByID = {};\n const nonSurfacePropsByID = {};\n data.forEach(function (widget) {\n const gpResponse = _getParams(widget, 0);\n allProps = allProps.concat(gpResponse);\n });\n allProps.forEach(function (prop) {\n if ([\"widget\", \"widgetArray\"].indexOf(prop.type) !== -1) {\n context.setWidgetObjsById(prop);\n } else if (context.checkTagFilter(prop.ext.tags)) {\n const tempIdx = prop.id;\n if (prop.widget._class.indexOf(\"Surface\") !== -1) {\n if (typeof (surfacePropsByID[tempIdx]) === \"undefined\") {\n surfacePropsByID[tempIdx] = { arr: [] };\n }\n surfacePropsByID[tempIdx].id = prop.id;\n surfacePropsByID[tempIdx].description = prop.description;\n surfacePropsByID[tempIdx].type = prop.type;\n surfacePropsByID[tempIdx].set = prop.set;\n surfacePropsByID[tempIdx].ext = prop.ext;\n surfacePropsByID[tempIdx].arr.push(prop);\n } else {\n if (typeof (nonSurfacePropsByID[tempIdx]) === \"undefined\") {\n nonSurfacePropsByID[tempIdx] = { arr: [] };\n }\n nonSurfacePropsByID[tempIdx].id = prop.id;\n nonSurfacePropsByID[tempIdx].description = prop.description;\n nonSurfacePropsByID[tempIdx].type = prop.type;\n nonSurfacePropsByID[tempIdx].set = prop.set;\n nonSurfacePropsByID[tempIdx].ext = prop.ext;\n nonSurfacePropsByID[tempIdx].arr.push(prop);\n }\n if (typeof (propsByID[tempIdx]) === \"undefined\") {\n propsByID[tempIdx] = { arr: [] };\n }\n propsByID[tempIdx].id = prop.id;\n propsByID[tempIdx].description = prop.description;\n propsByID[tempIdx].type = prop.type;\n propsByID[tempIdx].set = prop.set;\n propsByID[tempIdx].ext = prop.ext;\n propsByID[tempIdx].arr.push(prop);\n }\n });\n }\n return propsByID;\n\n function _getParams(widgetObj, depth) {\n let retArr = [];\n if (widgetObj !== null) {\n const paramArr = Persist.discover(widgetObj);\n paramArr.forEach(function (param, i1) {\n if (typeof (param.ext.tags) !== \"undefined\") {\n retArr.push({\n id: param.id,\n type: param.type,\n description: param.description,\n set: param.set,\n ext: param.ext,\n widget: widgetObj\n });\n }\n if (param.type === \"widgetArray\") {\n const childWidgetArray = context.widgetProperty(widgetObj, param.id);\n childWidgetArray.forEach(function (childWidget) {\n const cwArr = _getParams(childWidget, depth + 1);\n retArr = retArr.concat(cwArr);\n });\n } else if (param.type === \"widget\") {\n const childWidget = context.widgetProperty(widgetObj, param.id);\n const temp = _getParams(childWidget, depth + 1);\n retArr = retArr.concat(temp);\n }\n });\n }\n return retArr;\n }\n }\n\n themeMode: { (): boolean; (_: boolean): ThemeEditor };\n themeMode_exists: () => boolean;\n saveTheme: { (): string; (_: string): ThemeEditor };\n saveTheme_exists: () => boolean;\n loadedTheme: { (): string; (_: string): ThemeEditor };\n loadedTheme_exists: () => boolean;\n saveSerial: { (): string; (_: string): ThemeEditor };\n saveSerial_exists: () => boolean;\n loadedSerial: { (): string; (_: string): ThemeEditor };\n loadedSerial_exists: () => boolean;\n showColumns: { (): boolean; (_: boolean): ThemeEditor };\n showColumns_exists: () => boolean;\n showData: { (): boolean; (_: boolean): ThemeEditor };\n showData_exists: () => boolean;\n shareCountMin: { (): number; (_: number): ThemeEditor };\n shareCountMin_exists: () => boolean;\n paramGrouping: { (): string; (_: string): ThemeEditor };\n paramGrouping_exists: () => boolean;\n editorComplexity: { (): string; (_: string): ThemeEditor };\n editorComplexity_exists: () => boolean;\n sectionTitle: { (): string; (_: string): ThemeEditor };\n sectionTitle_exists: () => boolean;\n collapsibleSections: { (): boolean; (_: boolean): ThemeEditor };\n collapsibleSections_exists: () => boolean;\n}\nThemeEditor.prototype._class += \" other_ThemeEditor\";\n\nThemeEditor.prototype.publish(\"themeMode\", true, \"boolean\", \"Edit default values\", null, { tags: [\"Basic\"] });\nThemeEditor.prototype.publish(\"saveTheme\", \"\", \"string\", \"Save Theme\", null, { tags: [\"Basic\", \"Theme\"], saveButton: \"Save\", saveButtonID: \"te-save-button\" });\nThemeEditor.prototype.publish(\"loadedTheme\", getThemeNames(1), \"set\", \"Loaded Theme\", getThemeNames(), { tags: [\"Basic\", \"Theme\"] });\nThemeEditor.prototype.publish(\"saveSerial\", \"\", \"string\", \"Save Serial\", null, { tags: [\"Basic\", \"Serial\"], saveButton: \"Save\", saveButtonID: \"te-save-button\" });\nThemeEditor.prototype.publish(\"loadedSerial\", getSerialNames(0), \"set\", \"Loaded Serial\", getSerialNames(), { tags: [\"Basic\", \"Serial\"] });\nThemeEditor.prototype.publish(\"showColumns\", true, \"boolean\", \"Show Columns\", null, { tags: [\"Intermediate\"] });\nThemeEditor.prototype.publish(\"showData\", true, \"boolean\", \"Show Data\", null, { tags: [\"Intermediate\"] });\nThemeEditor.prototype.publish(\"shareCountMin\", 1, \"number\", \"Share Count Min\", null, { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"paramGrouping\", \"By Param\", \"set\", \"Param Grouping\", [\"By Param\", \"By Widget\"], { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"editorComplexity\", \"Basic\", \"set\", \"Choose what publish properties to display within the editor.\", [\"Basic\", \"Intermediate\", \"Advanced\", \"Private\"], { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"sectionTitle\", \"\", \"string\", \"Section Title\", null, { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"collapsibleSections\", true, \"boolean\", \"Collapsible Sections\", null, { tags: [\"Intermediate\"] });\n\nThemeEditor.prototype.getThemes = getThemes;\nThemeEditor.prototype.getSerials = getSerials;\nThemeEditor.prototype.getDefaultThemes = getThemeNames;\nThemeEditor.prototype.getDefaultSerials = getSerialNames;\n"],"mappings":"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"}
1
+ {"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","bind","f","setTimeout","clearNow","Timer","_call","_time","_next","timer","callback","delay","time","t","restart","wake","e","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","stop","Audio","_super","_this","_tag","_sections","section","label","offset","beatLength","beatCount","arguments","length","endOffset","getType","fileExt","enter","domNode","element","context","on","onPlay","update","selectAll","data","source","append","attr","createTimer","params","startTime","beat","d3Timer","onTick","key","i","play","_element","d2","node","load","HTMLWidget","_class","publish","autoComplete","options","document","querySelector","o","selector","minChars","offsetLeft","offsetTop","cache","menuClass","renderItem","item","search","replace","re","RegExp","split","join","onSelect","term","k","elems","querySelectorAll","that","sc","createElement","className","autocompleteAttr","getAttribute","setAttribute","last_val","updateSC","resize","next","rect","getBoundingClientRect","style","left","Math","round","pageXOffset","documentElement","scrollLeft","top","bottom","pageYOffset","scrollTop","width","right","display","classList","remove","maxHeight","parseInt","getComputedStyle","currentStyle","suggestionHeight","offsetHeight","scrTop","selTop","addEvent","body","appendChild","live","sel","hasClass","v","value","add","blurHandler","over_sb","activeElement","focus","suggest","val","s","innerHTML","keydownHandler","event","keyCode","which","nextSibling","previousSibling","childNodes","preventDefault","keyupHandler","part","slice","focusHandler","destroy","removeEvent","removeAttribute","removeChild","el","contains","test","type","handler","attachEvent","addEventListener","detachEvent","removeEventListener","elClass","cb","found","target","srcElement","parentElement","module","exports","styleInject","css","ref","insertAt","head","getElementsByTagName","firstChild","insertBefore","styleSheet","cssText","createTextNode","AutoCompleteText","autoCompleteTextData","_db","rollupView","textColumn","valueColumn","entries","map","row","idx","text","values","origRow","_span","_prompt","id","_input","placeholder","textboxWidth_exists","textboxWidth","_prevMinCharsText","minCharsText","_autoComplete","context_1","AutoComplete","field","fieldByLabel","toLowerCase","filter","indexOf","rowIdx","click","rowToObj","exit","column","selected","optional","columns","newInterval","floori","offseti","count","date","floor","ceil","d0","d1","step","range","start","previous","push","setTime","end","every","isFinite","days","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","months","setMonth","getMonth","getFullYear","year","setFullYear","d3TimeYear","CalendarHeatMap","Utility","SimpleSelectionMixin","calendarData","fields","dateParser","d3TimeParse","datePattern","valueFormatter","aggrDeltaColumn","d3Format","_prevDateColumn","dateColumn","_prevAggrType","aggrType","_prevAggrColumn","aggrColumn","_prevAggrDeltaColumn","_view","aggregateView","dateKey","formattedValues","aggregate","origRows","calcDelta","Close","Open","d3Select","parentNode","_selection","widgetElement","_palette","switch","paletteID","cellSize","height","mappedData","d3Map","dateExtent","d3Extent","svg","d3Range","svgUpdate","each","g","_d3TimeMonths","d3TimeMonths","_months","forEach","_m","calcMonthPath","monthStrokeColor","monthStrokeWidth","merge","select","dataExtent","max","abs","dayRect","d3TimeDays","dayRectUpdate","data2","get","dblclick","d3TimeWeek","dayStrokeColor","dayStrokeWidth","has","monthPath","w0","w1","mixin","Palette","rainbow","tags","disable","w","espValFix","trim","Row","espRowFix","retVal","isNaN","Number","ESPUrl","_protocol","_hostname","url","_","_url","parser","href","tmp","substring","tmpItem","decodeURIComponent","protocol","hostname","_port","port","_pathname","pathname","_search","_params","_hash","hash","_host","host","param","isWsWorkunits","isWorkunitResult","isWsEcl","isWsWorkunits_GetStats","getUrl","overrides","undefined","ESPMappings","mappings","resultName","_mappings","_reverseMappings","origField","exists","mapResult","response","mapping","x","y","mapResponse","serialize","obj","str","encodeURIComponent","jsonp","request","Promise","resolve","reject","respondedTimeout","callbackName","random","doCallback","script","src","progress","Error","Comms","_proxyMappings","_timeout","_hipieResults","hipieResults","_hipieResultsLength","newUrlParts","newUrl","espUrl","IP","PORT","PATH","ajax","method","uri","xhr","XMLHttpRequest","onload","status","JSON","parse","statusText","onerror","open","setRequestHeader","send","post","proxyMappings","Basic","cacheCalls","_cacheCalls","localStorage","getItem","console","error","catch","then","response2","setItem","stringify","removeItem","locateRoxieResponse","locateRoxieException","Exception","WsECL","_target","_query","apply","query","pathParts","queryParts","constructUrl","_response","reduce","previousValue","exception","index","array","Source","Code","Message","WsWorkunits","_wuid","_jobname","_sequence","_resultName","_fetchResultNamesPromise","_fetchResultPromise","_resultNameCache","_resultNameCacheCount","wuid","sequence","urlParts","urlParts2","jobname","appendParam","_fetchResult","skipMapping","resultname","_start","_count","Wuid","ResultName","SuppressXmlSchema","Start","Count","context_2","Result","responseKey","_total","Total","fetchResult","context_3","WUQuery","_request","Jobname","WUQueryResponse","Workunits","ECLWorkunit","fetchResultNames","url_1","request_1","TruncateEclTo64k","IncludeExceptions","IncludeGraphs","IncludeSourceFiles","IncludeResults","IncludeResultsViewNames","IncludeVariables","IncludeTimers","IncludeResourceURLs","IncludeDebugValues","IncludeApplicationValues","IncludeWorkflows","IncludeXmlSchemas","SuppressResultSchemas","context_4","WUInfoResponse","Workunit","Archived","warn","Results","ECLResult","Name","fetchResults","fetchArray","all","responseArray","postFilter","request_key","WsWorkunits_GetStats","HIPIERoxie","HIPIEWorkunit","HIPIEDatabomb","createESPConnection","URL","testURL","WUGetStatsResponse","Statistics","WUStatisticItem","name","hipieKey","from","refresh","filterResults","request2","changedFilter","hipieResult","outputFilter","filters","isRange","fieldid","key2","matches","databomb","_databomb","databombOutput","func","nestedRowFix","enableBasicCommsCache","basicCommsCache","BasicComms","Comms.Basic","baseUrl","WUResult","_name","_xmlSchema","LogicalFile","logicalName","_logicalName","RoxieQuery","queryName","pop","_queryName","trimRight","results","createResult","_espUrl","dataSource","Comms.ESPUrl","requestStr","wuQuery","Type","Cluster","RoxieCluster","Owner","State","StartDate","EndDate","ECL","LogicalFileSearchType","After","Before","PageSize","PageStartFrom","PageEndAt","LastNDays","Sortby","Descending","CacheHint","wuInfo","includeKey","wuUpdate","appData","appID","persistString","ApplicationValues","ApplicationValue","Application","Value","result","filterIdx","fKey","WUResultResponse","XmlSchema","LogicalName","simpleheat","canvas","_canvas","getElementById","_ctx","getContext","_width","_height","_max","_data","defaultRadius","defaultGradient","point","clear","radius","r","blur","circle","_circle","_createCanvas","ctx","r2","_r","shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","beginPath","arc","PI","closePath","fill","gradient","grad","createLinearGradient","addColorStop","fillStyle","fillRect","_grad","getImageData","draw","minOpacity","clearRect","len","globalAlpha","drawImage","colored","_colorize","putImageData","pixels","j","_simpleheat","_simpleheat.default","HeatMap","_size","_heat","useClonedPalette","cloneNotExists","topLeftX_exists","topLeftY_exists","bottomRightX_exists","bottomRightY_exists","skewedData","usePalette","colorCount","size","CanvasWidget","retArr","arr","box","coordsWidth","bottomRightX","topLeftX","coordsHeight","bottomRightY","topLeftY","pixelValueX","pixelValueY","n","newX","newY","HPCCBadge","testData","root","logo","logo_accent","line","circle_accent","logo_circles","circle_1","circle_2","circle_3","circle_4","circle_5","circle_6","circle_7","circle_8","text_hpccsystems","text_r","text_tm","bbox","getBBox","centerX","centerY","scale","min","animation","transition","duration","ease","SVGWidget","Html","overflowX_exists","overflowX","overflowY_exists","overflowY","html","IconList","_entity_list","_content_list","_list","HorizontalList","orientation_default","flexWrap_default","listWidgets","widgets","updateListProperties","updateEntityProperties","htmlColumnIndex_exists","htmlColumnIndex","VerticalList","Entity","render","list","disableScroll","widgetsFlexBasis","iconSize","concat","entity","icon","iconColumnIndex_exists","iconColumnIndex","iconColor","iconColorColumnIndex_exists","iconColorColumnIndex","iconDiameter","iconPaddingPercent","Paginator","_tNumPages","_numList","postUpdate","paginator","side","classed","property","pageNumber","_onSelect","numItems","itemsPerPage","adjacentPages","page","li","a","linkText","span","d3Event","order","Table","_paginator","_selectionBag","Selection","_selectionPrevClick","_paginatorTableSpacing","tableDiv","topMargin","showHeader","fixedHeader","thead","isHidden","colIdx","pivot","hiddenColumns","_empty_col_idx_arr","tableColumns","tableData","col","noTransform","transform","calcFieldsIndex","colLen","visibleCount","getEmptyColumnIdxArr","ret_arr","hideEmptyColumns","col_idx","column_is_empty","row_idx","_placeholderElement","table","fixedHead","fixedHeadTable","fixedThead","unfixedThead","tbody","tfoot","fixedCol","fixedColTable","fixedColHead","fixedColHeadRow","fixedColBody","fixedColFoot","fixedColFootRow","sortByFieldIndex_exists","_prevSortByFieldIndex","sortByFieldIndex","_prevDescending","descending","multiSort","reverse","_hasChildWidgets","thSel","thUpdate","element2","headerClick","theadRowBackgroundColor","theadCellBorderColor","theadFontColor","theadFontSize","theadFontFamily","fieldsIdx","paginationLimit","pagination","ipp","_calcRowsPerPage","startIndex","itemsOnPage","tData","topN","totalRow","totalledLabel","totalledColumns","sum","tfSel","tfootRowBackgroundColor","tfootCellBorderColor","tfootFontColor","tfootFontSize","renderHtmlDataCells","rowsSel","rowsUpdate","_d","selectionBagClick","applyRowStyles","getBodyRow","applyFirstColRowStyles","getFixedRow","fixedLeftRows","empty","tbodyRows","applyStyleToRows","isSelected","_createSelectionObject","_id","cellsSel","_trIdx","cell","rowInfo","tdContents","tdIdx","alignment","getColumnAlignment","verticalAlign","Widget","widgetDiv","minWidgetWidth","minWidgetHeight","widgetDiv2","_parentWidget","lazyRender","tableMarginHeight","fixedColWidth","fixedColThSel","fixedColumn","fixedColThUpdate","fixedColTrSel","fixedColTrUpdate","fixedColTdSel","fixedColTdUpdate","fixedColFootTdSel","fixedColFootTdUpdate","fixedSize","setColumnWidths","newTableHeight_1","finalWidth_1","calcWidth","calcHeight","setOnScrollEvents","hasVScroll","Platform","getScrollbarWidth","hasHScroll","rows","firstRow","tds","d3SelectAll","totalWidth","tdWidths","offsetWidth","thwidth","tdwidth","usewidth","scrollNode","margHeight","onscroll","topDelta","leftDelta","_generateTempRow","trow","th","thHeight","clientHeight","tfootHeight","tmpRow","tcellHeight","paginatorHeight","sort","selection","set","multiSelect","shiftKey","inRange_1","rows_1","i2","lastInRangeRow","selObj","ctrlKey","applyHoverRowStyles","tbodyHoverRowFontColor","tbodyHoverRowBackgroundColor","applySelectedRowStyles","tbodySelectedRowFontColor","tbodySelectedRowBackgroundColor","isFirstCol","dataRow","datum","tbodyFirstColFontColor","tbodyFontColor","tbodyFirstColBackgroundColor","tableZebraColor_exists","tbodyRowBackgroundColor","tableZebraColor","tr","__prop_type","stringAlign","numberAlign","serializeState","deserializeState","state","publishProxy","_htmlColorBlock","hexColor","Legend","isRainbow","widget","getWidget","targetWidget","_targetWidget","_targetWidgetMonitor","monitor","newProp","oldProp","classID","chart","getPalette","ordinal","dataArr","oPalette_1","dataFamily","rPalette","format","rainbowFormat","steps","rainbowBins","weightMin","_dataMinWeight","weightMax","_dataMaxWeight","stepWeightDiff","mid","orientation","tableRect","elementRect","onClick","onDblClick","onMouseOver","rowData","origGetBBox","_scale","MorphText","fontSize","_fontWidth","_textElement","dateTime","seconds","getSeconds","toString","minutes","getMinutes","hours","getHours","ampm","newText","anchor","_origText","usedChars_1","chars","charCodeAt","NestedTable","origColumns","_columns","origData","Column","owner","_owner","valid","headerLabel","PropertyExt","MouseHoverColumn","hoverValue","hoverList","getIds","ColumnDropdown","columnIndex","ColumnDropdownList","Opportunity","_drawStartPos","groupCount","h","tooltipdiv","dropDownOption","opportunityId","cur_group","groups","paddingTop","nodeRectHeight","nodeRectWidthPadding","nodeRectWidth","group","groupHeadings","headerLabels","previousGroup","currentGroup","node_date_change","htmlInput","mouseHover","prevDate","prevdate","fromDate","curdate","pageY","node_prev_group","tooltipHtml","delta","prev_group","changeLines","node_cur_group","colIndex","columnData","this_1","dropdownList","unshift","discover","publishedProperties","widgetPropertyWalker","widget2","visitor","widgetWalker","propertyWalker","serializeThemeToObject","propObj","publishedProperty","origDefaultValue","defaultValue","ret","_isFilterMatch","classParts","HasOwnProperty","serializeToObject","includeData","includeState","__class","_idSeed","__id","version","__version","__properties","childWwidget2","childWwidget","vertices","__vertices","__data","__state","editor_input","setProperty","autoExpand","themeObj","widget3","applyTheme","hasProperties","PropertyEditor","_childPE","d3Local","_show_header","watchDepth","_parentPropertyEditor","_show_settings","parentPropertyEditor","depth","parent","show_header","show_settings","rootWidgets","_selectedItems","_owningWidget","excludeObjs","tableElement","enterHeader","updateHeader","renderInputs","watchWidget","_watch","__hpcc_debug","info","_paramId","newVal","oldVal","peInputIcon","refreshExpandIcon","sortIcon","refreshSortIcon","hideNonWidgets","spanText","refreshHideParamsIcon","peInputCount","peInputCollapsedCount","collapsed","newIcon","increment","sorting","types","sorting_options","icons","__meta_sorting","ext","hideParamsIcon","gatherDataTree","children","Persist.discover","prop","getDataTree","_rowSorting","paramArr","typeOrder_1","filterInputs","discArr","filterTags","excludeTags","excludeParams","_idx","_i","_a","widgetName","excludeParam","class","some","showFields","showData","inputCell","enterInputs","description","updateWidgetRow","updateInputs","tmpWidget","widgetArr","lastModified_1","noEmpties","widgetDisabled","changed","autoExpandWidget","peInput","peInputElement","clickTarget","peDiv","topWidget","topPropEditor","oldValue","propEditor","broadcast","checked","multiline","isIE","_key","Persist.serialize","_widgetOrig","Grid","postSelectionChange","RadioCheckbox","rcData","view","sort_exists","descending_1","l","_label","_Checkbox","radioCheckbox","checkboxDiv","selectedData","handleClick","rcDiv","multiple","Select","selectData","_select","options_dom_node","optionNode","selectSize","option","optionUpdate","_localStorage","mod","hasLocalStorage","getThemes","g_defaultThemes","getSerials","g_defaultSerials","getThemeNames","loadedThemes","themes","themeName","getSerialNames","loadedSerials","serials","serialName","camelizeString","toUpperCase","tableInputHtml","rowObj","idSuffix","inputType","inputHtml","inputID","dataWIDs","valueAttr","_options","saveButtonID","saveButton","ThemeEditor","_current_grouping","_showing_columns","_showing_data","_contentEditors","_showSettings","_defaultThemes","_widgetObjsById","showSettings","onChange","propID","widgetProperty","elmValue","save","needsPropTableRedraw","needsRedraw","_group_params_by","showColumns","paramGrouping","_sharedProperties","findSharedProperties","teParams","editorComplexity","teParamVal","input","propertiesTableHtml","evt","createEvent","initEvent","dispatchEvent","buildTableObjects","initFunctionality","editorParams","tableObj","rowArr","modeTableObj","themeMode","td","trClass","tableObjHtml","targetElement","propObjs","sectionObjs","chartColorSection","rowObjArr","surfaceSection","fontSection","nonSurfaceSection","sharedPropertyTableHtml","elm","elm2","tableArr","getElementsByClassName","onclick","elm3","toElement","tagName","tbodyClass","sharedRowArr","subRowClass","nextSib","_expandCollapse","teInputs","inputElm","onchange","nameToLoad","elmType","splitId","genericId","widsStr","paramId","wid","individualId","indElm","_inputOnChange","clickedElm","loadSelect","loadOptions","saveExists","alert","_inputOnClick","sectionObj","widgetObj","widgetIdx","_sharedPropertyLabel","_sharedPropertyInput","_propertyLabel","_propertyInput","rowObj2","idx2","value2","_sharedValue","tableRowObjHtml","setWidgetObjsById","widgetProp","checkTagFilter","tagArr","allowTags","tag","propsByID","allProps_1","surfacePropsByID_1","nonSurfacePropsByID_1","gpResponse","_getParams","tempIdx","i1","childWidget","cwArr","temp","getDefaultThemes","getDefaultSerials","espConnection","Comms.createESPConnection","Comms.WsWorkunits","colIdx_1"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/d3-timer/src/timer.js","../src/Audio.ts","../../../node_modules/javascript-autocomplete/auto-complete.js","../../../node_modules/style-inject/dist/style-inject.es.js","../src/AutoCompleteText.ts","../../../node_modules/d3-time/src/interval.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/month.js","../../../node_modules/d3-time/src/year.js","../src/CalendarHeatMap.ts","../src/Comms.ts","../src/ESP.ts","../../../node_modules/simpleheat/simpleheat.js","../src/HeatMap.ts","../src/HPCCBadge.ts","../src/Html.ts","../src/IconList.ts","../src/Paginator.ts","../src/Table.ts","../src/Legend.ts","../src/MorphText.ts","../src/NestedTable.ts","../src/Opportunity.ts","../src/Persist.ts","../src/PropertyEditor.ts","../src/RadioCheckbox.ts","../src/Select.ts","../src/ThemeEditor.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/other\";\r\nexport const PKG_VERSION = \"2.15.2\";\r\nexport const BUILD_VERSION = \"2.104.5\";\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { timer as d3Timer } from \"d3-timer\";\n\nexport class Audio extends HTMLWidget {\n _sections;\n\n constructor() {\n super();\n this._tag = \"audio\";\n\n this._sections = {};\n }\n\n section(label, offset, beatLength, beatCount) {\n if (!arguments.length) return this._sections;\n if (arguments.length === 1) return this._sections[label];\n this._sections[label] = {\n label,\n offset,\n beatLength,\n beatCount,\n endOffset: offset + beatCount * beatLength\n };\n return this;\n }\n\n getType(fileExt) {\n switch (fileExt) {\n case \"mp3\":\n return \"audio/mpeg; codecs='mp3'\";\n case \"ogg\":\n return \"audio/ogg; codecs='vorbis'\";\n }\n return \"\";\n }\n\n enter(domNode, element) {\n const context = this;\n element.on(\"play\", function (d) { context.onPlay(d); });\n }\n\n update(domNode, element) {\n const source = element.selectAll(\"source\").data(this.source(), function (d) { return d; });\n source.enter().append(\"source\")\n .attr(\"src\", function (d) { return d; })\n ;\n }\n\n createTimer(params, startTime, beat) {\n const context = this;\n d3Timer(function () {\n context.onTick(params.label, beat, params);\n return true;\n }, beat * params.beatLength, startTime + params.offset);\n }\n\n onTick(label, beat, params) {\n }\n\n onPlay(d) {\n const startTime = Date.now();\n for (const key in this._sections) {\n const section = this._sections[key];\n for (let i = 0; i < section.beatCount; ++i) {\n this.createTimer(section, startTime, i);\n }\n }\n }\n\n play(d) {\n const context = this;\n this._element.on(\"canplaythrough\", function (d2) {\n context.node().play();\n });\n this.node().load();\n }\n\n source: { (): string; (_: string): Audio };\n source_exists: () => boolean;\n}\nAudio.prototype._class += \" other_Audio\";\n\nAudio.prototype.publish(\"source\", \"\", \"string\", \"Audio Source\");\n","/*\n JavaScript autoComplete v1.0.5\n Copyright (c) 2014 Simon Steinberger / Pixabay\n GitHub: https://github.com/Pixabay/JavaScript-autoComplete\n License: http://www.opensource.org/licenses/mit-license.php\n*/\n\nvar autoComplete = (function(){\n // \"use strict\";\n function autoComplete(options){\n if (!document.querySelector) return;\n\n // helpers\n function hasClass(el, className){ return el.classList ? el.classList.contains(className) : new RegExp('\\\\b'+ className+'\\\\b').test(el.className); }\n\n function addEvent(el, type, handler){\n if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler);\n }\n function removeEvent(el, type, handler){\n // if (el.removeEventListener) not working in IE11\n if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler);\n }\n function live(elClass, event, cb, context){\n addEvent(context || document, event, function(e){\n var found, el = e.target || e.srcElement;\n while (el && !(found = hasClass(el, elClass))) el = el.parentElement;\n if (found) cb.call(el, e);\n });\n }\n\n var o = {\n selector: 0,\n source: 0,\n minChars: 3,\n delay: 150,\n offsetLeft: 0,\n offsetTop: 1,\n cache: 1,\n menuClass: '',\n renderItem: function (item, search){\n // escape special characters\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n var re = new RegExp(\"(\" + search.split(' ').join('|') + \")\", \"gi\");\n return '<div class=\"autocomplete-suggestion\" data-val=\"' + item + '\">' + item.replace(re, \"<b>$1</b>\") + '</div>';\n },\n onSelect: function(e, term, item){}\n };\n for (var k in options) { if (options.hasOwnProperty(k)) o[k] = options[k]; }\n\n // init\n var elems = typeof o.selector == 'object' ? [o.selector] : document.querySelectorAll(o.selector);\n for (var i=0; i<elems.length; i++) {\n var that = elems[i];\n\n // create suggestions container \"sc\"\n that.sc = document.createElement('div');\n that.sc.className = 'autocomplete-suggestions '+o.menuClass;\n\n that.autocompleteAttr = that.getAttribute('autocomplete');\n that.setAttribute('autocomplete', 'off');\n that.cache = {};\n that.last_val = '';\n\n that.updateSC = function(resize, next){\n var rect = that.getBoundingClientRect();\n that.sc.style.left = Math.round(rect.left + (window.pageXOffset || document.documentElement.scrollLeft) + o.offsetLeft) + 'px';\n that.sc.style.top = Math.round(rect.bottom + (window.pageYOffset || document.documentElement.scrollTop) + o.offsetTop) + 'px';\n that.sc.style.width = Math.round(rect.right - rect.left) + 'px'; // outerWidth\n if (!resize) {\n that.sc.style.display = 'block';\n that.sc.classList.remove('hide')\n if (!that.sc.maxHeight) { that.sc.maxHeight = parseInt((window.getComputedStyle ? getComputedStyle(that.sc, null) : that.sc.currentStyle).maxHeight); }\n if (!that.sc.suggestionHeight) that.sc.suggestionHeight = that.sc.querySelector('.autocomplete-suggestion').offsetHeight;\n if (that.sc.suggestionHeight)\n if (!next) that.sc.scrollTop = 0;\n else {\n var scrTop = that.sc.scrollTop, selTop = next.getBoundingClientRect().top - that.sc.getBoundingClientRect().top;\n if (selTop + that.sc.suggestionHeight - that.sc.maxHeight > 0)\n that.sc.scrollTop = selTop + that.sc.suggestionHeight + scrTop - that.sc.maxHeight;\n else if (selTop < 0)\n that.sc.scrollTop = selTop + scrTop;\n }\n }\n }\n addEvent(window, 'resize', that.updateSC);\n document.body.appendChild(that.sc);\n\n live('autocomplete-suggestion', 'mouseleave', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) setTimeout(function(){ sel.className = sel.className.replace('selected', ''); }, 20);\n }, that.sc);\n\n live('autocomplete-suggestion', 'mouseover', function(e){\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel) sel.className = sel.className.replace('selected', '');\n this.className += ' selected';\n }, that.sc);\n\n live('autocomplete-suggestion', 'mousedown', function(e){\n if (hasClass(this, 'autocomplete-suggestion')) { // else outside click\n var v = this.getAttribute('data-val');\n that.value = v;\n o.onSelect(e, v, this);\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n\n }\n }, that.sc);\n\n that.blurHandler = function(){\n try { var over_sb = document.querySelector('.autocomplete-suggestions:hover'); } catch(e){ var over_sb = 0; }\n if (!over_sb) {\n that.last_val = that.value;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n setTimeout(function(){\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }, 350); // hide suggestions on fast input\n } else if (that !== document.activeElement) setTimeout(function(){ that.focus(); }, 20);\n };\n addEvent(that, 'blur', that.blurHandler);\n\n var suggest = function(data, val){\n if (!val) {\n var val = that.value;\n }\n that.cache[val] = data;\n if (data.length && val.length >= o.minChars) {\n var s = '';\n for (var i=0;i<data.length;i++) s += o.renderItem(data[i], val);\n that.sc.innerHTML = s;\n that.updateSC(0);\n }\n else {\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n }\n\n that.keydownHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n // down (40), up (38)\n if ((key == 40 || key == 38) && that.sc.innerHTML) {\n var next, sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (!sel) {\n next = (key == 40) ? that.sc.querySelector('.autocomplete-suggestion') : that.sc.childNodes[that.sc.childNodes.length - 1]; // first : last\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n } else {\n next = (key == 40) ? sel.nextSibling : sel.previousSibling;\n if (next) {\n sel.className = sel.className.replace('selected', '');\n next.className += ' selected';\n that.value = next.getAttribute('data-val');\n }\n else { sel.className = sel.className.replace('selected', ''); that.value = that.last_val; next = 0; }\n }\n that.updateSC(0, next);\n return false;\n }\n // esc\n else if (key == 27) {\n that.value = that.last_val;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n // enter\n else if (key == 13 || key == 9) {\n if (that.sc.style.display !== 'none') {\n e.preventDefault();\n }\n var sel = that.sc.querySelector('.autocomplete-suggestion.selected');\n if (sel && that.sc.style.display != 'none') {\n o.onSelect(e, sel.getAttribute('data-val'), sel);\n setTimeout(function(){\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }, 20); }\n }\n };\n addEvent(that, 'keydown', that.keydownHandler);\n\n that.keyupHandler = function(e){\n var key = window.event ? e.keyCode : e.which;\n if (!key || (key < 35 || key > 40) && key != 13 && key != 27) {\n var val = that.value;\n if (val.length >= o.minChars) {\n if (val != that.last_val) {\n that.last_val = val;\n clearTimeout(that.timer);\n if (o.cache) {\n if (val in that.cache) { suggest(that.cache[val]); return; }\n // no requests if previous suggestions were empty\n for (var i=1; i<val.length-o.minChars; i++) {\n var part = val.slice(0, val.length-i);\n if (part in that.cache && !that.cache[part].length) { suggest([]); return; }\n }\n }\n that.timer = setTimeout(function(){ o.source(val, suggest) }, o.delay);\n }\n } else {\n that.last_val = val;\n that.sc.style.display = 'none';\n that.sc.classList.add(\"hide\");\n }\n }\n };\n addEvent(that, 'keyup', that.keyupHandler);\n\n that.focusHandler = function(e){\n that.last_val = '\\n';\n that.keyupHandler(e)\n };\n if (!o.minChars) addEvent(that, 'focus', that.focusHandler);\n }\n\n // public destroy method\n this.destroy = function(){\n for (var i=0; i<elems.length; i++) {\n var that = elems[i];\n removeEvent(window, 'resize', that.updateSC);\n removeEvent(that, 'blur', that.blurHandler);\n removeEvent(that, 'focus', that.focusHandler);\n removeEvent(that, 'keydown', that.keydownHandler);\n removeEvent(that, 'keyup', that.keyupHandler);\n if (that.autocompleteAttr)\n that.setAttribute('autocomplete', that.autocompleteAttr);\n else\n that.removeAttribute('autocomplete');\n document.body.removeChild(that.sc);\n that = null;\n }\n };\n }\n return autoComplete;\n})();\n\n(function(){\n if (typeof define === 'function' && define.amd)\n define('autoComplete', function () { return autoComplete; });\n else if (typeof module !== 'undefined' && module.exports)\n module.exports = autoComplete;\n else\n window.autoComplete = autoComplete;\n})();\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport * as AutoComplete from \"javascript-autocomplete\";\n\nimport \"../src/AutoCompleteText.css\";\n\nexport class AutoCompleteText extends HTMLWidget {\n _span;\n _prompt;\n _input;\n _prevMinCharsText;\n _autoComplete;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n autoCompleteTextData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n return view.entries().map(function (row, idx) {\n return {\n idx,\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].value.length ? row.values[0].value[0] : []\n };\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._prompt = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n ;\n this._input = this._span.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"name\", this.id() + \"_input_name\")\n .attr(\"type\", \"text\")\n .attr(\"placeholder\", this.placeholder())\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._prompt.text(this.label());\n this._input.style(\"width\", this.textboxWidth_exists() ? this.textboxWidth() + \"px\" : null);\n\n if (this._prevMinCharsText !== this.minCharsText()) {\n this._prevMinCharsText = this.minCharsText();\n\n if (this._autoComplete) {\n this._autoComplete.destroy();\n }\n const context = this;\n this._autoComplete = new AutoComplete({\n selector: \"#\" + this.id() + \"_input\",\n minChars: this.minCharsText(),\n delay: 150,\n offsetLeft: 0,\n offsetTop: 1,\n source: (term, suggest) => {\n const field = context._db.fieldByLabel(context.textColumn());\n if (field) {\n term = term.toLowerCase();\n const suggestions = context.autoCompleteTextData().filter(function (row) {\n return row.origRow[field.idx].toLowerCase().indexOf(term) >= 0;\n }).map(function (row) {\n return {\n text: row.origRow[field.idx],\n rowIdx: row.idx\n };\n });\n suggest(suggestions);\n }\n },\n renderItem: (item, search) => {\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n const re = new RegExp(\"(\" + search.split(\" \").join(\"|\") + \")\", \"gi\");\n return '<div class=\"autocomplete-suggestion\" data-val=\"' + item.text + '\" data-row-idx=\"' + item.rowIdx + '\">' + item.text.replace(re, \"<b>$1</b>\") + \"</div>\";\n },\n onSelect: (e, term, item) => {\n const rowIdx = +item.getAttribute(\"data-row-idx\");\n const row = context.autoCompleteTextData()[rowIdx];\n context.click(context.rowToObj(row.origRow), context.valueColumn(), true);\n }\n });\n }\n }\n\n exit(domNode, element) {\n if (this._autoComplete) {\n this._autoComplete.destroy();\n }\n this._span.remove();\n super.exit(domNode, element);\n }\n\n click(row, column, selected) {\n }\n\n label: { (): string; (_: string): AutoCompleteText };\n label_exists: () => boolean;\n textboxWidth: { (): number; (_: number): AutoCompleteText };\n textboxWidth_exists: () => boolean;\n placeholder: { (): string; (_: string): AutoCompleteText };\n placeholder_exists: () => boolean;\n valueColumn: { (): string; (_: string): AutoCompleteText };\n valueColumn_exists: () => boolean;\n textColumn: { (): string; (_: string): AutoCompleteText };\n textColumn_exists: () => boolean;\n minCharsText: { (): number; (_: number): AutoCompleteText };\n minCharsText_exists: () => boolean;\n}\nAutoCompleteText.prototype._class += \" other_AutoCompleteText\";\n\nAutoCompleteText.prototype.publish(\"label\", \"Label: \", \"string\", \"Label for AutoCompleteText\");\nAutoCompleteText.prototype.publish(\"textboxWidth\", null, \"number\", \"width of textbox\", null, { optional: true });\nAutoCompleteText.prototype.publish(\"placeholder\", \"Search...\", \"string\", \"Placeholder for AutoCompleteText\");\nAutoCompleteText.prototype.publish(\"valueColumn\", null, \"set\", \"Select column for autocomplete\", function () { return this.columns(); }, { optional: true });\nAutoCompleteText.prototype.publish(\"textColumn\", null, \"set\", \"Select value(s)\", function () { return this.columns(); }, { optional: true });\nAutoCompleteText.prototype.publish(\"minCharsText\", 1, \"number\", \"Size of multiAutoCompleteText box\");\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import { HTMLWidget, Palette, Utility } from \"@hpcc-js/common\";\nimport { extent as d3Extent, range as d3Range } from \"d3-array\";\nimport { map as d3Map } from \"d3-collection\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { timeDays as d3TimeDays, timeMonths as d3TimeMonths, timeWeek as d3TimeWeek, timeYear as d3TimeYear } from \"d3-time\";\nimport { timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/CalendarHeatMap.css\";\n\nexport class CalendarHeatMap extends HTMLWidget {\n _prevDateColumn;\n _prevAggrType;\n _prevAggrColumn;\n _prevAggrDeltaColumn;\n _view;\n _parentNode;\n\n constructor() {\n super();\n\n Utility.SimpleSelectionMixin.call(this);\n }\n\n calendarData() {\n if (this.fields().length === 0 || this.data().length === 0) {\n return [];\n }\n const dateParser = d3TimeParse(this.datePattern());\n const valueFormatter = this.aggrDeltaColumn() ? d3Format(\".1%\") : d3Format(\"s\");\n if (this._prevDateColumn !== this.dateColumn() ||\n this._prevAggrType !== this.aggrType() ||\n this._prevAggrColumn !== this.aggrColumn() ||\n this._prevAggrDeltaColumn !== this.aggrDeltaColumn()) {\n this._prevDateColumn = this.dateColumn();\n this._prevAggrType = this.aggrType();\n this._prevAggrColumn = this.aggrColumn();\n this._prevAggrDeltaColumn = this.aggrDeltaColumn();\n this._view = this._db.aggregateView([this.dateColumn()], this.aggrType(), this.aggrColumn(), this.aggrDeltaColumn());\n }\n return this._view.entries().map(function (row) {\n row.dateKey = dateParser(row.key);\n row.formattedValues = valueFormatter(row.value.aggregate);\n row.origRows = row.value;\n return row;\n });\n }\n\n calcDelta(row) {\n return (row.Close - row.Open) / row.Open;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode)\n .style(\"overflow-y\", \"scroll\")\n .style(\"overflow-x\", \"hidden\")\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n this._selection.widgetElement(element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._palette = this._palette.switch(this.paletteID());\n\n const width = this.width();\n const cellSize = (width / 12) / 5;\n const height = cellSize * 8;\n\n const data = this.calendarData();\n const mappedData = d3Map(data, function (d: any) { return d.dateKey; });\n const dateExtent = d3Extent(data, function (d: any) {\n return d.dateKey.getFullYear();\n });\n const context = this;\n const svg = element.selectAll(\"svg\").data(d3Range(+dateExtent[0], +dateExtent[1] + 1));\n const svgUpdate = svg.enter().append(\"svg\")\n .each(function (d) {\n const svgElement = d3Select(this);\n const g = svgElement.append(\"g\");\n g.append(\"text\")\n .style(\"text-anchor\", \"middle\")\n ;\n g.append(\"g\")\n .attr(\"class\", \"days\")\n ;\n\n const _d3TimeMonths = d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1));\n const _months = g.append(\"g\").attr(\"class\", \"months\");\n _d3TimeMonths.forEach(function (_m) {\n _months.append(\"path\")\n .attr(\"class\", \"month\")\n .attr(\"d\", calcMonthPath(_m))\n .style(\"stroke\", context.monthStrokeColor())\n .style(\"stroke-width\", context.monthStrokeWidth())\n ;\n });\n })\n .merge(svg)\n .attr(\"width\", width)\n .attr(\"height\", height)\n ;\n svgUpdate.select(\"g\")\n .attr(\"transform\", \"translate(\" + ((width - cellSize * 53) / 2) + \",\" + (height - cellSize * 7 - 1) + \")\")\n ;\n svgUpdate.select(\"text\")\n .attr(\"transform\", \"translate(-6,\" + cellSize * 3.5 + \")rotate(-90)\")\n .text(d => d)\n ;\n svg.exit().remove();\n\n let dataExtent: [any, any] = d3Extent<number>(data, function (d: any) {\n return d.value.aggregate;\n });\n if (this.aggrDeltaColumn()) {\n const max = Math.max(Math.abs(+dataExtent[0]), Math.abs(+dataExtent[1]));\n dataExtent = [-max, max];\n }\n const dayRect = svgUpdate.select(\".days\").selectAll(\".day\").data(function (d) { return d3TimeDays(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });\n const dayRectUpdate = dayRect.enter().append(\"rect\")\n .attr(\"class\", \"day\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n const data2 = mappedData.get(d);\n if (data2 && data2.value && data2.value && data2.value.length) {\n context.click(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));\n }\n })\n .on(\"dblclick\", function (d) {\n const data2 = mappedData.get(d);\n if (data2 && data2.value && data2.value && data2.value.length) {\n context.dblclick(context.rowToObj(data2.value[0]), context.dateColumn(), context._selection.selected(this));\n }\n }).each(function (d) {\n const dayRectElement = d3Select(this);\n dayRectElement.append(\"title\");\n })\n .merge(dayRect)\n .attr(\"x\", function (d) { return d3TimeWeek.count(d3TimeYear(d), d) * cellSize; })\n .attr(\"y\", function (d) { return d.getDay() * cellSize; })\n .attr(\"width\", cellSize)\n .attr(\"height\", cellSize)\n .style(\"stroke\", this.dayStrokeColor())\n .style(\"stroke-width\", this.dayStrokeWidth())\n .style(\"fill\", null)\n ;\n dayRectUpdate.select(\"title\")\n .text(d => d)\n ;\n dayRectUpdate.filter(function (d) { return mappedData.has(d); })\n .style(\"fill\", function (d) {\n const row = mappedData.get(d);\n if (!row || !row.value || !row.value.aggregate) {\n return null;\n }\n return context._palette(row.value.aggregate, dataExtent[0], dataExtent[1]);\n })\n .select(\"title\")\n .text(function (d) {\n const data2 = mappedData.get(d);\n return data2.key + \": \" + data2.formattedValues;\n })\n ;\n dayRect.exit().remove();\n\n const monthPath = svg.select(\".months\").selectAll(\".month\").data(function (d) { return d3TimeMonths(new Date(d, 0, 1), new Date(d + 1, 0, 1)); });\n monthPath.enter().append(\"path\")\n .attr(\"class\", \"month\")\n .merge(monthPath)\n .attr(\"d\", calcMonthPath)\n .style(\"stroke\", this.monthStrokeColor())\n .style(\"stroke-width\", this.monthStrokeWidth())\n ;\n monthPath.exit().remove();\n\n function calcMonthPath(t0) {\n const t1 = new Date(t0.getFullYear(), t0.getMonth() + 1, 0);\n const d0 = t0.getDay();\n const w0 = d3TimeWeek.count(d3TimeYear(t0), t0);\n const d1 = t1.getDay();\n const w1 = d3TimeWeek.count(d3TimeYear(t1), t1);\n return \"M\" + (w0 + 1) * cellSize + \",\" + d0 * cellSize +\n \"H\" + w0 * cellSize + \"V\" + 7 * cellSize +\n \"H\" + w1 * cellSize + \"V\" + (d1 + 1) * cellSize +\n \"H\" + (w1 + 1) * cellSize + \"V\" + 0 +\n \"H\" + (w0 + 1) * cellSize + \"Z\";\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n\n _palette;\n paletteID: { (): string; (_: string): CalendarHeatMap };\n paletteID_exists: () => boolean;\n dateColumn: { (): string; (_: string): CalendarHeatMap };\n dateColumn_exists: () => boolean;\n datePattern: { (): string; (_: string): CalendarHeatMap };\n datePattern_exists: () => boolean;\n aggrType: { (): string; (_: string): CalendarHeatMap };\n aggrType_exists: () => boolean;\n aggrColumn: { (): string; (_: string): CalendarHeatMap };\n aggrColumn_exists: () => boolean;\n aggrDeltaColumn: { (): string; (_: string): CalendarHeatMap };\n aggrDeltaColumn_exists: () => boolean;\n\n // SimpleSelectionMixin\n _selection;\n}\nCalendarHeatMap.prototype._class += \" other_CalendarHeatMap\";\nCalendarHeatMap.prototype.mixin(Utility.SimpleSelectionMixin);\nCalendarHeatMap.prototype._palette = Palette.rainbow(\"default\");\n\nexport interface CalendarHeatMap {\n dayStrokeColor(): string;\n dayStrokeColor(_: string): this;\n monthStrokeColor(): string;\n monthStrokeColor(_: string): this;\n dayStrokeWidth(): number;\n dayStrokeWidth(_: number): this;\n monthStrokeWidth(): number;\n monthStrokeWidth(_: number): this;\n}\nCalendarHeatMap.prototype.publish(\"paletteID\", \"YlOrRd\", \"set\", \"Color palette for this widget\", CalendarHeatMap.prototype._palette.switch(), { tags: [\"Basic\", \"Shared\"] });\nCalendarHeatMap.prototype.publish(\"dayStrokeColor\", \"#ccc\", \"html-color\", \"Color of day border\");\nCalendarHeatMap.prototype.publish(\"monthStrokeColor\", \"#000\", \"html-color\", \"Color of month border\");\nCalendarHeatMap.prototype.publish(\"dayStrokeWidth\", 1, \"number\", \"Pixel width of day border\");\nCalendarHeatMap.prototype.publish(\"monthStrokeWidth\", 2, \"number\", \"Pixel width of month border\");\nCalendarHeatMap.prototype.publish(\"dateColumn\", null, \"set\", \"Date Column\", function () { return this.columns(); }, { optional: true });\nCalendarHeatMap.prototype.publish(\"datePattern\", \"%Y-%m-%d\", \"string\", \"Date Pattern\");\nCalendarHeatMap.prototype.publish(\"aggrType\", null, \"set\", \"Aggregation Type\", [null, \"mean\", \"median\", \"sum\", \"min\", \"max\"], { optional: true });\nCalendarHeatMap.prototype.publish(\"aggrColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\nCalendarHeatMap.prototype.publish(\"aggrDeltaColumn\", null, \"set\", \"Aggregation Field\", function () { return this.columns(); }, { optional: true, disable: (w) => !w.aggrType() });\n","import { Utility } from \"@hpcc-js/common\";\n\nconst TIMEOUT_DEFAULT = 60;\nfunction espValFix(val) {\n if (val === undefined || val === null) {\n return null;\n }\n if (!val.trim) {\n if (val.Row) {\n return espRowFix(val.Row);\n }\n return val;\n }\n const retVal = val.trim();\n if (retVal !== \"\" && !isNaN(retVal)) {\n if (retVal.length <= 1 || retVal[0] !== \"0\" || retVal[1] === \".\") {\n return Number(retVal);\n }\n }\n return retVal;\n}\n\nfunction espRowFix(row) {\n for (const key in row) {\n row[key] = espValFix(row[key]);\n }\n return row;\n}\n\nexport class ESPUrl {\n protected _protocol = \"http:\";\n protected _hostname = \"localhost\";\n protected _url;\n protected _port;\n protected _search;\n protected _pathname;\n protected _params;\n protected _hash;\n protected _host;\n\n constructor() {\n }\n\n url(_: string): this;\n url(): string;\n url(_?): string | this {\n if (!arguments.length) return this._url;\n this._url = _;\n const parser = document.createElement(\"a\");\n parser.href = this._url;\n // eslint-disable-next-line no-self-assign\n parser.href = parser.href; // This fixes an IE9/IE10 DOM value issue\n\n const params = {};\n if (parser.search.length) {\n let tmp: any = parser.search;\n if (tmp[0] === \"?\") {\n tmp = tmp.substring(1);\n }\n tmp = tmp.split(\"&\");\n tmp.map(function (item) {\n const tmpItem = item.split(\"=\");\n params[decodeURIComponent(tmpItem[0])] = decodeURIComponent(tmpItem[1]);\n });\n }\n this._protocol = parser.protocol;\n this._hostname = parser.hostname;\n this._port = parser.port;\n this._pathname = parser.pathname;\n while (this._pathname.length && this._pathname[0] === \"/\") {\n this._pathname = this._pathname.substring(1);\n }\n this._search = parser.search;\n this._params = params;\n this._hash = parser.hash;\n this._host = parser.host;\n\n return this;\n }\n\n protocol(_: string): this;\n protocol(): string;\n protocol(_?: string): string | this {\n if (!arguments.length) return this._protocol;\n this._protocol = _;\n return this;\n }\n\n hostname(_: string): this;\n hostname(): string;\n hostname(_?: string): string | this {\n if (!arguments.length) return this._hostname;\n this._hostname = _;\n return this;\n }\n\n port(_: string): this;\n port(): string;\n port(_?: string) {\n if (!arguments.length) return this._port;\n this._port = _;\n return this;\n }\n\n search(_: string): this;\n search(): string;\n search(_?: string) {\n if (!arguments.length) return this._search;\n this._search = _;\n return this;\n }\n\n pathname(_: string): this;\n pathname(): string;\n pathname(_?: string) {\n if (!arguments.length) return this._pathname;\n this._pathname = _;\n return this;\n }\n\n hash(_: string): this;\n hash(): string;\n hash(_?: string) {\n if (!arguments.length) return this._hash;\n this._hash = _;\n return this;\n }\n\n host(_: string): this;\n host(): string;\n host(_?: string) {\n if (!arguments.length) return this._host;\n this._host = _;\n return this;\n }\n\n params(_: string): this;\n params(): string;\n params(_?: string) {\n if (!arguments.length) return this._params;\n this._params = _;\n return this;\n }\n\n param(key: string) {\n return this._params[key];\n }\n\n isWsWorkunits() {\n return this._pathname.toLowerCase().indexOf(\"wsworkunits\") >= 0 || this._params[\"Wuid\"];\n }\n\n isWorkunitResult() {\n return this.isWsWorkunits() && (this._params[\"Sequence\"] || this._params[\"ResultName\"]);\n }\n\n isWsEcl() {\n return this._pathname.toLowerCase().indexOf(\"wsecl\") >= 0 || (this._params[\"QuerySetId\"] && this._params[\"Id\"]);\n }\n\n isWsWorkunits_GetStats() {\n return this._pathname.toLowerCase().indexOf(\"wsworkunits/wugetstats\") >= 0 && this._params[\"WUID\"];\n }\n\n getUrl(overrides) {\n overrides = overrides || {};\n return (overrides.protocol !== undefined ? overrides.protocol : this._protocol) + \"//\" +\n (overrides.hostname !== undefined ? overrides.hostname : this._hostname) + \":\" +\n (overrides.port !== undefined ? overrides.port : this._port) + \"/\" +\n (overrides.pathname !== undefined ? overrides.pathname : this._pathname);\n }\n}\n\nexport function ESPMappings(mappings) {\n this._mappings = mappings;\n this._reverseMappings = {};\n for (const resultName in this._mappings) {\n this._reverseMappings[resultName] = {};\n for (const key in this._mappings[resultName]) {\n this._reverseMappings[resultName][this._mappings[resultName][key]] = key;\n }\n }\n}\n\nESPMappings.prototype.contains = function (resultName, origField) {\n return Utility.exists(resultName + \".\" + origField, this._mappings);\n};\n\nESPMappings.prototype.mapResult = function (response, resultName) {\n const mapping = this._mappings[resultName];\n if (mapping) {\n response[resultName] = response[resultName].map(function (item) {\n let row = [];\n if (mapping.x && mapping.x instanceof Array) {\n // LINE Mapping ---\n row = [];\n for (let i = 0; i < mapping.x.length; ++i) {\n row.push(item[mapping.y[i]]);\n }\n } else {\n // Regular Mapping ---\n for (const key in mapping) {\n if (mapping[key] === \"label\") {\n row[0] = item[key];\n } else if (mapping[key] === \"weight\") {\n row[1] = item[key];\n }\n }\n }\n return row;\n }, this);\n }\n};\n\nESPMappings.prototype.mapResponse = function (response) {\n for (const key in response) {\n this.mapResult(response, key);\n }\n};\n\nconst serialize = function (obj) {\n const str = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const val = obj[key];\n if (val !== undefined && val !== null) {\n str.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(val));\n }\n }\n }\n return str.join(\"&\");\n};\n\nlet jsonp = function (url, request, timeout) {\n return new Promise(function (resolve, reject) {\n let respondedTimeout = timeout * 1000;\n const respondedTick = 5000;\n const callbackName = \"jsonp_callback_\" + Math.round(Math.random() * 999999);\n window[callbackName] = function (response) {\n respondedTimeout = 0;\n doCallback();\n resolve(response);\n };\n const script = document.createElement(\"script\");\n script.src = url + (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + \"jsonp=\" + callbackName + \"&\" + serialize(request);\n document.body.appendChild(script);\n const progress = setInterval(function () {\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n } else {\n respondedTimeout -= respondedTick;\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n doCallback();\n reject(Error(\"Request timeout: \" + script.src));\n }\n }\n }, respondedTick);\n\n function doCallback() {\n delete window[callbackName];\n document.body.removeChild(script);\n }\n });\n};\n\nexport class Comms extends ESPUrl {\n protected _proxyMappings;\n protected _mappings;\n protected _timeout;\n protected _hipieResults;\n protected _hipieResultsLength;\n\n constructor() {\n super();\n this._proxyMappings = {};\n this._mappings = new ESPMappings({});\n this._timeout = TIMEOUT_DEFAULT;\n this._hipieResults = {};\n }\n\n hipieResults(_) {\n if (!arguments.length) return this._hipieResults;\n this._hipieResultsLength = 0;\n this._hipieResults = {};\n const context = this;\n _.forEach(function (item) {\n context._hipieResultsLength++;\n context._hipieResults[item.id] = item;\n });\n return this;\n }\n\n jsonp(url, request) {\n for (const key in this._proxyMappings) {\n const newUrlParts = url.split(key);\n const newUrl = newUrlParts[0];\n if (newUrlParts.length > 1) {\n const espUrl = new ESPUrl()\n .url(url)\n ;\n url = newUrl + this._proxyMappings[key];\n request.IP = espUrl.hostname();\n request.PORT = espUrl.port();\n if (newUrlParts.length > 0) {\n request.PATH = newUrlParts[1];\n }\n break;\n }\n }\n return jsonp(url, request, this.timeout());\n }\n\n ajax(method, url, request?) {\n return new Promise(function (resolve, reject) {\n let uri = url;\n if (method === \"GET\" && request) {\n uri += \"?\" + serialize(request);\n }\n const xhr: any = new XMLHttpRequest();\n xhr.onload = function (e) {\n if (this.status >= 200 && this.status < 300) {\n resolve(JSON.parse(this.response));\n } else {\n reject(Error(this.statusText));\n }\n };\n xhr.onerror = function () {\n reject(Error(this.statusText));\n };\n xhr.open(method, uri);\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n if (method === \"GET\") {\n xhr.send();\n } else {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n xhr.send(serialize(request));\n }\n });\n }\n\n get(url, request?) {\n return this.ajax(\"GET\", url, request);\n }\n\n post(url, request) {\n return this.ajax(\"POST\", url, request);\n }\n\n mappings(_?) {\n if (!arguments.length) return this._mappings;\n this._mappings = new ESPMappings(_);\n return this;\n }\n\n proxyMappings(_?) {\n if (!arguments.length) return this._proxyMappings;\n this._proxyMappings = _;\n return this;\n }\n\n timeout(_?) {\n if (!arguments.length) return this._timeout;\n this._timeout = _ || TIMEOUT_DEFAULT;\n return this;\n }\n}\n\nexport class Basic extends Comms {\n\n protected _cacheCalls;\n\n constructor() {\n super();\n }\n\n cacheCalls(_?) {\n if (!arguments.length) return this._cacheCalls;\n this._cacheCalls = _;\n return this;\n }\n\n call(request, callback) {\n const url = this._url + (this._url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + serialize(request);\n if (this._cacheCalls) {\n const context = this;\n return new Promise(function (resolve, reject) {\n const response = JSON.parse(localStorage.getItem(\"hpcc.viz.\" + url));\n if (!response) {\n throw Error(\"not cached\");\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response);\n }\n resolve(response);\n }).catch(function (response) {\n return context.get(url).then(function (response2) {\n localStorage.setItem(\"hpcc.viz.\" + url, JSON.stringify(response2));\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response2);\n }\n return response2;\n });\n });\n } else {\n localStorage.removeItem(\"hpcc.viz.\" + url);\n return this.get(url).then(function (response) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (Basic.prototype.call)\");\n callback(response);\n }\n return response;\n });\n }\n }\n}\n\nfunction locateRoxieResponse(response): object {\n // v5 and v6 compatible ---\n for (const key in response) {\n if (response[key].Row && response[key].Row instanceof Array) {\n return response;\n }\n let retVal;\n if (typeof (response[key]) !== \"string\") {\n retVal = locateRoxieResponse(response[key]);\n }\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nfunction locateRoxieException(response) {\n for (const key in response) {\n if (response[key].Exception && response[key].Exception instanceof Array) {\n return response[key];\n }\n const retVal = locateRoxieException(response[key]);\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nexport class WsECL extends Comms {\n\n protected _target;\n protected _query;\n\n constructor() {\n super();\n\n this._port = \"8002\";\n this._target = \"\";\n this._query = \"\";\n }\n\n url(_?) {\n const retVal = super.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/esp/files/stub.htm?QuerySetId=roxie&Id=stock.3&Widget=QuerySetDetailsWidget\n this._port = this._port === \"8010\" ? \"8002\" : this._port; // Need a better way ---\n for (const key in this._params) {\n switch (key) {\n case \"QuerySetId\":\n this.target(this._params[key]);\n break;\n case \"Id\":\n this.query(this._params[key]);\n break;\n }\n }\n\n let pathParts;\n let queryParts;\n if (!this._target || !this._query) {\n // http://localhost:8002/WsEcl/forms/default/query/roxie/wecare\n pathParts = this._pathname.split(\"/query/\");\n if (pathParts.length >= 2) {\n queryParts = pathParts[1].split(\"/\");\n if (queryParts.length >= 2) {\n this.target(queryParts[0]);\n this.query(queryParts[1]);\n }\n }\n }\n }\n return retVal;\n }\n\n target(_?) {\n if (!arguments.length) return this._target;\n this._target = _;\n return this;\n }\n\n query(_?) {\n if (!arguments.length) return this._query;\n this._query = _;\n return this;\n }\n\n constructUrl() {\n return Comms.prototype.getUrl.call(this, {\n pathname: \"WsEcl/submit/query/\" + this._target + \"/\" + this._query + \"/json\"\n });\n }\n\n call(target, request, callback) {\n target = target || {};\n target.target = target.target || this._target;\n target.query = target.query || this._query;\n const context = this;\n const url = this.getUrl({\n pathname: \"WsEcl/submit/query/\" + target.target + \"/\" + target.query + \"/json\"\n });\n return this.jsonp(url, request).then(function (response: any) {\n let _response = locateRoxieResponse(response);\n if (!_response) {\n _response = locateRoxieException(response);\n }\n response = _response;\n\n // Check for exceptions\n if (response.Exception) {\n throw Error(response.Exception.reduce(function (previousValue, exception, index, array) {\n if (previousValue.length) {\n previousValue += \"\\n\";\n }\n return previousValue + exception.Source + \" \" + exception.Code + \": \" + exception.Message;\n }, \"\"));\n }\n // Remove \"response.result.Row\"\n for (const key in response) {\n if (response[key].Row) {\n response[key] = response[key].Row.map(espRowFix);\n }\n }\n context._mappings.mapResponse(response);\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsECL.prototype.call)\");\n callback(response);\n }\n return response;\n });\n }\n\n send(request, callback) {\n return this.call({ target: this._target, query: this._query }, request, callback);\n }\n}\n\nexport class WsWorkunits extends Comms {\n\n protected _wuid = \"\";\n protected _jobname = \"\";\n protected _sequence = null;\n protected _resultName = null;\n\n protected _fetchResultNamesPromise = null;\n protected _fetchResultPromise = {};\n protected _resultNameCache = {};\n protected _resultNameCacheCount = 0;\n protected _total;\n\n constructor() {\n super();\n this._port = \"8010\";\n }\n\n url(_?) {\n const retVal = Comms.prototype.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/WsWorkunit/WuResult?Wuid=xxx&ResultName=yyy\n for (const key in this._params) {\n switch (key) {\n case \"Wuid\":\n this.wuid(this._params[key]);\n break;\n case \"ResultName\":\n this.resultName(this._params[key]);\n break;\n case \"Sequence\":\n this.sequence(this._params[key]);\n break;\n }\n }\n if (!this._wuid) {\n // http://localhost:8010/WsWorkunits/res/W20140922-213329/c:/temp/index.html\n const urlParts = this._url.split(\"/res/\");\n if (urlParts.length >= 2) {\n const urlParts2 = urlParts[1].split(\"/\");\n this.wuid(urlParts2[0]);\n }\n }\n }\n return retVal;\n }\n\n wuid(_?) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n }\n\n jobname(_?) {\n if (!arguments.length) return this._jobname;\n this._jobname = _;\n return this;\n }\n\n sequence(_?) {\n if (!arguments.length) return this._sequence;\n this._sequence = _;\n return this;\n }\n\n resultName(_?) {\n if (!arguments.length) return this._resultName;\n this._resultName = _;\n return this;\n }\n\n appendParam(label, value, params) {\n if (value) {\n if (params) {\n params += \"&\";\n }\n return params + label + \"=\" + value;\n }\n return params;\n }\n\n constructUrl() {\n const url = Comms.prototype.getUrl.call(this, {\n pathname: \"WsWorkunits/res/\" + this._wuid + \"/\"\n });\n let params = \"\";\n params = this.appendParam(\"ResultName\", this._resultName, params);\n return url + (params ? \"?\" + params : \"\");\n }\n\n _fetchResult(target, callback, skipMapping) {\n target = target || {};\n if (!this._fetchResultPromise[target.resultname]) {\n target._start = target._start || 0;\n target._count = target._count || -1;\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUResult.json\"\n });\n const request = {\n Wuid: target.wuid,\n ResultName: target.resultname,\n SuppressXmlSchema: true,\n Start: target._start,\n Count: target._count\n };\n this._resultNameCache[target.resultname] = {};\n const context = this;\n this._fetchResultPromise[target.resultname] = this.jsonp(url, request).then(function (response: any) {\n // Remove \"xxxResponse.Result\"\n for (const key in response) {\n if (!response[key].Result) {\n throw new Error(\"No result found.\");\n }\n context._total = response[key].Total;\n response = response[key].Result;\n for (const responseKey in response) {\n response = response[responseKey].Row.map(espRowFix);\n break;\n }\n break;\n }\n context._resultNameCache[target.resultname] = response;\n if (!skipMapping) {\n context._mappings.mapResult(context._resultNameCache, target.resultname);\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype._fetchResult)\");\n callback(context._resultNameCache[target.resultname]);\n }\n return context._resultNameCache[target.resultname];\n });\n }\n return this._fetchResultPromise[target.resultname];\n }\n\n fetchResult(target, callback, skipMapping) {\n if (target.wuid) {\n return this._fetchResult(target, callback, skipMapping);\n } else if (target.jobname) {\n const context = this;\n return this.WUQuery(target, function (response) {\n target.wuid = response[0].Wuid;\n return context._fetchResult(target, callback, skipMapping);\n });\n }\n }\n\n WUQuery(_request, callback) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUQuery.json\"\n });\n const request = {\n Jobname: _request.jobname,\n Count: 1\n };\n\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n return this.jsonp(url, request).then(function (response: any) {\n if (!Utility.exists(\"WUQueryResponse.Workunits.ECLWorkunit\", response)) {\n throw Error(\"No workunit found.\");\n }\n response = response.WUQueryResponse.Workunits.ECLWorkunit;\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.WUQuery)\");\n callback(response);\n }\n return response;\n });\n }\n\n fetchResultNames(callback?) {\n if (!this._fetchResultNamesPromise) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUInfo.json\"\n });\n const request = {\n Wuid: this._wuid,\n TruncateEclTo64k: true,\n IncludeExceptions: false,\n IncludeGraphs: false,\n IncludeSourceFiles: false,\n IncludeResults: true,\n IncludeResultsViewNames: false,\n IncludeVariables: false,\n IncludeTimers: false,\n IncludeResourceURLs: false,\n IncludeDebugValues: false,\n IncludeApplicationValues: false,\n IncludeWorkflows: false,\n IncludeXmlSchemas: false,\n SuppressResultSchemas: true\n };\n\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n const context = this;\n this._fetchResultNamesPromise = this.jsonp(url, request).then(function (response: any) {\n if (Utility.exists(\"WUInfoResponse.Workunit.Archived\", response) && response.WUInfoResponse.Workunit.Archived) {\n console.warn(\"WU is archived: \" + url + \" \" + JSON.stringify(request));\n }\n if (Utility.exists(\"WUInfoResponse.Workunit.Results.ECLResult\", response)) {\n response.WUInfoResponse.Workunit.Results.ECLResult.map(function (item) {\n context._resultNameCache[item.Name] = [];\n ++context._resultNameCacheCount;\n });\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.fetchResultNames)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n }\n return this._fetchResultNamesPromise;\n }\n\n fetchResults(callback, skipMapping) {\n const context = this;\n return this.fetchResultNames().then(function (response) {\n const fetchArray = [];\n for (const key in context._resultNameCache) {\n fetchArray.push(context.fetchResult({ wuid: context._wuid, resultname: key }, null, skipMapping));\n }\n return Promise.all(fetchArray).then(function (responseArray) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n });\n }\n\n postFilter(request, response) {\n const retVal = {};\n for (const key in response) {\n retVal[key] = response[key].filter(function (row, idx) {\n for (const request_key in request) {\n if (row[request_key] !== undefined && request[request_key] !== undefined && row[request_key] != request[request_key]) {\n return false;\n }\n }\n return true;\n });\n }\n this._mappings.mapResponse(retVal);\n return retVal;\n }\n\n send(request, callback) {\n const context = this;\n if (!this._resultNameCacheCount) {\n this.fetchResults(function (response) {\n callback(context.postFilter(request, response));\n }, true);\n } else {\n callback(context.postFilter(request, this._resultNameCache));\n }\n }\n}\n\nfunction WsWorkunits_GetStats() {\n Comms.call(this);\n\n this._port = \"8010\";\n this._wuid = null;\n}\nWsWorkunits_GetStats.prototype = Object.create(Comms.prototype);\n\nWsWorkunits_GetStats.prototype.url = function (_) {\n const retVal = Comms.prototype.url.apply(this, arguments);\n if (arguments.length) {\n // http://localhost:8010/WsWorkunits/WUGetStats?WUID=\"xxx\"\n for (const key in this._params) {\n switch (key) {\n case \"WUID\":\n this.wuid(this._params[key]);\n break;\n }\n }\n }\n return retVal;\n};\n\nWsWorkunits_GetStats.prototype.wuid = function (_) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n};\n\nWsWorkunits_GetStats.prototype.constructUrl = function () {\n return Comms.prototype.getUrl.call(this, {\n pathname: \"WsWorkunits/WUGetStats?WUID=\" + this._wuid\n });\n};\n\nWsWorkunits_GetStats.prototype.send = function (request, callback) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUGetStats.json?WUID=\" + this._wuid\n });\n return this.jsonp(url, request).then(function (response) {\n if (Utility.exists(\"WUGetStatsResponse.Statistics.WUStatisticItem\", response)) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits_GetStats.prototype.send)\");\n callback(response.WUGetStatsResponse.Statistics.WUStatisticItem);\n }\n return response.WUGetStatsResponse.Statistics.WUStatisticItem;\n } else {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (WsWorkunits_GetStats.prototype.send)\");\n callback([]);\n }\n return [];\n }\n });\n};\n\n// HIPIERoxie ---\nfunction HIPIERoxie() {\n Comms.call(this);\n}\nHIPIERoxie.prototype = Object.create(Comms.prototype);\n\nHIPIERoxie.prototype.fetchResults = function (request, callback) {\n const url = this.getUrl({});\n this._resultNameCache = {};\n this._resultNameCacheCount = 0;\n const context = this;\n return this.jsonp(url, request).then(function (response) {\n let _response = locateRoxieResponse(response);\n if (!_response) {\n _response = locateRoxieException(response);\n }\n response = _response;\n\n // Check for exceptions\n if (response.Exception) {\n throw Error(response.Exception.reduce(function (previousValue, exception, index, array) {\n if (previousValue.length) {\n previousValue += \"\\n\";\n }\n return previousValue + exception.Source + \" \" + exception.Code + \": \" + exception.Message;\n }, \"\"));\n }\n // Remove \"response.result.Row\"\n for (const key in response) {\n if (response[key].Row) {\n context._resultNameCache[key] = response[key].Row.map(espRowFix);\n ++context._resultNameCacheCount;\n }\n }\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIERoxie.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n};\n\nHIPIERoxie.prototype.fetchResult = function (name, callback) {\n const context = this;\n return new Promise(function (resolve, reject) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIERoxie.prototype.fetchResult)\");\n callback(context._resultNameCache[name]);\n }\n resolve(context._resultNameCache[name]);\n });\n};\n\nHIPIERoxie.prototype.call = function (request, callback) {\n const context = this;\n return this.fetchResults(request, callback).then(function (response) {\n const retVal = {};\n for (const hipieKey in context._hipieResults) {\n const item = context._hipieResults[hipieKey];\n retVal[item.id] = response[item.from];\n }\n return retVal;\n });\n};\n\n// HIPIEWorkunit ---\nfunction HIPIEWorkunit() {\n WsWorkunits.call(this);\n}\nHIPIEWorkunit.prototype = Object.create(WsWorkunits.prototype);\n\nHIPIEWorkunit.prototype.fetchResults = function (callback) {\n const context = this;\n return WsWorkunits.prototype.fetchResultNames.call(this).then(function (response) {\n const fetchArray = [];\n for (const key in context._hipieResults) {\n const item = context._hipieResults[key];\n fetchArray.push(context.fetchResult(item.from));\n }\n return Promise.all(fetchArray).then(function (response2) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEWorkunit.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n return context._resultNameCache;\n });\n });\n};\n\nHIPIEWorkunit.prototype.fetchResult = function (name, callback) {\n return WsWorkunits.prototype.fetchResult.call(this, { wuid: this._wuid, resultname: name }).then(function (response) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEWorkunit.prototype.fetchResult)\");\n callback(response);\n }\n return response;\n });\n};\n\nHIPIEWorkunit.prototype.call = function (request, callback) {\n const context = this;\n if (request.refresh || !this._resultNameCache || !this._resultNameCacheCount) {\n return this.fetchResults(callback).then(function (response) {\n return filterResults(request);\n });\n } else {\n return new Promise(function (resolve, reject) {\n resolve(filterResults(request));\n });\n }\n\n function filterResults(request2) {\n const changedFilter = {};\n for (const key in request2) {\n if (request2[key + \"_changed\"] !== undefined) {\n changedFilter[key] = {\n value: request2[key]\n };\n }\n }\n const retVal = {};\n for (const hipieKey in context._hipieResults) {\n const hipieResult = context._hipieResults[hipieKey];\n const outputFilter = {};\n for (let i = 0; i < hipieResult.filters.length; ++i) {\n const filter = hipieResult.filters[i];\n if (!filter.isRange()) {\n outputFilter[filter.fieldid] = changedFilter[filter.fieldid] || { value: undefined };\n outputFilter[filter.fieldid].filter = filter;\n }\n }\n retVal[hipieResult.id] = context._resultNameCache[hipieResult.from].filter(function (row) {\n for (const key2 in outputFilter) {\n if (!outputFilter[key2].filter.matches(row, outputFilter[key2].value)) {\n return false;\n }\n }\n return true;\n });\n }\n return retVal;\n }\n};\n\n// HIPIEDatabomb ---\nfunction HIPIEDatabomb() {\n HIPIEWorkunit.call(this);\n}\nHIPIEDatabomb.prototype = Object.create(HIPIEWorkunit.prototype);\n\nHIPIEDatabomb.prototype.databomb = function (_) {\n if (!arguments.length) return this._databomb;\n this._databomb = _;\n return this;\n};\n\nHIPIEDatabomb.prototype.databombOutput = function (from, id) {\n if (!arguments.length) return undefined;\n this._resultNameCacheCount++;\n if (this._databomb instanceof Array) {\n this._resultNameCache[from] = this._databomb.map(espRowFix);\n } else {\n this._resultNameCache[from] = this._databomb[from].map(espRowFix);\n }\n return this;\n};\n\nHIPIEDatabomb.prototype.fetchResults = function (callback) {\n const context = this;\n return new Promise(function (resolve, reject) {\n if (callback) {\n console.error(\"Deprecated: callback, use promise (HIPIEDatabomb.prototype.fetchResults)\");\n callback(context._resultNameCache);\n }\n resolve(context._resultNameCache);\n });\n};\n\nexport function createESPConnection(url) {\n url = url || document.URL;\n const testURL = new ESPUrl()\n .url(url)\n ;\n if (testURL.isWsWorkunits_GetStats()) {\n return new WsWorkunits_GetStats()\n .url(url)\n ;\n }\n if (testURL.isWsWorkunits()) {\n return new WsWorkunits()\n .url(url)\n ;\n }\n if (testURL.isWsEcl()) {\n return new WsECL()\n .url(url)\n ;\n }\n return null;\n}\n\nexport function hookJsonp(func) {\n jsonp = func;\n}\n\nexport {\n HIPIEWorkunit,\n HIPIERoxie,\n HIPIEDatabomb\n};\n","import { Utility } from \"@hpcc-js/common\";\nimport * as Comms from \"./Comms\";\n\nfunction nestedRowFix(row) {\n if (row.Row && row.Row instanceof Array) {\n return row.Row.map(nestedRowFix);\n } else if (row instanceof Object) {\n for (const key in row) {\n row[key] = nestedRowFix(row[key]);\n }\n }\n return row;\n}\n\n// Basic Comms ---\nlet enableBasicCommsCache = false;\nlet basicCommsCache = {};\nfunction BasicComms() {\n Comms.Basic.call(this);\n}\nBasicComms.prototype = Object.create(Comms.Basic.prototype);\n\nBasicComms.prototype.jsonp = function (url, request) {\n const requestStr = JSON.stringify(request);\n if (enableBasicCommsCache && basicCommsCache[url] && basicCommsCache[url][requestStr]) {\n return Promise.resolve(basicCommsCache[url][requestStr]);\n }\n return Comms.Basic.prototype.jsonp.apply(this, arguments).then(function (response) {\n if (enableBasicCommsCache) {\n if (!basicCommsCache[url]) {\n basicCommsCache[url] = {};\n }\n basicCommsCache[url][requestStr] = response;\n }\n return response;\n });\n};\n\n// WsWorkunits ---\nfunction WsWorkunits(baseUrl) {\n BasicComms.call(this);\n\n this.url(baseUrl + \"WsWorkunits/\");\n}\nWsWorkunits.prototype = Object.create(BasicComms.prototype);\n\nWsWorkunits.prototype.wuQuery = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUQuery.json\"\n });\n const request = {\n Wuid: \"\",\n Type: \"\",\n Cluster: \"\",\n RoxieCluster: \"\",\n Owner: \"\",\n State: \"\",\n StartDate: \"\",\n EndDate: \"\",\n ECL: \"\",\n Jobname: \"\",\n LogicalFile: \"\",\n LogicalFileSearchType: \"\",\n /*\n ApplicationValues>\n ApplicationValue>\n Application: \"\",\n Name: \"\",\n Value: \"\",\n /ApplicationValue>\n /ApplicationValues>\n */\n After: \"\",\n Before: \"\",\n Count: \"\",\n PageSize: 100,\n PageStartFrom: 0,\n PageEndAt: \"\",\n LastNDays: \"\",\n Sortby: \"\",\n Descending: 0,\n CacheHint: \"\"\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.jsonp(url, request).then(function (response) {\n if (response.WUQueryResponse && response.WUQueryResponse.Workunits) {\n return response.WUQueryResponse.Workunits.ECLWorkunit;\n }\n return [];\n });\n};\n\n// Workunit ---\nfunction Workunit(baseUrl, wuid) {\n BasicComms.call(this);\n\n this.url(baseUrl + \"WsWorkunits/\");\n this._wuid = wuid;\n}\nWorkunit.prototype = Object.create(BasicComms.prototype);\n\nWorkunit.prototype.wuInfo = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUInfo.json\"\n });\n const request = {\n Wuid: this._wuid,\n TruncateEclTo64k: true,\n IncludeExceptions: false,\n IncludeGraphs: false,\n IncludeSourceFiles: false,\n IncludeResults: false,\n IncludeResultsViewNames: false,\n IncludeVariables: false,\n IncludeTimers: false,\n IncludeResourceURLs: false,\n IncludeDebugValues: false,\n IncludeApplicationValues: false,\n IncludeWorkflows: false,\n IncludeXmlSchemas: false,\n SuppressResultSchemas: true\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.jsonp(url, request).then(function (response) {\n if (enableBasicCommsCache) {\n const retVal = { WUInfoResponse: { Workunit: {} } };\n for (const key in options) {\n const includeKey = key.substring(7);\n retVal.WUInfoResponse.Workunit[includeKey] = response.WUInfoResponse.Workunit[includeKey];\n }\n basicCommsCache[url][JSON.stringify(request)] = retVal;\n }\n return response;\n });\n};\n\nWorkunit.prototype.wuUpdate = function (options) {\n const url = this.getUrl({\n pathname: \"WsWorkunits/WUUpdate.json\"\n });\n const request = {\n Wuid: this._wuid\n };\n for (const key in options) {\n request[key] = options[key];\n }\n return this.post(url, request);\n};\n\nWorkunit.prototype.appData = function (appID, key, _) {\n if (arguments.length === 2) {\n return this.wuInfo({\n IncludeApplicationValues: true\n }).then(function (response) {\n let persistString;\n if (response.WUInfoResponse && response.WUInfoResponse.Workunit && response.WUInfoResponse.Workunit.ApplicationValues && response.WUInfoResponse.Workunit.ApplicationValues.ApplicationValue) {\n response.WUInfoResponse.Workunit.ApplicationValues.ApplicationValue.filter(function (row) {\n return row.Application === appID && row.Name === key;\n }).forEach(function (row) {\n persistString = row.Value;\n });\n }\n return persistString;\n });\n } else if (arguments.length === 3) {\n return this.wuUpdate({\n \"ApplicationValues.ApplicationValue.0.Application\": appID,\n \"ApplicationValues.ApplicationValue.0.Name\": key,\n \"ApplicationValues.ApplicationValue.0.Value\": _,\n \"ApplicationValues.ApplicationValue.itemcount\": 1\n });\n }\n};\n\nWorkunit.prototype.results = function () {\n const context = this;\n return this.wuInfo({\n IncludeResults: true\n }).then(function (response) {\n let retVal = [];\n if (Utility.exists(\"WUInfoResponse.Workunit.Results.ECLResult\", response)) {\n retVal = response.WUInfoResponse.Workunit.Results.ECLResult.map(function (result) {\n return new WUResult(context.getUrl({ pathname: \"WsWorkunits/\" }), context._wuid, result.Name);\n });\n }\n return retVal;\n });\n};\n\nWorkunit.prototype.result = function (dataSource, resultName) {\n dataSource = dataSource || this._wuid;\n return createResult(dataSource, resultName);\n};\n\n// Workunit Result ---\nfunction WUResult(baseUrl, wuid, name) {\n BasicComms.call(this);\n this.url(baseUrl + \"WUResult.json\");\n this._wuid = wuid;\n this._name = name;\n this._xmlSchema = null;\n}\nWUResult.prototype = Object.create(BasicComms.prototype);\n\nWUResult.prototype.wuid = function (_) {\n if (!arguments.length) return this._wuid;\n this._wuid = _;\n return this;\n};\n\nWUResult.prototype.name = function (_) {\n if (!arguments.length) return this._name;\n this._name = _;\n return this;\n};\n\nWUResult.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n Wuid: this._wuid,\n ResultName: this._name,\n SuppressXmlSchema: true,\n Start: 0,\n Count: -1\n };\n for (const key in options) {\n request[key] = options[key];\n }\n let filterIdx = 0;\n for (const fKey in filter) {\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Name\"] = fKey;\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Value\"] = filter[fKey];\n ++filterIdx;\n }\n if (filterIdx) {\n request[\"FilterBy.NamedValue.itemcount\"] = filterIdx;\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n if (response.WUResultResponse &&\n response.WUResultResponse.Result &&\n response.WUResultResponse.Result[context._name]) {\n if (enableBasicCommsCache) {\n basicCommsCache[context.url()][JSON.stringify(request)] = {\n WUResultResponse: {\n Result: response.WUResultResponse.Result\n }\n };\n }\n context._xmlSchema = response.WUResultResponse.Result.XmlSchema;\n return nestedRowFix(response.WUResultResponse.Result[context._name]);\n }\n return [];\n });\n};\n\n// Logical File ---\nfunction LogicalFile(baseUrl, logicalName) {\n BasicComms.call(this);\n this.url(baseUrl + \"WUResult.json\");\n this._logicalName = logicalName;\n this._xmlSchema = null;\n}\nLogicalFile.prototype = Object.create(BasicComms.prototype);\n\nLogicalFile.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n Cluster: \"hthor\", // TODO: Should not be needed ---\n LogicalName: this._logicalName,\n SuppressXmlSchema: this._xmlSchema !== null,\n Start: 0,\n Count: -1\n };\n for (const key in options) {\n request[key] = options[key];\n }\n let filterIdx = 0;\n for (const fKey in filter) {\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Name\"] = fKey;\n request[\"FilterBy.NamedValue.\" + filterIdx + \".Value\"] = filter[fKey];\n ++filterIdx;\n }\n if (filterIdx) {\n request[\"FilterBy.NamedValue.itemcount\"] = filterIdx;\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n if (response.WUResultResponse &&\n response.WUResultResponse.Result &&\n response.WUResultResponse.Result.Row) {\n context._xmlSchema = response.WUResultResponse.Result.XmlSchema;\n return nestedRowFix(response.WUResultResponse.Result.Row);\n }\n return [];\n });\n};\n\n// Roxie Query ---\nfunction RoxieQuery(baseUrl, resultName) {\n BasicComms.call(this);\n const urlParts = baseUrl.split(\"/\");\n let queryName = urlParts.pop();\n if (queryName.toLowerCase() === \"json\") {\n queryName = urlParts.pop();\n }\n this._queryName = queryName;\n this._resultName = resultName;\n this.url(urlParts.join(\"/\") + \"/\" + queryName + \"/json\");\n}\nRoxieQuery.prototype = Object.create(BasicComms.prototype);\n\nfunction trimRight(str) {\n if (str && str.replace) {\n return str.replace(/ +$/, \"\");\n }\n return str;\n}\n\nfunction postFilter(results, filter) {\n return results.filter(function (row) {\n for (const key in filter) {\n if (row[key] !== undefined && trimRight(filter[key]) !== trimRight(row[key])) {\n return false;\n }\n }\n return true;\n });\n}\n\nfunction locateRoxieResponse(response) {\n // v5 and v6 compatible ---\n for (const key in response) {\n if (response[key].Row && response[key].Row instanceof Array) {\n return response;\n }\n const retVal = locateRoxieResponse(response[key]);\n if (retVal) {\n return retVal;\n }\n }\n return null;\n}\n\nRoxieQuery.prototype.query = function (options, filter) {\n options = options || {};\n filter = filter || {};\n const request = {\n };\n for (const key in options) {\n request[key] = options[key];\n }\n for (const fKey in filter) {\n request[fKey] = filter[fKey];\n }\n const context = this;\n return this.jsonp(this.url(), request).then(function (response) {\n response = locateRoxieResponse(response);\n if (response) {\n if (context._resultName) {\n if (response && response[context._resultName] && response[context._resultName].Row) {\n return nestedRowFix(postFilter(response[context._resultName].Row, filter));\n }\n } else {\n for (const key in response) {\n if (response[key].Row) {\n return nestedRowFix(postFilter(response[key].Row, filter));\n }\n }\n }\n }\n return [];\n });\n};\n\nexport function createResult(_espUrl, dataSource, resultName?) {\n const espUrl = new Comms.ESPUrl()\n .url(_espUrl)\n ;\n if (dataSource.indexOf(\"http\") === 0) {\n return new RoxieQuery(dataSource, resultName);\n } else if (dataSource.indexOf(\"~\") === 0 || dataSource.indexOf(\"::\") >= 0) {\n return new LogicalFile(espUrl.getUrl({ pathname: \"WsWorkunits/\" }), dataSource);\n } else if (dataSource) {\n return new WUResult(espUrl.getUrl({ pathname: \"WsWorkunits/\" }), dataSource, resultName);\n }\n return null;\n}\n\nexport function enableCache(_?: any): any | undefined {\n if (!arguments.length) return enableBasicCommsCache;\n enableBasicCommsCache = _;\n if (!_) {\n basicCommsCache = {};\n }\n}\nexport function cache(_?: any): any | undefined {\n if (!arguments.length) return basicCommsCache;\n basicCommsCache = _;\n}\nexport function createConnection(url) {\n url = url || document.URL;\n const testURL = new Comms.ESPUrl()\n .url(url)\n ;\n if (testURL.isWsWorkunits()) {\n const espConnection = Comms.createESPConnection(url);\n if (espConnection instanceof Comms.WsWorkunits && espConnection.wuid()) {\n return new Workunit(espConnection.getUrl({ pathname: \"\" }), espConnection.wuid())\n .url(url)\n ;\n }\n }\n return null;\n}\nexport function flattenResult(result, mappings) {\n const retVal = {\n columns: [],\n data: []\n };\n if (result && result.length) {\n const colIdx = {};\n if (mappings && mappings.length) {\n mappings.forEach(function (mapping) {\n colIdx[mapping.value.toLowerCase()] = retVal.columns.length;\n retVal.columns.push(mapping.key);\n });\n } else {\n for (const key in result[0]) {\n colIdx[key.toLowerCase()] = retVal.columns.length;\n retVal.columns.push(key);\n }\n }\n result.forEach(function (row, rowIdx) {\n const rowArr = [];\n for (const key in row) {\n if (colIdx[key.toLowerCase()] !== undefined) {\n rowArr[colIdx[key.toLowerCase()]] = row[key];\n }\n }\n retVal.data.push(rowArr);\n });\n }\n return retVal;\n}\n","'use strict';\n\nif (typeof module !== 'undefined') module.exports = simpleheat;\n\nfunction simpleheat(canvas) {\n if (!(this instanceof simpleheat)) return new simpleheat(canvas);\n\n this._canvas = canvas = typeof canvas === 'string' ? document.getElementById(canvas) : canvas;\n\n this._ctx = canvas.getContext('2d');\n this._width = canvas.width;\n this._height = canvas.height;\n\n this._max = 1;\n this._data = [];\n}\n\nsimpleheat.prototype = {\n\n defaultRadius: 25,\n\n defaultGradient: {\n 0.4: 'blue',\n 0.6: 'cyan',\n 0.7: 'lime',\n 0.8: 'yellow',\n 1.0: 'red'\n },\n\n data: function (data) {\n this._data = data;\n return this;\n },\n\n max: function (max) {\n this._max = max;\n return this;\n },\n\n add: function (point) {\n this._data.push(point);\n return this;\n },\n\n clear: function () {\n this._data = [];\n return this;\n },\n\n radius: function (r, blur) {\n blur = blur === undefined ? 15 : blur;\n\n // create a grayscale blurred circle image that we'll use for drawing points\n var circle = this._circle = this._createCanvas(),\n ctx = circle.getContext('2d'),\n r2 = this._r = r + blur;\n\n circle.width = circle.height = r2 * 2;\n\n ctx.shadowOffsetX = ctx.shadowOffsetY = r2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = 'black';\n\n ctx.beginPath();\n ctx.arc(-r2, -r2, r, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n\n return this;\n },\n\n resize: function () {\n this._width = this._canvas.width;\n this._height = this._canvas.height;\n },\n\n gradient: function (grad) {\n // create a 256x1 gradient that we'll use to turn a grayscale heatmap into a colored one\n var canvas = this._createCanvas(),\n ctx = canvas.getContext('2d'),\n gradient = ctx.createLinearGradient(0, 0, 0, 256);\n\n canvas.width = 1;\n canvas.height = 256;\n\n for (var i in grad) {\n gradient.addColorStop(+i, grad[i]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 1, 256);\n\n this._grad = ctx.getImageData(0, 0, 1, 256).data;\n\n return this;\n },\n\n draw: function (minOpacity) {\n if (!this._circle) this.radius(this.defaultRadius);\n if (!this._grad) this.gradient(this.defaultGradient);\n\n var ctx = this._ctx;\n\n ctx.clearRect(0, 0, this._width, this._height);\n\n // draw a grayscale heatmap by putting a blurred circle at each data point\n for (var i = 0, len = this._data.length, p; i < len; i++) {\n p = this._data[i];\n ctx.globalAlpha = Math.max(p[2] / this._max, minOpacity === undefined ? 0.05 : minOpacity);\n ctx.drawImage(this._circle, p[0] - this._r, p[1] - this._r);\n }\n\n // colorize the heatmap, using opacity value of each pixel to get the right color from our gradient\n var colored = ctx.getImageData(0, 0, this._width, this._height);\n this._colorize(colored.data, this._grad);\n ctx.putImageData(colored, 0, 0);\n\n return this;\n },\n\n _colorize: function (pixels, gradient) {\n for (var i = 0, len = pixels.length, j; i < len; i += 4) {\n j = pixels[i + 3] * 4; // get gradient color from opacity value\n\n if (j) {\n pixels[i] = gradient[j];\n pixels[i + 1] = gradient[j + 1];\n pixels[i + 2] = gradient[j + 2];\n }\n }\n },\n\n _createCanvas: function () {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else {\n // create a new canvas instance in node.js\n // the canvas class needs to have a default constructor without any parameter\n return new this._canvas.constructor();\n }\n }\n};\n","import { CanvasWidget, Palette } from \"@hpcc-js/common\";\nimport * as _simpleheat from \"simpleheat\";\n\nconst simpleheat = (window as any).simpleheat || (_simpleheat && _simpleheat.default) || _simpleheat;\n\nexport class HeatMap extends CanvasWidget {\n _heat;\n _palette;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n // canvas size needs to be set before render\n this.resize(this._size);\n this._heat = simpleheat(domNode);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._palette = this._palette.switch(this.paletteID());\n if (this.useClonedPalette()) {\n this._palette = this._palette.cloneNotExists(this.paletteID() + \"_\" + this.id());\n }\n\n if (this.topLeftX_exists() && this.topLeftY_exists() && this.bottomRightX_exists() && this.bottomRightY_exists()) {\n this._heat.data(this.skewedData());\n } else {\n this._heat.data(this.data());\n }\n\n if (this.radius()) {\n this._heat.radius(this.radius(), this.blur());\n }\n if (this.usePalette()) {\n const grad = {};\n for (let idx = 1; idx <= this.colorCount(); idx++) {\n const value = idx / this.colorCount();\n grad[value] = this._palette(idx, 1, this.colorCount());\n }\n this._heat.defaultGradient = grad;\n this._heat.gradient(grad);\n } else if (this.gradient()) {\n this._heat.defaultGradient = this.gradient();\n this._heat.gradient(this.gradient());\n }\n\n this._heat.draw();\n }\n\n exit(domNode, element) {\n delete this._heat;\n super.exit(domNode, element);\n }\n\n resize(size: any): this {\n const retVal = CanvasWidget.prototype.resize.apply(this, arguments);\n if (this._heat !== undefined) {\n this._heat.resize();\n }\n return retVal;\n }\n\n skewedData() {\n const context = this;\n const retArr = [];\n const arr = this.data();\n const box = this.size();\n\n const coordsWidth = this.bottomRightX() - this.topLeftX();\n const coordsHeight = this.bottomRightY() - this.topLeftY();\n\n const pixelValueX = coordsWidth / box.width;\n const pixelValueY = coordsHeight / box.height;\n\n arr.forEach(function (n) {\n const left = Math.abs(n[0] - context.topLeftX());\n const top = Math.abs(n[1] - context.topLeftY());\n\n const newX = left / pixelValueX;\n const newY = top / pixelValueY;\n\n retArr.push([newX, newY, n[2]]);\n });\n\n return retArr;\n }\n\n radius: { (): number; (_: number): HeatMap };\n radius_exists: () => boolean;\n blur: { (): number; (_: number): HeatMap };\n blur_exists: () => boolean;\n max: { (): number; (_: number): HeatMap };\n max_exists: () => boolean;\n gradient: { (): object; (_: object): HeatMap };\n gradient_exists: () => boolean;\n usePalette: { (): boolean; (_: boolean): HeatMap };\n usePalette_exists: () => boolean;\n colorCount: { (): number; (_: number): HeatMap };\n colorCount_exists: () => boolean;\n paletteID: { (): string; (_: string): HeatMap };\n paletteID_exists: () => boolean;\n useClonedPalette: { (): boolean; (_: boolean): HeatMap };\n useClonedPalette_exists: () => boolean;\n topLeftX: { (): number; (_: number): HeatMap };\n topLeftX_exists: () => boolean;\n topLeftY: { (): number; (_: number): HeatMap };\n topLeftY_exists: () => boolean;\n bottomRightX: { (): number; (_: number): HeatMap };\n bottomRightX_exists: () => boolean;\n bottomRightY: { (): number; (_: number): HeatMap };\n bottomRightY_exists: () => boolean;\n}\nHeatMap.prototype._class += \" other_HeatMap\";\nHeatMap.prototype._palette = Palette.rainbow(\"default\");\n\nHeatMap.prototype.publish(\"radius\", 15, \"number\", \"Set point radius\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"blur\", 15, \"number\", \"Set point blur\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"max\", 1, \"number\", \"Set max data value\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"gradient\", { 0.4: \"blue\", 0.6: \"cyan\", 0.7: \"lime\", 0.8: \"yellow\", 1.0: \"red\" }, \"object\", \"Set gradient colors\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"usePalette\", false, \"boolean\", \"If true, uses paletteID and colorCount to determine gradient\", null, { tags: [\"Basic\"] });\n\nHeatMap.prototype.publish(\"colorCount\", 10, \"number\", \"Top left x-value\", null, { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"paletteID\", \"default\", \"set\", \"Color palette for this widget\", HeatMap.prototype._palette.switch(), { tags: [\"Basic\"] });\nHeatMap.prototype.publish(\"useClonedPalette\", false, \"boolean\", \"Enable or disable using a cloned palette\", null, { tags: [\"Intermediate\", \"Shared\"] });\n\nHeatMap.prototype.publish(\"topLeftX\", null, \"number\", \"Top left x-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"topLeftY\", null, \"number\", \"Top left y-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"bottomRightX\", null, \"number\", \"Bottom right x-value\", null, { tags: [\"Basic\"], optional: true });\nHeatMap.prototype.publish(\"bottomRightY\", null, \"number\", \"Bottom right y-value\", null, { tags: [\"Basic\"], optional: true });\n","import { SVGWidget } from \"@hpcc-js/common\";\n\nexport class HPCCBadge extends SVGWidget {\n protected root;\n protected logo;\n protected logo_accent;\n protected logo_circles;\n protected line;\n protected circle_1;\n protected circle_2;\n protected circle_3;\n protected circle_4;\n protected circle_5;\n protected circle_6;\n protected circle_7;\n protected circle_8;\n protected circle_accent;\n protected text;\n protected text_hpccsystems;\n protected text_r;\n protected text_tm;\n\n constructor() {\n super();\n }\n\n testData(domNode, element) {\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this.root = element.append(\"g\");\n this.logo = this.root.append(\"g\");\n this.logo_accent = this.root.append(\"g\");\n this.line = this.logo_accent.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 189.38849,364.55373 c 191.6,3.8 0,0 191.6,3.8 l 0.1,-4.2 c -191.7,0.4 0,0 -191.7,0.4 z\")\n ;\n this.circle_accent = this.logo_accent.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M421.3,354.2c6.9,6.9,3.1,18.7-8.6,26.1c-11.8,7.4-26.3,6.9-32.1-0.6c-5.5-7.2-1.1-18.2,9.6-25C401,348,414.7,347.6,421.3,354.2z\")\n ;\n this.logo_circles = this.logo.append(\"g\");\n this.circle_1 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 258.9815,363.84947 c 1.3,-3 1.5,-5.9 0.4,-8.1 -2.6,-5.4 -11.8,-5.1 -20.6,0.4 -3.5,2.2 -6.5,4.9 -8.7,7.8 -0.11933,0.35821 -0.39477,0.60735 -0.6,0.9 -2.9,4.1 -4.2,8.3 -3,11.6 2.1,6 11.4,6.3 20.9,0.4 5,-3.2 8.9,-7.3 11,-11.4 -0.59813,0.54778 0.47385,-1.28911 0.6,-1.6 z\")\n ;\n this.circle_2 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M291.3,349.3c9.5-5.9,14.1-15,10.5-20c-3.5-4.8-13.3-4.2-22.1,1.3c-8.8,5.5-13.7,14.1-10.9,19.3C271.7,355.4,281.9,355.2,291.3,349.3z\")\n ;\n this.circle_3 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M335.3,321.7c9.5-5.9,13.3-14.5,8.9-19c-4.3-4.3-14.8-3.2-23.6,2.3c-8.8,5.5-13.1,13.7-9.4,18.4C315,328.3,325.9,327.7,335.3,321.7z\")\n ;\n this.circle_4 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M273.2,384c-3.2-6.5-13.5-6.7-23.2-0.7c-9.7,6-15.6,16.4-13.2,23.4c2.5,7.3,13.1,8.2,23.6,1.7 C270.8,401.9,276.5,390.8,273.2,384z\")\n ;\n this.circle_5 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"m 320.84499,363.83119 c 1,-3.4 0.8,-6.6 -1,-9.1 -4.2,-5.9 -15.3,-5.6 -25,0.5 -3.89999,2.4 -7.09999,5.5 -9.19999,8.7 -1.18854,2.2092 -0.0404,-0.09 -1.2,2.2 -2.2,4.1 -2.7,8.3 -0.9,11.5 3.6,6.7 15.09999,7 25.59999,0.5 5,-3.2 8.7,-7.2 10.7,-11.3 0.95557,-2.97582 0.0423,0.0306 1,-3 z\")\n ;\n this.circle_6 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M330.4,348.2c4.6,6,17,5.8,27.5-0.8c10.5-6.6,14.3-16.5,8.9-22c-5.2-5.3-17.1-4.4-26.8,1.6C330.3,333.1,325.9,342.4,330.4,348.2z\")\n ;\n this.circle_7 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M264.1,417.4c-10.8,6.7-17.2,19-14.2,27.8c3.2,9.2,15.4,11.1,27.2,3.7c11.8-7.4,17.8-20.6,13.6-29.2C286.6,411.6,274.8,410.7,264.1,417.4z\")\n ;\n this.circle_8 = this.logo_circles.append(\"path\")\n .attr(\"fill-rule\", \"evenodd\")\n .attr(\"clip-rule\", \"evenodd\")\n .attr(\"fill\", \"#179BD7\")\n .attr(\"d\", \"M314.2,386.1c-10.8,6.7-16.2,18.4-11.9,26.4c4.5,8.4,17.8,9.5,29.6,2.2c11.8-7.4,16.6-19.9,11.1-27.7C337.7,379.6,324.9,379.3,314.2,386.1z\")\n ;\n\n // Text ---\n this.text = this.root.append(\"g\");\n this.text_hpccsystems = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M224.2,476.3c0.1-1.3,0.1-2.7,0.2-4.1c-0.3,0-0.5,0.1-0.8,0.1c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5-0.1-0.8-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v1.1c-1.1,0-2.3,0-3.3,0.1c-1.1,0-2.2,0-3.3,0c-1.1,0-2.3,0-3.3,0c-1.1,0-2.2,0-3.3-0.1v-1.1c0-1.4,0-2.8,0.1-4.1c0.1-1.3,0.1-2.7,0.2-4.1c-0.3,0-0.5,0.1-0.8,0.1c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5-0.1-0.8-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-2.9c1.1,0,2.3,0,3.3,0c1.1,0,2.2,0,3.3,0c1.1,0,2.3,0,3.3,0c1.1,0,2.2,0,3.3,0v2.9c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-5.5C224.1,479,224.1,477.7,224.2,476.3z M242.7,473.8c-0.4-0.4-0.9-0.7-1.4-0.9c-0.5-0.2-1-0.4-1.5-0.5c-0.5-0.1-1-0.2-1.5-0.2c-0.5,0-0.9,0-1.2,0c-0.2,0-0.5,0-0.9,0c-0.3,0-0.7,0-1.1,0c-0.4,0-0.7,0-1.1,0c-0.4,0-0.7,0-0.9,0c-0.5,0-1,0-1.5,0c-0.5,0-1-0.1-1.5-0.1c0.1,1.4,0.1,2.8,0.2,4.1c0.1,1.3,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-1.8c0.4,0,0.8,0.1,1.2,0.1c0.4,0,0.8,0,1.3,0c0.8,0,1.6-0.1,2.6-0.3c1-0.2,1.9-0.5,2.8-1c0.9-0.5,1.6-1.2,2.2-2c0.6-0.9,0.9-2,0.9-3.4c0-0.9-0.1-1.6-0.4-2.2C243.5,474.7,243.1,474.2,242.7,473.8z M240.6,480.4c-0.4,0.7-0.9,1.2-1.4,1.6c-0.6,0.4-1.2,0.7-1.9,0.8c-0.7,0.1-1.4,0.2-2,0.2c-0.8,0-1.5-0.1-2.3-0.3v-9.5h2.9c0.8,0,1.6,0.1,2.2,0.2c0.7,0.1,1.2,0.3,1.7,0.7c0.5,0.3,0.8,0.8,1.1,1.3c0.3,0.6,0.4,1.3,0.4,2.2C241.2,478.8,241,479.7,240.6,480.4z M251.9,475.4c0.8-0.8,1.7-1.5,2.8-1.9c1.1-0.4,2.2-0.6,3.5-0.6c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.2,0.5,1.7,0.7c0.5,0.3,1,0.6,1.3,0.9c0.4,0.3,0.7,0.6,0.9,0.9l0.2-0.1c0.1-0.3,0.1-0.8,0.3-1.3c0.1-0.5,0.2-0.9,0.4-1.2c-0.9-0.4-1.9-0.7-3.1-1c-1.2-0.3-2.4-0.4-3.8-0.4c-1.8,0-3.4,0.3-4.8,0.8c-1.5,0.5-2.7,1.3-3.8,2.2c-1.1,1-1.9,2.2-2.5,3.6c-0.6,1.4-0.9,3-0.9,4.8c0,1.8,0.3,3.4,0.9,4.8c0.6,1.4,1.4,2.6,2.4,3.6c1,1,2.3,1.7,3.7,2.2c1.4,0.5,3,0.7,4.7,0.7c0.8,0,1.5-0.1,2.3-0.2c0.7-0.1,1.4-0.3,2-0.4c0.6-0.2,1.1-0.3,1.5-0.5c0.4-0.2,0.7-0.4,0.9-0.6l0.3-1.9l-0.1-0.1c-0.3,0.2-0.7,0.5-1.1,0.8c-0.4,0.3-0.9,0.6-1.5,0.9c-0.5,0.3-1.1,0.5-1.8,0.7c-0.6,0.2-1.4,0.3-2.1,0.3c-1.3,0-2.4-0.2-3.5-0.6c-1.1-0.4-2-1-2.8-1.9c-0.8-0.8-1.4-1.9-1.9-3.2c-0.4-1.3-0.7-2.8-0.7-4.6c0-1.8,0.2-3.3,0.7-4.6 C250.5,477.3,251.1,476.3,251.9,475.4z M273.2,475.4c0.8-0.8,1.7-1.5,2.8-1.9c1.1-0.4,2.2-0.6,3.5-0.6c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.2,0.5,1.7,0.7c0.5,0.3,1,0.6,1.3,0.9c0.4,0.3,0.7,0.6,0.9,0.9l0.2-0.1c0.1-0.3,0.1-0.8,0.3-1.3c0.1-0.5,0.2-0.9,0.4-1.2c-0.9-0.4-1.9-0.7-3.1-1c-1.2-0.3-2.4-0.4-3.8-0.4c-1.8,0-3.4,0.3-4.8,0.8c-1.5,0.5-2.7,1.3-3.8,2.2c-1.1,1-1.9,2.2-2.5,3.6c-0.6,1.4-0.9,3-0.9,4.8c0,1.8,0.3,3.4,0.9,4.8c0.6,1.4,1.4,2.6,2.4,3.6c1,1,2.3,1.7,3.7,2.2c1.4,0.5,3,0.7,4.7,0.7c0.8,0,1.5-0.1,2.3-0.2c0.7-0.1,1.4-0.3,2-0.4c0.6-0.2,1.1-0.3,1.5-0.5c0.4-0.2,0.7-0.4,0.9-0.6l0.3-1.9l-0.1-0.1c-0.3,0.2-0.7,0.5-1.1,0.8c-0.4,0.3-0.9,0.6-1.5,0.9c-0.5,0.3-1.1,0.5-1.8,0.7c-0.6,0.2-1.4,0.3-2.1,0.3c-1.3,0-2.4-0.2-3.5-0.6c-1.1-0.4-2-1-2.8-1.9c-0.8-0.8-1.4-1.9-1.9-3.2c-0.4-1.3-0.7-2.8-0.7-4.6c0-1.8,0.2-3.3,0.7-4.6 C271.8,477.3,272.4,476.3,273.2,475.4z M308.2,482.9c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8c0-1.2-0.2-2.1-0.7-2.8C309.6,483.9,309,483.3,308.2,482.9z M328.6,472.2c-0.4,0.9-0.9,1.9-1.4,2.8c-0.5,1-1,1.9-1.5,2.9c-0.5,1-1.1,1.9-1.6,2.8c-0.5,0.9-1,1.8-1.5,2.5c-1.1-1.9-2.2-3.8-3.1-5.6c-1-1.8-2-3.6-2.9-5.5c-0.3,0-0.6,0.1-0.9,0.1c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6-0.1-0.9-0.1c0.2,0.3,0.5,0.8,0.9,1.5c0.4,0.7,0.9,1.4,1.4,2.3c0.5,0.8,1,1.7,1.6,2.6c0.6,0.9,1.1,1.8,1.6,2.6c0.5,0.8,1,1.6,1.4,2.3c0.4,0.7,0.7,1.2,0.9,1.6c0,1.7,0,3.4,0,4.9c0,1.6-0.1,2.9-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c0-0.4-0.1-1-0.1-1.8c0-0.7-0.1-1.5-0.1-2.4c0-0.9,0-1.7,0-2.6c0-0.9,0-1.7,0-2.5c0.3-0.7,0.7-1.4,1.2-2.2c0.5-0.8,1-1.7,1.6-2.8c0.6-1,1.3-2.2,2.1-3.4c0.8-1.3,1.7-2.7,2.7-4.2c-0.5,0.1-0.9,0.2-1.2,0.2C329.5,472.3,329.1,472.3,328.6,472.2z M343.6,482.9c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8c0-1.2-0.2-2.1-0.7-2.8C345,483.9,344.4,483.3,343.6,482.9z M360.7,472.3c-1.3,0-2.7,0-4.1,0c-1.4,0-2.8,0-4.1,0c-1.3,0-2.7-0.1-4.1-0.1c0.1,0.4,0.2,0.8,0.2,1c0,0.3-0.1,0.6-0.2,1c0.4-0.1,1-0.1,1.5-0.2c0.6,0,1.1-0.1,1.8-0.1c0.6,0,1.2-0.1,1.8-0.1c0.6,0,1.2,0,1.7,0c0.1,2.2,0.1,4.4,0.1,6.6v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4c0.5,0,1-0.1,1.6-0.1c0.6,0,1.1,0,1.6,0.1c-0.1-1.3-0.1-2.7-0.2-4c-0.1-1.4-0.1-2.7-0.1-4.1v-5.5c0-2.2,0-4.4,0.1-6.6c0.6,0,1.1,0,1.7,0c0.6,0,1.2,0,1.8,0.1c0.6,0,1.2,0.1,1.8,0.1c0.6,0,1.1,0.1,1.5,0.2c-0.1-0.4-0.2-0.7-0.2-1c0-0.3,0.1-0.6,0.2-1C363.4,472.2,362,472.3,360.7,472.3z M379.8,492.3c-0.5,0.1-1.1,0.2-1.8,0.2c-0.7,0.1-1.4,0.1-2.2,0.1c-0.8,0-1.6,0-2.4,0h-2.2c0-0.4,0-1,0-1.8c0-0.8,0-1.8,0-3v-3.2c0-0.3,0-0.6,0-0.8c0-0.2,0-0.4,0-0.6c0.4,0,0.9,0,1.5,0c0.6,0,1.3,0,2.1,0c0.7,0,1.5,0,2.2,0.1c0.7,0,1.4,0.1,1.9,0.2c-0.1-0.3-0.1-0.6-0.1-1c0-0.3,0-0.7,0.1-1c-0.5,0-1,0.1-1.5,0.1c-0.5,0-1.1,0.1-1.7,0.1c-0.6,0-1.3,0.1-2,0.1c-0.7,0-1.6,0-2.5,0c0-0.4,0-1,0-1.8c0-0.8,0-1.6,0-2.4c0-0.8,0-1.5,0-2.1c0-0.6,0.1-1.3,0.1-1.9c1,0,1.9,0,2.7,0c0.7,0,1.4,0.1,2.1,0.1c0.6,0,1.2,0.1,1.8,0.1c0.6,0,1.2,0.1,1.9,0.1c-0.1-0.3-0.1-0.6-0.1-1c0-0.3,0-0.6,0.1-1c-1,0-1.9,0.1-2.8,0.1c-0.9,0-1.9,0-2.8,0c-1,0-1.9,0-2.9,0c-0.9,0-1.9-0.1-2.9-0.1c0.1,1.4,0.1,2.7,0.2,4.1c0.1,1.4,0.1,2.7,0.1,4.1v5.5c0,1.4,0,2.8-0.1,4.1c-0.1,1.4-0.1,2.7-0.2,4.1c1,0,1.9-0.1,2.9-0.1h5.8c0.9,0,1.9,0,2.9,0.1c-0.1-0.2-0.1-0.5-0.1-0.8c0-0.1,0-0.3,0-0.5C379.7,492.6,379.8,492.4,379.8,492.3z M406.8,483.3c-0.2-1.8-0.4-3.7-0.6-5.6c-0.2-1.9-0.4-3.9-0.7-5.9h-0.4c-0.5,1-1.1,2-1.7,3.2c-0.6,1.1-1.2,2.3-1.9,3.4c-0.6,1.2-1.2,2.3-1.8,3.5c-0.6,1.1-1.2,2.2-1.7,3.2c-0.5,1-1,1.8-1.4,2.6c-0.4,0.8-0.7,1.3-0.9,1.7c-1.6-3-3.2-5.9-4.7-8.8c-1.5-2.8-3-5.8-4.4-8.8H386c-0.2,1.7-0.4,3.5-0.6,5.4c-0.2,1.9-0.5,3.8-0.8,5.7c-0.3,1.9-0.6,3.9-0.9,5.8c-0.3,1.9-0.6,3.7-0.9,5.5c0.3,0,0.7-0.1,1.1-0.1c0.4,0,0.8,0,1.1,0.1c0-0.9,0.1-1.9,0.2-3.3c0.1-1.3,0.2-2.7,0.4-4.2c0.1-1.5,0.3-3,0.5-4.6c0.2-1.5,0.3-3,0.5-4.3h0.1c1.4,2.8,2.8,5.6,4.2,8.2c1.4,2.7,2.7,5.4,4,8h0.3c1.3-2.9,2.6-5.7,4-8.3c1.4-2.6,2.9-5.3,4.3-8h0.1c0.3,2.8,0.6,5.5,0.9,8.1c0.2,2.7,0.5,5.4,0.7,8.2c0.3,0,0.5-0.1,0.7-0.1h1.5c0.2,0,0.5,0,0.7,0.1c-0.3-1.8-0.5-3.5-0.7-5.3 C407.2,486.9,407,485.1,406.8,483.3z M423.4,484.6c-0.5-0.7-1.1-1.3-1.9-1.7c-0.7-0.4-1.5-0.8-2.4-1.1c-0.9-0.3-1.7-0.7-2.4-1.1c-0.7-0.4-1.4-0.9-1.9-1.5c-0.5-0.6-0.7-1.4-0.7-2.4c0-0.6,0.1-1.1,0.3-1.6c0.2-0.5,0.5-0.9,0.9-1.3c0.4-0.4,0.8-0.6,1.3-0.8c0.5-0.2,1-0.3,1.6-0.3c0.6,0,1.1,0.1,1.5,0.3c0.4,0.2,0.8,0.5,1.1,0.7c0.3,0.3,0.6,0.6,0.7,1c0.2,0.4,0.3,0.7,0.4,1h0.4c0.1-0.6,0.3-1.1,0.4-1.5c0.1-0.4,0.3-0.8,0.5-1.1c-0.6-0.5-1.3-0.9-2.1-1.1c-0.7-0.2-1.6-0.4-2.6-0.4c-1.1,0-2,0.1-2.9,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1.1,1.2-1.4,1.9c-0.3,0.7-0.5,1.5-0.5,2.4c0,1.3,0.2,2.3,0.7,3c0.5,0.7,1.1,1.4,1.9,1.8c0.7,0.5,1.5,0.9,2.4,1.2c0.9,0.3,1.7,0.7,2.4,1.1c0.7,0.4,1.4,0.9,1.9,1.4c0.5,0.6,0.7,1.3,0.7,2.3c0,0.6-0.1,1.2-0.3,1.8c-0.2,0.6-0.5,1.1-0.9,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.6,0.2-1.2,0.4-1.9,0.4c-0.7,0-1.3-0.1-1.8-0.3c-0.6-0.2-1-0.5-1.5-0.8c-0.4-0.3-0.8-0.7-1.1-1.1c-0.3-0.4-0.5-0.8-0.7-1.2h-0.4c-0.1,0.6-0.1,1.1-0.2,1.5c-0.1,0.4-0.2,0.8-0.4,1.3c0.6,0.4,1.2,0.8,2.1,1.2c0.8,0.4,1.9,0.5,3.2,0.5c1.2,0,2.3-0.2,3.3-0.5c1-0.4,1.8-0.8,2.5-1.5c0.7-0.6,1.2-1.4,1.5-2.3c0.4-0.9,0.5-1.8,0.5-2.8 C424.2,486.3,423.9,485.3,423.4,484.6z\")\n ;\n this.text_r = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M433.1,472.1c2.2,0,3.9,1.8,3.9,3.9c0,2.2-1.8,3.9-3.9,3.9c-2.2,0-3.9-1.8-3.9-3.9 C429.2,473.8,430.9,472.1,433.1,472.1z M433.1,479.5c1.9,0,3.5-1.6,3.5-3.5s-1.5-3.5-3.5-3.5s-3.5,1.6-3.5,3.5 S431.2,479.5,433.1,479.5z M431.7,475c0-0.5,0-1.1-0.1-1.5c0.3,0,0.6,0.1,0.9,0.1c0.3,0,0.6-0.1,0.9-0.1c0.8,0,1.4,0.4,1.4,1.1c0,0.9-1,1.3-1.5,1.4c0.6,0.7,1.5,2,1.9,2.4v0.1c-0.1,0-0.3-0.1-0.4-0.1c-0.1,0-0.3,0-0.4,0.1c-0.5-0.8-1.1-1.6-1.8-2.4h-0.4v0.8c0,0.5,0,1.1,0.1,1.6c-0.1,0-0.2-0.1-0.4-0.1c-0.1,0-0.2,0-0.4,0.1c0-0.5,0.1-1,0.1-1.5V475z M432.2,475.7c0.1,0,0.3,0,0.5,0c0.7,0,1.4-0.3,1.4-1.1c0-0.6-0.4-0.9-1-0.9c-0.3,0-0.5,0-0.8,0.1c0,0.3-0.1,0.7-0.1,1V475.7z\")\n ;\n this.text_tm = this.text.append(\"path\")\n .attr(\"fill\", \"#6E6E73\")\n .attr(\"d\", \"M376.1,322.1c0-0.6,0-1.2,0-1.9c-0.6,0-1.4,0-1.9,0.1c0-0.1,0-0.2,0-0.3c0-0.1,0-0.2,0-0.3c0.8,0,1.5,0,2.3,0s1.5,0,2.3,0c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3c-0.5-0.1-1.3-0.1-1.9-0.1c0,0.6,0,1.2,0,1.9v1.5c0,0.8,0,1.6,0.1,2.3c-0.2,0-0.3,0-0.4,0c-0.1,0-0.3,0-0.4,0c0-0.8,0.1-1.6,0.1-2.3V322.1zM380.5,319.7c0.8,1.7,1.7,3.3,2.6,5c0.4-0.7,1.8-3.3,2.7-5h0.1c0.3,2.3,0.5,4.3,0.7,6.3c-0.1,0-0.3,0-0.4,0c-0.1,0-0.3,0-0.4,0c-0.1-1.6-0.3-3.1-0.4-4.6h0c-0.8,1.5-1.6,3-2.4,4.6h-0.1c-0.7-1.5-1.5-3-2.3-4.6h0c-0.2,1.5-0.4,3.6-0.4,4.6c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0-0.3,0c0.3-2,0.7-4.4,0.9-6.3H380.5z\")\n ;\n\n const bbox = this.root.node().getBBox();\n const centerX = bbox.x + bbox.width / 2;\n const centerY = bbox.y + bbox.height / 2;\n const scale = Math.min(this.width(), this.height()) / Math.max(bbox.width, bbox.height);\n this.root\n .attr(\"transform\", \"translate(\" + (-centerX * scale) + \",\" + (-centerY * scale) + \")scale(\" + scale + \")\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n switch (this.animation()) {\n case \"none\":\n break;\n case \"accentInOut\":\n this.logo.attr(\"opacity\", 0);\n this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().ease(\"back\").delay(7000).duration(1500)\n .attr(\"transform\", \"translate(400, 0)\")\n ;\n this.text.transition().delay(8400).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo_accent.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n break;\n case \"accentIn\":\n this.logo.attr(\"opacity\", 0);\n this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n break;\n case \"fade_in\":\n this.logo.attr(\"opacity\", 0);\n // this.logo_accent.attr(\"transform\", \"translate(-400, 0)\");\n this.logo_accent.attr(\"opacity\", 0);\n this.text.attr(\"opacity\", 0);\n\n this.logo.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n /*\n this.logo_accent.transition().delay(500).duration(1500)\n .attr(\"transform\", \"translate(0, 0)\")\n ;\n */\n this.logo_accent.transition().duration(1000)\n .attr(\"opacity\", 1)\n ;\n this.text.transition().delay(100).duration(1000)\n .attr(\"opacity\", 1)\n ;\n /*\n this.logo_accent.transition().ease(\"back\").delay(7000).duration(1500)\n .attr(\"transform\", \"translate(400, 0)\")\n ;\n */\n /*\n this.text.transition().delay(8400).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo_accent.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n this.logo.transition().delay(8500).duration(1000)\n .attr(\"opacity\", 0)\n ;\n */\n break;\n default:\n break;\n }\n }\n}\nHPCCBadge.prototype._class += \" other_HPCCBadge\";\n\nexport interface HPCCBadge {\n animation(): \"none\" | \"accentInOut\" | \"accentIn\" | \"fade_in\";\n animation(_: \"none\" | \"accentInOut\" | \"accentIn\" | \"fade_in\"): this;\n}\n\nHPCCBadge.prototype.publish(\"animation\", \"none\", \"set\", \"Animation Style\", [\"none\", \"accentInOut\", \"accentIn\", \"fade_in\"]);\n","import { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Html.css\";\n\nexport class Html extends HTMLWidget {\n constructor() {\n super();\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n element\n .style(\"overflow-x\", this.overflowX_exists() ? this.overflowX() : \"\")\n .style(\"overflow-y\", this.overflowY_exists() ? this.overflowY() : \"\")\n ;\n\n const html = element.selectAll(\".htmlWrapper\").data(this.data().length > 0 ? this.data() : [this.html()]);\n html.enter().append(\"div\")\n .attr(\"class\", \"htmlWrapper\")\n .merge(html)\n .html(function (d) { return d; })\n ;\n html.exit().remove();\n }\n\n html: { (): string; (_: string): Html };\n html_exists: () => boolean;\n overflowX: { (): string; (_: string): Html };\n overflowX_exists: () => boolean;\n overflowY: { (): string; (_: string): Html };\n overflowY_exists: () => boolean;\n}\nHtml.prototype._class += \" other_Html\";\n\nHtml.prototype.publish(\"html\", \"\", \"string\", \"Html to render\", null, { tags: [\"Basic\"] });\nHtml.prototype.publish(\"overflowX\", null, \"set\", \"CSS overflow-x\", [\"\", \"visible\", \"hidden\", \"scroll\", \"auto\", \"initial\", \"inherit\"], { tags: [\"Basic\"], optional: true });\nHtml.prototype.publish(\"overflowY\", null, \"set\", \"CSS overflow-y\", [\"\", \"visible\", \"hidden\", \"scroll\", \"auto\", \"initial\", \"inherit\"], { tags: [\"Basic\"], optional: true });\n","import { Entity, HTMLWidget } from \"@hpcc-js/common\";\nimport { HorizontalList, VerticalList } from \"@hpcc-js/layout\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Html } from \"./Html\";\n\nimport \"../src/IconList.css\";\n\nexport class IconList extends HTMLWidget {\n protected _list;\n protected _entity_list = [];\n protected _content_list = [];\n constructor() {\n super();\n this._list = new HorizontalList()\n .orientation_default(\"horizontal\")\n .flexWrap_default(\"nowrap\")\n ;\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n element\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n d3Select(domNode.parentElement)\n .style(\"height\", \"100%\")\n .style(\"width\", \"100%\")\n ;\n this._list.target(domNode);\n }\n update(domNode, element) {\n super.update(domNode, element);\n const listWidgets = this._list.widgets();\n this.data().forEach((row, idx) => {\n if (!listWidgets[idx]) {\n listWidgets[idx] = this.updateListProperties(new VerticalList(), idx)\n .widgets([\n this.updateEntityProperties(new Entity(), idx),\n new Html().html(this.data()[idx][this.htmlColumnIndex_exists() ? this.htmlColumnIndex() : 1])\n ]);\n } else {\n listWidgets[idx] = this.updateListProperties(listWidgets[idx], idx);\n this.updateEntityProperties(listWidgets[idx].widgets()[0], idx);\n listWidgets[idx]\n .widgets()[1]\n .html(this.data()[idx][this.htmlColumnIndex_exists() ? this.htmlColumnIndex() : 1])\n ;\n }\n });\n this._list.widgets(listWidgets.slice(0, this.data().length));\n this._list.resize().render();\n }\n updateListProperties(list, idx) {\n return list\n .disableScroll(true)\n .widgetsFlexBasis([this.iconSize() + \"px\", `calc(100% - ${this.iconSize()}px)`])\n ;\n }\n updateEntityProperties(entity, idx) {\n return entity\n .icon(this.iconColumnIndex_exists() ? this.data()[idx][this.iconColumnIndex()] : \"?\")\n .iconColor(this.iconColorColumnIndex_exists() ? this.data()[idx][this.iconColorColumnIndex()] : \"#000\")\n .iconDiameter(this.iconSize())\n .iconPaddingPercent(0)\n ;\n }\n}\nIconList.prototype._class += \" other_IconList\";\n\nexport interface IconList {\n iconSize(): number;\n iconSize(_: number): this;\n iconColumnIndex(): number;\n iconColumnIndex(_: number): this;\n iconColumnIndex_exists(): boolean;\n iconColorColumnIndex(): number;\n iconColorColumnIndex(_: number): this;\n iconColorColumnIndex_exists(): boolean;\n htmlColumnIndex(): number;\n htmlColumnIndex(_: number): this;\n htmlColumnIndex_exists(): boolean;\n}\nIconList.prototype.publish(\"iconSize\", 72, \"number\", \"Size of icon (pixels)\");\nIconList.prototype.publish(\"iconColumnIndex\", 0, \"number\", \"Index of column containing icon character\");\nIconList.prototype.publish(\"iconColorColumnIndex\", 1, \"number\", \"Index of column containing icon color\");\nIconList.prototype.publish(\"htmlColumnIndex\", 2, \"number\", \"Index of column containing html string\");\n","import { d3Event, HTMLWidget, select as d3Select } from \"@hpcc-js/common\";\n\nimport \"../src/Paginator.css\";\n\nexport class Paginator extends HTMLWidget {\n _tNumPages;\n _numList;\n paginator;\n side;\n _onSelect;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n\n this._tNumPages = 1; // np\n\n this._numList = []; // pn\n }\n\n postUpdate(domNode, element) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n this.paginator = element.append(\"ul\").attr(\"class\", \"paginator pagination pagination-sm\");\n this.side = element.append(\"div\").attr(\"class\", \"paginator pagination side\");\n\n this.side.append(\"span\")\n .classed(\"side\", true)\n .text(\"Page \")\n ;\n\n this.side.append(\"input\")\n .attr(\"type\", \"number\")\n .attr(\"class\", \"currentPageNumber\")\n .property(\"value\", 1)\n .attr(\"min\", 1)\n .on(\"change\", function () {\n context.pageNumber(this.value);\n context._onSelect(this.value);\n })\n ;\n\n this.side.append(\"span\")\n .classed(\"side total\", true)\n .text(\" of 1\")\n ;\n }\n\n update(domNode, element) {\n const context = this;\n element\n .style(\"bottom\", this.bottom() + \"px\")\n .style(\"right\", this.right() + \"px\")\n ;\n\n this._tNumPages = Math.ceil(this.numItems() / this.itemsPerPage()) || 1;\n\n if (this.pageNumber() > this._tNumPages) { this.pageNumber(1); }\n\n this._numList = [];\n if (this.numItems()) {\n this._numList.push(\"first\");\n for (let x = -this.adjacentPages(); x <= this.adjacentPages(); x++) {\n if (this.pageNumber() + x > 0 && this.pageNumber() + x <= this._tNumPages) {\n this._numList.push(this.pageNumber() + x);\n }\n }\n this._numList.push(\"last\");\n }\n\n this.side.select(\".total\").text(\" of \" + this._tNumPages);\n this.side.select(\".currentPageNumber\").property(\"value\", this.pageNumber());\n this.side.select(\".currentPageNumber\").attr(\"max\", this._tNumPages);\n\n const page = this.paginator.selectAll(\"li\").data(this._numList, function (d) { return d; });\n page\n .enter()\n .append(function (d) {\n const li = document.createElement(\"li\");\n\n if (d !== context.pageNumber()) {\n const a = document.createElement(\"a\");\n const linkText = document.createTextNode(d);\n\n a.appendChild(linkText);\n a.href = \"#\";\n li.appendChild(a);\n\n return li;\n } else {\n const span = document.createElement(\"span\");\n span.innerHTML = d;\n\n li.appendChild(span);\n\n return li;\n }\n })\n .on(\"click\", function (d, i) {\n d3Event().preventDefault();\n context.side.select(\".currentPageNumber\").property(\"value\", context.pageNumber());\n switch (d) {\n case \"first\":\n if (context.pageNumber() !== 1) {\n context.pageNumber(1);\n context._onSelect(1, \"previous\");\n }\n break;\n case \"last\":\n if (context.pageNumber() !== context._tNumPages) {\n context.pageNumber(context._tNumPages);\n context._onSelect(context._tNumPages, \"previous\");\n }\n break;\n default:\n context.pageNumber(d);\n context._onSelect(d);\n }\n })\n ;\n\n page.classed(\"active\", function (e, j) { return e === context.pageNumber(); })\n .select(\"a\")\n .text(function (d) { return d; })\n ;\n\n page.exit().remove();\n page.order();\n\n if (this.numItems() === 0) {\n d3Select(domNode).remove();\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n itemsPerPage: { (): number; (_: number): Paginator };\n itemsPerPage_exists: () => boolean;\n numItems: { (): number; (_: number): Paginator };\n numItems_exists: () => boolean;\n pageNumber: { (): number; (_: number): Paginator };\n pageNumber_exists: () => boolean;\n adjacentPages: { (): number; (_: number): Paginator };\n adjacentPages_exists: () => boolean;\n bottom: { (): number; (_: number): Paginator };\n bottom_exists: () => boolean;\n right: { (): number; (_: number): Paginator };\n right_exists: () => boolean;\n}\nPaginator.prototype._class += \" other_Paginator\";\n\nPaginator.prototype.publish(\"itemsPerPage\", 2, \"number\", \"Pagination items per page\", null, { tags: [\"Private\"] });\n\nPaginator.prototype.publish(\"numItems\", 10, \"number\", \"Pagination total number of items\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"pageNumber\", 1, \"number\", \"Pagination set or get the page number\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"adjacentPages\", 2, \"number\", \"Number of page indexes either side of current one\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"bottom\", 20, \"number\", \"Pagination bottom offset\", null, { tags: [\"Private\"] });\nPaginator.prototype.publish(\"right\", 20, \"number\", \"Pagination right offset\", null, { tags: [\"Private\"] });\n","import { d3Event, HTMLWidget, Platform, select as d3Select, selectAll as d3SelectAll, Utility, Widget } from \"@hpcc-js/common\";\nimport { Paginator } from \"./Paginator\";\n\nimport \"../src/Table.css\";\n\nexport class Table extends HTMLWidget {\n protected _paginator;\n protected _selectionBag;\n protected _selectionPrevClick;\n protected _paginatorTableSpacing;\n\n tableDiv;\n thead;\n table;\n fixedHead;\n fixedHeadTable;\n fixedThead;\n unfixedThead;\n tbody;\n tfoot;\n fixedCol;\n fixedColTable;\n fixedColHead;\n fixedColHeadRow;\n fixedColBody;\n fixedColFoot;\n fixedColFootRow;\n protected _prevDescending;\n protected _prevSortByFieldIndex;\n protected _hasChildWidgets;\n protected _tNumPages;\n protected _empty_col_idx_arr: any[];\n\n constructor() {\n super();\n this._tag = \"div\";\n this.columns([]);\n this._paginator = new Paginator();\n this._selectionBag = new Utility.Selection(this);\n this._selectionPrevClick = null;\n this._paginatorTableSpacing = 4;\n }\n\n size(): any;\n size(_): Widget;\n size(_?): any | Widget {\n const retVal = super.size.apply(this, arguments);\n if (arguments.length) {\n if (this.tableDiv) {\n const topMargin = this.showHeader() && this.fixedHeader() ? this.thead.property(\"offsetHeight\") : 0;\n this.tableDiv\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height - topMargin + \"px\")\n ;\n this._element\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n }\n }\n\n return retVal;\n }\n\n isHidden(colIdx) {\n if (this.pivot()) return false;\n if (this.hiddenColumns().indexOf(colIdx) !== -1) return true;\n const fields = this.fields();\n if (fields && fields[colIdx] && (fields[colIdx].type() === \"hidden\" || this._empty_col_idx_arr.indexOf(colIdx) !== -1)) {\n return true;\n }\n return false;\n }\n\n tableColumns(_?: string[]): string[] {\n const retVal = this.columns.apply(this, arguments);\n if (!arguments.length && this.pivot()) {\n return this._db.column(0);\n }\n return retVal;\n }\n\n tableData(_?) {\n const retVal = this.data.apply(this, arguments);\n if (!arguments.length && this.pivot()) {\n return this._db.columns().filter(function (col, idx) { return idx > 0; });\n }\n return retVal;\n }\n\n field(rowIdx, colIdx) {\n const noTransform = { transform: d => d };\n if (this.pivot()) {\n if (colIdx === 0) return noTransform;\n return this.fields()[rowIdx + 1];\n }\n if (rowIdx === -1) return noTransform;\n return this.fields()[colIdx];\n }\n\n calcFieldsIndex(colIdx) {\n let i = -1;\n let offset = 0;\n const colLen = this.columns().length;\n let visibleCount = 0;\n while (i < colLen && visibleCount <= colIdx) {\n i++;\n if (this.isHidden(i)) {\n offset++;\n } else {\n visibleCount++;\n }\n }\n return colIdx + offset;\n }\n\n getEmptyColumnIdxArr(columns, data) {\n const ret_arr = [];\n if (this.hideEmptyColumns()) {\n for (let col_idx = 0; col_idx < columns.length; col_idx++) {\n let column_is_empty = true;\n for (let row_idx = 0; row_idx < data.length; row_idx++) {\n if ([\"\", null, undefined].indexOf(data[row_idx][col_idx]) === -1) {\n column_is_empty = false;\n break;\n }\n }\n if (column_is_empty) {\n ret_arr.push(col_idx);\n }\n }\n }\n return ret_arr;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._placeholderElement.style(\"overflow\", \"hidden\");\n\n this.tableDiv = element.append(\"div\").attr(\"class\", \"tableDiv\");\n this.table = this.tableDiv.append(\"table\");\n this.fixedHead = element.append(\"div\").classed(\"header-wrapper\", true);\n this.fixedHeadTable = this.fixedHead.append(\"table\");\n this.fixedThead = this.fixedHeadTable.append(\"thead\").append(\"tr\");\n this.unfixedThead = this.table.append(\"thead\").append(\"tr\");\n this.tbody = this.table.append(\"tbody\");\n this.tfoot = this.table.append(\"tfoot\").append(\"tr\");\n this.fixedCol = element.append(\"div\").classed(\"rows-wrapper\", true);\n this.fixedColTable = this.fixedCol.append(\"table\");\n this.fixedColHead = this.fixedColTable.append(\"thead\");\n this.fixedColHeadRow = this.fixedColHead.append(\"tr\");\n this.fixedColBody = this.fixedColTable.append(\"tbody\");\n this.fixedColFoot = this.fixedColTable.append(\"tfoot\");\n this.fixedColFootRow = this.fixedColFoot.append(\"tr\");\n\n this.tableDiv\n .style(\"overflow\", \"auto\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const columns = context.tableColumns();\n const data = context.tableData();\n const scrollLeft = this.tableDiv.node().scrollLeft;\n this._empty_col_idx_arr = this.getEmptyColumnIdxArr(columns, data);\n\n this.element().selectAll(\"table,tbody,th,td\").style(\"width\", null);\n\n if (this.sortByFieldIndex_exists() && (this._prevSortByFieldIndex !== this.sortByFieldIndex() || this._prevDescending !== this.descending())) {\n Utility.multiSort(data, [{ idx: this.sortByFieldIndex(), reverse: this.descending() }]);\n this._prevSortByFieldIndex = this.sortByFieldIndex();\n this._prevDescending = this.descending();\n }\n\n this._hasChildWidgets = false;\n\n if (this.fixedHeader()) {\n this.thead = this.fixedThead;\n } else {\n this.thead = this.unfixedThead;\n }\n this.fixedHead.style(\"display\", this.fixedHeader() ? \"table-row\" : \"none\");\n this.unfixedThead.style(\"display\", this.fixedHeader() ? \"none\" : \"table-row\");\n\n const thSel = this.thead.selectAll(\"th\").data(this.showHeader() ? columns.filter(function (col, idx) {\n return !context.isHidden(idx) && context._empty_col_idx_arr.indexOf(idx) === -1;\n }) : []);\n const thUpdate = thSel.enter().append(\"th\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2\n .append(\"span\")\n .attr(\"class\", \"thText\")\n ;\n element2\n .append(\"span\")\n .attr(\"class\", \"thIcon\")\n ;\n })\n .on(\"click\", function (column, idx) {\n context.headerClick(column, idx);\n })\n .merge(thSel)\n .style(\"background-color\", this.theadRowBackgroundColor())\n .style(\"border-color\", this.theadCellBorderColor())\n .style(\"color\", this.theadFontColor())\n .style(\"font-size\", this.theadFontSize())\n ;\n thUpdate.select(\".thText\")\n .style(\"font-family\", this.theadFontFamily())\n .text(function (column, idx) {\n const fieldsIdx = context.calcFieldsIndex(idx);\n return context.field(-1, fieldsIdx).transform(column);\n })\n ;\n thUpdate.select(\".thIcon\")\n .text(function (column, idx) {\n if (context.descending()) {\n return context.sortByFieldIndex() === idx ? \"\\uf078\" : \"\";\n } else {\n return context.sortByFieldIndex() === idx ? \"\\uf077\" : \"\";\n }\n })\n ;\n thSel.exit()\n .remove()\n ;\n thUpdate.order();\n\n if (this.paginationLimit()) {\n this.pagination(data.length >= parseInt(this.paginationLimit()) ? true : false);\n }\n if (this.pagination()) {\n if (this._paginator.target() === null) {\n this._paginator.target(element.node());\n }\n\n const ipp = this._calcRowsPerPage(thUpdate);\n this.itemsPerPage(ipp);\n\n this._paginator.numItems(data.length);\n this._tNumPages = Math.ceil(this._paginator.numItems() / this.itemsPerPage()) || 1;\n if (this.pageNumber() > this._tNumPages || this.pageNumber() <= 0) { this.pageNumber(1); } // resets if current pagenum selected out of range\n\n this._paginator._onSelect = function (p, d) {\n context.pageNumber(p);\n context.render();\n return;\n };\n } else {\n this._paginator.numItems(0); // remove widget\n }\n\n // pageNumber starts at index 1\n const startIndex = this.pageNumber() - 1;\n const itemsOnPage = this.itemsPerPage();\n\n const start = startIndex * itemsOnPage;\n const end = startIndex * parseInt(itemsOnPage) + parseInt(itemsOnPage);\n\n let tData = null;\n\n if (this.topN()) {\n tData = data.slice(0, this.topN());\n } else if (this.pagination()) {\n tData = data.slice(start, end);\n } else {\n tData = data;\n }\n\n const totalRow: any[] = [this.totalledLabel() ? this.totalledLabel() : null];\n if (this.totalledColumns().length !== 0) {\n for (let i = 0; i < this.totalledColumns().length; i++) this.totalledColumns()[i] = +this.totalledColumns()[i];\n for (let j = 1; j < columns.length; j++) {\n let sum = 0;\n if (this.totalledColumns().indexOf(j) !== -1) {\n for (let k = 0; k < tData.length; k++) {\n sum = sum + tData[k][j];\n }\n totalRow.push(sum);\n } else {\n totalRow.push(\"\");\n }\n }\n\n const tfSel = this.tfoot.selectAll(\"td\").data(totalRow);\n tfSel.enter()\n .append(\"td\")\n .merge(tfSel)\n .style(\"background-color\", this.tfootRowBackgroundColor())\n .style(\"border-color\", this.tfootCellBorderColor())\n .style(\"color\", this.tfootFontColor())\n .style(\"font-size\", this.tfootFontSize())\n [this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d, idx) {\n return context.fields()[idx].transform(d);\n });\n tfSel.exit()\n .remove()\n ;\n }\n\n const rowsSel = this.tbody.selectAll(\"tr.tr_\" + this.id()).data(tData.map(function (d, idx) {\n // TODO - Move fix closer to data source?\n for (let i = 0; i < d.length; ++i) {\n if (d[i] === undefined) {\n d[i] = null;\n }\n }\n return {\n rowIdx: idx,\n row: d\n };\n }));\n const rowsUpdate = rowsSel.enter().append(\"tr\")\n .attr(\"class\", \"tr_\" + this.id())\n .on(\"click.selectionBag\", function (_d) {\n if (_d.row) {\n const d = _d.row;\n const i = _d.rowIdx;\n context.selectionBagClick(d, i);\n context.applyRowStyles(context.getBodyRow(i));\n context.applyFirstColRowStyles(context.getFixedRow(i));\n }\n }, true) // capture=true: event is caught on the way down the DOM before the cell click.\n .on(\"mouseover\", function (_d) {\n if (_d.row) {\n const i = _d.rowIdx;\n const fixedLeftRows = context.getFixedRow(i);\n if (!fixedLeftRows.empty()) {\n fixedLeftRows.classed(\"hover\", true);\n }\n const tbodyRows = context.getBodyRow(i);\n tbodyRows.classed(\"hover\", true);\n context.applyStyleToRows(tbodyRows);\n context.applyFirstColRowStyles(fixedLeftRows);\n }\n })\n .on(\"mouseout\", function (_d) {\n if (_d.row) {\n const i = _d.rowIdx;\n const fixedLeftRows = context.getFixedRow(i);\n fixedLeftRows.classed(\"hover\", false);\n const tbodyRows = context.getBodyRow(i);\n tbodyRows.classed(\"hover\", false);\n context.applyStyleToRows(tbodyRows);\n context.applyFirstColRowStyles(fixedLeftRows);\n }\n })\n .merge(rowsSel)\n .classed(\"selected\", function (_d) {\n const d = _d.row;\n return context._selectionBag.isSelected(context._createSelectionObject(d));\n })\n .classed(\"trId\" + this._id, true)\n ;\n rowsSel.exit()\n .remove()\n ;\n this.applyStyleToRows(rowsUpdate);\n\n const cellsSel = rowsUpdate.selectAll(\".td_\" + this.id()).data(function (_d, _trIdx) {\n return _d.row.filter(function (cell, idx) {\n return idx < columns.length && !context.isHidden(idx) && context._empty_col_idx_arr.indexOf(idx) === -1;\n }).map(function (cell, idx) {\n return {\n rowInfo: _d,\n colIdx: idx,\n cell\n };\n });\n });\n cellsSel.enter()\n .append(\"td\")\n .attr(\"class\", \"td_\" + this.id())\n .on(\"click\", function (tdContents) {\n if (tdContents.rowInfo) {\n context.click(context.rowToObj(tdContents.rowInfo.row), context.columns()[tdContents.colIdx], context._selectionBag.isSelected(context._createSelectionObject(tdContents.rowInfo.row)));\n }\n })\n .on(\"dblclick\", function (tdContents, idx) {\n if (tdContents.rowInfo) {\n context.dblclick(context.rowToObj(tdContents.rowInfo.row), context.columns()[tdContents.colIdx], context._selectionBag.isSelected(context._createSelectionObject(tdContents.rowInfo.row)));\n }\n })\n .each(function (tdContents, tdIdx) {\n const alignment = context.getColumnAlignment(tdContents.rowInfo.rowIdx, tdContents.colIdx, tdContents.cell);\n const el = d3Select(this);\n el\n .style(\"height\", null)\n .style(\"text-align\", alignment)\n .style(\"vertical-align\", context.verticalAlign())\n .classed(\"tr-\" + tdContents.rowInfo.rowIdx + \"-td-\" + tdIdx, true)\n ;\n })\n .merge(cellsSel)\n .each(function (tdContents) {\n const el = d3Select(this);\n if (tdContents.cell instanceof Widget) {\n el[context.renderHtmlDataCells() ? \"html\" : \"text\"](null);\n const widgetDiv = el.selectAll(\".div_\" + context.id()).data([tdContents.cell], function (d: any) { return d.id(); });\n widgetDiv.exit()\n .each(function (d: any) {\n d.target(null);\n })\n .remove()\n ;\n widgetDiv.enter().append(\"div\")\n .attr(\"class\", \"div_\" + context.id())\n .style(\"width\", context.minWidgetWidth() + \"px\")\n .style(\"height\", context.minWidgetHeight() + \"px\")\n .each(function (d) {\n const widgetDiv2 = d3Select(this);\n d._parentWidget = context;\n if (d._class.indexOf(\"childWidget\") < 0) {\n d._class = \"childWidget \" + d._class;\n }\n d\n .target(null)\n .target(widgetDiv2.node())\n ;\n })\n .merge(widgetDiv as any)\n .each(function (d) {\n d\n .resize()\n .lazyRender()\n ;\n context._hasChildWidgets = true;\n })\n ;\n } else {\n el.selectAll(\".div_\" + context.id()).remove();\n const fieldsIdx = context.calcFieldsIndex(tdContents.colIdx);\n el[context.renderHtmlDataCells() ? \"html\" : \"text\"](\n context.field(tdContents.rowInfo.rowIdx, fieldsIdx).transform(tdContents.cell)\n );\n }\n })\n ;\n cellsSel.exit()\n .remove()\n ;\n const tableMarginHeight = parseInt(this.thead.node().offsetHeight);\n\n if (this.pagination() && this._hasChildWidgets) {\n this.tableDiv.style(\"overflow-y\", \"auto\");\n this.table.style(\"margin-bottom\", \"50px\");\n console.warn(\"Warning: displaying another widget in the table may cause problems with pagination\");\n } else {\n this.tableDiv.style(\"overflow-y\", null);\n this.table.style(\"margin-bottom\", null);\n\n }\n this.size(this._size);\n\n let fixedColWidth = 0;\n const fixedColThSel = this.fixedColHeadRow.selectAll(\"th\").data(this.fixedColumn() && this.showHeader() ? [columns[0]] : []);\n const fixedColThUpdate = fixedColThSel.enter().append(\"th\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2\n .append(\"span\")\n .attr(\"class\", \"thText\")\n ;\n element2\n .append(\"span\")\n .attr(\"class\", \"thIcon\")\n ;\n })\n .on(\"click\", function (column, idx) {\n context.headerClick(column, idx);\n })\n .merge(fixedColThSel)\n .style(\"background-color\", this.theadRowBackgroundColor())\n .style(\"border-color\", this.theadCellBorderColor())\n .style(\"color\", this.theadFontColor())\n .style(\"font-size\", this.theadFontSize())\n ;\n fixedColThUpdate.select(\".thText\")\n .style(\"font-family\", this.theadFontFamily())\n .text(function (column) {\n return column;\n })\n ;\n fixedColThUpdate.select(\".thIcon\")\n .text(function (column, idx) {\n if (context.descending()) {\n return context.sortByFieldIndex() === idx ? \"\\uf078\" : \"\";\n } else {\n return context.sortByFieldIndex() === idx ? \"\\uf077\" : \"\";\n }\n })\n ;\n fixedColThSel.exit()\n .remove()\n ;\n\n const fixedColTrSel = this.fixedColBody.selectAll(\"tr\").data(this.fixedColumn() ? tData : []);\n const fixedColTrUpdate = fixedColTrSel.enter().append(\"tr\")\n .attr(\"class\", function () {\n return \"trId\" + context._id;\n })\n .merge(fixedColTrSel)\n .on(\"click\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"click.selectionBag\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .on(\"mouseover\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"mouseover\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .on(\"mouseout\", function (d, i) {\n (d3Select(rowsUpdate[0][i]).on(\"mouseout\") as any)(rowsUpdate.data()[i], i)\n ;\n })\n .classed(\"selected\", function (d) {\n return context._selectionBag.isSelected(context._createSelectionObject(d));\n })\n ;\n fixedColTrSel.exit()\n .remove()\n ;\n const fixedColTdSel = fixedColTrUpdate.selectAll(\"td\").data(function (d, i) {\n return [d[0]];\n });\n const fixedColTdUpdate = fixedColTdSel.enter().append(\"td\")\n .merge(fixedColTdSel)[this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d): any {\n if (typeof (d) === \"string\") {\n return d.trim();\n } else if (typeof (d) === \"number\") {\n return d;\n }\n return \"\";\n });\n fixedColTdSel.exit()\n .remove()\n ;\n\n const fixedColFootTdSel = this.fixedColFootRow.selectAll(\"td\").data(this.fixedColumn() && this.totalledLabel() ? [this.totalledLabel()] : []);\n const fixedColFootTdUpdate = fixedColFootTdSel.enter().append(\"td\")\n .merge(fixedColFootTdSel)[this.renderHtmlDataCells() ? \"html\" : \"text\"](function (d): any {\n if (typeof (d) === \"string\") {\n return d.trim();\n } else if (typeof (d) === \"number\") {\n return d;\n }\n return \"\";\n });\n fixedColFootTdSel.exit()\n .remove()\n ;\n\n if (this.fixedColumn() && !this.fixedSize() && fixedColFootTdUpdate.length) {\n if (this.showHeader()) {\n fixedColWidth = fixedColFootTdUpdate.property(\"offsetWidth\") > fixedColFootTdUpdate.property(\"offsetWidth\") ? fixedColFootTdUpdate.property(\"offsetWidth\") : fixedColFootTdUpdate.property(\"offsetWidth\");\n } else {\n fixedColWidth = fixedColFootTdUpdate.property(\"offsetWidth\");\n }\n this.fixedCol\n .style(\"position\", \"absolute\")\n .style(\"margin-top\", -this.tableDiv.property(\"scrollTop\") + tableMarginHeight + \"px\")\n ;\n fixedColTdUpdate\n .style(\"width\", fixedColWidth + \"px\")\n ;\n this.fixedColHead\n .style(\"position\", \"absolute\")\n .style(\"margin-top\", (this.fixedHeader() ? this.tableDiv.property(\"scrollTop\") : 0) - tableMarginHeight + \"px\")\n ;\n fixedColThUpdate\n .style(\"width\", fixedColWidth + \"px\")\n ;\n rowsUpdate.each(function (d, i) {\n const height = d3Select(this).select(\"td\").property(\"offsetHeight\");\n d3Select(fixedColTdUpdate[i][0]).style(\"height\", height + \"px\");\n });\n }\n\n this.table\n .style(\"margin-left\", -fixedColWidth + \"px\")\n ;\n this.tableDiv\n .style(\"margin-left\", fixedColWidth + \"px\")\n .style(\"width\", this.width() - fixedColWidth + \"px\")\n ;\n\n if (!rowsUpdate.empty()) this.setColumnWidths(rowsUpdate);\n\n let box;\n let newTableHeight;\n let finalWidth;\n let maxWidth;\n if (this.fixedSize()) {\n const node = d3Select(\".tableDiv > table\").node();\n if (node) {\n box = (node as any).getBoundingClientRect();\n let newTableHeight;\n let finalWidth;\n if (box.width !== 0 && box.height !== 0) {\n calcWidth();\n calcHeight();\n } else {\n if (box.height - tableMarginHeight <= context.tableDiv.property(\"offsetHeight\")) {\n calcHeight();\n } else {\n if (context.fixedHeader()) {\n newTableHeight = context.tableDiv.property(\"offsetHeight\"); // is tableDiv correct?\n newTableHeight = newTableHeight + \"px\";\n } else {\n newTableHeight = \"100%\";\n }\n }\n if (box.width - fixedColWidth < context.tableDiv.property(\"offsetWidth\")) {\n calcWidth();\n } else {\n if (context.fixedColumn()) {\n finalWidth = context.tableDiv.property(\"offsetWidth\") - fixedColWidth; // is tableDiv correct?\n finalWidth = finalWidth + \"px\";\n } else {\n finalWidth = \"100%\";\n }\n }\n }\n if (element.classed(\"childWidget\")) {\n context._placeholderElement\n .style(\"width\", finalWidth + \"px\")\n .style(\"height\", newTableHeight + \"px\")\n ;\n context.tableDiv\n .style(\"overflow\", \"hidden\")\n ;\n }\n context.size({ width: finalWidth, height: newTableHeight });\n }\n }\n\n this.setOnScrollEvents(this.tableDiv.node(), tableMarginHeight);\n\n function calcWidth() {\n const newTableWidth = box.width;\n maxWidth = context.tbody.property(\"offsetWidth\") + 1;\n finalWidth = newTableWidth > maxWidth ? maxWidth : newTableWidth;\n finalWidth = finalWidth;\n }\n\n function calcHeight() {\n newTableHeight = context.tbody.property(\"offsetHeight\") + tableMarginHeight;\n newTableHeight = newTableHeight;\n }\n\n this._paginator.render();\n setTimeout(function () {\n context._paginator\n .right((context.hasVScroll(element) ? Platform.getScrollbarWidth() : 0) + context._paginatorTableSpacing)\n .bottom((context.hasHScroll(element) ? Platform.getScrollbarWidth() : 0) + context._paginatorTableSpacing)\n .render(function () {\n context.tableDiv.node().scrollLeft = scrollLeft;\n })\n ;\n }, 0);\n }\n\n exit(domNode, element) {\n this._paginator.target(null);\n super.exit(domNode, element);\n }\n\n setColumnWidths(rows) {\n const context = this;\n const firstRow = rows.filter(function (d, i) { return i === 0; });\n\n let tds = d3Select(null);\n firstRow.each(function (d) {\n tds = d3SelectAll(this.childNodes);\n });\n\n const tableMarginHeight = this.fixedHeader() ? this.thead.property(\"offsetHeight\") : 0;\n let totalWidth = 1;\n const tdWidths = {};\n\n tds.each(function (d, i) {\n tdWidths[i] = (this as any).offsetWidth;\n });\n\n const th = this.thead.selectAll(\"th\");\n th.each(function (d, i) {\n const thwidth = this.offsetWidth;\n const tdwidth = tds.empty() ? 0 : tdWidths[i];\n const usewidth = thwidth >= tdwidth ? thwidth : tdwidth;\n this.style.width = usewidth + \"px\";\n tds\n .filter((_d, idx) => idx === 0)\n .each(function () {\n d3Select(this).style(\"width\", usewidth + \"px\");\n })\n ;\n totalWidth += usewidth;\n });\n this.thead\n .style(\"position\", this.fixedHeader() ? \"absolute\" : \"relative\")\n .style(\"width\", totalWidth + \"px\")\n .style(\"margin-top\", \"0px\")\n ;\n this.table\n .style(\"width\", totalWidth + \"px\")\n ;\n this.tableDiv\n .style(\"margin-top\", (context.fixedHeader() ? tableMarginHeight : 0) + \"px\")\n ;\n this.tbody\n .style(\"width\", totalWidth + \"px\")\n ;\n }\n\n getBodyRow(i) {\n return this.table.selectAll(\"tbody tr.trId\" + this._id)\n .filter(function (d, idx) {\n return idx === i;\n })\n ;\n }\n\n getFixedRow(i) {\n return this._element.selectAll(\".rows-wrapper tbody tr\")\n .filter(function (d, idx) {\n return idx === i;\n })\n ;\n }\n\n setOnScrollEvents(scrollNode, margHeight) {\n const context = this;\n scrollNode.onscroll = function (e) {\n const topDelta = e.target.scrollTop;\n const leftDelta = e.target.scrollLeft;\n if (context.fixedHeader()) {\n context.thead\n .style(\"margin-left\", -leftDelta + \"px\")\n ;\n }\n if (context.fixedColumn()) {\n context.fixedCol\n .style(\"margin-top\", -topDelta + margHeight + \"px\")\n ;\n if (context.fixedHeader()) {\n context.fixedColHead\n .style(\"margin-top\", topDelta - margHeight + \"px\")\n ;\n }\n }\n };\n }\n\n _generateTempRow() {\n const trow = this.tbody.append(\"tr\");\n trow.append(\"td\").text(\"QQQ\");\n return trow;\n }\n\n _createSelectionObject(d) {\n const context = this;\n return {\n _id: d,\n element: () => context.tbody ? context.tbody.selectAll(\"tr\").filter(function (d2) { return d2 === d; }) : d3Select(null)\n };\n }\n\n _calcRowsPerPage(th) {\n if (this._paginator.numItems() === 0) { // only run on first render\n this._paginator.numItems(1);\n this.itemsPerPage(1);\n }\n this._paginator.render();\n\n const thHeight = this.thead.selectAll(\"th\").node() ? this.thead.selectAll(\"th\").node().clientHeight : 0;\n const tfootHeight = this.tfoot.selectAll(\"td\").node() ? this.tfoot.selectAll(\"td\").node().clientHeight : 0;\n const tmpRow = this._generateTempRow();\n const tcellHeight = tmpRow.node().clientHeight;\n tmpRow.remove();\n const paginatorHeight = this.calcHeight(this._paginator.element());\n let ipp = Math.floor((this.height() - thHeight - tfootHeight - paginatorHeight - (this.table.style(\"width\") >= this.table.style(\"width\") ? Platform.getScrollbarWidth() : 0) - this._paginatorTableSpacing * 2) / tcellHeight) || 1;\n if (this.totalledColumns().length !== 0) {\n ipp -= 1;\n }\n return ipp;\n }\n\n sort(idx) {\n if (this.sortByFieldIndex() !== idx) {\n this.descending(false);\n } else {\n this.descending(!this.descending());\n }\n this.sortByFieldIndex(idx);\n\n return this;\n }\n\n selection(_) {\n if (!arguments.length) return this._selectionBag.get().map(function (d) { return d._id; });\n this._selectionBag.set(_.map(function (row) {\n return this._createSelectionObject(row);\n }, this));\n return this;\n }\n\n selectionBagClick(d, i) {\n if (this.multiSelect() && d3Event().shiftKey && this._selectionPrevClick) {\n let inRange = false;\n const rows = [];\n const selection = this.tableData().filter(function (row, i2) {\n let lastInRangeRow = false;\n if (row === d || row === this._selectionPrevClick) {\n if (inRange) {\n lastInRangeRow = true;\n }\n inRange = !inRange;\n rows.push(i2);\n }\n return inRange || lastInRangeRow;\n }, this);\n this.selection(selection);\n } else if (this.multiSelect()) {\n this._selectionBag.click(this._createSelectionObject(d), d3Event);\n this._selectionPrevClick = d;\n } else {\n const selObj = this._createSelectionObject(d);\n this._selectionBag.click(selObj, { ctrlKey: this._selectionBag.isSelected(selObj) });\n this._selectionPrevClick = d;\n }\n this.render();\n }\n\n applyHoverRowStyles(row) {\n const context = this;\n row\n .style(\"color\", context.tbodyHoverRowFontColor())\n .style(\"background-color\", context.tbodyHoverRowBackgroundColor())\n ;\n }\n applySelectedRowStyles(row) {\n const context = this;\n row\n .style(\"color\", context.tbodySelectedRowFontColor())\n .style(\"background-color\", context.tbodySelectedRowBackgroundColor())\n ;\n }\n applyRowStyles(row, isFirstCol: boolean = false) {\n const dataRow = row.datum().row;\n row\n .style(\"color\", isFirstCol ? this.tbodyFirstColFontColor() : this.tbodyFontColor())\n .style(\"background-color\", isFirstCol ? this.tbodyFirstColBackgroundColor() : this.tableZebraColor_exists() && this.tableData().indexOf(dataRow) % 2 ? this.tbodyRowBackgroundColor() : this.tableZebraColor())\n ;\n }\n applyFirstColRowStyles(rows) {\n this.applyStyleToRows(rows, true);\n }\n applyStyleToRows(rows, isFirstCol: boolean = false) {\n isFirstCol = typeof isFirstCol !== \"undefined\" ? isFirstCol : false;\n const context = this;\n rows.each(function () {\n const tr = d3Select(this);\n if (tr.classed(\"hover\")) {\n context.applyHoverRowStyles(tr);\n } else if (tr.classed(\"selected\")) {\n context.applySelectedRowStyles(tr);\n } else {\n context.applyRowStyles(tr, isFirstCol);\n }\n })\n ;\n }\n\n getColumnAlignment(rowIdx, colIdx, cell) {\n const fieldsIdx = this.calcFieldsIndex(colIdx);\n const field = this.field(rowIdx, fieldsIdx);\n switch ((field as any).__prop_type) {\n case \"string\":\n return this.stringAlign();\n case \"number\":\n return this.numberAlign();\n case \"\":\n case undefined:\n switch (typeof cell) {\n case \"string\":\n return this.stringAlign();\n case \"number\":\n return this.numberAlign();\n }\n }\n return null;\n }\n\n serializeState() {\n return {\n selection: this._selectionBag.get().map(function (d) {\n return d._id;\n }),\n data: this.data()\n };\n }\n\n deserializeState(state) {\n if (state) {\n if (state.selection) {\n const context = this;\n this._selectionBag.set(state.selection.map(function (d) {\n return context._createSelectionObject(d);\n }));\n }\n if (state.data) {\n this.data(state.data);\n }\n }\n return this;\n }\n\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n\n headerClick(column, idx) {\n this\n .sort(idx)\n .render()\n ;\n }\n renderHtmlDataCells: { (): boolean; (_: boolean): Table; };\n pagination: { (): boolean; (_: boolean): Table; };\n paginationLimit: { (): any; (_: any): Table; };\n itemsPerPage: { (): any; (_: any): Table; };\n pageNumber: { (): number; (_: number): Table; };\n adjacentPages: { (): number; (_: number): Table; };\n topN: { (): number; (_: number): Table; };\n pivot: { (): boolean; (_: boolean): Table; };\n showHeader: { (): boolean; (_: boolean): Table; };\n fixedHeader: { (): boolean; (_: boolean): Table; };\n fixedColumn: { (): boolean; (_: boolean): Table; };\n multiSelect: { (): boolean; (_: boolean): Table; };\n\n fixedSize: { (): boolean; (_: boolean): Table; };\n\n hideEmptyColumns: { (): boolean; (_: boolean): Table; };\n\n theadFontSize: { (): string; (_: string): Table; };\n tbodyFontSize: { (): string; (_: string): Table; };\n tfootFontSize: { (): string; (_: string): Table; };\n theadFontColor: { (): string; (_: string): Table; };\n tbodyFontColor: { (): string; (_: string): Table; };\n tfootFontColor: { (): string; (_: string): Table; };\n theadFontFamily: { (): string; (_: string): Table; };\n tbodyFontFamily: { (): string; (_: string): Table; };\n tfootFontFamily: { (): string; (_: string): Table; };\n\n theadCellBorderColor: { (): string; (_: string): Table; };\n tfootCellBorderColor: { (): string; (_: string): Table; };\n theadRowBackgroundColor: { (): string; (_: string): Table; };\n tfootRowBackgroundColor: { (): string; (_: string): Table; };\n\n tbodyCellBorderColor: { (): string; (_: string): Table; };\n\n tbodyRowBackgroundColor: { (): string; (_: string): Table; };\n tbodyFirstColFontColor: { (): string; (_: string): Table; };\n tbodyFirstColBackgroundColor: { (): string; (_: string): Table; };\n\n tbodyHoverRowFontColor: { (): string; (_: string): Table; };\n tbodyHoverRowBackgroundColor: { (): string; (_: string): Table; };\n\n tbodySelectedRowFontColor: { (): string; (_: string): Table; };\n tbodySelectedRowBackgroundColor: { (): string; (_: string): Table; };\n tableZebraColor: { (): string; (_: string): Table; };\n tableZebraColor_exists: () => boolean;\n totalledColumns: { (): any[]; (_: any[]): Table; };\n totalledLabel: { (): string; (_: string): Table; };\n hiddenColumns: { (): any[]; (_: any[]): Table; };\n\n stringAlign: { (): string; (_: string): Table; };\n numberAlign: { (): string; (_: string): Table; };\n verticalAlign: { (): string; (_: string): Table; };\n\n minWidgetWidth: { (): number; (_: number): Table; };\n minWidgetHeight: { (): number; (_: number): Table; };\n\n sortByFieldIndex: { (): number; (_: number): Table; };\n sortByFieldIndex_exists: () => boolean;\n descending: { (): boolean; (_: boolean): Table; };\n}\nTable.prototype._class += \" other_Table\";\n\nTable.prototype.publish(\"renderHtmlDataCells\", false, \"boolean\", \"enable or disable HTML within cells\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"pagination\", true, \"boolean\", \"Enable or disable pagination\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"paginationLimit\", null, \"number\", \"Maximum number of rows allowed before pagination defaults to on\", null, { tags: [\"Private\"] });\nTable.prototype.publishProxy(\"itemsPerPage\", \"_paginator\");\nTable.prototype.publishProxy(\"pageNumber\", \"_paginator\", \"pageNumber\", 1);\nTable.prototype.publishProxy(\"adjacentPages\", \"_paginator\");\nTable.prototype.publish(\"topN\", null, \"number\", \"Total number or rows of data to be displayed in the table\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"pivot\", false, \"boolean\", \"Pivot Table\");\nTable.prototype.publish(\"showHeader\", true, \"boolean\", \"Show or hide the table header\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"fixedHeader\", true, \"boolean\", \"Enable or disable fixed table header\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"fixedColumn\", false, \"boolean\", \"Enable or disable fixed first column\", null, { tags: [\"Private\"] });\nTable.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\", null, { tags: [\"Basic\"] });\n\nTable.prototype.publish(\"fixedSize\", false, \"boolean\", \"Fix Size to Min Width/Height\");\n\nTable.prototype.publish(\"hideEmptyColumns\", false, \"boolean\", \"Hide columns with all empty cells\");\n\nTable.prototype.publish(\"theadFontSize\", null, \"string\", \"Table head font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontSize\", null, \"string\", \"Table body font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontSize\", null, \"string\", \"Table body font size\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadFontColor\", null, \"html-color\", \"Table head font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontColor\", null, \"html-color\", \"Table body font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontColor\", null, \"html-color\", \"Table body font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadFontFamily\", null, \"string\", \"Table head font family\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFontFamily\", null, \"string\", \"Table body font family\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootFontFamily\", null, \"string\", \"Table body font family\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"theadCellBorderColor\", null, \"html-color\", \"Table head cell border color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootCellBorderColor\", null, \"html-color\", \"Table head cell border color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"theadRowBackgroundColor\", null, \"html-color\", \"Table head row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tfootRowBackgroundColor\", null, \"html-color\", \"Table head row color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyCellBorderColor\", null, \"html-color\", \"Table body cell border color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyRowBackgroundColor\", null, \"html-color\", \"Table body row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFirstColFontColor\", null, \"html-color\", \"Table body first column font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyFirstColBackgroundColor\", null, \"html-color\", \"Table body first column background color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodyHoverRowFontColor\", null, \"html-color\", \"Table body hover row font color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodyHoverRowBackgroundColor\", null, \"html-color\", \"Table body hover row background color\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"tbodySelectedRowFontColor\", null, \"html-color\", \"Table body selected row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tbodySelectedRowBackgroundColor\", null, \"html-color\", \"Table body selected row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"tableZebraColor\", null, \"html-color\", \"Table zebra row color\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"totalledColumns\", [], \"array\", \"Array of indices of the columns to be totalled\", null, { tags: [\"Basic\"], optional: true, disable: (w: any) => w.pivot() });\nTable.prototype.publish(\"totalledLabel\", null, \"string\", \"Adds a label to the first column of the 'Totalled' row\", null, { tags: [\"Basic\"], optional: true, disable: (w: any) => w.pivot() });\nTable.prototype.publish(\"hiddenColumns\", [], \"array\", \"Array of indices of the columns to be hidden\", null, { tags: [\"Basic\"], optional: true, disable: (w) => w.pivot() });\n\nTable.prototype.publish(\"stringAlign\", \"left\", \"set\", \"Cell alignment for strings\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"numberAlign\", \"right\", \"set\", \"Cell alignment for numbers\", [\"left\", \"right\", \"center\"], { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"verticalAlign\", null, \"set\", \"Cell vertical alignment\", [null, \"middle\", \"top\", \"bottom\"], { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"minWidgetWidth\", 320, \"number\", \"Minimum width of a child widget\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"minWidgetHeight\", 240, \"number\", \"Minimum height of a child widget\", null, { tags: [\"Basic\"], optional: true });\n\nTable.prototype.publish(\"sortByFieldIndex\", null, \"number\", \"Index for the field/column to sort the data\", null, { tags: [\"Basic\"], optional: true });\nTable.prototype.publish(\"descending\", false, \"boolean\", \"Direction for sorting the data: ascending (true) or descending (false)\", null, { tags: [\"Basic\"], optional: true });\n","import { Palette, Platform } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Table } from \"./Table\";\n\nimport \"../src/Legend.css\";\n\nfunction _htmlColorBlock(hexColor) {\n return \"<div class=\\\"colorBlock\\\" style=\\\"background-color:\" + hexColor + \";\\\"></div>\";\n}\n\nexport class Legend extends Table {\n _targetWidget;\n _targetWidgetMonitor;\n\n constructor() {\n super();\n\n this.showHeader(false);\n this.pagination(false);\n }\n\n isRainbow() {\n const widget = this.getWidget();\n return widget && widget._palette && widget._palette.type() === \"rainbow\";\n }\n\n targetWidget(): any;\n targetWidget(_: any): this;\n targetWidget(_?: any): any | this {\n if (!arguments.length) return this._targetWidget;\n this._targetWidget = _;\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n const context = this;\n this._targetWidgetMonitor = this._targetWidget.monitor(function (key, newProp, oldProp, source) {\n switch (key) {\n case \"chart\":\n case \"columns\":\n case \"data\":\n case \"paletteID\":\n context.lazyRender();\n break;\n }\n });\n return this;\n }\n\n getWidget() {\n if (this._targetWidget) {\n switch (this._targetWidget.classID()) {\n case \"chart_MultiChart\":\n return this._targetWidget.chart();\n }\n }\n return this._targetWidget;\n }\n\n getPalette() {\n const widget = this.getWidget();\n if (widget && widget._palette) {\n switch (widget._palette.type()) {\n case \"ordinal\":\n return Palette.ordinal(widget._palette.id());\n case \"rainbow\":\n return Palette.rainbow(widget._palette.id());\n }\n }\n return Palette.ordinal(\"default\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode).style(\"overflow-y\", \"auto\");\n\n this.renderHtmlDataCells(true);\n this.fixedHeader(false);\n this.fixedSize(true);\n element.classed(\"other_Legend\", true);\n }\n\n update(domNode, element) {\n const colArr = [\"Key\", \"Label\"];\n let dataArr = [];\n if (this._targetWidget) {\n const _palette = this.getPalette();\n switch (_palette.type()) {\n case \"ordinal\":\n const oPalette = _palette as Palette.OrdinalPaletteFunc;\n switch (this.dataFamily()) {\n case \"2D\":\n dataArr = this._targetWidget.data().map(function (n) {\n return [_htmlColorBlock(oPalette(n[0])), n[0]];\n }, this);\n break;\n case \"ND\":\n const widgetColumns = this._targetWidget.columns();\n dataArr = widgetColumns.filter(function (n, i) { return i > 0; }).map(function (n) {\n return [_htmlColorBlock(oPalette(n)), n];\n }, this);\n break;\n }\n break;\n case \"rainbow\":\n const rPalette = _palette as Palette.RainbowPaletteFunc;\n const format = d3Format(this.rainbowFormat());\n const widget = this.getWidget();\n const steps = this.rainbowBins();\n const weightMin = widget._dataMinWeight;\n const weightMax = widget._dataMaxWeight;\n const stepWeightDiff = (weightMax - weightMin) / (steps - 1);\n dataArr.push([_htmlColorBlock(rPalette(weightMin, weightMin, weightMax)), format(weightMin)]);\n for (let x = 1; x < steps - 1; ++x) {\n const mid = stepWeightDiff * x;\n dataArr.push([_htmlColorBlock(rPalette(mid, weightMin, weightMax)), format(Math.floor(mid))]);\n }\n dataArr.push([_htmlColorBlock(rPalette(weightMax, weightMin, weightMax)), format(weightMax)]);\n break;\n }\n }\n this.columns(colArr);\n this.data(dataArr);\n super.update(domNode, element);\n\n element.classed(\"horiz-legend\", this.orientation() === \"horizontal\");\n\n const table = element.select(\".tableDiv > table\");\n const tableRect = table.node().getBoundingClientRect();\n const elementRect = this._placeholderElement.node().getBoundingClientRect();\n\n element.select(\".tableDiv\").style(\"overflow\", \"visible\");\n\n const top = elementRect.height / 2 - tableRect.height / 2;\n const left = elementRect.width / 2 - tableRect.width / 2;\n table\n .style(\"position\", \"absolute\")\n .style(\"top\", top + \"px\")\n .style(\"left\", left + \"px\")\n ;\n\n const startIndex = this.pageNumber() - 1;\n const itemsOnPage = this.itemsPerPage();\n\n const start = startIndex * itemsOnPage;\n const end = startIndex * parseInt(itemsOnPage) + parseInt(itemsOnPage);\n\n let tData = null;\n if (this.pagination()) {\n tData = this.data().slice(start, end);\n } else {\n tData = this.data();\n }\n\n const rows = this.tbody.selectAll(\"tr\").data(tData);\n const context = this;\n rows\n .on(\"click\", function (d, i) {\n context.onClick(d, i);\n })\n .on(\"dblclick\", function (d, i) {\n context.onDblClick(d, i);\n })\n .on(\"mouseover\", function (d, i) {\n context.onMouseOver(d, i);\n })\n ;\n }\n\n exit(domNode, element) {\n if (this._targetWidgetMonitor) {\n this._targetWidgetMonitor.remove();\n delete this._targetWidgetMonitor;\n }\n super.exit(domNode, element);\n }\n\n onClick(rowData, rowIdx) {\n }\n\n onDblClick(rowData, rowIdx) {\n }\n\n onMouseOver(rowData, rowIdx) {\n }\n\n dataFamily: { (): string; (_: string): Legend };\n dataFamily_exists: () => boolean;\n orientation: { (): string; (_: string): Legend };\n orientation_exists: () => boolean;\n rainbowFormat: { (): string; (_: string): Legend };\n rainbowFormat_exists: () => boolean;\n rainbowBins: { (): number; (_: number): Legend };\n rainbowBins_exists: () => boolean;\n}\nLegend.prototype._class += \" other_Legend\";\n\nLegend.prototype.publish(\"dataFamily\", \"ND\", \"set\", \"Type of data\", [\"1D\", \"2D\", \"ND\", \"map\", \"any\", \"other\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"orientation\", \"vertical\", \"set\", \"Orientation of Legend rows\", [\"vertical\", \"horizontal\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"rainbowFormat\", \",\", \"string\", \"Rainbow number formatting\", null, { tags: [\"Private\"], optional: true, disable: w => !w.isRainbow() });\nLegend.prototype.publish(\"rainbowBins\", 8, \"number\", \"Number of rainbow bins\", null, { tags: [\"Private\"], disable: w => !w.isRainbow() });\n\nconst origGetBBox = Table.prototype.getBBox;\nLegend.prototype.getBBox = function (refresh, round) {\n const retVal = origGetBBox.apply(this, arguments);\n const table = this.element().select(\".tableDiv > table\");\n if (!table.empty()) {\n const tableRect = table.node().getBoundingClientRect();\n const width = tableRect.width + 8 + (this.hasVScroll(this._placeholderElement) ? Platform.getScrollbarWidth() : 0);\n const height = tableRect.height + 8 + (this.hasHScroll(this._placeholderElement) ? Platform.getScrollbarWidth() : 0);\n return {\n x: retVal.x,\n y: retVal.y,\n width: (round ? Math.round(width) : width) * this._scale,\n height: (round ? Math.round(height) : height) * this._scale\n };\n }\n return retVal;\n};\n","import { SVGWidget } from \"@hpcc-js/common\";\n\nimport \"../src/MorphText.css\";\n\nexport class MorphText extends SVGWidget {\n _fontWidth;\n _textElement;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n if (!this.fontSize()) {\n const style = window.getComputedStyle(domNode, null);\n this.fontSize(parseInt(style.fontSize));\n }\n this._fontWidth = this.fontSize() * 32 / 48;\n this._textElement = element.append(\"g\")\n ;\n }\n\n dateTime() {\n const d = new Date();\n const seconds = d.getSeconds().toString().length === 1 ? \"0\" + d.getSeconds() : d.getSeconds();\n const minutes = d.getMinutes().toString().length === 1 ? \"0\" + d.getMinutes() : d.getMinutes();\n const hours = d.getHours().toString().length === 1 ? \"0\" + d.getHours() : d.getHours();\n const ampm = d.getHours() >= 12 ? \"pm\" : \"am\";\n const months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n const days = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n return days[d.getDay()] + \" \" + months[d.getMonth()] + \" \" + d.getDate() + \" \" + d.getFullYear() + \" \" + hours + \":\" + minutes + \":\" + seconds + ampm;\n }\n\n update(domNode, element) {\n const context = this;\n const text = this._textElement.selectAll(\"text\")\n .data(this.data(), function (d) { return d.id; })\n ;\n text\n .attr(\"class\", \"update\")\n ;\n this.transition.apply(text)\n .attr(\"x\", function (d, i) { return (-context.data().length / 2 + i) * context._fontWidth + context._fontWidth / 2; })\n ;\n\n const newText = text.enter().append(\"text\")\n .attr(\"class\", \"enter\")\n .attr(\"font-size\", this.fontSize())\n .attr(\"dy\", \".35em\")\n .attr(\"y\", (this.reverse() ? +1 : -1) * this._fontWidth * 2)\n .attr(\"x\", function (d, i) { return (-context.data().length / 2 + i) * context._fontWidth + context._fontWidth / 2; })\n .style(\"fill-opacity\", 1e-6)\n .style(\"text-anchor\", this.anchor())\n .text(function (d) { return d.text; })\n ;\n this.transition.apply(newText)\n .attr(\"y\", 0)\n .style(\"fill-opacity\", 1)\n ;\n\n text.exit()\n .attr(\"class\", \"exit\")\n ;\n this.transition.apply(text.exit())\n .attr(\"y\", (this.reverse() ? -1 : +1) * this._fontWidth * 2)\n .style(\"fill-opacity\", 1e-6)\n .remove()\n ;\n }\n anchor: { (): string; (_: string): MorphText };\n anchor_exists: () => boolean;\n fontSize: { (): number; (_: number): MorphText };\n fontSize_exists: () => boolean;\n reverse: { (): boolean; (_: boolean): MorphText };\n reverse_exists: () => boolean;\n text: (_?: string) => MorphText | this;\n text_exists: () => boolean;\n}\nMorphText.prototype._class += \" other_MorphText\";\n\nMorphText.prototype.publish(\"anchor\", \"middle\", \"set\", \"Sets anchor point\", [\"middle\"], { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"fontSize\", 14, \"number\", \"Sets fontsize\", null, { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"reverse\", false, \"boolean\", \"Reverse Animation\", null, { tags: [\"Basic\"] });\nMorphText.prototype.publish(\"text\", \"\", \"string\", \"Sets text/data of widget\", null, { tags: [\"Basic\"] });\n\nconst _origText = MorphText.prototype.text;\nMorphText.prototype.text = function (_) {\n const retVal = _origText.apply(this, arguments);\n if (arguments.length) {\n const usedChars = {};\n const chars = _.split(\"\");\n this.data(chars.map(function (d) {\n const id = \"_\" + d;\n if (usedChars[id] === undefined) {\n usedChars[id] = 0;\n }\n usedChars[id]++;\n return { text: d, id: d.charCodeAt(0) + (1024 * usedChars[id]) };\n }));\n }\n return retVal;\n};\n","import { Table } from \"./Table\";\n\nexport class NestedTable extends Table {\n constructor() {\n super();\n this.minWidgetHeight(240);\n this.minWidgetWidth(360);\n }\n}\nNestedTable.prototype._class += \" other_NestedTable\";\n\nconst origColumns = NestedTable.prototype.columns;\nNestedTable.prototype.columns = function (_?) {\n if (arguments.length) {\n this._columns = _;\n return origColumns.call(this, _.map(function (col) {\n if (typeof col === \"object\") {\n return col.label;\n }\n return col;\n }));\n }\n return origColumns.apply(this, arguments);\n};\n\nconst origData = NestedTable.prototype.data;\nNestedTable.prototype.data = function (_?: any): NestedTable | any {\n if (arguments.length) {\n const context = this;\n return origData.call(this, _.map(function (row) {\n return row.map(function (cell, idx) {\n if (cell instanceof Array) {\n let columns = [];\n if (typeof context._columns[idx] === \"object\" && context._columns[idx].columns) {\n columns = context._columns[idx].columns;\n } else {\n for (let i = 0; i < cell.length; ++i) {\n columns.push(context._columns[idx] + \".\" + i);\n }\n }\n return new Table()\n .columns(columns)\n .data(cell)\n ;\n }\n return cell;\n });\n }));\n }\n return origData.apply(this, arguments);\n};\n","import { d3Event, PropertyExt, select as d3Select, selectAll as d3SelectAll, SVGWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Opportunity.css\";\n\nexport class Column extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.headerLabel();\n }\n}\nColumn.prototype._class += \" other_Opportunity.Column\";\n\nexport interface Column {\n headerLabel(): string;\n headerLabel(_: string): this;\n}\nColumn.prototype.publish(\"headerLabel\", null, \"string\", \"Header value of a table\", function (this: Column) { return this._owner ? this._owner.columns() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class MouseHoverColumn extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.hoverValue() && !!this.hoverList();\n }\n}\nMouseHoverColumn.prototype._class += \" other_Opportunity.MouseHoverColumn\";\n\nexport interface MouseHoverColumn {\n hoverValue(): string;\n hoverValue(_: string): this;\n hoverList(): string;\n hoverList(_: string): this;\n}\nMouseHoverColumn.prototype.publish(\"hoverValue\", null, \"string\", \"Hover value of a table\", function () { return this._owner ? this._owner.columns() : []; }, { tags: [\"Basic\"], optional: true });\nMouseHoverColumn.prototype.publish(\"hoverList\", null, \"set\", \"Hover value of a table\", function () { return this._owner ? this._owner.getIds() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class ColumnDropdown extends PropertyExt {\n _owner: Opportunity;\n\n constructor() {\n super();\n }\n\n owner(): Opportunity;\n owner(_: Opportunity): this;\n owner(_?: Opportunity): Opportunity | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.columnIndex() && !!this.ColumnDropdownList();\n }\n}\nColumnDropdown.prototype._class += \" other_Opportunity.ColumnDropdown\";\n\nexport interface ColumnDropdown {\n columnIndex(): number;\n columnIndex(_: number): this;\n ColumnDropdownList(): string;\n ColumnDropdownList(_: string): this;\n}\nColumnDropdown.prototype.publish(\"columnIndex\", null, \"number\", \"Column index for display context data based on column dropdown list selction\", {}, { tags: [\"Basic\", \"Shared\"] });\nColumnDropdown.prototype.publish(\"ColumnDropdownList\", null, \"set\", \"column value of a table\", function () { return this._owner ? this._owner.getIds() : []; }, { tags: [\"Basic\"], optional: true });\n\nexport class Opportunity extends SVGWidget {\n groupCount;\n svg;\n tooltipdiv;\n Column;\n MouseHoverColumn;\n ColumnDropdown;\n\n constructor() {\n super();\n this._drawStartPos = \"origin\";\n this.groupCount = 7;\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n const paddingTop = 30;\n const nodeRectHeight = 14;\n const verticalPadding = 10;\n const h = (this.data().length + 1) * (nodeRectHeight + verticalPadding + 1) + paddingTop;\n this.svg = element.append(\"g\")\n .attr(\"width\", ((this.groupCount * 100) + 1))\n .attr(\"height\", h);\n this.svg.append(\"defs\").append(\"marker\")\n .classed(\"arrowhead\", true)\n .attr(\"id\", \"end-arrow\")\n .attr(\"viewBox\", \"0 -5 10 10\")\n .attr(\"refX\", 6)\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 8)\n .attr(\"orient\", \"auto\")\n .append(\"svg:path\")\n .attr(\"d\", \"M0,-5L10,0L0,5\")\n .attr(\"fill\", \"rgb(100,100,100)\");\n this.tooltipdiv = d3Select(\"body\").append(\"div\")\n .attr(\"class\", \"other_Opportunity-tooltip tooltip\")\n .style(\"opacity\", 0);\n }\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const data = this.data();\n const dropDownOption = this.opportunityId();\n data.sort(function (a, b) {\n if (a.cur_group > b.cur_group) return 1;\n else if (a.cur_group < b.cur_group) return -1;\n else return 0;\n });\n const groups = [];\n for (let i = 1; i <= context.groupCount; i++) {\n groups.push(i);\n }\n const paddingTop = 30;\n const nodeRectHeight = 14;\n const verticalPadding = 10;\n const h = (data.length + 1) * (nodeRectHeight + verticalPadding + 1) + paddingTop;\n const w = this.width();\n const nodeRectWidthPadding = 30;\n const nodeRectWidth = ((w / context.groupCount) - nodeRectWidthPadding);\n // Groups ---\n const group = this.svg.selectAll(\".group\").data(groups);\n group.enter().append(\"rect\")\n .attr(\"class\", \"group\");\n group\n .attr(\"x\", function (d, i) {\n return (i * w / context.groupCount) + 1;\n })\n .attr(\"y\", paddingTop)\n .attr(\"width\", w / this.groupCount)\n .attr(\"height\", h - paddingTop);\n group.exit().remove();\n // Group Headings ---\n const groupHeadings = this.svg.selectAll(\".group_headings\").data(groups);\n groupHeadings.enter().append(\"text\")\n .attr(\"class\", \"group_headings\")\n .attr(\"y\", 20);\n groupHeadings\n .attr(\"x\", function (d, i) {\n return (i * w / context.groupCount) + ((w / context.groupCount) / context.groupCount);\n })\n .text(function (d, i) {\n if (context.headerLabels().length > 0) {\n if (context.headerLabels()[i] && (context.headerLabels()[i]).headerLabel()) {\n return (context.headerLabels()[i]).headerLabel();\n }\n }\n return \"\";\n });\n groupHeadings.exit().remove();\n if (this.previousGroup() === \"prev_group\" && this.currentGroup() === \"cur_group\") {\n // Node Date Change ---\n const node_date_change = this.svg.selectAll(\".node_date_change\").data(data);\n node_date_change.enter().append(\"g\")\n .attr(\"class\", \"node_date_change update\")\n .on(\"mouseover\", function (d) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let htmlInput = \"<span style='font-weight:bolder'>\" + \"Close Date Change \" + \"</span>\" + \"<br/>\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n htmlInput = htmlInput + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n let prevDate = d.prevdate + \"\";\n prevDate = prevDate.replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/g, \"$3-$2-$1\");\n let fromDate = d.curdate + \"\";\n fromDate = fromDate.replace(/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/g, \"$3-$2-$1\");\n htmlInput = htmlInput + \"<span style='font-weight:bold'>\" + \"From: \" + \"</span>\" + prevDate + \"<br/>\" + \"<span style='font-weight:bold'>\" + \"To: \" + \"</span>\" + fromDate + \"<br/>\";\n const event = d3Event();\n context.tooltipdiv.html(htmlInput)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 50) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_date_change_rect\")\n .attr(\"width\", 5)\n .attr(\"height\", nodeRectHeight)\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n });\n node_date_change\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((9 * w / context.groupCount) + (nodeRectWidthPadding) - 80) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 12 + paddingTop) + \")\";\n });\n node_date_change.exit().remove();\n // Node Prev Group ---\n const node_prev_group = this.svg.selectAll(\".node_prev_group\").data(data);\n node_prev_group.enter().append(\"g\")\n .attr(\"class\", \"node_prev_group\")\n .on(\"mouseover\", function (d, i) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let tooltipHtml = \"\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n tooltipHtml = tooltipHtml + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n const event = d3Event();\n context.tooltipdiv.html(tooltipHtml)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 100) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_prev_rect\")\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n element2.append(\"text\")\n .attr(\"class\", \"node_prev_text\");\n });\n node_prev_group\n .classed(\"update\", true)\n .classed(\"changed\", function (d) {\n return d.delta !== 0;\n })\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.prev_group - 1)) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .each(function (d) {\n const element2 = d3Select(this);\n // Change Lines ---\n const changeLines = element2.selectAll(\".arrow\").data(d.delta !== 0 ? [d] : []);\n changeLines.enter().append(\"line\")\n .attr(\"class\", \"arrow update\");\n changeLines\n .attr(\"x1\", function (d2) {\n return (d2.delta > 0) ? nodeRectWidth : 0;\n })\n .attr(\"y1\", nodeRectHeight / 2)\n .attr(\"x2\", function (d2) {\n return (d2.delta > 0) ? (nodeRectWidth + nodeRectWidthPadding - 4) + ((Math.abs(d2.delta) - 1)) * (w / context.groupCount) : ((-nodeRectWidthPadding - ((Math.abs(d2.delta) - 1)) * (w / context.groupCount)) + 4);\n })\n .attr(\"y2\", nodeRectHeight / 2)\n .style(\"stroke-dasharray\", (\"3, 3\"))\n .style(\"stroke\", \"rgb(100,100,100)\")\n .style(\"marker-end\", \"url(#end-arrow)\")\n .style(\"opacity\", \"1\");\n changeLines.exit().remove();\n });\n const node_previous_rect = node_prev_group.select(\".node_prev_rect\");\n node_previous_rect\n .attr(\"width\", nodeRectWidth)\n .attr(\"height\", nodeRectHeight);\n const node_previous_text = node_prev_group.select(\".node_prev_text\");\n node_previous_text\n .attr(\"dy\", (nodeRectHeight / 2) + 3)\n .attr(\"dx\", (nodeRectWidth / 4))\n .text(function (d) {\n if (typeof d[dropDownOption] === \"number\")\n return d[dropDownOption];\n else\n return d[dropDownOption].substring(0, 14);\n });\n node_prev_group.exit().remove();\n // Node Cur Group ---\n const node_cur_group = this.svg.selectAll(\".node_cur_group\").data(data);\n node_cur_group.enter().append(\"g\")\n .attr(\"class\", \"node_cur_group\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.prev_group - 1)) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .on(\"mouseover\", function (d, i) {\n context.tooltipdiv.transition()\n .duration(200)\n .style(\"opacity\", 0.9);\n let tooltipHtml = \"\";\n const mouseHoverMapping = context.mouseHover();\n mouseHoverMapping.forEach(function (obj, index) {\n if (obj.hoverValue() !== undefined) {\n tooltipHtml = tooltipHtml + \"<span style='font-weight:bold'>\" + obj.hoverValue() + \": \" + \"</span>\" + d[obj.hoverList()] + \"<br/>\";\n }\n });\n const event = d3Event();\n context.tooltipdiv.html(tooltipHtml)\n .style(\"left\", (event.pageX) + \"px\")\n .style(\"top\", (event.pageY - 100) + \"px\");\n })\n .on(\"mouseout\", function (d) {\n context.tooltipdiv.transition()\n .duration(500)\n .style(\"opacity\", 0);\n })\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"rect\")\n .attr(\"class\", \"node_cur_rect\")\n .attr(\"fill\", function (d2: any) {\n let color;\n if (d2.delta < 0 || d2.cur_group === 7) {\n color = \"#F78181\";\n } else {\n color = \"#A9F5A9\";\n }\n return color;\n })\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n element2.append(\"a\")\n .append(\"text\")\n .attr(\"class\", \"node_cur_text\");\n });\n node_cur_group\n .classed(\"update\", true)\n .classed(\"changed\", function (d) {\n return d.delta !== 0;\n })\n .transition().duration(800)\n .ease(\"linear\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + ((((d.cur_group) - 1) * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 10 + paddingTop) + \")\";\n })\n .each(\"end\", function () {\n d3SelectAll(\".arrow\").style(\"opacity\", \"1\");\n });\n const node_current_anchor = node_cur_group.select(\".node_cur_group a\");\n node_current_anchor.classed(\"update\", true)\n .attr(\"xlink:href\", function (d) {\n return context.url() + d.id;\n })\n .attr(\"xlink:show\", \"new\");\n const node_current_rect = node_cur_group.select(\".node_cur_rect\");\n node_current_rect\n .attr(\"width\", nodeRectWidth)\n .attr(\"height\", nodeRectHeight);\n const node_current_text = node_cur_group.select(\".node_cur_text\");\n node_current_text\n .classed(\"update\", true)\n .attr(\"dy\", (nodeRectHeight / 2) + 3)\n .attr(\"dx\", (nodeRectWidth / 4))\n .style(\"fill\", \"blue\")\n .text(function (d) {\n if (typeof d[dropDownOption] === \"number\")\n return d[dropDownOption];\n else\n return d[dropDownOption].substring(0, 14);\n });\n node_cur_group.exit().remove();\n }\n for (let colIndex = 0; colIndex < context.columnData().length; colIndex++) {\n if ((context.columnData()[colIndex]) && (context.columnData()[colIndex]).ColumnDropdownList()) {\n const columnData = this.svg.selectAll(\".columnDataText_\" + colIndex).data(data);\n columnData.enter().append(\"g\")\n .attr(\"class\", \"columnDataText_\" + colIndex + \" update\")\n .each(function (d) {\n const element2 = d3Select(this);\n element2.append(\"text\");\n });\n columnData\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + (((context.columnData()[colIndex]).columnIndex() * w / context.groupCount) + (nodeRectWidthPadding / 2)) + \",\" + ((i + (i * (nodeRectHeight + verticalPadding))) + 12 + paddingTop) + \")\";\n })\n .attr(\"width\", 5)\n .attr(\"height\", nodeRectHeight)\n .attr(\"rx\", 6)\n .attr(\"ry\", 6);\n const textLable = columnData.select(\"text\");\n textLable\n .attr(\"y\", -6)\n .attr(\"dy\", (nodeRectHeight) + 14)\n .attr(\"dx\", 0)\n .attr(\"height\", 20)\n .attr(\"width\", 29)\n .text(function (d, i) {\n return d[(context.columnData()[colIndex]).ColumnDropdownList()];\n });\n columnData.exit().remove();\n }\n }\n }\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n getIds() {\n const dropdownList = this.columns();\n dropdownList.unshift(\"default\");\n return dropdownList;\n }\n previousGroup: { (): string; (_: string): Opportunity };\n previousGroup_exists: () => boolean;\n currentGroup: { (): string; (_: string): Opportunity };\n currentGroup_exists: () => boolean;\n opportunityId: { (): string; (_: string): Opportunity };\n opportunityId_exists: () => boolean;\n url: { (): string; (_: string): Opportunity };\n url_exists: () => boolean;\n // width: { (): number; (_: number): Opportunity };\n width_exists: () => boolean;\n addColumn: { (): string; (_: string): Opportunity };\n addColumn_exists: () => boolean;\n removeColumn: { (): string; (_: string): Opportunity };\n removeColumn_exists: () => boolean;\n headerLabels: { (): any[]; (_: any[]): Opportunity };\n headerLabels_exists: () => boolean;\n mouseHover: { (): any[]; (_: any[]): Opportunity };\n mouseHover_exists: () => boolean;\n columnData: { (): any[]; (_: any[]): Opportunity };\n columnData_exists: () => boolean;\n}\nOpportunity.prototype._class += \" other_Opportunity\";\nOpportunity.prototype.Column = Column;\nOpportunity.prototype.MouseHoverColumn = MouseHoverColumn;\nOpportunity.prototype.ColumnDropdown = ColumnDropdown;\n\nOpportunity.prototype.publish(\"previousGroup\", \"\", \"set\", \"label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"currentGroup\", \"\", \"set\", \"label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"opportunityId\", \"id\", \"set\", \"Id for label in Opportunity\", function () { return this.getIds(); }, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"url\", null, \"string\", \"URL in Opportunity\", {}, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"width\", 1100, \"number\", \"label in Opportunity\", {}, { tags: [\"Basic\", \"Shared\"] });\nOpportunity.prototype.publish(\"addColumn\", null, \"string\", \"number of columns in a table\", {}, {\n tags: [\"Basic\", \"Shared\"],\n editor_input: (context, widget, cell, param) => {\n cell.append(\"button\")\n .attr(\"id\", context.id() + \"_addColumn\" + param.id)\n .classed(\"property-input custom-editor-input addColumn update\", true)\n .text(\"AddColumn\")\n .on(\"click\", function () {\n widget.groupCount = widget.groupCount + 1;\n const new_value_after_click = \"Added a new column\";\n context.setProperty(widget, param.id, new_value_after_click);\n });\n }\n});\nOpportunity.prototype.publish(\"removeColumn\", null, \"string\", \"number of columns in a table\", function () { return this.columns(); }, {\n tags: [\"Basic\", \"Shared\"],\n editor_input: (context, widget, cell, param) => {\n cell.append(\"button\")\n .attr(\"id\", context.id() + \"_removeColumn\" + param.id)\n .classed(\"property-input custom-editor-input removeColumn update\", true)\n .text(\"RemoveColumn\")\n .on(\"click\", function () {\n widget.groupCount = widget.groupCount - 1;\n const new_value_after_click = \"Removed a column\";\n context.setProperty(widget, param.id, new_value_after_click);\n });\n }\n});\nOpportunity.prototype.publish(\"headerLabels\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: Column });\nOpportunity.prototype.publish(\"mouseHover\", [], \"propertyArray\", \"mouse hover options\", null, { autoExpand: MouseHoverColumn });\nOpportunity.prototype.publish(\"columnData\", [], \"propertyArray\", \"column data\", null, { autoExpand: ColumnDropdown });\n","export function discover(widget) {\n return widget.publishedProperties(false, true);\n}\n\nexport function widgetArrayWalker(widgets, visitor) {\n if (!widgets)\n return;\n widgets.forEach(function (widget) {\n widget.widgetWalker(visitor);\n });\n}\n\nexport function widgetPropertyWalker(widget2, visitor, filter?) {\n widget2.widgetWalker(function (widget) {\n widget.propertyWalker(visitor, filter);\n });\n}\n\nexport function serializeTheme(widget, filter) {\n return JSON.stringify(serializeThemeToObject(widget, filter));\n}\n\nexport function serializeThemeToObject(widget2, filter?) {\n filter = filter || [\"surface\", \"Color\", \"Font\", \"palette\"];\n\n const propObj = {};\n widgetPropertyWalker(widget2, null, function (widget, item) {\n if (widget[item.id + \"_modified\"]() || widget.publishedProperty(item.id).origDefaultValue !== widget.publishedProperty(item.id).defaultValue) {\n if (_isFilterMatch(item.id, filter)) {\n const classParts = widget._class.trim().split(\" \");\n for (const i in classParts) {\n if (classParts.HasOwnProperty(i)) {\n if (propObj[classParts[i]] === undefined) {\n propObj[classParts[i]] = {};\n }\n if (propObj[classParts[i]][item.id] === undefined) {\n propObj[classParts[i]][item.id] = widget[item.id]();\n break;\n } else if (propObj[classParts[i]][item.id] === widget[item.id]()) {\n break;\n }\n }\n }\n }\n }\n });\n\n function _isFilterMatch(str, arr) {\n let ret = false;\n for (const i in arr) {\n if (str.indexOf(arr[i]) !== -1) {\n ret = true;\n break;\n }\n }\n return ret;\n }\n return propObj;\n}\nexport function removeTheme(widget2, callback) {\n widgetPropertyWalker(widget2, null, function (widget, item) {\n widget.publishedProperty(item.id).defaultValue = widget.publishedProperty(item.id).origDefaultValue;\n });\n\n if (typeof (callback) === \"function\") {\n callback.call(this);\n }\n}\nexport function applyTheme(widget2, themeObj, callback) {\n const context = this;\n widgetPropertyWalker(widget2, null, function (widget3, item) {\n switch (item.type) {\n case \"widget\":\n context.applyTheme(widget3[item.id](), themeObj);\n return true;\n case \"widgetArray\":\n const widgetArray = widget3[item.id]();\n widgetArray.forEach(function (widget) {\n context.applyTheme(widget, themeObj);\n }, this);\n return true;\n default:\n widget3.applyTheme(themeObj);\n break;\n }\n });\n if (typeof (callback) === \"function\") {\n callback.call(this);\n }\n}\n\nexport function serializeToObject(widget, filter?, includeData?, includeState?) {\n const retVal: any = {\n __class: widget.classID()\n };\n if (widget._id.indexOf(widget._idSeed) !== 0) {\n retVal.__id = widget._id;\n }\n if (widget.version) {\n retVal.__version = widget.version();\n }\n retVal.__properties = {};\n\n widget.propertyWalker((childWwidget2, item) => {\n if (childWwidget2[item.id + \"_modified\"]()) {\n switch (item.type) {\n case \"widget\":\n retVal.__properties[item.id] = serializeToObject(childWwidget2[item.id](), null, includeData, includeState && !widget.serializeState); // Only include state once\n return true;\n case \"widgetArray\":\n case \"propertyArray\":\n retVal.__properties[item.id] = [];\n const widgetArray = childWwidget2[item.id]();\n widgetArray.forEach((childWwidget) => {\n retVal.__properties[item.id].push(serializeToObject(childWwidget, null, includeData, includeState && !widget.serializeState)); // Only include state once\n });\n return true;\n default:\n retVal.__properties[item.id] = childWwidget2[item.id]();\n break;\n }\n }\n }, filter);\n\n if (widget.classID() === \"marshaller_Graph\") {\n const vertices = widget.data().vertices;\n if (vertices) {\n this.__vertices = vertices.map(item => {\n return serializeToObject(item, null, includeData, includeState && !widget.serializeState);\n });\n }\n }\n if (includeData && widget.data) {\n if (!retVal.__data) retVal.__data = {};\n retVal.__data.data = widget.data();\n }\n if (includeState) {\n if (widget.serializeState) {\n retVal.__state = widget.serializeState();\n } else if (widget.data) {\n retVal.__state = {\n data: widget.data()\n };\n }\n }\n return retVal;\n}\n\nexport function serialize(widget, filter?, includeData?, includeState?) {\n return JSON.stringify(serializeToObject(widget, filter, includeData, includeState));\n}\n","import { HTMLWidget, Platform, PropertyExt, Widget } from \"@hpcc-js/common\";\nimport { Grid } from \"@hpcc-js/layout\";\nimport { local as d3Local, select as d3Select, selectAll as d3SelectAll } from \"d3-selection\";\nimport * as Persist from \"./Persist\";\n\nimport \"../src/PropertyEditor.css\";\n\nfunction hasProperties(type) {\n switch (type) {\n case \"widget\":\n case \"widgetArray\":\n case \"propertyArray\":\n return true;\n default:\n }\n return false;\n}\n\nexport class PropertyEditor extends HTMLWidget {\n _widgetOrig;\n _parentPropertyEditor;\n _show_settings: boolean;\n _selectedItems;\n __meta_sorting;\n _watch;\n private _childPE = d3Local<PropertyEditor>();\n\n constructor() {\n super();\n this._parentPropertyEditor = null;\n\n this._tag = \"div\";\n this._show_settings = false;\n }\n\n parentPropertyEditor(_?: PropertyEditor): PropertyEditor {\n if (!arguments.length) return this._parentPropertyEditor;\n this._parentPropertyEditor = _;\n return this;\n }\n\n depth(): number {\n let retVal = 0;\n let parent = this.parentPropertyEditor();\n while (parent) {\n ++retVal;\n parent = parent.parentPropertyEditor();\n }\n return retVal;\n }\n\n _show_header = true;\n show_header(): boolean;\n show_header(_: boolean): PropertyEditor;\n show_header(_?: boolean): boolean | PropertyEditor {\n if (!arguments.length) {\n return this._show_header;\n }\n this._show_header = _;\n return this;\n }\n\n show_settings(): boolean;\n show_settings(_: boolean): PropertyEditor;\n show_settings(_?: boolean): boolean | PropertyEditor {\n if (!arguments.length) {\n return this._show_settings;\n }\n this._show_settings = _;\n return this;\n }\n\n rootWidgets() {\n if (this._selectedItems && this._selectedItems.length) {\n return this._selectedItems;\n }\n return this.show_settings() ? [this] : this.widget() ? [this.widget()] : [];\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n const rootWidgets = this.rootWidgets().filter(function (w) {\n if (w._owningWidget && w._owningWidget.excludeObjs instanceof Array) {\n if (w._owningWidget.excludeObjs.indexOf(w.classID()) !== -1) {\n return false;\n }\n }\n return true;\n });\n\n const table = element.selectAll(`table.property-table.table-${this.depth()}`).data(rootWidgets, function (d) {\n // We reuse the existing DOM Nodes and this node _might_ have been a regular Input previously ---\n if (typeof d.id !== \"function\") {\n return `meta-${d.id}`;\n }\n return d.id();\n });\n table.enter().append(\"table\")\n .attr(\"class\", `property-table table-${this.depth()}`)\n .each(function () {\n const tableElement = d3Select(this);\n\n // Header ---\n if (context._show_header && context.parentPropertyEditor() === null) {\n tableElement.append(\"thead\").append(\"tr\").append(\"th\")// .datum(tableElement)\n .attr(\"colspan\", \"2\")\n .each(function () {\n context.enterHeader(d3Select(this));\n })\n ;\n }\n\n // Body ---\n tableElement.append(\"tbody\");\n })\n .merge(table)\n .each(function (tableData) {\n const tableElement = d3Select(this);\n\n // Header ---\n if (context._show_header && context.parentPropertyEditor() === null) {\n context.updateHeader(tableElement.select(\"thead > tr > th\"));\n }\n\n // Body ---\n context.renderInputs(tableElement.select(\"tbody\"), tableData);\n })\n ;\n table.exit()\n .each(function () {\n context.renderInputs(element.select(\"tbody\"), null);\n })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n this.watchWidget(null);\n }\n\n private watchDepth = 0;\n watchWidget(widget) {\n if (this._watch) {\n if ((window as any).__hpcc_debug) {\n --this.watchDepth;\n console.info(\"watchDepth: \" + this.watchDepth);\n }\n this._watch.remove();\n delete this._watch;\n }\n if (widget) {\n const context = this;\n this._watch = widget.monitor(function (_paramId, newVal, oldVal) {\n if (oldVal !== newVal) {\n const propEditor = context.parentPropertyEditor() || context;\n propEditor.lazyRender();\n }\n });\n if ((window as any).__hpcc_debug) {\n ++this.watchDepth;\n console.info(\"watchDepth: \" + this.watchDepth);\n }\n }\n }\n\n enterHeader(th) {\n const context = this;\n\n th.append(\"span\");\n th.append(\"i\")\n .attr(\"class\", \"expandIcon fa\")\n .on(\"click\", function () {\n switch (context.peInputIcon()) {\n case \"fa-caret-up\":\n case \"fa-caret-right\":\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > .property-table-collapsed`)\n .classed(\"property-table-collapsed\", false)\n ;\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > i`)\n .classed(\"fa-minus-square-o\", true)\n .classed(\"fa-plus-square-o\", false)\n ;\n break;\n case \"fa-caret-down\":\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > div`)\n .classed(\"property-table-collapsed\", true)\n ;\n context.element().selectAll(`.table-${context.depth()} > tbody > tr > .headerRow > .peInput > i`)\n .classed(\"fa-minus-square-o\", false)\n .classed(\"fa-plus-square-o\", true)\n ;\n break;\n }\n context.refreshExpandIcon();\n })\n ;\n\n const sortIcon = th.append(\"i\")\n .attr(\"class\", \"sortIcon fa\")\n .on(\"click\", function () {\n context.refreshSortIcon(sortIcon, true);\n })\n ;\n\n th.append(\"i\")\n .attr(\"class\", \"hideParamsIcon fa\")\n .on(\"click\", function () {\n context.hideNonWidgets(!context.hideNonWidgets()).render();\n })\n ;\n }\n\n updateHeader(th) {\n const widget: any = this.widget();\n let spanText = \"\";\n if (widget) {\n if (widget.label) {\n spanText += widget.label();\n }\n if (widget.classID) {\n if (spanText) {\n spanText += \" - \";\n }\n spanText += widget.classID();\n }\n }\n th.select(\"span\")\n .text(spanText)\n ;\n this.refreshExpandIcon();\n this.refreshSortIcon(th.select(\".sortIcon\"));\n this.refreshHideParamsIcon(th.select(\".hideParamsIcon\"));\n }\n\n peInputCount() {\n return this.element().selectAll(`.table-${this.depth()} > tbody > tr > .headerRow > .peInput > div`).size();\n }\n\n peInputCollapsedCount() {\n return this.element().selectAll(`.table-${this.depth()} > tbody > tr > .headerRow > .peInput > div.property-table-collapsed`).size();\n }\n\n peInputIcon(): \"fa-caret-down\" | \"fa-caret-up\" | \"fa-caret-right\" {\n const collapsed = this.peInputCollapsedCount();\n if (collapsed === 0) {\n return \"fa-caret-down\";\n } else if (collapsed === this.peInputCount()) {\n return \"fa-caret-up\";\n }\n return \"fa-caret-right\";\n }\n\n refreshExpandIcon() {\n const newIcon = this.peInputIcon();\n this.element().select(`.table-${this.depth()} > thead > tr > th > .expandIcon`)\n .classed(\"fa-caret-up\", false)\n .classed(\"fa-caret-right\", false)\n .classed(\"fa-caret-down\", false)\n .classed(newIcon, true)\n ;\n }\n\n refreshSortIcon(sortIcon, increment = false) {\n const sort = this.sorting();\n const types = this.sorting_options();\n const icons = this.__meta_sorting.ext.icons;\n if (increment) {\n sortIcon.classed(icons[types.indexOf(sort)], false);\n this.sorting(types[(types.indexOf(sort) + 1) % types.length]).render();\n } else {\n sortIcon\n .classed(icons[(types.indexOf(sort)) % types.length], true)\n .attr(\"title\", sort)\n ;\n }\n }\n\n refreshHideParamsIcon(hideParamsIcon) {\n hideParamsIcon\n .classed(\"fa-eye\", !this.hideNonWidgets())\n .classed(\"fa-eye-slash\", this.hideNonWidgets())\n ;\n }\n\n gatherDataTree(widget) {\n if (!widget) return null;\n const retVal = {\n label: widget.id() + \" (\" + widget.classID() + \")\",\n children: []\n };\n const arr2 = Persist.discover(widget);\n arr2.forEach(function (prop) {\n const node = {\n label: prop.id,\n children: []\n };\n switch (prop.type) {\n case \"widget\":\n node.children.push(this.gatherDataTree(widget[prop.id]()));\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const arr = widget[prop.id]();\n if (arr) {\n arr.forEach(function (item) {\n node.children.push(this.gatherDataTree(item));\n }, this);\n }\n break;\n default:\n }\n retVal.children.push(node);\n }, this);\n return retVal;\n }\n\n getDataTree() {\n return this.gatherDataTree(this.widget());\n }\n\n _rowSorting(paramArr) {\n if (this.sorting() === \"type\") {\n const typeOrder = [\"boolean\", \"number\", \"string\", \"html-color\", \"array\", \"object\", \"widget\", \"widgetArray\", \"propertyArray\"];\n paramArr.sort(function (a, b) {\n if (a.type === b.type) {\n return a.id < b.id ? -1 : 1;\n } else {\n return typeOrder.indexOf(a.type) < typeOrder.indexOf(b.type) ? -1 : 1;\n }\n });\n } else if (this.sorting() === \"A-Z\") {\n paramArr.sort(function (a, b) { return a.id < b.id ? -1 : 1; });\n } else if (this.sorting() === \"Z-A\") {\n paramArr.sort(function (a, b) { return a.id > b.id ? -1 : 1; });\n }\n }\n\n filterInputs(d) {\n const discArr = Persist.discover(d);\n if ((this.filterTags() || this.excludeTags().length > 0 || this.excludeParams.length > 0) && d instanceof PropertyEditor === false) {\n const context = this;\n return discArr.filter(function (param, _idx) {\n if (d[param.id + \"_hidden\"] && d[param.id + \"_hidden\"]()) return false;\n for (const excludeParamItem of context.excludeParams()) {\n const arr = excludeParamItem.split(\".\");\n let widgetName;\n let excludeParam;\n if (arr.length > 2) {\n widgetName = arr[0];\n excludeParam = arr[2];\n } else {\n widgetName = arr[0];\n excludeParam = arr[1];\n }\n if (d.class().indexOf(widgetName) !== -1) {\n if (param.id === excludeParam) {\n return false;\n }\n return true;\n }\n }\n if (context.excludeTags().length > 0 && param.ext && param.ext.tags && param.ext.tags.some(function (item) { return (context.excludeTags().indexOf(item) > -1); })) {\n return false;\n }\n if ((context.filterTags() && param.ext && param.ext.tags && param.ext.tags.indexOf(context.filterTags()) !== -1) || !context.filterTags()) {\n return true;\n }\n return false;\n });\n }\n return discArr;\n }\n\n renderInputs(element, d) {\n const context = this;\n let discArr = [];\n const showFields = !this.show_settings() && this.showFields();\n if (d) {\n discArr = this.filterInputs(d).filter(function (prop) { return prop.id !== \"fields\" ? true : showFields; });\n if (!this.show_settings() && this.showData() && d.data) {\n discArr.push({ id: \"data\", type: \"array\" });\n }\n if (this.hideNonWidgets()) {\n discArr = discArr.filter(function (n) {\n return hasProperties(n.type);\n });\n }\n this._rowSorting(discArr);\n }\n\n const rows = element.selectAll(\"tr.prop\" + this.id()).data(discArr, function (d2) { return d2.id; });\n rows.enter().append(\"tr\")\n .attr(\"class\", \"property-wrapper prop\" + this.id())\n .each(function (param) {\n const tr = d3Select(this);\n if (hasProperties(param.type)) {\n tr.classed(\"property-widget-wrapper\", true);\n tr.append(\"td\")\n .attr(\"colspan\", \"2\")\n ;\n } else {\n tr.classed(\"property-input-wrapper\", true);\n tr.append(\"td\")\n .classed(\"property-label\", true)\n .text(param.id)\n ;\n const inputCell = tr.append(\"td\")\n .classed(\"property-input-cell\", true)\n ;\n context.enterInputs(d, inputCell, param);\n }\n }).merge(rows)\n .each(function (param) {\n const tr = d3Select(this);\n tr.classed(\"disabled\", d[param.id + \"_disabled\"] && d[param.id + \"_disabled\"]());\n tr.classed(\"invalid\", d[param.id + \"_valid\"] && !d[param.id + \"_valid\"]());\n tr.attr(\"title\", param.description);\n if (hasProperties(param.type)) {\n context.updateWidgetRow(d, tr.select(\"td\"), param);\n } else {\n context.updateInputs(d, param);\n }\n });\n rows.exit().each(function (param) {\n const tr = d3Select(this);\n if (hasProperties(param.type)) {\n context.updateWidgetRow(d, tr.select(\"td\"), null);\n }\n }).remove();\n rows.order();\n }\n\n updateWidgetRow(widget: PropertyExt, element, param) {\n let tmpWidget = [];\n if (widget && param) {\n tmpWidget = widget[param.id]() || [];\n }\n let widgetArr = tmpWidget instanceof Array ? tmpWidget : [tmpWidget];\n if (param && param.ext && param.ext.autoExpand) {\n // remove empties and ensure last row is an empty ---\n let lastModified = true;\n const noEmpties = widgetArr.filter(function (row, idx) {\n lastModified = row.valid();\n row._owner = widget;\n return lastModified || idx === widgetArr.length - 1;\n }, this);\n const widgetDisabled = widget[param.id + \"_disabled\"] && widget[param.id + \"_disabled\"]();\n let changed = !!(widgetArr.length - noEmpties.length);\n if (lastModified && !widgetDisabled) {\n changed = true;\n const autoExpandWidget = new param.ext.autoExpand()\n .owner(widget)\n ;\n // autoExpandWidget.monitor((id, newVal, oldVal, source) => {\n // widget.broadcast(param.id, newVal, oldVal, source);\n // });\n noEmpties.push(autoExpandWidget);\n }\n if (changed) {\n widget[param.id](noEmpties);\n widgetArr = noEmpties;\n }\n }\n\n const context = this;\n element.classed(\"headerRow\", true);\n const peInput = element.selectAll(`div.peInput-${this.depth()}`).data(widgetArr, function (d) { return d.id(); });\n peInput.enter().append(\"div\")\n .attr(\"class\", `peInput peInput-${this.depth()}`)\n .each(function (w) {\n const peInputElement = d3Select(this);\n\n // Header ---\n peInputElement.append(\"span\");\n peInputElement.append(\"i\")\n .attr(\"class\", \"fa\")\n .on(\"click\", function (d) {\n const clickTarget = peInputElement.select(\"div\");\n clickTarget\n .classed(\"property-table-collapsed\", !clickTarget.classed(\"property-table-collapsed\"))\n ;\n d3Select(this)\n .classed(\"fa-minus-square-o\", !clickTarget.classed(\"property-table-collapsed\"))\n .classed(\"fa-plus-square-o\", clickTarget.classed(\"property-table-collapsed\"))\n ;\n context.refreshExpandIcon();\n })\n ;\n\n // Body ---\n const peDiv = peInputElement.append(\"div\")\n // .attr(\"class\", `property- input - cell propEditor-${context.depth() }`)\n ;\n context._childPE.set(this, new PropertyEditor().label(param.id).target(peDiv.node() as HTMLElement));\n })\n .merge(peInput)\n .each(function (w) {\n const peInputElement = d3Select(this);\n const clickTarget = peInputElement.select(\"div\");\n\n // Header ---\n d3Select(this).select(\"span\")\n .text(`${param.id}`)\n ;\n\n d3Select(this).select(\"i\")\n .classed(\"fa-minus-square-o\", !clickTarget.classed(\"property-table-collapsed\"))\n .classed(\"fa-plus-square-o\", clickTarget.classed(\"property-table-collapsed\"))\n ;\n\n // Body ---\n context._childPE.get(this)\n .parentPropertyEditor(context)\n .showFields(context.showFields())\n .showData(context.showData())\n .sorting(context.sorting())\n .filterTags(context.filterTags())\n .excludeTags(context.excludeTags())\n .excludeParams(context.excludeParams())\n .hideNonWidgets(context.hideNonWidgets() && w._class.indexOf(\"layout_\") >= 0)\n .widget(w)\n .render()\n ;\n })\n ;\n peInput.exit()\n .each(function (w) {\n context._childPE.get(this)\n .widget(null)\n .render()\n .target(null)\n ;\n context._childPE.remove(this);\n })\n .remove()\n ;\n }\n\n setProperty(widget, id, value) {\n // With PropertyExt not all \"widgets\" have a render, if not use top most render...\n let topWidget: Widget;\n let topPropEditor: Widget;\n let propEditor: PropertyEditor = this;\n let oldValue;\n while (propEditor && widget) {\n if (propEditor === this) {\n oldValue = widget[id]();\n widget[id](value);\n }\n if (propEditor) {\n topPropEditor = propEditor;\n const w: PropertyExt = propEditor.widget();\n if (w instanceof Widget) {\n topWidget = w;\n }\n }\n propEditor = propEditor.parentPropertyEditor();\n }\n if (topWidget) {\n topWidget.render();\n }\n if (topPropEditor) {\n topPropEditor.broadcast(id, value, oldValue, widget);\n }\n }\n\n enterInputs(widget, cell, param) {\n cell.classed(param.type + \"-cell\", true);\n const context = this;\n if (typeof (param.ext.editor_input) === \"function\") {\n param.ext.editor_input(this, widget, cell, param);\n }\n switch (param.type) {\n case \"boolean\":\n cell.append(\"input\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"type\", \"checkbox\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.checked);\n })\n ;\n break;\n case \"set\":\n cell.append(\"select\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n break;\n case \"array\":\n case \"object\":\n cell.append(\"textarea\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"autocomplete\", \"off\")\n .attr(\"autocorrect\", \"off\")\n .attr(\"autocapitalize\", \"off\")\n .attr(\"spellcheck\", \"false\")\n .on(\"change\", function () {\n let value;\n try {\n value = JSON.parse(this.value);\n } catch (e) {\n value = this.value;\n }\n context.setProperty(widget, param.id, value);\n })\n ;\n break;\n default:\n if (param.ext && param.ext.range) {\n cell.append(\"span\")\n .classed(\"property-input-span\", true)\n .attr(\"id\", this.id() + \"_\" + param.id + \"_currentVal\")\n .text(param.defaultValue)\n ;\n cell.append(\"input\")\n .attr(\"type\", \"range\")\n .attr(\"step\", param.ext.range.step)\n .attr(\"min\", param.ext.range.min)\n .attr(\"max\", param.ext.range.max)\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .on(\"input\", function () {\n context.setProperty(widget, param.id, this.value);\n d3Select(\"#\" + this.id + \"_currentVal\").text(\"Current Value: \" + this.value);\n })\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n d3Select(\"#\" + this.id + \"_currentVal\").text(\"Current Value: \" + this.value);\n })\n ;\n } else {\n cell.append(param.ext && param.ext.multiline ? \"textarea\" : \"input\")\n .attr(\"id\", this.id() + \"_\" + param.id)\n .classed(\"property-input\", true)\n .attr(\"autocomplete\", \"off\")\n .attr(\"autocorrect\", \"off\")\n .attr(\"autocapitalize\", \"off\")\n .attr(\"spellcheck\", \"false\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n if (param.type === \"html-color\" && !Platform.isIE) {\n cell.append(\"input\")\n .attr(\"id\", this.id() + \"_\" + param.id + \"_2\")\n .classed(\"property-input\", true)\n .attr(\"type\", \"color\")\n .on(\"change\", function () {\n context.setProperty(widget, param.id, this.value);\n })\n ;\n }\n }\n break;\n }\n }\n\n updateInputs(widget, param) {\n const element = d3SelectAll(\"#\" + this.id() + \"_\" + param.id + \", #\" + this.id() + \"_\" + param.id + \"_2\");\n const val = widget ? widget[param.id]() : \"\";\n element.property(\"disabled\", widget[param.id + \"_disabled\"] && widget[param.id + \"_disabled\"]());\n element.property(\"invalid\", widget[param.id + \"_valid\"] && !widget[param.id + \"_valid\"]());\n switch (param.type) {\n case \"boolean\":\n element.property(\"checked\", val);\n break;\n case \"set\":\n const options = element.selectAll(\"option\").data<string | { value: string, text: string }>(widget[param.id + \"_options\"]());\n options.enter().append(\"option\")\n .merge(options as any)\n .attr(\"value\", (d: any) => (d && d.value !== undefined) ? d.value : d)\n .text((d: any) => (d && d.text !== undefined) ? d.text : d)\n ;\n options.exit().remove();\n element.property(\"value\", val);\n break;\n case \"array\":\n case \"object\":\n element.property(\"value\", JSON.stringify(val, function replacer(_key, value) {\n if (value instanceof Widget) {\n return Persist.serialize(value);\n }\n return value;\n }, \" \"));\n break;\n default:\n if (param.ext && param.ext.range) {\n d3Select(\"#\" + this.id() + \"_\" + param.id + \"_currentVal\").text(\"Current Value: \" + val);\n }\n element.property(\"value\", val && val.length && val.length > 100000 ? \"...too big to display...\" : val);\n break;\n }\n }\n\n showFields: { (): boolean; (_: boolean): PropertyEditor; };\n showData: { (): boolean; (_: boolean): PropertyEditor; };\n\n sorting: { (): string; (_: string): PropertyEditor; };\n sorting_options: () => string[];\n\n hideNonWidgets: { (): boolean; (_: boolean): PropertyEditor; };\n\n label: { (): string; (_: string): PropertyEditor; };\n filterTags: { (): string; (_: string): PropertyEditor; };\n excludeTags: { (): string[]; (_: string[]): PropertyEditor; };\n excludeParams: { (): string[]; (_: string[]): PropertyEditor; };\n\n widget: { (): PropertyExt; (_: PropertyExt): PropertyEditor };\n}\nPropertyEditor.prototype._class += \" other_PropertyEditor\";\n\nPropertyEditor.prototype.publish(\"showFields\", false, \"boolean\", \"If true, widget.fields() will display as if it was a publish parameter.\", null, { tags: [\"Basic\"] });\nPropertyEditor.prototype.publish(\"showData\", false, \"boolean\", \"If true, widget.data() will display as if it was a publish parameter.\", null, { tags: [\"Basic\"] });\n\nPropertyEditor.prototype.publish(\"sorting\", \"none\", \"set\", \"Specify the sorting type\", [\"none\", \"A-Z\", \"Z-A\", \"type\"], { tags: [\"Basic\"], icons: [\"fa-sort\", \"fa-sort-alpha-asc\", \"fa-sort-alpha-desc\", \"fa-sort-amount-asc\"] });\n\nPropertyEditor.prototype.publish(\"hideNonWidgets\", false, \"boolean\", \"Hides non-widget params (at this tier only)\", null, { tags: [\"Basic\"] });\n\nPropertyEditor.prototype.publish(\"label\", \"\", \"string\", \"Label to display in header of property editor table\", null, { tags: [\"Basic\"] });\nPropertyEditor.prototype.publish(\"filterTags\", \"\", \"set\", \"Only show Publish Params of this type\", [\"Basic\", \"Intermediate\", \"Advance\", \"\"], {});\nPropertyEditor.prototype.publish(\"excludeTags\", [\"Private\"], \"array\", \"Exclude this array of tags\", null, {});\nPropertyEditor.prototype.publish(\"excludeParams\", [], \"array\", \"Exclude this array of params (widget.param)\", null, {});\n\nPropertyEditor.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Basic\"], render: false });\n\nconst _widgetOrig = PropertyEditor.prototype.widget;\n(PropertyEditor.prototype as any).widget = function (_?: Widget): Widget | PropertyEditor {\n if (arguments.length && _widgetOrig.call(this) === _) return this;\n const retVal = _widgetOrig.apply(this, arguments);\n if (arguments.length) {\n this.watchWidget(_);\n if (_ instanceof Grid) {\n const context = this;\n _.postSelectionChange = function () {\n context._selectedItems = _._selectionBag.get().map(function (item) { return item.widget; });\n context.lazyRender();\n };\n }\n }\n return retVal;\n};\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/RadioCheckbox.css\";\n\nexport class RadioCheckbox extends HTMLWidget {\n _span;\n _label;\n _Checkbox;\n\n constructor() {\n super();\n }\n\n rcData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n let retVal = [];\n retVal = retVal.concat(view.entries().map(function (row) {\n return {\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].values.length ? row.values[0].values[0] : []\n };\n }, this));\n if (this.sort_exists()) {\n const descending = this.sort() === \"descending\";\n retVal.sort(function (l, r) {\n if (l.text < r.text) return descending ? 1 : -1;\n if (l.text > r.text) return descending ? -1 : 1;\n return 0;\n });\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._label = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_radioCheckbox\")\n ;\n this._Checkbox = this._span.append(\"div\")\n .attr(\"id\", this.id() + \"_radioCheckbox\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this._label\n .text(this.label())\n ;\n const radioCheckbox = this._Checkbox.selectAll(\".dataRow\").data(this.rcData());\n radioCheckbox.enter().append(\"div\")\n .attr(\"class\", \"dataRow\")\n .each(function (row, idx) {\n const checkboxDiv = d3Select(this);\n const id = context.id() + \"_checkbox_\" + idx;\n checkboxDiv.append(\"input\")\n .attr(\"id\", id)\n .attr(\"name\", context.id() + \"_radioCheckbox\")\n .on(\"change\", function (selectedData) {\n context.handleClick();\n });\n checkboxDiv.append(\"label\")\n .attr(\"for\", id);\n });\n radioCheckbox\n .each(function (row, idx) {\n const rcDiv = d3Select(this);\n rcDiv.select(\"input\")\n .attr(\"type\", context.multiple() ? \"checkbox\" : \"radio\")\n .attr(\"value\", row.value);\n rcDiv.select(\"label\")\n .text(row.text);\n });\n radioCheckbox.exit().remove();\n radioCheckbox.order();\n }\n\n exit(domNode, element) {\n this._span.remove();\n super.exit(domNode, element);\n }\n\n handleClick() {\n const options = [];\n this._Checkbox.selectAll(\".dataRow > input\")\n .each(function (row, idx) {\n const input = d3Select(this);\n if (input.property(\"checked\") && row && row.origRow) {\n options.push(row.origRow);\n }\n });\n if (options.length) {\n // TODO Handle Multiple Selections - part of 1.16.x\n this.click(this.rowToObj(options[0]), this.valueColumn(), true);\n } else {\n this.click([], this.valueColumn(), false);\n }\n }\n\n click(row, column, selected) {\n }\n\n label: { (): string; (_: string): RadioCheckbox };\n label_exists: () => boolean;\n valueColumn: { (): string; (_: string): RadioCheckbox };\n valueColumn_exists: () => boolean;\n textColumn: { (): string; (_: string): RadioCheckbox };\n textColumn_exists: () => boolean;\n sort: { (): string; (_: string): RadioCheckbox };\n sort_exists: () => boolean;\n multiple: { (): boolean; (_: boolean): RadioCheckbox };\n multiple_exists: () => boolean;\n}\nRadioCheckbox.prototype._class += \" other_RadioCheckbox\";\n\nRadioCheckbox.prototype.publish(\"label\", null, \"string\", \"Label for RadioCheckbox\");\nRadioCheckbox.prototype.publish(\"valueColumn\", null, \"set\", \"RadioCheckbox display value\", function () { return this.columns(); }, { optional: true });\nRadioCheckbox.prototype.publish(\"textColumn\", null, \"set\", \"RadioCheckbox value(s)\", function () { return this.columns(); }, { optional: true });\nRadioCheckbox.prototype.publish(\"sort\", null, \"set\", \"Sort contents\", [\"\", \"ascending\", \"descending\"], { optional: true });\nRadioCheckbox.prototype.publish(\"multiple\", false, \"boolean\", \"Multiple selection\");\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { select as d3Select } from \"d3-selection\";\n\nimport \"../src/Select.css\";\n\nexport class Select extends HTMLWidget {\n _span;\n _prompt;\n _select;\n\n constructor() {\n super();\n }\n\n selectData() {\n if (this.data().length === 0) return [];\n const view = this._db.rollupView([this.textColumn(), this.valueColumn()]);\n let retVal = [];\n retVal = retVal.concat(view.entries().map(function (row) {\n return {\n text: row.key,\n value: row.values.length ? row.values[0].key : \"\",\n origRow: row.values.length && row.values[0].value.length ? row.values[0].value[0] : []\n };\n }, this));\n if (this.sort_exists()) {\n const descending = this.sort() === \"descending\";\n retVal.sort(function (l, r) {\n if (l.text < r.text) return descending ? 1 : -1;\n if (l.text > r.text) return descending ? -1 : 1;\n return 0;\n });\n }\n if (this.optional()) {\n retVal.unshift({ value: \"\", text: \"\" });\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._span = element.append(\"span\");\n this._prompt = this._span.append(\"label\")\n .attr(\"for\", this.id() + \"_select\")\n ;\n\n const context = this;\n this._select = this._span.append(\"select\")\n .attr(\"id\", this.id() + \"_select\")\n .on(\"change\", function (d) {\n const options = [];\n const options_dom_node = context._select.node().options;\n for (let i = 0; i < options_dom_node.length; ++i) {\n const optionNode = options_dom_node[i];\n if (optionNode.selected) {\n options.push((d3Select(optionNode).datum() as any).origRow);\n }\n }\n if (options.length) {\n context.click(context.rowToObj(options[0]), context.valueColumn(), true); // TODO: Multiselect not support in HIPIE\n } else {\n context.click([], context.valueColumn(), false);\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._prompt\n .text(this.label())\n ;\n this._select\n .attr(\"multiple\", this.multiple() ? this.multiple() : null)\n .attr(\"size\", this.multiple() && this.selectSize() ? this.selectSize() : null)\n ;\n\n const option = this._select.selectAll(\".dataRow\").data(this.selectData());\n const optionUpdate = option.enter().append(\"option\")\n .attr(\"class\", \"dataRow\")\n .merge(option)\n .attr(\"value\", function (row) { return row.value; })\n .text(function (row) { return row.text; })\n ;\n option.exit().remove();\n optionUpdate.order();\n }\n\n exit(domNode, element) {\n this._span.remove();\n super.exit(domNode, element);\n }\n\n click(row, column, selected) {\n }\n label: { (): string; (_: string): Select };\n label_exists: () => boolean;\n valueColumn: { (): string; (_: string): Select };\n valueColumn_exists: () => boolean;\n textColumn: { (): string; (_: string): Select };\n textColumn_exists: () => boolean;\n optional: { (): boolean; (_: boolean): Select };\n optional_exists: () => boolean;\n sort: { (): string; (_: string): Select };\n sort_exists: () => boolean;\n multiple: { (): boolean; (_: boolean): Select };\n multiple_exists: () => boolean;\n selectSize: { (): number; (_: number): Select };\n selectSize_exists: () => boolean;\n}\nSelect.prototype._class += \" other_Select\";\n\nSelect.prototype.publish(\"label\", null, \"string\", \"Label for select\");\nSelect.prototype.publish(\"valueColumn\", null, \"set\", \"Select display value\", function () { return this.columns(); }, { optional: true });\nSelect.prototype.publish(\"textColumn\", null, \"set\", \"Select value(s)\", function () { return this.columns(); }, { optional: true });\nSelect.prototype.publish(\"optional\", true, \"boolean\", \"Optional Select\");\nSelect.prototype.publish(\"sort\", null, \"set\", \"Sort contents\", [\"\", \"ascending\", \"descending\"], { optional: true });\nSelect.prototype.publish(\"multiple\", false, \"boolean\", \"Multiple selection\");\nSelect.prototype.publish(\"selectSize\", 5, \"number\", \"Size of multiselect box\", null, { disable: w => !w.multiple() });\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport * as Persist from \"./Persist\";\n\nimport \"../src/ThemeEditor.css\";\n\nfunction hasLocalStorage(): boolean {\n const mod = \"@hpcc-js/other\";\n try {\n localStorage.setItem(mod, mod);\n localStorage.removeItem(mod);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Polyfill for IE in file:// mode ----\nconst _localStorage: { getItem: (id: string) => any; } = hasLocalStorage() ? localStorage : {\n getItem(id: string): any {\n return undefined;\n }\n};\n\nconst getThemes = function (idx?) {\n if (typeof ((window as any).g_defaultThemes) === \"function\") {\n (window as any).g_defaultThemes(idx);\n }\n return JSON.parse(_localStorage.getItem(\"themeEditorThemes\") || \"{}\");\n};\nconst getSerials = function (idx?) {\n if (typeof ((window as any).g_defaultSerials) === \"function\") {\n (window as any).g_defaultSerials(idx);\n }\n return JSON.parse(_localStorage.getItem(\"themeEditorSerials\") || \"{}\");\n};\nconst getThemeNames = function (idx?) {\n const loadedThemes = getThemes();\n let themes = [];\n for (const themeName in loadedThemes) {\n themes.push(themeName);\n }\n if (typeof (idx) !== \"undefined\" && typeof (themes[idx]) !== \"undefined\") {\n themes = themes[idx];\n }\n return themes;\n};\nconst getSerialNames = function (idx?) {\n const loadedSerials = getSerials();\n let serials = [];\n for (const serialName in loadedSerials) {\n serials.push(serialName);\n }\n if (typeof (idx) !== \"undefined\" && typeof (serials[idx]) !== \"undefined\") {\n serials = serials[idx];\n }\n return serials;\n};\nconst tableNeedsRedraw = function (context) {\n let needsRedraw = false;\n if (typeof (context._current_grouping) === \"undefined\") {\n context._current_grouping = context._group_params_by;\n } else if (context._current_grouping !== context._group_params_by) {\n needsRedraw = true;\n }\n if (typeof (context._showing_columns) === \"undefined\") {\n context._showing_columns = context.showColumns();\n } else if (context._showing_columns !== context.showColumns()) {\n needsRedraw = true;\n }\n if (typeof (context._showing_data) === \"undefined\") {\n context._showing_data = context.showData();\n } else if (context._showing_data !== context.showData()) {\n needsRedraw = true;\n }\n return needsRedraw;\n};\nconst camelizeString = function (str) {\n const spacedText = str.split(/(?=[0-9A-Z])/).map(function (n) { return n.length > 1 ? n + \" \" : n; }).join(\"\");\n return spacedText.replace(/(?:^|\\s)\\S/g, function (a) { return a.toUpperCase(); });\n};\n\nconst tableInputHtml = function (rowObj, value, widgetArr, idSuffix) {\n let inputHtml = \"\";\n let id = \"te-input-\" + rowObj.id + \"-\" + idSuffix;\n\n let inputType;\n if (typeof (rowObj.ext) !== \"undefined\" && typeof (rowObj.ext.inputType) !== \"undefined\") {\n inputType = rowObj.ext.inputType;\n }\n\n if (typeof (rowObj.inputID) !== \"undefined\") {\n id = rowObj.inputID;\n }\n\n const dataWIDs = \"data-paramid='\" + rowObj.id + \"' data-wids='\" + widgetArr.map(function (w) {\n if (typeof (w.widget) === \"object\") {\n return w.widget._id;\n } else {\n return w;\n }\n }).join(\",\") + \"'\";\n switch (rowObj.type) {\n case \"boolean\":\n const checked = value ? \" checked\" : \"\";\n inputHtml = \"<input id='\" + id + \"' \" + dataWIDs + \" type='checkbox' class='te-checkbox te-input'\" + checked + \">\"; break;\n case \"number\":\n if (typeof (inputType) !== \"undefined\") {\n if (inputType === \"textarea\") {\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' \" + dataWIDs + \">\" + value + \"</textarea>\";\n } else if (inputType === \"range\") {\n inputHtml = \"<input id='\" + id + \"' class='te-input' type='range' \" + dataWIDs + \" value='\" + value + \"' min='\" + rowObj.ext.min + \"' max='\" + rowObj.ext.max + \"' step='\" + rowObj.ext.step + \"'>\";\n }\n } else {\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-text te-input' \" + dataWIDs + \" value='\" + value + \"'>\";\n }\n break;\n case \"string\":\n if (typeof (inputType) !== \"undefined\") {\n if (inputType === \"textarea\") {\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' \" + dataWIDs + \">\" + value + \"</textarea>\";\n }\n } else {\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-text te-input' value='\" + value + \"' \" + dataWIDs + \">\";\n }\n break;\n case \"html-color\":\n const valueAttr = value === \"\" ? \"\" : \" value='\" + value + \"'\";\n inputHtml = \"<input id='\" + id + \"' type='text' class='te-html-color-input te-input' \" + dataWIDs + \" \" + valueAttr + \">\";\n inputHtml += \"<input type='color' class='te-html-color-button te-input' \" + dataWIDs + \" \" + valueAttr + \">\";\n break;\n case \"set\":\n const options = _options(rowObj, value);\n inputHtml = \"<select id='\" + id + \"' class='te-select te-input'\" + dataWIDs + \">\" + options + \"</select>\";\n break;\n case \"array\":\n inputHtml = \"<textarea id='\" + id + \"' class='te-textarea te-input' data-type='array' \" + dataWIDs + \">\" + value + \"</textarea>\";\n break;\n default:\n break;\n }\n if (typeof (rowObj.ext.saveButton) !== \"undefined\") {\n inputHtml += \"<button id='\" + rowObj.ext.saveButtonID + \"'>\" + rowObj.ext.saveButton + \"</button>\";\n }\n return inputHtml;\n\n function _options(obj, val) {\n let options = \"\";\n obj.set.forEach(function (s) {\n const selected = s === val ? \" selected\" : \"\";\n options += \"<option value='\" + s + \"'\" + selected + \">\" + s + \"</option>\";\n });\n return options;\n }\n};\n\nexport class ThemeEditor extends HTMLWidget {\n _current_grouping;\n _showing_columns;\n _showing_data;\n _contentEditors;\n _showSettings;\n _defaultThemes;\n _widgetObjsById;\n _sharedProperties;\n getThemes;\n getSerials;\n getDefaultThemes;\n getDefaultSerials;\n\n constructor() {\n super();\n\n this._tag = \"div\";\n this._current_grouping = undefined;\n this._showing_columns = undefined;\n this._showing_data = undefined;\n this.columns([\"Key\", \"Value\"]);\n this._contentEditors = [];\n this._showSettings = true;\n\n this._defaultThemes = [];\n\n this._widgetObjsById = {};\n }\n\n showSettings(_?) {\n if (!arguments.length) {\n return this._showSettings;\n }\n this._showSettings = _;\n return this;\n }\n\n onChange(widget, propID) { }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._placeholderElement.style(\"overflow\", \"auto\");\n }\n\n widgetProperty(widget, propID, _?) {\n if (_ === undefined) {\n return widget[propID]();\n }\n return widget[propID](_);\n }\n\n load(elmValue) { }\n\n save(themeName) { }\n\n needsPropTableRedraw() {\n const ret = document.getElementById(\"te-themeEditorOptions\") === null;\n return ret;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (tableNeedsRedraw(this)) {\n element.selectAll(\"#\" + this._id + \" > table\").remove();\n }\n this._current_grouping = this.paramGrouping();\n this._widgetObjsById[this._id] = this;\n this._sharedProperties = this.findSharedProperties(this.data());\n\n const needsPropertiesTableRedraw = this.needsPropTableRedraw();\n if (needsPropertiesTableRedraw && this.showSettings()) {\n const teParams = Persist.discover(this);\n for (const i in teParams) {\n if (teParams[i].ext.tags.indexOf(this.editorComplexity()) !== -1) {\n const teParamVal = this[teParams[i].id]();\n if (teParams[i].id === \"loadedTheme\" || teParams[i].id === \"loadedSerial\") {\n teParams[i].inputID = \"te-load-theme\";\n }\n teParams[i].input = tableInputHtml(teParams[i], teParamVal, [this._id], this._id);\n } else {\n delete teParams[i];\n }\n }\n domNode.innerHTML = this.propertiesTableHtml(teParams);\n const evt = document.createEvent(\"Events\");\n evt.initEvent(\"TE Properties Ready\", true, true);\n document.dispatchEvent(evt);\n }\n\n this.buildTableObjects(domNode, this._sharedProperties);\n\n this.initFunctionality(domNode);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n click(d) {\n }\n\n propertiesTableHtml(editorParams) {\n const tableObj = {\n id: \"te-themeEditorOptions\",\n label: \"Editor Options\",\n rowArr: []\n };\n const modeTableObj = {\n id: \"te-tableModeOptions\",\n label: this.themeMode() ? \"Save/Load Theme\" : \"Save/Load Serial\",\n rowArr: []\n };\n for (const i in editorParams) {\n if (this.themeMode()) {\n if (editorParams[i].ext.tags.indexOf(\"Theme\") === -1 && editorParams[i].ext.tags.indexOf(\"Serial\") === -1) {\n tableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n } else if (editorParams[i].ext.tags.indexOf(\"Theme\") !== -1) {\n modeTableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n }\n } else {\n if (editorParams[i].ext.tags.indexOf(\"Serial\") === -1 && editorParams[i].ext.tags.indexOf(\"Theme\") === -1) {\n tableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n } else if (editorParams[i].ext.tags.indexOf(\"Serial\") !== -1) {\n modeTableObj.rowArr.push({\n th: camelizeString(editorParams[i].id),\n td: editorParams[i].input,\n trClass: \"propertyRow\"\n });\n }\n }\n\n }\n let html = \"\";\n if (tableObj.rowArr.length > 0) {\n html += this.tableObjHtml(tableObj);\n }\n if (modeTableObj.rowArr.length > 0) {\n html += this.tableObjHtml(modeTableObj);\n }\n return html;\n }\n buildTableObjects(targetElement, propObjs) {\n let sectionObjs = {};\n if (this.themeMode()) {\n sectionObjs = {\n chartColorSection: {\n id: \"te-colorOptions\",\n label: \"Chart Colors\",\n rowObjArr: []\n },\n surfaceSection: {\n id: \"te-containerOptions\",\n label: \"Container Styles/Colors\",\n rowObjArr: []\n },\n fontSection: {\n id: \"te-fontOptions\",\n label: \"Font Styles/Colors\",\n rowObjArr: []\n }\n };\n } else {\n sectionObjs = {\n nonSurfaceSection: {\n id: \"te-chartOptions\",\n label: \"Chart Properties\",\n rowObjArr: []\n }\n };\n }\n for (const p in propObjs) {\n if (this.themeMode()) {\n if (p.toUpperCase().indexOf(\"FONT\") !== -1 && !(propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") !== -1 && p.toUpperCase().indexOf(\"COLOR\") !== -1)) {\n sectionObjs[\"fontSection\"].rowObjArr.push(propObjs[p]);\n } else if (p === \"paletteID\") {\n sectionObjs[\"chartColorSection\"].rowObjArr.push(propObjs[p]);\n } else if (propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") !== -1) {\n sectionObjs[\"surfaceSection\"].rowObjArr.push(propObjs[p]);\n }\n } else {\n if (propObjs[p].arr[0].widget._class.indexOf(\"layout_Surface\") === -1) {\n sectionObjs[\"nonSurfaceSection\"].rowObjArr.push(propObjs[p]);\n }\n }\n }\n let html = \"\";\n for (const i in sectionObjs) {\n html += this.sharedPropertyTableHtml(sectionObjs[i]);\n }\n targetElement.innerHTML += html;\n }\n\n initFunctionality(elm) {\n const context = this;\n _expandCollapse(elm);\n _inputOnChange(elm);\n _inputOnClick(elm);\n function _inputOnClick(elm2) {\n if (context.showSettings()) {\n const saveBtn = document.getElementById(\"te-save-button\");\n saveBtn.onclick = function (e) {\n const clickedElm: any = e.target;\n const themeName = clickedElm.previousSibling.value;\n if (themeName.length > 1) {\n const loadSelect = document.getElementById(\"te-load-theme\");\n const loadOptions = loadSelect.getElementsByTagName(\"option\");\n let saveExists = false;\n for (const i in loadOptions) {\n const val = loadOptions[i].value;\n if (val === themeName) {\n saveExists = true;\n }\n }\n if (!saveExists) {\n loadSelect.innerHTML += \"<option value='\" + themeName + \"'>\" + themeName + \"</option>\";\n }\n clickedElm.previousSibling.value = \"\";\n (loadSelect as any).value = themeName;\n } else {\n alert(\"Save Name cannot be empty.\");\n }\n };\n }\n }\n function _inputOnChange(elm2) {\n const teInputs = elm2.getElementsByClassName(\"te-input\");\n for (const i in teInputs) {\n if (isNaN(parseInt(i))) break;\n const inputElm = teInputs[i];\n const inputID = inputElm.getAttribute(\"id\");\n if (inputID === \"te-load-theme\") {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n context.load(elm3.value);\n };\n } else if (inputID !== null && inputID.indexOf(\"te-input-themeMode\") !== -1) {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n context.themeMode(elm3.checked);\n\n const name = document.getElementById(\"te-load-theme\");\n const nameToLoad = name !== null ? (name as any).value : \"Default\";\n context.load(nameToLoad);\n };\n } else if (inputElm.tagName === \"INPUT\" || inputElm.tagName === \"SELECT\" || inputElm.tagName === \"TEXTAREA\") {\n inputElm.onchange = function (e) {\n const elm3 = e.srcElement;\n\n let id = elm3.getAttribute(\"id\");\n\n if (elm3.className.split(\" \").indexOf(\"te-html-color-button\") !== -1) {\n id = elm3.previousSibling.getAttribute(\"id\");\n elm3.previousSibling.value = elm3.value;\n }\n const elmType = elm3.getAttribute(\"type\");\n const splitId = id.split(\"-\");\n const genericId = splitId.slice(0, splitId.length - 1).join(\"-\") + \"-\";\n\n const widsStr = elm3.getAttribute(\"data-wids\");\n const paramId = elm3.getAttribute(\"data-paramid\");\n const widArr = widsStr.split(\",\");\n widArr.forEach(function (wid) {\n const individualId = genericId + wid;\n const indElm = document.getElementById(individualId);\n if (elmType === \"checkbox\") {\n (indElm as any).checked = elm3.checked;\n context._widgetObjsById[wid][paramId](elm3.checked);\n } else if (elm3.getAttribute(\"data-type\") === \"array\") {\n (indElm as any).value = elm3.value;\n try {\n context._widgetObjsById[wid][paramId](JSON.parse(elm3.value));\n } catch (e) { }\n } else {\n (indElm as any).value = elm3.value;\n context._widgetObjsById[wid][paramId](elm3.value);\n\n if (indElm.className.split(\" \").indexOf(\"te-html-color-input\") !== -1) {\n (indElm.nextSibling as any).value = elm3.value;\n } else if (indElm.className.split(\" \").indexOf(\"te-html-color-button\") !== -1) {\n (indElm.previousSibling as any).value = elm3.value;\n }\n }\n });\n context.data().forEach(function (d) {\n d.render();\n });\n };\n }\n }\n }\n function _expandCollapse(elm2) {\n const tableArr = elm2.getElementsByClassName(\"te-section-table\");\n for (const i in tableArr) {\n if (typeof (tableArr[i].getElementsByTagName) === \"function\") {\n const thead = tableArr[i].getElementsByTagName(\"thead\");\n thead[0].onclick = function (e) {\n let elm3 = e.toElement;\n if (elm3.tagName === \"TH\") {\n elm3 = elm3.parentElement.parentElement;\n }\n const parent = elm3.parentElement;\n let tbodyClass = \"\";\n if (parent.className.split(\" \").indexOf(\"expanded\") === -1) {\n parent.className = \"te-section-table expanded\";\n tbodyClass = \"shown\";\n } else {\n parent.className = \"te-section-table collapsed\";\n tbodyClass = \"hidden\";\n }\n const tbody = parent.getElementsByTagName(\"tbody\");\n tbody[0].className = tbodyClass;\n };\n }\n }\n const sharedRowArr = elm2.getElementsByClassName(\"sharedPropertyRow\");\n for (const n in sharedRowArr) {\n if (typeof (sharedRowArr[n].getElementsByClassName) === \"function\") {\n const label = sharedRowArr[n].getElementsByClassName(\"te-label\");\n label[0].onclick = function (e) {\n const elm3 = e.toElement;\n const parent = elm3.parentElement;\n let subRowClass = \"\";\n if (parent.className.split(\" \").indexOf(\"expanded\") === -1) {\n parent.className = \"sharedPropertyRow expanded\";\n subRowClass = \"shown\";\n } else {\n parent.className = \"sharedPropertyRow collapsed\";\n subRowClass = \"hidden\";\n }\n let nextSib = parent.nextSibling;\n while (nextSib !== null) {\n if (nextSib.className.split(\" \").indexOf(\"sharedPropertyRow\") === -1) {\n nextSib.className = \"propertyRow \" + subRowClass;\n nextSib = nextSib.nextSibling;\n } else {\n nextSib = null;\n }\n }\n };\n }\n }\n }\n }\n sharedPropertyTableHtml(sectionObj) {\n const tableObj = {\n id: sectionObj.id,\n label: sectionObj.label,\n rowArr: []\n };\n sectionObj.rowObjArr.forEach(function (rowObj) {\n rowObj.arr.forEach(function (widgetObj, widgetIdx) {\n if (widgetIdx === 0) {\n tableObj.rowArr.push({\n th: _sharedPropertyLabel(rowObj),\n td: _sharedPropertyInput(rowObj),\n trClass: \"sharedPropertyRow collapsed\"\n });\n }\n tableObj.rowArr.push({\n th: _propertyLabel(widgetObj),\n td: _propertyInput(rowObj, widgetIdx),\n trClass: \"propertyRow hidden\"\n });\n });\n });\n\n return this.tableObjHtml(tableObj);\n\n function _propertyLabel(widgetObj) {\n const splitClass = widgetObj.widget.classID().split(\"_\");\n const displayClass = splitClass.join(\"/\");\n return displayClass + \" <i>[\" + widgetObj.widget._id + \"]</i>\";\n }\n function _sharedPropertyLabel(rowObj) {\n return camelizeString(rowObj.id);\n }\n\n function _propertyInput(rowObj, idx) {\n const value = _value(rowObj, idx);\n const html = tableInputHtml(rowObj, value, [rowObj.arr[idx]], rowObj.arr[idx].widget._id);\n return html;\n\n function _value(rowObj2, idx2) {\n const value2 = rowObj2.arr[idx2].widget[rowObj2.id]();\n return value2 !== null ? value2 : \"\";\n }\n }\n function _sharedPropertyInput(rowObj) {\n const value = _sharedValue(rowObj);\n const html = tableInputHtml(rowObj, value, rowObj.arr, \"shared\");\n return html;\n\n function _sharedValue(rowObj2) {\n const value2 = rowObj2.arr[0].widget[rowObj2.id]();\n rowObj2.arr.forEach(function (w, i) {\n if (value2 !== w.widget[w.id]()) {\n return \"\";\n }\n });\n if (value2 !== null) {\n if (rowObj2.type === \"array\") {\n return JSON.stringify(value2);\n }\n return value2;\n }\n return \"\";\n }\n }\n }\n\n tableObjHtml(tableObj) {\n let html = \"<table id='\" + tableObj.id + \"' class='te-section-table expanded'>\";\n html += \"<thead><tr><th colspan='2'>\" + tableObj.label + \"</th></tr></thead>\";\n html += \"<tbody>\";\n tableObj.rowArr.forEach(function (rowObj) {\n html += this.tableRowObjHtml(rowObj);\n }, this);\n html += \"</tbody>\";\n return html + \"</table>\";\n }\n tableRowObjHtml(rowObj) {\n let html = typeof (rowObj.trClass) !== \"undefined\" ? \"<tr class='\" + rowObj.trClass + \"'>\" : \"<tr>\";\n html += \"<th class='te-label'>\" + rowObj.th + \"</th>\";\n html += \"<td>\" + rowObj.td + \"</td>\";\n return html + \"</tr>\";\n }\n\n setWidgetObjsById(widgetProp) {\n const context = this;\n const val = widgetProp.widget[widgetProp.id]();\n if (widgetProp.type === \"widgetArray\") {\n val.forEach(function (widget) {\n context._widgetObjsById[widget._id] = widget;\n });\n } else if (widgetProp.type === \"widget\" && val !== null) {\n this._widgetObjsById[val._id] = val;\n }\n }\n checkTagFilter(tagArr) {\n const allowTags = [\"Basic\"];\n let ret = false;\n tagArr.forEach(function (tag) {\n if (allowTags.indexOf(tag) !== -1) {\n ret = true;\n }\n });\n return ret;\n }\n findSharedProperties(data) {\n const context = this;\n let propsByID;\n if (typeof (data) !== \"undefined\" && data.length > 0) {\n let allProps = [];\n propsByID = {};\n const surfacePropsByID = {};\n const nonSurfacePropsByID = {};\n data.forEach(function (widget) {\n const gpResponse = _getParams(widget, 0);\n allProps = allProps.concat(gpResponse);\n });\n allProps.forEach(function (prop) {\n if ([\"widget\", \"widgetArray\"].indexOf(prop.type) !== -1) {\n context.setWidgetObjsById(prop);\n } else if (context.checkTagFilter(prop.ext.tags)) {\n const tempIdx = prop.id;\n if (prop.widget._class.indexOf(\"Surface\") !== -1) {\n if (typeof (surfacePropsByID[tempIdx]) === \"undefined\") {\n surfacePropsByID[tempIdx] = { arr: [] };\n }\n surfacePropsByID[tempIdx].id = prop.id;\n surfacePropsByID[tempIdx].description = prop.description;\n surfacePropsByID[tempIdx].type = prop.type;\n surfacePropsByID[tempIdx].set = prop.set;\n surfacePropsByID[tempIdx].ext = prop.ext;\n surfacePropsByID[tempIdx].arr.push(prop);\n } else {\n if (typeof (nonSurfacePropsByID[tempIdx]) === \"undefined\") {\n nonSurfacePropsByID[tempIdx] = { arr: [] };\n }\n nonSurfacePropsByID[tempIdx].id = prop.id;\n nonSurfacePropsByID[tempIdx].description = prop.description;\n nonSurfacePropsByID[tempIdx].type = prop.type;\n nonSurfacePropsByID[tempIdx].set = prop.set;\n nonSurfacePropsByID[tempIdx].ext = prop.ext;\n nonSurfacePropsByID[tempIdx].arr.push(prop);\n }\n if (typeof (propsByID[tempIdx]) === \"undefined\") {\n propsByID[tempIdx] = { arr: [] };\n }\n propsByID[tempIdx].id = prop.id;\n propsByID[tempIdx].description = prop.description;\n propsByID[tempIdx].type = prop.type;\n propsByID[tempIdx].set = prop.set;\n propsByID[tempIdx].ext = prop.ext;\n propsByID[tempIdx].arr.push(prop);\n }\n });\n }\n return propsByID;\n\n function _getParams(widgetObj, depth) {\n let retArr = [];\n if (widgetObj !== null) {\n const paramArr = Persist.discover(widgetObj);\n paramArr.forEach(function (param, i1) {\n if (typeof (param.ext.tags) !== \"undefined\") {\n retArr.push({\n id: param.id,\n type: param.type,\n description: param.description,\n set: param.set,\n ext: param.ext,\n widget: widgetObj\n });\n }\n if (param.type === \"widgetArray\") {\n const childWidgetArray = context.widgetProperty(widgetObj, param.id);\n childWidgetArray.forEach(function (childWidget) {\n const cwArr = _getParams(childWidget, depth + 1);\n retArr = retArr.concat(cwArr);\n });\n } else if (param.type === \"widget\") {\n const childWidget = context.widgetProperty(widgetObj, param.id);\n const temp = _getParams(childWidget, depth + 1);\n retArr = retArr.concat(temp);\n }\n });\n }\n return retArr;\n }\n }\n\n themeMode: { (): boolean; (_: boolean): ThemeEditor };\n themeMode_exists: () => boolean;\n saveTheme: { (): string; (_: string): ThemeEditor };\n saveTheme_exists: () => boolean;\n loadedTheme: { (): string; (_: string): ThemeEditor };\n loadedTheme_exists: () => boolean;\n saveSerial: { (): string; (_: string): ThemeEditor };\n saveSerial_exists: () => boolean;\n loadedSerial: { (): string; (_: string): ThemeEditor };\n loadedSerial_exists: () => boolean;\n showColumns: { (): boolean; (_: boolean): ThemeEditor };\n showColumns_exists: () => boolean;\n showData: { (): boolean; (_: boolean): ThemeEditor };\n showData_exists: () => boolean;\n shareCountMin: { (): number; (_: number): ThemeEditor };\n shareCountMin_exists: () => boolean;\n paramGrouping: { (): string; (_: string): ThemeEditor };\n paramGrouping_exists: () => boolean;\n editorComplexity: { (): string; (_: string): ThemeEditor };\n editorComplexity_exists: () => boolean;\n sectionTitle: { (): string; (_: string): ThemeEditor };\n sectionTitle_exists: () => boolean;\n collapsibleSections: { (): boolean; (_: boolean): ThemeEditor };\n collapsibleSections_exists: () => boolean;\n}\nThemeEditor.prototype._class += \" other_ThemeEditor\";\n\nThemeEditor.prototype.publish(\"themeMode\", true, \"boolean\", \"Edit default values\", null, { tags: [\"Basic\"] });\nThemeEditor.prototype.publish(\"saveTheme\", \"\", \"string\", \"Save Theme\", null, { tags: [\"Basic\", \"Theme\"], saveButton: \"Save\", saveButtonID: \"te-save-button\" });\nThemeEditor.prototype.publish(\"loadedTheme\", getThemeNames(1), \"set\", \"Loaded Theme\", getThemeNames(), { tags: [\"Basic\", \"Theme\"] });\nThemeEditor.prototype.publish(\"saveSerial\", \"\", \"string\", \"Save Serial\", null, { tags: [\"Basic\", \"Serial\"], saveButton: \"Save\", saveButtonID: \"te-save-button\" });\nThemeEditor.prototype.publish(\"loadedSerial\", getSerialNames(0), \"set\", \"Loaded Serial\", getSerialNames(), { tags: [\"Basic\", \"Serial\"] });\nThemeEditor.prototype.publish(\"showColumns\", true, \"boolean\", \"Show Columns\", null, { tags: [\"Intermediate\"] });\nThemeEditor.prototype.publish(\"showData\", true, \"boolean\", \"Show Data\", null, { tags: [\"Intermediate\"] });\nThemeEditor.prototype.publish(\"shareCountMin\", 1, \"number\", \"Share Count Min\", null, { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"paramGrouping\", \"By Param\", \"set\", \"Param Grouping\", [\"By Param\", \"By Widget\"], { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"editorComplexity\", \"Basic\", \"set\", \"Choose what publish properties to display within the editor.\", [\"Basic\", \"Intermediate\", \"Advanced\", \"Private\"], { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"sectionTitle\", \"\", \"string\", \"Section Title\", null, { tags: [\"Private\"] });\nThemeEditor.prototype.publish(\"collapsibleSections\", true, \"boolean\", \"Collapsible Sections\", null, { tags: [\"Intermediate\"] });\n\nThemeEditor.prototype.getThemes = getThemes;\nThemeEditor.prototype.getSerials = getSerials;\nThemeEditor.prototype.getDefaultThemes = getThemeNames;\nThemeEditor.prototype.getDefaultSerials = getSerialNames;\n"],"mappings":"4qBAAO,ICgBHA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,CAAE,GACzE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,GAAG,EAC5FP,EAAcC,EAAGC,EAC5B,EAEO,SAASS,EAAUV,EAAGC,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIU,UAAU,uBAAyBC,OAAOX,GAAK,iCAE7D,SAASY,IAAOC,KAAKC,YAAcf,CAAE,CADrCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOc,OAAOf,IAAMY,EAAGN,UAAYN,EAAEM,UAAW,IAAIM,EACnF,CC7BA,IAIII,EACAC,EALAC,EAAQ,EACRC,EAAU,EACVC,EAAW,EAIXC,EAAY,EACZC,EAAW,EACXC,EAAY,EACZC,EAA+B,iBAAhBC,aAA4BA,YAAYC,IAAMD,YAAcE,KAC3EC,EAA6B,iBAAXC,QAAuBA,OAAOC,sBAAwBD,OAAOC,sBAAsBC,KAAKF,QAAU,SAASG,GAAKC,WAAWD,EAAG,GAAI,EAEjJ,SAASN,IACd,OAAOJ,IAAaM,EAASM,GAAWZ,EAAWE,EAAME,MAAQH,EACnE,CAEA,SAASW,IACPZ,EAAW,CACb,CAEO,SAASa,IACdtB,KAAKuB,MACLvB,KAAKwB,MACLxB,KAAKyB,MAAQ,IACf,CAyBO,SAASC,EAAMC,EAAUC,EAAOC,GACrC,IAAIC,EAAI,IAAIR,EAEZ,OADAQ,EAAEC,QAAQJ,EAAUC,EAAOC,GACpBC,CACT,CAaA,SAASE,IACPvB,GAAYD,EAAYG,EAAME,OAASH,EACvCL,EAAQC,EAAU,EAClB,KAdK,WACLO,MACER,EAEF,IADA,IAAkB4B,EAAdH,EAAI3B,EACD2B,IACAG,EAAIxB,EAAWqB,EAAEN,QAAU,GAAGM,EAAEP,MAAM5B,KAAK,KAAMsC,GACtDH,EAAIA,EAAEL,QAENpB,CACJ,CAMI6B,EAKJ,CAJG,QACC7B,EAAQ,EAWZ,WACE,IAAI8B,EAAmBC,EAAfC,EAAKlC,EAAc0B,EAAOS,IAClC,KAAOD,GACDA,EAAGd,OACDM,EAAOQ,EAAGb,QAAOK,EAAOQ,EAAGb,OAC/BW,EAAKE,EAAIA,EAAKA,EAAGZ,QAEjBW,EAAKC,EAAGZ,MAAOY,EAAGZ,MAAQ,KAC1BY,EAAKF,EAAKA,EAAGV,MAAQW,EAAKjC,EAAWiC,GAGzChC,EAAW+B,EACXI,EAAMV,EACR,CAvBIW,GACA/B,EAAW,CACf,CACA,CAEA,SAASgC,IACP,IAAI5B,EAAMF,EAAME,MAAOe,EAAQf,EAAML,EACjCoB,EA7EU,MA6ESlB,GAAakB,EAAOpB,EAAYK,EACzD,CAiBA,SAAS0B,EAAMV,GACTxB,IACAC,IAASA,EAAUoC,aAAapC,IACxBuB,EAAOpB,EACP,IACNoB,EAAOS,MAAUhC,EAAUc,WAAWY,EAAMH,EAAOlB,EAAME,MAAQH,IACjEH,IAAUA,EAAWoC,cAAcpC,MAElCA,IAAUC,EAAYG,EAAME,MAAON,EAAWqC,YAAYH,EAvGnD,MAwGZpC,EAAQ,EAAGU,EAASiB,IAExB,CAnFAV,EAAM7B,UAAYiC,EAAMjC,UAAY,CAClCQ,YAAaqB,EACbS,QAAS,SAASJ,EAAUC,EAAOC,GACjC,GAAwB,mBAAbF,EAAyB,MAAM,IAAI9B,UAAU,8BACxDgC,GAAgB,MAARA,EAAehB,KAASgB,IAAkB,MAATD,EAAgB,GAAKA,GACzD5B,KAAKyB,OAASrB,IAAaJ,OAC1BI,EAAUA,EAASqB,MAAQzB,KAC1BG,EAAWH,KAChBI,EAAWJ,MAEbA,KAAKuB,MAAQI,EACb3B,KAAKwB,MAAQK,EACbU,GACJ,EACEM,KAAM,WACA7C,KAAKuB,QACPvB,KAAKuB,MAAQ,KACbvB,KAAKwB,MAAQc,IACbC,IAEN,GC3CA,IAAAO,EAAA,SAAAC,GAGI,SAAAD,IAAA,IAAAE,EACID,EAAApD,KAAAK,OAIHA,K,OAHGgD,EAAKC,KAAO,QAEZD,EAAKE,UAAY,G,EAqEzB,OA5E2BtD,EAAUkD,EAAAC,GAUjCD,EAAOrD,UAAA0D,QAAP,SAAQC,EAAOC,EAAQC,EAAYC,GAC/B,OAAKC,UAAUC,OACU,IAArBD,UAAUC,OAAqBzD,KAAKkD,UAAUE,IAClDpD,KAAKkD,UAAUE,GAAS,CACpBA,MAAKA,EACLC,OAAMA,EACNC,WAAUA,EACVC,UAASA,EACTG,UAAWL,EAASE,EAAYD,GAE7BtD,MATuBA,KAAKkD,S,EAYvCJ,EAAOrD,UAAAkE,QAAP,SAAQC,GACJ,OAAQA,GACJ,IAAK,MACD,MAAO,2BACX,IAAK,MACD,MAAO,6BAEf,MAAO,E,EAGXd,EAAArD,UAAAoE,MAAA,SAAMC,EAASC,GACX,IAAMC,EAAUhE,KAChB+D,EAAQE,GAAG,QAAQ,SAAU/E,GAAK8E,EAAQE,OAAOhF,EAAG,G,EAGxD4D,EAAArD,UAAA0E,OAAA,SAAOL,EAASC,GACGA,EAAQK,UAAU,UAAUC,KAAKrE,KAAKsE,UAAU,SAAUpF,GAAK,OAAOA,CAAE,IAChF2E,QAAQU,OAAO,UACjBC,KAAK,OAAO,SAAUtF,GAAK,OAAOA,CAAE,G,EAI7C4D,EAAArD,UAAAgF,YAAA,SAAYC,EAAQC,EAAWC,GAC3B,IAAMZ,EAAUhE,KAChB6E,GAAQ,WAEJ,OADAb,EAAQc,OAAOJ,EAAOtB,MAAOwB,EAAMF,IAC5B,CACX,GAAGE,EAAOF,EAAOpB,WAAYqB,EAAYD,EAAOrB,O,EAGpDP,EAAArD,UAAAqF,OAAA,SAAO1B,EAAOwB,EAAMF,G,EAGpB5B,EAAMrD,UAAAyE,OAAN,SAAOhF,GACH,IAAMyF,EAAY7D,KAAKD,MACvB,IAAK,IAAMkE,KAAO/E,KAAKkD,UAEnB,IADA,IAAMC,EAAUnD,KAAKkD,UAAU6B,GACtBC,EAAI,EAAGA,EAAI7B,EAAQI,YAAayB,EACrChF,KAAKyE,YAAYtB,EAASwB,EAAWK,E,EAKjDlC,EAAIrD,UAAAwF,KAAJ,SAAK/F,GACD,IAAM8E,EAAUhE,KAChBA,KAAKkF,SAASjB,GAAG,kBAAkB,SAAUkB,GACzCnB,EAAQoB,OAAOH,MACnB,IACAjF,KAAKoF,OAAOC,M,EAKnBvC,CAAD,CA5EA,CAA2BwC,cA6E3BxC,EAAMrD,UAAU8F,QAAU,eAE1BzC,EAAMrD,UAAU+F,QAAQ,SAAU,GAAI,SAAU,gB,gCC3EhD,IAAIC,EAEA,SAAsBC,GAClB,GAAKC,SAASC,cAAd,CAoBA,IAAIC,EAAI,CACJC,SAAU,EACVxB,OAAQ,EACRyB,SAAU,EACVnE,MAAO,IACPoE,WAAY,EACZC,UAAW,EACXC,MAAO,EACPC,UAAW,GACXC,WAAY,SAAUC,EAAMC,GAExBA,EAASA,EAAOC,QAAQ,yBAA0B,QAClD,IAAIC,EAAK,IAAIC,OAAO,IAAMH,EAAOI,MAAM,KAAKC,KAAK,KAAO,IAAK,MAC7D,MAAO,kDAAoDN,EAAO,KAAOA,EAAKE,QAAQC,EAAI,aAAe,QACzH,EACYI,SAAU,SAAS3E,EAAG4E,EAAMR,GAAK,GAErC,IAAK,IAAIS,KAAKpB,EAAeA,EAAQhG,eAAeoH,KAAIjB,EAAEiB,GAAKpB,EAAQoB,IAIvE,IADA,IAAIC,EAA6B,iBAAdlB,EAAEC,SAAuB,CAACD,EAAEC,UAAYH,SAASqB,iBAAiBnB,EAAEC,UAC9Ed,EAAE,EAAGA,EAAE+B,EAAMtD,OAAQuB,IAAK,CAC/B,IAAIiC,EAAOF,EAAM/B,GAGjBiC,EAAKC,GAAKvB,SAASwB,cAAc,OACjCF,EAAKC,GAAGE,UAAY,4BAA4BvB,EAAEM,UAElDc,EAAKI,iBAAmBJ,EAAKK,aAAa,gBAC1CL,EAAKM,aAAa,eAAgB,OAClCN,EAAKf,MAAQ,GACbe,EAAKO,SAAW,GAEhBP,EAAKQ,SAAW,SAASC,EAAQC,GAC7B,IAAIC,EAAOX,EAAKY,wBAIhB,GAHAZ,EAAKC,GAAGY,MAAMC,KAAOC,KAAKC,MAAML,EAAKG,MAAQ/G,OAAOkH,aAAevC,SAASwC,gBAAgBC,YAAcvC,EAAEG,YAAc,KAC1HiB,EAAKC,GAAGY,MAAMO,IAAML,KAAKC,MAAML,EAAKU,QAAUtH,OAAOuH,aAAe5C,SAASwC,gBAAgBK,WAAa3C,EAAEI,WAAa,KACzHgB,EAAKC,GAAGY,MAAMW,MAAQT,KAAKC,MAAML,EAAKc,MAAQd,EAAKG,MAAQ,MACtDL,IACDT,EAAKC,GAAGY,MAAMa,QAAU,QACxB1B,EAAKC,GAAG0B,UAAUC,OAAO,QACpB5B,EAAKC,GAAG4B,YAAa7B,EAAKC,GAAG4B,UAAYC,UAAU/H,OAAOgI,iBAAmBA,iBAAiB/B,EAAKC,GAAI,MAAQD,EAAKC,GAAG+B,cAAcH,YACrI7B,EAAKC,GAAGgC,mBAAkBjC,EAAKC,GAAGgC,iBAAmBjC,EAAKC,GAAGtB,cAAc,4BAA4BuD,cACxGlC,EAAKC,GAAGgC,kBACR,GAAKvB,EACA,CACD,IAAIyB,EAASnC,EAAKC,GAAGsB,UAAWa,EAAS1B,EAAKE,wBAAwBQ,IAAMpB,EAAKC,GAAGW,wBAAwBQ,IACxGgB,EAASpC,EAAKC,GAAGgC,iBAAmBjC,EAAKC,GAAG4B,UAAY,EACxD7B,EAAKC,GAAGsB,UAAYa,EAASpC,EAAKC,GAAGgC,iBAAmBE,EAASnC,EAAKC,GAAG4B,UACpEO,EAAS,IACdpC,EAAKC,GAAGsB,UAAYa,EAASD,EAC7D,MAPmCnC,EAAKC,GAAGsB,UAAY,CASvD,EACYc,EAAStI,OAAQ,SAAUiG,EAAKQ,UAChC9B,SAAS4D,KAAKC,YAAYvC,EAAKC,IAE/BuC,EAAK,0BAA2B,cAAc,SAASxH,GACnD,IAAIyH,EAAMzC,EAAKC,GAAGtB,cAAc,qCAC5B8D,GAAKtI,YAAW,WAAYsI,EAAItC,UAAYsC,EAAItC,UAAUb,QAAQ,WAAY,GAAI,GAAI,GAC1G,GAAeU,EAAKC,IAERuC,EAAK,0BAA2B,aAAa,SAASxH,GAClD,IAAIyH,EAAMzC,EAAKC,GAAGtB,cAAc,qCAC5B8D,IAAKA,EAAItC,UAAYsC,EAAItC,UAAUb,QAAQ,WAAY,KAC3DvG,KAAKoH,WAAa,WAClC,GAAeH,EAAKC,IAERuC,EAAK,0BAA2B,aAAa,SAASxH,GAClD,GAAI0H,EAAS3J,KAAM,2BAA4B,CAC3C,IAAI4J,EAAI5J,KAAKsH,aAAa,YAC1BL,EAAK4C,MAAQD,EACb/D,EAAEe,SAAS3E,EAAG2H,EAAG5J,MACjBiH,EAAKC,GAAGY,MAAMa,QAAU,OACxB1B,EAAKC,GAAG0B,UAAUkB,IAAI,OAE1C,CACA,GAAe7C,EAAKC,IAERD,EAAK8C,YAAc,WACf,IAAM,IAAIC,EAAUrE,SAASC,cAAc,kCAAgE,CAA1B,MAAM3D,GAAQ+H,EAAU,CAAE,CACtGA,EAQM/C,IAAStB,SAASsE,eAAe7I,YAAW,WAAY6F,EAAKiD,OAAQ,GAAI,KAPhFjD,EAAKO,SAAWP,EAAK4C,MACrB5C,EAAKC,GAAGY,MAAMa,QAAU,OACxB1B,EAAKC,GAAG0B,UAAUkB,IAAI,QACtB1I,YAAW,WACT6F,EAAKC,GAAGY,MAAMa,QAAU,OACxB1B,EAAKC,GAAG0B,UAAUkB,IAAI,OAC5C,GAAuB,KAEvB,EACYR,EAASrC,EAAM,OAAQA,EAAK8C,aAE5B,IAAII,EAAU,SAAS9F,EAAM+F,GAKzB,GAJKA,IACGA,EAAMnD,EAAK4C,OAEnB5C,EAAKf,MAAMkE,GAAO/F,EACdA,EAAKZ,QAAU2G,EAAI3G,QAAUoC,EAAEE,SAAU,CAEzC,IADA,IAAIsE,EAAI,GACCrF,EAAE,EAAEA,EAAEX,EAAKZ,OAAOuB,IAAKqF,GAAKxE,EAAEO,WAAW/B,EAAKW,GAAIoF,GAC3DnD,EAAKC,GAAGoD,UAAYD,EACpBpD,EAAKQ,SAAS,EAClC,MAEoBR,EAAKC,GAAGY,MAAMa,QAAU,OACxB1B,EAAKC,GAAG0B,UAAUkB,IAAI,OAE1C,EAEY7C,EAAKsD,eAAiB,SAAStI,GAC3B,IAGQ0F,EAHJ5C,EAAM/D,OAAOwJ,MAAQvI,EAAEwI,QAAUxI,EAAEyI,MAEvC,IAAY,IAAP3F,GAAoB,IAAPA,IAAckC,EAAKC,GAAGoD,UAgBpC,OAfUZ,EAAMzC,EAAKC,GAAGtB,cAAc,uCAMlC+B,EAAe,IAAP5C,EAAa2E,EAAIiB,YAAcjB,EAAIkB,kBAEvClB,EAAItC,UAAYsC,EAAItC,UAAUb,QAAQ,WAAY,IAClDoB,EAAKP,WAAa,YAClBH,EAAK4C,MAAQlC,EAAKL,aAAa,cAE5BoC,EAAItC,UAAYsC,EAAItC,UAAUb,QAAQ,WAAY,IAAKU,EAAK4C,MAAQ5C,EAAKO,SAAUG,EAAO,KAVjGA,EAAe,IAAP5C,EAAakC,EAAKC,GAAGtB,cAAc,4BAA8BqB,EAAKC,GAAG2D,WAAW5D,EAAKC,GAAG2D,WAAWpH,OAAS,IACnH2D,WAAa,YAClBH,EAAK4C,MAAQlC,EAAKL,aAAa,aAUnCL,EAAKQ,SAAS,EAAGE,IACV,EAGN,GAAW,IAAP5C,EACPkC,EAAK4C,MAAQ5C,EAAKO,SAClBP,EAAKC,GAAGY,MAAMa,QAAU,OACxB1B,EAAKC,GAAG0B,UAAUkB,IAAI,aAGnB,GAAW,IAAP/E,GAAoB,GAAPA,EAAU,CAI5B,IAAI2E,EAH0B,SAA1BzC,EAAKC,GAAGY,MAAMa,SACd1G,EAAE6I,kBAEFpB,EAAMzC,EAAKC,GAAGtB,cAAc,uCACI,QAAzBqB,EAAKC,GAAGY,MAAMa,UACvB9C,EAAEe,SAAS3E,EAAGyH,EAAIpC,aAAa,YAAaoC,GAC5CtI,YAAW,WACT6F,EAAKC,GAAGY,MAAMa,QAAU,OACxB1B,EAAKC,GAAG0B,UAAUkB,IAAI,OAC9C,GAAuB,IACvB,CACA,EACYR,EAASrC,EAAM,UAAWA,EAAKsD,gBAE/BtD,EAAK8D,aAAe,SAAS9I,GACzB,IAAI8C,EAAM/D,OAAOwJ,MAAQvI,EAAEwI,QAAUxI,EAAEyI,MACvC,IAAK3F,IAAQA,EAAM,IAAMA,EAAM,KAAc,IAAPA,GAAoB,IAAPA,EAAW,CAC1D,IAAIqF,EAAMnD,EAAK4C,MACf,GAAIO,EAAI3G,QAAUoC,EAAEE,UAChB,GAAIqE,GAAOnD,EAAKO,SAAU,CAGtB,GAFAP,EAAKO,SAAW4C,EAChB1H,aAAauE,EAAKvF,OACdmE,EAAEK,MAAO,CACT,GAAIkE,KAAOnD,EAAKf,MAAmC,YAA1BiE,EAAQlD,EAAKf,MAAMkE,IAE5C,IAAK,IAAIpF,EAAE,EAAGA,EAAEoF,EAAI3G,OAAOoC,EAAEE,SAAUf,IAAK,CACxC,IAAIgG,EAAOZ,EAAIa,MAAM,EAAGb,EAAI3G,OAAOuB,GACnC,GAAIgG,KAAQ/D,EAAKf,QAAUe,EAAKf,MAAM8E,GAAMvH,OAAuB,YAAb0G,EAAQ,GAClG,CACA,CAC4BlD,EAAKvF,MAAQN,YAAW,WAAYyE,EAAEvB,OAAO8F,EAAKD,EAAQ,GAAItE,EAAEjE,MAC5F,OAEwBqF,EAAKO,SAAW4C,EAChBnD,EAAKC,GAAGY,MAAMa,QAAU,OACxB1B,EAAKC,GAAG0B,UAAUkB,IAAI,OAE9C,CACA,EACYR,EAASrC,EAAM,QAASA,EAAK8D,cAE7B9D,EAAKiE,aAAe,SAASjJ,GACzBgF,EAAKO,SAAW,KAChBP,EAAK8D,aAAa9I,EAClC,EACiB4D,EAAEE,UAAUuD,EAASrC,EAAM,QAASA,EAAKiE,aAC1D,CAGQlL,KAAKmL,QAAU,WACX,IAAK,IAAInG,EAAE,EAAGA,EAAE+B,EAAMtD,OAAQuB,IAAK,CAC/B,IAAIiC,EAAOF,EAAM/B,GACjBoG,EAAYpK,OAAQ,SAAUiG,EAAKQ,UACnC2D,EAAYnE,EAAM,OAAQA,EAAK8C,aAC/BqB,EAAYnE,EAAM,QAASA,EAAKiE,cAChCE,EAAYnE,EAAM,UAAWA,EAAKsD,gBAClCa,EAAYnE,EAAM,QAASA,EAAK8D,cAC5B9D,EAAKI,iBACLJ,EAAKM,aAAa,eAAgBN,EAAKI,kBAEvCJ,EAAKoE,gBAAgB,gBACzB1F,SAAS4D,KAAK+B,YAAYrE,EAAKC,IAC/BD,EAAO,IACvB,CACA,CA/NqC,CAG7B,SAAS0C,EAAS4B,EAAInE,GAAY,OAAOmE,EAAG3C,UAAY2C,EAAG3C,UAAU4C,SAASpE,GAAa,IAAIX,OAAO,MAAOW,EAAU,OAAOqE,KAAKF,EAAGnE,UAAW,CAEjJ,SAASkC,EAASiC,EAAIG,EAAMC,GACpBJ,EAAGK,YAAaL,EAAGK,YAAY,KAAKF,EAAMC,GAAeJ,EAAGM,iBAAiBH,EAAMC,EACnG,CACQ,SAASP,EAAYG,EAAIG,EAAMC,GAEvBJ,EAAGO,YAAaP,EAAGO,YAAY,KAAKJ,EAAMC,GAAeJ,EAAGQ,oBAAoBL,EAAMC,EACtG,CACQ,SAASlC,EAAKuC,EAASxB,EAAOyB,EAAIjI,GAC9BsF,EAAStF,GAAW2B,SAAU6E,GAAO,SAASvI,GAE1C,IADA,IAAIiK,EAAOX,EAAKtJ,EAAEkK,QAAUlK,EAAEmK,WACvBb,KAAQW,EAAQvC,EAAS4B,EAAIS,KAAWT,EAAKA,EAAGc,cACnDH,GAAOD,EAAGtM,KAAK4L,EAAItJ,EACvC,GACA,CA8MA,EAO8CqK,EAAOC,QAC7CD,EAAAC,QAAiB9G,EAEjBzE,OAAOyE,aAAeA,C,6DCpP9B,SAAS+G,EAAYC,EAAKC,QACX,IAARA,IAAiBA,EAAM,IAC5B,IAAIC,EAAWD,EAAIC,SAEnB,GAAKF,GAA2B,oBAAb9G,SAAnB,CAEA,IAAIiH,EAAOjH,SAASiH,MAAQjH,SAASkH,qBAAqB,QAAQ,GAC9D/E,EAAQnC,SAASwB,cAAc,SACnCW,EAAM4D,KAAO,WAEI,QAAbiB,GACEC,EAAKE,WACPF,EAAKG,aAAajF,EAAO8E,EAAKE,YAKhCF,EAAKpD,YAAY1B,GAGfA,EAAMkF,WACRlF,EAAMkF,WAAWC,QAAUR,EAE3B3E,EAAM0B,YAAY7D,SAASuH,eAAeT,GAnBU,CAqBxD,C,srBCpBA,IAAAU,EAAA,SAAApK,GAOI,SAAAoK,IAAA,IAAAnK,EACID,EAAApD,KAAAK,OAEHA,K,OADGgD,EAAKC,KAAO,M,EAqGpB,OA9GsCrD,EAAUuN,EAAApK,GAY5CoK,EAAA1N,UAAA2N,qBAAA,WACI,OAA2B,IAAvBpN,KAAKqE,OAAOZ,OAAqB,GACxBzD,KAAKqN,IAAIC,WAAW,CAACtN,KAAKuN,aAAcvN,KAAKwN,gBAC9CC,UAAUC,KAAI,SAAUC,EAAKC,GACrC,MAAO,CACHA,IAAGA,EACHC,KAAMF,EAAI5I,IACV8E,MAAO8D,EAAIG,OAAOrK,OAASkK,EAAIG,OAAO,GAAG/I,IAAM,GAC/CgJ,QAASJ,EAAIG,OAAOrK,QAAUkK,EAAIG,OAAO,GAAGjE,MAAMpG,OAASkK,EAAIG,OAAO,GAAGjE,MAAM,GAAK,G,GAEzF7J,K,EAGPmN,EAAA1N,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrB/D,KAAKgO,MAAQjK,EAAQQ,OAAO,QAC5BvE,KAAKiO,QAAUjO,KAAKgO,MAAMzJ,OAAO,SAC5BC,KAAK,MAAOxE,KAAKkO,KAAO,UAE7BlO,KAAKmO,OAASnO,KAAKgO,MAAMzJ,OAAO,SAC3BC,KAAK,KAAMxE,KAAKkO,KAAO,UACvB1J,KAAK,OAAQxE,KAAKkO,KAAO,eACzB1J,KAAK,OAAQ,QACbA,KAAK,cAAexE,KAAKoO,c,EAIlCjB,EAAA1N,UAAA0E,OAAA,SAAOL,EAASC,GAMZ,GALAhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GAEtB/D,KAAKiO,QAAQJ,KAAK7N,KAAKoD,SACvBpD,KAAKmO,OAAOrG,MAAM,QAAS9H,KAAKqO,sBAAwBrO,KAAKsO,eAAiB,KAAO,MAEjFtO,KAAKuO,oBAAsBvO,KAAKwO,eAAgB,CAChDxO,KAAKuO,kBAAoBvO,KAAKwO,eAE1BxO,KAAKyO,eACLzO,KAAKyO,cAActD,UAEvB,IAAMuD,EAAU1O,KAChBA,KAAKyO,cAAgB,IAAIE,EAAa,CAClC7I,SAAU,IAAM9F,KAAKkO,KAAO,SAC5BnI,SAAU/F,KAAKwO,eACf5M,MAAO,IACPoE,WAAY,EACZC,UAAW,EACX3B,OAAQ,SAACuC,EAAMsD,GACX,IAAMyE,EAAQF,EAAQrB,IAAIwB,aAAaH,EAAQnB,cAC3CqB,IACA/H,EAAOA,EAAKiI,cASZ3E,EARoBuE,EAAQtB,uBAAuB2B,QAAO,SAAUpB,GAChE,OAAOA,EAAII,QAAQa,EAAMhB,KAAKkB,cAAcE,QAAQnI,IAAS,CACjE,IAAG6G,KAAI,SAAUC,GACb,MAAO,CACHE,KAAMF,EAAII,QAAQa,EAAMhB,KACxBqB,OAAQtB,EAAIC,IAEpB,K,EAIRxH,WAAY,SAACC,EAAMC,GACfA,EAASA,EAAOC,QAAQ,yBAA0B,QAClD,IAAMC,EAAK,IAAIC,OAAO,IAAMH,EAAOI,MAAM,KAAKC,KAAK,KAAO,IAAK,MAC/D,MAAO,kDAAoDN,EAAKwH,KAAO,mBAAqBxH,EAAK4I,OAAS,KAAO5I,EAAKwH,KAAKtH,QAAQC,EAAI,aAAe,Q,EAE1JI,SAAU,SAAC3E,EAAG4E,EAAMR,GAChB,IAAM4I,GAAU5I,EAAKiB,aAAa,gBAC5BqG,EAAMe,EAAQtB,uBAAuB6B,GAC3CP,EAAQQ,MAAMR,EAAQS,SAASxB,EAAII,SAAUW,EAAQlB,eAAe,E,GAG/E,C,EAGLL,EAAA1N,UAAA2P,KAAA,SAAKtL,EAASC,GACN/D,KAAKyO,eACLzO,KAAKyO,cAActD,UAEvBnL,KAAKgO,MAAMnF,SACX9F,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAGxBoJ,EAAA1N,UAAAyP,MAAA,SAAMvB,EAAK0B,EAAQC,G,EAetBnC,CAAD,CA9GA,CAAsC7H,cA+GtC6H,EAAiB1N,UAAU8F,QAAU,0BAErC4H,EAAiB1N,UAAU+F,QAAQ,QAAS,UAAW,SAAU,8BACjE2H,EAAiB1N,UAAU+F,QAAQ,eAAgB,KAAM,SAAU,mBAAoB,KAAM,CAAE+J,UAAU,IACzGpC,EAAiB1N,UAAU+F,QAAQ,cAAe,YAAa,SAAU,oCACzE2H,EAAiB1N,UAAU+F,QAAQ,cAAe,KAAM,MAAO,kCAAkC,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAAED,UAAU,IACrJpC,EAAiB1N,UAAU+F,QAAQ,aAAc,KAAM,MAAO,mBAAmB,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAAED,UAAU,IACrIpC,EAAiB1N,UAAU+F,QAAQ,eAAgB,EAAG,SAAU,qCC3HhE,IAAIrD,EAAK,IAAIrB,KACTuB,EAAK,IAAIvB,KAEE,SAAS2O,EAAYC,EAAQC,EAASC,EAAOhB,GAE1D,SAASrO,EAASsP,GAChB,OAAOH,EAAOG,EAA4B,IAArBrM,UAAUC,OAAe,IAAI3C,KAAO,IAAIA,MAAM+O,IAAQA,CAC/E,CA6DE,OA3DAtP,EAASuP,MAAQ,SAASD,GACxB,OAAOH,EAAOG,EAAO,IAAI/O,MAAM+O,IAAQA,CAC3C,EAEEtP,EAASwP,KAAO,SAASF,GACvB,OAAOH,EAAOG,EAAO,IAAI/O,KAAK+O,EAAO,IAAKF,EAAQE,EAAM,GAAIH,EAAOG,GAAOA,CAC9E,EAEEtP,EAAS0H,MAAQ,SAAS4H,GACxB,IAAIG,EAAKzP,EAASsP,GACdI,EAAK1P,EAASwP,KAAKF,GACvB,OAAOA,EAAOG,EAAKC,EAAKJ,EAAOG,EAAKC,CACxC,EAEE1P,EAAS8C,OAAS,SAASwM,EAAMK,GAC/B,OAAOP,EAAQE,EAAO,IAAI/O,MAAM+O,GAAe,MAARK,EAAe,EAAIlI,KAAK8H,MAAMI,IAAQL,CACjF,EAEEtP,EAAS4P,MAAQ,SAASC,EAAOvN,EAAMqN,GACrC,IAAgBG,EAAZF,EAAQ,GAGZ,GAFAC,EAAQ7P,EAASwP,KAAKK,GACtBF,EAAe,MAARA,EAAe,EAAIlI,KAAK8H,MAAMI,KAC/BE,EAAQvN,GAAWqN,EAAO,GAAI,OAAOC,EAC3C,GAAGA,EAAMG,KAAKD,EAAW,IAAIvP,MAAMsP,IAAST,EAAQS,EAAOF,GAAOR,EAAOU,SAClEC,EAAWD,GAASA,EAAQvN,GACnC,OAAOsN,CACX,EAEE5P,EAASwO,OAAS,SAAStD,GACzB,OAAOgE,GAAY,SAASI,GAC1B,GAAIA,GAAQA,EAAM,KAAOH,EAAOG,IAAQpE,EAAKoE,IAAOA,EAAKU,QAAQV,EAAO,EAC9E,IAAO,SAASA,EAAMK,GAChB,GAAIL,GAAQA,EACV,GAAIK,EAAO,EAAG,OAASA,GAAQ,GAC7B,KAAOP,EAAQE,GAAO,IAAKpE,EAAKoE,UAC3B,OAASK,GAAQ,GACtB,KAAOP,EAAQE,EAAM,IAAMpE,EAAKoE,KAG1C,GACA,EAEMD,IACFrP,EAASqP,MAAQ,SAASQ,EAAOI,GAG/B,OAFArO,EAAGoO,SAASH,GAAQ/N,EAAGkO,SAASC,GAChCd,EAAOvN,GAAKuN,EAAOrN,GACZ2F,KAAK8H,MAAMF,EAAMzN,EAAIE,GAClC,EAEI9B,EAASkQ,MAAQ,SAASP,GAExB,OADAA,EAAOlI,KAAK8H,MAAMI,GACVQ,SAASR,IAAWA,EAAO,EAC3BA,EAAO,EACT3P,EAASwO,OAAOH,EACZ,SAAS1P,GAAK,OAAO0P,EAAM1P,GAAKgR,GAAS,CAAE,EAC3C,SAAShR,GAAK,OAAOqB,EAASqP,MAAM,EAAG1Q,GAAKgR,GAAS,CAAE,GAH7C3P,EADoB,IAK9C,GAGSA,CACT,CCpEO,ICaIoQ,EAXDpQ,GAAS,SAASsP,GAC1BA,EAAKe,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAASf,EAAMK,GAChBL,EAAKgB,QAAQhB,EAAKiB,UAAYZ,EAChC,IAAG,SAASE,EAAOI,GACjB,OAAQA,EAAMJ,EDPY,KCOHI,EAAIO,oBAAsBX,EAAMW,sBDLhC,KCMzB,IAAG,SAASlB,GACV,OAAOA,EAAKiB,UAAY,CAC1B,IAGsBX,MCXtB,SAASa,EAAQhM,GACf,OAAOzE,GAAS,SAASsP,GACvBA,EAAKgB,QAAQhB,EAAKiB,WAAajB,EAAKoB,SAAW,EAAIjM,GAAK,GACxD6K,EAAKe,SAAS,EAAG,EAAG,EAAG,EAC3B,IAAK,SAASf,EAAMK,GAChBL,EAAKgB,QAAQhB,EAAKiB,UAAmB,EAAPZ,EAClC,IAAK,SAASE,EAAOI,GACjB,OAAQA,EAAMJ,EFTU,KESDI,EAAIO,oBAAsBX,EAAMW,sBFNjC,MEO1B,GACA,CAEO,IAAIG,EAASF,EAAQ,GACjBG,EAASH,EAAQ,GACjBI,EAAUJ,EAAQ,GAClBK,EAAYL,EAAQ,GACpBM,EAAWN,EAAQ,GACnBO,EAASP,EAAQ,GACjBQ,EAAWR,EAAQ,GAETE,EAAOf,MACPgB,EAAOhB,MACNiB,EAAQjB,MACNkB,EAAUlB,MACXmB,EAASnB,MACXoB,EAAOpB,MACLqB,EAASrB,MC1BhC,IAYWsB,EAZClR,GAAS,SAASsP,GAC5BA,EAAKgB,QAAQ,GACbhB,EAAKe,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAASf,EAAMK,GAChBL,EAAK6B,SAAS7B,EAAK8B,WAAazB,EAClC,IAAG,SAASE,EAAOI,GACjB,OAAOA,EAAImB,WAAavB,EAAMuB,WAAyD,IAA3CnB,EAAIoB,cAAgBxB,EAAMwB,cACxE,IAAG,SAAS/B,GACV,OAAOA,EAAK8B,UACd,IAG0BxB,MCZtB0B,EAAOtR,GAAS,SAASsP,GAC3BA,EAAK6B,SAAS,EAAG,GACjB7B,EAAKe,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAASf,EAAMK,GAChBL,EAAKiC,YAAYjC,EAAK+B,cAAgB1B,EACxC,IAAG,SAASE,EAAOI,GACjB,OAAOA,EAAIoB,cAAgBxB,EAAMwB,aACnC,IAAG,SAAS/B,GACV,OAAOA,EAAK+B,aACd,IAGAC,EAAKpB,MAAQ,SAAS3J,GACpB,OAAQ4J,SAAS5J,EAAIkB,KAAK8H,MAAMhJ,KAASA,EAAI,EAAYvG,GAAS,SAASsP,GACzEA,EAAKiC,YAAY9J,KAAK8H,MAAMD,EAAK+B,cAAgB9K,GAAKA,GACtD+I,EAAK6B,SAAS,EAAG,GACjB7B,EAAKe,SAAS,EAAG,EAAG,EAAG,EAC3B,IAAK,SAASf,EAAMK,GAChBL,EAAKiC,YAAYjC,EAAK+B,cAAgB1B,EAAOpJ,EACjD,IANoD,IAOpD,EAEA,IAAAiL,EAAeF,EACIA,EAAK1B,M,mUCfxB,IAAA6B,EAAA,SAAAjP,GAQI,SAAAiP,IAAA,IAAAhP,EACID,EAAApD,KAAAK,OAGHA,K,OADGiS,UAAQC,qBAAqBvS,KAAKqD,G,EAqM1C,OAhNqCpD,EAAUoS,EAAAjP,GAc3CiP,EAAAvS,UAAA0S,aAAA,WACI,GAA6B,IAAzBnS,KAAKoS,SAAS3O,QAAuC,IAAvBzD,KAAKqE,OAAOZ,OAC1C,MAAO,GAEX,IAAM4O,EAAaC,YAAYtS,KAAKuS,eAC9BC,EAAiBxS,KAAKyS,kBAAoBC,SAAS,OAASA,SAAS,KAW3E,OAVI1S,KAAK2S,kBAAoB3S,KAAK4S,cAC9B5S,KAAK6S,gBAAkB7S,KAAK8S,YAC5B9S,KAAK+S,kBAAoB/S,KAAKgT,cAC9BhT,KAAKiT,uBAAyBjT,KAAKyS,oBACnCzS,KAAK2S,gBAAkB3S,KAAK4S,aAC5B5S,KAAK6S,cAAgB7S,KAAK8S,WAC1B9S,KAAK+S,gBAAkB/S,KAAKgT,aAC5BhT,KAAKiT,qBAAuBjT,KAAKyS,kBACjCzS,KAAKkT,MAAQlT,KAAKqN,IAAI8F,cAAc,CAACnT,KAAK4S,cAAe5S,KAAK8S,WAAY9S,KAAKgT,aAAchT,KAAKyS,oBAE/FzS,KAAKkT,MAAMzF,UAAUC,KAAI,SAAUC,GAItC,OAHAA,EAAIyF,QAAUf,EAAW1E,EAAI5I,KAC7B4I,EAAI0F,gBAAkBb,EAAe7E,EAAI9D,MAAMyJ,WAC/C3F,EAAI4F,SAAW5F,EAAI9D,MACZ8D,CACX,G,EAGJqE,EAASvS,UAAA+T,UAAT,SAAU7F,GACN,OAAQA,EAAI8F,MAAQ9F,EAAI+F,MAAQ/F,EAAI+F,I,EAGxC1B,EAAAvS,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrB4P,SAAS7P,EAAQ8P,YACZ9L,MAAM,aAAc,UACpBA,MAAM,aAAc,UACpBA,MAAM,SAAU,QAChBA,MAAM,QAAS,QAEpB9H,KAAK6T,WAAWC,cAAc/P,E,EAGlCiO,EAAAvS,UAAA0E,OAAA,SAAOL,EAASC,GACZhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GACtB/D,KAAK+T,SAAW/T,KAAK+T,SAASC,OAAOhU,KAAKiU,aAE1C,IAAMxL,EAAQzI,KAAKyI,QACbyL,EAAYzL,EAAQ,GAAM,EAC1B0L,EAAoB,EAAXD,EAET7P,EAAOrE,KAAKmS,eACZiC,EAAaC,MAAMhQ,GAAM,SAAUnF,GAAU,OAAOA,EAAEkU,OAAQ,IAC9DkB,EAAaC,SAASlQ,GAAM,SAAUnF,GACxC,OAAOA,EAAEkU,QAAQxB,aACrB,IACM5N,EAAUhE,KACVwU,EAAMzQ,EAAQK,UAAU,OAAOC,KAAKoQ,SAASH,EAAW,IAAKA,EAAW,GAAK,IAC7EI,EAAYF,EAAI3Q,QAAQU,OAAO,OAChCoQ,MAAK,SAAUzV,GACZ,IACM0V,EADajB,SAAS3T,MACPuE,OAAO,KAC5BqQ,EAAErQ,OAAO,QACJuD,MAAM,cAAe,UAE1B8M,EAAErQ,OAAO,KACJC,KAAK,QAAS,QAGnB,IAAMqQ,EAAgBC,EAAa,IAAIhU,KAAK5B,EAAG,EAAG,GAAI,IAAI4B,KAAK5B,EAAI,EAAG,EAAG,IACnE6V,EAAUH,EAAErQ,OAAO,KAAKC,KAAK,QAAS,UAC5CqQ,EAAcG,SAAQ,SAAUC,GAC5BF,EAAQxQ,OAAO,QACVC,KAAK,QAAS,SACdA,KAAK,IAAK0Q,EAAcD,IACxBnN,MAAM,SAAU9D,EAAQmR,oBACxBrN,MAAM,eAAgB9D,EAAQoR,mBAEvC,GACJ,IACCC,MAAMb,GACNhQ,KAAK,QAASiE,GACdjE,KAAK,SAAU2P,GAEpBO,EAAUY,OAAO,KACZ9Q,KAAK,YAAa,cAAiBiE,EAAmB,GAAXyL,GAAiB,EAAK,KAAOC,EAAoB,EAAXD,EAAe,GAAK,KAE1GQ,EAAUY,OAAO,QACZ9Q,KAAK,YAAa,gBAA6B,IAAX0P,EAAiB,gBACrDrG,MAAK,SAAA3O,GAAK,OAAAA,CAAC,IAEhBsV,EAAIpF,OAAOvG,SAEX,IAAI0M,EAAyBhB,SAAiBlQ,GAAM,SAAUnF,GAC1D,OAAOA,EAAE2K,MAAMyJ,SACnB,IACA,GAAItT,KAAKyS,kBAAmB,CACxB,IAAM+C,EAAMxN,KAAKwN,IAAIxN,KAAKyN,KAAKF,EAAW,IAAKvN,KAAKyN,KAAKF,EAAW,KACpEA,EAAa,EAAEC,EAAKA,EACvB,CACD,IAAME,EAAUhB,EAAUY,OAAO,SAASlR,UAAU,QAAQC,MAAK,SAAUnF,GAAK,OAAOyW,EAAW,IAAI7U,KAAK5B,EAAG,EAAG,GAAI,IAAI4B,KAAK5B,EAAI,EAAG,EAAG,GAAI,IACtI0W,EAAgBF,EAAQ7R,QAAQU,OAAO,QACxCC,KAAK,QAAS,OACd7E,KAAKK,KAAK6T,WAAWhQ,MAAM3C,KAAKlB,KAAK6T,aACrC5P,GAAG,SAAS,SAAU/E,GACnB,IAAM2W,EAAQzB,EAAW0B,IAAI5W,GACzB2W,GAASA,EAAMhM,OAASgM,EAAMhM,OAASgM,EAAMhM,MAAMpG,QACnDO,EAAQkL,MAAMlL,EAAQmL,SAAS0G,EAAMhM,MAAM,IAAK7F,EAAQ4O,aAAc5O,EAAQ6P,WAAWvE,SAAStP,MAE1G,IACCiE,GAAG,YAAY,SAAU/E,GACtB,IAAM2W,EAAQzB,EAAW0B,IAAI5W,GACzB2W,GAASA,EAAMhM,OAASgM,EAAMhM,OAASgM,EAAMhM,MAAMpG,QACnDO,EAAQ+R,SAAS/R,EAAQmL,SAAS0G,EAAMhM,MAAM,IAAK7F,EAAQ4O,aAAc5O,EAAQ6P,WAAWvE,SAAStP,MAE7G,IAAG2U,MAAK,SAAUzV,GACSyU,SAAS3T,MACjBuE,OAAO,QAC1B,IACC8Q,MAAMK,GACNlR,KAAK,KAAK,SAAUtF,GAAK,OAAO8W,EAAWpG,MAAMmC,EAAW7S,GAAIA,GAAKgV,CAAS,IAC9E1P,KAAK,KAAK,SAAUtF,GAAK,OAAOA,EAAE+R,SAAWiD,CAAS,IACtD1P,KAAK,QAAS0P,GACd1P,KAAK,SAAU0P,GACfpM,MAAM,SAAU9H,KAAKiW,kBACrBnO,MAAM,eAAgB9H,KAAKkW,kBAC3BpO,MAAM,OAAQ,MAEnB8N,EAAcN,OAAO,SAChBzH,MAAK,SAAA3O,GAAK,OAAAA,CAAC,IAEhB0W,EAAc7G,QAAO,SAAU7P,GAAK,OAAOkV,EAAW+B,IAAIjX,EAAG,IACxD4I,MAAM,QAAQ,SAAU5I,GACrB,IAAMyO,EAAMyG,EAAW0B,IAAI5W,GAC3B,OAAKyO,GAAQA,EAAI9D,OAAU8D,EAAI9D,MAAMyJ,UAG9BtP,EAAQ+P,SAASpG,EAAI9D,MAAMyJ,UAAWiC,EAAW,GAAIA,EAAW,IAF5D,IAGf,IACCD,OAAO,SACPzH,MAAK,SAAU3O,GACZ,IAAM2W,EAAQzB,EAAW0B,IAAI5W,GAC7B,OAAO2W,EAAM9Q,IAAM,KAAO8Q,EAAMxC,eACpC,IAEJqC,EAAQtG,OAAOvG,SAEf,IAAMuN,EAAY5B,EAAIc,OAAO,WAAWlR,UAAU,UAAUC,MAAK,SAAUnF,GAAK,OAAO4V,EAAa,IAAIhU,KAAK5B,EAAG,EAAG,GAAI,IAAI4B,KAAK5B,EAAI,EAAG,EAAG,GAAI,IAU9I,SAASgW,EAAc/S,GACnB,IAAME,EAAK,IAAIvB,KAAKqB,EAAGyP,cAAezP,EAAGwP,WAAa,EAAG,GACnD3B,EAAK7N,EAAG8O,SACRoF,EAAKL,EAAWpG,MAAMmC,EAAW5P,GAAKA,GACtC8N,EAAK5N,EAAG4O,SACRqF,EAAKN,EAAWpG,MAAMmC,EAAW1P,GAAKA,GAC5C,MAAO,KAAOgU,EAAK,GAAKnC,EAAW,IAAMlE,EAAKkE,EAC1C,IAAMmC,EAAKnC,EAAW,IAAM,EAAIA,EAChC,IAAMoC,EAAKpC,EAAW,KAAOjE,EAAK,GAAKiE,EACvC,KAAOoC,EAAK,GAAKpC,EAHd,OAIImC,EAAK,GAAKnC,EAAW,G,CAnBpCkC,EAAUvS,QAAQU,OAAO,QACpBC,KAAK,QAAS,SACd6Q,MAAMe,GACN5R,KAAK,IAAK0Q,GACVpN,MAAM,SAAU9H,KAAKmV,oBACrBrN,MAAM,eAAgB9H,KAAKoV,oBAEhCgB,EAAUhH,OAAOvG,Q,EAgBrBmJ,EAAAvS,UAAA2P,KAAA,SAAKtL,EAASC,GACVhB,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAIxBiO,EAAAvS,UAAAyP,MAAA,SAAMvB,EAAK0B,EAAQC,G,EAGnB0C,EAAAvS,UAAAsW,SAAA,SAASpI,EAAK0B,EAAQC,G,EAmBzB0C,CAAD,CAhNA,CAAqC1M,cAiNrC0M,EAAgBvS,UAAU8F,QAAU,yBACpCyM,EAAgBvS,UAAU8W,MAAMtE,UAAQC,sBACxCF,EAAgBvS,UAAUsU,SAAWyC,UAAQC,QAAQ,WAYrDzE,EAAgBvS,UAAU+F,QAAQ,YAAa,SAAU,MAAO,gCAAiCwM,EAAgBvS,UAAUsU,SAASC,SAAU,CAAE0C,KAAM,CAAC,QAAS,YAChK1E,EAAgBvS,UAAU+F,QAAQ,iBAAkB,OAAQ,aAAc,uBAC1EwM,EAAgBvS,UAAU+F,QAAQ,mBAAoB,OAAQ,aAAc,yBAC5EwM,EAAgBvS,UAAU+F,QAAQ,iBAAkB,EAAG,SAAU,6BACjEwM,EAAgBvS,UAAU+F,QAAQ,mBAAoB,EAAG,SAAU,+BACnEwM,EAAgBvS,UAAU+F,QAAQ,aAAc,KAAM,MAAO,eAAe,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAAED,UAAU,IAChIyC,EAAgBvS,UAAU+F,QAAQ,cAAe,WAAY,SAAU,gBACvEwM,EAAgBvS,UAAU+F,QAAQ,WAAY,KAAM,MAAO,mBAAoB,CAAC,KAAM,OAAQ,SAAU,MAAO,MAAO,OAAQ,CAAE+J,UAAU,IAC1IyC,EAAgBvS,UAAU+F,QAAQ,aAAc,KAAM,MAAO,qBAAqB,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAAED,UAAU,EAAMoH,QAAS,SAACC,GAAM,OAACA,EAAE9D,UAAU,IACzKd,EAAgBvS,UAAU+F,QAAQ,kBAAmB,KAAM,MAAO,qBAAqB,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAAED,UAAU,EAAMoH,QAAS,SAACC,GAAM,OAACA,EAAE9D,UAAU,IC/O9K,SAAS+D,EAAUzM,GACf,GAAIA,QACA,OAAO,KAEX,IAAKA,EAAI0M,KACL,OAAI1M,EAAI2M,IACGC,EAAU5M,EAAI2M,KAElB3M,EAEX,IAAM6M,EAAS7M,EAAI0M,OACnB,MAAe,KAAXG,IAAkBC,MAAMD,KACpBA,EAAOxT,QAAU,GAAmB,MAAdwT,EAAO,IAA4B,MAAdA,EAAO,IAC3CE,OAAOF,GAGfA,CACX,CAEA,SAASD,EAAUrJ,GACf,IAAK,IAAM5I,KAAO4I,EACdA,EAAI5I,GAAO8R,EAAUlJ,EAAI5I,IAE7B,OAAO4I,CACX,CAEA,IAAAyJ,EAAA,WAWI,SAAAA,IAVUpX,KAASqX,UAAG,QACZrX,KAASsX,UAAG,W,CA4I1B,OA9HIF,EAAG3X,UAAA8X,IAAH,SAAIC,GACA,IAAKhU,UAAUC,OAAQ,OAAOzD,KAAKyX,KACnCzX,KAAKyX,KAAOD,EACZ,IAAME,EAAS/R,SAASwB,cAAc,KACtCuQ,EAAOC,KAAO3X,KAAKyX,KAEnBC,EAAOC,KAAOD,EAAOC,KAErB,IAAMjT,EAAS,GACf,GAAIgT,EAAOpR,OAAO7C,OAAQ,CACtB,IAAImU,EAAWF,EAAOpR,OACP,MAAXsR,EAAI,KACJA,EAAMA,EAAIC,UAAU,KAExBD,EAAMA,EAAIlR,MAAM,MACZgH,KAAI,SAAUrH,GACd,IAAMyR,EAAUzR,EAAKK,MAAM,KAC3BhC,EAAOqT,mBAAmBD,EAAQ,KAAOC,mBAAmBD,EAAQ,GACxE,GACH,CAKD,IAJA9X,KAAKqX,UAAYK,EAAOM,SACxBhY,KAAKsX,UAAYI,EAAOO,SACxBjY,KAAKkY,MAAQR,EAAOS,KACpBnY,KAAKoY,UAAYV,EAAOW,SACjBrY,KAAKoY,UAAU3U,QAAgC,MAAtBzD,KAAKoY,UAAU,IAC3CpY,KAAKoY,UAAYpY,KAAKoY,UAAUP,UAAU,GAO9C,OALA7X,KAAKsY,QAAUZ,EAAOpR,OACtBtG,KAAKuY,QAAU7T,EACf1E,KAAKwY,MAAQd,EAAOe,KACpBzY,KAAK0Y,MAAQhB,EAAOiB,KAEb3Y,I,EAKXoX,EAAQ3X,UAAAuY,SAAR,SAASR,GACL,OAAKhU,UAAUC,QACfzD,KAAKqX,UAAYG,EACVxX,MAFuBA,KAAKqX,S,EAOvCD,EAAQ3X,UAAAwY,SAAR,SAAST,GACL,OAAKhU,UAAUC,QACfzD,KAAKsX,UAAYE,EACVxX,MAFuBA,KAAKsX,S,EAOvCF,EAAI3X,UAAA0Y,KAAJ,SAAKX,GACD,OAAKhU,UAAUC,QACfzD,KAAKkY,MAAQV,EACNxX,MAFuBA,KAAKkY,K,EAOvCd,EAAM3X,UAAA6G,OAAN,SAAOkR,GACH,OAAKhU,UAAUC,QACfzD,KAAKsY,QAAUd,EACRxX,MAFuBA,KAAKsY,O,EAOvClB,EAAQ3X,UAAA4Y,SAAR,SAASb,GACL,OAAKhU,UAAUC,QACfzD,KAAKoY,UAAYZ,EACVxX,MAFuBA,KAAKoY,S,EAOvChB,EAAI3X,UAAAgZ,KAAJ,SAAKjB,GACD,OAAKhU,UAAUC,QACfzD,KAAKwY,MAAQhB,EACNxX,MAFuBA,KAAKwY,K,EAOvCpB,EAAI3X,UAAAkZ,KAAJ,SAAKnB,GACD,OAAKhU,UAAUC,QACfzD,KAAK0Y,MAAQlB,EACNxX,MAFuBA,KAAK0Y,K,EAOvCtB,EAAM3X,UAAAiF,OAAN,SAAO8S,GACH,OAAKhU,UAAUC,QACfzD,KAAKuY,QAAUf,EACRxX,MAFuBA,KAAKuY,O,EAKvCnB,EAAK3X,UAAAmZ,MAAL,SAAM7T,GACF,OAAO/E,KAAKuY,QAAQxT,E,EAGxBqS,EAAA3X,UAAAoZ,cAAA,WACI,OAAO7Y,KAAKoY,UAAUtJ,cAAcE,QAAQ,gBAAkB,GAAKhP,KAAKuY,QAAc,I,EAG1FnB,EAAA3X,UAAAqZ,iBAAA,WACI,OAAO9Y,KAAK6Y,kBAAoB7Y,KAAKuY,QAAkB,UAAKvY,KAAKuY,QAAoB,W,EAGzFnB,EAAA3X,UAAAsZ,QAAA,WACI,OAAO/Y,KAAKoY,UAAUtJ,cAAcE,QAAQ,UAAY,GAAMhP,KAAKuY,QAAoB,YAAKvY,KAAKuY,QAAY,E,EAGjHnB,EAAA3X,UAAAuZ,uBAAA,WACI,OAAOhZ,KAAKoY,UAAUtJ,cAAcE,QAAQ,2BAA6B,GAAKhP,KAAKuY,QAAc,I,EAGrGnB,EAAM3X,UAAAwZ,OAAN,SAAOC,GAEH,YAA+BC,KAD/BD,EAAYA,GAAa,IACPlB,SAAyBkB,EAAUlB,SAAWhY,KAAKqX,WAAa,WACtD8B,IAAvBD,EAAUjB,SAAyBiB,EAAUjB,SAAWjY,KAAKsX,WAAa,UACvD6B,IAAnBD,EAAUf,KAAqBe,EAAUf,KAAOnY,KAAKkY,OAAS,UACvCiB,IAAvBD,EAAUb,SAAyBa,EAAUb,SAAWrY,KAAKoY,U,EAEzEhB,CAAD,CA9IA,GAgJM,SAAUgC,EAAYC,GAGxB,IAAK,IAAMC,KAFXtZ,KAAKuZ,UAAYF,EACjBrZ,KAAKwZ,iBAAmB,GACCxZ,KAAKuZ,UAE1B,IAAK,IAAMxU,KADX/E,KAAKwZ,iBAAiBF,GAAc,GAClBtZ,KAAKuZ,UAAUD,GAC7BtZ,KAAKwZ,iBAAiBF,GAAYtZ,KAAKuZ,UAAUD,GAAYvU,IAAQA,CAGjF,CAEAqU,EAAY3Z,UAAU+L,SAAW,SAAU8N,EAAYG,GACnD,OAAOxH,UAAQyH,OAAOJ,EAAa,IAAMG,EAAWzZ,KAAKuZ,UAC7D,EAEAH,EAAY3Z,UAAUka,UAAY,SAAUC,EAAUN,GAClD,IAAMO,EAAU7Z,KAAKuZ,UAAUD,GAC3BO,IACAD,EAASN,GAAcM,EAASN,GAAY5L,KAAI,SAAUrH,GACtD,IAAIsH,EAAM,GACV,GAAIkM,EAAQC,GAAKD,EAAQC,aAAava,MAAO,CAEzCoO,EAAM,GACN,IAAK,IAAI3I,EAAI,EAAGA,EAAI6U,EAAQC,EAAErW,SAAUuB,EACpC2I,EAAI2C,KAAKjK,EAAKwT,EAAQE,EAAE/U,IAE/B,MAEG,IAAK,IAAMD,KAAO8U,EACO,UAAjBA,EAAQ9U,GACR4I,EAAI,GAAKtH,EAAKtB,GACU,WAAjB8U,EAAQ9U,KACf4I,EAAI,GAAKtH,EAAKtB,IAI1B,OAAO4I,C,GACR3N,MAEX,EAEAoZ,EAAY3Z,UAAUua,YAAc,SAAUJ,GAC1C,IAAK,IAAM7U,KAAO6U,EACd5Z,KAAK2Z,UAAUC,EAAU7U,EAEjC,EAEA,IAAMkV,EAAY,SAAUC,GACxB,IAAMC,EAAM,GACZ,IAAK,IAAMpV,KAAOmV,EACd,GAAIA,EAAIxa,eAAeqF,GAAM,CACzB,IAAMqF,EAAM8P,EAAInV,GACZqF,SACA+P,EAAI7J,KAAK8J,mBAAmBrV,GAAO,IAAMqV,mBAAmBhQ,GAEnE,CAEL,OAAO+P,EAAIxT,KAAK,IACpB,EAEI0T,EAAQ,SAAU9C,EAAK+C,EAASha,GAChC,OAAO,IAAIia,SAAQ,SAAUC,EAASC,GAClC,IAAIC,EAA6B,IAAVpa,EAEjBqa,EAAe,kBAAoB3S,KAAKC,MAAsB,OAAhBD,KAAK4S,UACzD5Z,OAAO2Z,GAAgB,SAAUf,GAC7Bc,EAAmB,EACnBG,IACAL,EAAQZ,EACZ,EACA,IAAMkB,EAASnV,SAASwB,cAAc,UACtC2T,EAAOC,IAAMxD,GAAOA,EAAIvI,QAAQ,MAAQ,EAAI,IAAM,KAAO,SAAW2L,EAAe,IAAMV,EAAUK,GACnG3U,SAAS4D,KAAKC,YAAYsR,GAC1B,IAAME,EAAWpY,aAAY,WACrB8X,GAAoB,EACpB/X,cAAcqY,IAEdN,GAdc,MAeU,IACpB/X,cAAcqY,GACdH,IACAJ,EAAOQ,MAAM,qBAAuBH,EAAOC,M,GAlBjC,KAuBtB,SAASF,WACE7Z,OAAO2Z,GACdhV,SAAS4D,KAAK+B,YAAYwP,E,CAElC,GACJ,EAEAI,EAAA,SAAAnY,GAOI,SAAAmY,IAAA,IAAAlY,EACID,EAAApD,KAAAK,OAKHA,K,OAJGgD,EAAKmY,eAAiB,GACtBnY,EAAKuW,UAAY,IAAIH,EAAY,IACjCpW,EAAKoY,SAnRW,GAoRhBpY,EAAKqY,cAAgB,G,EAwF7B,OApG2Bzb,EAAMsb,EAAAnY,GAe7BmY,EAAYzb,UAAA6b,aAAZ,SAAa9D,GACT,IAAKhU,UAAUC,OAAQ,OAAOzD,KAAKqb,cACnCrb,KAAKub,oBAAsB,EAC3Bvb,KAAKqb,cAAgB,GACrB,IAAMrX,EAAUhE,KAKhB,OAJAwX,EAAExC,SAAQ,SAAU3O,GAChBrC,EAAQuX,sBACRvX,EAAQqX,cAAchV,EAAK6H,IAAM7H,CACrC,IACOrG,I,EAGXkb,EAAAzb,UAAA4a,MAAA,SAAM9C,EAAK+C,GACP,IAAK,IAAMvV,KAAO/E,KAAKmb,eAAgB,CACnC,IAAMK,EAAcjE,EAAI7Q,MAAM3B,GACxB0W,EAASD,EAAY,GAC3B,GAAIA,EAAY/X,OAAS,EAAG,CACxB,IAAMiY,GAAS,IAAItE,GACdG,IAAIA,GAETA,EAAMkE,EAASzb,KAAKmb,eAAepW,GACnCuV,EAAQqB,GAAKD,EAAOzD,WACpBqC,EAAQsB,KAAOF,EAAOvD,OAClBqD,EAAY/X,OAAS,IACrB6W,EAAQuB,KAAOL,EAAY,IAE/B,KACH,CACJ,CACD,OAAOnB,EAAM9C,EAAK+C,EAASta,KAAKM,U,EAGpC4a,EAAAzb,UAAAqc,KAAA,SAAKC,EAAQxE,EAAK+C,GACd,OAAO,IAAIC,SAAQ,SAAUC,EAASC,GAClC,IAAIuB,EAAMzE,EACK,QAAXwE,GAAoBzB,IACpB0B,GAAO,IAAM/B,EAAUK,IAE3B,IAAM2B,EAAW,IAAIC,eACrBD,EAAIE,OAAS,SAAUla,GACfjC,KAAKoc,QAAU,KAAOpc,KAAKoc,OAAS,IACpC5B,EAAQ6B,KAAKC,MAAMtc,KAAK4Z,WAExBa,EAAOQ,MAAMjb,KAAKuc,YAE1B,EACAN,EAAIO,QAAU,WACV/B,EAAOQ,MAAMjb,KAAKuc,YACtB,EACAN,EAAIQ,KAAKV,EAAQC,GACjBC,EAAIS,iBAAiB,mBAAoB,kBAC1B,QAAXX,EACAE,EAAIU,QAEJV,EAAIS,iBAAiB,eAAgB,qCACrCT,EAAIU,KAAK1C,EAAUK,IAE3B,G,EAGJY,EAAAzb,UAAAqW,IAAA,SAAIyB,EAAK+C,GACL,OAAOta,KAAK8b,KAAK,MAAOvE,EAAK+C,E,EAGjCY,EAAAzb,UAAAmd,KAAA,SAAKrF,EAAK+C,GACN,OAAOta,KAAK8b,KAAK,OAAQvE,EAAK+C,E,EAGlCY,EAAQzb,UAAA4Z,SAAR,SAAS7B,GACL,OAAKhU,UAAUC,QACfzD,KAAKuZ,UAAY,IAAIH,EAAY5B,GAC1BxX,MAFuBA,KAAKuZ,S,EAKvC2B,EAAazb,UAAAod,cAAb,SAAcrF,GACV,OAAKhU,UAAUC,QACfzD,KAAKmb,eAAiB3D,EACfxX,MAFuBA,KAAKmb,c,EAKvCD,EAAOzb,UAAAa,QAAP,SAAQkX,GACJ,OAAKhU,UAAUC,QACfzD,KAAKob,SAAW5D,GAzWA,GA0WTxX,MAFuBA,KAAKob,Q,EAI1CF,CAAD,CApGA,CAA2B9D,GAsG3B0F,EAAA,SAAA/Z,GAII,SAAA+Z,I,OACI/Z,EAAOpD,KAAAK,W,CA4Cf,OAjD2BJ,EAAKkd,EAAA/Z,GAQ5B+Z,EAAUrd,UAAAsd,WAAV,SAAWvF,GACP,OAAKhU,UAAUC,QACfzD,KAAKgd,YAAcxF,EACZxX,MAFuBA,KAAKgd,W,EAKvCF,EAAArd,UAAAE,KAAA,SAAK2a,EAAS3Y,GACV,IAAM4V,EAAMvX,KAAKyX,MAAQzX,KAAKyX,KAAKzI,QAAQ,MAAQ,EAAI,IAAM,KAAOiL,EAAUK,GAC9E,GAAIta,KAAKgd,YAAa,CAClB,IAAMtO,EAAU1O,KAChB,OAAO,IAAIua,SAAQ,SAAUC,EAASC,GAClC,IAAMb,EAAWyC,KAAKC,MAAMW,aAAaC,QAAQ,YAAc3F,IAC/D,IAAKqC,EACD,MAAMqB,MAAM,cAEZtZ,IACAwb,QAAQC,MAAM,6DACdzb,EAASiY,IAEbY,EAAQZ,EACZ,IAAGyD,OAAM,SAAUzD,GACf,OAAOlL,EAAQoH,IAAIyB,GAAK+F,MAAK,SAAUC,GAMnC,OALAN,aAAaO,QAAQ,YAAcjG,EAAK8E,KAAKoB,UAAUF,IACnD5b,IACAwb,QAAQC,MAAM,6DACdzb,EAAS4b,IAENA,CACX,GACJ,GACH,CAEG,OADAN,aAAaS,WAAW,YAAcnG,GAC/BvX,KAAK8V,IAAIyB,GAAK+F,MAAK,SAAU1D,GAKhC,OAJIjY,IACAwb,QAAQC,MAAM,6DACdzb,EAASiY,IAENA,CACX,G,EAGXkD,CAAD,CAjDA,CAA2B5B,GAmD3B,SAASyC,EAAoB/D,GAEzB,IAAK,IAAM7U,KAAO6U,EAAU,CACxB,GAAIA,EAAS7U,GAAKgS,KAAO6C,EAAS7U,GAAKgS,eAAexX,MAClD,OAAOqa,EAEX,IAAI3C,OAAM,EAIV,GAH+B,iBAAnB2C,EAAS7U,KACjBkS,EAAS0G,EAAoB/D,EAAS7U,KAEtCkS,EACA,OAAOA,CAEd,CACD,OAAO,IACX,CAEA,SAAS2G,EAAqBhE,GAC1B,IAAK,IAAM7U,KAAO6U,EAAU,CACxB,GAAIA,EAAS7U,GAAK8Y,WAAajE,EAAS7U,GAAK8Y,qBAAqBte,MAC9D,OAAOqa,EAAS7U,GAEpB,IAAMkS,EAAS2G,EAAqBhE,EAAS7U,IAC7C,GAAIkS,EACA,OAAOA,CAEd,CACD,OAAO,IACX,CAEA,IAAA6G,GAAA,SAAA/a,GAKI,SAAA+a,IAAA,IAAA9a,EACID,EAAApD,KAAAK,OAKHA,K,OAHGgD,EAAKkV,MAAQ,OACblV,EAAK+a,QAAU,GACf/a,EAAKgb,OAAS,G,EAgGtB,OA1G2Bpe,EAAKke,EAAA/a,GAa5B+a,EAAGre,UAAA8X,IAAH,SAAIC,GACA,IAAMP,EAASlU,EAAAtD,UAAM8X,IAAI0G,MAAMje,KAAMwD,WACrC,GAAIA,UAAUC,OAAQ,CAGlB,IAAK,IAAMsB,KADX/E,KAAKkY,MAAuB,SAAflY,KAAKkY,MAAmB,OAASlY,KAAKkY,MACjClY,KAAKuY,QACnB,OAAQxT,GACJ,IAAK,aACD/E,KAAKmM,OAAOnM,KAAKuY,QAAQxT,IACzB,MACJ,IAAK,KACD/E,KAAKke,MAAMle,KAAKuY,QAAQxT,IAKpC,IAAIoZ,OAAS,EACTC,OAAU,EACTpe,KAAK+d,SAAY/d,KAAKge,SAEvBG,EAAYne,KAAKoY,UAAU1R,MAAM,YACnBjD,QAAU,IACpB2a,EAAaD,EAAU,GAAGzX,MAAM,MACjBjD,QAAU,IACrBzD,KAAKmM,OAAOiS,EAAW,IACvBpe,KAAKke,MAAME,EAAW,IAIrC,CACD,OAAOnH,C,EAGX6G,EAAMre,UAAA0M,OAAN,SAAOqL,GACH,OAAKhU,UAAUC,QACfzD,KAAK+d,QAAUvG,EACRxX,MAFuBA,KAAK+d,O,EAKvCD,EAAKre,UAAAye,MAAL,SAAM1G,GACF,OAAKhU,UAAUC,QACfzD,KAAKge,OAASxG,EACPxX,MAFuBA,KAAKge,M,EAKvCF,EAAAre,UAAA4e,aAAA,WACI,OAAOnD,EAAMzb,UAAUwZ,OAAOtZ,KAAKK,KAAM,CACrCqY,SAAU,sBAAwBrY,KAAK+d,QAAU,IAAM/d,KAAKge,OAAS,S,EAI7EF,EAAAre,UAAAE,KAAA,SAAKwM,EAAQmO,EAAS3Y,IAClBwK,EAASA,GAAU,IACZA,OAASA,EAAOA,QAAUnM,KAAK+d,QACtC5R,EAAO+R,MAAQ/R,EAAO+R,OAASle,KAAKge,OACpC,IAAMha,EAAUhE,KACVuX,EAAMvX,KAAKiZ,OAAO,CACpBZ,SAAU,sBAAwBlM,EAAOA,OAAS,IAAMA,EAAO+R,MAAQ,UAE3E,OAAOle,KAAKqa,MAAM9C,EAAK+C,GAASgD,MAAK,SAAU1D,GAC3C,IAAI0E,EAAYX,EAAoB/D,GAOpC,GANK0E,IACDA,EAAYV,EAAqBhE,KAErCA,EAAW0E,GAGET,UACT,MAAM5C,MAAMrB,EAASiE,UAAUU,QAAO,SAAUC,EAAeC,EAAWC,EAAOC,GAI7E,OAHIH,EAAc/a,SACd+a,GAAiB,MAEdA,EAAgBC,EAAUG,OAAS,IAAMH,EAAUI,KAAO,MAAQJ,EAAUK,OACvF,GAAG,KAGP,IAAK,IAAM/Z,KAAO6U,EACVA,EAAS7U,GAAKgS,MACd6C,EAAS7U,GAAO6U,EAAS7U,GAAKgS,IAAIrJ,IAAIsJ,IAQ9C,OALAhT,EAAQuV,UAAUS,YAAYJ,GAC1BjY,IACAwb,QAAQC,MAAM,6DACdzb,EAASiY,IAENA,CACX,G,EAGJkE,EAAAre,UAAAkd,KAAA,SAAKrC,EAAS3Y,GACV,OAAO3B,KAAKL,KAAK,CAAEwM,OAAQnM,KAAK+d,QAASG,MAAOle,KAAKge,QAAU1D,EAAS3Y,E,EAE/Emc,CAAD,CA1GA,CAA2B5C,GA4G3B6D,GAAA,SAAAhc,GAaI,SAAAgc,IAAA,IAAA/b,EACID,EAAApD,KAAAK,OAEHA,K,OAdSgD,EAAKgc,MAAG,GACRhc,EAAQic,SAAG,GACXjc,EAASkc,UAAG,KACZlc,EAAWmc,YAAG,KAEdnc,EAAwBoc,yBAAG,KAC3Bpc,EAAmBqc,oBAAG,GACtBrc,EAAgBsc,iBAAG,GACnBtc,EAAqBuc,sBAAG,EAK9Bvc,EAAKkV,MAAQ,O,EAqPrB,OApQiCtY,EAAKmf,EAAAhc,GAkBlCgc,EAAGtf,UAAA8X,IAAH,SAAIC,GACA,IAAMP,EAASiE,EAAMzb,UAAU8X,IAAI0G,MAAMje,KAAMwD,WAC/C,GAAIA,UAAUC,OAAQ,CAElB,IAAK,IAAMsB,KAAO/E,KAAKuY,QACnB,OAAQxT,GACJ,IAAK,OACD/E,KAAKwf,KAAKxf,KAAKuY,QAAQxT,IACvB,MACJ,IAAK,aACD/E,KAAKsZ,WAAWtZ,KAAKuY,QAAQxT,IAC7B,MACJ,IAAK,WACD/E,KAAKyf,SAASzf,KAAKuY,QAAQxT,IAIvC,IAAK/E,KAAKgf,MAAO,CAEb,IAAMU,EAAW1f,KAAKyX,KAAK/Q,MAAM,SACjC,GAAIgZ,EAASjc,QAAU,EAAG,CACtB,IAAMkc,EAAYD,EAAS,GAAGhZ,MAAM,KACpC1G,KAAKwf,KAAKG,EAAU,GACvB,CACJ,CACJ,CACD,OAAO1I,C,EAGX8H,EAAItf,UAAA+f,KAAJ,SAAKhI,GACD,OAAKhU,UAAUC,QACfzD,KAAKgf,MAAQxH,EACNxX,MAFuBA,KAAKgf,K,EAKvCD,EAAOtf,UAAAmgB,QAAP,SAAQpI,GACJ,OAAKhU,UAAUC,QACfzD,KAAKif,SAAWzH,EACTxX,MAFuBA,KAAKif,Q,EAKvCF,EAAQtf,UAAAggB,SAAR,SAASjI,GACL,OAAKhU,UAAUC,QACfzD,KAAKkf,UAAY1H,EACVxX,MAFuBA,KAAKkf,S,EAKvCH,EAAUtf,UAAA6Z,WAAV,SAAW9B,GACP,OAAKhU,UAAUC,QACfzD,KAAKmf,YAAc3H,EACZxX,MAFuBA,KAAKmf,W,EAKvCJ,EAAAtf,UAAAogB,YAAA,SAAYzc,EAAOyG,EAAOnF,GACtB,OAAImF,GACInF,IACAA,GAAU,KAEPA,EAAStB,EAAQ,IAAMyG,GAE3BnF,C,EAGXqa,EAAAtf,UAAA4e,aAAA,WACI,IAGI3Z,EAAS,GAEb,OALYwW,EAAMzb,UAAUwZ,OAAOtZ,KAAKK,KAAM,CAC1CqY,SAAU,mBAAqBrY,KAAKgf,MAAQ,QAGhDta,EAAS1E,KAAK6f,YAAY,aAAc7f,KAAKmf,YAAaza,IACnC,IAAMA,EAAS,G,EAG1Cqa,EAAAtf,UAAAqgB,aAAA,SAAa3T,EAAQxK,EAAUoe,GAE3B,GADA5T,EAASA,GAAU,IACdnM,KAAKqf,oBAAoBlT,EAAO6T,YAAa,CAC9C7T,EAAO8T,OAAS9T,EAAO8T,QAAU,EACjC9T,EAAO+T,OAAS/T,EAAO+T,SAAW,EAClC,IAAM3I,EAAMvX,KAAKiZ,OAAO,CACpBZ,SAAU,8BAERiC,EAAU,CACZ6F,KAAMhU,EAAOqT,KACbY,WAAYjU,EAAO6T,WACnBK,mBAAmB,EACnBC,MAAOnU,EAAO8T,OACdM,MAAOpU,EAAO+T,QAElBlgB,KAAKsf,iBAAiBnT,EAAO6T,YAAc,GAC3C,IAAMQ,EAAUxgB,KAChBA,KAAKqf,oBAAoBlT,EAAO6T,YAAchgB,KAAKqa,MAAM9C,EAAK+C,GAASgD,MAAK,SAAU1D,GAElF,IAAK,IAAM7U,KAAO6U,EAAU,CACxB,IAAKA,EAAS7U,GAAK0b,OACf,MAAM,IAAIxF,MAAM,oBAIpB,IAAK,IAAMyF,KAFXF,EAAQG,OAAS/G,EAAS7U,GAAK6b,MAC/BhH,EAAWA,EAAS7U,GAAK0b,OACW,CAChC7G,EAAWA,EAAS8G,GAAa3J,IAAIrJ,IAAIsJ,GACzC,KACH,CACD,KACH,CASD,OARAwJ,EAAQlB,iBAAiBnT,EAAO6T,YAAcpG,EACzCmG,GACDS,EAAQjH,UAAUI,UAAU6G,EAAQlB,iBAAkBnT,EAAO6T,YAE7Dre,IACAwb,QAAQC,MAAM,2EACdzb,EAAS6e,EAAQlB,iBAAiBnT,EAAO6T,cAEtCQ,EAAQlB,iBAAiBnT,EAAO6T,WAC3C,GACH,CACD,OAAOhgB,KAAKqf,oBAAoBlT,EAAO6T,W,EAG3CjB,EAAAtf,UAAAohB,YAAA,SAAY1U,EAAQxK,EAAUoe,GAC1B,GAAI5T,EAAOqT,KACP,OAAOxf,KAAK8f,aAAa3T,EAAQxK,EAAUoe,GACxC,GAAI5T,EAAOyT,QAAS,CACvB,IAAMkB,EAAU9gB,KAChB,OAAOA,KAAK+gB,QAAQ5U,GAAQ,SAAUyN,GAElC,OADAzN,EAAOqT,KAAO5F,EAAS,GAAGuG,KACnBW,EAAQhB,aAAa3T,EAAQxK,EAAUoe,EAClD,GACH,C,EAGLhB,EAAAtf,UAAAshB,QAAA,SAAQC,EAAUrf,GACd,IAAM4V,EAAMvX,KAAKiZ,OAAO,CACpBZ,SAAU,6BAERiC,EAAU,CACZ2G,QAASD,EAASpB,QAClBW,MAAO,GAKX,OAFAvgB,KAAKsf,iBAAmB,GACxBtf,KAAKuf,sBAAwB,EACtBvf,KAAKqa,MAAM9C,EAAK+C,GAASgD,MAAK,SAAU1D,GAC3C,IAAK3H,UAAQyH,OAAO,wCAAyCE,GACzD,MAAMqB,MAAM,sBAOhB,OALArB,EAAWA,EAASsH,gBAAgBC,UAAUC,YAC1Czf,IACAwb,QAAQC,MAAM,sEACdzb,EAASiY,IAENA,CACX,G,EAGJmF,EAAgBtf,UAAA4hB,iBAAhB,SAAiB1f,GACb,IAAK3B,KAAKof,yBAA0B,CAChC,IAAMkC,EAAMthB,KAAKiZ,OAAO,CACpBZ,SAAU,4BAERkJ,EAAU,CACZpB,KAAMngB,KAAKgf,MACXwC,kBAAkB,EAClBC,mBAAmB,EACnBC,eAAe,EACfC,oBAAoB,EACpBC,gBAAgB,EAChBC,yBAAyB,EACzBC,kBAAkB,EAClBC,eAAe,EACfC,qBAAqB,EACrBC,oBAAoB,EACpBC,0BAA0B,EAC1BC,kBAAkB,EAClBC,mBAAmB,EACnBC,uBAAuB,GAG3BriB,KAAKsf,iBAAmB,GACxBtf,KAAKuf,sBAAwB,EAC7B,IAAM+C,EAAUtiB,KAChBA,KAAKof,yBAA2Bpf,KAAKqa,MAAMiH,EAAKC,GAASjE,MAAK,SAAU1D,GAcpE,OAbI3H,UAAQyH,OAAO,mCAAoCE,IAAaA,EAAS2I,eAAeC,SAASC,UACjGtF,QAAQuF,KAAK,oBAAsBpB,EAAM,IAAMjF,KAAKoB,UAAU8D,IAE9DtP,UAAQyH,OAAO,4CAA6CE,IAC5DA,EAAS2I,eAAeC,SAASG,QAAQC,UAAUlV,KAAI,SAAUrH,GAC7Dic,EAAQhD,iBAAiBjZ,EAAKwc,MAAQ,KACpCP,EAAQ/C,qBACd,IAEA5d,IACAwb,QAAQC,MAAM,+EACdzb,EAAS2gB,EAAQhD,mBAEdgD,EAAQhD,gBACnB,GACH,CACD,OAAOtf,KAAKof,wB,EAGhBL,EAAAtf,UAAAqjB,aAAA,SAAanhB,EAAUoe,GACnB,IAAM/b,EAAUhE,KAChB,OAAOA,KAAKqhB,mBAAmB/D,MAAK,SAAU1D,GAC1C,IAAMmJ,EAAa,GACnB,IAAK,IAAMhe,KAAOf,EAAQsb,iBACtByD,EAAWzS,KAAKtM,EAAQ6c,YAAY,CAAErB,KAAMxb,EAAQgb,MAAOgB,WAAYjb,GAAO,KAAMgb,IAExF,OAAOxF,QAAQyI,IAAID,GAAYzF,MAAK,SAAU2F,GAK1C,OAJIthB,IACAwb,QAAQC,MAAM,2EACdzb,EAASqC,EAAQsb,mBAEdtb,EAAQsb,gBACnB,GACJ,G,EAGJP,EAAAtf,UAAAyjB,WAAA,SAAW5I,EAASV,GAChB,IAAM3C,EAAS,GACf,IAAK,IAAMlS,KAAO6U,EACd3C,EAAOlS,GAAO6U,EAAS7U,GAAKgK,QAAO,SAAUpB,EAAKC,GAC9C,IAAK,IAAMuV,KAAe7I,EACtB,QAAyBnB,IAArBxL,EAAIwV,SAAuDhK,IAAzBmB,EAAQ6I,IAA8BxV,EAAIwV,IAAgB7I,EAAQ6I,GACpG,OAAO,EAGf,OAAO,CACX,IAGJ,OADAnjB,KAAKuZ,UAAUS,YAAY/C,GACpBA,C,EAGX8H,EAAAtf,UAAAkd,KAAA,SAAKrC,EAAS3Y,GACV,IAAMqC,EAAUhE,KACXA,KAAKuf,sBAKN5d,EAASqC,EAAQkf,WAAW5I,EAASta,KAAKsf,mBAJ1Ctf,KAAK8iB,cAAa,SAAUlJ,GACxBjY,EAASqC,EAAQkf,WAAW5I,EAASV,G,IACtC,E,EAKdmF,CAAD,CApQA,CAAiC7D,GAsQjC,SAASkI,KACLlI,EAAMvb,KAAKK,MAEXA,KAAKkY,MAAQ,OACblY,KAAKgf,MAAQ,IACjB,CAoDA,SAASqE,KACLnI,EAAMvb,KAAKK,KACf,CA+DA,SAASsjB,KACLvE,GAAYpf,KAAKK,KACrB,CA6EA,SAASujB,KACLD,GAAc3jB,KAAKK,KACvB,CA+BM,SAAUwjB,GAAoBjM,GAChCA,EAAMA,GAAO5R,SAAS8d,IACtB,IAAMC,GAAU,IAAItM,GACfG,IAAIA,GAET,OAAImM,EAAQ1K,0BACD,IAAIoK,IACN7L,IAAIA,GAGTmM,EAAQ7K,iBACD,IAAIkG,IACNxH,IAAIA,GAGTmM,EAAQ3K,WACD,IAAI+E,IACNvG,IAAIA,GAGN,IACX,CAzPA6L,GAAqB3jB,UAAYL,OAAOc,OAAOgb,EAAMzb,WAErD2jB,GAAqB3jB,UAAU8X,IAAM,SAAUC,GAC3C,IAAMP,EAASiE,EAAMzb,UAAU8X,IAAI0G,MAAMje,KAAMwD,WAC/C,GAAIA,UAAUC,OAEV,IAAK,IAAMsB,KAAO/E,KAAKuY,QACnB,GACS,SADDxT,EAEA/E,KAAKwf,KAAKxf,KAAKuY,QAAQxT,IAKvC,OAAOkS,CACX,EAEAmM,GAAqB3jB,UAAU+f,KAAO,SAAUhI,GAC5C,OAAKhU,UAAUC,QACfzD,KAAKgf,MAAQxH,EACNxX,MAFuBA,KAAKgf,KAGvC,EAEAoE,GAAqB3jB,UAAU4e,aAAe,WAC1C,OAAOnD,EAAMzb,UAAUwZ,OAAOtZ,KAAKK,KAAM,CACrCqY,SAAU,+BAAiCrY,KAAKgf,OAExD,EAEAoE,GAAqB3jB,UAAUkd,KAAO,SAAUrC,EAAS3Y,GACrD,IAAM4V,EAAMvX,KAAKiZ,OAAO,CACpBZ,SAAU,oCAAsCrY,KAAKgf,QAEzD,OAAOhf,KAAKqa,MAAM9C,EAAK+C,GAASgD,MAAK,SAAU1D,GAC3C,OAAI3H,UAAQyH,OAAO,gDAAiDE,IAC5DjY,IACAwb,QAAQC,MAAM,4EACdzb,EAASiY,EAAS+J,mBAAmBC,WAAWC,kBAE7CjK,EAAS+J,mBAAmBC,WAAWC,kBAE1CliB,IACAwb,QAAQC,MAAM,4EACdzb,EAAS,KAEN,GAEf,GACJ,EAMA0hB,GAAW5jB,UAAYL,OAAOc,OAAOgb,EAAMzb,WAE3C4jB,GAAW5jB,UAAUqjB,aAAe,SAAUxI,EAAS3Y,GACnD,IAAM4V,EAAMvX,KAAKiZ,OAAO,IACxBjZ,KAAKsf,iBAAmB,GACxBtf,KAAKuf,sBAAwB,EAC7B,IAAMvb,EAAUhE,KAChB,OAAOA,KAAKqa,MAAM9C,EAAK+C,GAASgD,MAAK,SAAU1D,GAC3C,IAAI0E,EAAYX,EAAoB/D,GAOpC,GANK0E,IACDA,EAAYV,EAAqBhE,KAErCA,EAAW0E,GAGET,UACT,MAAM5C,MAAMrB,EAASiE,UAAUU,QAAO,SAAUC,EAAeC,EAAWC,EAAOC,GAI7E,OAHIH,EAAc/a,SACd+a,GAAiB,MAEdA,EAAgBC,EAAUG,OAAS,IAAMH,EAAUI,KAAO,MAAQJ,EAAUK,OACvF,GAAG,KAGP,IAAK,IAAM/Z,KAAO6U,EACVA,EAAS7U,GAAKgS,MACd/S,EAAQsb,iBAAiBva,GAAO6U,EAAS7U,GAAKgS,IAAIrJ,IAAIsJ,KACpDhT,EAAQub,uBAOlB,OAJI5d,IACAwb,QAAQC,MAAM,0EACdzb,EAASqC,EAAQsb,mBAEdtb,EAAQsb,gBACnB,GACJ,EAEA+D,GAAW5jB,UAAUohB,YAAc,SAAUiD,EAAMniB,GAC/C,IAAMqC,EAAUhE,KAChB,OAAO,IAAIua,SAAQ,SAAUC,EAASC,GAC9B9Y,IACAwb,QAAQC,MAAM,yEACdzb,EAASqC,EAAQsb,iBAAiBwE,KAEtCtJ,EAAQxW,EAAQsb,iBAAiBwE,GACrC,GACJ,EAEAT,GAAW5jB,UAAUE,KAAO,SAAU2a,EAAS3Y,GAC3C,IAAMqC,EAAUhE,KAChB,OAAOA,KAAK8iB,aAAaxI,EAAS3Y,GAAU2b,MAAK,SAAU1D,GACvD,IAAM3C,EAAS,GACf,IAAK,IAAM8M,KAAY/f,EAAQqX,cAAe,CAC1C,IAAMhV,EAAOrC,EAAQqX,cAAc0I,GACnC9M,EAAO5Q,EAAK6H,IAAM0L,EAASvT,EAAK2d,KACnC,CACD,OAAO/M,CACX,GACJ,EAMAqM,GAAc7jB,UAAYL,OAAOc,OAAO6e,GAAYtf,WAEpD6jB,GAAc7jB,UAAUqjB,aAAe,SAAUnhB,GAC7C,IAAMqC,EAAUhE,KAChB,OAAO+e,GAAYtf,UAAU4hB,iBAAiB1hB,KAAKK,MAAMsd,MAAK,SAAU1D,GACpE,IAAMmJ,EAAa,GACnB,IAAK,IAAMhe,KAAOf,EAAQqX,cAAe,CACrC,IAAMhV,EAAOrC,EAAQqX,cAActW,GACnCge,EAAWzS,KAAKtM,EAAQ6c,YAAYxa,EAAK2d,MAC5C,CACD,OAAOzJ,QAAQyI,IAAID,GAAYzF,MAAK,SAAUC,GAK1C,OAJI5b,IACAwb,QAAQC,MAAM,6EACdzb,EAASqC,EAAQsb,mBAEdtb,EAAQsb,gBACnB,GACJ,GACJ,EAEAgE,GAAc7jB,UAAUohB,YAAc,SAAUiD,EAAMniB,GAClD,OAAOod,GAAYtf,UAAUohB,YAAYlhB,KAAKK,KAAM,CAAEwf,KAAMxf,KAAKgf,MAAOgB,WAAY8D,IAAQxG,MAAK,SAAU1D,GAKvG,OAJIjY,IACAwb,QAAQC,MAAM,4EACdzb,EAASiY,IAENA,CACX,GACJ,EAEA0J,GAAc7jB,UAAUE,KAAO,SAAU2a,EAAS3Y,GAC9C,IAAMqC,EAAUhE,KAChB,OAAIsa,EAAQ2J,SAAYjkB,KAAKsf,kBAAqBtf,KAAKuf,sBAK5C,IAAIhF,SAAQ,SAAUC,EAASC,GAClCD,EAAQ0J,EAAc5J,GAC1B,IANOta,KAAK8iB,aAAanhB,GAAU2b,MAAK,SAAU1D,GAC9C,OAAOsK,EAAc5J,EACzB,IAOJ,SAAS4J,EAAcC,GACnB,IAAMC,EAAgB,GACtB,IAAK,IAAMrf,KAAOof,OACqBhL,IAA/BgL,EAASpf,EAAM,cACfqf,EAAcrf,GAAO,CACjB8E,MAAOsa,EAASpf,KAI5B,IAAMkS,EAAS,G,WACJ8M,GAGP,IAFA,IAAMM,EAAcrgB,EAAQqX,cAAc0I,GACpCO,EAAe,GACZtf,EAAI,EAAGA,EAAIqf,EAAYE,QAAQ9gB,SAAUuB,EAAG,CACjD,IAAM+J,EAASsV,EAAYE,QAAQvf,GAC9B+J,EAAOyV,YACRF,EAAavV,EAAO0V,SAAWL,EAAcrV,EAAO0V,UAAY,CAAE5a,WAAOsP,GACzEmL,EAAavV,EAAO0V,SAAS1V,OAASA,EAE7C,CACDkI,EAAOoN,EAAYnW,IAAMlK,EAAQsb,iBAAiB+E,EAAYL,MAAMjV,QAAO,SAAUpB,GACjF,IAAK,IAAM+W,KAAQJ,EACf,IAAKA,EAAaI,GAAM3V,OAAO4V,QAAQhX,EAAK2W,EAAaI,GAAM7a,OAC3D,OAAO,EAGf,OAAO,CACX,G,EAjBJ,IAAK,IAAMka,KAAY/f,EAAQqX,c,EAApB0I,GAmBX,OAAO9M,C,CAEf,EAMAsM,GAAc9jB,UAAYL,OAAOc,OAAOojB,GAAc7jB,WAEtD8jB,GAAc9jB,UAAUmlB,SAAW,SAAUpN,GACzC,OAAKhU,UAAUC,QACfzD,KAAK6kB,UAAYrN,EACVxX,MAFuBA,KAAK6kB,SAGvC,EAEAtB,GAAc9jB,UAAUqlB,eAAiB,SAAUd,EAAM9V,GACrD,GAAK1K,UAAUC,OAOf,OANAzD,KAAKuf,wBACDvf,KAAK6kB,qBAAqBtlB,MAC1BS,KAAKsf,iBAAiB0E,GAAQhkB,KAAK6kB,UAAUnX,IAAIsJ,GAEjDhX,KAAKsf,iBAAiB0E,GAAQhkB,KAAK6kB,UAAUb,GAAMtW,IAAIsJ,GAEpDhX,IACX,EAEAujB,GAAc9jB,UAAUqjB,aAAe,SAAUnhB,GAC7C,IAAMqC,EAAUhE,KAChB,OAAO,IAAIua,SAAQ,SAAUC,EAASC,GAC9B9Y,IACAwb,QAAQC,MAAM,6EACdzb,EAASqC,EAAQsb,mBAErB9E,EAAQxW,EAAQsb,iBACpB,GACJ,E,qIAyBM,SAAoByF,GACtB1K,EAAQ0K,CACZ,E,kDCnjCA,SAASC,GAAarX,GAClB,GAAIA,EAAIoJ,KAAOpJ,EAAIoJ,eAAexX,MAC9B,OAAOoO,EAAIoJ,IAAIrJ,IAAIsX,IAChB,GAAIrX,aAAevO,OACtB,IAAK,IAAM2F,KAAO4I,EACdA,EAAI5I,GAAOigB,GAAarX,EAAI5I,IAGpC,OAAO4I,CACX,CAGA,IAAIsX,IAAwB,EACxBC,GAAkB,GACtB,SAASC,KACLC,EAAYzlB,KAAKK,KACrB,CAoBA,SAAS+e,GAAYsG,GACjBF,GAAWxlB,KAAKK,MAEhBA,KAAKuX,IAAI8N,EAAU,eACvB,CAoDA,SAAS7C,GAAS6C,EAAS7F,GACvB2F,GAAWxlB,KAAKK,MAEhBA,KAAKuX,IAAI8N,EAAU,gBACnBrlB,KAAKgf,MAAQQ,CACjB,CAmGA,SAAS8F,GAASD,EAAS7F,EAAMsE,GAC7BqB,GAAWxlB,KAAKK,MAChBA,KAAKuX,IAAI8N,EAAU,iBACnBrlB,KAAKgf,MAAQQ,EACbxf,KAAKulB,MAAQzB,EACb9jB,KAAKwlB,WAAa,IACtB,CAyDA,SAASC,GAAYJ,EAASK,GAC1BP,GAAWxlB,KAAKK,MAChBA,KAAKuX,IAAI8N,EAAU,iBACnBrlB,KAAK2lB,aAAeD,EACpB1lB,KAAKwlB,WAAa,IACtB,CAsCA,SAASI,GAAWP,EAAS/L,GACzB6L,GAAWxlB,KAAKK,MAChB,IAAM0f,EAAW2F,EAAQ3e,MAAM,KAC3Bmf,EAAYnG,EAASoG,MACO,SAA5BD,EAAU/W,gBACV+W,EAAYnG,EAASoG,OAEzB9lB,KAAK+lB,WAAaF,EAClB7lB,KAAKmf,YAAc7F,EACnBtZ,KAAKuX,IAAImI,EAAS/Y,KAAK,KAAO,IAAMkf,EAAY,QACpD,CAGA,SAASG,GAAU7L,GACf,OAAIA,GAAOA,EAAI5T,QACJ4T,EAAI5T,QAAQ,MAAO,IAEvB4T,CACX,CAEA,SAAS+I,GAAW+C,EAASlX,GACzB,OAAOkX,EAAQlX,QAAO,SAAUpB,GAC5B,IAAK,IAAM5I,KAAOgK,EACd,QAAiBoK,IAAbxL,EAAI5I,IAAsBihB,GAAUjX,EAAOhK,MAAUihB,GAAUrY,EAAI5I,IACnE,OAAO,EAGf,OAAO,CACX,GACJ,CAEA,SAAS4Y,GAAoB/D,GAEzB,IAAK,IAAM7U,KAAO6U,EAAU,CACxB,GAAIA,EAAS7U,GAAKgS,KAAO6C,EAAS7U,GAAKgS,eAAexX,MAClD,OAAOqa,EAEX,IAAM3C,EAAS0G,GAAoB/D,EAAS7U,IAC5C,GAAIkS,EACA,OAAOA,CAEd,CACD,OAAO,IACX,C,SAiCgBiP,GAAaC,EAASC,EAAY9M,GAC9C,IAAMoC,GAAS,IAAI2K,GACd9O,IAAI4O,GAET,OAAmC,IAA/BC,EAAWpX,QAAQ,QACZ,IAAI4W,GAAWQ,EAAY9M,GACC,IAA5B8M,EAAWpX,QAAQ,MAAcoX,EAAWpX,QAAQ,OAAS,EAC7D,IAAIyW,GAAY/J,EAAOzC,OAAO,CAAEZ,SAAU,iBAAmB+N,GAC7DA,EACA,IAAId,GAAS5J,EAAOzC,OAAO,CAAEZ,SAAU,iBAAmB+N,EAAY9M,GAE1E,IACX,CArXA6L,GAAW1lB,UAAYL,OAAOc,OAAOklB,EAAY3lB,WAEjD0lB,GAAW1lB,UAAU4a,MAAQ,SAAU9C,EAAK+C,GACxC,IAAMgM,EAAajK,KAAKoB,UAAUnD,GAClC,OAAI2K,IAAyBC,GAAgB3N,IAAQ2N,GAAgB3N,GAAK+O,GAC/D/L,QAAQC,QAAQ0K,GAAgB3N,GAAK+O,IAEzClB,EAAY3lB,UAAU4a,MAAM4D,MAAMje,KAAMwD,WAAW8Z,MAAK,SAAU1D,GAOrE,OANIqL,KACKC,GAAgB3N,KACjB2N,GAAgB3N,GAAO,IAE3B2N,GAAgB3N,GAAK+O,GAAc1M,GAEhCA,CACX,GACJ,EAQAmF,GAAYtf,UAAYL,OAAOc,OAAOilB,GAAW1lB,WAEjDsf,GAAYtf,UAAU8mB,QAAU,SAAU7gB,GACtC,IAAM6R,EAAMvX,KAAKiZ,OAAO,CACpBZ,SAAU,6BAERiC,EAAU,CACZ6F,KAAM,GACNqG,KAAM,GACNC,QAAS,GACTC,aAAc,GACdC,MAAO,GACPC,MAAO,GACPC,UAAW,GACXC,QAAS,GACTC,IAAK,GACL9F,QAAS,GACTwE,YAAa,GACbuB,sBAAuB,GAUvBC,MAAO,GACPC,OAAQ,GACR3G,MAAO,GACP4G,SAAU,IACVC,cAAe,EACfC,UAAW,GACXC,UAAW,GACXC,OAAQ,GACRC,WAAY,EACZC,UAAW,IAEf,IAAK,IAAM1iB,KAAOW,EACd4U,EAAQvV,GAAOW,EAAQX,GAE3B,OAAO/E,KAAKqa,MAAM9C,EAAK+C,GAASgD,MAAK,SAAU1D,GAC3C,OAAIA,EAASsH,iBAAmBtH,EAASsH,gBAAgBC,UAC9CvH,EAASsH,gBAAgBC,UAAUC,YAEvC,EACX,GACJ,EASAoB,GAAS/iB,UAAYL,OAAOc,OAAOilB,GAAW1lB,WAE9C+iB,GAAS/iB,UAAUioB,OAAS,SAAUhiB,GAClC,IAAM6R,EAAMvX,KAAKiZ,OAAO,CACpBZ,SAAU,4BAERiC,EAAU,CACZ6F,KAAMngB,KAAKgf,MACXwC,kBAAkB,EAClBC,mBAAmB,EACnBC,eAAe,EACfC,oBAAoB,EACpBC,gBAAgB,EAChBC,yBAAyB,EACzBC,kBAAkB,EAClBC,eAAe,EACfC,qBAAqB,EACrBC,oBAAoB,EACpBC,0BAA0B,EAC1BC,kBAAkB,EAClBC,mBAAmB,EACnBC,uBAAuB,GAE3B,IAAK,IAAMtd,KAAOW,EACd4U,EAAQvV,GAAOW,EAAQX,GAE3B,OAAO/E,KAAKqa,MAAM9C,EAAK+C,GAASgD,MAAK,SAAU1D,GAC3C,GAAIqL,GAAuB,CACvB,IAAMhO,EAAS,CAAEsL,eAAgB,CAAEC,SAAU,KAC7C,IAAK,IAAMzd,KAAOW,EAAS,CACvB,IAAMiiB,EAAa5iB,EAAI8S,UAAU,GACjCZ,EAAOsL,eAAeC,SAASmF,GAAc/N,EAAS2I,eAAeC,SAASmF,EACjF,CACDzC,GAAgB3N,GAAK8E,KAAKoB,UAAUnD,IAAYrD,CACnD,CACD,OAAO2C,CACX,GACJ,EAEA4I,GAAS/iB,UAAUmoB,SAAW,SAAUliB,GACpC,IAAM6R,EAAMvX,KAAKiZ,OAAO,CACpBZ,SAAU,8BAERiC,EAAU,CACZ6F,KAAMngB,KAAKgf,OAEf,IAAK,IAAMja,KAAOW,EACd4U,EAAQvV,GAAOW,EAAQX,GAE3B,OAAO/E,KAAK4c,KAAKrF,EAAK+C,EAC1B,EAEAkI,GAAS/iB,UAAUooB,QAAU,SAAUC,EAAO/iB,EAAKyS,GAC/C,OAAyB,IAArBhU,UAAUC,OACHzD,KAAK0nB,OAAO,CACfxF,0BAA0B,IAC3B5E,MAAK,SAAU1D,GACd,IAAImO,EAQJ,OAPInO,EAAS2I,gBAAkB3I,EAAS2I,eAAeC,UAAY5I,EAAS2I,eAAeC,SAASwF,mBAAqBpO,EAAS2I,eAAeC,SAASwF,kBAAkBC,kBACxKrO,EAAS2I,eAAeC,SAASwF,kBAAkBC,iBAAiBlZ,QAAO,SAAUpB,GACjF,OAAOA,EAAIua,cAAgBJ,GAASna,EAAIkV,OAAS9d,CACrD,IAAGiQ,SAAQ,SAAUrH,GACjBoa,EAAgBpa,EAAIwa,KACxB,IAEGJ,CACX,IAC4B,IAArBvkB,UAAUC,OACVzD,KAAK4nB,SAAS,CACjB,mDAAoDE,EACpD,4CAA6C/iB,EAC7C,6CAA8CyS,EAC9C,+CAAgD,SALjD,CAQX,EAEAgL,GAAS/iB,UAAUwmB,QAAU,WACzB,IAAMjiB,EAAUhE,KAChB,OAAOA,KAAK0nB,OAAO,CACf9F,gBAAgB,IACjBtE,MAAK,SAAU1D,GACd,IAAI3C,EAAS,GAMb,OALIhF,UAAQyH,OAAO,4CAA6CE,KAC5D3C,EAAS2C,EAAS2I,eAAeC,SAASG,QAAQC,UAAUlV,KAAI,SAAU0a,GACtE,OAAO,IAAI9C,GAASthB,EAAQiV,OAAO,CAAEZ,SAAU,iBAAmBrU,EAAQgb,MAAOoJ,EAAOvF,KAC5F,KAEG5L,CACX,GACJ,EAEAuL,GAAS/iB,UAAU2oB,OAAS,SAAUhC,EAAY9M,GAE9C,OAAO4M,GADPE,EAAaA,GAAcpmB,KAAKgf,MACA1F,EACpC,EAUAgM,GAAS7lB,UAAYL,OAAOc,OAAOilB,GAAW1lB,WAE9C6lB,GAAS7lB,UAAU+f,KAAO,SAAUhI,GAChC,OAAKhU,UAAUC,QACfzD,KAAKgf,MAAQxH,EACNxX,MAFuBA,KAAKgf,KAGvC,EAEAsG,GAAS7lB,UAAUqkB,KAAO,SAAUtM,GAChC,OAAKhU,UAAUC,QACfzD,KAAKulB,MAAQ/N,EACNxX,MAFuBA,KAAKulB,KAGvC,EAEAD,GAAS7lB,UAAUye,MAAQ,SAAUxY,EAASqJ,GAC1CrJ,EAAUA,GAAW,GACrBqJ,EAASA,GAAU,GACnB,IAAMuL,EAAU,CACZ6F,KAAMngB,KAAKgf,MACXoB,WAAYpgB,KAAKulB,MACjBlF,mBAAmB,EACnBC,MAAO,EACPC,OAAQ,GAEZ,IAAK,IAAMxb,KAAOW,EACd4U,EAAQvV,GAAOW,EAAQX,GAE3B,IAAIsjB,EAAY,EAChB,IAAK,IAAMC,KAAQvZ,EACfuL,EAAQ,uBAAyB+N,EAAY,SAAWC,EACxDhO,EAAQ,uBAAyB+N,EAAY,UAAYtZ,EAAOuZ,KAC9DD,EAEFA,IACA/N,EAAQ,iCAAmC+N,GAE/C,IAAMrkB,EAAUhE,KAChB,OAAOA,KAAKqa,MAAMra,KAAKuX,MAAO+C,GAASgD,MAAK,SAAU1D,GAClD,OAAIA,EAAS2O,kBACT3O,EAAS2O,iBAAiB9H,QAC1B7G,EAAS2O,iBAAiB9H,OAAOzc,EAAQuhB,QACrCN,KACAC,GAAgBlhB,EAAQuT,OAAO8E,KAAKoB,UAAUnD,IAAY,CACtDiO,iBAAkB,CACd9H,OAAQ7G,EAAS2O,iBAAiB9H,UAI9Czc,EAAQwhB,WAAa5L,EAAS2O,iBAAiB9H,OAAO+H,UAC/CxD,GAAapL,EAAS2O,iBAAiB9H,OAAOzc,EAAQuhB,SAE1D,EACX,GACJ,EASAE,GAAYhmB,UAAYL,OAAOc,OAAOilB,GAAW1lB,WAEjDgmB,GAAYhmB,UAAUye,MAAQ,SAAUxY,EAASqJ,GAC7CrJ,EAAUA,GAAW,GACrBqJ,EAASA,GAAU,GACnB,IAAMuL,EAAU,CACZmM,QAAS,QACTgC,YAAazoB,KAAK2lB,aAClBtF,kBAAuC,OAApBrgB,KAAKwlB,WACxBlF,MAAO,EACPC,OAAQ,GAEZ,IAAK,IAAMxb,KAAOW,EACd4U,EAAQvV,GAAOW,EAAQX,GAE3B,IAAIsjB,EAAY,EAChB,IAAK,IAAMC,KAAQvZ,EACfuL,EAAQ,uBAAyB+N,EAAY,SAAWC,EACxDhO,EAAQ,uBAAyB+N,EAAY,UAAYtZ,EAAOuZ,KAC9DD,EAEFA,IACA/N,EAAQ,iCAAmC+N,GAE/C,IAAMrkB,EAAUhE,KAChB,OAAOA,KAAKqa,MAAMra,KAAKuX,MAAO+C,GAASgD,MAAK,SAAU1D,GAClD,OAAIA,EAAS2O,kBACT3O,EAAS2O,iBAAiB9H,QAC1B7G,EAAS2O,iBAAiB9H,OAAO1J,KACjC/S,EAAQwhB,WAAa5L,EAAS2O,iBAAiB9H,OAAO+H,UAC/CxD,GAAapL,EAAS2O,iBAAiB9H,OAAO1J,MAElD,EACX,GACJ,EAcA6O,GAAWnmB,UAAYL,OAAOc,OAAOilB,GAAW1lB,WAkChDmmB,GAAWnmB,UAAUye,MAAQ,SAAUxY,EAASqJ,GAC5CrJ,EAAUA,GAAW,GACrBqJ,EAASA,GAAU,GACnB,IAAMuL,EAAU,GAEhB,IAAK,IAAMvV,KAAOW,EACd4U,EAAQvV,GAAOW,EAAQX,GAE3B,IAAK,IAAMujB,KAAQvZ,EACfuL,EAAQgO,GAAQvZ,EAAOuZ,GAE3B,IAAMtkB,EAAUhE,KAChB,OAAOA,KAAKqa,MAAMra,KAAKuX,MAAO+C,GAASgD,MAAK,SAAU1D,GAElD,GADAA,EAAW+D,GAAoB/D,GAE3B,GAAI5V,EAAQmb,aACR,GAAIvF,GAAYA,EAAS5V,EAAQmb,cAAgBvF,EAAS5V,EAAQmb,aAAapI,IAC3E,OAAOiO,GAAa9B,GAAWtJ,EAAS5V,EAAQmb,aAAapI,IAAKhI,SAGtE,IAAK,IAAMhK,KAAO6U,EACd,GAAIA,EAAS7U,GAAKgS,IACd,OAAOiO,GAAa9B,GAAWtJ,EAAS7U,GAAKgS,IAAKhI,IAKlE,MAAO,EACX,GACJ,E,iCCvXA,SAAS2Z,EAAWC,GAChB,KAAM3oB,gBAAgB0oB,GAAa,OAAO,IAAIA,EAAWC,GAEzD3oB,KAAK4oB,QAAUD,EAA2B,iBAAXA,EAAsBhjB,SAASkjB,eAAeF,GAAUA,EAEvF3oB,KAAK8oB,KAAOH,EAAOI,WAAW,MAC9B/oB,KAAKgpB,OAASL,EAAOlgB,MACrBzI,KAAKipB,QAAUN,EAAOxU,OAEtBnU,KAAKkpB,KAAO,EACZlpB,KAAKmpB,MAAQ,EACjB,CAbmC7c,EAAAC,QAAiBmc,EAepDA,EAAWjpB,UAAY,CAEnB2pB,cAAe,GAEfC,gBAAiB,CACb,GAAK,OACL,GAAK,OACL,GAAK,OACL,GAAK,SACL,EAAK,OAGThlB,KAAM,SAAUA,GAEZ,OADArE,KAAKmpB,MAAQ9kB,EACNrE,IACf,EAEIwV,IAAK,SAAUA,GAEX,OADAxV,KAAKkpB,KAAO1T,EACLxV,IACf,EAEI8J,IAAK,SAAUwf,GAEX,OADAtpB,KAAKmpB,MAAM7Y,KAAKgZ,GACTtpB,IACf,EAEIupB,MAAO,WAEH,OADAvpB,KAAKmpB,MAAQ,GACNnpB,IACf,EAEIwpB,OAAQ,SAAUC,EAAGC,GACjBA,OAAgBvQ,IAATuQ,EAAqB,GAAKA,EAGjC,IAAIC,EAAS3pB,KAAK4pB,QAAU5pB,KAAK6pB,gBAC7BC,EAAMH,EAAOZ,WAAW,MACxBgB,EAAK/pB,KAAKgqB,GAAKP,EAAIC,EAavB,OAXAC,EAAOlhB,MAAQkhB,EAAOxV,OAAc,EAAL4V,EAE/BD,EAAIG,cAAgBH,EAAII,cAAqB,EAALH,EACxCD,EAAIK,WAAaT,EACjBI,EAAIM,YAAc,QAElBN,EAAIO,YACJP,EAAIQ,KAAKP,GAAKA,EAAIN,EAAG,EAAa,EAAVzhB,KAAKuiB,IAAQ,GACrCT,EAAIU,YACJV,EAAIW,OAEGzqB,IACf,EAEI0H,OAAQ,WACJ1H,KAAKgpB,OAAShpB,KAAK4oB,QAAQngB,MAC3BzI,KAAKipB,QAAUjpB,KAAK4oB,QAAQzU,MACpC,EAEIuW,SAAU,SAAUC,GAEhB,IAAIhC,EAAS3oB,KAAK6pB,gBACdC,EAAMnB,EAAOI,WAAW,MACxB2B,EAAWZ,EAAIc,qBAAqB,EAAG,EAAG,EAAG,KAKjD,IAAK,IAAI5lB,KAHT2jB,EAAOlgB,MAAQ,EACfkgB,EAAOxU,OAAS,IAEFwW,EACVD,EAASG,cAAc7lB,EAAG2lB,EAAK3lB,IAQnC,OALA8kB,EAAIgB,UAAYJ,EAChBZ,EAAIiB,SAAS,EAAG,EAAG,EAAG,KAEtB/qB,KAAKgrB,MAAQlB,EAAImB,aAAa,EAAG,EAAG,EAAG,KAAK5mB,KAErCrE,IACf,EAEIkrB,KAAM,SAAUC,GACPnrB,KAAK4pB,SAAS5pB,KAAKwpB,OAAOxpB,KAAKopB,eAC/BppB,KAAKgrB,OAAOhrB,KAAK0qB,SAAS1qB,KAAKqpB,iBAEpC,IAAIS,EAAM9pB,KAAK8oB,KAEfgB,EAAIsB,UAAU,EAAG,EAAGprB,KAAKgpB,OAAQhpB,KAAKipB,SAGtC,IAAK,IAAoCzpB,EAAhCwF,EAAI,EAAGqmB,EAAMrrB,KAAKmpB,MAAM1lB,OAAWuB,EAAIqmB,EAAKrmB,IACjDxF,EAAIQ,KAAKmpB,MAAMnkB,GACf8kB,EAAIwB,YAActjB,KAAKwN,IAAIhW,EAAE,GAAKQ,KAAKkpB,UAAqB/P,IAAfgS,EAA2B,IAAOA,GAC/ErB,EAAIyB,UAAUvrB,KAAK4pB,QAASpqB,EAAE,GAAKQ,KAAKgqB,GAAIxqB,EAAE,GAAKQ,KAAKgqB,IAI5D,IAAIwB,EAAU1B,EAAImB,aAAa,EAAG,EAAGjrB,KAAKgpB,OAAQhpB,KAAKipB,SAIvD,OAHAjpB,KAAKyrB,UAAUD,EAAQnnB,KAAMrE,KAAKgrB,OAClClB,EAAI4B,aAAaF,EAAS,EAAG,GAEtBxrB,IACf,EAEIyrB,UAAW,SAAUE,EAAQjB,GACzB,IAAK,IAAgCkB,EAA5B5mB,EAAI,EAAGqmB,EAAMM,EAAOloB,OAAWuB,EAAIqmB,EAAKrmB,GAAK,GAClD4mB,EAAoB,EAAhBD,EAAO3mB,EAAI,MAGX2mB,EAAO3mB,GAAK0lB,EAASkB,GACrBD,EAAO3mB,EAAI,GAAK0lB,EAASkB,EAAI,GAC7BD,EAAO3mB,EAAI,GAAK0lB,EAASkB,EAAI,GAG7C,EAEI/B,cAAe,WACX,MAAwB,oBAAblkB,SACAA,SAASwB,cAAc,UAIvB,IAAInH,KAAK4oB,QAAQ3oB,WAEpC,E,uECzIMyoB,GAAc1nB,OAAe0nB,YAAemD,IAAeC,IAAwBD,GAEzFE,GAAA,SAAAhpB,GAII,SAAAgpB,I,OACIhpB,EAAOpD,KAAAK,W,CAyGf,OA9G6BJ,EAAYmsB,EAAAhpB,GAQrCgpB,EAAAtsB,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GAErB/D,KAAK0H,OAAO1H,KAAKgsB,OACjBhsB,KAAKisB,MAAQvD,GAAW5kB,E,EAG5BioB,EAAAtsB,UAAA0E,OAAA,SAAOL,EAASC,GAiBZ,GAhBAhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GAEtB/D,KAAK+T,SAAW/T,KAAK+T,SAASC,OAAOhU,KAAKiU,aACtCjU,KAAKksB,qBACLlsB,KAAK+T,SAAW/T,KAAK+T,SAASoY,eAAensB,KAAKiU,YAAc,IAAMjU,KAAKkO,OAG3ElO,KAAKosB,mBAAqBpsB,KAAKqsB,mBAAqBrsB,KAAKssB,uBAAyBtsB,KAAKusB,sBACvFvsB,KAAKisB,MAAM5nB,KAAKrE,KAAKwsB,cAErBxsB,KAAKisB,MAAM5nB,KAAKrE,KAAKqE,QAGrBrE,KAAKwpB,UACLxpB,KAAKisB,MAAMzC,OAAOxpB,KAAKwpB,SAAUxpB,KAAK0pB,QAEtC1pB,KAAKysB,aAAc,CAEnB,IADA,IAAM9B,EAAO,GACJ/c,EAAM,EAAGA,GAAO5N,KAAK0sB,aAAc9e,IAAO,CAE/C+c,EADc/c,EAAM5N,KAAK0sB,cACX1sB,KAAK+T,SAASnG,EAAK,EAAG5N,KAAK0sB,aAC5C,CACD1sB,KAAKisB,MAAM5C,gBAAkBsB,EAC7B3qB,KAAKisB,MAAMvB,SAASC,EACvB,MAAU3qB,KAAK0qB,aACZ1qB,KAAKisB,MAAM5C,gBAAkBrpB,KAAK0qB,WAClC1qB,KAAKisB,MAAMvB,SAAS1qB,KAAK0qB,aAG7B1qB,KAAKisB,MAAMf,M,EAGfa,EAAAtsB,UAAA2P,KAAA,SAAKtL,EAASC,UACH/D,KAAKisB,MACZlpB,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAGxBgoB,EAAMtsB,UAAAiI,OAAN,SAAOilB,GACH,IAAM1V,EAAS2V,eAAantB,UAAUiI,OAAOuW,MAAMje,KAAMwD,WAIzD,YAHmB2V,IAAfnZ,KAAKisB,OACLjsB,KAAKisB,MAAMvkB,SAERuP,C,EAGX8U,EAAAtsB,UAAA+sB,WAAA,WACI,IAAMxoB,EAAUhE,KACV6sB,EAAS,GACTC,EAAM9sB,KAAKqE,OACX0oB,EAAM/sB,KAAK2sB,OAEXK,EAAchtB,KAAKitB,eAAiBjtB,KAAKktB,WACzCC,EAAentB,KAAKotB,eAAiBptB,KAAKqtB,WAE1CC,EAAcN,EAAcD,EAAItkB,MAChC8kB,EAAcJ,EAAeJ,EAAI5Y,OAYvC,OAVA2Y,EAAI9X,SAAQ,SAAUwY,GAClB,IAAMzlB,EAAOC,KAAKyN,IAAI+X,EAAE,GAAKxpB,EAAQkpB,YAC/B7kB,EAAML,KAAKyN,IAAI+X,EAAE,GAAKxpB,EAAQqpB,YAE9BI,EAAO1lB,EAAOulB,EACdI,EAAOrlB,EAAMklB,EAEnBV,EAAOvc,KAAK,CAACmd,EAAMC,EAAMF,EAAE,IAC/B,IAEOX,C,EA2Bdd,CAAD,CA9GA,CAA6Ba,gBA+G7Bb,GAAQtsB,UAAU8F,QAAU,iBAC5BwmB,GAAQtsB,UAAUsU,SAAWyC,UAAQC,QAAQ,WAE7CsV,GAAQtsB,UAAU+F,QAAQ,SAAU,GAAI,SAAU,mBAAoB,KAAM,CAAEkR,KAAM,CAAC,WACrFqV,GAAQtsB,UAAU+F,QAAQ,OAAQ,GAAI,SAAU,iBAAkB,KAAM,CAAEkR,KAAM,CAAC,WACjFqV,GAAQtsB,UAAU+F,QAAQ,MAAO,EAAG,SAAU,qBAAsB,KAAM,CAAEkR,KAAM,CAAC,WAEnFqV,GAAQtsB,UAAU+F,QAAQ,WAAY,CAAE,GAAK,OAAQ,GAAK,OAAQ,GAAK,OAAQ,GAAK,SAAU,EAAK,OAAS,SAAU,sBAAuB,KAAM,CAAEkR,KAAM,CAAC,WAE5JqV,GAAQtsB,UAAU+F,QAAQ,cAAc,EAAO,UAAW,+DAAgE,KAAM,CAAEkR,KAAM,CAAC,WAEzIqV,GAAQtsB,UAAU+F,QAAQ,aAAc,GAAI,SAAU,mBAAoB,KAAM,CAAEkR,KAAM,CAAC,WACzFqV,GAAQtsB,UAAU+F,QAAQ,YAAa,UAAW,MAAO,gCAAiCumB,GAAQtsB,UAAUsU,SAASC,SAAU,CAAE0C,KAAM,CAAC,WACxIqV,GAAQtsB,UAAU+F,QAAQ,oBAAoB,EAAO,UAAW,2CAA4C,KAAM,CAAEkR,KAAM,CAAC,eAAgB,YAE3IqV,GAAQtsB,UAAU+F,QAAQ,WAAY,KAAM,SAAU,mBAAoB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC7Gwc,GAAQtsB,UAAU+F,QAAQ,WAAY,KAAM,SAAU,mBAAoB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC7Gwc,GAAQtsB,UAAU+F,QAAQ,eAAgB,KAAM,SAAU,uBAAwB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACrHwc,GAAQtsB,UAAU+F,QAAQ,eAAgB,KAAM,SAAU,uBAAwB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,ICpIrH,IAAAoe,GAAA,SAAA5qB,GAoBI,SAAA4qB,I,OACI5qB,EAAOpD,KAAAK,W,CA4Lf,OAjN+BJ,EAAS+tB,EAAA5qB,GAwBpC4qB,EAAAluB,UAAAmuB,SAAA,SAAS9pB,EAASC,GACd,OAAO/D,I,EAGX2tB,EAAAluB,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GAErB/D,KAAK6tB,KAAO9pB,EAAQQ,OAAO,KAC3BvE,KAAK8tB,KAAO9tB,KAAK6tB,KAAKtpB,OAAO,KAC7BvE,KAAK+tB,YAAc/tB,KAAK6tB,KAAKtpB,OAAO,KACpCvE,KAAKguB,KAAOhuB,KAAK+tB,YAAYxpB,OAAO,QAC/BC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,4FAEfxE,KAAKiuB,cAAgBjuB,KAAK+tB,YAAYxpB,OAAO,QACxCC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,gIAEfxE,KAAKkuB,aAAeluB,KAAK8tB,KAAKvpB,OAAO,KACrCvE,KAAKmuB,SAAWnuB,KAAKkuB,aAAa3pB,OAAO,QACpCC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,gRAEfxE,KAAKouB,SAAWpuB,KAAKkuB,aAAa3pB,OAAO,QACpCC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,qIAEfxE,KAAKquB,SAAWruB,KAAKkuB,aAAa3pB,OAAO,QACpCC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,mIAEfxE,KAAKsuB,SAAWtuB,KAAKkuB,aAAa3pB,OAAO,QACpCC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,kIAEfxE,KAAKuuB,SAAWvuB,KAAKkuB,aAAa3pB,OAAO,QACpCC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,2RAEfxE,KAAKwuB,SAAWxuB,KAAKkuB,aAAa3pB,OAAO,QACpCC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,gIAEfxE,KAAKyuB,SAAWzuB,KAAKkuB,aAAa3pB,OAAO,QACpCC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,yIAEfxE,KAAK0uB,SAAW1uB,KAAKkuB,aAAa3pB,OAAO,QACpCC,KAAK,YAAa,WAClBA,KAAK,YAAa,WAClBA,KAAK,OAAQ,WACbA,KAAK,IAAK,0IAIfxE,KAAK6N,KAAO7N,KAAK6tB,KAAKtpB,OAAO,KAC7BvE,KAAK2uB,iBAAmB3uB,KAAK6N,KAAKtJ,OAAO,QACpCC,KAAK,OAAQ,WACbA,KAAK,IAAK,wnSAEfxE,KAAK4uB,OAAS5uB,KAAK6N,KAAKtJ,OAAO,QAC1BC,KAAK,OAAQ,WACbA,KAAK,IAAK,uoBAEfxE,KAAK6uB,QAAU7uB,KAAK6N,KAAKtJ,OAAO,QAC3BC,KAAK,OAAQ,WACbA,KAAK,IAAK,ykBAGf,IAAMsqB,EAAO9uB,KAAK6tB,KAAKzoB,OAAO2pB,UACxBC,EAAUF,EAAKhV,EAAIgV,EAAKrmB,MAAQ,EAChCwmB,EAAUH,EAAK/U,EAAI+U,EAAK3a,OAAS,EACjC+a,EAAQlnB,KAAKmnB,IAAInvB,KAAKyI,QAASzI,KAAKmU,UAAYnM,KAAKwN,IAAIsZ,EAAKrmB,MAAOqmB,EAAK3a,QAChFnU,KAAK6tB,KACArpB,KAAK,YAAa,cAAiBwqB,EAAUE,EAAS,KAAQD,EAAUC,EAAS,UAAYA,EAAQ,I,EAI9GvB,EAAAluB,UAAA0E,OAAA,SAAOL,EAASC,GAGZ,OAFAhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GAEd/D,KAAKovB,aACT,IAAK,OACD,MACJ,IAAK,cACDpvB,KAAK8tB,KAAKtpB,KAAK,UAAW,GAC1BxE,KAAK+tB,YAAYvpB,KAAK,YAAa,sBACnCxE,KAAK6N,KAAKrJ,KAAK,UAAW,GAE1BxE,KAAK8tB,KAAKuB,aAAaC,SAAS,KAC3B9qB,KAAK,UAAW,GAErBxE,KAAK+tB,YAAYsB,aAAaztB,MAAM,KAAK0tB,SAAS,MAC7C9qB,KAAK,YAAa,mBAEvBxE,KAAK6N,KAAKwhB,aAAaztB,MAAM,KAAK0tB,SAAS,KACtC9qB,KAAK,UAAW,GAErBxE,KAAK+tB,YAAYsB,aAAaE,KAAK,QAAQ3tB,MAAM,KAAM0tB,SAAS,MAC3D9qB,KAAK,YAAa,qBAEvBxE,KAAK6N,KAAKwhB,aAAaztB,MAAM,MAAM0tB,SAAS,KACvC9qB,KAAK,UAAW,GAErBxE,KAAK+tB,YAAYsB,aAAaztB,MAAM,MAAM0tB,SAAS,KAC9C9qB,KAAK,UAAW,GAErBxE,KAAK8tB,KAAKuB,aAAaztB,MAAM,MAAM0tB,SAAS,KACvC9qB,KAAK,UAAW,GAErB,MACJ,IAAK,WACDxE,KAAK8tB,KAAKtpB,KAAK,UAAW,GAC1BxE,KAAK+tB,YAAYvpB,KAAK,YAAa,sBACnCxE,KAAK6N,KAAKrJ,KAAK,UAAW,GAE1BxE,KAAK8tB,KAAKuB,aAAaC,SAAS,KAC3B9qB,KAAK,UAAW,GAErBxE,KAAK+tB,YAAYsB,aAAaztB,MAAM,KAAK0tB,SAAS,MAC7C9qB,KAAK,YAAa,mBAEvBxE,KAAK6N,KAAKwhB,aAAaztB,MAAM,KAAK0tB,SAAS,KACtC9qB,KAAK,UAAW,GAErB,MACJ,IAAK,UACDxE,KAAK8tB,KAAKtpB,KAAK,UAAW,GAE1BxE,KAAK+tB,YAAYvpB,KAAK,UAAW,GACjCxE,KAAK6N,KAAKrJ,KAAK,UAAW,GAE1BxE,KAAK8tB,KAAKuB,aAAaC,SAAS,KAC3B9qB,KAAK,UAAW,GAOrBxE,KAAK+tB,YAAYsB,aAAaC,SAAS,KAClC9qB,KAAK,UAAW,GAErBxE,KAAK6N,KAAKwhB,aAAaztB,MAAM,KAAK0tB,SAAS,KACtC9qB,KAAK,UAAW,G,EAuBpCmpB,CAAD,CAjNA,CAA+B6B,aAkN/B7B,GAAUluB,UAAU8F,QAAU,mBAO9BooB,GAAUluB,UAAU+F,QAAQ,YAAa,OAAQ,MAAO,kBAAmB,CAAC,OAAQ,cAAe,WAAY,Y,2ECvN/G,IAAAiqB,GAAA,SAAA1sB,GACI,SAAA0sB,IAAA,IAAAzsB,EACID,EAAApD,KAAAK,OAGHA,K,OADGgD,EAAKC,KAAO,M,EA8BpB,OAlC0BrD,EAAU6vB,EAAA1sB,GAOhC0sB,EAAAhwB,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,E,EAGzB0rB,EAAAhwB,UAAA0E,OAAA,SAAOL,EAASC,GACZhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GAEtBA,EACK+D,MAAM,aAAc9H,KAAK0vB,mBAAqB1vB,KAAK2vB,YAAc,IACjE7nB,MAAM,aAAc9H,KAAK4vB,mBAAqB5vB,KAAK6vB,YAAc,IAGtE,IAAMC,EAAO/rB,EAAQK,UAAU,gBAAgBC,KAAKrE,KAAKqE,OAAOZ,OAAS,EAAIzD,KAAKqE,OAAS,CAACrE,KAAK8vB,SACjGA,EAAKjsB,QAAQU,OAAO,OACfC,KAAK,QAAS,eACd6Q,MAAMya,GACNA,MAAK,SAAU5wB,GAAK,OAAOA,CAAE,IAElC4wB,EAAK1gB,OAAOvG,Q,EASnB4mB,CAAD,CAlCA,CAA0BnqB,cAmC1BmqB,GAAKhwB,UAAU8F,QAAU,cAEzBkqB,GAAKhwB,UAAU+F,QAAQ,OAAQ,GAAI,SAAU,iBAAkB,KAAM,CAAEkR,KAAM,CAAC,WAC9E+Y,GAAKhwB,UAAU+F,QAAQ,YAAa,KAAM,MAAO,iBAAkB,CAAC,GAAI,UAAW,SAAU,SAAU,OAAQ,UAAW,WAAY,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACnKkgB,GAAKhwB,UAAU+F,QAAQ,YAAa,KAAM,MAAO,iBAAkB,CAAC,GAAI,UAAW,SAAU,SAAU,OAAQ,UAAW,WAAY,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,I,sECpCnK,IAAAwgB,GAAA,SAAAhtB,GAII,SAAAgtB,IAAA,IAAA/sB,EACID,EAAApD,KAAAK,OAKHA,K,OARSgD,EAAYgtB,aAAG,GACfhtB,EAAaitB,cAAG,GAGtBjtB,EAAKktB,OAAQ,IAAIC,kBACZC,oBAAoB,cACpBC,iBAAiB,U,EAmD9B,OA3D8BzwB,EAAUmwB,EAAAhtB,GAWpCgtB,EAAAtwB,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrBA,EACK+D,MAAM,SAAU,QAChBA,MAAM,QAAS,QAEpB6L,SAAS7P,EAAQuI,eACZvE,MAAM,SAAU,QAChBA,MAAM,QAAS,QAEpB9H,KAAKkwB,MAAM/jB,OAAOrI,E,EAEtBisB,EAAAtwB,UAAA0E,OAAA,SAAOL,EAASC,GAAhB,IAqBCf,EAAAhD,KApBG+C,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GACtB,IAAMusB,EAActwB,KAAKkwB,MAAMK,UAC/BvwB,KAAKqE,OAAO2Q,SAAQ,SAACrH,EAAKC,GACjB0iB,EAAY1iB,IAOb0iB,EAAY1iB,GAAO5K,EAAKwtB,qBAAqBF,EAAY1iB,GAAMA,GAC/D5K,EAAKytB,uBAAuBH,EAAY1iB,GAAK2iB,UAAU,GAAI3iB,GAC3D0iB,EAAY1iB,GACP2iB,UAAU,GACVT,KAAK9sB,EAAKqB,OAAOuJ,GAAK5K,EAAK0tB,yBAA2B1tB,EAAK2tB,kBAAoB,KAVpFL,EAAY1iB,GAAO5K,EAAKwtB,qBAAqB,IAAII,eAAgBhjB,GAC5D2iB,QAAQ,CACLvtB,EAAKytB,uBAAuB,IAAII,SAAUjjB,IAC1C,IAAI6hB,IAAOK,KAAK9sB,EAAKqB,OAAOuJ,GAAK5K,EAAK0tB,yBAA2B1tB,EAAK2tB,kBAAoB,KAU1G,IACA3wB,KAAKkwB,MAAMK,QAAQD,EAAYrlB,MAAM,EAAGjL,KAAKqE,OAAOZ,SACpDzD,KAAKkwB,MAAMxoB,SAASopB,Q,EAExBf,EAAAtwB,UAAA+wB,qBAAA,SAAqBO,EAAMnjB,GACvB,OAAOmjB,EACFC,eAAc,GACdC,iBAAiB,CAACjxB,KAAKkxB,WAAa,KAAM,eAAAC,OAAenxB,KAAKkxB,WAAe,Q,EAGtFnB,EAAAtwB,UAAAgxB,uBAAA,SAAuBW,EAAQxjB,GAC3B,OAAOwjB,EACFC,KAAKrxB,KAAKsxB,yBAA2BtxB,KAAKqE,OAAOuJ,GAAK5N,KAAKuxB,mBAAqB,KAChFC,UAAUxxB,KAAKyxB,8BAAgCzxB,KAAKqE,OAAOuJ,GAAK5N,KAAK0xB,wBAA0B,QAC/FC,aAAa3xB,KAAKkxB,YAClBU,mBAAmB,E,EAG/B7B,CAAD,CA3DA,CAA8BzqB,cA4D9ByqB,GAAStwB,UAAU8F,QAAU,kBAe7BwqB,GAAStwB,UAAU+F,QAAQ,WAAY,GAAI,SAAU,yBACrDuqB,GAAStwB,UAAU+F,QAAQ,kBAAmB,EAAG,SAAU,6CAC3DuqB,GAAStwB,UAAU+F,QAAQ,uBAAwB,EAAG,SAAU,yCAChEuqB,GAAStwB,UAAU+F,QAAQ,kBAAmB,EAAG,SAAU,0C,wxFCjF3D,IAAAqsB,GAAA,SAAA9uB,GAOI,SAAA8uB,IAAA,IAAA7uB,EACID,EAAApD,KAAAK,OAOHA,K,OALGgD,EAAKC,KAAO,MAEZD,EAAK8uB,WAAa,EAElB9uB,EAAK+uB,SAAW,G,EAwIxB,OAtJ+BnyB,EAAUiyB,EAAA9uB,GAiBrC8uB,EAAApyB,UAAAuyB,WAAA,SAAWluB,EAASC,GAAO,EAE3B8tB,EAAApyB,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrB,IAAMC,EAAUhE,KAEhBA,KAAKiyB,UAAYluB,EAAQQ,OAAO,MAAMC,KAAK,QAAS,sCACpDxE,KAAKkyB,KAAOnuB,EAAQQ,OAAO,OAAOC,KAAK,QAAS,6BAEhDxE,KAAKkyB,KAAK3tB,OAAO,QACZ4tB,QAAQ,QAAQ,GAChBtkB,KAAK,SAGV7N,KAAKkyB,KAAK3tB,OAAO,SACZC,KAAK,OAAQ,UACbA,KAAK,QAAS,qBACd4tB,SAAS,QAAS,GAClB5tB,KAAK,MAAO,GACZP,GAAG,UAAU,WACVD,EAAQquB,WAAWryB,KAAK6J,OACxB7F,EAAQsuB,UAAUtyB,KAAK6J,MAC3B,IAGJ7J,KAAKkyB,KAAK3tB,OAAO,QACZ4tB,QAAQ,cAAc,GACtBtkB,KAAK,Q,EAIdgkB,EAAApyB,UAAA0E,OAAA,SAAOL,EAASC,GACZ,IAAMC,EAAUhE,KAWhB,GAVA+D,EACK+D,MAAM,SAAU9H,KAAKsI,SAAW,MAChCR,MAAM,QAAS9H,KAAK0I,QAAU,MAGnC1I,KAAK8xB,WAAa9pB,KAAK+H,KAAK/P,KAAKuyB,WAAavyB,KAAKwyB,iBAAmB,EAElExyB,KAAKqyB,aAAeryB,KAAK8xB,YAAc9xB,KAAKqyB,WAAW,GAE3DryB,KAAK+xB,SAAW,GACZ/xB,KAAKuyB,WAAY,CACjBvyB,KAAK+xB,SAASzhB,KAAK,SACnB,IAAK,IAAIwJ,GAAK9Z,KAAKyyB,gBAAiB3Y,GAAK9Z,KAAKyyB,gBAAiB3Y,IACvD9Z,KAAKqyB,aAAevY,EAAI,GAAK9Z,KAAKqyB,aAAevY,GAAK9Z,KAAK8xB,YAC3D9xB,KAAK+xB,SAASzhB,KAAKtQ,KAAKqyB,aAAevY,GAG/C9Z,KAAK+xB,SAASzhB,KAAK,OACtB,CAEDtQ,KAAKkyB,KAAK5c,OAAO,UAAUzH,KAAK,OAAS7N,KAAK8xB,YAC9C9xB,KAAKkyB,KAAK5c,OAAO,sBAAsB8c,SAAS,QAASpyB,KAAKqyB,cAC9DryB,KAAKkyB,KAAK5c,OAAO,sBAAsB9Q,KAAK,MAAOxE,KAAK8xB,YAExD,IAAMY,EAAO1yB,KAAKiyB,UAAU7tB,UAAU,MAAMC,KAAKrE,KAAK+xB,UAAU,SAAU7yB,GAAK,OAAOA,CAAE,IACxFwzB,EACK7uB,QACAU,QAAO,SAAUrF,GACd,IAAMyzB,EAAKhtB,SAASwB,cAAc,MAElC,GAAIjI,IAAM8E,EAAQquB,aAAc,CAC5B,IAAMO,EAAIjtB,SAASwB,cAAc,KAC3B0rB,EAAWltB,SAASuH,eAAehO,GAMzC,OAJA0zB,EAAEppB,YAAYqpB,GACdD,EAAEjb,KAAO,IACTgb,EAAGnpB,YAAYopB,GAERD,CACV,CACG,IAAMG,EAAOntB,SAASwB,cAAc,QAKpC,OAJA2rB,EAAKxoB,UAAYpL,EAEjByzB,EAAGnpB,YAAYspB,GAERH,CAEf,IACC1uB,GAAG,SAAS,SAAU/E,EAAG8F,GAGtB,OAFA+tB,YAAUjoB,iBACV9G,EAAQkuB,KAAK5c,OAAO,sBAAsB8c,SAAS,QAASpuB,EAAQquB,cAC5DnzB,GACJ,IAAK,QAC4B,IAAzB8E,EAAQquB,eACRruB,EAAQquB,WAAW,GACnBruB,EAAQsuB,UAAU,EAAG,aAEzB,MACJ,IAAK,OACGtuB,EAAQquB,eAAiBruB,EAAQ8tB,aACjC9tB,EAAQquB,WAAWruB,EAAQ8tB,YAC3B9tB,EAAQsuB,UAAUtuB,EAAQ8tB,WAAY,aAE1C,MACJ,QACI9tB,EAAQquB,WAAWnzB,GACnB8E,EAAQsuB,UAAUpzB,GAE9B,IAGJwzB,EAAKP,QAAQ,UAAU,SAAUlwB,EAAG2pB,GAAK,OAAO3pB,IAAM+B,EAAQquB,YAAa,IACtE/c,OAAO,KACPzH,MAAK,SAAU3O,GAAK,OAAOA,CAAE,IAGlCwzB,EAAKtjB,OAAOvG,SACZ6pB,EAAKM,QAEmB,IAApBhzB,KAAKuyB,YACL5e,SAAS7P,GAAS+E,Q,EAI1BgpB,EAAApyB,UAAA2P,KAAA,SAAKtL,EAASC,GACVhB,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAe3B8tB,CAAD,CAtJA,CAA+BvsB,cAuJ/BusB,GAAUpyB,UAAU8F,QAAU,mBAE9BssB,GAAUpyB,UAAU+F,QAAQ,eAAgB,EAAG,SAAU,4BAA6B,KAAM,CAAEkR,KAAM,CAAC,aAErGmb,GAAUpyB,UAAU+F,QAAQ,WAAY,GAAI,SAAU,mCAAoC,KAAM,CAAEkR,KAAM,CAAC,aACzGmb,GAAUpyB,UAAU+F,QAAQ,aAAc,EAAG,SAAU,wCAAyC,KAAM,CAAEkR,KAAM,CAAC,aAC/Gmb,GAAUpyB,UAAU+F,QAAQ,gBAAiB,EAAG,SAAU,oDAAqD,KAAM,CAAEkR,KAAM,CAAC,aAC9Hmb,GAAUpyB,UAAU+F,QAAQ,SAAU,GAAI,SAAU,2BAA4B,KAAM,CAAEkR,KAAM,CAAC,aAC/Fmb,GAAUpyB,UAAU+F,QAAQ,QAAS,GAAI,SAAU,0BAA2B,KAAM,CAAEkR,KAAM,CAAC,a,8+CC9J7F,IAAAuc,GAAA,SAAAlwB,GA4BI,SAAAkwB,IAAA,IAAAjwB,EACID,EAAApD,KAAAK,OAOHA,K,OANGgD,EAAKC,KAAO,MACZD,EAAKwM,QAAQ,IACbxM,EAAKkwB,WAAa,IAAIrB,GACtB7uB,EAAKmwB,cAAgB,IAAIlhB,UAAQmhB,UAAUpwB,GAC3CA,EAAKqwB,oBAAsB,KAC3BrwB,EAAKswB,uBAAyB,E,EAs7BtC,OAz9B2B1zB,EAAUqzB,EAAAlwB,GAwCjCkwB,EAAIxzB,UAAAktB,KAAJ,SAAKnV,GACD,IAAMP,EAASlU,EAAAtD,UAAMktB,KAAK1O,MAAMje,KAAMwD,WACtC,GAAIA,UAAUC,QACNzD,KAAKuzB,SAAU,CACf,IAAMC,EAAYxzB,KAAKyzB,cAAgBzzB,KAAK0zB,cAAgB1zB,KAAK2zB,MAAMvB,SAAS,gBAAkB,EAClGpyB,KAAKuzB,SACAzrB,MAAM,QAAS9H,KAAKgsB,MAAMvjB,MAAQ,MAClCX,MAAM,SAAU9H,KAAKgsB,MAAM7X,OAASqf,EAAY,MAErDxzB,KAAKkF,SACA4C,MAAM,QAAS9H,KAAKgsB,MAAMvjB,MAAQ,MAClCX,MAAM,SAAU9H,KAAKgsB,MAAM7X,OAAS,KAE5C,CAGL,OAAO8C,C,EAGXgc,EAAQxzB,UAAAm0B,SAAR,SAASC,GACL,GAAI7zB,KAAK8zB,QAAS,OAAO,EACzB,IAA8C,IAA1C9zB,KAAK+zB,gBAAgB/kB,QAAQ6kB,GAAgB,OAAO,EACxD,IAAMzhB,EAASpS,KAAKoS,SACpB,SAAIA,IAAUA,EAAOyhB,IAAsC,WAA1BzhB,EAAOyhB,GAAQnoB,SAAoE,IAA7C1L,KAAKg0B,mBAAmBhlB,QAAQ6kB,G,EAM3GZ,EAAYxzB,UAAAw0B,aAAZ,SAAazc,GACT,IAAMP,EAASjX,KAAKwP,QAAQyO,MAAMje,KAAMwD,WACxC,OAAKA,UAAUC,QAAUzD,KAAK8zB,QACnB9zB,KAAKqN,IAAIgC,OAAO,GAEpB4H,C,EAGXgc,EAASxzB,UAAAy0B,UAAT,SAAU1c,GACN,IAAMP,EAASjX,KAAKqE,KAAK4Z,MAAMje,KAAMwD,WACrC,OAAKA,UAAUC,QAAUzD,KAAK8zB,QACnB9zB,KAAKqN,IAAImC,UAAUT,QAAO,SAAUolB,EAAKvmB,GAAO,OAAOA,EAAM,CAAE,IAEnEqJ,C,EAGXgc,EAAAxzB,UAAAmP,MAAA,SAAMK,EAAQ4kB,GACV,IAAMO,EAAc,CAAEC,UAAW,SAAAn1B,GAAK,OAAAA,CAAA,GACtC,OAAIc,KAAK8zB,QACU,IAAXD,EAAqBO,EAClBp0B,KAAKoS,SAASnD,EAAS,IAElB,IAAZA,EAAsBmlB,EACnBp0B,KAAKoS,SAASyhB,E,EAGzBZ,EAAexzB,UAAA60B,gBAAf,SAAgBT,GAKZ,IAJA,IAAI7uB,GAAK,EACL3B,EAAS,EACPkxB,EAASv0B,KAAKwP,UAAU/L,OAC1B+wB,EAAe,EACZxvB,EAAIuvB,GAAUC,GAAgBX,GACjC7uB,IACIhF,KAAK4zB,SAAS5uB,GACd3B,IAEAmxB,IAGR,OAAOX,EAASxwB,C,EAGpB4vB,EAAAxzB,UAAAg1B,qBAAA,SAAqBjlB,EAASnL,GAC1B,IAAMqwB,EAAU,GAChB,GAAI10B,KAAK20B,mBACL,IAAK,IAAIC,EAAU,EAAGA,EAAUplB,EAAQ/L,OAAQmxB,IAAW,CAEvD,IADA,IAAIC,GAAkB,EACbC,EAAU,EAAGA,EAAUzwB,EAAKZ,OAAQqxB,IACzC,IAA+D,IAA3D,CAAC,GAAI,UAAM3b,GAAWnK,QAAQ3K,EAAKywB,GAASF,IAAkB,CAC9DC,GAAkB,EAClB,KACH,CAEDA,GACAH,EAAQpkB,KAAKskB,EAEpB,CAEL,OAAOF,C,EAGXzB,EAAAxzB,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrB/D,KAAK+0B,oBAAoBjtB,MAAM,WAAY,UAE3C9H,KAAKuzB,SAAWxvB,EAAQQ,OAAO,OAAOC,KAAK,QAAS,YACpDxE,KAAKg1B,MAAQh1B,KAAKuzB,SAAShvB,OAAO,SAClCvE,KAAKi1B,UAAYlxB,EAAQQ,OAAO,OAAO4tB,QAAQ,kBAAkB,GACjEnyB,KAAKk1B,eAAiBl1B,KAAKi1B,UAAU1wB,OAAO,SAC5CvE,KAAKm1B,WAAan1B,KAAKk1B,eAAe3wB,OAAO,SAASA,OAAO,MAC7DvE,KAAKo1B,aAAep1B,KAAKg1B,MAAMzwB,OAAO,SAASA,OAAO,MACtDvE,KAAKq1B,MAAQr1B,KAAKg1B,MAAMzwB,OAAO,SAC/BvE,KAAKs1B,MAAQt1B,KAAKg1B,MAAMzwB,OAAO,SAASA,OAAO,MAC/CvE,KAAKu1B,SAAWxxB,EAAQQ,OAAO,OAAO4tB,QAAQ,gBAAgB,GAC9DnyB,KAAKw1B,cAAgBx1B,KAAKu1B,SAAShxB,OAAO,SAC1CvE,KAAKy1B,aAAez1B,KAAKw1B,cAAcjxB,OAAO,SAC9CvE,KAAK01B,gBAAkB11B,KAAKy1B,aAAalxB,OAAO,MAChDvE,KAAK21B,aAAe31B,KAAKw1B,cAAcjxB,OAAO,SAC9CvE,KAAK41B,aAAe51B,KAAKw1B,cAAcjxB,OAAO,SAC9CvE,KAAK61B,gBAAkB71B,KAAK41B,aAAarxB,OAAO,MAEhDvE,KAAKuzB,SACAzrB,MAAM,WAAY,O,EAI3BmrB,EAAAxzB,UAAA0E,OAAA,SAAOL,EAASC,GACZhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GACtB,IAAMC,EAAUhE,KACVwP,EAAUxL,EAAQiwB,eAClB5vB,EAAOL,EAAQkwB,YACf9rB,EAAapI,KAAKuzB,SAASnuB,OAAOgD,WACxCpI,KAAKg0B,mBAAqBh0B,KAAKy0B,qBAAqBjlB,EAASnL,GAE7DrE,KAAK+D,UAAUK,UAAU,qBAAqB0D,MAAM,QAAS,OAEzD9H,KAAK81B,2BAA8B91B,KAAK+1B,wBAA0B/1B,KAAKg2B,oBAAsBh2B,KAAKi2B,kBAAoBj2B,KAAKk2B,eAC3HjkB,UAAQkkB,UAAU9xB,EAAM,CAAC,CAAEuJ,IAAK5N,KAAKg2B,mBAAoBI,QAASp2B,KAAKk2B,gBACvEl2B,KAAK+1B,sBAAwB/1B,KAAKg2B,mBAClCh2B,KAAKi2B,gBAAkBj2B,KAAKk2B,cAGhCl2B,KAAKq2B,kBAAmB,EAEpBr2B,KAAK0zB,cACL1zB,KAAK2zB,MAAQ3zB,KAAKm1B,WAElBn1B,KAAK2zB,MAAQ3zB,KAAKo1B,aAEtBp1B,KAAKi1B,UAAUntB,MAAM,UAAW9H,KAAK0zB,cAAgB,YAAc,QACnE1zB,KAAKo1B,aAAattB,MAAM,UAAW9H,KAAK0zB,cAAgB,OAAS,aAEjE,IAAM4C,EAAQt2B,KAAK2zB,MAAMvvB,UAAU,MAAMC,KAAKrE,KAAKyzB,aAAejkB,EAAQT,QAAO,SAAUolB,EAAKvmB,GAC5F,OAAQ5J,EAAQ4vB,SAAShmB,KAAqD,IAA7C5J,EAAQgwB,mBAAmBhlB,QAAQpB,EACxE,IAAK,IACC2oB,EAAWD,EAAMzyB,QAAQU,OAAO,MACjCoQ,MAAK,SAAUzV,GACZ,IAAMs3B,EAAW7iB,SAAS3T,MAC1Bw2B,EACKjyB,OAAO,QACPC,KAAK,QAAS,UAEnBgyB,EACKjyB,OAAO,QACPC,KAAK,QAAS,SAEvB,IACCP,GAAG,SAAS,SAAUoL,EAAQzB,GAC3B5J,EAAQyyB,YAAYpnB,EAAQzB,EAChC,IACCyH,MAAMihB,GACNxuB,MAAM,mBAAoB9H,KAAK02B,2BAC/B5uB,MAAM,eAAgB9H,KAAK22B,wBAC3B7uB,MAAM,QAAS9H,KAAK42B,kBACpB9uB,MAAM,YAAa9H,KAAK62B,iBA0B7B,GAxBAN,EAASjhB,OAAO,WACXxN,MAAM,cAAe9H,KAAK82B,mBAC1BjpB,MAAK,SAAUwB,EAAQzB,GACpB,IAAMmpB,EAAY/yB,EAAQswB,gBAAgB1mB,GAC1C,OAAO5J,EAAQ4K,OAAO,EAAGmoB,GAAW1C,UAAUhlB,EAClD,IAEJknB,EAASjhB,OAAO,WACXzH,MAAK,SAAUwB,EAAQzB,GACpB,OAAI5J,EAAQkyB,aACDlyB,EAAQgyB,qBAAuBpoB,EAAM,IAAW,GAEhD5J,EAAQgyB,qBAAuBpoB,EAAM,IAAW,EAE/D,IAEJ0oB,EAAMlnB,OACDvG,SAEL0tB,EAASvD,QAELhzB,KAAKg3B,mBACLh3B,KAAKi3B,WAAW5yB,EAAKZ,QAAUsF,SAAS/I,KAAKg3B,oBAE7Ch3B,KAAKi3B,aAAc,CACc,OAA7Bj3B,KAAKkzB,WAAW/mB,UAChBnM,KAAKkzB,WAAW/mB,OAAOpI,EAAQqB,QAGnC,IAAM8xB,EAAMl3B,KAAKm3B,iBAAiBZ,GAClCv2B,KAAKwyB,aAAa0E,GAElBl3B,KAAKkzB,WAAWX,SAASluB,EAAKZ,QAC9BzD,KAAK8xB,WAAa9pB,KAAK+H,KAAK/P,KAAKkzB,WAAWX,WAAavyB,KAAKwyB,iBAAmB,GAC7ExyB,KAAKqyB,aAAeryB,KAAK8xB,YAAc9xB,KAAKqyB,cAAgB,IAAKryB,KAAKqyB,WAAW,GAErFryB,KAAKkzB,WAAWZ,UAAY,SAAU9yB,EAAGN,GACrC8E,EAAQquB,WAAW7yB,GACnBwE,EAAQ8sB,QAEZ,CACH,MACG9wB,KAAKkzB,WAAWX,SAAS,GAI7B,IAAM6E,EAAap3B,KAAKqyB,aAAe,EACjCgF,EAAcr3B,KAAKwyB,eAEnBpiB,EAAQgnB,EAAaC,EACrB7mB,EAAM4mB,EAAaruB,SAASsuB,GAAetuB,SAASsuB,GAEtDC,EAAQ,KAGRA,EADAt3B,KAAKu3B,OACGlzB,EAAK4G,MAAM,EAAGjL,KAAKu3B,QACpBv3B,KAAKi3B,aACJ5yB,EAAK4G,MAAMmF,EAAOI,GAElBnM,EAGZ,IAAMmzB,EAAkB,CAACx3B,KAAKy3B,gBAAkBz3B,KAAKy3B,gBAAkB,MACvE,GAAsC,IAAlCz3B,KAAK03B,kBAAkBj0B,OAAc,CACrC,IAAK,IAAIuB,EAAI,EAAGA,EAAIhF,KAAK03B,kBAAkBj0B,OAAQuB,IAAKhF,KAAK03B,kBAAkB1yB,IAAMhF,KAAK03B,kBAAkB1yB,GAC5G,IAAK,IAAI4mB,EAAI,EAAGA,EAAIpc,EAAQ/L,OAAQmoB,IAAK,CACrC,IAAI+L,EAAM,EACV,IAA2C,IAAvC33B,KAAK03B,kBAAkB1oB,QAAQ4c,GAAW,CAC1C,IAAK,IAAI9kB,EAAI,EAAGA,EAAIwwB,EAAM7zB,OAAQqD,IAC9B6wB,GAAYL,EAAMxwB,GAAG8kB,GAEzB4L,EAASlnB,KAAKqnB,EACjB,MACGH,EAASlnB,KAAK,GAErB,CAED,IAAMsnB,EAAQ53B,KAAKs1B,MAAMlxB,UAAU,MAAMC,KAAKmzB,GAC9CI,EAAM/zB,QACDU,OAAO,MACP8Q,MAAMuiB,GACN9vB,MAAM,mBAAoB9H,KAAK63B,2BAC/B/vB,MAAM,eAAgB9H,KAAK83B,wBAC3BhwB,MAAM,QAAS9H,KAAK+3B,kBACpBjwB,MAAM,YAAa9H,KAAKg4B,iBAC5Bh4B,KAAKi4B,sBAAwB,OAAS,SAAQ,SAAU/4B,EAAG0O,GACxD,OAAO5J,EAAQoO,SAASxE,GAAKymB,UAAUn1B,EAC3C,IACA04B,EAAMxoB,OACDvG,QAER,CAED,IAAMqvB,EAAUl4B,KAAKq1B,MAAMjxB,UAAU,SAAWpE,KAAKkO,MAAM7J,KAAKizB,EAAM5pB,KAAI,SAAUxO,EAAG0O,GAEnF,IAAK,IAAI5I,EAAI,EAAGA,EAAI9F,EAAEuE,SAAUuB,OACfmU,IAATja,EAAE8F,KACF9F,EAAE8F,GAAK,MAGf,MAAO,CACHiK,OAAQrB,EACRD,IAAKzO,E,KAGPi5B,EAAaD,EAAQr0B,QAAQU,OAAO,MACrCC,KAAK,QAAS,MAAQxE,KAAKkO,MAC3BjK,GAAG,sBAAsB,SAAUm0B,GAChC,GAAIA,EAAGzqB,IAAK,CACR,IAAMzO,EAAIk5B,EAAGzqB,IACP3I,EAAIozB,EAAGnpB,OACbjL,EAAQq0B,kBAAkBn5B,EAAG8F,GAC7BhB,EAAQs0B,eAAet0B,EAAQu0B,WAAWvzB,IAC1ChB,EAAQw0B,uBAAuBx0B,EAAQy0B,YAAYzzB,GACtD,CACL,IAAG,GACFf,GAAG,aAAa,SAAUm0B,GACvB,GAAIA,EAAGzqB,IAAK,CACR,IAAM3I,EAAIozB,EAAGnpB,OACPypB,EAAgB10B,EAAQy0B,YAAYzzB,GACrC0zB,EAAcC,SACfD,EAAcvG,QAAQ,SAAS,GAEnC,IAAMyG,EAAY50B,EAAQu0B,WAAWvzB,GACrC4zB,EAAUzG,QAAQ,SAAS,GAC3BnuB,EAAQ60B,iBAAiBD,GACzB50B,EAAQw0B,uBAAuBE,EAClC,CACL,IACCz0B,GAAG,YAAY,SAAUm0B,GACtB,GAAIA,EAAGzqB,IAAK,CACR,IAAM3I,EAAIozB,EAAGnpB,OACPypB,EAAgB10B,EAAQy0B,YAAYzzB,GAC1C0zB,EAAcvG,QAAQ,SAAS,GAC/B,IAAMyG,EAAY50B,EAAQu0B,WAAWvzB,GACrC4zB,EAAUzG,QAAQ,SAAS,GAC3BnuB,EAAQ60B,iBAAiBD,GACzB50B,EAAQw0B,uBAAuBE,EAClC,CACL,IACCrjB,MAAM6iB,GACN/F,QAAQ,YAAY,SAAUiG,GAC3B,IAAMl5B,EAAIk5B,EAAGzqB,IACb,OAAO3J,EAAQmvB,cAAc2F,WAAW90B,EAAQ+0B,uBAAuB75B,GAC3E,IACCizB,QAAQ,OAASnyB,KAAKg5B,KAAK,GAEhCd,EAAQ9oB,OACHvG,SAEL7I,KAAK64B,iBAAiBV,GAEtB,IAAMc,EAAWd,EAAW/zB,UAAU,OAASpE,KAAKkO,MAAM7J,MAAK,SAAU+zB,EAAIc,GACzE,OAAOd,EAAGzqB,IAAIoB,QAAO,SAAUoqB,EAAMvrB,GACjC,OAAOA,EAAM4B,EAAQ/L,SAAWO,EAAQ4vB,SAAShmB,KAAqD,IAA7C5J,EAAQgwB,mBAAmBhlB,QAAQpB,EAChG,IAAGF,KAAI,SAAUyrB,EAAMvrB,GACnB,MAAO,CACHwrB,QAAShB,EACTvE,OAAQjmB,EACRurB,KAAIA,EAEZ,GACJ,IACAF,EAASp1B,QACJU,OAAO,MACPC,KAAK,QAAS,MAAQxE,KAAKkO,MAC3BjK,GAAG,SAAS,SAAUo1B,GACfA,EAAWD,SACXp1B,EAAQkL,MAAMlL,EAAQmL,SAASkqB,EAAWD,QAAQzrB,KAAM3J,EAAQwL,UAAU6pB,EAAWxF,QAAS7vB,EAAQmvB,cAAc2F,WAAW90B,EAAQ+0B,uBAAuBM,EAAWD,QAAQzrB,MAEzL,IACC1J,GAAG,YAAY,SAAUo1B,EAAYzrB,GAC9ByrB,EAAWD,SACXp1B,EAAQ+R,SAAS/R,EAAQmL,SAASkqB,EAAWD,QAAQzrB,KAAM3J,EAAQwL,UAAU6pB,EAAWxF,QAAS7vB,EAAQmvB,cAAc2F,WAAW90B,EAAQ+0B,uBAAuBM,EAAWD,QAAQzrB,MAE5L,IACCgH,MAAK,SAAU0kB,EAAYC,GACxB,IAAMC,EAAYv1B,EAAQw1B,mBAAmBH,EAAWD,QAAQnqB,OAAQoqB,EAAWxF,OAAQwF,EAAWF,MAC3FxlB,SAAS3T,MAEf8H,MAAM,SAAU,MAChBA,MAAM,aAAcyxB,GACpBzxB,MAAM,iBAAkB9D,EAAQy1B,iBAChCtH,QAAQ,MAAQkH,EAAWD,QAAQnqB,OAAS,OAASqqB,GAAO,EAErE,IACCjkB,MAAM4jB,GACNtkB,MAAK,SAAU0kB,GACZ,IAAM9tB,EAAKoI,SAAS3T,MACpB,GAAIq5B,EAAWF,gBAAgBO,SAAQ,CACnCnuB,EAAGvH,EAAQi0B,sBAAwB,OAAS,QAAQ,MACpD,IAAM0B,EAAYpuB,EAAGnH,UAAU,QAAUJ,EAAQkK,MAAM7J,KAAK,CAACg1B,EAAWF,OAAO,SAAUj6B,GAAU,OAAOA,EAAEgP,IAAK,IACjHyrB,EAAUvqB,OACLuF,MAAK,SAAUzV,GACZA,EAAEiN,OAAO,KACb,IACCtD,SAEL8wB,EAAU91B,QAAQU,OAAO,OACpBC,KAAK,QAAS,OAASR,EAAQkK,MAC/BpG,MAAM,QAAS9D,EAAQ41B,iBAAmB,MAC1C9xB,MAAM,SAAU9D,EAAQ61B,kBAAoB,MAC5CllB,MAAK,SAAUzV,GACZ,IAAM46B,EAAanmB,SAAS3T,MAC5Bd,EAAE66B,cAAgB/1B,EACd9E,EAAEqG,OAAOyJ,QAAQ,eAAiB,IAClC9P,EAAEqG,OAAS,eAAiBrG,EAAEqG,QAElCrG,EACKiN,OAAO,MACPA,OAAO2tB,EAAW10B,OAE3B,IACCiQ,MAAMskB,GACNhlB,MAAK,SAAUzV,GACZA,EACKwI,SACAsyB,aAELh2B,EAAQqyB,kBAAmB,CAC/B,GAEP,KAAM,CACH9qB,EAAGnH,UAAU,QAAUJ,EAAQkK,MAAMrF,SACrC,IAAMkuB,EAAY/yB,EAAQswB,gBAAgB+E,EAAWxF,QACrDtoB,EAAGvH,EAAQi0B,sBAAwB,OAAS,QACxCj0B,EAAQ4K,MAAMyqB,EAAWD,QAAQnqB,OAAQ8nB,GAAW1C,UAAUgF,EAAWF,MAEhF,CACL,IAEJF,EAAS7pB,OACJvG,SAEL,IAAMoxB,EAAoBlxB,SAAS/I,KAAK2zB,MAAMvuB,OAAO+D,cAEjDnJ,KAAKi3B,cAAgBj3B,KAAKq2B,kBAC1Br2B,KAAKuzB,SAASzrB,MAAM,aAAc,QAClC9H,KAAKg1B,MAAMltB,MAAM,gBAAiB,QAClCqV,QAAQuF,KAAK,wFAEb1iB,KAAKuzB,SAASzrB,MAAM,aAAc,MAClC9H,KAAKg1B,MAAMltB,MAAM,gBAAiB,OAGtC9H,KAAK2sB,KAAK3sB,KAAKgsB,OAEf,IAAIkO,EAAgB,EACdC,EAAgBn6B,KAAK01B,gBAAgBtxB,UAAU,MAAMC,KAAKrE,KAAKo6B,eAAiBp6B,KAAKyzB,aAAe,CAACjkB,EAAQ,IAAM,IACnH6qB,EAAmBF,EAAct2B,QAAQU,OAAO,MACjDoQ,MAAK,SAAUzV,GACZ,IAAMs3B,EAAW7iB,SAAS3T,MAC1Bw2B,EACKjyB,OAAO,QACPC,KAAK,QAAS,UAEnBgyB,EACKjyB,OAAO,QACPC,KAAK,QAAS,SAEvB,IACCP,GAAG,SAAS,SAAUoL,EAAQzB,GAC3B5J,EAAQyyB,YAAYpnB,EAAQzB,EAChC,IACCyH,MAAM8kB,GACNryB,MAAM,mBAAoB9H,KAAK02B,2BAC/B5uB,MAAM,eAAgB9H,KAAK22B,wBAC3B7uB,MAAM,QAAS9H,KAAK42B,kBACpB9uB,MAAM,YAAa9H,KAAK62B,iBAE7BwD,EAAiB/kB,OAAO,WACnBxN,MAAM,cAAe9H,KAAK82B,mBAC1BjpB,MAAK,SAAUwB,GACZ,OAAOA,CACX,IAEJgrB,EAAiB/kB,OAAO,WACnBzH,MAAK,SAAUwB,EAAQzB,GACpB,OAAI5J,EAAQkyB,aACDlyB,EAAQgyB,qBAAuBpoB,EAAM,IAAW,GAEhD5J,EAAQgyB,qBAAuBpoB,EAAM,IAAW,EAE/D,IAEJusB,EAAc/qB,OACTvG,SAGL,IAAMyxB,EAAgBt6B,KAAK21B,aAAavxB,UAAU,MAAMC,KAAKrE,KAAKo6B,cAAgB9C,EAAQ,IACpFiD,EAAmBD,EAAcz2B,QAAQU,OAAO,MACjDC,KAAK,SAAS,WACX,MAAO,OAASR,EAAQg1B,GAC5B,IACC3jB,MAAMilB,GACNr2B,GAAG,SAAS,SAAU/E,EAAG8F,GACrB2O,SAASwkB,EAAW,GAAGnzB,IAAIf,GAAG,qBAA9B0P,CAA4DwkB,EAAW9zB,OAAOW,GAAIA,EAEvF,IACCf,GAAG,aAAa,SAAU/E,EAAG8F,GACzB2O,SAASwkB,EAAW,GAAGnzB,IAAIf,GAAG,YAA9B0P,CAAmDwkB,EAAW9zB,OAAOW,GAAIA,EAE9E,IACCf,GAAG,YAAY,SAAU/E,EAAG8F,GACxB2O,SAASwkB,EAAW,GAAGnzB,IAAIf,GAAG,WAA9B0P,CAAkDwkB,EAAW9zB,OAAOW,GAAIA,EAE7E,IACCmtB,QAAQ,YAAY,SAAUjzB,GAC3B,OAAO8E,EAAQmvB,cAAc2F,WAAW90B,EAAQ+0B,uBAAuB75B,GAC3E,IAEJo7B,EAAclrB,OACTvG,SAEL,IAAM2xB,EAAgBD,EAAiBn2B,UAAU,MAAMC,MAAK,SAAUnF,EAAG8F,GACrE,MAAO,CAAC9F,EAAE,GACd,IACMu7B,EAAmBD,EAAc32B,QAAQU,OAAO,MACjD8Q,MAAMmlB,GAAex6B,KAAKi4B,sBAAwB,OAAS,SAAQ,SAAU/4B,GAC1E,MAAmB,iBAAf,EACOA,EAAE4X,OACa,iBAAf,EACA5X,EAEJ,EACX,IACJs7B,EAAcprB,OACTvG,SAGL,IAkDIkkB,EAlDE2N,EAAoB16B,KAAK61B,gBAAgBzxB,UAAU,MAAMC,KAAKrE,KAAKo6B,eAAiBp6B,KAAKy3B,gBAAkB,CAACz3B,KAAKy3B,iBAAmB,IACpIkD,EAAuBD,EAAkB72B,QAAQU,OAAO,MACzD8Q,MAAMqlB,GAAmB16B,KAAKi4B,sBAAwB,OAAS,SAAQ,SAAU/4B,GAC9E,MAAmB,iBAAf,EACOA,EAAE4X,OACa,iBAAf,EACA5X,EAEJ,EACX,IA6CJ,GA5CAw7B,EAAkBtrB,OACbvG,SAGD7I,KAAKo6B,gBAAkBp6B,KAAK46B,aAAeD,EAAqBl3B,SAC5DzD,KAAKyzB,cACWkH,EAAqBvI,SAAS,eAAiBuI,EAAqBvI,SAAS,eAA7F8H,EAA8GS,EAAqBvI,SAAS,gBAE5I8H,EAAgBS,EAAqBvI,SAAS,eAElDpyB,KAAKu1B,SACAztB,MAAM,WAAY,YAClBA,MAAM,cAAe9H,KAAKuzB,SAASnB,SAAS,aAAe6H,EAAoB,MAEpFQ,EACK3yB,MAAM,QAASoyB,EAAgB,MAEpCl6B,KAAKy1B,aACA3tB,MAAM,WAAY,YAClBA,MAAM,cAAe9H,KAAK0zB,cAAgB1zB,KAAKuzB,SAASnB,SAAS,aAAe,GAAK6H,EAAoB,MAE9GI,EACKvyB,MAAM,QAASoyB,EAAgB,MAEpC/B,EAAWxjB,MAAK,SAAUzV,EAAG8F,GACzB,IAAMmP,EAASR,SAAS3T,MAAMsV,OAAO,MAAM8c,SAAS,gBACpDze,SAAS8mB,EAAiBz1B,GAAG,IAAI8C,MAAM,SAAUqM,EAAS,KAC9D,KAGJnU,KAAKg1B,MACAltB,MAAM,eAAgBoyB,EAAgB,MAE3Cl6B,KAAKuzB,SACAzrB,MAAM,cAAeoyB,EAAgB,MACrCpyB,MAAM,QAAS9H,KAAKyI,QAAUyxB,EAAgB,MAG9C/B,EAAWQ,SAAS34B,KAAK66B,gBAAgB1C,GAM1Cn4B,KAAK46B,YAAa,CAClB,IAGQE,EACAC,EAJF31B,EAAOuO,SAAS,qBAAqBvO,OAC3C,GAAIA,EAIkB,KAHlB2nB,EAAO3nB,EAAayC,yBAGZY,OAA8B,IAAfskB,EAAI5Y,QACvB6mB,IACAC,MAEIlO,EAAI5Y,OAAS8lB,GAAqBj2B,EAAQuvB,SAASnB,SAAS,gBAC5D6I,IAEIj3B,EAAQ0vB,eACRoH,EAAiB92B,EAAQuvB,SAASnB,SAAS,gBAC3C0I,GAAkC,MAElCA,EAAiB,OAGrB/N,EAAItkB,MAAQyxB,EAAgBl2B,EAAQuvB,SAASnB,SAAS,eACtD4I,IAEIh3B,EAAQo2B,eACRW,EAAa/2B,EAAQuvB,SAASnB,SAAS,eAAiB8H,EACxDa,GAA0B,MAE1BA,EAAa,QAIrBh3B,EAAQouB,QAAQ,iBAChBnuB,EAAQ+wB,oBACHjtB,MAAM,QAASizB,EAAa,MAC5BjzB,MAAM,SAAUgzB,EAAiB,MAEtC92B,EAAQuvB,SACHzrB,MAAM,WAAY,WAG3B9D,EAAQ2oB,KAAK,CAAElkB,MAAOsyB,EAAY5mB,OAAQ2mB,GAEjD,CAID,SAASE,IACiBjO,EAAItkB,MACfzE,EAAQqxB,MAAMjD,SAAS,c,CAKtC,SAAS6I,IACYj3B,EAAQqxB,MAAMjD,SAAS,e,CAV5CpyB,KAAKk7B,kBAAkBl7B,KAAKuzB,SAASnuB,OAAQ60B,GAc7Cj6B,KAAKkzB,WAAWpC,SAChB1vB,YAAW,WACP4C,EAAQkvB,WACHxqB,OAAO1E,EAAQm3B,WAAWp3B,GAAWq3B,WAASC,oBAAsB,GAAKr3B,EAAQsvB,wBACjFhrB,QAAQtE,EAAQs3B,WAAWv3B,GAAWq3B,WAASC,oBAAsB,GAAKr3B,EAAQsvB,wBAClFxC,QAAO,WACJ9sB,EAAQuvB,SAASnuB,OAAOgD,WAAaA,CACzC,G,GAEL,E,EAGP6qB,EAAAxzB,UAAA2P,KAAA,SAAKtL,EAASC,GACV/D,KAAKkzB,WAAW/mB,OAAO,MACvBpJ,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAGxBkvB,EAAexzB,UAAAo7B,gBAAf,SAAgBU,GACZ,IACMC,EAAWD,EAAKxsB,QAAO,SAAU7P,EAAG8F,GAAK,OAAa,IAANA,CAAQ,IAE1Dy2B,EAAM9nB,SAAS,MACnB6nB,EAAS7mB,MAAK,SAAUzV,GACpBu8B,EAAMC,YAAY17B,KAAK6K,WAC3B,IAEA,IAAMovB,EAAoBj6B,KAAK0zB,cAAgB1zB,KAAK2zB,MAAMvB,SAAS,gBAAkB,EACjFuJ,EAAa,EACXC,EAAW,GAEjBH,EAAI9mB,MAAK,SAAUzV,EAAG8F,GAClB42B,EAAS52B,GAAMhF,KAAa67B,WAChC,IAEW77B,KAAK2zB,MAAMvvB,UAAU,MAC7BuQ,MAAK,SAAUzV,EAAG8F,GACjB,IAAM82B,EAAU97B,KAAK67B,YACfE,EAAUN,EAAI9C,QAAU,EAAIiD,EAAS52B,GACrCg3B,EAAWF,GAAWC,EAAUD,EAAUC,EAChD/7B,KAAK8H,MAAMW,MAAQuzB,EAAW,KAC9BP,EACK1sB,QAAO,SAACqpB,EAAIxqB,GAAQ,OAAQ,IAARA,CAAA,IACpB+G,MAAK,WACFhB,SAAS3T,MAAM8H,MAAM,QAASk0B,EAAW,KAC7C,IAEJL,GAAcK,CAClB,IACAh8B,KAAK2zB,MACA7rB,MAAM,WAAY9H,KAAK0zB,cAAgB,WAAa,YACpD5rB,MAAM,QAAS6zB,EAAa,MAC5B7zB,MAAM,aAAc,OAEzB9H,KAAKg1B,MACAltB,MAAM,QAAS6zB,EAAa,MAEjC37B,KAAKuzB,SACAzrB,MAAM,cAvCK9H,KAuCkB0zB,cAAgBuG,EAAoB,GAAK,MAE3Ej6B,KAAKq1B,MACAvtB,MAAM,QAAS6zB,EAAa,K,EAIrC1I,EAAUxzB,UAAA84B,WAAV,SAAWvzB,GACP,OAAOhF,KAAKg1B,MAAM5wB,UAAU,gBAAkBpE,KAAKg5B,KAC9CjqB,QAAO,SAAU7P,EAAG0O,GACjB,OAAOA,IAAQ5I,CACnB,G,EAIRiuB,EAAWxzB,UAAAg5B,YAAX,SAAYzzB,GACR,OAAOhF,KAAKkF,SAASd,UAAU,0BAC1B2K,QAAO,SAAU7P,EAAG0O,GACjB,OAAOA,IAAQ5I,CACnB,G,EAIRiuB,EAAAxzB,UAAAy7B,kBAAA,SAAkBe,EAAYC,GAC1B,IAAMl4B,EAAUhE,KAChBi8B,EAAWE,SAAW,SAAUl6B,GAC5B,IAAMm6B,EAAWn6B,EAAEkK,OAAO3D,UACpB6zB,EAAYp6B,EAAEkK,OAAO/D,WACvBpE,EAAQ0vB,eACR1vB,EAAQ2vB,MACH7rB,MAAM,eAAgBu0B,EAAY,MAGvCr4B,EAAQo2B,gBACRp2B,EAAQuxB,SACHztB,MAAM,cAAes0B,EAAWF,EAAa,MAE9Cl4B,EAAQ0vB,eACR1vB,EAAQyxB,aACH3tB,MAAM,aAAcs0B,EAAWF,EAAa,MAI7D,C,EAGJjJ,EAAAxzB,UAAA68B,iBAAA,WACI,IAAMC,EAAOv8B,KAAKq1B,MAAM9wB,OAAO,MAE/B,OADAg4B,EAAKh4B,OAAO,MAAMsJ,KAAK,OAChB0uB,C,EAGXtJ,EAAsBxzB,UAAAs5B,uBAAtB,SAAuB75B,GACnB,IAAM8E,EAAUhE,KAChB,MAAO,CACHg5B,IAAK95B,EACL6E,QAAS,WAAM,OAAAC,EAAQqxB,MAAQrxB,EAAQqxB,MAAMjxB,UAAU,MAAM2K,QAAO,SAAU5J,GAAM,OAAOA,IAAOjG,CAAE,IAAMyU,SAAS,KAAK,E,EAIhIsf,EAAgBxzB,UAAA03B,iBAAhB,SAAiBqF,GACsB,IAA/Bx8B,KAAKkzB,WAAWX,aAChBvyB,KAAKkzB,WAAWX,SAAS,GACzBvyB,KAAKwyB,aAAa,IAEtBxyB,KAAKkzB,WAAWpC,SAEhB,IAAM2L,EAAWz8B,KAAK2zB,MAAMvvB,UAAU,MAAMgB,OAASpF,KAAK2zB,MAAMvvB,UAAU,MAAMgB,OAAOs3B,aAAe,EAChGC,EAAc38B,KAAKs1B,MAAMlxB,UAAU,MAAMgB,OAASpF,KAAKs1B,MAAMlxB,UAAU,MAAMgB,OAAOs3B,aAAe,EACnGE,EAAS58B,KAAKs8B,mBACdO,EAAcD,EAAOx3B,OAAOs3B,aAClCE,EAAO/zB,SACP,IAAMi0B,EAAkB98B,KAAKi7B,WAAWj7B,KAAKkzB,WAAWnvB,WACpDmzB,EAAMlvB,KAAK8H,OAAO9P,KAAKmU,SAAWsoB,EAAWE,EAAcG,GAAmB98B,KAAKg1B,MAAMltB,MAAM,UAAY9H,KAAKg1B,MAAMltB,MAAM,SAAWszB,WAASC,oBAAsB,GAAmC,EAA9Br7B,KAAKszB,wBAA8BuJ,IAAgB,EAIlO,OAHsC,IAAlC78B,KAAK03B,kBAAkBj0B,SACvByzB,GAAO,GAEJA,C,EAGXjE,EAAIxzB,UAAAs9B,KAAJ,SAAKnvB,GAQD,OAPI5N,KAAKg2B,qBAAuBpoB,EAC5B5N,KAAKk2B,YAAW,GAEhBl2B,KAAKk2B,YAAYl2B,KAAKk2B,cAE1Bl2B,KAAKg2B,iBAAiBpoB,GAEf5N,I,EAGXizB,EAASxzB,UAAAu9B,UAAT,SAAUxlB,GACN,OAAKhU,UAAUC,QACfzD,KAAKmzB,cAAc8J,IAAIzlB,EAAE9J,KAAI,SAAUC,GACnC,OAAO3N,KAAK+4B,uBAAuBprB,EACvC,GAAG3N,OACIA,MAJuBA,KAAKmzB,cAAcrd,MAAMpI,KAAI,SAAUxO,GAAK,OAAOA,EAAE85B,GAAI,G,EAO3F/F,EAAAxzB,UAAA44B,kBAAA,SAAkBn5B,EAAG8F,GACjB,GAAIhF,KAAKk9B,eAAiBnK,YAAUoK,UAAYn9B,KAAKqzB,oBAAqB,CACtE,IAAI+J,GAAU,EACRC,EAAO,GACPL,EAAYh9B,KAAKk0B,YAAYnlB,QAAO,SAAUpB,EAAK2vB,GACrD,IAAIC,GAAiB,EAQrB,OAPI5vB,IAAQzO,GAAKyO,IAAQ3N,KAAKqzB,sBACtB+J,IACAG,GAAiB,GAErBH,GAAWA,EACXC,EAAK/sB,KAAKgtB,IAEPF,GAAWG,C,GACnBv9B,MACHA,KAAKg9B,UAAUA,EAClB,MAAM,GAAIh9B,KAAKk9B,cACZl9B,KAAKmzB,cAAcjkB,MAAMlP,KAAK+4B,uBAAuB75B,GAAI6zB,WACzD/yB,KAAKqzB,oBAAsBn0B,MACxB,CACH,IAAMs+B,EAASx9B,KAAK+4B,uBAAuB75B,GAC3Cc,KAAKmzB,cAAcjkB,MAAMsuB,EAAQ,CAAEC,QAASz9B,KAAKmzB,cAAc2F,WAAW0E,KAC1Ex9B,KAAKqzB,oBAAsBn0B,CAC9B,CACDc,KAAK8wB,Q,EAGTmC,EAAmBxzB,UAAAi+B,oBAAnB,SAAoB/vB,GAEhBA,EACK7F,MAAM,QAFK9H,KAEY29B,0BACvB71B,MAAM,mBAHK9H,KAGuB49B,+B,EAG3C3K,EAAsBxzB,UAAAo+B,uBAAtB,SAAuBlwB,GAEnBA,EACK7F,MAAM,QAFK9H,KAEY89B,6BACvBh2B,MAAM,mBAHK9H,KAGuB+9B,kC,EAG3C9K,EAAAxzB,UAAA64B,eAAA,SAAe3qB,EAAKqwB,QAAA,IAAAA,OAA2B,GAC3C,IAAMC,EAAUtwB,EAAIuwB,QAAQvwB,IAC5BA,EACK7F,MAAM,QAASk2B,EAAah+B,KAAKm+B,yBAA2Bn+B,KAAKo+B,kBACjEt2B,MAAM,mBAAoBk2B,EAAah+B,KAAKq+B,+BAAiCr+B,KAAKs+B,0BAA4Bt+B,KAAKk0B,YAAYllB,QAAQivB,GAAW,EAAIj+B,KAAKu+B,0BAA4Bv+B,KAAKw+B,kB,EAGrMvL,EAAsBxzB,UAAA+4B,uBAAtB,SAAuB+C,GACnBv7B,KAAK64B,iBAAiB0C,GAAM,E,EAEhCtI,EAAAxzB,UAAAo5B,iBAAA,SAAiB0C,EAAMyC,QAAA,IAAAA,OAA2B,GAC9CA,OAAmC,IAAfA,GAA6BA,EACjD,IAAMh6B,EAAUhE,KAChBu7B,EAAK5mB,MAAK,WACN,IAAM8pB,EAAK9qB,SAAS3T,MAChBy+B,EAAGtM,QAAQ,SACXnuB,EAAQ05B,oBAAoBe,GACrBA,EAAGtM,QAAQ,YAClBnuB,EAAQ65B,uBAAuBY,GAE/Bz6B,EAAQs0B,eAAemG,EAAIT,EAEnC,G,EAIJ/K,EAAAxzB,UAAA+5B,mBAAA,SAAmBvqB,EAAQ4kB,EAAQsF,GAC/B,IAAMpC,EAAY/2B,KAAKs0B,gBAAgBT,GAEvC,OADc7zB,KAAK4O,MAAMK,EAAQ8nB,GACV2H,aACnB,IAAK,SACD,OAAO1+B,KAAK2+B,cAChB,IAAK,SACD,OAAO3+B,KAAK4+B,cAChB,IAAK,GACL,UAAKzlB,EACD,cAAeggB,GACX,IAAK,SACD,OAAOn5B,KAAK2+B,cAChB,IAAK,SACD,OAAO3+B,KAAK4+B,eAG5B,OAAO,I,EAGX3L,EAAAxzB,UAAAo/B,eAAA,WACI,MAAO,CACH7B,UAAWh9B,KAAKmzB,cAAcrd,MAAMpI,KAAI,SAAUxO,GAC9C,OAAOA,EAAE85B,GACb,IACA30B,KAAMrE,KAAKqE,O,EAInB4uB,EAAgBxzB,UAAAq/B,iBAAhB,SAAiBC,GACb,GAAIA,EAAO,CACP,GAAIA,EAAM/B,UAAW,CACjB,IAAMtuB,EAAU1O,KAChBA,KAAKmzB,cAAc8J,IAAI8B,EAAM/B,UAAUtvB,KAAI,SAAUxO,GACjD,OAAOwP,EAAQqqB,uBAAuB75B,E,IAE7C,CACG6/B,EAAM16B,MACNrE,KAAKqE,KAAK06B,EAAM16B,KAEvB,CACD,OAAOrE,I,EAGXizB,EAAAxzB,UAAAyP,MAAA,SAAMvB,EAAK0B,EAAQC,G,EAGnB2jB,EAAAxzB,UAAAsW,SAAA,SAASpI,EAAK0B,EAAQC,G,EAGtB2jB,EAAAxzB,UAAAg3B,YAAA,SAAYpnB,EAAQzB,GAChB5N,KACK+8B,KAAKnvB,GACLkjB,Q,EA8DZmC,CAAD,CAz9BA,CAA2B3tB,cA09B3B2tB,GAAMxzB,UAAU8F,QAAU,eAE1B0tB,GAAMxzB,UAAU+F,QAAQ,uBAAuB,EAAO,UAAW,sCAAuC,KAAM,CAAEkR,KAAM,CAAC,aACvHuc,GAAMxzB,UAAU+F,QAAQ,cAAc,EAAM,UAAW,+BAAgC,KAAM,CAAEkR,KAAM,CAAC,aACtGuc,GAAMxzB,UAAU+F,QAAQ,kBAAmB,KAAM,SAAU,kEAAmE,KAAM,CAAEkR,KAAM,CAAC,aAC7Iuc,GAAMxzB,UAAUu/B,aAAa,eAAgB,cAC7C/L,GAAMxzB,UAAUu/B,aAAa,aAAc,aAAc,aAAc,GACvE/L,GAAMxzB,UAAUu/B,aAAa,gBAAiB,cAC9C/L,GAAMxzB,UAAU+F,QAAQ,OAAQ,KAAM,SAAU,4DAA6D,KAAM,CAAEkR,KAAM,CAAC,aAC5Huc,GAAMxzB,UAAU+F,QAAQ,SAAS,EAAO,UAAW,eACnDytB,GAAMxzB,UAAU+F,QAAQ,cAAc,EAAM,UAAW,gCAAiC,KAAM,CAAEkR,KAAM,CAAC,aACvGuc,GAAMxzB,UAAU+F,QAAQ,eAAe,EAAM,UAAW,uCAAwC,KAAM,CAAEkR,KAAM,CAAC,aAC/Guc,GAAMxzB,UAAU+F,QAAQ,eAAe,EAAO,UAAW,uCAAwC,KAAM,CAAEkR,KAAM,CAAC,aAChHuc,GAAMxzB,UAAU+F,QAAQ,eAAe,EAAO,UAAW,qBAAsB,KAAM,CAAEkR,KAAM,CAAC,WAE9Fuc,GAAMxzB,UAAU+F,QAAQ,aAAa,EAAO,UAAW,gCAEvDytB,GAAMxzB,UAAU+F,QAAQ,oBAAoB,EAAO,UAAW,qCAE9DytB,GAAMxzB,UAAU+F,QAAQ,gBAAiB,KAAM,SAAU,uBAAwB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACpH0jB,GAAMxzB,UAAU+F,QAAQ,gBAAiB,KAAM,SAAU,uBAAwB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACpH0jB,GAAMxzB,UAAU+F,QAAQ,gBAAiB,KAAM,SAAU,uBAAwB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACpH0jB,GAAMxzB,UAAU+F,QAAQ,iBAAkB,KAAM,aAAc,wBAAyB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC1H0jB,GAAMxzB,UAAU+F,QAAQ,iBAAkB,KAAM,aAAc,wBAAyB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC1H0jB,GAAMxzB,UAAU+F,QAAQ,iBAAkB,KAAM,aAAc,wBAAyB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC1H0jB,GAAMxzB,UAAU+F,QAAQ,kBAAmB,KAAM,SAAU,yBAA0B,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACxH0jB,GAAMxzB,UAAU+F,QAAQ,kBAAmB,KAAM,SAAU,yBAA0B,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACxH0jB,GAAMxzB,UAAU+F,QAAQ,kBAAmB,KAAM,SAAU,yBAA0B,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAExH0jB,GAAMxzB,UAAU+F,QAAQ,uBAAwB,KAAM,aAAc,+BAAgC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACvI0jB,GAAMxzB,UAAU+F,QAAQ,uBAAwB,KAAM,aAAc,+BAAgC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACvI0jB,GAAMxzB,UAAU+F,QAAQ,0BAA2B,KAAM,aAAc,uBAAwB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAClI0jB,GAAMxzB,UAAU+F,QAAQ,0BAA2B,KAAM,aAAc,uBAAwB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAElI0jB,GAAMxzB,UAAU+F,QAAQ,uBAAwB,KAAM,aAAc,+BAAgC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAEvI0jB,GAAMxzB,UAAU+F,QAAQ,0BAA2B,KAAM,aAAc,uBAAwB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAClI0jB,GAAMxzB,UAAU+F,QAAQ,yBAA0B,KAAM,aAAc,qCAAsC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC/I0jB,GAAMxzB,UAAU+F,QAAQ,+BAAgC,KAAM,aAAc,2CAA4C,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAE3J0jB,GAAMxzB,UAAU+F,QAAQ,yBAA0B,KAAM,aAAc,kCAAmC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC5I0jB,GAAMxzB,UAAU+F,QAAQ,+BAAgC,KAAM,aAAc,wCAAyC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAExJ0jB,GAAMxzB,UAAU+F,QAAQ,4BAA6B,KAAM,aAAc,gCAAiC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC7I0jB,GAAMxzB,UAAU+F,QAAQ,kCAAmC,KAAM,aAAc,gCAAiC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IACnJ0jB,GAAMxzB,UAAU+F,QAAQ,kBAAmB,KAAM,aAAc,wBAAyB,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC3H0jB,GAAMxzB,UAAU+F,QAAQ,kBAAmB,GAAI,QAAS,iDAAkD,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,EAAMoH,QAAS,SAACC,GAAW,OAAAA,EAAEkd,OAAO,IACjLb,GAAMxzB,UAAU+F,QAAQ,gBAAiB,KAAM,SAAU,yDAA0D,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,EAAMoH,QAAS,SAACC,GAAW,OAAAA,EAAEkd,OAAO,IAC1Lb,GAAMxzB,UAAU+F,QAAQ,gBAAiB,GAAI,QAAS,+CAAgD,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,EAAMoH,QAAS,SAACC,GAAM,OAAAA,EAAEkd,OAAO,IAExKb,GAAMxzB,UAAU+F,QAAQ,cAAe,OAAQ,MAAO,6BAA8B,CAAC,OAAQ,QAAS,UAAW,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC9I0jB,GAAMxzB,UAAU+F,QAAQ,cAAe,QAAS,MAAO,6BAA8B,CAAC,OAAQ,QAAS,UAAW,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC/I0jB,GAAMxzB,UAAU+F,QAAQ,gBAAiB,KAAM,MAAO,0BAA2B,CAAC,KAAM,SAAU,MAAO,UAAW,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAEjJ0jB,GAAMxzB,UAAU+F,QAAQ,iBAAkB,IAAK,SAAU,kCAAmC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC/H0jB,GAAMxzB,UAAU+F,QAAQ,kBAAmB,IAAK,SAAU,mCAAoC,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAEjI0jB,GAAMxzB,UAAU+F,QAAQ,mBAAoB,KAAM,SAAU,8CAA+C,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IAC9I0jB,GAAMxzB,UAAU+F,QAAQ,cAAc,EAAO,UAAW,yEAA0E,KAAM,CAAEkR,KAAM,CAAC,SAAUnH,UAAU,IClhCrK,SAAS0vB,GAAgBC,GACrB,MAAO,mDAAwDA,EAAW,WAC9E,C,orDAEA,IAAAC,GAAA,SAAAp8B,GAII,SAAAo8B,IAAA,IAAAn8B,EACID,EAAApD,KAAAK,OAIHA,K,OAFGgD,EAAKywB,YAAW,GAChBzwB,EAAKi0B,YAAW,G,EAgLxB,OAxL4Br3B,EAAKu/B,EAAAp8B,GAW7Bo8B,EAAA1/B,UAAA2/B,UAAA,WACI,IAAMC,EAASr/B,KAAKs/B,YACpB,OAAOD,GAAUA,EAAOtrB,UAAuC,YAA3BsrB,EAAOtrB,SAASrI,M,EAKxDyzB,EAAY1/B,UAAA8/B,aAAZ,SAAa/nB,GACT,IAAKhU,UAAUC,OAAQ,OAAOzD,KAAKw/B,cACnCx/B,KAAKw/B,cAAgBhoB,EACjBxX,KAAKy/B,uBACLz/B,KAAKy/B,qBAAqB52B,gBACnB7I,KAAKy/B,sBAEhB,IAAMz7B,EAAUhE,KAWhB,OAVAA,KAAKy/B,qBAAuBz/B,KAAKw/B,cAAcE,SAAQ,SAAU36B,EAAK46B,EAASC,EAASt7B,GACpF,OAAQS,GACJ,IAAK,QACL,IAAK,UACL,IAAK,OACL,IAAK,YACDf,EAAQg2B,aAGpB,IACOh6B,I,EAGXm/B,EAAA1/B,UAAA6/B,UAAA,WACI,OAAIt/B,KAAKw/B,eAEI,qBADDx/B,KAAKw/B,cAAcK,UAEZ7/B,KAAKw/B,cAAcM,QAG/B9/B,KAAKw/B,a,EAGhBL,EAAA1/B,UAAAsgC,WAAA,WACI,IAAMV,EAASr/B,KAAKs/B,YACpB,GAAID,GAAUA,EAAOtrB,SACjB,OAAQsrB,EAAOtrB,SAASrI,QACpB,IAAK,UACD,OAAO8K,UAAQwpB,QAAQX,EAAOtrB,SAAS7F,MAC3C,IAAK,UACD,OAAOsI,UAAQC,QAAQ4oB,EAAOtrB,SAAS7F,MAGnD,OAAOsI,UAAQwpB,QAAQ,U,EAG3Bb,EAAA1/B,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrB4P,SAAS7P,EAAQ8P,YAAY9L,MAAM,aAAc,QAEjD9H,KAAKi4B,qBAAoB,GACzBj4B,KAAK0zB,aAAY,GACjB1zB,KAAK46B,WAAU,GACf72B,EAAQouB,QAAQ,gBAAgB,E,EAGpCgN,EAAA1/B,UAAA0E,OAAA,SAAOL,EAASC,GACZ,IACIk8B,EAAU,GACd,GAAIjgC,KAAKw/B,cAAe,CACpB,IAAMzrB,EAAW/T,KAAK+/B,aACtB,OAAQhsB,EAASrI,QACb,IAAK,UACD,IAAMw0B,EAAWnsB,EACjB,OAAQ/T,KAAKmgC,cACT,IAAK,KACDF,EAAUjgC,KAAKw/B,cAAcn7B,OAAOqJ,KAAI,SAAU8f,GAC9C,MAAO,CAACyR,GAAgBiB,EAAS1S,EAAE,KAAMA,EAAE,G,GAC5CxtB,MACH,MACJ,IAAK,KAEDigC,EADsBjgC,KAAKw/B,cAAchwB,UACjBT,QAAO,SAAUye,EAAGxoB,GAAK,OAAOA,EAAI,CAAE,IAAI0I,KAAI,SAAU8f,GAC5E,MAAO,CAACyR,GAAgBiB,EAAS1S,IAAKA,E,GACvCxtB,MAGX,MACJ,IAAK,UACD,IAAMogC,EAAWrsB,EACXssB,EAAS3tB,SAAS1S,KAAKsgC,iBACvBjB,EAASr/B,KAAKs/B,YACdiB,EAAQvgC,KAAKwgC,cACbC,EAAYpB,EAAOqB,eACnBC,EAAYtB,EAAOuB,eACnBC,GAAkBF,EAAYF,IAAcF,EAAQ,GAC1DN,EAAQ3vB,KAAK,CAAC2uB,GAAgBmB,EAASK,EAAWA,EAAWE,IAAaN,EAAOI,KACjF,IAAK,IAAI3mB,EAAI,EAAGA,EAAIymB,EAAQ,IAAKzmB,EAAG,CAChC,IAAMgnB,EAAMD,EAAiB/mB,EAC7BmmB,EAAQ3vB,KAAK,CAAC2uB,GAAgBmB,EAASU,EAAKL,EAAWE,IAAaN,EAAOr4B,KAAK8H,MAAMgxB,KACzF,CACDb,EAAQ3vB,KAAK,CAAC2uB,GAAgBmB,EAASO,EAAWF,EAAWE,IAAaN,EAAOM,KAG5F,CACD3gC,KAAKwP,QAtCU,CAAC,MAAO,UAuCvBxP,KAAKqE,KAAK47B,GACVl9B,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GAEtBA,EAAQouB,QAAQ,eAAuC,eAAvBnyB,KAAK+gC,eAErC,IAAM/L,EAAQjxB,EAAQuR,OAAO,qBACvB0rB,EAAYhM,EAAM5vB,OAAOyC,wBACzBo5B,EAAcjhC,KAAK+0B,oBAAoB3vB,OAAOyC,wBAEpD9D,EAAQuR,OAAO,aAAaxN,MAAM,WAAY,WAE9C,IAAMO,EAAM44B,EAAY9sB,OAAS,EAAI6sB,EAAU7sB,OAAS,EAClDpM,EAAOk5B,EAAYx4B,MAAQ,EAAIu4B,EAAUv4B,MAAQ,EACvDusB,EACKltB,MAAM,WAAY,YAClBA,MAAM,MAAOO,EAAM,MACnBP,MAAM,OAAQC,EAAO,MAG1B,IAAMqvB,EAAap3B,KAAKqyB,aAAe,EACjCgF,EAAcr3B,KAAKwyB,eAEnBpiB,EAAQgnB,EAAaC,EACrB7mB,EAAM4mB,EAAaruB,SAASsuB,GAAetuB,SAASsuB,GAEtDC,EAAQ,KAERA,EADAt3B,KAAKi3B,aACGj3B,KAAKqE,OAAO4G,MAAMmF,EAAOI,GAEzBxQ,KAAKqE,OAGjB,IAAMk3B,EAAOv7B,KAAKq1B,MAAMjxB,UAAU,MAAMC,KAAKizB,GACvCtzB,EAAUhE,KAChBu7B,EACKt3B,GAAG,SAAS,SAAU/E,EAAG8F,GACtBhB,EAAQk9B,QAAQhiC,EAAG8F,EACvB,IACCf,GAAG,YAAY,SAAU/E,EAAG8F,GACzBhB,EAAQm9B,WAAWjiC,EAAG8F,EAC1B,IACCf,GAAG,aAAa,SAAU/E,EAAG8F,GAC1BhB,EAAQo9B,YAAYliC,EAAG8F,EAC3B,G,EAIRm6B,EAAA1/B,UAAA2P,KAAA,SAAKtL,EAASC,GACN/D,KAAKy/B,uBACLz/B,KAAKy/B,qBAAqB52B,gBACnB7I,KAAKy/B,sBAEhB18B,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAGxBo7B,EAAA1/B,UAAAyhC,QAAA,SAAQG,EAASpyB,G,EAGjBkwB,EAAA1/B,UAAA0hC,WAAA,SAAWE,EAASpyB,G,EAGpBkwB,EAAA1/B,UAAA2hC,YAAA,SAAYC,EAASpyB,G,EAWxBkwB,CAAD,CAxLA,CAA4BlM,IAyL5BkM,GAAO1/B,UAAU8F,QAAU,gBAE3B45B,GAAO1/B,UAAU+F,QAAQ,aAAc,KAAM,MAAO,eAAgB,CAAC,KAAM,KAAM,KAAM,MAAO,MAAO,SAAU,CAAEkR,KAAM,CAAC,aACxHyoB,GAAO1/B,UAAU+F,QAAQ,cAAe,WAAY,MAAO,6BAA8B,CAAC,WAAY,cAAe,CAAEkR,KAAM,CAAC,aAC9HyoB,GAAO1/B,UAAU+F,QAAQ,gBAAiB,IAAK,SAAU,4BAA6B,KAAM,CAAEkR,KAAM,CAAC,WAAYnH,UAAU,EAAMoH,QAAS,SAAAC,GAAK,OAACA,EAAEwoB,WAAW,IAC7JD,GAAO1/B,UAAU+F,QAAQ,cAAe,EAAG,SAAU,yBAA0B,KAAM,CAAEkR,KAAM,CAAC,WAAYC,QAAS,SAAAC,GAAK,OAACA,EAAEwoB,WAAW,IAEtI,IAAMkC,GAAcrO,GAAMxzB,UAAUsvB,QACpCoQ,GAAO1/B,UAAUsvB,QAAU,SAAU9K,EAAShc,GAC1C,IAAMgP,EAASqqB,GAAYrjB,MAAMje,KAAMwD,WACjCwxB,EAAQh1B,KAAK+D,UAAUuR,OAAO,qBACpC,IAAK0f,EAAM2D,QAAS,CAChB,IAAMqI,EAAYhM,EAAM5vB,OAAOyC,wBACzBY,EAAQu4B,EAAUv4B,MAAQ,GAAKzI,KAAKm7B,WAAWn7B,KAAK+0B,qBAAuBqG,WAASC,oBAAsB,GAC1GlnB,EAAS6sB,EAAU7sB,OAAS,GAAKnU,KAAKs7B,WAAWt7B,KAAK+0B,qBAAuBqG,WAASC,oBAAsB,GAClH,MAAO,CACHvhB,EAAG7C,EAAO6C,EACVC,EAAG9C,EAAO8C,EACVtR,OAAQR,EAAQD,KAAKC,MAAMQ,GAASA,GAASzI,KAAKuhC,OAClDptB,QAASlM,EAAQD,KAAKC,MAAMkM,GAAUA,GAAUnU,KAAKuhC,OAE5D,CACD,OAAOtqB,CACX,E,8GCvNA,IAAAuqB,GAAA,SAAAz+B,GAII,SAAAy+B,I,OACIz+B,EAAOpD,KAAAK,W,CAoEf,OAzE+BJ,EAAS4hC,EAAAz+B,GAQpCy+B,EAAA/hC,UAAAoE,MAAA,SAAMC,EAASC,GACX,IAAK/D,KAAKyhC,WAAY,CAClB,IAAM35B,EAAQ9G,OAAOgI,iBAAiBlF,EAAS,MAC/C9D,KAAKyhC,SAAS14B,SAASjB,EAAM25B,UAChC,CACDzhC,KAAK0hC,WAA+B,GAAlB1hC,KAAKyhC,WAAkB,GACzCzhC,KAAK2hC,aAAe59B,EAAQQ,OAAO,I,EAIvCi9B,EAAA/hC,UAAAmiC,SAAA,WACI,IAAM1iC,EAAI,IAAI4B,KACR+gC,EAA+C,IAArC3iC,EAAE4iC,aAAaC,WAAWt+B,OAAe,IAAMvE,EAAE4iC,aAAe5iC,EAAE4iC,aAC5EE,EAA+C,IAArC9iC,EAAE+iC,aAAaF,WAAWt+B,OAAe,IAAMvE,EAAE+iC,aAAe/iC,EAAE+iC,aAC5EC,EAA2C,IAAnChjC,EAAEijC,WAAWJ,WAAWt+B,OAAe,IAAMvE,EAAEijC,WAAajjC,EAAEijC,WACtEC,EAAOljC,EAAEijC,YAAc,GAAK,KAAO,KAGzC,MADa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC5CjjC,EAAE+R,UAAY,IAFX,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAEtD/R,EAAEyS,YAAc,IAAMzS,EAAE4R,UAAY,IAAM5R,EAAE0S,cAAgB,IAAMswB,EAAQ,IAAMF,EAAU,IAAMH,EAAUO,C,EAGrJZ,EAAA/hC,UAAA0E,OAAA,SAAOL,EAASC,GACZ,IAAMC,EAAUhE,KACV6N,EAAO7N,KAAK2hC,aAAav9B,UAAU,QACpCC,KAAKrE,KAAKqE,QAAQ,SAAUnF,GAAK,OAAOA,EAAEgP,EAAG,IAElDL,EACKrJ,KAAK,QAAS,UAEnBxE,KAAKqvB,WAAWpR,MAAMpQ,GACjBrJ,KAAK,KAAK,SAAUtF,EAAG8F,GAAK,QAAShB,EAAQK,OAAOZ,OAAS,EAAIuB,GAAKhB,EAAQ09B,WAAa19B,EAAQ09B,WAAa,CAAE,IAGvH,IAAMW,EAAUx0B,EAAKhK,QAAQU,OAAO,QAC/BC,KAAK,QAAS,SACdA,KAAK,YAAaxE,KAAKyhC,YACvBj9B,KAAK,KAAM,SACXA,KAAK,KAAMxE,KAAKo2B,UAAY,GAAM,GAAKp2B,KAAK0hC,WAAa,GACzDl9B,KAAK,KAAK,SAAUtF,EAAG8F,GAAK,QAAShB,EAAQK,OAAOZ,OAAS,EAAIuB,GAAKhB,EAAQ09B,WAAa19B,EAAQ09B,WAAa,CAAE,IAClH55B,MAAM,eAAgB,MACtBA,MAAM,cAAe9H,KAAKsiC,UAC1Bz0B,MAAK,SAAU3O,GAAK,OAAOA,EAAE2O,IAAK,IAEvC7N,KAAKqvB,WAAWpR,MAAMokB,GACjB79B,KAAK,IAAK,GACVsD,MAAM,eAAgB,GAG3B+F,EAAKuB,OACA5K,KAAK,QAAS,QAEnBxE,KAAKqvB,WAAWpR,MAAMpQ,EAAKuB,QACtB5K,KAAK,KAAMxE,KAAKo2B,WAAa,EAAI,GAAMp2B,KAAK0hC,WAAa,GACzD55B,MAAM,eAAgB,MACtBe,Q,EAWZ24B,CAAD,CAzEA,CAA+BhS,aA0E/BgS,GAAU/hC,UAAU8F,QAAU,mBAE9Bi8B,GAAU/hC,UAAU+F,QAAQ,SAAU,SAAU,MAAO,oBAAqB,CAAC,UAAW,CAAEkR,KAAM,CAAC,WACjG8qB,GAAU/hC,UAAU+F,QAAQ,WAAY,GAAI,SAAU,gBAAiB,KAAM,CAAEkR,KAAM,CAAC,WACtF8qB,GAAU/hC,UAAU+F,QAAQ,WAAW,EAAO,UAAW,oBAAqB,KAAM,CAAEkR,KAAM,CAAC,WAC7F8qB,GAAU/hC,UAAU+F,QAAQ,OAAQ,GAAI,SAAU,2BAA4B,KAAM,CAAEkR,KAAM,CAAC,WAE7F,IAAM6rB,GAAYf,GAAU/hC,UAAUoO,KACtC2zB,GAAU/hC,UAAUoO,KAAO,SAAU2J,GACjC,IAAMP,EAASsrB,GAAUtkB,MAAMje,KAAMwD,WACrC,GAAIA,UAAUC,OAAQ,CAClB,IAAM++B,EAAY,GACZC,EAAQjrB,EAAE9Q,MAAM,IACtB1G,KAAKqE,KAAKo+B,EAAM/0B,KAAI,SAAUxO,GAC1B,IAAMgP,EAAK,IAAMhP,EAKjB,YAJsBia,IAAlBqpB,EAAUt0B,KACVs0B,EAAUt0B,GAAM,GAEpBs0B,EAAUt0B,KACH,CAAEL,KAAM3O,EAAGgP,GAAIhP,EAAEwjC,WAAW,GAAM,KAAOF,EAAUt0B,G,IAEjE,CACD,OAAO+I,CACX,ECnGA,IAAA0rB,GAAA,SAAA5/B,GACI,SAAA4/B,IAAA,IAAA3/B,EACID,EAAApD,KAAAK,OAGHA,K,OAFGgD,EAAK62B,gBAAgB,KACrB72B,EAAK42B,eAAe,K,EAE5B,OANiCh6B,EAAK+iC,EAAA5/B,GAMrC4/B,CAAD,CANA,CAAiC1P,IAOjC0P,GAAYljC,UAAU8F,QAAU,qBAEhC,IAAMq9B,GAAcD,GAAYljC,UAAU+P,QAC1CmzB,GAAYljC,UAAU+P,QAAU,SAAUgI,GACtC,OAAIhU,UAAUC,QACVzD,KAAK6iC,SAAWrrB,EACTorB,GAAYjjC,KAAKK,KAAMwX,EAAE9J,KAAI,SAAUymB,GAC1C,MAAmB,iBAARA,EACAA,EAAI/wB,MAER+wB,C,MAGRyO,GAAY3kB,MAAMje,KAAMwD,UACnC,EAEA,IAAMs/B,GAAWH,GAAYljC,UAAU4E,KACvCs+B,GAAYljC,UAAU4E,KAAO,SAAUmT,GACnC,GAAIhU,UAAUC,OAAQ,CAClB,IAAMiL,EAAU1O,KAChB,OAAO8iC,GAASnjC,KAAKK,KAAMwX,EAAE9J,KAAI,SAAUC,GACvC,OAAOA,EAAID,KAAI,SAAUyrB,EAAMvrB,GAC3B,GAAIurB,aAAgB55B,MAAO,CACvB,IAAIiQ,EAAU,GACd,GAAqC,iBAA1Bd,EAAQm0B,SAASj1B,IAAqBc,EAAQm0B,SAASj1B,GAAK4B,QACnEA,EAAUd,EAAQm0B,SAASj1B,GAAK4B,aAEhC,IAAK,IAAIxK,EAAI,EAAGA,EAAIm0B,EAAK11B,SAAUuB,EAC/BwK,EAAQc,KAAK5B,EAAQm0B,SAASj1B,GAAO,IAAM5I,GAGnD,OAAO,IAAIiuB,IACNzjB,QAAQA,GACRnL,KAAK80B,EAEb,CACD,OAAOA,CACX,G,IAEP,CACD,OAAO2J,GAAS7kB,MAAMje,KAAMwD,UAChC,E,mnCC9CA,IAAAu/B,GAAA,SAAAhgC,GAGI,SAAAggC,I,OACIhgC,EAAOpD,KAAAK,W,CAcf,OAlB4BJ,EAAWmjC,EAAAhgC,GASnCggC,EAAKtjC,UAAAujC,MAAL,SAAMxrB,GACF,OAAKhU,UAAUC,QACfzD,KAAKijC,OAASzrB,EACPxX,MAFuBA,KAAKijC,M,EAKvCF,EAAAtjC,UAAAyjC,MAAA,WACI,QAASljC,KAAKmjC,a,EAErBJ,CAAD,CAlBA,CAA4BK,eAmB5BL,GAAOtjC,UAAU8F,QAAU,4BAM3Bw9B,GAAOtjC,UAAU+F,QAAQ,cAAe,KAAM,SAAU,2BAA2B,WAA0B,OAAOxF,KAAKijC,OAASjjC,KAAKijC,OAAOzzB,UAAY,EAAG,GAAI,CAAEkH,KAAM,CAAC,SAAUnH,UAAU,IAE9L,IAAA8zB,GAAA,SAAAtgC,GAGI,SAAAsgC,I,OACItgC,EAAOpD,KAAAK,W,CAcf,OAlBsCJ,EAAWyjC,EAAAtgC,GAS7CsgC,EAAK5jC,UAAAujC,MAAL,SAAMxrB,GACF,OAAKhU,UAAUC,QACfzD,KAAKijC,OAASzrB,EACPxX,MAFuBA,KAAKijC,M,EAKvCI,EAAA5jC,UAAAyjC,MAAA,WACI,QAASljC,KAAKsjC,gBAAkBtjC,KAAKujC,W,EAE5CF,CAAD,CAlBA,CAAsCD,eAmBtCC,GAAiB5jC,UAAU8F,QAAU,sCAQrC89B,GAAiB5jC,UAAU+F,QAAQ,aAAc,KAAM,SAAU,0BAA0B,WAAc,OAAOxF,KAAKijC,OAASjjC,KAAKijC,OAAOzzB,UAAY,EAAG,GAAI,CAAEkH,KAAM,CAAC,SAAUnH,UAAU,IAC1L8zB,GAAiB5jC,UAAU+F,QAAQ,YAAa,KAAM,MAAO,0BAA0B,WAAc,OAAOxF,KAAKijC,OAASjjC,KAAKijC,OAAOO,SAAW,EAAG,GAAI,CAAE9sB,KAAM,CAAC,SAAUnH,UAAU,IAErL,IAAAk0B,GAAA,SAAA1gC,GAGI,SAAA0gC,I,OACI1gC,EAAOpD,KAAAK,W,CAcf,OAlBoCJ,EAAW6jC,EAAA1gC,GAS3C0gC,EAAKhkC,UAAAujC,MAAL,SAAMxrB,GACF,OAAKhU,UAAUC,QACfzD,KAAKijC,OAASzrB,EACPxX,MAFuBA,KAAKijC,M,EAKvCQ,EAAAhkC,UAAAyjC,MAAA,WACI,QAASljC,KAAK0jC,iBAAmB1jC,KAAK2jC,oB,EAE7CF,CAAD,CAlBA,CAAoCL,eAmBpCK,GAAehkC,UAAU8F,QAAU,oCAQnCk+B,GAAehkC,UAAU+F,QAAQ,cAAe,KAAM,SAAU,+EAAgF,GAAI,CAAEkR,KAAM,CAAC,QAAS,YACtK+sB,GAAehkC,UAAU+F,QAAQ,qBAAsB,KAAM,MAAO,2BAA2B,WAAc,OAAOxF,KAAKijC,OAASjjC,KAAKijC,OAAOO,SAAW,EAAG,GAAI,CAAE9sB,KAAM,CAAC,SAAUnH,UAAU,IAE7L,IAAAq0B,GAAA,SAAA7gC,GAQI,SAAA6gC,IAAA,IAAA5gC,EACID,EAAApD,KAAAK,OAGHA,K,OAFGgD,EAAK6gC,cAAgB,SACrB7gC,EAAK8gC,WAAa,E,EAwV1B,OAnWiClkC,EAASgkC,EAAA7gC,GAatC6gC,EAAAnkC,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrB,IAGMggC,EAA2B,IAAtB/jC,KAAKqE,OAAOZ,OAAS,GAHb,GAInBzD,KAAKwU,IAAMzQ,EAAQQ,OAAO,KACrBC,KAAK,QAA6B,IAAlBxE,KAAK8jC,WAAoB,GACzCt/B,KAAK,SAAUu/B,GACpB/jC,KAAKwU,IAAIjQ,OAAO,QAAQA,OAAO,UAC1B4tB,QAAQ,aAAa,GACrB3tB,KAAK,KAAM,aACXA,KAAK,UAAW,cAChBA,KAAK,OAAQ,GACbA,KAAK,cAAe,GACpBA,KAAK,eAAgB,GACrBA,KAAK,SAAU,QACfD,OAAO,YACPC,KAAK,IAAK,kBACVA,KAAK,OAAQ,oBAClBxE,KAAKgkC,WAAarwB,SAAS,QAAQpP,OAAO,OACrCC,KAAK,QAAS,qCACdsD,MAAM,UAAW,E,EAE1B87B,EAAAnkC,UAAA0E,OAAA,SAAOL,EAASC,GACZhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GACtB,IAAMC,EAAUhE,KACVqE,EAAOrE,KAAKqE,OACZ4/B,EAAiBjkC,KAAKkkC,gBAC5B7/B,EAAK04B,MAAK,SAAUnK,EAAGzzB,GACnB,OAAIyzB,EAAEuR,UAAYhlC,EAAEglC,UAAkB,EAC7BvR,EAAEuR,UAAYhlC,EAAEglC,WAAmB,EAChC,CAChB,IAEA,IADA,IAAMC,EAAS,GACNp/B,EAAI,EAAGA,GAAKhB,EAAQ8/B,WAAY9+B,IACrCo/B,EAAO9zB,KAAKtL,GAEhB,IAAMq/B,EAAa,GACbC,EAAiB,GAEjBP,EAAoB,IAAf1/B,EAAKZ,OAAS,GAA8C4gC,EACjEztB,EAAI5W,KAAKyI,QACT87B,EAAuB,GACvBC,EAAkB5tB,EAAI5S,EAAQ8/B,WAAcS,EAE5CE,EAAQzkC,KAAKwU,IAAIpQ,UAAU,UAAUC,KAAK+/B,GAChDK,EAAM5gC,QAAQU,OAAO,QAChBC,KAAK,QAAS,SACnBigC,EACKjgC,KAAK,KAAK,SAAUtF,EAAG8F,GACpB,OAAQA,EAAI4R,EAAI5S,EAAQ8/B,WAAc,CAC1C,IACCt/B,KAAK,IAAK6/B,GACV7/B,KAAK,QAASoS,EAAI5W,KAAK8jC,YACvBt/B,KAAK,SAAUu/B,EAAIM,GACxBI,EAAMr1B,OAAOvG,SAEb,IAAM67B,EAAgB1kC,KAAKwU,IAAIpQ,UAAU,mBAAmBC,KAAK+/B,GAiBjE,GAhBAM,EAAc7gC,QAAQU,OAAO,QACxBC,KAAK,QAAS,kBACdA,KAAK,IAAK,IACfkgC,EACKlgC,KAAK,KAAK,SAAUtF,EAAG8F,GACpB,OAAQA,EAAI4R,EAAI5S,EAAQ8/B,WAAgBltB,EAAI5S,EAAQ8/B,WAAc9/B,EAAQ8/B,UAC9E,IACCj2B,MAAK,SAAU3O,EAAG8F,GACf,OAAIhB,EAAQ2gC,eAAelhC,OAAS,GAC5BO,EAAQ2gC,eAAe3/B,IAAOhB,EAAQ2gC,eAAe3/B,GAAIm+B,cACjDn/B,EAAQ2gC,eAAe3/B,GAAIm+B,cAGpC,EACX,IACJuB,EAAct1B,OAAOvG,SACQ,eAAzB7I,KAAK4kC,iBAA4D,cAAxB5kC,KAAK6kC,eAAgC,CAE9E,IAAMC,EAAmB9kC,KAAKwU,IAAIpQ,UAAU,qBAAqBC,KAAKA,GACtEygC,EAAiBjhC,QAAQU,OAAO,KAC3BC,KAAK,QAAS,2BACdP,GAAG,aAAa,SAAU/E,GACvB8E,EAAQggC,WAAW3U,aACdC,SAAS,KACTxnB,MAAM,UAAW,IACtB,IAAIi9B,EAAY,kEACU/gC,EAAQghC,aAChBhwB,SAAQ,SAAUkF,EAAKwE,QACZvF,IAArBe,EAAIopB,eACJyB,EAAYA,EAAY,kCAAoC7qB,EAAIopB,aAApDyB,aAAuF7lC,EAAEgb,EAAIqpB,aAAe,QAEhI,IACA,IAAI0B,EAAW/lC,EAAEgmC,SAAW,GAC5BD,EAAWA,EAAS1+B,QAAQ,0BAA2B,YACvD,IAAI4+B,EAAWjmC,EAAEkmC,QAAU,GAC3BD,EAAWA,EAAS5+B,QAAQ,0BAA2B,YACvDw+B,EAAYA,iDAAuEE,EAAvEF,kDAAqJI,EAAW,QAC5K,IAAM36B,EAAQuoB,YACd/uB,EAAQggC,WAAWlU,KAAKiV,GACnBj9B,MAAM,OAAS0C,EAAW,MAAI,MAC9B1C,MAAM,MAAQ0C,EAAM66B,MAAQ,GAAM,KAC3C,IACCphC,GAAG,YAAY,SAAU/E,GACtB8E,EAAQggC,WAAW3U,aACdC,SAAS,KACTxnB,MAAM,UAAW,EAC1B,IACC6M,MAAK,SAAUzV,GACKyU,SAAS3T,MACjBuE,OAAO,QACXC,KAAK,QAAS,yBACdA,KAAK,QAAS,GACdA,KAAK,SAAU8/B,GACf9/B,KAAK,KAAM,GACXA,KAAK,KAAM,EACpB,IACJsgC,EACKtgC,KAAK,aAAa,SAAUtF,EAAG8F,GAC5B,MAAO,cAAiB,EAAI4R,EAAI5S,EAAQ8/B,WAAU,EAA6B,IAAM,KAAQ9+B,EAAM,GAADA,EAA2C,GAAKq/B,GAAc,GACpK,IACJS,EAAiB11B,OAAOvG,SAExB,IAAMy8B,EAAkBtlC,KAAKwU,IAAIpQ,UAAU,oBAAoBC,KAAKA,GACpEihC,EAAgBzhC,QAAQU,OAAO,KAC1BC,KAAK,QAAS,mBACdP,GAAG,aAAa,SAAU/E,EAAG8F,GAC1BhB,EAAQggC,WAAW3U,aACdC,SAAS,KACTxnB,MAAM,UAAW,IACtB,IAAIy9B,EAAc,GACQvhC,EAAQghC,aAChBhwB,SAAQ,SAAUkF,EAAKwE,QACZvF,IAArBe,EAAIopB,eACJiC,EAAcA,EAAc,kCAAoCrrB,EAAIopB,aAAtDiC,aAAyFrmC,EAAEgb,EAAIqpB,aAAe,QAEpI,IACA,IAAM/4B,EAAQuoB,YACd/uB,EAAQggC,WAAWlU,KAAKyV,GACnBz9B,MAAM,OAAS0C,EAAW,MAAI,MAC9B1C,MAAM,MAAQ0C,EAAM66B,MAAQ,IAAO,KAC5C,IACCphC,GAAG,YAAY,SAAU/E,GACtB8E,EAAQggC,WAAW3U,aACdC,SAAS,KACTxnB,MAAM,UAAW,EAC1B,IACC6M,MAAK,SAAUzV,GACZ,IAAMs3B,EAAW7iB,SAAS3T,MAC1Bw2B,EAASjyB,OAAO,QACXC,KAAK,QAAS,kBACdA,KAAK,KAAM,GACXA,KAAK,KAAM,GAChBgyB,EAASjyB,OAAO,QACXC,KAAK,QAAS,iBACvB,IACJ8gC,EACKnT,QAAQ,UAAU,GAClBA,QAAQ,WAAW,SAAUjzB,GAC1B,OAAmB,IAAZA,EAAEsmC,KACb,IACChhC,KAAK,aAAa,SAAUtF,EAAG8F,GAC5B,MAAO,eAAmB9F,EAAEumC,WAAa,GAAM7uB,EAAI5S,EAAQ8/B,WAAU,IAAkC,KAAQ9+B,EAAM,GAADA,EAA2C,GAAKq/B,GAAc,GACtL,IACC1vB,MAAK,SAAUzV,GACZ,IAEMwmC,EAFW/xB,SAAS3T,MAEGoE,UAAU,UAAUC,KAAiB,IAAZnF,EAAEsmC,MAAc,CAACtmC,GAAK,IAC5EwmC,EAAY7hC,QAAQU,OAAO,QACtBC,KAAK,QAAS,gBACnBkhC,EACKlhC,KAAK,MAAM,SAAUW,GAClB,OAAQA,EAAGqgC,MAAQ,EAAKhB,EAAgB,CAC5C,IACChgC,KAAK,KAAM8/B,GACX9/B,KAAK,MAAM,SAAUW,GAClB,OAAQA,EAAGqgC,MAAQ,EAAMhB,EAAgBD,EAAuB,GAAOv8B,KAAKyN,IAAItQ,EAAGqgC,OAAS,IAAO5uB,EAAI5S,EAAQ8/B,aAAgB,IAA0B97B,KAAKyN,IAAItQ,EAAGqgC,OAAS,IAAO5uB,EAAI5S,EAAQ8/B,YAAe,CACpN,IACCt/B,KAAK,KAAM8/B,GACXx8B,MAAM,mBAAkB,QACxBA,MAAM,SAAU,oBAChBA,MAAM,aAAc,mBACpBA,MAAM,UAAW,KACtB49B,EAAYt2B,OAAOvG,QACvB,IACuBy8B,EAAgBhwB,OAAO,mBAE7C9Q,KAAK,QAASggC,GACdhgC,KAAK,SAAU8/B,GACOgB,EAAgBhwB,OAAO,mBAE7C9Q,KAAK,KAAM,IACXA,KAAK,KAAOggC,EAAgB,GAC5B32B,MAAK,SAAU3O,GACZ,MAAiC,iBAAtBA,EAAE+kC,GACF/kC,EAAE+kC,GAEF/kC,EAAE+kC,GAAgBpsB,UAAU,EAAG,GAC9C,IACJytB,EAAgBl2B,OAAOvG,SAEvB,IAAM88B,EAAiB3lC,KAAKwU,IAAIpQ,UAAU,mBAAmBC,KAAKA,GAClEshC,EAAe9hC,QAAQU,OAAO,KACzBC,KAAK,QAAS,kBACdA,KAAK,aAAa,SAAUtF,EAAG8F,GAC5B,MAAO,eAAmB9F,EAAEumC,WAAa,GAAM7uB,EAAI5S,EAAQ8/B,WAAU,IAAkC,KAAQ9+B,EAAM,GAADA,EAA2C,GAAKq/B,GAAc,GACtL,IACCpgC,GAAG,aAAa,SAAU/E,EAAG8F,GAC1BhB,EAAQggC,WAAW3U,aACdC,SAAS,KACTxnB,MAAM,UAAW,IACtB,IAAIy9B,EAAc,GACQvhC,EAAQghC,aAChBhwB,SAAQ,SAAUkF,EAAKwE,QACZvF,IAArBe,EAAIopB,eACJiC,EAAcA,EAAc,kCAAoCrrB,EAAIopB,aAAtDiC,aAAyFrmC,EAAEgb,EAAIqpB,aAAe,QAEpI,IACA,IAAM/4B,EAAQuoB,YACd/uB,EAAQggC,WAAWlU,KAAKyV,GACnBz9B,MAAM,OAAS0C,EAAW,MAAI,MAC9B1C,MAAM,MAAQ0C,EAAM66B,MAAQ,IAAO,KAC5C,IACCphC,GAAG,YAAY,SAAU/E,GACtB8E,EAAQggC,WAAW3U,aACdC,SAAS,KACTxnB,MAAM,UAAW,EAC1B,IACC6M,MAAK,SAAUzV,GACZ,IAAMs3B,EAAW7iB,SAAS3T,MAC1Bw2B,EAASjyB,OAAO,QACXC,KAAK,QAAS,iBACdA,KAAK,QAAQ,SAAUW,GAOpB,OALIA,EAAGqgC,MAAQ,GAAsB,IAAjBrgC,EAAGg/B,UACX,UAEA,SAGhB,IACC3/B,KAAK,KAAM,GACXA,KAAK,KAAM,GAChBgyB,EAASjyB,OAAO,KACXA,OAAO,QACPC,KAAK,QAAS,gBACvB,IACJmhC,EACKxT,QAAQ,UAAU,GAClBA,QAAQ,WAAW,SAAUjzB,GAC1B,OAAmB,IAAZA,EAAEsmC,KACb,IACCnW,aAAaC,SAAS,KACtBC,KAAK,UACL/qB,KAAK,aAAa,SAAUtF,EAAG8F,GAC5B,MAAO,eAAmB9F,EAAW,UAAI,GAAK0X,EAAI5S,EAAQ8/B,WAAU,IAAkC,KAAQ9+B,EAAM,GAADA,EAA2C,GAAKq/B,GAAc,GACrL,IACC1vB,KAAK,OAAO,WACT+mB,YAAY,UAAU5zB,MAAM,UAAW,IAC3C,IACwB69B,EAAerwB,OAAO,qBAC9B6c,QAAQ,UAAU,GACjC3tB,KAAK,cAAc,SAAUtF,GAC1B,OAAO8E,EAAQuT,MAAQrY,EAAEgP,EAC7B,IACC1J,KAAK,aAAc,OACEmhC,EAAerwB,OAAO,kBAE3C9Q,KAAK,QAASggC,GACdhgC,KAAK,SAAU8/B,GACMqB,EAAerwB,OAAO,kBAE3C6c,QAAQ,UAAU,GAClB3tB,KAAK,KAAM,IACXA,KAAK,KAAOggC,EAAgB,GAC5B18B,MAAM,OAAQ,QACd+F,MAAK,SAAU3O,GACZ,MAAiC,iBAAtBA,EAAE+kC,GACF/kC,EAAE+kC,GAEF/kC,EAAE+kC,GAAgBpsB,UAAU,EAAG,GAC9C,IACJ8tB,EAAev2B,OAAOvG,QACzB,CACD,I,eAAS+8B,GACL,GAAK5hC,EAAQ6hC,aAAaD,IAAe5hC,EAAQ6hC,aAAaD,GAAWjC,qBAAsB,CAC3F,IAAMkC,EAAaC,EAAKtxB,IAAIpQ,UAAU,mBAAqBwhC,GAAUvhC,KAAKA,GAC1EwhC,EAAWhiC,QAAQU,OAAO,KACrBC,KAAK,QAAS,kBAAoBohC,EAAW,WAC7CjxB,MAAK,SAAUzV,GACKyU,SAAS3T,MACjBuE,OAAO,OACpB,IACJshC,EACKrhC,KAAK,aAAa,SAAUtF,EAAG8F,GAC5B,MAAO,cAAkBhB,EAAQ6hC,aAAaD,GAAWlC,cAAgB9sB,EAAI5S,EAAQ8/B,WAAU,IAAkC,KAAQ9+B,EAAM,GAADA,EAA2C,GAAKq/B,GAAc,GAChN,IACC7/B,KAAK,QAAS,GACdA,KAAK,SAAU8/B,GACf9/B,KAAK,KAAM,GACXA,KAAK,KAAM,GACEqhC,EAAWvwB,OAAO,QAE/B9Q,KAAK,KAAM,GACXA,KAAK,KAAM,IACXA,KAAK,KAAM,GACXA,KAAK,SAAU,IACfA,KAAK,QAAS,IACdqJ,MAAK,SAAU3O,EAAG8F,GACf,OAAO9F,EAAG8E,EAAQ6hC,aAAaD,GAAWjC,qBAC9C,IACJkC,EAAWz2B,OAAOvG,QACrB,C,SA5BI+8B,EAAW,EAAGA,EAAW5hC,EAAQ6hC,aAAapiC,OAAQmiC,I,EAAtDA,E,EA+BbhC,EAAAnkC,UAAA2P,KAAA,SAAKtL,EAASC,GACVhB,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAGxB6/B,EAAAnkC,UAAA+jC,OAAA,WACI,IAAMuC,EAAe/lC,KAAKwP,UAE1B,OADAu2B,EAAaC,QAAQ,WACdD,C,EAsBdnC,CAAD,CAnWA,CAAiCpU,aC3F3B,SAAUyW,GAAS5G,GACrB,OAAOA,EAAO6G,qBAAoB,GAAO,EAC7C,C,SAUgBC,GAAqBC,EAASC,EAASt3B,GACnDq3B,EAAQE,cAAa,SAAUjH,GAC3BA,EAAOkH,eAAeF,EAASt3B,EACnC,GACJ,CAMgB,SAAAy3B,GAAuBJ,EAASr3B,GAC5CA,EAASA,GAAU,CAAC,UAAW,QAAS,OAAQ,WAEhD,IAAM03B,EAAU,GAgChB,OA/BAN,GAAqBC,EAAS,MAAM,SAAU/G,EAAQh5B,GAClD,IAAIg5B,EAAOh5B,EAAK6H,GAAK,gBAAkBmxB,EAAOqH,kBAAkBrgC,EAAK6H,IAAIy4B,mBAAqBtH,EAAOqH,kBAAkBrgC,EAAK6H,IAAI04B,eAoBpI,SAAwBzsB,EAAK2S,GACzB,IAAI+Z,GAAM,EACV,IAAK,IAAM7hC,KAAK8nB,EACZ,IAA6B,IAAzB3S,EAAInL,QAAQ8d,EAAI9nB,IAAY,CAC5B6hC,GAAM,EACN,KACH,CAEL,OAAOA,C,CA3BCC,CAAezgC,EAAK6H,GAAIa,GAAS,CACjC,IAAMg4B,EAAa1H,EAAO95B,OAAOuR,OAAOpQ,MAAM,KAC9C,IAAK,IAAM1B,KAAK+hC,EACZ,GAAIA,EAAWC,eAAehiC,GAAI,CAI9B,QAH+BmU,IAA3BstB,EAAQM,EAAW/hC,MACnByhC,EAAQM,EAAW/hC,IAAM,SAEWmU,IAApCstB,EAAQM,EAAW/hC,IAAIqB,EAAK6H,IAAmB,CAC/Cu4B,EAAQM,EAAW/hC,IAAIqB,EAAK6H,IAAMmxB,EAAOh5B,EAAK6H,MAC9C,KACH,CAAM,GAAIu4B,EAAQM,EAAW/hC,IAAIqB,EAAK6H,MAAQmxB,EAAOh5B,EAAK6H,MACvD,KAEP,CAER,CAET,IAYOu4B,CACX,CAiCM,SAAUQ,GAAkB5H,EAAQtwB,EAASm4B,EAAcC,GAC7D,IAAMlwB,EAAc,CAChBmwB,QAAS/H,EAAOQ,WA+BpB,GA7B2C,IAAvCR,EAAOrG,IAAIhqB,QAAQqwB,EAAOgI,WAC1BpwB,EAAOqwB,KAAOjI,EAAOrG,KAErBqG,EAAOkI,UACPtwB,EAAOuwB,UAAYnI,EAAOkI,WAE9BtwB,EAAOwwB,aAAe,GAEtBpI,EAAOkH,gBAAe,SAACmB,EAAerhC,GAClC,GAAIqhC,EAAcrhC,EAAK6H,GAAK,eACxB,OAAQ7H,EAAKqF,MACT,IAAK,SAED,OADAuL,EAAOwwB,aAAaphC,EAAK6H,IAAM+4B,GAAkBS,EAAcrhC,EAAK6H,MAAO,KAAMg5B,EAAaC,IAAiB9H,EAAOR,iBAC/G,EACX,IAAK,cACL,IAAK,gBAMD,OALA5nB,EAAOwwB,aAAaphC,EAAK6H,IAAM,GACXw5B,EAAcrhC,EAAK6H,MAC3B8G,SAAQ,SAAC2yB,GACjB1wB,EAAOwwB,aAAaphC,EAAK6H,IAAIoC,KAAK22B,GAAkBU,EAAc,KAAMT,EAAaC,IAAiB9H,EAAOR,gBACjH,KACO,EACX,QACI5nB,EAAOwwB,aAAaphC,EAAK6H,IAAMw5B,EAAcrhC,EAAK6H,M,GAI/Da,GAEsB,qBAArBswB,EAAOQ,UAAkC,CACzC,IAAM+H,EAAWvI,EAAOh7B,OAAOujC,SAC3BA,IACA5nC,KAAK6nC,WAAaD,EAASl6B,KAAI,SAAArH,GAC3B,OAAO4gC,GAAkB5gC,EAAM,KAAM6gC,EAAaC,IAAiB9H,EAAOR,eAC9E,IAEP,CAcD,OAbIqI,GAAe7H,EAAOh7B,OACjB4S,EAAO6wB,SAAQ7wB,EAAO6wB,OAAS,IACpC7wB,EAAO6wB,OAAOzjC,KAAOg7B,EAAOh7B,QAE5B8iC,IACI9H,EAAOR,eACP5nB,EAAO8wB,QAAU1I,EAAOR,iBACjBQ,EAAOh7B,OACd4S,EAAO8wB,QAAU,CACb1jC,KAAMg7B,EAAOh7B,UAIlB4S,CACX,CAEM,SAAUgD,GAAUolB,EAAQtwB,EAASm4B,EAAcC,GACrD,OAAO9qB,KAAKoB,UAAUwpB,GAAkB5H,EAAQtwB,EAAQm4B,EAAaC,GACzE,CDySAvD,GAAYnkC,UAAU8F,QAAU,qBAChCq+B,GAAYnkC,UAAUsjC,OAASA,GAC/Ba,GAAYnkC,UAAU4jC,iBAAmBA,GACzCO,GAAYnkC,UAAUgkC,eAAiBA,GAEvCG,GAAYnkC,UAAU+F,QAAQ,gBAAiB,GAAI,MAAO,wBAAwB,WAAc,OAAOxF,KAAKwjC,QAAS,GAAI,CAAE9sB,KAAM,CAAC,QAAS,YAC3IktB,GAAYnkC,UAAU+F,QAAQ,eAAgB,GAAI,MAAO,wBAAwB,WAAc,OAAOxF,KAAKwjC,QAAS,GAAI,CAAE9sB,KAAM,CAAC,QAAS,YAC1IktB,GAAYnkC,UAAU+F,QAAQ,gBAAiB,KAAM,MAAO,+BAA+B,WAAc,OAAOxF,KAAKwjC,QAAS,GAAI,CAAE9sB,KAAM,CAAC,QAAS,YACpJktB,GAAYnkC,UAAU+F,QAAQ,MAAO,KAAM,SAAU,qBAAsB,GAAI,CAAEkR,KAAM,CAAC,QAAS,YACjGktB,GAAYnkC,UAAU+F,QAAQ,QAAS,KAAM,SAAU,uBAAwB,GAAI,CAAEkR,KAAM,CAAC,QAAS,YACrGktB,GAAYnkC,UAAU+F,QAAQ,YAAa,KAAM,SAAU,+BAAgC,GAAI,CAC3FkR,KAAM,CAAC,QAAS,UAChBsxB,aAAc,SAAChkC,EAASq7B,EAAQlG,EAAMvgB,GAClCugB,EAAK50B,OAAO,UACPC,KAAK,KAAMR,EAAQkK,KAAO,aAAe0K,EAAM1K,IAC/CikB,QAAQ,uDAAuD,GAC/DtkB,KAAK,aACL5J,GAAG,SAAS,WACTo7B,EAAOyE,WAAazE,EAAOyE,WAAa,EAExC9/B,EAAQikC,YAAY5I,EAAQzmB,EAAM1K,GADJ,qBAElC,G,IAGZ01B,GAAYnkC,UAAU+F,QAAQ,eAAgB,KAAM,SAAU,gCAAgC,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAClIkH,KAAM,CAAC,QAAS,UAChBsxB,aAAc,SAAChkC,EAASq7B,EAAQlG,EAAMvgB,GAClCugB,EAAK50B,OAAO,UACPC,KAAK,KAAMR,EAAQkK,KAAO,gBAAkB0K,EAAM1K,IAClDikB,QAAQ,0DAA0D,GAClEtkB,KAAK,gBACL5J,GAAG,SAAS,WACTo7B,EAAOyE,WAAazE,EAAOyE,WAAa,EAExC9/B,EAAQikC,YAAY5I,EAAQzmB,EAAM1K,GADJ,mBAElC,G,IAGZ01B,GAAYnkC,UAAU+F,QAAQ,eAAgB,GAAI,gBAAiB,iBAAkB,KAAM,CAAE0iC,WAAYnF,KACzGa,GAAYnkC,UAAU+F,QAAQ,aAAc,GAAI,gBAAiB,sBAAuB,KAAM,CAAE0iC,WAAY7E,KAC5GO,GAAYnkC,UAAU+F,QAAQ,aAAc,GAAI,gBAAiB,cAAe,KAAM,CAAE0iC,WAAYzE,K,mECnepF,SAAkBlT,EAAS8V,GAClC9V,GAELA,EAAQvb,SAAQ,SAAUqqB,GACtBA,EAAOiH,aAAaD,EACxB,GACJ,E,uCAQgB,SAAehH,EAAQtwB,GACnC,OAAOsN,KAAKoB,UAAU+oB,GAAuBnH,EAAQtwB,GACzD,E,sCAuCgB,SAAYq3B,EAASzkC,GACjCwkC,GAAqBC,EAAS,MAAM,SAAU/G,EAAQh5B,GAClDg5B,EAAOqH,kBAAkBrgC,EAAK6H,IAAI04B,aAAevH,EAAOqH,kBAAkBrgC,EAAK6H,IAAIy4B,gBACvF,IAE0B,mBAAtB,GACAhlC,EAAShC,KAAKK,KAEtB,E,oBAC2BomC,EAAS+B,EAAUxmC,GAC1C,IAAMqC,EAAUhE,KAChBmmC,GAAqBC,EAAS,MAAM,SAAUgC,EAAS/hC,GACnD,OAAQA,EAAKqF,MACT,IAAK,SAED,OADA1H,EAAQqkC,WAAWD,EAAQ/hC,EAAK6H,MAAOi6B,IAChC,EACX,IAAK,cAKD,OAJoBC,EAAQ/hC,EAAK6H,MACrB8G,SAAQ,SAAUqqB,GAC1Br7B,EAAQqkC,WAAWhJ,EAAQ8I,E,GAC5BnoC,OACI,EACX,QACIooC,EAAQC,WAAWF,GAG/B,IAC0B,mBAAtB,GACAxmC,EAAShC,KAAKK,KAEtB,E,oCClFA,SAASsoC,GAAc58B,GACnB,OAAQA,GACJ,IAAK,SACL,IAAK,cACL,IAAK,gBACD,OAAO,EAGf,OAAO,CACX,C,+oGAEA,IAAA68B,GAAA,SAAAxlC,GASI,SAAAwlC,IAAA,IAAAvlC,EACID,EAAApD,KAAAK,OAKHA,K,OAROgD,EAAQwlC,SAAGC,UA0BnBzlC,EAAY0lC,cAAG,EA6FP1lC,EAAU2lC,WAAG,EAnHjB3lC,EAAK4lC,sBAAwB,KAE7B5lC,EAAKC,KAAO,MACZD,EAAK6lC,gBAAiB,E,EA6qB9B,OA3rBoCjpC,EAAU2oC,EAAAxlC,GAiB1CwlC,EAAoB9oC,UAAAqpC,qBAApB,SAAqBtxB,GACjB,OAAKhU,UAAUC,QACfzD,KAAK4oC,sBAAwBpxB,EACtBxX,MAFuBA,KAAK4oC,qB,EAKvCL,EAAA9oC,UAAAspC,MAAA,WAGI,IAFA,IAAI9xB,EAAS,EACT+xB,EAAShpC,KAAK8oC,uBACXE,KACD/xB,EACF+xB,EAASA,EAAOF,uBAEpB,OAAO7xB,C,EAMXsxB,EAAW9oC,UAAAwpC,YAAX,SAAYzxB,GACR,OAAKhU,UAAUC,QAGfzD,KAAK0oC,aAAelxB,EACbxX,MAHIA,KAAK0oC,Y,EAQpBH,EAAa9oC,UAAAypC,cAAb,SAAc1xB,GACV,OAAKhU,UAAUC,QAGfzD,KAAK6oC,eAAiBrxB,EACfxX,MAHIA,KAAK6oC,c,EAMpBN,EAAA9oC,UAAA0pC,YAAA,WACI,OAAInpC,KAAKopC,gBAAkBppC,KAAKopC,eAAe3lC,OACpCzD,KAAKopC,eAETppC,KAAKkpC,gBAAkB,CAAClpC,MAAQA,KAAKq/B,SAAW,CAACr/B,KAAKq/B,UAAY,E,EAG7EkJ,EAAA9oC,UAAA0E,OAAA,SAAOL,EAASC,GACZhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GAEtB,IAAMC,EAAUhE,KAEVmpC,EAAcnpC,KAAKmpC,cAAcp6B,QAAO,SAAU6H,GACpD,QAAIA,EAAEyyB,eAAiBzyB,EAAEyyB,cAAcC,uBAAuB/pC,QACA,IAAtDqX,EAAEyyB,cAAcC,YAAYt6B,QAAQ4H,EAAEipB,WAKlD,IAEM7K,EAAQjxB,EAAQK,UAAU,8BAAA+sB,OAA8BnxB,KAAK+oC,UAAW1kC,KAAK8kC,GAAa,SAAUjqC,GAEtG,MAAoB,mBAATA,EAAEgP,GACF,QAAQijB,OAAAjyB,EAAEgP,IAEdhP,EAAEgP,IACb,IACA8mB,EAAMnxB,QAAQU,OAAO,SAChBC,KAAK,QAAS,wBAAA2sB,OAAwBnxB,KAAK+oC,UAC3Cp0B,MAAK,WACF,IAAM40B,EAAe51B,SAAS3T,MAG1BgE,EAAQ0kC,cAAmD,OAAnC1kC,EAAQ8kC,wBAChCS,EAAahlC,OAAO,SAASA,OAAO,MAAMA,OAAO,MAC5CC,KAAK,UAAW,KAChBmQ,MAAK,WACF3Q,EAAQwlC,YAAY71B,SAAS3T,MACjC,IAKRupC,EAAahlC,OAAO,QACxB,IACC8Q,MAAM2f,GACNrgB,MAAK,SAAUuf,GACZ,IAAMqV,EAAe51B,SAAS3T,MAG1BgE,EAAQ0kC,cAAmD,OAAnC1kC,EAAQ8kC,wBAChC9kC,EAAQylC,aAAaF,EAAaj0B,OAAO,oBAI7CtR,EAAQ0lC,aAAaH,EAAaj0B,OAAO,SAAU4e,EACvD,IAEJc,EAAM5lB,OACDuF,MAAK,WACF3Q,EAAQ0lC,aAAa3lC,EAAQuR,OAAO,SAAU,KAClD,IACCzM,Q,EAIT0/B,EAAA9oC,UAAA2P,KAAA,SAAKtL,EAASC,GACVhB,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,GACpB/D,KAAK2pC,YAAY,K,EAIrBpB,EAAW9oC,UAAAkqC,YAAX,SAAYtK,GASR,GARIr/B,KAAK4pC,SACA5oC,OAAe6oC,iBACd7pC,KAAK2oC,WACPxrB,QAAQ2sB,KAAK,gBAAkB9pC,KAAK2oC,aAExC3oC,KAAK4pC,OAAO/gC,gBACL7I,KAAK4pC,QAEZvK,EAAQ,CACR,IAAM3wB,EAAU1O,KAChBA,KAAK4pC,OAASvK,EAAOK,SAAQ,SAAUqK,EAAUC,EAAQC,GACjDA,IAAWD,IACQt7B,EAAQo6B,wBAA0Bp6B,GAC1CsrB,YAEnB,IACKh5B,OAAe6oC,iBACd7pC,KAAK2oC,WACPxrB,QAAQ2sB,KAAK,gBAAkB9pC,KAAK2oC,YAE3C,C,EAGLJ,EAAW9oC,UAAA+pC,YAAX,SAAYhN,GACR,IAAMx4B,EAAUhE,KAEhBw8B,EAAGj4B,OAAO,QACVi4B,EAAGj4B,OAAO,KACLC,KAAK,QAAS,iBACdP,GAAG,SAAS,WACT,OAAQD,EAAQkmC,eACZ,IAAK,cACL,IAAK,iBACDlmC,EAAQD,UAAUK,UAAU,UAAU+sB,OAAAntB,EAAQ+kC,QAAO,sEAChD5W,QAAQ,4BAA4B,GAEzCnuB,EAAQD,UAAUK,UAAU,UAAU+sB,OAAAntB,EAAQ+kC,QAAO,8CAChD5W,QAAQ,qBAAqB,GAC7BA,QAAQ,oBAAoB,GAEjC,MACJ,IAAK,gBACDnuB,EAAQD,UAAUK,UAAU,UAAU+sB,OAAAntB,EAAQ+kC,QAAO,gDAChD5W,QAAQ,4BAA4B,GAEzCnuB,EAAQD,UAAUK,UAAU,UAAU+sB,OAAAntB,EAAQ+kC,QAAO,8CAChD5W,QAAQ,qBAAqB,GAC7BA,QAAQ,oBAAoB,GAIzCnuB,EAAQmmC,mBACZ,IAGJ,IAAMC,EAAW5N,EAAGj4B,OAAO,KACtBC,KAAK,QAAS,eACdP,GAAG,SAAS,WACTD,EAAQqmC,gBAAgBD,GAAU,EACtC,IAGJ5N,EAAGj4B,OAAO,KACLC,KAAK,QAAS,qBACdP,GAAG,SAAS,WACTD,EAAQsmC,gBAAgBtmC,EAAQsmC,kBAAkBxZ,QACtD,G,EAIRyX,EAAY9oC,UAAAgqC,aAAZ,SAAajN,GACT,IAAM6C,EAAcr/B,KAAKq/B,SACrBkL,EAAW,GACXlL,IACIA,EAAOj8B,QACPmnC,GAAYlL,EAAOj8B,SAEnBi8B,EAAOQ,UACH0K,IACAA,GAAY,OAEhBA,GAAYlL,EAAOQ,YAG3BrD,EAAGlnB,OAAO,QACLzH,KAAK08B,GAEVvqC,KAAKmqC,oBACLnqC,KAAKqqC,gBAAgB7N,EAAGlnB,OAAO,cAC/BtV,KAAKwqC,sBAAsBhO,EAAGlnB,OAAO,mB,EAGzCizB,EAAA9oC,UAAAgrC,aAAA,WACI,OAAOzqC,KAAK+D,UAAUK,UAAU,UAAA+sB,OAAUnxB,KAAK+oC,QAAO,gDAA+Cpc,M,EAGzG4b,EAAA9oC,UAAAirC,sBAAA,WACI,OAAO1qC,KAAK+D,UAAUK,UAAU,UAAA+sB,OAAUnxB,KAAK+oC,QAAO,yEAAwEpc,M,EAGlI4b,EAAA9oC,UAAAyqC,YAAA,WACI,IAAMS,EAAY3qC,KAAK0qC,wBACvB,OAAkB,IAAdC,EACO,gBACAA,IAAc3qC,KAAKyqC,eACnB,cAEJ,gB,EAGXlC,EAAA9oC,UAAA0qC,kBAAA,WACI,IAAMS,EAAU5qC,KAAKkqC,cACrBlqC,KAAK+D,UAAUuR,OAAO,UAAU6b,OAAAnxB,KAAK+oC,QAAO,qCACvC5W,QAAQ,eAAe,GACvBA,QAAQ,kBAAkB,GAC1BA,QAAQ,iBAAiB,GACzBA,QAAQyY,GAAS,E,EAI1BrC,EAAA9oC,UAAA4qC,gBAAA,SAAgBD,EAAUS,QAAA,IAAAA,OAAiB,GACvC,IAAM9N,EAAO/8B,KAAK8qC,UACZC,EAAQ/qC,KAAKgrC,kBACbC,EAAQjrC,KAAKkrC,eAAeC,IAAIF,MAClCJ,GACAT,EAASjY,QAAQ8Y,EAAMF,EAAM/7B,QAAQ+tB,KAAQ,GAC7C/8B,KAAK8qC,QAAQC,GAAOA,EAAM/7B,QAAQ+tB,GAAQ,GAAKgO,EAAMtnC,SAASqtB,UAE9DsZ,EACKjY,QAAQ8Y,EAAOF,EAAM/7B,QAAQ+tB,GAASgO,EAAMtnC,SAAS,GACrDe,KAAK,QAASu4B,E,EAK3BwL,EAAqB9oC,UAAA+qC,sBAArB,SAAsBY,GAClBA,EACKjZ,QAAQ,UAAWnyB,KAAKsqC,kBACxBnY,QAAQ,eAAgBnyB,KAAKsqC,iB,EAItC/B,EAAc9oC,UAAA4rC,eAAd,SAAehM,GACX,IAAKA,EAAQ,OAAO,KACpB,IAAMpoB,EAAS,CACX7T,MAAOi8B,EAAOnxB,KAAO,KAAOmxB,EAAOQ,UAAY,IAC/CyL,SAAU,IAyBd,OAvBaC,GAAiBlM,GACzBrqB,SAAQ,SAAUw2B,GACnB,IAAMpmC,EAAO,CACThC,MAAOooC,EAAKt9B,GACZo9B,SAAU,IAEd,OAAQE,EAAK9/B,MACT,IAAK,SACDtG,EAAKkmC,SAASh7B,KAAKtQ,KAAKqrC,eAAehM,EAAOmM,EAAKt9B,QACnD,MACJ,IAAK,cACL,IAAK,gBACD,IAAM4e,EAAMuS,EAAOmM,EAAKt9B,MACpB4e,GACAA,EAAI9X,SAAQ,SAAU3O,GAClBjB,EAAKkmC,SAASh7B,KAAKtQ,KAAKqrC,eAAehlC,G,GACxCrG,MAKfiX,EAAOq0B,SAASh7B,KAAKlL,E,GACtBpF,MACIiX,C,EAGXsxB,EAAA9oC,UAAAgsC,YAAA,WACI,OAAOzrC,KAAKqrC,eAAerrC,KAAKq/B,S,EAGpCkJ,EAAW9oC,UAAAisC,YAAX,SAAYC,GACR,GAAuB,SAAnB3rC,KAAK8qC,UAAsB,CAC3B,IAAMc,EAAY,CAAC,UAAW,SAAU,SAAU,aAAc,QAAS,SAAU,SAAU,cAAe,iBAC5GD,EAAS5O,MAAK,SAAUnK,EAAGzzB,GACvB,OAAIyzB,EAAElnB,OAASvM,EAAEuM,KACNknB,EAAE1kB,GAAK/O,EAAE+O,IAAM,EAAI,EAEnB09B,EAAU58B,QAAQ4jB,EAAElnB,MAAQkgC,EAAU58B,QAAQ7P,EAAEuM,OAAS,EAAI,CAE5E,GACH,KAA6B,QAAnB1L,KAAK8qC,UACZa,EAAS5O,MAAK,SAAUnK,EAAGzzB,GAAK,OAAOyzB,EAAE1kB,GAAK/O,EAAE+O,IAAM,EAAI,CAAE,IAClC,QAAnBlO,KAAK8qC,WACZa,EAAS5O,MAAK,SAAUnK,EAAGzzB,GAAK,OAAOyzB,EAAE1kB,GAAK/O,EAAE+O,IAAM,EAAI,CAAE,G,EAIpEq6B,EAAY9oC,UAAAosC,aAAZ,SAAa3sC,GACT,IAAM4sC,EAAUP,GAAiBrsC,GACjC,IAAKc,KAAK+rC,cAAgB/rC,KAAKgsC,cAAcvoC,OAAS,GAAKzD,KAAKisC,cAAcxoC,OAAS,IAAMvE,aAAaqpC,IAAmB,EAAO,CAChI,IAAM/nB,EAAUxgB,KAChB,OAAO8rC,EAAQ/8B,QAAO,SAAU6J,EAAOszB,GACnC,GAAIhtC,EAAE0Z,EAAM1K,GAAK,YAAchP,EAAE0Z,EAAM1K,GAAK,aAAc,OAAO,EACjE,IAA+B,IAAAi+B,EAAA,EAAAC,EAAA5rB,EAAQyrB,gBAARE,EAAAC,EAAA3oC,OAAA0oC,IAAyB,CAAnD,IACKrf,EADiBsf,EAAAD,GACMzlC,MAAM,KAC/B2lC,OAAU,EACVC,OAAY,EAQhB,GAPIxf,EAAIrpB,OAAS,GACb4oC,EAAavf,EAAI,GACjBwf,EAAexf,EAAI,KAEnBuf,EAAavf,EAAI,GACjBwf,EAAexf,EAAI,KAEgB,IAAnC5tB,EAAEqtC,QAAQv9B,QAAQq9B,GAClB,OAAIzzB,EAAM1K,KAAOo+B,CAKxB,CACD,QAAI9rB,EAAQwrB,cAAcvoC,OAAS,GAAKmV,EAAMuyB,KAAOvyB,EAAMuyB,IAAIz0B,MAAQkC,EAAMuyB,IAAIz0B,KAAK81B,MAAK,SAAUnmC,GAAQ,OAAQma,EAAQwrB,cAAch9B,QAAQ3I,IAAS,CAAG,UAG1Jma,EAAQurB,cAAgBnzB,EAAMuyB,KAAOvyB,EAAMuyB,IAAIz0B,OAA0D,IAAlDkC,EAAMuyB,IAAIz0B,KAAK1H,QAAQwR,EAAQurB,gBAA0BvrB,EAAQurB,aAIjI,GACH,CACD,OAAOD,C,EAGXvD,EAAA9oC,UAAAiqC,aAAA,SAAa3lC,EAAS7E,GAClB,IAAM8E,EAAUhE,KACZ8rC,EAAU,GACRW,GAAczsC,KAAKkpC,iBAAmBlpC,KAAKysC,aAC7CvtC,IACA4sC,EAAU9rC,KAAK6rC,aAAa3sC,GAAG6P,QAAO,SAAUy8B,GAAQ,MAAmB,WAAZA,EAAKt9B,IAAyBu+B,CAAW,KACnGzsC,KAAKkpC,iBAAmBlpC,KAAK0sC,YAAcxtC,EAAEmF,MAC9CynC,EAAQx7B,KAAK,CAAEpC,GAAI,OAAQxC,KAAM,UAEjC1L,KAAKsqC,mBACLwB,EAAUA,EAAQ/8B,QAAO,SAAUye,GAC/B,OAAO8a,GAAc9a,EAAE9hB,KAC3B,KAEJ1L,KAAK0rC,YAAYI,IAGrB,IAAMvQ,EAAOx3B,EAAQK,UAAU,UAAYpE,KAAKkO,MAAM7J,KAAKynC,GAAS,SAAU3mC,GAAM,OAAOA,EAAG+I,EAAG,IACjGqtB,EAAK13B,QAAQU,OAAO,MACfC,KAAK,QAAS,wBAA0BxE,KAAKkO,MAC7CyG,MAAK,SAAUiE,GACZ,IAAM6lB,EAAK9qB,SAAS3T,MACpB,GAAIsoC,GAAc1vB,EAAMlN,MACpB+yB,EAAGtM,QAAQ,2BAA2B,GACtCsM,EAAGl6B,OAAO,MACLC,KAAK,UAAW,SAElB,CACHi6B,EAAGtM,QAAQ,0BAA0B,GACrCsM,EAAGl6B,OAAO,MACL4tB,QAAQ,kBAAkB,GAC1BtkB,KAAK+K,EAAM1K,IAEhB,IAAMy+B,EAAYlO,EAAGl6B,OAAO,MACvB4tB,QAAQ,uBAAuB,GAEpCnuB,EAAQ4oC,YAAY1tC,EAAGytC,EAAW/zB,EACrC,CACL,IAAGvD,MAAMkmB,GACR5mB,MAAK,SAAUiE,GACZ,IAAM6lB,EAAK9qB,SAAS3T,MACpBy+B,EAAGtM,QAAQ,WAAYjzB,EAAE0Z,EAAM1K,GAAK,cAAgBhP,EAAE0Z,EAAM1K,GAAK,gBACjEuwB,EAAGtM,QAAQ,UAAWjzB,EAAE0Z,EAAM1K,GAAK,YAAchP,EAAE0Z,EAAM1K,GAAK,aAC9DuwB,EAAGj6B,KAAK,QAASoU,EAAMi0B,aACnBvE,GAAc1vB,EAAMlN,MACpB1H,EAAQ8oC,gBAAgB5tC,EAAGu/B,EAAGnpB,OAAO,MAAOsD,GAE5C5U,EAAQ+oC,aAAa7tC,EAAG0Z,EAEhC,IACJ2iB,EAAKnsB,OAAOuF,MAAK,SAAUiE,GACvB,IAAM6lB,EAAK9qB,SAAS3T,MAChBsoC,GAAc1vB,EAAMlN,OACpB1H,EAAQ8oC,gBAAgB5tC,EAAGu/B,EAAGnpB,OAAO,MAAO,KAEpD,IAAGzM,SACH0yB,EAAKvI,O,EAGTuV,EAAA9oC,UAAAqtC,gBAAA,SAAgBzN,EAAqBt7B,EAAS6U,GAC1C,IAAIo0B,EAAY,GACZ3N,GAAUzmB,IACVo0B,EAAY3N,EAAOzmB,EAAM1K,OAAS,IAEtC,IAAI++B,EAAYD,aAAqBztC,MAAQytC,EAAY,CAACA,GAC1D,GAAIp0B,GAASA,EAAMuyB,KAAOvyB,EAAMuyB,IAAIjD,WAAY,CAE5C,IAAIgF,GAAe,EACbC,EAAYF,EAAUl+B,QAAO,SAAUpB,EAAKC,GAG9C,OAFAs/B,EAAev/B,EAAIu1B,QACnBv1B,EAAIs1B,OAAS5D,EACN6N,GAAgBt/B,IAAQq/B,EAAUxpC,OAAS,C,GACnDzD,MACGotC,EAAiB/N,EAAOzmB,EAAM1K,GAAK,cAAgBmxB,EAAOzmB,EAAM1K,GAAK,eACvEm/B,KAAaJ,EAAUxpC,OAAS0pC,EAAU1pC,QAC9C,GAAIypC,IAAiBE,EAAgB,CACjCC,GAAU,EACV,IAAMC,GAAmB,IAAI10B,EAAMuyB,IAAIjD,YAClClF,MAAM3D,GAKX8N,EAAU78B,KAAKg9B,EAClB,CACGD,IACAhO,EAAOzmB,EAAM1K,IAAIi/B,GACjBF,EAAYE,EAEnB,CAED,IAAMnpC,EAAUhE,KAChB+D,EAAQouB,QAAQ,aAAa,GAC7B,IAAMob,EAAUxpC,EAAQK,UAAU,eAAe+sB,OAAAnxB,KAAK+oC,UAAW1kC,KAAK4oC,GAAW,SAAU/tC,GAAK,OAAOA,EAAEgP,IAAK,IAC9Gq/B,EAAQ1pC,QAAQU,OAAO,OAClBC,KAAK,QAAS,mBAAA2sB,OAAmBnxB,KAAK+oC,UACtCp0B,MAAK,SAAUiC,GACZ,IAAM42B,EAAiB75B,SAAS3T,MAGhCwtC,EAAejpC,OAAO,QACtBipC,EAAejpC,OAAO,KACjBC,KAAK,QAAS,MACdP,GAAG,SAAS,SAAU/E,GACnB,IAAMuuC,EAAcD,EAAel4B,OAAO,OAC1Cm4B,EACKtb,QAAQ,4BAA6Bsb,EAAYtb,QAAQ,6BAE9Dxe,SAAS3T,MACJmyB,QAAQ,qBAAsBsb,EAAYtb,QAAQ,6BAClDA,QAAQ,mBAAoBsb,EAAYtb,QAAQ,6BAErDnuB,EAAQmmC,mBACZ,IAIJ,IAAMuD,EAAQF,EAAejpC,OAAO,OAGpCP,EAAQwkC,SAASvL,IAAIj9B,MAAM,IAAIuoC,GAAiBnlC,MAAMwV,EAAM1K,IAAI/B,OAAOuhC,EAAMtoC,QACjF,IACCiQ,MAAMk4B,GACN54B,MAAK,SAAUiC,GACZ,IACM62B,EADiB95B,SAAS3T,MACGsV,OAAO,OAG1C3B,SAAS3T,MAAMsV,OAAO,QACjBzH,KAAK,GAAGsjB,OAAAvY,EAAM1K,KAGnByF,SAAS3T,MAAMsV,OAAO,KACjB6c,QAAQ,qBAAsBsb,EAAYtb,QAAQ,6BAClDA,QAAQ,mBAAoBsb,EAAYtb,QAAQ,6BAIrDnuB,EAAQwkC,SAAS1yB,IAAI9V,MAChB8oC,qBAAqB9kC,GACrByoC,WAAWzoC,EAAQyoC,cACnBC,SAAS1oC,EAAQ0oC,YACjB5B,QAAQ9mC,EAAQ8mC,WAChBiB,WAAW/nC,EAAQ+nC,cACnBC,YAAYhoC,EAAQgoC,eACpBC,cAAcjoC,EAAQioC,iBACtB3B,eAAetmC,EAAQsmC,kBAAoB1zB,EAAErR,OAAOyJ,QAAQ,YAAc,GAC1EqwB,OAAOzoB,GACPka,QAET,IAEJyc,EAAQn+B,OACHuF,MAAK,SAAUiC,GACZ5S,EAAQwkC,SAAS1yB,IAAI9V,MAChBq/B,OAAO,MACPvO,SACA3kB,OAAO,MAEZnI,EAAQwkC,SAAS3/B,OAAO7I,KAC5B,IACC6I,Q,EAIT0/B,EAAA9oC,UAAAwoC,YAAA,SAAY5I,EAAQnxB,EAAIrE,GAMpB,IAJA,IAAI8jC,EACAC,EAEAC,EADAC,EAA6B9tC,KAE1B8tC,GAAczO,GAAQ,CAKzB,GAJIyO,IAAe9tC,OACf6tC,EAAWxO,EAAOnxB,KAClBmxB,EAAOnxB,GAAIrE,IAEXikC,EAAY,CACZF,EAAgBE,EAChB,IAAMl3B,EAAiBk3B,EAAWzO,SAC9BzoB,aAAa8iB,WACbiU,EAAY/2B,EAEnB,CACDk3B,EAAaA,EAAWhF,sBAC3B,CACG6E,GACAA,EAAU7c,SAEV8c,GACAA,EAAcG,UAAU7/B,EAAIrE,EAAOgkC,EAAUxO,E,EAIrDkJ,EAAA9oC,UAAAmtC,YAAA,SAAYvN,EAAQlG,EAAMvgB,GACtBugB,EAAKhH,QAAQvZ,EAAMlN,KAAO,SAAS,GACnC,IAAM1H,EAAUhE,KAIhB,OAHwC,mBAA5B4Y,EAAMuyB,IAAgB,cAC9BvyB,EAAMuyB,IAAInD,aAAahoC,KAAMq/B,EAAQlG,EAAMvgB,GAEvCA,EAAMlN,MACV,IAAK,UACDytB,EAAK50B,OAAO,SACPC,KAAK,KAAMxE,KAAKkO,KAAO,IAAM0K,EAAM1K,IACnCikB,QAAQ,kBAAkB,GAC1B3tB,KAAK,OAAQ,YACbP,GAAG,UAAU,WACVD,EAAQikC,YAAY5I,EAAQzmB,EAAM1K,GAAIlO,KAAKguC,QAC/C,IAEJ,MACJ,IAAK,MACD7U,EAAK50B,OAAO,UACPC,KAAK,KAAMxE,KAAKkO,KAAO,IAAM0K,EAAM1K,IACnCikB,QAAQ,kBAAkB,GAC1BluB,GAAG,UAAU,WACVD,EAAQikC,YAAY5I,EAAQzmB,EAAM1K,GAAIlO,KAAK6J,MAC/C,IAEJ,MACJ,IAAK,QACL,IAAK,SACDsvB,EAAK50B,OAAO,YACPC,KAAK,KAAMxE,KAAKkO,KAAO,IAAM0K,EAAM1K,IACnCikB,QAAQ,kBAAkB,GAC1B3tB,KAAK,eAAgB,OACrBA,KAAK,cAAe,OACpBA,KAAK,iBAAkB,OACvBA,KAAK,aAAc,SACnBP,GAAG,UAAU,WACV,IAAI4F,EACJ,IACIA,EAAQwS,KAAKC,MAAMtc,KAAK6J,MAG3B,CAFC,MAAO5H,GACL4H,EAAQ7J,KAAK6J,KAChB,CACD7F,EAAQikC,YAAY5I,EAAQzmB,EAAM1K,GAAIrE,EAC1C,IAEJ,MACJ,QACQ+O,EAAMuyB,KAAOvyB,EAAMuyB,IAAIh7B,OACvBgpB,EAAK50B,OAAO,QACP4tB,QAAQ,uBAAuB,GAC/B3tB,KAAK,KAAMxE,KAAKkO,KAAO,IAAM0K,EAAM1K,GAAK,eACxCL,KAAK+K,EAAMguB,cAEhBzN,EAAK50B,OAAO,SACPC,KAAK,OAAQ,SACbA,KAAK,OAAQoU,EAAMuyB,IAAIh7B,MAAMD,MAC7B1L,KAAK,MAAOoU,EAAMuyB,IAAIh7B,MAAMgf,KAC5B3qB,KAAK,MAAOoU,EAAMuyB,IAAIh7B,MAAMqF,KAC5BhR,KAAK,KAAMxE,KAAKkO,KAAO,IAAM0K,EAAM1K,IACnCikB,QAAQ,kBAAkB,GAC1BluB,GAAG,SAAS,WACTD,EAAQikC,YAAY5I,EAAQzmB,EAAM1K,GAAIlO,KAAK6J,OAC3C8J,SAAS,IAAM3T,KAAKkO,GAAK,eAAeL,KAAK,kBAAoB7N,KAAK6J,MAC1E,IACC5F,GAAG,UAAU,WACVD,EAAQikC,YAAY5I,EAAQzmB,EAAM1K,GAAIlO,KAAK6J,OAC3C8J,SAAS,IAAM3T,KAAKkO,GAAK,eAAeL,KAAK,kBAAoB7N,KAAK6J,MAC1E,MAGJsvB,EAAK50B,OAAOqU,EAAMuyB,KAAOvyB,EAAMuyB,IAAI8C,UAAY,WAAa,SACvDzpC,KAAK,KAAMxE,KAAKkO,KAAO,IAAM0K,EAAM1K,IACnCikB,QAAQ,kBAAkB,GAC1B3tB,KAAK,eAAgB,OACrBA,KAAK,cAAe,OACpBA,KAAK,iBAAkB,OACvBA,KAAK,aAAc,SACnBP,GAAG,UAAU,WACVD,EAAQikC,YAAY5I,EAAQzmB,EAAM1K,GAAIlO,KAAK6J,MAC/C,IAEe,eAAf+O,EAAMlN,MAA0B0vB,WAAS8S,MACzC/U,EAAK50B,OAAO,SACPC,KAAK,KAAMxE,KAAKkO,KAAO,IAAM0K,EAAM1K,GAAK,MACxCikB,QAAQ,kBAAkB,GAC1B3tB,KAAK,OAAQ,SACbP,GAAG,UAAU,WACVD,EAAQikC,YAAY5I,EAAQzmB,EAAM1K,GAAIlO,KAAK6J,MAC/C,K,EAQxB0+B,EAAA9oC,UAAAstC,aAAA,SAAa1N,EAAQzmB,GACjB,IAAM7U,EAAU23B,YAAY,IAAM17B,KAAKkO,KAAO,IAAM0K,EAAM1K,GAAK,MAAQlO,KAAKkO,KAAO,IAAM0K,EAAM1K,GAAK,MAC9F9D,EAAMi1B,EAASA,EAAOzmB,EAAM1K,MAAQ,GAG1C,OAFAnK,EAAQquB,SAAS,WAAYiN,EAAOzmB,EAAM1K,GAAK,cAAgBmxB,EAAOzmB,EAAM1K,GAAK,gBACjFnK,EAAQquB,SAAS,UAAWiN,EAAOzmB,EAAM1K,GAAK,YAAcmxB,EAAOzmB,EAAM1K,GAAK,aACtE0K,EAAMlN,MACV,IAAK,UACD3H,EAAQquB,SAAS,UAAWhoB,GAC5B,MACJ,IAAK,MACD,IAAM1E,EAAU3B,EAAQK,UAAU,UAAUC,KAA+Cg7B,EAAOzmB,EAAM1K,GAAK,eAC7GxI,EAAQ7B,QAAQU,OAAO,UAClB8Q,MAAM3P,GACNlB,KAAK,SAAS,SAACtF,GAAW,OAACA,QAAiBia,IAAZja,EAAE2K,MAAuB3K,EAAE2K,MAAQ3K,CAAzC,IAC1B2O,MAAK,SAAC3O,GAAW,OAACA,QAAgBia,IAAXja,EAAE2O,KAAsB3O,EAAE2O,KAAO3O,CAAC,IAE9DwG,EAAQ0J,OAAOvG,SACf9E,EAAQquB,SAAS,QAAShoB,GAC1B,MACJ,IAAK,QACL,IAAK,SACDrG,EAAQquB,SAAS,QAAS/V,KAAKoB,UAAUrT,GAAK,SAAkB+jC,EAAMtkC,GAClE,OAAIA,aAAiB6vB,SACV0U,GAAkBvkC,GAEtBA,CACX,GAAG,SACH,MACJ,QACQ+O,EAAMuyB,KAAOvyB,EAAMuyB,IAAIh7B,OACvBwD,SAAS,IAAM3T,KAAKkO,KAAO,IAAM0K,EAAM1K,GAAK,eAAeL,KAAK,kBAAoBzD,GAExFrG,EAAQquB,SAAS,QAAShoB,GAAOA,EAAI3G,QAAU2G,EAAI3G,OAAS,IAAS,2BAA6B2G,G,EAmBjHm+B,CAAD,CA3rBA,CAAoCjjC,cA4rBpCijC,GAAe9oC,UAAU8F,QAAU,wBAEnCgjC,GAAe9oC,UAAU+F,QAAQ,cAAc,EAAO,UAAW,0EAA2E,KAAM,CAAEkR,KAAM,CAAC,WAC3J6xB,GAAe9oC,UAAU+F,QAAQ,YAAY,EAAO,UAAW,wEAAyE,KAAM,CAAEkR,KAAM,CAAC,WAEvJ6xB,GAAe9oC,UAAU+F,QAAQ,UAAW,OAAQ,MAAO,2BAA4B,CAAC,OAAQ,MAAO,MAAO,QAAS,CAAEkR,KAAM,CAAC,SAAUu0B,MAAO,CAAC,UAAW,oBAAqB,qBAAsB,wBAExM1C,GAAe9oC,UAAU+F,QAAQ,kBAAkB,EAAO,UAAW,8CAA+C,KAAM,CAAEkR,KAAM,CAAC,WAEnI6xB,GAAe9oC,UAAU+F,QAAQ,QAAS,GAAI,SAAU,sDAAuD,KAAM,CAAEkR,KAAM,CAAC,WAC9H6xB,GAAe9oC,UAAU+F,QAAQ,aAAc,GAAI,MAAO,wCAAyC,CAAC,QAAS,eAAgB,UAAW,IAAK,IAC7I+iC,GAAe9oC,UAAU+F,QAAQ,cAAe,CAAC,WAAY,QAAS,6BAA8B,KAAM,IAC1G+iC,GAAe9oC,UAAU+F,QAAQ,gBAAiB,GAAI,QAAS,8CAA+C,KAAM,IAEpH+iC,GAAe9oC,UAAU+F,QAAQ,SAAU,KAAM,SAAU,SAAU,KAAM,CAAEkR,KAAM,CAAC,SAAUoa,QAAQ,IAEtG,IAAMud,GAAc9F,GAAe9oC,UAAU4/B,OAC5CkJ,GAAe9oC,UAAkB4/B,OAAS,SAAU7nB,GACjD,GAAIhU,UAAUC,QAAU4qC,GAAY1uC,KAAKK,QAAUwX,EAAG,OAAOxX,KAC7D,IAAMiX,EAASo3B,GAAYpwB,MAAMje,KAAMwD,WACvC,GAAIA,UAAUC,SACVzD,KAAK2pC,YAAYnyB,GACbA,aAAa82B,QAAM,CACnB,IAAMxtB,EAAU9gB,KAChBwX,EAAE+2B,oBAAsB,WACpBztB,EAAQsoB,eAAiB5xB,EAAE2b,cAAcrd,MAAMpI,KAAI,SAAUrH,GAAQ,OAAOA,EAAKg5B,MAAO,IACxFve,EAAQkZ,YACZ,CACH,CAEL,OAAO/iB,CACX,E,8ECxuBA,IAAAu3B,GAAA,SAAAzrC,GAKI,SAAAyrC,I,OACIzrC,EAAOpD,KAAAK,W,CAwGf,OA9GmCJ,EAAU4uC,EAAAzrC,GASzCyrC,EAAA/uC,UAAAgvC,OAAA,WACI,GAA2B,IAAvBzuC,KAAKqE,OAAOZ,OAAc,MAAO,GACrC,IAAMirC,EAAO1uC,KAAKqN,IAAIC,WAAW,CAACtN,KAAKuN,aAAcvN,KAAKwN,gBACtDyJ,EAAS,GAQb,GAPAA,EAASA,EAAOka,OAAOud,EAAKjhC,UAAUC,KAAI,SAAUC,GAChD,MAAO,CACHE,KAAMF,EAAI5I,IACV8E,MAAO8D,EAAIG,OAAOrK,OAASkK,EAAIG,OAAO,GAAG/I,IAAM,GAC/CgJ,QAASJ,EAAIG,OAAOrK,QAAUkK,EAAIG,OAAO,GAAGA,OAAOrK,OAASkK,EAAIG,OAAO,GAAGA,OAAO,GAAK,GAE9F,GAAG9N,OACCA,KAAK2uC,cAAe,CACpB,IAAMC,EAA6B,eAAhB5uC,KAAK+8B,OACxB9lB,EAAO8lB,MAAK,SAAU8R,EAAGplB,GACrB,OAAIolB,EAAEhhC,KAAO4b,EAAE5b,KAAa+gC,EAAa,GAAK,EAC1CC,EAAEhhC,KAAO4b,EAAE5b,KAAa+gC,GAAc,EAAI,EACvC,CACX,GACH,CACD,OAAO33B,C,EAGXu3B,EAAA/uC,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrB/D,KAAKgO,MAAQjK,EAAQQ,OAAO,QAC5BvE,KAAK8uC,OAAS9uC,KAAKgO,MAAMzJ,OAAO,SAC3BC,KAAK,MAAOxE,KAAKkO,KAAO,kBAE7BlO,KAAK+uC,UAAY/uC,KAAKgO,MAAMzJ,OAAO,OAC9BC,KAAK,KAAMxE,KAAKkO,KAAO,iB,EAGhCsgC,EAAA/uC,UAAA0E,OAAA,SAAOL,EAASC,GACZhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GACtB,IAAMC,EAAUhE,KAChBA,KAAK8uC,OACAjhC,KAAK7N,KAAKoD,SAEf,IAAM4rC,EAAgBhvC,KAAK+uC,UAAU3qC,UAAU,YAAYC,KAAKrE,KAAKyuC,UACrEO,EAAcnrC,QAAQU,OAAO,OACxBC,KAAK,QAAS,WACdmQ,MAAK,SAAUhH,EAAKC,GACjB,IAAMqhC,EAAct7B,SAAS3T,MACvBkO,EAAKlK,EAAQkK,KAAO,aAAeN,EACzCqhC,EAAY1qC,OAAO,SACdC,KAAK,KAAM0J,GACX1J,KAAK,OAAQR,EAAQkK,KAAO,kBAC5BjK,GAAG,UAAU,SAAUirC,GACpBlrC,EAAQmrC,aACZ,IACJF,EAAY1qC,OAAO,SACdC,KAAK,MAAO0J,EACrB,IACJ8gC,EACKr6B,MAAK,SAAUhH,EAAKC,GACjB,IAAMwhC,EAAQz7B,SAAS3T,MACvBovC,EAAM95B,OAAO,SACR9Q,KAAK,OAAQR,EAAQqrC,WAAa,WAAa,SAC/C7qC,KAAK,QAASmJ,EAAI9D,OACvBulC,EAAM95B,OAAO,SACRzH,KAAKF,EAAIE,KAClB,IACJmhC,EAAc5/B,OAAOvG,SACrBmmC,EAAchc,O,EAGlBwb,EAAA/uC,UAAA2P,KAAA,SAAKtL,EAASC,GACV/D,KAAKgO,MAAMnF,SACX9F,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAGxByqC,EAAA/uC,UAAA0vC,YAAA,WACI,IAAMzpC,EAAU,GAChB1F,KAAK+uC,UAAU3qC,UAAU,oBACpBuQ,MAAK,SAAUhH,EAAKC,GACH+F,SAAS3T,MACboyB,SAAS,YAAczkB,GAAOA,EAAII,SACxCrI,EAAQ4K,KAAK3C,EAAII,QAEzB,IACArI,EAAQjC,OAERzD,KAAKkP,MAAMlP,KAAKmP,SAASzJ,EAAQ,IAAK1F,KAAKwN,eAAe,GAE1DxN,KAAKkP,MAAM,GAAIlP,KAAKwN,eAAe,E,EAI3CghC,EAAA/uC,UAAAyP,MAAA,SAAMvB,EAAK0B,EAAQC,G,EAatBk/B,CAAD,CA9GA,CAAmClpC,cA+GnCkpC,GAAc/uC,UAAU8F,QAAU,uBAElCipC,GAAc/uC,UAAU+F,QAAQ,QAAS,KAAM,SAAU,2BACzDgpC,GAAc/uC,UAAU+F,QAAQ,cAAe,KAAM,MAAO,+BAA+B,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAAED,UAAU,IAC/Ii/B,GAAc/uC,UAAU+F,QAAQ,aAAc,KAAM,MAAO,0BAA0B,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAAED,UAAU,IACzIi/B,GAAc/uC,UAAU+F,QAAQ,OAAQ,KAAM,MAAO,gBAAiB,CAAC,GAAI,YAAa,cAAe,CAAE+J,UAAU,IACnHi/B,GAAc/uC,UAAU+F,QAAQ,YAAY,EAAO,UAAW,sB,gECrH9D,IAAA8pC,GAAA,SAAAvsC,GAKI,SAAAusC,I,OACIvsC,EAAOpD,KAAAK,W,CAmGf,OAzG4BJ,EAAU0vC,EAAAvsC,GASlCusC,EAAA7vC,UAAA8vC,WAAA,WACI,GAA2B,IAAvBvvC,KAAKqE,OAAOZ,OAAc,MAAO,GACrC,IAAMirC,EAAO1uC,KAAKqN,IAAIC,WAAW,CAACtN,KAAKuN,aAAcvN,KAAKwN,gBACtDyJ,EAAS,GAQb,GAPAA,EAASA,EAAOka,OAAOud,EAAKjhC,UAAUC,KAAI,SAAUC,GAChD,MAAO,CACHE,KAAMF,EAAI5I,IACV8E,MAAO8D,EAAIG,OAAOrK,OAASkK,EAAIG,OAAO,GAAG/I,IAAM,GAC/CgJ,QAASJ,EAAIG,OAAOrK,QAAUkK,EAAIG,OAAO,GAAGjE,MAAMpG,OAASkK,EAAIG,OAAO,GAAGjE,MAAM,GAAK,GAE5F,GAAG7J,OACCA,KAAK2uC,cAAe,CACpB,IAAMC,EAA6B,eAAhB5uC,KAAK+8B,OACxB9lB,EAAO8lB,MAAK,SAAU8R,EAAGplB,GACrB,OAAIolB,EAAEhhC,KAAO4b,EAAE5b,KAAa+gC,EAAa,GAAK,EAC1CC,EAAEhhC,KAAO4b,EAAE5b,KAAa+gC,GAAc,EAAI,EACvC,CACX,GACH,CAID,OAHI5uC,KAAKuP,YACL0H,EAAO+uB,QAAQ,CAAEn8B,MAAO,GAAIgE,KAAM,KAE/BoJ,C,EAGXq4B,EAAA7vC,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrB/D,KAAKgO,MAAQjK,EAAQQ,OAAO,QAC5BvE,KAAKiO,QAAUjO,KAAKgO,MAAMzJ,OAAO,SAC5BC,KAAK,MAAOxE,KAAKkO,KAAO,WAG7B,IAAMlK,EAAUhE,KAChBA,KAAKwvC,QAAUxvC,KAAKgO,MAAMzJ,OAAO,UAC5BC,KAAK,KAAMxE,KAAKkO,KAAO,WACvBjK,GAAG,UAAU,SAAU/E,GAGpB,IAFA,IAAMwG,EAAU,GACV+pC,EAAmBzrC,EAAQwrC,QAAQpqC,OAAOM,QACvCV,EAAI,EAAGA,EAAIyqC,EAAiBhsC,SAAUuB,EAAG,CAC9C,IAAM0qC,EAAaD,EAAiBzqC,GAChC0qC,EAAWpgC,UACX5J,EAAQ4K,KAAMqD,SAAS+7B,GAAYxR,QAAgBnwB,QAE1D,CACGrI,EAAQjC,OACRO,EAAQkL,MAAMlL,EAAQmL,SAASzJ,EAAQ,IAAK1B,EAAQwJ,eAAe,GAEnExJ,EAAQkL,MAAM,GAAIlL,EAAQwJ,eAAe,EAEjD,G,EAIR8hC,EAAA7vC,UAAA0E,OAAA,SAAOL,EAASC,GACZhB,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GAEtB/D,KAAKiO,QACAJ,KAAK7N,KAAKoD,SAEfpD,KAAKwvC,QACAhrC,KAAK,WAAYxE,KAAKqvC,WAAarvC,KAAKqvC,WAAa,MACrD7qC,KAAK,OAAQxE,KAAKqvC,YAAcrvC,KAAK2vC,aAAe3vC,KAAK2vC,aAAe,MAG7E,IAAMC,EAAS5vC,KAAKwvC,QAAQprC,UAAU,YAAYC,KAAKrE,KAAKuvC,cACtDM,EAAeD,EAAO/rC,QAAQU,OAAO,UACtCC,KAAK,QAAS,WACd6Q,MAAMu6B,GACNprC,KAAK,SAAS,SAAUmJ,GAAO,OAAOA,EAAI9D,KAAM,IAChDgE,MAAK,SAAUF,GAAO,OAAOA,EAAIE,IAAK,IAE3C+hC,EAAOxgC,OAAOvG,SACdgnC,EAAa7c,O,EAGjBsc,EAAA7vC,UAAA2P,KAAA,SAAKtL,EAASC,GACV/D,KAAKgO,MAAMnF,SACX9F,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAGxBurC,EAAA7vC,UAAAyP,MAAA,SAAMvB,EAAK0B,EAAQC,G,EAgBtBggC,CAAD,CAzGA,CAA4BhqC,cA0G5BgqC,GAAO7vC,UAAU8F,QAAU,gBAE3B+pC,GAAO7vC,UAAU+F,QAAQ,QAAS,KAAM,SAAU,oBAClD8pC,GAAO7vC,UAAU+F,QAAQ,cAAe,KAAM,MAAO,wBAAwB,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAAED,UAAU,IACjI+/B,GAAO7vC,UAAU+F,QAAQ,aAAc,KAAM,MAAO,mBAAmB,WAAc,OAAOxF,KAAKwP,SAAU,GAAI,CAAED,UAAU,IAC3H+/B,GAAO7vC,UAAU+F,QAAQ,YAAY,EAAM,UAAW,mBACtD8pC,GAAO7vC,UAAU+F,QAAQ,OAAQ,KAAM,MAAO,gBAAiB,CAAC,GAAI,YAAa,cAAe,CAAE+J,UAAU,IAC5G+/B,GAAO7vC,UAAU+F,QAAQ,YAAY,EAAO,UAAW,sBACvD8pC,GAAO7vC,UAAU+F,QAAQ,aAAc,EAAG,SAAU,0BAA2B,KAAM,CAAEmR,QAAS,SAAAC,GAAK,OAACA,EAAEy4B,UAAU,I,66GCtGlH,IAAMS,GAZN,WACI,IAAMC,EAAM,iBACZ,IAGI,OAFA9yB,aAAaO,QAAQuyB,EAAKA,GAC1B9yB,aAAaS,WAAWqyB,IACjB,CAGV,CAFC,MAAO9tC,GACL,OAAO,CACV,CACL,CAGyD+tC,GAAoB/yB,aAAe,CACxFC,QAAO,SAAChP,G,GAKN+hC,GAAY,SAAUriC,GAIxB,MAHiD,mBAApC5M,OAA8B,iBACtCA,OAAekvC,gBAAgBtiC,GAE7ByO,KAAKC,MAAMwzB,GAAc5yB,QAAQ,sBAAwB,KACpE,EACMizB,GAAa,SAAUviC,GAIzB,MAHkD,mBAArC5M,OAA+B,kBACvCA,OAAeovC,iBAAiBxiC,GAE9ByO,KAAKC,MAAMwzB,GAAc5yB,QAAQ,uBAAyB,KACrE,EACMmzB,GAAgB,SAAUziC,GAC5B,IAAM0iC,EAAeL,KACjBM,EAAS,GACb,IAAK,IAAMC,KAAaF,EACpBC,EAAOjgC,KAAKkgC,GAKhB,YAHqB,IAAjB,QAAyD,IAAjBD,EAAO3iC,KAC/C2iC,EAASA,EAAO3iC,IAEb2iC,CACX,EACME,GAAiB,SAAU7iC,GAC7B,IAAM8iC,EAAgBP,KAClBQ,EAAU,GACd,IAAK,IAAMC,KAAcF,EACrBC,EAAQrgC,KAAKsgC,GAKjB,YAHqB,IAAjB,QAA0D,IAAlBD,EAAQ/iC,KAChD+iC,EAAUA,EAAQ/iC,IAEf+iC,CACX,EAoBME,GAAiB,SAAU12B,GAE7B,OADmBA,EAAIzT,MAAM,gBAAgBgH,KAAI,SAAU8f,GAAK,OAAOA,EAAE/pB,OAAS,EAAI+pB,EAAI,IAAMA,CAAE,IAAI7mB,KAAK,IACzFJ,QAAQ,eAAe,SAAUqsB,GAAK,OAAOA,EAAEke,aAAc,GACnF,EAEMC,GAAiB,SAAUC,EAAQnnC,EAAOojC,EAAWgE,GACvD,IAGIC,EAHAC,EAAY,GACZjjC,EAAK,YAAc8iC,EAAO9iC,GAAK,IAAM+iC,OAGb,IAAhBD,EAAU,UAAuD,IAA1BA,EAAO7F,IAAa,YACnE+F,EAAYF,EAAO7F,IAAI+F,gBAGK,IAApBF,EAAc,UACtB9iC,EAAK8iC,EAAOI,SAGhB,IAAMC,EAAW,iBAAmBL,EAAO9iC,GAAK,gBAAkB++B,EAAUv/B,KAAI,SAAUkJ,GACtF,MAA0B,iBAAdA,EAAQ,OACTA,EAAEyoB,OAAOrG,IAETpiB,C,IAEZjQ,KAAK,KAAO,IACf,OAAQqqC,EAAOtlC,MACX,IAAK,UAEDylC,EAAY,cAAgBjjC,EAAK,KAAOmjC,EAAW,iDADnCxnC,EAAQ,WAAa,IAC0E,IAAK,MACxH,IAAK,cAC0B,IAAvB,EACkB,aAAdqnC,EACAC,EAAY,iBAAmBjjC,EAAK,kCAAoCmjC,EAAW,IAAMxnC,EAAQ,cAC5E,UAAdqnC,IACPC,EAAY,cAAgBjjC,EAAK,mCAAqCmjC,EAAW,WAAaxnC,EAAQ,WAAamnC,EAAO7F,IAAIhc,IAAM,UAAY6hB,EAAO7F,IAAI31B,IAAM,WAAaw7B,EAAO7F,IAAIj7B,KAAO,MAGpMihC,EAAY,cAAgBjjC,EAAK,0CAA4CmjC,EAAW,WAAaxnC,EAAQ,KAEjH,MACJ,IAAK,cAC0B,IAAvB,EACkB,aAAdqnC,IACAC,EAAY,iBAAmBjjC,EAAK,kCAAoCmjC,EAAW,IAAMxnC,EAAQ,eAGrGsnC,EAAY,cAAgBjjC,EAAK,iDAAmDrE,EAAQ,KAAOwnC,EAAW,IAElH,MACJ,IAAK,aACD,IAAMC,EAAsB,KAAVznC,EAAe,GAAK,WAAaA,EAAQ,IAC3DsnC,EAAY,cAAgBjjC,EAAK,sDAAwDmjC,EAAW,IAAMC,EAAY,IACtHH,GAAa,6DAA+DE,EAAW,IAAMC,EAAY,IACzG,MACJ,IAAK,MAEDH,EAAY,eAAiBjjC,EAAK,+BAAiCmjC,EAAW,IAatF,SAAkBn3B,EAAK9P,GACnB,IAAI1E,EAAU,GAKd,OAJAwU,EAAI+iB,IAAIjoB,SAAQ,SAAU3K,GAEtB3E,GAAW,kBAAoB2E,EAAI,KADlBA,IAAMD,EAAM,YAAc,IACS,IAAMC,EAAI,WAClE,IACO3E,C,CApBa6rC,CAASP,EAAQnnC,GAC6D,YAC9F,MACJ,IAAK,QACDsnC,EAAY,iBAAmBjjC,EAAK,oDAAsDmjC,EAAW,IAAMxnC,EAAQ,cAQ3H,YAHuC,IAA3BmnC,EAAO7F,IAAc,aAC7BgG,GAAa,eAAiBH,EAAO7F,IAAIqG,aAAe,KAAOR,EAAO7F,IAAIsG,WAAa,aAEpFN,CAUX,EAEAO,GAAA,SAAA3uC,GAcI,SAAA2uC,IAAA,IAAA1uC,EACID,EAAApD,KAAAK,OAaHA,K,OAXGgD,EAAKC,KAAO,MACZD,EAAK2uC,uBAAoBx4B,EACzBnW,EAAK4uC,sBAAmBz4B,EACxBnW,EAAK6uC,mBAAgB14B,EACrBnW,EAAKwM,QAAQ,CAAC,MAAO,UACrBxM,EAAK8uC,gBAAkB,GACvB9uC,EAAK+uC,eAAgB,EAErB/uC,EAAKgvC,eAAiB,GAEtBhvC,EAAKivC,gBAAkB,G,EA8hB/B,OAzjBiCryC,EAAU8xC,EAAA3uC,GA8BvC2uC,EAAYjyC,UAAAyyC,aAAZ,SAAa16B,GACT,OAAKhU,UAAUC,QAGfzD,KAAK+xC,cAAgBv6B,EACdxX,MAHIA,KAAK+xC,a,EAMpBL,EAAAjyC,UAAA0yC,SAAA,SAAS9S,EAAQ+S,GAAM,EAEvBV,EAAAjyC,UAAAoE,MAAA,SAAMC,EAASC,GACXhB,EAAAtD,UAAMoE,MAAMlE,KAAAK,KAAA8D,EAASC,GACrB/D,KAAK+0B,oBAAoBjtB,MAAM,WAAY,O,EAG/C4pC,EAAAjyC,UAAA4yC,eAAA,SAAehT,EAAQ+S,EAAQ56B,GAC3B,YAAU2B,IAAN3B,EACO6nB,EAAO+S,KAEX/S,EAAO+S,GAAQ56B,E,EAG1Bk6B,EAAAjyC,UAAA4F,KAAA,SAAKitC,GAAQ,EAEbZ,EAAAjyC,UAAA8yC,KAAA,SAAK/B,GAAS,EAEdkB,EAAAjyC,UAAA+yC,qBAAA,WAEI,OADiE,OAArD7sC,SAASkjB,eAAe,wB,EAIxC6oB,EAAAjyC,UAAA0E,OAAA,SAAOL,EAASC,GA/JK,IAAUC,EAC3ByuC,EAwKA,GATA1vC,EAAAtD,UAAM0E,OAAOxE,KAAAK,KAAA8D,EAASC,GA/JtB0uC,GAAc,OACyB,KAFZzuC,EAiKNhE,MA/JY,kBACjCgE,EAAQ2tC,kBAAoB3tC,EAAQ0uC,iBAC7B1uC,EAAQ2tC,oBAAsB3tC,EAAQ0uC,mBAC7CD,GAAc,QAEwB,IAA9BzuC,EAAwB,iBAChCA,EAAQ4tC,iBAAmB5tC,EAAQ2uC,cAC5B3uC,EAAQ4tC,mBAAqB5tC,EAAQ2uC,gBAC5CF,GAAc,QAEqB,IAA3BzuC,EAAqB,cAC7BA,EAAQ6tC,cAAgB7tC,EAAQ0oC,WACzB1oC,EAAQ6tC,gBAAkB7tC,EAAQ0oC,aACzC+F,GAAc,GAEXA,GAiJC1uC,EAAQK,UAAU,IAAMpE,KAAKg5B,IAAM,YAAYnwB,SAEnD7I,KAAK2xC,kBAAoB3xC,KAAK4yC,gBAC9B5yC,KAAKiyC,gBAAgBjyC,KAAKg5B,KAAOh5B,KACjCA,KAAK6yC,kBAAoB7yC,KAAK8yC,qBAAqB9yC,KAAKqE,QAErBrE,KAAKwyC,wBACNxyC,KAAKkyC,eAAgB,CACnD,IAAMa,EAAWxH,GAAiBvrC,MAClC,IAAK,IAAMgF,KAAK+tC,EACZ,IAA+D,IAA3DA,EAAS/tC,GAAGmmC,IAAIz0B,KAAK1H,QAAQhP,KAAKgzC,oBAA4B,CAC9D,IAAMC,EAAajzC,KAAK+yC,EAAS/tC,GAAGkJ,MACb,gBAAnB6kC,EAAS/tC,GAAGkJ,IAA2C,iBAAnB6kC,EAAS/tC,GAAGkJ,KAChD6kC,EAAS/tC,GAAGosC,QAAU,iBAE1B2B,EAAS/tC,GAAGkuC,MAAQnC,GAAegC,EAAS/tC,GAAIiuC,EAAY,CAACjzC,KAAKg5B,KAAMh5B,KAAKg5B,IAChF,aACU+Z,EAAS/tC,GAGxBlB,EAAQwG,UAAYtK,KAAKmzC,oBAAoBJ,GAC7C,IAAMK,EAAMztC,SAAS0tC,YAAY,UACjCD,EAAIE,UAAU,uBAAuB,GAAM,GAC3C3tC,SAAS4tC,cAAcH,EAC1B,CAEDpzC,KAAKwzC,kBAAkB1vC,EAAS9D,KAAK6yC,mBAErC7yC,KAAKyzC,kBAAkB3vC,E,EAG3B4tC,EAAAjyC,UAAA2P,KAAA,SAAKtL,EAASC,GACVhB,EAAAtD,UAAM2P,KAAKzP,KAAAK,KAAA8D,EAASC,E,EAGxB2tC,EAAKjyC,UAAAyP,MAAL,SAAMhQ,G,EAGNwyC,EAAmBjyC,UAAA0zC,oBAAnB,SAAoBO,GAChB,IAAMC,EAAW,CACbzlC,GAAI,wBACJ9K,MAAO,iBACPwwC,OAAQ,IAENC,EAAe,CACjB3lC,GAAI,sBACJ9K,MAAOpD,KAAK8zC,YAAc,kBAAoB,mBAC9CF,OAAQ,IAEZ,IAAK,IAAM5uC,KAAK0uC,EACR1zC,KAAK8zC,aAC8C,IAA/CJ,EAAa1uC,GAAGmmC,IAAIz0B,KAAK1H,QAAQ,WAAmE,IAAhD0kC,EAAa1uC,GAAGmmC,IAAIz0B,KAAK1H,QAAQ,UACrF2kC,EAASC,OAAOtjC,KAAK,CACjBksB,GAAIqU,GAAe6C,EAAa1uC,GAAGkJ,IACnC6lC,GAAIL,EAAa1uC,GAAGkuC,MACpBc,QAAS,iBAEyC,IAA/CN,EAAa1uC,GAAGmmC,IAAIz0B,KAAK1H,QAAQ,UACxC6kC,EAAaD,OAAOtjC,KAAK,CACrBksB,GAAIqU,GAAe6C,EAAa1uC,GAAGkJ,IACnC6lC,GAAIL,EAAa1uC,GAAGkuC,MACpBc,QAAS,iBAImC,IAAhDN,EAAa1uC,GAAGmmC,IAAIz0B,KAAK1H,QAAQ,YAAmE,IAA/C0kC,EAAa1uC,GAAGmmC,IAAIz0B,KAAK1H,QAAQ,SACtF2kC,EAASC,OAAOtjC,KAAK,CACjBksB,GAAIqU,GAAe6C,EAAa1uC,GAAGkJ,IACnC6lC,GAAIL,EAAa1uC,GAAGkuC,MACpBc,QAAS,iBAE0C,IAAhDN,EAAa1uC,GAAGmmC,IAAIz0B,KAAK1H,QAAQ,WACxC6kC,EAAaD,OAAOtjC,KAAK,CACrBksB,GAAIqU,GAAe6C,EAAa1uC,GAAGkJ,IACnC6lC,GAAIL,EAAa1uC,GAAGkuC,MACpBc,QAAS,gBAMzB,IAAIlkB,EAAO,GAOX,OANI6jB,EAASC,OAAOnwC,OAAS,IACzBqsB,GAAQ9vB,KAAKi0C,aAAaN,IAE1BE,EAAaD,OAAOnwC,OAAS,IAC7BqsB,GAAQ9vB,KAAKi0C,aAAaJ,IAEvB/jB,C,EAEX4hB,EAAAjyC,UAAA+zC,kBAAA,SAAkBU,EAAeC,GAC7B,IAAIC,EAAc,GA4BlB,IAAK,IAAM50C,KA1BP40C,EADAp0C,KAAK8zC,YACS,CACVO,kBAAmB,CACfnmC,GAAI,kBACJ9K,MAAO,eACPkxC,UAAW,IAEfC,eAAgB,CACZrmC,GAAI,sBACJ9K,MAAO,0BACPkxC,UAAW,IAEfE,YAAa,CACTtmC,GAAI,iBACJ9K,MAAO,qBACPkxC,UAAW,KAIL,CACVG,kBAAmB,CACfvmC,GAAI,kBACJ9K,MAAO,mBACPkxC,UAAW,KAIPH,EACRn0C,KAAK8zC,aACoC,IAArCt0C,EAAEsxC,cAAc9hC,QAAQ,UAAoF,IAAhEmlC,EAAS30C,GAAGstB,IAAI,GAAGuS,OAAO95B,OAAOyJ,QAAQ,oBAAkE,IAAtCxP,EAAEsxC,cAAc9hC,QAAQ,SAE5H,cAANxP,EACP40C,EAA+B,kBAAEE,UAAUhkC,KAAK6jC,EAAS30C,KACc,IAAhE20C,EAAS30C,GAAGstB,IAAI,GAAGuS,OAAO95B,OAAOyJ,QAAQ,mBAChDolC,EAA4B,eAAEE,UAAUhkC,KAAK6jC,EAAS30C,IAJtD40C,EAAyB,YAAEE,UAAUhkC,KAAK6jC,EAAS30C,KAOa,IAAhE20C,EAAS30C,GAAGstB,IAAI,GAAGuS,OAAO95B,OAAOyJ,QAAQ,mBACzColC,EAA+B,kBAAEE,UAAUhkC,KAAK6jC,EAAS30C,IAIrE,IAAIswB,EAAO,GACX,IAAK,IAAM9qB,KAAKovC,EACZtkB,GAAQ9vB,KAAK00C,wBAAwBN,EAAYpvC,IAErDkvC,EAAc5pC,WAAawlB,C,EAG/B4hB,EAAiBjyC,UAAAg0C,kBAAjB,SAAkBkB,GACd,IAAM3wC,EAAUhE,MAiGhB,SAAyB40C,GACrB,IAAMC,EAAWD,EAAKE,uBAAuB,oBAC7C,IAAK,IAAM9vC,KAAK6vC,EAAU,CACtB,GAAkD,mBAAtCA,EAAS7vC,GAAuB,qBAC1B6vC,EAAS7vC,GAAG6H,qBAAqB,SACzC,GAAGkoC,QAAU,SAAU9yC,GACzB,IAAI+yC,EAAO/yC,EAAEgzC,UACQ,OAAjBD,EAAKE,UACLF,EAAOA,EAAK3oC,cAAcA,eAE9B,IAAM28B,EAASgM,EAAK3oC,cAChB8oC,EAAa,IACwC,IAArDnM,EAAO5hC,UAAUV,MAAM,KAAKsI,QAAQ,aACpCg6B,EAAO5hC,UAAY,4BACnB+tC,EAAa,UAEbnM,EAAO5hC,UAAY,6BACnB+tC,EAAa,UAEHnM,EAAOn8B,qBAAqB,SACpC,GAAGzF,UAAY+tC,CACzB,CAEP,CACD,IAAMC,EAAeR,EAAKE,uBAAuB,qBACjD,IAAK,IAAMtnB,KAAK4nB,EAAc,CAC1B,GAAwD,mBAA5CA,EAAa5nB,GAAyB,uBAChC4nB,EAAa5nB,GAAGsnB,uBAAuB,YAC/C,GAAGC,QAAU,SAAU9yC,GACzB,IACM+mC,EADO/mC,EAAEgzC,UACK5oC,cAChBgpC,EAAc,IACuC,IAArDrM,EAAO5hC,UAAUV,MAAM,KAAKsI,QAAQ,aACpCg6B,EAAO5hC,UAAY,6BACnBiuC,EAAc,UAEdrM,EAAO5hC,UAAY,8BACnBiuC,EAAc,UAGlB,IADA,IAAIC,EAAUtM,EAAOr+B,YACF,OAAZ2qC,IACgE,IAA/DA,EAAQluC,UAAUV,MAAM,KAAKsI,QAAQ,sBACrCsmC,EAAQluC,UAAY,eAAiBiuC,EACrCC,EAAUA,EAAQ3qC,aAElB2qC,EAAU,IAGtB,CAEP,C,CAlJLC,CAAgBZ,GA8BhB,SAAwBC,GACpB,IAAMY,EAAWZ,EAAKE,uBAAuB,YAC7C,IAAK,IAAM9vC,KAAKwwC,EAAU,CACtB,GAAIt+B,MAAMnO,SAAS/D,IAAK,MACxB,IAAMywC,EAAWD,EAASxwC,GACpBosC,EAAUqE,EAASnuC,aAAa,MACtB,kBAAZ8pC,EACAqE,EAASC,SAAW,SAAUzzC,GAC1B,IAAM+yC,EAAO/yC,EAAEmK,WACfpI,EAAQqB,KAAK2vC,EAAKnrC,MACtB,EACmB,OAAZunC,IAA+D,IAA3CA,EAAQpiC,QAAQ,sBAC3CymC,EAASC,SAAW,SAAUzzC,GAC1B,IAAM+yC,EAAO/yC,EAAEmK,WACfpI,EAAQ8vC,UAAUkB,EAAKhH,SAEvB,IAAMlqB,EAAOne,SAASkjB,eAAe,iBAC/B8sB,EAAsB,OAAT7xB,EAAiBA,EAAaja,MAAQ,UACzD7F,EAAQqB,KAAKswC,EACjB,EAC4B,UAArBF,EAASP,SAA4C,WAArBO,EAASP,SAA6C,aAArBO,EAASP,UACjFO,EAASC,SAAW,SAAUzzC,GAC1B,IAAM+yC,EAAO/yC,EAAEmK,WAEX8B,EAAK8mC,EAAK1tC,aAAa,OAEwC,IAA/D0tC,EAAK5tC,UAAUV,MAAM,KAAKsI,QAAQ,0BAClCd,EAAK8mC,EAAKpqC,gBAAgBtD,aAAa,MACvC0tC,EAAKpqC,gBAAgBf,MAAQmrC,EAAKnrC,OAEtC,IAAM+rC,EAAUZ,EAAK1tC,aAAa,QAC5BuuC,EAAU3nC,EAAGxH,MAAM,KACnBovC,EAAYD,EAAQ5qC,MAAM,EAAG4qC,EAAQpyC,OAAS,GAAGkD,KAAK,KAAO,IAE7DovC,EAAUf,EAAK1tC,aAAa,aAC5B0uC,EAAUhB,EAAK1tC,aAAa,gBACnByuC,EAAQrvC,MAAM,KACtBsO,SAAQ,SAAUihC,GACrB,IAAMC,EAAeJ,EAAYG,EAC3BE,EAASxwC,SAASkjB,eAAeqtB,GACvC,GAAgB,aAAZN,EACCO,EAAenI,QAAUgH,EAAKhH,QAC/BhqC,EAAQiuC,gBAAgBgE,GAAKD,GAAShB,EAAKhH,cACxC,GAAuC,UAAnCgH,EAAK1tC,aAAa,aAA0B,CAClD6uC,EAAetsC,MAAQmrC,EAAKnrC,MAC7B,IACI7F,EAAQiuC,gBAAgBgE,GAAKD,GAAS35B,KAAKC,MAAM04B,EAAKnrC,OAC9C,CAAV,MAAO5H,GAAG,CACf,MACIk0C,EAAetsC,MAAQmrC,EAAKnrC,MAC7B7F,EAAQiuC,gBAAgBgE,GAAKD,GAAShB,EAAKnrC,QAEyB,IAAhEssC,EAAO/uC,UAAUV,MAAM,KAAKsI,QAAQ,uBACnCmnC,EAAOxrC,YAAoBd,MAAQmrC,EAAKnrC,OAC+B,IAAjEssC,EAAO/uC,UAAUV,MAAM,KAAKsI,QAAQ,0BAC1CmnC,EAAOvrC,gBAAwBf,MAAQmrC,EAAKnrC,MAGzD,IACA7F,EAAQK,OAAO2Q,SAAQ,SAAU9V,GAC7BA,EAAE4xB,QACN,GACJ,EAEP,C,CA7FLslB,CAAezB,GAEf,SAAuBC,GACnB,GAAI5wC,EAAQkuC,eAAgB,CACRvsC,SAASkjB,eAAe,kBAChCksB,QAAU,SAAU9yC,GACxB,IAAMo0C,EAAkBp0C,EAAEkK,OACpBqkC,EAAY6F,EAAWzrC,gBAAgBf,MAC7C,GAAI2mC,EAAU/sC,OAAS,EAAG,CACtB,IAAM6yC,EAAa3wC,SAASkjB,eAAe,iBACrC0tB,EAAcD,EAAWzpC,qBAAqB,UAChD2pC,GAAa,EACjB,IAAK,IAAMxxC,KAAKuxC,EAAa,CACbA,EAAYvxC,GAAG6E,QACf2mC,IACRgG,GAAa,EAEpB,CACIA,IACDF,EAAWhsC,WAAa,kBAAoBkmC,EAAY,KAAOA,EAAY,aAE/E6F,EAAWzrC,gBAAgBf,MAAQ,GAClCysC,EAAmBzsC,MAAQ2mC,CAC/B,MACGiG,MAAM,6BAEd,CACH,C,CA1BLC,E,EAmJJhF,EAAuBjyC,UAAAi1C,wBAAvB,SAAwBiC,GACpB,IAAMhD,EAAW,CACbzlC,GAAIyoC,EAAWzoC,GACf9K,MAAOuzC,EAAWvzC,MAClBwwC,OAAQ,IAmBZ,OAjBA+C,EAAWrC,UAAUt/B,SAAQ,SAAUg8B,GACnCA,EAAOlkB,IAAI9X,SAAQ,SAAU4hC,EAAWC,GAClB,IAAdA,GACAlD,EAASC,OAAOtjC,KAAK,CACjBksB,GAAIsa,EAAqB9F,GACzB+C,GAAIgD,EAAqB/F,GACzBgD,QAAS,gCAGjBL,EAASC,OAAOtjC,KAAK,CACjBksB,GAAIwa,EAAeJ,GACnB7C,GAAIkD,EAAejG,EAAQ6F,GAC3B7C,QAAS,sBAEjB,GACJ,IAEOh0C,KAAKi0C,aAAaN,GAEzB,SAASqD,EAAeJ,GAGpB,OAFmBA,EAAUvX,OAAOQ,UAAUn5B,MAAM,KACpBC,KAAK,KACf,QAAUiwC,EAAUvX,OAAOrG,IAAM,O,CAE3D,SAAS8d,EAAqB9F,GAC1B,OAAOH,GAAeG,EAAO9iC,G,CAGjC,SAAS+oC,EAAejG,EAAQpjC,GAC5B,IAIgBspC,EAASC,EACfC,EALJvtC,GAImBstC,EAJIvpC,EAMP,QADZwpC,GADMF,EAJKlG,GAKMlkB,IAAIqqB,GAAM9X,OAAO6X,EAAQhpC,OACvBkpC,EAAS,IAJtC,OADarG,GAAeC,EAAQnnC,EAAO,CAACmnC,EAAOlkB,IAAIlf,IAAOojC,EAAOlkB,IAAIlf,GAAKyxB,OAAOrG,I,CAQzF,SAAS+d,EAAqB/F,GAC1B,IAAMnnC,EAIN,SAAsBqtC,GAClB,IAAME,EAASF,EAAQpqB,IAAI,GAAGuS,OAAO6X,EAAQhpC,MAM7C,GALAgpC,EAAQpqB,IAAI9X,SAAQ,SAAU4B,EAAG5R,GAC7B,GAAIoyC,IAAWxgC,EAAEyoB,OAAOzoB,EAAE1I,MACtB,MAAO,EAEf,IACe,OAAXkpC,EACA,MAAqB,UAAjBF,EAAQxrC,KACD2Q,KAAKoB,UAAU25B,GAEnBA,EAEX,MAAO,E,CAjBGC,CAAarG,GAE3B,OADaD,GAAeC,EAAQnnC,EAAOmnC,EAAOlkB,IAAK,S,GAqB/D4kB,EAAYjyC,UAAAw0C,aAAZ,SAAaN,GACT,IAAI7jB,EAAO,cAAgB6jB,EAASzlC,GAAK,uCAOzC,OANA4hB,GAAQ,8BAAgC6jB,EAASvwC,MAAQ,qBACzD0sB,GAAQ,UACR6jB,EAASC,OAAO5+B,SAAQ,SAAUg8B,GAC9BlhB,GAAQ9vB,KAAKs3C,gBAAgBtG,E,GAC9BhxC,OACH8vB,GAAQ,YACM,U,EAElB4hB,EAAejyC,UAAA63C,gBAAf,SAAgBtG,GACZ,IAAIlhB,OAAmC,IAApBkhB,EAAc,QAAoB,cAAgBA,EAAOgD,QAAU,KAAO,OAG7F,OAFAlkB,GAAQ,wBAA0BkhB,EAAOxU,GAAK,SAC9C1M,GAAQ,OAASkhB,EAAO+C,GAAK,SACf,O,EAGlBrC,EAAiBjyC,UAAA83C,kBAAjB,SAAkBC,GACd,IAAMxzC,EAAUhE,KACVoK,EAAMotC,EAAWnY,OAAOmY,EAAWtpC,MACjB,gBAApBspC,EAAW9rC,KACXtB,EAAI4K,SAAQ,SAAUqqB,GAClBr7B,EAAQiuC,gBAAgB5S,EAAOrG,KAAOqG,CAC1C,IAC2B,WAApBmY,EAAW9rC,MAA6B,OAARtB,IACvCpK,KAAKiyC,gBAAgB7nC,EAAI4uB,KAAO5uB,E,EAGxCsnC,EAAcjyC,UAAAg4C,eAAd,SAAeC,GACX,IAAMC,EAAY,CAAC,SACf9Q,GAAM,EAMV,OALA6Q,EAAO1iC,SAAQ,SAAU4iC,IACW,IAA5BD,EAAU3oC,QAAQ4oC,KAClB/Q,GAAM,EAEd,IACOA,C,EAEX6K,EAAoBjyC,UAAAqzC,qBAApB,SAAqBzuC,GACjB,IACIwzC,EADE7zC,EAAUhE,KAEhB,QAAsB,IAAlB,GAAiCqE,EAAKZ,OAAS,EAAG,CAClD,IAAIq0C,EAAW,GACfD,EAAY,GACZ,IAAME,EAAmB,GACnBC,EAAsB,GAC5B3zC,EAAK2Q,SAAQ,SAAUqqB,GACnB,IAAM4Y,EAAaC,EAAW7Y,GAC9ByY,EAAWA,EAAS3mB,OAAO8mB,EAC/B,IACAH,EAAS9iC,SAAQ,SAAUw2B,GACvB,IAAsD,IAAlD,CAAC,SAAU,eAAex8B,QAAQw8B,EAAK9/B,MACvC1H,EAAQuzC,kBAAkB/L,QACvB,GAAIxnC,EAAQyzC,eAAejM,EAAKL,IAAIz0B,MAAO,CAC9C,IAAMyhC,EAAU3M,EAAKt9B,IAC0B,IAA3Cs9B,EAAKnM,OAAO95B,OAAOyJ,QAAQ,iBACgB,IAA/B+oC,EAAiBI,KACzBJ,EAAiBI,GAAW,CAAErrB,IAAK,KAEvCirB,EAAiBI,GAASjqC,GAAKs9B,EAAKt9B,GACpC6pC,EAAiBI,GAAStL,YAAcrB,EAAKqB,YAC7CkL,EAAiBI,GAASzsC,KAAO8/B,EAAK9/B,KACtCqsC,EAAiBI,GAASlb,IAAMuO,EAAKvO,IACrC8a,EAAiBI,GAAShN,IAAMK,EAAKL,IACrC4M,EAAiBI,GAASrrB,IAAIxc,KAAKk7B,UAEW,IAAlCwM,EAAoBG,KAC5BH,EAAoBG,GAAW,CAAErrB,IAAK,KAE1CkrB,EAAoBG,GAASjqC,GAAKs9B,EAAKt9B,GACvC8pC,EAAoBG,GAAStL,YAAcrB,EAAKqB,YAChDmL,EAAoBG,GAASzsC,KAAO8/B,EAAK9/B,KACzCssC,EAAoBG,GAASlb,IAAMuO,EAAKvO,IACxC+a,EAAoBG,GAAShN,IAAMK,EAAKL,IACxC6M,EAAoBG,GAASrrB,IAAIxc,KAAKk7B,SAEN,IAAxBqM,EAAUM,KAClBN,EAAUM,GAAW,CAAErrB,IAAK,KAEhC+qB,EAAUM,GAASjqC,GAAKs9B,EAAKt9B,GAC7B2pC,EAAUM,GAAStL,YAAcrB,EAAKqB,YACtCgL,EAAUM,GAASzsC,KAAO8/B,EAAK9/B,KAC/BmsC,EAAUM,GAASlb,IAAMuO,EAAKvO,IAC9B4a,EAAUM,GAAShN,IAAMK,EAAKL,IAC9B0M,EAAUM,GAASrrB,IAAIxc,KAAKk7B,EAC/B,CACL,GACH,CACD,OAAOqM,EAEP,SAASK,EAAWtB,EAAW7N,GAC3B,IAAIlc,EAAS,GACK,OAAd+pB,GACiBrL,GAAiBqL,GACzB5hC,SAAQ,SAAU4D,EAAOw/B,GAW9B,QAVgC,IAApBx/B,EAAMuyB,IAAQ,MACtBte,EAAOvc,KAAK,CACRpC,GAAI0K,EAAM1K,GACVxC,KAAMkN,EAAMlN,KACZmhC,YAAaj0B,EAAMi0B,YACnB5P,IAAKrkB,EAAMqkB,IACXkO,IAAKvyB,EAAMuyB,IACX9L,OAAQuX,IAGG,gBAAfh+B,EAAMlN,KACmB1H,EAAQquC,eAAeuE,EAAWh+B,EAAM1K,IAChD8G,SAAQ,SAAUqjC,GAC/B,IAAMC,EAAQJ,EAAWG,GACzBxrB,EAASA,EAAOsE,OAAOmnB,EAC3B,SACG,GAAmB,WAAf1/B,EAAMlN,KAAmB,CAChC,IACM6sC,EAAOL,EADOl0C,EAAQquC,eAAeuE,EAAWh+B,EAAM1K,KAE5D2e,EAASA,EAAOsE,OAAOonB,EAC1B,CACL,IAEJ,OAAO1rB,C,GA4BlB6kB,CAAD,CAzjBA,CAAiCpsC,cA0jBjCosC,GAAYjyC,UAAU8F,QAAU,qBAEhCmsC,GAAYjyC,UAAU+F,QAAQ,aAAa,EAAM,UAAW,sBAAuB,KAAM,CAAEkR,KAAM,CAAC,WAClGg7B,GAAYjyC,UAAU+F,QAAQ,YAAa,GAAI,SAAU,aAAc,KAAM,CAAEkR,KAAM,CAAC,QAAS,SAAU+6B,WAAY,OAAQD,aAAc,mBAC3IE,GAAYjyC,UAAU+F,QAAQ,cAAe6qC,GAAc,GAAI,MAAO,eAAgBA,KAAiB,CAAE35B,KAAM,CAAC,QAAS,WACzHg7B,GAAYjyC,UAAU+F,QAAQ,aAAc,GAAI,SAAU,cAAe,KAAM,CAAEkR,KAAM,CAAC,QAAS,UAAW+6B,WAAY,OAAQD,aAAc,mBAC9IE,GAAYjyC,UAAU+F,QAAQ,eAAgBirC,GAAe,GAAI,MAAO,gBAAiBA,KAAkB,CAAE/5B,KAAM,CAAC,QAAS,YAC7Hg7B,GAAYjyC,UAAU+F,QAAQ,eAAe,EAAM,UAAW,eAAgB,KAAM,CAAEkR,KAAM,CAAC,kBAC7Fg7B,GAAYjyC,UAAU+F,QAAQ,YAAY,EAAM,UAAW,YAAa,KAAM,CAAEkR,KAAM,CAAC,kBACvFg7B,GAAYjyC,UAAU+F,QAAQ,gBAAiB,EAAG,SAAU,kBAAmB,KAAM,CAAEkR,KAAM,CAAC,aAC9Fg7B,GAAYjyC,UAAU+F,QAAQ,gBAAiB,WAAY,MAAO,iBAAkB,CAAC,WAAY,aAAc,CAAEkR,KAAM,CAAC,aACxHg7B,GAAYjyC,UAAU+F,QAAQ,mBAAoB,QAAS,MAAO,+DAAgE,CAAC,QAAS,eAAgB,WAAY,WAAY,CAAEkR,KAAM,CAAC,aAC7Lg7B,GAAYjyC,UAAU+F,QAAQ,eAAgB,GAAI,SAAU,gBAAiB,KAAM,CAAEkR,KAAM,CAAC,aAC5Fg7B,GAAYjyC,UAAU+F,QAAQ,uBAAuB,EAAM,UAAW,uBAAwB,KAAM,CAAEkR,KAAM,CAAC,kBAE7Gg7B,GAAYjyC,UAAUwwC,UAAYA,GAClCyB,GAAYjyC,UAAU0wC,WAAaA,GACnCuB,GAAYjyC,UAAU+4C,iBAAmBnI,GACzCqB,GAAYjyC,UAAUg5C,kBAAoBhI,G,+C/BruBb,U,iNAFL,iB,cACG,S,mHeiZrB,SAAgBj5B,GAClB,IAAKhU,UAAUC,OAAQ,OAAOyhB,GAC9BA,GAAkB1N,CACtB,E,mBACM,SAA2BD,GAK7B,GAJAA,EAAMA,GAAO5R,SAAS8d,KACN,IAAI4C,GACf9O,IAAIA,GAEGsB,gBAAiB,CACzB,IAAM6/B,EAAgBC,GAA0BphC,GAChD,GAAImhC,aAAyBE,IAAqBF,EAAcl5B,OAC5D,OAAO,IAAIgD,GAASk2B,EAAcz/B,OAAO,CAAEZ,SAAU,KAAOqgC,EAAcl5B,QACrEjI,IAAIA,EAGhB,CACD,OAAO,IACX,E,gCAzBM,SAAsBC,GACxB,IAAKhU,UAAUC,OAAQ,OAAOwhB,GAC9BA,GAAwBzN,EACnBA,IACD0N,GAAkB,GAE1B,E,gBAoBgB,SAAckD,EAAQ/O,GAClC,IAAMpC,EAAS,CACXzH,QAAS,GACTnL,KAAM,IAEV,GAAI+jB,GAAUA,EAAO3kB,OAAQ,CACzB,IAAMo1C,EAAS,GACf,GAAIx/B,GAAYA,EAAS5V,OACrB4V,EAASrE,SAAQ,SAAU6E,GACvBg/B,EAAOh/B,EAAQhQ,MAAMiF,eAAiBmI,EAAOzH,QAAQ/L,OACrDwT,EAAOzH,QAAQc,KAAKuJ,EAAQ9U,IAChC,SAEA,IAAK,IAAMA,KAAOqjB,EAAO,GACrBywB,EAAO9zC,EAAI+J,eAAiBmI,EAAOzH,QAAQ/L,OAC3CwT,EAAOzH,QAAQc,KAAKvL,GAG5BqjB,EAAOpT,SAAQ,SAAUrH,EAAKsB,GAC1B,IAAM2kC,EAAS,GACf,IAAK,IAAM7uC,KAAO4I,OACoBwL,IAA9B0/B,EAAO9zC,EAAI+J,iBACX8kC,EAAOiF,EAAO9zC,EAAI+J,gBAAkBnB,EAAI5I,IAGhDkS,EAAO5S,KAAKiM,KAAKsjC,EACrB,GACH,CACD,OAAO38B,CACX,E"}