{"version":3,"sources":["Scripts/Seven2one.Remit/PdfExport/PdfExport.ts","Scripts/Seven2one.Remit/Start.ts","Scripts/Seven2one.Remit/Apps/Forms.ts","Scripts/Seven2one.Remit/Apps/Grids.ts","Scripts/Seven2one.Remit/Apps/Dashboard.ts","Scripts/Seven2one.Remit/Apps/Main.ts","Scripts/Seven2one.Remit/Controls/Charts.ts","Scripts/Seven2one.Remit/Controls/DeliveryProfileEditor.ts","Scripts/Seven2one.Remit/Controls/Forms.ts","Scripts/Seven2one.Remit/Controls/Grids.ts","Scripts/Seven2one.Remit/Data/Data.ts","Scripts/Seven2one.Remit/ErrorCodeManager/ErrorCodeManager.ts","Scripts/Seven2one.Remit/Helpers/Helpers.ts"],"names":["Seven2one","Remit","startMain","targetContainer","NewsHelper","ResetShowNewsInSession","Apps","MainApp","requiresLogin","_super","CreateTradeAppBase","CreateTable1TradeApp","CreateTable2TradeApp","AppKitchen","AppBase","__extends","prototype","start","_this","this","urlQuery","BrowserHelper","UrlQuery","getParameters","useTemplate","isCreate","currentId","action","indexOf","isCounterTrade","title","Strings","PageTitle_CreateCounterTrade","PageTitle_ModifyTrade","options","formContainer","parent","document","UIHelper","renderTemplateTo","el","Templates","TrumFormApp","PageTitle_CreateTrade","subtitle","getSubtitle","$el","find","renderLoader","dataLoader","startDataLoader","trumForm","Controls","Table1TradeFormModel","loadDataTemplate","Transitions","introduce","trumFormView","createFormView","setValue","fields","actionType","getSelectedData","success","data","length","configureModifyTrade","configureCounterTrade","uti","generateUti","templateName","formModel","Data","getDocument","setFieldsData","JSON","parse","console","log","continue","hasInput","DialogBoxes","confirm","TrumDialog_DoYouWantToDiscardTrade","restart","strings","ok","TrumDialog_DiscardTrade","cancel","TrumDialog_ContinueTrade","dispose","abortRequests","clearUrlQuery","clear","onReady","Table1TradeFormDataLoader","undefined","createFormModel","Table1TradeFormView","editable","reset","tradeGridRoute","Table2TradeFormDataLoader","Table2TradeFormModel","Table2TradeFormView","TrumViewAppBase","localStorageKey","isPopup","FrameManager","hideHeader","removeParameter","refresh","push","sessionStorage","setItem","getItem","info","getTitle","showActionButtons","eventDataApi","delegatedView","trumFormModel","createTrumFormModel","model","get","setParameter","bind","createTrumFormView","editOnDemand","Table1TradeViewApp","Table2TradeViewApp","OrderViewApp","initialId","PageTitle_Table1Trade","PageTitle_Subtitle_Delegated","PageTitle_Table2Trade","OrderFormDataLoader","OrderFormView","OrderFormModel","PageTitle_Order","initActionButtons","t","remove","MessageArchiveViewApp","configRequest","config","messageArchiveConfig","EventItemRestrictions","Value","messageArchiveId","EventDataLoader","MessageArchiveFormModel","Forms","TemplatedFormView","MessageArchiveForm","loadData","abort","TradeOrderGridApp","MessageArchiveGridApp","StagingLogGridApp","GridApp","gridTitle","csvExport","remitTable","RemitTables","Orders","container","datePicker","chart","stats","grid","configureButtons","StatusGridDataLoader","gridConfigName","dateRangePicker","DateFromPickerModel","contract","transaction","created","gridStats","GridStatisticsModel","pieChart","GridPieChartModel","StatusGridModel","pickerLabels","Table2Trades","label","DatePicker_ContractsFrom","filter","DatePicker_TransactionsFrom","DatePicker_CreatedFrom","DateRangePickerView","hideEndPicker","dayPickers","DatePicker_SinceYesterday","days","DatePicker_Last7Days","DatePicker_Last30Days","maxDate","Date","onlyDate","labels","from","Charts","PieChartView","noDataMessage","legend","visible","GridStatisticsView","TradeOrderGridView","initialSort","trumViewApp","noRecordsMessage","GridMessage_NoContracts","GridMessage_NoTransactions","dataLoaderExport","onChangeData","subscribe","e","exportDataChanged","buttons","exportCsv","click","setData","updateModel","route","startFilter","startDate","getDefaultStartFilter","getDefaultStartDate","getConfig","DateRestriction","ItemId","dateRestrictionFields","StartTime","EndTime","addDays","addMinutes","setConfig","kendoTooltip","position","show","hideTooltips","sender","filename","headers","removeLoader","buildFileName","getHeaderFields","Export","saveAsCsv","useSaveFileProxy","table","Table1Trades","concat","kendo","toString","to","CsvExport_Trades","datePickerContainer","chartContainer","statsContainer","gridContainer","MessageArchiveDataLoader","MessageArchiveGridView","GridMessage_NoMessages","routeStart","gridConfig","getDocumentSync","DatePickerModel","StagingLogGridModel","DatePicker_Today","DatePicker_Yesterday","DatePicker_CreatedOn","Grids","GridView","fillHeight","lazyShow","initial","more","filterable","DashboardApp","table1Url","table1TradesGridRoute","table2Url","table2TradesGridRoute","ordersUrl","ordersGridRoute","maintenanceTemplate","shouldAdvertisementBeShown","showPopup","containers","table1Chart","table1Pie","table2Pie","ordersChart","ordersPie","table1Loader","StatisticDataLoader","SummaryStackedColumnChartModel","table1PieChart","SummaryPieChartModel","StackedColumnChartView","valueAxis","minMax","Dashboard_NoDataMessage_Table1Trades","table2Loader","table2PieChart","Dashboard_NoDataMessage_Table2Trades","offsetY","offsetX","orderLoader","orderChart","orderPieChart","Dashboard_NoDataMessage_Orders","loadStatistic","$","GlobalSettings","culture","html","append","onPieChartClick","_tooltip","destroy","status","category","fromDate","url","ChartClickHelper","mapCategoryToStatus","setUrl","onColChartSeriesClick","mapSeriesToStatus","series","index","findFromDateFromCategory","abortRequest","checkDelegatedTradesMenuVisibility","showDelegatedTradesMenu","trade1ViewApp","RoutedApp","tradesGridApp","PageTitle_Table1Grid","field","dir","trade2ViewApp","trades2GridApp","PageTitle_Table2Grid","delegatedTrade1ViewApp","PageTitle_Delegated","delegatedTradesGridApp","delegatedTrade2ViewApp","delegatedTrades2GridApp","orderViewApp","ordersGridApp","PageTitle_Orders","messageArchiveGridApp","PageTitle_OutgoingMessages","stagingLogGridApp","PageTitle_StagingLog","createTable1TradeApp","SingeltonRoutedApp","createTable2TradeApp","dashboardApp","routedApps","createTradeMenu","MenuItem","Menu_CreateTrade","Menu_CreateTable1Trade","forceNavigate","Menu_CreateTable2Trade","viewTradeMenu","Menu_MonitorReporting","Menu_ReportingStatus","Menu_Table1Trades","Menu_Table2Trades","Menu_Orders","Menu_OutgoingMessages","Menu_StagingLog","delegatedTradesMenu","Menu_DelegatedReports","mainMenu","showNews","children","customConfig","ShowNews","Menu_721News","apps","userMenu","userMenuStyle","UserMenuStyle","Extended","helpMenu","customItems","Menu_UserManual","newWindow","checked","loadCompanyAcercodeMapping","mapping","loaded","MainInventory","EventItemSpecs","InventoryId","loader","error","startupFailed","call","updateChartData","PieChartModel","aggregatedData","unknown","pending","warning","failure","technicalError","i","chartData","ChartCategory_Success","color","StatusHelper","Colors","Success","value","ChartCategory_Failure","Failure","ChartCategory_Pending","Pending","ChartCategory_PendingWithError","Warning","ChartCategory_TechnicalError","TechnicalError","ChartCategory_Unknown","Unknown","statistic","Values","StackedColumnChartModel","categories","day","calendar","patterns","d","statistics","date","values","name","h24","DeliveryProfileEditorGridModel","LoadTypes","DeliveryProfileGridToolbar","compareTime","t1","t2","time1","parseDate","time2","valueOf","compareDate","d1","d2","date1","date2","getColumnHeader","inventoryId","itemId","GridColumn_Quantity_Short","GridColumn_Unit","OptionsHelper","merge","DeliveryProfileEditor","trumLoader","getLoadTypeField","switchEditor","getData","switchViewer","onChangeLoading","hideOtherToolips","formatDate","noEntries","gridView","intervalsGridView","gridModel","render","EventGridModel","setGridData","clonedData","deliveryProfileFields","forEach","dataItem","jQuery","extend","sort","data1","data2","comp1","comp2","endDate","comp3","startTime","endTime","set","fieldViewDict","getInputLoadType","getLoadedLoadType","trumData","key","hide","empty","loadType","startBaseLoad","startPeakLoad","startOffPeak","startGasDay","startBlockHours","startShaped","startOther","clearEditor","deliveryProfiles","deliveryProfilesIntervals","priceQuantityDetails","priceQuantityDetailsIntervals","getLoading","height","css","size","fadeIn","deliveryProfileLoader","intervalLoader","priceQuantityDetailLoader","startBasicEditor","fieldDict","disabled","pool","resetAndPrefillAction","resetLoaders","profileForm1","intervalForm1","intervalForm2","profileForm2","mainFormModel","TranslatedTrumFormModel","DeliveryProfileOffPeakEditor","dataIndex","profileForm1View","inputIndex","useExistingContent","renderOnlyInputs","profileForm2View","intervalForm1View","intervalForm2View","validateAction","check1","validateFields","check2","check3","check4","switchToPreviewAction","preview","backToEditAction","backToEdit","getSerializedDataAction","dp1DaysOfTheWeek","replace","dp1Interval1Start","displayValue","dp1Interval1End","dp1Interval2Start","dp1Interval2End","dp2DaysOfTheWeek","dp2StartTime","dp2EndTime","serializedDp1","join","serializedDp1Interval1","serializedDp1Interval2","serializedDeliveryProfiles","serializedDeliveryProfilesIntervals","serializedPriceQuantityDetails","serializedPriceQuantityDetailsIntervals","loaderData","TrumDialog_DoYouWantToDiscardDeliveryProfiles","TrumDialog_DiscardDeliveryProfiles","TrumDialog_KeepDeliveryProfiles","TrumDialog_DeliveryProfilesExisting","startGridEditor","prefillAction","formView","DeliveryProfileBasicEditor","addDeliveryProfile","preventDefault","dpCounter","deliveryProfilesGridView","dataSource","selectedItem","select","insertRow","RemitDeliveryProfile_Id","RemitDeliveryProfile_StartDate","RemitDeliveryProfile_EndDate","RemitDeliveryProfile_StartTime","RemitDeliveryProfile_EndTime","addLoadDeliveryInterval","selectedDeliveryProfile","selectedInterval","deliveryIntervalsGridView","RemitDeliveryProfileInterval_RemitDeliveryProfile","RemitDeliveryProfileInterval_StartTime","RemitDeliveryProfileInterval_EndTime","alert","addPriceQuantDetail","pqdCounter","priceQuantDetGridView","RemitTradePriceQuantityDetail_Id","RemitTradePriceQuantityDetail_StartDate","RemitTradePriceQuantityDetail_EndDate","RemitTradePriceQuantityDetail_StartTime","RemitTradePriceQuantityDetail_EndTime","RemitTradePriceQuantityDetail_Quantity","RemitTradePriceQuantityDetail_QuantityUnit","RemitTradePriceQuantityDetail_Price","RemitTradePriceQuantityDetail_PriceCurrency","addPriceQuantInterval","selectedPriQuaDetail","priceQuantIntervalsGridView","RemitTradePriQuaDetInterval_RemitTradePriceQuantityDetail","RemitTradePriQuaDetInterval_StartTime","RemitTradePriQuaDetInterval_EndTime","updatePqdiGridVisibility","deliveryProfilesGridFields","id","daysOfTheWeek","deliveryProfilesGridModel","toolbar","TrumAction_AddDeliveryProfile","GridMessage_NoDeliveryProfiles","deliveryIntervalsGridModel","TrumAction_AddLoadDeliveryInterval","GridMessage_NoDeliveryIntervals","deliveryProfilesGridToolbar","priceQuantDetFields","quantity","quantityUnit","price","priceCurrency","priceQuantDetGridModel","TrumAction_AddPriceQuantityDetail","GridMessage_NoPriQuaDetails","priceQuantIntervalsGridModel","GridMessage_NoPriQuaDeIntervals","priceQuantDetGridToolbar","deliveryIntervalGridHtmlCell","closest","priceQuantIntervalsGridHtmlCell","operator","updateDpiGridVisibility","view","handlePriceDetailChange","selectRow","wrapper","prepend","validateInput","switchToPreview","tbody","updateFullHeightGrids","deliveryProfileInvervals","dpGridData","toJSON","dpiGridData","j","end","priceQuantityDetailIntervals","pqdGridData","pqdiGridData","processTrumValidationAction","validationResult","deliveryProfilesErrors","priceQuantityDetErrors","hasOwnProperty","substr","combineErrorMessage","ErrorMessage","setErrorMessage","parseInt","oldMessage","newMessage","getSerializedData","processTrumValidation","onPriceQuantDetChange","DeliveryProfilesGridToolbar","content","GridToolbar_ExportToExcel","showAfter","GridToolbar_ImportExcel","GridToolbarDialog_ClearGrid","getSummaryTooltipContent","summaryTooltipCache","setTimeout","exportExcel","on","handleFilePicker","clearGrid","configureGridAggregations","updateToolbarState","aggregations","aggregate","aggregates","timeAggregates","aggregateTime","renderTemplate","DeliveryProfilesGridSummary","count","min","max","minStartTime","maxEndTime","sum","maxPrice","minPrice","minStart","maxEnd","item","file","target","files","readExcelFile","GridToolbarDialog_ReplaceContentMessage","GridToolbarDialog_ReplaceContent","GridToolbarDialog_ImportFile","Cancel","replaceWith","clone","val","GridToolbarDialog_ClearGridMessage","GridToolbarDialog_Clear","GridToolbarDialog_NoContentToExport","loading","header","GridColumn_StartDate","width","GridColumn_EndDate","GridColumn_DaysOfTheWeek","GridColumn_StartTime","GridColumn_EndTime","sheetName","TrumGroup_DeliveryProfiles","fileName","align","GridColumn_Price","GridColumn_PriceCurrency","TrumGroup_PriceQuantityDetails","saveAsExcel","type","required","ExcelHelper","GridToolbarDialog_ExcelImportFailed","EventFormModel","getFieldLabel","TrumFormModelBase","attributes","attribute","getWriteData","getSaveRequestData","getFieldsData","EventValues","updateFieldsSummary","remainingFields","requiredCount","invalidFields","each","mandatory","message","requiredSummary","requiredTotal","invalidSummary","getReportStatusInfo","reportType","creationDate","getValue","messageGenerationDate","receiptDate","acknowledgementDate","reportStatus","aggregateStatus","TrumFormViewBase","updateValidateButtonState","serviceAlive","remitServiceAlive","prop","showAcerErrorsIfNeeded","fieldViews","AsLinq","ForEach","f","hasClass","addClass","reportLogStatus","toUpperCase","errorMessage","reportLogStatusInfo","errorContainer","getErrorContainer","isFieldSpecific","setAcerErrors","acerErrors","setGlobalError","remitStatusInfo","removeClass","errorList","unresolvedErrors","Where","a","isGlobalMessage","acerError","fieldView","getKey","showMessage","addAcerError","logWarning","globalMessage","Select","ToArray","AcerErrorMessageTooltip","ErrorCodes","EcerErrorContainer","regex","match","exec","currentMatches","split","m","ErrorManager","getError","trim","checkServiceAlive","getDataByGetRequest","result","setRemitServerAlive","alive","serverNotAliveNotification","close","Popups","Notification","TrumInfo_ServerAliveError","icon","closable","submit","disableButtons","window","submitRequest","api","getTradeSaveRequest","RemitWriteResultState","requestData","xhr","statusText","errorText","handleError","enableButtons","TradeSaveConfirmation","validationRequest","validation","TrumInfo_ErrorDuringValidation","valid","translateFieldNameInValidationResult","setProperty","FormatingHelper","formatTrumInputFieldError","updateValidationSummary","translatedLabel","nameBegin","nameLength","translationKey","errorMessages","Object","keys","TrumValidationSummary","messages","readOnly","utiIsReadOnly","hasUti","getProperty","trumTemplateManager","fieldsData","configureUtiGeneration","generateUtiTriggered","utiRelevantFields","onValueChange","generateUtiDelayed","marketParticipantId","marketParticipantIdType","otherMarketParticipantId","otherMarketParticipantIdType","buySellIndicator","aggressor","traderId","traderIdType","tradingCapacity","beneficiaryId","beneficiaryIdType","generateUtiBase","additionalProps","request","utiRequest","HasError","beginsWith","Notifications","notify","getTranslatedError","autoClose","flash","fillUti","utiFieldData","First","Key","cancelRequest","errorRequest","ErrorMessage_UTI_InvalidSettlementType","formTemplate","TitleDescriptionTooltip","text","attr","TrumTemplateManager","InputSummaryView","TrumViewToolbar","ReportStatusProgressbar","Responsive","registerTarget","Table1TradeForm","MarketParticipantId","MarketParticipantIdType","OtherMarketParticipantId","OtherMarketParticipantIdType","BuySellIndicator","ContractType","Commodity","Settlement","TradingDate","Price","Currency","Quantity","Unit","DeliveryPointOfArea","DeliveryStartDate","DeliveryEndDate","createTradeRoute","allowPdfExport","allowTrumActions","validateRemitV3InTrumActions","deliveryProfileEditor","Table2TradeForm","ContractDate","volumeOptGridModel","setPriceFormulaInputLogic","Table2DetailGridModel","volumeOptIntervalLoader","fixingIndexGridModel","fixingIndexLoader","optionDetailGridModel","optionDetailLoader","gridsToolbar","volumeOptGridView","Table2FormGridView","GridMessage_NoVolOptIntervals","fixingIndexGridView","GridMessage_NoFixingIndexDetails","optionDetailGridView","GridMessage_NoOptionDetails","OrderForm","props","mainFormValidation","dpEditorValidation","unset24","editorData","SerializedDeliveryProfiles","SerializedDeliveryProfilesIntervals","SerializedPriceQuantityDetails","SerializedPriceQuantityDetailsIntervals","RemitDeliveryProfiles","RemitTradePriceQuantityDetails","Culture","ClientMember","savePdf","PdfExport","createTable1TradePdf","formula","tryUpdate","TrumError_PriceFormulaOrPrice","volumeOptGridValidation","fixingIndexGriddValidation","optionDetailGridValidation","volumeOptErrors","fixingIndexErrors","optionDetailErrors","VolumeOptIntervals","FixingIndexDetails","OptionDetails","createTable2TradePdf","TrumInputSummary","requiredRemaining","invalidCount","trumModel","trumFormContainer","off","handledrop","handleDragEnter","handleDragLeave","handleDragOver","evt","stopPropagation","originalEvent","dataTransfer","dropEffect","dragCounter","reader","endsWith","fileExtension","FileReader","onload","theFile","json","convertBackTime","readAsText","saveTrumData","fieldData","convertTime","stringify","element","createElement","setAttribute","encodeURIComponent","style","display","body","appendChild","removeChild","templateData","FieldType","DateTime","Time","trumView","TrumToolbar_SaveAsTemplate","TrumToolbar_LoadTemplateHint","TrumToolbar_GetTemplates","first","updateReportStatus","acknowledgmentInfo","statusInfo","ReportStatusProgressBar","statusColor","getColorOfAggregatedStatus","messageCreated","receiptReceived","acerAcknowledged","statusMessage","createdInfo","generatedInfo","ReportConfirmation_Status_MessageGenerated","receiptInfo","ReportConfirmation_Status_DeliveredToRRM","getAcerAcknowledgmentLabel","updateXmlLink","updateActionLinks","tradeId","removeAttr","updatePdfLinkVisibility","mainLoaderIsLoading","subLoadersAreLoading","checkRemitV3Fields","n","cn","trumCancelAction","cancelApi","TradeAction_CheckV3CancelMessage","TradeAction_SetCancel_BoxTitle","dateFieldModel","FieldModel","dateFieldView","DateTimeFieldView","TerminationDateBoxContent","notificationBox","showError","TradeAction_SetCancel_ProgressMessage","setIcon","NotificationIcon","Error","setContent","TradeAction_SaveFailedMessage","Id","TerminationDate","toISOString","Ok","TradeAction_SetCancel_SuccessMessage","closeAfterTimeout","TradeAction_SetCancel_BoxButton","trumErrorAction","errorApi","TradeAction_CheckV3ErrorMessage","TradeAction_SetError_BoxTitle","TradeAction_SetError_BoxContent","TradeAction_SetError_ProgressMessage","TradeAction_SetError_SuccessMessage","TradeAction_SetError_BoxButton","TrumToolbar_DownloadPdf","TrumToolbar_DownloadPackage","onPropertyChange","kendoMenu","openOnClick","DateRangePickerModel","loadFrom","loadOn","GridColumn_Type","GridColumn_StrikePrice","GridColumn_Currency","Backbone","Model","updateStatistics","upToDateCount","totalCount","View","Value_UpToDateReports","Value_ReportsTotal","template","tagName","_","GridStatistics","bindAll","addVirtualColumns","columns","unshift","statusColumnTemplate","multi","sortable","compare","AggregatedStatusNr","AggregatedStatus","stateIdentifier","Undefined","New","ImportError","PendingWithError","FinalOk","FinalError","GridStatusColumn","p0","p1","p2","errorVisibility","undefinedVisibility","barOpacity","setLocalStorage","selectedData","LocalStorageHelper","store","expires","StringHelper","generateRandom","StatusGridViewBase","renderGrid","gridSelector","tooltipContent","row","AggregatedStatusLabel","getString","dataBound","rows","IsHistory","groupable","dblclick","openTrumModal","headerTooltip","openWindow","MessageArchive_Id","appOptions","startInWindow","undockWindow","modal","easyClose","closed","hasFocus","focusGrid","openInWindow","keydown","which","MessageArchive_WindowTitle","gridData","RemitTableHelper","DataModel","Table2TradeGridDataLoader","PriceQuantityDetailIntervalLoader","PriceQuantityDetailLoader","DeliveryIntervalLoader","DeliveryProfileLoader","parseDeliveryProfilesData","startTimeField","endTimeField","defaultValue","currentValue","SynchronizedEventDataLoader","primaryInventory","registerListener","configName","formConfig","loadGrid","ready1","ready2","ready3","subloader1loading","subloader2loading","subloader3loading","subloadersLoading","TradeOrderFormDataLoaderBase","tradeOrder","subloader4loading","priQuaDeLoader","loadIntervals","loadPriQuaDetails","loadDeliveryProfiles","ready","AcerActionType","getRemitFields","uniqueIdentifier","version","logStatus","buySell","ModelBase","selectedValue","getEventItemRestriction","read","Operation","IsNavObjectFilter","parseData","set24","tradeOrderId","contractId","FieldOptions","hidden","format","getLogStatus","getUTI","getBuySell","getVersion","latestVersions","statusNrs","BrandNew","MessageArchive_Status","messageStatus","eventConfig","FromDate","RemitTable","EventRequest","documentName","documentType","ajax","dataType","cache","async","responseJSON","AcerError","code","fieldName","inventory","initErrorTable","errorTable","acerErrorCode_R1CTCITRAIDE","acerErrorCode_R1ODOSOPTM","acerErrorCode_R1ODOTOPTM","acerErrorCode_R2ODOEDOPT","acerErrorCode_R1ODOSPOPT","acerErrorCode_R1PTCMPCOIT","acerErrorCode_R1PTCBSIOMPUQ","acerErrorCode_R2PTCBSICMOM","acerErrorCode_R1CNTRTRAIDE","acerErrorCode_R2ODOICIMPIUQ","acerErrorCode_R2ODOICIMPIUQC","acerErrorCode_R2CTCIOMPUNQ","acerErrorCode_R6CLTDTCDST","acerErrorCode_R2CLTDTOT","acerErrorCode_R2CLTDTDSTOT","acerErrorCode_R2TRTDCONDED","acerErrorCode_R1CDUTIDRCIMPDTUQ","acerErrorCode_R2CDPRCMOSP","acerErrorCode_R2CDPRCMTSP","acerErrorCode_R3CDPRBSPM","acerErrorCode_R4CDQINTE4","acerErrorCode_R5CDQINTE5","acerErrorCode_R2CDQVNZ","acerErrorCode_R3CDQVCMSV","acerErrorCode_R4CDQVSVPT","acerErrorCode_R6CDQINTE6","acerErrorCode_R1DPDEDCHK","acerErrorCode_R1DPLDINTCHK","acerErrorCode_R2DPLDINTCHK","acerErrorCode_R1LIATTRNEW","acerErrorCode_R1LIATORNEW","acerErrorCode_R1LIATTRMOD","acerErrorCode_R1LIATTRCAN","acerErrorCode_R1LIATORCAN","acerErrorCode_R1LIATTRERR","acerErrorCode_R1LIATORERR","acerErrorCode_R1REOMPCON","acerErrorCode_R1REPENTCON","acerErrorCode_R1OIOMPTRAN","acerErrorCode_R1LIATDECAPR","acerErrorCode_R6LIAORNOMODAFCAN","acerErrorCode_R6LIATTRNOMODAFCAN","acerErrorCode_R7LIAORNONEWAFCAN","acerErrorCode_R7LIATTRNONEWAFCAN","acerErrorCode_R1CONEMBINVAL","acerErrorCode_R1LEGCONEMBINVAL","acerErrorCode_R1CONINVORD","acerErrorCode_R1CONINVTRA","acerErrorCode_R1BENMPCON","acerErrorCode_R1DPPTIQORTRM","acerErrorCode_R1CDTNCQBSSM","acerErrorCode_R1DPDPZMUL","acerErrorCode_R1CDPCBSCM","acerErrorCode_R1CDNANABSAM","acerErrorCode_R1CDNCBSTSC","acerErrorCode_R1CDQVBSTSV","errors","v","DateFormatHelper","setStoreValue","getStoreValue","tryParseExcelDateTime","cell","formats","number","parseFloat","localTimestamp","utcTimetamp","Math","round","getTimezoneOffset","Import_InvalidDateAt","tryParseTime","allow24","time","Import_InvalidTimeAt","strTime","KeyDontShow","KeyShowedInSession","sessionToken","Cookies","sessionTokenCookieName","currentUser","currentUserCookieName","logInfo","dontShowAd","showedAdInSession","language","getLanguage","Seven2oneNews","lang","Windows","keepOnNavigate","navigator","formatTimeSpan","formatValueUnit","unit","line2","lastSpace","lastIndexOf","tradeOrderLogStatus","Green","Red","LightBlue","Orange","OrangeRed","Silver","aggregatedStatus","ReportConfirmation_Status_AcceptedByACER","ReportConfirmation_Status_RejectedByACER","ReportConfirmation_Status_AcknowledgedByACER","String","seriesIndex","reportingDays","getDateFormatString","catDate","getDate","getMonth","fileData","workbook","XLSX","btoa","o","l","w","byteLength","fromCharCode","apply","Uint8Array","slice","Import_InvalidFile","SheetNames","sheet","Sheets","columnName","Import_MissingColumn","rawData","utils","sheet_to_row_object_array","parsedRow","column","cellName","cellValue","Import_MissingValueAt","Import_InvalidNumberAt","exception","readAsArrayBuffer","TrumPdfCreator","getTable1TradePdfContent","TrumLabel_ReportingEntityId","TrumLabel_ReportingEntityIdType","TrumLabel_TradingHours","TrumLabel_Price","TrumLabel_NotionalAmount","TrumLabel_Quantity","TrumLabel_NotionalContractQuantity","trumGrids","dpData","dpiData","pqdData","allProfilesIncluded","deliveryIntervals","TrumLabel_DaysOfTheWeek","TrumLabel_LoadDeliveryIntervals","interval","intervals","ReportConfirmation_SeeTable","dpGrid","filterIntervals","StartDate","EndDate","DaysOfTheWeek","pqdGrid","pqdiData","pdfGrids","ReportConfirmation_Title_Table1Trade","trumGroups","TrumGroup_ContractParties","TrumGroup_ContractDetails","TrumGroup_TransactionDetails","switchColumn","TrumGroup_DeliveryProfile","filteredIntervals","pageWidth","pageHeight","pdf","jsPDF","pages","setFillColor","WhiteSmoke","rect","printHeader","printStatus","printForm","addPage","printGrids","p","setPage","printFooter","save","fixingIndexDetailsData","optionDetailsData","volumeOptionalityData","volumeOptionalityInfo","entry","entries","fixingIndexInfo","optionDetailInfo","TrumLabel_EstimatedNotionalAmount","TrumGroup_VolumeOptionalityIntervals","TrumGroup_FixingIndexDetails","TrumGroup_OptionDetails","volumeOptionalityGrid","GridColumn_Capacity","voiData","Capacity","fixingIndexDetailsGrid","GridColumn_FixingIndex","GridColumn_FixingIndexType","GridColumn_FixingIndexSource","GridColumn_FirstFixingDate","GridColumn_LastFixingDate","GridColumn_Frequency","fidData","FixingIndex","FixingIndexType","FixingIndexSource","FirstFixingDate","LastFixingDate","FixingFrequency","optionsDetailsGrid","GridColumn_OptionStyle","GridColumn_OptionType","GridColumn_OptionFirstExerciseDate","GridColumn_OptionLastExerciseDate","GridColumn_OptionExerciseFrequency","GridColumn_OptionStrikeIndex","GridColumn_OptionIndexType","GridColumn_OptionIndexSource","GridColumn_OptionStrikePrice","odData","OptionStyle","OptionType","OptionLastExerciseDate","OptionFirstExerciseDate","OptionExerciseFrequency","OptionStrikeIndex","OptionIndexType","OptionIndexSource","OptionStrikePrice","ReportConfirmation_Title_Table2Trade","formLayoutOptions","labelWidth","valueX","valueWidth","columnWidth","page","totalPages","textY","footerHeight","timeStamp","CoalGray","Downloaded","Date_on","Time_at","pageInfo","Page","of","setTextColor","printText","ReportConfirmation_InternalTradeID","getTextWidth","headerHeight","setFontSize","setFontType","subtitleFontSize","tagWidth","roundedRect","headerMargin","subtitleY","logoData","method","responseText","addImage","dotDistance","Gainsboro","inactiveColor","MediumGray","drawX","drawY","circle","ReportConfirmation_Status_TradeCreated","x","y","setFontStyle","textWidth","rgb","parseColor","r","g","b","setDrawColor","numberX","labelX","currentY","currentX","group","splitTextToSize","Array","isArray","gridsEndY","gridsEndX","maxHeight","startY","titleWidth","gridsStartX","entriesInfo","Gray","printGrid","pdfGrid","startX","headerBackground","DarkBlue","contentFontColor","line","rowData","clipText","maxWidth","clippedText","lines"],"mappings":"IAAOA,U,ufCAP,CAAA,SAAOA,GAAU,IAAAC,GAAAA,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,KACFC,UAAhB,SAA0BC,GACtBF,EAAAG,WAAWC,uBAAsB,EAEjC,IAAIJ,EAAAK,KAAKC,QAAQJ,EAAiB,CAAEK,cAAe,CAAA,CAAI,CAAE,CAC7D,CACH,EANMR,UAAAA,WAAS,EAAA,ECAhB,SAAOA,GAAU,IAoJbS,EA2GAA,EAoBAA,EAoBAA,EArSAA,EA0HAA,EA5HaR,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,IAACK,EAAAL,EAAAK,OAAAL,EAAAK,KAAI,IAEvB,SAAAI,I,8CAwHA,CAEA,SAAAC,I,8CAsBA,CAEA,SAAAC,I,8CAsBA,CAxKAH,EAA0CI,WAAWC,QAAXC,UAAAL,EAAAD,CAAA,EAStCC,EAAAM,UAAAC,MAAA,WAAA,IAAAC,EAAAC,KAEQC,EAAWP,WAAWQ,cAAcC,SAASC,cAAa,EAM1DC,GALJL,KAAKM,SAAW,CAACL,EAAa,GAC9BD,KAAKO,UAAYN,EAAa,GAC9BD,KAAKQ,OAASP,EAAiB,QAA0D,CAAC,IAAtD,CAAC,IAAK,IAAK,IAAK,KAAKQ,QAAQR,EAAiB,MAAC,EAAWA,EAAiB,OAAI,IACnHD,KAAKU,eAAyC,QAAxBT,EAAkB,QAEtBA,EAAmB,UAGjCU,EAAQX,KAAKU,eAAiB5B,EAAA8B,QAAQC,6BAAgD,MAAhBb,KAAKQ,OAAiB1B,EAAA8B,QAAQE,sBAAwBd,KAAKe,QAAQJ,MAYzIK,GAXAhB,KAAKe,QAAQE,SACbC,SAASP,MAAQA,EAAQ,MAAQX,KAAKe,QAAQE,OAAOF,QAAQJ,OAIjEjB,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAUC,YAAa,CACjEZ,MAAOX,KAAKU,eAAiB5B,EAAA8B,QAAQC,6BAAgD,MAAhBb,KAAKQ,OAAiB1B,EAAA8B,QAAQE,sBAAwBhC,EAAA8B,QAAQY,sBACnIC,SAAUzB,KAAK0B,YAAW,C,CAC7B,EAGmB1B,KAAK2B,IAAIC,KAAK,eAAe,EAAE,IAEnDlC,WAAWyB,SAASU,aAAab,CAAa,EAG9ChB,KAAK8B,WAAa9B,KAAK+B,gBAAgB,WAGnChC,EAAKiC,SAAW,IAAIlD,EAAAmD,SAASC,qBAAqBnC,EAAK+B,UAAU,EAG7D/B,EAAKO,UAAYD,GACjBN,EAAKoC,iBAAiB9B,EAAaN,EAAKiC,QAAQ,EAIpDtC,WAAWyB,SAASiB,YAAYC,UAAUrB,EAAe,IAAK,WAC1DjB,EAAKuC,aAAevC,EAAKwC,eAAexC,EAAKiC,SAAUhB,CAAa,EACpEjB,EAAKiC,SAASQ,SAASzC,EAAKuC,aAAavB,QAAQ0B,OAAOC,WAAY3C,EAAKS,MAAM,EAG3ET,EAAKQ,WACLR,EAAK+B,WAAWa,gBAAgB5C,EAAKQ,UAAW,CAC5CqC,QAAS,SAACC,GACDA,GAAwB,IAAhBA,EAAKC,SAGE,MAAhB/C,EAAKS,QACLT,EAAKiC,SAASQ,SAASzC,EAAKuC,aAAavB,QAAQ0B,OAAOC,WAAY3C,EAAKS,MAAM,EAC/ET,EAAKuC,aAAaS,qBAAoB,GAC/BhD,EAAKW,eACZX,EAAKuC,aAAaU,sBAAqB,GAEvCjD,EAAKiC,SAASQ,SAASzC,EAAKuC,aAAavB,QAAQ0B,OAAOC,WAAY3C,EAAKS,MAAM,EAC/ET,EAAKiC,SAASQ,SAASzC,EAAKuC,aAAavB,QAAQ0B,OAAOQ,IAAK,EAAE,EAC/DlD,EAAKuC,aAAaY,YAAW,GAErC,C,CACH,CAET,CAAC,CAEL,CAAC,CACL,EAEA3D,EAAAM,UAAAsC,iBAAA,SAAiBgB,EAAsBC,GACnC1D,WAAW2D,KAAKC,YAAYH,EAAc,eAAgB,SAAAN,GACtDO,EAAUG,cAAcC,KAAKC,MAAMZ,CAAI,CAAC,CAC5C,EAAG,WACCa,QAAQC,IAAI,6BAA+BR,CAAY,CAC3D,CAAC,CACL,EAEA5D,EAAAM,UAAA+D,SAAA,WAAA,IAAA7D,EAAAC,KACQA,KAAKsC,aAAauB,SAAQ,EAC1BnE,WAAWyB,SAAS2C,YAAYC,QAAQjF,EAAA8B,QAAQoD,mCAAoC,WAChFjE,EAAKkE,QAAO,CAChB,EAAG,CACCC,QAAS,CACLC,GAAIrF,EAAA8B,QAAQwD,wBACZC,OAAQvF,EAAA8B,QAAQ0D,wB,EAEvB,EAEDtE,KAAKiE,QAAO,CAEpB,EAEA1E,EAAAM,UAAA0E,QAAA,WACQvE,KAAK8B,YACL9B,KAAK8B,WAAW0C,cAAa,EAE7BxE,KAAKsC,cACLtC,KAAKsC,aAAakC,cAAa,CAEvC,EAEAjF,EAAAM,UAAAoE,QAAA,SAAQQ,GACAA,GACA/E,WAAWQ,cAAcC,SAASuE,MAAK,EAE3C1E,KAAKuE,QAAO,EACZvE,KAAKF,MAAK,CACd,EAOsCF,UAAAJ,EAA1CF,EAA0CC,EAF1CA,CAE0C,EAC5BC,EAAAK,UAAA6B,YAAV,WACI,MAAO,SACX,EAEUlC,EAAAK,UAAAkC,gBAAV,SAA0B4C,GACtB,OAAO,IAAI7F,EAAAuE,KAAKuB,0BAA0B,mBAAoBC,KAAAA,EAAWA,KAAAA,EAAWF,CAAO,CAC/F,EAEUnF,EAAAK,UAAAiF,gBAAV,SAA0BhD,GACtB,OAAO,IAAIhD,EAAAmD,SAASC,qBAAqBJ,CAAU,CACvD,EAEUtC,EAAAK,UAAA0C,eAAV,SAAyBa,EAAuCpE,GAAhE,IAAAe,EAAAC,KACI,OAAO,IAAIlB,EAAAmD,SAAS8C,oBAAmD3B,EAAWpE,EAAiB,CAC/FgG,SAAU,CAAA,EACV1E,SAAUN,KAAKM,SACfI,eAAgBV,KAAKU,eACrBuE,MAAO,WAAM,OAAAlF,EAAKkE,QAAQ,CAAA,CAAI,CAAjB,EACbiB,eAAgB,kB,CACnB,CACL,EArBS/F,EAAAK,qBAsBbA,EAE0CI,UAAAH,EAA1CH,EAA0CC,CAAA,EAC5BE,EAAAI,UAAA6B,YAAV,WACI,MAAO,SACX,EAEUjC,EAAAI,UAAAkC,gBAAV,SAA0B4C,GACtB,OAAO,IAAI7F,EAAAuE,KAAK8B,0BAA0B,mBAAoBN,KAAAA,EAAWA,KAAAA,EAAWF,CAAO,CAC/F,EAEUlF,EAAAI,UAAAiF,gBAAV,SAA0BhD,GACtB,OAAO,IAAIhD,EAAAmD,SAASmD,qBAAqBtD,CAAU,CACvD,EAEUrC,EAAAI,UAAA0C,eAAV,SAAyBa,EAAuCpE,GAAhE,IAAAe,EAAAC,KACI,OAAO,IAAIlB,EAAAmD,SAASoD,oBAAmDjC,EAAWpE,EAAiB,CAC/FgG,SAAU,CAAA,EACV1E,SAAUN,KAAKM,SACfI,eAAgBV,KAAKU,eACrBuE,MAAO,WAAM,OAAAlF,EAAKkE,QAAQ,CAAA,CAAI,CAAjB,EACbiB,eAAgB,kB,CACnB,CACL,EArBS/F,EAAAM,qBAsBbA,EASAH,EAA8CI,WAAWC,QAAXC,UAAA0F,EAAAhG,CAAA,EAG1CgG,EAAAzF,UAAAC,MAAA,WAAA,IAOQyF,EAPRxF,EAAAC,KAMQC,GAJCD,KAAKe,QAAQyE,SACd9F,WAAW+F,aAAaC,WAAU,EAGvBhG,WAAWQ,cAAcC,SAASC,cAAa,GA8B1DY,GA1BAhB,KAAKe,QAAQwE,gBACbA,EAAkBvF,KAAKe,QAAQwE,gBAG3BtF,EAAY,GACZsF,EAAkBtF,EAAY,EACzBD,KAAKe,QAAQyE,SACd9F,WAAWQ,cAAcC,SAASwF,gBAAgB,IAAK,CAAEC,QAAS,CAAA,EAAOC,KAAM,CAAA,CAAK,CAAE,EAE1FC,eAAeC,QAAQ,IAAKR,CAAe,IAG3CA,EAAkBO,eAAeE,QAAQ,GAAG,IAExCtC,QAAQuC,KAAK,kCAAkC,EAM3DvG,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAUC,YAAa,CACjEZ,MAAOX,KAAKkG,SAAQ,EACpBzE,SAAU,GAAI0E,kBAAmB,CAAA,C,CACpC,EAGmBnG,KAAK2B,IAAIC,KAAK,eAAe,EAAE,IAEnDlC,WAAWyB,SAASU,aAAab,CAAa,EAG9ChB,KAAK8B,WAAa9B,KAAK+B,gBAAgBwD,EAAiBtF,EAAa,GAAG,CAAEmG,aAAcpG,KAAKe,QAAQsF,cAAe,2BAA6BxB,KAAAA,CAAS,EAAI,SAAA/C,GAG1J,IAAIwE,EAAgBvG,EAAKwG,oBAAoBzE,CAAU,EAGlD/B,EAAKgB,QAAQyE,UACV1D,EAAW0E,MAAMC,IAAI,cAAc,GAAG/G,WAAWQ,cAAcC,SAASuG,aAAa,KAAY5E,EAAY0E,MAAMC,IAAI,cAAc,CAAC,EAC1I3E,EAAW0E,MAAMG,KAAK,sBAAuB,WAAM,OAAAjH,WAAWQ,cAAcC,SAASuG,aAAa,KAAY5E,EAAY0E,MAAMC,IAAI,cAAc,CAAC,CAAhG,CAAiG,GAIxJ1G,EAAK6G,mBAAmBN,EAAetF,EAAe,CAAEgE,SAAU,CAAA,EAAO6B,aAAc,CAAA,EAAOR,cAAetG,EAAKgB,QAAQsF,aAAa,CAAE,EAGzIvE,EAAWa,gBAAe,CAC9B,CAAC,CAEL,EAEA2C,EAAAzF,UAAA0E,QAAA,WACQvE,KAAK8B,YACL9B,KAAK8B,WAAW0C,cAAa,CAErC,EApEJ,IAAAlF,EAAAgG,EA0EAA,EA1EA,SAAAA,I,8CA0EA,CAEA,SAAAwB,I,8CAkBA,CAEA,SAAAC,I,8CAkBA,CAEA,SAAAC,I,8CAoBA,CAxIsB7H,EAAAmG,gBAAeA,EA4EG1F,UAAAkH,EAAxCxH,EAAwCgG,CAAA,EACpCwB,EAAAjH,UAAAkC,gBAAA,SAAgBwD,EAAyB0B,EAAmBlG,EAAiD4D,GACzG,OAAO,IAAI7F,EAAAuE,KAAKuB,0BAA0B,kBAAmBW,EAAiB0B,EAAWtC,EAAS5D,CAAO,CAC7G,EAEA+F,EAAAjH,UAAA+G,mBAAA,SAAmBJ,EAAsCxH,EAA8B+B,GACnF,OAAO,IAAIjC,EAAAmD,SAAS8C,oBAAoByB,EAAOxH,EAAiB+B,CAAO,CAC3E,EAEA+F,EAAAjH,UAAA0G,oBAAA,SAAoBzE,GAChB,OAAO,IAAIhD,EAAAmD,SAASC,qBAAqBJ,CAAU,CACvD,EAEAgF,EAAAjH,UAAAqG,SAAA,WACI,OAAOlG,KAAKe,QAAQsF,cACdvH,EAAA8B,QAAQsG,sBAAwBpI,EAAA8B,QAAQuG,6BACxCrI,EAAA8B,QAAQsG,qBAClB,EAjBS/H,EAAA2H,mBAkBbA,EAEwClH,UAAAmH,EAAxCzH,EAAwCgG,CAAA,EACpCyB,EAAAlH,UAAAkC,gBAAA,SAAgBwD,EAAyB0B,EAAmBlG,EAAiD4D,GACzG,OAAO,IAAI7F,EAAAuE,KAAK8B,0BAA0B,kBAAmBI,EAAiB0B,EAAWtC,EAAS5D,CAAO,CAC7G,EAEAgG,EAAAlH,UAAA+G,mBAAA,SAAmBJ,EAAsCxH,EAA8B+B,GACnF,OAAO,IAAIjC,EAAAmD,SAASoD,oBAAoBmB,EAAOxH,EAAiB+B,CAAO,CAC3E,EAEAgG,EAAAlH,UAAA0G,oBAAA,SAAoBzE,GAChB,OAAO,IAAIhD,EAAAmD,SAASmD,qBAAqBtD,CAAU,CACvD,EAEAiF,EAAAlH,UAAAqG,SAAA,WACI,OAAOlG,KAAKe,QAAQsF,cACdvH,EAAA8B,QAAQwG,sBAAwBtI,EAAA8B,QAAQuG,6BACxCrI,EAAA8B,QAAQwG,qBAClB,EAjBSjI,EAAA4H,mBAkBbA,EAEkCnH,UAAAoH,EAAlC1H,EAAkCgG,CAAA,EAC9B0B,EAAAnH,UAAAkC,gBAAA,SAAgBwD,EAAyB0B,EAAmBlG,EAAiD4D,GACzG,OAAO,IAAI7F,EAAAuE,KAAKgE,oBAAoB,YAAa9B,EAAiB0B,EAAWtC,CAAO,CACxF,EAEAqC,EAAAnH,UAAA+G,mBAAA,SAAmBJ,EAAgCxH,EAA8B+B,GAC7E,OAAO,IAAIjC,EAAAmD,SAASqF,cAAcd,EAAOxH,EAAiB+B,CAAO,CACrE,EAEAiG,EAAAnH,UAAA0G,oBAAA,SAAoBzE,GAChB,OAAO,IAAIhD,EAAAmD,SAASsF,eAAezF,CAAU,CACjD,EAEAkF,EAAAnH,UAAAqG,SAAA,WACI,OAAQpH,EAAA8B,QAAQ4G,eACpB,EAEAR,EAAAnH,UAAA4H,kBAAA,SAAkBC,GACd1H,KAAK2B,IAAIC,KAAK,yBAAyB,EAAE+F,OAAM,CACnD,EAnBSxI,EAAA6H,aAoBbA,EAOA1H,EAA2CI,WAAWC,QAAXC,UAAAgI,EAAAtI,CAAA,EAIvCsI,EAAA/H,UAAAC,MAAA,WAAA,IAAAC,EAAAC,KAIQgB,GAFJtB,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAUsG,qBAAqB,EAEzD5H,KAAK2B,IAAIC,KAAK,oCAAoC,EAAE,IAExElC,WAAWyB,SAASU,aAAab,CAAa,EAE9ChB,KAAK6H,cAAgBnI,WAAW2D,KAAKC,YAAY,qBAAsB,OAAQ,SAACwE,GACxEC,EAAuBvE,KAAKC,MAAMqE,CAAM,EAC5CC,EAAqBC,sBAAsB,GAAGC,MAAQlI,EAAKgB,QAAQmH,iBAEnEnI,EAAK+B,WAAa,IAAIpC,WAAW2D,KAAK8E,gBAAgBJ,EAAsB,WACxE,IAAI3E,EAAY,IAAItE,EAAAmD,SAASmG,wBAAwBrI,EAAK+B,UAAU,EAEpE,IAAIpC,WAAWuC,SAASoG,MAAMC,kBAAkBlF,EAAWpC,EAAelC,EAAAwC,UAAUiH,mBAAoB,CAAEvD,SAAU,CAAA,CAAK,CAAE,EAE3HjF,EAAK+B,WAAW0G,SAAQ,CAC5B,CAAC,CAEL,CAAC,CAEL,EAEAZ,EAAA/H,UAAA0E,QAAA,WACQvE,KAAK6H,eACL7H,KAAK6H,cAAcY,MAAK,EAExBzI,KAAK8B,YACL9B,KAAK8B,WAAW0C,cAAa,CAErC,EAnCJ,IAAAlF,EAAAsI,EAoCAA,EApCA,SAAAA,I,8CAoCA,CApCazI,EAAAyI,sBAoCbA,CACH,EAvWM/I,UAAAA,WAAS,EAAA,ECIhB,SAAOA,GAAU,IAuMbS,EA6DAA,EAnPAA,EAjBaR,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,IAACK,EAAAL,EAAAK,OAAAL,EAAAK,KAAI,IAiBvB,SAAAuJ,I,8CAoLA,CAEA,SAAAC,I,8CA2DA,CAEA,SAAAC,I,8CA+CA,CAlSAtJ,EAAuCI,WAAWC,QAAXC,UAAA8I,EAAApJ,CAAA,EAcnCoJ,EAAA7I,UAAAC,MAAA,WAAA,IAAAC,EAAAC,KAGIN,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAUuH,QAAS,CAC7DlI,MAAOX,KAAKe,QAAQ+H,UACpBC,UAAW/I,KAAKe,QAAQiI,aAAelK,EAAAmK,YAAYC,M,CACtD,EAGDlJ,KAAKmJ,UAAY,CACbC,WAAYpJ,KAAK2B,IAAIC,KAAK,mBAAmB,EAAE,GAC/CyH,MAAOrJ,KAAK2B,IAAIC,KAAK,mBAAmB,EAAE,GAC1C0H,MAAOtJ,KAAK2B,IAAIC,KAAK,mBAAmB,EAAE,GAC1C2H,KAAMvJ,KAAK2B,IAAIC,KAAK,kBAAkB,EAAE,E,EAG5C5B,KAAKwJ,iBAAgB,EAErB9J,WAAWyB,SAASU,aAAa7B,KAAKmJ,UAAUI,IAAI,EAGpDvJ,KAAK8B,WAAa,IAAIhD,EAAAuE,KAAKoG,qBAAqBzJ,KAAKe,QAAQ2I,eAAgB1J,KAAKe,QAAQiI,WAAY,CAAE5C,aAAcpG,KAAKe,QAAQsF,cAAgB,2BAA6BxB,KAAAA,CAAS,EAAI,SAAA/C,GAGzL/B,EAAK4J,gBAAkB,IAAI7K,EAAAmD,SAAS2H,oBAAoB9H,EAAY,CAChE+H,SAAU,eACVC,YAAa,kBACbC,QAAS,S,CACZ,EACD,IAAIC,EAAY,IAAIlL,EAAAmD,SAASgI,oBAAoBnI,CAAU,EACvDoI,EAAW,IAAIpL,EAAAmD,SAASkI,kBAAkBrI,CAAU,EACpDyH,EAAO,IAAIzK,EAAAmD,SAASmI,gBAAgBtI,CAAU,EAE9CuI,EAAe,CACftK,EAAKgB,QAAQiI,aAAelK,EAAAmK,YAAYqB,aAClC,CAAEC,MAAOzL,EAAA8B,QAAQ4J,yBAA2BC,OAAQ,UAAU,EAC9D,CAAEF,MAAOzL,EAAA8B,QAAQ8J,4BAA6BD,OAAQ,aAAa,EACzE,CAAEF,MAAOzL,EAAA8B,QAAQ+J,uBAAwBF,OAAQ,SAAS,GAK9D,IAAI/K,WAAWuC,SAAS2I,oBAAoB7K,EAAK4J,gBAAiB5J,EAAKoJ,UAAUC,WAAY,CACzFyB,cAAe,CAAA,EACfC,WAAY,CACR,CAAEP,MAAOzL,EAAA8B,QAAQmK,0BAA2BC,KAAM,CAAC,CAAC,EACpD,CAAET,MAAOzL,EAAA8B,QAAQqK,qBAAsBD,KAAM,CAAC,CAAC,EAC/C,CAAET,MAAOzL,EAAA8B,QAAQsK,sBAAuBF,KAAM,CAAC,EAAE,GAErDG,SAAS,IAAIC,MAAOC,SAAQ,EAC5BC,OAAQ,CAAEC,KAAMlB,CAAY,C,CAC/B,EACD,IAAI3K,WAAWuC,SAASuJ,OAAOC,aAAavB,EAAUnK,EAAKoJ,UAAUE,MAAO,CACxEqC,cAAe,GACfC,OAAQ,CACJC,QAAS,CAAA,C,EAEhB,EACD,IAAI9M,EAAAmD,SAAS4J,mBAAmB7B,EAAWjK,EAAKoJ,UAAUG,KAAK,EAC/D,IAAIxK,EAAAmD,SAAS6J,mBAAmBvC,EAAMxJ,EAAKoJ,UAAUI,KAAM,CACvDwC,YAAahM,EAAKgB,QAAQgL,YAC1BC,YAAajM,EAAKgB,QAAQiL,YAC1BC,iBAAkBlM,EAAKgB,QAAQiI,aAAelK,EAAAmK,YAAYqB,aAAexL,EAAA8B,QAAQsL,wBAA0BpN,EAAA8B,QAAQuL,0B,CACtH,EAGGpM,EAAKgB,QAAQiI,aAAelK,EAAAmK,YAAYC,SACxCnJ,EAAKqM,iBAAmB,IAAItN,EAAAuE,KAAKoG,qBAAqB1J,EAAKgB,QAAQ2I,eAAiB,SAChF3J,EAAKgB,QAAQiI,WACb,CAAE5C,aAAcrG,EAAKgB,QAAQsF,cAAgB,2BAA6BxB,KAAAA,CAAS,EACnF,SAAA/C,GACIA,EAAWuK,aAAY,EAAGC,UAAU,SAACC,GAAM,OAAAxM,EAAKyM,kBAAkBD,EAAE1J,IAAI,CAA7B,CAA8B,CAC7E,CAAC,EAEL9C,EAAK0M,QAAQC,UAAUC,MAAM,WACzBjN,WAAWyB,SAASU,aAAa9B,EAAKoJ,UAAUI,IAAI,EACpDxJ,EAAKqM,iBAAiBQ,QAAQ,GAAI7M,CAAI,EACtCA,EAAK8M,YAAY9M,EAAKqM,gBAAgB,CAC1C,CAAC,GAILrM,EAAK4J,gBAAgBmD,MAAM,CAAEC,YAAa,SAAUC,UAAW,MAAM,EAAI,CAAED,YAAahN,EAAKkN,sBAAqB,EAAID,UAAWjN,EAAKmN,oBAAmB,CAAE,CAAC,CAChK,CAAC,CACL,EAEQxE,EAAA7I,UAAAgN,YAAR,SAAoB/K,GAChB,IAAIgG,EAAShG,EAAWqL,UAAS,EACjCrF,EAAOsF,gBAAgBC,OAASrN,KAAK2J,gBAAgB2D,sBAAsBtN,KAAK2J,gBAAgBlD,IAAG,EAAGsG,aACtGjF,EAAOsF,gBAAgBG,UAAYvN,KAAK2J,gBAAgBlD,IAAG,EAAGuG,UAAU3B,SAAQ,EAChFvD,EAAOsF,gBAAgBI,SAAU,IAAIpC,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,EAAEC,WAAW,CAAC,IAAK,EAEnF5L,EAAW6L,UAAU7F,EAAQ9H,IAAI,EACjC8B,EAAW0G,SAAQ,CACvB,EAEQE,EAAA7I,UAAA2J,iBAAR,WACIxJ,KAAKyM,QAAU,CACXC,UAAW1M,KAAK2B,IAAIC,KAAK,sBAAsB,C,EAGnD5B,KAAKyM,QAAQC,UAAUkB,aAAa,CAChCC,SAAU,MACVC,KAAM,SAAAvB,GAAK,OAAA7M,WAAWyB,SAAS4M,aAAaxB,EAAEyB,MAAM,CAAzC,C,CACd,CACL,EAEQtF,EAAA7I,UAAA2M,kBAAR,SAA0B3J,GAGtB,IAGIoL,EACAC,EANJxO,WAAWyB,SAASgN,aAAanO,KAAKmJ,UAAUI,IAAI,EAE/C1G,GAAwB,IAAhBA,EAAKC,SAGdmL,EAAWjO,KAAKoO,cAAa,EAC7BF,EAAUlO,KAAKoM,iBAAiBiC,gBAAe,EACnD3O,WAAW2D,KAAKiL,OAAOC,UAAU1L,EAAMqL,EAASD,EAAU,CAAEO,iBAAkBxO,KAAKe,QAAQyN,gBAAgB,CAAE,EACjH,EAEQ9F,EAAA7I,UAAAuO,cAAR,WACI,IAAIK,EAAQ,GACZ,OAAQzO,KAAKe,QAAQiI,YACrB,KAAKlK,EAAAmK,YAAYyF,aACbD,EAAQ,SACR,MACJ,KAAK3P,EAAAmK,YAAYqB,aACbmE,EAAQ,Q,CAGZ,IAAMhE,EAAS3L,EAAA8B,QAAQ,6BAAA+N,OAA6B3O,KAAK2J,gBAAgBlD,IAAG,EAAGsG,WAAW,GACpFxB,EAAOqD,MAAMC,SAAS7O,KAAK2J,gBAAgBlD,IAAG,EAAGuG,UAAW,UAAU,EACtE8B,EAAKF,MAAMC,UAAS,IAAIzD,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,EAAEC,WAAW,CAAC,IAAK,EAAG,eAAe,EAE9F,MAAO,GAAAiB,OAAGF,EAAK,GAAA,EAAAE,OAAI7P,EAAA8B,QAAQmO,iBAAgB,GAAA,EAAAJ,OAAIlE,EAAM,GAAA,EAAAkE,OAAIpD,EAAI,GAAA,EAAAoD,OAAIG,CAAE,CACvE,EAEApG,EAAA7I,UAAA0E,QAAA,WACQvE,KAAK8B,YACL9B,KAAK8B,WAAW0C,cAAa,CAErC,EAEAkE,EAAA7I,UAAAqN,oBAAA,WACI,OAAQlN,KAAKe,QAAQiI,YACjB,KAAKlK,EAAAmK,YAAYyF,aACb,OAAO,IAAItD,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,CAAC,EAC3C,KAAK3O,EAAAmK,YAAYqB,aACb,OAAO,IAAIc,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,EAAE,EAC5C,KAAK3O,EAAAmK,YAAYC,OACb,OAAO,IAAIkC,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,CAAC,EAC3C,QACI,KAAM,qB,CAElB,EAEA/E,EAAA7I,UAAAoN,sBAAA,WACI,OAAQjN,KAAKe,QAAQiI,YACjB,KAAKlK,EAAAmK,YAAYyF,aACb,MAAO,cACX,KAAK5P,EAAAmK,YAAYqB,aACb,MAAO,WACX,KAAKxL,EAAAmK,YAAYC,OACb,MAAO,cACX,QACI,KAAM,qB,CAElB,EAnLS/J,EAAAuJ,kBAoLbA,EAEApJ,EAA2CI,WAAWC,QAAXC,UAAA+I,EAAArJ,CAAA,EAGvCqJ,EAAA9I,UAAAC,MAAA,WAAA,IAAAC,EAAAC,KAQQgP,GANJtP,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAUuH,QAAS,CAC7DlI,MAAOX,KAAKe,QAAQ+H,UACpBC,UAAW,CAAA,C,CACd,EAGyB/I,KAAK2B,IAAIC,KAAK,mBAAmB,EAAE,IACzDqN,EAAiBjP,KAAK2B,IAAIC,KAAK,mBAAmB,EAAE,GACpDsN,EAAiBlP,KAAK2B,IAAIC,KAAK,mBAAmB,EAAE,GACpDuN,EAAgBnP,KAAK2B,IAAIC,KAAK,kBAAkB,EAAE,GAEtDlC,WAAWyB,SAASU,aAAasN,CAAa,EAG9CnP,KAAK8B,WAAa,IAAIhD,EAAAuE,KAAK+L,yBAAyBpP,KAAKe,QAAQ2I,eAAgB,WAG7E,IAAIC,EAAkB,IAAI7K,EAAAmD,SAAS2H,oBAAoB7J,EAAK+B,UAAU,EAClEkI,EAAY,IAAIlL,EAAAmD,SAASgI,oBAAoBlK,EAAK+B,UAAU,EAC5DoI,EAAW,IAAIpL,EAAAmD,SAASkI,kBAAkBpK,EAAK+B,UAAU,EACzDyH,EAAO,IAAIzK,EAAAmD,SAASmI,gBAAgBrK,EAAK+B,UAAU,EAGvD,IAAIpC,WAAWuC,SAAS2I,oBAAoBjB,EAAiBqF,EAAqB,CAC9EnE,cAAe,CAAA,EACfC,WAAY,CACR,CAAEP,MAAOzL,EAAA8B,QAAQmK,0BAA2BC,KAAM,CAAC,CAAC,EACpD,CAAET,MAAOzL,EAAA8B,QAAQqK,qBAAsBD,KAAM,CAAC,CAAC,EAC/C,CAAET,MAAOzL,EAAA8B,QAAQsK,sBAAuBF,KAAM,CAAC,EAAE,GAErDG,SAAS,IAAIC,MAAOC,SAAQ,EAC5BC,OAAQ,CAAEC,KAAMzM,EAAA8B,QAAQ+J,sBAAsB,C,CACjD,EACD,IAAIjL,WAAWuC,SAASuJ,OAAOC,aAAavB,EAAU+E,EAAgB,CAClEvD,cAAe,GACfC,OAAQ,CACJC,QAAS,CAAA,C,EAEhB,EACD,IAAI9M,EAAAmD,SAAS4J,mBAAmB7B,EAAWkF,CAAc,EACzD,IAAIpQ,EAAAmD,SAASoN,uBAAuB9F,EAAM4F,EAAe,CACrDlD,iBAAkBnN,EAAA8B,QAAQ0O,sB,CAC7B,EAGD3F,EAAgB4F,WAAW,QAAQ,IAAInE,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,CAAC,CAAC,CACxE,CAAC,CACL,EAEA9E,EAAA9I,UAAA0E,QAAA,WACQvE,KAAK8B,YACL9B,KAAK8B,WAAW0C,cAAa,CAErC,EA1DSrF,EAAAwJ,sBA2DbA,EAEArJ,EAAuCI,WAAWC,QAAXC,UAAAgJ,EAAAtJ,CAAA,EAGnCsJ,EAAA/I,UAAAC,MAAA,WAAA,IAAAC,EAAAC,KAQQgP,GANJtP,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAUuH,QAAS,CAC7DlI,MAAOX,KAAKe,QAAQ+H,UACpBC,UAAW,CAAA,C,CACd,EAGyB/I,KAAK2B,IAAIC,KAAK,mBAAmB,EAAE,IACzDuN,EAAgBnP,KAAK2B,IAAIC,KAAK,kBAAkB,EAAE,GAKlD4N,GAHJ9P,WAAWyB,SAASU,aAAasN,CAAa,EAG7B3L,KAAKC,MAAM3E,EAAAuE,KAAKoM,gBAAgBzP,KAAKe,QAAQ2I,eAAgB,MAAM,CAAC,GACrF1J,KAAK8B,WAAa,IAAIpC,WAAW2D,KAAK8E,gBAAgBqH,EAAY,WAG9D,IAAI7F,EAAkB,IAAI7K,EAAAmD,SAASyN,gBAAgB3P,EAAK+B,UAAU,EAC9DyH,EAAO,IAAIzK,EAAAmD,SAAS0N,oBAAoB5P,EAAK+B,UAAU,EAG3D,IAAIpC,WAAWuC,SAAS2I,oBAAoBjB,EAAiBqF,EAAqB,CAC9EnE,cAAe,CAAA,EACfC,WAAY,CACR,CAAEP,MAAOzL,EAAA8B,QAAQgP,iBAAkB5E,KAAM,CAAC,EAC1C,CAAET,MAAOzL,EAAA8B,QAAQiP,qBAAsB7E,KAAM,CAAC,CAAC,GAEnDG,SAAS,IAAIC,MAAOC,SAAQ,EAC5BC,OAAQ,CAAEC,KAAMzM,EAAA8B,QAAQkP,oBAAoB,C,CAC/C,EAED,IAAIpQ,WAAWuC,SAAS8N,MAAMC,SAASzG,EAAM4F,EAAe,CAACc,WAAY,CAAA,EAAMC,SAAS,CAACC,QAAS,IAAKC,KAAM,EAAE,EAAGC,WAAY,CAAA,CAAI,CAAC,EAGnI1G,EAAgB4F,WAAW,QAAQ,IAAInE,MAAOC,SAAQ,CAAE,CAC5D,CAAC,CACL,EAEAzC,EAAA/I,UAAA0E,QAAA,WACQvE,KAAK8B,YACL9B,KAAK8B,WAAW0C,cAAa,CAErC,EA9CSrF,EAAAyJ,kBA+CbA,CACH,EApTM/J,UAAAA,WAAS,EAAA,ECAhB,SAAOA,GAAU,IAAAC,EAQbQ,EAAA,SAAAgR,I,8CAyIA,CAjJaxR,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,IAACK,EAAAL,EAAAK,OAAAL,EAAAK,KAAI,IAQvBG,EAAkCI,WAAWC,QAAXC,UAAA0Q,EAAAhR,CAAA,EAa9BgR,EAAAzQ,UAAAC,MAAA,WAAA,IAAAC,EAAAC,KAEQuQ,EAAY,KAAA5B,OAAK3O,KAAKe,QAAQyP,sBAAqB,4BAAA,EAAA7B,OAA6BC,MAAMC,UAAS,IAAIzD,MAAOqC,QAAQ,CAAC,CAAC,EAAG,UAAU,CAAC,EAClIgD,EAAY,KAAA9B,OAAK3O,KAAKe,QAAQ2P,sBAAqB,yBAAA,EAAA/B,OAA0BC,MAAMC,UAAS,IAAIzD,MAAOqC,QAAQ,CAAC,EAAE,EAAG,UAAU,CAAC,EAChIkD,EAAY,KAAAhC,OAAK3O,KAAKe,QAAQ6P,gBAAe,4BAAA,EAAAjC,OAA6BC,MAAMC,UAAS,IAAIzD,MAAOqC,QAAQ,CAAC,CAAC,EAAG,UAAU,CAAC,EAkE5HoD,GA/DJnR,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAUgP,aAAc,CAClEC,UAAWA,EACXE,UAAWA,EACXE,UAAWA,C,CACd,EAEG7R,EAAAG,WAAW6R,2BAA0B,GACrChS,EAAAG,WAAW8R,UAAS,EAIxB/Q,KAAKgR,WAAa,CACdC,YAAajR,KAAK2B,IAAIC,KAAK,wBAAwB,EAAE,GACrDsP,UAAWlR,KAAK2B,IAAIC,KAAK,sBAAsB,EAAE,GACjDuP,UAAWnR,KAAK2B,IAAIC,KAAK,sBAAsB,EAAE,GACjDwP,YAAapR,KAAK2B,IAAIC,KAAK,wBAAwB,EAAE,GACrDyP,UAAWrR,KAAK2B,IAAIC,KAAK,sBAAsB,EAAE,E,EAGrDlC,WAAWyB,SAASU,aAAa7B,KAAKgR,WAAWC,WAAW,EAC5DvR,WAAWyB,SAASU,aAAa7B,KAAKgR,WAAWE,SAAS,EAC1DxR,WAAWyB,SAASU,aAAa7B,KAAKgR,WAAWG,SAAS,EAC1DzR,WAAWyB,SAASU,aAAa7B,KAAKgR,WAAWI,WAAW,EAC5D1R,WAAWyB,SAASU,aAAa7B,KAAKgR,WAAWK,SAAS,EAE1DrR,KAAKsR,aAAe,IAAIxS,EAAAuE,KAAKkO,oBAAoB,WAC7C,IAAIN,EAAc,IAAInS,EAAAmD,SAASuP,+BAA+BzR,EAAKuR,YAAY,EAC3EG,EAAiB,IAAI3S,EAAAmD,SAASyP,qBAAqB3R,EAAKuR,YAAY,EAGxE,IAAI5R,WAAWuC,SAASuJ,OAAOmG,uBAAuBV,EAAalR,EAAKiR,WAAWC,YAAa,CAAEW,UAAW,CAAEC,OAAQ,EAAE,CAAE,CAAE,EAE7H,IAAInS,WAAWuC,SAASuJ,OAAOC,aAAagG,EAAgB1R,EAAKiR,WAAWE,UAAW,CACnFxF,cAAe5M,EAAA8B,QAAQkR,oC,CAC1B,CACL,CAAC,EAED9R,KAAK+R,aAAe,IAAIjT,EAAAuE,KAAKkO,oBAAoB,WAC7C,IAAIS,EAAiB,IAAIlT,EAAAmD,SAASyP,qBAAqB3R,EAAKgS,YAAY,EAExE,IAAIrS,WAAWuC,SAASuJ,OAAOC,aAAauG,EAAgBjS,EAAKiR,WAAWG,UAAW,CACnFzF,cAAe5M,EAAA8B,QAAQqR,qCACvBtG,OAAQ,CAAEkC,SAAU,SAAUqE,QAAS,CAAC,IAAKC,QAAS,CAAC,C,CAC1D,CACL,CAAC,EAEDnS,KAAKoS,YAAc,IAAItT,EAAAuE,KAAKkO,oBAAoB,WAC5C,IAAIc,EAAa,IAAIvT,EAAAmD,SAASuP,+BAA+BzR,EAAKqS,WAAW,EACzEE,EAAgB,IAAIxT,EAAAmD,SAASyP,qBAAqB3R,EAAKqS,WAAW,EAGtE,IAAI1S,WAAWuC,SAASuJ,OAAOmG,uBAAuBU,EAAYtS,EAAKiR,WAAWI,YAAa,CAAEQ,UAAW,CAAEC,OAAQ,EAAE,CAAE,CAAE,EAE5H,IAAInS,WAAWuC,SAASuJ,OAAOC,aAAa6G,EAAevS,EAAKiR,WAAWK,UAAW,CAClF3F,cAAe5M,EAAA8B,QAAQ2R,8B,CAC1B,CACL,CAAC,EAGDvS,KAAKsR,aAAakB,eAAc,IAAIpH,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,CAAC,EAAG3O,EAAAmK,YAAYyF,YAAY,EAC3F1O,KAAK+R,aAAaS,eAAc,IAAIpH,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,EAAE,EAAG3O,EAAAmK,YAAYqB,YAAY,EAC5FtK,KAAKoS,YAAYI,eAAc,IAAIpH,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,CAAC,EAAG3O,EAAAmK,YAAYC,MAAM,EAE1DuJ,EAAE,+BAAiC/S,WAAWgT,eAAeC,OAAO,EAAEC,KAAI,GAChG/B,GACA7Q,KAAK2B,IAAIkR,OAAOhC,CAAmB,CAE3C,EAEAP,EAAAzQ,UAAAiT,gBAAA,SAAgBvG,EAAQO,GAEpB,IACIP,EAAEyB,OAAO+E,SAASC,QAAO,C,CAC3B,MAAOzG,IAET,IAAI0G,EAAS1G,EAAE2G,SAEXC,GAAW,IAAI/H,MAAOqC,QAAQ,CAAC,CAAC,EAChC2F,EAAM,KAAOtG,EACb,YAAchO,EAAAuU,iBAAiBC,oBAAoBL,CAAM,EACzD,SAAWrE,MAAMC,SAASsE,EAAU,UAAU,EAC9C,sBAEJzP,QAAQC,IAAIyP,CAAG,EACf1T,WAAWQ,cAAcqT,OAAOH,CAAG,CACvC,EAEA9C,EAAAzQ,UAAA2T,sBAAA,SAAsBjH,EAAQO,GAE1B,IACIP,EAAEyB,OAAO+E,SAASC,QAAO,C,CAC3B,MAAOzG,IAGT,IAAI0G,EAASnU,EAAAuU,iBAAiBI,kBAAkBlH,EAAEmH,OAAOC,KAAK,EAE1DR,EAAWrU,EAAAuU,iBAAiBO,yBAAyBrH,EAAE2G,SAAU,CAAC,EAClEE,EAAM,KAAOtG,EACb,YAAcmG,EACd,SAAWrE,MAAMC,SAASsE,EAAU,UAAU,EAC9C,sBAEJzP,QAAQC,IAAIyP,CAAG,EACf1T,WAAWQ,cAAcqT,OAAOH,CAAG,CACvC,EAEA9C,EAAAzQ,UAAA0E,QAAA,WACQvE,KAAKsR,cACLtR,KAAKsR,aAAauC,aAAY,EAE9B7T,KAAK+R,cACL/R,KAAK+R,aAAa8B,aAAY,EAE9B7T,KAAKoS,aACLpS,KAAKoS,YAAYyB,aAAY,CAErC,EAxIS1U,EAAAmR,aAyIbA,CACH,EAlJMzR,UAAAA,WAAS,EAAA,ECJhB,SAAOA,GAAU,IAAAC,EAAMK,EAEnBG,EAAA,SAAAF,I,8CA8LA,CAhMaN,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,IAACK,EAAAL,EAAAK,OAAAL,EAAAK,KAAI,IAEvBG,EAA6BI,WAAWC,QAAXC,UAAAR,EAAAE,CAAA,EACzBF,EAAAS,UAAAC,MAAA,WAAA,IAAAC,EAAAC,KACIA,KAAK8T,mCAAmC,SAAAC,GAGpC,IAAIC,EAAgB,IAAItU,WAAW+F,aAAawO,UAAU9U,EAAA2H,mBAAoB,kBAAmB,CAAEnG,MAAO7B,EAAA8B,QAAQsG,qBAAqB,CAAE,EACrIgN,EAAgB,IAAIxU,WAAW+F,aAAawO,UAAU9U,EAAAuJ,kBAAmB,mBAAoB,CAC7F/H,MAAO7B,EAAA8B,QAAQuT,qBACfrL,UAAWhK,EAAA8B,QAAQuT,qBACnBnL,WAAYlK,EAAAmK,YAAYyF,aACxBhF,eAAgB,YAChBqC,YAAa,CAAEqI,MAAO,qBAAsBC,IAAK,MAAM,EACvDrI,YAAagI,C,CAChB,EAEGM,EAAgB,IAAI5U,WAAW+F,aAAawO,UAAU9U,EAAA4H,mBAAoB,kBAAmB,CAAEpG,MAAO7B,EAAA8B,QAAQwG,qBAAqB,CAAE,EACrImN,EAAiB,IAAI7U,WAAW+F,aAAawO,UAAU9U,EAAAuJ,kBAAmB,mBAAoB,CAC9F/H,MAAO7B,EAAA8B,QAAQ4T,qBACf1L,UAAWhK,EAAA8B,QAAQ4T,qBACnBxL,WAAYlK,EAAAmK,YAAYqB,aACxBZ,eAAgB,kBAChBqC,YAAa,CAAEqI,MAAO,2BAA4BC,IAAK,MAAM,EAC7DrI,YAAasI,C,CAChB,EAEGG,EAAyB,IAAI/U,WAAW+F,aAAawO,UAAU9U,EAAA2H,mBAAoB,sBAAuB,CAC1GnG,MAAO7B,EAAA8B,QAAQsG,sBAAwB,IAAMpI,EAAA8B,QAAQ8T,oBACrDrO,cAAe,CAAA,C,CAClB,EACGsO,EAAyB,IAAIjV,WAAW+F,aAAawO,UAAU9U,EAAAuJ,kBAAmB,sBAAuB,CACzG/H,MAAO7B,EAAA8B,QAAQuT,qBAAuB,IAAMrV,EAAA8B,QAAQ8T,oBACpD5L,UAAWhK,EAAA8B,QAAQuT,qBAAuBrV,EAAA8B,QAAQuG,6BAClD6B,WAAYlK,EAAAmK,YAAYyF,aACxBhF,eAAgB,YAChBqC,YAAa,CAAEqI,MAAO,qBAAsBC,IAAK,MAAM,EACvDrI,YAAayI,EACbpO,cAAe,CAAA,C,CAClB,EAEGuO,EAAyB,IAAIlV,WAAW+F,aAAawO,UAAU9U,EAAA4H,mBAAoB,sBACvF,CACIpG,MAAO7B,EAAA8B,QAAQwG,sBAAwB,IAAMtI,EAAA8B,QAAQ8T,oBACrDrO,cAAe,CAAA,C,CAClB,EACGwO,EAA0B,IAAInV,WAAW+F,aAAawO,UAAU9U,EAAAuJ,kBAAmB,sBAAuB,CAC1G/H,MAAO7B,EAAA8B,QAAQ4T,qBAAuB,IAAM1V,EAAA8B,QAAQ8T,oBACpD5L,UAAWhK,EAAA8B,QAAQ4T,qBAAuB1V,EAAA8B,QAAQuG,6BAClD6B,WAAYlK,EAAAmK,YAAYqB,aACxBZ,eAAgB,kBAChBqC,YAAa,CAAEqI,MAAO,2BAA4BC,IAAK,MAAM,EAC7DrI,YAAa4I,EACbvO,cAAe,CAAA,C,CAClB,EAEGyO,EAAe,IAAIpV,WAAW+F,aAAawO,UAAU9U,EAAA6H,aAAc,YAAa,CAAErG,MAAO7B,EAAA8B,QAAQ4G,eAAe,CAAE,EAClHuN,EAAgB,IAAIrV,WAAW+F,aAAawO,UAAU9U,EAAAuJ,kBAAmB,aAAc,CACvF/H,MAAO7B,EAAA8B,QAAQoU,iBACflM,UAAWhK,EAAA8B,QAAQoU,iBACnBhM,WAAYlK,EAAAmK,YAAYC,OACxBQ,eAAgB,YAChBqC,YAAa,CAAEqI,MAAO,qBAAsBC,IAAK,MAAM,EACvDrI,YAAa8I,C,CAChB,EAEGG,EAAwB,IAAIvV,WAAW+F,aAAawO,UAAU9U,EAAAwJ,sBAAuB,WAAY,CACjGhI,MAAO7B,EAAA8B,QAAQsU,2BACfpM,UAAWhK,EAAA8B,QAAQsU,2BACnBxL,eAAgB,gB,CACnB,EACGyL,EAAoB,IAAIzV,WAAW+F,aAAawO,UAAU9U,EAAAyJ,kBAAmB,aAAc,CAC3FjI,MAAO7B,EAAA8B,QAAQwU,qBACftM,UAAWhK,EAAA8B,QAAQwU,qBACnB1L,eAAgB,Y,CACnB,EAEG2L,EAAuB,IAAI3V,WAAW+F,aAAa6P,mBAAmBnW,EAAAK,qBAAsB,oBAAqB,CAAEmB,MAAO7B,EAAA8B,QAAQY,sBAAwB,YAAY,CAAE,EACxK+T,EAAuB,IAAI7V,WAAW+F,aAAa6P,mBAAmBnW,EAAAM,qBAAsB,oBAAqB,CAAEkB,MAAO7B,EAAA8B,QAAQY,sBAAwB,YAAY,CAAE,EAExKgU,EAAe,IAAI9V,WAAW+F,aAAawO,UAA+B9U,EAAAmR,aAAc,GAAI,CAC5F3P,MAAO,YACP6P,sBAAuB0D,EAAcpH,MACrC4D,sBAAuB6D,EAAezH,MACtC8D,gBAAiBmE,EAAcjI,K,CAClC,EAEG2I,EAAa,CACbD,EACAtB,EACAa,EACAR,EACAU,EACAE,EACAnB,EACAM,EACAQ,EACAS,EACAF,GAIAK,EAAkB,IAAIhW,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQgV,iBAAkB,KAAM,CACvF,IAAIlW,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQiV,uBAAwB,CAAE/I,MAAOuI,EAAqBvI,MAAOgJ,cAAe,CAAA,CAAI,CAAE,EAC/H,IAAIpW,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQmV,uBAAwB,CAAEjJ,MAAOyI,EAAqBzI,MAAOgJ,cAAe,CAAA,CAAI,CAAE,EAClI,EAEGE,EAAgB,IAAItW,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQqV,sBAAuB,KAAM,CAC1F,IAAIvW,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQsV,qBAAsB,KAAM,CACrE,IAAIxW,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQuV,kBAAmB,CAAErJ,MAAOoH,EAAcpH,KAAK,CAAE,EAC9F,IAAIpN,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQwV,kBAAmB,CAAEtJ,MAAOyH,EAAezH,KAAK,CAAE,EAC/F,IAAIpN,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQyV,YAAa,CAAEvJ,MAAOiI,EAAcjI,KAAK,CAAE,EAC3F,EACD,IAAIpN,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQ0V,sBAAuB,CAAExJ,MAAOmI,EAAsBnI,KAAK,CAAE,EAC1G,IAAIpN,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQ2V,gBAAiB,CAAEzJ,MAAOqI,EAAkBrI,KAAK,CAAE,EACnG,EAEG0J,EAAsB,IAAI9W,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQ6V,sBAAuB,KAAM,CAChG,IAAI/W,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQuV,kBAAmB,CAAErJ,MAAO6H,EAAuB7H,KAAK,CAAE,EACvG,IAAIpN,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQwV,kBAAmB,CAAEtJ,MAAO+H,EAAwB/H,KAAK,CAAE,EAC3G,EAEG4J,EAAW,IAAIhX,WAAW+F,aAAakQ,SAAS,kBAAmB,CAAE7I,MAAO0I,EAAa1I,KAAK,EAAI,CAClG4I,EACAM,EACH,EAYKW,GAVF5C,IACA2C,EAASE,SAAS/Q,KAAK2Q,CAAmB,EAC1Cf,EAAaA,EAAW9G,OAAO,CAC3B8F,EACAG,EACAD,EACAE,EACH,GAGqBnV,WAAWgT,eAAemE,cAAoE,SAApDnX,WAAWgT,eAAemE,aAAaC,UACvGH,GACAD,EAASE,SAAS/Q,KAAK,IAAInG,WAAW+F,aAAakQ,SAAS7W,EAAM8B,QAAQmW,YAAY,CAAC,EAI3F,IAAIrX,WAAW+F,aAAarG,QAAQW,EAAKsB,GACrC,CACI2V,KAAMvB,EACNiB,SAAUA,EACVO,SAAU,CACNC,cAAexX,WAAW+F,aAAa0R,cAAcC,Q,EAEzDC,SAAU,CACNC,YAAa,CACT,IAAI5X,WAAW+F,aAAakQ,SAAS7W,EAAA8B,QAAQ2W,gBAAiB,CAAEnE,IAAK,qDAAsDoE,UAAW,CAAA,CAAI,CAAE,E,EAGvJ,EAEDb,GACA5W,EAAK4B,IAAIC,KAAK,kBAAA+M,OAAkB7P,EAAM8B,QAAQmW,aAAY,IAAA,CAAI,EAAEpK,MAAM,WAAM,OAAA7N,EAAAG,WAAW8R,UAAS,CAApB,CAAsB,CAE1G,CAAC,CAEL,EAEA3R,EAAAS,UAAAiU,mCAAA,SAAmC2D,GAC/BzX,KAAK0X,2BAA2B,SAAAC,GACxBA,GAAWA,EAAoD,2CAC/DF,EAAQ,CAAA,CAAI,EAEZA,EAAQ,CAAA,CAAK,CAErB,CAAC,CACL,EAEArY,EAAAS,UAAA6X,2BAAA,SAA2BE,GACN,IAAIlY,WAAW2D,KAAK8E,gBAAgB,CAC7C0P,cAAe,yBACfC,eAAgB,CACZ,CAAEC,YAAa,yBAA0B1K,OAAQ,wBAAwB,EACzE,CAAE0K,YAAa,yBAA0B1K,OAAQ,qBAAqB,E,EAG9E,SAAA2K,GACIA,EAAOxP,SAAS,CACZ5F,QAAS,SAAAC,GAAQ,OAAA+U,EAAO/U,EAAOA,EAAK,GAAK,IAAI,CAA5B,EACjBoV,MAAO,WAAM,OAAAL,EAAO,IAAI,CAAX,C,CAChB,CACL,EACA,CACIM,cAAe,WAAM,OAAAN,EAAO,IAAI,CAAX,C,CACxB,CACT,EA7LSzY,EAAAC,QA8LbA,CACH,EAjMMP,UAAAA,WAAS,EAAA,ECAhB,SAAOA,GAAU,IA4FbS,EAoDAA,EA9IAA,EAFaR,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,IAACmD,EAAAnD,EAAAmD,WAAAnD,EAAAmD,SAAQ,IAMvB,SAAAkI,EAAYrI,GAAZ,IAAA/B,EACIT,EAAA6Y,KAAAnY,IAAA,GAAOA,K,OAEPD,EAAK+B,WAAaA,EAClB/B,EAAK+B,WAAWuK,aAAY,EAAGC,UAAU,SAACC,GAAM,OAAAxM,EAAKqY,gBAAgB7L,EAAE1J,IAAI,CAA3B,CAA4B,E,CAChF,CAqFA,SAAA6O,EAAY5P,GAAZ,IAAA/B,EACIT,EAAA6Y,KAAAnY,IAAA,GAAOA,K,OAEPD,EAAK+B,WAAaA,EAClB/B,EAAKqY,gBAAe,E,CACxB,CA+CA,SAAA5G,EAAY1P,GAAZ,IAAA/B,EACIT,EAAA6Y,KAAAnY,IAAA,GAAOA,K,OAEPD,EAAK+B,WAAaA,EAClB/B,EAAKqY,gBAAe,E,CACxB,CAvJJ9Y,EAAuCI,WAAWuC,SAASuJ,OAAO6M,cAA3BzY,UAAAuK,EAAA7K,CAAA,EAW3B6K,EAAAtK,UAAAuY,gBAAR,SAAwBvV,GAYpB,IAVA,IAAIyV,EAAiB,CACjBC,QAAS,EACTC,QAAS,EACT5V,QAAS,EACT6V,QAAS,EACTC,QAAS,EACTC,eAAgB,C,EAIXC,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GAC9B,GAAI,CAAC/V,EAAK+V,GAAc,UACpB,OAAQ/V,EAAK+V,GAAqB,kBAC9B,IAAK,WACL,IAAK,MACL,IAAK,UACDN,EAAeE,OAAO,GACtB,MACJ,IAAK,UACDF,EAAe1V,OAAO,GACtB,MACJ,IAAK,mBACD0V,EAAeG,OAAO,GACtB,MACJ,IAAK,aACDH,EAAeI,OAAO,GACtB,MACJ,IAAK,cACL,IAAK,iBACDJ,EAAeK,cAAc,GAC7B,MACJ,IAAK,YACDL,EAAeC,OAAO,E,CAMtC,IAAIM,EAAY,CACZ,CACI3F,SAAUpU,EAAA8B,QAAQkY,sBAClBC,MAAOja,EAAAka,aAAaC,OAAOC,QAC3BC,MAAOb,EAAe1V,O,EAE1B,CACIsQ,SAAUpU,EAAA8B,QAAQwY,sBAClBL,MAAOja,EAAAka,aAAaC,OAAOI,QAC3BF,MAAOb,EAAeI,O,EAE1B,CACIxF,SAAUpU,EAAA8B,QAAQ0Y,sBAClBP,MAAOja,EAAAka,aAAaC,OAAOM,QAC3BJ,MAAOb,EAAeE,O,EAG1B,CACItF,SAAUpU,EAAA8B,QAAQ4Y,+BAClBT,MAAOja,EAAAka,aAAaC,OAAOQ,QAC3BN,MAAOb,EAAeG,O,EAG1B,CACIvF,SAAUpU,EAAA8B,QAAQ8Y,6BAClBX,MAAOja,EAAAka,aAAaC,OAAOU,eAC3BR,MAAOb,EAAeK,c,EAE1B,CACIzF,SAAUpU,EAAA8B,QAAQgZ,sBAClBb,MAAOja,EAAAka,aAAaC,OAAOY,QAC3BV,MAAOb,EAAeC,O,GAI9BvY,KAAK6C,KAAKgW,CAAS,CACvB,EAvFS5W,EAAAkI,kBAwFbA,EAEA7K,EAA0CI,WAAWuC,SAASuJ,OAAO6M,cAA3BzY,UAAA8R,EAAApS,CAAA,EAW9BoS,EAAA7R,UAAAuY,gBAAR,WACI,IAAIvV,EAAO7C,KAAK8B,WAAW2E,IAAG,EAAG5D,KAC7BiX,EAAYjX,GAAQA,EAAKkX,OAASlX,EAAKkX,OAAY,IAAI,GAEvDlB,EAAY,CACZ,CACI3F,SAAUpU,EAAA8B,QAAQkY,sBAClBC,MAAOja,EAAAka,aAAaC,OAAOC,QAC3BC,MAAOW,EAAmB,O,EAE9B,CACI5G,SAAUpU,EAAA8B,QAAQwY,sBAClBL,MAAOja,EAAAka,aAAaC,OAAOI,QAC3BF,MAAOW,EAAsB,U,EAEjC,CACI5G,SAAUpU,EAAA8B,QAAQ0Y,sBAClBP,MAAOja,EAAAka,aAAaC,OAAOM,QAC3BJ,MAAOW,EAAoB,SAAIA,EAAe,IAAIA,EAAmB,O,EAEzE,CACI5G,SAAUpU,EAAA8B,QAAQ4Y,+BAClBT,MAAOja,EAAAka,aAAaC,OAAOQ,QAC3BN,MAAOW,EAA4B,gB,EAEvC,CACI5G,SAAUpU,EAAA8B,QAAQ8Y,6BAClBX,MAAOja,EAAAka,aAAaC,OAAOU,eAC3BR,MAAOW,EAA0B,eAAIA,EAAuB,W,EAEhE,CACI5G,SAAUpU,EAAA8B,QAAQgZ,sBAClBb,MAAOja,EAAAka,aAAaC,OAAOY,QAC3BV,MAAOW,EAAqB,S,GAIpC9Z,KAAK6C,KAAKgW,CAAS,CACvB,EAjDS5W,EAAAyP,qBAkDbA,EAEApS,EAAoDI,WAAWuC,SAASuJ,OAAOwO,wBAA3Bpa,UAAA4R,EAAAlS,CAAA,EAWxCkS,EAAA3R,UAAAuY,gBAAR,WAiBI,IAfA,IAAIS,EACA,CACIN,QAAS,GACTC,QAAS,GACT5V,QAAS,GACT6V,QAAS,GACTC,QAAS,GACTC,eAAgB,E,EAOpBsB,EAAuB,GACtBC,EAAM,EAAGA,EALG,EAKaA,CAAG,GAC7BD,EAAWpU,KAAK+I,MAAMC,UAAS,IAAIzD,MAAOC,SAAQ,EAAGoC,QAAQ,CANhD,EAM4DyM,EAAM,CAAC,EAAGtL,MAAM+D,QAAO,EAAGwH,SAASC,SAASC,CAAC,CAAC,EACvHxB,EAAUN,QAAQ1S,KAAK,CAAC,EACxBgT,EAAUL,QAAQ3S,KAAK,CAAC,EACxBgT,EAAUjW,QAAQiD,KAAK,CAAC,EACxBgT,EAAUJ,QAAQ5S,KAAK,CAAC,EACxBgT,EAAUH,QAAQ7S,KAAK,CAAC,EACxBgT,EAAUF,eAAe9S,KAAK,CAAC,EAGnC,IAAIhD,EAAO7C,KAAK8B,WAAW2E,IAAG,EAAG5D,KAG7ByX,EAAazX,GAAQA,EAAKkX,OAASlX,EAAKkX,OAAS,KACrD,GAAIO,EACA,IAAKJ,EAAM,EAAGA,EApBD,EAoBiBA,CAAG,GAAI,CACjC,IAAIK,GAAO,IAAInP,MAAOqC,QAAQ,CArBrB,EAqBiCyM,EAAM,CAAC,EAC7CM,EAASF,EAAW1L,MAAMC,SAAS0L,EAAM,UAAU,GACnDC,IACA3B,EAAUN,QAAQ2B,IAAQM,EAAkB,UAC5C3B,EAAUL,QAAQ0B,IAAQM,EAAiB,SAAIA,EAAY,IAAIA,EAAgB,QAC/E3B,EAAUjW,QAAQsX,IAAQM,EAAgB,QAC1C3B,EAAUJ,QAAQyB,IAAQM,EAAyB,iBACnD3B,EAAUH,QAAQwB,IAAQM,EAAmB,WAC7C3B,EAAUF,eAAeuB,IAAQM,EAAuB,eAAIA,EAAoB,Y,CAKxF9G,EAAS,CACT,CACI+G,KAAM3b,EAAA8B,QAAQkY,sBACdC,MAAOja,EAAAka,aAAaC,OAAOC,QAC3BrW,KAAMgW,EAAUjW,O,EAEpB,CACI6X,KAAM3b,EAAA8B,QAAQwY,sBACdL,MAAOja,EAAAka,aAAaC,OAAOI,QAC3BxW,KAAMgW,EAAUH,O,EAEpB,CACI+B,KAAM3b,EAAA8B,QAAQ0Y,sBACdP,MAAOja,EAAAka,aAAaC,OAAOM,QAC3B1W,KAAMgW,EAAUL,O,EAEpB,CACIiC,KAAM3b,EAAA8B,QAAQ4Y,+BACdT,MAAOja,EAAAka,aAAaC,OAAOQ,QAC3B5W,KAAMgW,EAAUJ,O,EAEpB,CACIgC,KAAM3b,EAAA8B,QAAQ8Y,6BACdX,MAAOja,EAAAka,aAAaC,OAAOU,eAC3B9W,KAAMgW,EAAUF,c,EAEpB,CACI8B,KAAM3b,EAAA8B,QAAQgZ,sBACdb,MAAOja,EAAAka,aAAaC,OAAOY,QAC3BhX,KAAMgW,EAAUN,O,GAIxBvY,KAAK6C,KAAK,CAAC6Q,OAAQA,EAAQuG,WAAYA,CAAU,CAAC,CACtD,EA3FShY,EAAAuP,+BA4FbA,CACH,EA7OM3S,UAAAA,WAAS,EAAA,ECAhB,SAAOA,GAAU,IAAAC,EAAMmD,EAgBfyY,EAuCJpb,EAAAqb,EAqCIC,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAo0BJC,EA94BA,SAASC,EAAYC,EAASC,GAC1B,IAAIC,EAAQrM,MAAMsM,UAAUH,EAAI,OAAO,GAAK,IAAI3P,KAAK,CAAC,EAClD+P,EAAQvM,MAAMsM,UAAUF,EAAI,OAAO,GAAK,IAAI5P,KAAK,CAAC,EAUtD,MAJW,UAAP4P,IACAG,EAAQT,IAJRO,EADO,UAAPF,EACQL,EAOLO,GAAMG,QAAO,EAAKD,EAAMC,QAAO,CAC1C,CAEA,SAASC,EAAYC,EAAUC,GACvBC,EAAQF,GAAM,IAAIlQ,KAAK,CAAC,EACxBqQ,EAAQF,GAAM,IAAInQ,KAAK,CAAC,EAE5B,OAAOoQ,EAAMJ,QAAO,EAAKK,EAAML,QAAO,CAC1C,CAEA,SAASM,EAAgBC,EAAqBC,GAC1C,OAAQA,GACJ,IAAK,WACD,OAAO9c,EAAA8B,QAAQib,0BACnB,IAAK,eACD,OAAO/c,EAAA8B,QAAQkb,gBACnB,QAAS,OAAOhd,EAAA8B,QAAQ,cAAgBgb,IAAWA,C,CAE3D,CAUI,SAAAjB,EAAY7Y,EAA6Cf,G,OACrDA,EAAUrB,WAAWqc,cAAcC,MAAwCjb,EAC3E,CACI2a,gBAAiBA,C,CACpB,EACDpc,EAAA6Y,KAAAnY,KAAM8B,EAAYf,CAAO,GAACf,IAC9B,CAiEA,SAAAic,EAAYC,EAA+C5Z,EAAyCvB,GAApG,IAAAhB,EAAAC,KASI,GARAA,KAAKkc,WAAaA,EAClBlc,KAAKsC,aAAeA,EACpBtC,KAAKhB,gBAAkBsD,EAAaX,IAAIC,KAAK,kCAAkC,EAAE,GAEjF5B,KAAKe,QAAUrB,WAAWqc,cAAcC,MAAMjb,EAAS,CACnDiE,SAAU,CAAA,C,CACb,EAEG,CAAChF,KAAKkc,YAAc,CAAClc,KAAKmc,iBAAgB,EAC1C,KAAM,4CAGNnc,KAAKe,QAAQiE,UACbhF,KAAKoc,aAAY,EACjBpc,KAAKmc,iBAAgB,EAAGxV,KAAK,eAAgB,WAAM,OAAA5G,EAAKqc,aAAY,CAAjB,CAAmB,IAEvB,GAA1Cpc,KAAKkc,WAAWG,QAAO,GAAM,IAAIvZ,QAClC9C,KAAKsc,aAAY,EAErBtc,KAAKkc,WAAW1V,MAAMG,KAAK,2BAA4B,WAAM,OAAA5G,EAAKuc,aAAY,CAAjB,CAAmB,EAChFtc,KAAKkc,WAAWK,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAKuc,aAAY,CAAjB,CAAmB,EACrEtc,KAAKkc,WAAW7P,aAAY,EAAGC,UAAU,WAAM,OAAAvM,EAAKuc,aAAY,CAAjB,CAAmB,EAE1E,CAsvBJ,SAASE,EAAiBjQ,GACtB7M,WAAWyB,SAAS4M,aAAaxB,EAAEyB,MAAM,CAC7C,CAQA,SAASyO,EAAWlC,GAChB,OAAIA,EACO3L,MAAMC,SAAS0L,EAAM,GAAG,EAE5Bzb,EAAA8B,QAAQ8b,SACnB,CAWI,SAAA7B,EAAY7b,EAA8B2d,EAA8CC,EAAuD7b,GAC3If,KAAKqB,GAAKrC,EACVgB,KAAK2B,IAAM8Q,EAAEzT,CAAe,EAC5BgB,KAAKe,QAAUA,EACff,KAAK2c,SAAWA,EAChB3c,KAAK6c,UAAsDF,EAASnW,MACpExG,KAAK4c,kBAAoBA,EAEzB5c,KAAK8c,OAAM,CACf,CAl7BShe,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,IAACmD,EAAAnD,EAAAmD,WAAAnD,EAAAmD,SAAQ,IAgBvByY,EAAM,IAAItP,KAAKwD,MAAMsM,UAAU,QAAS,OAAO,EAAEE,QAAO,EAAK,IAAO,EAuCxE9b,EAA6CI,WAAWuC,SAAS8N,MAAMgN,eAA1Bnd,UAAA+a,EAAArb,CAAA,EAWzCqb,EAAA9a,UAAAmd,YAAA,SAAYna,GACR,IAAIoa,EAAa,GACbxa,EAASzC,KAAKe,QAAQmc,sBAC1Bra,EAAKsa,QAAQ,SAAAC,GAAY,OAAAH,EAAWpX,KAAKwX,OAAOC,OAAO,CAAA,EAAM,GAAIF,CAAQ,CAAC,CAAjD,CAAkD,EAE3EH,EAAWM,KAAK,SAACC,EAAOC,GACpB,IAAIC,EAAQrC,EAAYmC,EAAM/a,EAAOuK,WAAYyQ,EAAMhb,EAAOuK,UAAU,EACxE,OAAc,IAAV0Q,GAIU,KADVC,EAAQtC,EAAYmC,EAAM/a,EAAOmb,SAAUH,EAAMhb,EAAOmb,QAAQ,GAEzDD,EAGG,KADVE,EAAQ/C,EAAY0C,EAAM/a,EAAOqb,WAAYL,EAAMhb,EAAOqb,UAAU,GAE7DD,EAEJ/C,EAAY0C,EAAM/a,EAAOsb,SAAUN,EAAMhb,EAAOsb,QAAQ,CACnE,CAAC,EAED/d,KAAKge,IAAI,CAAEnb,KAAMoa,CAAU,CAAE,CACjC,EAjCJtC,EAkCAA,EAGIC,EACI,KADJA,EAEI,KAFJA,EAGI,KAHJA,EAII,KAJJA,EAKI,KALJA,EAMI,KANJA,EAOI,KAwDJqB,EAAApc,UAAAsc,iBAAA,WACI,OAAOnc,KAAKsC,aAAa2b,cAA8C,+BAAEzX,KAC7E,EAEAyV,EAAApc,UAAAqe,iBAAA,WACI,OAAOle,KAAKmc,iBAAgB,EAAG1V,IAAI,OAAO,CAC9C,EAEAwV,EAAApc,UAAAse,kBAAA,WACI,IAAIC,EAAWpe,KAAKkc,WAAWG,QAAO,GAAM,GAC5C,OAAsB,EAAlB+B,EAAStb,QACFsb,EAAS,GAAGpe,KAAKmc,iBAAgB,EAAG1V,IAAG,EAAG4X,MAE9C,EACX,EAEApC,EAAApc,UAAAuc,aAAA,WACIpc,KAAKsC,aAAaX,IAAIC,KAAK,sCAAsC,EAAE0c,KAAK,CAAC,EACzEte,KAAKsC,aAAaX,IAAIC,KAAK,4BAA4B,EAAE2c,MAAK,EAC9Dve,KAAKsC,aAAaX,IAAIC,KAAK,iCAAiC,EAAE2c,MAAK,EACnE9L,EAAEzS,KAAKhB,eAAe,EAAEuf,MAAK,EAG7B,IAAIC,EAAWxe,KAAKke,iBAAgB,EACpC,GAAIM,EACA,OAAQA,GACJ,KAAK5D,EACD5a,KAAKye,cAAa,EAClB,MACJ,KAAK7D,EACD5a,KAAK0e,cAAa,EAClB,MACJ,KAAK9D,EACD5a,KAAK2e,aAAY,EACjB,MACJ,KAAK/D,EACD5a,KAAK4e,YAAW,EAChB,MACJ,KAAKhE,EACD5a,KAAK6e,gBAAe,EACpB,MACJ,KAAKjE,EACD5a,KAAK8e,YAAW,EAChB,MACJ,KAAKlE,EACD5a,KAAK+e,WAAU,EACf,MACJ,QACI,KAAM,mB,MAGd/e,KAAKgf,YAAW,CAGxB,EAEA/C,EAAApc,UAAAyc,aAAA,WAMI,IAUIkC,EACAS,EACAC,EACAC,EACAC,EAnBJpf,KAAKsC,aAAaX,IAAIC,KAAK,sCAAsC,EAAE0c,KAAK,CAAC,EACzEte,KAAKsC,aAAaX,IAAIC,KAAK,4BAA4B,EAAE2c,MAAK,EAC9Dve,KAAKsC,aAAaX,IAAIC,KAAK,iCAAiC,EAAE2c,MAAK,EACnE9L,EAAEzS,KAAKhB,eAAe,EAAEuf,MAAK,EAEzBve,KAAKkc,WAAWmD,WAAU,GAAMrf,KAAKkc,WAAW1V,MAAMC,IAAI,mBAAmB,EACxEzG,KAAKkc,WAAWmD,WAAU,IAC3B5M,EAAEzS,KAAKhB,eAAe,EAAEsgB,OAAO,GAAG,EAClC7M,EAAEzS,KAAKhB,eAAe,EAAEugB,IAAI,WAAY,UAAU,EAClD7f,WAAWyB,SAASU,aAAa7B,KAAKhB,gBAAiB,CAACwgB,KAAM,IAAKC,OAAQ,GAAG,CAAC,IAMnFjB,EAAWxe,KAAKme,kBAAiB,EACjCc,EAAmBjf,KAAKkc,WAAWwD,sBAAsBrD,QAAO,GAAM,GACtE6C,EAA4Blf,KAAKkc,WAAWwD,sBAAsBC,eAAetD,QAAO,GAAM,GAC9F8C,EAAuBnf,KAAKkc,WAAW0D,0BAA0BvD,QAAO,GAAM,GAC9E+C,EAAgCpf,KAAKkc,WAAW0D,0BAA0BD,eAAetD,QAAO,GAAM,GAE1E,IAA5B4C,EAAiBnc,QACoB,IAArCoc,EAA0Bpc,QACM,IAAhCqc,EAAqBrc,QACoB,IAAzCsc,EAA8Btc,QAC7Bmc,EAAiB,GAAmC,gCACpDA,EAAiB,GAAiC,6BAE5CT,IAAa5D,GACQ,IAA5BqE,EAAiBnc,QACoB,IAArCoc,EAA0Bpc,QACM,IAAhCqc,EAAqBrc,QACoB,IAAzCsc,EAA8Btc,QAC7Bmc,EAAiB,GAAmC,gCACpDA,EAAiB,GAAiC,8BAClDA,EAAiB,GAAmC,gCACpDA,EAAiB,GAAiC,6BAGnDjf,KAAK+e,WAAU,EAFf/e,KAAK2e,aAAY,EAVjB3e,KAAK6f,iBAAiB,YAAS,EAcvC,EAEA5D,EAAApc,UAAAmf,YAAA,WACIvM,EAAEzS,KAAKhB,eAAe,EAAEuf,MAAK,CACjC,EAEAtC,EAAApc,UAAA4e,cAAA,WACIze,KAAK6f,iBAAiB,SAACzc,GACnBA,EAAU0c,UAA8C,mCAAE9B,IAAI,CAAE7E,MAAO,EAAE,CAAE,EAC3E/V,EAAU0c,UAA0C,+BAAE9B,IAAI,CAAE7E,MAAO,OAAO,CAAE,EAC5E/V,EAAU0c,UAAwC,6BAAE9B,IAAI,CAAE7E,MAAO,OAAO,CAAE,EAE1E/V,EAAU0c,UAA8C,mCAAE9B,IAAI,CAAE+B,SAAU,CAAA,CAAI,CAAE,EAChF3c,EAAU0c,UAA8C,mCAAE9B,IAAI,CAAEgC,KAAMnb,KAAAA,CAAS,CAAE,EACjFzB,EAAU0c,UAA0C,+BAAE9B,IAAI,CAAE+B,SAAU,CAAA,CAAI,CAAE,EAC5E3c,EAAU0c,UAAwC,6BAAE9B,IAAI,CAAE+B,SAAU,CAAA,CAAI,CAAE,CAC9E,CAAC,CACL,EAEA9D,EAAApc,UAAA6e,cAAA,WACI1e,KAAK6f,iBAAiB,SAACzc,GACnBA,EAAU0c,UAA8C,mCAAE9B,IAAI,CAAE7E,MAAO,gBAAgB,CAAE,EACzF/V,EAAU0c,UAA0C,+BAAE9B,IAAI,CAAE7E,MAAO,IAAI/N,KAAK,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,CAAE,EAC5FhI,EAAU0c,UAAwC,6BAAE9B,IAAI,CAAE7E,MAAO,IAAI/N,KAAK,EAAG,EAAG,EAAG,GAAI,CAAC,CAAC,CAAE,EAE3FhI,EAAU0c,UAA8C,mCAAE9B,IAAI,CAAE+B,SAAU,CAAA,CAAI,CAAE,CACpF,CAAC,CACL,EAEA9D,EAAApc,UAAA8e,aAAA,WA2DgC,SAAxBsB,IACIlgB,EAAKme,iBAAgB,IAAOne,EAAKoe,kBAAiB,GAClDpe,EAAKmgB,aAAY,EAErBC,EAAaL,UAA8C,mCAAE9B,IAAI,CAAE7E,MAAO,gBAAgB,CAAE,EAC5FiH,EAAcN,UAAkD,uCAAE9B,IAAI,CAAE7E,MAAO,OAAO,CAAE,EACxFiH,EAAcN,UAAgD,qCAAE9B,IAAI,CAAE7E,MAAO,OAAO,CAAE,EACtFkH,EAAcP,UAAkD,uCAAE9B,IAAI,CAAE7E,MAAO,OAAO,CAAE,EACxFkH,EAAcP,UAAgD,qCAAE9B,IAAI,CAAE7E,MAAO,OAAO,CAAE,EAEtFgH,EAAaL,UAA8C,mCAAE9B,IAAI,CAAE+B,SAAU,CAAA,CAAI,CAAE,EAEnFO,EAAaR,UAA8C,mCAAE9B,IAAI,CAAE7E,MAAO,OAAO,CAAE,EACnFmH,EAAaR,UAA0C,+BAAE9B,IAAI,CAAE7E,MAAO,OAAO,CAAE,EAC/EmH,EAAaR,UAAwC,6BAAE9B,IAAI,CAAE7E,MAAO,OAAO,CAAE,EAE7EmH,EAAaR,UAA8C,mCAAE9B,IAAI,CAAE+B,SAAU,CAAA,CAAI,CAAE,CACvF,CA5EJ,IAAAhgB,EAAAC,KAEQugB,EAAgB,IAAIte,EAASue,wBAAwBxgB,KAAKkc,WAAWwD,qBAAqB,EAI1FS,GAFe,IAAIzgB,WAAWuC,SAASoG,MAAMC,kBAAkBiY,EAAevgB,KAAKhB,gBAAiBF,EAAAwC,UAAUmf,6BAA8B,CAAEzb,SAAUhF,KAAKe,QAAQiE,QAAQ,CAAE,EAEhK,IAAI/C,EAASue,wBAAwBxgB,KAAKkc,WAAWwD,sBAAuB,CAAEgB,UAAW,CAAC,CAAE,GAC3GJ,EAAe,IAAIre,EAASue,wBAAwBxgB,KAAKkc,WAAWwD,sBAAuB,CAAEgB,UAAW,CAAC,CAAE,EAC3GC,EAAmB,IAAIjhB,WAAWuC,SAASoG,MAAMC,kBAAkB6X,EAAcngB,KAAKhB,gBAAiB,GAAI,CAAEgG,SAAUhF,KAAKe,QAAQiE,SAAU4b,WAAY,EAAGC,mBAAoB,CAAA,EAAMC,iBAAkB,CAAA,CAAI,CAAE,EAC/MC,EAAmB,IAAIrhB,WAAWuC,SAASoG,MAAMC,kBAAkBgY,EAActgB,KAAKhB,gBAAiB,GAAI,CAAEgG,SAAUhF,KAAKe,QAAQiE,SAAU4b,WAAY,EAAGC,mBAAoB,CAAA,EAAMC,iBAAkB,CAAA,CAAI,CAAE,EAE/MV,EAAgB,IAAIne,EAASue,wBAAwBxgB,KAAKkc,WAAWwD,sBAAsBC,eAAgB,CAAEe,UAAW,CAAC,CAAE,EAC3HL,EAAgB,IAAIpe,EAASue,wBAAwBxgB,KAAKkc,WAAWwD,sBAAsBC,eAAgB,CAAEe,UAAW,CAAC,CAAE,EAC3HM,EAAoB,IAAIthB,WAAWuC,SAASoG,MAAMC,kBAAkB8X,EAAepgB,KAAKhB,gBAAiB,GAAI,CAAEgG,SAAUhF,KAAKe,QAAQiE,SAAU4b,WAAY,EAAGC,mBAAoB,CAAA,EAAMC,iBAAkB,CAAA,CAAI,CAAE,EACjNG,EAAoB,IAAIvhB,WAAWuC,SAASoG,MAAMC,kBAAkB+X,EAAergB,KAAKhB,gBAAiB,GAAI,CAAEgG,SAAUhF,KAAKe,QAAQiE,SAAU4b,WAAY,EAAGC,mBAAoB,CAAA,EAAMC,iBAAkB,CAAA,CAAI,CAAE,EAErN9gB,KAAKkhB,eAAiB,WAClB,IAAIC,EAASR,EAAiBS,eAAc,EACxCC,EAASN,EAAiBK,eAAc,EACxCE,EAASN,EAAkBI,eAAc,EACzCG,EAASN,EAAkBG,eAAc,EAC7C,OAAOD,GAAUE,GAAUC,GAAUC,CACzC,EACAvhB,KAAKwhB,sBAAwB,WACzBb,EAAiBc,QAAO,EACxBV,EAAiBU,QAAO,EACxBT,EAAkBS,QAAO,EACzBR,EAAkBQ,QAAO,CAC7B,EACAzhB,KAAK0hB,iBAAmB,WACpBf,EAAiBgB,WAAU,EAC3BZ,EAAiBY,WAAU,EAC3BX,EAAkBW,WAAU,EAC5BV,EAAkBU,WAAU,CAChC,EAEA3hB,KAAK4hB,wBAA0B,WAC3B,IAAIC,GAAoBlB,EAAiB1C,cAAkD,mCAAEzX,MAAMC,IAAG,EAAG0S,OAAS,IAAI2I,QAAQ,IAAK,GAAG,EAClIC,EAAoBf,EAAkB/C,cAAsD,uCAAEzX,MAAMC,IAAG,EAAGub,aAC1GC,EAAkBjB,EAAkB/C,cAAoD,qCAAEzX,MAAMC,IAAG,EAAGub,aACtGE,EAAoBjB,EAAkBhD,cAAsD,uCAAEzX,MAAMC,IAAG,EAAGub,aAC1GG,EAAkBlB,EAAkBhD,cAAoD,qCAAEzX,MAAMC,IAAG,EAAGub,aACtGI,GAAoBrB,EAAiB9C,cAAkD,mCAAEzX,MAAMC,IAAG,EAAG0S,OAAS,IAAI2I,QAAQ,IAAK,GAAG,EAClIO,EAAetB,EAAiB9C,cAA8C,+BAAEzX,MAAMC,IAAI,cAAc,EACxG6b,EAAavB,EAAiB9C,cAA4C,6BAAEzX,MAAMC,IAAG,EAAGub,aAExFO,EAAgB,CAAC,GAAI,GAAIV,EAAkB,GAAI,IAAIW,KAAK,GAAG,EAC3DC,EAAyB,CAAC,IAAKV,EAAmBE,GAAiBO,KAAK,GAAG,EAC3EE,EAAyB,CAAC,IAAKR,EAAmBC,GAAiBK,KAAK,GAAG,EAG/E,MAAO,CACHG,2BAA4B,CAACJ,EAHb,CAAC,GAAI,GAAIH,EAAkBC,EAAcC,GAAYE,KAAK,GAAG,GAGlBA,KAAK,IAAI,EACpEI,oCAAqC,CAACH,EAAwBC,GAAwBF,KAAK,IAAI,EAC/FK,+BAAgC,GAChCC,wCAAyC,E,CAEjD,EAqBI9iB,KAAKe,QAAQiE,YACT+d,EAAa/iB,KAAKkc,WAAWwD,sBAAsBrD,QAAO,IACxB,EAApB0G,EAAWjgB,OACzBpD,WAAWyB,SAAS2C,YAAYC,QAAQjF,EAAA8B,QAAQoiB,8CAAqD/C,EAAyB,CAC1H/b,QAAS,CACLC,GAAIrF,EAAA8B,QAAQqiB,mCACZ5e,OAAQvF,EAAA8B,QAAQsiB,+B,EAEpBviB,MAAO7B,EAAA8B,QAAQuiB,mC,CAClB,EAEDlD,EAAqB,EAIjC,EAEAhE,EAAApc,UAAAgf,gBAAA,WACI7e,KAAKojB,gBAAe,CACxB,EAEAnH,EAAApc,UAAAif,YAAA,WACI9e,KAAKojB,gBAAe,CACxB,EAEAnH,EAAApc,UAAAkf,WAAA,WACI/e,KAAKojB,gBAAe,CACxB,EAEAnH,EAAApc,UAAA+e,YAAA,WACI5e,KAAK6f,iBAAiB,SAACzc,GACnBA,EAAU0c,UAA8C,mCAAE9B,IAAI,CAAE7E,MAAO,EAAE,CAAE,EAC3E/V,EAAU0c,UAA0C,+BAAE9B,IAAI,CAAE7E,MAAO,IAAI/N,KAAK,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,CAAE,EAC5FhI,EAAU0c,UAAwC,6BAAE9B,IAAI,CAAE7E,MAAO,IAAI/N,KAAK,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,CAAE,EAE1FhI,EAAU0c,UAA0C,+BAAE9B,IAAI,CAAE+B,SAAU,CAAA,CAAI,CAAE,EAC5E3c,EAAU0c,UAAwC,6BAAE9B,IAAI,CAAE+B,SAAU,CAAA,CAAI,CAAE,CAC9E,CAAC,CACL,EAEA9D,EAAApc,UAAAggB,iBAAA,SAAiBwD,GAqBe,SAAxBpD,IACIlgB,EAAKme,iBAAgB,IAAOne,EAAKoe,kBAAiB,GAClDpe,EAAKmgB,aAAY,EAErBmD,EAAcjgB,CAAS,CAC3B,CA1BJ,IA6BY2f,EA7BZhjB,EAAAC,KACQoD,EAAY,IAAInB,EAASue,wBAAwBxgB,KAAKkc,WAAWwD,qBAAqB,EACtF4D,EAAW,IAAI5jB,WAAWuC,SAASoG,MAAMC,kBAAkBlF,EAAWpD,KAAKhB,gBAAiBF,EAAAwC,UAAUiiB,2BAA4B,CAAEve,SAAUhF,KAAKe,QAAQiE,QAAQ,CAAE,EAEzKhF,KAAKkhB,eAAiB,WAAM,OAAAoC,EAASlC,eAAc,CAAvB,EAC5BphB,KAAKwhB,sBAAwB,WAAM,OAAA8B,EAAS7B,QAAO,CAAhB,EACnCzhB,KAAK0hB,iBAAmB,WAAM,OAAA4B,EAAS3B,WAAU,CAAnB,EAC9B3hB,KAAK4hB,wBAA0B,WAM3B,MAAO,CACHe,2BAA4B,CANhB,GACF,IACOW,EAASrF,cAAkD,mCAAEzX,MAAMC,IAAG,EAAG0S,OAAS,IAAI2I,QAAQ,IAAK,GAAG,EAC3GwB,EAASrF,cAA8C,+BAAEzX,MAAMC,IAAI,cAAc,EACnF6c,EAASrF,cAA4C,6BAAEzX,MAAMC,IAAI,cAAc,GAEL+b,KAAK,GAAG,EAC5FI,oCAAqC,GACrCC,+BAAgC,GAChCC,wCAAyC,E,CAEjD,EASI9iB,KAAKe,QAAQiE,YACT+d,EAAa/iB,KAAKkc,WAAWwD,sBAAsBrD,QAAO,IACxB,EAApB0G,EAAWjgB,OACzBpD,WAAWyB,SAAS2C,YAAYC,QAAQjF,EAAA8B,QAAQoiB,8CAAqD/C,EAAyB,CAC1H/b,QAAS,CACLC,GAAIrF,EAAA8B,QAAQqiB,mCACZ5e,OAAQvF,EAAA8B,QAAQsiB,+B,EAEpBviB,MAAO7B,EAAA8B,QAAQuiB,mC,CAClB,EAEDlD,EAAqB,EAGjC,EAEAhE,EAAApc,UAAAujB,gBAAA,WAwM8B,SAAtBI,EAAsBjX,GACtBA,EAAEkX,eAAc,EAEhBC,EAAYA,GAAaC,EAAyBpa,KAAKqa,WAAW/gB,KAAI,EAAGC,OACzE4gB,CAAS,GAELG,EAAeF,EAAyBpa,KAAK6T,SAASuG,EAAyBpa,KAAKua,OAAM,CAAE,GAAK,GACrGH,EAAyBI,UAAU,CAC/BC,wBAAyBN,EACzBO,+BAAgCJ,EAA6C,iCAAK,IAAIzY,MAAOC,SAAQ,EACrG6Y,6BAA8BL,EAA2C,+BAAK,IAAIzY,MAAOC,SAAQ,EACjG8Y,+BAAgCN,EAA6C,gCAAK,QAClFO,6BAA8BP,EAA2C,8BAAK,O,CACjF,CACL,CAK8B,SAA1BQ,EAA2B9X,GAC3BA,EAAEkX,eAAc,EAChB,IAAIa,EAA0BX,EAAyBpa,KAAK6T,SAASuG,EAAyBpa,KAAKua,OAAM,CAAE,EACvGS,EAAmBC,EAA0Bjb,KAAK6T,SAASoH,EAA0Bjb,KAAKua,OAAM,CAAE,GAAK,GACvGQ,EACAE,EAA0BT,UAAU,CAChCU,kDAAmDH,EAAiD,wBACpGI,uCAAwCH,EAAyD,wCAAK,QACtGI,qCAAsCJ,EAAuD,sCAAK,O,CACrG,EAED7kB,WAAWyB,SAAS2C,YAAY8gB,MAAM,sCAAsC,CAEpF,CAO0B,SAAtBC,EAAsBtY,GACtBA,EAAEkX,eAAc,EAEhBqB,EAAaA,GAAcC,EAAsBxb,KAAKqa,WAAW/gB,KAAI,EAAGC,OACxEgiB,CAAU,GAENjB,EAAekB,EAAsBxb,KAAK6T,SAAS2H,EAAsBxb,KAAKua,OAAM,CAAE,GAAK,GAC/FiB,EAAsBhB,UAAU,CAC5BiB,iCAAkCF,EAClCG,wCAAyCpB,EAAsD,0CAAK,IAAIzY,MAAOC,SAAQ,EACvH6Z,sCAAuCrB,EAAoD,wCAAK,IAAIzY,MAAOC,SAAQ,EACnH8Z,wCAAyCtB,EAAsD,yCAAK,QACpGuB,sCAAuCvB,EAAoD,uCAAK,QAChGwB,uCAAwCxB,EAAqD,wCAAK,EAClGyB,2CAA4CzB,EAAyD,4CAAK,KAC1G0B,oCAAqC1B,EAAkD,qCAAK,EAC5F2B,4CAA6C3B,EAA0D,6CAAK,K,CAC/G,CACL,CAK4B,SAAxB4B,EAAyBlZ,GACzBA,EAAEkX,eAAc,EAChB,IAAIiC,EAAuBX,EAAsBxb,KAAK6T,SAAS2H,EAAsBxb,KAAKua,OAAM,CAAE,EAC9FS,EAAmBoB,EAA4Bpc,KAAK6T,SAASuI,EAA4Bpc,KAAKua,OAAM,CAAE,GAAK,GAC3G4B,EACAC,EAA4B5B,UAAU,CAClC6B,0DAA2DF,EAAuD,iCAClHG,sCAAuCtB,EAAwD,uCAAK,QACpGuB,oCAAqCvB,EAAsD,qCAAK,O,CACnG,EAED7kB,WAAWyB,SAAS2C,YAAY8gB,MAAM,2CAA2C,CAEzF,CAnRJ,IA6IYmB,EA7IZhmB,EAAAC,KAGQgmB,GAFJhmB,KAAKsC,aAAaX,IAAIC,KAAK,sCAAsC,EAAEkM,KAAK,CAAC,EAExC,CAC7BmY,GAAI,0BACJjZ,UAAW,iCACX4Q,QAAS,+BACTsI,cAAe,qCACfpI,UAAW,iCACXC,QAAS,8B,GAaToI,EAA4B,IAAIxL,EAA+B3a,KAAKkc,WAAWwD,sBAAuB,CAAExC,sBAAuB8I,CAA0B,CAAE,EAC3JrC,EAA2B,IAAIjkB,WAAWuC,SAAS8N,MAAMC,SAASmW,EAA2BnmB,KAAKsC,aAAaX,IAAIC,KAAK,4BAA4B,EAAE,GAAI,CAC1JqO,WAAY,CAAA,EACZjL,SAAUhF,KAAKe,QAAQiE,SACvBkL,SAAU,CAAEC,QAAS,IAAKC,KAAM,GAAG,EACnCgW,QAASpmB,KAAKe,QAAQiE,SAAW,CAAClG,EAAA8B,QAAQylB,+BAAiCxhB,KAAAA,EAC3EoH,iBAAkBnN,EAAA8B,QAAQ0lB,8B,CAC7B,EAEGC,EAA6B,IAAI5L,EAA+B3a,KAAKkc,WAAWwD,sBAAsBC,eAAgB,CAAEzC,sBAnB1F,CAC9B+I,GAAI,kCACJjZ,UAAW,KACX4Q,QAAS,KACTsI,cAAe,KACfpI,UAAW,yCACXC,QAAS,sC,CAaiK,CAAE,EAC5KyG,EAA4B,IAAI9kB,WAAWuC,SAAS8N,MAAMC,SAASuW,EAA4BvmB,KAAKsC,aAAaX,IAAIC,KAAK,6BAA6B,EAAE,GAAI,CAC7JqO,WAAY,CAAA,EACZjL,SAAUhF,KAAKe,QAAQiE,SACvBkL,SAAU,CAAEC,QAAS,IAAKC,KAAM,GAAG,EACnCgW,QAASpmB,KAAKe,QAAQiE,SAAW,CAAClG,EAAA8B,QAAQ4lB,oCAAsC3hB,KAAAA,EAChFoH,iBAAkBnN,EAAA8B,QAAQ6lB,+B,CAC7B,EAEGC,EAA8B,IAAI7L,EAA2B7a,KAAKsC,aAAaX,IAAIC,KAAK,oCAAoC,EAAE,GAAI+hB,EAA0Ba,EAA2B,CACvLxf,SAAUhF,KAAKe,QAAQiE,SACvBvC,OAAQujB,C,CACX,EAEGW,EAAsB,CACtBV,GAAI,mCACJjZ,UAAW,0CACX4Q,QAAS,wCACTsI,cAAe,8CACfpI,UAAW,0CACXC,QAAS,wCACT6I,SAAU,yCACVC,aAAc,6CACdC,MAAO,sCACPC,cAAe,6C,EAYfC,EAAyB,IAAIrM,EAA+B3a,KAAKkc,WAAW0D,0BAA2B,CAAE1C,sBAAuByJ,CAAmB,CAAE,EACrJ5B,EAAwB,IAAIrlB,WAAWuC,SAAS8N,MAAMC,SAASgX,EAAwBhnB,KAAKsC,aAAaX,IAAIC,KAAK,iCAAiC,EAAE,GAAI,CACzJqO,WAAY,CAAA,EAAMjL,SAAUhF,KAAKe,QAAQiE,SACzCkL,SAAU,CAAEC,QAAS,IAAKC,KAAM,GAAG,EACnCgW,QAASpmB,KAAKe,QAAQiE,SAAW,CAAClG,EAAA8B,QAAQqmB,mCAAoCpiB,KAAAA,EAC9EoH,iBAAkBnN,EAAA8B,QAAQsmB,2B,CAC7B,EAEGC,EAA+B,IAAIxM,EAA+B3a,KAAKkc,WAAW0D,0BAA0BD,eAAgB,CAAEzC,sBAjBnG,CAC3B+I,GAAI,iCACJjZ,UAAW,KACX4Q,QAAS,KACTsI,cAAe,KACfpI,UAAW,wCACXC,QAAS,qC,CAWoK,CAAE,EAC/K4H,EAA8B,IAAIjmB,WAAWuC,SAAS8N,MAAMC,SAASmX,EAA8BnnB,KAAKsC,aAAaX,IAAIC,KAAK,mCAAmC,EAAE,GAAI,CACvKqO,WAAY,CAAA,EACZjL,SAAUhF,KAAKe,QAAQiE,SACvBkL,SAAU,CAAEC,QAAS,IAAKC,KAAM,GAAG,EACnCgW,QAASpmB,KAAKe,QAAQiE,SAAW,CAAClG,EAAA8B,QAAQ4lB,oCAAsC3hB,KAAAA,EAChFoH,iBAAkBnN,EAAA8B,QAAQwmB,+B,CAC7B,EAEGC,EAA2B,IAAIxM,EAA2B7a,KAAKsC,aAAaX,IAAIC,KAAK,yCAAyC,EAAE,GAAImjB,EAAuBY,EAA6B,CACxL3gB,SAAUhF,KAAKe,QAAQiE,SACvBvC,OAAQkkB,C,CACX,EAEGW,EAA+B9C,EAA0B7iB,IAAI4lB,QAAQ,IAAI,EACzEC,EAAkC7B,EAA4BhkB,IAAI4lB,QAAQ,IAAI,EA4G9E7D,GAzGJC,EAAyBpa,KAAK5C,KAAK,SAAU,WACzC,IAAIkd,EAAeF,EAAyBpa,KAAK6T,SAASuG,EAAyBpa,KAAKua,OAAM,CAAE,EAC5FD,GACAW,EAA0Bjb,KAAKqa,WAAWnZ,OAAO,CAC7C2J,MAAO,oDACPqT,SAAU,SACVtO,MAAO0K,EAAsC,uB,CAChD,CAET,CAAC,EAEDkB,EAAsBxb,KAAK5C,KAAK,SAAU,WACtC,IAAIkd,EAAekB,EAAsBxb,KAAK6T,SAAS2H,EAAsBxb,KAAKua,OAAM,CAAE,EACtFD,GACA8B,EAA4Bpc,KAAKqa,WAAWnZ,OAAO,CAC/C2J,MAAO,4DACPqT,SAAU,SACVtO,MAAO0K,EAA+C,gC,CACzD,CAET,CAAC,EAGDyD,EAA6BhJ,KAAK,CAAC,EACnCkJ,EAAgClJ,KAAK,CAAC,EAClCte,KAAKe,QAAQiE,UAmBb2e,EAAyBpa,KAAK5C,KAAK,SAd/B+gB,EAA0B,WAC1B,GAA6D,EAAzD/D,EAAyBpa,KAAKqa,WAAW/gB,KAAI,EAAGC,OAAY,CAC5D,IAAI+gB,EAAeF,EAAyBpa,KAAK6T,SAASuG,EAAyBpa,KAAKua,OAAM,CAAE,EAChG,GAAID,EAAc,CACd,IAAI7W,EAAY6W,EAA6C,+BACzDjG,EAAUiG,EAA2C,6BACzD,GAA8D,EAA1DW,EAA0Bjb,KAAKqa,WAAW+D,KAAI,EAAG7kB,QAAe,CAACkK,GAAa,CAAC4Q,EAE/E,OADA0J,KAAAA,EAA6BxZ,KAAK,CAAC,C,EAK/CwZ,EAA6BhJ,KAAK,CAAC,CACvC,CAC4E,EAC5EqF,EAAyBpa,KAAKqa,WAAWjd,KAAK,SAAgB+gB,CAAyB,EACvFlD,EAA0Bjb,KAAKqa,WAAWjd,KAAK,SAAgB+gB,CAAyB,EAgBxF3C,EAAsBxb,KAAK5C,KAAK,SAd5Bof,EAA2B,WAC3B,GAA0D,EAAtDhB,EAAsBxb,KAAKqa,WAAW/gB,KAAI,EAAGC,OAAY,CACzD,IAAI+gB,EAAekB,EAAsBxb,KAAK6T,SAAS2H,EAAsBxb,KAAKua,OAAM,CAAE,EAC1F,GAAID,EAAc,CACd,IAAI7W,EAAY6W,EAAsD,wCAClEjG,EAAUiG,EAAoD,sCAClE,GAAgE,EAA5D8B,EAA4Bpc,KAAKqa,WAAW+D,KAAI,EAAG7kB,QAAe,CAACkK,GAAa,CAAC4Q,EAEjF,OADA4J,KAAAA,EAAgC1Z,KAAK,CAAC,C,EAKlD0Z,EAAgClJ,KAAK,CAAC,CAC1C,CAC0E,EAC1EyG,EAAsBxb,KAAKqa,WAAWjd,KAAK,SAAU,WACjDof,EAAwB,EACxBhmB,EAAK6nB,wBAAuB,CAChC,CAAC,EACDjC,EAA4Bpc,KAAKqa,WAAWjd,KAAK,SAAgBof,CAA0B,IAmB3FvB,EAA0Bjb,KAAKqa,WAAWjd,KAAK,SAhBH,WACsB,EAA1D6d,EAA0Bjb,KAAKqa,WAAW+D,KAAI,EAAG7kB,OACjDwkB,EAA6BxZ,KAAK,CAAC,EAEnCwZ,EAA6BhJ,KAAK,CAAC,CAE3C,CAU8F,EAC9FqH,EAA4Bpc,KAAKqa,WAAWjd,KAAK,SATJ,WACuB,EAA5Dgf,EAA4Bpc,KAAKqa,WAAW+D,KAAI,EAAG7kB,OACnD0kB,EAAgC1Z,KAAK,CAAC,EAEtC0Z,EAAgClJ,KAAK,CAAC,CAE9C,CAGiG,GAIrGqF,EAAyBkE,UAAU,EAAG,CAAA,CAAI,EAC1ClE,EAAyBpa,KAAKqa,WAAWjd,KAAK,SAAU,WACE,IAAlDgd,EAAyBpa,KAAKua,OAAM,EAAGhhB,QACvC6gB,EAAyBkE,UAAU,EAAG,CAAA,CAAI,CAElD,CAAC,EACD9C,EAAsB8C,UAAU,EAAG,CAAA,CAAI,EACvC9C,EAAsBxb,KAAKqa,WAAWjd,KAAK,SAAU,WACE,IAA/Coe,EAAsBxb,KAAKua,OAAM,EAAGhhB,QACpCiiB,EAAsB8C,UAAU,EAAG,CAAA,CAAI,CAE/C,CAAC,EAGe,MAuCZ/C,GAtCJnB,EAAyBpa,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAEmmB,QAAQ,oCAAoC,EAgB1HpE,EAAyBpa,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAE+K,MAAa6W,CAAqB,EAGhHgB,EAA0Bjb,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAEmmB,QAAQ,oCAAoC,EAgB3HvD,EAA0Bjb,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAE+K,MAAW0X,CAA+B,EAGxG,MACjBU,EAAsBxb,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAEmmB,QAAQ,oCAAoC,EAoBvHhD,EAAsBxb,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAE+K,MAAakY,CAAsB,EAG9Gc,EAA4Bpc,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAEmmB,QAAQ,oCAAoC,EAe7HpC,EAA4Bpc,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAE+K,MAAa8Y,CAA6B,EAG3HzlB,KAAKkhB,eAAiB,WAElB,IAAIG,EAASmD,EAA0BwD,cAAa,EAChD1G,EAASyD,EAAsBiD,cAAa,EAC5CzG,EAASoE,EAA4BqC,cAAa,EACtD,OAAqB3G,GAAUC,GAAUC,CAC7C,EACAvhB,KAAKwhB,sBAAwB,WACzBmC,EAAyBsE,gBAAe,EACxCtE,EAAyBpa,KAAKua,OAAOH,EAAyBpa,KAAK2e,MAAMtmB,KAAK,UAAU,CAAC,EACzF8kB,EAA4BuB,gBAAe,EAE3CzD,EAA0ByD,gBAAe,EAEzClD,EAAsBkD,gBAAe,EACrClD,EAAsBxb,KAAKua,OAAOiB,EAAsBxb,KAAK2e,MAAMtmB,KAAK,UAAU,CAAC,EACnFylB,EAAyBY,gBAAe,EAExCtC,EAA4BsC,gBAAe,EAE3CvoB,WAAWyB,SAASgnB,sBAAqB,CAC7C,EACAnoB,KAAK0hB,iBAAmB,WACpBiC,EAAyBhC,WAAU,EACnCgC,EAAyBpa,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAEmmB,QAAQ,oCAAoC,EAC1HpE,EAAyBpa,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAE+K,MAAa6W,CAAqB,EAChHG,EAAyBpa,KAAKua,OAAOH,EAAyBpa,KAAK2e,MAAMtmB,KAAK,UAAU,CAAC,EACzF8kB,EAA4B/E,WAAU,EAEtC6C,EAA0B7C,WAAU,EACpC6C,EAA0Bjb,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAEmmB,QAAQ,oCAAoC,EAC3HvD,EAA0Bjb,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAE+K,MAAa0X,CAA+B,EAE3HU,EAAsBpD,WAAU,EAChCoD,EAAsBxb,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAEmmB,QAAQ,oCAAoC,EACvHhD,EAAsBxb,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAE+K,MAAakY,CAAsB,EAC9GE,EAAsBxb,KAAKua,OAAOiB,EAAsBxb,KAAK2e,MAAMtmB,KAAK,UAAU,CAAC,EACnFylB,EAAyB1F,WAAU,EAEnCgE,EAA4BhE,WAAU,EACtCgE,EAA4Bpc,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAEmmB,QAAQ,oCAAoC,EAC7HpC,EAA4Bpc,KAAKue,QAAQlmB,KAAK,iCAAiC,EAAE+K,MAAa8Y,CAA6B,CAC/H,EACAzlB,KAAK4hB,wBAA0B,WAM3B,IALA,IAAI3C,EAA6B,GAC7BmJ,EAAqC,GACrCC,EAAa1E,EAAyBpa,KAAKqa,WAAW/gB,KAAI,EAAGylB,OAAM,EACnEC,EAAc/D,EAA0Bjb,KAAKqa,WAAW/gB,KAAI,EAAGylB,OAAM,EAEhE1P,EAAI,EAAGA,EAAIyP,EAAWvlB,OAAQ8V,CAAC,GAAI,CACxC,IAAI5L,EAAY4B,MAAMC,SAASwZ,EAAWzP,GAAmC,+BAAG,UAAU,GAAK,GAC3FgF,EAAUhP,MAAMC,SAASwZ,EAAWzP,GAAiC,6BAAG,UAAU,GAAK,GACvFsN,GAAiBmC,EAAWzP,GAAuC,oCAAK,IAAIkJ,QAAQ,IAAK,GAAG,GAAK,GACjGhE,EAAYlP,MAAMC,SAASwZ,EAAWzP,GAAmC,+BAAG,OAAO,GAAK,GACxFmF,EAAUnP,MAAMC,SAASwZ,EAAWzP,GAAiC,6BAAG,OAAO,GAAK,GACxFqG,EAAiBpZ,KAAK,CAACmH,EAAW4Q,EAASsI,EAAepI,EAAWC,GAASyE,KAAK,GAAG,CAAC,EAEvF,IAAK,IAAIgG,EAAI,EAAGA,EAAID,EAAYzlB,OAAQ0lB,CAAC,GACjCD,EAAYC,GAAsD,oDAAMH,EAAWzP,GAA4B,0BAC3G9Y,EAAQ8O,MAAMC,SAAS0Z,EAAYC,GAA2C,uCAAG,OAAO,GAAK,GAC7FC,EAAM7Z,MAAMC,SAAS0Z,EAAYC,GAAyC,qCAAG,OAAO,GAAK,GAC7FJ,EAAyBviB,KAAK,CAAC+S,EAAE/J,SAAQ,EAAI/O,EAAO2oB,GAAKjG,KAAK,GAAG,CAAC,E,CAU9E,IALA,IAAIrD,EAAiC,GACjCuJ,EAAyC,GACzCC,EAAc5D,EAAsBxb,KAAKqa,WAAW/gB,KAAI,EAAGylB,OAAM,EACjEM,EAAejD,EAA4Bpc,KAAKqa,WAAW/gB,KAAI,EAAGylB,OAAM,EAEnE1P,EAAI,EAAGA,EAAI+P,EAAY7lB,OAAQ8V,CAAC,GAAI,CACzC,IAAI5L,EAAY4B,MAAMC,SAAS8Z,EAAY/P,GAA4C,wCAAG,UAAU,GAAK,GACrGgF,EAAUhP,MAAMC,SAAS8Z,EAAY/P,GAA0C,sCAAG,UAAU,GAAK,GACjGsN,GAAiByC,EAAY/P,GAAgD,6CAAK,IAAIkJ,QAAQ,IAAK,GAAG,GAAK,GAC3GhE,EAAYlP,MAAMC,SAAS8Z,EAAY/P,GAA4C,wCAAG,OAAO,GAAK,GAClGmF,EAAUnP,MAAMC,SAAS8Z,EAAY/P,GAA0C,sCAAG,OAAO,GAAK,GAC9FgO,EAAW+B,EAAY/P,GAA2C,wCAAK,GACvEiO,EAAe8B,EAAY/P,GAA+C,4CAAK,GAC/EkO,EAAQlY,MAAMC,SAAS8Z,EAAY/P,GAAwC,oCAAG,UAAW,OAAO,GAAK,GACrGmO,EAAgB4B,EAAY/P,GAAgD,6CAAK,GACrFuG,EAAqBtZ,KAAK,CAACmH,EAAW4Q,EAASsI,EAAepI,EAAWC,EAAS6I,EAAUC,EAAcC,EAAOC,GAAevE,KAAK,GAAG,CAAC,EACzI,IAAK,IAEO1iB,EACA2oB,EAHHD,EAAI,EAAGA,EAAII,EAAa9lB,OAAQ0lB,CAAC,GAClCI,EAAaJ,GAA8D,4DAAMG,EAAY/P,GAAqC,mCAC9H9Y,EAAQ8O,MAAMC,SAAS+Z,EAAaJ,GAA0C,sCAAG,OAAO,GAAK,GAC7FC,EAAM7Z,MAAMC,SAAS+Z,EAAaJ,GAAwC,oCAAG,OAAO,GAAK,GAC7FE,EAA6B7iB,KAAK,CAAC+S,EAAE/J,SAAQ,EAAI/O,EAAO2oB,GAAKjG,KAAK,GAAG,CAAC,E,CAKlF,MAAO,CACHG,2BAA4B1D,EAAiBuD,KAAK,IAAI,EACtDI,oCAAqCwF,EAAyB5F,KAAK,IAAI,EACvEK,+BAAgC1D,EAAqBqD,KAAK,IAAI,EAC9DM,wCAAyC4F,EAA6BlG,KAAK,IAAI,C,CAEvF,EAEAxiB,KAAK6oB,4BAA8B,SAACC,GAChC,IAGSzK,EAiBA1K,EApBLoV,EAAyB,GACzBC,EAAyB,GAE7B,IAAS3K,KAAOyK,EACRA,EAAiBG,eAAe5K,CAAG,IACT,mCAAtBA,EAAI6K,OAAO,EAAG,EAAE,IAChBH,EAAuB1K,EAAI6K,OAAO,GAAI,CAAC,GAAKnpB,EAAKopB,oBAAoBJ,EAAuB1K,EAAI6K,OAAO,GAAI,CAAC,GAAIJ,EAAiBzK,GAAK+K,YAAY,GAE5H,oCAAtB/K,EAAI6K,OAAO,EAAG,EAAE,KAChBF,EAAuB3K,EAAI6K,OAAO,GAAI,CAAC,GAAKnpB,EAAKopB,oBAAoBJ,EAAuB1K,EAAI6K,OAAO,GAAI,CAAC,GAAIJ,EAAiBzK,GAAK+K,YAAY,GAK9J,IAASzV,KAASoV,EACVA,EAAuBE,eAAetV,CAAK,GAC3CgQ,EAAyB0F,gBAAgBC,SAAS3V,CAAK,EAAGoV,EAAuBpV,EAAM,EAI/F,IAASA,KAASqV,EACVA,EAAuBC,eAAetV,CAAK,GAC3CoR,EAAsBsE,gBAAgBC,SAAS3V,CAAK,EAAGqV,EAAuBrV,EAAM,CAIhG,CACJ,EAEQsI,EAAApc,UAAAspB,oBAAR,SAA4BI,EAAYC,GACpC,OAAID,EACOA,EAAa,OAASC,EAE1BA,CACX,EAEQvN,EAAApc,UAAAqgB,aAAR,WACIlgB,KAAKkc,WAAWwD,sBAAsBlb,cAAa,EACnDxE,KAAKkc,WAAWwD,sBAAsBC,eAAenb,cAAa,EAClExE,KAAKkc,WAAW0D,0BAA0Bpb,cAAa,EACvDxE,KAAKkc,WAAW0D,0BAA0BD,eAAenb,cAAa,EACtExE,KAAKkc,WAAWwD,sBAAsB9S,QAAQ,GAAI5M,IAAI,EACtDA,KAAKkc,WAAWwD,sBAAsBC,eAAe/S,QAAQ,GAAI5M,IAAI,EACrEA,KAAKkc,WAAW0D,0BAA0BhT,QAAQ,GAAI5M,IAAI,EAC1DA,KAAKkc,WAAW0D,0BAA0BD,eAAe/S,QAAQ,GAAI5M,IAAI,CAC7E,EAEAic,EAAApc,UAAA4pB,kBAAA,WACI,IAAI5mB,EAAO,KAIX,OAFIA,EADA7C,KAAK4hB,wBACE5hB,KAAK4hB,wBAAuB,EAEhC/e,IAAQ,CAAE8f,2BAA4B,EAAE,CACnD,EAEA1G,EAAApc,UAAAuhB,eAAA,WACI,MAAIphB,CAAAA,KAAKkhB,gBACElhB,KAAKkhB,eAAc,GAAM,CAAA,CAGxC,EAEAjF,EAAApc,UAAAooB,gBAAA,WACQjoB,KAAKwhB,uBACLxhB,KAAKwhB,sBAAqB,CAElC,EAEAvF,EAAApc,UAAA8hB,WAAA,WACQ3hB,KAAK0hB,kBACL1hB,KAAK0hB,iBAAgB,CAE7B,EAEAzF,EAAApc,UAAA6pB,sBAAA,SAAsBZ,GACd9oB,KAAK6oB,6BACL7oB,KAAK6oB,4BAA4BC,CAAgB,CAEzD,EAEQ7M,EAAApc,UAAA+nB,wBAAR,WACQ5nB,KAAKe,QAAQ4oB,uBACb3pB,KAAKe,QAAQ4oB,sBAAqB,CAE1C,EAvxBS1nB,EAAAga,sBAyxBbA,EAuCIpB,EAAAhb,UAAAid,OAAA,WAAA,IAAA/c,EAAAC,KACIN,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAUsoB,2BAA2B,EAEnF5pB,KAAK2B,IAAIC,KAAK,yBAAyB,EAAEgM,aAAa,CAClDic,QAAS/qB,EAAA8B,QAAQkpB,0BACjBjc,SAAU,MACVkc,UAAW,EACXjc,KAAM0O,C,CACT,EAEGxc,KAAKe,QAAQiE,SACbhF,KAAK2B,IAAIC,KAAK,yBAAyB,EAAEgM,aAAa,CAClDic,QAAS/qB,EAAA8B,QAAQopB,wBACjBnc,SAAU,MACVkc,UAAW,EACXjc,KAAM0O,C,CACT,EAEDxc,KAAK2B,IAAIC,KAAK,yBAAyB,EAAE+F,OAAM,EAG/C3H,KAAKe,QAAQiE,SACbhF,KAAK2B,IAAIC,KAAK,uBAAuB,EAAEgM,aAAa,CAChDic,QAAS/qB,EAAA8B,QAAQqpB,4BACjBpc,SAAU,MACVkc,UAAW,EACXjc,KAAM0O,C,CACT,EAEDxc,KAAK2B,IAAIC,KAAK,uBAAuB,EAAE+F,OAAM,EAGjD3H,KAAK2B,IAAIC,KAAK,uBAAuB,EAAEgM,aAAa,CAChDic,QAAS,WAAM,OAAA9pB,EAAKmqB,yBAAwB,CAA7B,EACfrc,SAAU,SACVkc,UAAW,EACXjc,KAAM,SAAAvB,GACFiQ,EAAiBjQ,CAAC,EACbxM,EAAKoqB,sBACA5d,EAAEyB,OAAQ6b,QAAQjT,SAAQ,EAAG2I,IAAI,UAAW,CAAC,EACnD6K,WAAW,WAAM,OAAM7d,EAAEyB,OAAQ6b,QAAQjX,KAAK7S,EAAKmqB,yBAAwB,EAAI,GAAG,CAAjE,CAAkE,EAE3F,C,CACH,EAEDlqB,KAAK2B,IAAIC,KAAK,yBAAyB,EAAE+K,MAAM,WAAM,OAAA5M,EAAKsqB,YAAW,CAAhB,CAAkB,EACvErqB,KAAK2B,IAAIC,KAAK,uBAAuB,EAAE0oB,GAAG,SAAU,SAAA/d,GAAK,OAAAxM,EAAKwqB,iBAAiBhe,CAAC,CAAvB,CAAwB,EACjFvM,KAAK2B,IAAIC,KAAK,uBAAuB,EAAE+K,MAAM,WAAM,OAAA5M,EAAKyqB,UAAS,CAAd,CAAgB,EAEnExqB,KAAKyqB,0BAAyB,EAE9BzqB,KAAK0qB,mBAAkB,EACvB1qB,KAAK6c,UAAUlW,KAAK,iBAAkB,WAAM,OAAA5G,EAAK2qB,mBAAkB,CAAvB,CAAyB,CACzE,EAEA7P,EAAAhb,UAAAooB,gBAAA,WACIjoB,KAAKe,QAAQiE,SAAW,CAAA,EACxBhF,KAAK8c,OAAM,CACf,EAEAjC,EAAAhb,UAAA8hB,WAAA,WACI3hB,KAAKe,QAAQiE,SAAW,CAAA,EACxBhF,KAAK8c,OAAM,CACf,EAEAjC,EAAAhb,UAAA6qB,mBAAA,WACQ1qB,KAAK6c,UAAUpW,IAAI,SAAS,EAC5BzG,KAAK2B,IAAIC,KAAK,qBAAqB,EAAEkM,KAAI,EAEzC9N,KAAK2B,IAAIC,KAAK,qBAAqB,EAAE0c,KAAI,CAEjD,EAEAzD,EAAAhb,UAAA4qB,0BAAA,WAAA,IAAA1qB,EAAAC,KACQ2qB,EAAe,CACf,CAAEvW,MAAOpU,KAAKe,QAAQ0B,OAAOuK,UAAW4d,UAAW,KAAK,EACxD,CAAExW,MAAOpU,KAAKe,QAAQ0B,OAAOmb,QAASgN,UAAW,KAAK,GAGtD5qB,KAAKe,QAAQ0B,OAAOqkB,OAAS9mB,KAAKe,QAAQ0B,OAAOmkB,WACjD+D,EAAa9kB,KAAK,CAAEuO,MAAOpU,KAAKe,QAAQ0B,OAAOmkB,SAAUgE,UAAW,KAAK,CAAE,EAC3ED,EAAa9kB,KAAK,CAAEuO,MAAOpU,KAAKe,QAAQ0B,OAAOqkB,MAAO8D,UAAW,KAAK,CAAE,EACxED,EAAa9kB,KAAK,CAAEuO,MAAOpU,KAAKe,QAAQ0B,OAAOqkB,MAAO8D,UAAW,KAAK,CAAE,GAE5E5qB,KAAK2c,SAASpT,KAAKqa,WAAWgH,UAAUD,CAAY,EAEpD3qB,KAAK2c,SAASpT,KAAKqa,WAAWjd,KAAK,SAAU,WAAM,OAAA5G,EAAKoqB,oBAAsB,IAA3B,CAA+B,CACtF,EAEAtP,EAAAhb,UAAAqqB,yBAAA,WACI,IACQW,EACAC,EAYR,OAdK9qB,KAAKmqB,sBACFU,EAAa7qB,KAAK2c,SAASpT,KAAKqa,WAAWiH,WAAU,EACrDC,EAAiB9qB,KAAK+qB,cAAa,EACvC/qB,KAAKmqB,oBAAsBzqB,WAAWyB,SAAS6pB,eAAelsB,EAAAwC,UAAU2pB,4BAA6B,CACjGC,MAAOtc,MAAMC,SAAS7O,KAAK2c,SAASpT,KAAKqa,WAAW/gB,KAAI,EAAGC,OAAQ,IAAI,EACvEkK,UAAWyP,EAAWoO,EAAW7qB,KAAKe,QAAQ0B,OAAOuK,WAAWme,GAAG,EACnEvN,QAASnB,EAAWoO,EAAW7qB,KAAKe,QAAQ0B,OAAOmb,SAASwN,GAAG,EAC/D7f,KAAMuf,EAAeO,aACrBvc,GAAIgc,EAAeQ,WACnB1E,SAAU5mB,KAAKe,QAAQ0B,OAAOmkB,SAAWhY,MAAMC,SAASgc,EAAW7qB,KAAKe,QAAQ0B,OAAOmkB,UAAU2E,IAAK,WAAW,EAAI,KACrHC,SAAUxrB,KAAKe,QAAQ0B,OAAOqkB,MAAQlY,MAAMC,SAASgc,EAAW7qB,KAAKe,QAAQ0B,OAAOqkB,OAAOsE,IAAK,WAAW,EAAI,KAC/GK,SAAUzrB,KAAKe,QAAQ0B,OAAOqkB,MAAQlY,MAAMC,SAASgc,EAAW7qB,KAAKe,QAAQ0B,OAAOqkB,OAAOqE,IAAK,WAAW,EAAI,I,CAClH,GAEEnrB,KAAKmqB,mBAChB,EAEAtP,EAAAhb,UAAAkrB,cAAA,WAAA,IAAAhrB,EAAAC,KACQ0rB,EAAW,QACXC,EAAS,QAWb,OATA3rB,KAAK2c,SAASpT,KAAKqa,WAAW/gB,KAAI,EAAGsa,QAAQ,SAAAyO,GACrC9Q,EAAY8Q,EAAK7rB,EAAKgB,QAAQ0B,OAAOqb,WAAY4N,CAAQ,EAAI,IAC7DA,EAAWE,EAAK7rB,EAAKgB,QAAQ0B,OAAOqb,YAEqB,EAAzDhD,EAAY8Q,EAAK7rB,EAAKgB,QAAQ0B,OAAOsb,SAAU4N,CAAM,IACrDA,EAASC,EAAK7rB,EAAKgB,QAAQ0B,OAAOsb,SAE1C,CAAC,EAEM,CACHsN,aAAcK,EACdJ,WAAYK,C,CAEpB,EAEA9Q,EAAAhb,UAAA0qB,iBAAA,SAAiBhe,GAAjB,IAKQsf,EALR9rB,EAAAC,KACkC,IAA1BuM,EAAEuf,OAAOC,MAAMjpB,SAIf+oB,EAAOtf,EAAEuf,OAAOC,MAAM,GAE0B,IAAhD/rB,KAAK2c,SAASpT,KAAKqa,WAAW/gB,KAAI,EAAGC,OACrC9C,KAAKgsB,cAAcH,CAAI,EAEvBnsB,WAAWyB,SAAS2C,YAAYC,QAAQjF,EAAA8B,QAAQqrB,wCAAyC,WACrFlsB,EAAKisB,cAAcH,CAAI,CAC3B,EAAG,CACKlrB,MAAO7B,EAAA8B,QAAQsrB,iCACnBhoB,QAAS,CACLC,GAAIrF,EAAA8B,QAAQurB,6BACZ9nB,OAAQ3E,WAAWkB,QAAQwrB,M,EAElC,EAIL3Z,EAAElG,EAAEuf,MAAM,EAAEO,YAAY5Z,EAAElG,EAAEuf,MAAM,EAAEQ,MAAM,CAAA,CAAI,CAAC,EAC/CtsB,KAAK2B,IAAIC,KAAK,uBAAuB,EAAE2qB,IAAI,EAAE,EACjD,EAEA1R,EAAAhb,UAAA2qB,UAAA,WAAA,IAAAzqB,EAAAC,KACwD,IAAhDA,KAAK2c,SAASpT,KAAKqa,WAAW/gB,KAAI,EAAGC,QAIzCpD,WAAWyB,SAAS2C,YAAYC,QAAQjF,EAAA8B,QAAQ4rB,mCAAoC,WAChFzsB,EAAK4c,SAAS6N,UAAS,EACvBzqB,EAAK6c,kBAAkB4N,UAAS,CACpC,EAAG,CACC7pB,MAAO7B,EAAA8B,QAAQqpB,4BACf/lB,QAAS,CACLC,GAAIrF,EAAA8B,QAAQ6rB,wBACZpoB,OAAQ3E,WAAWkB,QAAQwrB,M,EAElC,CACL,EAEAvR,EAAAhb,UAAAwqB,YAAA,WAAA,IAAAtqB,EAAAC,KACQA,KAAK2c,SAASpT,OAEsC,IAAhDvJ,KAAK2c,SAASpT,KAAKqa,WAAW/gB,KAAI,EAAGC,OACrCpD,WAAWyB,SAAS2C,YAAY8gB,MAAM9lB,EAAA8B,QAAQ8rB,mCAAmC,EAIjF1sB,KAAK6c,UAAUpW,IAAG,EAAGkmB,UAIzB3sB,KAAK6c,UAAUmB,IAAI,CAAE2O,QAAS,CAAA,CAAI,CAAE,EACpCvC,WAAW,WACP,IAAI3nB,EAA+D,CAC/D,CAAE2R,MAAOrU,EAAKgB,QAAQ0B,OAAOuK,UAAW4f,OAAQ9tB,EAAA8B,QAAQisB,qBAAsBC,MAAO,GAAG,EACxF,CAAE1Y,MAAOrU,EAAKgB,QAAQ0B,OAAOmb,QAASgP,OAAQ9tB,EAAA8B,QAAQmsB,mBAAoBD,MAAO,GAAG,EACpF,CAAE1Y,MAAOrU,EAAKgB,QAAQ0B,OAAOyjB,cAAe0G,OAAQ9tB,EAAA8B,QAAQosB,yBAA0BF,MAAO,GAAG,EAChG,CAAE1Y,MAAOrU,EAAKgB,QAAQ0B,OAAOqb,UAAW8O,OAAQ9tB,EAAA8B,QAAQqsB,qBAAsBH,MAAO,EAAE,EACvF,CAAE1Y,MAAOrU,EAAKgB,QAAQ0B,OAAOsb,QAAS6O,OAAQ9tB,EAAA8B,QAAQssB,mBAAoBJ,MAAO,EAAE,GAGnFK,EAAYruB,EAAA8B,QAAQwsB,2BACpBC,EAAWvuB,EAAA8B,QAAQwsB,2BAEnBrtB,EAAKgB,QAAQ0B,OAAOmkB,UACpB7mB,EAAKgB,QAAQ0B,OAAOokB,cACpB9mB,EAAKgB,QAAQ0B,OAAOqkB,OACpB/mB,EAAKgB,QAAQ0B,OAAOskB,gBACpBtkB,EAAOoD,KAAK,CAAEuO,MAAOrU,EAAKgB,QAAQ0B,OAAOmkB,SAAUgG,OAAQ9tB,EAAA8B,QAAQib,0BAA2ByR,MAAO,QAASR,MAAO,EAAE,CAAE,EACzHrqB,EAAOoD,KAAK,CAAEuO,MAAOrU,EAAKgB,QAAQ0B,OAAOokB,aAAc+F,OAAQ9tB,EAAA8B,QAAQkb,gBAAiBgR,MAAO,EAAE,CAAE,EACnGrqB,EAAOoD,KAAK,CAAEuO,MAAOrU,EAAKgB,QAAQ0B,OAAOqkB,MAAO8F,OAAQ9tB,EAAA8B,QAAQ2sB,iBAAkBD,MAAO,QAASR,MAAO,EAAE,CAAE,EAC7GrqB,EAAOoD,KAAK,CAAEuO,MAAOrU,EAAKgB,QAAQ0B,OAAOskB,cAAe6F,OAAQ9tB,EAAA8B,QAAQ4sB,yBAA0BV,MAAO,EAAE,CAAE,EAE7GK,EAAYruB,EAAA8B,QAAQ6sB,+BAA+B3L,QAAQ,IAAK,GAAG,EACnEuL,EAAWvuB,EAAA8B,QAAQ6sB,+BAA+B3L,QAAQ,IAAK,GAAG,GAGtEpiB,WAAW2D,KAAKiL,OAAOof,YAAY3tB,EAAK4c,SAASpT,KAAKqa,WAAW/gB,KAAI,EAAGylB,OAAM,EAAI7lB,EAAQ0qB,EAAWE,CAAQ,EAE7GttB,EAAK8c,UAAUmB,IAAI,CAAE2O,QAAS,CAAA,CAAK,CAAE,CAEzC,EAAG,GAAG,GAGd,EAEA9R,EAAAhb,UAAAmsB,cAAA,SAAcH,GAAd,IAAA9rB,EAAAC,KACIA,KAAK6c,UAAUmB,IAAI,CAAE2O,QAAS,CAAA,CAAI,CAAE,EACpCvC,WAAW,WACP,IAAI3nB,EAAc,CACd,CAAE2R,MAAOrU,EAAKgB,QAAQ0B,OAAOuK,UAAW2gB,KAAM,OAAQC,SAAU,CAAA,CAAI,EACpE,CAAExZ,MAAOrU,EAAKgB,QAAQ0B,OAAOmb,QAAS+P,KAAM,OAAQC,SAAU,CAAA,CAAI,EAClE,CAAExZ,MAAOrU,EAAKgB,QAAQ0B,OAAOyjB,aAAa,EAC1C,CAAE9R,MAAOrU,EAAKgB,QAAQ0B,OAAOqb,UAAW6P,KAAM,OAAQC,SAAU,CAAA,CAAI,EACpE,CAAExZ,MAAOrU,EAAKgB,QAAQ0B,OAAOsb,QAAS4P,KAAM,SAAUC,SAAU,CAAA,CAAI,GAGpE7tB,EAAKgB,QAAQ0B,OAAOmkB,UACpB7mB,EAAKgB,QAAQ0B,OAAOokB,cACpB9mB,EAAKgB,QAAQ0B,OAAOqkB,OACpB/mB,EAAKgB,QAAQ0B,OAAOskB,gBACpBtkB,EAAOoD,KAAK,CAAEuO,MAAOrU,EAAKgB,QAAQ0B,OAAOmkB,SAAU+G,KAAM,QAAQ,CAAG,EACpElrB,EAAOoD,KAAK,CAAEuO,MAAOrU,EAAKgB,QAAQ0B,OAAOokB,YAAY,CAAG,EACxDpkB,EAAOoD,KAAK,CAAEuO,MAAOrU,EAAKgB,QAAQ0B,OAAOqkB,MAAO6G,KAAM,QAAQ,CAAG,EACjElrB,EAAOoD,KAAK,CAAEuO,MAAOrU,EAAKgB,QAAQ0B,OAAOskB,aAAa,CAAE,GAI5DjoB,EAAM+uB,YAAY7B,cAAcH,EAAMppB,EAAQ,SAAAI,GAC1CA,EAAOA,GAAQ,GAEf,IAAK,IAAI+V,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GAC9B/V,EAAK9C,EAAKgB,QAAQ0B,OAAOwjB,IAAMrN,EAAE/J,SAAQ,EAG7C9O,EAAK6c,kBAAkB4N,UAAS,EAEhCzqB,EAAK4c,SAASpT,KAAKqa,WAAW/gB,KAAKA,CAAI,EACvC9C,EAAK8c,UAAUmB,IAAI,CAAE2O,QAAS,CAAA,CAAK,CAAE,CACzC,EAAG,SAAA1U,GACCvY,WAAWyB,SAAS2C,YAAY8gB,MAAM3M,EAAO,CAAEtX,MAAO7B,EAAA8B,QAAQktB,mCAAmC,CAAE,EACnG/tB,EAAK8c,UAAUmB,IAAI,CAAE2O,QAAS,CAAA,CAAK,CAAE,CACzC,CAAC,CACL,EAAG,GAAG,CACV,EAlRJ9R,EAmRAA,CACH,EAprCMhc,UAAAA,WAAS,EAAA,ECAhB,SAAOA,GAAU,IAoHbS,EAeAA,EAgoBAA,EAkIAA,EAuNAA,EA5lCaR,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,IAACmD,EAAAnD,EAAAmD,WAAAnD,EAAAmD,SAAQ,IAE3B3C,EAA6CI,WAAWuC,SAASoG,MAAM0lB,eAA1BnuB,UAAA4gB,EAAAlhB,CAAA,EAYzCkhB,EAAA3gB,UAAAmuB,cAAA,SAAcrS,EAAqBC,GAC/B,OAAO9c,EAAA8B,QAAQ,aAAegb,KAAYD,EAAcA,EAAc,IAAMC,EAASA,EACzF,EAdJ,IAAAtc,EAAAkhB,EAeAA,EAdI,SAAAA,EAAY1e,EAA6Cf,GAAzD,IAAAhB,EAAAC,K,OAOIe,EAAUrB,WAAWqc,cAAcC,MAAMjb,EANwB,CAC7DitB,cAAe,SAACrS,EAAqBC,GACjC,OAAO7b,EAAKiuB,cAAcrS,EAAaC,CAAM,CACjD,C,CAG4D,E,EAChEtc,EAAA6Y,KAAAnY,KAAM8B,EAAWf,CAAO,GAACf,IAC7B,CAVSiC,EAAAue,wBAAuBA,EAuCY5gB,UAAAquB,EAAhD3uB,EAAgDkhB,CAAA,EAY5CyN,EAAApuB,UAAAme,IAAA,SAAIkQ,EAAgCntB,GAChC,OAAOzB,EAAAO,UAAMme,IAAG7F,KAAAnY,KAACkuB,EAAYntB,CAAO,CACxC,EAEAktB,EAAApuB,UAAA4G,IAAA,SAAI0nB,GACA,OAAO7uB,EAAAO,UAAM4G,IAAG0R,KAAAnY,KAACmuB,CAAS,CAC9B,EAEAF,EAAApuB,UAAAuuB,aAAA,WACI,OAAOpuB,KAAK8B,WAAWusB,mBAAmBruB,KAAKsuB,cAAa,CAAE,EAAEC,WACpE,EAEQN,EAAApuB,UAAA2uB,oBAAR,WACI,IAAIC,EAAkB,GAClBC,EAAgB,EAEhBC,EAAgB,GAEpB3uB,KAAKyG,IAAG,EAAGhE,OAAOmsB,KAAK,SAAAxa,GACfA,EAAM3N,IAAG,EAAGooB,YACZH,CAAa,GACa,MAAtBta,EAAM3N,IAAI,OAAO,IACjBgoB,EAAgB5oB,KAAKuO,EAAM3N,IAAI,KAAK,CAAC,EAIzC2N,EAAM3N,IAAG,EAAGwR,OACZ0W,EAAc9oB,KAAK,CACfwY,IAAKjK,EAAM3N,IAAG,EAAG4X,IACjByQ,QAAS1a,EAAM3N,IAAG,EAAGwR,K,CACxB,CAET,CAAC,EAEDjY,KAAKge,IAAI,CACL+Q,gBAAiB,CACbC,cAAeN,EACfD,gBAAiBA,C,EAErBQ,eAAgB,CACZxsB,OAAQksB,C,EAEf,CACL,EAvDJ,IAAArvB,EA4DAA,EA5DA2uB,EA0DAA,EAvDI,SAAAA,EAAYnsB,EAA6Cf,GAAzD,IAAAhB,EACIT,EAAA6Y,KAAAnY,KAAM8B,EAAYf,CAAO,GAACf,K,OAE1BD,EAAKyuB,oBAAmB,EACxBzuB,EAAK0G,IAAG,EAAGhE,OAAOkE,KAAK,SAAU,WAC7B5G,EAAKyuB,oBAAmB,CAC5B,CAAC,E,CACL,CAkDJ,SAAAtsB,I,8CAaA,CAEA,SAAAkD,I,8CAaA,CAEA,SAAAmC,I,8CAaA,CA0CA,SAASiV,EAAiBjQ,GAChB7M,WAAWyB,SAAU4M,aAAaxB,EAAEyB,MAAM,CACpD,CAnJsB/L,EAAAgsB,kBAAiBA,EA4DGruB,UAAAsC,EAA1C5C,EAA0C2uB,CAAA,EAGtC/rB,EAAArC,UAAAqvB,oBAAA,WACI,MAAO,CACHC,WAAY,cACZC,aAAcpvB,KAAKqvB,SAAS,oBAAoB,EAChDC,sBAAuBtvB,KAAKqvB,SAAS,6BAA6B,EAClEE,YAAavvB,KAAKqvB,SAAS,4BAA4B,EACvDG,oBAAqBxvB,KAAKqvB,SAAS,oCAAoC,EACvEI,aAAc3wB,EAAAka,aAAa0W,gBAAgB1vB,KAAKqvB,SAAS,uBAAuB,EAAGrvB,KAAKqvB,SAAS,uBAAuB,CAAC,C,CAEjI,EAZSptB,EAAAC,qBAabA,EAE0CtC,UAAAwF,EAA1C9F,EAA0C2uB,CAAA,EAGtC7oB,EAAAvF,UAAAqvB,oBAAA,WACI,MAAO,CACHC,WAAY,cACZC,aAAcpvB,KAAKqvB,SAAS,0BAA0B,EACtDC,sBAAuBtvB,KAAKqvB,SAAS,6BAA6B,EAClEE,YAAavvB,KAAKqvB,SAAS,4BAA4B,EACvDG,oBAAqBxvB,KAAKqvB,SAAS,oCAAoC,EACvEI,aAAc3wB,EAAAka,aAAa0W,gBAAgB1vB,KAAKqvB,SAAS,uBAAuB,EAAGrvB,KAAKqvB,SAAS,6BAA6B,CAAC,C,CAEvI,EAZSptB,EAAAmD,qBAabA,EAEoCxF,UAAA2H,EAApCjI,EAAoC2uB,CAAA,EAGhC1mB,EAAA1H,UAAAqvB,oBAAA,WACI,MAAO,CACHC,WAAY,QACZC,aAAcpvB,KAAKqvB,SAAS,oBAAoB,EAChDC,sBAAuBtvB,KAAKqvB,SAAS,6BAA6B,EAClEE,YAAavvB,KAAKqvB,SAAS,4BAA4B,EACvDG,oBAAqBxvB,KAAKqvB,SAAS,oCAAoC,EACvEI,aAAc3wB,EAAAka,aAAa0W,gBAAgB1vB,KAAKqvB,SAAS,uBAAuB,EAAGrvB,KAAKqvB,SAAS,uBAAuB,CAAC,C,CAEjI,EAZSptB,EAAAsF,eAabA,EA8CAjI,EAA+CI,WAAWuC,SAASoG,MAAMC,kBAA1B1I,UAAA+vB,EAAArwB,CAAA,EA4E3CqwB,EAAA9vB,UAAA+vB,0BAAA,WACI,IAAIb,EAAkB/uB,KAAKwG,MAAMC,IAAG,EAAGsoB,gBACnCE,EAAiBjvB,KAAKwG,MAAMC,IAAG,EAAGwoB,eAClCY,EAAe7vB,KAAKwG,MAAMC,IAAG,EAAGqpB,kBAClB9vB,KAAKwG,MAAM1E,WAAWud,WAAU,GAAMrf,KAAKwG,MAAM1E,WAAW0E,MAAMC,IAAI,mBAAmB,GAExF,CAACopB,GAAyD,EAAzCd,EAAgBN,gBAAgB3rB,QAA6C,EAA/BmsB,EAAexsB,OAAOK,OACpG9C,KAAK2B,IAAIC,KAAK,gBAAgB,EAAEmuB,KAAK,WAAY,CAAA,CAAI,EAErD/vB,KAAK2B,IAAIC,KAAK,gBAAgB,EAAEmuB,KAAK,WAAY,CAAA,CAAK,CAE9D,EAEAJ,EAAA9vB,UAAAmwB,uBAAA,WACIhwB,KAAKiwB,WAAWC,OAAM,EAA4CC,QAAQ,SAAAC,GAAK,OAAAA,CAAA,CAAC,EAE3EpwB,KAAK2B,IAAIC,KAAK,wBAAwB,EAAEyuB,SAAS,MAAM,GACxDrwB,KAAK2B,IAAIC,KAAK,wBAAwB,EAAE0uB,SAAS,MAAM,EAE3D,IAAIrd,EAASjT,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAO8tB,eAAe,EAChEtd,GAAmC,UAAzBA,EAAOud,YAAW,IAI5BC,EAAezwB,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAOiuB,mBAAmB,MAEtEC,EAAiB3wB,KAAK4wB,kBAAkBH,CAAY,GACrCI,gBAAe,EAC9B7wB,KAAK8wB,cAAcH,EAAeI,UAAU,EAE5C/wB,KAAKgxB,eAAeL,EAAeM,eAAe,EAG9D,EAEAtB,EAAA9vB,UAAAmxB,eAAA,SAAeP,GACXzwB,KAAK2B,IAAIC,KAAK,wBAAwB,EAAEsvB,YAAY,MAAM,EAC1DlxB,KAAK2B,IAAIC,KAAK,uDAAuD,EAAEgR,KAAK6d,CAAY,CAC5F,EAEAd,EAAA9vB,UAAAixB,cAAA,SAAcC,GAAd,IAAAhxB,EAAAC,KACQmxB,EAAYJ,EAAWb,OAAM,EAC7BkB,EAA2C,GAE/CD,EAAUE,MAAM,SAAAC,GAAK,MAAA,CAACA,EAAEC,gBAAe,CAAlB,CAAoB,EAAEpB,QAAQ,SAAAqB,GAC/C,IAAIC,EAAY1xB,EAAKke,cAAcuT,EAAUE,OAAM,GAE/CD,GAAmBA,EAAWE,YAC9B5xB,EAAK6xB,aAA+DH,EAAWD,EAAUf,YAAY,GAErG/wB,WAAWmyB,WAAW,SAAWL,EAAUE,OAAM,EAAK,oCAAsCF,EAAUf,aAAe,GAAG,EACxHW,EAAiBvrB,KAAK2rB,CAAS,EAEvC,CAAC,EAEDL,EAAUE,MAAM,SAAAC,GAAK,OAAAA,EAAEC,gBAAe,CAAjB,CAAmB,EAAEpB,QAAQ,SAAAmB,GAAK,OAAAF,EAAiBvrB,KAAKyrB,CAAC,CAAvB,CAAwB,EAEjD,EAA1BF,EAAiBtuB,SAEbgvB,EAAgBV,EAAiBlB,OAAM,EACtC6B,OAAO,SAAAxlB,GAAK,OAAAA,EAAEkkB,YAAF,CAAc,EAC1BuB,QAAO,EACPxP,KAAK,MAAM,IAGZxiB,KAAKgxB,eAAoBc,CAAa,CAIlD,EAEAnC,EAAA9vB,UAAA+xB,aAAA,SAAaH,EAA6D3C,GAClEjF,EAAUnqB,WAAWyB,SAAS6pB,eAAelsB,EAAAwC,UAAU2wB,wBAAyB,CAAEnD,QAASA,CAAO,CAAE,EACxG2C,EAAUE,YAAY9H,EAAc,oBAAoB,CAC5D,EAEA8F,EAAA9vB,UAAA+wB,kBAAA,SAAkBH,GACd,GAAI,CAACA,EACD,OAAO,IAAI3xB,EAAAozB,WAAWC,mBAAmB1B,CAAY,EAOzD,IAJA,IAAI2B,EAAQ,uBAILC,EAAQD,EAAME,KAAK7B,CAAY,GACtC,CACI,IAAI8B,EAAiBF,EAAM,GAAGG,MAAM,GAAG,EAEnCzB,EAAawB,EAAerC,OAAM,EACjC6B,OAAO,SAAAU,GAAK,OAAA3zB,EAAAozB,WAAWQ,aAAaC,SAASF,EAAEG,KAAI,CAAE,CAAzC,CAA0C,EACtDvB,MAAM,SAAAC,GAAK,OAAK,MAALA,CAAA,CAAS,EACpBU,QAAO,EAEZ,GAAIjB,GAAcA,EAAWjuB,SAAWyvB,EAAezvB,OACnD,OAAO,IAAIhE,EAAAozB,WAAWC,mBAAmB1B,EAAcM,CAAU,C,CAKzE,OAAO,IAAIjyB,EAAAozB,WAAWC,mBAAmB1B,EAAc,IAAI,CAC/D,EAEAd,EAAA9vB,UAAAgzB,kBAAA,WAAA,IAAA9yB,EAAAC,KACIN,WAAW2D,KAAKyvB,oBAAoB,oBAAqB,GAAI,SAAAC,GACzDhzB,EAAKyG,MAAMwX,IAAI,CAAE8R,kBAA8B,CAAA,IAAXiD,CAAe,CAAE,CACzD,EAAG,WACChzB,EAAKyG,MAAMwX,IAAI,CAAE8R,kBAAmB,CAAA,CAAK,CAAE,CAC/C,CAAC,CACL,EAEAH,EAAA9vB,UAAAmzB,oBAAA,SAAoBC,GACXA,EAMGjzB,KAAKkzB,6BACLlzB,KAAKkzB,2BAA2BC,MAAK,EACrCnzB,KAAKkzB,2BAA6B,MAPtClzB,KAAKkzB,2BAA6B,IAAIxzB,WAAWuC,SAASmxB,OAAOC,aAAav0B,EAAA8B,QAAQ0yB,0BAA2B,CAC7GC,KAAM,EACNC,SAAU,CAAA,C,CACb,CAOT,EAEA7D,EAAA9vB,UAAA4zB,OAAA,WAAA,IAAA1zB,EAAAC,KACIA,KAAK0zB,eAAc,EACnB1zB,KAAKwG,MAAMwX,IAAI,CAAE2O,QAAS,CAAA,CAAI,CAAE,EAChCgH,OAAOvJ,WAAW,WACVrqB,EAAK6zB,eACL7zB,EAAK6zB,cAAcnrB,MAAK,EAE5B1I,EAAK6zB,cAAgBl0B,WAAW2D,KAAKgZ,QAAQtc,EAAKgB,QAAQ8yB,IAAIJ,OAAQ1zB,EAAK+zB,oBAAmB,EAAI,SAACf,GAC1D,IAAjCA,EAAOgB,wBACPh0B,EAAKyG,MAAMwX,IAAI,CAAE2O,QAAS,CAAA,CAAK,CAAE,EACjC5sB,EAAK6C,QAAO,EAEpB,EAAG,SAACoxB,EAAaC,EAAKC,EAAYC,GAC9Bz0B,WAAW00B,YAAYH,EAAKC,EAAYC,CAAS,EACjDp0B,EAAKs0B,cAAa,CACtB,CAAC,CACL,EAAG,GAAG,CACV,EAEA1E,EAAA9vB,UAAA+C,QAAA,WAAA,IAAA7C,EAAAC,KACIN,WAAWyB,SAASC,iBAAiBpB,KAAK2B,IAAIC,KAAK,6BAA6B,EAAE,GAAI9C,EAAAwC,UAAUgzB,sBAAuB,CACnHpvB,eAAgBlF,KAAKe,QAAQmE,c,CAChC,EAEDlF,KAAK2B,IAAIC,KAAK,mBAAmB,EAAE+K,MAAM,WACjC5M,EAAKgB,QAAQkE,OACblF,EAAKgB,QAAQkE,MAAK,CAE1B,CAAC,EAEDjF,KAAK2B,IAAIC,KAAK,oBAAoB,EAAE+K,MAAM,WAClC5M,EAAKgB,QAAQkE,OACblF,EAAKgB,QAAQkE,MAAK,CAE1B,CAAC,CACL,EAEA0qB,EAAA9vB,UAAA4hB,QAAA,WAAA,IAAA1hB,EAAAC,KACIA,KAAKwG,MAAMwX,IAAI,CAAE2O,QAAS,CAAA,CAAI,CAAE,EAChC3sB,KAAK0zB,eAAc,EAEnBC,OAAOvJ,WAAW,WACArqB,EAAKqhB,eAAc,GAEzBrhB,EAAKw0B,mBACLx0B,EAAKw0B,kBAAkB9rB,MAAK,EAEhC1I,EAAKw0B,kBAAoB70B,WAAW2D,KAAKgZ,QAAQtc,EAAKgB,QAAQ8yB,IAAIW,WAAYz0B,EAAK+zB,oBAAmB,EAAI,SAACf,GACnGhzB,EAAK2pB,sBAAsBqJ,CAAM,GACjChzB,EAAKkoB,gBAAe,EAExBloB,EAAKyG,MAAMwX,IAAI,CAAE2O,QAAS,CAAA,CAAK,CAAE,EACjC5sB,EAAKs0B,cAAa,CACtB,EAAG,WAEC,IAAI30B,WAAWuC,SAASmxB,OAAOC,aAAav0B,EAAA8B,QAAQ6zB,+BAAgC,CAAElB,KAAM,CAAC,CAAE,EAC/FxzB,EAAKyG,MAAMwX,IAAI,CAAE2O,QAAS,CAAA,CAAK,CAAE,EACjC5sB,EAAKs0B,cAAa,CACtB,CAAC,IAEDt0B,EAAKyG,MAAMwX,IAAI,CAAE2O,QAAS,CAAA,CAAK,CAAE,EACjC5sB,EAAKs0B,cAAa,EAE1B,EAAG,GAAG,CACV,EAEA1E,EAAA9vB,UAAA6pB,sBAAA,SAAsBZ,GAElB9oB,KAAKwG,MAAMC,IAAG,EAAGhE,OAAOmsB,KAAK,SAAAxa,GAAS,OAAAA,EAAM4J,IAAI,QAAS,IAAI,CAAvB,CAAwB,EAG1D8K,EAAiB,0CACjBA,EAAiD,+BAAIA,EAAiB,wCACtEA,EAAiD,+BAAEM,aAAeN,EAAiD,+BAAEM,aAAatH,QAAQ,OAAQ,iBAAiB,EACnK,OAAOgH,EAAiB,yCAG5B,IACSzK,EAIGpG,EALRyc,EAAQ,CAAA,EACZ,IAASrW,KAAOyK,EACRA,EAAiBG,eAAe5K,CAAG,IACnCre,KAAK20B,qCAAqC7L,EAAiBzK,EAAI,EAE3DpG,EAAQ6Q,EAAiBzK,GAEzBre,KAAKwG,MAAMsZ,UAAUzB,IACrBre,KAAKwG,MAAMouB,YAAYvW,EAAK,QAASvf,EAAA+1B,gBAAgBC,0BAA0B7c,EAAMmR,YAAY,CAAC,EAGtGsL,EAAQ,CAAA,GAMhB,OAFA10B,KAAK+0B,wBAAwBjM,CAAgB,EAEtC4L,CACX,EAEA/E,EAAA9vB,UAAA80B,qCAAA,SAAqC7L,GACjC,IAMgBrO,EAQAua,EAdZlG,EAAUhG,EAAiBM,aAC3B0F,GAEgB,GADZmG,EAAYnG,EAAQruB,QAAQ,GAAG,EAAI,IAGlB,GADby0B,EAAapG,EAAQ5F,OAAO+L,CAAS,EAAEx0B,QAAQ,GAAG,KAE9Cga,EAAOqU,EAAQ5F,OAAO+L,EAAWC,CAAU,EAQ3CF,EAAkB,OAASl2B,EAAA8B,QAAQ,cAH/Bu0B,EADC,4CAHLA,EAAiB1a,GAII,kBAG6B0a,KAAmBr2B,EAAA8B,QAAQ,aAAeu0B,IAAmBr2B,EAAA8B,QAAQ,cAAgBu0B,IAAmBA,GAAkB,OAEhLrM,EAAiBM,aAAe0F,EAAQhN,QAAQ,IAAMrH,EAAO,IAAKua,CAAe,EAIjG,EAEArF,EAAA9vB,UAAAk1B,wBAAA,SAAwBjM,GACpB,IAAIsM,EAAgB,GAEpBC,OAAOC,KAAKxM,CAAgB,EAAE3L,QAAQ,SAAAkB,GAC9ByK,EAAiBzK,IAAQyK,EAAiBzK,GAAK+K,cAC/CgM,EAAcvvB,KAAKijB,EAAiBzK,GAAK+K,YAAY,CAE7D,CAAC,EAED1pB,WAAWyB,SAASC,iBAAiBpB,KAAK2B,IAAIC,KAAK,6BAA6B,EAAE,GAAI9C,EAAAwC,UAAUi0B,sBAAuB,CACnHC,SAAUJ,C,CACb,EAE0B,EAAvBA,EAActyB,QACd9C,KAAK2B,IAAIC,KAAK,6CAA6C,EAAEgM,aAAa,CACtEC,SAAU,SACVgc,QAAS,2CAA6C7pB,KAAK2B,IAAIC,KAAK,qCAAqC,EAAEgR,KAAI,EAAK,SACpHmX,UAAW,C,CACd,EAAElnB,KAAK,cAAc,CAE9B,EAEA8sB,EAAA9vB,UAAAuhB,eAAA,WACI,OAAO9hB,EAAAO,UAAMuhB,eAAcjJ,KAAAnY,IAAA,CAC/B,EAEU2vB,EAAA9vB,UAAAooB,gBAAV,WACI3oB,EAAAO,UAAMooB,gBAAe9P,KAAAnY,IAAA,EAErBA,KAAKwG,MAAMsZ,UAAU9f,KAAKe,QAAQ0B,OAAOC,YAAYsb,IAAI,CAAEyX,SAAU,CAAA,CAAI,CAAE,EAEtEz1B,KAAK01B,gBACN11B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOQ,IAAK,WAAY,CAAA,CAAI,EAC3DjD,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAOQ,GAAG,EAI5CjD,KAAK21B,OAAS,CAAA,GAHd31B,KAAK21B,OAAS,CAAA,EACd31B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOQ,IAAK,eAAgBjD,KAAKwG,MAAMovB,YAAY51B,KAAKe,QAAQ0B,OAAOQ,IAAK,aAAa,CAAC,IAMlIjD,KAAK61B,qBACL71B,KAAK61B,oBAAoB5N,gBAAe,CAEhD,EAEA0H,EAAA9vB,UAAA8hB,WAAA,WAEI3hB,KAAK2B,IAAIC,KAAK,6BAA6B,EAAE2c,MAAK,EAElDve,KAAKwG,MAAMsZ,UAAU9f,KAAKe,QAAQ0B,OAAOC,YAAYsb,IAAI,CAAEyX,SAAU,CAAA,CAAK,CAAE,EAEvEz1B,KAAK01B,gBACN11B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOQ,IAAK,WAAY,CAAA,CAAK,EAC5DjD,KAAK21B,SACN31B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOQ,IAAK,eAAgB,EAAE,EAG1E3D,EAAAO,UAAM8hB,WAAUxJ,KAAAnY,IAAA,EACZA,KAAK61B,qBACL71B,KAAK61B,oBAAoBlU,WAAU,CAE3C,EAEAgO,EAAA9vB,UAAAgE,SAAA,WACI,IAAIiyB,EAAa91B,KAAKwG,MAAM8nB,cAAc,CAAA,CAAI,EAE9C,MAAIwH,CAAAA,EAAAA,IAEA,OAAOA,EAAkC,sBACzC,OAAOA,EAAwC,4BAC/C,OAAOA,EAAwC,4BAC/C,OAAOA,EAAqC,yBAEP,EAAjCT,OAAOC,KAAKQ,CAAU,EAAEhzB,QAMpC,EAIA6sB,EAAA9vB,UAAAk2B,uBAAA,WAAA,IAAAh2B,EAAAC,KACIA,KAAKg2B,qBAAuB,CAAA,EACxBh2B,KAAKe,QAAQ0B,OAAOQ,KAAOjD,KAAKe,QAAQ0B,OAAOwzB,mBAAqBj2B,KAAKe,QAAQ8yB,IAAI5wB,KACrFoyB,OAAOC,KAAKt1B,KAAKe,QAAQ0B,OAAOwzB,iBAAiB,EAAE9Y,QAAQ,SAACkB,GACxDte,EAAKyG,MAAM0vB,cAAcn2B,EAAKgB,QAAQ0B,OAAOwzB,kBAAkB5X,GAAM,WACL,MAAxDte,EAAKyG,MAAM6oB,SAAStvB,EAAKgB,QAAQ0B,OAAOC,UAAU,GAClD3C,EAAKo2B,mBAAkB,CAE/B,CAAC,CACL,CAAC,CAET,EAEAxG,EAAA9vB,UAAAmD,sBAAA,WAEIhD,KAAKwG,MAAMC,IAAG,EAAGhE,OAAOmsB,KAAK,SAAAxa,GACzBA,EAAM4J,IAAI,CAAEyX,SAAU,CAAA,CAAI,CAAE,CAChC,CAAC,EACDz1B,KAAK01B,cAAgB,CAAA,EAGrB,IAAIU,EAAsBp2B,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAO2zB,mBAAmB,EACjFC,EAA0Br2B,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAO4zB,uBAAuB,EACzFC,EAA2Bt2B,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAO6zB,wBAAwB,EAC3FC,EAA+Bv2B,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAO8zB,4BAA4B,EAOvG,OALAv2B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAO2zB,oBAAqBE,CAAwB,EACrFt2B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAO4zB,wBAAyBE,CAA4B,EAC7Fv2B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAO6zB,yBAA0BF,CAAmB,EACrFp2B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAO8zB,6BAA8BF,CAAuB,EAErFr2B,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAO+zB,gBAAgB,GAC5D,IAAK,IACDx2B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAO+zB,iBAAkB,GAAG,EAC7D,MACJ,IAAK,IACDx2B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAO+zB,iBAAkB,GAAG,EAC7D,MACJ,QACIx2B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAO+zB,iBAAkB,WAAY,CAAA,CAAK,C,CAItF,GAAIx2B,KAAKe,QAAQ0B,OAAOg0B,UACpB,OAAQz2B,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAOg0B,SAAS,GACrD,IAAK,IACDz2B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAOg0B,UAAW,GAAG,EACtD,MACJ,IAAK,IACDz2B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAOg0B,UAAW,GAAG,C,CAMlEz2B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOC,WAAY,WAAY,CAAA,CAAK,EAEpE1C,KAAKe,QAAQ0B,OAAOi0B,WACpB12B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOi0B,SAAU,WAAY,CAAA,CAAK,EACtE12B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOk0B,aAAc,WAAY,CAAA,CAAK,GAG9E32B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAOm0B,gBAAiB,GAAG,EAC5D52B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOm0B,gBAAiB,WAAY,CAAA,CAAK,EAE7E52B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOo0B,cAAe,WAAY,CAAA,CAAK,EAC3E72B,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOq0B,kBAAmB,WAAY,CAAA,CAAK,EAC/E92B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAOo0B,cAAe,EAAE,EACzD72B,KAAKwG,MAAMhE,SAASxC,KAAKe,QAAQ0B,OAAOq0B,kBAAmB,EAAE,EAG7D92B,KAAKie,cAAcje,KAAKe,QAAQ0B,OAAO2zB,qBAAqBz0B,IAAI4lB,QAAQ,IAAI,EAAE+I,SAAS,cAAc,EACrGtwB,KAAKie,cAAcje,KAAKe,QAAQ0B,OAAO4zB,yBAAyB10B,IAAI4lB,QAAQ,IAAI,EAAE+I,SAAS,cAAc,EACzGtwB,KAAKie,cAAcje,KAAKe,QAAQ0B,OAAO6zB,0BAA0B30B,IAAI4lB,QAAQ,IAAI,EAAE+I,SAAS,cAAc,EAC1GtwB,KAAKie,cAAcje,KAAKe,QAAQ0B,OAAO8zB,8BAA8B50B,IAAI4lB,QAAQ,IAAI,EAAE+I,SAAS,cAAc,EAC9GtwB,KAAKie,cAAcje,KAAKe,QAAQ0B,OAAO+zB,kBAAkB70B,IAAI4lB,QAAQ,IAAI,EAAE+I,SAAS,cAAc,EAC9FtwB,KAAKe,QAAQ0B,OAAOg0B,WAAaz2B,KAAKwG,MAAM6oB,SAASrvB,KAAKe,QAAQ0B,OAAOg0B,SAAS,GAClFz2B,KAAKie,cAAcje,KAAKe,QAAQ0B,OAAOg0B,WAAW90B,IAAI4lB,QAAQ,IAAI,EAAE+I,SAAS,cAAc,CAEnG,EAEAX,EAAA9vB,UAAAkD,qBAAA,WAAA,IAAAhD,EAAAC,KACQA,KAAKe,QAAQ0B,OAAOwzB,mBACpBZ,OAAOC,KAAKt1B,KAAKe,QAAQ0B,OAAOwzB,iBAAiB,EAAE9Y,QAAQ,SAAAkB,GAAO,OAAAte,EAAKyG,MAAMouB,YAAY70B,EAAKgB,QAAQ0B,OAAOwzB,kBAAkB5X,GAAM,WAAY,CAAA,CAAI,CAAnF,CAAoF,EAGtJre,KAAKe,QAAQ0B,OAAOQ,KACpBjD,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOQ,IAAK,WAAY,CAAA,CAAI,EAGpEjD,KAAK01B,cAAgB,CAAA,EAEjB11B,KAAKe,QAAQ0B,OAAOC,YACpB1C,KAAKwG,MAAMouB,YAAY50B,KAAKe,QAAQ0B,OAAOC,WAAY,WAAY,CAAA,CAAI,EAG3E1C,KAAK2B,IAAIC,KAAK,8BAA8B,EAAE0uB,SAAS,WAAW,CACtE,EAEAX,EAAA9vB,UAAAs2B,mBAAA,WAAA,IAAAp2B,EAAAC,KACSA,KAAKg2B,uBACNh2B,KAAKg2B,qBAAuB,CAAA,EAC5B5L,WAAW,WACPrqB,EAAKmD,YAAW,EAChBnD,EAAKi2B,qBAAuB,CAAA,CAChC,EAAG,GAAG,EAEd,EAIArG,EAAA9vB,UAAAk3B,gBAAA,SAAgBC,GAAhB,IASQC,EATRl3B,EAAAC,KACSA,KAAKwG,MAAMC,IAAG,EAAGqpB,mBACjB9vB,KAAKe,QAAQiE,UACbhF,KAAKe,QAAQ0B,OAAOQ,KACpBjD,KAAKe,QAAQ0B,OAAOwzB,mBACpBj2B,KAAKe,QAAQ8yB,IAAI5wB,MAIlBg0B,EAAU,GACd5B,OAAOC,KAAKt1B,KAAKe,QAAQ0B,OAAOwzB,iBAAiB,EAAE9Y,QAAQ,SAAAkB,GACvD4Y,EAAQ5Y,GAAOte,EAAKyG,MAAM6oB,SAAStvB,EAAKgB,QAAQ0B,OAAOwzB,kBAAkB5X,EAAI,CACjF,CAAC,EAEG2Y,GACA3B,OAAOC,KAAK0B,CAAe,EAAE7Z,QAAQ,SAAAkB,GACjC4Y,EAAQ5Y,GAAO2Y,EAAgB3Y,EACnC,CAAC,EAGDre,KAAKk3B,YACLl3B,KAAKk3B,WAAWzuB,MAAK,EAEzBzI,KAAKk3B,WAAax3B,WAAW2D,KAAKgZ,QAAQrc,KAAKe,QAAQ8yB,IAAI5wB,IAAKg0B,EAAS,SAACh0B,GAElE,CAAClD,EAAKyG,MAAM6oB,SAAStvB,EAAKgB,QAAQ0B,OAAOQ,GAAG,GAC5ClD,EAAKyG,MAAM6oB,SAAStvB,EAAKgB,QAAQ0B,OAAOwzB,kBAAgC,YAAC,GACzEhzB,EAAIk0B,UAAYl0B,EAAImmB,aAAagO,WAAW,yBAAyB,GACrE13B,WAAWyB,SAASk2B,cAAcC,OAAOv3B,EAAKw3B,mBAAmBt0B,EAAImmB,YAAY,EAAG,OAAQ,CAACoO,UAAW,CAAA,CAAI,CAAC,EAC7Gz3B,EAAKyG,MAAMouB,YAAY70B,EAAKgB,QAAQ0B,OAAOQ,IAAK,cAAe,EAAE,GAEjElD,EAAKyG,MAAMouB,YAAY70B,EAAKgB,QAAQ0B,OAAOQ,IAAK,cAAeA,EAAIgF,KAAK,EAEtElI,EAAKke,cAAcle,EAAKgB,QAAQ0B,OAAOQ,KAAMw0B,MAAK,CAC5D,EAAG,WACC/3B,WAAWmyB,WAAW,+CAA+C,CACzE,CAAC,EACL,EAEAlC,EAAA9vB,UAAA63B,QAAA,SAAQ5B,GAAR,IAAA/1B,EAAAC,KACQ23B,EAAe7B,EAAW5F,OAAM,EAAQ0H,MAAM,SAAArrB,GAAK,OAAAA,EAAEsrB,MAAQ93B,EAAKgB,QAAQ0B,OAAOQ,GAA9B,CAAiC,EACnF00B,EAAa1vB,QACd0vB,EAAa1vB,MAAQjI,KAAKwG,MAAMovB,YAAY51B,KAAKe,QAAQ0B,OAAOQ,IAAK,aAAa,EAE1F,EAEA0sB,EAAA9vB,UAAA2E,cAAA,WACQxE,KAAKu0B,mBAAmBv0B,KAAKu0B,kBAAkB9rB,MAAK,EACpDzI,KAAK4zB,eAAe5zB,KAAK4zB,cAAcnrB,MAAK,EAC5CzI,KAAK83B,eAAe93B,KAAK83B,cAAcrvB,MAAK,EAC5CzI,KAAK+3B,cAAc/3B,KAAK+3B,aAAatvB,MAAK,EAC1CzI,KAAKk3B,YAAYl3B,KAAKk3B,WAAWzuB,MAAK,CAC9C,EAGQknB,EAAA9vB,UAAA03B,mBAAR,SAA2BzI,GACvB,OAAIA,EAAQsI,WAAW,yBAAyB,EACrCt4B,EAAA8B,QAAQo3B,uCAEZlJ,CACX,EAhkBJ,IAAAxvB,EAAAqwB,EAmkBAA,EAjjBI,SAAAA,EAAYnpB,EAA0BxH,EAA8Bi5B,EAAsBl3B,GAA1F,IAAAhB,EAAAC,K,OACIe,EAAUrB,WAAWqc,cAAcC,MAAMjb,EAAS,CAC9CiE,SAAU,CAAA,EACV1E,SAAU,CAAA,C,CACb,G,EAEDhB,EAAA6Y,KAAAnY,KAAMwG,EAAOxH,EAAiBi5B,EAAcl3B,CAAO,GAACf,MAE/C8H,OAAStB,EAAM1E,WAAWqL,UAAS,EAExCpN,EAAK4B,IAAIiM,aAAa,CAClBC,SAAU,OACVpD,OAAQ,qCACRof,QAAS,SAAAtd,GAAK,OAAA7M,WAAWyB,SAAS6pB,eAAelsB,EAAAwC,UAAU42B,wBAAyB,CAChFv3B,MAAO8R,EAAElG,EAAEuf,MAAM,EAAE7qB,OAAM,EAAGk3B,KAAI,EAChCA,KAAM1lB,EAAElG,EAAEuf,MAAM,EAAEsM,KAAK,WAAW,C,CAErC,CAJa,EAKdrO,UAAW,EACXjc,KAAM0O,C,CACT,EAEGzc,EAAKgB,QAAQiE,UACbjF,EAAKke,cAAcle,EAAKgB,QAAQ0B,OAAOC,YAAY3B,QAAQ8F,aAAe,CAAA,EAC1E9G,EAAKke,cAAcle,EAAKgB,QAAQ0B,OAAOC,YAAYoa,OAAM,EAEzD/c,EAAKg2B,uBAAsB,EAE3Bh2B,EAAKyG,MAAMwX,IAAI,CAAE8R,kBAAmBjrB,KAAAA,CAAS,CAAE,EAC/C9E,EAAKyG,MAAMG,KAAK,2BAA4B,SAAAH,GAAS,OAAAzG,EAAKizB,oBAA0BxsB,EAAMC,IAAG,EAAIqpB,iBAAiB,CAA7D,CAA8D,EACnH/vB,EAAK8yB,kBAAiB,EACtBc,OAAOvJ,WAAW,WAAM,OAAArqB,EAAK8yB,kBAAiB,CAAtB,EAA0B,GAAK,EAEvD9yB,EAAK81B,oBAAsB,IAAIwC,EAAoBt4B,EAAMA,EAAK4B,IAAIC,KAAK,4BAA4B,EAAE,EAAE,EAGvG,IAAI02B,EAAiBv4B,EAAKyG,MAAOzG,EAAK4B,IAAIC,KAAK,wBAAwB,EAAE,EAAE,EAE3E7B,EAAK6vB,0BAAyB,EAC9B7vB,EAAKyG,MAAMG,KAAK,wEAAyE,WAAM,OAAA5G,EAAK6vB,0BAAyB,CAA9B,CAAgC,EAC/H7vB,EAAKyG,MAAM1E,WAAW0E,MAAMG,KAAK,2BAA4B,WAAM,OAAA5G,EAAK6vB,0BAAyB,CAA9B,CAAgC,EACnG7vB,EAAKyG,MAAM1E,WAAWya,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAK6vB,0BAAyB,CAA9B,CAAgC,IAGxF,IAAI2I,EAAgBx4B,EAAMA,EAAK4B,IAAIC,KAAK,4BAA4B,EAAE,EAAE,EAGxE,IAAI42B,EAAwBz4B,EAAMA,EAAK4B,IAAIC,KAAK,kCAAkC,EAAE,EAAE,EAEtF7B,EAAKyG,MAAM1E,WAAWuK,aAAY,EAAGC,UAAU,WAAM,OAAAvM,EAAKiwB,uBAAsB,CAA3B,CAA6B,GAGtFtwB,WAAWyB,SAASs3B,WAAWC,eAAe34B,EAAKsB,GAAI,KAAM,SAAS,EACtE3B,WAAWyB,SAASgnB,sBAAsBpoB,EAAKsB,EAAE,E,CACrD,CAkgBA,SAAA0D,EAAYyB,EAA6BxH,EAA8B+B,GAAvE,IAAAhB,EACIT,EAAA6Y,KAAAnY,KAAMwG,EAAOxH,EAAiBF,EAAAwC,UAAUq3B,gBAAiBj5B,WAAWqc,cAAcC,MAA2Bjb,EAAS,CAClHiE,SAAU,CAAA,EACVvC,OAAQ,CACJwjB,GAAI,gBACJvjB,WAAY,wBACZO,IAAK,yCACLgzB,kBAAmB,CACf2C,oBAAqB,iCACrBC,wBAAyB,qCACzBC,yBAA0B,sCAC1BC,6BAA8B,0CAC9BC,iBAAkB,8BAClBC,aAAc,6BACdC,UAAW,gCACXC,WAAY,iCACZC,YAAa,6BACbC,MAAO,mBACPC,SAAU,2BACVC,SAAU,sBACVC,KAAM,0BACNC,oBAAqB,oCACrBC,kBAAmB,kCACnBC,gBAAiB,+B,EAErBpJ,gBAAiB,wBACjBG,oBAAqB,4BACrBgG,SAAU,sBACVC,aAAc,0BACdP,oBAAqB,iCACrBC,wBAAyB,qCACzBC,yBAA0B,sCAC1BC,6BAA8B,0CAC9BM,cAAe,2BACfC,kBAAmB,+BACnBN,iBAAkB,8BAClBC,UAAW,uBACXG,gBAAiB,4B,EAErB/C,IAAK,CACDW,WAAY,wBACZnwB,OAAQ,kBACR4T,MAAO,iBACPwb,OAAQ,cACRxwB,IAAK,0B,EAET22B,iBAAkB,oBAClBC,eAAgB,CAAA,EAChBC,iBAAkB,CAAA,EAClBC,6BAA8B,CAAA,C,CACjC,CAAC,GAAC/5B,KAGGgF,EAAWjF,EAAKgB,QAAQiE,UAAY,CAACjF,EAAKgB,QAAQL,e,OACxDX,EAAKi6B,sBAAwB,IAAI/3B,EAASga,sBAAsBlc,EAAKyG,MAAM1E,WAAY/B,EAAM,CACzFiF,SAAUA,EAEV2kB,sBAAuB3kB,EAAW,WAAM,OAAAjF,EAAKmD,YAAW,CAAhB,EAAqB2B,KAAAA,C,CAChE,E,CACL,CAyEA,SAAAQ,EAAYmB,EAA6BxH,EAA8B+B,GAAvE,IAAAhB,EACIT,EAAA6Y,KAAAnY,KAAMwG,EAAOxH,EAAiBF,EAAAwC,UAAU24B,gBAAiBv6B,WAAWqc,cAAcC,MAA2Bjb,EAAS,CAClHiE,SAAU,CAAA,EACV40B,iBAAkB,oBAElBn3B,OAAQ,CACJwjB,GAAI,sBACJvjB,WAAY,8BACZO,IAAK,8BACLgzB,kBAAmB,CACf2C,oBAAqB,uCACrBC,wBAAyB,2CACzBC,yBAA0B,4CAC1BC,6BAA8B,gDAC9BC,iBAAkB,oCAClBC,aAAc,gCACdC,UAAW,mCACXC,WAAY,oCACZe,aAAc,gCACdT,oBAAqB,uCACrBC,kBAAmB,qCACnBC,gBAAiB,kC,EAErBpJ,gBAAiB,8BACjBG,oBAAqB,kCACrB0F,oBAAqB,uCACrBC,wBAAyB,2CACzBC,yBAA0B,4CAC1BC,6BAA8B,gDAC9BM,cAAe,iCACfC,kBAAmB,qCACnBN,iBAAkB,oCAClBI,gBAAiB,kC,EAErB/C,IAAK,CACDW,WAAY,wBACZf,OAAQ,cACRpvB,OAAQ,kBACR4T,MAAO,iBACPhV,IAAK,0B,EAET42B,eAAgB,CAAA,EAChBC,iBAAkB,CAAA,C,CACrB,CAAC,GAAC95B,KAKCm6B,GAHJp6B,EAAKq6B,0BAAyB,EAGL,IAAIn4B,EAASo4B,sBAAsBt6B,EAAKyG,MAAM1E,WAAWw4B,uBAAuB,GACrGC,EAAuB,IAAIt4B,EAASo4B,sBAAsBt6B,EAAKyG,MAAM1E,WAAW04B,iBAAiB,EACjGC,EAAwB,IAAIx4B,EAASo4B,sBAAsBt6B,EAAKyG,MAAM1E,WAAW44B,kBAAkB,EAEnGC,EAAe56B,EAAKgB,QAAQiE,UAAY,CAACjF,EAAKgB,QAAQL,eAAiB,CAAC,UAAYmE,KAAAA,E,OAExF9E,EAAK66B,kBAAoB,IAAI34B,EAAS44B,mBAAmBV,EAAoBp6B,EAAK4B,IAAIC,KAAK,kCAAkC,EAAE,GAAI,CAC/HqO,WAAY,CAAA,EACZjL,SAAUjF,EAAKgB,QAAQiE,UAAY,CAACjF,EAAKgB,QAAQL,eACjD0lB,QAASuU,EACT1uB,iBAAkBnN,EAAA8B,QAAQk6B,6B,CAC7B,EACD/6B,EAAKg7B,oBAAsB,IAAI94B,EAAS44B,mBAAmBN,EAAsBx6B,EAAK4B,IAAIC,KAAK,4BAA4B,EAAE,GAAI,CAC7HqO,WAAY,CAAA,EACZjL,SAAUjF,EAAKgB,QAAQiE,UAAY,CAACjF,EAAKgB,QAAQL,eACjD0lB,QAASuU,EACT1uB,iBAAkBnN,EAAA8B,QAAQo6B,gC,CAC7B,EACDj7B,EAAKk7B,qBAAuB,IAAIh5B,EAAS44B,mBAAmBJ,EAAuB16B,EAAK4B,IAAIC,KAAK,6BAA6B,EAAE,GAAI,CAChIqO,WAAY,CAAA,EACZjL,SAAUjF,EAAKgB,QAAQiE,UAAY,CAACjF,EAAKgB,QAAQL,eACjD0lB,QAASuU,EACT1uB,iBAAkBnN,EAAA8B,QAAQs6B,2B,CAC7B,EAGGn7B,EAAKgB,QAAQiE,WACbjF,EAAK66B,kBAAkBrxB,KAAKue,QAAQlmB,KAAK,6BAA6B,EAAEw2B,KAAK,WAAY,GAAG,EAC5Fr4B,EAAKg7B,oBAAoBxxB,KAAKue,QAAQlmB,KAAK,6BAA6B,EAAEw2B,KAAK,WAAY,GAAG,EAC9Fr4B,EAAKk7B,qBAAqB1xB,KAAKue,QAAQlmB,KAAK,6BAA6B,EAAEw2B,KAAK,WAAY,GAAG,G,CAEvG,CAoIA,SAAA9wB,EAAYd,EAAuBxH,EAA8B+B,GAAjEhB,EACIT,EAAA6Y,KAAAnY,KAAMwG,EAAOxH,EAAiBF,EAAAwC,UAAU65B,UAAWz7B,WAAWqc,cAAcC,MAAMjb,EAAS,CACvFiE,SAAU,CAAA,EACVvC,OAAQ,CACJwjB,GAAI,gBACJvjB,WAAY,wBACZ6tB,gBAAiB,wBACjBG,oBAAqB,2B,EAEzBmJ,eAAgB,CAAA,EAChBC,iBAAkB,CAAA,C,CACrB,CAAC,GAAC95B,K,OAIH,IAAIiC,EAASga,sBAAsBlc,EAAKyG,MAAM1E,WAAY/B,CAAI,E,CAClE,CAj7BkBkC,EAAA0tB,iBAAgBA,EAqkBG/vB,UAAAmF,EAAzCzF,EAAyCqwB,CAAA,EAkErC5qB,EAAAlF,UAAAqD,YAAA,WACI,IAAMk4B,EAAQ,GACdA,EAAsC,+BAAIp7B,KAAKg6B,sBAAsBvQ,kBAAiB,EAAG5G,+BACzFnf,QAAQC,IAAIy3B,EAAsC,8BAAC,EACnD97B,EAAAO,UAAMk3B,gBAAe5e,KAAAnY,KAACo7B,CAAK,CAC/B,EAEAr2B,EAAAlF,UAAAuhB,eAAA,WACI,IAAIia,EAAqB/7B,EAAAO,UAAMuhB,eAAcjJ,KAAAnY,IAAA,EACzCs7B,EAAqBt7B,KAAKg6B,sBAAsB5Y,eAAc,EAClE,OAAOia,GAAsBC,CACjC,EAEAv2B,EAAAlF,UAAA6pB,sBAAA,SAAsBZ,GAClB,IAAI4L,EAAQp1B,EAAAO,UAAM6pB,sBAAqBvR,KAAAnY,KAAC8oB,CAAgB,EAExD,OADA9oB,KAAKg6B,sBAAsBtQ,sBAAsBZ,CAAgB,EAC1D4L,CACX,EAEA3vB,EAAAlF,UAAAooB,gBAAA,WACI3oB,EAAAO,UAAMooB,gBAAe9P,KAAAnY,IAAA,EACrBA,KAAKg6B,sBAAsB/R,gBAAe,CAC9C,EAEAljB,EAAAlF,UAAA8hB,WAAA,WACIriB,EAAAO,UAAM8hB,WAAUxJ,KAAAnY,IAAA,EAChBA,KAAKg6B,sBAAsBrY,WAAU,CACzC,EAEQ5c,EAAAlF,UAAA07B,QAAR,SAAgB14B,GACZ,IAAK,IAAI+V,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GACV,sCAAhB/V,EAAK+V,GAAGif,KAAiE,UAAlBh1B,EAAK+V,GAAG3Q,QAC/DpF,EAAK+V,GAAG3Q,MAAQ,QAG5B,EAEAlD,EAAAlF,UAAAi0B,oBAAA,WACI,IAAIgC,EAAa91B,KAAKwG,MAAM4nB,aAAY,EAKpCoN,GAHJx7B,KAAK03B,QAAQ5B,CAAU,EACvB91B,KAAKu7B,QAAQzF,CAAU,EAEN91B,KAAKg6B,sBAAsBvQ,kBAAiB,GAE7D,MAAO,CACH8E,YAAauH,EACbhe,eAAgB9X,KAAK8H,OAAOgQ,eAC5B2jB,2BAA4BD,EAAW7Y,2BACvC+Y,oCAAqCF,EAAW5Y,oCAChD+Y,+BAAgCH,EAAW3Y,+BAC3C+Y,wCAAyCJ,EAAW1Y,wCACpD+Y,sBAAuB,GACvBC,+BAAgC,GAChCC,QAASr8B,WAAWgT,eAAeC,QACnCqpB,aAAc,I,CAEtB,EAEAj3B,EAAAlF,UAAAo8B,QAAA,WACIn9B,EAAAo9B,UAAUC,qBAAqBn8B,KAAKwG,KAAK,CAC7C,EA/HSvE,EAAA8C,oBAgIbA,EAEyCnF,UAAAyF,EAAzC/F,EAAyCqwB,CAAA,EAwFrCtqB,EAAAxF,UAAAu6B,0BAAA,WAAA,IAAAr6B,EAAAC,KACIA,KAAKwG,MAAM0vB,cAAc,gCAAiC,SAAAkG,GACtDr8B,EAAKke,cAAsC,uBAAEoe,UAAS,EACtDt8B,EAAKke,cAA8C,+BAAEoe,UAAS,GAC1DD,GAAWr8B,EAAKyG,MAAM6oB,SAAS,wBAAwB,GAAKtvB,EAAKyG,MAAM6oB,SAAS,gCAAgC,IAChHtvB,EAAKyG,MAAMouB,YAAY,gCAAiC,QAAS91B,EAAA8B,QAAQ07B,6BAA6B,CAE9G,CAAC,EAEDt8B,KAAKwG,MAAM0vB,cAAc,yBAA0B,SAAApP,GAC/C/mB,EAAKke,cAA6C,8BAAEoe,UAAS,EACzDvV,GAAS/mB,EAAKyG,MAAM6oB,SAAS,+BAA+B,GAC5DtvB,EAAKyG,MAAMouB,YAAY,yBAA0B,QAAS91B,EAAA8B,QAAQ07B,6BAA6B,CAEvG,CAAC,EAEDt8B,KAAKwG,MAAM0vB,cAAc,iCAAkC,SAAApP,GACvD/mB,EAAKke,cAA6C,8BAAEoe,UAAS,EACzDvV,GAAS/mB,EAAKyG,MAAM6oB,SAAS,+BAA+B,GAC5DtvB,EAAKyG,MAAMouB,YAAY,iCAAkC,QAAS91B,EAAA8B,QAAQ07B,6BAA6B,CAE/G,CAAC,CACL,EAEAj3B,EAAAxF,UAAAqD,YAAA,WACI5D,EAAAO,UAAMk3B,gBAAe5e,KAAAnY,IAAA,CACzB,EAEAqF,EAAAxF,UAAAuhB,eAAA,WACI,IAAIia,EAAqB/7B,EAAAO,UAAMuhB,eAAcjJ,KAAAnY,IAAA,EACzCu8B,EAA0Bv8B,KAAK46B,kBAAkB5S,cAAa,EAC9DwU,EAA6Bx8B,KAAK+6B,oBAAoB/S,cAAa,EACnEyU,EAA6Bz8B,KAAKi7B,qBAAqBjT,cAAa,EACxE,OAAOqT,GAAsBkB,GAA2BC,GAA8BC,CAC1F,EAEAp3B,EAAAxF,UAAA6pB,sBAAA,SAAsBZ,GAClB,IAMSzK,EA0BA1K,EAhCL+gB,EAAQp1B,EAAAO,UAAM6pB,sBAAqBvR,KAAAnY,KAAC8oB,CAAgB,EAEpD4T,EAAkB,GAClBC,EAAoB,GACpBC,EAAqB,GAEzB,IAASve,KAAOyK,EACRA,EAAiBG,eAAe5K,CAAG,IACT,wCAAtBA,EAAI6K,OAAO,EAAG,EAAE,IAChBwT,EAAgBre,EAAI6K,OAAO,GAAI,CAAC,GAAKlpB,KAAKmpB,oBAAoBuT,EAAgBre,EAAI6K,OAAO,GAAI,CAAC,GAAIJ,EAAiBzK,GAAK+K,YAAY,GAE9G,wCAAtB/K,EAAI6K,OAAO,EAAG,EAAE,IAChByT,EAAkBte,EAAI6K,OAAO,GAAI,CAAC,GAAKlpB,KAAKmpB,oBAAoBwT,EAAkBte,EAAI6K,OAAO,GAAI,CAAC,GAAIJ,EAAiBzK,GAAK+K,YAAY,GAElH,mCAAtB/K,EAAI6K,OAAO,EAAG,EAAE,KAChB0T,EAAmBve,EAAI6K,OAAO,GAAI,CAAC,GAAKlpB,KAAKmpB,oBAAoByT,EAAmBve,EAAI6K,OAAO,GAAI,CAAC,GAAIJ,EAAiBzK,GAAK+K,YAAY,GAKtJ,IAASzV,KAAS+oB,EACVA,EAAgBzT,eAAetV,CAAK,GACpC3T,KAAK46B,kBAAkBvR,gBAAgBC,SAAS3V,CAAK,EAAG+oB,EAAgB/oB,EAAM,EAItF,IAASA,KAASgpB,EACVA,EAAkB1T,eAAetV,CAAK,GACtC3T,KAAK+6B,oBAAoB1R,gBAAgBC,SAAS3V,CAAK,EAAGgpB,EAAkBhpB,EAAM,EAI1F,IAASA,KAASipB,EACVA,EAAmB3T,eAAetV,CAAK,GACvC3T,KAAKi7B,qBAAqB5R,gBAAgBC,SAAS3V,CAAK,EAAGipB,EAAmBjpB,EAAM,EAI5F,OAAO+gB,CACX,EAEQrvB,EAAAxF,UAAAspB,oBAAR,SAA4BI,EAAYC,GACpC,OAAID,EACOA,EAAa,OAASC,EAE1BA,CACX,EAEAnkB,EAAAxF,UAAAooB,gBAAA,WACI3oB,EAAAO,UAAMooB,gBAAe9P,KAAAnY,IAAA,EACrBA,KAAK46B,kBAAkB3S,gBAAe,EACtCjoB,KAAK+6B,oBAAoB9S,gBAAe,EACxCjoB,KAAKi7B,qBAAqBhT,gBAAe,CAC7C,EAEA5iB,EAAAxF,UAAA8hB,WAAA,WACIriB,EAAAO,UAAM8hB,WAAUxJ,KAAAnY,IAAA,EAChBA,KAAK46B,kBAAkBjZ,WAAU,EACjC3hB,KAAK+6B,oBAAoBpZ,WAAU,EACnC3hB,KAAKi7B,qBAAqBtZ,WAAU,CACxC,EAEAtc,EAAAxF,UAAAgE,SAAA,WACI,OAAOvE,EAAAO,UAAMgE,SAAQsU,KAAAnY,IAAA,GACsC,EAAvDA,KAAK46B,kBAAkBrxB,KAAKqa,WAAW/gB,KAAI,EAAGC,QACW,EAAzD9C,KAAK+6B,oBAAoBxxB,KAAKqa,WAAW/gB,KAAI,EAAGC,QACU,EAA1D9C,KAAKi7B,qBAAqB1xB,KAAKqa,WAAW/gB,KAAI,EAAGC,MACzD,EAEAuC,EAAAxF,UAAAi0B,oBAAA,WACI,IAAIgC,EAAa91B,KAAKwG,MAAM4nB,aAAY,EAIxC,OAFApuB,KAAK03B,QAAQ5B,CAAU,EAEhB,CACHvH,YAAauH,EACbhe,eAAgB9X,KAAK8H,OAAOgQ,eAC5B+kB,mBAAoB78B,KAAK46B,kBAAkBxM,aAAY,EACvD0O,mBAAoB98B,KAAK+6B,oBAAoB3M,aAAY,EACzD2O,cAAe/8B,KAAKi7B,qBAAqB7M,aAAY,EACrD2N,QAASr8B,WAAWgT,eAAeC,QACnCqpB,aAAc,I,CAEtB,EAEA32B,EAAAxF,UAAAo8B,QAAA,WACIn9B,EAAAo9B,UAAUc,qBAAqBh9B,KAAKwG,KAAK,CAC7C,EApNSvE,EAAAoD,oBAqNbA,EAEmCzF,UAAA0H,EAAnChI,EAAmCqwB,CAAA,EAqB/BroB,EAAAzH,UAAAqD,YAAA,WACI5D,EAAAO,UAAMk3B,gBAAe5e,KAAAnY,IAAA,CACzB,EAEAsH,EAAAzH,UAAAi0B,oBAAA,WACI,KAAM,+BACV,EAEAxsB,EAAAzH,UAAAo8B,QAAA,WACI,KAAM,qCACV,EA/BSh6B,EAAAqF,cAgCbA,EAEAhI,EAA8CI,WAAWuC,SAASoG,MAAM0lB,eAA1BnuB,UAAAwI,EAAA9I,CAAA,EAEhC8I,EAAAvI,UAAAmuB,cAAV,SAAwBrS,EAAqBC,GACrCyC,EAAM1C,EAAc,IAAMC,EAC9B,OAAO9c,EAAA8B,QAAQyd,IAAQA,CAC3B,EALJ,IAAA/e,EAAA8I,EAMAA,EANA,SAAAA,I,8CAMA,CANanG,EAAAmG,wBAMbA,EAgBIkwB,EAAAz4B,UAAAid,OAAA,WACI,IAAIiS,EAAkB/uB,KAAKsG,cAAcG,IAAG,EAAGsoB,gBAC3CE,EAAiBjvB,KAAKsG,cAAcG,IAAG,EAAGwoB,eAE9CvvB,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAU27B,iBAAkB,CACtEC,kBAAmBnO,EAAgBN,gBAAgB3rB,OACnDq6B,aAAclO,EAAexsB,OAAOK,M,CACvC,CACL,EAtBJ,IAAAw1B,EAuBAA,EAlBI,SAAAA,EAAY8E,EAA8Bp+B,GAA1C,IAAAe,EAAAC,KACIA,KAAKsG,cAAgB82B,EACrBp9B,KAAKqB,GAAKrC,EACVgB,KAAK2B,IAAM8Q,EAAEzT,CAAe,EAE5BgB,KAAK8c,OAAM,EACX9c,KAAKsG,cAAcK,KAAK,+CAAgD,WAAM,OAAA5G,EAAK+c,OAAM,CAAX,CAAa,CAC/F,CAZS7a,EAAAq2B,iBAAgBA,EAsEzBD,EAAAx4B,UAAAooB,gBAAA,WACIxV,EAAEzS,KAAKq9B,iBAAiB,EAAEC,IAAI,MAAM,EACpC7qB,EAAEzS,KAAKq9B,iBAAiB,EAAEC,IAAI,WAAW,EACzC7qB,EAAEzS,KAAKq9B,iBAAiB,EAAEC,IAAI,WAAW,EACzC7qB,EAAEzS,KAAKq9B,iBAAiB,EAAEC,IAAI,UAAU,EACxCt9B,KAAK2B,IAAIC,KAAK,wBAAwB,EAAE0c,KAAK,CAAC,CAClD,EAEA+Z,EAAAx4B,UAAA8hB,WAAA,WACIlP,EAAEzS,KAAKq9B,iBAAiB,EAAE/S,GAAG,OAAQtqB,KAAKu9B,WAAW52B,KAAK3G,IAAI,CAAC,EAC/DyS,EAAEzS,KAAKq9B,iBAAiB,EAAE/S,GAAG,YAAatqB,KAAKw9B,gBAAgB72B,KAAK3G,IAAI,CAAC,EACzEyS,EAAEzS,KAAKq9B,iBAAiB,EAAE/S,GAAG,YAAatqB,KAAKy9B,gBAAgB92B,KAAK3G,IAAI,CAAC,EACzEyS,EAAEzS,KAAKq9B,iBAAiB,EAAE/S,GAAG,WAAYtqB,KAAK09B,eAAe/2B,KAAK3G,IAAI,CAAC,EACvEA,KAAK2B,IAAIC,KAAK,wBAAwB,EAAEkM,KAAK,CAAC,CAClD,EAEAuqB,EAAAx4B,UAAA69B,eAAA,SAAeC,GACXA,EAAIC,gBAAe,EACnBD,EAAIla,eAAc,EAClBka,EAAIE,cAAcC,aAAaC,WAAa,MAChD,EAEA1F,EAAAx4B,UAAA49B,gBAAA,SAAgBE,GACZ39B,KAAKg+B,WAAW,GACS,IAArBh+B,KAAKg+B,aACLvrB,EAAE,MAAM,EAAE7Q,KAAK,sBAAsB,EAAEsvB,YAAY,QAAQ,CAEnE,EAEAmH,EAAAx4B,UAAA29B,gBAAA,SAAgBG,GACZ39B,KAAKg+B,WAAW,GAChBL,EAAIE,cAAcC,aAAaC,WAAa,OAC5CtrB,EAAE,MAAM,EAAE7Q,KAAK,sBAAsB,EAAE0uB,SAAS,QAAQ,CAC5D,EAEA+H,EAAAx4B,UAAA09B,WAAA,SAAWI,GAAX,IAQYM,EARZl+B,EAAAC,KAMQ6rB,GALJ8R,EAAIC,gBAAe,EACnBD,EAAIla,eAAc,EAClBzjB,KAAKg+B,YAAc,EACnBvrB,EAAE,MAAM,EAAE7Q,KAAK,sBAAsB,EAAEsvB,YAAY,QAAQ,EAEhDyM,EAAIE,cAAcC,aAAa/R,MAAM,IAC5CF,EAAKpR,KAAKyjB,SAASl+B,KAAKm+B,aAAa,KACjCF,EAAS,IAAIG,YAEVC,OAAS,SAACC,GACTC,EAAOD,EAAQxS,OAAOiH,OACtBlwB,EAAOW,KAAKC,MAAM86B,CAAI,EAC1Bx+B,EAAKy+B,gBAAgB37B,CAAI,EACzB9C,EAAKuG,cAAc/C,cAAcV,EAAM,CAAA,CAAI,EAE3C4P,EAAE,MAAM,EAAE7Q,KAAK,sBAAsB,EAAE0uB,SAAS,OAAO,EACvDqD,OAAOvJ,WAAW,WAAM,OAAA3X,EAAE,MAAM,EAAE7Q,KAAK,sBAAsB,EAAEsvB,YAAY,OAAO,CAA1D,EAA6D,GAAG,CAC5F,EAGA+M,EAAOQ,WAAW5S,CAAI,EAE9B,EAEAwM,EAAAx4B,UAAA6+B,aAAA,WACI,IAAIC,EAAY3+B,KAAKsG,cAAcgoB,cAAa,EAE5CzE,GADJ7pB,KAAK4+B,YAAYD,CAAS,EACZn7B,KAAKq7B,UAAUF,CAAS,GAwBlCG,EAAU59B,SAAS69B,cAAc,GAAG,EACxCD,EAAQE,aAAa,OAxBR,gCAwByBC,mBAAmBpV,CAAO,CAAC,EACjEiV,EAAQE,aAAa,WAxBN,wBAwB0B,EACzCF,EAAQI,MAAMC,QAAU,OACxBj+B,SAASk+B,KAAKC,YAAYP,CAAO,EAEjCA,EAAQnyB,MAAK,EAEbzL,SAASk+B,KAAKE,YAAYR,CAAO,CACrC,EAEAzG,EAAAx4B,UAAA++B,YAAA,SAAYD,GACRtJ,OAAOC,KAAKqJ,CAAS,EAAExhB,QAAQ,SAAAkB,GACvBsgB,EAAUtgB,aAAgBjT,OAC1BuzB,EAAUtgB,GAAOzP,MAAMC,SAAS8vB,EAAUtgB,GAAM,qBAAqB,EAE7E,CAAC,CACL,EAEAga,EAAAx4B,UAAA2+B,gBAAA,SAAgBe,GAAhB,IAAAx/B,EAAAC,KACIq1B,OAAOC,KAAKiK,CAAY,EAAEpiB,QAAQ,SAAAkB,GAG0E,CAAC,IAFrG,CAAC3e,WAAWuC,SAASoG,MAAMm3B,UAAUp0B,KACrC1L,WAAWuC,SAASoG,MAAMm3B,UAAUC,SACpC//B,WAAWuC,SAASoG,MAAMm3B,UAAUE,MAAMj/B,QAAQV,EAAKuG,cAAcwZ,UAAUzB,GAAK5X,IAAG,EAAGknB,IAAI,GAC7F5tB,EAAKuG,cAAcwZ,UAAUzB,GAAK5X,IAAI,UAAU,IACjD84B,EAAalhB,GAAOzP,MAAMsM,UAAUqkB,EAAalhB,GAAM,qBAAqB,EAEpF,CAAC,CACL,EAhKJ,IAAAga,EAkKAA,EA3JI,SAAAA,EAAYsH,EAA4B3gC,GAFxCgB,KAAAm+B,cAAgB,YAIZn+B,KAAKsG,cAAgBq5B,EAASn5B,MAC9BxG,KAAKq9B,kBAAoBsC,EAASt+B,GAClCrB,KAAK2B,IAAM8Q,EAAEzT,CAAe,EAE5BU,WAAWyB,SAASC,iBAAiBpC,EAAiBF,EAAAwC,UAAU+2B,mBAAmB,EAEnFr4B,KAAK2B,IAAIC,KAAK,sBAAsB,EAAEgM,aAAa,CAC/CC,SAAU,MACVgc,QAAS/qB,EAAA8B,QAAQg/B,2BACjB7V,UAAW,EACXjc,KAAM0O,C,CACT,EAEDxc,KAAK2B,IAAIC,KAAK,wBAAwB,EAAEgM,aAAa,CACjDC,SAAU,MACVgc,QAAS/qB,EAAA8B,QAAQi/B,6BACjB9V,UAAW,EACXjc,KAAM0O,C,CACT,EAEDxc,KAAK2B,IAAIC,KAAK,gCAAgC,EAAEgM,aAAa,CACzDC,SAAU,MACVgc,QAAS/qB,EAAA8B,QAAQk/B,yBACjB/V,UAAW,EACXjc,KAAM0O,C,CACT,EAED/J,EAAEzT,CAAe,EAAE4C,KAAK,sBAAsB,EAAEm+B,MAAK,EAAGpzB,MAAM3M,KAAK0+B,aAAa/3B,KAAK3G,IAAI,CAAC,EAE1FyS,EAAEzS,KAAKq9B,iBAAiB,EAAE/S,GAAG,OAAQtqB,KAAKu9B,WAAW52B,KAAK3G,IAAI,CAAC,EAC/DyS,EAAEzS,KAAKq9B,iBAAiB,EAAE/S,GAAG,YAAatqB,KAAKw9B,gBAAgB72B,KAAK3G,IAAI,CAAC,EACzEyS,EAAEzS,KAAKq9B,iBAAiB,EAAE/S,GAAG,YAAatqB,KAAKy9B,gBAAgB92B,KAAK3G,IAAI,CAAC,EACzEyS,EAAEzS,KAAKq9B,iBAAiB,EAAE/S,GAAG,WAAYtqB,KAAK09B,eAAe/2B,KAAK3G,IAAI,CAAC,EACvEA,KAAKg+B,YAAc,CACvB,CA3CS/7B,EAAAo2B,oBAAmBA,EAqL5BG,EAAA34B,UAAAmgC,mBAAA,WACI,IA8CYC,EA9CRC,EAAalgC,KAAKoD,UAAU8rB,oBAAmB,EACnDlvB,KAAK2B,IAAI4c,MAAK,EAEV2hB,EAAW9Q,eACX1vB,WAAWyB,SAASC,iBAAiBpB,KAAKqB,GAAIvC,EAAAwC,UAAU6+B,wBAAyB,CAC7EC,YAAathC,EAAAka,aAAaqnB,2BAA2BH,EAAWzQ,YAAY,EAC5E6Q,eAAgBJ,EAAW5Q,sBAC3BiR,gBAAiBL,EAAW3Q,YAC5BiR,iBAAkBN,EAAW1Q,oBAC7BiR,cAAe3hC,EAAA8B,QAAQ,cAAgBs/B,EAAWzQ,a,CACrD,EAGGiR,EAAc5hC,EAAA8B,QAAQ,8BAA0D,UAA1Bs/B,EAAW/Q,WAAyB,QAAU,SAAW,WACjG,6BAA+BvgB,MAAMC,SAASqxB,EAAW9Q,aAAc,GAAG,EAAI,UAChGpvB,KAAK2B,IAAIC,KAAK,6DAA6D,EAAEgM,aAAa,CACtFC,SAAU,SACVgc,QAAS6W,EACT3W,UAAW,EACXjc,KAAM0O,C,CACT,EACDxc,KAAK2B,IAAIC,KAAK,0DAA0D,EAAEgR,KAAK8tB,CAAW,EAEtFR,EAAW5Q,wBACPqR,EAAgB7hC,EAAA8B,QAAQggC,2CAA6C,6BAA+BhyB,MAAMC,SAASqxB,EAAW5Q,sBAAuB,GAAG,EAAI,UAChKtvB,KAAK2B,IAAIC,KAAK,+DAA+D,EAAEgM,aAAa,CACxFC,SAAU,SACVgc,QAAS8W,EACT5W,UAAW,EACXjc,KAAM0O,C,CACT,EACDxc,KAAK2B,IAAIC,KAAK,4DAA4D,EAAEgR,KAAK+tB,CAAa,GAG9FT,EAAW3Q,cACPsR,EAAc/hC,EAAA8B,QAAQkgC,yCAA2C,6BAA+BlyB,MAAMC,SAASqxB,EAAW3Q,YAAa,GAAG,EAAI,UAClJvvB,KAAK2B,IAAIC,KAAK,2DAA2D,EAAEgM,aAAa,CACpFC,SAAU,SACVgc,QAASgX,EACT9W,UAAW,EACXjc,KAAM0O,C,CACT,EACDxc,KAAK2B,IAAIC,KAAK,wDAAwD,EAAEgR,KAAKiuB,CAAW,GAGxFX,EAAW1Q,uBACPyQ,EAAqBnhC,EAAAka,aAAa+nB,2BAA2Bb,EAAWzQ,YAAY,EAAI,6BAA+B7gB,MAAMC,SAASqxB,EAAW1Q,oBAAqB,GAAG,EAAI,UACjLxvB,KAAK2B,IAAIC,KAAK,mEAAmE,EAAEgM,aAAa,CAC5FC,SAAU,SACVgc,QAASoW,EACTlW,UAAW,EACXjc,KAAM0O,C,CACT,EACDxc,KAAK2B,IAAIC,KAAK,gEAAgE,EAAEgR,KAAKqtB,CAAkB,EAGnH,EA1EJ,IAAAzH,EA2EAA,EArEI,SAAAA,EAAYlV,EAA4BtkB,GAAxC,IAAAe,EAAAC,KAEIA,KAAKoD,UAAYkgB,EAAS9c,MAC1BxG,KAAKsjB,SAAWA,EAChBtjB,KAAK2B,IAAM8Q,EAAEzT,CAAe,EAC5BgB,KAAKqB,GAAKrC,EAEVgB,KAAKggC,mBAAkB,EACvBhgC,KAAKoD,UAAUuD,KAAK,SAAU,WAAM,OAAA5G,EAAKigC,mBAAkB,CAAvB,CAAyB,CACjE,CAfS/9B,EAAAu2B,wBAAuBA,EA0IhCD,EAAA14B,UAAAmhC,cAAA,WACI,IAAI5tB,EAAMpT,KAAKoD,UAAUwyB,YAAY,6BAA8B,KAAK,EACpExiB,GACApT,KAAK2B,IAAIC,KAAK,qBAAqB,EAAE6d,OAAO,GAAG,EAC/Czf,KAAK2B,IAAIC,KAAK,qBAAqB,EAAEw2B,KAAK,OAAQhlB,CAAG,GAErDpT,KAAK2B,IAAIC,KAAK,qBAAqB,EAAE0c,KAAK,CAAC,CAEnD,EAEAia,EAAA14B,UAAAohC,kBAAA,WACI,IAAIC,EAAUlhC,KAAKoD,UAAUwyB,YAAY51B,KAAKsjB,SAASviB,QAAQ0B,OAAOwjB,GAAI,OAAO,EAC7Eib,GACAlhC,KAAK2B,IAAIC,KAAK,0BAA0B,EAAEw2B,KAAK,OAAQ,KAAOp4B,KAAKsjB,SAASviB,QAAQ64B,iBAAmB,QAAUqF,mBAAmBiC,CAAO,EAAI,WAAW,EAC1JlhC,KAAK2B,IAAIC,KAAK,uBAAuB,EAAEw2B,KAAK,OAAQ,KAAOp4B,KAAKsjB,SAASviB,QAAQ64B,iBAAmB,QAAUqF,mBAAmBiC,CAAO,EAAI,WAAW,EACpD,CAAC,IAAhG,CAAC,IAAK,KAAKzgC,QAAQT,KAAKoD,UAAUisB,SAASrvB,KAAKsjB,SAASviB,QAAQ0B,OAAO+zB,gBAAgB,CAAC,GACzFx2B,KAAK2B,IAAIC,KAAK,wBAAwB,EAAEkM,KAAK,CAAC,EAC9C9N,KAAK2B,IAAIC,KAAK,0BAA0B,EAAEw2B,KAAK,OAAQ,KAAOp4B,KAAKsjB,SAASviB,QAAQ64B,iBAAmB,QAAUqF,mBAAmBiC,CAAO,EAAI,cAAc,GAE7JlhC,KAAK2B,IAAIC,KAAK,wBAAwB,EAAE0c,KAAK,CAAC,IAGlDte,KAAK2B,IAAIC,KAAK,0BAA0B,EAAEu/B,WAAW,MAAM,EAC3DnhC,KAAK2B,IAAIC,KAAK,uBAAuB,EAAEu/B,WAAW,MAAM,EACxDnhC,KAAK2B,IAAIC,KAAK,0BAA0B,EAAEu/B,WAAW,MAAM,EAEnE,EAEA5I,EAAA14B,UAAAuhC,wBAAA,WACI,IAAIC,EAAsBrhC,KAAKoD,UAAUtB,WAAWud,WAAU,EAC1DiiB,EAAuBthC,KAAKoD,UAAUtB,WAAW0E,MAAMC,IAAI,mBAAmB,EAE9E46B,GAAuBC,EACvBthC,KAAK2B,IAAIC,KAAK,qBAAqB,EAAE0c,KAAK,CAAC,EAE3Cte,KAAK2B,IAAIC,KAAK,qBAAqB,EAAE6d,OAAO,GAAG,CAEvD,EAEQ8Y,EAAA14B,UAAA0hC,mBAAR,SAA2Bn+B,GACvB,IAAMo+B,EAAIp+B,EAAUwyB,YAAY,sCAAuC,OAAO,EACxE6L,EAAKr+B,EAAUwyB,YAAY,6BAA8B,OAAO,EACtE,MAAO,EAAC4L,CAAAA,GAAKC,CAAAA,EACjB,EAEAlJ,EAAA14B,UAAA6hC,iBAAA,WAAA,IAAA3hC,EAAAC,KACQkhC,EAAUlhC,KAAKoD,UAAUwyB,YAAY51B,KAAKsjB,SAASviB,QAAQ0B,OAAOwjB,GAAI,OAAO,EAC7E0b,EAAY3hC,KAAKsjB,SAASviB,QAAQ8yB,IAAIxvB,OAE1C,GAAK68B,GAAYS,EAAjB,CAGA,GAAI3hC,KAAKsjB,SAASviB,QAAQg5B,6BAEtB,GAAI,CADwB/5B,KAAKuhC,mBAAmBvhC,KAAKoD,SAAS,EAG9D,OADA1D,KAAAA,WAAWyB,SAAS2C,YAAY8gB,MAAM9lB,EAAA8B,QAAQghC,iCAAkC,CAAEjhC,MAAO7B,EAAA8B,QAAQihC,8BAA8B,CAAE,EAKzI,IAAIC,EAAiB,IAAIpiC,WAAWuC,SAASoG,MAAM05B,WAAW,kBAAmBriC,WAAWuC,SAASoG,MAAMm3B,UAAUC,SAAU,EAAE,EAC7HuC,EAAgB,IAAItiC,WAAWuC,SAASoG,MAAM45B,kBAAkBH,EAAgB,CAAE98B,SAAU,CAAA,CAAI,CAAE,EAEtGtF,WAAWyB,SAAS2C,YAAYC,QAAQjF,EAAAwC,UAAU4gC,0BAA2B,WACzE,IACQC,EAEAC,EAHJJ,EAAcvgB,QAAO,IACjB0gB,EAAkB,IAAIziC,WAAWuC,SAASmxB,OAAOC,aAAav0B,EAAA8B,QAAQyhC,sCAAuC,CAAE9O,KAAM,CAAC,CAAE,EAExH6O,EAAY,WACZD,EAAgBG,QAAQ5iC,WAAWuC,SAASmxB,OAAOmP,iBAAiBC,KAAK,EACzEL,EAAgBM,WAAW3jC,EAAA8B,QAAQ8hC,6BAA6B,CACpE,EAEI3iC,EAAKujB,SAASwU,eACd/3B,EAAKujB,SAASwU,cAAcrvB,MAAK,EAErC1I,EAAKujB,SAASwU,cAAgBp4B,WAAW2D,KAAKgZ,QAAQslB,EAAW,CAAEgB,GAAIzB,EAAS0B,gBAAiBd,EAAer7B,IAAG,EAAG0S,MAAM0pB,YAAW,CAAE,EAAI,SAAC9P,GAC3H,CAAA,IAAXA,GACAoP,EAAgBG,QAAQ5iC,WAAWuC,SAASmxB,OAAOmP,iBAAiBO,EAAE,EACtEX,EAAgBM,WAAW3jC,EAAA8B,QAAQmiC,oCAAoC,EACvEZ,EAAgBa,kBAAiB,GAEjCZ,EAAS,CAEjB,EAAG,WAAQA,EAAS,CAAI,CAAC,EAEjC,EAAG,CACCl+B,QAAS,CACLC,GAAIrF,EAAA8B,QAAQqiC,gCACZ5+B,OAAQ3E,WAAWkB,QAAQwrB,M,EAE/BzrB,MAAO7B,EAAA8B,QAAQihC,8B,CAClB,EAEDC,EAAe9jB,IAAI,CAAE7E,MAAO,IAAI/N,IAAM,CAAE,EACxCqH,EAAE,uFAAuF,EAAEI,OAAOmvB,EAAcllB,OAAM,CAAE,CA5CpH,CA6CR,EAEAyb,EAAA14B,UAAAqjC,gBAAA,WAAA,IAAAnjC,EAAAC,KACQkhC,EAAUlhC,KAAKoD,UAAUwyB,YAAY51B,KAAKsjB,SAASviB,QAAQ0B,OAAOwjB,GAAI,OAAO,EAC7Ekd,EAAWnjC,KAAKsjB,SAASviB,QAAQ8yB,IAAI5b,MAEzC,GAAKipB,GAAYiC,EAAjB,CAGA,GAAInjC,KAAKsjB,SAASviB,QAAQg5B,6BAEtB,GAAI,CADwB/5B,KAAKuhC,mBAAmBvhC,KAAKoD,SAAS,EAG9D,OADA1D,KAAAA,WAAWyB,SAAS2C,YAAY8gB,MAAM9lB,EAAA8B,QAAQwiC,gCAAiC,CAAEziC,MAAO7B,EAAA8B,QAAQyiC,6BAA6B,CAAE,EAKvI3jC,WAAWyB,SAAS2C,YAAYC,QAAQjF,EAAA8B,QAAQ0iC,gCAAiC,WAGzD,SAAZlB,IACAD,EAAgBG,QAAQ5iC,WAAWuC,SAASmxB,OAAOmP,iBAAiBC,KAAK,EACzEL,EAAgBM,WAAW3jC,EAAA8B,QAAQ8hC,6BAA6B,CACpE,CALJ,IAAIP,EAAkB,IAAIziC,WAAWuC,SAASmxB,OAAOC,aAAav0B,EAAA8B,QAAQ2iC,qCAAsC,CAAEhQ,KAAM,CAAC,CAAE,EAOnHxzB,EAAKujB,SAASyU,cACdh4B,EAAKujB,SAASyU,aAAatvB,MAAK,EAEpC1I,EAAKujB,SAASyU,aAAer4B,WAAW2D,KAAKgZ,QAAQ8mB,EAAU,CAAER,GAAIzB,CAAO,EAAI,SAACnO,GAC9D,CAAA,IAAXA,GACAoP,EAAgBG,QAAQ5iC,WAAWuC,SAASmxB,OAAOmP,iBAAiBO,EAAE,EACtEX,EAAgBM,WAAW3jC,EAAA8B,QAAQ4iC,mCAAmC,EACtErB,EAAgBa,kBAAiB,GAEjCZ,EAAS,CAEjB,EACA,WACIA,EAAS,CACb,CAAC,CACL,EAAG,CACCl+B,QAAS,CACLC,GAAIrF,EAAA8B,QAAQ6iC,+BACZp/B,OAAQ3E,WAAWkB,QAAQwrB,M,EAE/BzrB,MAAO7B,EAAA8B,QAAQyiC,6B,CAClB,CAvCD,CAyCR,EA5MJ,IAAA9K,EA6MAA,EAxMI,SAAAA,EAAYjV,EAA4BtkB,GAAxC,IAAAe,EAAAC,KAEIA,KAAKoD,UAAYkgB,EAAS9c,MAC1BxG,KAAKsjB,SAAWA,EAChBtjB,KAAK2B,IAAM8Q,EAAEzT,CAAe,EAE5BU,WAAWyB,SAASC,iBAAiBpC,EAAiBF,EAAAwC,UAAUi3B,eAAe,EAG3Ev4B,KAAKsjB,SAASviB,QAAQ84B,gBACtB75B,KAAK2B,IAAIC,KAAK,qBAAqB,EAAEgM,aAAa,CAC9CC,SAAU,MACVgc,QAAS/qB,EAAA8B,QAAQ8iC,wBACjB3Z,UAAW,EACXjc,KAAM0O,C,CACT,EACDxc,KAAK2B,IAAIC,KAAK,qBAAqB,EAAE+K,MAAM,WACvC5M,EAAKujB,SAAS2Y,QAAO,CACzB,CAAC,EACDj8B,KAAKohC,wBAAuB,EAC5BphC,KAAKoD,UAAUtB,WAAW0E,MAAMG,KAAK,0CAA2C,WAAM,OAAA5G,EAAKqhC,wBAAuB,CAA5B,CAA8B,EACpHphC,KAAKoD,UAAUtB,WAAWya,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAKqhC,wBAAuB,CAA5B,CAA8B,GAE1FphC,KAAK2B,IAAIC,KAAK,qBAAqB,EAAE0c,KAAK,CAAC,EAG1CgF,EAASviB,QAAQsF,eAyBlBrG,KAAK2B,IAAIC,KAAK,qBAAqB,EAAE+F,OAAM,EAC3C3H,KAAK2B,IAAIC,KAAK,sBAAsB,EAAE+F,OAAM,IAxB5C3H,KAAK2B,IAAIC,KAAK,qBAAqB,EAAEgM,aAAa,CAC9CC,SAAU,MACVgc,QAAS/qB,EAAA8B,QAAQ+iC,4BACjB5Z,UAAW,EACXjc,KAAM0O,C,CACT,EACDxc,KAAKghC,cAAa,EAClBhhC,KAAKoD,UAAUwgC,iBAAiB,6BAA8B,MAAO,WAAM,OAAA7jC,EAAKihC,cAAa,CAAlB,CAAoB,EAG3FhhC,KAAKsjB,SAASviB,QAAQ+4B,kBACtB95B,KAAK2B,IAAIC,KAAK,sBAAsB,EAAEiiC,UAAU,CAC5CC,YAAa,CAAA,C,CAChB,EACD9jC,KAAK2B,IAAIC,KAAK,wBAAwB,EAAE+K,MAAM,WAAM,OAAA5M,EAAK2hC,iBAAgB,CAArB,CAAuB,EAC3E1hC,KAAK2B,IAAIC,KAAK,uBAAuB,EAAE+K,MAAM,WAAM,OAAA5M,EAAKmjC,gBAAe,CAApB,CAAsB,EACzEljC,KAAKihC,kBAAiB,EACtBjhC,KAAKoD,UAAU8yB,cAAcl2B,KAAKsjB,SAASviB,QAAQ0B,OAAOwjB,GAAI,WAAM,OAAAlmB,EAAKkhC,kBAAiB,CAAtB,CAAwB,EAC5FjhC,KAAKoD,UAAU8yB,cAAcl2B,KAAKsjB,SAASviB,QAAQ0B,OAAO+zB,iBAAkB,WAAM,OAAAz2B,EAAKkhC,kBAAiB,CAAtB,CAAwB,GAE1GjhC,KAAK2B,IAAIC,KAAK,sBAAsB,EAAE+F,OAAM,EAMxD,CA3DS1F,EAAAs2B,gBAAeA,CA8M/B,EA9lDM15B,UAAAA,WAAS,EAAA,ECAhB,SAAOA,GAAU,IA4TbS,EAmCAA,EA/VaR,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,IAACmD,EAAAnD,EAAAmD,WAAAnD,EAAAmD,SAAQ,IAE3B3C,EAAyCI,WAAWuC,SAAS8hC,qBAApBnkC,UAAAgK,EAAAtK,CAAA,EAarCsK,EAAA/J,UAAAmkC,SAAA,SAASh3B,GACL,IAGIlF,EAHCkF,GAAcA,EAAUoO,QAAO,IAGhCtT,EAAS9H,KAAK8B,WAAWqL,UAAS,EAClCnN,KAAKyG,IAAI,aAAa,IACtBqB,EAAOsF,gBAAgBC,OAASrN,KAAKsN,sBAAsBtN,KAAKyG,IAAG,EAAGsG,cAE1EjF,EAAOsF,gBAAgBG,UAAYP,EAAU3B,SAAQ,EACrDvD,EAAOsF,gBAAgBI,SAAU,IAAIpC,MAAOC,SAAQ,EAAGoC,QAAQ,CAAC,EAAEC,WAAW,CAAC,IAAK,EAEnF1N,KAAK8B,WAAW6L,UAAU7F,EAAQ9H,IAAI,EACtCA,KAAK8B,WAAW0G,SAAQ,EAC5B,EA1BJ,IAAAlJ,EAAAsK,EA2BAA,EAvBI,SAAAA,EAAY9H,EAA6CwL,GAAzD,IAAAvN,EACIT,EAAA6Y,KAAAnY,KAAM,KAAM,IAAI,GAACA,K,OACjBD,EAAK+B,WAAaA,EAClB/B,EAAKuN,sBAAwBA,EAE7BvN,EAAK4G,KAAK,SAAU,WAAM,OAAA5G,EAAKikC,SAASjkC,EAAK0G,IAAG,EAAGuG,SAAS,CAAlC,CAAmC,E,CACjE,CAVS/K,EAAA2H,oBA2BbA,EAEAtK,EAAqCI,WAAWuC,SAAS8hC,qBAApBnkC,UAAA8P,EAAApQ,CAAA,EAWjCoQ,EAAA7P,UAAAokC,OAAA,SAAO1pB,GACH,IAGIzS,EAHCyS,GAASA,EAAKa,QAAO,KAGtBtT,EAAS9H,KAAK8B,WAAWqL,UAAS,GAC/BC,gBAAgBG,UAAYgN,EAAKlP,SAAQ,EAChDvD,EAAOsF,gBAAgBI,QAAU+M,EAAKlP,SAAQ,EAAGoC,QAAQ,CAAC,EAAEC,WAAW,CAAC,IAAK,EAE7E1N,KAAK8B,WAAW6L,UAAU7F,EAAQ9H,IAAI,EACtCA,KAAK8B,WAAW0G,SAAQ,EAC5B,EArBJ,IAAAlJ,EAAAoQ,EAsBAA,EAnBI,SAAAA,EAAY5N,GAAZ,IAAA/B,EACIT,EAAA6Y,KAAAnY,KAAM,KAAM,IAAI,GAACA,K,OACjBD,EAAK+B,WAAaA,EAElB/B,EAAK4G,KAAK,SAAU,WAAM,OAAA5G,EAAKkkC,OAAOlkC,EAAK0G,IAAG,EAAGuG,SAAS,CAAhC,CAAiC,E,CAC/D,CARS/K,EAAAyN,gBAsBbA,EAEApQ,EAA2CI,WAAWuC,SAAS8N,MAAMgN,eAA1Bnd,UAAAy6B,EAAA/6B,CAAA,EAA3C,IAAAA,EAAA+6B,EAmBAA,EAlBI,SAAAA,EAAYv4B,EAA6Cf,G,OACrDzB,EAAA6Y,KAAAnY,KAAM8B,EAAYpC,WAAWqc,cAAcC,MAAMjb,EAAS,CAClD2a,gBAAiB,SAACC,EAAqBC,GACnC,OAAQA,GACR,IAAK,aACD,OAAO9c,EAAA8B,QAAQsjC,gBACnB,IAAK,oBACD,OAAOplC,EAAA8B,QAAQujC,uBACnB,IAAK,4BACD,OAAOrlC,EAAA8B,QAAQwjC,oBACnB,IAAK,eACD,OAAOtlC,EAAA8B,QAAQkb,gBACnB,QACI,OAAOhd,EAAA8B,QAAQ,cAAgBgb,IAAWA,C,CAElD,C,CACH,CAAC,GAAC5b,IACX,CAlBSiC,EAAAo4B,sBAmBbA,EAEA/6B,EAAyC+kC,SAASC,MAAT1kC,UAAAqK,EAAA3K,CAAA,EAW7B2K,EAAApK,UAAA0kC,iBAAR,SAAyB1hC,GAGrB,IADA,IAAI2hC,EAAgB,EACX5rB,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GACzB/V,EAAK+V,GAAc,WACpB4rB,CAAa,GAIrBxkC,KAAKge,IAAI,CACLwmB,cAAeA,EACfC,WAAY5hC,EAAKC,M,CACpB,CACL,EAxBJ,IAAAxD,EAAA2K,EAyBAA,EArBI,SAAAA,EAAYnI,GAAZ,IAAA/B,EACIT,EAAA6Y,KAAAnY,IAAA,GAAOA,K,OAEPD,EAAK+B,WAAaA,EAClB/B,EAAK+B,WAAWuK,aAAY,EAAGC,UAAU,SAACC,GAAM,OAAAxM,EAAKwkC,iBAAiBh4B,EAAE1J,IAAI,CAA5B,CAA6B,E,CACjF,CATSZ,EAAAgI,oBAyBbA,EAEA3K,EAAwC+kC,SAASK,KAAT9kC,UAAAiM,EAAAvM,CAAA,EAiBpCuM,EAAAhM,UAAAid,OAAA,WACI,IAAI0nB,EAAgBxkC,KAAKwG,MAAMC,IAAI,eAAe,EAC9Cg+B,EAAazkC,KAAKwG,MAAMC,IAAI,YAAY,EAa5C,OAXiB,EAAbg+B,GACI5a,EAAU,CACV8a,sBAAuBH,EACvBI,mBAAoBH,C,EAGxBhyB,EAAEzS,KAAKqB,EAAE,EAAEuR,KAAK5S,KAAK6kC,SAAShb,CAAO,CAAC,GAEtCpX,EAAEzS,KAAKqB,EAAE,EAAEuR,KAAK,EAAE,EAGf5S,IACX,EAjCJ,IAAAV,EAAAuM,EAkCAA,EA/BI,SAAAA,EAAYrF,EAA4BxH,GAAxC,IAAAe,EACIT,EAAA6Y,KAAAnY,IAAA,GAAOA,K,OAEPD,EAAK+kC,QAAU,MACf/kC,EAAK8kC,SAAWE,EAAEF,SAAS/lC,EAAAwC,UAAU0jC,cAAc,EACnDjlC,EAAKsB,GAAKrC,EACVe,EAAKyG,MAAQA,EAEbu+B,EAAEE,QAAQllC,EAAM,QAAQ,EACxBA,EAAKyG,MAAMG,KAAK,SAAU5G,EAAK+c,MAAM,EAErC/c,EAAK+c,OAAM,E,CACf,CAfS7a,EAAA4J,mBAkCbA,EAEAvM,EAAqCI,WAAWuC,SAAS8N,MAAMgN,eAA1Bnd,UAAAwK,EAAA9K,CAAA,EAkBzB8K,EAAAvK,UAAAqlC,kBAAR,WAEkBllC,KAAKyG,IAAG,EAAG0+B,QAEjBC,QAAQ,CACZhxB,MAAO,wBACPzT,MAAO,SACPmsB,MAAO,OACP+X,SAAU7kC,KAAKqlC,qBACfh1B,WAAY,CAAEi1B,MAAO,CAAA,CAAI,EACzBC,SAAU,CACNC,QAAS,SAAChoB,EAAOC,GACb,OAAOD,EAAMioB,mBAAqBhoB,EAAMgoB,kBAC5C,C,EAEP,CACL,EAEQr7B,EAAAvK,UAAAwlC,qBAAR,SAA6BxiC,GAEzB,IAWIoQ,EAASpQ,EAAK6iC,kBAAoB,YAClCC,EAZmB,CACnBC,UAAW,MACXjsB,eAAgB,MAChBksB,IAAK,MACLC,YAAa,MACbvsB,QAAS,MACTwsB,iBAAkB,MAClBC,QAAS,MACTC,WAAY,K,EAIuBhzB,IAAW,MAElD,OAAOvT,WAAWyB,SAAS6pB,eAAelsB,EAAAwC,UAAU4kC,iBAAkB,CAClEC,GAAIR,EAAgB,GACpBS,GAAIT,EAAgB,GACpBU,GAAIV,EAAgB,GACpBW,gBAA6B,mBAAXrzB,EAA+B,UAAY,SAC7DszB,oBAAiC,cAAXtzB,EAA0B,UAAY,SAC5DuzB,WAAwB,mBAAXvzB,GAA0C,cAAXA,EAA0B,MAAQ,K,CACjF,CACL,EAEQ7I,EAAAvK,UAAA4mC,gBAAR,WACI,IAAIC,EAAe1mC,KAAKyG,IAAI,cAAc,EACtCigC,GACAhnC,WAAWinC,mBAAmBC,MAAM5mC,KAAKuF,gBAAiBmhC,EAAa1mC,KAAK8B,WAAWqL,UAAS,EAAG0K,cAAgB,OAAQ,CAAEgvB,QAAS,CAAC,CAAE,CAEjJ,EAnEJ,IAAAvnC,EAAA8K,EAoEAA,EA/DI,SAAAA,EAAYtI,EAA6Cf,GAAzDhB,EACIT,EAAA6Y,KAAAnY,KAAM8B,EAAYpC,WAAWqc,cAAcC,MAAMjb,EAAqD,CAC9F2a,gBAAiB,SAACC,EAAaC,GAAW,OAAA9c,EAAA8B,QAAQ,cAAgBgb,IAAWA,CAAnC,C,CAC7C,CAAC,GAAC5b,K,OAEPD,EAAKmlC,kBAAiB,EAGtBnlC,EAAKwF,gBAAkB7F,WAAWonC,aAAaC,eAAe,EAAE,EAEhEhnC,EAAK4G,KAAK,sBAAuB5G,EAAK0mC,gBAAiB1mC,CAAI,E,CAC/D,CAhBSkC,EAAAmI,gBAoEbA,EAEA9K,EAAiDI,WAAWuC,SAAS8N,MAAMC,SAA1BpQ,UAAAonC,EAAA1nC,CAAA,EAO7C0nC,EAAAnnC,UAAAonC,WAAA,WAAA,IAAAlnC,EAAAC,KAGQmP,GAFJ7P,EAAAO,UAAMonC,WAAU9uB,KAAAnY,IAAA,EAEIA,KAAK2B,IAAIC,KAAK5B,KAAKknC,YAAY,GAGnDz0B,EAAEtD,CAAa,EAAEvB,aAAa,CAC1BC,SAAU,QACVpD,OAAQ,cACRof,QAAS,SAAAtd,GAAK,OAAAxM,EAAKonC,eAAe56B,EAAG4C,CAAa,CAApC,C,CACjB,CAEL,EAEQ63B,EAAAnnC,UAAAsnC,eAAR,SAAuB56B,EAAG26B,GAClBE,EAAM30B,EAAElG,EAAEuf,MAAM,EAAEvE,QAAQ,IAAI,EAC9BnK,EAAgB3K,EAAEy0B,CAAY,EAAErkC,KAAK,WAAW,EAAEua,SAASgqB,CAAG,EAC9Dn0B,EAASmK,EAASsoB,iBAEtB,OAAOhmC,WAAWyB,SAAS6pB,eAAelsB,EAAAwC,UAAU42B,wBAAyB,CACzEv3B,MAAOyc,EAASiqB,sBAChBlP,KAAMz4B,WAAWonC,aAAaQ,UAAU,cAAgBr0B,EAAQnU,EAAA8B,OAAO,C,CAC1E,CACL,EAEUomC,EAAAnnC,UAAA0nC,UAAV,SAAoBh7B,GAChBjN,EAAAO,UAAM0nC,UAASpvB,KAAAnY,KAACuM,CAAC,EAIjB,IAFA,IAAIi7B,EAAOj7B,EAAEyB,OAAOka,MAAMtR,SAAQ,EAEzB4R,EAAI,EAAGA,EAAIgf,EAAK1kC,OAAQ0lB,CAAC,GAAI,CAClC,IAAI4e,EAAM30B,EAAE+0B,EAAKhf,EAAE,EACJjc,EAAEyB,OAAOoP,SAASgqB,CAAG,EAEvBK,WACTL,EAAI9W,SAAS,cAAc,C,CAGvC,EA7CJ,IAAAhxB,EAqDAA,EArDA0nC,EA8CAA,EA3CI,SAAAA,EAAYxgC,EAAwBxH,EAA8B+B,G,OAC9DzB,EAAA6Y,KAAAnY,KAAMwG,EAAOxH,EAAiB+B,CAAO,GAACf,IAC1C,CAmDA,SAAA8L,EAAYtF,EAAwBxH,EAA8B+B,GAAlE,IAAAhB,EAAAC,K,OACIe,EAAUrB,WAAWqc,cAAcC,MAAiCjb,EAAS,CACzEkP,WAAY,CAAA,EACZy3B,UAAW,CAAA,EACXnC,SAAU,CAAA,EACVl1B,WAAY,CAAA,EACZs3B,SAAU,WAAM,OAAA5nC,EAAK6nC,cAAa,CAAlB,EAChB13B,SAAU,CAAEC,QAAS,IAAKC,KAAM,EAAE,EAClCy3B,cAAe,CAAA,EACf77B,YAAanH,KAAAA,C,CAChB,E,EAEDvF,EAAA6Y,KAAAnY,KAAMwG,EAAOxH,EAAiB+B,CAAO,GAACf,IAC1C,CAuCA,SAAAqP,EAAY7I,EAAwBxH,EAA8B+B,GAAlE,IAAAhB,EAAAC,K,OACIe,EAAUrB,WAAWqc,cAAcC,MAAMjb,EAAS,CAC9CkP,WAAY,CAAA,EACZy3B,UAAW,CAAA,EACXnC,SAAU,CAAA,EACVl1B,WAAY,CAAA,EACZs3B,SAAU,SAAC9kC,GAAS,OAAA9C,EAAK+nC,WAAWjlC,EAAKklC,iBAAiB,CAAtC,EACpBh8B,YAAa,CAAEqI,MAAO,8BAA+BC,IAAK,MAAM,EAChEnE,SAAU,CAAEC,QAAS,IAAKC,KAAM,EAAE,C,CACrC,E,EAED9Q,EAAA6Y,KAAAnY,KAAMwG,EAAOxH,EAAiB+B,CAAO,GAACf,IAC1C,CAxHkBiC,EAAA+kC,mBAAkBA,EAqDApnC,UAAAkM,EAAxCxM,EAAwC0nC,CAAA,EAkB5Bl7B,EAAAjM,UAAA+nC,cAAR,WAAA,IAAA7nC,EAAAC,KACQgoC,EAAa,CAAEziC,gBAAiBvF,KAAKwG,MAAMjB,gBAAiBC,QAAS,CAAA,CAAI,EAgB7ExF,KAAKe,QAAQiL,YAAYi8B,cAfL,CAChBx7B,QAAS,CACL,CAAEgO,KAAM,SAAUja,OAAQ,SAACmzB,GAAW,OAAA5zB,EAAKmoC,aAAavU,CAAM,CAAxB,CAAyB,EAC/D,CAAElZ,KAAM,QAASja,OAAQ,SAACmzB,GAAW,OAAAA,EAAOR,MAAK,CAAZ,CAAc,GAEvDgV,MAAO,CAAA,EACPC,UAAW,CAAA,EACXtb,MAAO,OACPub,OAAQ,WAEAnnC,SAASonC,SAAQ,GAAIvoC,EAAKwoC,UAAS,CAC3C,C,EAIkDP,CAAU,CACpE,EAEQl8B,EAAAjM,UAAAqoC,aAAR,SAAqBvU,GACjBj0B,WAAWQ,cAAcsoC,aAAa,KAAOxoC,KAAKe,QAAQiL,YAAYc,MAAQ,OAAS9M,KAAKwG,MAAMjB,gBAAiB,CAAA,CAAI,EACvHouB,EAAOR,MAAK,CAChB,EAEArnB,EAAAjM,UAAAonC,WAAA,WAAA,IAAAlnC,EAAAC,KACIV,EAAAO,UAAMonC,WAAU9uB,KAAAnY,IAAA,EAEhBA,KAAKuJ,KAAKkF,MAAMg6B,QAAQ,SAAAl8B,GACJ,KAAZA,EAAEm8B,OACF3oC,EAAK6nC,cAAa,CAE1B,CAAC,CACL,EAnDS3lC,EAAA6J,mBAoDbA,EAE4ClM,UAAAyP,EAA5C/P,EAA4C0nC,CAAA,EAexC33B,EAAAxP,UAAAioC,WAAA,SAAW5/B,GACP,IAAIxI,WAAW+F,aAAawO,UAAUnV,EAAAK,KAAKyI,sBAAuB,EAAE,EAAEqgC,cAAc,CAChFnb,MAAO,OACPxN,OAAQ,OACR3e,MAAO7B,EAAA8B,QAAQ+nC,2BAA6B,IAAMzgC,EAClDigC,MAAO,CAAA,EACPC,UAAW,CAAA,C,EACZ,CAAElgC,iBAAkBA,CAAgB,CAAE,CAC7C,EAvBSjG,EAAAoN,uBAwBbA,EAEA/P,EAAyCI,WAAWuC,SAAS8N,MAAMgN,eAA1Bnd,UAAA+P,EAAArQ,CAAA,EAAzC,IAAAA,EAAAqQ,EAOAA,EANI,SAAAA,EAAY7N,EAA6Cf,G,OACrDzB,EAAA6Y,KAAAnY,KAAM8B,EAAYpC,WAAWqc,cAAcC,MAAkDjb,EAC7F,CACI2a,gBAAiB,SAACC,EAAaC,GAAW,OAAA9c,EAAA8B,QAAQ,cAAgBgb,IAAWA,CAAnC,C,CAC7C,CAAC,GAAC5b,IACP,CAGJ,SAAA66B,I,8CAeA,CAxBa54B,EAAA0N,oBAObA,EAEArQ,EAAwCI,WAAWuC,SAAS8N,MAAMC,SAA1BpQ,UAAAi7B,EAAAv7B,CAAA,EAGpCu7B,EAAAh7B,UAAAuuB,aAAA,WACI,IAAIwa,EAAW,GAEX/lC,EAAO7C,KAAKuJ,KAAKqa,WAAW/gB,KAAI,EAAGylB,OAAM,EAC7C,GAAIzlB,EACA,IAAK,IAAI+V,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GAC9BgwB,EAAS/iC,KAAW7F,KAAKwG,MAAM1E,WAAYusB,mBAAmBxrB,EAAK+V,EAAE,EAAE2V,WAAW,EAI1F,OAAOqa,CACX,EAdS3mC,EAAA44B,mBAebA,CACH,EA/WMh8B,UAAAA,WAAS,EAAA,ECAhB,SAAOA,GAAU,IAAAC,EAEDmK,EAUE5F,EAEIwlC,EAiEdvpC,EAAAwpC,EAWAxpC,EAwCAA,EAAAypC,EA6BAzpC,EAAA6F,EAmDA7F,EA4DAA,EAMAA,EAMAA,EAAA0pC,EAuCA1pC,EAAA2pC,EA6CA3pC,EAAA4pC,EAsCA5pC,EAAA6pC,EAuCA7pC,EAgHAA,EAyDAA,EA1iBA,SAAS8pC,EAA0BvmC,EAAawmC,EAAwBC,GACpE,IAAK,IAAI1wB,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GAC1B/V,EAAK+V,GAAGywB,KACRxmC,EAAK+V,GAAGywB,GAAkBz6B,MAAMC,SAAShM,EAAK+V,GAAGywB,GAAiB,OAAO,GAEzExmC,EAAK+V,GAAG0wB,KACRzmC,EAAK+V,GAAG0wB,GAAgB16B,MAAMC,SAAShM,EAAK+V,GAAG0wB,GAAe,OAAO,EACvC,UAA1BzmC,EAAK+V,GAAG0wB,MACRzmC,EAAK+V,GAAG0wB,GAAgB,QAIxC,CAWI,SAAAR,EAAYvjC,EAAyBgkC,G,OACjCjqC,EAAA6Y,KAAAnY,KAAM,CACFuF,gBAAiBA,EACjBgkC,aAAcA,EACdC,aAAc,I,CACjB,GAACxpC,IACN,CAOA,SAAAypC,EAAY3hC,EAAoCtB,EAAkB7B,EAAwD5D,GAA1H,IAAAhB,EACIT,EAAA6Y,KAAAnY,KAAM8H,EAAQnD,EAAS5D,CAAO,GAACf,K,OAC/BD,EAAKyG,MAAQA,EACbzG,EAAK2pC,iBAAmB3pC,EAAKoN,UAAS,EAAG0K,cAErC9X,EAAKyG,MAAMC,IAAG,EAAGlB,iBACjB7F,WAAWinC,mBAAmBgD,iBAAiB5pC,EAAKyG,MAAMC,IAAG,EAAGlB,gBAAiB,SAAC4T,GAAU,OAAApZ,EAAK4C,gBAAgBwW,CAAK,CAA1B,CAA2B,E,CAE/H,CA8BA,SAAA4vB,EAAY7sB,EAAuC0tB,EAAoBjlC,EAAsD5D,GAA7H,IAAAhB,EAAAC,KACQ6pC,EAAarmC,KAAKC,MAAMJ,EAAKoM,gBAAgBm6B,EAAY,MAAM,CAAC,E,OAKpE7pC,EAJAT,EAAA6Y,KAAAnY,KAAM6pC,EAAY,WACd3tB,EAAW7P,aAAY,EAAGC,UAAU,WAAM,OAAAvM,EAAK+pC,SAAQ,CAAb,CAAe,EACzDnlC,EAAQ5E,CAAI,CAChB,EAAGgB,CAAO,GAACf,MACNkc,WAAaA,E,CACtB,CAyBA,SAAA/W,EAAYykC,EAAoBrkC,EAAyB0B,EAAmBtC,EAAsD5D,GAAlI,IAAAhB,EAAAC,KACQ6pC,EAAarmC,KAAKC,MAAMJ,EAAKoM,gBAAgBm6B,EAAY,MAAM,CAAC,EAChEpjC,EAAQ,IAAIsiC,EAAUvjC,EAAiB0B,CAAS,E,OAOpDlH,EANAT,EAAA6Y,KAAAnY,KAAM6pC,EAAYrjC,EAAO,WACrBzG,EAAKy6B,kBAAoB,IAAIuO,EAA0BhpC,EAAM,oBAAqB,WAAM,OAAAA,EAAKyG,MAAMwX,IAAI,CAAC+rB,OAAQ,CAAA,CAAI,CAAC,CAA7B,EAAgChpC,CAAO,EAC/HhB,EAAK26B,mBAAqB,IAAIqO,EAA0BhpC,EAAM,eAAgB,WAAM,OAAAA,EAAKyG,MAAMwX,IAAI,CAACgsB,OAAQ,CAAA,CAAI,CAAC,CAA7B,EAAgCjpC,CAAO,EAC3HhB,EAAKu6B,wBAA0B,IAAIyO,EAA0BhpC,EAAM,4BAA6B,WAAM,OAAAA,EAAKyG,MAAMwX,IAAI,CAACisB,OAAQ,CAAA,CAAI,CAAC,CAA7B,EAAgClpC,CAAO,CACjJ,EAAGA,CAAO,GAACf,MAENwG,MAAMG,KAAK,4CAA6C,WACrD5G,EAAKyG,MAAMC,IAAI,QAAQ,GAAK1G,EAAKyG,MAAMC,IAAI,QAAQ,GAAK1G,EAAKyG,MAAMC,IAAI,QAAQ,IAC/E1G,EAAKy6B,kBAAkBje,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAKyG,MAAMwX,IAAI,CACpEksB,kBAAmBnqC,EAAKy6B,kBAAkBnb,WAAU,C,CACvD,CAFwD,CAEvD,EACFtf,EAAK26B,mBAAmBne,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAKyG,MAAMwX,IAAI,CACrEmsB,kBAAmBpqC,EAAK26B,mBAAmBrb,WAAU,C,CACxD,CAFyD,CAExD,EACFtf,EAAKu6B,wBAAwB/d,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAKyG,MAAMwX,IAAI,CAC1EosB,kBAAmBrqC,EAAKu6B,wBAAwBjb,WAAU,C,CAC7D,CAF8D,CAE7D,EAEFtf,EAAKyG,MAAMG,KAAK,6EAA8E,WAC1F5G,EAAKyG,MAAMwX,IAAI,CACXqsB,kBAAmBtqC,EAAKyG,MAAMC,IAAI,mBAAmB,GAAK1G,EAAKyG,MAAMC,IAAI,mBAAmB,GAAK1G,EAAKyG,MAAMC,IAAI,mBAAmB,C,CAC1I,CACD,CAAC,EAED9B,EAAQ5E,CAAI,EAEpB,CAAC,E,CACL,CAoBA,SAAAuqC,EAAYV,EAAoBrkC,EAAyB0B,EAAmBsjC,EAAoB5lC,EAAyD5D,GAAzJ,IAAAhB,EAAAC,KACQ6pC,EAAarmC,KAAKC,MAAMJ,EAAKoM,gBAAgBm6B,EAAY,MAAM,CAAC,EAChEpjC,EAAQ,IAAIsiC,EAAUvjC,EAAiB0B,CAAS,E,OAMpDlH,EALAT,EAAA6Y,KAAAnY,KAAM6pC,EAAYrjC,EAAO,WACrBzG,EAAK2f,sBAAwB,IAAIypB,EAAsBppC,EAAM,WAAM,OAAAA,EAAKyG,MAAMwX,IAAI,CAAE+rB,OAAQ,CAAA,CAAI,CAAE,CAA/B,EAAkChpC,CAAO,EAC5GhB,EAAK6f,0BAA4B,IAAIqpB,EAA0BlpC,EAAMwqC,EAAY,WAAM,OAAAxqC,EAAKyG,MAAMwX,IAAI,CAACgsB,OAAQ,CAAA,CAAI,CAAC,CAA7B,EAAgCjpC,CAAO,CAClI,EAAGA,CAAO,GAACf,MAENwG,MAAMG,KAAK,8BAA+B,WACvC5G,EAAKyG,MAAMC,IAAI,QAAQ,GAAK1G,EAAKyG,MAAMC,IAAI,QAAQ,IAEnD1G,EAAK2f,sBAAsBnD,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAKyG,MAAMwX,IAAI,CACxEksB,kBAAmBnqC,EAAK2f,sBAAsBL,WAAU,C,CAC3D,CAF4D,CAE3D,EACFtf,EAAK2f,sBAAsBC,eAAepD,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAKyG,MAAMwX,IAAI,CACvFmsB,kBAAmBpqC,EAAK2f,sBAAsBC,eAAeN,WAAU,C,CAC1E,CAF2E,CAE1E,EACFtf,EAAK6f,0BAA0BrD,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAKyG,MAAMwX,IAAI,CAC5EosB,kBAAmBrqC,EAAK6f,0BAA0BP,WAAU,C,CAC/D,CAFgE,CAE/D,EACFtf,EAAK6f,0BAA0BD,eAAepD,gBAAe,EAAGjQ,UAAU,WAAM,OAAAvM,EAAKyG,MAAMwX,IAAI,CAC3FwsB,kBAAmBzqC,EAAK6f,0BAA0BD,eAAeN,WAAU,C,CAC9E,CAF+E,CAE9E,EAEFtf,EAAKyG,MAAMG,KAAK,sGAAuG,WACnH5G,EAAKyG,MAAMwX,IAAI,CACXqsB,kBAAmBtqC,EAAKyG,MAAMC,IAAI,mBAAmB,GAAK1G,EAAKyG,MAAMC,IAAI,mBAAmB,GAAK1G,EAAKyG,MAAMC,IAAI,mBAAmB,GAAK1G,EAAKyG,MAAMC,IAAI,mBAAmB,C,CACjL,CACD,CAAC,EAED9B,EAAQ5E,CAAI,EAEpB,CAAC,E,CACL,CAwBA,SAAA6E,EAAYglC,EAAoBrkC,EAAyB0B,EAAmBtC,EAAsD5D,G,OAC9HzB,EAAA6Y,KAAAnY,KAAM4pC,EAAYrkC,EAAiB0B,EAAW,QAAStC,EAAS5D,CAAO,GAACf,IAC5E,CAIA,SAAAqH,EAAYuiC,EAAoBrkC,EAAyB0B,EAAmBtC,G,OACxErF,EAAA6Y,KAAAnY,KAAM4pC,EAAYrkC,EAAiB0B,EAAW,QAAStC,CAAO,GAAC3E,IACnE,CAOA,SAAAgpC,EAAYyB,EAA2CF,EAAoB5lC,EAA8D5D,GAAzI,IAAAhB,EAAAC,KACQ6pC,EAAarmC,KAAKC,MAAMJ,EAAKoM,gBAAgB86B,EAAa,8BAA+B,MAAM,CAAC,E,OAMpGxqC,EALAT,EAAA6Y,KAAAnY,KAAM6pC,EAAY,WACdY,EAAep+B,aAAY,EAAGC,UAAU,WAAM,OAAAvM,EAAK2qC,cAAa,CAAlB,CAAoB,EAClE/lC,EAAQ5E,CAAI,CAChB,EAAGgB,CAAO,GAACf,MAENyqC,eAAiBA,EACtB1qC,EAAKwqC,WAAaA,E,CACtB,CA+BA,SAAAtB,EAAY/sB,EAAuCquB,EAAoB5lC,EAAsD5D,GAA7H,IAAAhB,EAAAC,KACQ6pC,EAAqDrmC,KAAKC,MAAMJ,EAAKoM,gBAAgB86B,EAAa,sBAAuB,MAAM,CAAC,E,OASpIxqC,EAPAT,EAAA6Y,KAAAnY,KAAM6pC,EAAY,WACd3tB,EAAW7P,aAAY,EAAGC,UAAU,WAAM,OAAAvM,EAAK4qC,kBAAiB,CAAtB,CAAwB,EAClE5qC,EAAK4f,eAAiB,IAAIqpB,EAAkCjpC,EAAMwqC,EAAY,WAC1E5lC,EAAQ5E,CAAI,CAChB,EAAGgB,CAAO,CACd,EAAGA,CAAO,GAACf,MAENkc,WAAaA,EAClBnc,EAAKwqC,WAAaA,E,CACtB,CA+BA,SAAArB,EAAYxpB,EAA8C/a,EAAmD5D,GAA7G,IAAAhB,EAAAC,KACQ6pC,EAAarmC,KAAKC,MAAMJ,EAAKoM,gBAAgB,0BAA2B,MAAM,CAAC,E,OAMnF1P,EALAT,EAAA6Y,KAAAnY,KAAM6pC,EAAY,WACdnqB,EAAsBrT,aAAY,EAAGC,UAAU,WAAM,OAAAvM,EAAK2qC,cAAa,CAAlB,CAAoB,EACzE/lC,EAAQ5E,CAAI,CAChB,EAAGgB,CAAO,GAACf,MAEN2f,eAAiBD,E,CAC1B,CA+BA,SAAAypB,EAAYjtB,EAA6CvX,EAAkD5D,GAA3G,IAAAhB,EAAAC,KACQ6pC,EAAarmC,KAAKC,MAAMJ,EAAKoM,gBAAgB,kBAAmB,MAAM,CAAC,E,OAQ3E1P,EAPAT,EAAA6Y,KAAAnY,KAAM6pC,EAAY,WACd3tB,EAAW7P,aAAY,EAAGC,UAAU,WAAM,OAAAvM,EAAK6qC,qBAAoB,CAAzB,CAA2B,EACrE7qC,EAAK4f,eAAiB,IAAIupB,EAAuBnpC,EAAM,WACnD4E,EAAQ5E,CAAI,CAChB,EAAGgB,CAAO,CACd,EAAGA,CAAO,GAACf,MAENkc,WAAaA,E,CACtB,CA4BA,SAAAzS,EAAYmgC,EAAoB5gC,EAAyBjI,EAAiD4D,GAA1G,IAAA5E,EAAAC,KACQwP,EAAahM,KAAKC,MAAMJ,EAAKoM,gBAAgBm6B,EAAY,MAAM,CAAC,E,OAEpE7pC,EADAT,EAAA6Y,KAAAnY,KAAMwP,EAAY7K,EAAS5D,CAAO,GAACf,MAC9BgJ,WAAaA,E,CACtB,CA2GA,SAAAoG,EAAYw6B,EAAoBjlC,GACxB6K,EAAahM,KAAKC,MAAMJ,EAAKoM,gBAAgBm6B,EAAY,MAAM,CAAC,E,OACpEtqC,EAAA6Y,KAAAnY,KAAMwP,EAAY7K,CAAO,GAAC3E,IAC9B,CAuDA,SAAAuR,EAAY5M,GAAZ,IAAA5E,EACIT,EAAA6Y,KAAAnY,IAAA,GAAOA,K,OAEPD,EAAKie,IAAI,CACLnb,KAAM,KACN8pB,QAAS,CAAA,EACTke,MAAO,CAAA,C,CACV,EAED9qC,EAAK4G,KAAK,eAAgB,WAClB5G,EAAK0G,IAAG,EAAGokC,OACXlmC,EAAO,CAEf,CAAC,E,CACL,CArnBK7F,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,KAENmK,EAAAA,EAAAnK,EAAAmK,cAAAnK,EAAAmK,YAAW,KACnBA,EAAA,aAAA,GAAA,eACAA,EAAAA,EAAA,aAAA,GAAA,eACAA,EAAAA,EAAA,OAAA,GAAA,UAGQ6hC,EAAAhsC,EAAAgsC,iBAAAhsC,EAAAgsC,eAAc,KACtBA,EAAA,EAAA,GAAA,IAAEA,EAAAA,EAAA,EAAA,GAAA,IAAEA,EAAAA,EAAA,EAAA,GAAA,IAAEA,EAAAA,EAAA,EAAA,GAAA,IAGIznC,EAAAvE,EAAAuE,OAAAvE,EAAAuE,KAAI,KAEAwlC,EAAAxlC,EAAAwlC,mBAAAxlC,EAAAwlC,iBAAgB,KAEVkC,eAAhB,SAA+B/hC,GAC3B,OAAQA,GACJ,KAAKC,EAAYyF,aACb,MAAO,CACHs8B,iBAAkB,yCAClBC,QAAS,qBACTC,UAAW,wBACXC,QAAS,6B,EAEjB,KAAKliC,EAAYqB,aACb,MAAO,CACH0gC,iBAAkB,8BAClBC,QAAS,2BACTC,UAAW,8BACXC,QAAS,mC,EAEjB,KAAKliC,EAAYC,OACb,MAAO,CACH8hC,iBAAkB,mCAClBC,QAAS,qBACTC,UAAW,wBACXC,QAAS,6B,EAIrB,KAAM,qBACV,EAqCJ7rC,EAA+BI,WAAW0rC,UAAXxrC,UAAAkpC,EAAAxpC,CAAA,EAA/BwpC,EASAA,EATazlC,EAAAylC,UAASA,EAWtBxpC,EAAiDI,WAAW2D,KAAK8E,gBAAhBvI,UAAA6pC,EAAAnqC,CAAA,EAc7CmqC,EAAA5pC,UAAA8C,gBAAA,SAAgB0oC,EAAwBtqC,GACpC,IAEQ+G,EAFJujC,GACArrC,KAAKwG,MAAMwX,IAAI,CAAEwrB,aAAc6B,CAAa,CAAE,GAC1CvjC,EAAS9H,KAAKmN,UAAS,GACpBnF,sBAAwB,CAAChI,KAAKsrC,wBAAwBD,CAAa,GAC1ErrC,KAAK2N,UAAU7F,EAAQ9H,IAAI,EAC3BA,KAAKwI,SAASzH,CAAO,GACdf,KAAKwG,MAAMC,IAAG,EAAGlB,gBACxBvF,KAAK2C,gBAAgBjD,WAAWinC,mBAAmB4E,KAAKvrC,KAAKwG,MAAMC,IAAG,EAAGlB,eAAe,EAAGxE,CAAO,EAC3Ff,KAAKwG,MAAMC,IAAG,EAAG8iC,cACxBvpC,KAAK2C,gBAAgB3C,KAAKwG,MAAMC,IAAG,EAAG8iC,aAAcxoC,CAAO,CAEnE,EAEA0oC,EAAA5pC,UAAAyrC,wBAAA,SAAwBnyB,GACpB,MAAO,CACHpB,YAAa/X,KAAK0pC,iBAClBr8B,OAAQ,KACRpF,MAAOkR,EACPqyB,UAAW,MACXC,kBAAmB,CAAA,C,CAE3B,EApCJhC,EAqCAA,EArCapmC,EAAAomC,4BAA2BA,EAwCxCnqC,EAA+CI,WAAW2D,KAAK8E,gBAAhBvI,UAAAmpC,EAAAzpC,CAAA,EAW3CypC,EAAAlpC,UAAAiqC,SAAA,WACI9pC,KAAK4M,QAAQ,GAAI5M,IAAI,EACrB,IAEQ8H,EAFJsW,EAAWpe,KAAKkc,WAAWG,QAAO,EAClC+B,GAA8B,EAAlBA,EAAStb,UACjBgF,EAAS9H,KAAKmN,UAAS,GACpBnF,sBAAwB,CAC3B,CACI+P,YAAajQ,EAAO+P,cACpBxK,OAAQ,mBACRpF,MAAOmW,EAAS,GAAwB,mB,GAGhDpe,KAAK2N,UAAU7F,EAAQ9H,IAAI,EAC3BA,KAAKwI,SAAQ,EAErB,EA1BJugC,EA2BAA,EA3Ba1lC,EAAA0lC,0BAAyBA,EA6BSnpC,UAAAuF,EAA/C7F,EAA+CmqC,CAAA,EAqC3CtkC,EAAAtF,UAAAgU,aAAA,WACIvU,EAAAO,UAAM2E,cAAa2T,KAAAnY,IAAA,EACfA,KAAKw6B,mBACLx6B,KAAKw6B,kBAAkBh2B,cAAa,EAEpCxE,KAAK06B,oBACL16B,KAAK06B,mBAAmBl2B,cAAa,EAErCxE,KAAKs6B,yBACLt6B,KAAKs6B,wBAAwB91B,cAAa,CAElD,EAhDJW,EAiDAA,EAjDa9B,EAAA8B,0BAiDbA,EAE2DvF,UAAA0qC,EAA3DhrC,EAA2DmqC,CAAA,EAuCvDa,EAAAzqC,UAAA6rC,UAAA,SAAU7oC,GA3MV,IA4MI8oC,IA7MK9oC,EA6MCA,EA7MYyyB,EA6MN,CAAC,qCA5MR1c,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GAC9B,IAAK,IAAI4P,EAAI,EAAGA,EAAI8M,EAAKxyB,OAAQ0lB,CAAC,GAC1B3lB,EAAK+V,GAAG0c,EAAK9M,MACb3lB,EAAK+V,GAAG0c,EAAK9M,IAAM5Z,MAAMC,SAAShM,EAAK+V,GAAG0c,EAAK9M,IAAK,OAAO,EAClC,UAArB3lB,EAAK+V,GAAG0c,EAAK9M,OACb3lB,EAAK+V,GAAG0c,EAAK9M,IAAM,QAwMnC,EAEA8hB,EAAAzqC,UAAA2E,cAAA,WACIlF,EAAAO,UAAM2E,cAAa2T,KAAAnY,IAAA,EACfA,KAAK0f,wBACL1f,KAAK0f,sBAAsBlb,cAAa,EACpCxE,KAAK0f,sBAAsBC,iBAC3B3f,KAAK0f,sBAAsBC,eAAenb,cAAa,EAG3DxE,KAAK4f,4BACL5f,KAAK4f,0BAA0Bpb,cAAa,EACxCxE,KAAK4f,0BAA0BD,iBAC/B3f,KAAK4f,0BAA0BD,eAAenb,cAAa,CAGvE,EAzDJ8lC,EA0DAA,EA1DsBjnC,EAAAinC,6BAA4BA,EA4DH1qC,UAAAgF,EAA/CtF,EAA+CgrC,CAAA,EAA/C1lC,EAIAA,EAJavB,EAAAuB,0BAIbA,EAEyChF,UAAAyH,EAAzC/H,EAAyCgrC,CAAA,EAAzCjjC,EAIAA,EAJahE,EAAAgE,oBAIbA,EAEA/H,EAAuDI,WAAW2D,KAAK8E,gBAAhBvI,UAAAopC,EAAA1pC,CAAA,EAenD0pC,EAAAnpC,UAAA6rC,UAAA,SAAU7oC,GACNumC,EAA0BvmC,EAAM,QAAU7C,KAAKuqC,WAAa,8BAA+B,QAAUvqC,KAAKuqC,WAAa,2BAA2B,CACtJ,EAEAvB,EAAAnpC,UAAA6qC,cAAA,WACI1qC,KAAK4M,QAAQ,GAAI5M,IAAI,EACrB,IAAIoe,EAAWpe,KAAKyqC,eAAevuB,WAAWG,QAAO,EACjD+B,GAA8B,EAAlBA,EAAStb,SACjB8oC,EAAextB,EAAS,GAAG,QAAUpe,KAAKuqC,WAAa,UAE1CvqC,KAAKmN,UAAS,EACpBnF,sBAAwB,CAC3B,CACIqF,OAAQ,QAAUrN,KAAKuqC,WACvBtiC,MAAO2jC,EACP7zB,YAAa,QAAU/X,KAAKuqC,WAAa,qB,GAGjDvqC,KAAKwI,SAAQ,EAGzB,EApCJwgC,EAqCAA,EArCa3lC,EAAA2lC,kCAAiCA,EAuC9C1pC,EAA+CI,WAAW2D,KAAK8E,gBAAhBvI,UAAAqpC,EAAA3pC,CAAA,EAmB3C2pC,EAAAppC,UAAA6rC,UAAA,SAAU7oC,GACNumC,EAA0BvmC,EAAM,QAAU7C,KAAKuqC,WAAa,gCAAiC,QAAUvqC,KAAKuqC,WAAa,6BAA6B,CAC1J,EAEAtB,EAAAppC,UAAA8qC,kBAAA,WACI3qC,KAAK4M,QAAQ,GAAI5M,IAAI,EACrBA,KAAK2f,eAAe/S,QAAQ,GAAI5M,IAAI,EACpC,IAIY8H,EAJRsW,EAAWpe,KAAKkc,WAAWG,QAAO,EAClC+B,GAA8B,EAAlBA,EAAStb,SACjB8oC,EAAextB,EAAS,GAAG,QAAUpe,KAAKuqC,WAAa,WAEnDziC,EAAS9H,KAAKmN,UAAS,GACpBnF,sBAAwB,CAC3B,CACI+P,YAAa,QAAU/X,KAAKuqC,WAAa,sBACzCl9B,OAAQ,QAAUrN,KAAKuqC,WACvBtiC,MAAO2jC,C,GAGf5rC,KAAK2N,UAAU7F,EAAQ9H,IAAI,EAC3BA,KAAKwI,SAAQ,EAGzB,EA1CJygC,EA2CAA,EA3Ca5lC,EAAA4lC,0BAAyBA,EA6CtC3pC,EAA4CI,WAAW2D,KAAK8E,gBAAhBvI,UAAAspC,EAAA5pC,CAAA,EAaxC4pC,EAAArpC,UAAA6rC,UAAA,SAAU7oC,GACNumC,EAA0BvmC,EAAM,yCAA0C,sCAAsC,CACpH,EAEAqmC,EAAArpC,UAAA6qC,cAAA,WACI1qC,KAAK4M,QAAQ,GAAI5M,IAAI,EACrB,IAIY8H,EAJRsW,EAAWpe,KAAK2f,eAAezD,WAAWG,QAAO,EACjD+B,GAA8B,EAAlBA,EAAStb,SACjB+oC,EAAaztB,EAAS,GAAqB,qBAEvCtW,EAAS9H,KAAKmN,UAAS,GACpBnF,sBAAwB,CAC3B,CACIqF,OAAQ,gBACRpF,MAAO4jC,EACP9zB,YAAa,sB,GAGrB/X,KAAK2N,UAAU7F,EAAQ9H,IAAI,EAC3BA,KAAKwI,SAAQ,EAGzB,EAnCJ0gC,EAoCAA,EApCa7lC,EAAA6lC,uBAAsBA,EAsCnC5pC,EAA2CI,WAAW2D,KAAK8E,gBAAhBvI,UAAAupC,EAAA7pC,CAAA,EAgBvC6pC,EAAAtpC,UAAA6rC,UAAA,SAAU7oC,GACNumC,EAA0BvmC,EAAM,iCAAkC,8BAA8B,CACpG,EAEAsmC,EAAAtpC,UAAA+qC,qBAAA,WACI5qC,KAAK4M,QAAQ,GAAI5M,IAAI,EACrBA,KAAK2f,eAAe/S,QAAQ,GAAI5M,IAAI,EACpC,IAEQ8H,EAFJsW,EAAWpe,KAAKkc,WAAWG,QAAO,EAClC+B,GAA8B,EAAlBA,EAAStb,UACjBgF,EAAS9H,KAAKmN,UAAS,GACpBnF,sBAAwB,CAC3B,CACI+P,YAAajQ,EAAO+P,cACpBxK,OAAQ,gBACRpF,MAAOmW,EAAS,GAAqB,gB,GAG7Cpe,KAAK2N,UAAU7F,EAAQ9H,IAAI,EAC3BA,KAAKwI,SAAQ,EAErB,EApCJ2gC,EAqCAA,EArCa9lC,EAAA8lC,sBAAqBA,EAuClC7pC,EAA0CI,WAAW2D,KAAK8E,gBAAhBvI,UAAA6J,EAAAnK,CAAA,EAS/BmK,EAAA5J,UAAAwO,gBAAP,WASI,IARA,IAAI0kB,EAAS,GAOTtwB,GALJswB,EAAOltB,KAAK,CACRuO,MAAO,wBACPwY,OAAQ,Q,CACX,EAEY5sB,KAAKmN,UAAS,EAAG2K,gBAAkB,IACvCc,EAAI,EAAGA,EAAInW,EAAOK,OAAQ8V,CAAC,GAAI,CACpC,IAAIxE,EAAQ3R,EAAOmW,GACf7X,EAAgBqT,EAAO03B,aAEvB/qC,GAAWA,EAAQgrC,QAUvBhZ,EAAOltB,KAAK,CACRuO,MAAOA,EAAM2D,YAAc,IAAM3D,EAAM/G,OACvCuf,OAAQ9tB,EAAA8B,QAAQ,aAAA+N,OAAayF,EAAM/G,MAAM,GACzC2+B,OAAQjrC,EAAUA,EAAQirC,OAASnnC,KAAAA,C,CACtC,C,CAGL,OAAOkuB,CACX,EAEQtpB,EAAA5J,UAAAosC,aAAR,SAAqBppC,GACjB,OAAOA,EAAKgmC,EAAiBkC,eAAe/qC,KAAKgJ,UAAU,EAAEkiC,UACjE,EAGQzhC,EAAA5J,UAAAqsC,OAAR,SAAerpC,GACX,OAAOA,EAAKgmC,EAAiBkC,eAAe/qC,KAAKgJ,UAAU,EAAEgiC,iBACjE,EAEQvhC,EAAA5J,UAAAssC,WAAR,SAAmBtpC,GACf,OAAOA,EAAKgmC,EAAiBkC,eAAe/qC,KAAKgJ,UAAU,EAAEmiC,QACjE,EAEQ1hC,EAAA5J,UAAAusC,WAAR,SAAmBvpC,GACf,OAAOA,EAAKgmC,EAAiBkC,eAAe/qC,KAAKgJ,UAAU,EAAEiiC,QACjE,EAEUxhC,EAAA5J,UAAA6rC,UAAV,SAAoB7oC,GAGhB,IADA,IAAIwpC,EAAgE,GAC3DzzB,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GAAI,CAClC,IAAI3V,EAAMjD,KAAKksC,OAAOrpC,EAAK+V,EAAE,EACzBuyB,EAAUnrC,KAAKmsC,WAAWtpC,EAAK+V,EAAE,EACjC2B,EAAOva,KAAKosC,WAAWvpC,EAAK+V,EAAE,EAE7B3V,GAAQkoC,GAAY5wB,IAIpB8xB,EAAeppC,IAASopC,EAAeppC,GAAKkoC,IAAY5wB,EAAAA,EAAO8xB,EAAeppC,GAAKkoC,MAC/EkB,EAAeppC,KAChBopC,EAAeppC,GAAO,IAE1BopC,EAAeppC,GAAKkoC,GAAW5wB,G,CAiBvC,IAbA,IAAM+xB,EAAY,CACd3yB,eAAgB,EAChBmsB,YAAa,EACbG,WAAY,EACZsG,SAAU,EACV1G,IAAK,EACLtsB,QAAS,EACTwsB,iBAAkB,EAClBC,QAAS,EACTJ,UAAW,C,EAINhtB,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GAAI,CAElC/V,EAAK+V,GAAG8sB,iBAAmB5mC,EAAMka,aAAa0W,gBAAgB7sB,EAAK+V,GAAG4zB,sBAAuBxsC,KAAKisC,aAAappC,EAAK+V,EAAE,CAAC,GAAK,YAC5H/V,EAAK+V,GAAGyuB,sBAAwB3nC,WAAWonC,aAAaQ,UAAU,oBAAsBzkC,EAAK+V,GAAG8sB,iBAAkB5mC,EAAM8B,OAAO,EAC/HiC,EAAK+V,GAAG6sB,mBAAqB6G,EAAUzpC,EAAK+V,GAAG8sB,mBAAqB,EAGhEziC,EAAMjD,KAAKksC,OAAOrpC,EAAK+V,EAAE,EACzBuyB,EAAUnrC,KAAKmsC,WAAWtpC,EAAK+V,EAAE,EACjC2B,EAAOva,KAAKosC,WAAWvpC,EAAK+V,EAAE,EAE9B3V,GAAOsX,GAAQ4wB,GACfkB,EAAeppC,IAAQopC,EAAeppC,GAAKkoC,IAC3CkB,EAAeppC,GAAKkoC,GAAS/vB,QAAO,IAAOb,EAAKa,QAAO,IACvDvY,EAAK+V,GAAG6uB,UAAY,CAAA,E,CAGhC,EA7GJh+B,EA8GAA,EA9GapG,EAAAoG,qBA8GbA,EAEAnK,EAA8CI,WAAW2D,KAAK8E,gBAAhBvI,UAAAwP,EAAA9P,CAAA,EAOlC8P,EAAAvP,UAAA6vB,gBAAR,SAAwB+c,GAEpB,MAAsB,QAAlBA,EACO,MAEW,YAAlBA,EACO,UAEW,kBAAlBA,EACO,mBAEW,oBAAlBA,EACO,UAEW,UAAlBA,EACO,iBAGJ,WACX,EAEUr9B,EAAAvP,UAAA6rC,UAAV,SAAoB7oC,GAahB,IAZA,IAAIypC,EAAY,CACZ1G,UAAW,EACXjsB,eAAgB,EAChBmsB,YAAa,EACbD,IAAK,EACLE,iBAAkB,EAClBxsB,QAAS,EACT0sB,WAAY,EACZD,QAAS,C,EAIJptB,EAAI,EAAGA,EAAI/V,EAAKC,OAAQ8V,CAAC,GAC9B/V,EAAK+V,GAAG8sB,iBAAmB1lC,KAAK0vB,gBAAgB7sB,EAAK+V,GAAG4zB,qBAAqB,GAAK,YAClF3pC,EAAK+V,GAAGyuB,sBAAwB3nC,WAAWonC,aAAaQ,UAAU,oBAAsBzkC,EAAK+V,GAAG8sB,iBAAkB5mC,EAAM8B,OAAO,EAC/HiC,EAAK+V,GAAG6sB,mBAAqB6G,EAAUzpC,EAAK+V,GAAG8sB,mBAAqB,CAE5E,EA9CJt2B,EA+CAA,EA/Ca/L,EAAA+L,yBA+CbA,EAUA9P,EAAyCI,WAAW0rC,UAAXxrC,UAAA2R,EAAAjS,CAAA,EAmBrCiS,EAAA1R,UAAA2I,SAAA,SAASV,GAAT,IAAA/H,EAAAC,KACIA,KAAKge,IAAI,CAAE2O,QAAS,CAAA,CAAI,CAAE,EAC1B3sB,KAAKi3B,QAAUv3B,WAAW2D,KAAKgZ,QAAQ,YAAavU,EAAQ,SAACjF,GAAS,OAAA9C,EAAK6M,QAAQ/J,CAAI,CAAjB,EAAoB,YAAS,CACvG,EAEA0O,EAAA1R,UAAA2S,cAAA,SAAcW,EAAgBnK,GAA9B,IAAAjJ,EAAAC,KACIN,WAAW2D,KAAKC,YAAY,CAAC,eAAgB,eAAgB,UAAU0F,GAAa,YAAa,SAAClB,GAC1F4kC,EAAclpC,KAAKC,MAAMqE,CAAM,EACnC/H,EAAKyI,SAAS,CACVmkC,SAAUx5B,EACVy5B,WAAY5jC,EACZ6jC,aAAcH,C,CACjB,CACL,CAAC,CACL,EAEUn7B,EAAA1R,UAAA+M,QAAV,SAAkB/J,GACd7C,KAAKge,IAAI,CAAEnb,KAAMA,CAAI,CAAE,EACvB7C,KAAKge,IAAI,CAAE2O,QAAS,CAAA,CAAK,CAAE,EAC3B3sB,KAAKge,IAAI,CAAE6sB,MAAO,CAAA,CAAI,CAAE,CAC5B,EAEAt5B,EAAA1R,UAAAgU,aAAA,WACQ7T,KAAKi3B,SACLj3B,KAAKi3B,QAAQxuB,MAAK,CAE1B,EA7CJ8I,EA8CAA,EA9CalO,EAAAkO,oBA8CbA,EAEgBlO,EAAAoM,gBAAhB,SAAgCq9B,EAAsBC,GAUlD,GAAsB,OATlBha,EAAStgB,EAAEu6B,KAAK,CAChBC,SAAU,OACVtf,KAAM,MACNva,IAAK,iBACLvQ,KAAM,CAAEoL,SAAU6+B,EAAcnf,KAAMof,CAAY,EAClDG,MAAO,CAAA,EACPC,MAAO,CAAA,C,CACV,GAEUl6B,OACP,OAAO8f,EAAOqa,aAGlB1tC,WAAW00B,YAAYrB,EAAQA,EAAOmB,WAAY,EAAE,CAGxD,CAIP,EAzqBMr1B,UAAAA,WAAS,EAAA,ECAhB,SAAOA,GAAU,IAAAC,EAgBbuuC,EAVI,SAAAlb,EAAYlB,EAAyBF,GACjC/wB,KAAK+wB,WAAaA,EAClB/wB,KAAKixB,gBAAkBA,CAC3B,CAcA,SAAAoc,EAAYC,EAAc3f,EAAc4f,EAAmBC,EAAmB/c,GAC1EzwB,KAAKstC,KAAOA,EACZttC,KAAK2tB,KAAOA,EACZ3tB,KAAKwtC,UAAYA,EACjBxtC,KAAKutC,UAAYA,EACjBvtC,KAAKywB,aAAeA,CACxB,CAWJ,SAAAiC,KAxCa5zB,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,IAACozB,EAAApzB,EAAAozB,aAAApzB,EAAAozB,WAAU,IAWzBC,EAAAtyB,UAAAgxB,gBAAA,WACI,OAAO7wB,KAAK+wB,YAAuC,EAAzB/wB,KAAK+wB,WAAWjuB,MAC9C,EAXSovB,EAAAC,mBAYbA,EAiBIkb,EAAAxtC,UAAA0xB,gBAAA,WACI,MAAO,CAACvxB,KAAKwtC,WAAa,CAACxtC,KAAKutC,SACpC,EAEAF,EAAAxtC,UAAA6xB,OAAA,WACI,OAAO1xB,KAAKwtC,UAAY,IAAMxtC,KAAKutC,SACvC,EArBJF,EAsBAA,EAtBanb,EAAAmb,UAASA,EA6BX3a,EAAA+a,eAAP,WACSztC,KAAK0tC,aACN1tC,KAAK0tC,WACb,CACA,CAAC,eAAiB,QAAS,aAAkB,gBAAqB5uC,EAAA8B,QAAQ+sC,4BAC1E,CAAC,eAAiB,QAAS,aAAkB,gBAAqB7uC,EAAA8B,QAAQ+sC,4BAC1E,CAAC,aAAgB,QAAS,cAAmB,gBAAqB7uC,EAAA8B,QAAQgtC,0BAC1E,CAAC,aAAgB,QAAS,aAAkB,gBAAqB9uC,EAAA8B,QAAQitC,0BACzE,CAAC,aAAgB,QAAS,qBAAwB,gBAAqB/uC,EAAA8B,QAAQktC,0BAC/E,CAAC,aAAgB,QAAS,oBAAuB,gBAAqBhvC,EAAA8B,QAAQmtC,0BAC9E,CAAC,cAAiB,QAAS,sBAAyB,aAAmBjvC,EAAA8B,QAAQotC,2BAC/E,CAAC,gBAAkB,QAAS,mBAAuB,aAAmBlvC,EAAA8B,QAAQqtC,6BAC9E,CAAC,eAAiB,QAAS,mBAAuB,aAAmBnvC,EAAA8B,QAAQstC,4BAC7E,CAAC,eAAiB,QAAS,aAAkB,gBAAqBpvC,EAAA8B,QAAQutC,4BAC1E,CAAC,eAAiB,QAAS,aAAkB,gBAAqBrvC,EAAA8B,QAAQutC,4BAC1E,CAAC,gBAAkB,QAAS,aAAkB,aAAmBrvC,EAAA8B,QAAQwtC,6BACzE,CAAC,iBAAmB,QAAS,aAAkB,aAAmBtvC,EAAA8B,QAAQytC,8BAC1E,CAAC,eAAiB,QAAS,aAAkB,gBAAqBvvC,EAAA8B,QAAQ0tC,4BAC1E,CAAC,cAAiB,QAAS,sBAAyB,gBAAqBxvC,EAAA8B,QAAQ2tC,2BACjF,CAAC,YAAe,QAAS,kBAAsB,aAAmBzvC,EAAA8B,QAAQ4tC,yBAC1E,CAAC,YAAe,QAAS,kBAAsB,aAAmB1vC,EAAA8B,QAAQ4tC,yBAC1E,CAAC,eAAiB,QAAS,kBAAsB,aAAmB1vC,EAAA8B,QAAQ6tC,4BAC5E,CAAC,eAAiB,QAAS,kBAAsB,aAAmB3vC,EAAA8B,QAAQ6tC,4BAC5E,CAAC,eAAiB,QAAS,kBAAsB,aAAmB3vC,EAAA8B,QAAQ8tC,4BAC5E,CAAC,oBAAqB,QAAS,8BAA+B,aAAmB5vC,EAAA8B,QAAQ+tC,iCACzF,CAAC,cAAiB,QAAS,QAAc,aAAmB7vC,EAAA8B,QAAQguC,2BACpE,CAAC,cAAiB,QAAS,QAAc,aAAmB9vC,EAAA8B,QAAQiuC,2BACpE,CAAC,aAAgB,QAAS,QAAc,aAAmB/vC,EAAA8B,QAAQkuC,0BACnE,CAAC,aAAgB,QAAS,QAAc,aAAmBhwC,EAAA8B,QAAQmuC,0BACnE,CAAC,aAAgB,QAAS,QAAc,aAAmBjwC,EAAA8B,QAAQouC,0BACnE,CAAC,WAAc,QAAS,WAAiB,aAAmBlwC,EAAA8B,QAAQquC,wBACpE,CAAC,aAAgB,QAAS,WAAiB,aAAmBnwC,EAAA8B,QAAQsuC,0BACtE,CAAC,aAAgB,QAAS,WAAiB,aAAmBpwC,EAAA8B,QAAQuuC,0BACtE,CAAC,aAAgB,QAAS,WAAiB,aAAmBrwC,EAAA8B,QAAQouC,0BACtE,CAAC,aAAgB,QAAS,WAAiB,aAAmBlwC,EAAA8B,QAAQwuC,0BACtE,CAAC,aAAgB,QAAS,oBAAuB,gBAAqBtwC,EAAA8B,QAAQyuC,0BAC9E,CAAC,eAAiB,QAAS,GAAW,GAAYvwC,EAAA8B,QAAQ0uC,4BAC1D,CAAC,eAAiB,QAAS,GAAW,GAAYxwC,EAAA8B,QAAQ2uC,4BAC1D,CAAC,cAAiB,QAAS,8BAA+B,aAAmBzwC,EAAA8B,QAAQ4uC,2BACrF,CAAC,cAAiB,QAAS,wBAA0B,aAAmB1wC,EAAA8B,QAAQ6uC,2BAChF,CAAC,cAAiB,QAAS,aAAkB,aAAmB3wC,EAAA8B,QAAQ8uC,2BACxE,CAAC,cAAiB,QAAS,aAAkB,aAAmB5wC,EAAA8B,QAAQ+uC,2BACxE,CAAC,cAAiB,QAAS,aAAkB,aAAmB7wC,EAAA8B,QAAQgvC,2BACxE,CAAC,cAAiB,QAAS,aAAkB,aAAmB9wC,EAAA8B,QAAQivC,2BACxE,CAAC,cAAiB,QAAS,aAAkB,aAAmB/wC,EAAA8B,QAAQkvC,2BACxE,CAAC,aAAgB,QAAS,GAAW,GAAYhxC,EAAA8B,QAAQmvC,0BACzD,CAAC,cAAiB,QAAS,GAAW,GAAYjxC,EAAA8B,QAAQovC,2BAC1D,CAAC,cAAiB,QAAS,GAAW,GAAYlxC,EAAA8B,QAAQqvC,2BAC1D,CAAC,eAAiB,QAAS,GAAW,GAAYnxC,EAAA8B,QAAQsvC,4BAC1D,CAAC,oBAAqB,QAAS,GAAW,GAAYpxC,EAAA8B,QAAQuvC,iCAC9D,CAAC,qBAAsB,QAAS,GAAW,GAAYrxC,EAAA8B,QAAQwvC,kCAC/D,CAAC,oBAAqB,QAAS,GAAW,GAAYtxC,EAAA8B,QAAQyvC,iCAC9D,CAAC,qBAAsB,QAAS,GAAW,GAAYvxC,EAAA8B,QAAQ0vC,kCAC/D,CAAC,gBAAkB,QAAS,GAAW,GAAYxxC,EAAA8B,QAAQ2vC,6BAC3D,CAAC,mBAAoB,QAAS,GAAW,GAAYzxC,EAAA8B,QAAQ4vC,gCAC7D,CAAC,cAAiB,QAAS,aAAkB,gBAAqB1xC,EAAA8B,QAAQ6vC,2BAC1E,CAAC,cAAiB,QAAS,aAAkB,gBAAqB3xC,EAAA8B,QAAQ8vC,2BAC1E,CAAC,aAAgB,UAAW,GAAW,GAAY5xC,EAAA8B,QAAQ+vC,0BAC3D,CAAC,gBAAkB,UAAW,eAAoB,gCAAiC7xC,EAAA8B,QAAQgwC,6BAC3F,CAAC,eAAiB,UAAW,2BAA6B,aAAmB9xC,EAAA8B,QAAQiwC,4BACrF,CAAC,aAAgB,UAAW,sBAAyB,gBAAqB/xC,EAAA8B,QAAQkwC,0BAClF,CAAC,aAAgB,UAAW,gBAAoB,aAAmBhyC,EAAA8B,QAAQmwC,0BAC3E,CAAC,eAAiB,UAAW,iBAAqB,aAAmBjyC,EAAA8B,QAAQowC,4BAC7E,CAAC,cAAiB,UAAW,yBAA2B,aAAmBlyC,EAAA8B,QAAQqwC,2BACnF,CAAC,cAAiB,UAAW,WAAiB,aAAmBnyC,EAAA8B,QAAQswC,4BAIzE,EAEcxe,EAAAC,SAAd,SAAuB2a,GACnBttC,KAAKytC,eAAc,EACnB,IAAI0D,EAASnxC,KAAK0tC,WAAWjjC,OAAO,SAAA2mC,GAAK,OAAAA,EAAE,KAAO9D,CAAT,CAAa,EACtD,OAAK6D,GAA4B,IAAlBA,EAAOruC,QAGhBmV,EAAQk5B,EAAO,GACd,IAAI9D,EAAUp1B,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,EAAE,GAH1D,IAIf,EAhFOya,EAAAgb,WAAyB,KAHvBxb,EAAAQ,aAoFbA,CACH,EA7HM7zB,UAAAA,WAAS,EAAA,ECAhB,SAAOA,GAAU,IAAAC,EAECG,EAsDAiB,EA+EI+Y,EAAAA,EA2EJo4B,EAtKV,SAASC,EAAcjzB,EAAalF,GAChCzZ,WAAWinC,mBAAmBC,MAAMvoB,EAAK,SAAA1P,OAASwK,EAAK,IAAA,CAAI,CAC/D,CAEA,SAASo4B,EAAclzB,GACflF,EAAQzZ,WAAWinC,mBAAmB4E,KAAKltB,CAAG,EAClD,OAAIlF,GACO3V,KAAKC,MAAM0V,CAAK,EAAEi4B,CAEjC,CA8HJ,SAAA/9B,KAiII,SAASm+B,EAAsBr4B,EAAes4B,EAAcC,EAAoB/+B,GAE5E,IAEI,GADA4H,EAAO3L,MAAMsM,UAAU/B,EAAOu4B,EAAS/+B,CAAO,EAE1C,OAAO4H,CAEH,CAAV,MAAOhO,IAET,IAWAgO,EAXIo3B,EAASC,WAAWz4B,CAAK,EAC7B,GAAKA,GAAUw4B,EAYf,OARIE,EAA0C,OAAxBF,EAAS,OAAuB,IAIlDG,GAAcD,EAHD,IACAE,KAAKC,MAAMH,EADX,GACsC,GAEa,KAAjC,IAAIzmC,MAAO6mC,kBAAiB,EAExD,IAAI7mC,KAAK0mC,CAAW,EATvB,MAAMpyC,WAAWkB,QAAQsxC,qBAAuB,IAAMT,CAY9D,CAEA,SAASU,EAAah5B,EAAes4B,EAAcW,GAC/C,GAAIA,GACc,UAAVj5B,EACA,MAAO,QAIXk5B,EAAOzjC,MAAMsM,UAAU/B,EAAO,OAAO,EACzC,GAAI,CAACk5B,EACD,MAAM3yC,WAAWkB,QAAQ0xC,qBAAuB,IAAMb,EAGtDc,EAAU3jC,MAAMC,SAASwjC,EAAM,OAAO,EAE1C,GAAID,GAAuB,UAAZG,EACX,MAAM7yC,WAAWkB,QAAQ0xC,qBAAuB,IAAMb,EAG1D,OAAOc,CACX,CAhWSzzC,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,KAEJG,EAAAH,EAAAG,aAAAH,EAAAG,WAAU,KACPuzC,YAAc,eACdvzC,EAAAwzC,mBAAqB,6BAElBxzC,EAAAC,uBAAhB,WACI,IAAMwzC,EAAeC,QAAQlsC,IAAI/G,WAAWgT,eAAekgC,sBAAsB,EAC3EC,EAAcF,QAAQlsC,IAAI/G,WAAWgT,eAAeogC,qBAAqB,EAC1DjuC,KAAAA,IAAjB6tC,GAA8C7tC,KAAAA,IAAhBguC,IAC9BvB,EAAcryC,EAAAwzC,mBAAoB,GAAG,EACrC/yC,WAAWqzC,QAAQ,4BAA4B,EAEvD,EAEgB9zC,EAAA6R,2BAAhB,WACI,IAAM6F,EAAoBjX,WAAWgT,eAAemE,cAAoE,SAApDnX,WAAWgT,eAAemE,aAAaC,SACvGk8B,EAAazB,EAActyC,EAAAuzC,WAAW,EACtCS,EAAoB1B,EAActyC,EAAAwzC,kBAAkB,EAGxD,OADa97B,GAAY,EAAiB,MAAfq8B,GAA4C,MAAtBC,EAErD,EAEgBh0C,EAAA8R,UAAhB,WACI,IAAMmiC,EAAWhzC,EAAcizC,YAAW,EACtCtO,EAAWpyB,EAAE/S,WAAWyB,SAAS6pB,eAAelsB,EAAMwC,UAAU8xC,cAAe,CAAEC,KAAMH,CAAQ,CAAE,CAAC,EAClGvf,EAASj0B,WAAWyB,SAASmyC,QAAQxL,WAAWjD,EAAS,GAAI,CAC7DuD,UAAW,CAAA,EACXmL,eAAgB,CAAA,EAChBzmB,MAAO,MACPxN,OAAQ,MACR6oB,MAAO,CAAA,C,CACV,EACDtD,EAASjjC,KAAK,sBAAsB,EAAE+K,MAAM,WAExC2kC,EAAcryC,EAAAuzC,YAAa,GAAG,EAC9B7e,EAAOR,MAAK,CAChB,CAAC,EACD0R,EAASjjC,KAAK,eAAe,EAAE+K,MAAM,WAAM,OAAAgnB,EAAOR,MAAK,CAAZ,CAAc,EAEzDme,EAAcryC,EAAAwzC,mBAAoB,GAAG,CACzC,GAcUvyC,EAAApB,EAAAoB,gBAAApB,EAAAoB,cAAa,KACPizC,YAAhB,WAEI,IAAID,EACAM,UAAUN,UACVM,UAAwB,aAC5B,OAAON,EAAWA,EAAShqB,OAAO,EAAG,CAAC,EAAIrkB,KAAAA,CAC9C,GAGUgwB,EAAA/1B,EAAA+1B,kBAAA/1B,EAAA+1B,gBAAe,KACT4e,eAAhB,SAA+BloC,EAAWuD,GAItC,OAHAvD,EAAOA,aAAgBH,KAAOwD,MAAMC,SAAStD,EAAM,OAAO,EAAIA,EAC9DuD,EAAKA,aAAc1D,KAAOwD,MAAMC,SAASC,EAAI,OAAO,EAAIA,EAEpDvD,GAAQuD,EACDvD,EAAO,IAAMzM,EAAM8B,QAAQkO,GAAK,IAAMA,EAC7CvD,GAAQuD,GACAvD,GAAc,KAAO,IAAMzM,EAAM8B,QAAQkO,GAAK,KAAOA,GAAU,KACpE,EACX,EAEgB+lB,EAAA6e,gBAAhB,SAAgCv6B,EAAew6B,GAC3C,OAAIx6B,GAASw6B,EACFx6B,EAAQ,IAAMw6B,EACrBx6B,IAEAw6B,EACO,KAAOA,EACX,GACX,EAEgB9e,EAAAC,0BAAhB,SAA0C7c,GACtC,IAKQ27B,EAQR,OAbU,GAEN37B,EAAMnV,SACF+wC,EAAY57B,EAAMiR,OAAO,EAHvB,EAG6B,EAAE4qB,YAAY,GAAG,EAOpD77B,EANYA,EAAMiR,OAAO,EAAG2qB,CAAS,EAMrB,QAHZD,EAPE,IAKFA,EAAQ37B,EAAMiR,OAAO2qB,EAAY,CAAC,GAC5B/wC,OACE8wC,EAAM1qB,OAAO,EAAGkC,EAAO,EAAI,MAGdwoB,IAGtB37B,CACX,GAIUe,EAAAla,EAAAka,eAAAla,EAAAka,aAAY,KAEN0W,gBAAhB,SAAgC+c,EAAuBsH,GAEnD,OAAKtH,GAAkBsH,EAEXtH,GAAyC,UAAxBsH,EAEA,QAAlBtH,EACA,MACkB,cAAlBA,EACA,mBACkB,YAAlBA,EACA,UACkB,kBAAlBA,EACA,mBACmB,oBAAlBA,GAAgE,OAAxBsH,EACzC,UACkB,oBAAlBtH,GAA+D,UAAxBsH,EACvC,aACkB,UAAlBtH,EACA,iBAGJ,YAjBI,cAFA,UAoBf,GAGcxzB,EAAAA,EAAAD,EAAAC,SAAAD,EAAAC,OAAM,KACLC,QAAUxZ,WAAWuZ,OAAO+6B,MAC5B/6B,EAAAI,QAAU3Z,WAAWuZ,OAAOg7B,IAC5Bh7B,EAAAM,QAAU7Z,WAAWuZ,OAAOi7B,UAC5Bj7B,EAAAQ,QAAU/Z,WAAWuZ,OAAOk7B,OAC5Bl7B,EAAAU,eAAiBja,WAAWuZ,OAAOm7B,UACnCn7B,EAAAY,QAAUna,WAAWuZ,OAAOo7B,OAI3Br7B,EAAAqnB,2BAAhB,SAA2CiU,GACvC,OAAQA,GACJ,IAAK,WACD,OAAOr7B,EAAOM,QAClB,IAAK,cACD,OAAON,EAAOU,eAClB,IAAK,MACL,IAAK,UACD,OAAOV,EAAOM,QAClB,IAAK,mBACD,OAAON,EAAOQ,QAClB,IAAK,UACD,OAAOR,EAAOC,QAClB,IAAK,aACD,OAAOD,EAAOI,QAClB,IAAK,iBACD,OAAOJ,EAAOU,eAClB,QACI,OAAOV,EAAOY,O,CAE1B,EAEgBb,EAAA+nB,2BAAhB,SAA2CuT,GACvC,OAAQA,GACJ,IAAK,UACD,OAAOx1C,EAAM8B,QAAQ2zC,yCACzB,IAAK,aACD,OAAOz1C,EAAM8B,QAAQ4zC,yCACzB,QACI,OAAO11C,EAAM8B,QAAQ6zC,4C,CAEjC,EAIOphC,EAAAC,oBAAP,SAA2BJ,GAGvB,OAAOwhC,OADMxhC,CACO,CACxB,EAEOG,EAAAI,kBAAP,SAAyBkhC,GACrB,OAAOD,OAAOC,EAAc,CAAC,CACjC,EAEOthC,EAAAO,yBAAP,SAAgCV,EAAkB0hC,GAM9C,IALA,IAAI7hB,GAAS,IAAI3nB,MAAOC,SAAQ,EAC5B2gC,EAASqF,EAAiBwD,oBAAmB,EAE7CC,EAAUlmC,MAAMsM,UAAUhI,EAAU84B,EAAQtsC,WAAWgT,eAAeC,OAAO,EAExEiG,EAAI,EAAGA,EAAIg8B,EAAeh8B,CAAC,GAAI,CAEpC,IAAIyC,EAAczM,MAAM2L,KAAKw6B,QAAQhiB,CAAM,EAC3C,GAAI1X,EAAY05B,QAAO,IAAOD,EAAQC,QAAO,GAAM15B,EAAY25B,SAAQ,IAAOF,EAAQE,SAAQ,EAC1F,OAAOjiB,EAGXA,EAASA,EAAOtlB,QAAQ,CAAC,CAAC,C,CAG9B,OAAOslB,CACX,EA5BSj0B,EAAAuU,iBA6BbA,GAEcg+B,EAAAvyC,EAAAuyC,mBAAAvyC,EAAAuyC,iBAAgB,KACVwD,oBAAhB,WACI,MAAO,SAAiD,UAAtCn1C,WAAWgT,eAAeC,QAAsB,SAAW,QACjF,GAGU7T,EAAA+uB,cAAA/uB,EAAA+uB,YAAW,KAGL7B,cAAhB,SAA8BH,EAC1BsZ,EACAvtB,EACAK,GAEA,GAAI,CAACktB,GAA8B,IAAnBA,EAAQriC,OACpB,KAAM,sCAGV,IAAIm7B,EAAS,IAAIG,WACjBH,EAAOI,OAAS,SAAA9xB,GACZ,IACI,IAAI0oC,EAAiB1oC,EAAEuf,OAAQiH,OAC3BmiB,EAAWC,KAAK5J,KAAK6J,KAoErC,SAAavyC,GAET,IADA,IAAIwyC,EAAI,GAAIC,EAAI,EAAGC,EAAI,MAChBD,EAAIzyC,EAAK2yC,WAAaD,EAAG,EAAED,EAC9BD,GAAKX,OAAOe,aAAaC,MAAM,KAAM,IAAIC,WAAW9yC,EAAK+yC,MAAMN,EAAIC,EAAGD,EAAIC,EAAIA,CAAC,CAAC,CAAC,EAErF,OADAF,GAAKX,OAAOe,aAAaC,MAAM,KAAM,IAAIC,WAAW9yC,EAAK+yC,MAAMN,EAAIC,CAAC,CAAC,CAAC,CAE1E,EA1E8CN,CAAQ,CAAC,EAAG,CAAEtnB,KAAM,QAAQ,CAAE,EAEhE,GAAI,CAACunB,EACD,MAAMx1C,WAAWkB,QAAQi1C,mBAE7B,GAAmC,IAA/BX,EAASY,WAAWhzC,OACpB,MAAMpD,WAAWkB,QAAQi1C,mBAK7B,IAHA,IAAIE,EAAQb,EAASc,OAAOd,EAASY,WAAW,IAGvCl9B,EAAI,EAAGA,EAAIusB,EAAQriC,OAAQ8V,CAAC,GAAI,CACrC,IAAIq9B,EAAavB,OAAOe,aAAa,GAAK78B,CAAC,EAC3C,GAAIm9B,CAAAA,EAAME,EAAa,KAGnB,MAAMv2C,WAAWkB,QAAQs1C,qBAAuB,IAAMD,EAFtDF,EAAME,EAAa,KAAKV,EAAIpQ,EAAQvsB,GAAGxE,K,CAW/C,IAJA,IAAI+hC,EAAUhB,KAAKiB,MAAMC,0BAA0BN,CAAK,EAGpDlzC,EAAO,GACFukC,EAAM,EAAGA,EAAM+O,EAAQrzC,OAAQskC,CAAG,GAAI,CAE3C,IADA,IAAIkP,EAAY,GACPC,EAAS,EAAGA,EAASpR,EAAQriC,OAAQyzC,CAAM,GAAI,CACpD,IAAIC,EAAW9B,OAAOe,aAAa,GAAKc,CAAM,GAAKnP,EAAM,GACrDqP,EAAYN,EAAQ/O,GAAKjC,EAAQoR,GAAQniC,OAE7C,GAAI+wB,EAAQoR,GAAQ3oB,UAAY,CAAC6oB,EAC7B,MAAM/2C,WAAWkB,QAAQ81C,sBAAwB,IAAMF,EAG3D,OAAQrR,EAAQoR,GAAQ5oB,MACpB,IAAK,SACD2oB,EAAUnR,EAAQoR,GAAQniC,OAqFtD,SAAwB+E,EAAexG,EAAiB8+B,GACpD,GAAa,MAATt4B,EACA,OAAO,KAGPw4B,EAAS/iC,MAAMgjC,WAAWz4B,EAAOxG,CAAO,EAC5C,GAAc,MAAVg/B,EAIJ,OAAOA,EAHH,MAAMjyC,WAAWkB,QAAQ+1C,uBAAyB,IAAMlF,CAIhE,EAhG8EgF,EAAW,QAASD,CAAQ,EAC9E,MACJ,IAAK,OACDF,EAAUnR,EAAQoR,GAAQniC,OAASo9B,EAAsBiF,EAAWD,EAAU,CAAC,SAAU,IAAI,EAC7F,MACJ,IAAK,OACDF,EAAUnR,EAAQoR,GAAQniC,OAAS+9B,EAAasE,EAAWD,EAAU,CAAA,CAAK,EAC1E,MACJ,IAAK,SACDF,EAAUnR,EAAQoR,GAAQniC,OAAS+9B,EAAasE,EAAWD,EAAU,CAAA,CAAI,EACzE,MACJ,IAAK,WACDF,EAAUnR,EAAQoR,GAAQniC,OAASo9B,EAAsBiF,EAAWD,EAAU,CAAC,eAAgB,IAAI,EACnG,MACJ,QACIF,EAAUnR,EAAQoR,GAAQniC,OAASqiC,C,EAI/C5zC,EAAKgD,KAAKywC,CAAS,C,CAGvB1+B,EAAO/U,CAAI,C,CACb,MAAO+zC,GACL3+B,EAAM2+B,CAAS,C,CAEvB,EAEA3Y,EAAO4Y,kBAAkBhrB,CAAI,CACjC,CA6FP,EAvYMhtB,UAAAA,WAAS,EAAA,EZAhB,SAAOA,GAAU,IAAAC,EAmiBbg4C,EA/fA,SAAgBC,EAAyB3zC,GACrC,IAAIX,EAAgB,CAChB,CAAEkvC,OAAQ,IAAKtzB,IAAK,gCAAgC,EACpD,CAAEszB,OAAQ,IAAKtzB,IAAK,oCAAoC,EACxD,CAAEszB,OAAQ,IAAKtzB,IAAK,qBAAqB,EACzC,CAAEszB,OAAQ,GAAItzB,IAAK,yBAAyB,EAC5C,CAAEszB,OAAQ,IAAKtzB,IAAK,qCAAqC,EACzD,CAAEszB,OAAQ,IAAKtzB,IAAK,yCAAyC,EAC7D,CAAEszB,OAAQ,IAAKpnC,MAAOzL,EAAA8B,QAAQo2C,4BAA6B79B,MAAO,cAAc,EAChF,CAAEw4B,OAAQ,IAAKpnC,MAAOzL,EAAA8B,QAAQq2C,gCAAiC99B,MAAO,8BAA8B,EACpG,CAAEw4B,OAAQ,IAAKtzB,IAAK,0BAA0B,EAC9C,CAAEszB,OAAQ,IAAKtzB,IAAK,8BAA8B,EAClD,CAAEszB,OAAQ,KAAMtzB,IAAK,4BAA4B,EACjD,CAAEszB,OAAQ,KAAMtzB,IAAK,6BAA6B,EAClD,CAAEszB,OAAQ,KAAMtzB,IAAK,sBAAsB,EAC3C,CAAEszB,OAAQ,KAAMtzB,IAAK,0BAA0B,EAC/C,CAAEszB,OAAQ,KAAMtzB,IAAK,4BAA4B,EACjD,CAAEszB,OAAQ,KAAMtzB,IAAK,4BAA4B,EACjD,CAAEszB,OAAQ,KAAMtzB,IAAK,+BAA+B,EACpD,CAAEszB,OAAQ,KAAMtzB,IAAK,+BAA+B,EACpD,CAAEszB,OAAQ,KAAMtzB,IAAK,gCAAgC,EACrD,CAAEszB,OAAQ,KAAMtzB,IAAK,sCAAsC,EAC3D,CAAEszB,OAAQ,GAAItzB,IAAK,0CAA0C,EAC7D,CAAEszB,OAAQ,KAAMpnC,MAAOzL,EAAA8B,QAAQs2C,uBAAwB/9B,MAAOra,EAAA+1B,gBAAgB4e,eAAerwC,EAAUwyB,YAAY,sCAAuC,cAAc,EAAGxyB,EAAUwyB,YAAY,oCAAqC,cAAc,CAAC,CAAC,EACtP,CAAE+b,OAAQ,KAAMtzB,IAAK,mCAAmC,EACxD,CAAEszB,OAAQ,KAAMtzB,IAAK,4BAA4B,EACjD,CAAEszB,OAAQ,KAAMtzB,IAAK,wCAAwC,EAC7D,CAAEszB,OAAQ,KAAMtzB,IAAK,gCAAgC,EACrD,CAAEszB,OAAQ,KAAMtzB,IAAK,0BAA0B,EAC/C,CAAEszB,OAAQ,KAAMtzB,IAAK,0BAA0B,EAC/C,CACIszB,OAAQ,KACRpnC,MAAOzL,EAAA8B,QAAQu2C,gBACfh+B,MAAOra,EAAA+1B,gBAAgB6e,gBAAgBtwC,EAAUwyB,YAAY,mBAAoB,cAAc,EAAGxyB,EAAUwyB,YAAY,2BAA4B,cAAc,CAAC,C,EAEvK,CACI+b,OAAQ,KACRpnC,MAAOzL,EAAA8B,QAAQw2C,yBACfj+B,MAAOra,EAAA+1B,gBAAgB6e,gBAAgBtwC,EAAUwyB,YAAY,4BAA6B,cAAc,EAAGxyB,EAAUwyB,YAAY,oCAAqC,cAAc,CAAC,C,EAEzL,CACI+b,OAAQ,KACRpnC,MAAOzL,EAAA8B,QAAQy2C,mBACfl+B,MAAOra,EAAA+1B,gBAAgB6e,gBAAgBtwC,EAAUwyB,YAAY,sBAAuB,cAAc,EAAGxyB,EAAUwyB,YAAY,0BAA2B,cAAc,CAAC,C,EAEzK,CACI+b,OAAQ,KACRpnC,MAAOzL,EAAA8B,QAAQ02C,mCACfn+B,MAAOra,EAAA+1B,gBAAgB6e,gBAAgBtwC,EAAUwyB,YAAY,sCAAuC,cAAc,EAAGxyB,EAAUwyB,YAAY,0CAA2C,cAAc,CAAC,C,EAEzM,CAAE+b,OAAQ,KAAMtzB,IAAK,4BAA4B,EACjD,CAAEszB,OAAQ,KAAMtzB,IAAK,mCAAmC,EACxD,CAAEszB,OAAQ,KAAMtzB,IAAK,iCAAiC,EACtD,CAAEszB,OAAQ,KAAMtzB,IAAK,+BAA+B,EACpD,CAAEszB,OAAQ,KAAMtzB,IAAK,sCAAsC,EAC3D,CAAEszB,OAAQ,KAAMtzB,IAAK,gCAAgC,GAIzD5b,EAAO0a,QAAQ,SAAA/I,GACPA,EAAMiK,KAAOjb,EAAU0c,UAAU1L,EAAMiK,OACvCjK,EAAM7J,MAAQnH,EAAU0c,UAAU1L,EAAMiK,KAAK5X,IAAI,OAAO,EACxD2N,EAAM+E,MAAQ/V,EAAU0c,UAAU1L,EAAMiK,KAAK5X,IAAI,cAAc,EAEvE,CAAC,EA/DD,IAmEI8wC,EAAY,GAKZlqB,GAoCR,SAAyCjqB,EAA0CX,GAC/E,IAAI+0C,EAASp0C,EAAUtB,WAAW4d,sBAAsBrD,QAAO,GAAM,GACjEo7B,EAAUr0C,EAAUtB,WAAW4d,sBAAsBC,eAAetD,QAAO,GAAM,GACjFq7B,EAAUt0C,EAAUtB,WAAW8d,0BAA0BvD,QAAO,GAAM,GAEtEs7B,EAAsB,CAAA,EAE1B,GAAsB,IAAlBH,EAAO10C,QAAmC,IAAnB40C,EAAQ50C,OAAc,CAG7C,IAAIojB,EAAgBsxB,EAAO,GAAuC,oCAAK,GAEnEI,EAAoB,CAAC94C,EAAA+1B,gBAAgB4e,eAAe+D,EAAO,GAAmC,+BAAGA,EAAO,GAAiC,4BAAC,GAC9I,GAAqB,EAAjBC,EAAQ30C,OAAY,CACpB80C,EAAoB,CAAC94C,EAAA+1B,gBAAgB4e,eAAegE,EAAQ,GAA2C,uCAAGA,EAAQ,GAAyC,oCAAC,GAC5J,IAAK,IAAI7+B,EAAI,EAAGA,EAAIm5B,KAAK5mB,IAAIssB,EAAQ30C,OAAQ,CAAC,EAAG8V,CAAC,GAC9Cg/B,EAAkB/xC,KAAK/G,EAAA+1B,gBAAgB4e,eAAegE,EAAQ7+B,GAA2C,uCAAG6+B,EAAQ7+B,GAAyC,oCAAC,CAAC,C,CAIvKnW,EAAOoD,KAAK,CAAE8rC,OAAQ,KAAMpnC,MAAOzL,EAAA8B,QAAQi3C,wBAAyB1+B,MAAO+M,CAAa,CAAE,EAC1FzjB,EAAOoD,KAAK,CAAE8rC,OAAQ,KAAMpnC,MAAOzL,EAAA8B,QAAQk3C,gCAAiC3+B,MAAOy+B,EAAkB,EAAE,CAAE,EAE1E,EAA3BA,EAAkB90C,QAClB80C,EAAkBhC,MAAM,EAAG,CAAC,EAAEz4B,QAAQ,SAAA46B,GAAY,OAAAt1C,EAAOoD,KAAK,CAAE8rC,OAAQ,GAAIpnC,MAAO,GAAI4O,MAAO4+B,CAAQ,CAAE,CAAtD,CAAuD,EAGxF,EAAjBN,EAAQ30C,SACR60C,EAAsB,CAAA,EACtBl1C,EAAOoD,KAAK,CAAE8rC,OAAQ,GAAIpnC,MAAO,GAAI4O,MAAO,QAAUs+B,EAAQ30C,OAAS,IAAMhE,EAAA8B,QAAQo3C,UAAY,GAAG,CAAE,E,MAG1GL,EAAsB,CAAA,EAGF,EAAhBH,EAAO10C,QACPL,EAAOoD,KAAK,CAAE8rC,OAAQ,GAAIpnC,MAAOzL,EAAA8B,QAAQwsB,2BAA4BjU,MAAO,IAAMra,EAAA8B,QAAQq3C,4BAA8B,GAAG,CAAE,EAE5G,EAAjBP,EAAQ50C,QACRL,EAAOoD,KAAK,CAAE8rC,OAAQ,GAAIpnC,MAAOzL,EAAA8B,QAAQ6sB,+BAAgCtU,MAAO,IAAMra,EAAA8B,QAAQq3C,4BAA8B,GAAG,CAAE,EAIzI,OAAON,CACX,EAvF8Dv0C,EAAWX,CAAM,IAIvE80C,EAqFR,SAAwCn0C,GACpC,IAAI80C,EAAsB,CACtBv3C,MAAO7B,EAAA8B,QAAQwsB,2BACf+X,QAAS,CAEL,CAAE/wB,MAAO,YAAawY,OAAQ9tB,EAAA8B,QAAQisB,qBAAsBC,MAAO,EAAE,EACrE,CAAE1Y,MAAO,UAAWwY,OAAQ9tB,EAAA8B,QAAQmsB,mBAAoBD,MAAO,EAAE,EACjE,CAAE1Y,MAAO,gBAAiBwY,OAAQ9tB,EAAA8B,QAAQosB,yBAA0BF,MAAO,EAAE,EAC7E,CAAE1Y,MAAO,YAAawY,OAAQ9tB,EAAA8B,QAAQqsB,qBAAsBH,MAAO,EAAE,EACrE,CAAE1Y,MAAO,UAAWwY,OAAQ9tB,EAAA8B,QAAQssB,mBAAoBJ,MAAO,EAAE,GAErEjqB,KAAM,E,EAGN20C,EAASp0C,EAAUtB,WAAW4d,sBAAsBrD,QAAO,GAAM,GACjEo7B,EAAUr0C,EAAUtB,WAAW4d,sBAAsBC,eAAetD,QAAO,GAAM,GAErF,GAAoB,EAAhBm7B,EAAO10C,OACP,IAAK,IAAI8V,EAAI,EAAGA,EAAI4+B,EAAO10C,OAAQ8V,CAAC,GAEhC,GAAuB,GAAnBo/B,EADYG,EAAgBV,EAAS,oDAAqDD,EAAO5+B,GAA4B,uBAAC,GACpH9V,QAQV,GAPAo1C,EAAOr1C,KAAKgD,KAAK,CACbuyC,UAAWxpC,MAAMC,SAAS2oC,EAAO5+B,GAAmC,+BAAG,GAAG,EAC1Ey/B,QAASzpC,MAAMC,SAAS2oC,EAAO5+B,GAAiC,6BAAG,GAAG,EACtE0/B,cAAed,EAAO5+B,GAAuC,mCAC7DrL,UAAWqB,MAAMC,SAASmpC,EAAU,GAA2C,uCAAG,OAAO,EACzFxqC,QAASwqC,EAAU,GAAyC,oC,CAC/D,EACsB,EAAnBA,EAAUl1C,OACV,IAAK,IAAI0lB,EAAI,EAAGA,EAAIwvB,EAAUl1C,OAAQ0lB,CAAC,GACnC0vB,EAAOr1C,KAAKgD,KAAK,CACbuyC,UAAW,GACXC,QAAS,GACTC,cAAe,GACf/qC,UAAWqB,MAAMC,SAASmpC,EAAUxvB,GAA2C,uCAAG,OAAO,EACzFhb,QAASwqC,EAAUxvB,GAAyC,oC,CAC/D,C,MAIT0vB,EAAOr1C,KAAKgD,KAAK,CACbuyC,UAAWxpC,MAAMC,SAAS2oC,EAAO5+B,GAAmC,+BAAG,GAAG,EAC1Ey/B,QAASzpC,MAAMC,SAAS2oC,EAAO5+B,GAAiC,6BAAG,GAAG,EACtE0/B,cAAed,EAAO5+B,GAAuC,mCAC7DrL,UAAWqB,MAAMC,SAAS2oC,EAAO5+B,GAAmC,+BAAG,OAAO,EAC9EpL,QAASgqC,EAAO5+B,GAAiC,4B,CACpD,EAKb,IAAI2/B,EAAuB,CACvB53C,MAAO7B,EAAA8B,QAAQ6sB,+BACf0X,QAAS,CAEL,CAAE/wB,MAAO,YAAawY,OAAQ9tB,EAAA8B,QAAQisB,qBAAsBC,MAAO,EAAE,EACrE,CAAE1Y,MAAO,UAAWwY,OAAQ9tB,EAAA8B,QAAQmsB,mBAAoBD,MAAO,EAAE,EACjE,CAAE1Y,MAAO,gBAAiBwY,OAAQ9tB,EAAA8B,QAAQosB,yBAA0BF,MAAO,EAAE,EAC7E,CAAE1Y,MAAO,YAAawY,OAAQ9tB,EAAA8B,QAAQqsB,qBAAsBH,MAAO,EAAE,EACrE,CAAE1Y,MAAO,UAAWwY,OAAQ9tB,EAAA8B,QAAQssB,mBAAoBJ,MAAO,EAAE,EACjE,CAAE1Y,MAAO,WAAYwY,OAAQ9tB,EAAA8B,QAAQib,0BAA2BiR,MAAO,EAAE,EACzE,CAAE1Y,MAAO,QAASwY,OAAQ9tB,EAAA8B,QAAQ2sB,iBAAkBT,MAAO,EAAE,GAEjEjqB,KAAM,E,EAGN60C,EAAUt0C,EAAUtB,WAAW8d,0BAA0BvD,QAAO,GAAM,GACtEm8B,EAAWp1C,EAAUtB,WAAW8d,0BAA0BD,eAAetD,QAAO,GAAM,GAE1F,GAAqB,EAAjBq7B,EAAQ50C,OACR,IAAK,IACGk1C,EADCp/B,EAAI,EAAGA,EAAI8+B,EAAQ50C,OAAQ8V,CAAC,GAEjC,GAAuB,GAAnBo/B,EADYG,EAAgBK,EAAU,4DAA6Dd,EAAQ9+B,GAAqC,gCAAC,GACvI9V,QAUV,GATAy1C,EAAQ11C,KAAKgD,KAAK,CACduyC,UAAWxpC,MAAMC,SAAS6oC,EAAQ9+B,GAA4C,wCAAG,GAAG,EACpFy/B,QAASzpC,MAAMC,SAAS6oC,EAAQ9+B,GAA0C,sCAAG,GAAG,EAChF0/B,cAAeZ,EAAQ9+B,GAAgD,4CACvErL,UAAWqB,MAAMC,SAASmpC,EAAU,GAA0C,sCAAG,OAAO,EACxFxqC,QAASwqC,EAAU,GAAwC,oCAC3Dze,UAAW3qB,MAAMC,SAAS6oC,EAAQ9+B,GAA2C,uCAAG,WAAW,GAAK,KAAO,IAAM8+B,EAAQ9+B,GAA+C,2CACpKygB,OAAQzqB,MAAMC,SAAS6oC,EAAQ9+B,GAAwC,oCAAG,WAAW,GAAK,KAAO,IAAM8+B,EAAQ9+B,GAAgD,2C,CAClK,EACsB,EAAnBo/B,EAAUl1C,OACV,IAAS0lB,EAAI,EAAGA,EAAIwvB,EAAUl1C,OAAQ0lB,CAAC,GACnC+vB,EAAQ11C,KAAKgD,KAAK,CACduyC,UAAW,GACXC,QAAS,GACTC,cAAe,GACf/qC,UAAWqB,MAAMC,SAASmpC,EAAUxvB,GAA0C,sCAAG,OAAO,EACxFhb,QAASwqC,EAAUxvB,GAAwC,oCAC3D+Q,SAAU,GACVF,MAAO,E,CACV,C,MAITkf,EAAQ11C,KAAKgD,KAAK,CACduyC,UAAWxpC,MAAMC,SAAS6oC,EAAQ9+B,GAA4C,wCAAG,GAAG,EACpFy/B,QAASzpC,MAAMC,SAAS6oC,EAAQ9+B,GAA0C,sCAAG,GAAG,EAChF0/B,cAAeZ,EAAQ9+B,GAAgD,4CACvErL,UAAWqB,MAAMC,SAAS6oC,EAAQ9+B,GAA4C,wCAAG,OAAO,EACxFpL,QAASkqC,EAAQ9+B,GAA0C,sCAC3D2gB,UAAW3qB,MAAMC,SAAS6oC,EAAQ9+B,GAA2C,uCAAG,WAAW,GAAK,KAAO,IAAM8+B,EAAQ9+B,GAA+C,2CACpKygB,OAAQzqB,MAAMC,SAAS6oC,EAAQ9+B,GAAwC,oCAAG,WAAW,GAAK,KAAO,IAAM8+B,EAAQ9+B,GAAgD,2C,CAClK,EAKT6/B,EAAW,CAACP,GAEU,EAAtBK,EAAQ11C,KAAKC,QACb21C,EAAS5yC,KAAK0yC,CAAO,EAGzB,OAAOE,CACX,EAzMmDr1C,CAAS,GAGzC,eAKfiqB,GADAA,GADAA,GADAA,GADAA,GAAY,IAAMjqB,EAAUisB,SAAS,gCAAgC,GACzD,IAAMjsB,EAAUisB,SAAS,+BAA+B,GACxD,IAAMzgB,MAAMC,SAASzL,EAAUisB,SAAS,4BAA4B,EAAG,UAAU,GACjF,IAAMjsB,EAAUisB,SAAS,0BAA0B,GACnD,IAAMzgB,MAAMC,SAAS,IAAIzD,KAAQ,cAAc,EAE3D,MAAO,CACHzK,MAAO7B,EAAA8B,QAAQ83C,qCACfh2C,WAAYU,EAAUisB,SAAS,uBAAuB,EACtDhC,SAAUA,EACV6T,QAAS99B,EAAUisB,SAAS,eAAe,EAC3C6Q,WAAY98B,EAAU8rB,oBAAmB,EACzCqoB,UAAWA,EACXoB,WAAY,CACR,CACIh4C,MAAO7B,EAAA8B,QAAQg4C,0BACfn2C,OAAQA,EAAOmzC,MAAM,EAAG,EAAE,C,EAE9B,CACIj1C,MAAO7B,EAAA8B,QAAQi4C,0BACfp2C,OAAQA,EAAOmzC,MAAM,GAAI,EAAE,C,EAE/B,CACIj1C,MAAO7B,EAAA8B,QAAQk4C,6BACfr2C,OAAQA,EAAOmzC,MAAM,GAAI,EAAE,EAC3BmD,aAAc,CAAA,C,EAElB,CACIp4C,MAAO7B,EAAA8B,QAAQo4C,0BACfv2C,OAAQA,EAAOmzC,MAAM,EAAE,C,GAIvC,CAsKA,SAASuC,EAAgBH,EAAkB5jC,EAAe+E,GACtD,IAAI8/B,EAAoB,GAExB,GAAuB,EAAnBjB,EAAUl1C,OACV,IAAK,IAAI8V,EAAI,EAAGA,EAAIo/B,EAAUl1C,OAAQ8V,CAAC,GAC/Bo/B,EAAUp/B,GAAGxE,KAAW+E,GACxB8/B,EAAkBpzC,KAAKmyC,EAAUp/B,EAAE,EAK/C,OAAOqgC,CACX,CAwOI,SAAAnC,EAAYjtB,GAJZ7pB,KAAAk5C,UAAY,IACZl5C,KAAAm5C,WAAa,IAITn5C,KAAK6pB,QAAUA,EACf7pB,KAAKo5C,IAAM,IAAIC,MACf,IAAIC,EAAQ,EAGZt5C,KAAKu5C,aAAa75C,WAAWuZ,OAAOugC,UAAU,EAC9Cx5C,KAAKo5C,IAAIK,KAAK,EAAG,EAAG,IAAK,IAAK,GAAG,EACjCz5C,KAAK05C,YAAY7vB,EAAQlpB,MAAOkpB,EAAQnnB,UAAU,EAClD1C,KAAK25C,YAAY9vB,EAAQqW,UAAU,EACnClgC,KAAK45C,UAAU/vB,CAAO,EAGlBA,EAAQ0tB,WAAwC,EAA3B1tB,EAAQ0tB,UAAUz0C,SACvCw2C,CAAK,GACLt5C,KAAKo5C,IAAIS,QAAO,EAChB75C,KAAKu5C,aAAa75C,WAAWuZ,OAAOugC,UAAU,EAC9Cx5C,KAAKo5C,IAAIK,KAAK,EAAG,EAAG,IAAK,IAAK,GAAG,EACjCz5C,KAAK05C,YAAY7vB,EAAQlpB,MAAOkpB,EAAQnnB,UAAU,EAClD1C,KAAK85C,WAAWjwB,EAAQ0tB,SAAS,GAIrC,IAAK,IAAIwC,EAAI,EAAGA,GAAKT,EAAOS,CAAC,GACzB/5C,KAAKo5C,IAAIY,QAAQD,CAAC,EAClB/5C,KAAKi6C,YAAYpwB,EAAQqX,QAAS6Y,EAAGT,CAAK,CAElD,CApkBSx6C,EAAAD,EAAAC,QAAAD,EAAAC,MAAK,KAACo9B,EAAAp9B,EAAAo9B,YAAAp9B,EAAAo9B,UAAS,KA4BZC,qBAAhB,SAAqC/4B,GACjC,IAAI0zC,EAAeC,EAAyB3zC,CAAS,CAAC,EAAE82C,KAAI,CAChE,EAEgBhe,EAAAc,qBAAhB,SAAqC55B,GAoSrC,IAAkCA,EAE1B+2C,EACAC,EAtSJ,IAAItD,GAoSAuD,GAD0Bj3C,EAnScA,GAoSNtB,WAAWw4B,wBAAwBje,QAAO,GAAM,GAClF89B,EAAyB/2C,EAAUtB,WAAW04B,kBAAkBne,QAAO,GAAM,GAC7E+9B,EAAoBh3C,EAAUtB,WAAW44B,mBAAmBre,QAAO,GAAM,GAEzEi+B,EAAuD,EAA/BD,EAAsBv3C,OAC3Cu3C,EAAsBv3C,OAAS,KAAwC,IAAjCu3C,EAAsBv3C,OAAehE,EAAA8B,QAAQ25C,MAAQz7C,EAAA8B,QAAQ45C,SAAW,KAAO17C,EAAA8B,QAAQq3C,4BAC9Hn5C,EAAA8B,QAAQ8b,UAEV+9B,EAAkD,EAAhCN,EAAuBr3C,OACtCq3C,EAAuBr3C,OAAS,KAAyC,IAAlCq3C,EAAuBr3C,OAAehE,EAAA8B,QAAQ25C,MAAQz7C,EAAA8B,QAAQ45C,SAAW,KAAO17C,EAAA8B,QAAQq3C,4BAChIn5C,EAAA8B,QAAQ8b,UAEVg+B,EAA8C,EAA3BN,EAAkBt3C,OAClCs3C,EAAkBt3C,OAAS,KAAoC,IAA7Bs3C,EAAkBt3C,OAAehE,EAAA8B,QAAQ25C,MAAQz7C,EAAA8B,QAAQ45C,SAAW,KAAO17C,EAAA8B,QAAQq3C,4BACtHn5C,EAAA8B,QAAQ8b,WAEVja,EAAgB,CAEhB,CAAEkvC,OAAQ,IAAKtzB,IAAK,sCAAsC,EAC1D,CAAEszB,OAAQ,IAAKtzB,IAAK,0CAA0C,EAC9D,CAAEszB,OAAQ,IAAKtzB,IAAK,2CAA2C,EAC/D,CAAEszB,OAAQ,IAAKtzB,IAAK,+CAA+C,EACnE,CAAEszB,OAAQ,IAAKpnC,MAAOzL,EAAA8B,QAAQo2C,4BAA6B79B,MAAO,cAAc,EAChF,CAAEw4B,OAAQ,IAAKpnC,MAAOzL,EAAA8B,QAAQq2C,gCAAiC99B,MAAO,8BAA8B,EACpG,CAAEw4B,OAAQ,IAAKtzB,IAAK,gCAAgC,EACpD,CAAEszB,OAAQ,IAAKtzB,IAAK,oCAAoC,EACxD,CAAEszB,OAAQ,IAAKtzB,IAAK,kCAAkC,EACtD,CAAEszB,OAAQ,KAAMtzB,IAAK,mCAAmC,EAExD,CAAEszB,OAAQ,KAAMtzB,IAAK,6BAA6B,EAClD,CAAEszB,OAAQ,KAAMtzB,IAAK,+BAA+B,EACpD,CAAEszB,OAAQ,KAAMtzB,IAAK,+BAA+B,EACpD,CAAEszB,OAAQ,KAAMtzB,IAAK,kCAAkC,EACvD,CAAEszB,OAAQ,KAAMtzB,IAAK,+BAA+B,EACpD,CACIszB,OAAQ,KACRpnC,MAAOzL,EAAA8B,QAAQ+5C,kCACfxhC,MAAOra,EAAA+1B,gBAAgB6e,gBAAgBtwC,EAAUwyB,YAAY,2CAA4C,cAAc,EAAGxyB,EAAUwyB,YAAY,mDAAoD,cAAc,CAAC,C,EAEvN,CACI+b,OAAQ,KACRpnC,MAAOzL,EAAA8B,QAAQ02C,mCACfn+B,MAAOra,EAAA+1B,gBAAgB6e,gBAAgBtwC,EAAUwyB,YAAY,4CAA6C,cAAc,EAAGxyB,EAAUwyB,YAAY,gDAAiD,cAAc,CAAC,C,EAErN,CAAE+b,OAAQ,KAAMtzB,IAAK,oCAAoC,EACzD,CAAEszB,OAAQ,KAAMtzB,IAAK,6CAA6C,EAClE,CAAEszB,OAAQ,KAAMpnC,MAAOzL,EAAA8B,QAAQg6C,qCAAsCzhC,MAAO,IAAMmhC,EAAwB,GAAG,EAC7G,CAAE3I,OAAQ,KAAMtzB,IAAK,mCAAmC,EAExD,CAAEszB,OAAQ,KAAMtzB,IAAK,sCAAsC,EAC3D,CAAEszB,OAAQ,KAAMtzB,IAAK,oCAAoC,EACzD,CAAEszB,OAAQ,KAAMtzB,IAAK,kCAAkC,EACvD,CAAEszB,OAAQ,KAAMtzB,IAAK,2BAA2B,EAEhD,CAAEszB,OAAQ,KAAMtzB,IAAK,mCAAmC,EACxD,CAAEszB,OAAQ,GAAIpnC,MAAOzL,EAAA8B,QAAQi6C,6BAA8B1hC,MAAO,IAAMshC,EAAkB,GAAG,EAE7F,CAAE9I,OAAQ,GAAIpnC,MAAOzL,EAAA8B,QAAQk6C,wBAAyB3hC,MAAO,IAAMuhC,EAAmB,GAAG,IAItFv9B,QAAQ,SAAA/I,GACPA,EAAMiK,KAAOjb,EAAU0c,UAAU1L,EAAMiK,OACvCjK,EAAM7J,MAAQnH,EAAU0c,UAAU1L,EAAMiK,KAAK5X,IAAI,OAAO,EACxD2N,EAAM+E,MAAQ/V,EAAU0c,UAAU1L,EAAMiK,KAAK5X,IAAI,cAAc,EAEvE,CAAC,EAEG4mB,EAAW,cAKfA,GADAA,GADAA,GADAA,GADAA,GAAY,IAAMjqB,EAAUisB,SAAS,sCAAsC,GAC/D,IAAMjsB,EAAUisB,SAAS,kCAAkC,GAC3D,IAAMzgB,MAAMC,SAASzL,EAAUisB,SAAS,+BAA+B,EAAG,UAAU,GACpF,IAAMjsB,EAAUisB,SAAS,6BAA6B,GACtD,IAAMzgB,MAAMC,SAAS,IAAIzD,KAAQ,cAAc,EAEvDmsC,EA6CR,SAA8Bn0C,GAC1B,IAAI23C,EAAqC,CACrCp6C,MAAO7B,EAAA8B,QAAQg6C,qCACfzV,QAAS,CAEL,CAAE/wB,MAAO,YAAawY,OAAQ9tB,EAAA8B,QAAQisB,qBAAsBC,MAAO,EAAE,EACrE,CAAE1Y,MAAO,UAAWwY,OAAQ9tB,EAAA8B,QAAQmsB,mBAAoBD,MAAO,EAAE,EACjE,CAAE1Y,MAAO,WAAYwY,OAAQ9tB,EAAA8B,QAAQo6C,oBAAqBluB,MAAO,GAAG,GAExEjqB,KAAM,E,EAGNo4C,EAAU73C,EAAUtB,WAAWw4B,wBAAwBje,QAAO,GAAM,GACxE,GAAqB,EAAjB4+B,EAAQn4C,OACR,IAAK,IAAI8V,EAAI,EAAGA,EAAIqiC,EAAQn4C,OAAQ8V,CAAC,GACjCmiC,EAAsBl4C,KAAKgD,KAAK,CAC5BuyC,UAAWxpC,MAAMC,SAASosC,EAAQriC,GAA2C,uCAAG,GAAG,EACnFy/B,QAASzpC,MAAMC,SAASosC,EAAQriC,GAAyC,qCAAG,GAAG,EAC/EsiC,UAAWtsC,MAAMC,SAASosC,EAAQriC,GAA0C,sCAAG,WAAW,GAAK,KAAO,IAAMqiC,EAAQriC,GAA8C,yC,CACrK,EAIT,IAAIuiC,EAAsC,CACtCx6C,MAAO7B,EAAA8B,QAAQi6C,6BACf1V,QAAS,CAEL,CAAE/wB,MAAO,cAAewY,OAAQ9tB,EAAA8B,QAAQw6C,uBAAwBtuB,MAAO,EAAE,EACzE,CAAE1Y,MAAO,kBAAmBwY,OAAQ9tB,EAAA8B,QAAQy6C,2BAA4BvuB,MAAO,EAAE,EACjF,CAAE1Y,MAAO,oBAAqBwY,OAAQ9tB,EAAA8B,QAAQ06C,6BAA8BxuB,MAAO,EAAE,EACrF,CAAE1Y,MAAO,kBAAmBwY,OAAQ9tB,EAAA8B,QAAQ26C,2BAA4BzuB,MAAO,EAAE,EACjF,CAAE1Y,MAAO,iBAAkBwY,OAAQ9tB,EAAA8B,QAAQ46C,0BAA2B1uB,MAAO,EAAE,EAC/E,CAAE1Y,MAAO,kBAAmBwY,OAAQ9tB,EAAA8B,QAAQ66C,qBAAsB3uB,MAAO,EAAE,GAE/EjqB,KAAM,E,EAGN64C,EAAUt4C,EAAUtB,WAAW04B,kBAAkBne,QAAO,GAAM,GAClE,GAAqB,EAAjBq/B,EAAQ54C,OACR,IAAS8V,EAAI,EAAGA,EAAI8iC,EAAQ54C,OAAQ8V,CAAC,GACjCuiC,EAAuBt4C,KAAKgD,KAAK,CAC7B81C,YAAaD,EAAQ9iC,GAA6C,yCAClEgjC,gBAAiBF,EAAQ9iC,GAAiD,6CAC1EijC,kBAAmBH,EAAQ9iC,GAAmD,+CAC9EkjC,gBAAiBltC,MAAMC,SAAS6sC,EAAQ9iC,GAAiD,6CAAG,GAAG,EAC/FmjC,eAAgBntC,MAAMC,SAAS6sC,EAAQ9iC,GAAgD,4CAAG,GAAG,EAC7FojC,gBAAiBN,EAAQ9iC,GAAiD,4C,CAC7E,EAIT,IAAIqjC,EAAkC,CAClCt7C,MAAO7B,EAAA8B,QAAQk6C,wBACf3V,QAAS,CAEL,CAAE/wB,MAAO,cAAewY,OAAQ9tB,EAAA8B,QAAQs7C,uBAAwBpvB,MAAO,EAAE,EACzE,CAAE1Y,MAAO,aAAcwY,OAAQ9tB,EAAA8B,QAAQu7C,sBAAuBrvB,MAAO,EAAE,EACvE,CAAE1Y,MAAO,0BAA2BwY,OAAQ9tB,EAAA8B,QAAQw7C,mCAAoCtvB,MAAO,EAAE,EACjG,CAAE1Y,MAAO,yBAA0BwY,OAAQ9tB,EAAA8B,QAAQy7C,kCAAmCvvB,MAAO,EAAE,EAC/F,CAAE1Y,MAAO,0BAA2BwY,OAAQ9tB,EAAA8B,QAAQ07C,mCAAoCxvB,MAAO,EAAE,EACjG,CAAE1Y,MAAO,oBAAqBwY,OAAQ9tB,EAAA8B,QAAQ27C,6BAA8BzvB,MAAO,EAAE,EACrF,CAAE1Y,MAAO,kBAAmBwY,OAAQ9tB,EAAA8B,QAAQ47C,2BAA4B1vB,MAAO,EAAE,EACjF,CAAE1Y,MAAO,oBAAqBwY,OAAQ9tB,EAAA8B,QAAQ67C,6BAA8B3vB,MAAO,EAAE,EACrF,CAAE1Y,MAAO,oBAAqBwY,OAAQ9tB,EAAA8B,QAAQ87C,6BAA8B5vB,MAAO,EAAE,GAEzFjqB,KAAM,E,EAGN85C,EAASv5C,EAAUtB,WAAW44B,mBAAmBre,QAAO,GAAM,GAClE,GAAoB,EAAhBsgC,EAAO75C,OACP,IAAS8V,EAAI,EAAGA,EAAI+jC,EAAO75C,OAAQ8V,CAAC,GAChCqjC,EAAmBp5C,KAAKgD,KAAK,CACzB+2C,YAAaD,EAAO/jC,GAAwC,oCAC5DikC,WAAYF,EAAO/jC,GAAuC,mCAC1DkkC,uBAAwBluC,MAAMC,SAAS8tC,EAAO/jC,GAAmD,+CAAG,GAAG,EACvGmkC,wBAAyBnuC,MAAMC,SAAS8tC,EAAO/jC,GAAoD,gDAAG,GAAG,EACzGokC,wBAAyBL,EAAO/jC,GAAoD,gDACpFqkC,kBAAmBN,EAAO/jC,GAA8C,0CACxEskC,gBAAiBP,EAAO/jC,GAA4C,wCACpEukC,kBAAmBR,EAAO/jC,GAA8C,0CACxEwkC,mBAAoBxuC,MAAMC,SAAS8tC,EAAO/jC,GAA8C,0CAAG,WAAW,GAAK,KAAO,IAAM+jC,EAAO/jC,GAAsD,iD,CACxL,EAIL6/B,EAAW,GAEyB,EAApCsC,EAAsBl4C,KAAKC,QAC3B21C,EAAS5yC,KAAKk1C,CAAqB,EAGE,EAArCI,EAAuBt4C,KAAKC,QAC5B21C,EAAS5yC,KAAKs1C,CAAsB,EAGH,EAAjCc,EAAmBp5C,KAAKC,QACxB21C,EAAS5yC,KAAKo2C,CAAkB,EAGpC,OAAOxD,CACX,EAjJyCr1C,CAAS,EAEvC,CACHzC,MAAO7B,EAAA8B,QAAQy8C,qCACf36C,WAAYU,EAAUisB,SAAS,6BAA6B,EAC5DhC,SAAUA,EACV6T,QAAS99B,EAAUisB,SAAS,qBAAqB,EACjD6Q,WAAY98B,EAAU8rB,oBAAmB,EACzCqoB,UAAWA,EACXoB,WAAY,CACR,CACIh4C,MAAO7B,EAAA8B,QAAQg4C,0BACfn2C,OAAQA,EAAOmzC,MAAM,EAAG,EAAE,C,EAE9B,CACIj1C,MAAO7B,EAAA8B,QAAQi4C,0BACfp2C,OAAQA,EAAOmzC,MAAM,GAAI,EAAE,C,EAE/B,CACIj1C,MAAO,GACP8B,OAAQA,EAAOmzC,MAAM,GAAI,EAAE,EAC3BmD,aAAc,CAAA,C,EAElB,CACIp4C,MAAO7B,EAAA8B,QAAQo4C,0BACfv2C,OAAQA,EAAOmzC,MAAM,GAAI,EAAE,C,EAE/B,CACIj1C,MAAO7B,EAAA8B,QAAQi6C,6BACfp4C,OAAQA,EAAOmzC,MAAM,GAAI,EAAE,C,EAE/B,CACIj1C,MAAO7B,EAAA8B,QAAQk6C,wBACfr4C,OAAQA,EAAOmzC,MAAM,EAAE,C,GAG/B0H,kBAAmB,CACfC,WAAY,GACZC,OAAQ,GACRC,WAAY,GACZC,YAAa,G,GAvZiC,EAAExD,KAAI,CAChE,EAEgBhe,EAAA6a,yBAAwBA,EAkiBpCD,EAAAj3C,UAAAq6C,KAAA,WACIl6C,KAAKo5C,IAAIc,KAAKl6C,KAAK6pB,QAAQwD,SAAW,MAAM,CAChD,EAEAypB,EAAAj3C,UAAAo6C,YAAA,SAAY/Y,EAAiByc,EAAcC,GACvC,IAGIC,EAAQ79C,KAAKm5C,WAAa2E,EAAmB,IAO7CC,GALJ/9C,KAAKu5C,aAAa75C,WAAWuZ,OAAO+kC,QAAQ,EAC5Ch+C,KAAKo5C,IAAIK,KAAK,EAAGz5C,KAAKm5C,WANH,GAM8Bn5C,KAAKk5C,UANnC,GAM4D,GAAG,EAClFl5C,KAAKu5C,aAAa75C,WAAWuZ,OAAOk7B,MAAM,EAC1Cn0C,KAAKo5C,IAAIK,KAAK,EAAGz5C,KAAKm5C,WARH,GAQ+B,GAAKn5C,KAAKk5C,UAAW,IAAK,GAAG,EAE/D,CAACp6C,EAAA8B,QAAQq9C,WAAYn/C,EAAA8B,QAAQs9C,QAAStvC,MAAMC,SAAS,IAAIzD,KAAQ,GAAG,EAAGtM,EAAA8B,QAAQu9C,QAASvvC,MAAMC,SAAS,IAAIzD,KAAQ,GAAG,GAAGoX,KAAK,GAAG,GAC7I47B,EAAW,CAACt/C,EAAA8B,QAAQy9C,KAAMV,EAAM7+C,EAAA8B,QAAQ09C,GAAIV,GAAYp7B,KAAK,GAAG,EAEpExiB,KAAKu+C,aAAa,SAAS,EAC3Bv+C,KAAKw+C,UAAUT,EAZI,EAYqBF,EAAO,CAAEvwB,MAAO,OAAQ9N,KAb3C,GAa+D,CAAE,EACtFxf,KAAKw+C,UAAU1/C,EAAA8B,QAAQ69C,mCAAqC,KAAOvd,GAAUlhC,KAAKo5C,IAAIsF,aAAaX,CAAS,EAAI/9C,KAAKk5C,UAAYl5C,KAAKo5C,IAAIsF,aAAaN,CAAQ,GAAK,EAAGP,EAAO,CAAEvwB,MAAO,SAAU9N,KAd5K,GAcgM,CAAE,EACvNxf,KAAKw+C,UAAUJ,EAAUp+C,KAAKk5C,UAdX,EAcqC2E,EAAO,CAAEvwB,MAAO,QAAS9N,KAf5D,GAegF,CAAE,CAC3G,EAEAs3B,EAAAj3C,UAAA65C,YAAA,SAAY/4C,EAAe+B,GAWvB1C,KAAKu5C,aAAa75C,WAAWuZ,OAAO+kC,QAAQ,EAC5Ch+C,KAAKo5C,IAAIK,KAAK,EAAG,EAAGz5C,KAAKk5C,UAXN,GAW+B,GAAG,EACrDl5C,KAAKu5C,aAAa75C,WAAWuZ,OAAOk7B,MAAM,EAC1Cn0C,KAAKo5C,IAAIK,KAAK,EAAGkF,KAAoB3+C,KAAKk5C,UAAW,IAAK,GAAG,EAG7Dl5C,KAAKo5C,IAAIwF,YAfW,EAec,EAClC5+C,KAAKu+C,aAAa7+C,WAAWuZ,OAAOugC,UAAU,EAC9Cx5C,KAAKo5C,IAAIjhB,KAAKx3B,EAfK,EACNg+C,CAc4B,EAGzC3+C,KAAKu5C,aAAa,SAAS,EAC3Bv5C,KAAKu+C,aAAa7+C,WAAWuZ,OAAO+kC,QAAQ,EAC5Ch+C,KAAKo5C,IAAIyF,YAAY,MAAM,EAC3B7+C,KAAKo5C,IAAIwF,YAAYE,KAAuB,EACxCC,EAAW/+C,KAAKo5C,IAAIsF,aAAa5/C,EAAA8B,QAAQ,iCAAmC8B,EAAW,EAAI,IAC/F1C,KAAKo5C,IAAI4F,YAAYC,IAAoBC,KAAiBH,EAAU,IAAK,GAAK,GAAK,GAAG,EACtF/+C,KAAKo5C,IAAIjhB,KAAKr5B,EAAA8B,QAAQ,iCAAmC8B,GAAau8C,IAAoBC,IAAe,EAEzGl/C,KAAKo5C,IAAIyF,YAAY,QAAQ,EAC7B7+C,KAAKo5C,IAAIwF,YA5Bc,GA4Bc,EACrC5+C,KAAKu+C,aAAa,SAAS,EAC3Bv+C,KAAKo5C,IAAIjhB,KAAKr5B,EAAA8B,QAAQ,6CAA+C8B,GA7BlD,EA6B8Eq8C,EAAW,EA3B5FJ,IA2BwG,EAGpHQ,EAAW1sC,EAAEu6B,KAAK,CAClBoS,OAAQ,MACRhsC,IAAK,8DACL+5B,MAAO,CAAA,C,CACV,EAAEkS,aACHr/C,KAAKo5C,IAAIkG,SAASH,EAAU,MAAOn/C,KAAKk5C,UArCrB,EAGH,MAkC8DyF,KAlC9D,MACC,IAiCyH,CAC9I,EAEA7H,EAAAj3C,UAAA85C,YAAA,SAAYzZ,GACR,IASIqf,GAAev/C,KAAKk5C,UAAY,IAAc,EAW9C9Y,GAPJpgC,KAAKu5C,aAAa75C,WAAWuZ,OAAOumC,SAAS,EAC7Cx/C,KAAKo5C,IAAIK,KAAK,EAdK,GAcYz5C,KAAKk5C,UAbjB,GAa0C,GAAG,EAGhC,qBAA5BhZ,EAAWzQ,eACXyQ,EAAWzQ,aAAe,WAEZ3wB,EAAAka,aAAaqnB,2BAA2BH,EAAWzQ,YAAY,GAC7EgwB,EAAgB//C,WAAWuZ,OAAOymC,WASlCC,GAPJ3/C,KAAKw+C,UAAU1/C,EAAA8B,QAAQ,cAAgBs/B,EAAWzQ,cAAezvB,KAAKk5C,UAAY,EAAG0G,GAAY,CAC7F7mC,MAAOrZ,WAAWuZ,OAAO+kC,SACzBx+B,KArBiB,IAsBjB8N,MAAO,Q,CACV,EAGWttB,KAAKk5C,UAzBJ,IA0Bbl5C,KAAKu+C,aAAa7+C,WAAWuZ,OAAO+kC,QAAQ,EAC5Ch+C,KAAKu5C,aAAakG,CAAa,EAE3Bvf,EAAW1Q,sBACXxvB,KAAKw+C,UAAU1/C,EAAAka,aAAa+nB,2BAA2Bb,EAAWzQ,YAAY,EAAGkwB,EAAOC,GAAY,CAAEtyB,MAAO,SAAU9N,KAjCvG,EAiC0H,CAAE,EAC5Ixf,KAAKw+C,UAAU5vC,MAAMC,SAASqxB,EAAW1Q,oBAAqB,GAAG,EAAGmwB,EAAOC,GAAW,CAAEtyB,MAAO,SAAU9N,KAjC1F,CAiC4G,CAAE,EAC7Hxf,KAAKu5C,aAAanZ,CAAW,GAEjCpgC,KAAKo5C,IAAIyG,OAAOF,EAjCJhB,GACI,IAgCyB,GAAG,EAE5C3+C,KAAKo5C,IAAIK,KADTkG,GAASJ,EACYK,KAAuBL,EAjC5B,GAiCoD,GAAG,EAEnErf,EAAW3Q,cACXvvB,KAAKw+C,UAAU1/C,EAAA8B,QAAQkgC,yCAA0C6e,EAAOC,GAAY,CAAEtyB,MAAO,SAAU9N,KA1CvF,EA0C0G,CAAE,EAC5Hxf,KAAKw+C,UAAU5vC,MAAMC,SAASqxB,EAAW3Q,YAAa,GAAG,EAAGowB,EAAOC,GAAW,CAAEtyB,MAAO,SAAU9N,KA1ClF,CA0CoG,CAAE,EACrHxf,KAAKu5C,aAAanZ,CAAW,GAEjCpgC,KAAKo5C,IAAIyG,OAAOF,EA1CJhB,GACI,IAyCyB,GAAG,EAE5C3+C,KAAKo5C,IAAIK,KADTkG,GAASJ,EACYK,KAAuBL,EA1C5B,GA0CoD,GAAG,EAEnErf,EAAW5Q,wBACXtvB,KAAKw+C,UAAU1/C,EAAA8B,QAAQggC,2CAA4C+e,EAAOC,GAAY,CAAEtyB,MAAO,SAAU9N,KAnDzF,EAmD4G,CAAE,EAC9Hxf,KAAKw+C,UAAU5vC,MAAMC,SAASqxB,EAAW5Q,sBAAuB,GAAG,EAAGqwB,EAAOC,GAAW,CAAEtyB,MAAO,SAAU9N,KAnD5F,CAmD8G,CAAE,EAC/Hxf,KAAKu5C,aAAanZ,CAAW,GAEjCpgC,KAAKo5C,IAAIyG,OAAOF,EAnDJhB,GACI,IAkDyB,GAAG,EAE5C3+C,KAAKo5C,IAAIK,KADTkG,GAASJ,EACYK,KAAuBL,EAnD5B,GAmDoD,GAAG,EAEvEv/C,KAAKw+C,UAAU1/C,EAAA8B,QAAQk/C,uCAAwCH,EAAOC,GAAY,CAAEtyB,MAAO,SAAU9N,KA3DjF,EA2DoG,CAAE,EAC1Hxf,KAAKw+C,UAAU5vC,MAAMC,SAASqxB,EAAW9Q,aAAc,GAAG,EAAGuwB,EAAOC,GAAW,CAAEtyB,MAAO,SAAU9N,KA3D/E,CA2DiG,CAAE,EACtHxf,KAAKu5C,aAAanZ,CAAW,EAC7BpgC,KAAKo5C,IAAIyG,OAAOF,EA1DJhB,GACI,IAyDyB,GAAG,CAChD,EAEA7H,EAAAj3C,UAAA2+C,UAAA,SAAUrmB,EAAc4nB,EAAWC,EAAWj/C,GAE1C,GAAI,CAACo3B,EACD,OAAO,EAGPp3B,EAAQgY,OACR/Y,KAAKu+C,aAAax9C,EAAQgY,KAAK,EAG/BhY,EAAQye,MACRxf,KAAKo5C,IAAIwF,YAAY79C,EAAQye,IAAI,EAGjCze,EAAQm+B,OACRl/B,KAAKo5C,IAAI6G,aAAal/C,EAAQm+B,KAAK,EAGvC,IAAIghB,EAAYlgD,KAAKo5C,IAAIsF,aAAavmB,CAAI,EAE1C,OAAQp3B,EAAQusB,OACZ,IAAK,SACDttB,KAAKo5C,IAAIjhB,KAAKA,EAAM4nB,EAAIG,EAAY,EAAGF,CAAC,EACxC,MACJ,IAAK,QACDhgD,KAAKo5C,IAAIjhB,KAAKA,EAAM4nB,EAAIG,EAAWF,CAAC,EACpC,MACJ,QACIhgD,KAAKo5C,IAAIjhB,KAAKA,EAAM4nB,EAAGC,CAAC,C,CAMhC,OAFAhgD,KAAKo5C,IAAI6G,aAAa,QAAQ,EAEvBC,CACX,EAEApJ,EAAAj3C,UAAA0+C,aAAA,SAAaxlC,GACLonC,EAAMzgD,WAAWyB,SAAS8X,OAAOmnC,WAAWrnC,CAAK,EACrD/Y,KAAKo5C,IAAImF,aAAa4B,EAAIE,EAAGF,EAAIG,EAAGH,EAAII,CAAC,CAC7C,EAEAzJ,EAAAj3C,UAAA05C,aAAA,SAAaxgC,GACLonC,EAAMzgD,WAAWyB,SAAS8X,OAAOmnC,WAAWrnC,CAAK,EACrD/Y,KAAKo5C,IAAIG,aAAa4G,EAAIE,EAAGF,EAAIG,EAAGH,EAAII,CAAC,CAC7C,EAEAzJ,EAAAj3C,UAAA2gD,aAAA,SAAaznC,GACLonC,EAAMzgD,WAAWyB,SAAS8X,OAAOmnC,WAAWrnC,CAAK,EACrD/Y,KAAKo5C,IAAIoH,aAAaL,EAAIE,EAAGF,EAAIG,EAAGH,EAAII,CAAC,CAC7C,EAEAzJ,EAAAj3C,UAAA+5C,UAAA,SAAU/vB,GAkBN,IAjBA,IAGI9oB,EAAUrB,WAAWqc,cAAcC,MAAM6N,EAAQyzB,kBAAmB,CACpEmD,QAAS,EACTC,OAAQ,GACRnD,WAAY,KACZC,OAAQ,GACRC,WAAY,GACZC,YAAa,G,CAChB,EAKGiD,EAfa,GAgBbC,EAAW,EACNN,EAAI,EAAGA,EAAIz2B,EAAQ8uB,WAAW71C,OAAQw9C,CAAC,GAAI,CAChD,IAAIO,EAAQh3B,EAAQ8uB,WAAW2H,GAE3BO,EAAM9H,eACN6H,GAAY7/C,EAAQ28C,YACpBiD,EAtBS,IA0Bb3gD,KAAKu+C,aAAa,SAAS,EAC3Bv+C,KAAKo5C,IAAIwF,YAfY,EAekB,EACvC+B,GA3Be,IA2BY,GAC3B3gD,KAAKo5C,IAAIjhB,KAAK0oB,EAAMlgD,MAAOigD,EAAW7/C,EAAQ2/C,OAAQC,CAAQ,EAC9DA,GA7Be,IA6BY,IAG3B3gD,KAAKo5C,IAAIwF,YApBQ,CAoBkB,EACnC5+C,KAAKu+C,aAAa,SAAS,EAC3B,IAAK,IAAInuB,EAAI,EAAGA,EAAIywB,EAAMp+C,OAAOK,OAAQstB,CAAC,GAAI,CAC1C,IAAIhc,EAAQysC,EAAMp+C,OAAO2tB,GAOrB7lB,GANA6J,EAAM2kC,eACN6H,GAAY7/C,EAAQ28C,YACpBiD,EAvCK,IA0CT3gD,KAAKo5C,IAAIjhB,KAAK/jB,EAAMu9B,OAAQiP,EAAW7/C,EAAQ0/C,QAASE,CAAQ,EACpD3gD,KAAKo5C,IAAI0H,gBAAgB1sC,EAAM7J,MAAOxJ,EAAQw8C,UAAU,GAEhEpkC,GADJnZ,KAAKo5C,IAAIjhB,KAAK5tB,EAAOq2C,EAAW7/C,EAAQ2/C,OAAQC,CAAQ,EAC5C3gD,KAAKo5C,IAAI0H,gBAAgB1sC,EAAM+E,MAAOpY,EAAQ08C,UAAU,GACpEz9C,KAAKo5C,IAAIjhB,KAAKhf,EAAOynC,EAAW7/C,EAAQy8C,OAAQmD,CAAQ,EAExDA,GA/CW,KAgDNI,MAAMC,QAAQz2C,CAAK,GAAoB,EAAfA,EAAMzH,QAAgBi+C,MAAMC,QAAQ7nC,CAAK,GAAoB,EAAfA,EAAMrW,UAC7E69C,GAjDO,IAiDoB,I,EAK3C,EAEA7J,EAAAj3C,UAAAi6C,WAAA,SAAWrB,GAaP,IAZA,IACIwI,EAAYjhD,KAAKm5C,WAAa,GAO9B+H,EAAYlhD,KAAKk5C,UAAY,GAE7B0G,EAVc,GAYThnC,EAAI,EAAGA,EAAI6/B,EAAS31C,OAAQ8V,CAAC,GAAI,CACtC,IAAIuoC,GAAaF,EAbH,GAGE,GAU2CxI,EAAS31C,QAAU21C,EAAS31C,OACnFs+C,EAASxB,EAXG,GAcZyB,EAAarhD,KAAKw+C,UAAU/F,EAAS7/B,GAAGjY,MAAO2gD,GAAiBF,EAAS,EAAG,CAAE5hC,KAb9D,GAauFzG,MAAOrZ,WAAWuZ,OAAO+kC,QAAQ,CAAE,EAC1IuD,EAAc,IAAM9I,EAAS7/B,GAAG/V,KAAKC,OAAS,KAAmC,IAA5B21C,EAAS7/B,GAAG/V,KAAKC,OAAehE,EAAA8B,QAAQ25C,MAAQz7C,EAAA8B,QAAQ45C,SAAW,IAC5Hx6C,KAAKw+C,UAAU+C,EAZD,GAY4BF,EAAa,IAAKD,EAAS,IAAK,CAAE5hC,KAdxD,EAciFzG,MAAOrZ,WAAWuZ,OAAOuoC,IAAI,CAAE,EAGpI5B,EAAQ5/C,KAAKyhD,UAAUhJ,EAAS7/B,GAflB,GAemCwoC,EAAQF,EAf3C,GAeoEC,CAAS,C,CAEnG,EAEArK,EAAAj3C,UAAA4hD,UAAA,SAAUC,EAAsBC,EAAQP,EAAQt0B,EAAOq0B,GACnD,IAOIxB,EAAQgC,EACR/B,EAAQwB,EAERQ,EAAmBliD,WAAWuZ,OAAO4oC,SAKrCC,EAAmBpiD,WAAWuZ,OAAO+kC,SAGzCh+C,KAAKu5C,aAAaqI,CAAgB,EAClC5hD,KAAKwgD,aAAa9gD,WAAWuZ,OAAOugC,UAAU,EAC9Cx5C,KAAKo5C,IAAIK,KAAKkG,EAAOC,EAAO9yB,EAhBT,IAgB8B,IAAI,EAGrD9sB,KAAKo5C,IAAI2I,KAAKJ,EAFd/B,GAjBmB,IAmBU+B,EAAS70B,EAAO8yB,CAAK,EAClD,IAAK,IAAIhnC,EAAI,EAAGA,EAAI8oC,EAAQvc,QAAQriC,OAAQ8V,CAAC,GAAI,CAC7C,IAAI29B,EAASmL,EAAQvc,QAAQvsB,GAC7B5Y,KAAKw+C,UAAUjI,EAAO3pB,OAAQ+yB,EAxBpB,EAwBqCC,EAAQ,EAxB7C,EAwB0D,CAAEpgC,KA1BjD,EA0B2E0f,MAAO,OAAQnmB,MAf7F,SAemH,CAAE,EACvI4mC,GAASpJ,EAAOzpB,K,CAIpB,IAASlU,EAAI,EAAGA,EAAI8oC,EAAQ7+C,KAAKC,OAAQ8V,CAAC,GAAI,CAE1C,IADA+mC,EAAQgC,EACJK,EAAUN,EAAQ7+C,KAAK+V,GAI3B,GAHA5Y,KAAKu5C,aAAa3gC,EAAI,GAAM,EArBZ,UACS,SAoB4C,EACrE5Y,KAAKo5C,IAAIK,KAAKkG,EAAOC,EAAO9yB,EA9BhB,IA8BkC,IAAI,EAE1Bs0B,EAASD,GADjCvB,GA/BY,KAAA,IAgCgC,CACxC,IAAK,IAAIp3B,EAAI,EAAGA,EAAIk5B,EAAQvc,QAAQriC,OAAQ0lB,CAAC,GAAI,CACzC+tB,EAASmL,EAAQvc,QAAQ3c,GAC7BxoB,KAAKw+C,UAAU,OAAQmB,EAtCrB,EAsCsCC,EAAQ,IAtC9C,EAsC6D,CAAEpgC,KAvCnD,EAuC8EzG,MAAO+oC,CAAgB,CAAE,EACrHnC,GAASpJ,EAAOzpB,K,CAEpB,K,CAEA,IAAStE,EAAI,EAAGA,EAAIk5B,EAAQvc,QAAQriC,OAAQ0lB,CAAC,GAAI,CACzC+tB,EAASmL,EAAQvc,QAAQ3c,GAC7BxoB,KAAKw+C,UAAUx+C,KAAKiiD,SAASD,EAAQzL,EAAOniC,OAAQmiC,EAAOzpB,MAAQ,CAAC,EAAG6yB,EA7CrE,EA6CsFC,EAAQ,IA7C9F,EA6C6G,CAAEpgC,KA9CnG,EA8C8HzG,MAAO+oC,CAAgB,CAAE,EACrKnC,GAASpJ,EAAOzpB,K,CAGxB9sB,KAAKo5C,IAAI2I,KAAKJ,EAAQ/B,EAAO+B,EAAS70B,EAAO8yB,CAAK,C,CAGtD,OAAOA,CACX,EAEA9I,EAAAj3C,UAAAoiD,SAAA,SAAS9pB,EAAM+pB,GACX,IAEQC,EAFJC,EAAQpiD,KAAKo5C,IAAI0H,gBAAgB3oB,GAAQ,GAAI+pB,CAAQ,EACzD,OAAmB,EAAfE,EAAMt/C,QACFq/C,EAAcC,EAAM,IAEpBD,EADAniD,KAAKo5C,IAAIsF,aAAayD,EAAc,KAAK,EAAID,EAC/BC,EAAYj5B,OAAO,EAAGk5B,EAAM,GAAGt/C,OAAS,CAAC,EAEpDq/C,GAAc,OAEdC,EAAM,EAErB,EAzXJtL,EA0XAA,CACH,EA95BMj4C,UAAAA,WAAS,EAAA","file":"Seven2one.Remit.min.js","sourcesContent":["module Seven2one.Remit.PdfExport {\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface TrumPdfGroup {\r\n title: string;\r\n fields: { number: string, label: string, value: string, switchColumn: boolean }[];\r\n switchColumn?: boolean;\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface TrumPdfGrid {\r\n title: string;\r\n columns: { field: string, header: string, width: number }[];\r\n data: { [key: string]: string }[];\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface TrumPdfContent {\r\n title: string;\r\n actionType: string;\r\n fileName: string;\r\n tradeId: string;\r\n trumGroups: TrumPdfGroup[];\r\n statusInfo: Controls.ReportStatusInfo;\r\n formLayoutOptions?: { numberX?: number; labelX?: number; labelWidth?: number; valueX?: number; valueWidth?: number; columnWidth?: number };\r\n trumGrids: TrumPdfGrid[];\r\n }\r\n\r\n export function createTable1TradePdf(formModel: Controls.Table1TradeFormModel) {\r\n new TrumPdfCreator(getTable1TradePdfContent(formModel)).save();\r\n }\r\n\r\n export function createTable2TradePdf(formModel: Controls.Table2TradeFormModel) {\r\n new TrumPdfCreator(getTable2TradePdfContent(formModel)).save();\r\n }\r\n\r\n export function getTable1TradePdfContent(formModel: Controls.Table1TradeFormModel): TrumPdfContent {\r\n var fields: any[] = [\r\n { number: \"1\", key: \"RemitTrade_MarketParticipantId\" },\r\n { number: \"2\", key: \"RemitTrade_MarketParticipantIdType\" },\r\n { number: \"3\", key: \"RemitTrade_TraderId\" },\r\n { number: \"\", key: \"RemitTrade_TraderIdType\" },\r\n { number: \"4\", key: \"RemitTrade_OtherMarketParticipantId\" },\r\n { number: \"5\", key: \"RemitTrade_OtherMarketParticipantIdType\" },\r\n { number: \"6\", label: Strings.TrumLabel_ReportingEntityId, value: \"Seven2one.DE\" },\r\n { number: \"7\", label: Strings.TrumLabel_ReportingEntityIdType, value: \"ace - ACER registration code\" },\r\n { number: \"8\", key: \"RemitTrade_BeneficiaryId\" },\r\n { number: \"9\", key: \"RemitTrade_BeneficiaryIdType\" },\r\n { number: \"10\", key: \"RemitTrade_TradingCapacity\" },\r\n { number: \"11\", key: \"RemitTrade_BuySellIndicator\" },\r\n { number: \"12\", key: \"RemitTrade_Aggressor\" },\r\n { number: \"21\", key: \"RemitContract_ContractId\" },\r\n { number: \"22\", key: \"RemitContract_ContractName\" },\r\n { number: \"23\", key: \"RemitContract_ContractType\" },\r\n { number: \"24\", key: \"RemitContract_EnergyCommodity\" },\r\n { number: \"25\", key: \"RemitContract_FixingIndexName\" },\r\n { number: \"26\", key: \"RemitContract_SettlementMethod\" },\r\n { number: \"27\", key: \"RemitContract_OrganisedMarketPlaceId\" },\r\n { number: \"\", key: \"RemitContract_OrganisedMarketPlaceIdType\" },\r\n { number: \"28\", label: Strings.TrumLabel_TradingHours, value: FormatingHelper.formatTimeSpan(formModel.getProperty(\"RemitContract_TradingHoursStartTime\", \"displayValue\"), formModel.getProperty(\"RemitContract_TradingHoursEndTime\", \"displayValue\")) },\r\n { number: \"29\", key: \"RemitContract_LastTradingDateTime\" },\r\n { number: \"30\", key: \"RemitTrade_TransactionTime\" },\r\n { number: \"31\", key: \"RemitTrade_UniqueTransactionIdentifier\" },\r\n { number: \"32\", key: \"RemitTrade_LinkedTransactionId\" },\r\n { number: \"33\", key: \"RemitTrade_LinkedOrderId\" },\r\n { number: \"34\", key: \"RemitTrade_VoiceBrokered\" },\r\n {\r\n number: \"35\",\r\n label: Strings.TrumLabel_Price,\r\n value: FormatingHelper.formatValueUnit(formModel.getProperty(\"RemitTrade_Price\", \"displayValue\"), formModel.getProperty(\"RemitTrade_PriceCurrency\", \"displayValue\"))\r\n },\r\n {\r\n number: \"38\",\r\n label: Strings.TrumLabel_NotionalAmount,\r\n value: FormatingHelper.formatValueUnit(formModel.getProperty(\"RemitTrade_NotionalAmount\", \"displayValue\"), formModel.getProperty(\"RemitTrade_NotionalAmountCurrency\", \"displayValue\"))\r\n },\r\n {\r\n number: \"40\",\r\n label: Strings.TrumLabel_Quantity,\r\n value: FormatingHelper.formatValueUnit(formModel.getProperty(\"RemitTrade_Quantity\", \"displayValue\"), formModel.getProperty(\"RemitTrade_QuantityUnit\", \"displayValue\"))\r\n },\r\n {\r\n number: \"41\",\r\n label: Strings.TrumLabel_NotionalContractQuantity,\r\n value: FormatingHelper.formatValueUnit(formModel.getProperty(\"RemitTrade_NotionalContractQuantity\", \"displayValue\"), formModel.getProperty(\"RemitTrade_NotionalContractQuantityUnit\", \"displayValue\"))\r\n },\r\n { number: \"43\", key: \"RemitTrade_TerminationDate\" },\r\n { number: \"48\", key: \"RemitContract_DeliveryPointOrZone\" },\r\n { number: \"49\", key: \"RemitContract_DeliveryStartDate\" },\r\n { number: \"50\", key: \"RemitContract_DeliveryEndDate\" },\r\n { number: \"51\", key: \"RemitContract_DeliveryPeriodDuration\" },\r\n { number: \"52\", key: \"RemitContract_DeliveryLoadType\" }\r\n ];\r\n\r\n // fill missing labels values\r\n fields.forEach(field => {\r\n if (field.key && formModel.fieldDict[field.key]) {\r\n field.label = formModel.fieldDict[field.key].get(\"label\");\r\n field.value = formModel.fieldDict[field.key].get(\"displayValue\");\r\n }\r\n });\r\n\r\n var allProfilesIncluded = addDeliveryProfilesToPdfContent(formModel, fields);\r\n\r\n var trumGrids = [];\r\n if (!allProfilesIncluded) {\r\n trumGrids = createDeliveryProfilesPdfGrids(formModel);\r\n }\r\n\r\n var fileName = \"Table1Trade\";\r\n fileName += \"_\" + formModel.getValue(\"RemitTrade_MarketParticipantId\");\r\n fileName += \"_\" + formModel.getValue(\"RemitContract_EnergyCommodity\");\r\n fileName += \"_\" + kendo.toString(formModel.getValue(\"RemitTrade_TransactionTime\"), \"yyyyMMdd\");\r\n fileName += \"_\" + formModel.getValue(\"RemitContract_ContractId\");\r\n fileName += \"_\" + kendo.toString(new Date(), \"yyyyMMddHHmm\");\r\n\r\n return {\r\n title: Strings.ReportConfirmation_Title_Table1Trade,\r\n actionType: formModel.getValue(\"RemitTrade_ActionType\"),\r\n fileName: fileName,\r\n tradeId: formModel.getValue(\"RemitTrade_Id\"),\r\n statusInfo: formModel.getReportStatusInfo(),\r\n trumGrids: trumGrids,\r\n trumGroups: [\r\n {\r\n title: Strings.TrumGroup_ContractParties,\r\n fields: fields.slice(0, 13)\r\n },\r\n {\r\n title: Strings.TrumGroup_ContractDetails,\r\n fields: fields.slice(13, 23)\r\n },\r\n {\r\n title: Strings.TrumGroup_TransactionDetails,\r\n fields: fields.slice(23, 33),\r\n switchColumn: true\r\n },\r\n {\r\n title: Strings.TrumGroup_DeliveryProfile,\r\n fields: fields.slice(33)\r\n }\r\n ]\r\n };\r\n }\r\n\r\n function addDeliveryProfilesToPdfContent(formModel: Controls.Table1TradeFormModel, fields: any[]): boolean {\r\n var dpData = formModel.dataLoader.deliveryProfileLoader.getData() || [];\r\n var dpiData = formModel.dataLoader.deliveryProfileLoader.intervalLoader.getData() || [];\r\n var pqdData = formModel.dataLoader.priceQuantityDetailLoader.getData() || [];\r\n\r\n var allProfilesIncluded = true;\r\n\r\n if (dpData.length === 1 && pqdData.length === 0) {\r\n // simple view\r\n\r\n var daysOfTheWeek = dpData[0][\"RemitDeliveryProfile_DaysOfTheWeek\"] || \"\";\r\n\r\n var deliveryIntervals = [FormatingHelper.formatTimeSpan(dpData[0][\"RemitDeliveryProfile_StartTime\"], dpData[0][\"RemitDeliveryProfile_EndTime\"])];\r\n if (dpiData.length > 0) {\r\n deliveryIntervals = [FormatingHelper.formatTimeSpan(dpiData[0][\"RemitDeliveryProfileInterval_StartTime\"], dpiData[0][\"RemitDeliveryProfileInterval_EndTime\"])];\r\n for (var i = 1; i < Math.min(dpiData.length, 5); i++) {\r\n deliveryIntervals.push(FormatingHelper.formatTimeSpan(dpiData[i][\"RemitDeliveryProfileInterval_StartTime\"], dpiData[i][\"RemitDeliveryProfileInterval_EndTime\"]));\r\n }\r\n }\r\n\r\n fields.push({ number: \"53\", label: Strings.TrumLabel_DaysOfTheWeek, value: daysOfTheWeek });\r\n fields.push({ number: \"54\", label: Strings.TrumLabel_LoadDeliveryIntervals, value: deliveryIntervals[0] });\r\n\r\n if (deliveryIntervals.length > 1) {\r\n deliveryIntervals.slice(1, 5).forEach(interval => fields.push({ number: \"\", label: \"\", value: interval }));\r\n }\r\n\r\n if (dpiData.length > 5) {\r\n allProfilesIncluded = false;\r\n fields.push({ number: \"\", label: \"\", value: \"... (\" + dpiData.length + \" \" + Strings.intervals + \")\" });\r\n }\r\n } else {\r\n allProfilesIncluded = false;\r\n\r\n // summary (items count)\r\n if (dpData.length > 0) {\r\n fields.push({ number: \"\", label: Strings.TrumGroup_DeliveryProfiles, value: \"(\" + Strings.ReportConfirmation_SeeTable + \")\" });\r\n }\r\n if (pqdData.length > 0) {\r\n fields.push({ number: \"\", label: Strings.TrumGroup_PriceQuantityDetails, value: \"(\" + Strings.ReportConfirmation_SeeTable + \")\" });\r\n }\r\n }\r\n\r\n return allProfilesIncluded;\r\n }\r\n\r\n function createDeliveryProfilesPdfGrids(formModel: Controls.Table1TradeFormModel): TrumPdfGrid[] {\r\n var dpGrid: TrumPdfGrid = {\r\n title: Strings.TrumGroup_DeliveryProfiles,\r\n columns: [\r\n // total widhs 190 mm\r\n { field: \"StartDate\", header: Strings.GridColumn_StartDate, width: 20},\r\n { field: \"EndDate\", header: Strings.GridColumn_EndDate, width: 20},\r\n { field: \"DaysOfTheWeek\", header: Strings.GridColumn_DaysOfTheWeek, width: 50},\r\n { field: \"StartTime\", header: Strings.GridColumn_StartTime, width: 20},\r\n { field: \"EndTime\", header: Strings.GridColumn_EndTime, width: 20}\r\n ],\r\n data: []\r\n };\r\n\r\n var dpData = formModel.dataLoader.deliveryProfileLoader.getData() || [];\r\n var dpiData = formModel.dataLoader.deliveryProfileLoader.intervalLoader.getData() || [];\r\n\r\n if (dpData.length > 0) {\r\n for (let i = 0; i < dpData.length; i++) {\r\n let intervals = filterIntervals(dpiData, \"RemitDeliveryProfileInterval_RemitDeliveryProfile\", dpData[i][\"RemitDeliveryProfile_Id\"]);\r\n if (intervals.length > 0) {\r\n dpGrid.data.push({\r\n StartDate: kendo.toString(dpData[i][\"RemitDeliveryProfile_StartDate\"], \"d\"),\r\n EndDate: kendo.toString(dpData[i][\"RemitDeliveryProfile_EndDate\"], \"d\"),\r\n DaysOfTheWeek: dpData[i][\"RemitDeliveryProfile_DaysOfTheWeek\"],\r\n StartTime: kendo.toString(intervals[0][\"RemitDeliveryProfileInterval_StartTime\"], \"HH:mm\"),\r\n EndTime: intervals[0][\"RemitDeliveryProfileInterval_EndTime\"]\r\n });\r\n if (intervals.length > 1) {\r\n for (let j = 1; j < intervals.length; j++) {\r\n dpGrid.data.push({\r\n StartDate: \"\",\r\n EndDate: \"\",\r\n DaysOfTheWeek: \"\",\r\n StartTime: kendo.toString(intervals[j][\"RemitDeliveryProfileInterval_StartTime\"], \"HH:mm\"),\r\n EndTime: intervals[j][\"RemitDeliveryProfileInterval_EndTime\"]\r\n });\r\n }\r\n }\r\n } else {\r\n dpGrid.data.push({\r\n StartDate: kendo.toString(dpData[i][\"RemitDeliveryProfile_StartDate\"], \"d\"),\r\n EndDate: kendo.toString(dpData[i][\"RemitDeliveryProfile_EndDate\"], \"d\"),\r\n DaysOfTheWeek: dpData[i][\"RemitDeliveryProfile_DaysOfTheWeek\"],\r\n StartTime: kendo.toString(dpData[i][\"RemitDeliveryProfile_StartTime\"], \"HH:mm\"),\r\n EndTime: dpData[i][\"RemitDeliveryProfile_EndTime\"]\r\n });\r\n }\r\n }\r\n }\r\n\r\n var pqdGrid: TrumPdfGrid = {\r\n title: Strings.TrumGroup_PriceQuantityDetails,\r\n columns: [\r\n // total widhs 190 mm\r\n { field: \"StartDate\", header: Strings.GridColumn_StartDate, width: 20 },\r\n { field: \"EndDate\", header: Strings.GridColumn_EndDate, width: 20 },\r\n { field: \"DaysOfTheWeek\", header: Strings.GridColumn_DaysOfTheWeek, width: 50 },\r\n { field: \"StartTime\", header: Strings.GridColumn_StartTime, width: 20 },\r\n { field: \"EndTime\", header: Strings.GridColumn_EndTime, width: 20 },\r\n { field: \"Quantity\", header: Strings.GridColumn_Quantity_Short, width: 30 },\r\n { field: \"Price\", header: Strings.GridColumn_Price, width: 30 }\r\n ],\r\n data: []\r\n };\r\n\r\n var pqdData = formModel.dataLoader.priceQuantityDetailLoader.getData() || [];\r\n var pqdiData = formModel.dataLoader.priceQuantityDetailLoader.intervalLoader.getData() || [];\r\n\r\n if (pqdData.length > 0) {\r\n for (let i = 0; i < pqdData.length; i++) {\r\n let intervals = filterIntervals(pqdiData, \"RemitTradePriQuaDetInterval_RemitTradePriceQuantityDetail\", pqdData[i][\"RemitTradePriceQuantityDetail_Id\"]);\r\n if (intervals.length > 0) {\r\n pqdGrid.data.push({\r\n StartDate: kendo.toString(pqdData[i][\"RemitTradePriceQuantityDetail_StartDate\"], \"d\"),\r\n EndDate: kendo.toString(pqdData[i][\"RemitTradePriceQuantityDetail_EndDate\"], \"d\"),\r\n DaysOfTheWeek: pqdData[i][\"RemitTradePriceQuantityDetail_DaysOfTheWeek\"],\r\n StartTime: kendo.toString(intervals[0][\"RemitTradePriQuaDetInterval_StartTime\"], \"HH:mm\"),\r\n EndTime: intervals[0][\"RemitTradePriQuaDetInterval_EndTime\"],\r\n Quantity: (kendo.toString(pqdData[i][\"RemitTradePriceQuantityDetail_Quantity\"], \"#,#.#####\") || \"-\") + \" \" + pqdData[i][\"RemitTradePriceQuantityDetail_QuantityUnit\"],\r\n Price: (kendo.toString(pqdData[i][\"RemitTradePriceQuantityDetail_Price\"], \"#,#.#####\") || \"-\") + \" \" + pqdData[i][\"RemitTradePriceQuantityDetail_PriceCurrency\"]\r\n });\r\n if (intervals.length > 1) {\r\n for (let j = 1; j < intervals.length; j++) {\r\n pqdGrid.data.push({\r\n StartDate: \"\",\r\n EndDate: \"\",\r\n DaysOfTheWeek: \"\",\r\n StartTime: kendo.toString(intervals[j][\"RemitTradePriQuaDetInterval_StartTime\"], \"HH:mm\"),\r\n EndTime: intervals[j][\"RemitTradePriQuaDetInterval_EndTime\"],\r\n Quantity: \"\",\r\n Price: \"\"\r\n });\r\n }\r\n }\r\n } else {\r\n pqdGrid.data.push({\r\n StartDate: kendo.toString(pqdData[i][\"RemitTradePriceQuantityDetail_StartDate\"], \"d\"),\r\n EndDate: kendo.toString(pqdData[i][\"RemitTradePriceQuantityDetail_EndDate\"], \"d\"),\r\n DaysOfTheWeek: pqdData[i][\"RemitTradePriceQuantityDetail_DaysOfTheWeek\"],\r\n StartTime: kendo.toString(pqdData[i][\"RemitTradePriceQuantityDetail_StartTime\"], \"HH:mm\"),\r\n EndTime: pqdData[i][\"RemitTradePriceQuantityDetail_EndTime\"],\r\n Quantity: (kendo.toString(pqdData[i][\"RemitTradePriceQuantityDetail_Quantity\"], \"#,#.#####\") || \"-\") + \" \" + pqdData[i][\"RemitTradePriceQuantityDetail_QuantityUnit\"],\r\n Price: (kendo.toString(pqdData[i][\"RemitTradePriceQuantityDetail_Price\"], \"#,#.#####\") || \"-\") + \" \" + pqdData[i][\"RemitTradePriceQuantityDetail_PriceCurrency\"]\r\n });\r\n }\r\n }\r\n }\r\n\r\n var pdfGrids = [dpGrid];\r\n\r\n if (pqdGrid.data.length > 0) {\r\n pdfGrids.push(pqdGrid);\r\n }\r\n\r\n return pdfGrids;\r\n }\r\n\r\n function filterIntervals(intervals: any[], field: string, value: string): any[] {\r\n var filteredIntervals = [];\r\n\r\n if (intervals.length > 0) {\r\n for (var i = 0; i < intervals.length; i++) {\r\n if (intervals[i][field] === value) {\r\n filteredIntervals.push(intervals[i]);\r\n }\r\n }\r\n }\r\n\r\n return filteredIntervals;\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n function getTable2TradePdfContent(formModel: Controls.Table2TradeFormModel): TrumPdfContent {\r\n var volumeOptionalityData = formModel.dataLoader.volumeOptIntervalLoader.getData() || [];\r\n var fixingIndexDetailsData = formModel.dataLoader.fixingIndexLoader.getData() || [];\r\n var optionDetailsData = formModel.dataLoader.optionDetailLoader.getData() || [];\r\n\r\n var volumeOptionalityInfo = volumeOptionalityData.length > 0\r\n ? (volumeOptionalityData.length + \" \" + (volumeOptionalityData.length === 1 ? Strings.entry : Strings.entries) + \", \" + Strings.ReportConfirmation_SeeTable)\r\n : Strings.noEntries;\r\n\r\n var fixingIndexInfo = fixingIndexDetailsData.length > 0\r\n ? (fixingIndexDetailsData.length + \" \" + (fixingIndexDetailsData.length === 1 ? Strings.entry : Strings.entries) + \", \" + Strings.ReportConfirmation_SeeTable)\r\n : Strings.noEntries;\r\n\r\n var optionDetailInfo = optionDetailsData.length > 0\r\n ? (optionDetailsData.length + \" \" + (optionDetailsData.length === 1 ? Strings.entry : Strings.entries) + \", \" + Strings.ReportConfirmation_SeeTable)\r\n : Strings.noEntries;\r\n\r\n var fields: any[] = [\r\n // Contract parties\r\n { number: \"1\", key: \"RemitTable2Trade_MarketParticipantId\" },\r\n { number: \"2\", key: \"RemitTable2Trade_MarketParticipantIdType\" },\r\n { number: \"3\", key: \"RemitTable2Trade_OtherMarketParticipantId\" },\r\n { number: \"4\", key: \"RemitTable2Trade_OtherMarketParticipantIdType\" },\r\n { number: \"5\", label: Strings.TrumLabel_ReportingEntityId, value: \"Seven2one.DE\" },\r\n { number: \"6\", label: Strings.TrumLabel_ReportingEntityIdType, value: \"ace - ACER registration code\" },\r\n { number: \"7\", key: \"RemitTable2Trade_BeneficiaryId\" },\r\n { number: \"8\", key: \"RemitTable2Trade_BeneficiaryIdType\" },\r\n { number: \"9\", key: \"RemitTable2Trade_TradingCapacity\" },\r\n { number: \"10\", key: \"RemitTable2Trade_BuySellIndicator\" },\r\n // Contract details\r\n { number: \"11\", key: \"RemitTable2Trade_ContractId\" },\r\n { number: \"12\", key: \"RemitTable2Trade_ContractDate\" },\r\n { number: \"13\", key: \"RemitTable2Trade_ContractType\" },\r\n { number: \"14\", key: \"RemitTable2Trade_EnergyCommodity\" },\r\n { number: \"15\", key: \"RemitTable2Trade_PriceFormula\" },\r\n {\r\n number: \"16\",\r\n label: Strings.TrumLabel_EstimatedNotionalAmount,\r\n value: FormatingHelper.formatValueUnit(formModel.getProperty(\"RemitTable2Trade_EstimatedNotionalAmount\", \"displayValue\"), formModel.getProperty(\"RemitTable2Trade_EstimatedNotionalAmountCurrency\", \"displayValue\"))\r\n },\r\n {\r\n number: \"18\",\r\n label: Strings.TrumLabel_NotionalContractQuantity,\r\n value: FormatingHelper.formatValueUnit(formModel.getProperty(\"RemitTable2Trade_NotionalContractQuantity\", \"displayValue\"), formModel.getProperty(\"RemitTable2Trade_NotionalContractQuantityUnit\", \"displayValue\"))\r\n },\r\n { number: \"21\", key: \"RemitTable2Trade_VolumeOptionality\" },\r\n { number: \"22\", key: \"RemitTable2Trade_VolumeOptionalityFrequency\" },\r\n { number: \"23\", label: Strings.TrumGroup_VolumeOptionalityIntervals, value: \"(\" + volumeOptionalityInfo + \")\" },\r\n { number: \"24\", key: \"RemitTable2Trade_TypeOfIndexPrice\" },\r\n // Delivery profile\r\n { number: \"41\", key: \"RemitTable2Trade_DeliveryPointOrZone\" },\r\n { number: \"42\", key: \"RemitTable2Trade_DeliveryStartDate\" },\r\n { number: \"43\", key: \"RemitTable2Trade_DeliveryEndDate\" },\r\n { number: \"44\", key: \"RemitTable2Trade_LoadType\" },\r\n // Fixing index details\r\n { number: \"31\", key: \"RemitTable2Trade_SettlementMethod\" },\r\n { number: \"\", label: Strings.TrumGroup_FixingIndexDetails, value: \"(\" + fixingIndexInfo + \")\" },\r\n // Options details\r\n { number: \"\", label: Strings.TrumGroup_OptionDetails, value: \"(\" + optionDetailInfo + \")\" }\r\n ];\r\n\r\n // fill missing labels values\r\n fields.forEach(field => {\r\n if (field.key && formModel.fieldDict[field.key]) {\r\n field.label = formModel.fieldDict[field.key].get(\"label\");\r\n field.value = formModel.fieldDict[field.key].get(\"displayValue\");\r\n }\r\n });\r\n\r\n var fileName = \"Table2Trade\";\r\n fileName += \"_\" + formModel.getValue(\"RemitTable2Trade_MarketParticipantId\");\r\n fileName += \"_\" + formModel.getValue(\"RemitTable2Trade_EnergyCommodity\");\r\n fileName += \"_\" + kendo.toString(formModel.getValue(\"RemitTable2Trade_ContractDate\"), \"yyyyMMdd\");\r\n fileName += \"_\" + formModel.getValue(\"RemitTable2Trade_ContractId\");\r\n fileName += \"_\" + kendo.toString(new Date(), \"yyyyMMddHHmm\");\r\n\r\n var trumGrids = createTable2PdfGrids(formModel);\r\n\r\n return {\r\n title: Strings.ReportConfirmation_Title_Table2Trade,\r\n actionType: formModel.getValue(\"RemitTable2Trade_ActionType\"),\r\n fileName: fileName,\r\n tradeId: formModel.getValue(\"RemitTable2Trade_Id\"),\r\n statusInfo: formModel.getReportStatusInfo(),\r\n trumGrids: trumGrids,\r\n trumGroups: [\r\n {\r\n title: Strings.TrumGroup_ContractParties,\r\n fields: fields.slice(0, 10)\r\n },\r\n {\r\n title: Strings.TrumGroup_ContractDetails,\r\n fields: fields.slice(10, 17)\r\n },\r\n {\r\n title: \"\",\r\n fields: fields.slice(17, 21),\r\n switchColumn: true\r\n },\r\n {\r\n title: Strings.TrumGroup_DeliveryProfile,\r\n fields: fields.slice(21, 25)\r\n },\r\n {\r\n title: Strings.TrumGroup_FixingIndexDetails,\r\n fields: fields.slice(25, 27)\r\n },\r\n {\r\n title: Strings.TrumGroup_OptionDetails,\r\n fields: fields.slice(27)\r\n }\r\n ],\r\n formLayoutOptions: {\r\n labelWidth: 35,\r\n valueX: 52,\r\n valueWidth: 50,\r\n columnWidth: 102\r\n }\r\n };\r\n }\r\n\r\n function createTable2PdfGrids(formModel: Controls.Table2TradeFormModel): TrumPdfGrid[] {\r\n var volumeOptionalityGrid: TrumPdfGrid = {\r\n title: Strings.TrumGroup_VolumeOptionalityIntervals,\r\n columns: [\r\n // total widhs 190 mm\r\n { field: \"StartDate\", header: Strings.GridColumn_StartDate, width: 28},\r\n { field: \"EndDate\", header: Strings.GridColumn_EndDate, width: 28},\r\n { field: \"Capacity\", header: Strings.GridColumn_Capacity, width: 120}\r\n ],\r\n data: []\r\n };\r\n\r\n var voiData = formModel.dataLoader.volumeOptIntervalLoader.getData() || [];\r\n if (voiData.length > 0) {\r\n for (let i = 0; i < voiData.length; i++) {\r\n volumeOptionalityGrid.data.push({\r\n StartDate: kendo.toString(voiData[i][\"RemitTable2VolumeOptInterval_StartDate\"], \"d\"),\r\n EndDate: kendo.toString(voiData[i][\"RemitTable2VolumeOptInterval_EndDate\"], \"d\"),\r\n Capacity: (kendo.toString(voiData[i][\"RemitTable2VolumeOptInterval_Capacity\"], \"#,#.#####\") || \"-\") + \" \" + voiData[i][\"RemitTable2VolumeOptInterval_CapacityUnit\"]\r\n });\r\n }\r\n }\r\n\r\n var fixingIndexDetailsGrid: TrumPdfGrid = {\r\n title: Strings.TrumGroup_FixingIndexDetails,\r\n columns: [\r\n // total widhs 190 mm\r\n { field: \"FixingIndex\", header: Strings.GridColumn_FixingIndex, width: 41 },\r\n { field: \"FixingIndexType\", header: Strings.GridColumn_FixingIndexType, width: 33 },\r\n { field: \"FixingIndexSource\", header: Strings.GridColumn_FixingIndexSource, width: 42 },\r\n { field: \"FirstFixingDate\", header: Strings.GridColumn_FirstFixingDate, width: 29 },\r\n { field: \"LastFixingDate\", header: Strings.GridColumn_LastFixingDate, width: 29 },\r\n { field: \"FixingFrequency\", header: Strings.GridColumn_Frequency, width: 16 }\r\n ],\r\n data: []\r\n };\r\n\r\n var fidData = formModel.dataLoader.fixingIndexLoader.getData() || [];\r\n if (fidData.length > 0) {\r\n for (let i = 0; i < fidData.length; i++) {\r\n fixingIndexDetailsGrid.data.push({\r\n FixingIndex: fidData[i][\"RemitTable2FixingIndexDetail_FixingIndex\"],\r\n FixingIndexType: fidData[i][\"RemitTable2FixingIndexDetail_FixingIndexType\"],\r\n FixingIndexSource: fidData[i][\"RemitTable2FixingIndexDetail_FixingIndexSource\"],\r\n FirstFixingDate: kendo.toString(fidData[i][\"RemitTable2FixingIndexDetail_FirstFixingDate\"], \"d\"),\r\n LastFixingDate: kendo.toString(fidData[i][\"RemitTable2FixingIndexDetail_LastFixingDate\"], \"d\"),\r\n FixingFrequency: fidData[i][\"RemitTable2FixingIndexDetail_FixingFrequency\"]\r\n });\r\n }\r\n }\r\n\r\n var optionsDetailsGrid: TrumPdfGrid = {\r\n title: Strings.TrumGroup_OptionDetails,\r\n columns: [\r\n // total widhs 190 mm\r\n { field: \"OptionStyle\", header: Strings.GridColumn_OptionStyle, width: 18 },\r\n { field: \"OptionType\", header: Strings.GridColumn_OptionType, width: 18 },\r\n { field: \"OptionFirstExerciseDate\", header: Strings.GridColumn_OptionFirstExerciseDate, width: 24 },\r\n { field: \"OptionLastExerciseDate\", header: Strings.GridColumn_OptionLastExerciseDate, width: 24 },\r\n { field: \"OptionExerciseFrequency\", header: Strings.GridColumn_OptionExerciseFrequency, width: 16 },\r\n { field: \"OptionStrikeIndex\", header: Strings.GridColumn_OptionStrikeIndex, width: 23 },\r\n { field: \"OptionIndexType\", header: Strings.GridColumn_OptionIndexType, width: 16 },\r\n { field: \"OptionIndexSource\", header: Strings.GridColumn_OptionIndexSource, width: 23 },\r\n { field: \"OptionStrikePrice\", header: Strings.GridColumn_OptionStrikePrice, width: 18 }\r\n ],\r\n data: []\r\n };\r\n\r\n var odData = formModel.dataLoader.optionDetailLoader.getData() || [];\r\n if (odData.length > 0) {\r\n for (let i = 0; i < odData.length; i++) {\r\n optionsDetailsGrid.data.push({\r\n OptionStyle: odData[i][\"RemitTable2OptionDetail_OptionStyle\"],\r\n OptionType: odData[i][\"RemitTable2OptionDetail_OptionType\"],\r\n OptionLastExerciseDate: kendo.toString(odData[i][\"RemitTable2OptionDetail_OptionLastExerciseDate\"], \"d\"),\r\n OptionFirstExerciseDate: kendo.toString(odData[i][\"RemitTable2OptionDetail_OptionFirstExerciseDate\"], \"d\"),\r\n OptionExerciseFrequency: odData[i][\"RemitTable2OptionDetail_OptionExerciseFrequency\"],\r\n OptionStrikeIndex: odData[i][\"RemitTable2OptionDetail_OptionStrikeIndex\"],\r\n OptionIndexType: odData[i][\"RemitTable2OptionDetail_OptionIndexType\"],\r\n OptionIndexSource: odData[i][\"RemitTable2OptionDetail_OptionIndexSource\"],\r\n OptionStrikePrice: (kendo.toString(odData[i][\"RemitTable2OptionDetail_OptionStrikePrice\"], \"#,#.#####\") || \"-\") + \" \" + odData[i][\"RemitTable2OptionDetail_OptionStrikePriceCurrency\"]\r\n });\r\n }\r\n }\r\n \r\n var pdfGrids = [];\r\n\r\n if (volumeOptionalityGrid.data.length > 0) {\r\n pdfGrids.push(volumeOptionalityGrid);\r\n }\r\n\r\n if (fixingIndexDetailsGrid.data.length > 0) {\r\n pdfGrids.push(fixingIndexDetailsGrid);\r\n }\r\n\r\n if (optionsDetailsGrid.data.length > 0) {\r\n pdfGrids.push(optionsDetailsGrid);\r\n }\r\n\r\n return pdfGrids;\r\n }\r\n\r\n class TrumPdfCreator {\r\n pdf: jsPDF;\r\n pageWidth = 210;\r\n pageHeight = 297;\r\n content: TrumPdfContent;\r\n\r\n constructor(content: TrumPdfContent) {\r\n this.content = content;\r\n this.pdf = new jsPDF();\r\n var pages = 1;\r\n\r\n // main page\r\n this.setFillColor(AppKitchen.Colors.WhiteSmoke);\r\n this.pdf.rect(0, 0, 210, 297, 'F');\r\n this.printHeader(content.title, content.actionType);\r\n this.printStatus(content.statusInfo);\r\n this.printForm(content);\r\n\r\n // grids page\r\n if (content.trumGrids && content.trumGrids.length > 0) {\r\n pages++;\r\n this.pdf.addPage();\r\n this.setFillColor(AppKitchen.Colors.WhiteSmoke);\r\n this.pdf.rect(0, 0, 210, 297, 'F');\r\n this.printHeader(content.title, content.actionType);\r\n this.printGrids(content.trumGrids);\r\n }\r\n \r\n // print footers\r\n for (var p = 1; p <= pages; p++) {\r\n this.pdf.setPage(p);\r\n this.printFooter(content.tradeId, p, pages);\r\n }\r\n }\r\n\r\n save() {\r\n this.pdf.save(this.content.fileName + \".pdf\");\r\n }\r\n\r\n printFooter(tradeId: string, page: number, totalPages: number) {\r\n var footerHeight = 10;\r\n var footerFontSize = 7.5;\r\n var footerMargin = 7;\r\n var textY = this.pageHeight - footerHeight / 2 + 1.5;\r\n\r\n this.setFillColor(AppKitchen.Colors.CoalGray);\r\n this.pdf.rect(0, this.pageHeight - footerHeight, this.pageWidth, footerHeight, \"F\");\r\n this.setFillColor(AppKitchen.Colors.Orange);\r\n this.pdf.rect(0, this.pageHeight - footerHeight - 0.1, this.pageWidth, 1.3, \"F\");\r\n\r\n var timeStamp = [Strings.Downloaded, Strings.Date_on, kendo.toString(new Date(), \"D\"), Strings.Time_at, kendo.toString(new Date(), \"t\")].join(\" \");\r\n var pageInfo = [Strings.Page, page, Strings.of, totalPages].join(\" \");\r\n\r\n this.setTextColor(\"#FFFFFF\");\r\n this.printText(timeStamp, footerMargin, textY, { align: \"left\", size: footerFontSize });\r\n this.printText(Strings.ReportConfirmation_InternalTradeID + \": \" + tradeId, (this.pdf.getTextWidth(timeStamp) + this.pageWidth - this.pdf.getTextWidth(pageInfo)) / 2, textY, { align: \"center\", size: footerFontSize });\r\n this.printText(pageInfo, this.pageWidth - footerMargin, textY, { align: \"right\", size: footerFontSize });\r\n }\r\n\r\n printHeader(title: string, actionType: string) {\r\n var headerHeight = 20;\r\n var titleFontSize = 14;\r\n var subtitleFontSize = 9.5;\r\n var headerMargin = 6;\r\n var titleY = headerHeight / 2 - 1;\r\n var subtitleY = headerHeight / 2 + 3.5;\r\n var logoWidth = 57.69;\r\n var logoHeight = 12.5;\r\n\r\n // background & bar\r\n this.setFillColor(AppKitchen.Colors.CoalGray); // CoalGray\r\n this.pdf.rect(0, 0, this.pageWidth, headerHeight, \"F\");\r\n this.setFillColor(AppKitchen.Colors.Orange); // Orange\r\n this.pdf.rect(0, headerHeight - 1.2, this.pageWidth, 1.3, \"F\");\r\n\r\n // title\r\n this.pdf.setFontSize(titleFontSize);\r\n this.setTextColor(AppKitchen.Colors.WhiteSmoke);\r\n this.pdf.text(title, headerMargin, titleY);\r\n\r\n // ActionType ('tag' styled)\r\n this.setFillColor(\"#B5B5B5\");\r\n this.setTextColor(AppKitchen.Colors.CoalGray);\r\n this.pdf.setFontType(\"bold\");\r\n this.pdf.setFontSize(subtitleFontSize * 0.85);\r\n var tagWidth = this.pdf.getTextWidth(Strings[\"ReportConfirmation_ActionType_\" + actionType]) + 1.5;\r\n this.pdf.roundedRect(headerMargin + 0.2, subtitleY - 2.8, tagWidth, 3.5, 0.8, 0.8, \"F\");\r\n this.pdf.text(Strings[\"ReportConfirmation_ActionType_\" + actionType], headerMargin + 0.8, subtitleY - 0.1);\r\n\r\n this.pdf.setFontType(\"normal\");\r\n this.pdf.setFontSize(subtitleFontSize);\r\n this.setTextColor(\"#B5B5B5\");\r\n this.pdf.text(Strings[\"ReportConfirmation_ActionType_Description_\" + actionType], headerMargin + tagWidth + 1, subtitleY);\r\n\r\n // logo\r\n var logoData = $.ajax({\r\n method: \"get\",\r\n url: \"Content/Images/remit_reporting_logo_pdf_1200x260.base64.txt\",\r\n async: false\r\n }).responseText;\r\n this.pdf.addImage(logoData, \"png\", this.pageWidth - headerMargin - logoWidth, headerHeight / 2 - logoHeight / 2 - 1, logoWidth, logoHeight);\r\n }\r\n\r\n printStatus(statusInfo: Controls.ReportStatusInfo) {\r\n var headerHeight = 20;\r\n var statusHeight = 35;\r\n var labelFontSize = 10;\r\n var dateFontSize = 8;\r\n var statusFontSize = 9.5;\r\n var margin = 25;\r\n var drawY = headerHeight + 19;\r\n var dotRadius = 1.5;\r\n var lineWidth = 0.6;\r\n var dotDistance = (this.pageWidth - 2 * margin) / 3;\r\n\r\n\r\n // container background\r\n this.setFillColor(AppKitchen.Colors.Gainsboro);\r\n this.pdf.rect(0, headerHeight, this.pageWidth, statusHeight, \"F\");\r\n\r\n // kick out PendingWithError status\r\n if (statusInfo.reportStatus === \"PendingWithError\") {\r\n statusInfo.reportStatus = \"Pending\";\r\n }\r\n var statusColor = StatusHelper.getColorOfAggregatedStatus(statusInfo.reportStatus);\r\n var inactiveColor = AppKitchen.Colors.MediumGray;\r\n\r\n this.printText(Strings[\"StatusText_\" + statusInfo.reportStatus], this.pageWidth / 2, drawY + 10, {\r\n color: AppKitchen.Colors.CoalGray,\r\n size: statusFontSize,\r\n align: \"center\"\r\n });\r\n \r\n // reporting steps visualization (draw in inversed order)\r\n var drawX = this.pageWidth - margin;\r\n this.setTextColor(AppKitchen.Colors.CoalGray);\r\n this.setFillColor(inactiveColor);\r\n\r\n if (statusInfo.acknowledgementDate) {\r\n this.printText(StatusHelper.getAcerAcknowledgmentLabel(statusInfo.reportStatus), drawX, drawY - 10, { align: \"center\", size: labelFontSize });\r\n this.printText(kendo.toString(statusInfo.acknowledgementDate, \"g\"), drawX, drawY - 6, { align: \"center\", size: dateFontSize });\r\n this.setFillColor(statusColor);\r\n }\r\n this.pdf.circle(drawX, drawY, dotRadius, \"F\");\r\n drawX -= dotDistance;\r\n this.pdf.rect(drawX, drawY - lineWidth / 2, dotDistance, lineWidth, \"F\");\r\n\r\n if (statusInfo.receiptDate) {\r\n this.printText(Strings.ReportConfirmation_Status_DeliveredToRRM, drawX, drawY - 10, { align: \"center\", size: labelFontSize });\r\n this.printText(kendo.toString(statusInfo.receiptDate, \"g\"), drawX, drawY - 6, { align: \"center\", size: dateFontSize });\r\n this.setFillColor(statusColor);\r\n }\r\n this.pdf.circle(drawX, drawY, dotRadius, \"F\");\r\n drawX -= dotDistance;\r\n this.pdf.rect(drawX, drawY - lineWidth / 2, dotDistance, lineWidth, \"F\");\r\n\r\n if (statusInfo.messageGenerationDate) {\r\n this.printText(Strings.ReportConfirmation_Status_MessageGenerated, drawX, drawY - 10, { align: \"center\", size: labelFontSize });\r\n this.printText(kendo.toString(statusInfo.messageGenerationDate, \"g\"), drawX, drawY - 6, { align: \"center\", size: dateFontSize });\r\n this.setFillColor(statusColor);\r\n }\r\n this.pdf.circle(drawX, drawY, dotRadius, \"F\");\r\n drawX -= dotDistance;\r\n this.pdf.rect(drawX, drawY - lineWidth / 2, dotDistance, lineWidth, \"F\");\r\n\r\n this.printText(Strings.ReportConfirmation_Status_TradeCreated, drawX, drawY - 10, { align: \"center\", size: labelFontSize });\r\n this.printText(kendo.toString(statusInfo.creationDate, \"g\"), drawX, drawY - 6, { align: \"center\", size: dateFontSize });\r\n this.setFillColor(statusColor);\r\n this.pdf.circle(drawX, drawY, dotRadius, \"F\");\r\n }\r\n\r\n printText(text: string, x: number, y: number, options: any): number {\r\n\r\n if (!text) {\r\n return 0;\r\n }\r\n\r\n if (options.color) {\r\n this.setTextColor(options.color);\r\n }\r\n\r\n if (options.size) {\r\n this.pdf.setFontSize(options.size);\r\n }\r\n\r\n if (options.style) {\r\n this.pdf.setFontStyle(options.style);\r\n }\r\n\r\n var textWidth = this.pdf.getTextWidth(text);\r\n\r\n switch (options.align) {\r\n case \"center\":\r\n this.pdf.text(text, x - textWidth / 2, y);\r\n break;\r\n case \"right\":\r\n this.pdf.text(text, x - textWidth, y);\r\n break;\r\n default:\r\n this.pdf.text(text, x, y);\r\n break;\r\n }\r\n\r\n this.pdf.setFontStyle(\"normal\");\r\n\r\n return textWidth;\r\n }\r\n\r\n setTextColor(color: string) {\r\n var rgb = AppKitchen.UIHelper.Colors.parseColor(color);\r\n this.pdf.setTextColor(rgb.r, rgb.g, rgb.b);\r\n }\r\n\r\n setFillColor(color: string) {\r\n var rgb = AppKitchen.UIHelper.Colors.parseColor(color);\r\n this.pdf.setFillColor(rgb.r, rgb.g, rgb.b);\r\n }\r\n\r\n setDrawColor(color: string) {\r\n var rgb = AppKitchen.UIHelper.Colors.parseColor(color);\r\n this.pdf.setDrawColor(rgb.r, rgb.g, rgb.b);\r\n }\r\n\r\n printForm(content: TrumPdfContent) {\r\n var formStartY = 60;\r\n var lineDistance = 5.6;\r\n\r\n var options = AppKitchen.OptionsHelper.merge(content.formLayoutOptions, {\r\n numberX: 7,\r\n labelX: 13,\r\n labelWidth: 33.7,\r\n valueX: 49,\r\n valueWidth: 53,\r\n columnWidth: 100\r\n });\r\n\r\n var groupTitleFontSize = 12;\r\n var fieldsFontSize = 8;\r\n\r\n var currentY = formStartY;\r\n var currentX = 0;\r\n for (var g = 0; g < content.trumGroups.length; g++) {\r\n var group = content.trumGroups[g];\r\n\r\n if (group.switchColumn) {\r\n currentX += options.columnWidth;\r\n currentY = formStartY;\r\n }\r\n\r\n // print group title\r\n this.setTextColor(\"#000000\");\r\n this.pdf.setFontSize(groupTitleFontSize);\r\n currentY += lineDistance * 0.8;\r\n this.pdf.text(group.title, currentX + options.labelX, currentY);\r\n currentY += lineDistance * 1.3;\r\n\r\n // print fields\r\n this.pdf.setFontSize(fieldsFontSize);\r\n this.setTextColor(\"#000000\");\r\n for (var f = 0; f < group.fields.length; f++) {\r\n var field = group.fields[f];\r\n if (field.switchColumn) {\r\n currentX += options.columnWidth;\r\n currentY = formStartY;\r\n }\r\n\r\n this.pdf.text(field.number, currentX + options.numberX, currentY);\r\n var label = this.pdf.splitTextToSize(field.label, options.labelWidth);\r\n this.pdf.text(label, currentX + options.labelX, currentY);\r\n var value = this.pdf.splitTextToSize(field.value, options.valueWidth);\r\n this.pdf.text(value, currentX + options.valueX, currentY);\r\n\r\n currentY += lineDistance;\r\n if ((Array.isArray(label) && label.length > 1) || (Array.isArray(value) && value.length > 1)) {\r\n currentY += lineDistance / 1.8;\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n printGrids(pdfGrids: TrumPdfGrid[]) {\r\n var gridsStartY = 20;\r\n var gridsEndY = this.pageHeight - 15;\r\n\r\n var gridsDistance = 12;\r\n var gridTitleFontSize = 12;\r\n var gridCountFontSize = 9;\r\n\r\n var gridsStartX = 10;\r\n var gridsEndX = this.pageWidth - 10;\r\n\r\n var drawY = gridsStartY;\r\n\r\n for (var i = 0; i < pdfGrids.length; i++) {\r\n var maxHeight = (gridsEndY - gridsStartY - gridsDistance * pdfGrids.length) / pdfGrids.length;\r\n var startY = drawY + gridsDistance;\r\n\r\n // title and count\r\n var titleWidth = this.printText(pdfGrids[i].title, gridsStartX + 1, startY - 3, { size: gridTitleFontSize, color: AppKitchen.Colors.CoalGray });\r\n var entriesInfo = \"(\" + pdfGrids[i].data.length + \" \" + (pdfGrids[i].data.length === 1 ? Strings.entry : Strings.entries) + \")\";\r\n this.printText(entriesInfo, gridsStartX + titleWidth + 2.5, startY - 3.2, { size: gridCountFontSize, color: AppKitchen.Colors.Gray });\r\n\r\n // grid\r\n drawY = this.printGrid(pdfGrids[i], gridsStartX, startY, gridsEndX - gridsStartX, maxHeight);\r\n }\r\n }\r\n\r\n printGrid(pdfGrid: TrumPdfGrid, startX, startY, width, maxHeight): number {\r\n var gridHeaderFontSize = 7;\r\n var gridContentFontSize = 7;\r\n var padding = 1;\r\n\r\n var headerHeight = 5.5;\r\n var rowHeight = 4.5;\r\n\r\n var drawX = startX;\r\n var drawY = startY;\r\n\r\n var headerBackground = AppKitchen.Colors.DarkBlue;\r\n var headerFontColor = \"#FFFFFF\";\r\n\r\n var rowBackground = \"#95dcf3\";\r\n var alternateRowBackground = \"#c7ebf6\";\r\n var contentFontColor = AppKitchen.Colors.CoalGray;\r\n \r\n // print column headers and lines\r\n this.setFillColor(headerBackground);\r\n this.setDrawColor(AppKitchen.Colors.WhiteSmoke);\r\n this.pdf.rect(drawX, drawY, width, headerHeight, \"FD\");\r\n drawY += headerHeight;\r\n\r\n this.pdf.line(startX, drawY, startX + width, drawY);\r\n for (let i = 0; i < pdfGrid.columns.length; i++) {\r\n let column = pdfGrid.columns[i];\r\n this.printText(column.header, drawX + padding, drawY - 3 + padding, { size: gridHeaderFontSize, style: \"bold\", color: headerFontColor });\r\n drawX += column.width;\r\n }\r\n\r\n // print rows\r\n for (let i = 0; i < pdfGrid.data.length; i++) {\r\n drawX = startX;\r\n var rowData = pdfGrid.data[i];\r\n this.setFillColor(i % 2 === 0? rowBackground : alternateRowBackground);\r\n this.pdf.rect(drawX, drawY, width, rowHeight, \"FD\");\r\n drawY += rowHeight;\r\n if (drawY + rowHeight > startY + maxHeight) {\r\n for (let j = 0; j < pdfGrid.columns.length; j++) {\r\n let column = pdfGrid.columns[j];\r\n this.printText(\" ...\", drawX + padding, drawY - 2.5 + padding, { size: gridContentFontSize, color: contentFontColor });\r\n drawX += column.width;\r\n }\r\n break;\r\n } else {\r\n for (let j = 0; j < pdfGrid.columns.length; j++) {\r\n let column = pdfGrid.columns[j];\r\n this.printText(this.clipText(rowData[column.field], column.width - 1), drawX + padding, drawY - 2.5 + padding, { size: gridContentFontSize, color: contentFontColor });\r\n drawX += column.width;\r\n }\r\n }\r\n this.pdf.line(startX, drawY, startX + width, drawY);\r\n }\r\n\r\n return drawY;\r\n }\r\n\r\n clipText(text, maxWidth): string {\r\n var lines = this.pdf.splitTextToSize(text || \"\", maxWidth);\r\n if (lines.length > 1) {\r\n var clippedText = lines[0];\r\n if (this.pdf.getTextWidth(clippedText + \"...\") > maxWidth) {\r\n clippedText = clippedText.substr(0, lines[0].length - 3);\r\n }\r\n return clippedText + \"...\";\r\n } else {\r\n return lines[0];\r\n }\r\n }\r\n }\r\n}\r\n","module Seven2one.Remit {\r\n export function startMain(targetContainer: HTMLElement) {\r\n NewsHelper.ResetShowNewsInSession();\r\n // ReSharper disable once WrongExpressionStatement\r\n new Apps.MainApp(targetContainer, { requiresLogin: true });\r\n }\r\n}","module Seven2one.Remit.Apps {\r\n\r\n abstract class CreateTradeAppBase extends AppKitchen.AppBase {\r\n trumForm: Controls.TrumFormModelBase;\r\n trumFormView: Controls.TrumFormViewBase;\r\n isCreate: boolean;\r\n currentId: string;\r\n action: string;\r\n isCounterTrade: boolean;\r\n dataLoader: Data.SynchronizedEventDataLoader;\r\n\r\n start() {\r\n // url Query\r\n var urlQuery = AppKitchen.BrowserHelper.UrlQuery.getParameters();\r\n this.isCreate = !urlQuery[\"id\"];\r\n this.currentId = urlQuery[\"id\"];\r\n this.action = urlQuery[\"action\"] && [\"N\", \"M\", \"C\", \"E\"].indexOf(urlQuery[\"action\"]) !== -1 ? urlQuery[\"action\"] : \"N\";\r\n this.isCounterTrade = urlQuery[\"counter\"] === \"yes\";\r\n\r\n var useTemplate = urlQuery[\"template\"];\r\n\r\n // set document/page title\r\n var title = this.isCounterTrade ? Strings.PageTitle_CreateCounterTrade : (this.action === \"M\" ? Strings.PageTitle_ModifyTrade : this.options.title);\r\n if (this.options.parent) {\r\n document.title = title + \" - \" + this.options.parent.options.title;\r\n }\r\n \r\n // render HTML skeleton \r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.TrumFormApp, {\r\n title: this.isCounterTrade ? Strings.PageTitle_CreateCounterTrade : (this.action === \"M\" ? Strings.PageTitle_ModifyTrade : Strings.PageTitle_CreateTrade),\r\n subtitle: this.getSubtitle()\r\n });\r\n\r\n // collect containers\r\n var formContainer = this.$el.find(\".a-trum-table\")[0];\r\n\r\n AppKitchen.UIHelper.renderLoader(formContainer);\r\n\r\n // data loader\r\n this.dataLoader = this.startDataLoader(() => {\r\n\r\n // models\r\n this.trumForm = new Controls.Table1TradeFormModel(this.dataLoader);\r\n \r\n\r\n if (this.isCreate && useTemplate) {\r\n this.loadDataTemplate(useTemplate, this.trumForm);\r\n }\r\n\r\n // views\r\n AppKitchen.UIHelper.Transitions.introduce(formContainer, 500, () => {\r\n this.trumFormView = this.createFormView(this.trumForm, formContainer);\r\n this.trumForm.setValue(this.trumFormView.options.fields.actionType, this.action);\r\n \r\n // load data if necessary\r\n if (this.currentId) {\r\n this.dataLoader.getSelectedData(this.currentId, {\r\n success: (data) => {\r\n if (!data || data.length === 0) {\r\n return;\r\n }\r\n if (this.action === \"M\") {\r\n this.trumForm.setValue(this.trumFormView.options.fields.actionType, this.action);\r\n this.trumFormView.configureModifyTrade();\r\n } else if (this.isCounterTrade) {\r\n this.trumFormView.configureCounterTrade();\r\n } else {\r\n this.trumForm.setValue(this.trumFormView.options.fields.actionType, this.action);\r\n this.trumForm.setValue(this.trumFormView.options.fields.uti, \"\");\r\n this.trumFormView.generateUti();\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n });\r\n }\r\n\r\n loadDataTemplate(templateName: string, formModel: Controls.TrumFormModelBase) {\r\n AppKitchen.Data.getDocument(templateName, \"DataTemplate\", data => {\r\n formModel.setFieldsData(JSON.parse(data));\r\n }, () => {\r\n console.log(\"Cannot load data template \" + templateName);\r\n });\r\n }\r\n\r\n continue() {\r\n if (this.trumFormView.hasInput()) {\r\n AppKitchen.UIHelper.DialogBoxes.confirm(Strings.TrumDialog_DoYouWantToDiscardTrade, () => {\r\n this.restart();\r\n }, {\r\n strings: {\r\n ok: Strings.TrumDialog_DiscardTrade,\r\n cancel: Strings.TrumDialog_ContinueTrade\r\n }\r\n });\r\n } else {\r\n this.restart();\r\n }\r\n }\r\n\r\n dispose() {\r\n if (this.dataLoader) {\r\n this.dataLoader.abortRequests();\r\n }\r\n if (this.trumFormView) {\r\n this.trumFormView.abortRequests();\r\n }\r\n }\r\n\r\n restart(clearUrlQuery?: boolean) {\r\n if (clearUrlQuery) {\r\n AppKitchen.BrowserHelper.UrlQuery.clear();\r\n }\r\n this.dispose();\r\n this.start();\r\n }\r\n\r\n protected abstract getSubtitle(): string;\r\n protected abstract startDataLoader(onReady: () => void): Data.SynchronizedEventDataLoader;\r\n protected abstract createFormView(formModel: Controls.TrumFormModelBase, targetContainer: HTMLElement): Controls.TrumFormViewBase;\r\n }\r\n\r\n export class CreateTable1TradeApp extends CreateTradeAppBase {\r\n protected getSubtitle() {\r\n return \"Table 1\";\r\n }\r\n\r\n protected startDataLoader(onReady: () => void) {\r\n return new Data.Table1TradeFormDataLoader(\"Table1TradeInput\", undefined, undefined, onReady);\r\n }\r\n\r\n protected createFormModel(dataLoader: AppKitchen.Data.EventDataLoader): Controls.TrumFormModelBase {\r\n return new Controls.Table1TradeFormModel(dataLoader);\r\n }\r\n\r\n protected createFormView(formModel: Controls.TrumFormModelBase, targetContainer: HTMLElement): Controls.TrumFormViewBase {\r\n return new Controls.Table1TradeFormView(formModel, targetContainer, {\r\n editable: true,\r\n isCreate: this.isCreate,\r\n isCounterTrade: this.isCounterTrade,\r\n reset: () => this.restart(true),\r\n tradeGridRoute: \"Table1TradesGrid\"\r\n });\r\n }\r\n }\r\n\r\n export class CreateTable2TradeApp extends CreateTradeAppBase {\r\n protected getSubtitle() {\r\n return \"Table 2\";\r\n }\r\n\r\n protected startDataLoader(onReady: () => void) {\r\n return new Data.Table2TradeFormDataLoader(\"Table2TradeInput\", undefined, undefined, onReady);\r\n }\r\n\r\n protected createFormModel(dataLoader: AppKitchen.Data.EventDataLoader): Controls.TrumFormModelBase {\r\n return new Controls.Table2TradeFormModel(dataLoader);\r\n }\r\n\r\n protected createFormView(formModel: Controls.TrumFormModelBase, targetContainer: HTMLElement): Controls.TrumFormViewBase {\r\n return new Controls.Table2TradeFormView(formModel, targetContainer, {\r\n editable: true,\r\n isCreate: this.isCreate,\r\n isCounterTrade: this.isCounterTrade,\r\n reset: () => this.restart(true),\r\n tradeGridRoute: \"Table2TradesGrid\"\r\n });\r\n }\r\n }\r\n \r\n // ReSharper disable once InconsistentNaming\r\n export interface TrumViewAppBaseOptions extends AppKitchen.AppBaseOptions {\r\n isPopup?: boolean;\r\n localStorageKey?: string;\r\n delegatedView?: boolean;\r\n }\r\n\r\n export abstract class TrumViewAppBase extends AppKitchen.AppBase {\r\n dataLoader: Data.SynchronizedEventDataLoader;\r\n\r\n start() {\r\n\r\n if (!this.options.isPopup) {\r\n AppKitchen.FrameManager.hideHeader();\r\n }\r\n\r\n var urlQuery = AppKitchen.BrowserHelper.UrlQuery.getParameters();\r\n var localStorageKey: string;\r\n\r\n // try get local storage key from options...\r\n if (this.options.localStorageKey) {\r\n localStorageKey = this.options.localStorageKey;\r\n } else {\r\n // then from url...\r\n if (urlQuery[\"k\"]) {\r\n localStorageKey = urlQuery[\"k\"];\r\n if (!this.options.isPopup) {\r\n AppKitchen.BrowserHelper.UrlQuery.removeParameter(\"k\", { refresh: false, push: false });\r\n }\r\n sessionStorage.setItem(\"k\", localStorageKey); // (backup in session storage for synchronization after page refresh)\r\n } else {\r\n // then from session storage backup\r\n localStorageKey = sessionStorage.getItem(\"k\");\r\n if (!localStorageKey) {\r\n console.info(\"No key found for synchronization\");\r\n }\r\n }\r\n }\r\n\r\n // render HTML skeleton\r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.TrumFormApp, {\r\n title: this.getTitle(),\r\n subtitle: \"\", showActionButtons: true\r\n });\r\n\r\n // collect containers\r\n var formContainer = this.$el.find(\".a-trum-table\")[0];\r\n\r\n AppKitchen.UIHelper.renderLoader(formContainer);\r\n\r\n // data loader\r\n this.dataLoader = this.startDataLoader(localStorageKey, urlQuery[\"id\"], { eventDataApi: this.options.delegatedView? \"DelegatedReportEventData\" : undefined }, dataLoader => {\r\n\r\n // models\r\n var trumFormModel = this.createTrumFormModel(dataLoader);\r\n \r\n // parameter routing\r\n if (!this.options.isPopup) {\r\n if (dataLoader.model.get(\"currentValue\")) AppKitchen.BrowserHelper.UrlQuery.setParameter(\"id\", (dataLoader).model.get(\"currentValue\"));\r\n dataLoader.model.bind(\"change:currentValue\", () => AppKitchen.BrowserHelper.UrlQuery.setParameter(\"id\", (dataLoader).model.get(\"currentValue\")));\r\n }\r\n\r\n // trum main view\r\n this.createTrumFormView(trumFormModel, formContainer, { editable: false, editOnDemand: false, delegatedView: this.options.delegatedView });\r\n\r\n // load trum data\r\n dataLoader.getSelectedData();\r\n });\r\n\r\n }\r\n\r\n dispose() {\r\n if (this.dataLoader) {\r\n this.dataLoader.abortRequests();\r\n }\r\n }\r\n\r\n abstract startDataLoader(localStorageKey: string, initialId: string, options: AppKitchen.Data.EventDataLoaderOptions, onReady: (loader: Data.SynchronizedEventDataLoader) => void): Data.SynchronizedEventDataLoader;\r\n abstract createTrumFormView(model: Controls.TrumFormModelBase, targetContainer: HTMLElement, options?: Controls.TrumFormViewOptions): Controls.TrumFormViewBase;\r\n abstract createTrumFormModel(dataLoader: Data.SynchronizedEventDataLoader): Controls.TrumFormModelBase;\r\n abstract getTitle(): string;\r\n }\r\n\r\n export class Table1TradeViewApp extends TrumViewAppBase {\r\n startDataLoader(localStorageKey: string, initialId: string, options: AppKitchen.Data.EventDataLoaderOptions, onReady: (loader: Data.SynchronizedEventDataLoader) => void) {\r\n return new Data.Table1TradeFormDataLoader(\"Table1TradeView\", localStorageKey, initialId, onReady, options);\r\n }\r\n\r\n createTrumFormView(model: Controls.Table1TradeFormModel, targetContainer: HTMLElement, options?: Controls.TrumFormViewOptions) {\r\n return new Controls.Table1TradeFormView(model, targetContainer, options);\r\n }\r\n\r\n createTrumFormModel(dataLoader: Data.SynchronizedEventDataLoader) {\r\n return new Controls.Table1TradeFormModel(dataLoader);\r\n }\r\n\r\n getTitle(): string {\r\n return this.options.delegatedView\r\n ? Strings.PageTitle_Table1Trade + Strings.PageTitle_Subtitle_Delegated\r\n : Strings.PageTitle_Table1Trade;\r\n }\r\n }\r\n\r\n export class Table2TradeViewApp extends TrumViewAppBase {\r\n startDataLoader(localStorageKey: string, initialId: string, options: AppKitchen.Data.EventDataLoaderOptions, onReady: (loader: Data.SynchronizedEventDataLoader) => void) {\r\n return new Data.Table2TradeFormDataLoader(\"Table2TradeView\", localStorageKey, initialId, onReady, options);\r\n }\r\n\r\n createTrumFormView(model: Controls.Table2TradeFormModel, targetContainer: HTMLElement, options?: Controls.TrumFormViewOptions) {\r\n return new Controls.Table2TradeFormView(model, targetContainer, options);\r\n }\r\n\r\n createTrumFormModel(dataLoader: Data.SynchronizedEventDataLoader) {\r\n return new Controls.Table2TradeFormModel(dataLoader);\r\n }\r\n\r\n getTitle(): string {\r\n return this.options.delegatedView\r\n ? Strings.PageTitle_Table2Trade + Strings.PageTitle_Subtitle_Delegated\r\n : Strings.PageTitle_Table2Trade;\r\n }\r\n }\r\n\r\n export class OrderViewApp extends TrumViewAppBase {\r\n startDataLoader(localStorageKey: string, initialId: string, options: AppKitchen.Data.EventDataLoaderOptions, onReady: (loader: Data.SynchronizedEventDataLoader) => void) {\r\n return new Data.OrderFormDataLoader(\"OrderView\", localStorageKey, initialId, onReady);\r\n }\r\n\r\n createTrumFormView(model: Controls.OrderFormModel, targetContainer: HTMLElement, options?: Controls.TrumFormViewOptions) {\r\n return new Controls.OrderFormView(model, targetContainer, options);\r\n }\r\n\r\n createTrumFormModel(dataLoader: Data.SynchronizedEventDataLoader) {\r\n return new Controls.OrderFormModel(dataLoader);\r\n }\r\n\r\n getTitle(): string {\r\n return Strings.PageTitle_Order;\r\n }\r\n\r\n initActionButtons(t: any) {\r\n this.$el.find(\".ar-trum-action-buttons\").remove();\r\n }\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface MessaArchiveViewAppOptions extends AppKitchen.AppBaseOptions {\r\n messageArchiveId: string;\r\n }\r\n\r\n export class MessageArchiveViewApp extends AppKitchen.AppBase {\r\n configRequest: JQueryXHR;\r\n dataLoader: AppKitchen.Data.EventDataLoader;\r\n\r\n start() {\r\n\r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.MessageArchiveViewApp);\r\n\r\n var formContainer = this.$el.find(\".ar-message-archive-form-container\")[0];\r\n\r\n AppKitchen.UIHelper.renderLoader(formContainer);\r\n\r\n this.configRequest = AppKitchen.Data.getDocument(\"MessageArchiveView\", \"Form\", (config) => {\r\n var messageArchiveConfig = JSON.parse(config);\r\n messageArchiveConfig.EventItemRestrictions[0].Value = this.options.messageArchiveId;\r\n\r\n this.dataLoader = new AppKitchen.Data.EventDataLoader(messageArchiveConfig, () => {\r\n var formModel = new Controls.MessageArchiveFormModel(this.dataLoader);\r\n // ReSharper disable once WrongExpressionStatement\r\n new AppKitchen.Controls.Forms.TemplatedFormView(formModel, formContainer, Templates.MessageArchiveForm, { editable: false });\r\n\r\n this.dataLoader.loadData();\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n dispose() {\r\n if (this.configRequest) {\r\n this.configRequest.abort();\r\n }\r\n if (this.dataLoader) {\r\n this.dataLoader.abortRequests();\r\n }\r\n }\r\n }\r\n}","/// \r\n\r\n// ReSharper disable WrongExpressionStatement\r\n\r\nmodule Seven2one.Remit.Apps {\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface GridAppOptions extends AppKitchen.AppBaseOptions {\r\n gridTitle: string;\r\n gridConfigName: string;\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface TradeOrderGridAppOptions extends GridAppOptions {\r\n remitTable: RemitTables;\r\n trumViewApp?: AppKitchen.FrameManager.RoutedApp;\r\n initialSort?: { field: string, dir: string };\r\n delegatedView?: boolean;\r\n useSaveFileProxy?: boolean;\r\n }\r\n\r\n export class TradeOrderGridApp extends AppKitchen.AppBase {\r\n private dataLoader: Data.StatusGridDataLoader;\r\n private dataLoaderExport: Data.StatusGridDataLoader;\r\n private dateRangePicker: Controls.DateFromPickerModel;\r\n private container: {\r\n datePicker: HTMLElement,\r\n chart: HTMLElement,\r\n stats: HTMLElement,\r\n grid: HTMLElement,\r\n }\r\n private buttons: {\r\n exportCsv: JQuery,\r\n }\r\n\r\n start() {\r\n\r\n // render HTML skeleton\r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.GridApp, {\r\n title: this.options.gridTitle,\r\n csvExport: this.options.remitTable !== RemitTables.Orders\r\n });\r\n\r\n // collect containers\r\n this.container = {\r\n datePicker: this.$el.find(\".a-toolsContainer\")[0],\r\n chart: this.$el.find(\".a-chartContainer\")[0],\r\n stats: this.$el.find(\".a-statsContainer\")[0],\r\n grid: this.$el.find(\".a-gridContainer\")[0]\r\n };\r\n\r\n this.configureButtons();\r\n\r\n AppKitchen.UIHelper.renderLoader(this.container.grid);\r\n\r\n // data loader\r\n this.dataLoader = new Data.StatusGridDataLoader(this.options.gridConfigName, this.options.remitTable, { eventDataApi: this.options.delegatedView ? \"DelegatedReportEventData\" : undefined }, dataLoader => {\r\n\r\n // models\r\n this.dateRangePicker = new Controls.DateFromPickerModel(dataLoader, {\r\n contract: \"ContractDate\",\r\n transaction: \"TransactionTime\",\r\n created: \"Version\"\r\n });\r\n var gridStats = new Controls.GridStatisticsModel(dataLoader);\r\n var pieChart = new Controls.GridPieChartModel(dataLoader);\r\n var grid = new Controls.StatusGridModel(dataLoader);\r\n\r\n var pickerLabels = [\r\n this.options.remitTable === RemitTables.Table2Trades\r\n ? { label: Strings.DatePicker_ContractsFrom , filter: \"contract\"}\r\n : { label: Strings.DatePicker_TransactionsFrom, filter: \"transaction\" },\r\n { label: Strings.DatePicker_CreatedFrom, filter: \"created\" }\r\n ];\r\n\r\n // views\r\n \r\n new AppKitchen.Controls.DateRangePickerView(this.dateRangePicker, this.container.datePicker, {\r\n hideEndPicker: true,\r\n dayPickers: [\r\n { label: Strings.DatePicker_SinceYesterday, days: -1 },\r\n { label: Strings.DatePicker_Last7Days, days: -6 },\r\n { label: Strings.DatePicker_Last30Days, days: -29 }\r\n ],\r\n maxDate: new Date().onlyDate(),\r\n labels: { from: pickerLabels}\r\n });\r\n new AppKitchen.Controls.Charts.PieChartView(pieChart, this.container.chart, {\r\n noDataMessage: \"\",\r\n legend: {\r\n visible: false\r\n }\r\n });\r\n new Controls.GridStatisticsView(gridStats, this.container.stats);\r\n new Controls.TradeOrderGridView(grid, this.container.grid, {\r\n initialSort: this.options.initialSort,\r\n trumViewApp: this.options.trumViewApp,\r\n noRecordsMessage: this.options.remitTable === RemitTables.Table2Trades ? Strings.GridMessage_NoContracts : Strings.GridMessage_NoTransactions\r\n });\r\n\r\n // CSV export\r\n if (this.options.remitTable !== RemitTables.Orders) {\r\n this.dataLoaderExport = new Data.StatusGridDataLoader(this.options.gridConfigName + \"Export\",\r\n this.options.remitTable,\r\n { eventDataApi: this.options.delegatedView ? \"DelegatedReportEventData\" : undefined },\r\n dataLoader => {\r\n dataLoader.onChangeData().subscribe((e) => this.exportDataChanged(e.data));\r\n });\r\n\r\n this.buttons.exportCsv.click(() => {\r\n AppKitchen.UIHelper.renderLoader(this.container.grid);\r\n this.dataLoaderExport.setData([], this);\r\n this.updateModel(this.dataLoaderExport);\r\n });\r\n }\r\n\r\n // parameter routing\r\n this.dateRangePicker.route({ startFilter: \"filter\", startDate: \"from\" }, { startFilter: this.getDefaultStartFilter(), startDate: this.getDefaultStartDate()});\r\n });\r\n }\r\n\r\n private updateModel(dataLoader: Data.StatusGridDataLoader) {\r\n let config = dataLoader.getConfig();\r\n config.DateRestriction.ItemId = this.dateRangePicker.dateRestrictionFields[this.dateRangePicker.get().startFilter];\r\n config.DateRestriction.StartTime = this.dateRangePicker.get().startDate.onlyDate();\r\n config.DateRestriction.EndTime = new Date().onlyDate().addDays(1).addMinutes(-0.001);\r\n\r\n dataLoader.setConfig(config, this);\r\n dataLoader.loadData();\r\n }\r\n\r\n private configureButtons() {\r\n this.buttons = {\r\n exportCsv: this.$el.find(\".a-button-csv-export\")\r\n }\r\n\r\n this.buttons.exportCsv.kendoTooltip({\r\n position: \"top\",\r\n show: e => AppKitchen.UIHelper.hideTooltips(e.sender)\r\n });\r\n }\r\n\r\n private exportDataChanged(data: AppKitchen.Data.DataEntries[]): void {\r\n AppKitchen.UIHelper.removeLoader(this.container.grid);\r\n\r\n if (!data || data.length === 0) {\r\n return;\r\n }\r\n let filename = this.buildFileName();\r\n var headers = this.dataLoaderExport.getHeaderFields();\r\n AppKitchen.Data.Export.saveAsCsv(data, headers, filename, { useSaveFileProxy: this.options.useSaveFileProxy });\r\n }\r\n\r\n private buildFileName(): string {\r\n let table = \"\";\r\n switch (this.options.remitTable) {\r\n case RemitTables.Table1Trades:\r\n table = \"Table1\";\r\n break;\r\n case RemitTables.Table2Trades:\r\n table = \"Table2\";\r\n break;\r\n }\r\n const filter = Strings[`CsvExport_FileName_Filter_${this.dateRangePicker.get().startFilter}`];\r\n const from = kendo.toString(this.dateRangePicker.get().startDate, \"yyyyMMdd\");\r\n const to = kendo.toString(new Date().onlyDate().addDays(1).addMinutes(-0.001), \" yyyyMMddHHmm\");\r\n\r\n return `${table}_${Strings.CsvExport_Trades}_${filter}_${from}_${to}`;\r\n }\r\n\r\n dispose() {\r\n if (this.dataLoader) {\r\n this.dataLoader.abortRequests();\r\n }\r\n }\r\n\r\n getDefaultStartDate(): Date {\r\n switch (this.options.remitTable) {\r\n case RemitTables.Table1Trades:\r\n return new Date().onlyDate().addDays(-1);\r\n case RemitTables.Table2Trades:\r\n return new Date().onlyDate().addDays(-29);\r\n case RemitTables.Orders:\r\n return new Date().onlyDate().addDays(-1);\r\n default:\r\n throw \"invalid remit table\";\r\n }\r\n }\r\n\r\n getDefaultStartFilter(): string {\r\n switch (this.options.remitTable) {\r\n case RemitTables.Table1Trades:\r\n return \"transaction\";\r\n case RemitTables.Table2Trades:\r\n return \"contract\";\r\n case RemitTables.Orders:\r\n return \"transaction\";\r\n default:\r\n throw \"invalid remit table\";\r\n }\r\n }\r\n }\r\n\r\n export class MessageArchiveGridApp extends AppKitchen.AppBase {\r\n dataLoader: Data.MessageArchiveDataLoader;\r\n\r\n start() {\r\n // render HTML skeleton\r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.GridApp, {\r\n title: this.options.gridTitle,\r\n csvExport: false\r\n });\r\n\r\n // collect containers\r\n var datePickerContainer = this.$el.find(\".a-toolsContainer\")[0];\r\n var chartContainer = this.$el.find(\".a-chartContainer\")[0];\r\n var statsContainer = this.$el.find(\".a-statsContainer\")[0];\r\n var gridContainer = this.$el.find(\".a-gridContainer\")[0];\r\n\r\n AppKitchen.UIHelper.renderLoader(gridContainer);\r\n\r\n // data loader\r\n this.dataLoader = new Data.MessageArchiveDataLoader(this.options.gridConfigName, () => {\r\n\r\n // models\r\n var dateRangePicker = new Controls.DateFromPickerModel(this.dataLoader);\r\n var gridStats = new Controls.GridStatisticsModel(this.dataLoader);\r\n var pieChart = new Controls.GridPieChartModel(this.dataLoader);\r\n var grid = new Controls.StatusGridModel(this.dataLoader);\r\n\r\n // views\r\n new AppKitchen.Controls.DateRangePickerView(dateRangePicker, datePickerContainer, {\r\n hideEndPicker: true,\r\n dayPickers: [\r\n { label: Strings.DatePicker_SinceYesterday, days: -1 },\r\n { label: Strings.DatePicker_Last7Days, days: -6 },\r\n { label: Strings.DatePicker_Last30Days, days: -29 }\r\n ],\r\n maxDate: new Date().onlyDate(),\r\n labels: { from: Strings.DatePicker_CreatedFrom }\r\n });\r\n new AppKitchen.Controls.Charts.PieChartView(pieChart, chartContainer, {\r\n noDataMessage: \"\",\r\n legend: {\r\n visible: false\r\n }\r\n });\r\n new Controls.GridStatisticsView(gridStats, statsContainer);\r\n new Controls.MessageArchiveGridView(grid, gridContainer, {\r\n noRecordsMessage: Strings.GridMessage_NoMessages\r\n });\r\n\r\n // parameters routing and start date\r\n dateRangePicker.routeStart(\"from\", new Date().onlyDate().addDays(-6));\r\n });\r\n }\r\n\r\n dispose() {\r\n if (this.dataLoader) {\r\n this.dataLoader.abortRequests();\r\n }\r\n }\r\n }\r\n\r\n export class StagingLogGridApp extends AppKitchen.AppBase {\r\n dataLoader: AppKitchen.Data.EventDataLoader;\r\n\r\n start() {\r\n // render HTML skeleton\r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.GridApp, {\r\n title: this.options.gridTitle,\r\n csvExport: false\r\n });\r\n\r\n // collect containers\r\n var datePickerContainer = this.$el.find(\".a-toolsContainer\")[0];\r\n var gridContainer = this.$el.find(\".a-gridContainer\")[0];\r\n\r\n AppKitchen.UIHelper.renderLoader(gridContainer);\r\n\r\n // data loader\r\n var gridConfig = JSON.parse(Data.getDocumentSync(this.options.gridConfigName, \"Grid\"));\r\n this.dataLoader = new AppKitchen.Data.EventDataLoader(gridConfig, () => {\r\n\r\n // models\r\n var dateRangePicker = new Controls.DatePickerModel(this.dataLoader);\r\n var grid = new Controls.StagingLogGridModel(this.dataLoader);\r\n\r\n // views\r\n new AppKitchen.Controls.DateRangePickerView(dateRangePicker, datePickerContainer, {\r\n hideEndPicker: true,\r\n dayPickers: [\r\n { label: Strings.DatePicker_Today, days: 0 },\r\n { label: Strings.DatePicker_Yesterday, days: -1 }\r\n ],\r\n maxDate: new Date().onlyDate(),\r\n labels: { from: Strings.DatePicker_CreatedOn }\r\n });\r\n \r\n new AppKitchen.Controls.Grids.GridView(grid, gridContainer, {fillHeight: true, lazyShow:{initial: 200, more: 50}, filterable: true});\r\n\r\n // parameters routing and start date\r\n dateRangePicker.routeStart(\"date\", new Date().onlyDate());\r\n });\r\n }\r\n\r\n dispose() {\r\n if (this.dataLoader) {\r\n this.dataLoader.abortRequests();\r\n }\r\n }\r\n }\r\n}","/// \r\n/// \r\n/// \r\n\r\nmodule Seven2one.Remit.Apps {\r\n\r\n export interface DashboardAppOptions extends AppKitchen.AppBaseOptions {\r\n table1TradesGridRoute: string;\r\n table2TradesGridRoute: string;\r\n ordersGridRoute: string;\r\n }\r\n\r\n export class DashboardApp extends AppKitchen.AppBase {\r\n table1Loader: Data.StatisticDataLoader;\r\n table2Loader: Data.StatisticDataLoader;\r\n orderLoader: Data.StatisticDataLoader;\r\n\r\n containers: {\r\n table1Chart: HTMLElement,\r\n table1Pie: HTMLElement,\r\n table2Pie: HTMLElement,\r\n ordersChart: HTMLElement,\r\n ordersPie: HTMLElement,\r\n }\r\n\r\n start() {\r\n\r\n var table1Url = `#/${this.options.table1TradesGridRoute}/?filter=transaction&from=${kendo.toString(new Date().addDays(-6), \"yyyyMMdd\")}`;\r\n var table2Url = `#/${this.options.table2TradesGridRoute}/?filter=contract&from=${kendo.toString(new Date().addDays(-29), \"yyyyMMdd\")}`;\r\n var ordersUrl = `#/${this.options.ordersGridRoute}/?filter=transaction&from=${kendo.toString(new Date().addDays(-6), \"yyyyMMdd\")}`;\r\n\r\n // render HTML skeleton\r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.DashboardApp, {\r\n table1Url: table1Url,\r\n table2Url: table2Url,\r\n ordersUrl: ordersUrl\r\n });\r\n\r\n if (NewsHelper.shouldAdvertisementBeShown()) {\r\n NewsHelper.showPopup();\r\n }\r\n\r\n // collect containers\r\n this.containers = {\r\n table1Chart: this.$el.find(\".table1-stats .a-chart\")[0],\r\n table1Pie: this.$el.find(\".table1-stats .a-pie\")[0],\r\n table2Pie: this.$el.find(\".table2-stats .a-pie\")[0],\r\n ordersChart: this.$el.find(\".orders-stats .a-chart\")[0],\r\n ordersPie: this.$el.find(\".orders-stats .a-pie\")[0],\r\n }\r\n\r\n AppKitchen.UIHelper.renderLoader(this.containers.table1Chart);\r\n AppKitchen.UIHelper.renderLoader(this.containers.table1Pie);\r\n AppKitchen.UIHelper.renderLoader(this.containers.table2Pie);\r\n AppKitchen.UIHelper.renderLoader(this.containers.ordersChart);\r\n AppKitchen.UIHelper.renderLoader(this.containers.ordersPie);\r\n\r\n this.table1Loader = new Data.StatisticDataLoader(() => {\r\n var table1Chart = new Controls.SummaryStackedColumnChartModel(this.table1Loader);\r\n var table1PieChart = new Controls.SummaryPieChartModel(this.table1Loader);\r\n\r\n // ReSharper disable once WrongExpressionStatement\r\n new AppKitchen.Controls.Charts.StackedColumnChartView(table1Chart, this.containers.table1Chart, { valueAxis: { minMax: 10 } });\r\n // ReSharper disable once WrongExpressionStatement\r\n new AppKitchen.Controls.Charts.PieChartView(table1PieChart, this.containers.table1Pie, {\r\n noDataMessage: Strings.Dashboard_NoDataMessage_Table1Trades\r\n });\r\n });\r\n\r\n this.table2Loader = new Data.StatisticDataLoader(() => {\r\n var table2PieChart = new Controls.SummaryPieChartModel(this.table2Loader);\r\n // ReSharper disable once WrongExpressionStatement\r\n new AppKitchen.Controls.Charts.PieChartView(table2PieChart, this.containers.table2Pie, {\r\n noDataMessage: Strings.Dashboard_NoDataMessage_Table2Trades,\r\n legend: { position: \"bottom\", offsetY: -280, offsetX: 0 }\r\n });\r\n });\r\n\r\n this.orderLoader = new Data.StatisticDataLoader(() => {\r\n var orderChart = new Controls.SummaryStackedColumnChartModel(this.orderLoader);\r\n var orderPieChart = new Controls.SummaryPieChartModel(this.orderLoader);\r\n\r\n // ReSharper disable once WrongExpressionStatement\r\n new AppKitchen.Controls.Charts.StackedColumnChartView(orderChart, this.containers.ordersChart, { valueAxis: { minMax: 10 } });\r\n // ReSharper disable once WrongExpressionStatement\r\n new AppKitchen.Controls.Charts.PieChartView(orderPieChart, this.containers.ordersPie, {\r\n noDataMessage: Strings.Dashboard_NoDataMessage_Orders\r\n });\r\n });\r\n\r\n // load data\r\n this.table1Loader.loadStatistic(new Date().onlyDate().addDays(-6), RemitTables.Table1Trades);\r\n this.table2Loader.loadStatistic(new Date().onlyDate().addDays(-29), RemitTables.Table2Trades);\r\n this.orderLoader.loadStatistic(new Date().onlyDate().addDays(-6), RemitTables.Orders);\r\n\r\n var maintenanceTemplate = $(\"#not-available-notification-\" + AppKitchen.GlobalSettings.culture).html();\r\n if (maintenanceTemplate) {\r\n this.$el.append(maintenanceTemplate);\r\n }\r\n }\r\n\r\n onPieChartClick(e: any, route: string) {\r\n // get rid of the tooltip before navigation\r\n try {\r\n e.sender._tooltip.destroy();\r\n } catch (e) {\r\n }\r\n var status = e.category;\r\n //var fromDate = new Date().addDays(-this.historyDays); TODO\r\n var fromDate = new Date().addDays(-7);\r\n var url = \"#/\" + route +\r\n \"/?status=\" + ChartClickHelper.mapCategoryToStatus(status) +\r\n \"&from=\" + kendo.toString(fromDate, \"yyyyMMdd\") +\r\n \"&filter=transaction\";\r\n\r\n console.log(url);\r\n AppKitchen.BrowserHelper.setUrl(url);\r\n }\r\n\r\n onColChartSeriesClick(e: any, route: string) {\r\n // get rid of the tooltip before navigation\r\n try {\r\n e.sender._tooltip.destroy();\r\n } catch (e) {\r\n }\r\n\r\n var status = ChartClickHelper.mapSeriesToStatus(e.series.index);\r\n //var fromDate = ChartClickHelper.findFromDateFromCategory(e.category, this.options.reportingDays); TODO\r\n var fromDate = ChartClickHelper.findFromDateFromCategory(e.category, 7);\r\n var url = \"#/\" + route +\r\n \"/?status=\" + status +\r\n \"&from=\" + kendo.toString(fromDate, \"yyyyMMdd\") +\r\n \"&filter=transaction\";\r\n\r\n console.log(url);\r\n AppKitchen.BrowserHelper.setUrl(url);\r\n }\r\n\r\n dispose() {\r\n if (this.table1Loader) {\r\n this.table1Loader.abortRequest();\r\n }\r\n if (this.table2Loader) {\r\n this.table2Loader.abortRequest();\r\n }\r\n if (this.orderLoader) {\r\n this.orderLoader.abortRequest();\r\n }\r\n }\r\n }\r\n}","module Seven2one.Remit.Apps {\r\n\r\n export class MainApp extends AppKitchen.AppBase {\r\n start() {\r\n this.checkDelegatedTradesMenuVisibility(showDelegatedTradesMenu => {\r\n\r\n // routed apps\r\n var trade1ViewApp = new AppKitchen.FrameManager.RoutedApp(Table1TradeViewApp, \"ViewTable1Trade\", { title: Strings.PageTitle_Table1Trade });\r\n var tradesGridApp = new AppKitchen.FrameManager.RoutedApp(TradeOrderGridApp, \"Table1TradesGrid\", {\r\n title: Strings.PageTitle_Table1Grid,\r\n gridTitle: Strings.PageTitle_Table1Grid,\r\n remitTable: RemitTables.Table1Trades,\r\n gridConfigName: \"TradeGrid\",\r\n initialSort: { field: \"RemitTrade_Version\", dir: \"desc\" },\r\n trumViewApp: trade1ViewApp\r\n });\r\n\r\n var trade2ViewApp = new AppKitchen.FrameManager.RoutedApp(Table2TradeViewApp, \"ViewTable2Trade\", { title: Strings.PageTitle_Table2Trade });\r\n var trades2GridApp = new AppKitchen.FrameManager.RoutedApp(TradeOrderGridApp, \"Table2TradesGrid\", {\r\n title: Strings.PageTitle_Table2Grid,\r\n gridTitle: Strings.PageTitle_Table2Grid,\r\n remitTable: RemitTables.Table2Trades,\r\n gridConfigName: \"TradeGridTable2\",\r\n initialSort: { field: \"RemitTable2Trade_Version\", dir: \"desc\" },\r\n trumViewApp: trade2ViewApp\r\n });\r\n\r\n var delegatedTrade1ViewApp = new AppKitchen.FrameManager.RoutedApp(Table1TradeViewApp, \"ViewTable1Delegated\", {\r\n title: Strings.PageTitle_Table1Trade + \" \" + Strings.PageTitle_Delegated,\r\n delegatedView: true\r\n });\r\n var delegatedTradesGridApp = new AppKitchen.FrameManager.RoutedApp(TradeOrderGridApp, \"Table1DelegatedGrid\", {\r\n title: Strings.PageTitle_Table1Grid + \" \" + Strings.PageTitle_Delegated,\r\n gridTitle: Strings.PageTitle_Table1Grid + Strings.PageTitle_Subtitle_Delegated,\r\n remitTable: RemitTables.Table1Trades,\r\n gridConfigName: \"TradeGrid\",\r\n initialSort: { field: \"RemitTrade_Version\", dir: \"desc\" },\r\n trumViewApp: delegatedTrade1ViewApp,\r\n delegatedView: true\r\n });\r\n\r\n var delegatedTrade2ViewApp = new AppKitchen.FrameManager.RoutedApp(Table2TradeViewApp, \"ViewTable2Delegated\",\r\n {\r\n title: Strings.PageTitle_Table2Trade + \" \" + Strings.PageTitle_Delegated,\r\n delegatedView: true\r\n });\r\n var delegatedTrades2GridApp = new AppKitchen.FrameManager.RoutedApp(TradeOrderGridApp, \"Table2DelegatedGrid\", {\r\n title: Strings.PageTitle_Table2Grid + \" \" + Strings.PageTitle_Delegated,\r\n gridTitle: Strings.PageTitle_Table2Grid + Strings.PageTitle_Subtitle_Delegated,\r\n remitTable: RemitTables.Table2Trades,\r\n gridConfigName: \"TradeGridTable2\",\r\n initialSort: { field: \"RemitTable2Trade_Version\", dir: \"desc\" },\r\n trumViewApp: delegatedTrade2ViewApp,\r\n delegatedView: true\r\n });\r\n\r\n var orderViewApp = new AppKitchen.FrameManager.RoutedApp(OrderViewApp, \"ViewOrder\", { title: Strings.PageTitle_Order });\r\n var ordersGridApp = new AppKitchen.FrameManager.RoutedApp(TradeOrderGridApp, \"OrdersGrid\", {\r\n title: Strings.PageTitle_Orders,\r\n gridTitle: Strings.PageTitle_Orders,\r\n remitTable: RemitTables.Orders,\r\n gridConfigName: \"OrderGrid\",\r\n initialSort: { field: \"RemitOrder_Version\", dir: \"desc\" },\r\n trumViewApp: orderViewApp\r\n });\r\n\r\n var messageArchiveGridApp = new AppKitchen.FrameManager.RoutedApp(MessageArchiveGridApp, \"Messages\", {\r\n title: Strings.PageTitle_OutgoingMessages,\r\n gridTitle: Strings.PageTitle_OutgoingMessages,\r\n gridConfigName: \"MessageArchive\"\r\n });\r\n var stagingLogGridApp = new AppKitchen.FrameManager.RoutedApp(StagingLogGridApp, \"StagingLog\", {\r\n title: Strings.PageTitle_StagingLog,\r\n gridTitle: Strings.PageTitle_StagingLog,\r\n gridConfigName: \"StagingLog\"\r\n });\r\n\r\n var createTable1TradeApp = new AppKitchen.FrameManager.SingeltonRoutedApp(CreateTable1TradeApp, \"CreateTable1Trade\", { title: Strings.PageTitle_CreateTrade + \" - Table 1\" });\r\n var createTable2TradeApp = new AppKitchen.FrameManager.SingeltonRoutedApp(CreateTable2TradeApp, \"CreateTable2Trade\", { title: Strings.PageTitle_CreateTrade + \" - Table 2\" });\r\n\r\n var dashboardApp = new AppKitchen.FrameManager.RoutedApp(DashboardApp, \"\", {\r\n title: \"Dashboard\",\r\n table1TradesGridRoute: tradesGridApp.route,\r\n table2TradesGridRoute: trades2GridApp.route,\r\n ordersGridRoute: ordersGridApp.route\r\n });\r\n\r\n var routedApps = [\r\n dashboardApp,\r\n tradesGridApp,\r\n ordersGridApp,\r\n trades2GridApp,\r\n messageArchiveGridApp,\r\n stagingLogGridApp,\r\n trade1ViewApp,\r\n trade2ViewApp,\r\n orderViewApp,\r\n createTable2TradeApp,\r\n createTable1TradeApp\r\n ];\r\n\r\n // menu\r\n var createTradeMenu = new AppKitchen.FrameManager.MenuItem(Strings.Menu_CreateTrade, null, [\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_CreateTable1Trade, { route: createTable1TradeApp.route, forceNavigate: true }),\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_CreateTable2Trade, { route: createTable2TradeApp.route, forceNavigate: true })\r\n ]);\r\n\r\n var viewTradeMenu = new AppKitchen.FrameManager.MenuItem(Strings.Menu_MonitorReporting, null, [\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_ReportingStatus, null, [\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_Table1Trades, { route: tradesGridApp.route }),\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_Table2Trades, { route: trades2GridApp.route }),\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_Orders, { route: ordersGridApp.route })\r\n ]),\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_OutgoingMessages, { route: messageArchiveGridApp.route }),\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_StagingLog, { route: stagingLogGridApp.route })\r\n ]);\r\n\r\n var delegatedTradesMenu = new AppKitchen.FrameManager.MenuItem(Strings.Menu_DelegatedReports, null, [\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_Table1Trades, { route: delegatedTradesGridApp.route }),\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_Table2Trades, { route: delegatedTrades2GridApp.route })\r\n ]);\r\n\r\n var mainMenu = new AppKitchen.FrameManager.MenuItem(\"REMIT Reporting\", { route: dashboardApp.route }, [\r\n createTradeMenu,\r\n viewTradeMenu\r\n ]);\r\n\r\n if (showDelegatedTradesMenu) {\r\n mainMenu.children.push(delegatedTradesMenu);\r\n routedApps = routedApps.concat([\r\n delegatedTrade1ViewApp,\r\n delegatedTrade2ViewApp,\r\n delegatedTradesGridApp,\r\n delegatedTrades2GridApp\r\n ]);\r\n }\r\n\r\n const showNews: boolean = AppKitchen.GlobalSettings.customConfig && AppKitchen.GlobalSettings.customConfig.ShowNews === \"true\";\r\n if (showNews) {\r\n mainMenu.children.push(new AppKitchen.FrameManager.MenuItem(Remit.Strings.Menu_721News));\r\n }\r\n\r\n // ReSharper disable once WrongExpressionStatement\r\n new AppKitchen.FrameManager.MainApp(this.el,\r\n {\r\n apps: routedApps,\r\n mainMenu: mainMenu,\r\n userMenu: {\r\n userMenuStyle: AppKitchen.FrameManager.UserMenuStyle.Extended\r\n },\r\n helpMenu: {\r\n customItems: [\r\n new AppKitchen.FrameManager.MenuItem(Strings.Menu_UserManual, { url: \"Content/Files/Benutzerhandbuch_REMIT_WebClient.pdf\", newWindow: true })\r\n ]\r\n }\r\n });\r\n\r\n if (showNews) {\r\n this.$el.find(`span:contains(\"${Remit.Strings.Menu_721News}\")`).click(() => NewsHelper.showPopup());\r\n }\r\n });\r\n\r\n }\r\n\r\n checkDelegatedTradesMenuVisibility(checked: (visibility: boolean) => void) {\r\n this.loadCompanyAcercodeMapping(mapping => {\r\n if (mapping && mapping[\"CompanyAcercodeMapping_DelegatedReportUser\"]) {\r\n checked(true);\r\n } else {\r\n checked(false);\r\n }\r\n });\r\n }\r\n\r\n loadCompanyAcercodeMapping(loaded: (mapping: any) => void) {\r\n var dataLoader = new AppKitchen.Data.EventDataLoader({\r\n MainInventory: \"CompanyAcercodeMapping\",\r\n EventItemSpecs: [\r\n { InventoryId: \"CompanyAcercodeMapping\", ItemId: \"NavObject_ClientMember\" },\r\n { InventoryId: \"CompanyAcercodeMapping\", ItemId: \"DelegatedReportUser\" }\r\n ]\r\n },\r\n loader => {\r\n loader.loadData({\r\n success: data => loaded(data ? data[0] : null),\r\n error: () => loaded(null)\r\n });\r\n },\r\n {\r\n startupFailed: () => loaded(null)\r\n });\r\n }\r\n }\r\n}","module Seven2one.Remit.Controls {\r\n\r\n export class GridPieChartModel extends AppKitchen.Controls.Charts.PieChartModel {\r\n\r\n dataLoader: AppKitchen.Data.EventDataLoader;\r\n\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader) {\r\n super();\r\n\r\n this.dataLoader = dataLoader;\r\n this.dataLoader.onChangeData().subscribe((e) => this.updateChartData(e.data));\r\n }\r\n\r\n private updateChartData(data: AppKitchen.Data.DataEntries[]) {\r\n\r\n var aggregatedData = {\r\n unknown: 0,\r\n pending: 0,\r\n success: 0,\r\n warning: 0,\r\n failure: 0,\r\n technicalError: 0\r\n }\r\n\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n if (!data[i][\"IsHistory\"]) {\r\n switch (data[i][\"AggregatedStatus\"]) {\r\n case \"BrandNew\":\r\n case \"New\":\r\n case \"Pending\":\r\n aggregatedData.pending++;\r\n break;\r\n case \"FinalOk\":\r\n aggregatedData.success++;\r\n break;\r\n case \"PendingWithError\":\r\n aggregatedData.warning++;\r\n break;\r\n case \"FinalError\":\r\n aggregatedData.failure++;\r\n break;\r\n case \"ImportError\":\r\n case \"TechnicalError\":\r\n aggregatedData.technicalError++;\r\n break;\r\n case \"Undefined\":\r\n aggregatedData.unknown++;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n var chartData = [\r\n {\r\n category: Strings.ChartCategory_Success,\r\n color: StatusHelper.Colors.Success,\r\n value: aggregatedData.success\r\n },\r\n {\r\n category: Strings.ChartCategory_Failure,\r\n color: StatusHelper.Colors.Failure,\r\n value: aggregatedData.failure\r\n },\r\n {\r\n category: Strings.ChartCategory_Pending,\r\n color: StatusHelper.Colors.Pending,\r\n value: aggregatedData.pending\r\n },\r\n\r\n {\r\n category: Strings.ChartCategory_PendingWithError,\r\n color: StatusHelper.Colors.Warning,\r\n value: aggregatedData.warning\r\n },\r\n\r\n {\r\n category: Strings.ChartCategory_TechnicalError,\r\n color: StatusHelper.Colors.TechnicalError,\r\n value: aggregatedData.technicalError\r\n },\r\n {\r\n category: Strings.ChartCategory_Unknown,\r\n color: StatusHelper.Colors.Unknown,\r\n value: aggregatedData.unknown\r\n }\r\n ];\r\n\r\n this.data(chartData);\r\n }\r\n }\r\n\r\n export class SummaryPieChartModel extends AppKitchen.Controls.Charts.PieChartModel {\r\n\r\n dataLoader: Data.StatisticDataLoader;\r\n\r\n constructor(dataLoader: Data.StatisticDataLoader) {\r\n super();\r\n\r\n this.dataLoader = dataLoader;\r\n this.updateChartData();\r\n }\r\n\r\n private updateChartData() {\r\n var data = this.dataLoader.get().data;\r\n var statistic = data && data.Values ? data.Values[\"all\"] : {};\r\n\r\n var chartData = [\r\n {\r\n category: Strings.ChartCategory_Success,\r\n color: StatusHelper.Colors.Success,\r\n value: statistic[\"FinalOk\"]\r\n },\r\n {\r\n category: Strings.ChartCategory_Failure,\r\n color: StatusHelper.Colors.Failure,\r\n value: statistic[\"FinalError\"]\r\n },\r\n {\r\n category: Strings.ChartCategory_Pending,\r\n color: StatusHelper.Colors.Pending,\r\n value: statistic[\"BrandNew\"] + statistic[\"New\"] + statistic[\"Pending\"]\r\n },\r\n {\r\n category: Strings.ChartCategory_PendingWithError,\r\n color: StatusHelper.Colors.Warning,\r\n value: statistic[\"PendingWithError\"]\r\n },\r\n {\r\n category: Strings.ChartCategory_TechnicalError,\r\n color: StatusHelper.Colors.TechnicalError,\r\n value: statistic[\"TechnicalError\"] + statistic[\"ImportError\"]\r\n },\r\n {\r\n category: Strings.ChartCategory_Unknown,\r\n color: StatusHelper.Colors.Unknown,\r\n value: statistic[\"Undefined\"]\r\n }\r\n ];\r\n\r\n this.data(chartData);\r\n }\r\n }\r\n\r\n export class SummaryStackedColumnChartModel extends AppKitchen.Controls.Charts.StackedColumnChartModel {\r\n\r\n dataLoader: Data.StatisticDataLoader;\r\n\r\n constructor(dataLoader: Data.StatisticDataLoader) {\r\n super();\r\n\r\n this.dataLoader = dataLoader;\r\n this.updateChartData();\r\n }\r\n\r\n private updateChartData() {\r\n\r\n var chartData =\r\n {\r\n unknown: [],\r\n pending: [],\r\n success: [],\r\n warning: [],\r\n failure: [],\r\n technicalError: []\r\n };\r\n\r\n const viewDays = 7;\r\n var day: number;\r\n\r\n // generate categories and initiate data object (1 category <=> 1 data)\r\n var categories: string[] = [];\r\n for (day = 0; day < viewDays; day++) {\r\n categories.push(kendo.toString(new Date().onlyDate().addDays(-viewDays + day + 1), kendo.culture().calendar.patterns.d));\r\n chartData.unknown.push(0);\r\n chartData.pending.push(0);\r\n chartData.success.push(0);\r\n chartData.warning.push(0);\r\n chartData.failure.push(0);\r\n chartData.technicalError.push(0);\r\n }\r\n\r\n var data = this.dataLoader.get().data;\r\n\r\n // fill data\r\n var statistics = data && data.Values ? data.Values : null;\r\n if (statistics) {\r\n for (day = 0; day < viewDays; day++) {\r\n var date = new Date().addDays(-viewDays + day + 1);\r\n var values = statistics[kendo.toString(date, \"yyyyMMdd\")];\r\n if (values) {\r\n chartData.unknown[day] += values[\"Undefined\"];\r\n chartData.pending[day] += values[\"BrandNew\"] + values[\"New\"] + values[\"Pending\"];\r\n chartData.success[day] += values[\"FinalOk\"];\r\n chartData.warning[day] += values[\"PendingWithError\"];\r\n chartData.failure[day] += values[\"FinalError\"];\r\n chartData.technicalError[day] += values[\"TechnicalError\"] + values[\"ImportError\"];\r\n }\r\n }\r\n }\r\n\r\n var series = [\r\n {\r\n name: Strings.ChartCategory_Success,\r\n color: StatusHelper.Colors.Success,\r\n data: chartData.success\r\n },\r\n {\r\n name: Strings.ChartCategory_Failure,\r\n color: StatusHelper.Colors.Failure,\r\n data: chartData.failure\r\n },\r\n {\r\n name: Strings.ChartCategory_Pending,\r\n color: StatusHelper.Colors.Pending,\r\n data: chartData.pending\r\n },\r\n {\r\n name: Strings.ChartCategory_PendingWithError,\r\n color: StatusHelper.Colors.Warning,\r\n data: chartData.warning\r\n },\r\n {\r\n name: Strings.ChartCategory_TechnicalError,\r\n color: StatusHelper.Colors.TechnicalError,\r\n data: chartData.technicalError\r\n },\r\n {\r\n name: Strings.ChartCategory_Unknown,\r\n color: StatusHelper.Colors.Unknown,\r\n data: chartData.unknown\r\n }\r\n ];\r\n\r\n this.data({series: series, categories: categories});\r\n }\r\n }\r\n}","module Seven2one.Remit.Controls {\r\n\r\n // ReSharper disable once InconsistentNaming\r\n interface DeliveryProfileGridFields {\r\n id: string;\r\n startDate: string;\r\n endDate: string;\r\n daysOfTheWeek: string;\r\n startTime: string;\r\n endTime: string;\r\n quantity ?: string;\r\n quantityUnit ?: string;\r\n price ?: string;\r\n priceCurrency ?: string;\r\n }\r\n\r\n var h24 = new Date(kendo.parseDate(\"23:00\", \"HH:mm\").valueOf() + 3600000);\r\n\r\n function compareTime(t1: any, t2: any): number {\r\n var time1 = kendo.parseDate(t1, \"HH:mm\") || new Date(0);\r\n var time2 = kendo.parseDate(t2, \"HH:mm\") || new Date(0);\r\n\r\n if (t1 === \"24:00\") {\r\n time1 = h24;\r\n }\r\n\r\n if (t2 === \"24:00\") {\r\n time2 = h24;\r\n }\r\n\r\n return time1.valueOf() - time2.valueOf();\r\n }\r\n\r\n function compareDate(d1: Date, d2: Date): number {\r\n var date1 = d1 || new Date(0);\r\n var date2 = d2 || new Date(0);\r\n\r\n return date1.valueOf() - date2.valueOf();\r\n }\r\n\r\n function getColumnHeader(inventoryId: string, itemId: string) {\r\n switch (itemId) {\r\n case \"Quantity\":\r\n return Strings.GridColumn_Quantity_Short;\r\n case \"QuantityUnit\":\r\n return Strings.GridColumn_Unit;\r\n default: return Strings[\"GridColumn_\" + itemId] || itemId;\r\n }\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface DeliveryProfileEditorGridOptions extends AppKitchen.Controls.Grids.EventGridOptions {\r\n deliveryProfileFields?: DeliveryProfileGridFields;\r\n }\r\n\r\n class DeliveryProfileEditorGridModel extends AppKitchen.Controls.Grids.EventGridModel {\r\n options: DeliveryProfileEditorGridOptions;\r\n\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader, options?: DeliveryProfileEditorGridOptions) {\r\n options = AppKitchen.OptionsHelper.merge(options,\r\n {\r\n getColumnHeader: getColumnHeader\r\n });\r\n super(dataLoader, options);\r\n }\r\n\r\n setGridData(data: { [field: string]: any }[]) {\r\n var clonedData = [];\r\n var fields = this.options.deliveryProfileFields;\r\n data.forEach(dataItem => clonedData.push(jQuery.extend(true, {}, dataItem)));\r\n\r\n clonedData.sort((data1, data2) => {\r\n var comp1 = compareDate(data1[fields.startDate], data2[fields.startDate]);\r\n if (comp1 !== 0)\r\n return comp1;\r\n\r\n var comp2 = compareDate(data1[fields.endDate], data2[fields.endDate]);\r\n if (comp2 !== 0)\r\n return comp2;\r\n\r\n var comp3 = compareTime(data1[fields.startTime], data2[fields.startTime]);\r\n if (comp3 !== 0)\r\n return comp3;\r\n\r\n return compareTime(data1[fields.endTime], data2[fields.endTime]);\r\n });\r\n\r\n this.set({ data: clonedData });\r\n }\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n var LoadTypes = {\r\n BL: \"BL\", // Base Load\r\n PL: \"PL\", // Peak Load\r\n OP: \"OP\", // Off-Peak\r\n GD: \"GD\", // Gas Day\r\n BH: \"BH\", // Block Hours\r\n SH: \"SH\", // Shaped\r\n OT: \"OT\" // Other\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface DeliveryProfileEditorOptions {\r\n editable?: boolean;\r\n onPriceQuantDetChange?: () => void;\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface SerializedDeliveryProfiles {\r\n serializedDeliveryProfiles: string;\r\n serializedDeliveryProfilesIntervals?: string;\r\n serializedPriceQuantityDetails?: string;\r\n serializedPriceQuantityDetailsIntervals?: string;\r\n };\r\n\r\n export class DeliveryProfileEditor {\r\n trumLoader: Data.TradeOrderFormDataLoaderBase;\r\n trumFormView: Controls.TrumFormViewBase;\r\n targetContainer: HTMLElement;\r\n\r\n options: DeliveryProfileEditorOptions;\r\n\r\n validateAction: () => boolean;\r\n getSerializedDataAction: () => SerializedDeliveryProfiles;\r\n switchToPreviewAction: () => void;\r\n backToEditAction: () => void;\r\n processTrumValidationAction: (validationResult: any) => void;\r\n\r\n constructor(trumLoader: Data.TradeOrderFormDataLoaderBase, trumFormView: Controls.TrumFormViewBase, options?: DeliveryProfileEditorOptions) {\r\n this.trumLoader = trumLoader;\r\n this.trumFormView = trumFormView;\r\n this.targetContainer = trumFormView.$el.find(\"#ar-trum-delivery-profile-editor\")[0];\r\n\r\n this.options = AppKitchen.OptionsHelper.merge(options, {\r\n editable: false\r\n });\r\n\r\n if (!this.trumLoader || !this.getLoadTypeField())\r\n throw \"DeliveryProfileForm initialization failed\";\r\n\r\n \r\n if (this.options.editable) {\r\n this.switchEditor();\r\n this.getLoadTypeField().bind(\"change:value\", () => this.switchEditor());\r\n } else {\r\n if ((this.trumLoader.getData() || []).length > 0) {\r\n this.switchViewer();\r\n }\r\n this.trumLoader.model.bind(\"change:subloadersLoading\", () => this.switchViewer());\r\n this.trumLoader.onChangeLoading().subscribe(() => this.switchViewer());\r\n this.trumLoader.onChangeData().subscribe(() => this.switchViewer());\r\n }\r\n }\r\n\r\n getLoadTypeField() {\r\n return this.trumFormView.fieldViewDict[\"RemitContract_DeliveryLoadType\"].model;\r\n }\r\n\r\n getInputLoadType() {\r\n return this.getLoadTypeField().get(\"value\");\r\n }\r\n\r\n getLoadedLoadType() {\r\n var trumData = this.trumLoader.getData() || [];\r\n if (trumData.length > 0) {\r\n return trumData[0][this.getLoadTypeField().get().key] || \"\";\r\n }\r\n return \"\";\r\n }\r\n\r\n switchEditor() {\r\n this.trumFormView.$el.find(\"#ar-trum-delivery-profile-raw-editor\").hide(0);\r\n this.trumFormView.$el.find(\"#ar-trum-delivery-profiles\").empty();\r\n this.trumFormView.$el.find(\"#ar-trum-price-quantity-details\").empty();\r\n $(this.targetContainer).empty();\r\n \r\n // select editor depending on LoadType\r\n let loadType = this.getInputLoadType();\r\n if (loadType) {\r\n switch (loadType) {\r\n case LoadTypes.BL:\r\n this.startBaseLoad();\r\n break;\r\n case LoadTypes.PL:\r\n this.startPeakLoad();\r\n break;\r\n case LoadTypes.OP:\r\n this.startOffPeak();\r\n break;\r\n case LoadTypes.GD:\r\n this.startGasDay();\r\n break;\r\n case LoadTypes.BH:\r\n this.startBlockHours();\r\n break;\r\n case LoadTypes.SH:\r\n this.startShaped();\r\n break;\r\n case LoadTypes.OT:\r\n this.startOther();\r\n break;\r\n default:\r\n throw \"unknown load type\";\r\n }\r\n } else {\r\n this.clearEditor();\r\n }\r\n\r\n }\r\n\r\n switchViewer() {\r\n this.trumFormView.$el.find(\"#ar-trum-delivery-profile-raw-editor\").hide(0);\r\n this.trumFormView.$el.find(\"#ar-trum-delivery-profiles\").empty();\r\n this.trumFormView.$el.find(\"#ar-trum-price-quantity-details\").empty();\r\n $(this.targetContainer).empty();\r\n\r\n if (this.trumLoader.getLoading() || this.trumLoader.model.get(\"subloadersLoading\")) {\r\n if (!this.trumLoader.getLoading()) {\r\n $(this.targetContainer).height(100);\r\n $(this.targetContainer).css(\"position\", \"relative\");\r\n AppKitchen.UIHelper.renderLoader(this.targetContainer, {size: \"M\", fadeIn: 100});\r\n }\r\n return;\r\n }\r\n \r\n // select editor depending on Data\r\n let loadType = this.getLoadedLoadType();\r\n let deliveryProfiles = this.trumLoader.deliveryProfileLoader.getData() || [];\r\n let deliveryProfilesIntervals = this.trumLoader.deliveryProfileLoader.intervalLoader.getData() || [];\r\n let priceQuantityDetails = this.trumLoader.priceQuantityDetailLoader.getData() || [];\r\n let priceQuantityDetailsIntervals = this.trumLoader.priceQuantityDetailLoader.intervalLoader.getData() || [];\r\n\r\n if (deliveryProfiles.length === 1 &&\r\n deliveryProfilesIntervals.length === 0 &&\r\n priceQuantityDetails.length === 0 &&\r\n priceQuantityDetailsIntervals.length === 0 &&\r\n !deliveryProfiles[0][\"RemitDeliveryProfile_StartDate\"] &&\r\n !deliveryProfiles[0][\"RemitDeliveryProfile_EndDate\"]) {\r\n this.startBasicEditor(() => { });\r\n } else if (loadType === LoadTypes.OP &&\r\n deliveryProfiles.length === 2 &&\r\n deliveryProfilesIntervals.length === 2 &&\r\n priceQuantityDetails.length === 0 &&\r\n priceQuantityDetailsIntervals.length === 0 &&\r\n !deliveryProfiles[0][\"RemitDeliveryProfile_StartDate\"] &&\r\n !deliveryProfiles[0][\"RemitDeliveryProfile_EndDate\"] &&\r\n !deliveryProfiles[1][\"RemitDeliveryProfile_StartDate\"] &&\r\n !deliveryProfiles[1][\"RemitDeliveryProfile_EndDate\"]) {\r\n this.startOffPeak();\r\n } else {\r\n this.startOther();\r\n }\r\n }\r\n\r\n clearEditor() {\r\n $(this.targetContainer).empty();\r\n }\r\n\r\n startBaseLoad() {\r\n this.startBasicEditor((formModel) => {\r\n formModel.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ value: \"\" });\r\n formModel.fieldDict[\"RemitDeliveryProfile_StartTime\"].set({ value: \"00:00\" });\r\n formModel.fieldDict[\"RemitDeliveryProfile_EndTime\"].set({ value: \"24:00\" });\r\n\r\n formModel.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ disabled: true });\r\n formModel.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ pool: undefined });\r\n formModel.fieldDict[\"RemitDeliveryProfile_StartTime\"].set({ disabled: true });\r\n formModel.fieldDict[\"RemitDeliveryProfile_EndTime\"].set({ disabled: true });\r\n });\r\n }\r\n\r\n startPeakLoad() {\r\n this.startBasicEditor((formModel) => {\r\n formModel.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ value: \"MO;TU;WE;TH;FR\" });\r\n formModel.fieldDict[\"RemitDeliveryProfile_StartTime\"].set({ value: new Date(0, 0, 0, 8, 0) });\r\n formModel.fieldDict[\"RemitDeliveryProfile_EndTime\"].set({ value: new Date(0, 0, 0, 20, 0) });\r\n\r\n formModel.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ disabled: true });\r\n });\r\n }\r\n\r\n startOffPeak() {\r\n\r\n var mainFormModel = new Controls.TranslatedTrumFormModel(this.trumLoader.deliveryProfileLoader);\r\n // ReSharper disable once UnusedLocals\r\n var mainFormView = new AppKitchen.Controls.Forms.TemplatedFormView(mainFormModel, this.targetContainer, Templates.DeliveryProfileOffPeakEditor, { editable: this.options.editable });\r\n\r\n var profileForm1 = new Controls.TranslatedTrumFormModel(this.trumLoader.deliveryProfileLoader, { dataIndex: 0 });\r\n var profileForm2 = new Controls.TranslatedTrumFormModel(this.trumLoader.deliveryProfileLoader, { dataIndex: 1 });\r\n var profileForm1View = new AppKitchen.Controls.Forms.TemplatedFormView(profileForm1, this.targetContainer, \"\", { editable: this.options.editable, inputIndex: 0, useExistingContent: true, renderOnlyInputs: true });\r\n var profileForm2View = new AppKitchen.Controls.Forms.TemplatedFormView(profileForm2, this.targetContainer, \"\", { editable: this.options.editable, inputIndex: 1, useExistingContent: true, renderOnlyInputs: true });\r\n\r\n var intervalForm1 = new Controls.TranslatedTrumFormModel(this.trumLoader.deliveryProfileLoader.intervalLoader, { dataIndex: 0 });\r\n var intervalForm2 = new Controls.TranslatedTrumFormModel(this.trumLoader.deliveryProfileLoader.intervalLoader, { dataIndex: 1 });\r\n var intervalForm1View = new AppKitchen.Controls.Forms.TemplatedFormView(intervalForm1, this.targetContainer, \"\", { editable: this.options.editable, inputIndex: 0, useExistingContent: true, renderOnlyInputs: true });\r\n var intervalForm2View = new AppKitchen.Controls.Forms.TemplatedFormView(intervalForm2, this.targetContainer, \"\", { editable: this.options.editable, inputIndex: 1, useExistingContent: true, renderOnlyInputs: true });\r\n\r\n this.validateAction = () => {\r\n var check1 = profileForm1View.validateFields();\r\n var check2 = profileForm2View.validateFields();\r\n var check3 = intervalForm1View.validateFields();\r\n var check4 = intervalForm2View.validateFields();\r\n return check1 && check2 && check3 && check4;\r\n };\r\n this.switchToPreviewAction = () => {\r\n profileForm1View.preview();\r\n profileForm2View.preview();\r\n intervalForm1View.preview();\r\n intervalForm2View.preview();\r\n };\r\n this.backToEditAction = () => {\r\n profileForm1View.backToEdit();\r\n profileForm2View.backToEdit();\r\n intervalForm1View.backToEdit();\r\n intervalForm2View.backToEdit();\r\n };\r\n\r\n this.getSerializedDataAction = () => {\r\n var dp1DaysOfTheWeek = (profileForm1View.fieldViewDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].model.get().value || \"\").replace(\"|\", \";\");\r\n var dp1Interval1Start = intervalForm1View.fieldViewDict[\"RemitDeliveryProfileInterval_StartTime\"].model.get().displayValue;\r\n var dp1Interval1End = intervalForm1View.fieldViewDict[\"RemitDeliveryProfileInterval_EndTime\"].model.get().displayValue;\r\n var dp1Interval2Start = intervalForm2View.fieldViewDict[\"RemitDeliveryProfileInterval_StartTime\"].model.get().displayValue;\r\n var dp1Interval2End = intervalForm2View.fieldViewDict[\"RemitDeliveryProfileInterval_EndTime\"].model.get().displayValue;\r\n var dp2DaysOfTheWeek = (profileForm2View.fieldViewDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].model.get().value || \"\").replace(\"|\", \";\");\r\n var dp2StartTime = profileForm2View.fieldViewDict[\"RemitDeliveryProfile_StartTime\"].model.get(\"displayValue\");\r\n var dp2EndTime = profileForm2View.fieldViewDict[\"RemitDeliveryProfile_EndTime\"].model.get().displayValue;\r\n\r\n var serializedDp1 = [\"\", \"\", dp1DaysOfTheWeek, \"\", \"\"].join(\"|\");\r\n var serializedDp1Interval1 = [\"0\", dp1Interval1Start, dp1Interval1End].join(\"|\");\r\n var serializedDp1Interval2 = [\"0\", dp1Interval2Start, dp1Interval2End].join(\"|\");\r\n var serializedDp2 = [\"\", \"\", dp2DaysOfTheWeek, dp2StartTime, dp2EndTime].join(\"|\");\r\n\r\n return {\r\n serializedDeliveryProfiles: [serializedDp1, serializedDp2].join(\"\\n\"),\r\n serializedDeliveryProfilesIntervals: [serializedDp1Interval1, serializedDp1Interval2].join(\"\\n\"),\r\n serializedPriceQuantityDetails: \"\",\r\n serializedPriceQuantityDetailsIntervals: \"\"\r\n };\r\n };\r\n\r\n var resetAndPrefillAction = () => {\r\n if (this.getInputLoadType() !== this.getLoadedLoadType()) {\r\n this.resetLoaders();\r\n }\r\n profileForm1.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ value: \"MO;TU;WE;TH;FR\" });\r\n intervalForm1.fieldDict[\"RemitDeliveryProfileInterval_StartTime\"].set({ value: \"00:00\" });\r\n intervalForm1.fieldDict[\"RemitDeliveryProfileInterval_EndTime\"].set({ value: \"08:00\" });\r\n intervalForm2.fieldDict[\"RemitDeliveryProfileInterval_StartTime\"].set({ value: \"20:00\" });\r\n intervalForm2.fieldDict[\"RemitDeliveryProfileInterval_EndTime\"].set({ value: \"24:00\" });\r\n\r\n profileForm1.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ disabled: true });\r\n\r\n profileForm2.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ value: \"SA;SU\" });\r\n profileForm2.fieldDict[\"RemitDeliveryProfile_StartTime\"].set({ value: \"00:00\" });\r\n profileForm2.fieldDict[\"RemitDeliveryProfile_EndTime\"].set({ value: \"24:00\" });\r\n\r\n profileForm2.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ disabled: true });\r\n }\r\n\r\n if (this.options.editable) {\r\n var loaderData = this.trumLoader.deliveryProfileLoader.getData();\r\n if (loaderData && loaderData.length > 0) {\r\n AppKitchen.UIHelper.DialogBoxes.confirm(Strings.TrumDialog_DoYouWantToDiscardDeliveryProfiles, () => resetAndPrefillAction(), {\r\n strings: {\r\n ok: Strings.TrumDialog_DiscardDeliveryProfiles,\r\n cancel: Strings.TrumDialog_KeepDeliveryProfiles\r\n },\r\n title: Strings.TrumDialog_DeliveryProfilesExisting\r\n });\r\n } else {\r\n resetAndPrefillAction();\r\n }\r\n }\r\n\r\n }\r\n\r\n startBlockHours() {\r\n this.startGridEditor();\r\n }\r\n\r\n startShaped() {\r\n this.startGridEditor();\r\n }\r\n\r\n startOther() {\r\n this.startGridEditor();\r\n }\r\n\r\n startGasDay() {\r\n this.startBasicEditor((formModel) => {\r\n formModel.fieldDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].set({ value: \"\" });\r\n formModel.fieldDict[\"RemitDeliveryProfile_StartTime\"].set({ value: new Date(0, 0, 0, 6, 0) });\r\n formModel.fieldDict[\"RemitDeliveryProfile_EndTime\"].set({ value: new Date(0, 0, 0, 6, 0) });\r\n\r\n formModel.fieldDict[\"RemitDeliveryProfile_StartTime\"].set({ disabled: true });\r\n formModel.fieldDict[\"RemitDeliveryProfile_EndTime\"].set({ disabled: true });\r\n });\r\n }\r\n\r\n startBasicEditor(prefillAction: (formModel: AppKitchen.Controls.Forms.FormModel) => void) {\r\n var formModel = new Controls.TranslatedTrumFormModel(this.trumLoader.deliveryProfileLoader);\r\n var formView = new AppKitchen.Controls.Forms.TemplatedFormView(formModel, this.targetContainer, Templates.DeliveryProfileBasicEditor, { editable: this.options.editable });\r\n\r\n this.validateAction = () => formView.validateFields();\r\n this.switchToPreviewAction = () => formView.preview();\r\n this.backToEditAction = () => formView.backToEdit();\r\n this.getSerializedDataAction = () => {\r\n var startDate = \"\";\r\n var endDate = \"\";\r\n var daysOfTheWeek = (formView.fieldViewDict[\"RemitDeliveryProfile_DaysOfTheWeek\"].model.get().value || \"\").replace(\"|\", \";\");\r\n var startTime = formView.fieldViewDict[\"RemitDeliveryProfile_StartTime\"].model.get(\"displayValue\");\r\n var endTime = formView.fieldViewDict[\"RemitDeliveryProfile_EndTime\"].model.get(\"displayValue\");\r\n return {\r\n serializedDeliveryProfiles: [startDate, endDate, daysOfTheWeek, startTime, endTime].join(\"|\"),\r\n serializedDeliveryProfilesIntervals: \"\",\r\n serializedPriceQuantityDetails: \"\",\r\n serializedPriceQuantityDetailsIntervals: \"\"\r\n };\r\n };\r\n\r\n var resetAndPrefillAction = () => {\r\n if (this.getInputLoadType() !== this.getLoadedLoadType()) {\r\n this.resetLoaders();\r\n }\r\n prefillAction(formModel);\r\n }\r\n\r\n if (this.options.editable) {\r\n var loaderData = this.trumLoader.deliveryProfileLoader.getData();\r\n if (loaderData && loaderData.length > 0) {\r\n AppKitchen.UIHelper.DialogBoxes.confirm(Strings.TrumDialog_DoYouWantToDiscardDeliveryProfiles, () => resetAndPrefillAction(), {\r\n strings: {\r\n ok: Strings.TrumDialog_DiscardDeliveryProfiles,\r\n cancel: Strings.TrumDialog_KeepDeliveryProfiles\r\n },\r\n title: Strings.TrumDialog_DeliveryProfilesExisting\r\n });\r\n } else {\r\n resetAndPrefillAction();\r\n }\r\n }\r\n }\r\n\r\n startGridEditor() {\r\n this.trumFormView.$el.find(\"#ar-trum-delivery-profile-raw-editor\").show(0);\r\n\r\n var deliveryProfilesGridFields = {\r\n id: \"RemitDeliveryProfile_Id\",\r\n startDate: \"RemitDeliveryProfile_StartDate\",\r\n endDate: \"RemitDeliveryProfile_EndDate\",\r\n daysOfTheWeek: \"RemitDeliveryProfile_DaysOfTheWeek\",\r\n startTime: \"RemitDeliveryProfile_StartTime\",\r\n endTime: \"RemitDeliveryProfile_EndTime\"\r\n };\r\n\r\n var deliveryIntervalsGridFields = {\r\n id: \"RemitDeliveryProfileInterval_Id\",\r\n startDate: null,\r\n endDate: null,\r\n daysOfTheWeek: null,\r\n startTime: \"RemitDeliveryProfileInterval_StartTime\",\r\n endTime: \"RemitDeliveryProfileInterval_EndTime\"\r\n };\r\n\r\n // create grids\r\n var deliveryProfilesGridModel = new DeliveryProfileEditorGridModel(this.trumLoader.deliveryProfileLoader, { deliveryProfileFields: deliveryProfilesGridFields });\r\n var deliveryProfilesGridView = new AppKitchen.Controls.Grids.GridView(deliveryProfilesGridModel, this.trumFormView.$el.find(\"#ar-trum-delivery-profiles\")[0], {\r\n fillHeight: true,\r\n editable: this.options.editable,\r\n lazyShow: { initial: 100, more: 100 },\r\n toolbar: this.options.editable ? [Strings.TrumAction_AddDeliveryProfile] : undefined,\r\n noRecordsMessage: Strings.GridMessage_NoDeliveryProfiles\r\n });\r\n\r\n var deliveryIntervalsGridModel = new DeliveryProfileEditorGridModel(this.trumLoader.deliveryProfileLoader.intervalLoader, { deliveryProfileFields: deliveryIntervalsGridFields });\r\n var deliveryIntervalsGridView = new AppKitchen.Controls.Grids.GridView(deliveryIntervalsGridModel, this.trumFormView.$el.find(\"#ar-trum-delivery-intervals\")[0], {\r\n fillHeight: true,\r\n editable: this.options.editable,\r\n lazyShow: { initial: 100, more: 100 },\r\n toolbar: this.options.editable ? [Strings.TrumAction_AddLoadDeliveryInterval] : undefined,\r\n noRecordsMessage: Strings.GridMessage_NoDeliveryIntervals\r\n });\r\n\r\n var deliveryProfilesGridToolbar = new DeliveryProfileGridToolbar(this.trumFormView.$el.find(\"#ar-trum-delivery-profiles-toolbar\")[0], deliveryProfilesGridView, deliveryIntervalsGridView, {\r\n editable: this.options.editable,\r\n fields: deliveryProfilesGridFields\r\n });\r\n\r\n var priceQuantDetFields = {\r\n id: \"RemitTradePriceQuantityDetail_Id\",\r\n startDate: \"RemitTradePriceQuantityDetail_StartDate\",\r\n endDate: \"RemitTradePriceQuantityDetail_EndDate\",\r\n daysOfTheWeek: \"RemitTradePriceQuantityDetail_DaysOfTheWeek\",\r\n startTime: \"RemitTradePriceQuantityDetail_StartTime\",\r\n endTime: \"RemitTradePriceQuantityDetail_EndTime\",\r\n quantity: \"RemitTradePriceQuantityDetail_Quantity\",\r\n quantityUnit: \"RemitTradePriceQuantityDetail_QuantityUnit\",\r\n price: \"RemitTradePriceQuantityDetail_Price\",\r\n priceCurrency: \"RemitTradePriceQuantityDetail_PriceCurrency\"\r\n };\r\n\r\n var priceQuantIntervalFields = {\r\n id: \"RemitTradePriQuaDetInterval_Id\",\r\n startDate: null,\r\n endDate: null,\r\n daysOfTheWeek: null,\r\n startTime: \"RemitTradePriQuaDetInterval_StartTime\",\r\n endTime: \"RemitTradePriQuaDetInterval_EndTime\"\r\n };\r\n\r\n var priceQuantDetGridModel = new DeliveryProfileEditorGridModel(this.trumLoader.priceQuantityDetailLoader, { deliveryProfileFields: priceQuantDetFields });\r\n var priceQuantDetGridView = new AppKitchen.Controls.Grids.GridView(priceQuantDetGridModel, this.trumFormView.$el.find(\"#ar-trum-price-quantity-details\")[0], {\r\n fillHeight: true, editable: this.options.editable,\r\n lazyShow: { initial: 100, more: 100 },\r\n toolbar: this.options.editable ? [Strings.TrumAction_AddPriceQuantityDetail]: undefined,\r\n noRecordsMessage: Strings.GridMessage_NoPriQuaDetails\r\n });\r\n\r\n var priceQuantIntervalsGridModel = new DeliveryProfileEditorGridModel(this.trumLoader.priceQuantityDetailLoader.intervalLoader, { deliveryProfileFields: priceQuantIntervalFields });\r\n var priceQuantIntervalsGridView = new AppKitchen.Controls.Grids.GridView(priceQuantIntervalsGridModel, this.trumFormView.$el.find(\"#ar-trum-price-quantity-intervals\")[0], {\r\n fillHeight: true,\r\n editable: this.options.editable,\r\n lazyShow: { initial: 100, more: 100 },\r\n toolbar: this.options.editable ? [Strings.TrumAction_AddLoadDeliveryInterval] : undefined,\r\n noRecordsMessage: Strings.GridMessage_NoPriQuaDeIntervals\r\n });\r\n\r\n var priceQuantDetGridToolbar = new DeliveryProfileGridToolbar(this.trumFormView.$el.find(\"#ar-trum-price-quantity-details-toolbar\")[0], priceQuantDetGridView, priceQuantIntervalsGridView, {\r\n editable: this.options.editable,\r\n fields: priceQuantDetFields\r\n });\r\n\r\n var deliveryIntervalGridHtmlCell = deliveryIntervalsGridView.$el.closest(\"td\");\r\n var priceQuantIntervalsGridHtmlCell = priceQuantIntervalsGridView.$el.closest(\"td\");\r\n\r\n // on selection changed => filter intervals\r\n deliveryProfilesGridView.grid.bind(\"change\", () => {\r\n var selectedItem = deliveryProfilesGridView.grid.dataItem(deliveryProfilesGridView.grid.select());\r\n if (selectedItem) {\r\n deliveryIntervalsGridView.grid.dataSource.filter({\r\n field: \"RemitDeliveryProfileInterval_RemitDeliveryProfile\",\r\n operator: \"equals\",\r\n value: selectedItem[\"RemitDeliveryProfile_Id\"]\r\n });\r\n }\r\n });\r\n\r\n priceQuantDetGridView.grid.bind(\"change\", () => {\r\n var selectedItem = priceQuantDetGridView.grid.dataItem(priceQuantDetGridView.grid.select());\r\n if (selectedItem) {\r\n priceQuantIntervalsGridView.grid.dataSource.filter({\r\n field: \"RemitTradePriQuaDetInterval_RemitTradePriceQuantityDetail\",\r\n operator: \"equals\",\r\n value: selectedItem[\"RemitTradePriceQuantityDetail_Id\"]\r\n });\r\n }\r\n });\r\n\r\n // show/hide interval grids logic\r\n deliveryIntervalGridHtmlCell.hide(0);\r\n priceQuantIntervalsGridHtmlCell.hide(0);\r\n if (this.options.editable) {\r\n // in edit mode show only if: \r\n // - main grid has data\r\n // - interval grid has data OR selected element in main grid has no start/end time\r\n\r\n var updateDpiGridVisibility = () => {\r\n if (deliveryProfilesGridView.grid.dataSource.data().length > 0) {\r\n var selectedItem = deliveryProfilesGridView.grid.dataItem(deliveryProfilesGridView.grid.select());\r\n if (selectedItem) {\r\n var startDate = selectedItem[\"RemitDeliveryProfile_StartTime\"];\r\n var endDate = selectedItem[\"RemitDeliveryProfile_EndTime\"];\r\n if (deliveryIntervalsGridView.grid.dataSource.view().length > 0 || (!startDate && !endDate)) {\r\n deliveryIntervalGridHtmlCell.show(0);\r\n return;\r\n }\r\n }\r\n }\r\n deliveryIntervalGridHtmlCell.hide(0);\r\n };\r\n deliveryProfilesGridView.grid.bind(\"change\", () => updateDpiGridVisibility());\r\n deliveryProfilesGridView.grid.dataSource.bind(\"change\", () => updateDpiGridVisibility());\r\n deliveryIntervalsGridView.grid.dataSource.bind(\"change\", () => updateDpiGridVisibility());\r\n\r\n var updatePqdiGridVisibility = () => {\r\n if (priceQuantDetGridView.grid.dataSource.data().length > 0) {\r\n var selectedItem = priceQuantDetGridView.grid.dataItem(priceQuantDetGridView.grid.select());\r\n if (selectedItem) {\r\n var startDate = selectedItem[\"RemitTradePriceQuantityDetail_StartTime\"];\r\n var endDate = selectedItem[\"RemitTradePriceQuantityDetail_EndTime\"];\r\n if (priceQuantIntervalsGridView.grid.dataSource.view().length > 0 || (!startDate && !endDate)) {\r\n priceQuantIntervalsGridHtmlCell.show(0);\r\n return;\r\n }\r\n }\r\n }\r\n priceQuantIntervalsGridHtmlCell.hide(0);\r\n };\r\n priceQuantDetGridView.grid.bind(\"change\", () => updatePqdiGridVisibility());\r\n priceQuantDetGridView.grid.dataSource.bind(\"change\", () => {\r\n updatePqdiGridVisibility();\r\n this.handlePriceDetailChange();\r\n });\r\n priceQuantIntervalsGridView.grid.dataSource.bind(\"change\", () => updatePqdiGridVisibility());\r\n } else {\r\n // in view mode show only if the intervals grid itself has data\r\n var updateDeliveryIntervalsGridVisibility = () => {\r\n if (deliveryIntervalsGridView.grid.dataSource.view().length > 0) {\r\n deliveryIntervalGridHtmlCell.show(0);\r\n } else {\r\n deliveryIntervalGridHtmlCell.hide(0);\r\n }\r\n };\r\n\r\n var updatePiceQuantIntervalsGridVisibility = () => {\r\n if (priceQuantIntervalsGridView.grid.dataSource.view().length > 0) {\r\n priceQuantIntervalsGridHtmlCell.show(0);\r\n } else {\r\n priceQuantIntervalsGridHtmlCell.hide(0);\r\n }\r\n };\r\n \r\n deliveryIntervalsGridView.grid.dataSource.bind(\"change\", updateDeliveryIntervalsGridVisibility);\r\n priceQuantIntervalsGridView.grid.dataSource.bind(\"change\", updatePiceQuantIntervalsGridVisibility);\r\n }\r\n\r\n // select first row (if nothing selected) on data change\r\n deliveryProfilesGridView.selectRow(0, true);\r\n deliveryProfilesGridView.grid.dataSource.bind(\"change\", () => {\r\n if (deliveryProfilesGridView.grid.select().length === 0) {\r\n deliveryProfilesGridView.selectRow(0, true);\r\n }\r\n });\r\n priceQuantDetGridView.selectRow(0, true);\r\n priceQuantDetGridView.grid.dataSource.bind(\"change\", () => {\r\n if (priceQuantDetGridView.grid.select().length === 0) {\r\n priceQuantDetGridView.selectRow(0, true);\r\n }\r\n });\r\n\r\n // add delivery profile action\r\n var dpCounter = null;\r\n deliveryProfilesGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").prepend('');\r\n var addDeliveryProfile = e => {\r\n e.preventDefault();\r\n\r\n dpCounter = dpCounter || deliveryProfilesGridView.grid.dataSource.data().length;\r\n dpCounter++;\r\n\r\n var selectedItem = deliveryProfilesGridView.grid.dataItem(deliveryProfilesGridView.grid.select()) || {};\r\n deliveryProfilesGridView.insertRow({\r\n RemitDeliveryProfile_Id: dpCounter,\r\n RemitDeliveryProfile_StartDate: selectedItem[\"RemitDeliveryProfile_StartDate\"] || new Date().onlyDate(),\r\n RemitDeliveryProfile_EndDate: selectedItem[\"RemitDeliveryProfile_EndDate\"] || new Date().onlyDate(),\r\n RemitDeliveryProfile_StartTime: selectedItem[\"RemitDeliveryProfile_StartTime\"] || \"00:00\",\r\n RemitDeliveryProfile_EndTime: selectedItem[\"RemitDeliveryProfile_EndTime\"] || \"24:00\"\r\n });\r\n }\r\n deliveryProfilesGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").click((e) => addDeliveryProfile(e));\r\n\r\n // add delivery profile interval action\r\n deliveryIntervalsGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").prepend('');\r\n var addLoadDeliveryInterval = (e: Event) => {\r\n e.preventDefault();\r\n var selectedDeliveryProfile = deliveryProfilesGridView.grid.dataItem(deliveryProfilesGridView.grid.select());\r\n var selectedInterval = deliveryIntervalsGridView.grid.dataItem(deliveryIntervalsGridView.grid.select()) || {};\r\n if (selectedDeliveryProfile) {\r\n deliveryIntervalsGridView.insertRow({\r\n RemitDeliveryProfileInterval_RemitDeliveryProfile: selectedDeliveryProfile[\"RemitDeliveryProfile_Id\"],\r\n RemitDeliveryProfileInterval_StartTime: selectedInterval[\"RemitDeliveryProfileInterval_StartTime\"] || \"00:00\",\r\n RemitDeliveryProfileInterval_EndTime: selectedInterval[\"RemitDeliveryProfileInterval_EndTime\"] || \"24:00\"\r\n });\r\n } else {\r\n AppKitchen.UIHelper.DialogBoxes.alert(\"Please select delivery profile first\");\r\n }\r\n };\r\n\r\n deliveryIntervalsGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").click(e => addLoadDeliveryInterval(e));\r\n\r\n // add price quantity detail action\r\n var pqdCounter = null;\r\n priceQuantDetGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").prepend('');\r\n var addPriceQuantDetail = e => {\r\n e.preventDefault();\r\n\r\n pqdCounter = pqdCounter || priceQuantDetGridView.grid.dataSource.data().length;\r\n pqdCounter++;\r\n\r\n var selectedItem = priceQuantDetGridView.grid.dataItem(priceQuantDetGridView.grid.select()) || {};\r\n priceQuantDetGridView.insertRow({\r\n RemitTradePriceQuantityDetail_Id: pqdCounter,\r\n RemitTradePriceQuantityDetail_StartDate: selectedItem[\"RemitTradePriceQuantityDetail_StartDate\"] || new Date().onlyDate(),\r\n RemitTradePriceQuantityDetail_EndDate: selectedItem[\"RemitTradePriceQuantityDetail_EndDate\"] || new Date().onlyDate(),\r\n RemitTradePriceQuantityDetail_StartTime: selectedItem[\"RemitTradePriceQuantityDetail_StartTime\"] || \"00:00\",\r\n RemitTradePriceQuantityDetail_EndTime: selectedItem[\"RemitTradePriceQuantityDetail_EndTime\"] || \"24:00\",\r\n RemitTradePriceQuantityDetail_Quantity: selectedItem[\"RemitTradePriceQuantityDetail_Quantity\"] || 0,\r\n RemitTradePriceQuantityDetail_QuantityUnit: selectedItem[\"RemitTradePriceQuantityDetail_QuantityUnit\"] || \"MW\",\r\n RemitTradePriceQuantityDetail_Price: selectedItem[\"RemitTradePriceQuantityDetail_Price\"] || 0,\r\n RemitTradePriceQuantityDetail_PriceCurrency: selectedItem[\"RemitTradePriceQuantityDetail_PriceCurrency\"] || \"EUR\"\r\n });\r\n }\r\n priceQuantDetGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").click((e) => addPriceQuantDetail(e));\r\n\r\n // add price quantity detail interval action\r\n priceQuantIntervalsGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").prepend('');\r\n var addPriceQuantInterval = (e: Event) => {\r\n e.preventDefault();\r\n var selectedPriQuaDetail = priceQuantDetGridView.grid.dataItem(priceQuantDetGridView.grid.select());\r\n var selectedInterval = priceQuantIntervalsGridView.grid.dataItem(priceQuantIntervalsGridView.grid.select()) || {};\r\n if (selectedPriQuaDetail) {\r\n priceQuantIntervalsGridView.insertRow({\r\n RemitTradePriQuaDetInterval_RemitTradePriceQuantityDetail: selectedPriQuaDetail[\"RemitTradePriceQuantityDetail_Id\"],\r\n RemitTradePriQuaDetInterval_StartTime: selectedInterval[\"RemitTradePriQuaDetInterval_StartTime\"] || \"00:00\",\r\n RemitTradePriQuaDetInterval_EndTime: selectedInterval[\"RemitTradePriQuaDetInterval_EndTime\"] || \"24:00\"\r\n });\r\n } else {\r\n AppKitchen.UIHelper.DialogBoxes.alert(\"Please select price quantity detail first\");\r\n }\r\n };\r\n priceQuantIntervalsGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").click((e) => addPriceQuantInterval(e));\r\n\r\n // common editor actions\r\n this.validateAction = () => {\r\n //var check1 = deliveryProfilesGridView.validateInput();\r\n var check2 = deliveryIntervalsGridView.validateInput();\r\n var check3 = priceQuantDetGridView.validateInput();\r\n var check4 = priceQuantIntervalsGridView.validateInput();\r\n return /*check1 &&*/ check2 && check3 && check4;\r\n };\r\n this.switchToPreviewAction = () => {\r\n deliveryProfilesGridView.switchToPreview();\r\n deliveryProfilesGridView.grid.select(deliveryProfilesGridView.grid.tbody.find(\"tr:first\"));\r\n deliveryProfilesGridToolbar.switchToPreview();\r\n\r\n deliveryIntervalsGridView.switchToPreview();\r\n\r\n priceQuantDetGridView.switchToPreview();\r\n priceQuantDetGridView.grid.select(priceQuantDetGridView.grid.tbody.find(\"tr:first\"));\r\n priceQuantDetGridToolbar.switchToPreview();\r\n\r\n priceQuantIntervalsGridView.switchToPreview();\r\n\r\n AppKitchen.UIHelper.updateFullHeightGrids();\r\n };\r\n this.backToEditAction = () => {\r\n deliveryProfilesGridView.backToEdit();\r\n deliveryProfilesGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").prepend('');\r\n deliveryProfilesGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").click((e) => addDeliveryProfile(e));\r\n deliveryProfilesGridView.grid.select(deliveryProfilesGridView.grid.tbody.find(\"tr:first\"));\r\n deliveryProfilesGridToolbar.backToEdit();\r\n\r\n deliveryIntervalsGridView.backToEdit();\r\n deliveryIntervalsGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").prepend('');\r\n deliveryIntervalsGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").click((e) => addLoadDeliveryInterval(e));\r\n \r\n priceQuantDetGridView.backToEdit();\r\n priceQuantDetGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").prepend('');\r\n priceQuantDetGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").click((e) => addPriceQuantDetail(e));\r\n priceQuantDetGridView.grid.select(priceQuantDetGridView.grid.tbody.find(\"tr:first\"));\r\n priceQuantDetGridToolbar.backToEdit();\r\n\r\n priceQuantIntervalsGridView.backToEdit();\r\n priceQuantIntervalsGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").prepend('');\r\n priceQuantIntervalsGridView.grid.wrapper.find(\".k-grid-toolbar > a:first-child\").click((e) => addPriceQuantInterval(e));\r\n };\r\n this.getSerializedDataAction = () => {\r\n var deliveryProfiles: string[] = [];\r\n var deliveryProfileInvervals: string[] = [];\r\n var dpGridData = deliveryProfilesGridView.grid.dataSource.data().toJSON();\r\n var dpiGridData = deliveryIntervalsGridView.grid.dataSource.data().toJSON();\r\n\r\n for (let i = 0; i < dpGridData.length; i++) {\r\n let startDate = kendo.toString(dpGridData[i][\"RemitDeliveryProfile_StartDate\"], \"yyyyMMdd\") || \"\";\r\n let endDate = kendo.toString(dpGridData[i][\"RemitDeliveryProfile_EndDate\"], \"yyyyMMdd\") || \"\";\r\n let daysOfTheWeek = (dpGridData[i][\"RemitDeliveryProfile_DaysOfTheWeek\"] || \"\").replace(\"|\", \";\") || \"\";\r\n let startTime = kendo.toString(dpGridData[i][\"RemitDeliveryProfile_StartTime\"], \"HH:mm\") || \"\";\r\n let endTime = kendo.toString(dpGridData[i][\"RemitDeliveryProfile_EndTime\"], \"HH:mm\") || \"\";\r\n deliveryProfiles.push([startDate, endDate, daysOfTheWeek, startTime, endTime].join(\"|\"));\r\n\r\n for (let j = 0; j < dpiGridData.length; j++) {\r\n if (dpiGridData[j][\"RemitDeliveryProfileInterval_RemitDeliveryProfile\"] === dpGridData[i][\"RemitDeliveryProfile_Id\"]) {\r\n let start = kendo.toString(dpiGridData[j][\"RemitDeliveryProfileInterval_StartTime\"], \"HH:mm\") || \"\";\r\n let end = kendo.toString(dpiGridData[j][\"RemitDeliveryProfileInterval_EndTime\"], \"HH:mm\") || \"\";\r\n deliveryProfileInvervals.push([i.toString(), start, end].join(\"|\"));\r\n }\r\n }\r\n }\r\n\r\n var priceQuantityDetails: string[] = [];\r\n var priceQuantityDetailIntervals: string[] = [];\r\n var pqdGridData = priceQuantDetGridView.grid.dataSource.data().toJSON();\r\n var pqdiGridData = priceQuantIntervalsGridView.grid.dataSource.data().toJSON();\r\n\r\n for (let i = 0; i < pqdGridData.length; i++) {\r\n let startDate = kendo.toString(pqdGridData[i][\"RemitTradePriceQuantityDetail_StartDate\"], \"yyyyMMdd\") || \"\";\r\n let endDate = kendo.toString(pqdGridData[i][\"RemitTradePriceQuantityDetail_EndDate\"], \"yyyyMMdd\") || \"\";\r\n let daysOfTheWeek = (pqdGridData[i][\"RemitTradePriceQuantityDetail_DaysOfTheWeek\"] || \"\").replace(\"|\", \";\") || \"\";\r\n let startTime = kendo.toString(pqdGridData[i][\"RemitTradePriceQuantityDetail_StartTime\"], \"HH:mm\") || \"\";\r\n let endTime = kendo.toString(pqdGridData[i][\"RemitTradePriceQuantityDetail_EndTime\"], \"HH:mm\") || \"\";\r\n let quantity = pqdGridData[i][\"RemitTradePriceQuantityDetail_Quantity\"] || \"\";\r\n let quantityUnit = pqdGridData[i][\"RemitTradePriceQuantityDetail_QuantityUnit\"] || \"\";\r\n let price = kendo.toString(pqdGridData[i][\"RemitTradePriceQuantityDetail_Price\"], \"#.#####\", \"en-US\") || \"\";\r\n let priceCurrency = pqdGridData[i][\"RemitTradePriceQuantityDetail_PriceCurrency\"] || \"\";\r\n priceQuantityDetails.push([startDate, endDate, daysOfTheWeek, startTime, endTime, quantity, quantityUnit, price, priceCurrency].join(\"|\"));\r\n for (let j = 0; j < pqdiGridData.length; j++) {\r\n if (pqdiGridData[j][\"RemitTradePriQuaDetInterval_RemitTradePriceQuantityDetail\"] === pqdGridData[i][\"RemitTradePriceQuantityDetail_Id\"]) {\r\n let start = kendo.toString(pqdiGridData[j][\"RemitTradePriQuaDetInterval_StartTime\"], \"HH:mm\") || \"\";\r\n let end = kendo.toString(pqdiGridData[j][\"RemitTradePriQuaDetInterval_EndTime\"], \"HH:mm\") || \"\";\r\n priceQuantityDetailIntervals.push([i.toString(), start, end].join(\"|\"));\r\n }\r\n }\r\n }\r\n\r\n return {\r\n serializedDeliveryProfiles: deliveryProfiles.join(\"\\n\"),\r\n serializedDeliveryProfilesIntervals: deliveryProfileInvervals.join(\"\\n\"),\r\n serializedPriceQuantityDetails: priceQuantityDetails.join(\"\\n\"),\r\n serializedPriceQuantityDetailsIntervals: priceQuantityDetailIntervals.join(\"\\n\")\r\n };\r\n };\r\n\r\n this.processTrumValidationAction = (validationResult: any) => {\r\n var deliveryProfilesErrors = [];\r\n var priceQuantityDetErrors = [];\r\n\r\n for (let key in validationResult) {\r\n if (validationResult.hasOwnProperty(key)) {\r\n if (key.substr(0, 30) === \"RemitContract_DeliveryProfiles\") {\r\n deliveryProfilesErrors[key.substr(31, 1)] = this.combineErrorMessage(deliveryProfilesErrors[key.substr(31, 1)], validationResult[key].ErrorMessage);\r\n }\r\n if (key.substr(0, 31) === \"RemitTrade_PriceQuantityDetails\") {\r\n priceQuantityDetErrors[key.substr(32, 1)] = this.combineErrorMessage(deliveryProfilesErrors[key.substr(35, 1)], validationResult[key].ErrorMessage);\r\n }\r\n }\r\n }\r\n\r\n for (let index in deliveryProfilesErrors) {\r\n if (deliveryProfilesErrors.hasOwnProperty(index)) {\r\n deliveryProfilesGridView.setErrorMessage(parseInt(index), deliveryProfilesErrors[index]);\r\n }\r\n }\r\n\r\n for (let index in priceQuantityDetErrors) {\r\n if (priceQuantityDetErrors.hasOwnProperty(index)) {\r\n priceQuantDetGridView.setErrorMessage(parseInt(index), priceQuantityDetErrors[index]);\r\n }\r\n }\r\n\r\n };\r\n }\r\n\r\n private combineErrorMessage(oldMessage, newMessage) {\r\n if (oldMessage) {\r\n return oldMessage + '
' + newMessage;\r\n }\r\n return newMessage;\r\n }\r\n\r\n private resetLoaders() {\r\n this.trumLoader.deliveryProfileLoader.abortRequests();\r\n this.trumLoader.deliveryProfileLoader.intervalLoader.abortRequests();\r\n this.trumLoader.priceQuantityDetailLoader.abortRequests();\r\n this.trumLoader.priceQuantityDetailLoader.intervalLoader.abortRequests();\r\n this.trumLoader.deliveryProfileLoader.setData([], this);\r\n this.trumLoader.deliveryProfileLoader.intervalLoader.setData([], this);\r\n this.trumLoader.priceQuantityDetailLoader.setData([], this);\r\n this.trumLoader.priceQuantityDetailLoader.intervalLoader.setData([], this);\r\n }\r\n\r\n getSerializedData() {\r\n var data = null;\r\n if (this.getSerializedDataAction) {\r\n data = this.getSerializedDataAction();\r\n }\r\n return data || { serializedDeliveryProfiles: \"\" };\r\n }\r\n\r\n validateFields() {\r\n if (this.validateAction) {\r\n return this.validateAction() || false;\r\n } else\r\n return true;\r\n }\r\n\r\n switchToPreview() {\r\n if (this.switchToPreviewAction) {\r\n this.switchToPreviewAction();\r\n }\r\n }\r\n\r\n backToEdit() {\r\n if (this.backToEditAction) {\r\n this.backToEditAction();\r\n }\r\n }\r\n\r\n processTrumValidation(validationResult: any) {\r\n if (this.processTrumValidationAction) {\r\n this.processTrumValidationAction(validationResult);\r\n }\r\n }\r\n\r\n private handlePriceDetailChange() {\r\n if (this.options.onPriceQuantDetChange) {\r\n this.options.onPriceQuantDetChange();\r\n }\r\n }\r\n\r\n }\r\n\r\n function hideOtherToolips(e) {\r\n AppKitchen.UIHelper.hideTooltips(e.sender);\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n interface DeliveryProfileGridToolbarOptions {\r\n editable: boolean;\r\n fields: DeliveryProfileGridFields;\r\n }\r\n\r\n function formatDate(date: Date) {\r\n if (date) {\r\n return kendo.toString(date, \"d\");\r\n }\r\n return Strings.noEntries;\r\n }\r\n\r\n class DeliveryProfileGridToolbar {\r\n $el: JQuery;\r\n el: HTMLElement;\r\n options: DeliveryProfileGridToolbarOptions;\r\n gridView: AppKitchen.Controls.Grids.GridView;\r\n gridModel: AppKitchen.Controls.Grids.EventGridModel;\r\n intervalsGridView: AppKitchen.Controls.Grids.GridView;\r\n summaryTooltipCache: string;\r\n \r\n constructor(targetContainer: HTMLElement, gridView: AppKitchen.Controls.Grids.GridView, intervalsGridView: AppKitchen.Controls.Grids.GridView, options: DeliveryProfileGridToolbarOptions) {\r\n this.el = targetContainer;\r\n this.$el = $(targetContainer);\r\n this.options = options;\r\n this.gridView = gridView;\r\n this.gridModel = gridView.model;\r\n this.intervalsGridView = intervalsGridView;\r\n\r\n this.render();\r\n }\r\n\r\n render() {\r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.DeliveryProfilesGridToolbar);\r\n\r\n this.$el.find(\".ar-excel-export-button\").kendoTooltip({\r\n content: Strings.GridToolbar_ExportToExcel,\r\n position: \"top\",\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n\r\n if (this.options.editable) {\r\n this.$el.find(\".ar-excel-import-button\").kendoTooltip({\r\n content: Strings.GridToolbar_ImportExcel,\r\n position: \"top\",\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n } else {\r\n this.$el.find(\".ar-excel-import-button\").remove();\r\n }\r\n\r\n if (this.options.editable) {\r\n this.$el.find(\".ar-clear-grid-button\").kendoTooltip({\r\n content: Strings.GridToolbarDialog_ClearGrid,\r\n position: \"top\",\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n } else {\r\n this.$el.find(\".ar-clear-grid-button\").remove();\r\n }\r\n\r\n this.$el.find(\".ar-grid-summary-icon\").kendoTooltip({\r\n content: () => this.getSummaryTooltipContent(),\r\n position: \"bottom\",\r\n showAfter: 0,\r\n show: e => {\r\n hideOtherToolips(e);\r\n if (!this.summaryTooltipCache) {\r\n (e.sender).content.children().css(\"opacity\", 0);\r\n setTimeout(() => (e.sender).content.html(this.getSummaryTooltipContent(), 100));\r\n }\r\n }\r\n });\r\n\r\n this.$el.find(\".ar-excel-export-button\").click(() => this.exportExcel());\r\n this.$el.find(\".ar-excel-file-picker\").on(\"change\", e => this.handleFilePicker(e));\r\n this.$el.find(\".ar-clear-grid-button\").click(() => this.clearGrid());\r\n\r\n this.configureGridAggregations();\r\n\r\n this.updateToolbarState();\r\n this.gridModel.bind(\"change:loading\", () => this.updateToolbarState());\r\n }\r\n\r\n switchToPreview() {\r\n this.options.editable = false;\r\n this.render();\r\n }\r\n\r\n backToEdit() {\r\n this.options.editable = true;\r\n this.render();\r\n }\r\n\r\n updateToolbarState() {\r\n if (this.gridModel.get(\"loading\")) {\r\n this.$el.find(\".ar-toolbar-overlay\").show();\r\n } else {\r\n this.$el.find(\".ar-toolbar-overlay\").hide();\r\n }\r\n }\r\n\r\n configureGridAggregations() {\r\n var aggregations = [\r\n { field: this.options.fields.startDate, aggregate: \"min\" },\r\n { field: this.options.fields.endDate, aggregate: \"max\" }\r\n ];\r\n\r\n if (this.options.fields.price && this.options.fields.quantity) {\r\n aggregations.push({ field: this.options.fields.quantity, aggregate: \"sum\" });\r\n aggregations.push({ field: this.options.fields.price, aggregate: \"min\" });\r\n aggregations.push({ field: this.options.fields.price, aggregate: \"max\" });\r\n }\r\n this.gridView.grid.dataSource.aggregate(aggregations);\r\n\r\n this.gridView.grid.dataSource.bind(\"change\", () => this.summaryTooltipCache = null);\r\n }\r\n\r\n getSummaryTooltipContent(): string {\r\n if (!this.summaryTooltipCache) {\r\n var aggregates = this.gridView.grid.dataSource.aggregates();\r\n var timeAggregates = this.aggregateTime();\r\n this.summaryTooltipCache = AppKitchen.UIHelper.renderTemplate(Templates.DeliveryProfilesGridSummary, {\r\n count: kendo.toString(this.gridView.grid.dataSource.data().length, \"n0\"),\r\n startDate: formatDate(aggregates[this.options.fields.startDate].min),\r\n endDate: formatDate(aggregates[this.options.fields.endDate].max),\r\n from: timeAggregates.minStartTime,\r\n to: timeAggregates.maxEndTime,\r\n quantity: this.options.fields.quantity ? kendo.toString(aggregates[this.options.fields.quantity].sum, \"#,#.#####\") : null,\r\n maxPrice: this.options.fields.price ? kendo.toString(aggregates[this.options.fields.price].max, \"#,#.#####\") : null,\r\n minPrice: this.options.fields.price ? kendo.toString(aggregates[this.options.fields.price].min, \"#,#.#####\") : null\r\n });\r\n }\r\n return this.summaryTooltipCache;\r\n }\r\n\r\n aggregateTime() {\r\n var minStart = \"24:00\";\r\n var maxEnd = \"00:00\";\r\n\r\n this.gridView.grid.dataSource.data().forEach(item => {\r\n if (compareTime(item[this.options.fields.startTime], minStart) < 0) {\r\n minStart = item[this.options.fields.startTime];\r\n }\r\n if (compareTime(item[this.options.fields.endTime], maxEnd) > 0) {\r\n maxEnd = item[this.options.fields.endTime];\r\n }\r\n });\r\n\r\n return {\r\n minStartTime: minStart,\r\n maxEndTime: maxEnd\r\n };\r\n }\r\n\r\n handleFilePicker(e) {\r\n if (e.target.files.length === 0) {\r\n return;\r\n }\r\n\r\n var file = e.target.files[0];\r\n\r\n if (this.gridView.grid.dataSource.data().length === 0) {\r\n this.readExcelFile(file);\r\n } else {\r\n AppKitchen.UIHelper.DialogBoxes.confirm(Strings.GridToolbarDialog_ReplaceContentMessage, () => {\r\n this.readExcelFile(file);\r\n }, {\r\n title: Strings.GridToolbarDialog_ReplaceContent,\r\n strings: {\r\n ok: Strings.GridToolbarDialog_ImportFile,\r\n cancel: AppKitchen.Strings.Cancel\r\n }\r\n });\r\n }\r\n\r\n // reset file picker by replacing it with its clone\r\n $(e.target).replaceWith($(e.target).clone(true));\r\n this.$el.find(\".ar-excel-file-picker\").val(\"\");\r\n }\r\n\r\n clearGrid() {\r\n if (this.gridView.grid.dataSource.data().length === 0) {\r\n return;\r\n }\r\n\r\n AppKitchen.UIHelper.DialogBoxes.confirm(Strings.GridToolbarDialog_ClearGridMessage, () => {\r\n this.gridView.clearGrid();\r\n this.intervalsGridView.clearGrid();\r\n }, {\r\n title: Strings.GridToolbarDialog_ClearGrid,\r\n strings: {\r\n ok: Strings.GridToolbarDialog_Clear,\r\n cancel: AppKitchen.Strings.Cancel\r\n }\r\n });\r\n }\r\n\r\n exportExcel() {\r\n if (this.gridView.grid) {\r\n\r\n if (this.gridView.grid.dataSource.data().length === 0) {\r\n AppKitchen.UIHelper.DialogBoxes.alert(Strings.GridToolbarDialog_NoContentToExport);\r\n return;\r\n }\r\n\r\n if (this.gridModel.get().loading) {\r\n return;\r\n }\r\n\r\n this.gridModel.set({ loading: true });\r\n setTimeout(() => {\r\n var fields: AppKitchen.Data.Export.ExcelExportColumnDefinition[] = [\r\n { field: this.options.fields.startDate, header: Strings.GridColumn_StartDate, width: 100 },\r\n { field: this.options.fields.endDate, header: Strings.GridColumn_EndDate, width: 100 },\r\n { field: this.options.fields.daysOfTheWeek, header: Strings.GridColumn_DaysOfTheWeek, width: 200 },\r\n { field: this.options.fields.startTime, header: Strings.GridColumn_StartTime, width: 80},\r\n { field: this.options.fields.endTime, header: Strings.GridColumn_EndTime, width: 80 }\r\n ];\r\n\r\n var sheetName = Strings.TrumGroup_DeliveryProfiles;\r\n var fileName = Strings.TrumGroup_DeliveryProfiles;\r\n\r\n if (this.options.fields.quantity &&\r\n this.options.fields.quantityUnit &&\r\n this.options.fields.price &&\r\n this.options.fields.priceCurrency) {\r\n fields.push({ field: this.options.fields.quantity, header: Strings.GridColumn_Quantity_Short, align: \"right\", width: 80 });\r\n fields.push({ field: this.options.fields.quantityUnit, header: Strings.GridColumn_Unit, width: 80 });\r\n fields.push({ field: this.options.fields.price, header: Strings.GridColumn_Price, align: \"right\", width: 80 });\r\n fields.push({ field: this.options.fields.priceCurrency, header: Strings.GridColumn_PriceCurrency, width: 80 });\r\n\r\n sheetName = Strings.TrumGroup_PriceQuantityDetails.replace(\"/\", \"-\");\r\n fileName = Strings.TrumGroup_PriceQuantityDetails.replace(\"/\", \"-\");\r\n }\r\n\r\n AppKitchen.Data.Export.saveAsExcel(this.gridView.grid.dataSource.data().toJSON(), fields, sheetName, fileName);\r\n\r\n this.gridModel.set({ loading: false });\r\n\r\n }, 300);\r\n\r\n }\r\n }\r\n\r\n readExcelFile(file: File) {\r\n this.gridModel.set({ loading: true });\r\n setTimeout(() => {\r\n var fields = [\r\n { field: this.options.fields.startDate, type: \"date\", required: true },\r\n { field: this.options.fields.endDate, type: \"date\", required: true },\r\n { field: this.options.fields.daysOfTheWeek },\r\n { field: this.options.fields.startTime, type: \"time\", required: true },\r\n { field: this.options.fields.endTime, type: \"time24\", required: true }\r\n ];\r\n\r\n if (this.options.fields.quantity &&\r\n this.options.fields.quantityUnit &&\r\n this.options.fields.price &&\r\n this.options.fields.priceCurrency) {\r\n fields.push({ field: this.options.fields.quantity, type: \"number\" });\r\n fields.push({ field: this.options.fields.quantityUnit });\r\n fields.push({ field: this.options.fields.price, type: \"number\" });\r\n fields.push({ field: this.options.fields.priceCurrency });\r\n }\r\n\r\n //AppKitchen.Data.Import.readExcelFile(file, fields, data => {\r\n Remit.ExcelHelper.readExcelFile(file, fields, data => {\r\n data = data || [];\r\n // assign IDs\r\n for (let i = 0; i < data.length; i++) {\r\n data[this.options.fields.id] = i.toString();\r\n }\r\n // clear intervals grid\r\n this.intervalsGridView.clearGrid();\r\n // set grid data\r\n this.gridView.grid.dataSource.data(data);\r\n this.gridModel.set({ loading: false });\r\n }, error => {\r\n AppKitchen.UIHelper.DialogBoxes.alert(error, { title: Strings.GridToolbarDialog_ExcelImportFailed });\r\n this.gridModel.set({ loading: false });\r\n });\r\n }, 300);\r\n }\r\n }\r\n}","module Seven2one.Remit.Controls {\r\n\r\n export class TranslatedTrumFormModel extends AppKitchen.Controls.Forms.EventFormModel {\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader, options?: AppKitchen.Controls.Forms.EventFormOptions) {\r\n var defaultOptions: AppKitchen.Controls.Forms.EventFormOptions = {\r\n getFieldLabel: (inventoryId: string, itemId: string) => {\r\n return this.getFieldLabel(inventoryId, itemId);\r\n }\r\n }\r\n\r\n options = AppKitchen.OptionsHelper.merge(options, defaultOptions);\r\n super(dataLoader,options);\r\n }\r\n\r\n getFieldLabel(inventoryId: string, itemId: string) {\r\n return Strings[\"TrumLabel_\" + itemId] || (inventoryId ? inventoryId + \"_\" + itemId : itemId);\r\n }\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface ReportStatusInfo {\r\n reportType: string;\r\n creationDate: Date;\r\n messageGenerationDate: Date;\r\n receiptDate: Date;\r\n acknowledgementDate: Date;\r\n reportStatus: string;\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface TrumFormAttributes extends AppKitchen.Controls.Forms.FormAttributes {\r\n remitServiceAlive?: boolean;\r\n requiredSummary?: {\r\n requiredTotal: number;\r\n remainingFields: string[];\r\n };\r\n invalidSummary?: {\r\n fields: string[];\r\n }\r\n }\r\n\r\n export abstract class TrumFormModelBase extends TranslatedTrumFormModel {\r\n dataLoader: Data.SynchronizedEventDataLoader;\r\n\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader, options?: AppKitchen.Controls.Forms.EventFormOptions) {\r\n super(dataLoader, options);\r\n\r\n this.updateFieldsSummary();\r\n this.get().fields.bind(\"change\", () => {\r\n this.updateFieldsSummary();\r\n });\r\n }\r\n\r\n set(attributes: TrumFormAttributes, options?: AppKitchen.SetAttributeOptions): Backbone.Model {\r\n return super.set(attributes, options);\r\n }\r\n\r\n get(attribute?: string): TrumFormAttributes {\r\n return super.get(attribute);\r\n }\r\n\r\n getWriteData(): AppKitchen.Api.Models.DataObject[] {\r\n return this.dataLoader.getSaveRequestData(this.getFieldsData()).EventValues;\r\n }\r\n\r\n private updateFieldsSummary() {\r\n var remainingFields = [];\r\n var requiredCount = 0;\r\n\r\n var invalidFields = [];\r\n\r\n this.get().fields.each(field => {\r\n if (field.get().mandatory) {\r\n requiredCount++;\r\n if (field.get(\"value\") == null) {\r\n remainingFields.push(field.get(\"key\"));\r\n }\r\n }\r\n\r\n if (field.get().error) {\r\n invalidFields.push({\r\n key: field.get().key,\r\n message: field.get().error\r\n });\r\n }\r\n });\r\n\r\n this.set({\r\n requiredSummary: {\r\n requiredTotal: requiredCount,\r\n remainingFields: remainingFields\r\n },\r\n invalidSummary: {\r\n fields: invalidFields\r\n }\r\n });\r\n }\r\n\r\n abstract getReportStatusInfo(): ReportStatusInfo;\r\n }\r\n\r\n export class Table1TradeFormModel extends TrumFormModelBase {\r\n dataLoader: Data.Table1TradeFormDataLoader;\r\n\r\n getReportStatusInfo(): ReportStatusInfo {\r\n return {\r\n reportType: \"Table1Trade\",\r\n creationDate: this.getValue(\"RemitTrade_Version\"),\r\n messageGenerationDate: this.getValue(\"MessageArchive_CreationDate\"),\r\n receiptDate: this.getValue(\"MessageArchive_ReceiptDate\"),\r\n acknowledgementDate: this.getValue(\"MessageArchive_AcknowledgementDate\"),\r\n reportStatus: StatusHelper.aggregateStatus(this.getValue(\"MessageArchive_Status\"), this.getValue(\"ReportLogTrade_Status\"))\r\n }\r\n }\r\n }\r\n\r\n export class Table2TradeFormModel extends TrumFormModelBase {\r\n dataLoader: Data.Table2TradeFormDataLoader;\r\n\r\n getReportStatusInfo(): ReportStatusInfo {\r\n return {\r\n reportType: \"Table2Trade\",\r\n creationDate: this.getValue(\"RemitTable2Trade_Version\"),\r\n messageGenerationDate: this.getValue(\"MessageArchive_CreationDate\"),\r\n receiptDate: this.getValue(\"MessageArchive_ReceiptDate\"),\r\n acknowledgementDate: this.getValue(\"MessageArchive_AcknowledgementDate\"),\r\n reportStatus: StatusHelper.aggregateStatus(this.getValue(\"MessageArchive_Status\"), this.getValue(\"ReportLogTable2Trade_Status\"))\r\n }\r\n }\r\n }\r\n\r\n export class OrderFormModel extends TrumFormModelBase {\r\n dataLoader: Data.OrderFormDataLoader;\r\n\r\n getReportStatusInfo(): ReportStatusInfo {\r\n return {\r\n reportType: \"Order\",\r\n creationDate: this.getValue(\"RemitOrder_Version\"),\r\n messageGenerationDate: this.getValue(\"MessageArchive_CreationDate\"),\r\n receiptDate: this.getValue(\"MessageArchive_ReceiptDate\"),\r\n acknowledgementDate: this.getValue(\"MessageArchive_AcknowledgementDate\"),\r\n reportStatus: StatusHelper.aggregateStatus(this.getValue(\"MessageArchive_Status\"), this.getValue(\"ReportLogOrder_Status\"))\r\n }\r\n }\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface TrumFormViewOptions extends AppKitchen.Controls.Forms.TemplatedFormViewOptions {\r\n isCreate?: boolean;\r\n isCounterTrade?: boolean;\r\n delegatedView?: boolean;\r\n fields?: {\r\n id?: string;\r\n uti?: string;\r\n actionType?: string;\r\n reportLogStatus?: string;\r\n reportLogStatusInfo?: string;\r\n utiRelevantFields?: { [field: string]: string };\r\n traderId?: string;\r\n traderIdType?: string;\r\n marketParticipantId?: string;\r\n marketParticipantIdType?: string;\r\n otherMarketParticipantId?: string;\r\n otherMarketParticipantIdType?: string;\r\n beneficiaryId?: string;\r\n beneficiaryIdType?: string;\r\n buySellIndicator?: string;\r\n aggressor?: string;\r\n tradingCapacity?: string;\r\n };\r\n api?: {\r\n validation?: string;\r\n cancel?: string;\r\n error?: string;\r\n submit?: string;\r\n uti?: string;\r\n };\r\n tradeGridRoute?: string;\r\n createTradeRoute?: string;\r\n reset?: () => void;\r\n allowPdfExport?: boolean;\r\n allowTrumActions?: boolean;\r\n validateRemitV3InTrumActions?: boolean;\r\n }\r\n\r\n\r\n function hideOtherToolips(e) {\r\n (AppKitchen.UIHelper).hideTooltips(e.sender);\r\n }\r\n\r\n export abstract class TrumFormViewBase extends AppKitchen.Controls.Forms.TemplatedFormView {\r\n model: TrumFormModelBase;\r\n options: TrumFormViewOptions;\r\n\r\n config: any;\r\n generateUtiTriggered: boolean;\r\n utiIsReadOnly: boolean;\r\n hasUti: boolean;\r\n serverNotAliveNotification: AppKitchen.Controls.Popups.Notification;\r\n\r\n trumTemplateManager: TrumTemplateManager;\r\n\r\n validationRequest: JQueryXHR;\r\n submitRequest: JQueryXHR;\r\n errorRequest: JQueryXHR;\r\n cancelRequest: JQueryXHR;\r\n utiRequest: JQueryXHR;\r\n\r\n constructor(model: TrumFormModelBase, targetContainer: HTMLElement, formTemplate: string, options?: TrumFormViewOptions) {\r\n options = AppKitchen.OptionsHelper.merge(options, {\r\n editable: false,\r\n isCreate: false\r\n });\r\n\r\n super(model, targetContainer, formTemplate, options);\r\n\r\n this.config = model.dataLoader.getConfig();\r\n\r\n this.$el.kendoTooltip({\r\n position: \"left\",\r\n filter: \".a-form-field-info:not([disabled])\", // adapt if not using event item description as tooltip (e.g. localized strings)\r\n content: e => AppKitchen.UIHelper.renderTemplate(Templates.TitleDescriptionTooltip, {\r\n title: $(e.target).parent().text(),\r\n text: $(e.target).attr(\"data-info\")\r\n //text: AppKitchen.StringHelper.getString(\"TrumInfo_\" + $(e.target).parent().attr(\"data-field-label\"), Remit.Strings)\r\n }),\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n\r\n if (this.options.editable) {\r\n this.fieldViewDict[this.options.fields.actionType].options.editOnDemand = true;\r\n this.fieldViewDict[this.options.fields.actionType].render();\r\n\r\n this.configureUtiGeneration();\r\n\r\n this.model.set({ remitServiceAlive: undefined });\r\n this.model.bind(\"change:remitServiceAlive\", model => this.setRemitServerAlive((model.get()).remitServiceAlive));\r\n this.checkServiceAlive();\r\n window.setTimeout(() => this.checkServiceAlive(), 10000);\r\n\r\n this.trumTemplateManager = new TrumTemplateManager(this, this.$el.find(\".ar-trum-toolbar-container\")[0]);\r\n\r\n // ReSharper disable once WrongExpressionStatement\r\n new InputSummaryView(this.model, this.$el.find(\".ar-form-input-summary\")[0]);\r\n\r\n this.updateValidateButtonState();\r\n this.model.bind(\"change:requiredSummary change:invalidSummary change:remitServiceAlive\", () => this.updateValidateButtonState());\r\n this.model.dataLoader.model.bind(\"change:subloadersLoading\", () => this.updateValidateButtonState());\r\n this.model.dataLoader.onChangeLoading().subscribe(() => this.updateValidateButtonState());\r\n } else {\r\n // ReSharper disable once WrongExpressionStatement\r\n new TrumViewToolbar(this, this.$el.find(\".ar-trum-toolbar-container\")[0]);\r\n\r\n // ReSharper disable once WrongExpressionStatement\r\n new ReportStatusProgressbar(this, this.$el.find(\".ar-trum-report-status-container\")[0]);\r\n\r\n this.model.dataLoader.onChangeData().subscribe(() => this.showAcerErrorsIfNeeded());\r\n }\r\n\r\n AppKitchen.UIHelper.Responsive.registerTarget(this.el, 1550, \"minimal\");\r\n AppKitchen.UIHelper.updateFullHeightGrids(this.el);\r\n }\r\n\r\n abstract savePdf(): void;\r\n\r\n updateValidateButtonState() {\r\n var requiredSummary = this.model.get().requiredSummary;\r\n var invalidSummary = this.model.get().invalidSummary;\r\n var serviceAlive = this.model.get().remitServiceAlive;\r\n var dataLoading = this.model.dataLoader.getLoading() || this.model.dataLoader.model.get(\"subloadersLoading\");\r\n\r\n if (dataLoading || !serviceAlive || requiredSummary.remainingFields.length > 0 || invalidSummary.fields.length > 0) {\r\n this.$el.find(\".a-btn-preview\").prop(\"disabled\", true);\r\n } else {\r\n this.$el.find(\".a-btn-preview\").prop(\"disabled\", false);\r\n }\r\n }\r\n\r\n showAcerErrorsIfNeeded() {\r\n this.fieldViews.AsLinq().ForEach(f => f);\r\n\r\n if (!this.$el.find(\".ar-trum-error-message\").hasClass(\"hide\")) {\r\n this.$el.find(\".ar-trum-error-message\").addClass(\"hide\");\r\n }\r\n var status = this.model.getValue(this.options.fields.reportLogStatus);\r\n if (status && status.toUpperCase() !== \"ERROR\") {\r\n return;\r\n }\r\n\r\n var errorMessage = this.model.getValue(this.options.fields.reportLogStatusInfo);\r\n if (errorMessage) {\r\n var errorContainer = this.getErrorContainer(errorMessage);\r\n if (errorContainer.isFieldSpecific()) {\r\n this.setAcerErrors(errorContainer.acerErrors);\r\n } else {\r\n this.setGlobalError(errorContainer.remitStatusInfo);\r\n }\r\n }\r\n }\r\n\r\n setGlobalError(errorMessage: string) {\r\n this.$el.find(\".ar-trum-error-message\").removeClass(\"hide\");\r\n this.$el.find(\".ar-trum-error-message .ar-trum-error-message-content\").html(errorMessage);\r\n }\r\n\r\n setAcerErrors(acerErrors: ErrorCodes.AcerError[]) {\r\n var errorList = acerErrors.AsLinq();\r\n var unresolvedErrors: ErrorCodes.AcerError[] = [];\r\n\r\n errorList.Where(a => !a.isGlobalMessage()).ForEach(acerError => {\r\n var fieldView = this.fieldViewDict[acerError.getKey()];\r\n \r\n if (fieldView && (fieldView).showMessage) {\r\n this.addAcerError(fieldView, acerError.errorMessage);\r\n } else {\r\n AppKitchen.logWarning(\"Field \" + acerError.getKey() + \" not found. -> Cannot set error '\" + acerError.errorMessage + \"'\");\r\n unresolvedErrors.push(acerError);\r\n }\r\n });\r\n\r\n errorList.Where(a => a.isGlobalMessage()).ForEach(a => unresolvedErrors.push(a));\r\n\r\n if (unresolvedErrors.length > 0) {\r\n\r\n var globalMessage = unresolvedErrors.AsLinq()\r\n .Select(e => e.errorMessage)\r\n .ToArray()\r\n .join(\"
\");\r\n\r\n if (globalMessage) {\r\n this.setGlobalError(globalMessage);\r\n }\r\n }\r\n \r\n }\r\n\r\n addAcerError(fieldView: AppKitchen.Controls.Forms.TextInputFieldViewBase, message: string) {\r\n var content = AppKitchen.UIHelper.renderTemplate(Templates.AcerErrorMessageTooltip, { message: message });\r\n fieldView.showMessage(content, \"invalid acer-error\");\r\n }\r\n\r\n getErrorContainer(errorMessage: string) {\r\n if (!errorMessage) {\r\n return new ErrorCodes.EcerErrorContainer(errorMessage);\r\n }\r\n\r\n var regex = /errorCode:'([^']*)'/g;\r\n var match: RegExpExecArray;\r\n\r\n // ReSharper disable once AssignmentInConditionExpression\r\n while (match = regex.exec(errorMessage))\r\n {\r\n var currentMatches = match[1].split(\",\");\r\n\r\n var acerErrors = currentMatches.AsLinq()\r\n .Select(m => ErrorCodes.ErrorManager.getError(m.trim()))\r\n .Where(a => a != null)\r\n .ToArray();\r\n\r\n if (acerErrors && acerErrors.length === currentMatches.length) {\r\n return new ErrorCodes.EcerErrorContainer(errorMessage, acerErrors);\r\n }\r\n }\r\n\r\n \r\n return new ErrorCodes.EcerErrorContainer(errorMessage, null);\r\n }\r\n\r\n checkServiceAlive() {\r\n AppKitchen.Data.getDataByGetRequest(\"RemitServiceAlive\", {}, result => {\r\n this.model.set({ remitServiceAlive: result === true });\r\n }, () => {\r\n this.model.set({ remitServiceAlive: false });\r\n });\r\n }\r\n\r\n setRemitServerAlive(alive: boolean) {\r\n if (!alive) {\r\n this.serverNotAliveNotification = new AppKitchen.Controls.Popups.Notification(Strings.TrumInfo_ServerAliveError, {\r\n icon: 2,\r\n closable: false\r\n });\r\n } else {\r\n if (this.serverNotAliveNotification) {\r\n this.serverNotAliveNotification.close();\r\n this.serverNotAliveNotification = null;\r\n }\r\n }\r\n }\r\n\r\n submit() {\r\n this.disableButtons();\r\n this.model.set({ loading: true });\r\n window.setTimeout(() => {\r\n if (this.submitRequest) {\r\n this.submitRequest.abort();\r\n }\r\n this.submitRequest = AppKitchen.Data.getData(this.options.api.submit, this.getTradeSaveRequest(), (result) => {\r\n if (result.RemitWriteResultState === 0) {\r\n this.model.set({ loading: false });\r\n this.success();\r\n }\r\n }, (requestData, xhr, statusText, errorText) => {\r\n AppKitchen.handleError(xhr, statusText, errorText);\r\n this.enableButtons();\r\n });\r\n }, 300);\r\n }\r\n\r\n success() {\r\n AppKitchen.UIHelper.renderTemplateTo(this.$el.find(\".ar-form-error-btns-wrapper\")[0], Templates.TradeSaveConfirmation, {\r\n tradeGridRoute: this.options.tradeGridRoute\r\n });\r\n\r\n this.$el.find(\".ar-btn-new-trade\").click(() => {\r\n if (this.options.reset) {\r\n this.options.reset();\r\n }\r\n });\r\n\r\n this.$el.find(\".ar-btn-trade-grid\").click(() => {\r\n if (this.options.reset) {\r\n this.options.reset();\r\n }\r\n });\r\n }\r\n\r\n preview() {\r\n this.model.set({ loading: true });\r\n this.disableButtons();\r\n\r\n window.setTimeout(() => {\r\n var isValid = this.validateFields();\r\n if (isValid) {\r\n if (this.validationRequest) {\r\n this.validationRequest.abort();\r\n }\r\n this.validationRequest = AppKitchen.Data.getData(this.options.api.validation, this.getTradeSaveRequest(), (result) => {\r\n if (this.processTrumValidation(result)) {\r\n this.switchToPreview();\r\n }\r\n this.model.set({ loading: false });\r\n this.enableButtons();\r\n }, () => {\r\n // ReSharper disable once WrongExpressionStatement\r\n new AppKitchen.Controls.Popups.Notification(Strings.TrumInfo_ErrorDuringValidation, { icon: 2 });\r\n this.model.set({ loading: false });\r\n this.enableButtons();\r\n });\r\n } else {\r\n this.model.set({ loading: false });\r\n this.enableButtons();\r\n }\r\n }, 300);\r\n }\r\n\r\n processTrumValidation(validationResult: any): boolean {\r\n // clear input errors\r\n this.model.get().fields.each(field => field.set(\"error\", null));\r\n\r\n // manual fixes\r\n if (validationResult[\"RemitTable2Trade_Beneficiaries[0].Id\"]) {\r\n validationResult[\"RemitTable2Trade_BeneficiaryId\"] = validationResult[\"RemitTable2Trade_Beneficiaries[0].Id\"];\r\n validationResult[\"RemitTable2Trade_BeneficiaryId\"].ErrorMessage = validationResult[\"RemitTable2Trade_BeneficiaryId\"].ErrorMessage.replace(\"'Id'\", \"'BeneficiaryId'\");\r\n delete validationResult[\"RemitTable2Trade_Beneficiaries[0].Id\"];\r\n }\r\n\r\n var valid = true;\r\n for (let key in validationResult) {\r\n if (validationResult.hasOwnProperty(key)) {\r\n this.translateFieldNameInValidationResult(validationResult[key]);\r\n\r\n var error = validationResult[key];\r\n\r\n if (this.model.fieldDict[key]) {\r\n this.model.setProperty(key, \"error\", FormatingHelper.formatTrumInputFieldError(error.ErrorMessage));\r\n }\r\n\r\n valid = false;\r\n }\r\n }\r\n\r\n this.updateValidationSummary(validationResult);\r\n\r\n return valid;\r\n }\r\n\r\n translateFieldNameInValidationResult(validationResult: any) {\r\n var message = validationResult.ErrorMessage;\r\n if (message) {\r\n var nameBegin = message.indexOf(\"'\") + 1;\r\n if (nameBegin > 0) {\r\n var nameLength = message.substr(nameBegin).indexOf(\"'\");\r\n if (nameLength > 0) {\r\n var name = message.substr(nameBegin, nameLength);\r\n var translationKey = name;\r\n // manual key fixes\r\n switch (name) {\r\n case \"ContractWithReferences EnergyCommodity\":\r\n translationKey = \"EnergyCommodity\";\r\n break;\r\n }\r\n var translatedLabel = \"\" + (Strings[\"TrumLabel_\" + translationKey] || Strings[\"TrumGroup_\" + translationKey] || Strings[\"GridColumn_\" + translationKey] || translationKey) + \"\";\r\n\r\n validationResult.ErrorMessage = message.replace(\"'\" + name + \"'\", translatedLabel);\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateValidationSummary(validationResult: any) {\r\n var errorMessages = [];\r\n\r\n Object.keys(validationResult).forEach(key => {\r\n if (validationResult[key] && validationResult[key].ErrorMessage) {\r\n errorMessages.push(validationResult[key].ErrorMessage);\r\n }\r\n });\r\n\r\n AppKitchen.UIHelper.renderTemplateTo(this.$el.find(\".ar-form-validation-summary\")[0], Templates.TrumValidationSummary, {\r\n messages: errorMessages\r\n });\r\n\r\n if (errorMessages.length > 0) {\r\n this.$el.find(\".ar-form-validation-summary-minimal-wrapper\").kendoTooltip({\r\n position: \"bottom\",\r\n content: '
' + this.$el.find(\".ar-form-validation-summary-wrapper\").html() + '
',\r\n showAfter: 0\r\n }).data(\"kendoTooltip\");\r\n }\r\n }\r\n\r\n validateFields(): boolean {\r\n return super.validateFields();\r\n }\r\n\r\n protected switchToPreview(): void {\r\n super.switchToPreview();\r\n\r\n this.model.fieldDict[this.options.fields.actionType].set({ readOnly: true });\r\n\r\n if (!this.utiIsReadOnly) {\r\n this.model.setProperty(this.options.fields.uti, \"readOnly\", true);\r\n if (!this.model.getValue(this.options.fields.uti)) {\r\n this.hasUti = false;\r\n this.model.setProperty(this.options.fields.uti, \"displayValue\", this.model.getProperty(this.options.fields.uti, \"placeholder\"));\r\n } else {\r\n this.hasUti = true;\r\n }\r\n }\r\n\r\n if (this.trumTemplateManager) {\r\n this.trumTemplateManager.switchToPreview();\r\n }\r\n }\r\n\r\n backToEdit(): void {\r\n\r\n this.$el.find(\".ar-form-validation-summary\").empty();\r\n\r\n this.model.fieldDict[this.options.fields.actionType].set({ readOnly: false });\r\n\r\n if (!this.utiIsReadOnly) {\r\n this.model.setProperty(this.options.fields.uti, \"readOnly\", false);\r\n if (!this.hasUti) {\r\n this.model.setProperty(this.options.fields.uti, \"displayValue\", \"\");\r\n }\r\n }\r\n super.backToEdit();\r\n if (this.trumTemplateManager) {\r\n this.trumTemplateManager.backToEdit();\r\n }\r\n }\r\n\r\n hasInput(): boolean {\r\n var fieldsData = this.model.getFieldsData(true);\r\n \r\n if (fieldsData) {\r\n // remove irrelevant input\r\n delete fieldsData[\"RemitTrade_ActionType\"];\r\n delete fieldsData[\"RemitTable2Trade_ActionType\"];\r\n delete fieldsData[\"RemitContract_ReportInPlace\"];\r\n delete fieldsData[\"RemitTrade_VoiceBrokered\"];\r\n\r\n if (Object.keys(fieldsData).length > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // UTI Generation\r\n\r\n configureUtiGeneration() {\r\n this.generateUtiTriggered = false;\r\n if (this.options.fields.uti && this.options.fields.utiRelevantFields && this.options.api.uti) {\r\n Object.keys(this.options.fields.utiRelevantFields).forEach((key) => {\r\n this.model.onValueChange(this.options.fields.utiRelevantFields[key], () => {\r\n if (this.model.getValue(this.options.fields.actionType) === \"N\") {\r\n this.generateUtiDelayed();\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n configureCounterTrade() {\r\n // set all fields to readonly\r\n this.model.get().fields.each(field => {\r\n field.set({ readOnly: true });\r\n });\r\n this.utiIsReadOnly = true;\r\n\r\n // inverse fields\r\n var marketParticipantId = this.model.getValue(this.options.fields.marketParticipantId);\r\n var marketParticipantIdType = this.model.getValue(this.options.fields.marketParticipantIdType);\r\n var otherMarketParticipantId = this.model.getValue(this.options.fields.otherMarketParticipantId);\r\n var otherMarketParticipantIdType = this.model.getValue(this.options.fields.otherMarketParticipantIdType);\r\n\r\n this.model.setValue(this.options.fields.marketParticipantId, otherMarketParticipantId);\r\n this.model.setValue(this.options.fields.marketParticipantIdType, otherMarketParticipantIdType);\r\n this.model.setValue(this.options.fields.otherMarketParticipantId, marketParticipantId);\r\n this.model.setValue(this.options.fields.otherMarketParticipantIdType, marketParticipantIdType);\r\n\r\n switch (this.model.getValue(this.options.fields.buySellIndicator)) {\r\n case \"B\":\r\n this.model.setValue(this.options.fields.buySellIndicator, \"S\");\r\n break;\r\n case \"S\":\r\n this.model.setValue(this.options.fields.buySellIndicator, \"B\");\r\n break;\r\n default:\r\n this.model.setProperty(this.options.fields.buySellIndicator, \"readOnly\", false);\r\n break;\r\n }\r\n\r\n if (this.options.fields.aggressor) {\r\n switch (this.model.getValue(this.options.fields.aggressor)) {\r\n case \"I\":\r\n this.model.setValue(this.options.fields.aggressor, \"A\");\r\n break;\r\n case \"A\":\r\n this.model.setValue(this.options.fields.aggressor, \"I\");\r\n break;\r\n }\r\n }\r\n\r\n // editable fields\r\n this.model.setProperty(this.options.fields.actionType, \"readOnly\", false);\r\n\r\n if (this.options.fields.traderId) {\r\n this.model.setProperty(this.options.fields.traderId, \"readOnly\", false);\r\n this.model.setProperty(this.options.fields.traderIdType, \"readOnly\", false);\r\n }\r\n\r\n this.model.setValue(this.options.fields.tradingCapacity, \"P\");\r\n this.model.setProperty(this.options.fields.tradingCapacity, \"readOnly\", false);\r\n\r\n this.model.setProperty(this.options.fields.beneficiaryId, \"readOnly\", false);\r\n this.model.setProperty(this.options.fields.beneficiaryIdType, \"readOnly\", false);\r\n this.model.setValue(this.options.fields.beneficiaryId, \"\");\r\n this.model.setValue(this.options.fields.beneficiaryIdType, \"\");\r\n\r\n // highlight fields\r\n this.fieldViewDict[this.options.fields.marketParticipantId].$el.closest(\"tr\").addClass(\"ar-highlight\");\r\n this.fieldViewDict[this.options.fields.marketParticipantIdType].$el.closest(\"tr\").addClass(\"ar-highlight\");\r\n this.fieldViewDict[this.options.fields.otherMarketParticipantId].$el.closest(\"tr\").addClass(\"ar-highlight\");\r\n this.fieldViewDict[this.options.fields.otherMarketParticipantIdType].$el.closest(\"tr\").addClass(\"ar-highlight\");\r\n this.fieldViewDict[this.options.fields.buySellIndicator].$el.closest(\"tr\").addClass(\"ar-highlight\");\r\n if (this.options.fields.aggressor && this.model.getValue(this.options.fields.aggressor)) {\r\n this.fieldViewDict[this.options.fields.aggressor].$el.closest(\"tr\").addClass(\"ar-highlight\");\r\n }\r\n }\r\n\r\n configureModifyTrade() {\r\n if (this.options.fields.utiRelevantFields) {\r\n Object.keys(this.options.fields.utiRelevantFields).forEach(key => this.model.setProperty(this.options.fields.utiRelevantFields[key], \"readOnly\", true));\r\n }\r\n\r\n if (this.options.fields.uti) {\r\n this.model.setProperty(this.options.fields.uti, \"readOnly\", true);\r\n }\r\n\r\n this.utiIsReadOnly = true;\r\n\r\n if (this.options.fields.actionType) {\r\n this.model.setProperty(this.options.fields.actionType, \"readOnly\", true);\r\n }\r\n\r\n this.$el.find(\".ar-trum-action-type-wrapper\").addClass(\"read-only\");\r\n }\r\n\r\n generateUtiDelayed() {\r\n if (!this.generateUtiTriggered) {\r\n this.generateUtiTriggered = true;\r\n setTimeout(() => {\r\n this.generateUti();\r\n this.generateUtiTriggered = false;\r\n }, 100);\r\n }\r\n }\r\n\r\n abstract generateUti(): void;\r\n\r\n generateUtiBase(additionalProps?: { [field: string]: string }) {\r\n if (!this.model.get().remitServiceAlive ||\r\n !this.options.editable ||\r\n !this.options.fields.uti ||\r\n !this.options.fields.utiRelevantFields ||\r\n !this.options.api.uti) {\r\n return;\r\n }\r\n\r\n var request = {};\r\n Object.keys(this.options.fields.utiRelevantFields).forEach(key => {\r\n request[key] = this.model.getValue(this.options.fields.utiRelevantFields[key]);\r\n });\r\n //SZB-20227: if quantity is not fixed use first non-zero quantity from delivery profile\r\n if (additionalProps) {\r\n Object.keys(additionalProps).forEach(key => {\r\n request[key] = additionalProps[key];\r\n });\r\n }\r\n\r\n if (this.utiRequest) {\r\n this.utiRequest.abort();\r\n }\r\n this.utiRequest = AppKitchen.Data.getData(this.options.api.uti, request, (uti) => {\r\n //check on concrete error only because we want no messages for missing properties (todo: get uti if all relevant fields are set)\r\n if (!this.model.getValue(this.options.fields.uti) &&\r\n this.model.getValue(this.options.fields.utiRelevantFields[\"ContractType\"]) &&\r\n uti.HasError && uti.ErrorMessage.beginsWith(\"Invalid Settlement Type\")) {\r\n AppKitchen.UIHelper.Notifications.notify(this.getTranslatedError(uti.ErrorMessage), \"info\", {autoClose: true});\r\n this.model.setProperty(this.options.fields.uti, \"placeholder\", \"\");\r\n } else {\r\n this.model.setProperty(this.options.fields.uti, \"placeholder\", uti.Value);\r\n }\r\n (this.fieldViewDict[this.options.fields.uti]).flash();\r\n }, () => {\r\n AppKitchen.logWarning(\"Failed to generate UTI, server not reachable.\");\r\n });\r\n }\r\n\r\n fillUti(fieldsData: any[]) {\r\n var utiFieldData = fieldsData.AsLinq().First(e => e.Key === this.options.fields.uti);\r\n if (!utiFieldData.Value) {\r\n utiFieldData.Value = this.model.getProperty(this.options.fields.uti, \"placeholder\");\r\n }\r\n }\r\n\r\n abortRequests() {\r\n if (this.validationRequest) this.validationRequest.abort();\r\n if (this.submitRequest) this.submitRequest.abort();\r\n if (this.cancelRequest) this.cancelRequest.abort();\r\n if (this.errorRequest) this.errorRequest.abort();\r\n if (this.utiRequest) this.utiRequest.abort();\r\n }\r\n\r\n\r\n private getTranslatedError(message: string) {\r\n if (message.beginsWith(\"Invalid Settlement Type\")) {\r\n return Strings.ErrorMessage_UTI_InvalidSettlementType;\r\n }\r\n return message;\r\n }\r\n\r\n abstract getTradeSaveRequest(): any;\r\n }\r\n\r\n export class Table1TradeFormView extends TrumFormViewBase {\r\n model: Table1TradeFormModel;\r\n\r\n deliveryProfileEditor: Controls.DeliveryProfileEditor;\r\n\r\n constructor(model: Table1TradeFormModel, targetContainer: HTMLElement, options?: TrumFormViewOptions) {\r\n super(model, targetContainer, Templates.Table1TradeForm, AppKitchen.OptionsHelper.merge(options, {\r\n editable: false,\r\n fields: {\r\n id: \"RemitTrade_Id\",\r\n actionType: \"RemitTrade_ActionType\",\r\n uti: \"RemitTrade_UniqueTransactionIdentifier\",\r\n utiRelevantFields: {\r\n MarketParticipantId: \"RemitTrade_MarketParticipantId\",\r\n MarketParticipantIdType: \"RemitTrade_MarketParticipantIdType\",\r\n OtherMarketParticipantId: \"RemitTrade_OtherMarketParticipantId\",\r\n OtherMarketParticipantIdType: \"RemitTrade_OtherMarketParticipantIdType\",\r\n BuySellIndicator: \"RemitTrade_BuySellIndicator\",\r\n ContractType: \"RemitContract_ContractType\",\r\n Commodity: \"RemitContract_EnergyCommodity\",\r\n Settlement: \"RemitContract_SettlementMethod\",\r\n TradingDate: \"RemitTrade_TransactionTime\",\r\n Price: \"RemitTrade_Price\",\r\n Currency: \"RemitTrade_PriceCurrency\",\r\n Quantity: \"RemitTrade_Quantity\",\r\n Unit: \"RemitTrade_QuantityUnit\",\r\n DeliveryPointOfArea: \"RemitContract_DeliveryPointOrZone\",\r\n DeliveryStartDate: \"RemitContract_DeliveryStartDate\",\r\n DeliveryEndDate: \"RemitContract_DeliveryEndDate\"\r\n },\r\n reportLogStatus: \"ReportLogTrade_Status\",\r\n reportLogStatusInfo: \"ReportLogTrade_StatusInfo\",\r\n traderId: \"RemitTrade_TraderId\",\r\n traderIdType: \"RemitTrade_TraderIdType\",\r\n marketParticipantId: \"RemitTrade_MarketParticipantId\",\r\n marketParticipantIdType: \"RemitTrade_MarketParticipantIdType\",\r\n otherMarketParticipantId: \"RemitTrade_OtherMarketParticipantId\",\r\n otherMarketParticipantIdType: \"RemitTrade_OtherMarketParticipantIdType\",\r\n beneficiaryId: \"RemitTrade_BeneficiaryId\",\r\n beneficiaryIdType: \"RemitTrade_BeneficiaryIdType\",\r\n buySellIndicator: \"RemitTrade_BuySellIndicator\",\r\n aggressor: \"RemitTrade_Aggressor\",\r\n tradingCapacity: \"RemitTrade_TradingCapacity\"\r\n },\r\n api: {\r\n validation: \"Table1TradeValidation\",\r\n cancel: \"Table1SetCancel\",\r\n error: \"Table1SetError\",\r\n submit: \"Table1Trade\",\r\n uti: \"Table1TradeUtiGeneration\"\r\n },\r\n createTradeRoute: \"CreateTable1Trade\",\r\n allowPdfExport: true,\r\n allowTrumActions: true,\r\n validateRemitV3InTrumActions: true\r\n }));\r\n\r\n // delivery profile editor\r\n const editable = this.options.editable && !this.options.isCounterTrade;\r\n this.deliveryProfileEditor = new Controls.DeliveryProfileEditor(this.model.dataLoader, this, {\r\n editable: editable,\r\n // trigger UTI on change\r\n onPriceQuantDetChange: editable ? () => this.generateUti() : undefined\r\n });\r\n }\r\n\r\n generateUti(): void {\r\n const props = {};\r\n props[\"SerializedPriceQuantityDetails\"] = this.deliveryProfileEditor.getSerializedData().serializedPriceQuantityDetails as string;\r\n console.log(props[\"SerializedPriceQuantityDetails\"]);\r\n super.generateUtiBase(props);\r\n }\r\n\r\n validateFields(): boolean {\r\n var mainFormValidation = super.validateFields();\r\n var dpEditorValidation = this.deliveryProfileEditor.validateFields();\r\n return mainFormValidation && dpEditorValidation;\r\n }\r\n\r\n processTrumValidation(validationResult: any): boolean {\r\n var valid = super.processTrumValidation(validationResult);\r\n this.deliveryProfileEditor.processTrumValidation(validationResult);\r\n return valid;\r\n }\r\n\r\n switchToPreview() {\r\n super.switchToPreview();\r\n this.deliveryProfileEditor.switchToPreview();\r\n }\r\n\r\n backToEdit() {\r\n super.backToEdit();\r\n this.deliveryProfileEditor.backToEdit();\r\n }\r\n\r\n private unset24(data: any[]) {\r\n for (let i = 0; i < data.length; i++) {\r\n if (data[i].Key === \"RemitContract_TradingHoursEndTime\" && data[i].Value === \"24:00\") {\r\n data[i].Value = \"00:00\";\r\n }\r\n }\r\n }\r\n\r\n getTradeSaveRequest(): Remit.Domain.Trade1SaveRequest {\r\n var fieldsData = this.model.getWriteData();\r\n\r\n this.fillUti(fieldsData);\r\n this.unset24(fieldsData); // converts 24:00 to 00:00\r\n\r\n var editorData = this.deliveryProfileEditor.getSerializedData();\r\n \r\n return {\r\n EventValues: fieldsData,\r\n EventItemSpecs: this.config.EventItemSpecs,\r\n SerializedDeliveryProfiles: editorData.serializedDeliveryProfiles,\r\n SerializedDeliveryProfilesIntervals: editorData.serializedDeliveryProfilesIntervals,\r\n SerializedPriceQuantityDetails: editorData.serializedPriceQuantityDetails,\r\n SerializedPriceQuantityDetailsIntervals: editorData.serializedPriceQuantityDetailsIntervals,\r\n RemitDeliveryProfiles: [],\r\n RemitTradePriceQuantityDetails: [],\r\n Culture: AppKitchen.GlobalSettings.culture,\r\n ClientMember: null\r\n }\r\n }\r\n\r\n savePdf() {\r\n PdfExport.createTable1TradePdf(this.model);\r\n }\r\n }\r\n\r\n export class Table2TradeFormView extends TrumFormViewBase {\r\n model: Table2TradeFormModel;\r\n\r\n volumeOptGridView: Controls.Table2FormGridView;\r\n fixingIndexGridView: Controls.Table2FormGridView;\r\n optionDetailGridView: Controls.Table2FormGridView;\r\n\r\n constructor(model: Table2TradeFormModel, targetContainer: HTMLElement, options?: TrumFormViewOptions) {\r\n super(model, targetContainer, Templates.Table2TradeForm, AppKitchen.OptionsHelper.merge(options, {\r\n editable: false,\r\n createTradeRoute: \"CreateTable2Trade\",\r\n\r\n fields: {\r\n id: \"RemitTable2Trade_Id\",\r\n actionType: \"RemitTable2Trade_ActionType\",\r\n uti: \"RemitTable2Trade_ContractId\",\r\n utiRelevantFields: {\r\n MarketParticipantId: \"RemitTable2Trade_MarketParticipantId\",\r\n MarketParticipantIdType: \"RemitTable2Trade_MarketParticipantIdType\",\r\n OtherMarketParticipantId: \"RemitTable2Trade_OtherMarketParticipantId\",\r\n OtherMarketParticipantIdType: \"RemitTable2Trade_OtherMarketParticipantIdType\",\r\n BuySellIndicator: \"RemitTable2Trade_BuySellIndicator\",\r\n ContractType: \"RemitTable2Trade_ContractType\",\r\n Commodity: \"RemitTable2Trade_EnergyCommodity\",\r\n Settlement: \"RemitTable2Trade_SettlementMethod\",\r\n ContractDate: \"RemitTable2Trade_ContractDate\",\r\n DeliveryPointOfArea: \"RemitTable2Trade_DeliveryPointOrZone\",\r\n DeliveryStartDate: \"RemitTable2Trade_DeliveryStartDate\",\r\n DeliveryEndDate: \"RemitTable2Trade_DeliveryEndDate\"\r\n },\r\n reportLogStatus: \"ReportLogTable2Trade_Status\",\r\n reportLogStatusInfo: \"ReportLogTable2Trade_StatusInfo\",\r\n marketParticipantId: \"RemitTable2Trade_MarketParticipantId\",\r\n marketParticipantIdType: \"RemitTable2Trade_MarketParticipantIdType\",\r\n otherMarketParticipantId: \"RemitTable2Trade_OtherMarketParticipantId\",\r\n otherMarketParticipantIdType: \"RemitTable2Trade_OtherMarketParticipantIdType\",\r\n beneficiaryId: \"RemitTable2Trade_BeneficiaryId\",\r\n beneficiaryIdType: \"RemitTable2Trade_BeneficiaryIdType\",\r\n buySellIndicator: \"RemitTable2Trade_BuySellIndicator\",\r\n tradingCapacity: \"RemitTable2Trade_TradingCapacity\"\r\n },\r\n api: {\r\n validation: \"Table2TradeValidation\",\r\n submit: \"Table2Trade\",\r\n cancel: \"Table2SetCancel\",\r\n error: \"Table2SetError\",\r\n uti: \"Table2TradeUtiGeneration\"\r\n },\r\n allowPdfExport: true,\r\n allowTrumActions: true\r\n }));\r\n\r\n this.setPriceFormulaInputLogic();\r\n\r\n // grids\r\n var volumeOptGridModel = new Controls.Table2DetailGridModel(this.model.dataLoader.volumeOptIntervalLoader);\r\n var fixingIndexGridModel = new Controls.Table2DetailGridModel(this.model.dataLoader.fixingIndexLoader);\r\n var optionDetailGridModel = new Controls.Table2DetailGridModel(this.model.dataLoader.optionDetailLoader);\r\n\r\n var gridsToolbar = this.options.editable && !this.options.isCounterTrade ? [\"create\"] : undefined;\r\n\r\n this.volumeOptGridView = new Controls.Table2FormGridView(volumeOptGridModel, this.$el.find(\"#ar-trum-volume-optionality-grid\")[0], {\r\n fillHeight: true,\r\n editable: this.options.editable && !this.options.isCounterTrade,\r\n toolbar: gridsToolbar,\r\n noRecordsMessage: Strings.GridMessage_NoVolOptIntervals\r\n });\r\n this.fixingIndexGridView = new Controls.Table2FormGridView(fixingIndexGridModel, this.$el.find(\"#ar-trum-fixing-index-grid\")[0], {\r\n fillHeight: true,\r\n editable: this.options.editable && !this.options.isCounterTrade,\r\n toolbar: gridsToolbar,\r\n noRecordsMessage: Strings.GridMessage_NoFixingIndexDetails\r\n });\r\n this.optionDetailGridView = new Controls.Table2FormGridView(optionDetailGridModel, this.$el.find(\"#ar-trum-option-detail-grid\")[0], {\r\n fillHeight: true,\r\n editable: this.options.editable && !this.options.isCounterTrade,\r\n toolbar: gridsToolbar,\r\n noRecordsMessage: Strings.GridMessage_NoOptionDetails\r\n });\r\n\r\n // enable tabulation to grid\r\n if (this.options.editable) {\r\n this.volumeOptGridView.grid.wrapper.find(\".k-grid-toolbar .k-grid-add\").attr(\"tabindex\", 230);\r\n this.fixingIndexGridView.grid.wrapper.find(\".k-grid-toolbar .k-grid-add\").attr(\"tabindex\", 460);\r\n this.optionDetailGridView.grid.wrapper.find(\".k-grid-toolbar .k-grid-add\").attr(\"tabindex\", 470);\r\n }\r\n }\r\n\r\n setPriceFormulaInputLogic() {\r\n this.model.onValueChange(\"RemitTable2Trade_PriceFormula\", formula => {\r\n this.fieldViewDict[\"RemitTable2Trade_Price\"].tryUpdate();\r\n this.fieldViewDict[\"RemitTable2Trade_PriceCurrency\"].tryUpdate();\r\n if (formula && this.model.getValue(\"RemitTable2Trade_Price\") || this.model.getValue(\"RemitTable2Trade_PriceCurrency\")) {\r\n this.model.setProperty(\"RemitTable2Trade_PriceFormula\", \"error\", Strings.TrumError_PriceFormulaOrPrice);\r\n }\r\n });\r\n\r\n this.model.onValueChange(\"RemitTable2Trade_Price\", price => {\r\n this.fieldViewDict[\"RemitTable2Trade_PriceFormula\"].tryUpdate();\r\n if (price && this.model.getValue(\"RemitTable2Trade_PriceFormula\")) {\r\n this.model.setProperty(\"RemitTable2Trade_Price\", \"error\", Strings.TrumError_PriceFormulaOrPrice);\r\n }\r\n });\r\n\r\n this.model.onValueChange(\"RemitTable2Trade_PriceCurrency\", price => {\r\n this.fieldViewDict[\"RemitTable2Trade_PriceFormula\"].tryUpdate();\r\n if (price && this.model.getValue(\"RemitTable2Trade_PriceFormula\")) {\r\n this.model.setProperty(\"RemitTable2Trade_PriceCurrency\", \"error\", Strings.TrumError_PriceFormulaOrPrice);\r\n }\r\n });\r\n }\r\n\r\n generateUti(): void {\r\n super.generateUtiBase();\r\n }\r\n\r\n validateFields(): boolean {\r\n var mainFormValidation = super.validateFields();\r\n var volumeOptGridValidation = this.volumeOptGridView.validateInput();\r\n var fixingIndexGriddValidation = this.fixingIndexGridView.validateInput();\r\n var optionDetailGridValidation = this.optionDetailGridView.validateInput();\r\n return mainFormValidation && volumeOptGridValidation && fixingIndexGriddValidation && optionDetailGridValidation;\r\n }\r\n\r\n processTrumValidation(validationResult: any): boolean {\r\n var valid = super.processTrumValidation(validationResult);\r\n\r\n var volumeOptErrors = {};\r\n var fixingIndexErrors = {};\r\n var optionDetailErrors = {};\r\n\r\n for (let key in validationResult) {\r\n if (validationResult.hasOwnProperty(key)) {\r\n if (key.substr(0, 35) === \"RemitTable2Trade_VolumeOptIntervals\") {\r\n volumeOptErrors[key.substr(36, 1)] = this.combineErrorMessage(volumeOptErrors[key.substr(36, 1)], validationResult[key].ErrorMessage);\r\n }\r\n if (key.substr(0, 35) === \"RemitTable2Trade_FixingIndexDetails\") {\r\n fixingIndexErrors[key.substr(36, 1)] = this.combineErrorMessage(fixingIndexErrors[key.substr(36, 1)], validationResult[key].ErrorMessage);\r\n }\r\n if (key.substr(0, 30) === \"RemitTable2Trade_OptionDetails\") {\r\n optionDetailErrors[key.substr(31, 1)] = this.combineErrorMessage(optionDetailErrors[key.substr(36, 1)], validationResult[key].ErrorMessage);\r\n }\r\n }\r\n }\r\n\r\n for (let index in volumeOptErrors) {\r\n if (volumeOptErrors.hasOwnProperty(index)) {\r\n this.volumeOptGridView.setErrorMessage(parseInt(index), volumeOptErrors[index]);\r\n }\r\n }\r\n\r\n for (let index in fixingIndexErrors) {\r\n if (fixingIndexErrors.hasOwnProperty(index)) {\r\n this.fixingIndexGridView.setErrorMessage(parseInt(index), fixingIndexErrors[index]);\r\n }\r\n }\r\n\r\n for (let index in optionDetailErrors) {\r\n if (optionDetailErrors.hasOwnProperty(index)) {\r\n this.optionDetailGridView.setErrorMessage(parseInt(index), optionDetailErrors[index]);\r\n }\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n private combineErrorMessage(oldMessage, newMessage) {\r\n if (oldMessage) {\r\n return oldMessage + '
' + newMessage;\r\n }\r\n return newMessage;\r\n }\r\n\r\n switchToPreview() {\r\n super.switchToPreview();\r\n this.volumeOptGridView.switchToPreview();\r\n this.fixingIndexGridView.switchToPreview();\r\n this.optionDetailGridView.switchToPreview();\r\n }\r\n\r\n backToEdit() {\r\n super.backToEdit();\r\n this.volumeOptGridView.backToEdit();\r\n this.fixingIndexGridView.backToEdit();\r\n this.optionDetailGridView.backToEdit();\r\n }\r\n\r\n hasInput() {\r\n return super.hasInput() ||\r\n this.volumeOptGridView.grid.dataSource.data().length > 0 ||\r\n this.fixingIndexGridView.grid.dataSource.data().length > 0 ||\r\n this.optionDetailGridView.grid.dataSource.data().length > 0;\r\n }\r\n\r\n getTradeSaveRequest(): Remit.Domain.Trade2SaveRequest {\r\n var fieldsData = this.model.getWriteData();\r\n\r\n this.fillUti(fieldsData);\r\n\r\n return {\r\n EventValues: fieldsData,\r\n EventItemSpecs: this.config.EventItemSpecs,\r\n VolumeOptIntervals: this.volumeOptGridView.getWriteData(),\r\n FixingIndexDetails: this.fixingIndexGridView.getWriteData(),\r\n OptionDetails: this.optionDetailGridView.getWriteData(),\r\n Culture: AppKitchen.GlobalSettings.culture,\r\n ClientMember: null\r\n }\r\n }\r\n\r\n savePdf() {\r\n PdfExport.createTable2TradePdf(this.model);\r\n }\r\n }\r\n\r\n export class OrderFormView extends TrumFormViewBase {\r\n model: OrderFormModel;\r\n\r\n constructor(model: OrderFormModel, targetContainer: HTMLElement, options?: TrumFormViewOptions) {\r\n super(model, targetContainer, Templates.OrderForm, AppKitchen.OptionsHelper.merge(options, {\r\n editable: false,\r\n fields: {\r\n id: \"RemitOrder_Id\",\r\n actionType: \"RemitOrder_ActionType\",\r\n reportLogStatus: \"ReportLogOrder_Status\",\r\n reportLogStatusInfo: \"ReportLogOrder_StatusInfo\"\r\n },\r\n allowPdfExport: false,\r\n allowTrumActions: false\r\n }));\r\n\r\n // delivery profile editor\r\n // ReSharper disable once WrongExpressionStatement\r\n new Controls.DeliveryProfileEditor(this.model.dataLoader, this);\r\n }\r\n\r\n generateUti(): void {\r\n super.generateUtiBase();\r\n }\r\n\r\n getTradeSaveRequest() {\r\n throw \"Creating orders not supported\";\r\n }\r\n\r\n savePdf() {\r\n throw \"PDF export for orders not supported\";\r\n }\r\n }\r\n \r\n export class MessageArchiveFormModel extends AppKitchen.Controls.Forms.EventFormModel\r\n {\r\n protected getFieldLabel(inventoryId: string, itemId: string) {\r\n var key = inventoryId + \"_\" + itemId;\r\n return Strings[key] || key;\r\n }\r\n }\r\n\r\n export class InputSummaryView {\r\n trumFormModel: TrumFormModelBase;\r\n el: HTMLElement;\r\n $el: JQuery;\r\n\r\n constructor(trumModel: TrumFormModelBase, targetContainer: HTMLElement) {\r\n this.trumFormModel = trumModel;\r\n this.el = targetContainer;\r\n this.$el = $(targetContainer);\r\n\r\n this.render();\r\n this.trumFormModel.bind(\"change:requiredSummary change:invalidSummary\", () => this.render());\r\n }\r\n\r\n render() {\r\n var requiredSummary = this.trumFormModel.get().requiredSummary;\r\n var invalidSummary = this.trumFormModel.get().invalidSummary;\r\n\r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.TrumInputSummary, {\r\n requiredRemaining: requiredSummary.remainingFields.length,\r\n invalidCount: invalidSummary.fields.length\r\n });\r\n }\r\n }\r\n\r\n export class TrumTemplateManager {\r\n trumFormModel: TrumFormModelBase;\r\n $el: JQuery;\r\n trumFormContainer: HTMLElement;\r\n dragCounter: number;\r\n fileExtension = \"rtemplate\";\r\n\r\n constructor(trumView: TrumFormViewBase, targetContainer: HTMLElement) {\r\n\r\n this.trumFormModel = trumView.model;\r\n this.trumFormContainer = trumView.el;\r\n this.$el = $(targetContainer);\r\n\r\n AppKitchen.UIHelper.renderTemplateTo(targetContainer, Templates.TrumTemplateManager);\r\n\r\n this.$el.find(\".ar-trum-save-button\").kendoTooltip({\r\n position: \"top\",\r\n content: Strings.TrumToolbar_SaveAsTemplate,\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n\r\n this.$el.find(\".ar-trum-upload-button\").kendoTooltip({\r\n position: \"top\",\r\n content: Strings.TrumToolbar_LoadTemplateHint,\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n\r\n this.$el.find(\".ar-trum-save-templates-button\").kendoTooltip({\r\n position: \"top\",\r\n content: Strings.TrumToolbar_GetTemplates,\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n\r\n $(targetContainer).find(\".ar-trum-save-button\").first().click(this.saveTrumData.bind(this));\r\n\r\n $(this.trumFormContainer).on(\"drop\", this.handledrop.bind(this));\r\n $(this.trumFormContainer).on(\"dragenter\", this.handleDragEnter.bind(this));\r\n $(this.trumFormContainer).on(\"dragleave\", this.handleDragLeave.bind(this));\r\n $(this.trumFormContainer).on(\"dragover\", this.handleDragOver.bind(this));\r\n this.dragCounter = 0;\r\n }\r\n\r\n switchToPreview() {\r\n $(this.trumFormContainer).off(\"drop\");\r\n $(this.trumFormContainer).off(\"dragenter\");\r\n $(this.trumFormContainer).off(\"dragleave\");\r\n $(this.trumFormContainer).off(\"dragover\");\r\n this.$el.find(\".ar-trum-upload-button\").hide(0);\r\n }\r\n\r\n backToEdit() {\r\n $(this.trumFormContainer).on(\"drop\", this.handledrop.bind(this));\r\n $(this.trumFormContainer).on(\"dragenter\", this.handleDragEnter.bind(this));\r\n $(this.trumFormContainer).on(\"dragleave\", this.handleDragLeave.bind(this));\r\n $(this.trumFormContainer).on(\"dragover\", this.handleDragOver.bind(this));\r\n this.$el.find(\".ar-trum-upload-button\").show(0);\r\n }\r\n\r\n handleDragOver(evt: any) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n evt.originalEvent.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.\r\n }\r\n\r\n handleDragLeave(evt: any) {\r\n this.dragCounter--;\r\n if (this.dragCounter === 0) {\r\n $(\"body\").find(\".ar-trum-table-inner\").removeClass(\"dodrop\");\r\n }\r\n }\r\n\r\n handleDragEnter(evt: any) {\r\n this.dragCounter++;\r\n evt.originalEvent.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.\r\n $(\"body\").find(\".ar-trum-table-inner\").addClass(\"dodrop\");\r\n }\r\n\r\n handledrop(evt: any) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n this.dragCounter = 0;\r\n $(\"body\").find(\".ar-trum-table-inner\").removeClass(\"dodrop\");\r\n\r\n var file = evt.originalEvent.dataTransfer.files[0];\r\n if (file.name.endsWith(this.fileExtension)) {\r\n var reader = new FileReader();\r\n\r\n reader.onload = (theFile: any) => {\r\n var json = theFile.target.result;\r\n var data = JSON.parse(json);\r\n this.convertBackTime(data);\r\n this.trumFormModel.setFieldsData(data, true);\r\n\r\n $(\"body\").find(\".ar-trum-table-inner\").addClass(\"flash\");\r\n window.setTimeout(() => $(\"body\").find(\".ar-trum-table-inner\").removeClass(\"flash\"), 250);\r\n };\r\n\r\n // Read in the image file as a data URL.\r\n reader.readAsText(file);\r\n }\r\n }\r\n\r\n saveTrumData() {\r\n var fieldData = this.trumFormModel.getFieldsData();\r\n this.convertTime(fieldData);\r\n var content = JSON.stringify(fieldData);\r\n var header = \"data:text/json;charset=utf-8,\";\r\n var filename = \"trumtemplate.rtemplate\";\r\n\r\n // for IE\r\n //if (navigator.msSaveBlob) {\r\n // var blob = new Blob([content], {\r\n // type: header\r\n // });\r\n\r\n // navigator.msSaveBlob(blob, filename);\r\n //} else {\r\n\r\n // var element = document.createElement('a');\r\n // element.setAttribute('href', header + encodeURIComponent(content));\r\n // element.setAttribute('download', filename);\r\n // element.style.display = 'none';\r\n // document.body.appendChild(element);\r\n\r\n // element.click();\r\n\r\n // document.body.removeChild(element);\r\n //}\r\n\r\n var element = document.createElement('a');\r\n element.setAttribute('href', header + encodeURIComponent(content));\r\n element.setAttribute('download', filename);\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n\r\n element.click();\r\n\r\n document.body.removeChild(element);\r\n }\r\n\r\n convertTime(fieldData: any) {\r\n Object.keys(fieldData).forEach(key => {\r\n if (fieldData[key] instanceof Date) {\r\n fieldData[key] = kendo.toString(fieldData[key], \"yyyy-MM-ddTHH:mm:ss\");\r\n }\r\n });\r\n }\r\n\r\n convertBackTime(templateData: any) {\r\n Object.keys(templateData).forEach(key => {\r\n if ([AppKitchen.Controls.Forms.FieldType.Date,\r\n AppKitchen.Controls.Forms.FieldType.DateTime,\r\n AppKitchen.Controls.Forms.FieldType.Time].indexOf(this.trumFormModel.fieldDict[key].get().type) !== -1 &&\r\n !this.trumFormModel.fieldDict[key].get(\"textMode\")) {\r\n templateData[key] = kendo.parseDate(templateData[key], \"yyyy-MM-ddTHH:mm:ss\");\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n export class ReportStatusProgressbar {\r\n formModel: TrumFormModelBase;\r\n formView: TrumFormViewBase;\r\n $el: JQuery;\r\n el: HTMLElement;\r\n\r\n constructor(formView: TrumFormViewBase, targetContainer: HTMLElement) {\r\n\r\n this.formModel = formView.model;\r\n this.formView = formView;\r\n this.$el = $(targetContainer);\r\n this.el = targetContainer;\r\n\r\n this.updateReportStatus();\r\n this.formModel.bind(\"change\", () => this.updateReportStatus());\r\n }\r\n\r\n updateReportStatus() {\r\n var statusInfo = this.formModel.getReportStatusInfo();\r\n this.$el.empty();\r\n\r\n if (statusInfo.creationDate) {\r\n AppKitchen.UIHelper.renderTemplateTo(this.el, Templates.ReportStatusProgressBar, {\r\n statusColor: StatusHelper.getColorOfAggregatedStatus(statusInfo.reportStatus),\r\n messageCreated: statusInfo.messageGenerationDate,\r\n receiptReceived: statusInfo.receiptDate,\r\n acerAcknowledged: statusInfo.acknowledgementDate,\r\n statusMessage: Strings[\"StatusText_\" + statusInfo.reportStatus]\r\n });\r\n\r\n // status infos\r\n var createdInfo = Strings[\"ReportConfirmation_Status_\" + (statusInfo.reportType === \"Order\" ? \"Order\" : \"Trade\") + \"Created\"] +\r\n '
' + kendo.toString(statusInfo.creationDate, \"g\") + \"\";\r\n this.$el.find(\".ar-report-progress-dot.trade-created .ar-tooltip-container\").kendoTooltip({\r\n position: \"bottom\",\r\n content: createdInfo,\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n this.$el.find(\".ar-report-progress-dot.trade-created .ar-info-container\").html(createdInfo);\r\n\r\n if (statusInfo.messageGenerationDate) {\r\n var generatedInfo = Strings.ReportConfirmation_Status_MessageGenerated + '
' + kendo.toString(statusInfo.messageGenerationDate, \"g\") + \"\";\r\n this.$el.find(\".ar-report-progress-dot.message-created .ar-tooltip-container\").kendoTooltip({\r\n position: \"bottom\",\r\n content: generatedInfo,\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n this.$el.find(\".ar-report-progress-dot.message-created .ar-info-container\").html(generatedInfo);\r\n }\r\n\r\n if (statusInfo.receiptDate) {\r\n var receiptInfo = Strings.ReportConfirmation_Status_DeliveredToRRM + '
' + kendo.toString(statusInfo.receiptDate, \"g\") + \"\";\r\n this.$el.find(\".ar-report-progress-dot.rrm-receipt .ar-tooltip-container\").kendoTooltip({\r\n position: \"bottom\",\r\n content: receiptInfo,\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n this.$el.find(\".ar-report-progress-dot.rrm-receipt .ar-info-container\").html(receiptInfo);\r\n }\r\n\r\n if (statusInfo.acknowledgementDate) {\r\n var acknowledgmentInfo = StatusHelper.getAcerAcknowledgmentLabel(statusInfo.reportStatus) + '
' + kendo.toString(statusInfo.acknowledgementDate, \"g\") + \"\";\r\n this.$el.find(\".ar-report-progress-dot.acer-acknowledgment .ar-tooltip-container\").kendoTooltip({\r\n position: \"bottom\",\r\n content: acknowledgmentInfo,\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n this.$el.find(\".ar-report-progress-dot.acer-acknowledgment .ar-info-container\").html(acknowledgmentInfo);\r\n }\r\n }\r\n }\r\n }\r\n\r\n export class TrumViewToolbar {\r\n formModel: TrumFormModelBase;\r\n formView: TrumFormViewBase;\r\n $el: JQuery;\r\n\r\n constructor(formView: TrumFormViewBase, targetContainer: HTMLElement) {\r\n\r\n this.formModel = formView.model;\r\n this.formView = formView;\r\n this.$el = $(targetContainer);\r\n\r\n AppKitchen.UIHelper.renderTemplateTo(targetContainer, Templates.TrumViewToolbar);\r\n\r\n // PDF export\r\n if (this.formView.options.allowPdfExport) {\r\n this.$el.find(\".ar-trum-pdf-button\").kendoTooltip({\r\n position: \"top\",\r\n content: Strings.TrumToolbar_DownloadPdf,\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n this.$el.find(\".ar-trum-pdf-button\").click(() => {\r\n this.formView.savePdf();\r\n });\r\n this.updatePdfLinkVisibility();\r\n this.formModel.dataLoader.model.bind(\"change:loading change:subloadersLoading\", () => this.updatePdfLinkVisibility());\r\n this.formModel.dataLoader.onChangeLoading().subscribe(() => this.updatePdfLinkVisibility());\r\n } else {\r\n this.$el.find(\".ar-trum-pdf-button\").hide(0);\r\n }\r\n\r\n if (!formView.options.delegatedView) {\r\n // XML download\r\n this.$el.find(\".ar-trum-xml-button\").kendoTooltip({\r\n position: \"top\",\r\n content: Strings.TrumToolbar_DownloadPackage,\r\n showAfter: 0,\r\n show: hideOtherToolips\r\n });\r\n this.updateXmlLink();\r\n this.formModel.onPropertyChange(\"MessageArchive_MessageFile\", \"url\", () => this.updateXmlLink());\r\n\r\n // TRUM actions menu\r\n if (this.formView.options.allowTrumActions) {\r\n this.$el.find(\".ar-trum-menu-button\").kendoMenu({\r\n openOnClick: true\r\n });\r\n this.$el.find(\".ar-trum-action-cancel\").click(() => this.trumCancelAction());\r\n this.$el.find(\".ar-trum-action-error\").click(() => this.trumErrorAction());\r\n this.updateActionLinks();\r\n this.formModel.onValueChange(this.formView.options.fields.id, () => this.updateActionLinks());\r\n this.formModel.onValueChange(this.formView.options.fields.buySellIndicator, () => this.updateActionLinks());\r\n } else {\r\n this.$el.find(\".ar-trum-menu-button\").remove();\r\n }\r\n } else {\r\n this.$el.find(\".ar-trum-xml-button\").remove();\r\n this.$el.find(\".ar-trum-menu-button\").remove();\r\n }\r\n } \r\n\r\n updateXmlLink() {\r\n var url = this.formModel.getProperty(\"MessageArchive_MessageFile\", \"url\");\r\n if (url) {\r\n this.$el.find(\".ar-trum-xml-button\").fadeIn(500);\r\n this.$el.find(\".ar-trum-xml-button\").attr(\"href\", url);\r\n } else {\r\n this.$el.find(\".ar-trum-xml-button\").hide(0);\r\n }\r\n }\r\n\r\n updateActionLinks() {\r\n var tradeId = this.formModel.getProperty(this.formView.options.fields.id, \"value\");\r\n if (tradeId) {\r\n this.$el.find(\".ar-trum-action-modify a\").attr(\"href\", \"#/\" + this.formView.options.createTradeRoute + \"/?id=\" + encodeURIComponent(tradeId) + \"&action=M\");\r\n this.$el.find(\".ar-trum-action-new a\").attr(\"href\", \"#/\" + this.formView.options.createTradeRoute + \"/?id=\" + encodeURIComponent(tradeId) + \"&action=N\");\r\n if ([\"B\", \"S\"].indexOf(this.formModel.getValue(this.formView.options.fields.buySellIndicator)) !== -1) {\r\n this.$el.find(\".ar-trum-action-mirror\").show(0);\r\n this.$el.find(\".ar-trum-action-mirror a\").attr(\"href\", \"#/\" + this.formView.options.createTradeRoute + \"/?id=\" + encodeURIComponent(tradeId) + \"&counter=yes\");\r\n } else {\r\n this.$el.find(\".ar-trum-action-mirror\").hide(0);\r\n }\r\n } else {\r\n this.$el.find(\".ar-trum-action-modify a\").removeAttr(\"href\");\r\n this.$el.find(\".ar-trum-action-new a\").removeAttr(\"href\");\r\n this.$el.find(\".ar-trum-action-mirror a\").removeAttr(\"href\");\r\n }\r\n }\r\n\r\n updatePdfLinkVisibility() {\r\n var mainLoaderIsLoading = this.formModel.dataLoader.getLoading();\r\n var subLoadersAreLoading = this.formModel.dataLoader.model.get(\"subloadersLoading\");\r\n\r\n if (mainLoaderIsLoading || subLoadersAreLoading) {\r\n this.$el.find(\".ar-trum-pdf-button\").hide(0);\r\n } else {\r\n this.$el.find(\".ar-trum-pdf-button\").fadeIn(500);\r\n }\r\n }\r\n\r\n private checkRemitV3Fields(formModel: TrumFormModelBase): boolean {\r\n const n = formModel.getProperty(\"RemitTrade_NotionalContractQuantity\", \"value\");\r\n const cn = formModel.getProperty(\"RemitContract_ContractName\", \"value\");\r\n return (n && cn) ? true: false;\r\n }\r\n\r\n trumCancelAction() {\r\n var tradeId = this.formModel.getProperty(this.formView.options.fields.id, \"value\");\r\n var cancelApi = this.formView.options.api.cancel;\r\n\r\n if (!tradeId || !cancelApi)\r\n return;\r\n\r\n if (this.formView.options.validateRemitV3InTrumActions) {\r\n const isRemitV3compatible = this.checkRemitV3Fields(this.formModel);\r\n if (!isRemitV3compatible) {\r\n AppKitchen.UIHelper.DialogBoxes.alert(Strings.TradeAction_CheckV3CancelMessage, { title: Strings.TradeAction_SetCancel_BoxTitle });\r\n return;\r\n }\r\n }\r\n\r\n var dateFieldModel = new AppKitchen.Controls.Forms.FieldModel(\"TerminationDate\", AppKitchen.Controls.Forms.FieldType.DateTime, \"\");\r\n var dateFieldView = new AppKitchen.Controls.Forms.DateTimeFieldView(dateFieldModel, { editable: true });\r\n \r\n AppKitchen.UIHelper.DialogBoxes.confirm(Templates.TerminationDateBoxContent, () => {\r\n if (dateFieldView.preview()) {\r\n var notificationBox = new AppKitchen.Controls.Popups.Notification(Strings.TradeAction_SetCancel_ProgressMessage, { icon: 0 });\r\n\r\n var showError = () => {\r\n notificationBox.setIcon(AppKitchen.Controls.Popups.NotificationIcon.Error);\r\n notificationBox.setContent(Strings.TradeAction_SaveFailedMessage);\r\n }\r\n\r\n if (this.formView.cancelRequest) {\r\n this.formView.cancelRequest.abort();\r\n }\r\n this.formView.cancelRequest = AppKitchen.Data.getData(cancelApi, { Id: tradeId, TerminationDate: dateFieldModel.get().value.toISOString() }, (result) => {\r\n if (result === true) {\r\n notificationBox.setIcon(AppKitchen.Controls.Popups.NotificationIcon.Ok);\r\n notificationBox.setContent(Strings.TradeAction_SetCancel_SuccessMessage);\r\n notificationBox.closeAfterTimeout();\r\n } else {\r\n showError();\r\n }\r\n }, () => { showError(); });\r\n }\r\n }, {\r\n strings: {\r\n ok: Strings.TradeAction_SetCancel_BoxButton,\r\n cancel: AppKitchen.Strings.Cancel\r\n },\r\n title: Strings.TradeAction_SetCancel_BoxTitle\r\n });\r\n\r\n dateFieldModel.set({ value: new Date() });\r\n $(\".k-window .a-dialog-box .a-dialog-content .ar-termination-box-form .ar-confirm-cancel\").append(dateFieldView.render());\r\n }\r\n\r\n trumErrorAction() {\r\n var tradeId = this.formModel.getProperty(this.formView.options.fields.id, \"value\");\r\n var errorApi = this.formView.options.api.error;\r\n\r\n if (!tradeId || !errorApi)\r\n return;\r\n\r\n if (this.formView.options.validateRemitV3InTrumActions) {\r\n const isRemitV3compatible = this.checkRemitV3Fields(this.formModel);\r\n if (!isRemitV3compatible) {\r\n AppKitchen.UIHelper.DialogBoxes.alert(Strings.TradeAction_CheckV3ErrorMessage, { title: Strings.TradeAction_SetError_BoxTitle });\r\n return;\r\n }\r\n }\r\n\r\n AppKitchen.UIHelper.DialogBoxes.confirm(Strings.TradeAction_SetError_BoxContent, () => {\r\n var notificationBox = new AppKitchen.Controls.Popups.Notification(Strings.TradeAction_SetError_ProgressMessage, { icon: 0 });\r\n\r\n var showError = () => {\r\n notificationBox.setIcon(AppKitchen.Controls.Popups.NotificationIcon.Error);\r\n notificationBox.setContent(Strings.TradeAction_SaveFailedMessage);\r\n }\r\n\r\n if (this.formView.errorRequest) {\r\n this.formView.errorRequest.abort();\r\n }\r\n this.formView.errorRequest = AppKitchen.Data.getData(errorApi, { Id: tradeId }, (result) => {\r\n if (result === true) {\r\n notificationBox.setIcon(AppKitchen.Controls.Popups.NotificationIcon.Ok);\r\n notificationBox.setContent(Strings.TradeAction_SetError_SuccessMessage);\r\n notificationBox.closeAfterTimeout();\r\n } else {\r\n showError();\r\n }\r\n },\r\n () => {\r\n showError();\r\n });\r\n }, {\r\n strings: {\r\n ok: Strings.TradeAction_SetError_BoxButton,\r\n cancel: AppKitchen.Strings.Cancel\r\n },\r\n title: Strings.TradeAction_SetError_BoxTitle\r\n }\r\n );\r\n }\r\n }\r\n}","module Seven2one.Remit.Controls {\r\n\r\n export class DateFromPickerModel extends AppKitchen.Controls.DateRangePickerModel {\r\n dataLoader: AppKitchen.Data.EventDataLoader;\r\n dateRestrictionFields: { [type: string]: string }\r\n\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader, dateRestrictionFields?: { [type: string]: string }) {\r\n super(null, null);\r\n this.dataLoader = dataLoader;\r\n this.dateRestrictionFields = dateRestrictionFields;\r\n\r\n this.bind(\"change\", () => this.loadFrom(this.get().startDate));\r\n }\r\n\r\n\r\n loadFrom(startDate: Date) {\r\n if (!startDate || !startDate.valueOf())\r\n return;\r\n\r\n let config = this.dataLoader.getConfig();\r\n if (this.get(\"startFilter\")) {\r\n config.DateRestriction.ItemId = this.dateRestrictionFields[this.get().startFilter];\r\n }\r\n config.DateRestriction.StartTime = startDate.onlyDate();\r\n config.DateRestriction.EndTime = new Date().onlyDate().addDays(1).addMinutes(-0.001);\r\n\r\n this.dataLoader.setConfig(config, this);\r\n this.dataLoader.loadData();\r\n }\r\n }\r\n\r\n export class DatePickerModel extends AppKitchen.Controls.DateRangePickerModel {\r\n dataLoader: AppKitchen.Data.EventDataLoader;\r\n\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader) {\r\n super(null, null);\r\n this.dataLoader = dataLoader;\r\n\r\n this.bind(\"change\", () => this.loadOn(this.get().startDate));\r\n }\r\n\r\n\r\n loadOn(date: Date) {\r\n if (!date || !date.valueOf())\r\n return;\r\n\r\n let config = this.dataLoader.getConfig();\r\n config.DateRestriction.StartTime = date.onlyDate();\r\n config.DateRestriction.EndTime = date.onlyDate().addDays(1).addMinutes(-0.001);\r\n\r\n this.dataLoader.setConfig(config, this);\r\n this.dataLoader.loadData();\r\n }\r\n }\r\n\r\n export class Table2DetailGridModel extends AppKitchen.Controls.Grids.EventGridModel {\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader, options?: any) {\r\n super(dataLoader, AppKitchen.OptionsHelper.merge(options, {\r\n getColumnHeader: (inventoryId: string, itemId: string) => {\r\n switch (itemId) {\r\n case \"OptionType\":\r\n return Strings.GridColumn_Type;\r\n case \"OptionStrikePrice\":\r\n return Strings.GridColumn_StrikePrice;\r\n case \"OptionStrikePriceCurrency\":\r\n return Strings.GridColumn_Currency;\r\n case \"CapacityUnit\":\r\n return Strings.GridColumn_Unit;\r\n default:\r\n return Strings[\"GridColumn_\" + itemId] || itemId;\r\n }\r\n }\r\n }));\r\n }\r\n }\r\n\r\n export class GridStatisticsModel extends Backbone.Model {\r\n\r\n dataLoader: AppKitchen.Data.EventDataLoader;\r\n\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader) {\r\n super();\r\n\r\n this.dataLoader = dataLoader;\r\n this.dataLoader.onChangeData().subscribe((e) => this.updateStatistics(e.data));\r\n }\r\n\r\n private updateStatistics(data: AppKitchen.Data.DataEntries[]) {\r\n\r\n var upToDateCount = 0;\r\n for (var i = 0; i < data.length; i++) {\r\n if (!data[i][\"IsHistory\"]) {\r\n upToDateCount++;\r\n }\r\n }\r\n\r\n this.set({\r\n upToDateCount: upToDateCount,\r\n totalCount: data.length\r\n });\r\n }\r\n }\r\n\r\n export class GridStatisticsView extends Backbone.View {\r\n template: (data: any) => string;\r\n model: GridStatisticsModel;\r\n constructor(model: GridStatisticsModel, targetContainer: HTMLElement) {\r\n super();\r\n\r\n this.tagName = 'div';\r\n this.template = _.template(Templates.GridStatistics);\r\n this.el = targetContainer;\r\n this.model = model;\r\n\r\n _.bindAll(this, 'render');\r\n this.model.bind(\"change\", this.render);\r\n\r\n this.render();\r\n }\r\n\r\n render() {\r\n var upToDateCount = this.model.get(\"upToDateCount\");\r\n var totalCount = this.model.get(\"totalCount\");\r\n\r\n if (totalCount > 0) {\r\n var content = {\r\n Value_UpToDateReports: upToDateCount,\r\n Value_ReportsTotal: totalCount\r\n }\r\n\r\n $(this.el).html(this.template(content));\r\n } else {\r\n $(this.el).html(\"\");\r\n }\r\n\r\n return this;\r\n }\r\n }\r\n\r\n export class StatusGridModel extends AppKitchen.Controls.Grids.EventGridModel {\r\n\r\n localStorageKey: string;\r\n dataLoader: AppKitchen.Data.EventDataLoader;\r\n\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader, options?: AppKitchen.Controls.Grids.EventGridOptions) {\r\n super(dataLoader, AppKitchen.OptionsHelper.merge(options, {\r\n getColumnHeader: (inventoryId, itemId) => Strings[\"GridColumn_\" + itemId] || itemId\r\n }));\r\n\r\n this.addVirtualColumns();\r\n\r\n // generate random localstorage key \r\n this.localStorageKey = AppKitchen.StringHelper.generateRandom(32);\r\n\r\n this.bind(\"change:selectedData\", this.setLocalStorage, this);\r\n }\r\n\r\n private addVirtualColumns() {\r\n\r\n var columns = this.get().columns;\r\n\r\n columns.unshift({\r\n field: \"AggregatedStatusLabel\",\r\n title: \"Status\",\r\n width: \"90px\",\r\n template: this.statusColumnTemplate,\r\n filterable: { multi: true },\r\n sortable: {\r\n compare: (data1, data2) => {\r\n return data1.AggregatedStatusNr - data2.AggregatedStatusNr;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private statusColumnTemplate(data) {\r\n\r\n var stateIdentifiers = {\r\n Undefined: \"___\",\r\n TechnicalError: \"___\",\r\n New: \"p__\",\r\n ImportError: \"e__\",\r\n Pending: \"pp_\",\r\n PendingWithError: \"ww_\",\r\n FinalOk: \"ooo\",\r\n FinalError: \"eee\"\r\n };\r\n\r\n var status = data.AggregatedStatus || \"Undefined\";\r\n var stateIdentifier = stateIdentifiers[status] || \"___\";\r\n\r\n return AppKitchen.UIHelper.renderTemplate(Templates.GridStatusColumn, {\r\n p0: stateIdentifier[0],\r\n p1: stateIdentifier[1],\r\n p2: stateIdentifier[2],\r\n errorVisibility: (status === \"TechnicalError\") ? \"visible\" : \"hidden\",\r\n undefinedVisibility: (status === \"Undefined\") ? \"visible\" : \"hidden\",\r\n barOpacity: (status === \"TechnicalError\" || status === \"Undefined\") ? \"0.7\" : \"1.0\"\r\n });\r\n }\r\n\r\n private setLocalStorage() {\r\n var selectedData = this.get(\"selectedData\");\r\n if (selectedData) {\r\n AppKitchen.LocalStorageHelper.store(this.localStorageKey, selectedData[this.dataLoader.getConfig().MainInventory + \"_Id\"], { expires: 1 });\r\n }\r\n }\r\n }\r\n\r\n export abstract class StatusGridViewBase extends AppKitchen.Controls.Grids.GridView {\r\n model: StatusGridModel;\r\n\r\n constructor(model: StatusGridModel, targetContainer: HTMLElement, options: AppKitchen.Controls.Grids.GridOptions) {\r\n super(model, targetContainer, options);\r\n }\r\n\r\n renderGrid() {\r\n super.renderGrid();\r\n\r\n var gridContainer = this.$el.find(this.gridSelector);\r\n\r\n // tooltip\r\n $(gridContainer).kendoTooltip({\r\n position: \"right\",\r\n filter: \".hasTooltip\",\r\n content: e => this.tooltipContent(e, gridContainer)\r\n });\r\n\r\n }\r\n\r\n private tooltipContent(e, gridSelector) {\r\n var row = $(e.target).closest(\"tr\");\r\n var dataItem: any = $(gridSelector).data(\"kendoGrid\").dataItem(row);\r\n var status = dataItem.AggregatedStatus;\r\n\r\n return AppKitchen.UIHelper.renderTemplate(Templates.TitleDescriptionTooltip, {\r\n title: dataItem.AggregatedStatusLabel,\r\n text: AppKitchen.StringHelper.getString(\"StatusText_\" + status, Strings)\r\n });\r\n }\r\n\r\n protected dataBound(e) {\r\n super.dataBound(e);\r\n\r\n var rows = e.sender.tbody.children();\r\n // iterate over rows and set custom row styles\r\n for (var j = 0; j < rows.length; j++) {\r\n var row = $(rows[j]);\r\n var dataItem = e.sender.dataItem(row);\r\n\r\n if (dataItem.IsHistory) {\r\n row.addClass(\"k-irrelevant\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface TradeOrderGridViewOptions extends AppKitchen.Controls.Grids.GridOptions {\r\n trumViewApp: AppKitchen.FrameManager.RoutedApp;\r\n }\r\n\r\n export class TradeOrderGridView extends StatusGridViewBase {\r\n options: TradeOrderGridViewOptions;\r\n\r\n constructor(model: StatusGridModel, targetContainer: HTMLElement, options?: TradeOrderGridViewOptions) {\r\n options = AppKitchen.OptionsHelper.merge(options, {\r\n fillHeight: true,\r\n groupable: true,\r\n sortable: true,\r\n filterable: true,\r\n dblclick: () => this.openTrumModal(),\r\n lazyShow: { initial: 200, more: 80 },\r\n headerTooltip: true,\r\n trumViewApp: undefined\r\n });\r\n\r\n super(model, targetContainer, options);\r\n }\r\n\r\n private openTrumModal() {\r\n var appOptions = { localStorageKey: this.model.localStorageKey, isPopup: true };\r\n var windowOptions = {\r\n buttons: [\r\n { name: \"undock\", action: (window) => this.undockWindow(window) },\r\n { name: \"close\", action: (window) => window.close() }\r\n ],\r\n modal: true,\r\n easyClose: true,\r\n width: \"80em\",\r\n closed: () => {\r\n // refocus grid on close (if browser window still focused)\r\n if (document.hasFocus()) this.focusGrid();\r\n }\r\n };\r\n\r\n // open window\r\n this.options.trumViewApp.startInWindow(windowOptions, appOptions);\r\n }\r\n\r\n private undockWindow(window: kendo.ui.Window) {\r\n AppKitchen.BrowserHelper.openInWindow(\"#/\" + this.options.trumViewApp.route + \"/?k=\" + this.model.localStorageKey, true);\r\n window.close();\r\n }\r\n\r\n renderGrid() {\r\n super.renderGrid();\r\n\r\n this.grid.table.keydown(e => {\r\n if (e.which === 13) {\r\n this.openTrumModal();\r\n }\r\n });\r\n }\r\n }\r\n\r\n export class MessageArchiveGridView extends StatusGridViewBase {\r\n constructor(model: StatusGridModel, targetContainer: HTMLElement, options?: AppKitchen.Controls.Grids.GridOptions) {\r\n options = AppKitchen.OptionsHelper.merge(options, {\r\n fillHeight: true,\r\n groupable: true,\r\n sortable: true,\r\n filterable: true,\r\n dblclick: (data) => this.openWindow(data.MessageArchive_Id),\r\n initialSort: { field: \"MessageArchive_CreationDate\", dir: \"desc\" },\r\n lazyShow: { initial: 200, more: 80 }\r\n });\r\n\r\n super(model, targetContainer, options);\r\n }\r\n\r\n openWindow(messageArchiveId: string) {\r\n new AppKitchen.FrameManager.RoutedApp(Apps.MessageArchiveViewApp, \"\").startInWindow({\r\n width: \"50em\",\r\n height: \"auto\",\r\n title: Strings.MessageArchive_WindowTitle + \" \" + messageArchiveId,\r\n modal: true,\r\n easyClose: true\r\n }, { messageArchiveId: messageArchiveId });\r\n }\r\n }\r\n\r\n export class StagingLogGridModel extends AppKitchen.Controls.Grids.EventGridModel {\r\n constructor(dataLoader: AppKitchen.Data.EventDataLoader, options?: AppKitchen.Controls.Grids.EventGridOptions) {\r\n super(dataLoader, AppKitchen.OptionsHelper.merge(options,\r\n {\r\n getColumnHeader: (inventoryId, itemId) => Strings[\"GridColumn_\" + itemId] || itemId\r\n }));\r\n }\r\n }\r\n\r\n export class Table2FormGridView extends AppKitchen.Controls.Grids.GridView {\r\n model: AppKitchen.Controls.Grids.EventGridModel;\r\n\r\n getWriteData(): AppKitchen.Api.Models.DataObject[][] {\r\n var gridData = [];\r\n\r\n var data = this.grid.dataSource.data().toJSON();\r\n if (data) {\r\n for (let i = 0; i < data.length; i++) {\r\n gridData.push((this.model.dataLoader).getSaveRequestData(data[i]).EventValues);\r\n }\r\n }\r\n\r\n return gridData;\r\n }\r\n }\r\n}","module Seven2one.Remit {\r\n\r\n export enum RemitTables {\r\n Table1Trades,\r\n Table2Trades,\r\n Orders\r\n }\r\n \r\n export enum AcerActionType {\r\n N,M,C,E\r\n }\r\n\r\n export module Data {\r\n\r\n export module RemitTableHelper {\r\n\r\n export function getRemitFields(remitTable: RemitTables): { uniqueIdentifier: string, version: string, logStatus: string, buySell: string} {\r\n switch (remitTable) {\r\n case RemitTables.Table1Trades:\r\n return {\r\n uniqueIdentifier: \"RemitTrade_UniqueTransactionIdentifier\",\r\n version: \"RemitTrade_Version\",\r\n logStatus: \"ReportLogTrade_Status\",\r\n buySell: \"RemitTrade_BuySellIndicator\"\r\n }\r\n case RemitTables.Table2Trades:\r\n return {\r\n uniqueIdentifier: \"RemitTable2Trade_ContractId\",\r\n version: \"RemitTable2Trade_Version\",\r\n logStatus: \"ReportLogTable2Trade_Status\",\r\n buySell: \"RemitTable2Trade_BuySellIndicator\"\r\n }\r\n case RemitTables.Orders:\r\n return {\r\n uniqueIdentifier: \"RemitOrder_UniqueOrderIdentifier\",\r\n version: \"RemitOrder_Version\",\r\n logStatus: \"ReportLogOrder_Status\",\r\n buySell: \"RemitOrder_BuySellIndicator\"\r\n }\r\n }\r\n\r\n throw \"invalid remit table\";\r\n }\r\n }\r\n\r\n var set24 = (data: any[], keys: string[]) => {\r\n for (let i = 0; i < data.length; i++) {\r\n for (let j = 0; j < keys.length; j++) {\r\n if (data[i][keys[j]]) {\r\n data[i][keys[j]] = kendo.toString(data[i][keys[j]], \"HH:mm\");\r\n if (data[i][keys[j]] === \"00:00\") {\r\n data[i][keys[j]] = \"24:00\";\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function parseDeliveryProfilesData(data: any[], startTimeField: string, endTimeField: string) {\r\n for (let i = 0; i < data.length; i++) {\r\n if (data[i][startTimeField]) {\r\n data[i][startTimeField] = kendo.toString(data[i][startTimeField], \"HH:mm\");\r\n }\r\n if (data[i][endTimeField]) {\r\n data[i][endTimeField] = kendo.toString(data[i][endTimeField], \"HH:mm\");\r\n if (data[i][endTimeField] === \"00:00\") {\r\n data[i][endTimeField] = \"24:00\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n // local storage synchronized event loader\r\n export interface IDataModelAttributes extends AppKitchen.ModelBaseAttributes {\r\n localStorageKey: string;\r\n defaultValue: string;\r\n currentValue?: string;\r\n }\r\n\r\n export class DataModel extends AppKitchen.ModelBase {\r\n\r\n constructor(localStorageKey: string, defaultValue: string) {\r\n super({\r\n localStorageKey: localStorageKey,\r\n defaultValue: defaultValue,\r\n currentValue: null\r\n });\r\n }\r\n }\r\n\r\n export class SynchronizedEventDataLoader extends AppKitchen.Data.EventDataLoader {\r\n primaryInventory: string;\r\n model: DataModel;\r\n\r\n constructor(config: AppKitchen.Data.GridConfig, model: DataModel, onReady: (loader: SynchronizedEventDataLoader) => void, options?: AppKitchen.Data.EventDataLoaderOptions) {\r\n super(config, onReady, options);\r\n this.model = model;\r\n this.primaryInventory = this.getConfig().MainInventory;\r\n\r\n if (this.model.get().localStorageKey) {\r\n AppKitchen.LocalStorageHelper.registerListener(this.model.get().localStorageKey, (value) => this.getSelectedData(value));\r\n }\r\n }\r\n\r\n getSelectedData(selectedValue?: string, options?: AppKitchen.Data.EventDataLoadOptions) {\r\n if (selectedValue) {\r\n this.model.set({ currentValue: selectedValue });\r\n let config = this.getConfig();\r\n config.EventItemRestrictions = [this.getEventItemRestriction(selectedValue)];\r\n this.setConfig(config, this);\r\n this.loadData(options);\r\n } else if (this.model.get().localStorageKey) {\r\n this.getSelectedData(AppKitchen.LocalStorageHelper.read(this.model.get().localStorageKey), options);\r\n } else if (this.model.get().defaultValue) {\r\n this.getSelectedData(this.model.get().defaultValue, options);\r\n }\r\n }\r\n\r\n getEventItemRestriction(value: string): AppKitchen.Api.Models.EventItemRestriction {\r\n return {\r\n InventoryId: this.primaryInventory,\r\n ItemId: \"Id\",\r\n Value: value,\r\n Operation: \"AND\",\r\n IsNavObjectFilter: false\r\n }\r\n }\r\n }\r\n\r\n\r\n export class Table2TradeGridDataLoader extends AppKitchen.Data.EventDataLoader {\r\n trumLoader: Table2TradeFormDataLoader;\r\n constructor(trumLoader: Table2TradeFormDataLoader, configName: string, onReady: (loader: Table2TradeGridDataLoader) => void, options?: AppKitchen.Data.EventDataLoaderOptions) {\r\n var formConfig = JSON.parse(Data.getDocumentSync(configName, \"Form\"));\r\n super(formConfig, () => {\r\n trumLoader.onChangeData().subscribe(() => this.loadGrid());\r\n onReady(this);\r\n }, options);\r\n this.trumLoader = trumLoader;\r\n }\r\n\r\n loadGrid() {\r\n this.setData([], this);\r\n var trumData = this.trumLoader.getData();\r\n if (trumData && trumData.length > 0) {\r\n let config = this.getConfig();\r\n config.EventItemRestrictions = [\r\n {\r\n InventoryId: config.MainInventory,\r\n ItemId: \"RemitTable2Trade\",\r\n Value: trumData[0][\"RemitTable2Trade_Id\"]\r\n }\r\n ];\r\n this.setConfig(config, this);\r\n this.loadData();\r\n }\r\n }\r\n }\r\n\r\n export class Table2TradeFormDataLoader extends SynchronizedEventDataLoader {\r\n fixingIndexLoader: Table2TradeGridDataLoader;\r\n optionDetailLoader: Table2TradeGridDataLoader;\r\n volumeOptIntervalLoader: Table2TradeGridDataLoader;\r\n\r\n constructor(configName: string, localStorageKey: string, initialId: string, onReady: (loader: Table2TradeFormDataLoader) => void, options?: AppKitchen.Data.EventDataLoaderOptions) {\r\n var formConfig = JSON.parse(Data.getDocumentSync(configName, \"Form\"));\r\n var model = new DataModel(localStorageKey, initialId);\r\n super(formConfig, model, () => {\r\n this.fixingIndexLoader = new Table2TradeGridDataLoader(this, \"FixingIndexDetail\", () => this.model.set({ready1: true}), options);\r\n this.optionDetailLoader = new Table2TradeGridDataLoader(this, \"OptionDetail\", () => this.model.set({ready2: true}), options);\r\n this.volumeOptIntervalLoader = new Table2TradeGridDataLoader(this, \"VolumeOptionalityInterval\", () => this.model.set({ready3: true}), options);\r\n }, options);\r\n\r\n this.model.bind(\"change:ready1 change:ready2 change:ready3\", () => {\r\n if (this.model.get(\"ready1\") && this.model.get(\"ready2\") && this.model.get(\"ready3\")) {\r\n this.fixingIndexLoader.onChangeLoading().subscribe(() => this.model.set({\r\n subloader1loading: this.fixingIndexLoader.getLoading()\r\n }));\r\n this.optionDetailLoader.onChangeLoading().subscribe(() => this.model.set({\r\n subloader2loading: this.optionDetailLoader.getLoading()\r\n }));\r\n this.volumeOptIntervalLoader.onChangeLoading().subscribe(() => this.model.set({\r\n subloader3loading: this.volumeOptIntervalLoader.getLoading()\r\n }));\r\n\r\n this.model.bind(\"change:subloader1loading change:subloader2loading change:subloader3loading\", () => {\r\n this.model.set({\r\n subloadersLoading: this.model.get(\"subloader1loading\") || this.model.get(\"subloader2loading\") || this.model.get(\"subloader3loading\")\r\n });\r\n });\r\n\r\n onReady(this);\r\n }\r\n });\r\n }\r\n\r\n abortRequest() {\r\n super.abortRequests();\r\n if (this.fixingIndexLoader) {\r\n this.fixingIndexLoader.abortRequests();\r\n }\r\n if (this.optionDetailLoader) {\r\n this.optionDetailLoader.abortRequests();\r\n }\r\n if (this.volumeOptIntervalLoader) {\r\n this.volumeOptIntervalLoader.abortRequests();\r\n }\r\n }\r\n }\r\n\r\n export abstract class TradeOrderFormDataLoaderBase extends SynchronizedEventDataLoader {\r\n deliveryProfileLoader: DeliveryProfileLoader;\r\n priceQuantityDetailLoader: PriceQuantityDetailLoader;\r\n\r\n constructor(configName: string, localStorageKey: string, initialId: string, tradeOrder: string, onReady: (loader: TradeOrderFormDataLoaderBase) => void, options?: AppKitchen.Data.EventDataLoaderOptions) {\r\n var formConfig = JSON.parse(Data.getDocumentSync(configName, \"Form\"));\r\n var model = new DataModel(localStorageKey, initialId);\r\n super(formConfig, model, () => {\r\n this.deliveryProfileLoader = new DeliveryProfileLoader(this, () => this.model.set({ ready1: true }), options);\r\n this.priceQuantityDetailLoader = new PriceQuantityDetailLoader(this, tradeOrder, () => this.model.set({ready2: true}), options);\r\n }, options);\r\n\r\n this.model.bind(\"change:ready1 change:ready2\", () => {\r\n if (this.model.get(\"ready1\") && this.model.get(\"ready2\")) {\r\n\r\n this.deliveryProfileLoader.onChangeLoading().subscribe(() => this.model.set({\r\n subloader1loading: this.deliveryProfileLoader.getLoading()\r\n }));\r\n this.deliveryProfileLoader.intervalLoader.onChangeLoading().subscribe(() => this.model.set({\r\n subloader2loading: this.deliveryProfileLoader.intervalLoader.getLoading()\r\n }));\r\n this.priceQuantityDetailLoader.onChangeLoading().subscribe(() => this.model.set({\r\n subloader3loading: this.priceQuantityDetailLoader.getLoading()\r\n }));\r\n this.priceQuantityDetailLoader.intervalLoader.onChangeLoading().subscribe(() => this.model.set({\r\n subloader4loading: this.priceQuantityDetailLoader.intervalLoader.getLoading()\r\n }));\r\n\r\n this.model.bind(\"change:subloader1loading change:subloader2loading change:subloader3loading change:subloader4loading\", () => {\r\n this.model.set({\r\n subloadersLoading: this.model.get(\"subloader1loading\") || this.model.get(\"subloader2loading\") || this.model.get(\"subloader3loading\") || this.model.get(\"subloader4loading\")\r\n });\r\n });\r\n\r\n onReady(this);\r\n }\r\n });\r\n }\r\n\r\n parseData(data: any[]) {\r\n set24(data, [\"RemitContract_TradingHoursEndTime\"]);\r\n }\r\n\r\n abortRequests() {\r\n super.abortRequests();\r\n if (this.deliveryProfileLoader) {\r\n this.deliveryProfileLoader.abortRequests();\r\n if (this.deliveryProfileLoader.intervalLoader) {\r\n this.deliveryProfileLoader.intervalLoader.abortRequests();\r\n }\r\n }\r\n if (this.priceQuantityDetailLoader) {\r\n this.priceQuantityDetailLoader.abortRequests();\r\n if (this.priceQuantityDetailLoader.intervalLoader) {\r\n this.priceQuantityDetailLoader.intervalLoader.abortRequests();\r\n }\r\n }\r\n }\r\n }\r\n \r\n export class Table1TradeFormDataLoader extends TradeOrderFormDataLoaderBase {\r\n constructor(configName: string, localStorageKey: string, initialId: string, onReady: (loader: Table1TradeFormDataLoader) => void, options?: AppKitchen.Data.EventDataLoaderOptions) {\r\n super(configName, localStorageKey, initialId, \"Trade\", onReady, options);\r\n }\r\n }\r\n\r\n export class OrderFormDataLoader extends TradeOrderFormDataLoaderBase {\r\n constructor(configName: string, localStorageKey: string, initialId: string, onReady: (loader: OrderFormDataLoader) => void) {\r\n super(configName, localStorageKey, initialId, \"Order\", onReady);\r\n }\r\n }\r\n\r\n export class PriceQuantityDetailIntervalLoader extends AppKitchen.Data.EventDataLoader {\r\n priQuaDeLoader: PriceQuantityDetailLoader;\r\n tradeOrder: string;\r\n\r\n constructor(priQuaDeLoader: PriceQuantityDetailLoader, tradeOrder: string, onReady: (loader: PriceQuantityDetailIntervalLoader) => void, options?: AppKitchen.Data.EventDataLoaderOptions) {\r\n var formConfig = JSON.parse(Data.getDocumentSync(tradeOrder + \"PriceQuantityDetailInterval\", \"Form\"));\r\n super(formConfig, () => {\r\n priQuaDeLoader.onChangeData().subscribe(() => this.loadIntervals());\r\n onReady(this);\r\n }, options);\r\n\r\n this.priQuaDeLoader = priQuaDeLoader;\r\n this.tradeOrder = tradeOrder;\r\n }\r\n\r\n parseData(data: any[]) {\r\n parseDeliveryProfilesData(data, \"Remit\" + this.tradeOrder + \"PriQuaDetInterval_StartTime\", \"Remit\" + this.tradeOrder + \"PriQuaDetInterval_EndTime\");\r\n }\r\n\r\n loadIntervals() {\r\n this.setData([], this);\r\n var trumData = this.priQuaDeLoader.trumLoader.getData();\r\n if (trumData && trumData.length > 0) {\r\n var tradeOrderId = trumData[0][\"Remit\" + this.tradeOrder + \"_Id\"];\r\n if (tradeOrderId) {\r\n let config = this.getConfig();\r\n config.EventItemRestrictions = [\r\n {\r\n ItemId: \"Remit\" + this.tradeOrder,\r\n Value: tradeOrderId,\r\n InventoryId: \"Remit\" + this.tradeOrder + \"PriceQuantityDetail\"\r\n }\r\n ];\r\n this.loadData();\r\n }\r\n }\r\n }\r\n }\r\n\r\n export class PriceQuantityDetailLoader extends AppKitchen.Data.EventDataLoader {\r\n intervalLoader: PriceQuantityDetailIntervalLoader;\r\n trumLoader: Table1TradeFormDataLoader;\r\n tradeOrder: string;\r\n\r\n constructor(trumLoader: Table1TradeFormDataLoader, tradeOrder: string, onReady: (loader: PriceQuantityDetailLoader) => void, options?: AppKitchen.Data.EventDataLoaderOptions) {\r\n var formConfig = JSON.parse(Data.getDocumentSync(tradeOrder + \"PriceQuantityDetail\", \"Form\"));\r\n\r\n super(formConfig, () => {\r\n trumLoader.onChangeData().subscribe(() => this.loadPriQuaDetails());\r\n this.intervalLoader = new PriceQuantityDetailIntervalLoader(this, tradeOrder, () => {\r\n onReady(this);\r\n }, options);\r\n }, options);\r\n\r\n this.trumLoader = trumLoader;\r\n this.tradeOrder = tradeOrder;\r\n }\r\n\r\n parseData(data: any[]) {\r\n parseDeliveryProfilesData(data, \"Remit\" + this.tradeOrder + \"PriceQuantityDetail_StartTime\", \"Remit\" + this.tradeOrder + \"PriceQuantityDetail_EndTime\");\r\n }\r\n\r\n loadPriQuaDetails() {\r\n this.setData([], this);\r\n this.intervalLoader.setData([], this);\r\n var trumData = this.trumLoader.getData();\r\n if (trumData && trumData.length > 0) {\r\n var tradeOrderId = trumData[0][\"Remit\" + this.tradeOrder + \"_Id\"];\r\n if (tradeOrderId) {\r\n let config = this.getConfig();\r\n config.EventItemRestrictions = [\r\n {\r\n InventoryId: \"Remit\" + this.tradeOrder + \"PriceQuantityDetail\",\r\n ItemId: \"Remit\" + this.tradeOrder,\r\n Value: tradeOrderId\r\n }\r\n ];\r\n this.setConfig(config, this);\r\n this.loadData();\r\n }\r\n }\r\n }\r\n }\r\n\r\n export class DeliveryIntervalLoader extends AppKitchen.Data.EventDataLoader {\r\n intervalLoader: DeliveryProfileLoader;\r\n\r\n constructor(deliveryProfileLoader: DeliveryProfileLoader, onReady: (loader: DeliveryIntervalLoader) => void, options?: AppKitchen.Data.EventDataLoaderOptions) {\r\n var formConfig = JSON.parse(Data.getDocumentSync(\"DeliveryProfileInterval\", \"Form\"));\r\n super(formConfig, () => {\r\n deliveryProfileLoader.onChangeData().subscribe(() => this.loadIntervals());\r\n onReady(this);\r\n }, options);\r\n\r\n this.intervalLoader = deliveryProfileLoader;\r\n }\r\n\r\n parseData(data: any[]) {\r\n parseDeliveryProfilesData(data, \"RemitDeliveryProfileInterval_StartTime\", \"RemitDeliveryProfileInterval_EndTime\");\r\n }\r\n\r\n loadIntervals() {\r\n this.setData([], this);\r\n var trumData = this.intervalLoader.trumLoader.getData();\r\n if (trumData && trumData.length > 0) {\r\n var contractId = trumData[0][\"RemitContract_Id\"];\r\n if (contractId) {\r\n let config = this.getConfig();\r\n config.EventItemRestrictions = [\r\n {\r\n ItemId: \"RemitContract\",\r\n Value: contractId,\r\n InventoryId: \"RemitDeliveryProfile\"\r\n }\r\n ];\r\n this.setConfig(config, this);\r\n this.loadData();\r\n }\r\n }\r\n }\r\n }\r\n\r\n export class DeliveryProfileLoader extends AppKitchen.Data.EventDataLoader {\r\n intervalLoader: DeliveryIntervalLoader;\r\n trumLoader: AppKitchen.Data.EventDataLoader;\r\n\r\n constructor(trumLoader: AppKitchen.Data.EventDataLoader, onReady: (loader: DeliveryProfileLoader) => void, options?: AppKitchen.Data.EventDataLoaderOptions) {\r\n var formConfig = JSON.parse(Data.getDocumentSync(\"DeliveryProfile\", \"Form\"));\r\n super(formConfig, () => {\r\n trumLoader.onChangeData().subscribe(() => this.loadDeliveryProfiles());\r\n this.intervalLoader = new DeliveryIntervalLoader(this, () => {\r\n onReady(this);\r\n }, options);\r\n }, options);\r\n\r\n this.trumLoader = trumLoader;\r\n }\r\n\r\n parseData(data: any[]) {\r\n parseDeliveryProfilesData(data, \"RemitDeliveryProfile_StartTime\", \"RemitDeliveryProfile_EndTime\");\r\n }\r\n\r\n loadDeliveryProfiles() {\r\n this.setData([], this);\r\n this.intervalLoader.setData([], this);\r\n var trumData = this.trumLoader.getData();\r\n if (trumData && trumData.length > 0) {\r\n let config = this.getConfig();\r\n config.EventItemRestrictions = [\r\n {\r\n InventoryId: config.MainInventory,\r\n ItemId: \"RemitContract\",\r\n Value: trumData[0][\"RemitContract_Id\"]\r\n }\r\n ];\r\n this.setConfig(config, this);\r\n this.loadData();\r\n }\r\n }\r\n }\r\n\r\n export class StatusGridDataLoader extends AppKitchen.Data.EventDataLoader {\r\n remitTable: RemitTables;\r\n\r\n constructor(configName: string, remitTable: RemitTables, options: AppKitchen.Data.EventDataLoaderOptions, onReady: (loader: StatusGridDataLoader) => void) {\r\n var gridConfig = JSON.parse(Data.getDocumentSync(configName, \"Grid\"));\r\n super(gridConfig, onReady, options);\r\n this.remitTable = remitTable;\r\n }\r\n \r\n public getHeaderFields(): AppKitchen.Data.Export.CsvExportColumnDefinition[] {\r\n var result = [];\r\n\r\n result.push({\r\n field: \"AggregatedStatusLabel\",\r\n header: \"Status\"\r\n });\r\n\r\n var fields = this.getConfig().EventItemSpecs || [];\r\n for (var i = 0; i < fields.length; i++) {\r\n var field = fields[i];\r\n var options = (field).FieldOptions;\r\n\r\n if (options && options.hidden) {\r\n continue;\r\n }\r\n\r\n //if (options && options.operatorOnly && !isOperator) {\r\n // continue;\r\n //}\r\n\r\n //var displayValue = options && options.description ? options.description : field.ItemId;\r\n\r\n result.push({\r\n field: field.InventoryId + \"_\" + field.ItemId,\r\n header: Strings[`CsvExport_${field.ItemId}`],\r\n format: options ? options.format : undefined\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getLogStatus(data: any): string {\r\n return data[RemitTableHelper.getRemitFields(this.remitTable).logStatus];\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n private getUTI(data: any): string {\r\n return data[RemitTableHelper.getRemitFields(this.remitTable).uniqueIdentifier];\r\n }\r\n\r\n private getBuySell(data: any): string {\r\n return data[RemitTableHelper.getRemitFields(this.remitTable).buySell];\r\n }\r\n\r\n private getVersion(data: any): Date {\r\n return data[RemitTableHelper.getRemitFields(this.remitTable).version];\r\n }\r\n\r\n protected parseData(data: any) {\r\n // get the latest versions per UTI and BuySellIndicator to find out history\r\n var latestVersions: { [uti: string]: { [buySell: string]: Date }} = {};\r\n for (let i = 0; i < data.length; i++) {\r\n let uti = this.getUTI(data[i]);\r\n let buySell = this.getBuySell(data[i]);\r\n let date = this.getVersion(data[i]);\r\n\r\n if (!uti || !buySell || !date) {\r\n continue;\r\n }\r\n\r\n if (!latestVersions[uti] || !latestVersions[uti][buySell] || date > latestVersions[uti][buySell]) {\r\n if (!latestVersions[uti]) {\r\n latestVersions[uti] = {};\r\n }\r\n latestVersions[uti][buySell] = date;\r\n }\r\n }\r\n\r\n const statusNrs = {\r\n TechnicalError: 1,\r\n ImportError: 2,\r\n FinalError: 3,\r\n BrandNew: 4,\r\n New: 5,\r\n Pending: 6,\r\n PendingWithError: 7,\r\n FinalOk: 8,\r\n Undefined: 9\r\n };\r\n\r\n // iterate over entries and complete data\r\n for (let i = 0; i < data.length; i++) {\r\n\r\n data[i].AggregatedStatus = Remit.StatusHelper.aggregateStatus(data[i].MessageArchive_Status, this.getLogStatus(data[i])) || \"Undefined\";\r\n data[i].AggregatedStatusLabel = AppKitchen.StringHelper.getString(\"AggregatedStatus_\" + data[i].AggregatedStatus, Remit.Strings);\r\n data[i].AggregatedStatusNr = statusNrs[data[i].AggregatedStatus] || 0;\r\n\r\n // is history?\r\n let uti = this.getUTI(data[i]);\r\n let buySell = this.getBuySell(data[i]);\r\n let date = this.getVersion(data[i]);\r\n\r\n if (uti && date && buySell &&\r\n latestVersions[uti] && latestVersions[uti][buySell] &&\r\n latestVersions[uti][buySell].valueOf() !== date.valueOf()) {\r\n data[i].IsHistory = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n export class MessageArchiveDataLoader extends AppKitchen.Data.EventDataLoader {\r\n\r\n constructor(configName: string, onReady: (loader: MessageArchiveDataLoader) => void) {\r\n var gridConfig = JSON.parse(Data.getDocumentSync(configName, \"Grid\"));\r\n super(gridConfig, onReady);\r\n }\r\n\r\n private aggregateStatus(messageStatus) {\r\n\r\n if (messageStatus === \"New\") {\r\n return \"New\";\r\n }\r\n if (messageStatus === \"Receipt\") {\r\n return \"Pending\";\r\n }\r\n if (messageStatus === \"ErrorResponse\") {\r\n return \"PendingWithError\";\r\n }\r\n if (messageStatus === \"Acknowledgement\") {\r\n return \"FinalOk\";\r\n }\r\n if (messageStatus === \"Error\") {\r\n return \"TechnicalError\";\r\n }\r\n\r\n return \"Undefined\";\r\n }\r\n\r\n protected parseData(data: any) {\r\n var statusNrs = {\r\n Undefined: 0,\r\n TechnicalError: 1,\r\n ImportError: 2,\r\n New: 3,\r\n PendingWithError: 4,\r\n Pending: 5,\r\n FinalError: 6,\r\n FinalOk: 7\r\n };\r\n\r\n // iterate over entries and complete data\r\n for (let i = 0; i < data.length; i++) {\r\n data[i].AggregatedStatus = this.aggregateStatus(data[i].MessageArchive_Status) || \"Undefined\";\r\n data[i].AggregatedStatusLabel = AppKitchen.StringHelper.getString(\"AggregatedStatus_\" + data[i].AggregatedStatus, Remit.Strings);\r\n data[i].AggregatedStatusNr = statusNrs[data[i].AggregatedStatus] || 0;\r\n }\r\n }\r\n }\r\n\r\n // ReSharper disable once InconsistentNaming\r\n export interface StatisticDataLoaderAttributes {\r\n // ReSharper disable once InconsistentNaming\r\n data?: { Values: any[] };\r\n loading?: boolean;\r\n ready?: boolean;\r\n }\r\n \r\n export class StatisticDataLoader extends AppKitchen.ModelBase {\r\n request: JQueryXHR;\r\n\r\n constructor(onReady: () => void) {\r\n super();\r\n\r\n this.set({\r\n data: null,\r\n loading: false,\r\n ready: false\r\n });\r\n\r\n this.bind(\"change:ready\", () => {\r\n if (this.get().ready) {\r\n onReady();\r\n }\r\n });\r\n }\r\n\r\n loadData(config: Object) {\r\n this.set({ loading: true });\r\n this.request = AppKitchen.Data.getData(\"Statistic\", config, (data) => this.setData(data), () => { });\r\n }\r\n\r\n loadStatistic(fromDate: Date, remitTable: Remit.RemitTables) {\r\n AppKitchen.Data.getDocument([\"Table1Trades\", \"Table2Trades\", \"Orders\"][remitTable], \"Dashboard\", (config) => {\r\n var eventConfig = JSON.parse(config);\r\n this.loadData({\r\n FromDate: fromDate,\r\n RemitTable: remitTable,\r\n EventRequest: eventConfig\r\n });\r\n });\r\n }\r\n\r\n protected setData(data: any) {\r\n this.set({ data: data });\r\n this.set({ loading: false });\r\n this.set({ ready: true });\r\n }\r\n\r\n abortRequest() {\r\n if (this.request) {\r\n this.request.abort();\r\n }\r\n }\r\n }\r\n\r\n export function getDocumentSync(documentName: string, documentType: string) {\r\n var result = $.ajax({\r\n dataType: \"json\",\r\n type: \"GET\",\r\n url: \"./api/Document\",\r\n data: { filename: documentName, type: documentType },\r\n cache: false,\r\n async: false\r\n });\r\n\r\n if (result.status === 200) {\r\n return result.responseJSON;\r\n }\r\n\r\n AppKitchen.handleError(result, result.statusText, \"\");\r\n\r\n return undefined;\r\n }\r\n\r\n }\r\n\r\n}","module Seven2one.Remit.ErrorCodes {\r\n\r\n export class EcerErrorContainer {\r\n acerErrors: AcerError[];\r\n remitStatusInfo: string;\r\n\r\n constructor(remitStatusInfo: string, acerErrors?: AcerError[]) {\r\n this.acerErrors = acerErrors;\r\n this.remitStatusInfo = remitStatusInfo;\r\n }\r\n\r\n isFieldSpecific() {\r\n return this.acerErrors && this.acerErrors.length > 0;\r\n }\r\n }\r\n\r\n export class AcerError {\r\n code: string;\r\n type: string;\r\n inventory: string;\r\n fieldName: string;\r\n errorMessage: string;\r\n\r\n constructor(code: string, type: string, fieldName: string, inventory: string, errorMessage: string) {\r\n this.code = code;\r\n this.type = type;\r\n this.inventory = inventory;\r\n this.fieldName = fieldName;\r\n this.errorMessage = errorMessage;\r\n }\r\n\r\n isGlobalMessage() {\r\n return !this.inventory || !this.fieldName;\r\n }\r\n\r\n getKey() {\r\n return this.inventory + \"_\" + this.fieldName;\r\n }\r\n }\r\n\r\n export class ErrorManager {\r\n\r\n\r\n static errorTable: string[][] = null;\r\n\r\n static initErrorTable() {\r\n if (!this.errorTable) {\r\n this.errorTable = \r\n [\r\n [\"R1CTCITRAIDE\",\t\t\"Error\",\t\"ContractId\",\t\t\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1CTCITRAIDE],\r\n [\"R1CTCITRAIDE\",\t\t\"Error\",\t\"ContractId\",\t\t\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1CTCITRAIDE],\r\n [\"R1ODOSOPTM\",\t\t\t\"Error\",\t\"OptionStyle\",\t\t\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1ODOSOPTM],\r\n [\"R1ODOTOPTM\",\t\t\t\"Error\",\t\"OptionType\",\t\t\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1ODOTOPTM],\r\n [\"R2ODOEDOPT\",\t\t\t\"Error\",\t\"OptionExerciseDate\",\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R2ODOEDOPT],\r\n [\"R1ODOSPOPT\",\t\t\t\"Error\",\t\"OptionStrikePrice\",\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1ODOSPOPT],\r\n [\"R1PTCMPCOIT\",\t\t\t\"Error\",\t\"MarketParticipantId\",\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1PTCMPCOIT],\r\n [\"R1PTCBSIOMPUQ\",\t\t\"Error\",\t\"BuySellIndicator\",\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1PTCBSIOMPUQ],\r\n [\"R2PTCBSICMOM\",\t\t\"Error\",\t\"BuySellIndicator\",\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R2PTCBSICMOM],\r\n [\"R1CNTRTRAIDE\",\t\t\"Error\",\t\"ContractId\",\t\t\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1CNTRTRAIDE],\r\n [\"R1CNTRTRAIDE\",\t\t\"Error\",\t\"ContractId\",\t\t\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1CNTRTRAIDE],\r\n [\"R2ODOICIMPIUQ\",\t\t\"Error\",\t\"ActionType\",\t\t\t\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R2ODOICIMPIUQ],\r\n [\"R2ODOICIMPIUQC\",\t\t\"Error\",\t\"ActionType\",\t\t\t\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R2ODOICIMPIUQC],\r\n [\"R2CTCIOMPUNQ\",\t\t\"Error\",\t\"ContractId\",\t\t\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R2CTCIOMPUNQ],\r\n [\"R6CLTDTCDST\",\t\t\t\"Error\",\t\"LastTradingDateTime\",\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R6CLTDTCDST],\r\n [\"R2CLTDTOT\",\t\t\t\"Error\",\t\"TransactionTime\",\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R2CLTDTOT],\r\n [\"R2CLTDTOT\",\t\t\t\"Error\",\t\"TransactionTime\",\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R2CLTDTOT],\r\n [\"R2CLTDTDSTOT\",\t\t\"Error\",\t\"TransactionTime\",\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R2CLTDTDSTOT],\r\n [\"R2CLTDTDSTOT\",\t\t\"Error\",\t\"TransactionTime\",\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R2CLTDTDSTOT],\r\n [\"R2TRTDCONDED\",\t\t\"Error\",\t\"TerminationDate\",\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R2TRTDCONDED],\r\n [\"R1CDUTIDRCIMPDTUQ\",\t\"Error\",\t\"UniqueTransactionIdentifier\",\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1CDUTIDRCIMPDTUQ],\r\n [\"R2CDPRCMOSP\",\t\t\t\"Error\",\t\"Price\",\t\t\t\t\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R2CDPRCMOSP],\r\n [\"R2CDPRCMTSP\",\t\t\t\"Error\",\t\"Price\",\t\t\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R2CDPRCMTSP],\r\n [\"R3CDPRBSPM\",\t\t\t\"Error\",\t\"Price\",\t\t\t\t\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R3CDPRBSPM],\r\n [\"R4CDQINTE4\",\t\t\t\"Error\",\t\"Price\",\t\t\t\t\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R4CDQINTE4],\r\n [\"R5CDQINTE5\",\t\t\t\"Error\",\t\"Price\",\t\t\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R5CDQINTE5],\r\n [\"R2CDQVNZ\",\t\t\t\"Error\",\t\"Quantity\",\t\t\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R2CDQVNZ],\r\n [\"R3CDQVCMSV\",\t\t\t\"Error\",\t\"Quantity\",\t\t\t\t\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R3CDQVCMSV],\r\n [\"R4CDQVSVPT\",\t\t\t\"Error\",\t\"Quantity\",\t\t\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R4CDQVSVPT],\r\n [\"R5CDQINTE5\",\t\t\t\"Error\",\t\"Quantity\",\t\t\t\t\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R5CDQINTE5],\r\n [\"R6CDQINTE6\",\t\t\t\"Error\",\t\"Quantity\",\t\t\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R6CDQINTE6],\r\n [\"R1DPDEDCHK\",\t\t\t\"Error\",\t\"DeliveryStartDate\",\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1DPDEDCHK],\r\n [\"R1DPLDINTCHK\",\t\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R1DPLDINTCHK],\r\n [\"R2DPLDINTCHK\",\t\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R2DPLDINTCHK],\r\n [\"R1LIATTRNEW\",\t\t\t\"Error\",\t\"UniqueTransactionIdentifier\",\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1LIATTRNEW],\r\n [\"R1LIATORNEW\",\t\t\t\"Error\",\t\"UniqueOrderIdentifier\",\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R1LIATORNEW],\r\n [\"R1LIATTRMOD\",\t\t\t\"Error\",\t\"ActionType\",\t\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1LIATTRMOD],\r\n [\"R1LIATTRCAN\",\t\t\t\"Error\",\t\"ActionType\",\t\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1LIATTRCAN],\r\n [\"R1LIATORCAN\",\t\t\t\"Error\",\t\"ActionType\",\t\t\t\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R1LIATORCAN],\r\n [\"R1LIATTRERR\",\t\t\t\"Error\",\t\"ActionType\",\t\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1LIATTRERR],\r\n [\"R1LIATORERR\",\t\t\t\"Error\",\t\"ActionType\",\t\t\t\t\t\"RemitOrder\",\t\t\t\t\t\tStrings.acerErrorCode_R1LIATORERR],\r\n [\"R1REOMPCON\",\t\t\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R1REOMPCON],\r\n [\"R1REPENTCON\",\t\t\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R1REPENTCON],\r\n [\"R1OIOMPTRAN\",\t\t\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R1OIOMPTRAN],\r\n [\"R1LIATDECAPR\",\t\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R1LIATDECAPR],\r\n [\"R6LIAORNOMODAFCAN\",\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R6LIAORNOMODAFCAN],\r\n [\"R6LIATTRNOMODAFCAN\",\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R6LIATTRNOMODAFCAN],\r\n [\"R7LIAORNONEWAFCAN\",\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R7LIAORNONEWAFCAN],\r\n [\"R7LIATTRNONEWAFCAN\",\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R7LIATTRNONEWAFCAN],\r\n [\"R1CONEMBINVAL\",\t\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R1CONEMBINVAL],\r\n [\"R1LEGCONEMBINVAL\",\t\"Error\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R1LEGCONEMBINVAL],\r\n [\"R1CONINVORD\",\t\t\t\"Error\",\t\"ContractId\",\t\t\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1CONINVORD],\r\n [\"R1CONINVTRA\",\t\t\t\"Error\",\t\"ContractId\",\t\t\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1CONINVTRA],\r\n [\"R1BENMPCON\",\t\t\t\"Warning\",\t\"\",\t\t\t\t\t\t\t\t\"\",\t\t\t\t\t\t\t\t\tStrings.acerErrorCode_R1BENMPCON],\r\n [\"R1DPPTIQORTRM\",\t\t\"Warning\",\t\"QuantityUnit\",\t\t\t\t\t\"RemitTradePriceQuantityDetail\",\tStrings.acerErrorCode_R1DPPTIQORTRM],\r\n [\"R1CDTNCQBSSM\",\t\t\"Warning\",\t\"NotionalContractQuantity\",\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1CDTNCQBSSM],\r\n [\"R1DPDPZMUL\",\t\t\t\"Warning\",\t\"DeliveryPointOrZone\",\t\t\t\"RemitContract\",\t\t\t\t\tStrings.acerErrorCode_R1DPDPZMUL],\r\n [\"R1CDPCBSCM\",\t\t\t\"Warning\",\t\"PriceCurrency\",\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1CDPCBSCM],\r\n [\"R1CDNANABSAM\",\t\t\"Warning\",\t\"NotionalAmount\",\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1CDNANABSAM],\r\n [\"R1CDNCBSTSC\",\t\t\t\"Warning\",\t\"NotionalAmountCurrency\",\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1CDNCBSTSC],\r\n [\"R1CDQVBSTSV\",\t\t\t\"Warning\",\t\"Quantity\",\t\t\t\t\t\t\"RemitTrade\",\t\t\t\t\t\tStrings.acerErrorCode_R1CDQVBSTSV]\r\n ];\r\n\r\n }\r\n }\r\n \r\n public static getError(code: string) {\r\n this.initErrorTable();\r\n var errors = this.errorTable.filter(v => v[0] === code);\r\n if (!errors || errors.length === 0) {\r\n return null;\r\n }\r\n const error = errors[0];\r\n return new AcerError(error[0], error[1], error[2], error[3], error[4]);\r\n }\r\n }\r\n}","module Seven2one.Remit {\r\n\r\n export module NewsHelper {\r\n export const KeyDontShow = \"DontShowNews\";\r\n export const KeyShowedInSession = \"ShowedNewsInCurrentSession\";\r\n\r\n export function ResetShowNewsInSession() {\r\n const sessionToken = Cookies.get(AppKitchen.GlobalSettings.sessionTokenCookieName);\r\n const currentUser = Cookies.get(AppKitchen.GlobalSettings.currentUserCookieName);\r\n if (sessionToken === undefined || currentUser === undefined) {\r\n setStoreValue(KeyShowedInSession, \"N\");\r\n AppKitchen.logInfo(\"Reset show news in session\");\r\n }\r\n }\r\n\r\n export function shouldAdvertisementBeShown(): boolean {\r\n const showNews: boolean = AppKitchen.GlobalSettings.customConfig && AppKitchen.GlobalSettings.customConfig.ShowNews === \"true\";\r\n let dontShowAd = getStoreValue(KeyDontShow);\r\n let showedAdInSession = getStoreValue(KeyShowedInSession);\r\n\r\n let result = showNews && !(dontShowAd === \"Y\" || showedAdInSession === \"Y\");\r\n return result;\r\n }\r\n\r\n export function showPopup() {\r\n const language = BrowserHelper.getLanguage();\r\n let template = $(AppKitchen.UIHelper.renderTemplate(Remit.Templates.Seven2oneNews, { lang: language }));\r\n let window = AppKitchen.UIHelper.Windows.openWindow(template[0], {\r\n easyClose: true,\r\n keepOnNavigate: true,\r\n width: \"60%\",\r\n height: \"85%\",\r\n modal: true\r\n });\r\n template.find(\".ar-okNotShow-button\").click(() => {\r\n //save state\r\n setStoreValue(KeyDontShow, \"Y\");\r\n window.close();\r\n });\r\n template.find(\".ar-ok-button\").click(() => window.close());\r\n\r\n setStoreValue(KeyShowedInSession, \"Y\");\r\n }\r\n\r\n function setStoreValue(key: string, value: string) {\r\n AppKitchen.LocalStorageHelper.store(key, `{\"v\":\"${value}\"}`);\r\n }\r\n\r\n function getStoreValue(key: string) {\r\n let value = AppKitchen.LocalStorageHelper.read(key);\r\n if (value)\r\n return JSON.parse(value).v;\r\n return value;\r\n }\r\n }\r\n\r\n export module BrowserHelper {\r\n export function getLanguage() {\r\n\r\n var language =\r\n navigator.language || // All browsers\r\n navigator['userLanguage']; // IE <= 10\r\n return language ? language.substr(0, 2) : undefined;\r\n }\r\n }\r\n\r\n export module FormatingHelper {\r\n export function formatTimeSpan(from: any, to: any): string {\r\n from = from instanceof Date ? kendo.toString(from, \"HH:mm\") : from;\r\n to = to instanceof Date ? kendo.toString(to, \"HH:mm\") : to;\r\n\r\n if (from && to)\r\n return from + \" \" + Remit.Strings.to + \" \" + to;\r\n if (from || to)\r\n return (from ? from : \"-\") + \" \" + Remit.Strings.to + \" \" + (to ? to : \"-\");\r\n return \"\";\r\n }\r\n\r\n export function formatValueUnit(value: string, unit: string): string {\r\n if (value && unit)\r\n return value + \" \" + unit;\r\n if (value)\r\n return value;\r\n if (unit)\r\n return \"- \" + unit;\r\n return \"\";\r\n }\r\n\r\n export function formatTrumInputFieldError(error: string) {\r\n var max = 45;\r\n\r\n if (error.length > max) {\r\n var lastSpace = error.substr(0, max).lastIndexOf(\" \");\r\n var line1 = error.substr(0, lastSpace);\r\n var line2 = error.substr(lastSpace + 1);\r\n if (line2.length > max) {\r\n line2 = line2.substr(0, max - 3) + \"...\";\r\n }\r\n\r\n error = line1 + \"
\" + line2;\r\n }\r\n\r\n return error;\r\n }\r\n \r\n }\r\n\r\n export module StatusHelper\r\n {\r\n export function aggregateStatus(messageStatus: string, tradeOrderLogStatus: string): string {\r\n\r\n if (!messageStatus && !tradeOrderLogStatus) {\r\n return \"BrandNew\";\r\n } else if (!messageStatus && tradeOrderLogStatus === \"Error\") {\r\n return \"ImportError\";\r\n } else if (messageStatus === \"New\") {\r\n return \"New\";\r\n } else if (messageStatus === \"ErrorSend\") {\r\n return \"PendingWithError\";\r\n } else if (messageStatus === \"Receipt\") {\r\n return \"Pending\";\r\n } else if (messageStatus === \"ErrorResponse\") {\r\n return \"PendingWithError\";\r\n } else if ((messageStatus === \"Acknowledgement\") && tradeOrderLogStatus === \"Ok\") {\r\n return \"FinalOk\";\r\n } else if (messageStatus === \"Acknowledgement\" && tradeOrderLogStatus === \"Error\") {\r\n return \"FinalError\";\r\n } else if (messageStatus === \"Error\") {\r\n return \"TechnicalError\";\r\n }\r\n\r\n return \"Undefined\";\r\n }\r\n\r\n // ReSharper disable InconsistentNaming\r\n export module Colors {\r\n export var Success = AppKitchen.Colors.Green;\r\n export var Failure = AppKitchen.Colors.Red;\r\n export var Pending = AppKitchen.Colors.LightBlue;\r\n export var Warning = AppKitchen.Colors.Orange;\r\n export var TechnicalError = AppKitchen.Colors.OrangeRed;\r\n export var Unknown = AppKitchen.Colors.Silver;\r\n }\r\n // ReSharper restore InconsistentNaming\r\n\r\n export function getColorOfAggregatedStatus(aggregatedStatus: string) {\r\n switch (aggregatedStatus) {\r\n case \"BrandNew\":\r\n return Colors.Pending;\r\n case \"ImportError\":\r\n return Colors.TechnicalError;\r\n case \"New\":\r\n case \"Pending\":\r\n return Colors.Pending;\r\n case \"PendingWithError\":\r\n return Colors.Warning;\r\n case \"FinalOk\":\r\n return Colors.Success;\r\n case \"FinalError\":\r\n return Colors.Failure;\r\n case \"TechnicalError\":\r\n return Colors.TechnicalError;\r\n default:\r\n return Colors.Unknown;\r\n }\r\n }\r\n\r\n export function getAcerAcknowledgmentLabel(aggregatedStatus: string) {\r\n switch (aggregatedStatus) {\r\n case \"FinalOk\":\r\n return Remit.Strings.ReportConfirmation_Status_AcceptedByACER;\r\n case \"FinalError\":\r\n return Remit.Strings.ReportConfirmation_Status_RejectedByACER;\r\n default:\r\n return Remit.Strings.ReportConfirmation_Status_AcknowledgedByACER;\r\n }\r\n }\r\n }\r\n\r\n export class ChartClickHelper {\r\n static mapCategoryToStatus(category: string): string {\r\n //todo: var status = EexStatusTypes[category];\r\n var status = category;\r\n return String(status);\r\n }\r\n\r\n static mapSeriesToStatus(seriesIndex: number): string {\r\n return String(seriesIndex + 1); // skip \"all\"\r\n }\r\n\r\n static findFromDateFromCategory(category: string, reportingDays: number): Date {\r\n var result = new Date().onlyDate();\r\n var format = DateFormatHelper.getDateFormatString();\r\n\r\n var catDate = kendo.parseDate(category, format, AppKitchen.GlobalSettings.culture);\r\n\r\n for (var i = 0; i < reportingDays; i++) {\r\n\r\n var compareDate = kendo.date.getDate(result);\r\n if (compareDate.getDate() === catDate.getDate() && compareDate.getMonth() === catDate.getMonth()) {\r\n return result;\r\n }\r\n\r\n result = result.addDays(-1);\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n export module DateFormatHelper {\r\n export function getDateFormatString() {\r\n return \"ddd\\n\" + (AppKitchen.GlobalSettings.culture === \"de-DE\" ? \"dd.MM.\" : \"dd/MM\");\r\n }\r\n }\r\n\r\n export module ExcelHelper {\r\n import ExcelImportColumnDefinition = AppKitchen.Data.Import.ExcelImportColumnDefinition;\r\n\r\n export function readExcelFile(file: File,\r\n columns: ExcelImportColumnDefinition[],\r\n loaded: (data: any[]) => void,\r\n error: (message: string) => void) {\r\n\r\n if (!columns || columns.length === 0) {\r\n throw \"No fields for excel import defined!\";\r\n }\r\n\r\n var reader = new FileReader();\r\n reader.onload = e => {\r\n try {\r\n var fileData = (e.target).result;\r\n var workbook = XLSX.read(btoa(fix(fileData)), { type: 'base64' });\r\n\r\n if (!workbook)\r\n throw AppKitchen.Strings.Import_InvalidFile;\r\n\r\n if (workbook.SheetNames.length === 0)\r\n throw AppKitchen.Strings.Import_InvalidFile;\r\n\r\n var sheet = workbook.Sheets[workbook.SheetNames[0]];\r\n\r\n // set sheet headers to field names\r\n for (let i = 0; i < columns.length; i++) {\r\n var columnName = String.fromCharCode(65 + i);\r\n if (sheet[columnName + \"1\"]) {\r\n sheet[columnName + \"1\"].w = columns[i].field;\r\n } else {\r\n throw AppKitchen.Strings.Import_MissingColumn + \" \" + columnName;\r\n }\r\n };\r\n\r\n // create object array\r\n var rawData = XLSX.utils.sheet_to_row_object_array(sheet);\r\n\r\n // parse object array and convert data\r\n var data = [];\r\n for (let row = 0; row < rawData.length; row++) {\r\n var parsedRow = {};\r\n for (let column = 0; column < columns.length; column++) {\r\n var cellName = String.fromCharCode(65 + column) + (row + 2);\r\n var cellValue = rawData[row][columns[column].field];\r\n\r\n if (columns[column].required && !cellValue) {\r\n throw AppKitchen.Strings.Import_MissingValueAt + \" \" + cellName;\r\n }\r\n\r\n switch (columns[column].type) {\r\n case \"number\":\r\n parsedRow[columns[column].field] = tryParseNumber(cellValue, \"en-US\", cellName);\r\n break;\r\n case \"date\":\r\n parsedRow[columns[column].field] = tryParseExcelDateTime(cellValue, cellName, [\"M/d/yy\", \"d\"]);\r\n break;\r\n case \"time\":\r\n parsedRow[columns[column].field] = tryParseTime(cellValue, cellName, false);\r\n break;\r\n case \"time24\":\r\n parsedRow[columns[column].field] = tryParseTime(cellValue, cellName, true);\r\n break;\r\n case \"dateTime\":\r\n parsedRow[columns[column].field] = tryParseExcelDateTime(cellValue, cellName, [\"d/M/yy HH:mm\", \"g\"]);\r\n break;\r\n default:\r\n parsedRow[columns[column].field] = cellValue;\r\n break;\r\n }\r\n }\r\n data.push(parsedRow);\r\n }\r\n\r\n loaded(data);\r\n } catch (exception) {\r\n error(exception);\r\n }\r\n };\r\n\r\n reader.readAsArrayBuffer(file);\r\n }\r\n\r\n function fix(data) {\r\n var o = \"\", l = 0, w = 10240;\r\n for (; l < data.byteLength / w; ++l)\r\n o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));\r\n o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));\r\n return o;\r\n }\r\n\r\n function tryParseExcelDateTime(value: string, cell: string, formats?: string[], culture?: string): Date {\r\n var date;\r\n try {\r\n date = kendo.parseDate(value, formats, culture);\r\n if (date) {\r\n return date;\r\n }\r\n } catch (e) { }\r\n\r\n var number = parseFloat(value);\r\n if (!value || !number) {\r\n throw AppKitchen.Strings.Import_InvalidDateAt + \" \" + cell;\r\n }\r\n\r\n var localTimestamp = (number - (25567 + 2)) * 86400 * 1000;\r\n var roundCoeff = 1000 * 60;\r\n localTimestamp = Math.round(localTimestamp / roundCoeff) * roundCoeff;\r\n\r\n var utcTimetamp = localTimestamp + new Date().getTimezoneOffset() * 60000;\r\n\r\n date = new Date(utcTimetamp);\r\n\r\n return date;\r\n }\r\n\r\n function tryParseTime(value: string, cell: string, allow24: boolean): string {\r\n if (allow24) {\r\n if (value === \"24:00\") {\r\n return \"24:00\";\r\n }\r\n }\r\n\r\n var time = kendo.parseDate(value, \"HH:mm\");\r\n if (!time) {\r\n throw AppKitchen.Strings.Import_InvalidTimeAt + \" \" + cell;\r\n }\r\n\r\n var strTime = kendo.toString(time, \"HH:mm\");\r\n\r\n if (allow24 && strTime === \"00:00\") {\r\n throw AppKitchen.Strings.Import_InvalidTimeAt + \" \" + cell;\r\n }\r\n\r\n return strTime;\r\n }\r\n\r\n function tryParseNumber(value: string, culture: string, cell: string): number {\r\n if (value == null) {\r\n return null;\r\n }\r\n\r\n var number = kendo.parseFloat(value, culture);\r\n if (number == null) {\r\n throw AppKitchen.Strings.Import_InvalidNumberAt + \" \" + cell;\r\n }\r\n\r\n return number;\r\n }\r\n\r\n function tryParseDate(value: string, cell: string, formats?: string[], culture?: string): Date {\r\n var date = kendo.parseDate(value, formats, culture);\r\n if (!date) {\r\n throw AppKitchen.Strings.Import_InvalidDateAt + \" \" + cell;\r\n }\r\n\r\n return date;\r\n }\r\n\r\n function tryParseBoolean(value: string, cell: string): boolean {\r\n if (value) {\r\n if (value.toLowerCase() === \"true\") {\r\n return true;\r\n } else if (value.toLowerCase() === \"false\") {\r\n return false;\r\n } else {\r\n throw AppKitchen.Strings.Import_InvalidBooleanAt + \" \" + cell; //todo: correct string\r\n }\r\n } else {\r\n return null; //or undefined?\r\n }\r\n }\r\n\r\n }\r\n}"]}