{"version":3,"sources":["webpack:///./node_modules/adaptivecards/src/host-config.ts","webpack:///./node_modules/adaptivecards/src/host-capabilities.ts","webpack:///./node_modules/adaptivecards/src/controls/constants.ts","webpack:///./node_modules/adaptivecards/src/adaptivecards.ts","webpack:///./node_modules/adaptivecards/src/card-object.ts","webpack:///./node_modules/adaptivecards/src/activity-request.ts","webpack:///./node_modules/adaptivecards-templating/src/adaptivecards-templating.ts","webpack:///./node_modules/adaptivecards/src/controls/index.ts","webpack:///./node_modules/adaptivecards/src/controls/menu-item.ts","webpack:///./node_modules/adaptivecards/src/controls/popup-menu.ts","webpack:///./node_modules/adaptivecards/src/controls/collection.ts","webpack:///./node_modules/adaptivecards/src/controls/popup-control.ts","webpack:///./node_modules/adaptivecards/src/carousel.ts","webpack:///./node_modules/adaptivecards/src/channel-adapter.ts","webpack:///./node_modules/adaptivecards/src/adaptive-applet.ts","webpack:///./node_modules/adaptivecards-templating/src/template-engine.ts","webpack:///./node_modules/adaptivecards-templating/src/json-schema-card.ts","webpack:///./node_modules/adaptivecards/src/enums.ts"],"names":["Enums","__webpack_require__","Utils","Shared","host_capabilities_1","parseHostConfigEnum","targetEnum","value","defaultValue","parsedValue","parseEnum","undefined","ColorDefinition","defaultColor","subtleColor","this","default","subtle","prototype","parse","obj","exports","TextColorDefinition","_super","_this","apply","arguments","highlightColors","__extends","call","AdaptiveCardConfig","allowCustomStyle","ImageSetConfig","imageSize","Size","Medium","maxImageHeight","parseNumber","toJSON","MediaConfig","allowInlinePlayback","defaultPoster","TableConfig","cellSpacing","BaseTextDefinition","size","TextSize","Default","color","TextColor","isSubtle","weight","TextWeight","getDefaultWeight","TextStyleDefinition","fontType","FontType","TextStyleSet","heading","columnHeader","getStyleByName","name","toLowerCase","TextBlockConfig","headingLevel","RequiredInputLabelTextDefinition","suffix","suffixColor","Attention","result","InputLabelConfig","inputSpacing","Spacing","Small","width","requiredInputs","optionalInputs","InputConfig","label","errorMessage","debounceTimeInMilliSeconds","allowDynamicallyFilteredChoiceSet","allowRevealOnHoverStyle","FactTextDefinition","wrap","FactTitleDefinition","maxWidth","Bolder","FactSetConfig","title","spacing","ShowCardActionConfig","actionMode","ShowCardActionMode","Inline","inlineTopMargin","style","ContainerStyle","Emphasis","ActionsConfig","maxActions","buttonSpacing","showCard","preExpandSingleShowCardAction","actionsOrientation","Orientation","Horizontal","actionAlignment","ActionAlignment","Left","iconPlacement","ActionIconPlacement","LeftOfTitle","allowTitleToWrap","iconSize","parseBool","sizeAndUnit","SizeAndUnit","unit","SizeUnit","Pixel","physicalSize","e","ColorSetDefinition","dark","light","accent","good","warning","attention","parseSingleColor","propertyName","ContainerStyleDefinition","foregroundColors","backgroundColor","highlightBackgroundColor","highlightForegroundColor","borderColor","Object","defineProperty","BuiltInContainerStyleDefinition","ContainerStyleSet","_allStyles","Accent","Good","Warning","customStyleArray","Array","isArray","_i","customStyleArray_1","length","customStyle","styleName","hasOwnProperty","keys","forEach","key","isBuiltIn","push","emphasis","customStyles","FontTypeDefinition","fontFamily","fontSizes","small","medium","large","extraLarge","fontWeights","lighter","bolder","monospace","FontTypeSet","getStyleDefinition","Monospace","CarouselConfig","maxCarouselPages","minAutoplayDelay","HostConfig","hostCapabilities","HostCapabilities","choiceSetInputValueSeparator","supportsInteractivity","padding","separator","lineThickness","lineColor","imageSizes","containerStyles","inputs","actions","adaptiveCard","imageSet","media","factSet","table","textStyles","textBlock","carousel","alwaysAllowBleed","String","JSON","_legacyFontType","fontTypes","lineHeights","getFontTypeDefinition","getEffectiveSpacing","Large","ExtraLarge","Padding","paddingDefinitionToSpacingDefinition","paddingDefinition","SpacingDefinition","top","right","bottom","left","makeCssClassNames","classNames","_a","classNames_1","className","cssClassNamePrefix","makeCssClassName","join","defaultHostConfig","minAutoplayDuration","serialization_1","_capabilities","getSchemaKey","internalParse","source","context","name_1","jsonVersion","addCapability","version","Version","isValid","internalToJSON","target","removeCapability","clear","hasCapability","compareTo","areAllMet","capabilityName","SerializableObject","Constants","tab","enter","escape","space","up","down","delete","__exportStar","strings_1","shared_1","ValidationResults","allIds","validationEvents","addFailure","cardObject","event","message","phase","ValidationPhase","Validation","CardObject","_shouldFallback","getJsonTypeName","getValue","requiresProperty","contains","node","_renderedElement","preProcessPropertyValue","prop","propertyValue","GlobalSettings","allowPreProcessingPropertyValues","currentObject","onPreProcessPropertyValue","parent","setParent","_parent","setShouldFallback","shouldFallback","requires","hostConfig","getRootObject","internalValidateProperties","id","ValidationEvent","DuplicateId","Strings","errors","duplicateId","validateProperties","findDOMNodeOwner","releaseDOMResources","typeNameProperty","StringProperty","Versions","v1_0","sender","idProperty","SerializableObjectProperty","v1_2","__decorate","property","ActivityRequestTrigger","ActivityRequestError","code","ActivityResponse","request","SuccessResponse","rawContent","ErrorResponse","error","LoginRequestResponse","auth","_auth","buttons","button","type","URL","signinButton","tokenExchangeResource","host_config_1","constants_1","MenuItem","_isEnabled","_value","click","isEnabled","onClick","updateCssClasses","_element","effectiveHostConfig","_hostConfig","classList","add","toString","render","document","createElement","innerText","setAttribute","onmouseup","_e","onkeydown","stopPropagation","preventDefault","newValue","collection_1","PopupMenu","_items","Collection","_renderedItems","_selectedIndex","renderContent","element","i","renderedItem","get","tabIndex","appendChild","selectedIndex","focus","keyDown","selectedItemIndex","closePopup","removeAriaExpanded","cancelBubble","index","getAttribute","removeAttribute","PopupControl","item","onItemAdded","remove","indexOf","splice","onItemRemoved","_isOpen","_rootElementBounds","_popupElement","firstElementChild","popup","rootElement","_overlayElement","documentElement","scrollWidth","height","scrollHeight","onfocus","body","rootElementBounds","getBoundingClientRect","window","addEventListener","rootElementLabel","top_1","popupElementBounds","availableSpaceBelow","innerHeight","availableSpaceAbove","availableSpaceRight","innerWidth","availableSpaceLeft","getScrollX","actualPopupHeight","Math","min","maxHeight","getScrollY","actualPopupWidth","_b","_c","_d","_f","wasCancelled","removeChild","onClose","card_elements_1","registry_1","enums_1","swiper_1","CarouselPage","populateSchema","schema","Container","styleProperty","bleedProperty","isVisibleProperty","internalRender","carouselSlide","rtl","isRtl","renderedElement","getForbiddenActionTypes","ShowCardAction","ToggleVisibilityAction","getForbiddenChildElements","forbiddenChildElements","__spreadArray","JsonTypeName","shouldSerialize","_context","Carousel","carouselLoop","carouselOrientation","_pages","_currentIndex","_previousEventType","CarouselInteractionEvent","Pagination","timer","timerProperty","console","warn","tooLittleTimeDelay","setValue","initialPageProperty","isValidParsedPageIndex","invalidInitialPageIndex","isValidPageIndex","isValidRenderedPageIndex","_renderedPages","collectionSize","eventType","adjustRenderedElementSize","_containerForAdorners","carouselHeight","_carouselPageContainer","getItemCount","getItemAt","addPage","page","removeItem","itemIndex","updateLayout","getFirstVisibleRenderedItem","getLastVisibleRenderedItem","_carousel","slides","activeIndex","realIndex","jsonPages","jsonPages_1","createCarouselPageInstance","validateParsing","initialPageIndex","logParseEvent","InvalidPropertyValue","serializeArray","validateOrientationProperties","cardLevelContainer","carouselContainer","containerForAdorners","carouselWrapper","display","getEffectiveVerticalContentAlignment","VerticalAlignment","Top","alignItems","Bottom","useAdvancedCardBottomTruncation","minHeight","navigationContainer","prevElementDiv","nextElementDiv","updateCssForHorizontalCarousel","updateCssForVerticalCarousel","pagination","addCancelSelectActionEventHandler","isDesignMode","zIndex","requestedNumberOfPages","tooManyCarouselPages","isElementAllowed","children","applyRTL","initializeCarouselControl","nextElement","prevElement","paginationElement","nextElementAdjustedForRtl","prevElementAdjustedForRtl","prevElementAdjustedForOrientation","nextElementAdjustedForOrientation","swiperOptions","loop","modules","Navigation","Scrollbar","A11y","History","Keyboard","el","clickable","navigation","prevEl","nextEl","a11y","enabled","keyboard","onlyInViewport","direction","resizeObserver","initialSlide","Autoplay","autoplay","delay","pauseOnMouseEnter","Swiper","_event","stop","start","on","swiper","raiseCarouselEvent","NavigationNext","NavigationPrevious","currentIndex","paginationEl","bullets","bullet","slideTo","destroyResizeObserver","ariaLabel","defaults","carouselNavigationPreviousTooltip","carouselNavigationNextTooltip","createResizeObserver","parseCardObject","typeName","_errorType","ElementTypeNotAllowed","elementTypeNotAllowed","createCarouselEvent","currentPageId","currentPageIndex","CarouselEvent","card","getRootElement","onCarouselEventHandler","onCarouselEvent","AdaptiveCard","previousEventType","checkIfCarouselInValidStateForResizeEvent","_observer","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","emit","observe","unobserve","destroyed","NumProperty","v1_6","loopProperty","BoolProperty","orientationProperty","EnumProperty","carouselHeightProperty","PixelSizeProperty","carouselId","activeCarouselPageId","activeCarouselPageIndex","GlobalRegistry","defaultElements","register","ChannelAdapter","activity_request_1","logEvent","level","optionalParams","applets","logEnabled","onLogEvent","LogLevel","Error","log","ActivityRequest","action","trigger","consecutiveActions","attemptNumber","retryAsync","onSend","AdaptiveApplet","_allowAutomaticCardUpdate","position","flexDirection","_cardHostElement","_refreshButtonHostElement","displayCard","clearElementChildren","showManualRefreshButton","refreshAction","onShowManualRefreshButton","renderedRefreshButton","onRenderManualRefreshButton","runtime","refreshThisCard","refresh","mode","RefreshMode","Automatic","autoRefreshPausedMessage","automaticRefreshPaused","clckToRestartAutomaticRefresh","cardPayload","horizontalAlignment","inlines","text","selectAction","SerializationContext","onExecuteAction","internalExecuteAction","removeProperty","createActivityRequest","request_1","internalSendActivityRequestAsync","onPrepareActivityRequest","createMagicCodeInputCard","payload","placeholder","_submitMagicCodeActionId","_cancelMagicCodeAuthActionId","cancelAutomaticRefresh","createSerializationContext","onCreateSerializationContext","internalSetCard","_cardPayload","serializationContext","onCardChanging","_card","authentication","onPrefetchSSOToken","Manual","onInputValueChanged","input","ChoiceSetInput","isDynamicTypeahead","filter","getFilterForDynamicSearch","dataQueryAction","DataQuery","dataset","choicesData","count","skip","_choiceSet","onCardChanged","maximumConsecutiveAutomaticRefreshes","timeBetweenAutomaticRefreshes","Info","action_1","setTimeout","Disabled","allowManualRefreshesAfterAutomaticRefreshes","UniversalAction","channelAdapter","onAction","createProgressOverlay","_progressOverlay","onCreateProgressOverlay","spinner","removeProgressOverlay","onRemoveProgressOverlay","activityRequestSucceeded","response","parsedContent","onActivityRequestSucceeded","activityRequestFailed","onActivityRequestFailed","defaultTimeBetweenRetryAttempts","showAuthCodeInputDialog","onShowAuthCodeInputDialog","authCodeInputCard","submitMagicCodeAction","SubmitAction","authCode","data","alert","magicCodeInputCard","somethingWentWrong","ExecuteAction","internalSendExecuteRequestAsync","sent","internalSendDataQueryRequestAsync","overlay","done","this_1","sendRequestAsync","error_1","retryIn_1","maximumRetryAttempts","concat","Promise","resolve","_reject","attemptOAuth","onSSOTokenNeeded","onShowSigninPrompt","screenX","outerWidth","authPromptWidth","screenY","outerHeight","authPromptHeight","open","authenticationFailed","stringify","showLoadingIndicator","showErrorIndicator","error_2","rawResponse","parsedResponse","renderChoices","removeLoadingIndicator","refreshCard","setCard","AEL","pkg","EvaluationContext","_stateStack","$_acTemplateVersion","generateVersionJson","$root","$host","isReservedField","_reservedFields","saveState","$data","$index","restoreLastState","savedContext","pop","_$data","versionSplit","split","patchSplit","major","parseInt","minor","patch","TemplateObjectMemory","_memory","SimpleObjectMemory","path","actualPath","getUndefinedFieldValueSubstitutionString","Template","_preparedPayload","prepare","parseInterpolatedString","node_1","keys_1","internalTryEvaluateExpression","expression","allowSubstitutions","memory","options","Options","nullSubstitution","substitutionValue","ExpressionType","Concat","childExpression","evaluationResult","tryEvaluate","ex","interpolatedString","parsedExpression","Expression","standardFunction","ExpressionFunctions","standardFunctions","ExpressionEvaluator","state","ReturnType","Constant","firstChild","tryEvaluateExpression","expandSingleObject","keys_2","internalExpand","itemArray","node_2","expandedItem","when","dataContext","dataContextIsArray","dataContexts","dropObject","whenValue","templateExpansionWarnings","expandedObject","expand","getLastTemplateExpansionWarnings","JSONSchemaCardElement","depth","items","JSONSchemaFieldTitle","map","idx","JSONSchemaCardTuple","JSONSchemaCardList","JSONSchemaCardObject","description","JSONSchemaCardBoolean","exclusiveMinimum","minimum","max","exclusiveMaximum","maximum","JSONSchemaCardNumber","enum","choices","JSONSchemaCardChoiceSet","maxLength","regex","pattern","JSONSchemaCardText","JSONSchemaCardTime","textSizeAtDepth","required","properties","encodeURIComponent","replace","encodeProperty","JSONSchemaCard","ActionStyle","Positive","Destructive","ActionMode","Primary","Secondary","ImageSize","ImageSetPresentationStyle","InputStyle","HorizontalAlignment","ImageStyle","FillMode","InputTextStyle","InputLabelPosition","ContainerFitStatus","TypeErrorType","ActionRole"],"mappings":";smCAEA,IAAAA,EAAAC,EAAA,IACAC,EAAAD,EAAA,IACAE,EAAAF,EAAA,IACAG,EAAAH,EAAA,KAEA,SAASI,EACLC,EACAC,EACAC,GAEA,GAAqB,iBAAVD,EAAoB,CAC3B,IAAME,EAAcP,EAAMQ,UAAUJ,EAAYC,EAAOC,GAEvD,YAAuBG,IAAhBF,EAA4BA,EAAcD,EAC9C,MAAqB,iBAAVD,EACPA,EAEAC,EAIf,IAAAI,EAAA,WAII,SAAAA,EAAYC,EAAuBC,GAHnCC,KAAAC,QAAkB,UAClBD,KAAAE,OAAiB,UAGTJ,IACAE,KAAKC,QAAUH,GAGfC,IACAC,KAAKE,OAASH,GAU1B,OANIF,EAAAM,UAAAC,MAAA,SAAMC,GACEA,IACAL,KAAKC,QAAUI,EAAa,SAAKL,KAAKC,QACtCD,KAAKE,OAASG,EAAY,QAAKL,KAAKE,SAGhDL,EApBA,GAAaS,EAAAT,kBAsBb,IAAAU,EAAA,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAA,OAAAD,KAAAE,MAAAV,KAAAW,YAAAX,YACaS,EAAAG,gBAAkB,IAAIf,EAAgB,YAAa,eAShE,OAVyCgB,EAAAN,EAAAC,GAGrCD,EAAAJ,UAAAC,MAAA,SAAMC,GACFG,EAAAL,UAAMC,MAAKU,KAAAd,KAACK,GAERA,GACAL,KAAKY,gBAAgBR,MAAMC,EAAqB,kBAG5DE,EAVA,CAAyCV,GAA5BS,EAAAC,sBAYb,IAAAQ,EAAA,WAQA,OALI,SAAYV,GAFZL,KAAAgB,kBAA4B,EAGpBX,IACAL,KAAKgB,iBAAmBX,EAAsB,kBAAKL,KAAKgB,mBALpE,GAAaV,EAAAS,qBAUb,IAAAE,EAAA,WAII,SAAAA,EAAYZ,GAHZL,KAAAkB,UAAwBjC,EAAMkC,KAAKC,OACnCpB,KAAAqB,eAAyB,IAGjBhB,IACAL,KAAKkB,UAAgC,MAApBb,EAAe,UAAYA,EAAe,UAAIL,KAAKkB,UACpElB,KAAKqB,eAAiBlC,EAAMmC,YAAYjB,EAAoB,eAAG,MAU3E,OANIY,EAAAd,UAAAoB,OAAA,WACI,MAAO,CACHL,UAAWjC,EAAMkC,KAAKnB,KAAKkB,WAC3BG,eAAgBrB,KAAKqB,iBAGjCJ,EAjBA,GAAaX,EAAAW,iBAmBb,IAAAO,EAAA,WAII,SAAAA,EAAYnB,GAFZL,KAAAyB,qBAA+B,EAGvBpB,IACAL,KAAK0B,cAAgBrB,EAAmB,cACxCL,KAAKyB,oBAAsBpB,EAAyB,qBAAKL,KAAKyB,qBAU1E,OANID,EAAArB,UAAAoB,OAAA,WACI,MAAO,CACHG,cAAe1B,KAAK0B,cACpBD,oBAAqBzB,KAAKyB,sBAGtCD,EAjBA,GAAalB,EAAAkB,cAmBb,IAAAG,EAAA,WAGI,SAAAA,EAAYtB,GAFZL,KAAA4B,YAAsB,EAGdvB,IACAL,KAAK4B,YACDvB,EAAIuB,aAA0C,iBAApBvB,EAAIuB,YACxBvB,EAAIuB,YACJ5B,KAAK4B,aAS3B,OALID,EAAAxB,UAAAoB,OAAA,WACI,MAAO,CACHK,YAAa5B,KAAK4B,cAG9BD,EAjBA,GAAarB,EAAAqB,cAmBb,IAAAE,EAAA,WAMI,SAAAA,EAAYxB,GALZL,KAAA8B,KAAuB7C,EAAM8C,SAASC,QACtChC,KAAAiC,MAAyBhD,EAAMiD,UAAUF,QACzChC,KAAAmC,UAAoB,EACpBnC,KAAAoC,OAA2BnD,EAAMoD,WAAWL,QAGxChC,KAAKI,MAAMC,GA+BnB,OA5BIwB,EAAA1B,UAAAC,MAAA,SAAMC,GACEA,IACAL,KAAK8B,KAAOxC,EAAoBL,EAAM8C,SAAU1B,EAAU,KAAGL,KAAK8B,MAClE9B,KAAKiC,MAAQ3C,EAAoBL,EAAMiD,UAAW7B,EAAW,MAAGL,KAAKiC,OACrEjC,KAAKmC,cACgBvC,IAAjBS,EAAI8B,UAAkD,kBAAjB9B,EAAI8B,SACnC9B,EAAI8B,SACJnC,KAAKmC,SACfnC,KAAKoC,OAAS9C,EACVL,EAAMoD,WACNhC,EAAY,OACZL,KAAKsC,sBAKjBT,EAAA1B,UAAAmC,iBAAA,WACI,OAAOrD,EAAMoD,WAAWL,SAG5BH,EAAA1B,UAAAoB,OAAA,WACI,MAAO,CACHO,KAAM7C,EAAM8C,SAAS/B,KAAK8B,MAC1BG,MAAOhD,EAAMiD,UAAUlC,KAAKiC,OAC5BE,SAAUnC,KAAKmC,SACfC,OAAQnD,EAAMoD,WAAWrC,KAAKoC,UAG1CP,EAtCA,GAAavB,EAAAuB,qBAwCb,IAAAU,EAAA,SAAA/B,GAAA,SAAA+B,IAAA,IAAA9B,EAAA,OAAAD,KAAAE,MAAAV,KAAAW,YAAAX,YACIS,EAAA+B,SAA2BvD,EAAMwD,SAAST,UAS9C,OAVyCnB,EAAA0B,EAAA/B,GAGrC+B,EAAApC,UAAAC,MAAA,SAAMC,GACFG,EAAAL,UAAMC,MAAKU,KAAAd,KAACK,GAERA,IACAL,KAAKwC,SAAWlD,EAAoBL,EAAMwD,SAAUpC,EAAImC,SAAUxC,KAAKwC,YAGnFD,EAVA,CAAyCV,GAA5BvB,EAAAiC,sBAYb,IAAAG,EAAA,WAUI,SAAAA,EAAYrC,GATHL,KAAAC,QAA+B,IAAIsC,EACnCvC,KAAA2C,QAA+B,IAAIJ,EAAoB,CAC5DT,KAAM,QACNM,OAAQ,WAEHpC,KAAA4C,aAAoC,IAAIL,EAAoB,CACjEH,OAAQ,WAIJ/B,IACAL,KAAK2C,QAAQvC,MAAMC,EAAIsC,SACvB3C,KAAK4C,aAAaxC,MAAMC,EAAIuC,eAcxC,OAVIF,EAAAvC,UAAA0C,eAAA,SAAeC,GACX,OAAQA,EAAKC,eACT,IAAK,UACD,OAAO/C,KAAK2C,QAChB,IAAK,eACD,OAAO3C,KAAK4C,aAChB,QACI,OAAO5C,KAAKC,UAG5ByC,EA3BA,GAAapC,EAAAoC,eA6Bb,IAAAM,EAAA,WAQA,OALI,SAAY3C,GACJA,IACAL,KAAKiD,aAAe9D,EAAMmC,YAAYjB,EAAI4C,gBALtD,GAAa3C,EAAA0C,kBAUb,IAAAE,EAAA,SAAA1C,GAAA,SAAA0C,IAAA,IAAAzC,EAAA,OAAAD,KAAAE,MAAAV,KAAAW,YAAAX,YACIS,EAAA0C,OAAkB,KAClB1C,EAAA2C,YAA+BnE,EAAMiD,UAAUmB,YAsBnD,OAxBsDxC,EAAAqC,EAAA1C,GAIlD0C,EAAA/C,UAAAC,MAAA,SAAMC,GACFG,EAAAL,UAAMC,MAAKU,KAAAd,KAACK,GAERA,IACAL,KAAKmD,OAAS9C,EAAY,QAAKL,KAAKmD,OACpCnD,KAAKoD,YAAc9D,EACfL,EAAMiD,UACN7B,EAAiB,YACjBL,KAAKoD,eAKjBF,EAAA/C,UAAAoB,OAAA,WACI,IAAM+B,EAAS9C,EAAAL,UAAMoB,OAAMT,KAAAd,MAI3B,OAHAsD,EAAe,OAAItD,KAAKmD,OACxBG,EAAoB,YAAIrE,EAAMiD,UAAUlC,KAAKoD,aAEtCE,GAEfJ,EAxBA,CAAsDrB,GAAzCvB,EAAA4C,mCA0Bb,IAAAK,EAAA,WAoBA,OAbI,SAAYlD,GANZL,KAAAwD,aAA8BvE,EAAMwE,QAAQC,MAC5C1D,KAAA2D,MAAgB,GACP3D,KAAA4D,eACL,IAAIV,EACClD,KAAA6D,eAAqC,IAAIhC,EAG1CxB,IACAL,KAAKwD,aAAelE,EAChBL,EAAMwE,QACNpD,EAAkB,aAClBL,KAAKwD,cAETxD,KAAK4D,eAAiB,IAAIV,EAAiC7C,EAAoB,gBAC/EL,KAAK6D,eAAiB,IAAIhC,EAAmBxB,EAAoB,gBACjEL,KAAK2D,MACe,MAAhBtD,EAAW,MAAYA,EAAW,MAAIL,KAAK2D,QAjB3D,GAAarD,EAAAiD,mBAsBb,IAAAO,EAAA,WAqBA,OAZI,SAAYzD,GARHL,KAAA+D,MAA0B,IAAIR,EAC9BvD,KAAAgE,aAAmC,IAAInC,EAAmB,CAC/DI,MAAOhD,EAAMiD,UAAUmB,YAElBrD,KAAAiE,2BAAqC,EACrCjE,KAAAkE,mCAA6C,EAC7ClE,KAAAmE,yBAAmC,EAGpC9D,IACAL,KAAK+D,MAAQ,IAAIR,EAAiBlD,EAAW,OAC7CL,KAAKgE,aAAe,IAAInC,EAAmBxB,EAAkB,cAC7DL,KAAKmE,wBACD9D,EAA6B,yBAAKL,KAAKmE,wBAC3CnE,KAAKkE,kCACD7D,EAAuC,mCAAKL,KAAKkE,kCACrDlE,KAAKiE,2BACD5D,EAAgC,4BAAKL,KAAKiE,6BAlB1D,GAAa3D,EAAAwD,cAuBb,IAAAM,EAAA,SAAA5D,GAAA,SAAA4D,IAAA,IAAA3D,EAAA,OAAAD,KAAAE,MAAAV,KAAAW,YAAAX,YACIS,EAAA4D,MAAgB,IAgBpB,OAjBwCxD,EAAAuD,EAAA5D,GAGpC4D,EAAAjE,UAAAC,MAAA,SAAMC,GACFG,EAAAL,UAAMC,MAAKU,KAAAd,KAACK,GAERA,IACAL,KAAKqE,KAAsB,MAAfhE,EAAU,KAAYA,EAAU,KAAIL,KAAKqE,OAI7DD,EAAAjE,UAAAoB,OAAA,WACI,IAAM+B,EAAS9C,EAAAL,UAAMoB,OAAMT,KAAAd,MAG3B,OAFAsD,EAAa,KAAItD,KAAKqE,KAEff,GAEfc,EAjBA,CAAwCvC,GAA3BvB,EAAA8D,qBAmBb,IAAAE,EAAA,SAAA9D,GAII,SAAA8D,EAAYjE,GAAZ,IAAAI,EACID,EAAAM,KAAAd,KAAMK,IAAIL,YAJdS,EAAA8D,SAAoB,IACpB9D,EAAA2B,OAA2BnD,EAAMoD,WAAWmC,OAKpCnE,IACAI,EAAK8D,SAA8B,MAAnBlE,EAAc,SAAYA,EAAc,SAAII,EAAK8D,SACjE9D,EAAK2B,OAAS9C,EACVL,EAAMoD,WACNhC,EAAY,OACZpB,EAAMoD,WAAWmC,WAQjC,OApByC3D,EAAAyD,EAAA9D,GAiBrC8D,EAAAnE,UAAAmC,iBAAA,WACI,OAAOrD,EAAMoD,WAAWmC,QAEhCF,EApBA,CAAyCF,GAA5B9D,EAAAgE,sBAsBb,IAAAG,EAAA,WAaA,OARI,SAAYpE,GAJHL,KAAA0E,MAA6B,IAAIJ,EACjCtE,KAAAR,MAA4B,IAAI4E,EACzCpE,KAAA2E,QAAkB,GAGVtE,IACAL,KAAK0E,MAAQ,IAAIJ,EAAoBjE,EAAW,OAChDL,KAAKR,MAAQ,IAAI4E,EAAmB/D,EAAW,OAC/CL,KAAK2E,QACDtE,EAAIsE,SAA0B,MAAftE,EAAIsE,QAAkBtE,EAAIsE,SAAWtE,EAAIsE,QAAU3E,KAAK2E,UAVvF,GAAarE,EAAAmE,gBAeb,IAAAG,EAAA,WAKI,SAAAA,EAAYvE,GAJZL,KAAA6E,WAAuC5F,EAAM6F,mBAAmBC,OAChE/E,KAAAgF,gBAA0B,GAC1BhF,KAAAiF,MAAiBhG,EAAMiG,eAAeC,SAG9B9E,IACAL,KAAK6E,WAAavF,EACdL,EAAM6F,mBACNzE,EAAgB,WAChBpB,EAAM6F,mBAAmBC,QAE7B/E,KAAKgF,gBACyB,MAA1B3E,EAAqB,gBAAYA,EAAqB,gBAAIL,KAAKgF,gBACnEhF,KAAKiF,MACD5E,EAAW,OAA6B,iBAAjBA,EAAW,MAC5BA,EAAW,MACXpB,EAAMiG,eAAeC,UAW3C,OAPIP,EAAAzE,UAAAoB,OAAA,WACI,MAAO,CACHsD,WAAY5F,EAAM6F,mBAAmB9E,KAAK6E,YAC1CG,gBAAiBhF,KAAKgF,gBACtBC,MAAOjF,KAAKiF,QAGxBL,EA5BA,GAAatE,EAAAsE,uBA8Bb,IAAAQ,EAAA,WAYI,SAAAA,EAAY/E,GACR,GAZJL,KAAAqF,WAAqB,EACrBrF,KAAA2E,QAAyB1F,EAAMwE,QAAQzB,QACvChC,KAAAsF,cAAwB,GACftF,KAAAuF,SAAiC,IAAIX,EAC9C5E,KAAAwF,+BAA0C,EAC1CxF,KAAAyF,mBAAwCxG,EAAMyG,YAAYC,WAC1D3F,KAAA4F,gBAAyC3G,EAAM4G,gBAAgBC,KAC/D9F,KAAA+F,cAA2C9G,EAAM+G,oBAAoBC,YACrEjG,KAAAkG,kBAA4B,EAC5BlG,KAAAmG,SAAmB,GAGX9F,EAAK,CACLL,KAAKqF,WAAkC,MAArBhF,EAAgB,WAAYA,EAAgB,WAAIL,KAAKqF,WACvErF,KAAK2E,QAAUrF,EACXL,EAAMwE,QACNpD,EAAIsE,SAAWtE,EAAIsE,QACnB1F,EAAMwE,QAAQzB,SAElBhC,KAAKsF,cACuB,MAAxBjF,EAAmB,cAAYA,EAAmB,cAAIL,KAAKsF,cAC/DtF,KAAKuF,SAAW,IAAIX,EAAqBvE,EAAc,UACvDL,KAAKwF,8BAAgCrG,EAAMiH,UACvC/F,EAAmC,+BACnC,GAEJL,KAAKyF,mBAAqBnG,EACtBL,EAAMyG,YACNrF,EAAwB,mBACxBpB,EAAMyG,YAAYC,YAEtB3F,KAAK4F,gBAAkBtG,EACnBL,EAAM4G,gBACNxF,EAAqB,gBACrBpB,EAAM4G,gBAAgBC,MAE1B9F,KAAK+F,cAAgBzG,EACjBL,EAAM+G,oBACN3F,EAAmB,cACnBpB,EAAM+G,oBAAoBC,aAE9BjG,KAAKkG,iBAC0B,MAA3B7F,EAAsB,iBAAYA,EAAsB,iBAAIL,KAAKkG,iBAErE,IACI,IAAMG,EAAcjH,EAAOkH,YAAYlG,MAAMC,EAAc,UAEvDgG,EAAYE,OAAStH,EAAMuH,SAASC,QACpCzG,KAAKmG,SAAWE,EAAYK,cAElC,MAAOC,MAiBrB,OAXIvB,EAAAjF,UAAAoB,OAAA,WACI,MAAO,CACH8D,WAAYrF,KAAKqF,WACjBV,QAAS1F,EAAMwE,QAAQzD,KAAK2E,SAC5BW,cAAetF,KAAKsF,cACpBC,SAAUvF,KAAKuF,SACfC,8BAA+BxF,KAAKwF,8BACpCC,mBAAoBxG,EAAMyG,YAAY1F,KAAKyF,oBAC3CG,gBAAiB3G,EAAM4G,gBAAgB7F,KAAK4F,mBAGxDR,EApEA,GAAa9E,EAAA8E,gBAsEb,IAAAwB,EAAA,WAeI,SAAAA,EAAYvG,GARZL,KAAAC,QAA+B,IAAIM,EACnCP,KAAA6G,KAA4B,IAAItG,EAChCP,KAAA8G,MAA6B,IAAIvG,EACjCP,KAAA+G,OAA8B,IAAIxG,EAClCP,KAAAgH,KAA4B,IAAIzG,EAChCP,KAAAiH,QAA+B,IAAI1G,EACnCP,KAAAkH,UAAiC,IAAI3G,EAGjCP,KAAKI,MAAMC,GAcnB,OA7BYuG,EAAAzG,UAAAgH,iBAAR,SAAyB9G,EAAU+G,GAC3B/G,GACOL,KAAMoH,GAAsChH,MAAMC,EAAI+G,KAgBrER,EAAAzG,UAAAC,MAAA,SAAMC,GACEA,IACAL,KAAKmH,iBAAiB9G,EAAK,WAC3BL,KAAKmH,iBAAiB9G,EAAK,QAC3BL,KAAKmH,iBAAiB9G,EAAK,SAC3BL,KAAKmH,iBAAiB9G,EAAK,UAC3BL,KAAKmH,iBAAiB9G,EAAK,QAC3BL,KAAKmH,iBAAiB9G,EAAK,WAC3BL,KAAKmH,iBAAiB9G,EAAK,eAGvCuG,EA9BA,GAAatG,EAAAsG,qBAgCb,IAAAS,EAAA,WA8BI,SAAAA,EAAYhH,GA3BHL,KAAAsH,iBAAuC,IAAIV,EAAmB,CACnE3G,QAAW,CAAEA,QAAS,UAAWC,OAAQ,aACzC2G,KAAQ,CAAE5G,QAAS,UAAWC,OAAQ,aACtC4G,MAAS,CAAE7G,QAAS,UAAWC,OAAQ,aACvC6G,OAAU,CAAE9G,QAAS,UAAWC,OAAQ,aACxC8G,KAAQ,CAAE/G,QAAS,UAAWC,OAAQ,aACtC+G,QAAW,CAAEhH,QAAS,UAAWC,OAAQ,aACzCgH,UAAa,CAAEjH,QAAS,UAAWC,OAAQ,eAqB3CF,KAAKI,MAAMC,GAMnB,OApBIgH,EAAAlH,UAAAC,MAAA,SAAMC,GACEA,IACAL,KAAKuH,gBAAkBlH,EAAqB,gBAE5CL,KAAKsH,iBAAiBlH,MAAMC,EAAsB,kBAElDL,KAAKwH,yBAA2BnH,EAA8B,yBAC9DL,KAAKyH,yBAA2BpH,EAA8B,yBAE9DL,KAAK0H,YAAcrH,EAAiB,cAQ5CsH,OAAAC,eAAIP,EAAAlH,UAAA,YAAS,KAAb,WACI,OAAO,mCAEfkH,EArCA,GAAa/G,EAAA+G,2BAuCb,IAAAQ,EAAA,SAAArH,GAAA,SAAAqH,mDAIA,OAJ8ChH,EAAAgH,EAAArH,GAC1CmH,OAAAC,eAAIC,EAAA1H,UAAA,YAAS,KAAb,WACI,OAAO,mCAEf0H,EAJA,CAA8CR,GAc9CS,EAAA,WAGI,SAAAA,EAAYzH,GAQR,GAVIL,KAAA+H,WAA0D,GAG9D/H,KAAK+H,WAAW9I,EAAMiG,eAAelD,SAAW,IAAI6F,EACpD7H,KAAK+H,WAAW9I,EAAMiG,eAAeC,UAAY,IAAI0C,EACrD7H,KAAK+H,WAAW9I,EAAMiG,eAAe8C,QAAU,IAAIH,EACnD7H,KAAK+H,WAAW9I,EAAMiG,eAAe+C,MAAQ,IAAIJ,EACjD7H,KAAK+H,WAAW9I,EAAMiG,eAAe7B,WAAa,IAAIwE,EACtD7H,KAAK+H,WAAW9I,EAAMiG,eAAegD,SAAW,IAAIL,EAEhDxH,EAAK,CACLL,KAAK+H,WAAW9I,EAAMiG,eAAelD,SAAS5B,MAAMC,EAAIpB,EAAMiG,eAAelD,UAC7EhC,KAAK+H,WAAW9I,EAAMiG,eAAeC,UAAU/E,MAC3CC,EAAIpB,EAAMiG,eAAeC,WAE7BnF,KAAK+H,WAAW9I,EAAMiG,eAAe8C,QAAQ5H,MAAMC,EAAIpB,EAAMiG,eAAe8C,SAC5EhI,KAAK+H,WAAW9I,EAAMiG,eAAe+C,MAAM7H,MAAMC,EAAIpB,EAAMiG,eAAe+C,OAC1EjI,KAAK+H,WAAW9I,EAAMiG,eAAe7B,WAAWjD,MAC5CC,EAAIpB,EAAMiG,eAAe7B,YAE7BrD,KAAK+H,WAAW9I,EAAMiG,eAAegD,SAAS9H,MAAMC,EAAIpB,EAAMiG,eAAegD,UAE7E,IAAMC,EAAmB9H,EAAkB,aAE3C,GAAI8H,GAAoBC,MAAMC,QAAQF,GAClC,IAA0B,IAAAG,EAAA,EAAAC,EAAAJ,EAAAG,EAAAC,EAAAC,OAAAF,IAAkB,CAAvC,IAAMG,EAAWF,EAAAD,GAClB,GAAIG,EAAa,CACb,IAAMC,EAAYD,EAAkB,KAEhCC,GAAkC,iBAAdA,IAChB1I,KAAK+H,WAAWY,eAAeD,GAC/B1I,KAAK+H,WAAWW,GAAWtI,MAAMqI,EAAmB,OAEpDzI,KAAK+H,WAAWW,GAAa,IAAIrB,EAC7BoB,EAAmB,WAoDvD,OA1CIX,EAAA3H,UAAAoB,OAAA,eAAAd,EAAAT,KACUmI,EAA0B,GAEhCR,OAAOiB,KAAK5I,KAAK+H,YAAYc,QAAQ,SAACC,GAC7BrI,EAAKsH,WAAWe,GAAKC,WACtBZ,EAAiBa,KAAK,CAClBlG,KAAMgG,EACN7D,MAAOxE,EAAKsH,WAAWe,OAKnC,IAAMxF,EAAc,CAChBrD,QAASD,KAAKC,QACdgJ,SAAUjJ,KAAKiJ,UAOnB,OAJId,EAAiBK,OAAS,IAC1BlF,EAAO4F,aAAef,GAGnB7E,GAGXwE,EAAA3H,UAAA0C,eAAA,SACIC,EACArD,GAEA,OAAIqD,GAAQ9C,KAAK+H,WAAWY,eAAe7F,GAChC9C,KAAK+H,WAAWjF,GAEhBrD,GAA8BO,KAAK+H,WAAW9I,EAAMiG,eAAelD,UAIlF2F,OAAAC,eAAIE,EAAA3H,UAAA,UAAO,KAAX,WACI,OAAOH,KAAK+H,WAAW9I,EAAMiG,eAAelD,0CAGhD2F,OAAAC,eAAIE,EAAA3H,UAAA,WAAQ,KAAZ,WACI,OAAOH,KAAK+H,WAAW9I,EAAMiG,eAAeC,2CAEpD2C,EAvFA,GAAaxH,EAAAwH,oBAuGb,IAAAqB,EAAA,WAmBI,SAAAA,EAAYC,GAhBZpJ,KAAAoJ,WAAsB,8DAEtBpJ,KAAAqJ,UAAkC,CAC9BC,MAAO,GACPrJ,QAAS,GACTsJ,OAAQ,GACRC,MAAO,GACPC,WAAY,IAGhBzJ,KAAA0J,YAAsC,CAClCC,QAAS,IACT1J,QAAS,IACT2J,OAAQ,KAIJR,IACApJ,KAAKoJ,WAAaA,GAmB9B,OAfID,EAAAhJ,UAAAC,MAAA,SAAMC,GACFL,KAAKoJ,WAAa/I,EAAgB,YAAKL,KAAKoJ,WAC5CpJ,KAAKqJ,UAAY,CACbC,MAAQjJ,EAAIgJ,WAAahJ,EAAIgJ,UAAiB,OAAMrJ,KAAKqJ,UAAUC,MACnErJ,QAAUI,EAAIgJ,WAAahJ,EAAIgJ,UAAmB,SAAMrJ,KAAKqJ,UAAUpJ,QACvEsJ,OAASlJ,EAAIgJ,WAAahJ,EAAIgJ,UAAkB,QAAMrJ,KAAKqJ,UAAUE,OACrEC,MAAQnJ,EAAIgJ,WAAahJ,EAAIgJ,UAAiB,OAAMrJ,KAAKqJ,UAAUG,MACnEC,WAAapJ,EAAIgJ,WAAahJ,EAAIgJ,UAAsB,YAAMrJ,KAAKqJ,UAAUI,YAEjFzJ,KAAK0J,YAAc,CACfC,QAAUtJ,EAAIqJ,aAAerJ,EAAIqJ,YAAqB,SAAM1J,KAAK0J,YAAYC,QAC7E1J,QAAUI,EAAIqJ,aAAerJ,EAAIqJ,YAAqB,SAAM1J,KAAK0J,YAAYzJ,QAC7E2J,OAASvJ,EAAIqJ,aAAerJ,EAAIqJ,YAAoB,QAAM1J,KAAK0J,YAAYE,SApCnET,EAAAU,UAAY,IAAIV,EAAmB,qCAuCvDA,EAxCA,GAAa7I,EAAA6I,qBA0Cb,IAAAW,EAAA,WAII,SAAAA,EAAYzJ,GACRL,KAAKC,QAAU,IAAIkJ,EACnBnJ,KAAK6J,UAAY,IAAIV,EAAmB,qCAEpC9I,IACAL,KAAKC,QAAQG,MAAMC,EAAa,SAChCL,KAAK6J,UAAUzJ,MAAMC,EAAe,YAahD,OATIyJ,EAAA3J,UAAA4J,mBAAA,SAAmB9E,GACf,OAAQA,GACJ,KAAKhG,EAAMwD,SAASuH,UAChB,OAAOhK,KAAK6J,UAChB,KAAK5K,EAAMwD,SAAST,QACpB,QACI,OAAOhC,KAAKC,UAG5B6J,EAvBA,GAAaxJ,EAAAwJ,cAyBb,IAAAG,EAAA,WAII,SAAAA,EAAY5J,GAHZL,KAAAkK,iBAA2B,GAC3BlK,KAAAmK,iBAA2B,IAGnB9J,IACAL,KAAKkK,iBAC0B,MAA3B7J,EAAsB,iBAAYA,EAAsB,iBAAIL,KAAKkK,iBACrElK,KAAKmK,iBAC0B,MAA3B9J,EAAsB,iBAAYA,EAAsB,iBAAIL,KAAKmK,kBAUjF,OANIF,EAAA9J,UAAAoB,OAAA,WACI,MAAO,CACH2I,iBAAkBlK,KAAKkK,iBACvBC,iBAAkBnK,KAAKmK,mBAGnCF,EAnBA,GAAa3J,EAAA2J,iBAqBb,IAAAG,EAAA,WA6CI,SAAAA,EAAY/J,GA5CHL,KAAAqK,iBAAmB,IAAIhL,EAAAiL,iBAIhCtK,KAAAuK,6BAAuC,IACvCvK,KAAAwK,uBAAiC,EAIxBxK,KAAA2E,QAAU,CACf2E,MAAO,EACPrJ,QAAS,EACTsJ,OAAQ,GACRC,MAAO,GACPC,WAAY,GACZgB,QAAS,IAGJzK,KAAA0K,UAAY,CACjBC,cAAe,EACfC,UAAW,WAGN5K,KAAA6K,WAAa,CAClBvB,MAAO,GACPC,OAAQ,GACRC,MAAO,KAGFxJ,KAAA8K,gBAAqC,IAAIhD,EACzC9H,KAAA+K,OAAsB,IAAIjH,EAC1B9D,KAAAgL,QAAyB,IAAI5F,EAC7BpF,KAAAiL,aAAmC,IAAIlK,EACvCf,KAAAkL,SAA2B,IAAIjK,EAC/BjB,KAAAmL,MAAqB,IAAI3J,EACzBxB,KAAAoL,QAAyB,IAAI3G,EAC7BzE,KAAAqL,MAAqB,IAAI1J,EACzB3B,KAAAsL,WAA2B,IAAI5I,EAC/B1C,KAAAuL,UAA6B,IAAIvI,EACjChD,KAAAwL,SAA2B,IAAIvB,EAGxCjK,KAAAyL,kBAA4B,EAGpBpL,KACmB,iBAARA,GAAoBA,aAAeqL,UAC1CrL,EAAMsL,KAAKvL,MAAMC,IAGrBL,KAAKuK,6BACDlK,GAAsD,iBAAxCA,EAAkC,6BAC1CA,EAAkC,6BAClCL,KAAKuK,6BACfvK,KAAKwK,sBACDnK,GAA+C,kBAAjCA,EAA2B,sBACnCA,EAA2B,sBAC3BL,KAAKwK,sBAEfxK,KAAK4L,gBAAkB,IAAIzC,EAC3BnJ,KAAK4L,gBAAgBxL,MAAMC,GAEvBA,EAAIwL,YACJ7L,KAAK6L,UAAY,IAAI/B,EAAYzJ,EAAIwL,YAGrCxL,EAAIyL,cACJ9L,KAAK8L,YAAc,CACfxC,MAAOjJ,EAAIyL,YAAmB,MAC9B7L,QAASI,EAAIyL,YAAqB,QAClCvC,OAAQlJ,EAAIyL,YAAoB,OAChCtC,MAAOnJ,EAAIyL,YAAmB,MAC9BrC,WAAYpJ,EAAIyL,YAAwB,aAIhD9L,KAAK6K,WAAa,CACdvB,MAAQjJ,EAAIwK,YAAcxK,EAAIwK,WAAkB,OAAM7K,KAAK6K,WAAWvB,MACtEC,OAASlJ,EAAIwK,YAAcxK,EAAIwK,WAAmB,QAAM7K,KAAK6K,WAAWtB,OACxEC,MAAQnJ,EAAIwK,YAAcxK,EAAIwK,WAAkB,OAAM7K,KAAK6K,WAAWrB,OAG1ExJ,KAAK8K,gBAAkB,IAAIhD,EAAkBzH,EAAqB,iBAClEL,KAAK2E,QAAU,CACX2E,MAAQjJ,EAAIsE,SAAWtE,EAAIsE,QAAe,OAAM3E,KAAK2E,QAAQ2E,MAC7DrJ,QAAUI,EAAIsE,SAAWtE,EAAIsE,QAAiB,SAAM3E,KAAK2E,QAAQ1E,QACjEsJ,OAASlJ,EAAIsE,SAAWtE,EAAIsE,QAAgB,QAAM3E,KAAK2E,QAAQ4E,OAC/DC,MAAQnJ,EAAIsE,SAAWtE,EAAIsE,QAAe,OAAM3E,KAAK2E,QAAQ6E,MAC7DC,WAAapJ,EAAIsE,SAAWtE,EAAIsE,QAAoB,YAAM3E,KAAK2E,QAAQ8E,WACvEgB,QAAUpK,EAAIsE,SAAWtE,EAAIsE,QAAiB,SAAM3E,KAAK2E,QAAQ8F,SAGrEzK,KAAK0K,UAAY,CACbC,cACKtK,EAAIqK,WAAarK,EAAIqK,UAAyB,eAC/C1K,KAAK0K,UAAUC,cACnBC,UAAYvK,EAAIqK,WAAarK,EAAIqK,UAAqB,WAAM1K,KAAK0K,UAAUE,WAG/E5K,KAAK+K,OAAS,IAAIjH,EAAYzD,EAAI0K,QAAU/K,KAAK+K,QACjD/K,KAAKgL,QAAU,IAAI5F,EAAc/E,EAAI2K,SAAWhL,KAAKgL,SACrDhL,KAAKiL,aAAe,IAAIlK,EAAmBV,EAAI4K,cAAgBjL,KAAKiL,cACpEjL,KAAKkL,SAAW,IAAIjK,EAAeZ,EAAc,UACjDL,KAAKoL,QAAU,IAAI3G,EAAcpE,EAAa,SAC9CL,KAAKsL,WAAa,IAAI5I,EAAarC,EAAgB,YACnDL,KAAKuL,UAAY,IAAIvI,EAAgB3C,EAAe,WACpDL,KAAKwL,SAAW,IAAIvB,EAAe5J,EAAc,WA2E7D,OAvEI+J,EAAAjK,UAAA4L,sBAAA,SAAsB9G,GAClB,OAAIjF,KAAK6L,UACE7L,KAAK6L,UAAU9B,mBAAmB9E,GAElCA,IAAUhG,EAAMwD,SAASuH,UAC1Bb,EAAmBU,UACnB7J,KAAK4L,iBAInBxB,EAAAjK,UAAA6L,oBAAA,SAAoBrH,GAChB,OAAQA,GACJ,KAAK1F,EAAMwE,QAAQC,MACf,OAAO1D,KAAK2E,QAAQ2E,MACxB,KAAKrK,EAAMwE,QAAQzB,QACf,OAAOhC,KAAK2E,QAAQ1E,QACxB,KAAKhB,EAAMwE,QAAQrC,OACf,OAAOpB,KAAK2E,QAAQ4E,OACxB,KAAKtK,EAAMwE,QAAQwI,MACf,OAAOjM,KAAK2E,QAAQ6E,MACxB,KAAKvK,EAAMwE,QAAQyI,WACf,OAAOlM,KAAK2E,QAAQ8E,WACxB,KAAKxK,EAAMwE,QAAQ0I,QACf,OAAOnM,KAAK2E,QAAQ8F,QACxB,QACI,OAAO,IAInBL,EAAAjK,UAAAiM,qCAAA,SACIC,GAEA,OAAO,IAAIjN,EAAOkN,kBACdtM,KAAKgM,oBAAoBK,EAAkBE,KAC3CvM,KAAKgM,oBAAoBK,EAAkBG,OAC3CxM,KAAKgM,oBAAoBK,EAAkBI,QAC3CzM,KAAKgM,oBAAoBK,EAAkBK,QAInDtC,EAAAjK,UAAAwM,kBAAA,eAAkB,IAAAC,EAAA,GAAAtE,EAAA,EAAAA,EAAA3H,UAAA6H,OAAAF,IAAAsE,EAAAtE,GAAA3H,UAAA2H,GAGd,IAFA,IAAMhF,EAAmB,GAEDuJ,EAAA,EAAAC,EAAAF,EAAAC,EAAAC,EAAAtE,OAAAqE,IAAY,CAA/B,IAAME,EAASD,EAAAD,GAChBvJ,EAAO0F,MAAMhJ,KAAKgN,mBAAqBhN,KAAKgN,mBAAqB,IAAM,IAAMD,GAGjF,OAAOzJ,GAGX8G,EAAAjK,UAAA8M,iBAAA,eAAiB,IAAAL,EAAA,GAAAtE,EAAA,EAAAA,EAAA3H,UAAA6H,OAAAF,IAAAsE,EAAAtE,GAAA3H,UAAA2H,GACb,IAAMhF,EAAStD,KAAK2M,kBAAiBjM,MAAtBV,KAA0B4M,GAAYM,KAAK,KAE1D,OAAO5J,GAAkB,IAG7BqE,OAAAC,eAAIwC,EAAAjK,UAAA,aAAU,KAAd,WACI,OAAOH,KAAK4L,gBAAgBxC,gBAGhC,SAAe5J,GACXQ,KAAK4L,gBAAgBxC,WAAa5J,mCAGtCmI,OAAAC,eAAIwC,EAAAjK,UAAA,YAAS,KAAb,WACI,OAAOH,KAAK4L,gBAAgBvC,2CAGhC1B,OAAAC,eAAIwC,EAAAjK,UAAA,cAAW,KAAf,WACI,OAAOH,KAAK4L,gBAAgBlC,6CAEpCU,EAtLA,GAAa9J,EAAA8J,aAyLA9J,EAAA6M,kBAAgC,IAAI/C,EAAW,CACxDI,uBAAuB,EACvB7F,QAAS,CACL2E,MAAO,GACPrJ,QAAS,GACTsJ,OAAQ,GACRC,MAAO,GACPC,WAAY,GACZgB,QAAS,IAEbC,UAAW,CACPC,cAAe,EACfC,UAAW,WAEfiB,UAAW,CACP5L,QAAS,CACLmJ,WAAY,kDACZC,UAAW,CACPC,MAAO,GACPrJ,QAAS,GACTsJ,OAAQ,GACRC,MAAO,GACPC,WAAY,IAEhBC,YAAa,CACTC,QAAS,IACT1J,QAAS,IACT2J,OAAQ,MAGhBC,UAAW,CACPT,WAAY,oCACZC,UAAW,CACPC,MAAO,GACPrJ,QAAS,GACTsJ,OAAQ,GACRC,MAAO,GACPC,WAAY,IAEhBC,YAAa,CACTC,QAAS,IACT1J,QAAS,IACT2J,OAAQ,OAIpBiB,WAAY,CACRvB,MAAO,GACPC,OAAQ,GACRC,MAAO,KAEXsB,gBAAiB,CACb7K,QAAS,CACLsH,gBAAiB,UACjBD,iBAAkB,CACdrH,QAAS,CACLA,QAAS,UACTC,OAAQ,aAEZ2G,KAAM,CACF5G,QAAS,UACTC,OAAQ,aAEZ4G,MAAO,CACH7G,QAAS,UACTC,OAAQ,aAEZ6G,OAAQ,CACJ9G,QAAS,UACTC,OAAQ,aAEZgH,UAAW,CACPjH,QAAS,UACTC,OAAQ,aAEZ8G,KAAM,CACF/G,QAAS,UACTC,OAAQ,aAEZ+G,QAAS,CACLhH,QAAS,UACTC,OAAQ,eAIpB+I,SAAU,CACN1B,gBAAiB,YACjBD,iBAAkB,CACdrH,QAAS,CACLA,QAAS,UACTC,OAAQ,aAEZ2G,KAAM,CACF5G,QAAS,UACTC,OAAQ,aAEZ4G,MAAO,CACH7G,QAAS,UACTC,OAAQ,aAEZ6G,OAAQ,CACJ9G,QAAS,UACTC,OAAQ,aAEZgH,UAAW,CACPjH,QAAS,UACTC,OAAQ,aAEZ8G,KAAM,CACF/G,QAAS,UACTC,OAAQ,aAEZ+G,QAAS,CACLhH,QAAS,UACTC,OAAQ,eAIpB6G,OAAQ,CACJQ,gBAAiB,UACjBD,iBAAkB,CACdrH,QAAS,CACLA,QAAS,UACTC,OAAQ,aAEZ2G,KAAM,CACF5G,QAAS,UACTC,OAAQ,aAEZ4G,MAAO,CACH7G,QAAS,UACTC,OAAQ,aAEZ6G,OAAQ,CACJ9G,QAAS,UACTC,OAAQ,aAEZgH,UAAW,CACPjH,QAAS,UACTC,OAAQ,aAEZ8G,KAAM,CACF/G,QAAS,UACTC,OAAQ,aAEZ+G,QAAS,CACLhH,QAAS,UACTC,OAAQ,eAIpB8G,KAAM,CACFO,gBAAiB,UACjBD,iBAAkB,CACdrH,QAAS,CACLA,QAAS,UACTC,OAAQ,aAEZ2G,KAAM,CACF5G,QAAS,UACTC,OAAQ,aAEZ4G,MAAO,CACH7G,QAAS,UACTC,OAAQ,aAEZ6G,OAAQ,CACJ9G,QAAS,UACTC,OAAQ,aAEZgH,UAAW,CACPjH,QAAS,UACTC,OAAQ,aAEZ8G,KAAM,CACF/G,QAAS,UACTC,OAAQ,aAEZ+G,QAAS,CACLhH,QAAS,UACTC,OAAQ,eAIpBgH,UAAW,CACPK,gBAAiB,UACjBD,iBAAkB,CACdrH,QAAS,CACLA,QAAS,UACTC,OAAQ,aAEZ2G,KAAM,CACF5G,QAAS,UACTC,OAAQ,aAEZ4G,MAAO,CACH7G,QAAS,UACTC,OAAQ,aAEZ6G,OAAQ,CACJ9G,QAAS,UACTC,OAAQ,aAEZgH,UAAW,CACPjH,QAAS,UACTC,OAAQ,aAEZ8G,KAAM,CACF/G,QAAS,UACTC,OAAQ,aAEZ+G,QAAS,CACLhH,QAAS,UACTC,OAAQ,eAIpB+G,QAAS,CACLM,gBAAiB,UACjBD,iBAAkB,CACdrH,QAAS,CACLA,QAAS,UACTC,OAAQ,aAEZ2G,KAAM,CACF5G,QAAS,UACTC,OAAQ,aAEZ4G,MAAO,CACH7G,QAAS,UACTC,OAAQ,aAEZ6G,OAAQ,CACJ9G,QAAS,UACTC,OAAQ,aAEZgH,UAAW,CACPjH,QAAS,UACTC,OAAQ,aAEZ8G,KAAM,CACF/G,QAAS,UACTC,OAAQ,aAEZ+G,QAAS,CACLhH,QAAS,UACTC,OAAQ,gBAKxB6K,OAAQ,CACJhH,MAAO,CACHH,eAAgB,CACZxB,OAAQnD,EAAMoD,WAAWmC,OACzBrB,OAAQ,KACRC,YAAanE,EAAMiD,UAAUmB,WAEjCQ,eAAgB,CACZzB,OAAQnD,EAAMoD,WAAWmC,SAGjCR,aAAc,CACV/B,MAAOhD,EAAMiD,UAAUmB,UACvBjB,OAAQnD,EAAMoD,WAAWmC,QAE7BP,2BAA4B,KAEhC+G,QAAS,CACL3F,WAAY,EACZV,QAAS1F,EAAMwE,QAAQzB,QACvBsD,cAAe,GACfC,SAAU,CACNV,WAAY5F,EAAM6F,mBAAmBC,OACrCC,gBAAiB,IAErBS,mBAAoBxG,EAAMyG,YAAYC,WACtCC,gBAAiB3G,EAAM4G,gBAAgBC,MAE3CmF,aAAc,CACVjK,kBAAkB,GAEtBkK,SAAU,CACNhK,UAAWjC,EAAMkC,KAAKC,OACtBC,eAAgB,KAEpB+J,QAAS,CACL1G,MAAO,CACHzC,MAAOhD,EAAMiD,UAAUF,QACvBF,KAAM7C,EAAM8C,SAASC,QACrBG,UAAU,EACVC,OAAQnD,EAAMoD,WAAWmC,OACzBH,MAAM,EACNE,SAAU,KAEd/E,MAAO,CACHyC,MAAOhD,EAAMiD,UAAUF,QACvBF,KAAM7C,EAAM8C,SAASC,QACrBG,UAAU,EACVC,OAAQnD,EAAMoD,WAAWL,QACzBqC,MAAM,GAEVM,QAAS,IAEb6G,SAAU,CACNtB,iBAAkB,GAClBkD,oBAAqB,KAEzB7B,UAAW,CACPtI,aAAc,glBC1rCtB,IAAAoK,EAAAnO,EAAA,IAQAoL,EAAA,SAAA9J,GAAA,SAAA8J,IAAA,IAAA7J,EAAA,OAAAD,KAAAE,MAAAV,KAAAW,YAAAX,YACYS,EAAA6M,cAAkD,KAyE9D,OA1EsCzM,EAAAyJ,EAAA9J,GAGxB8J,EAAAnK,UAAAoN,aAAV,WACI,MAAO,oBAGDjD,EAAAnK,UAAAqN,cAAV,SAAwBC,EAAaC,GAGjC,GAFAlN,EAAAL,UAAMqN,cAAa1M,KAAAd,KAACyN,EAAQC,GAExBD,EAEA,IAAK,IAAME,KAAQF,EAAQ,CACvB,IAAMG,EAAcH,EAAOE,GAE3B,GAA2B,iBAAhBC,EACP,GAAoB,MAAhBA,EACA5N,KAAK6N,cAAcF,EAAM,SACtB,CACH,IAAMG,EAAUT,EAAAU,QAAQ3N,MAAMwN,EAAaF,IAEvCI,aAAO,EAAPA,EAASE,UACThO,KAAK6N,cAAcF,EAAMG,MAQvCxD,EAAAnK,UAAA8N,eAAV,SAAyBC,EAAqBR,GAI1C,IAAK,IAAM5E,KAHXtI,EAAAL,UAAM8N,eAAcnN,KAAAd,KAACkO,EAAQR,GAGX1N,KAAKsN,cACnBY,EAAOpF,GAAO9I,KAAKsN,cAAcxE,IAIzCwB,EAAAnK,UAAA0N,cAAA,SAAc/K,EAAcgL,GACxB9N,KAAKsN,cAAcxK,GAAQgL,GAG/BxD,EAAAnK,UAAAgO,iBAAA,SAAiBrL,UACN9C,KAAKsN,cAAcxK,IAG9BwH,EAAAnK,UAAAiO,MAAA,WACIpO,KAAKsN,cAAgB,IAGzBhD,EAAAnK,UAAAkO,cAAA,SAAcvL,EAAcgL,GACxB,QAAI9N,KAAKsN,cAAc3E,eAAe7F,KAClB,MAAZgL,GAAgD,MAA7B9N,KAAKsN,cAAcxK,IAInCgL,EAAQQ,UAAmBtO,KAAKsN,cAAcxK,KAAU,IAMvEwH,EAAAnK,UAAAoO,UAAA,SAAUlE,GACN,IAAK,IAAMmE,KAAkBxO,KAAKsN,cAC9B,IACKjD,EAAiBgE,cAAcG,EAAgBxO,KAAKsN,cAAckB,IAEnE,OAAO,EAIf,OAAO,GAEflE,EA1EA,CAAsC+C,EAAAoB,oBAAzBnO,EAAAgK,yHCNb,IAAAoE,EAAA,oBAAAA,KAUA,OAToBA,EAAA9F,KAAO,CACnB+F,IAAK,MACLC,MAAO,QACPC,OAAQ,SACRC,MAAO,IACPC,GAAI,UACJC,KAAM,YACNC,OAAQ,UAEhBP,EAVA,GAAapO,EAAAoO,khBCFbQ,EAAAhQ,EAAA,IAAAoB,GACA4O,EAAAhQ,EAAA,IAAAoB,GACA4O,EAAAhQ,EAAA,IAAAoB,GACA4O,EAAAhQ,EAAA,IAAAoB,GACA4O,EAAAhQ,EAAA,IAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,y7BCdA,IAAArB,EAAAC,EAAA,IACAiQ,EAAAjQ,EAAA,IACAkQ,EAAAlQ,EAAA,IAEAG,EAAAH,EAAA,KACAmO,EAAAnO,EAAA,IAUAmQ,EAAA,oBAAAA,IACarP,KAAAsP,OAA6B,GAC7BtP,KAAAuP,iBAAuC,GAUpD,OARIF,EAAAlP,UAAAqP,WAAA,SAAWC,EAAwBC,EAA8BC,GAC7D3P,KAAKuP,iBAAiBvG,KAAK,CACvB4G,MAAO3Q,EAAM4Q,gBAAgBC,WAC7BrC,OAAQgC,EACRC,MAAOA,EACPC,QAASA,KAGrBN,EAZA,GAAa/O,EAAA+O,oBAgBb,IAAAU,EAAA,SAAAvP,GAAA,SAAAuP,IAAA,IAAAtP,EAAA,OAAAD,KAAAE,MAAAV,KAAAW,YAAAX,YAoCYS,EAAAuP,iBAA2B,IAwHvC,OA5JyCnP,EAAAkP,EAAAvP,GAsB3BuP,EAAA5P,UAAAoN,aAAV,WACI,OAAOvN,KAAKiQ,mBAOhBtI,OAAAC,eAAImI,EAAA5P,UAAA,WAAQ,KAAZ,WACI,OAAOH,KAAKkQ,SAASH,EAAWI,mDAe1BJ,EAAA5P,UAAAiQ,SAAV,SAAmBC,GACf,QAAIrQ,KAAKsQ,kBACEtQ,KAAKsQ,iBAAiBF,SAASC,IAgB9CN,EAAA5P,UAAAoQ,wBAAA,SAAwBC,EAA0BC,GAC9C,IAAMjR,OAA0BI,IAAlB6Q,EAA8BzQ,KAAKkQ,SAASM,GAAQC,EAElE,GAAIrB,EAAAsB,eAAeC,iCAAkC,CAIjD,IAFA,IAAIC,EAAwC5Q,KAErC4Q,IAAkBA,EAAcC,2BACnCD,EAAgBA,EAAcE,OAGlC,GAAIF,GAAiBA,EAAcC,0BAC/B,OAAOD,EAAcC,0BAA0B7Q,KAAMwQ,EAAMhR,GAInE,OAAOA,GAGXuQ,EAAA5P,UAAA4Q,UAAA,SAAUvR,GACNQ,KAAKgR,QAAUxR,GAGnBuQ,EAAA5P,UAAA8Q,kBAAA,SAAkBzR,GACdQ,KAAKgQ,gBAAkBxQ,GAG3BuQ,EAAA5P,UAAA+Q,eAAA,WACI,OAAOlR,KAAKgQ,kBAAoBhQ,KAAKmR,SAAS5C,UAAUvO,KAAKoR,WAAW/G,mBAG5E0F,EAAA5P,UAAAkR,cAAA,WAII,IAFA,IAAIT,EAA4B5Q,KAEzB4Q,EAAcE,QACjBF,EAAgBA,EAAcE,OAGlC,OAAOF,GAGXb,EAAA5P,UAAAmR,2BAAA,SAA2B5D,GACnB1N,KAAKuR,KACD7D,EAAQ4B,OAAO3G,eAAe3I,KAAKuR,KACH,IAA5B7D,EAAQ4B,OAAOtP,KAAKuR,KACpB7D,EAAQ8B,WACJxP,KACAf,EAAMuS,gBAAgBC,YACtBtC,EAAAuC,QAAQC,OAAOC,YAAY5R,KAAKuR,KAIxC7D,EAAQ4B,OAAOtP,KAAKuR,KAAO,GAE3B7D,EAAQ4B,OAAOtP,KAAKuR,IAAM,IAKtCxB,EAAA5P,UAAA0R,mBAAA,WACI,IAAMvO,EAAS,IAAI+L,EAInB,OAFArP,KAAKsR,2BAA2BhO,GAEzBA,GAWXyM,EAAA5P,UAAA2R,iBAAA,SAAiBzB,GAEb,OAAOrQ,KAAKoQ,SAASC,GAAQrQ,UAAOJ,GAGxCmQ,EAAA5P,UAAA4R,oBAAA,aAIApK,OAAAC,eAAImI,EAAA5P,UAAA,SAAM,KAAV,WACI,OAAOH,KAAKgR,yCAGhBrJ,OAAAC,eAAImI,EAAA5P,UAAA,kBAAe,KAAnB,WACI,OAAOH,KAAKsQ,kDAvJAP,EAAAiC,iBAAmB,IAAI3E,EAAA4E,eACnC5E,EAAA6E,SAASC,KACT,YACAvS,OACAA,OACAA,EACA,SAACwS,GACG,OAAoBA,EAAQnC,oBAGpBF,EAAAsC,WAAa,IAAIhF,EAAA4E,eAAe5E,EAAA6E,SAASC,KAAM,MAC/CpC,EAAAI,iBAAmB,IAAI9C,EAAAiF,2BACnCjF,EAAA6E,SAASK,KACT,WACAlT,EAAAiL,kBACA,EACA,IAAIjL,EAAAiL,kBAQRkI,EAAA,EADC,EAAAnF,EAAAoF,UAAS1C,EAAWsC,sCAIrBG,EAAA,EADC,EAAAnF,EAAAoF,UAAS1C,EAAWI,gDA+HzBJ,EA5JA,CAAyC1C,EAAAoB,oBAAnBnO,EAAAyP,isBCxBtB,SAAY2C,GACRA,EAAA,sBACAA,EAAA,gBAFJ,CAAYpS,EAAAoS,yBAAApS,EAAAoS,uBAAsB,KAiBlC,IAAAC,EAAA,WAEA,OADI,SAAqBC,EAAwBjD,GAAxB3P,KAAA4S,OAAwB5S,KAAA2P,WADjD,GAAarP,EAAAqS,uBAIb,IAAAE,EAAA,WAEA,OADI,SAAqBC,GAAA9S,KAAA8S,WADzB,GAAsBxS,EAAAuS,mBAItB,IAAAE,EAAA,SAAAvS,GACI,SAAAuS,EAAqBD,EAAoCE,GAAzD,IAAAvS,EACID,EAAAM,KAAAd,KAAM8S,IAAQ9S,YADGS,EAAAqS,UAAoCrS,EAAAuS,eAG7D,OAJqCnS,EAAAkS,EAAAvS,GAIrCuS,EAJA,CAAqCF,GAAxBvS,EAAAyS,kBAMb,IAAAE,EAAA,SAAAzS,GACI,SAAAyS,EAAqBH,EAAoCI,GAAzD,IAAAzS,EACID,EAAAM,KAAAd,KAAM8S,IAAQ9S,YADGS,EAAAqS,UAAoCrS,EAAAyS,UAG7D,OAJmCrS,EAAAoS,EAAAzS,GAInCyS,EAJA,CAAmCJ,GAAtBvS,EAAA2S,gBAMb,IAAAE,EAAA,SAAA3S,GAII,SAAA2S,EAAqBL,EAA2BM,GAAhD,IAAA3S,EACID,EAAAM,KAAAd,KAAM8S,IAAQ9S,KADGS,EAAAqS,UAEjBrS,EAAK4S,MAAQD,EAEb,IAAqB,IAAA9K,EAAA,EAAAuE,EAAApM,EAAK4S,MAAMC,QAAXhL,EAAAuE,EAAArE,OAAAF,IAAoB,CAApC,IAAMiL,EAAM1G,EAAAvE,GACb,GAAoB,WAAhBiL,EAAOC,WAAsC5T,IAAjB2T,EAAO/T,MACnC,IACI,IAAIiU,IAAIF,EAAO/T,OAEfiB,EAAKiT,aAAeH,EAEpB,MACF,MAAO5M,cAUzB,OA1B0C9F,EAAAsS,EAAA3S,GAuBtCmH,OAAAC,eAAIuL,EAAAhT,UAAA,wBAAqB,KAAzB,WACI,OAAOH,KAAKqT,MAAMM,uDAE1BR,EA1BA,CAA0CN,GAA7BvS,EAAA6S,mbC5CbjE,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,0gBCDA4O,EAAAhQ,EAAA,KAAAoB,GACA4O,EAAAhQ,EAAA,KAAAoB,wGCDA,IAAAsT,EAAA1U,EAAA,KACA2U,EAAA3U,EAAA,KAEA4U,EAAA,WAiCI,SAAAA,EAAYhL,EAAatJ,GA7BjBQ,KAAA+T,YAAsB,EA8B1B/T,KAAK8I,IAAMA,EACX9I,KAAKgU,OAASxU,EA4DtB,OAzFYsU,EAAA3T,UAAA8T,MAAR,WACQjU,KAAKkU,WAAalU,KAAKmU,SACvBnU,KAAKmU,QAAQnU,OAIb8T,EAAA3T,UAAAiU,iBAAR,WACI,GAAIpU,KAAKqU,SAAU,CACf,IAAMC,EAAsBtU,KAAKuU,YAAcvU,KAAKuU,YAAcX,EAAAzG,kBAElEnN,KAAKqU,SAAStH,UAAYuH,EAAoBrH,iBAAiB,WAC/DjN,KAAKqU,SAASG,UAAUC,IACpBH,EAAoBrH,iBAChBjN,KAAKkU,UAAY,wBAA0B,mCAI9ClU,KAAKkU,WACNlU,KAAKqU,SAASG,UAAUC,IAAIH,EAAoBrH,iBAAiB,kBAc7E6G,EAAA3T,UAAAuU,SAAA,WACI,OAAO1U,KAAKR,OAGhBsU,EAAA3T,UAAAwU,OAAA,SAAOvD,GAAP,IAAA3Q,EAAAT,KA2BI,OA1BAA,KAAKuU,YAAcnD,EAEdpR,KAAKqU,WACNrU,KAAKqU,SAAWO,SAASC,cAAc,QACvC7U,KAAKqU,SAASS,UAAY9U,KAAKR,MAC/BQ,KAAKqU,SAASU,aAAa,OAAQ,YAE9B/U,KAAKkU,WACNlU,KAAKqU,SAASU,aAAa,gBAAiB,QAGhD/U,KAAKqU,SAASU,aAAa,eAAgB,SAC3C/U,KAAKqU,SAASW,UAAY,SAACC,GACvBxU,EAAKwT,SAETjU,KAAKqU,SAASa,UAAY,SAACvO,GACnBA,EAAEmC,MAAQ+K,EAAAnF,UAAU9F,KAAKgG,QACzBjI,EAAEwO,kBACFxO,EAAEyO,iBACF3U,EAAKwT,UAIbjU,KAAKoU,oBAGFpU,KAAKqU,UAGhB1M,OAAAC,eAAIkM,EAAA3T,UAAA,QAAK,KAAT,WACI,OAAOH,KAAKgU,YAGhB,SAAUqB,GACNrV,KAAKgU,OAASqB,EAEVrV,KAAKqU,WACLrU,KAAKqU,SAASS,UAAYO,oCAIlC1N,OAAAC,eAAIkM,EAAA3T,UAAA,YAAS,KAAb,WACI,OAAOH,KAAK+T,gBAGhB,SAAcvU,GACNQ,KAAK+T,aAAevU,IACpBQ,KAAK+T,WAAavU,EAElBQ,KAAKoU,qDAGjBN,EA/FA,GAAaxT,EAAAwT,+kBCHb,IAAAD,EAAA3U,EAAA,KACAoW,EAAApW,EAAA,KAIAqW,EAAA,SAAA/U,GAAA,SAAA+U,IAAA,IAAA9U,EAAA,OAAAD,KAAAE,MAAAV,KAAAW,YAAAX,YACYS,EAAA+U,OAA+B,IAAIF,EAAAG,WACnChV,EAAAiV,eAAqC,GACrCjV,EAAAkV,gBAA0B,IA8GtC,OAjH+B9U,EAAA0U,EAAA/U,GAKjB+U,EAAApV,UAAAyV,cAAV,WACI,IAAMC,EAAUjB,SAASC,cAAc,OACvCgB,EAAQ9I,UAAY/M,KAAKoR,WAAWnE,iBAAiB,oBACrD4I,EAAQd,aAAa,OAAQ,WAE7B,IAAK,IAAIe,EAAI,EAAGA,EAAI9V,KAAKwV,OAAOhN,OAAQsN,IAAK,CACzC,IAAMC,EAAe/V,KAAKwV,OAAOQ,IAAIF,GAAGnB,OAAO3U,KAAKoR,YACpD2E,EAAaE,SAAW,EAExBJ,EAAQK,YAAYH,GAEX,GAALD,GAEAC,EAAahB,aAAa,gBAAiB,QAG3Ce,IAAM9V,KAAKmW,eACXJ,EAAaK,QAGjBpW,KAAK0V,eAAe1M,KAAK+M,GAG7B,OAAOF,GAGXN,EAAApV,UAAAkW,QAAA,SAAQ1P,GACJnG,EAAAL,UAAMkW,QAAOvV,KAAAd,KAAC2G,GAEd,IAAI2P,EAAoBtW,KAAK2V,eAE7B,OAAQhP,EAAEmC,KACN,KAAK+K,EAAAnF,UAAU9F,KAAK+F,IAChB3O,KAAKuW,YAAW,GAEhB,MAWJ,KAAK1C,EAAAnF,UAAU9F,KAAKmG,GACZuH,GAAqB,EACrBA,EAAoBtW,KAAK0V,eAAelN,OAAS,IAEjD8N,EAEwB,IACpBA,EAAoBtW,KAAK0V,eAAelN,OAAS,GAIzDxI,KAAKmW,cAAgBG,EACrBtW,KAAKwW,mBAAmBF,GAExB3P,EAAE8P,cAAe,EAEjB,MACJ,KAAK5C,EAAAnF,UAAU9F,KAAKoG,KACZsH,EAAoB,EACpBA,EAAoB,KAEpBA,GAEyBtW,KAAK0V,eAAelN,SACzC8N,EAAoB,GAExBtW,KAAKwW,mBAAmBF,IAG5BtW,KAAKmW,cAAgBG,EAErB3P,EAAE8P,cAAe,IAM7B9O,OAAAC,eAAI2N,EAAApV,UAAA,QAAK,KAAT,WACI,OAAOH,KAAKwV,wCAGhB7N,OAAAC,eAAI2N,EAAApV,UAAA,gBAAa,KAAjB,WACI,OAAOH,KAAK2V,oBAGhB,SAAkBe,GACVA,GAAS,GAAKA,EAAQ1W,KAAK0V,eAAelN,SAC1CxI,KAAK0V,eAAegB,GAAON,QAE3BpW,KAAK2V,eAAiBe,oCAKtBnB,EAAApV,UAAAqW,mBAAR,SAA2BE,GAC0C,SAA7D1W,KAAK0V,eAAegB,GAAOC,aAAa,kBACxC3W,KAAK0V,eAAegB,GAAOE,gBAAgB,kBAMvDrB,EAjHA,CAHArW,EAAA,KAG+B2X,cAAlBvW,EAAAiV,mHCLb,IAAAE,EAAA,oBAAAA,IACYzV,KAAAwV,OAAuB,GAoCnC,OA/BIC,EAAAtV,UAAA6V,IAAA,SAAIU,GACA,OAAO1W,KAAKwV,OAAOkB,IAGvBjB,EAAAtV,UAAAsU,IAAA,SAAIqC,GACA9W,KAAKwV,OAAOxM,KAAK8N,GAEb9W,KAAK+W,aACL/W,KAAK+W,YAAYD,IAIzBrB,EAAAtV,UAAA6W,OAAA,SAAOF,GACH,IAAMhB,EAAI9V,KAAKwV,OAAOyB,QAAQH,GAE1BhB,GAAK,IACL9V,KAAKwV,OAASxV,KAAKwV,OAAO0B,OAAOpB,EAAG,GAEhC9V,KAAKmX,eACLnX,KAAKmX,cAAcL,KAK/BrB,EAAAtV,UAAA8W,QAAA,SAAQH,GACJ,OAAO9W,KAAKwV,OAAOyB,QAAQH,IAG/BnP,OAAAC,eAAI6N,EAAAtV,UAAA,SAAM,KAAV,WACI,OAAOH,KAAKwV,OAAOhN,wCAE3BiN,EArCA,GAAanV,EAAAmV,sHCAb,IAAA5B,EAAA3U,EAAA,KACAC,EAAAD,EAAA,IACA0U,EAAA1U,EAAA,KAEA2X,EAAA,oBAAAA,IACY7W,KAAAoX,SAAmB,EA6M/B,OApMIP,EAAA1W,UAAAkW,QAAA,SAAQ1P,GACJ,OAAQA,EAAEmC,KACN,KAAK+K,EAAAnF,UAAU9F,KAAKiG,OAChB7O,KAAKuW,YAAW,KAM5BM,EAAA1W,UAAAwU,OAAA,SAAO0C,GAAP,IAAA5W,EAAAT,KACU6V,EAAUjB,SAASC,cAAc,OAavC,OAZAgB,EAAQI,SAAW,EACnBJ,EAAQ9I,UAAY/M,KAAKoR,WAAWnE,iBAAiB,UAAW,2BAChE4I,EAAQd,aAAa,OAAQ,UAC7Bc,EAAQd,aAAa,aAAc,QACnCc,EAAQX,UAAY,SAACvO,GAGjB,OAFAlG,EAAK4V,QAAQ1P,IAELA,EAAE8P,cAGdZ,EAAQK,YAAYlW,KAAK4V,iBAElBC,GAGXgB,EAAA1W,UAAAiW,MAAA,WACQpW,KAAKsX,eACStX,KAAKsX,cAAcC,kBAAmBnB,SAI5DS,EAAA1W,UAAAqX,MAAA,SAAMC,iBAANhX,EAAAT,KACI,IAAKA,KAAKoX,QAAS,CACfpX,KAAK0X,gBAAkB9C,SAASC,cAAc,OAC9C7U,KAAK0X,gBAAgB3K,UAAY/M,KAAKoR,WAAWnE,iBAAiB,mBAClEjN,KAAK0X,gBAAgBzB,SAAW,EAChCjW,KAAK0X,gBAAgBzS,MAAMtB,MAAQiR,SAAS+C,gBAAgBC,YAAc,KAC1E5X,KAAK0X,gBAAgBzS,MAAM4S,OAASjD,SAAS+C,gBAAgBG,aAAe,KAC5E9X,KAAK0X,gBAAgBK,QAAU,SAAC9C,GAC5BxU,EAAK8V,YAAW,IAGpB3B,SAASoD,KAAK9B,YAAYlW,KAAK0X,iBAE/B,IAAMO,EAAoBR,EAAYS,wBAEtClY,KAAKsX,cAAgBtX,KAAK2U,OAAOsD,IACjCpL,EAAA7M,KAAKsX,cAAc9C,WAAUwC,OAAMtW,MAAAmM,EAC5B7M,KAAKoR,WAAWzE,kBACf,gBACA,2BACA,2BACA,2BACA,6BAIRwL,OAAOC,iBAAiB,SAAU,SAACnD,GAC/BxU,EAAK8V,YAAW,KAGpB,IAAM8B,EAAmBZ,EAAYd,aAAa,cAC9C0B,GACArY,KAAKsX,cAAcvC,aAAa,aAAcsD,GAGlDrY,KAAK0X,gBAAgBxB,YAAYlW,KAAKsX,eAEtC,IAQIgB,EAREC,EAAqBvY,KAAKsX,cAAcY,wBAExCM,EAAsBL,OAAOM,YAAcR,EAAkBxL,OAC7DiM,EAAsBT,EAAkB1L,IACxCoM,EAAsBR,OAAOS,WAAaX,EAAkBzL,MAC5DqM,EAAqBZ,EAAkBvL,KAEzCA,EAAOuL,EAAkBvL,KAAOvN,EAAM2Z,aAG1C,GACIJ,EAAsBH,EAAmBV,QACzCW,EAAsBD,EAAmBV,OAC3C,CAEE,IAAMkB,EAAoBC,KAAKC,IAAIV,EAAmBV,OAAQM,OAAOM,aAarE,GAXAzY,KAAKsX,cAAcrS,MAAMiU,UAAYH,EAAoB,KAGrDT,EADAS,EAAoBR,EAAmBV,OACjC1Y,EAAMga,aAGRha,EAAMga,aACNlB,EAAkB1L,KACjB0L,EAAkBJ,OAASkB,GAAqB,EAIrDF,EAAqBN,EAAmB5U,OACxCgV,EAAsBJ,EAAmB5U,MAC3C,CAEE,IAAMyV,EAAmBJ,KAAKC,IAAIV,EAAmB5U,MAAOwU,OAAOS,YAEnE5Y,KAAKsX,cAAcrS,MAAMV,SAAW6U,EAAmB,KAGnD1M,EADA0M,EAAmBb,EAAmB5U,MAC/BxE,EAAM2Z,aAGT3Z,EAAM2Z,aACNb,EAAkBvL,MACjBuL,EAAkBtU,MAAQyV,GAAoB,OAInDT,GAAuBJ,EAAmB5U,OAC1C+I,EAAOvN,EAAM2Z,aAAeb,EAAkBzL,OAE9C6M,EAAArZ,KAAKsX,cAAc9C,WAAUC,IAAG/T,MAAA2Y,EACzBrZ,KAAKoR,WAAWzE,kBACf,gBACA,+BAIRD,EACIvN,EAAM2Z,aAAeb,EAAkBvL,KAAO6L,EAAmB5U,OAErE2V,EAAAtZ,KAAKsX,cAAc9C,WAAUC,IAAG/T,MAAA4Y,EACzBtZ,KAAKoR,WAAWzE,kBACf,gBACA,mCAOZ6L,GAAuBD,EAAmBV,QAC1CS,EAAMnZ,EAAMga,aAAelB,EAAkBxL,QAE7C8M,EAAAvZ,KAAKsX,cAAc9C,WAAUC,IAAG/T,MAAA6Y,EACzBvZ,KAAKoR,WAAWzE,kBACf,gBACA,+BAIR2L,EAAMnZ,EAAMga,aAAelB,EAAkB1L,IAAMgM,EAAmBV,QAEtE2B,EAAAxZ,KAAKsX,cAAc9C,WAAUC,IAAG/T,MAAA8Y,EACzBxZ,KAAKoR,WAAWzE,kBACf,gBACA,8BAKRgM,EAAsBJ,EAAmB5U,QACzC+I,EAAOvN,EAAM2Z,aAAeb,EAAkBzL,MAAQ+L,EAAmB5U,OAIjF3D,KAAKsX,cAAcrS,MAAMyH,KAAOA,EAAO,KACvC1M,KAAKsX,cAAcrS,MAAMsH,IAAM+L,EAAM,KAErCtY,KAAKsX,cAAclB,QAEnBpW,KAAKoX,SAAU,IAIvBP,EAAA1W,UAAAoW,WAAA,SAAWkD,GACHzZ,KAAKoX,UACLxC,SAASoD,KAAK0B,YAAY1Z,KAAK0X,iBAE/B1X,KAAKoX,SAAU,EAEXpX,KAAK2Z,SACL3Z,KAAK2Z,QAAQ3Z,KAAMyZ,KAK/B9R,OAAAC,eAAIiP,EAAA1W,UAAA,aAAU,KAAd,WACI,OAAOH,KAAKuU,YAAcvU,KAAKuU,YAAcX,EAAAzG,uBAGjD,SAAe3N,GACXQ,KAAKuU,YAAc/U,mCAGvBmI,OAAAC,eAAIiP,EAAA1W,UAAA,SAAM,KAAV,WACI,OAAOH,KAAKoX,yCAEpBP,EA9MA,GAAsBvW,EAAAuW,0qCCJtB,IAAA+C,EAAA1a,EAAA,KASAD,EAAAC,EAAA,IACAmO,EAAAnO,EAAA,IAUA2a,EAAA3a,EAAA,KACA4a,EAAA5a,EAAA,IACAiQ,EAAAjQ,EAAA,IACA6a,EAAA7a,EAAA,KAWAC,EAAAD,EAAA,IACAkQ,EAAAlQ,EAAA,IAKA8a,EAAA,SAAAxZ,GAAA,SAAAwZ,mDAoEA,OApEkCnZ,EAAAmZ,EAAAxZ,GAEpBwZ,EAAA7Z,UAAA8Z,eAAV,SAAyBC,GACrB1Z,EAAAL,UAAM8Z,eAAcnZ,KAAAd,KAACka,GAGrBA,EAAOlD,OAAO4C,EAAAO,UAAUC,eACxBF,EAAOlD,OAAO4C,EAAAO,UAAUE,eACxBH,EAAOlD,OAAO4C,EAAAO,UAAUG,oBAIlBN,EAAA7Z,UAAAoa,eAAV,WACI,IAAMC,EAA6B5F,SAASC,cAAc,OAC1D2F,EAAczN,UAAY/M,KAAKoR,WAAWnE,iBAAiB,gBAE3DjN,KAAKya,IAAMza,KAAK0a,QAChB,IAAMC,EAAkBna,EAAAL,UAAMoa,eAAczZ,KAAAd,MAE5C,OADAb,EAAM+W,YAAYsE,EAAeG,GAC1BH,GAGXR,EAAA7Z,UAAAya,wBAAA,WACI,MAAO,CAAChB,EAAAiB,eAAgBjB,EAAAkB,yBAG5Bd,EAAA7Z,UAAA4a,0BAAA,WACI,OAAO/a,KAAKgb,0BAGNhB,EAAA7Z,UAAA6a,uBAAV,WACI,OAAAC,EAAA,CACIrB,EAAAkB,uBAAuBI,aACvBtB,EAAAiB,eAAeK,aACf,QACA,YACA,aACA,aACA,aACA,eACA,kBACA,eACA,YACG1a,EAAAL,UAAM6a,uBAAsBla,KAAAd,OAAE,IAI/Bga,EAAA7Z,UAAAqN,cAAV,SAAwBC,EAAaC,GACjClN,EAAAL,UAAMqN,cAAa1M,KAAAd,KAACyN,EAAQC,GAE5B1N,KAAKiR,mBAAkB,IAGjB+I,EAAA7Z,UAAAgb,gBAAV,SAA0BC,GACtB,OAAO,GAGXpB,EAAA7Z,UAAA8P,gBAAA,WACI,MAAO,gBAGXtI,OAAAC,eAAIoS,EAAA7Z,UAAA,eAAY,KAAhB,WACI,OAAO,mCAGXwH,OAAAC,eAAIoS,EAAA7Z,UAAA,sBAAmB,KAAvB,WACI,OAAO,mCAEf6Z,EApEA,CAAkCJ,EAAAO,WAArB7Z,EAAA0Z,eAsEb,IAAAqB,EAAA,SAAA7a,GAAA,SAAA6a,IAAA,IAAA5a,EAAA,OAAAD,KAAAE,MAAAV,KAAAW,YAAAX,YAkDIS,EAAA6a,cAAwB,EASxB7a,EAAA8a,oBAAyCtc,EAAMyG,YAAYC,WA+BnDlF,EAAA+a,OAAyB,GAIzB/a,EAAAgb,cAAwB,EACxBhb,EAAAib,mBAAqDzc,EAAM0c,yBAAyBC,aAwhBhG,OAvnB8B/a,EAAAwa,EAAA7a,GAEhB6a,EAAAlb,UAAA8Z,eAAV,SAAyBC,GACrB1Z,EAAAL,UAAM8Z,eAAcnZ,KAAAd,KAACka,GAGrBA,EAAOlD,OAAO4C,EAAAO,UAAUC,eACxBF,EAAOlD,OAAO4C,EAAAO,UAAUE,eACxBH,EAAOlD,OAAO4C,EAAAO,UAAUG,oBAK5B3S,OAAAC,eAAIyT,EAAAlb,UAAA,QAAK,KAAT,WACI,IAAI0b,EAAQ7b,KAAKkQ,SAASmL,EAASS,eAOnC,OALID,GAASA,EAAQ7b,KAAKoR,WAAW5F,SAASrB,mBAC1C4R,QAAQC,KAAK7M,EAAAuC,QAAQC,OAAOsK,oBAC5BJ,EAAQ7b,KAAKoR,WAAW5F,SAASrB,kBAG9B0R,OAGX,SAAUrc,GACFA,GAASA,EAAQQ,KAAKoR,WAAW5F,SAASrB,kBAC1C4R,QAAQC,KAAK7M,EAAAuC,QAAQC,OAAOsK,oBAC5Bjc,KAAKkc,SAASb,EAASS,cAAe9b,KAAKoR,WAAW5F,SAASrB,mBAE/DnK,KAAKkc,SAASb,EAASS,cAAetc,oCAM9CmI,OAAAC,eAAIyT,EAAAlb,UAAA,mBAAgB,KAApB,WACI,OAAOH,KAAKkQ,SAASmL,EAASc,0BAGlC,SAAqB3c,GACbQ,KAAKoc,uBAAuB5c,GAC5BQ,KAAKkc,SAASb,EAASc,oBAAqB3c,IAE5Cuc,QAAQC,KAAK7M,EAAAuC,QAAQC,OAAO0K,wBAAwB7c,IACpDQ,KAAKkc,SAASb,EAASc,oBAAqB,qCAwB5Cd,EAAAlb,UAAAic,uBAAR,SAA+B1F,GAC3B,QAAO1W,KAAKwb,QAASxb,KAAKsc,iBAAiB5F,EAAO1W,KAAKwb,OAAOhT,SAG1D6S,EAAAlb,UAAAoc,yBAAR,SAAiC7F,GAC7B,QAAO1W,KAAKwc,gBAAiBxc,KAAKsc,iBAAiB5F,EAAO1W,KAAKwc,eAAehU,SAG1E6S,EAAAlb,UAAAmc,iBAAR,SAAyB5F,EAAe+F,GACpC,OAAQA,EAAiB,GAAK,GAAK/F,GAASA,EAAQ+F,GAKxD9U,OAAAC,eAAIyT,EAAAlb,UAAA,oBAAiB,KAArB,WACI,OAAOH,KAAK0b,wBAGhB,SAAsBgB,GAClB1c,KAAK0b,mBAAqBgB,mCAapBrB,EAAAlb,UAAA6a,uBAAV,WACI,OAAAC,EAAA,CACIrB,EAAAkB,uBAAuBI,aACvBtB,EAAAiB,eAAeK,aACf,QACA,YACA,aACA,aACA,aACA,eACA,kBACA,gBACG1a,EAAAL,UAAM6a,uBAAsBla,KAAAd,OAAE,IAI/Bqb,EAAAlb,UAAAwc,0BAAV,SAAoChC,GAChCna,EAAAL,UAAMwc,0BAAyB7b,KAAAd,KAAC2a,GACb,WAAf3a,KAAK6X,aAAsDjY,IAA/BI,KAAK4c,wBACjC5c,KAAK4c,sBAAsB3X,MAAM4S,OAAS,QAI1C7X,KAAK6c,iBACL7c,KAAK8c,uBAAuB7X,MAAM4S,OAAS7X,KAAK6c,eAAiB,OAIzExB,EAAAlb,UAAA8P,gBAAA,WACI,MAAO,YAGXoL,EAAAlb,UAAA4c,aAAA,WACI,OAAO/c,KAAKwb,OAAOhT,QAGvB6S,EAAAlb,UAAA6c,UAAA,SAAUtG,GACN,OAAO1W,KAAKwb,OAAO9E,IAGvB2E,EAAAlb,UAAA8c,QAAA,SAAQC,GACJld,KAAKwb,OAAOxS,KAAKkU,GACjBA,EAAKnM,UAAU/Q,OAGnBqb,EAAAlb,UAAAgd,WAAA,SAAWrG,GACP,GAAIA,aAAgBkD,EAAc,CAC9B,IAAMoD,EAAYpd,KAAKwb,OAAOvE,QAAQH,GAEtC,GAAIsG,GAAa,EAOb,OANApd,KAAKwb,OAAOtE,OAAOkG,EAAW,GAE9BtG,EAAK/F,eAAUnR,GAEfI,KAAKqd,gBAEE,EAIf,OAAO,GAGXhC,EAAAlb,UAAAmd,4BAAA,iBACI,OAAItd,KAAK2a,kBAAsC,QAAnB9N,EAAA7M,KAAKwc,sBAAc,IAAA3P,OAAA,EAAAA,EAAErE,QAAS,EAC/CxI,KAAKwc,eAAe,QAE3B,GAIRnB,EAAAlb,UAAAod,2BAAA,iBACI,OAAIvd,KAAK2a,kBAAsC,QAAnB9N,EAAA7M,KAAKwc,sBAAc,IAAA3P,OAAA,EAAAA,EAAErE,QAAS,EAC/CxI,KAAKwc,eAAexc,KAAKwc,eAAehU,OAAS,QAExD,GAIRb,OAAAC,eAAIyT,EAAAlb,UAAA,gBAAa,KAAjB,mBACI,GAA0B,QAAtBkZ,EAAc,QAAdxM,EAAA7M,KAAKwd,iBAAS,IAAA3Q,OAAA,EAAAA,EAAE4Q,cAAM,IAAApE,OAAA,EAAAA,EAAE7Q,OAExB,OADoBxI,KAAKwd,UAAUC,OAAOzd,KAAKwd,UAAUE,aACtCnM,oCAK3B5J,OAAAC,eAAIyT,EAAAlb,UAAA,mBAAgB,KAApB,iBACI,OAAqB,QAAd0M,EAAA7M,KAAKwd,iBAAS,IAAA3Q,OAAA,EAAAA,EAAE8Q,2CAGjBtC,EAAAlb,UAAAqN,cAAV,SAAwBC,EAAaC,GACjClN,EAAAL,UAAMqN,cAAa1M,KAAAd,KAACyN,EAAQC,GAE5B1N,KAAKwb,OAAS,GAEd,IAAMoC,EAAYnQ,EAAc,MAChC,GAAIrF,MAAMC,QAAQuV,GACd,IAAmB,IAAAtV,EAAA,EAAAuV,EAAAD,EAAAtV,EAAAuV,EAAArV,OAAAF,IAAW,CAAzB,IAAMwO,EAAI+G,EAAAvV,GACL4U,EAAOld,KAAK8d,2BAA2BhH,EAAMpJ,GAC/CwP,GACAld,KAAKwb,OAAOxS,KAAKkU,GAM7Bld,KAAK+d,gBAAgBrQ,IAGjB2N,EAAAlb,UAAA4d,gBAAR,SAAwBrQ,GACf1N,KAAKoc,uBAAuBpc,KAAKge,mBAClCtQ,EAAQuQ,cACJje,KACAf,EAAMuS,gBAAgB0M,qBACtB/O,EAAAuC,QAAQC,OAAO0K,wBAAwBrc,KAAKge,oBAK9C3C,EAAAlb,UAAA8N,eAAV,SAAyBC,EAAqBR,GAC1ClN,EAAAL,UAAM8N,eAAcnN,KAAAd,KAACkO,EAAQR,GAE7BA,EAAQyQ,eAAejQ,EAAQ,QAASlO,KAAKwb,SAGvCH,EAAAlb,UAAAoa,eAAV,iBAGI,GAFAva,KAAKwc,eAAiB,KAElBxc,KAAKwb,OAAOhT,QAAU,GAA1B,CAIAxI,KAAKoe,gCAEL,IAAMC,EAAkCzJ,SAASC,cAAc,OAC/DwJ,EAAmBtR,UAAY/M,KAAKoR,WAAWnE,iBAAiB,oCAEhE,IAAMqR,EAAiC1J,SAASC,cAAc,OAC9DyJ,EAAkBvR,UAAY/M,KAAKoR,WAAWnE,iBAAiB,SAAU,eACzEjN,KAAK8c,uBAAyBwB,EAE9B,IAAMC,EAAoC3J,SAASC,cAAc,OACjE0J,EAAqBxR,UAAY/M,KAAKoR,WAAWnE,iBAAiB,yBAClEjN,KAAK4c,sBAAwB2B,EAE7BF,EAAmBnI,YAAYqI,GAE/B,IAAMC,EAA+B5J,SAASC,cAAc,OAO5D,OANA2J,EAAgBzR,UAAY/M,KAAKoR,WAAWnE,iBACxC,iBACA,8BAEJuR,EAAgBvZ,MAAMwZ,QAAU,OAExBze,KAAK0e,wCACT,KAAKzf,EAAM0f,kBAAkBC,IACzBJ,EAAgBvZ,MAAM4Z,WAAa,aACnC,MACJ,KAAK5f,EAAM0f,kBAAkBG,OACzBN,EAAgBvZ,MAAM4Z,WAAa,WACnC,MACJ,QACIL,EAAgBvZ,MAAM4Z,WAAa,SAIvCzP,EAAAsB,eAAeqO,kCAYfP,EAAgBvZ,MAAM+Z,UAAY,uBAGtC,IAAMC,EAAmCrK,SAASC,cAAc,OAChEoK,EAAoBlS,UAAY/M,KAAKoR,WAAWnE,iBAAiB,0BAEjE,IAAMiS,EAA8BtK,SAASC,cAAc,OAC3DqK,EAAenS,UAAY/M,KAAKoR,WAAWnE,iBACvC,sBAGJ,IAAMkS,EAA8BvK,SAASC,cAAc,OAC3DsK,EAAepS,UAAY/M,KAAKoR,WAAWnE,iBACvC,sBAGAjN,KAAKub,sBAAwBtc,EAAMyG,YAAYC,WAC/C3F,KAAKof,+BAA+BF,EAAgBC,GAEpDnf,KAAKqf,6BAA6BJ,EAAqBC,EAAgBC,GAG3E,IAAMG,EAA0B1K,SAASC,cAAc,OACvDyK,EAAWvS,UAAY/M,KAAKoR,WAAWnE,iBACnC,oBACA,0BAGJgS,EAAoB/I,YAAYgJ,GAChC/f,EAAMogB,kCAAkCL,GAExCD,EAAoB/I,YAAYoJ,GAChCngB,EAAMogB,kCAAkCD,GAExCL,EAAoB/I,YAAYiJ,GAChChgB,EAAMogB,kCAAkCJ,GAEpCnf,KAAKwf,iBAELN,EAAeja,MAAMwa,OAAS,KAC9BN,EAAela,MAAMwa,OAAS,KAC9BH,EAAWra,MAAMwa,OAAS,MAG9B,IAAMC,EAAiC1G,KAAKC,IACxCjZ,KAAKwb,OAAOhT,OACZxI,KAAKoR,WAAW5F,SAAStB,kBAM7B,GAJIlK,KAAKwb,OAAOhT,OAASxI,KAAKoR,WAAW5F,SAAStB,kBAC9C6R,QAAQC,KAAK7M,EAAAuC,QAAQC,OAAOgO,sBAG5B3f,KAAKwb,OAAOhT,OAAS,EACrB,IAAK,IAAIsN,EAAI,EAAGA,EAAI4J,EAAwB5J,IAAK,CAC7C,IAAMoH,EAAOld,KAAKwb,OAAO1F,GACnBC,EAAe/V,KAAK4f,iBAAiB1C,GAAQA,EAAKvI,cAAW/U,EACnEmW,WAAcvB,UAAUC,IAAI,oBACH,QAAzB5H,EAAAkJ,aAAY,EAAZA,EAAc8J,SAAS,UAAE,IAAAhT,KAAE2H,UAAUC,IAAI,8BAErCsB,IACA5W,EAAM+W,YAAYsI,EAAiBzI,GACnC/V,KAAKwc,eAAexT,KAAKkU,IAiCrC,OA5BAoB,EAAkBpI,YAAYsI,GAE9BF,EAAkBrI,SAAWjW,KAAKwf,gBAAkB,EAAI,EAExDjB,EAAqBrI,YAAYoI,GACjCC,EAAqBrI,YAAY+I,GAGjCjf,KAAKya,IAAMza,KAAK0a,QAChB1a,KAAK8f,SAASR,GAETtf,KAAKwf,iBACFxf,KAAKuc,yBAAyBvc,KAAKge,kBACnChe,KAAKyb,cAAgBzb,KAAKge,kBAE1BjC,QAAQC,KAAK7M,EAAAuC,QAAQC,OAAO0K,wBAAwBrc,KAAKge,mBACzDhe,KAAKyb,cAAgB,IAI7Bzb,KAAK+f,0BACDzB,EACAa,EACAD,EACAI,EACAtf,KAAKya,KAGFza,KAAKwc,eAAehU,OAAS,EAAI6V,OAAqBze,IAGjEyb,EAAAlb,UAAA2f,SAAA,SAASR,GACL9e,EAAAL,UAAM2f,SAAQhf,KAAAd,KAACA,KAAK8c,wBAChB9c,KAAKya,KACL6E,EAAW9K,UAAUC,IAAIzU,KAAKoR,WAAWnE,iBACrC,gCAKZoO,EAAAlb,UAAAie,8BAAA,WACSpe,KAAK6c,iBACN7c,KAAKub,oBAAsBtc,EAAMyG,YAAYC,aAIrD0V,EAAAlb,UAAAif,+BAAA,SACIF,EACAC,GAEAD,EAAe1K,UAAUC,IAAIzU,KAAKoR,WAAWnE,iBACzC,qBAEJkS,EAAe3K,UAAUC,IAAIzU,KAAKoR,WAAWnE,iBACzC,uBAIRoO,EAAAlb,UAAAkf,6BAAA,SACIJ,EACAC,EACAC,GAEAnf,KAAK4c,sBAAsBpI,UAAUC,IAAIzU,KAAKoR,WAAWnE,iBACrD,mCAEJgS,EAAoBzK,UAAUC,IAAIzU,KAAKoR,WAAWnE,iBAC9C,oCAGJiS,EAAe1K,UAAUC,IAAIzU,KAAKoR,WAAWnE,iBACzC,mBAEJkS,EAAe3K,UAAUC,IAAIzU,KAAKoR,WAAWnE,iBACzC,sBAIAoO,EAAAlb,UAAA4f,0BAAR,SACIzB,EACA0B,EACAC,EACAC,EACAzF,GALJ,UAAAha,EAAAT,KAQUmgB,OAAqCvgB,IAAR6a,GAAsBA,EAAoBwF,EAAdD,EACzDI,OAAqCxgB,IAAR6a,GAAsBA,EAAoBuF,EAAdC,EAEzDI,EAAqCphB,EAAMyG,YAAYC,aAAe3F,KAAKub,oBAAuB6E,EAA4BH,EAC9HK,EAAqCrhB,EAAMyG,YAAYC,aAAe3F,KAAKub,oBAAuB4E,EAA4BH,EAE9HO,EAA+B,CACjCC,MAAOxgB,KAAKwf,gBAAkBxf,KAAKsb,aACnCmF,QAAS,CAAC1G,EAAA2G,WAAY3G,EAAA6B,WAAY7B,EAAA4G,UAAW5G,EAAA6G,KAAM7G,EAAA8G,QAAS9G,EAAA+G,UAC5DxB,WAAY,CACRyB,GAAIb,EACJc,WAAW,GAEfC,WAAY,CACRC,OAAQb,EACRc,OAAQb,GAEZc,KAAM,CACFC,SAAS,GAEbC,SAAU,CACND,SAAS,EACTE,gBAAgB,GAEpBC,UAAWxhB,KAAKub,sBAAwBtc,EAAMyG,YAAYC,WAAa,aAAe,WACtF8b,gBAAgB,EAChBC,aAAc1hB,KAAKyb,eAGnBzb,KAAK6b,QAAU7b,KAAKwf,iBACC,QAArB3S,EAAA0T,EAAcE,eAAO,IAAA5T,KAAE7D,KAAK+Q,EAAA4H,UAC5BpB,EAAcqB,SAAW,CAAEC,MAAO7hB,KAAK6b,MAAOiG,mBAAmB,IAGrE,IAAMtW,EAAmB,IAAIuO,EAAAgI,OAAOzD,EAAmBiC,GAKvDjC,EAAkBlG,iBAAiB,aAAc,SAAU4J,SACtC,QAAjBnV,EAAArB,EAASoW,gBAAQ,IAAA/U,KAAEoV,SAGvB3D,EAAkBlG,iBAAiB,aAAc,SAAU4J,SACtC,QAAjBnV,EAAArB,EAASoW,gBAAQ,IAAA/U,KAAEqV,UAGvB1W,EAAS2W,GAAG,iBAAmB,SAACC,GAC5B3hB,EAAK4hB,mBAAmBpjB,EAAM0c,yBAAyB2G,kBAG3D9W,EAAS2W,GAAG,iBAAmB,SAACC,GAC5B3hB,EAAK4hB,mBAAmBpjB,EAAM0c,yBAAyB4G,sBAG3D/W,EAAS2W,GAAG,2BAA6B,SAACC,GACtC3hB,EAAK+hB,aAAeJ,EAAOzE,UAC3Bld,EAAK4hB,mBAAmBpjB,EAAM0c,yBAAyBC,cAG3DpQ,EAAS2W,GAAG,WAAa,WACrB1hB,EAAK4hB,mBAAmBpjB,EAAM0c,yBAAyBgG,YAG3DnW,EAAS2W,GAAG,mBAAoB,SAACC,EAAQK,GACrCL,EAAO9C,WAAWoD,QAAQ7Z,QAAQ,SAAC8Z,EAAQjM,GACvCiM,EAAOvK,iBAAiB,WAAY,SAAS1I,GACxB,SAAbA,EAAM5G,MACN4G,EAAM0F,iBACNgN,EAAOQ,QAAQlM,EAAQ,UAMvClL,EAAS2W,GAAG,UAAW,WACnB1hB,EAAKoiB,0BAGT5C,EAAYvb,MAA6B,QAArB2U,EAAA4G,EAAY6C,iBAAS,IAAAzJ,IAAIlK,EAAAuC,QAAQqR,SAASC,oCAE9DhD,EAAYtb,MAA6B,QAArB4U,EAAA0G,EAAY8C,iBAAS,IAAAxJ,IAAInK,EAAAuC,QAAQqR,SAASE,gCAE9DjjB,KAAKwd,UAAYhS,EAEjBxL,KAAKkjB,wBAGD7H,EAAAlb,UAAA2d,2BAAR,SACIrQ,EACAC,GAEA,OAAOA,EAAQyV,gBACXnjB,KACAyN,EACAzN,KAAKgb,0BACJhb,KAAKwf,eACN,SAAC4D,GACG,OAAQA,GAAyB,iBAAbA,OAAmDxjB,EAArB,IAAIoa,GAE1D,SAACoJ,EAAkBC,GACf3V,EAAQuQ,mBACJre,EACAka,EAAAtI,gBAAgB8R,sBAChBnU,EAAAuC,QAAQC,OAAO4R,sBAAsBH,OAMrD/H,EAAAlb,UAAAyiB,QAAA,SAAQlM,SACU,QAAd7J,EAAA7M,KAAKwd,iBAAS,IAAA3Q,KAAE+V,QAAQlM,IAG5B/O,OAAAC,eAAIyT,EAAAlb,UAAA,wBAAqB,KAAzB,WACI,OAAOH,KAAK8c,wDAGhBnV,OAAAC,eAAIyT,EAAAlb,UAAA,eAAY,KAAhB,WACI,OAAOH,KAAKyb,mBAGhB,SAAiB+G,GACbxiB,KAAKyb,cAAgB+G,mCAGjBnH,EAAAlb,UAAAqjB,oBAAR,SAA6BhQ,GAEzB,IAAIiQ,EAIJ,OAH6B7jB,MAAzBI,KAAK0jB,mBACLD,EAAgBzjB,KAAKgd,UAAUhd,KAAK0jB,kBAAkBnS,IAEnD,IAAIoS,EAAcnQ,EAAMxT,KAAKuR,GAAIkS,EAAezjB,KAAK0jB,mBAGxDrI,EAAAlb,UAAAkiB,mBAAR,SAA2B3F,GACvB,IAAMkH,EAAO5jB,KAAK8Q,OAAU9Q,KAAK8Q,OAAO+S,sBAAoCjkB,EACtEkkB,EACFF,GAAQA,EAAKG,gBACPH,EAAKG,gBACLnK,EAAAoK,aAAaD,gBAEnBD,GAA0BpH,GAAazd,EAAM0c,yBAAyBC,YAEtEkI,EAAuB9jB,KAAKwjB,oBAAoBxjB,KAAKikB,oBAEzDjkB,KAAKikB,kBAAoBvH,GAMrBrB,EAAAlb,UAAA+iB,qBAAR,iBAAAziB,EAAAT,KAESA,KAAKkkB,8CAIVlkB,KAAKmkB,UAAY,IAAIC,eAAe,SAACC,eAC3B1gB,EAAsB,QAAdkJ,EAAApM,EAAK+c,iBAAS,IAAA3Q,OAAA,EAAAA,EAAElJ,MACxBkU,EAAuB,QAAdwB,EAAA5Y,EAAK+c,iBAAS,IAAAnE,OAAA,EAAAA,EAAExB,OAC3ByM,EAAW3gB,EACX4gB,EAAY1M,EAChBwM,EAAQxb,QAAQ,SAACgE,SAAE2X,EAAc3X,EAAA2X,eAAEC,EAAW5X,EAAA4X,YAAEvW,EAAMrB,EAAAqB,OAClDA,GAAUA,KAAyB,QAAdmL,EAAA5Y,EAAK+c,iBAAS,IAAAnE,OAAA,EAAAA,EAAE0H,MAIzCuD,EAAWG,EACLA,EAAY9gB,OACX6gB,EAAe,IAAMA,GAAgBE,WAE5CH,EAAYE,EACNA,EAAY5M,QACX2M,EAAe,IAAMA,GAAgBG,aAGxCL,IAAa3gB,GAAS4gB,IAAc1M,GAChCpX,EAAKyjB,8CACS,QAAd5K,EAAA7Y,EAAK+c,iBAAS,IAAAlE,KAAEsL,KAAK,gBACP,QAAdrL,EAAA9Y,EAAK+c,iBAAS,IAAAjE,KAAEqL,KAAK,aAMjC5kB,KAAKmkB,UAAUU,QAAsB,QAAdhY,EAAA7M,KAAKwd,iBAAS,IAAA3Q,OAAA,EAAAA,EAAEkU,MAGnC1F,EAAAlb,UAAA0iB,sBAAR,iBACQ7iB,KAAKmkB,WAAankB,KAAKmkB,UAAUW,YAA2B,QAAdjY,EAAA7M,KAAKwd,iBAAS,IAAA3Q,OAAA,EAAAA,EAAEkU,MAC9D/gB,KAAKmkB,UAAUW,UAAU9kB,KAAKwd,UAAUuD,IACxC/gB,KAAKmkB,UAAY,OAIjB9I,EAAAlb,UAAA+jB,0CAAR,WAEI,OAAOlkB,KAAKwd,YAAcxd,KAAKwd,UAAUuH,WA1mB7B1J,EAAAS,cAAgB,IAAIzO,EAAA2X,YAAY3X,EAAA6E,SAAS+S,KAAM,aAASrlB,GAsBxDyb,EAAAc,oBAAsB,IAAI9O,EAAA2X,YAAY3X,EAAA6E,SAAS+S,KAAM,cAAe,GAepE5J,EAAA6J,aAAe,IAAI7X,EAAA8X,aAAa9X,EAAA6E,SAAS+S,KAAM,QAAQ,GAIvD5J,EAAA+J,oBAAsB,IAAI/X,EAAAgY,aACtChY,EAAA6E,SAAS+S,KACT,cACAhmB,EAAMyG,YACNzG,EAAMyG,YAAYC,YAKN0V,EAAAiK,uBAAyB,IAAIjY,EAAAkY,kBACzClY,EAAA6E,SAAS+S,KACT,kBAlDJzS,EAAA,EADC,EAAAnF,EAAAoF,UAAS4I,EAASS,0CAuBnBtJ,EAAA,EADC,EAAAnF,EAAAoF,UAAS4I,EAASc,2DAgBnB3J,EAAA,EADC,EAAAnF,EAAAoF,UAAS4I,EAAS6J,kDAUnB1S,EAAA,EADC,EAAAnF,EAAAoF,UAAS4I,EAAS+J,gEAQnB5S,EAAA,EADC,EAAAnF,EAAAoF,UAAS4I,EAASiK,8DAsjBvBjK,EAvnBA,CAA8BzB,EAAAO,WAAjB7Z,EAAA+a,WAynBb,IAAAsI,EAAA,WAKA,OAJI,SAAmBnQ,EACRgS,EACAC,EACAC,GAHQ1lB,KAAAwT,OACRxT,KAAAwlB,aACAxlB,KAAAylB,uBACAzlB,KAAA0lB,2BAJf,GAAaplB,EAAAqjB,gBAOb9J,EAAA8L,eAAeC,gBAAgBC,SAC3B,WACAxK,EACAhO,EAAA6E,SAAS+S,iHC/uBb,IAAAa,EAAA,WAEA,OAFA,gBAAsBxlB,EAAAwlB,u/CCFtB,IAAA7mB,EAAAC,EAAA,IACAC,EAAAD,EAAA,IACAkQ,EAAAlQ,EAAA,IAEA6mB,EAAA7mB,EAAA,KAQAiQ,EAAAjQ,EAAA,IACA0a,EAAA1a,EAAA,KAaAmO,EAAAnO,EAAA,IAGA,SAAS8mB,EAASC,EAAuBtW,OAAe,IAAAuW,EAAA,GAAA5d,EAAA,EAAAA,EAAA3H,UAAA6H,OAAAF,IAAA4d,EAAA5d,EAAA,GAAA3H,UAAA2H,GACpD,GAAI8G,EAAAsB,eAAeyV,QAAQC,WACvB,GAAIhX,EAAAsB,eAAeyV,QAAQE,WACvBjX,EAAAsB,eAAeyV,QAAQE,WAAWJ,EAAOtW,EAASuW,QAGlD,OAAQD,GACJ,KAAKhnB,EAAMqnB,SAASpe,QAChB6T,QAAQC,KAAKrM,EAASuW,GACtB,MACJ,KAAKjnB,EAAMqnB,SAASC,MAChBxK,QAAQ7I,MAAMvD,EAASuW,GACvB,MACJ,QACInK,QAAQyK,IAAI7W,EAASuW,IAQzC,IAAAO,EAAA,WACI,SAAAA,EACaC,EACAC,EACAC,GAFA5mB,KAAA0mB,SACA1mB,KAAA2mB,UACA3mB,KAAA4mB,qBAKb5mB,KAAA6mB,cAAwB,EAU5B,OALUJ,EAAAtmB,UAAA2mB,WAAN,mFACQ9mB,KAAK+mB,QACL/mB,KAAK+mB,OAAO/mB,eAGxBymB,EAnBA,GAqBAO,EAAA,WAixBI,SAAAA,IA1wBQhnB,KAAAinB,2BAAqC,EA2wBzCjnB,KAAK2a,gBAAkB/F,SAASC,cAAc,OAC9C7U,KAAK2a,gBAAgB5N,UAAY,eACjC/M,KAAK2a,gBAAgB1V,MAAMiiB,SAAW,WACtClnB,KAAK2a,gBAAgB1V,MAAMwZ,QAAU,OACrCze,KAAK2a,gBAAgB1V,MAAMkiB,cAAgB,SAE3CnnB,KAAKonB,iBAAmBxS,SAASC,cAAc,OAE/C7U,KAAKqnB,0BAA4BzS,SAASC,cAAc,OACxD7U,KAAKqnB,0BAA0Bta,UAAY,wBAC3C/M,KAAKqnB,0BAA0BpiB,MAAMwZ,QAAU,OAE/Cze,KAAK2a,gBAAgBzE,YAAYlW,KAAKonB,kBACtCpnB,KAAK2a,gBAAgBzE,YAAYlW,KAAKqnB,2BAgB9C,OAnyBYL,EAAA7mB,UAAAmnB,YAAR,SAAoB1D,GAChB,IAAIA,EAAKjJ,gBAOL,MAAM,IAAI4L,MAAM,gCANhBpnB,EAAMooB,qBAAqBvnB,KAAKonB,kBAEhCpnB,KAAKqnB,0BAA0BpiB,MAAMwZ,QAAU,OAE/Cze,KAAKonB,iBAAiBlR,YAAY0N,EAAKjJ,kBAMvCqM,EAAA7mB,UAAAqnB,wBAAR,SAAgCC,GAAhC,IAAAhnB,EAAAT,KAKI,IAJ0CA,KAAK0nB,2BACzC1nB,KAAK0nB,0BAA0B1nB,MAGE,CACnCA,KAAKqnB,0BAA0BpiB,MAAMwZ,QAAU,OAE/C,IAAIkJ,OAAiD/nB,EAErD,GAAII,KAAK4nB,4BACLD,EAAwB3nB,KAAK4nB,4BAA4B5nB,UACtD,CACH,IAAI2P,EAAUR,EAAAuC,QAAQmW,QAAQC,kBAE9B,GAAI1Y,EAAAsB,eAAeyV,QAAQ4B,QAAQC,OAAS/oB,EAAMgpB,YAAYC,UAAW,CACrE,IAAIC,EAA2BhZ,EAAAuC,QAAQmW,QAAQO,yBAEuB,MAAlED,EAAyBA,EAAyB3f,OAAS,KAC3D2f,GAA4B,KAGhCxY,EAAUR,EAAAuC,QAAQmW,QAAQQ,gCAG9B,IAAMC,EAAc,CAChB9U,KAAM,eACN1F,QAAS,MACTkK,KAAM,CACF,CACIxE,KAAM,gBACN+U,oBAAqB,QACrBC,QAAS,CACL,CACIhV,KAAM,UACNiV,KAAM9Y,EACN+Y,aAAc,CACVlV,KAAM,gBACNjC,GAAI,oBAQtBqS,EAAO,IAAIhK,EAAAoK,aACjBJ,EAAKxjB,MAAMkoB,EAAa,IAAI1O,EAAA+O,qBAAqBtb,EAAA6E,SAASK,OAC1DqR,EAAKgF,gBAAkB,SAAClC,GACF,gBAAdA,EAAOnV,KACPpS,EAAMooB,qBAAqB9mB,EAAK4mB,2BAEhC5mB,EAAKooB,sBACDpB,EACA1B,EAAArT,uBAAuBwV,UACvB,KAKZP,EAAwB/D,EAAKjP,SAG7BgT,IACAxoB,EAAMooB,qBAAqBvnB,KAAKqnB,2BAEhCrnB,KAAKqnB,0BAA0BnR,YAAYyR,GAE3C3nB,KAAKqnB,0BAA0BpiB,MAAM6jB,eAAe,cAKxD9B,EAAA7mB,UAAA4oB,sBAAR,SACIrC,EACAC,EACAC,GAHJ,IAAAnmB,EAAAT,KAKI,GAAIA,KAAK4jB,KAAM,CACX,IAAMoF,EAAU,IAAIvC,EAAgBC,EAAQC,EAASC,GAWrD,OAVAoC,EAAQjC,OAAS,SAAC3U,GACdA,EAAOyU,gBAEFpmB,EAAKwoB,iCAAiCD,MAGhChpB,KAAKkpB,2BACblpB,KAAKkpB,yBAAyBlpB,KAAMgpB,EAAStC,QAGpC9mB,EAAYopB,EAE5B,MAAM,IAAIzC,MAAM,iDAIhBS,EAAA7mB,UAAAgpB,yBAAR,SAAiCtC,GAC7B,IAAMuC,EAAU,CACZ5V,KAAM,eACN1F,QAAS,MACTkK,KAAM,CACF,CACIxE,KAAM,YACNvR,MAAO,YACPwmB,KAAwB,IAAlB5B,OAAsBjnB,EAAY,uCACxCyE,MAAM,EACNkkB,oBAAqB,UAEzB,CACI/U,KAAM,YACNiV,KAAM,qGACNpkB,MAAM,EACNkkB,oBAAqB,UAEzB,CACI/U,KAAM,aACNjC,GAAI,YACJ8X,YAAa,oBAEjB,CACI7V,KAAM,YACN+U,oBAAqB,SACrBvd,QAAS,CACL,CACIwI,KAAM,gBACNjC,GAAIyV,EAAesC,yBACnB5kB,MAAO,UAEX,CACI8O,KAAM,gBACNjC,GAAIyV,EAAeuC,6BACnB7kB,MAAO,cAOrBkf,EAAO,IAAIhK,EAAAoK,aAGjB,OAFAJ,EAAKxjB,MAAMgpB,GAEJxF,GAGHoD,EAAA7mB,UAAAqpB,uBAAR,WACQxpB,KAAKinB,2BACLjB,EACI/mB,EAAMqnB,SAASpe,QACf,gGAIRlI,KAAKinB,2BAA4B,GAG7BD,EAAA7mB,UAAAspB,2BAAR,WACI,OAAOzpB,KAAK0pB,6BACN1pB,KAAK0pB,6BAA6B1pB,MAClC,IAAI4Z,EAAA+O,sBAGN3B,EAAA7mB,UAAAwpB,gBAAR,SAAwBP,EAAcxC,GAAtC,IAAAnmB,EAAAT,KAKI,GAJuB,iBAAZopB,GAA4C,iBAApBA,EAAc,OAC7CppB,KAAK4pB,aAAeR,GAGpBppB,KAAK4pB,aACL,IACI,IAAMhG,EAAO,IAAIhK,EAAAoK,aAEbhkB,KAAKoR,aACLwS,EAAKxS,WAAapR,KAAKoR,YAG3B,IAAMyY,EAAuB7pB,KAAKypB,6BAQlC,GANA7F,EAAKxjB,MAAMJ,KAAK4pB,aAAcC,KAET7pB,KAAK8pB,gBACpB9pB,KAAK8pB,eAAe9pB,KAAMA,KAAK4pB,iBAIjC5pB,KAAK+pB,MAAQnG,EAGT5jB,KAAK+pB,MAAMC,gBACXhqB,KAAK+pB,MAAMC,eAAerW,uBAC1B3T,KAAKiqB,oBAELjqB,KAAKiqB,mBACDjqB,KACAA,KAAK+pB,MAAMC,eAAerW,uBAIlC3T,KAAK+pB,MAAMnB,gBAAkB,SAAClC,GAE1BjmB,EAAK+oB,yBAEL/oB,EAAKooB,sBAAsBnC,EAAQX,EAAArT,uBAAuBwX,OAAQ,IAEtElqB,KAAK+pB,MAAMI,oBAAsB,SAACC,aAG9B,GADA3pB,EAAK+oB,yBACDY,aAAiBxQ,EAAAyQ,gBAAkBD,EAAME,qBAAsB,CAC/D,IAAMC,EAASH,EAAMI,4BACrB,GAAID,EAAQ,CACR,IAAME,EAAkB,IAAI7Q,EAAA8Q,UAC5BD,EAAgBF,OAASA,EACzBE,EAAgBE,SAA2B,QAAjB9d,EAAAud,EAAMQ,mBAAW,IAAA/d,OAAA,EAAAA,EAAE8d,UAAW,GACxDF,EAAgBI,MAAyB,QAAjBxR,EAAA+Q,EAAMQ,mBAAW,IAAAvR,OAAA,EAAAA,EAAEwR,MAC3CJ,EAAgBK,KAAwB,QAAjBxR,EAAA8Q,EAAMQ,mBAAW,IAAAtR,OAAA,EAAAA,EAAEwR,KAE1CrqB,EAAKsqB,WAAaX,EAClB3pB,EAAKooB,sBACD4B,EACA1E,EAAArT,uBAAuBwX,OACvB,MAMhBlqB,KAAK+pB,MAAMpV,SAEP3U,KAAK+pB,MAAMpP,kBACX3a,KAAKsnB,YAAYtnB,KAAK+pB,OAElB/pB,KAAKgrB,eACLhrB,KAAKgrB,cAAchrB,MAGnBA,KAAK+pB,MAAMhC,UACX,GACI3Y,EAAAsB,eAAeyV,QAAQ4B,QAAQC,OAC3B/oB,EAAMgpB,YAAYC,WACtBtB,EACIxX,EAAAsB,eAAeyV,QAAQ4B,QAClBkD,qCAET,GACI7b,EAAAsB,eAAeyV,QAAQ4B,QAAQmD,+BAC/B,EAEAlF,EACI/mB,EAAMqnB,SAAS6E,KACf,6CACKvE,EAAqB,IAG9B5mB,KAAK6oB,sBACD7oB,KAAK+pB,MAAMhC,QAAQrB,OACnBX,EAAArT,uBAAuBwV,UACvBtB,EAAqB,OAEtB,CACHZ,EACI/mB,EAAMqnB,SAAS6E,KACf,6CACKvE,EAAqB,GACtB,OACAxX,EAAAsB,eAAeyV,QAAQ4B,QAClBmD,8BACL,MAGR,IAAME,EAASprB,KAAK+pB,MAAMhC,QAAQrB,OAElC1mB,KAAKinB,2BAA4B,EAEjC9O,OAAOkT,WAAW,WACV5qB,EAAKwmB,2BACLxmB,EAAKooB,sBACDuC,EACArF,EAAArT,uBAAuBwV,UACvBtB,EAAqB,IAG9BxX,EAAAsB,eAAeyV,QAAQ4B,QAAQmD,oCAGtC9b,EAAAsB,eAAeyV,QAAQ4B,QAAQC,OAAS/oB,EAAMgpB,YAAYqD,WAGtDtF,EACI/mB,EAAMqnB,SAASpe,QAFnB0e,EAAqB,EAGjB,sCACIA,EACA,0BAKJ,0EAKJxX,EAAAsB,eAAeyV,QAAQ4B,QAClBwD,6CACLnc,EAAAsB,eAAeyV,QAAQ4B,QAAQC,OAAS/oB,EAAMgpB,YAAYiC,UAE1DlE,EAAS/mB,EAAMqnB,SAAS6E,KAAM,kCAE9BnrB,KAAKwnB,wBAAwBxnB,KAAK+pB,MAAMhC,QAAQrB,UAMtE,MAAOxT,GAEL8S,EAAS/mB,EAAMqnB,SAASC,MAAO,YAAcrT,KAKjD8T,EAAA7mB,UAAA0oB,sBAAR,SACInC,EACAC,EACAC,GAEA,GAAIF,aAAkB9M,EAAA4R,gBAAiB,CACnC,IAAIxrB,KAAKyrB,eAOL,MAAM,IAAIlF,MAAM,kDANhB,IAAMzT,EAAU9S,KAAK+oB,sBAAsBrC,EAAQC,EAASC,GAExD9T,GACKA,EAAQgU,aAOrB9mB,KAAK0rB,UACL1rB,KAAK0rB,SAAS1rB,KAAM0mB,IAIpBM,EAAA7mB,UAAAwrB,sBAAR,SAA8B7Y,GAC1B,IAAK9S,KAAK4rB,iBACN,GAAI5rB,KAAK6rB,wBACL7rB,KAAK4rB,iBAAmB5rB,KAAK6rB,wBAAwB7rB,KAAM8S,OACxD,CACH9S,KAAK4rB,iBAAmBhX,SAASC,cAAc,OAC/C7U,KAAK4rB,iBAAiB7e,UAAY,uBAElC,IAAM+e,EAAUlX,SAASC,cAAc,OACvCiX,EAAQ/e,UAAY,cACpB+e,EAAQ7mB,MAAMtB,MAAQ,OACtBmoB,EAAQ7mB,MAAM4S,OAAS,OAEvB7X,KAAK4rB,iBAAiB1V,YAAY4V,GAI1C,OAAO9rB,KAAK4rB,kBAGR5E,EAAA7mB,UAAA4rB,sBAAR,SAA8BjZ,GACtB9S,KAAKgsB,yBACLhsB,KAAKgsB,wBAAwBhsB,KAAM8S,QAGTlT,IAA1BI,KAAK4rB,mBACL5rB,KAAK2a,gBAAgBjB,YAAY1Z,KAAK4rB,kBAEtC5rB,KAAK4rB,sBAAmBhsB,IAIxBonB,EAAA7mB,UAAA8rB,yBAAR,SACIC,EACAC,GAEInsB,KAAKosB,4BACLpsB,KAAKosB,2BAA2BpsB,KAAMksB,EAAUC,IAIhDnF,EAAA7mB,UAAAksB,sBAAR,SAA8BH,GAC1B,OAAOlsB,KAAKssB,wBACNtsB,KAAKssB,wBAAwBtsB,KAAMksB,GACnC9c,EAAAsB,eAAeyV,QAAQoG,iCAGzBvF,EAAA7mB,UAAAqsB,wBAAR,SAAgC1Z,GAAhC,IAAArS,EAAAT,KAKI,IAJqCA,KAAKysB,2BACpCzsB,KAAKysB,0BAA0BzsB,KAAM8S,GAGT,CAC9B,IAAM4Z,EAAoB1sB,KAAKmpB,yBAAyBrW,EAAQ+T,eAChE6F,EAAkB/X,SAClB+X,EAAkB9D,gBAAkB,SAAC+D,GACjC,GAAIlsB,EAAKmjB,MAAQ+I,aAAiC/S,EAAAgT,aAC9C,OAAQD,EAAsBpb,IAC1B,KAAKyV,EAAesC,yBAChB,IAAIuD,OAA+BjtB,EAG/B+sB,EAAsBG,MACoC,iBAA7CH,EAAsBG,KAAiB,YAEpDD,EAAiBF,EAAsBG,KAAiB,WAGxDD,GACApsB,EAAK6mB,YAAY7mB,EAAKmjB,MAEtB9Q,EAAQ+Z,SAAWA,EACd/Z,EAAQgU,cAEbiG,MAAM,6CAGV,MACJ,KAAK/F,EAAeuC,6BAChBvD,EAAS/mB,EAAMqnB,SAASpe,QAAS,qCAEjCzH,EAAK6mB,YAAY7mB,EAAKmjB,MAEtB,MACJ,QACIoC,EACI/mB,EAAMqnB,SAASC,MACf,4DACIoG,EAAsBpb,GACtB,KAGRwb,MAAM5d,EAAAuC,QAAQsb,mBAAmBC,wBAOjDjtB,KAAKsnB,YAAYoF,KAIX1F,EAAA7mB,UAAA8oB,iCAAd,SAA+CnW,iGAC3C,IAAK9S,KAAKyrB,eACN,MAAM,IAAIlF,MAAM,uEAEZG,EAAW5T,EAAO4T,kBACJ9M,EAAAsT,cAClB,GAAMltB,KAAKmtB,gCAAgCra,IAD3C,oBACAjG,EAAAugB,2BACO1G,aAAkB9M,EAAA8Q,UACzB,GAAM1qB,KAAKqtB,kCAAkCva,IADtC,oBACPjG,EAAAugB,oBAEA,MAAM,IAAI7G,MAAM,kFAIVS,EAAA7mB,UAAAgtB,gCAAd,SAA8Cra,uGAC1C,IAAK9S,KAAKyrB,eACN,MAAM,IAAIlF,MAAM,oEAKJ3mB,KAFV0tB,EAAUttB,KAAK2rB,sBAAsB7Y,KAGvC9S,KAAK2a,gBAAgBzE,YAAYoX,GAGjCC,GAAO,kFAGHrB,OAAyCtsB,EAEf,IAA1BkT,EAAQ+T,cACRb,EACI/mB,EAAMqnB,SAAS6E,KACf,gDAAkDrY,EAAQ+T,cAAgB,KAG9Eb,EACI/mB,EAAMqnB,SAAS6E,KACf,mDAAqDrY,EAAQ+T,cAAgB,sBAKtE,gCAAM2G,EAAK/B,eAAegC,iBAAiB3a,kBAAtDoZ,EAAW7S,EAAA+T,sCAEXpH,EAAS/mB,EAAMqnB,SAASC,MAAO,4BAA8BmH,GAE7DF,EAAKzB,sBAAsBjZ,GAE3Bya,GAAO,mBAGPrB,EAAA,kBACIA,aAAoBnG,EAAAhT,iBAApB,YAGA,GAFAya,EAAKzB,sBAAsBjZ,QAEClT,IAAxBssB,EAASlZ,WACT,MAAM,IAAIuT,MACN,uEAIJ4F,EAAgBD,EAASlZ,WAE7B,IACImZ,EAAgBxgB,KAAKvL,MAAM8rB,EAASlZ,YACtC,MAAAsG,IAIF,GAA6B,iBAAlB6S,EACPnG,EACI/mB,EAAMqnB,SAAS6E,KACf,gDACIrY,EAAQ+T,cACR,gBAGR2G,EAAKvB,yBAAyBC,EAAUC,OACrC,IACsB,iBAAlBA,GACmB,iBAA1BA,EAAoB,KAYpB,MAAM,IAAI5F,MACN,yFACW2F,EAASlZ,WAChB,KAbRgT,EACI/mB,EAAMqnB,SAAS6E,KACf,wDACIrY,EAAQ+T,cACR,gBAGR2G,EAAK7D,gBAAgBwC,EAAerZ,EAAQ8T,oBAC5C4G,EAAKvB,yBAAyBC,EAAUsB,EAAK5J,aASjD2J,GAAO,uBACArB,aAAoBnG,EAAA9S,eACrB0a,EAAkBH,EAAKnB,sBAAsBH,KAGpC,GACXpZ,EAAQ+T,cAAgBzX,EAAAsB,eAAeyV,QAAQyH,sBAE/C5H,EACI/mB,EAAMqnB,SAASpe,QACf,4BAAA2lB,OAA4B3B,EAAShZ,MAAMvD,QAAO,kBAAAke,OAAiBF,EAAO,OAG9E7a,EAAQ+T,gBAER,GAAM,IAAIiH,QAAc,SAACC,EAASC,GAC9B7V,OAAOkT,WAAW,WACd0C,KACDJ,OAbP,MAJG,oBAcHtU,EAAA+T,oBAMApH,EACI/mB,EAAMqnB,SAASC,MACf,4BAAAsH,OAA4B3B,EAAShZ,MAAMvD,QAAO,sBAAAke,OAAqB/a,EAAQ+T,cAAa,gBAGhG2G,EAAKzB,sBAAsBjZ,GAE3Bya,GAAO,uCAER,GAAIrB,aAAoBnG,EAAA5S,qBAAsB,CAQjD,GAPA6S,EACI/mB,EAAMqnB,SAAS6E,KACf,8DACIrY,EAAQ+T,cACR,gBAGJ/T,EAAQ+T,eAAiBzX,EAAAsB,eAAeyV,QAAQyH,sBAahD,GAZIK,GAAe,EAEf/B,EAASvY,uBAAyB6Z,EAAKU,mBAGvCD,GAAgBT,EAAKU,iBAAgBV,EAEjC1a,EACAoZ,EAASvY,wBAIbsa,EAAc,CAId,GAFAT,EAAKzB,sBAAsBjZ,QAEGlT,IAA1BssB,EAASxY,aACT,MAAM,IAAI6S,MACN,0FAIRP,EACI/mB,EAAMqnB,SAAS6E,KACf,qBAAuBe,EAASxY,aAAalU,OAG7CguB,EAAKW,mBAELX,EAAKW,mBAAkBX,EAAO1a,EAASoZ,EAASxY,eAEhD8Z,EAAKhB,wBAAwB1Z,GAEvBpG,EACFyL,OAAOiW,SACNjW,OAAOkW,WAAajf,EAAAsB,eAAeyV,QAAQmI,iBACxC,EACFhW,EACFH,OAAOoW,SACNpW,OAAOqW,YAAcpf,EAAAsB,eAAeyV,QAAQsI,kBACzC,EAERtW,OAAOuW,KACHxC,EAASxY,aAAalU,MACtB0sB,EAASxY,aAAahP,MAChBwnB,EAASxY,aAAahP,MACtB,UACN,SAAAmpB,OAASze,EAAAsB,eAAeyV,QAAQmI,gBAAe,YAAAT,OAAWze,EAAAsB,eAAeyV,QAAQsI,iBAAgB,UAAAZ,OAASnhB,EAAI,SAAAmhB,OAAQvV,WAKlI0N,EACI/mB,EAAMqnB,SAASC,MACf,0CACIzT,EAAQ+T,cACR,eAGRkG,MAAM5d,EAAAuC,QAAQsb,mBAAmB2B,0CAMrC,MAAM,IAAIpI,MAAM,4BAA8B5a,KAAKijB,UAAU1C,yDAjLjEqB,EAAI,iFAuLFvG,EAAA7mB,UAAAktB,kCAAd,SAAgDva,yGAC5C,IAAK9S,KAAKyrB,eACN,MAAM,IAAIlF,MAAM,iEAEdgE,EAAUzX,EAAQ4T,OAAqB6D,QACzCvqB,KAAK+qB,WAAL,YACA/qB,KAAK+qB,WAAW8D,uBACZ3C,OAAyCtsB,mBAE9B,gCAAMI,KAAKyrB,eAAegC,iBAAiB3a,kBAAtDoZ,EAAWrf,EAAAugB,sCAEXptB,KAAK+qB,WAAW+D,mBAAmBvE,EAAQ,kBAC3CvE,EAAS/mB,EAAMqnB,SAASC,MAAO,4BAA8BwI,gBAEjE,GAAI7C,EACA,GAAIA,aAAoBnG,EAAAhT,gBAAiB,CAErC,KADMic,EAAc9C,EAASlZ,YAyBzB,MADAhT,KAAK+qB,WAAW+D,mBAAmBvE,EAAQ,kBACrC,IAAIhE,MACN,qEAxBA0I,OAAc,EAClB,IACIA,EAAiBtjB,KAAKvL,MAAM4uB,GAC9B,MAAO9b,GAEL,MADAlT,KAAK+qB,WAAW+D,mBAAmBvE,EAAQ,kBACrC,IAAIhE,MACN,oEACIyI,GAGZ,GAA8B,iBAAnBC,EAKP,MADAjvB,KAAK+qB,WAAW+D,mBAAmBvE,EAAQ,yBACrC,IAAIhE,MACN,uFACWyI,EACP,KAPRhvB,KAAK+qB,WAAWmE,cAAc3E,EAAQ0E,GACtCjvB,KAAKisB,yBAAyBC,EAAU8C,OAe7C,MAAI9C,aAAoBnG,EAAA9S,eAY3B,MADAjT,KAAK+qB,WAAW+D,mBAAmBvE,EAAQ,kBACrC,IAAIhE,MAAM,4BAA8B5a,KAAKijB,UAAU1C,IAX7DlsB,KAAK+qB,WAAW+D,mBACZvE,EACA2B,EAAShZ,MAAMvD,SAAW,yBAE9BqW,EACI/mB,EAAMqnB,SAASC,MACf,4BAAAsH,OAA4B3B,EAAShZ,MAAMvD,QAAO,MAEtD3P,KAAKqsB,sBAAsBH,QAM/BlsB,KAAK+qB,WAAWoE,0DAiE5BnI,EAAA7mB,UAAAivB,YAAA,WACQpvB,KAAK+pB,OAAS/pB,KAAK+pB,MAAMhC,SACzB/nB,KAAK6oB,sBAAsB7oB,KAAK+pB,MAAMhC,QAAQrB,OAAQX,EAAArT,uBAAuBwX,OAAQ,IAI7FlD,EAAA7mB,UAAAkvB,QAAA,SAAQjG,GACJppB,KAAK2pB,gBAAgBP,EAAS,IAGlCzhB,OAAAC,eAAIof,EAAA7mB,UAAA,OAAI,KAAR,WACI,OAAOH,KAAK+pB,uCA5yBQ/C,EAAAsC,yBAA2B,kBAC3BtC,EAAAuC,6BAA+B,sBA6yB3DvC,EA/yBA,GAAa1mB,EAAA0mB,uICxEb,IAAAsI,EAAApwB,EAAA,KACMqwB,EAAMrwB,EAAQ,KAEpBswB,EAAA,WAWI,SAAAA,EAAY9hB,GARJ1N,KAAAyvB,YAAkD,QAStC7vB,IAAZ8N,IACA1N,KAAK0vB,oBAAsB1vB,KAAK2vB,sBAEhC3vB,KAAK4vB,MAAQliB,EAAQkiB,MACrB5vB,KAAK6vB,MAAQniB,EAAQmiB,OAqDjC,OAjDIL,EAAArvB,UAAA2vB,gBAAA,SAAgBhtB,GACZ,OAAO0sB,EAAkBO,gBAAgB9Y,QAAQnU,IAAS,GAG9D0sB,EAAArvB,UAAA6vB,UAAA,WACIhwB,KAAKyvB,YAAYzmB,KACb,CACIinB,MAAOjwB,KAAKiwB,MACZC,OAAQlwB,KAAKkwB,UAIzBV,EAAArvB,UAAAgwB,iBAAA,WACI,GAAgC,IAA5BnwB,KAAKyvB,YAAYjnB,OACjB,MAAM,IAAI+d,MAAM,oDAGpB,IAAI6J,EAAepwB,KAAKyvB,YAAYY,MAEpCrwB,KAAKiwB,MAAQG,EAAaH,MAC1BjwB,KAAKkwB,OAASE,EAAaF,QAG/BvoB,OAAAC,eAAI4nB,EAAArvB,UAAA,QAAK,KAAT,WACI,YAAuBP,IAAhBI,KAAKswB,OAAuBtwB,KAAKswB,OAAStwB,KAAK4vB,WAG1D,SAAUpwB,GACNQ,KAAKswB,OAAS9wB,mCAGlBgwB,EAAArvB,UAAAwvB,oBAAA,WAEI,IACMY,EADUhB,EAAIzhB,QACS0iB,MAAM,KAE/BC,EAAa,GAMjB,OAJIF,EADe,KAEfE,EAAaF,EAFE,GAEuBC,MAAM,MAGzC,CACHE,MAASC,SAASJ,EAAa,IAC/BK,MAASD,SAASJ,EAAa,IAC/BM,MAASF,SAASF,EAAW,IAC7BttB,OAAUstB,EAAW,IAAM,KAjEXjB,EAAAO,gBAAkB,CAAC,QAAS,QAAS,QAAS,SAAU,QAAS,uBAoE7FP,EArEA,GAuEAsB,EAAA,WASI,SAAAA,IACI9wB,KAAK+wB,QAAU,IAAIzB,EAAI0B,mBAAmBhxB,MAgBlD,OAbI8wB,EAAA3wB,UAAA+P,SAAA,SAAS+gB,GACL,IAAIC,EAAcD,EAAKzoB,OAAS,GAAiB,MAAZyoB,EAAK,GAAc,SAAWA,EAAOA,EAE1E,OAAOjxB,KAAK+wB,QAAQ7gB,SAASghB,IAGjCJ,EAAA3wB,UAAA+b,SAAA,SAAS+U,EAAc7G,GACnBpqB,KAAK+wB,QAAQ7U,SAAS+U,EAAM7G,IAGhC0G,EAAA3wB,UAAA2N,QAAA,WACI,OAAO9N,KAAK+wB,QAAQjjB,WAE5BgjB,EA1BA,GA+BApgB,EAAA,oBAAAA,KA2BA,OADWA,EAAAygB,8CAAkFvxB,EAC7F8Q,EA3BA,GAAapQ,EAAAoQ,iBAgDb,IAAA0gB,EAAA,WAoTI,SAAAA,EAAYhI,GACRppB,KAAKqxB,iBAAmBD,EAASE,QAAQlI,GAmFjD,OApYmBgI,EAAAE,QAAf,SAAuBjhB,GACnB,GAAoB,iBAATA,EACP,OAAO+gB,EAASG,wBAAwBlhB,GAEvC,GAAoB,iBAATA,GAA8B,OAATA,EAAe,CAChD,GAAIjI,MAAMC,QAAQgI,GAAO,CAGrB,IAFA,IAAI/M,EAAgB,GAEHgF,EAAA,EAAAkpB,EAAAnhB,EAAA/H,EAAAkpB,EAAAhpB,OAAAF,IAAM,CAAlB,IAAIwO,EAAI0a,EAAAlpB,GACThF,EAAO0F,KAAKooB,EAASE,QAAQxa,IAGjC,OAAOxT,EAIHA,EAAS,GAEb,IAHA,IAGgBuJ,EAAA,EAAA4kB,EAHL9pB,OAAOiB,KAAKyH,GAGPxD,EAAA4kB,EAAAjpB,OAAAqE,IAAM,CAAjB,IAAI/D,EAAG2oB,EAAA5kB,GACRvJ,EAAOwF,GAAOsoB,EAASE,QAAQjhB,EAAKvH,IAGxC,OAAOxF,EAIX,OAAO+M,GAIA+gB,EAAAM,8BAAf,SAA6CC,EAA4BjkB,EAA4BkkB,GACjG,IAAIC,EAAS,IAAIf,EACjBe,EAAOjC,MAAQliB,EAAQkiB,MACvBiC,EAAO5B,MAAQviB,EAAQuiB,MACvB4B,EAAO3B,OAASxiB,EAAQwiB,OACxB2B,EAAOhC,MAAQniB,EAAQmiB,MACvBgC,EAAOnC,oBAAsBhiB,EAAQgiB,oBAErC,IAAIoC,OAAmClyB,EAmBvC,GAjBIgyB,KACAE,EAAU,IAAIxC,EAAIyC,SACVC,iBAAmB,SAACf,GACxB,IAAIgB,OAAwCryB,EAM5C,OAJI8Q,EAAeygB,2CACfc,EAAoBvhB,EAAeygB,yCAAyCF,IAGzEgB,GAAwC,KAAOhB,EAAO,MAQjEU,EAAWne,OAAS8b,EAAI4C,eAAeC,QAAUP,EAAoB,CAGrE,IAFA,IAAItuB,EAAS,GAEegF,EAAA,EAAAuE,EAAA8kB,EAAW9R,SAAXvX,EAAAuE,EAAArE,OAAAF,IAAqB,CAA5C,IAAI8pB,EAAevlB,EAAAvE,GAChB+pB,OAAgB,EAEpB,IACIA,EAAmBD,EAAgBE,YAAYT,EAAQC,GAE3D,MAAOS,GAEHF,EAAmB,CACf7yB,WAAOI,EACPsT,MAAOqf,GAIXF,EAAiBnf,QACjBmf,EAAiB7yB,MAAQ,KAAO4yB,EAAgB1d,WAAa,KAGjEpR,GAAU+uB,EAAiB7yB,MAAMkV,WAGrC,MAAO,CAAElV,MAAO8D,EAAQ4P,WAAOtT,GAGnC,OAAO+xB,EAAWW,YAAYT,EAAQC,IAS5BV,EAAAG,wBAAd,SAAsCiB,GAgBlC,GAAIA,EAAmBvb,QAAQ,OAAS,EAAG,CACvC,IAAIwb,EAAmBnD,EAAIoD,WAAWtyB,MAAM,IAAMoyB,EAAqB,IAhBzC,SAAChf,GAC/B,IAAImf,EAAmBrD,EAAIsD,oBAAoBC,kBAAkB7c,IAAIxC,GAErE,OAAImf,GAIO,IAAIrD,EAAIwD,oBACXtf,EACA,SAACme,EAA4BoB,EAA4BjB,GAA2B,MAAM,IAAIvL,MAAM,oBAAsB/S,IAC1H8b,EAAI0D,WAAWtnB,UAQvB,GAA8B,WAA1B+mB,EAAiBjf,KAAmB,CACpC,KAAyC,IAArCif,EAAiB5S,SAASrX,QAAkBiqB,EAAiB5S,SAAS,aAAcyP,EAAI2D,UAIxF,OAAOR,EAAiB5S,SAAS,GAEhC,GAAyC,IAArC4S,EAAiB5S,SAASrX,OAAc,CAC7C,IAAI0qB,EAAaT,EAAiB5S,SAAS,GAE3C,GAAIqT,aAAsB5D,EAAI2D,UAAiC,KAArBC,EAAW1zB,SAAkBizB,EAAiB5S,SAAS,aAAcyP,EAAI2D,UAK/G,OAAOR,EAAiB5S,SAAS,GAKzC,OAAO4S,GAKf,OAAOD,GAcGpB,EAAA+B,sBAAd,SAAoCxB,EAA4BjkB,EAA6BkkB,GACzF,OAAOR,EAASM,8BAA8BC,EAAY,IAAInC,EAAkB9hB,GAAUkkB,IAMtFR,EAAAjxB,UAAAizB,mBAAR,SAA2B/iB,GAIvB,IAHA,IAAI/M,EAAS,GAGGgF,EAAA,EAAA+qB,EAFL1rB,OAAOiB,KAAKyH,GAEP/H,EAAA+qB,EAAA7qB,OAAAF,IAAM,CAAjB,IAAIQ,EAAGuqB,EAAA/qB,GACR,IAAKtI,KAAKob,SAAS0U,gBAAgBhnB,GAAM,CACrC,IAAItJ,EAAQQ,KAAKszB,eAAejjB,EAAKvH,SAEvBlJ,IAAVJ,IACA8D,EAAOwF,GAAOtJ,IAK1B,OAAO8D,GAGH8tB,EAAAjxB,UAAAmzB,eAAR,SAAuBjjB,GACnB,IAAI/M,EAIJ,GAFAtD,KAAKob,SAAS4U,YAEV5nB,MAAMC,QAAQgI,GAAO,CAGrB,IAFA,IAAIkjB,EAAmB,GAENjrB,EAAA,EAAAkrB,EAAAnjB,EAAA/H,EAAAkrB,EAAAhrB,OAAAF,IAAM,CAAlB,IAAIwO,EAAI0c,EAAAlrB,GACLmrB,EAAezzB,KAAKszB,eAAexc,GAElB,OAAjB2c,IACIrrB,MAAMC,QAAQorB,GACdF,EAAYA,EAAU1F,OAAO4F,GAG7BF,EAAUvqB,KAAKyqB,IAK3BnwB,EAASiwB,OAER,GAAIljB,aAAgBif,EAAIoD,WAAY,CAGrC,IAFIL,EAAmBjB,EAASM,8BAA8BrhB,EAAMrQ,KAAKob,UAAU,IAE7DlI,MAIlB,MAAM,IAAIqT,MAAM8L,EAAiBnf,OAHjC5P,EAAS+uB,EAAiB7yB,WAM7B,GAAoB,iBAAT6Q,GAA8B,OAATA,EAAe,CAChD,IAAIqjB,EAAOrjB,EAAY,MACnBsjB,EAActjB,EAAY,MAC1BujB,GAA8B,EAC9BC,OAAY,EAEhB,QAAoBj0B,IAAhB+zB,EACAE,EAAe,MAAEj0B,OAEhB,CACD,GAAI+zB,aAAuBrE,EAAIoD,WAAY,CAGvC,IAFIL,EAAmBjB,EAASM,8BAA8BiC,EAAa3zB,KAAKob,UAAU,IAEpElI,MAIlB,MAAM,IAAIqT,MAAM8L,EAAiBnf,OAHjCygB,EAActB,EAAiB7yB,MAOnC4I,MAAMC,QAAQsrB,IACdE,EAAeF,EACfC,GAAqB,GAGrBC,EAAe,CAAEF,GAIzBrwB,EAAS,GAET,IAAK,IAAIwS,EAAI,EAAGA,EAAI+d,EAAarrB,OAAQsN,IAAK,CACtC8d,IACA5zB,KAAKob,SAAS8U,OAASpa,QAGHlW,IAApBi0B,EAAa/d,KACb9V,KAAKob,SAAS6U,MAAQ4D,EAAa/d,IAGvC,IAAIge,GAAa,EAEjB,GAAIJ,aAAgBpE,EAAIoD,WAAY,CAChC,IAAIL,EACA0B,GAAqB,GADrB1B,EAAmBjB,EAASM,8BAA8BgC,EAAM1zB,KAAKob,UAAU,IAI7DlI,QAClB6gB,EAA8C,kBAA3B1B,EAAiB7yB,OAAuB6yB,EAAiB7yB,OAG3E6yB,EAAiB7yB,OAElBQ,KAAKg0B,0BAA0BhrB,KAAK,iDAAiD0qB,EAAI,2DAG7FI,GAAcC,OACPL,IAEP1zB,KAAKg0B,0BAA0BhrB,KAAK,SAAS0qB,EAAI,yFACjDI,GAAa,GAGjB,IAAKA,EAAY,CACb,IAAIG,EAAiBj0B,KAAKozB,mBAAmB/iB,GAEtB,OAAnB4jB,GACA3wB,EAAO0F,KAAKirB,IAKF,IAAlB3wB,EAAOkF,OACPlF,EAAS,KAEc,IAAlBA,EAAOkF,SACZlF,EAASA,EAAO,SAIpBA,EAAS+M,EAKb,OAFArQ,KAAKob,SAAS+U,mBAEP7sB,GAiFX8tB,EAAAjxB,UAAA+zB,OAAA,SAAOxmB,GAGH,OAFA1N,KAAKg0B,0BAA4B,GACjCh0B,KAAKob,SAAW,IAAIoU,EAAkB9hB,GAC/B1N,KAAKszB,eAAetzB,KAAKqxB,mBAO7BD,EAAAjxB,UAAAg0B,iCAAP,WACI,OAAOn0B,KAAKg0B,2BAEpB5C,EAxYA,GAAa9wB,EAAA8wB,oxECjIb,SAASgD,EAAsBla,EAA+B+W,EAAcoD,GACxE,GAAwB,kBAAb,EAAwB,OAAO,KAC1C,OAAQna,EAAO1G,MACX,IAAK,QACD,OAAIpL,MAAMC,QAAQ6R,EAAOoa,OA2DrC,SAA6Bpa,EAAqB+W,EAAcoD,WAC5D,OAAKjsB,MAAMC,QAAQ6R,EAAOoa,OACnB,CACH9gB,KAAM,YACN8gB,MAAKrZ,IAAA,GACEsZ,EAAqBra,EAAQ+W,EAAMoD,IAAM,GAG1C,QAFChb,EAAY,QAAZxM,EAAAqN,EAAOoa,aAAK,IAAAznB,OAAA,EAAAA,EAAE2nB,IAAI,SAAC1d,EAA6B2d,GAC/C,OAAOL,EAAsBtd,EAASma,EAAI,IAAIwD,EAAG,IAAKJ,EAAQ,YAChE,IAAAhb,IAAI,IAAE,IAPyB,KA3DtBqb,CAAoBxa,EAAQ+W,EAAMoD,GAuEzD,SAA4Bna,EAAqB+W,EAAcoD,GAC3D,MAAO,CACH7gB,KAAM,YACN8gB,MAAKrZ,EAAA,GACEsZ,EAAqBra,EAAQ+W,EAAMoD,IAAM,IAzEjCM,CAAmBza,EAAQ+W,EAAMoD,GAEhD,IAAK,SACD,OAAOO,EAAqB1a,EAAQ+W,EAAMoD,GAC9C,IAAK,UACD,OAsFZ,SAA+Bna,EAAqB+W,GAChD,MAAO,CACHzd,KAAM,eACNjC,GAAI0f,EACJvsB,MAAOwV,EAAOxV,MACdX,MAAOmW,EAAO2a,YACdr1B,MAAO0a,EAAOja,SA5FH60B,CAAsB5a,EAAQ+W,GACzC,IAAK,UACL,IAAK,SACD,OA6FZ,SAA8B/W,EAAqB+W,WAC/C,MAAO,CACHzd,KAAM,eACNjC,GAAI0f,EACJvsB,MAAOwV,EAAOxV,MACd2kB,YAAanP,EAAO2a,YACpBr1B,MAAO0a,EAAOja,QACdgZ,IAA4B,QAAvBpM,EAAAqN,EAAO6a,wBAAgB,IAAAloB,IAAIqN,EAAO8a,QACvCC,IAA4B,QAAvB5b,EAAAa,EAAOgb,wBAAgB,IAAA7b,IAAIa,EAAOib,SArG5BC,CAAqBlb,EAAQ+W,GACxC,IAAK,SACD,OAAI/W,EAAOmb,KAuGvB,SAAiCnb,EAAqB+W,GAClD,MAAO,CACHzd,KAAM,kBACNjC,GAAI0f,EACJvsB,MAAOwV,EAAOxV,MACd4wB,QAASpb,EAAOmb,KAAKb,IAAI,SAAC1d,GACtB,MAAO,CACHpS,MAAOoS,EACPtX,MAAOsX,KAGfuS,YAAanP,EAAO2a,YACpBr1B,MAAO0a,EAAOja,SAlHCs1B,CAAwBrb,EAAQ+W,GAsHvD,SAA4B/W,EAAqB+W,GAC7C,MAAO,CACHzd,KAAM,aACNjC,GAAI0f,EACJvsB,MAAOwV,EAAOxV,MACd2kB,YAAanP,EAAO2a,YACpBr1B,MAAO0a,EAAOja,QACdu1B,UAAWtb,EAAOsb,UAClBC,MAAOvb,EAAOwb,SA5HCC,CAAmBzb,EAAQ+W,GAE1C,IAAK,YACL,IAAK,OACL,IAAK,OACD,OA2HZ,SAA4B/W,EAAqB+W,GAC7C,MAAO,CACHzd,KAAM,aACNjC,GAAI0f,EACJvsB,MAAOwV,EAAOxV,MACd2kB,YAAanP,EAAO2a,YACpBr1B,MAAO0a,EAAOja,SAjIH21B,CAAmB1b,EAAQ+W,GACtC,QACI,OAAO,MAQnB,SAAS4E,EAAgBxB,GACbA,EAUZ,SAASE,EAAqBra,EAAqB+W,EAAcoD,GAC7D,MAAO,CACHna,EAAOxV,MAAQ,CACX8O,KAAM,YACN1R,KAAM+zB,EAAgBxB,GACtB5L,KAAMvO,EAAOxV,OACb,KACJwV,EAAO2a,YAAc,CACjBrhB,KAAM,YACN1R,KAAM+zB,EAAgBxB,EAAQ,GAC9BlyB,UAAU,EACVkC,MAAM,EACNokB,KAAMvO,EAAO2a,aACb,MA2BZ,SAASD,EAAqB1a,EAAqB+W,EAAcoD,WAC7D,MAAO,CACH7gB,KAAM,YACN8gB,MAAKrZ,IAAA,GACEsZ,EAAqBra,EAAQ+W,EAAMoD,IAAM,GAG1C,QAFChb,EAAe,QAAfxM,EAAAqN,EAAO4b,gBAAQ,IAAAjpB,OAAA,EAAAA,EAAE2nB,IAAI,SAAC/hB,GACrB,OAAO2hB,EAAsBla,EAAO6b,WAAWtjB,GAAcwe,EAAI,IA7DjF,SAAwBxe,GACpB,OAAOujB,mBAAmBvjB,GAAUwjB,QAAQ,IAAK,OA4DgCC,CAAezjB,GAAa4hB,EAAQ,YAC3G,IAAAhb,IAAI,IAAE,6EA9GpB/Y,EAAA61B,eAAA,SAA+Bjc,GAC9B,IACC,MAAO,CACN1G,KAAM,eACNwE,KAAM,CACL4c,EAAqB1a,EAAQ,GAAI,KAGlC,MAAOvT,GAER,YADAoV,QAAQ7I,MAAMvM,ukBCGhB,IAAAzB,EAAA,oBAAAA,KAOA,OANoBA,EAAAlD,QAAqB,UACrBkD,EAAAC,SAAuB,WACvBD,EAAA8C,OAAmB,SACnB9C,EAAA+C,KAAe,OACf/C,EAAA7B,UAAyB,YACzB6B,EAAAgD,QAAqB,UACzChD,EAPA,GAAa5E,EAAA4E,iBASb,IAAAkxB,EAAA,oBAAAA,KAIA,OAHoBA,EAAAp0B,QAAqB,UACrBo0B,EAAAC,SAAuB,WACvBD,EAAAE,YAA6B,cACjDF,EAJA,GAAa91B,EAAA81B,cAMb,IAAAG,EAAA,oBAAAA,KAGA,OAFoBA,EAAAC,QAAqB,UACrBD,EAAAE,UAAyB,YAC7CF,EAHA,GAAaj2B,EAAAi2B,aAMb,SAAYp1B,GACRA,IAAA,eACAA,IAAA,qBACAA,IAAA,iBACAA,IAAA,mBACAA,IAAA,iBALJ,CAAYb,EAAAa,OAAAb,EAAAa,KAAI,KAQhB,SAAYu1B,GACRA,IAAA,iBACAA,IAAA,mBACAA,IAAA,iBAHJ,CAAYp2B,EAAAo2B,YAAAp2B,EAAAo2B,UAAS,KAMrB,SAAYC,GACRA,IAAA,qBACAA,IAAA,qBAFJ,CAAYr2B,EAAAq2B,4BAAAr2B,EAAAq2B,0BAAyB,KAKrC,SAAYnwB,GACRA,IAAA,mBACAA,IAAA,iBAFJ,CAAYlG,EAAAkG,WAAAlG,EAAAkG,SAAQ,KAKpB,SAAYzE,GACRA,IAAA,iBACAA,IAAA,qBACAA,IAAA,mBACAA,IAAA,iBACAA,IAAA,2BALJ,CAAYzB,EAAAyB,WAAAzB,EAAAyB,SAAQ,KAQpB,SAAY60B,GACRA,IAAA,iCACAA,IAAA,qBAFJ,CAAYt2B,EAAAs2B,aAAAt2B,EAAAs2B,WAAU,KAKtB,SAAYv0B,GACRA,IAAA,qBACAA,IAAA,qBACAA,IAAA,mBAHJ,CAAY/B,EAAA+B,aAAA/B,EAAA+B,WAAU,KAMtB,SAAYI,GACRA,IAAA,qBACAA,IAAA,yBAFJ,CAAYnC,EAAAmC,WAAAnC,EAAAmC,SAAQ,KAKpB,SAAYgB,GACRA,IAAA,eACAA,IAAA,iBACAA,IAAA,qBACAA,IAAA,mBACAA,IAAA,iBACAA,IAAA,2BACAA,IAAA,qBAPJ,CAAYnD,EAAAmD,UAAAnD,EAAAmD,QAAO,KAUnB,SAAYvB,GACRA,IAAA,qBACAA,IAAA,eACAA,IAAA,iBACAA,IAAA,mBACAA,IAAA,eACAA,IAAA,qBACAA,IAAA,yBAPJ,CAAY5B,EAAA4B,YAAA5B,EAAA4B,UAAS,KAUrB,SAAY20B,GACRA,IAAA,eACAA,IAAA,mBACAA,IAAA,iBAHJ,CAAYv2B,EAAAu2B,sBAAAv2B,EAAAu2B,oBAAmB,KAM/B,SAAYlY,GACRA,IAAA,aACAA,IAAA,mBACAA,IAAA,mBAHJ,CAAYre,EAAAqe,oBAAAre,EAAAqe,kBAAiB,KAM7B,SAAY9Y,GACRA,IAAA,eACAA,IAAA,mBACAA,IAAA,iBACAA,IAAA,qBAJJ,CAAYvF,EAAAuF,kBAAAvF,EAAAuF,gBAAe,KAO3B,SAAYixB,GACRA,IAAA,qBACAA,IAAA,mBAFJ,CAAYx2B,EAAAw2B,aAAAx2B,EAAAw2B,WAAU,KAKtB,SAAYhyB,GACRA,IAAA,mBACAA,IAAA,iBAFJ,CAAYxE,EAAAwE,qBAAAxE,EAAAwE,mBAAkB,KAK9B,SAAYY,GACRA,IAAA,2BACAA,IAAA,uBAFJ,CAAYpF,EAAAoF,cAAApF,EAAAoF,YAAW,KAKvB,SAAYqxB,GACRA,IAAA,iBACAA,IAAA,2CACAA,IAAA,uCACAA,IAAA,mBAJJ,CAAYz2B,EAAAy2B,WAAAz2B,EAAAy2B,SAAQ,KAOpB,SAAY/wB,GACRA,IAAA,6BACAA,IAAA,2BAFJ,CAAY1F,EAAA0F,sBAAA1F,EAAA0F,oBAAmB,KAK/B,SAAYgxB,GACRA,IAAA,eACAA,IAAA,aACAA,IAAA,aACAA,IAAA,iBACAA,IAAA,uBALJ,CAAY12B,EAAA02B,iBAAA12B,EAAA02B,eAAc,KAQ1B,SAAYC,GACRA,IAAA,mBACAA,IAAA,iBAFJ,CAAY32B,EAAA22B,qBAAA32B,EAAA22B,mBAAkB,KAK9B,SAAYpnB,GACRA,IAAA,iBACAA,IAAA,mBACAA,IAAA,2BAHJ,CAAYvP,EAAAuP,kBAAAvP,EAAAuP,gBAAe,KAM3B,SAAY2B,GACRA,IAAA,eACAA,IAAA,+CACAA,IAAA,iDACAA,IAAA,2BACAA,IAAA,iDACAA,IAAA,qDACAA,IAAA,+CACAA,IAAA,qCACAA,IAAA,2CACAA,IAAA,mCACAA,IAAA,0CACAA,IAAA,4CACAA,IAAA,oDACAA,IAAA,8BACAA,IAAA,8CACAA,IAAA,kEACAA,IAAA,gFACAA,IAAA,kBAlBJ,CAAYlR,EAAAkR,kBAAAlR,EAAAkR,gBAAe,KAqB3B,SAAY0lB,GACRA,IAAA,uCACAA,IAAA,6BACAA,IAAA,6CAHJ,CAAY52B,EAAA42B,qBAAA52B,EAAA42B,mBAAkB,KAM9B,SAAYC,GACRA,IAAA,6BACAA,IAAA,iCAFJ,CAAY72B,EAAA62B,gBAAA72B,EAAA62B,cAAa,KAKzB,SAAYlP,GACRA,IAAA,uBACAA,IAAA,mBACAA,IAAA,yBAHJ,CAAY3nB,EAAA2nB,cAAA3nB,EAAA2nB,YAAW,KAMvB,SAAY3B,GACRA,IAAA,eACAA,IAAA,qBACAA,IAAA,iBAHJ,CAAYhmB,EAAAgmB,WAAAhmB,EAAAgmB,SAAQ,KAMpB,SAAY3K,GACRA,IAAA,mCACAA,IAAA,2CACAA,IAAA,2BACAA,IAAA,uBAJJ,CAAYrb,EAAAqb,2BAAArb,EAAAqb,yBAAwB,KAOpC,SAAYyb,GACRA,IAAA,mBACAA,IAAA,eACAA,IAAA,aACAA,IAAA,eACAA,IAAA,uBALJ,CAAY92B,EAAA82B,aAAA92B,EAAA82B,WAAU","file":"34.9450a9c976adac8268dd.js","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport * as Enums from \"./enums\";\r\nimport * as Utils from \"./utils\";\r\nimport * as Shared from \"./shared\";\r\nimport { HostCapabilities } from \"./host-capabilities\";\r\n\r\nfunction parseHostConfigEnum(\r\n    targetEnum: { [s: number]: string },\r\n    value: string | number,\r\n    defaultValue: number\r\n): number {\r\n    if (typeof value === \"string\") {\r\n        const parsedValue = Utils.parseEnum(targetEnum, value, defaultValue);\r\n\r\n        return parsedValue !== undefined ? parsedValue : defaultValue;\r\n    } else if (typeof value === \"number\") {\r\n        return value;\r\n    } else {\r\n        return defaultValue;\r\n    }\r\n}\r\n\r\nexport class ColorDefinition {\r\n    default: string = \"#000000\";\r\n    subtle: string = \"#666666\";\r\n\r\n    constructor(defaultColor?: string, subtleColor?: string) {\r\n        if (defaultColor) {\r\n            this.default = defaultColor;\r\n        }\r\n\r\n        if (subtleColor) {\r\n            this.subtle = subtleColor;\r\n        }\r\n    }\r\n\r\n    parse(obj?: any) {\r\n        if (obj) {\r\n            this.default = obj[\"default\"] || this.default;\r\n            this.subtle = obj[\"subtle\"] || this.subtle;\r\n        }\r\n    }\r\n}\r\n\r\nexport class TextColorDefinition extends ColorDefinition {\r\n    readonly highlightColors = new ColorDefinition(\"#22000000\", \"#11000000\");\r\n\r\n    parse(obj?: any) {\r\n        super.parse(obj);\r\n\r\n        if (obj) {\r\n            this.highlightColors.parse(obj[\"highlightColors\"]);\r\n        }\r\n    }\r\n}\r\n\r\nexport class AdaptiveCardConfig {\r\n    allowCustomStyle: boolean = false;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.allowCustomStyle = obj[\"allowCustomStyle\"] || this.allowCustomStyle;\r\n        }\r\n    }\r\n}\r\n\r\nexport class ImageSetConfig {\r\n    imageSize: Enums.Size = Enums.Size.Medium;\r\n    maxImageHeight: number = 100;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.imageSize = obj[\"imageSize\"] != null ? obj[\"imageSize\"] : this.imageSize;\r\n            this.maxImageHeight = Utils.parseNumber(obj[\"maxImageHeight\"], 100)!;\r\n        }\r\n    }\r\n\r\n    toJSON() {\r\n        return {\r\n            imageSize: Enums.Size[this.imageSize],\r\n            maxImageHeight: this.maxImageHeight\r\n        };\r\n    }\r\n}\r\n\r\nexport class MediaConfig {\r\n    defaultPoster?: string;\r\n    allowInlinePlayback: boolean = true;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.defaultPoster = obj[\"defaultPoster\"];\r\n            this.allowInlinePlayback = obj[\"allowInlinePlayback\"] || this.allowInlinePlayback;\r\n        }\r\n    }\r\n\r\n    toJSON() {\r\n        return {\r\n            defaultPoster: this.defaultPoster,\r\n            allowInlinePlayback: this.allowInlinePlayback\r\n        };\r\n    }\r\n}\r\n\r\nexport class TableConfig {\r\n    cellSpacing: number = 8;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.cellSpacing =\r\n                obj.cellSpacing && typeof obj.cellSpacing === \"number\"\r\n                    ? obj.cellSpacing\r\n                    : this.cellSpacing;\r\n        }\r\n    }\r\n\r\n    toJSON() {\r\n        return {\r\n            cellSpacing: this.cellSpacing\r\n        };\r\n    }\r\n}\r\n\r\nexport class BaseTextDefinition {\r\n    size: Enums.TextSize = Enums.TextSize.Default;\r\n    color: Enums.TextColor = Enums.TextColor.Default;\r\n    isSubtle: boolean = false;\r\n    weight: Enums.TextWeight = Enums.TextWeight.Default;\r\n\r\n    constructor(obj?: any) {\r\n        this.parse(obj);\r\n    }\r\n\r\n    parse(obj: any) {\r\n        if (obj) {\r\n            this.size = parseHostConfigEnum(Enums.TextSize, obj[\"size\"], this.size);\r\n            this.color = parseHostConfigEnum(Enums.TextColor, obj[\"color\"], this.color);\r\n            this.isSubtle =\r\n                obj.isSubtle !== undefined && typeof obj.isSubtle === \"boolean\"\r\n                    ? obj.isSubtle\r\n                    : this.isSubtle;\r\n            this.weight = parseHostConfigEnum(\r\n                Enums.TextWeight,\r\n                obj[\"weight\"],\r\n                this.getDefaultWeight()\r\n            );\r\n        }\r\n    }\r\n\r\n    getDefaultWeight(): Enums.TextWeight {\r\n        return Enums.TextWeight.Default;\r\n    }\r\n\r\n    toJSON(): any {\r\n        return {\r\n            size: Enums.TextSize[this.size],\r\n            color: Enums.TextColor[this.color],\r\n            isSubtle: this.isSubtle,\r\n            weight: Enums.TextWeight[this.weight]\r\n        };\r\n    }\r\n}\r\n\r\nexport class TextStyleDefinition extends BaseTextDefinition {\r\n    fontType: Enums.FontType = Enums.FontType.Default;\r\n\r\n    parse(obj: any) {\r\n        super.parse(obj);\r\n\r\n        if (obj) {\r\n            this.fontType = parseHostConfigEnum(Enums.FontType, obj.fontType, this.fontType);\r\n        }\r\n    }\r\n}\r\n\r\nexport class TextStyleSet {\r\n    readonly default: TextStyleDefinition = new TextStyleDefinition();\r\n    readonly heading: TextStyleDefinition = new TextStyleDefinition({\r\n        size: \"Large\",\r\n        weight: \"Bolder\"\r\n    });\r\n    readonly columnHeader: TextStyleDefinition = new TextStyleDefinition({\r\n        weight: \"Bolder\"\r\n    });\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.heading.parse(obj.heading);\r\n            this.columnHeader.parse(obj.columnHeader);\r\n        }\r\n    }\r\n\r\n    getStyleByName(name: string): TextStyleDefinition {\r\n        switch (name.toLowerCase()) {\r\n            case \"heading\":\r\n                return this.heading;\r\n            case \"columnHeader\":\r\n                return this.columnHeader;\r\n            default:\r\n                return this.default;\r\n        }\r\n    }\r\n}\r\n\r\nexport class TextBlockConfig {\r\n    headingLevel?: number;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.headingLevel = Utils.parseNumber(obj.headingLevel);\r\n        }\r\n    }\r\n}\r\n\r\nexport class RequiredInputLabelTextDefinition extends BaseTextDefinition {\r\n    suffix?: string = \" *\";\r\n    suffixColor: Enums.TextColor = Enums.TextColor.Attention;\r\n\r\n    parse(obj?: any) {\r\n        super.parse(obj);\r\n\r\n        if (obj) {\r\n            this.suffix = obj[\"suffix\"] || this.suffix;\r\n            this.suffixColor = parseHostConfigEnum(\r\n                Enums.TextColor,\r\n                obj[\"suffixColor\"],\r\n                this.suffixColor\r\n            );\r\n        }\r\n    }\r\n\r\n    toJSON(): any {\r\n        const result = super.toJSON();\r\n        result[\"suffix\"] = this.suffix;\r\n        result[\"suffixColor\"] = Enums.TextColor[this.suffixColor];\r\n\r\n        return result;\r\n    }\r\n}\r\n\r\nexport class InputLabelConfig {\r\n    inputSpacing: Enums.Spacing = Enums.Spacing.Small;\r\n    width: number = 30;\r\n    readonly requiredInputs: RequiredInputLabelTextDefinition =\r\n        new RequiredInputLabelTextDefinition();\r\n    readonly optionalInputs: BaseTextDefinition = new BaseTextDefinition();\r\n    \r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.inputSpacing = parseHostConfigEnum(\r\n                Enums.Spacing,\r\n                obj[\"inputSpacing\"],\r\n                this.inputSpacing\r\n            );\r\n            this.requiredInputs = new RequiredInputLabelTextDefinition(obj[\"requiredInputs\"]);\r\n            this.optionalInputs = new BaseTextDefinition(obj[\"optionalInputs\"]);\r\n            this.width =\r\n                obj[\"width\"] != null ? obj[\"width\"] : this.width;\r\n        }\r\n    }\r\n}\r\n\r\nexport class InputConfig {\r\n    readonly label: InputLabelConfig = new InputLabelConfig();\r\n    readonly errorMessage: BaseTextDefinition = new BaseTextDefinition({\r\n        color: Enums.TextColor.Attention\r\n    });\r\n    readonly debounceTimeInMilliSeconds: number = 0;\r\n    readonly allowDynamicallyFilteredChoiceSet: boolean = true;\r\n    readonly allowRevealOnHoverStyle: boolean = false;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.label = new InputLabelConfig(obj[\"label\"]);\r\n            this.errorMessage = new BaseTextDefinition(obj[\"errorMessage\"]);\r\n            this.allowRevealOnHoverStyle =\r\n                obj[\"allowRevealOnHoverStyle\"] || this.allowRevealOnHoverStyle;\r\n            this.allowDynamicallyFilteredChoiceSet =\r\n                obj[\"allowDynamicallyFilteredChoiceSet\"] || this.allowDynamicallyFilteredChoiceSet;\r\n            this.debounceTimeInMilliSeconds =\r\n                obj[\"debounceTimeInMilliSeconds\"] || this.debounceTimeInMilliSeconds;\r\n        }\r\n    }\r\n}\r\n\r\nexport class FactTextDefinition extends BaseTextDefinition {\r\n    wrap: boolean = true;\r\n\r\n    parse(obj?: any) {\r\n        super.parse(obj);\r\n\r\n        if (obj) {\r\n            this.wrap = obj[\"wrap\"] != null ? obj[\"wrap\"] : this.wrap;\r\n        }\r\n    }\r\n\r\n    toJSON(): any {\r\n        const result = super.toJSON();\r\n        result[\"wrap\"] = this.wrap;\r\n\r\n        return result;\r\n    }\r\n}\r\n\r\nexport class FactTitleDefinition extends FactTextDefinition {\r\n    maxWidth?: number = 150;\r\n    weight: Enums.TextWeight = Enums.TextWeight.Bolder;\r\n\r\n    constructor(obj?: any) {\r\n        super(obj);\r\n\r\n        if (obj) {\r\n            this.maxWidth = obj[\"maxWidth\"] != null ? obj[\"maxWidth\"] : this.maxWidth;\r\n            this.weight = parseHostConfigEnum(\r\n                Enums.TextWeight,\r\n                obj[\"weight\"],\r\n                Enums.TextWeight.Bolder\r\n            );\r\n        }\r\n    }\r\n\r\n    getDefaultWeight() {\r\n        return Enums.TextWeight.Bolder;\r\n    }\r\n}\r\n\r\nexport class FactSetConfig {\r\n    readonly title: FactTitleDefinition = new FactTitleDefinition();\r\n    readonly value: FactTextDefinition = new FactTextDefinition();\r\n    spacing: number = 10;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.title = new FactTitleDefinition(obj[\"title\"]);\r\n            this.value = new FactTextDefinition(obj[\"value\"]);\r\n            this.spacing =\r\n                obj.spacing && obj.spacing != null ? obj.spacing && obj.spacing : this.spacing;\r\n        }\r\n    }\r\n}\r\n\r\nexport class ShowCardActionConfig {\r\n    actionMode: Enums.ShowCardActionMode = Enums.ShowCardActionMode.Inline;\r\n    inlineTopMargin: number = 16;\r\n    style?: string = Enums.ContainerStyle.Emphasis;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.actionMode = parseHostConfigEnum(\r\n                Enums.ShowCardActionMode,\r\n                obj[\"actionMode\"],\r\n                Enums.ShowCardActionMode.Inline\r\n            );\r\n            this.inlineTopMargin =\r\n                obj[\"inlineTopMargin\"] != null ? obj[\"inlineTopMargin\"] : this.inlineTopMargin;\r\n            this.style =\r\n                obj[\"style\"] && typeof obj[\"style\"] === \"string\"\r\n                    ? obj[\"style\"]\r\n                    : Enums.ContainerStyle.Emphasis;\r\n        }\r\n    }\r\n\r\n    toJSON() {\r\n        return {\r\n            actionMode: Enums.ShowCardActionMode[this.actionMode],\r\n            inlineTopMargin: this.inlineTopMargin,\r\n            style: this.style\r\n        };\r\n    }\r\n}\r\n\r\nexport class ActionsConfig {\r\n    maxActions: number = 5;\r\n    spacing: Enums.Spacing = Enums.Spacing.Default;\r\n    buttonSpacing: number = 20;\r\n    readonly showCard: ShowCardActionConfig = new ShowCardActionConfig();\r\n    preExpandSingleShowCardAction?: boolean = false;\r\n    actionsOrientation: Enums.Orientation = Enums.Orientation.Horizontal;\r\n    actionAlignment: Enums.ActionAlignment = Enums.ActionAlignment.Left;\r\n    iconPlacement: Enums.ActionIconPlacement = Enums.ActionIconPlacement.LeftOfTitle;\r\n    allowTitleToWrap: boolean = false;\r\n    iconSize: number = 16;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.maxActions = obj[\"maxActions\"] != null ? obj[\"maxActions\"] : this.maxActions;\r\n            this.spacing = parseHostConfigEnum(\r\n                Enums.Spacing,\r\n                obj.spacing && obj.spacing,\r\n                Enums.Spacing.Default\r\n            );\r\n            this.buttonSpacing =\r\n                obj[\"buttonSpacing\"] != null ? obj[\"buttonSpacing\"] : this.buttonSpacing;\r\n            this.showCard = new ShowCardActionConfig(obj[\"showCard\"]);\r\n            this.preExpandSingleShowCardAction = Utils.parseBool(\r\n                obj[\"preExpandSingleShowCardAction\"],\r\n                false\r\n            );\r\n            this.actionsOrientation = parseHostConfigEnum(\r\n                Enums.Orientation,\r\n                obj[\"actionsOrientation\"],\r\n                Enums.Orientation.Horizontal\r\n            );\r\n            this.actionAlignment = parseHostConfigEnum(\r\n                Enums.ActionAlignment,\r\n                obj[\"actionAlignment\"],\r\n                Enums.ActionAlignment.Left\r\n            );\r\n            this.iconPlacement = parseHostConfigEnum(\r\n                Enums.ActionIconPlacement,\r\n                obj[\"iconPlacement\"],\r\n                Enums.ActionIconPlacement.LeftOfTitle\r\n            );\r\n            this.allowTitleToWrap =\r\n                obj[\"allowTitleToWrap\"] != null ? obj[\"allowTitleToWrap\"] : this.allowTitleToWrap;\r\n\r\n            try {\r\n                const sizeAndUnit = Shared.SizeAndUnit.parse(obj[\"iconSize\"]);\r\n\r\n                if (sizeAndUnit.unit === Enums.SizeUnit.Pixel) {\r\n                    this.iconSize = sizeAndUnit.physicalSize;\r\n                }\r\n            } catch (e) {\r\n                // Swallow this, keep default icon size\r\n            }\r\n        }\r\n    }\r\n\r\n    toJSON() {\r\n        return {\r\n            maxActions: this.maxActions,\r\n            spacing: Enums.Spacing[this.spacing],\r\n            buttonSpacing: this.buttonSpacing,\r\n            showCard: this.showCard,\r\n            preExpandSingleShowCardAction: this.preExpandSingleShowCardAction,\r\n            actionsOrientation: Enums.Orientation[this.actionsOrientation],\r\n            actionAlignment: Enums.ActionAlignment[this.actionAlignment]\r\n        };\r\n    }\r\n}\r\n\r\nexport class ColorSetDefinition {\r\n    private parseSingleColor(obj: any, propertyName: string) {\r\n        if (obj) {\r\n            ((<any>this)[propertyName] as TextColorDefinition).parse(obj[propertyName]);\r\n        }\r\n    }\r\n\r\n    default: TextColorDefinition = new TextColorDefinition();\r\n    dark: TextColorDefinition = new TextColorDefinition();\r\n    light: TextColorDefinition = new TextColorDefinition();\r\n    accent: TextColorDefinition = new TextColorDefinition();\r\n    good: TextColorDefinition = new TextColorDefinition();\r\n    warning: TextColorDefinition = new TextColorDefinition();\r\n    attention: TextColorDefinition = new TextColorDefinition();\r\n\r\n    constructor(obj?: any) {\r\n        this.parse(obj);\r\n    }\r\n\r\n    parse(obj: any) {\r\n        if (obj) {\r\n            this.parseSingleColor(obj, \"default\");\r\n            this.parseSingleColor(obj, \"dark\");\r\n            this.parseSingleColor(obj, \"light\");\r\n            this.parseSingleColor(obj, \"accent\");\r\n            this.parseSingleColor(obj, \"good\");\r\n            this.parseSingleColor(obj, \"warning\");\r\n            this.parseSingleColor(obj, \"attention\");\r\n        }\r\n    }\r\n}\r\n\r\nexport class ContainerStyleDefinition {\r\n    backgroundColor?: string;\r\n\r\n    readonly foregroundColors: ColorSetDefinition = new ColorSetDefinition({\r\n        \"default\": { default: \"#333333\", subtle: \"#EE333333\" },\r\n        \"dark\": { default: \"#000000\", subtle: \"#66000000\" },\r\n        \"light\": { default: \"#FFFFFF\", subtle: \"#33000000\" },\r\n        \"accent\": { default: \"#2E89FC\", subtle: \"#882E89FC\" },\r\n        \"good\": { default: \"#028A02\", subtle: \"#DD027502\" },\r\n        \"warning\": { default: \"#E69500\", subtle: \"#DDE69500\" },\r\n        \"attention\": { default: \"#CC3300\", subtle: \"#DDCC3300\" }\r\n    });\r\n\r\n    highlightBackgroundColor?: string;\r\n    highlightForegroundColor?: string;\r\n    borderColor?: string;\r\n\r\n    parse(obj: any) {\r\n        if (obj) {\r\n            this.backgroundColor = obj[\"backgroundColor\"];\r\n\r\n            this.foregroundColors.parse(obj[\"foregroundColors\"]);\r\n\r\n            this.highlightBackgroundColor = obj[\"highlightBackgroundColor\"];\r\n            this.highlightForegroundColor = obj[\"highlightForegroundColor\"];\r\n\r\n            this.borderColor = obj[\"borderColor\"];\r\n        }\r\n    }\r\n\r\n    constructor(obj?: any) {\r\n        this.parse(obj);\r\n    }\r\n\r\n    get isBuiltIn(): boolean {\r\n        return false;\r\n    }\r\n}\r\n\r\nclass BuiltInContainerStyleDefinition extends ContainerStyleDefinition {\r\n    get isBuiltIn(): boolean {\r\n        return true;\r\n    }\r\n}\r\n\r\nexport interface ILineHeightDefinitions {\r\n    small: number;\r\n    medium: number;\r\n    default: number;\r\n    large: number;\r\n    extraLarge: number;\r\n}\r\n\r\nexport class ContainerStyleSet {\r\n    private _allStyles: { [key: string]: ContainerStyleDefinition } = {};\r\n\r\n    constructor(obj?: any) {\r\n        this._allStyles[Enums.ContainerStyle.Default] = new BuiltInContainerStyleDefinition();\r\n        this._allStyles[Enums.ContainerStyle.Emphasis] = new BuiltInContainerStyleDefinition();\r\n        this._allStyles[Enums.ContainerStyle.Accent] = new BuiltInContainerStyleDefinition();\r\n        this._allStyles[Enums.ContainerStyle.Good] = new BuiltInContainerStyleDefinition();\r\n        this._allStyles[Enums.ContainerStyle.Attention] = new BuiltInContainerStyleDefinition();\r\n        this._allStyles[Enums.ContainerStyle.Warning] = new BuiltInContainerStyleDefinition();\r\n\r\n        if (obj) {\r\n            this._allStyles[Enums.ContainerStyle.Default].parse(obj[Enums.ContainerStyle.Default]);\r\n            this._allStyles[Enums.ContainerStyle.Emphasis].parse(\r\n                obj[Enums.ContainerStyle.Emphasis]\r\n            );\r\n            this._allStyles[Enums.ContainerStyle.Accent].parse(obj[Enums.ContainerStyle.Accent]);\r\n            this._allStyles[Enums.ContainerStyle.Good].parse(obj[Enums.ContainerStyle.Good]);\r\n            this._allStyles[Enums.ContainerStyle.Attention].parse(\r\n                obj[Enums.ContainerStyle.Attention]\r\n            );\r\n            this._allStyles[Enums.ContainerStyle.Warning].parse(obj[Enums.ContainerStyle.Warning]);\r\n\r\n            const customStyleArray = obj[\"customStyles\"];\r\n\r\n            if (customStyleArray && Array.isArray(customStyleArray)) {\r\n                for (const customStyle of customStyleArray) {\r\n                    if (customStyle) {\r\n                        const styleName = customStyle[\"name\"];\r\n\r\n                        if (styleName && typeof styleName === \"string\") {\r\n                            if (this._allStyles.hasOwnProperty(styleName)) {\r\n                                this._allStyles[styleName].parse(customStyle[\"style\"]);\r\n                            } else {\r\n                                this._allStyles[styleName] = new ContainerStyleDefinition(\r\n                                    customStyle[\"style\"]\r\n                                );\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    toJSON() {\r\n        const customStyleArray: any[] = [];\r\n\r\n        Object.keys(this._allStyles).forEach((key) => {\r\n            if (!this._allStyles[key].isBuiltIn) {\r\n                customStyleArray.push({\r\n                    name: key,\r\n                    style: this._allStyles[key]\r\n                });\r\n            }\r\n        });\r\n\r\n        const result: any = {\r\n            default: this.default,\r\n            emphasis: this.emphasis\r\n        };\r\n\r\n        if (customStyleArray.length > 0) {\r\n            result.customStyles = customStyleArray;\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    getStyleByName(\r\n        name: string | undefined,\r\n        defaultValue?: ContainerStyleDefinition\r\n    ): ContainerStyleDefinition {\r\n        if (name && this._allStyles.hasOwnProperty(name)) {\r\n            return this._allStyles[name];\r\n        } else {\r\n            return defaultValue ? defaultValue : this._allStyles[Enums.ContainerStyle.Default];\r\n        }\r\n    }\r\n\r\n    get default(): ContainerStyleDefinition {\r\n        return this._allStyles[Enums.ContainerStyle.Default];\r\n    }\r\n\r\n    get emphasis(): ContainerStyleDefinition {\r\n        return this._allStyles[Enums.ContainerStyle.Emphasis];\r\n    }\r\n}\r\n\r\nexport interface IFontSizeDefinitions {\r\n    small: number;\r\n    default: number;\r\n    medium: number;\r\n    large: number;\r\n    extraLarge: number;\r\n}\r\n\r\nexport interface IFontWeightDefinitions {\r\n    lighter: number;\r\n    default: number;\r\n    bolder: number;\r\n}\r\n\r\nexport class FontTypeDefinition {\r\n    static readonly monospace = new FontTypeDefinition(\"'Courier New', Courier, monospace\");\r\n\r\n    fontFamily?: string = \"Segoe UI,Segoe,Segoe WP,Helvetica Neue,Helvetica,sans-serif\";\r\n\r\n    fontSizes: IFontSizeDefinitions = {\r\n        small: 12,\r\n        default: 14,\r\n        medium: 17,\r\n        large: 21,\r\n        extraLarge: 26\r\n    };\r\n\r\n    fontWeights: IFontWeightDefinitions = {\r\n        lighter: 200,\r\n        default: 400,\r\n        bolder: 600\r\n    };\r\n\r\n    constructor(fontFamily?: string) {\r\n        if (fontFamily) {\r\n            this.fontFamily = fontFamily;\r\n        }\r\n    }\r\n\r\n    parse(obj?: any) {\r\n        this.fontFamily = obj[\"fontFamily\"] || this.fontFamily;\r\n        this.fontSizes = {\r\n            small: (obj.fontSizes && obj.fontSizes[\"small\"]) || this.fontSizes.small,\r\n            default: (obj.fontSizes && obj.fontSizes[\"default\"]) || this.fontSizes.default,\r\n            medium: (obj.fontSizes && obj.fontSizes[\"medium\"]) || this.fontSizes.medium,\r\n            large: (obj.fontSizes && obj.fontSizes[\"large\"]) || this.fontSizes.large,\r\n            extraLarge: (obj.fontSizes && obj.fontSizes[\"extraLarge\"]) || this.fontSizes.extraLarge\r\n        };\r\n        this.fontWeights = {\r\n            lighter: (obj.fontWeights && obj.fontWeights[\"lighter\"]) || this.fontWeights.lighter,\r\n            default: (obj.fontWeights && obj.fontWeights[\"default\"]) || this.fontWeights.default,\r\n            bolder: (obj.fontWeights && obj.fontWeights[\"bolder\"]) || this.fontWeights.bolder\r\n        };\r\n    }\r\n}\r\n\r\nexport class FontTypeSet {\r\n    default: FontTypeDefinition;\r\n    monospace: FontTypeDefinition;\r\n\r\n    constructor(obj?: any) {\r\n        this.default = new FontTypeDefinition();\r\n        this.monospace = new FontTypeDefinition(\"'Courier New', Courier, monospace\");\r\n\r\n        if (obj) {\r\n            this.default.parse(obj[\"default\"]);\r\n            this.monospace.parse(obj[\"monospace\"]);\r\n        }\r\n    }\r\n\r\n    getStyleDefinition(style: Enums.FontType | undefined): FontTypeDefinition {\r\n        switch (style) {\r\n            case Enums.FontType.Monospace:\r\n                return this.monospace;\r\n            case Enums.FontType.Default:\r\n            default:\r\n                return this.default;\r\n        }\r\n    }\r\n}\r\n\r\nexport class CarouselConfig {\r\n    maxCarouselPages: number = 10;\r\n    minAutoplayDelay: number = 5000.0;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            this.maxCarouselPages =\r\n                obj[\"maxCarouselPages\"] != null ? obj[\"maxCarouselPages\"] : this.maxCarouselPages;\r\n            this.minAutoplayDelay =\r\n                obj[\"minAutoplayDelay\"] != null ? obj[\"minAutoplayDelay\"] : this.minAutoplayDelay;\r\n        }\r\n    }\r\n\r\n    toJSON() {\r\n        return {\r\n            maxCarouselPages: this.maxCarouselPages,\r\n            minAutoplayDelay: this.minAutoplayDelay\r\n        };\r\n    }\r\n}\r\n\r\nexport class HostConfig {\r\n    readonly hostCapabilities = new HostCapabilities();\r\n\r\n    private _legacyFontType: FontTypeDefinition;\r\n\r\n    choiceSetInputValueSeparator: string = \",\";\r\n    supportsInteractivity: boolean = true;\r\n    lineHeights?: ILineHeightDefinitions;\r\n    fontTypes?: FontTypeSet;\r\n\r\n    readonly spacing = {\r\n        small: 3,\r\n        default: 8,\r\n        medium: 20,\r\n        large: 30,\r\n        extraLarge: 40,\r\n        padding: 15\r\n    };\r\n\r\n    readonly separator = {\r\n        lineThickness: 1,\r\n        lineColor: \"#EEEEEE\"\r\n    };\r\n\r\n    readonly imageSizes = {\r\n        small: 40,\r\n        medium: 80,\r\n        large: 160\r\n    };\r\n\r\n    readonly containerStyles: ContainerStyleSet = new ContainerStyleSet();\r\n    readonly inputs: InputConfig = new InputConfig();\r\n    readonly actions: ActionsConfig = new ActionsConfig();\r\n    readonly adaptiveCard: AdaptiveCardConfig = new AdaptiveCardConfig();\r\n    readonly imageSet: ImageSetConfig = new ImageSetConfig();\r\n    readonly media: MediaConfig = new MediaConfig();\r\n    readonly factSet: FactSetConfig = new FactSetConfig();\r\n    readonly table: TableConfig = new TableConfig();\r\n    readonly textStyles: TextStyleSet = new TextStyleSet();\r\n    readonly textBlock: TextBlockConfig = new TextBlockConfig();\r\n    readonly carousel: CarouselConfig = new CarouselConfig();\r\n\r\n    cssClassNamePrefix?: string;\r\n    alwaysAllowBleed: boolean = false;\r\n\r\n    constructor(obj?: any) {\r\n        if (obj) {\r\n            if (typeof obj === \"string\" || obj instanceof String) {\r\n                obj = JSON.parse(obj as string);\r\n            }\r\n\r\n            this.choiceSetInputValueSeparator =\r\n                obj && typeof obj[\"choiceSetInputValueSeparator\"] === \"string\"\r\n                    ? obj[\"choiceSetInputValueSeparator\"]\r\n                    : this.choiceSetInputValueSeparator;\r\n            this.supportsInteractivity =\r\n                obj && typeof obj[\"supportsInteractivity\"] === \"boolean\"\r\n                    ? obj[\"supportsInteractivity\"]\r\n                    : this.supportsInteractivity;\r\n\r\n            this._legacyFontType = new FontTypeDefinition();\r\n            this._legacyFontType.parse(obj);\r\n\r\n            if (obj.fontTypes) {\r\n                this.fontTypes = new FontTypeSet(obj.fontTypes);\r\n            }\r\n\r\n            if (obj.lineHeights) {\r\n                this.lineHeights = {\r\n                    small: obj.lineHeights[\"small\"],\r\n                    default: obj.lineHeights[\"default\"],\r\n                    medium: obj.lineHeights[\"medium\"],\r\n                    large: obj.lineHeights[\"large\"],\r\n                    extraLarge: obj.lineHeights[\"extraLarge\"]\r\n                };\r\n            }\r\n\r\n            this.imageSizes = {\r\n                small: (obj.imageSizes && obj.imageSizes[\"small\"]) || this.imageSizes.small,\r\n                medium: (obj.imageSizes && obj.imageSizes[\"medium\"]) || this.imageSizes.medium,\r\n                large: (obj.imageSizes && obj.imageSizes[\"large\"]) || this.imageSizes.large\r\n            };\r\n\r\n            this.containerStyles = new ContainerStyleSet(obj[\"containerStyles\"]);\r\n            this.spacing = {\r\n                small: (obj.spacing && obj.spacing[\"small\"]) || this.spacing.small,\r\n                default: (obj.spacing && obj.spacing[\"default\"]) || this.spacing.default,\r\n                medium: (obj.spacing && obj.spacing[\"medium\"]) || this.spacing.medium,\r\n                large: (obj.spacing && obj.spacing[\"large\"]) || this.spacing.large,\r\n                extraLarge: (obj.spacing && obj.spacing[\"extraLarge\"]) || this.spacing.extraLarge,\r\n                padding: (obj.spacing && obj.spacing[\"padding\"]) || this.spacing.padding\r\n            };\r\n\r\n            this.separator = {\r\n                lineThickness:\r\n                    (obj.separator && obj.separator[\"lineThickness\"]) ||\r\n                    this.separator.lineThickness,\r\n                lineColor: (obj.separator && obj.separator[\"lineColor\"]) || this.separator.lineColor\r\n            };\r\n\r\n            this.inputs = new InputConfig(obj.inputs || this.inputs);\r\n            this.actions = new ActionsConfig(obj.actions || this.actions);\r\n            this.adaptiveCard = new AdaptiveCardConfig(obj.adaptiveCard || this.adaptiveCard);\r\n            this.imageSet = new ImageSetConfig(obj[\"imageSet\"]);\r\n            this.factSet = new FactSetConfig(obj[\"factSet\"]);\r\n            this.textStyles = new TextStyleSet(obj[\"textStyles\"]);\r\n            this.textBlock = new TextBlockConfig(obj[\"textBlock\"]);\r\n            this.carousel = new CarouselConfig(obj[\"carousel\"]);\r\n        }\r\n    }\r\n\r\n    getFontTypeDefinition(style?: Enums.FontType): FontTypeDefinition {\r\n        if (this.fontTypes) {\r\n            return this.fontTypes.getStyleDefinition(style);\r\n        } else {\r\n            return style === Enums.FontType.Monospace\r\n                ? FontTypeDefinition.monospace\r\n                : this._legacyFontType;\r\n        }\r\n    }\r\n\r\n    getEffectiveSpacing(spacing: Enums.Spacing): number {\r\n        switch (spacing) {\r\n            case Enums.Spacing.Small:\r\n                return this.spacing.small;\r\n            case Enums.Spacing.Default:\r\n                return this.spacing.default;\r\n            case Enums.Spacing.Medium:\r\n                return this.spacing.medium;\r\n            case Enums.Spacing.Large:\r\n                return this.spacing.large;\r\n            case Enums.Spacing.ExtraLarge:\r\n                return this.spacing.extraLarge;\r\n            case Enums.Spacing.Padding:\r\n                return this.spacing.padding;\r\n            default:\r\n                return 0;\r\n        }\r\n    }\r\n\r\n    paddingDefinitionToSpacingDefinition(\r\n        paddingDefinition: Shared.PaddingDefinition\r\n    ): Shared.SpacingDefinition {\r\n        return new Shared.SpacingDefinition(\r\n            this.getEffectiveSpacing(paddingDefinition.top),\r\n            this.getEffectiveSpacing(paddingDefinition.right),\r\n            this.getEffectiveSpacing(paddingDefinition.bottom),\r\n            this.getEffectiveSpacing(paddingDefinition.left)\r\n        );\r\n    }\r\n\r\n    makeCssClassNames(...classNames: string[]): string[] {\r\n        const result: string[] = [];\r\n\r\n        for (const className of classNames) {\r\n            result.push((this.cssClassNamePrefix ? this.cssClassNamePrefix + \"-\" : \"\") + className);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    makeCssClassName(...classNames: string[]): string {\r\n        const result = this.makeCssClassNames(...classNames).join(\" \");\r\n\r\n        return result ? result : \"\";\r\n    }\r\n\r\n    get fontFamily(): string | undefined {\r\n        return this._legacyFontType.fontFamily;\r\n    }\r\n\r\n    set fontFamily(value: string | undefined) {\r\n        this._legacyFontType.fontFamily = value;\r\n    }\r\n\r\n    get fontSizes(): IFontSizeDefinitions {\r\n        return this._legacyFontType.fontSizes;\r\n    }\r\n\r\n    get fontWeights(): IFontWeightDefinitions {\r\n        return this._legacyFontType.fontWeights;\r\n    }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const defaultHostConfig: HostConfig = new HostConfig({\r\n    supportsInteractivity: true,\r\n    spacing: {\r\n        small: 10,\r\n        default: 20,\r\n        medium: 30,\r\n        large: 40,\r\n        extraLarge: 50,\r\n        padding: 20\r\n    },\r\n    separator: {\r\n        lineThickness: 1,\r\n        lineColor: \"#EEEEEE\"\r\n    },\r\n    fontTypes: {\r\n        default: {\r\n            fontFamily: \"'Segoe UI', Tahoma, Geneva, Verdana, sans-serif\",\r\n            fontSizes: {\r\n                small: 12,\r\n                default: 14,\r\n                medium: 17,\r\n                large: 21,\r\n                extraLarge: 26\r\n            },\r\n            fontWeights: {\r\n                lighter: 200,\r\n                default: 400,\r\n                bolder: 600\r\n            }\r\n        },\r\n        monospace: {\r\n            fontFamily: \"'Courier New', Courier, monospace\",\r\n            fontSizes: {\r\n                small: 12,\r\n                default: 14,\r\n                medium: 17,\r\n                large: 21,\r\n                extraLarge: 26\r\n            },\r\n            fontWeights: {\r\n                lighter: 200,\r\n                default: 400,\r\n                bolder: 600\r\n            }\r\n        }\r\n    },\r\n    imageSizes: {\r\n        small: 40,\r\n        medium: 80,\r\n        large: 160\r\n    },\r\n    containerStyles: {\r\n        default: {\r\n            backgroundColor: \"#FFFFFF\",\r\n            foregroundColors: {\r\n                default: {\r\n                    default: \"#333333\",\r\n                    subtle: \"#EE333333\"\r\n                },\r\n                dark: {\r\n                    default: \"#000000\",\r\n                    subtle: \"#66000000\"\r\n                },\r\n                light: {\r\n                    default: \"#FFFFFF\",\r\n                    subtle: \"#33000000\"\r\n                },\r\n                accent: {\r\n                    default: \"#2E89FC\",\r\n                    subtle: \"#882E89FC\"\r\n                },\r\n                attention: {\r\n                    default: \"#cc3300\",\r\n                    subtle: \"#DDcc3300\"\r\n                },\r\n                good: {\r\n                    default: \"#028A02\",\r\n                    subtle: \"#DD027502\"\r\n                },\r\n                warning: {\r\n                    default: \"#e69500\",\r\n                    subtle: \"#DDe69500\"\r\n                }\r\n            }\r\n        },\r\n        emphasis: {\r\n            backgroundColor: \"#08000000\",\r\n            foregroundColors: {\r\n                default: {\r\n                    default: \"#333333\",\r\n                    subtle: \"#EE333333\"\r\n                },\r\n                dark: {\r\n                    default: \"#000000\",\r\n                    subtle: \"#66000000\"\r\n                },\r\n                light: {\r\n                    default: \"#FFFFFF\",\r\n                    subtle: \"#33000000\"\r\n                },\r\n                accent: {\r\n                    default: \"#2E89FC\",\r\n                    subtle: \"#882E89FC\"\r\n                },\r\n                attention: {\r\n                    default: \"#cc3300\",\r\n                    subtle: \"#DDcc3300\"\r\n                },\r\n                good: {\r\n                    default: \"#028A02\",\r\n                    subtle: \"#DD027502\"\r\n                },\r\n                warning: {\r\n                    default: \"#e69500\",\r\n                    subtle: \"#DDe69500\"\r\n                }\r\n            }\r\n        },\r\n        accent: {\r\n            backgroundColor: \"#C7DEF9\",\r\n            foregroundColors: {\r\n                default: {\r\n                    default: \"#333333\",\r\n                    subtle: \"#EE333333\"\r\n                },\r\n                dark: {\r\n                    default: \"#000000\",\r\n                    subtle: \"#66000000\"\r\n                },\r\n                light: {\r\n                    default: \"#FFFFFF\",\r\n                    subtle: \"#33000000\"\r\n                },\r\n                accent: {\r\n                    default: \"#2E89FC\",\r\n                    subtle: \"#882E89FC\"\r\n                },\r\n                attention: {\r\n                    default: \"#cc3300\",\r\n                    subtle: \"#DDcc3300\"\r\n                },\r\n                good: {\r\n                    default: \"#028A02\",\r\n                    subtle: \"#DD027502\"\r\n                },\r\n                warning: {\r\n                    default: \"#e69500\",\r\n                    subtle: \"#DDe69500\"\r\n                }\r\n            }\r\n        },\r\n        good: {\r\n            backgroundColor: \"#CCFFCC\",\r\n            foregroundColors: {\r\n                default: {\r\n                    default: \"#333333\",\r\n                    subtle: \"#EE333333\"\r\n                },\r\n                dark: {\r\n                    default: \"#000000\",\r\n                    subtle: \"#66000000\"\r\n                },\r\n                light: {\r\n                    default: \"#FFFFFF\",\r\n                    subtle: \"#33000000\"\r\n                },\r\n                accent: {\r\n                    default: \"#2E89FC\",\r\n                    subtle: \"#882E89FC\"\r\n                },\r\n                attention: {\r\n                    default: \"#cc3300\",\r\n                    subtle: \"#DDcc3300\"\r\n                },\r\n                good: {\r\n                    default: \"#028A02\",\r\n                    subtle: \"#DD027502\"\r\n                },\r\n                warning: {\r\n                    default: \"#e69500\",\r\n                    subtle: \"#DDe69500\"\r\n                }\r\n            }\r\n        },\r\n        attention: {\r\n            backgroundColor: \"#FFC5B2\",\r\n            foregroundColors: {\r\n                default: {\r\n                    default: \"#333333\",\r\n                    subtle: \"#EE333333\"\r\n                },\r\n                dark: {\r\n                    default: \"#000000\",\r\n                    subtle: \"#66000000\"\r\n                },\r\n                light: {\r\n                    default: \"#FFFFFF\",\r\n                    subtle: \"#33000000\"\r\n                },\r\n                accent: {\r\n                    default: \"#2E89FC\",\r\n                    subtle: \"#882E89FC\"\r\n                },\r\n                attention: {\r\n                    default: \"#cc3300\",\r\n                    subtle: \"#DDcc3300\"\r\n                },\r\n                good: {\r\n                    default: \"#028A02\",\r\n                    subtle: \"#DD027502\"\r\n                },\r\n                warning: {\r\n                    default: \"#e69500\",\r\n                    subtle: \"#DDe69500\"\r\n                }\r\n            }\r\n        },\r\n        warning: {\r\n            backgroundColor: \"#FFE2B2\",\r\n            foregroundColors: {\r\n                default: {\r\n                    default: \"#333333\",\r\n                    subtle: \"#EE333333\"\r\n                },\r\n                dark: {\r\n                    default: \"#000000\",\r\n                    subtle: \"#66000000\"\r\n                },\r\n                light: {\r\n                    default: \"#FFFFFF\",\r\n                    subtle: \"#33000000\"\r\n                },\r\n                accent: {\r\n                    default: \"#2E89FC\",\r\n                    subtle: \"#882E89FC\"\r\n                },\r\n                attention: {\r\n                    default: \"#cc3300\",\r\n                    subtle: \"#DDcc3300\"\r\n                },\r\n                good: {\r\n                    default: \"#028A02\",\r\n                    subtle: \"#DD027502\"\r\n                },\r\n                warning: {\r\n                    default: \"#e69500\",\r\n                    subtle: \"#DDe69500\"\r\n                }\r\n            }\r\n        }\r\n    },\r\n    inputs: {\r\n        label: {\r\n            requiredInputs: {\r\n                weight: Enums.TextWeight.Bolder,\r\n                suffix: \" *\",\r\n                suffixColor: Enums.TextColor.Attention\r\n            },\r\n            optionalInputs: {\r\n                weight: Enums.TextWeight.Bolder\r\n            }\r\n        },\r\n        errorMessage: {\r\n            color: Enums.TextColor.Attention,\r\n            weight: Enums.TextWeight.Bolder\r\n        },\r\n        debounceTimeInMilliSeconds: 250\r\n    },\r\n    actions: {\r\n        maxActions: 5,\r\n        spacing: Enums.Spacing.Default,\r\n        buttonSpacing: 10,\r\n        showCard: {\r\n            actionMode: Enums.ShowCardActionMode.Inline,\r\n            inlineTopMargin: 16\r\n        },\r\n        actionsOrientation: Enums.Orientation.Horizontal,\r\n        actionAlignment: Enums.ActionAlignment.Left\r\n    },\r\n    adaptiveCard: {\r\n        allowCustomStyle: false\r\n    },\r\n    imageSet: {\r\n        imageSize: Enums.Size.Medium,\r\n        maxImageHeight: 100\r\n    },\r\n    factSet: {\r\n        title: {\r\n            color: Enums.TextColor.Default,\r\n            size: Enums.TextSize.Default,\r\n            isSubtle: false,\r\n            weight: Enums.TextWeight.Bolder,\r\n            wrap: true,\r\n            maxWidth: 150\r\n        },\r\n        value: {\r\n            color: Enums.TextColor.Default,\r\n            size: Enums.TextSize.Default,\r\n            isSubtle: false,\r\n            weight: Enums.TextWeight.Default,\r\n            wrap: true\r\n        },\r\n        spacing: 10\r\n    },\r\n    carousel: {\r\n        maxCarouselPages: 10,\r\n        minAutoplayDuration: 5000\r\n    },\r\n    textBlock: {\r\n        headingLevel: 2\r\n    }\r\n});\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport {\r\n    TargetVersion,\r\n    Version,\r\n    SerializableObject,\r\n    BaseSerializationContext,\r\n    PropertyBag\r\n} from \"./serialization\";\r\n\r\nexport class HostCapabilities extends SerializableObject {\r\n    private _capabilities: { [key: string]: TargetVersion } = {};\r\n\r\n    protected getSchemaKey(): string {\r\n        return \"HostCapabilities\";\r\n    }\r\n\r\n    protected internalParse(source: any, context: BaseSerializationContext) {\r\n        super.internalParse(source, context);\r\n\r\n        if (source) {\r\n            // eslint-disable-next-line guard-for-in\r\n            for (const name in source) {\r\n                const jsonVersion = source[name];\r\n\r\n                if (typeof jsonVersion === \"string\") {\r\n                    if (jsonVersion === \"*\") {\r\n                        this.addCapability(name, \"*\");\r\n                    } else {\r\n                        const version = Version.parse(jsonVersion, context);\r\n\r\n                        if (version?.isValid) {\r\n                            this.addCapability(name, version);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    protected internalToJSON(target: PropertyBag, context: BaseSerializationContext) {\r\n        super.internalToJSON(target, context);\r\n\r\n        // eslint-disable-next-line guard-for-in\r\n        for (const key in this._capabilities) {\r\n            target[key] = this._capabilities[key];\r\n        }\r\n    }\r\n\r\n    addCapability(name: string, version: TargetVersion) {\r\n        this._capabilities[name] = version;\r\n    }\r\n\r\n    removeCapability(name: string) {\r\n        delete this._capabilities[name];\r\n    }\r\n\r\n    clear() {\r\n        this._capabilities = {};\r\n    }\r\n\r\n    hasCapability(name: string, version: TargetVersion): boolean {\r\n        if (this._capabilities.hasOwnProperty(name)) {\r\n            if (version === \"*\" || this._capabilities[name] === \"*\") {\r\n                return true;\r\n            }\r\n\r\n            return version.compareTo(<Version>this._capabilities[name]) <= 0;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    areAllMet(hostCapabilities: HostCapabilities): boolean {\r\n        for (const capabilityName in this._capabilities) {\r\n            if (\r\n                !hostCapabilities.hasCapability(capabilityName, this._capabilities[capabilityName])\r\n            ) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\r\nexport class Constants {\r\n    static readonly keys = {\r\n        tab: \"Tab\",\r\n        enter: \"Enter\",\r\n        escape: \"Escape\",\r\n        space: \" \",\r\n        up: \"ArrowUp\",\r\n        down: \"ArrowDown\",\r\n        delete: \"Delete\"\r\n    } as const;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport * from \"./strings\";\r\nexport * from \"./enums\";\r\nexport * from \"./shared\";\r\nexport * from \"./utils\";\r\nexport * from \"./serialization\";\r\nexport * from \"./host-capabilities\";\r\nexport * from \"./host-config\";\r\nexport * from \"./registry\";\r\nexport * from \"./card-object\";\r\nexport * from \"./card-elements\";\r\nexport * from \"./carousel\";\r\nexport * from \"./table\";\r\nexport * from \"./channel-adapter\";\r\nexport * from \"./activity-request\";\r\nexport * from \"./adaptive-applet\";\r\n\r\nexport { IAdaptiveCard, ICardElement } from \"./schema\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport * as Enums from \"./enums\";\r\nimport { Strings } from \"./strings\";\r\nimport { Dictionary, GlobalSettings } from \"./shared\";\r\nimport { HostConfig } from \"./host-config\";\r\nimport { HostCapabilities } from \"./host-capabilities\";\r\nimport {\r\n    Versions,\r\n    property,\r\n    SerializableObject,\r\n    StringProperty,\r\n    SerializableObjectProperty,\r\n    IValidationEvent,\r\n    PropertyDefinition\r\n} from \"./serialization\";\r\n\r\nexport class ValidationResults {\r\n    readonly allIds: Dictionary<number> = {};\r\n    readonly validationEvents: IValidationEvent[] = [];\r\n\r\n    addFailure(cardObject: CardObject, event: Enums.ValidationEvent, message: string) {\r\n        this.validationEvents.push({\r\n            phase: Enums.ValidationPhase.Validation,\r\n            source: cardObject,\r\n            event: event,\r\n            message: message\r\n        });\r\n    }\r\n}\r\n\r\nexport type CardObjectType = { new (): CardObject };\r\n\r\nexport abstract class CardObject extends SerializableObject {\r\n    //#region Schema\r\n\r\n    static readonly typeNameProperty = new StringProperty(\r\n        Versions.v1_0,\r\n        \"type\",\r\n        undefined,\r\n        undefined,\r\n        undefined,\r\n        (sender: object) => {\r\n            return (<CardObject>sender).getJsonTypeName();\r\n        }\r\n    );\r\n    static readonly idProperty = new StringProperty(Versions.v1_0, \"id\");\r\n    static readonly requiresProperty = new SerializableObjectProperty(\r\n        Versions.v1_2,\r\n        \"requires\",\r\n        HostCapabilities,\r\n        false,\r\n        new HostCapabilities()\r\n    );\r\n\r\n    protected getSchemaKey(): string {\r\n        return this.getJsonTypeName();\r\n    }\r\n\r\n    @property(CardObject.idProperty)\r\n    id?: string;\r\n\r\n    @property(CardObject.requiresProperty)\r\n    get requires(): HostCapabilities {\r\n        return this.getValue(CardObject.requiresProperty);\r\n    }\r\n\r\n    //#endregion\r\n\r\n    private _shouldFallback: boolean = false;\r\n\r\n    protected _parent?: CardObject;\r\n    protected _renderedElement?: HTMLElement;\r\n\r\n    /**\r\n     * Checks if this CardObject contains the given DOM Node.\r\n     * @param node The DOM Node to look for.\r\n     * @returns `true` if the DOM Node was found, `false` otherwise.\r\n     */\r\n    protected contains(node: Node): boolean {\r\n        if (this._renderedElement) {\r\n            return this._renderedElement.contains(node);\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    onPreProcessPropertyValue?: (\r\n        sender: CardObject,\r\n        property: PropertyDefinition,\r\n        value: any\r\n    ) => any;\r\n\r\n    abstract getJsonTypeName(): string;\r\n\r\n    abstract get hostConfig(): HostConfig;\r\n\r\n    preProcessPropertyValue(prop: PropertyDefinition, propertyValue?: any): any {\r\n        const value = propertyValue === undefined ? this.getValue(prop) : propertyValue;\r\n\r\n        if (GlobalSettings.allowPreProcessingPropertyValues) {\r\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n            let currentObject: CardObject | undefined = this;\r\n\r\n            while (currentObject && !currentObject.onPreProcessPropertyValue) {\r\n                currentObject = currentObject.parent;\r\n            }\r\n\r\n            if (currentObject && currentObject.onPreProcessPropertyValue) {\r\n                return currentObject.onPreProcessPropertyValue(this, prop, value);\r\n            }\r\n        }\r\n\r\n        return value;\r\n    }\r\n\r\n    setParent(value: CardObject | undefined) {\r\n        this._parent = value;\r\n    }\r\n\r\n    setShouldFallback(value: boolean) {\r\n        this._shouldFallback = value;\r\n    }\r\n\r\n    shouldFallback(): boolean {\r\n        return this._shouldFallback || !this.requires.areAllMet(this.hostConfig.hostCapabilities);\r\n    }\r\n\r\n    getRootObject(): CardObject {\r\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n        let currentObject: CardObject = this;\r\n\r\n        while (currentObject.parent) {\r\n            currentObject = currentObject.parent;\r\n        }\r\n\r\n        return currentObject;\r\n    }\r\n\r\n    internalValidateProperties(context: ValidationResults) {\r\n        if (this.id) {\r\n            if (context.allIds.hasOwnProperty(this.id)) {\r\n                if (context.allIds[this.id] === 1) {\r\n                    context.addFailure(\r\n                        this,\r\n                        Enums.ValidationEvent.DuplicateId,\r\n                        Strings.errors.duplicateId(this.id)\r\n                    );\r\n                }\r\n\r\n                context.allIds[this.id] += 1;\r\n            } else {\r\n                context.allIds[this.id] = 1;\r\n            }\r\n        }\r\n    }\r\n\r\n    validateProperties(): ValidationResults {\r\n        const result = new ValidationResults();\r\n\r\n        this.internalValidateProperties(result);\r\n\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * Recursively searches this CardObject and any children to find the\r\n     * innermost CardObject that owns the given DOM Node.\r\n     *\r\n     * @param node The DOM Node to look for.\r\n     *\r\n     * @returns The owner of the given DOM Node, or `undefined` if no owner was found.\r\n     */\r\n    findDOMNodeOwner(node: Node): CardObject | undefined {\r\n        // default implementation for CardObjects with no associated children\r\n        return this.contains(node) ? this : undefined;\r\n    }\r\n\r\n    releaseDOMResources() {\r\n        // Do nothing in base implementation\r\n    }\r\n\r\n    get parent(): CardObject | undefined {\r\n        return this._parent;\r\n    }\r\n\r\n    get renderedElement(): HTMLElement | undefined {\r\n        return this._renderedElement;\r\n    }\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport {\r\n    Authentication,\r\n    AuthCardButton,\r\n    UniversalAction,\r\n    TokenExchangeResource\r\n} from \"./card-elements\";\r\n\r\nexport enum ActivityRequestTrigger {\r\n    Automatic = \"automatic\",\r\n    Manual = \"manual\"\r\n}\r\n\r\nexport interface IActivityRequest {\r\n    readonly action: UniversalAction;\r\n    readonly trigger: ActivityRequestTrigger;\r\n    readonly attemptNumber: number;\r\n    readonly consecutiveActions: number;\r\n\r\n    authCode?: string;\r\n    authToken?: string;\r\n\r\n    retryAsync(): void;\r\n}\r\n\r\nexport class ActivityRequestError {\r\n    constructor(readonly code?: string, readonly message?: string) {}\r\n}\r\n\r\nexport abstract class ActivityResponse {\r\n    constructor(readonly request: IActivityRequest) {}\r\n}\r\n\r\nexport class SuccessResponse extends ActivityResponse {\r\n    constructor(readonly request: IActivityRequest, readonly rawContent?: string) {\r\n        super(request);\r\n    }\r\n}\r\n\r\nexport class ErrorResponse extends ActivityResponse {\r\n    constructor(readonly request: IActivityRequest, readonly error: ActivityRequestError) {\r\n        super(request);\r\n    }\r\n}\r\n\r\nexport class LoginRequestResponse extends ActivityResponse {\r\n    private _auth: Authentication;\r\n    readonly signinButton?: AuthCardButton;\r\n\r\n    constructor(readonly request: IActivityRequest, auth: Authentication) {\r\n        super(request);\r\n        this._auth = auth;\r\n\r\n        for (const button of this._auth.buttons) {\r\n            if (button.type === \"signin\" && button.value !== undefined) {\r\n                try {\r\n                    new URL(button.value);\r\n\r\n                    this.signinButton = button;\r\n\r\n                    break;\r\n                } catch (e) {\r\n                    // Ignore parsing error\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    get tokenExchangeResource(): TokenExchangeResource | undefined {\r\n        return this._auth.tokenExchangeResource;\r\n    }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport * from \"./template-engine\";\r\nexport * from \"./json-schema-card\";","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport * from \"./menu-item\";\r\nexport * from \"./popup-menu\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { defaultHostConfig, HostConfig } from \"../host-config\";\r\nimport { Constants } from \"./constants\";\r\n\r\nexport class MenuItem {\r\n    private _hostConfig?: HostConfig;\r\n    private _element: HTMLElement;\r\n    private _value: string;\r\n    private _isEnabled: boolean = true;\r\n\r\n    private click() {\r\n        if (this.isEnabled && this.onClick) {\r\n            this.onClick(this);\r\n        }\r\n    }\r\n\r\n    private updateCssClasses() {\r\n        if (this._element) {\r\n            const effectiveHostConfig = this._hostConfig ? this._hostConfig : defaultHostConfig;\r\n\r\n            this._element.className = effectiveHostConfig.makeCssClassName(\"ac-ctrl\");\r\n            this._element.classList.add(\r\n                effectiveHostConfig.makeCssClassName(\r\n                    this.isEnabled ? \"ac-ctrl-dropdown-item\" : \"ac-ctrl-dropdown-item-disabled\"\r\n                )\r\n            );\r\n\r\n            if (!this.isEnabled) {\r\n                this._element.classList.add(effectiveHostConfig.makeCssClassName(\"ac-disabled\"));\r\n            }\r\n        }\r\n    }\r\n\r\n    readonly key: string;\r\n\r\n    onClick?: (item: MenuItem) => void;\r\n\r\n    constructor(key: string, value: string) {\r\n        this.key = key;\r\n        this._value = value;\r\n    }\r\n\r\n    toString(): string {\r\n        return this.value;\r\n    }\r\n\r\n    render(hostConfig?: HostConfig): HTMLElement {\r\n        this._hostConfig = hostConfig;\r\n\r\n        if (!this._element) {\r\n            this._element = document.createElement(\"span\");\r\n            this._element.innerText = this.value;\r\n            this._element.setAttribute(\"role\", \"menuitem\");\r\n\r\n            if (!this.isEnabled) {\r\n                this._element.setAttribute(\"aria-disabled\", \"true\");\r\n            }\r\n\r\n            this._element.setAttribute(\"aria-current\", \"false\");\r\n            this._element.onmouseup = (_e) => {\r\n                this.click();\r\n            };\r\n            this._element.onkeydown = (e) => {\r\n                if (e.key === Constants.keys.enter) {\r\n                    e.stopPropagation();\r\n                    e.preventDefault();\r\n                    this.click();\r\n                }\r\n            };\r\n\r\n            this.updateCssClasses();\r\n        }\r\n\r\n        return this._element;\r\n    }\r\n\r\n    get value(): string {\r\n        return this._value;\r\n    }\r\n\r\n    set value(newValue: string) {\r\n        this._value = newValue;\r\n\r\n        if (this._element) {\r\n            this._element.innerText = newValue;\r\n        }\r\n    }\r\n\r\n    get isEnabled(): boolean {\r\n        return this._isEnabled;\r\n    }\r\n\r\n    set isEnabled(value: boolean) {\r\n        if (this._isEnabled !== value) {\r\n            this._isEnabled = value;\r\n\r\n            this.updateCssClasses();\r\n        }\r\n    }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { Constants } from \"./constants\";\r\nimport { Collection } from \"./collection\";\r\nimport { PopupControl } from \"./popup-control\";\r\nimport { MenuItem } from \"./menu-item\";\r\n\r\nexport class PopupMenu extends PopupControl {\r\n    private _items: Collection<MenuItem> = new Collection<MenuItem>();\r\n    private _renderedItems: Array<HTMLElement> = [];\r\n    private _selectedIndex: number = -1;\r\n\r\n    protected renderContent(): HTMLElement {\r\n        const element = document.createElement(\"div\");\r\n        element.className = this.hostConfig.makeCssClassName(\"ac-ctrl ac-popup\");\r\n        element.setAttribute(\"role\", \"listbox\");\r\n\r\n        for (let i = 0; i < this._items.length; i++) {\r\n            const renderedItem = this._items.get(i).render(this.hostConfig);\r\n            renderedItem.tabIndex = 0;\r\n\r\n            element.appendChild(renderedItem);\r\n\r\n            if (i == 0)\r\n            {\r\n                renderedItem.setAttribute(\"aria-expanded\", \"true\");\r\n            }\r\n\r\n            if (i === this.selectedIndex) {\r\n                renderedItem.focus();\r\n            }\r\n\r\n            this._renderedItems.push(renderedItem);\r\n        }\r\n\r\n        return element;\r\n    }\r\n\r\n    keyDown(e: KeyboardEvent) {\r\n        super.keyDown(e);\r\n\r\n        let selectedItemIndex = this._selectedIndex;\r\n\r\n        switch (e.key) {\r\n            case Constants.keys.tab:\r\n                this.closePopup(true);\r\n\r\n                break;\r\n            /*\r\n            case Constants.keys.enter:\r\n                if (this.selectedIndex >= 0) {\r\n                    this.selectedIndex = this.selectedIndex;\r\n\r\n                    this.close();\r\n                }\r\n\r\n                break;\r\n            */\r\n            case Constants.keys.up:\r\n                if (selectedItemIndex <= 0) {\r\n                    selectedItemIndex = this._renderedItems.length - 1;\r\n                } else {\r\n                    selectedItemIndex--;\r\n\r\n                    if (selectedItemIndex < 0) {\r\n                        selectedItemIndex = this._renderedItems.length - 1;\r\n                    }\r\n                }\r\n\r\n                this.selectedIndex = selectedItemIndex;\r\n                this.removeAriaExpanded(selectedItemIndex);\r\n\r\n                e.cancelBubble = true;\r\n\r\n                break;\r\n            case Constants.keys.down:\r\n                if (selectedItemIndex < 0) {\r\n                    selectedItemIndex = 0;\r\n                } else {\r\n                    selectedItemIndex++;\r\n\r\n                    if (selectedItemIndex >= this._renderedItems.length) {\r\n                        selectedItemIndex = 0;\r\n                    }\r\n                    this.removeAriaExpanded(selectedItemIndex);\r\n                }\r\n\r\n                this.selectedIndex = selectedItemIndex;\r\n\r\n                e.cancelBubble = true;\r\n\r\n                break;\r\n        }\r\n    }\r\n\r\n    get items(): Collection<MenuItem> {\r\n        return this._items;\r\n    }\r\n\r\n    get selectedIndex(): number {\r\n        return this._selectedIndex;\r\n    }\r\n\r\n    set selectedIndex(index: number) {\r\n        if (index >= 0 && index < this._renderedItems.length) {\r\n            this._renderedItems[index].focus();\r\n\r\n            this._selectedIndex = index;\r\n        }\r\n    }\r\n\r\n    // remove aria-expanded attribute from menu item\r\n    private removeAriaExpanded(index: number) {\r\n        if (this._renderedItems[index].getAttribute(\"aria-expanded\") === \"true\") {\r\n            this._renderedItems[index].removeAttribute(\"aria-expanded\");\r\n        }\r\n    }\r\n\r\n\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport class Collection<TItem> {\r\n    private _items: Array<TItem> = [];\r\n\r\n    onItemAdded: (item: TItem) => void;\r\n    onItemRemoved: (item: TItem) => void;\r\n\r\n    get(index: number): TItem {\r\n        return this._items[index];\r\n    }\r\n\r\n    add(item: TItem) {\r\n        this._items.push(item);\r\n\r\n        if (this.onItemAdded) {\r\n            this.onItemAdded(item);\r\n        }\r\n    }\r\n\r\n    remove(item: TItem) {\r\n        const i = this._items.indexOf(item);\r\n\r\n        if (i >= 0) {\r\n            this._items = this._items.splice(i, 1);\r\n\r\n            if (this.onItemRemoved) {\r\n                this.onItemRemoved(item);\r\n            }\r\n        }\r\n    }\r\n\r\n    indexOf(item: TItem): number {\r\n        return this._items.indexOf(item);\r\n    }\r\n\r\n    get length(): number {\r\n        return this._items.length;\r\n    }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { Constants } from \"./constants\";\r\nimport * as Utils from \"../utils\";\r\nimport { defaultHostConfig, HostConfig } from \"../host-config\";\r\n\r\nexport abstract class PopupControl {\r\n    private _isOpen: boolean = false;\r\n    private _overlayElement: HTMLElement;\r\n    private _popupElement: HTMLElement;\r\n    private _hostConfig?: HostConfig;\r\n\r\n    protected abstract renderContent(): HTMLElement;\r\n\r\n    onClose: (popupControl: PopupControl, wasCancelled: boolean) => void;\r\n\r\n    keyDown(e: KeyboardEvent) {\r\n        switch (e.key) {\r\n            case Constants.keys.escape:\r\n                this.closePopup(true);\r\n\r\n                break;\r\n        }\r\n    }\r\n\r\n    render(_rootElementBounds: ClientRect): HTMLElement {\r\n        const element = document.createElement(\"div\");\r\n        element.tabIndex = 0;\r\n        element.className = this.hostConfig.makeCssClassName(\"ac-ctrl\", \"ac-ctrl-popup-container\");\r\n        element.setAttribute(\"role\", \"dialog\");\r\n        element.setAttribute(\"aria-modal\", \"true\");\r\n        element.onkeydown = (e) => {\r\n            this.keyDown(e);\r\n\r\n            return !e.cancelBubble;\r\n        };\r\n\r\n        element.appendChild(this.renderContent());\r\n\r\n        return element;\r\n    }\r\n\r\n    focus() {\r\n        if (this._popupElement) {\r\n            (<HTMLElement>this._popupElement.firstElementChild).focus();\r\n        }\r\n    }\r\n\r\n    popup(rootElement: HTMLElement) {\r\n        if (!this._isOpen) {\r\n            this._overlayElement = document.createElement(\"div\");\r\n            this._overlayElement.className = this.hostConfig.makeCssClassName(\"ac-ctrl-overlay\");\r\n            this._overlayElement.tabIndex = 0;\r\n            this._overlayElement.style.width = document.documentElement.scrollWidth + \"px\";\r\n            this._overlayElement.style.height = document.documentElement.scrollHeight + \"px\";\r\n            this._overlayElement.onfocus = (_e) => {\r\n                this.closePopup(true);\r\n            };\r\n\r\n            document.body.appendChild(this._overlayElement);\r\n\r\n            const rootElementBounds = rootElement.getBoundingClientRect();\r\n\r\n            this._popupElement = this.render(rootElementBounds);\r\n            this._popupElement.classList.remove(\r\n                ...this.hostConfig.makeCssClassNames(\r\n                    \"ac-ctrl-slide\",\r\n                    \"ac-ctrl-slideLeftToRight\",\r\n                    \"ac-ctrl-slideRightToLeft\",\r\n                    \"ac-ctrl-slideTopToBottom\",\r\n                    \"ac-ctrl-slideRightToLeft\"\r\n                )\r\n            );\r\n\r\n            window.addEventListener(\"resize\", (_e) => {\r\n                this.closePopup(true);\r\n            });\r\n\r\n            const rootElementLabel = rootElement.getAttribute(\"aria-label\");\r\n            if (rootElementLabel) {\r\n                this._popupElement.setAttribute(\"aria-label\", rootElementLabel);\r\n            }\r\n\r\n            this._overlayElement.appendChild(this._popupElement);\r\n\r\n            const popupElementBounds = this._popupElement.getBoundingClientRect();\r\n\r\n            const availableSpaceBelow = window.innerHeight - rootElementBounds.bottom;\r\n            const availableSpaceAbove = rootElementBounds.top;\r\n            const availableSpaceRight = window.innerWidth - rootElementBounds.right;\r\n            const availableSpaceLeft = rootElementBounds.left;\r\n\r\n            let left = rootElementBounds.left + Utils.getScrollX();\r\n            let top;\r\n\r\n            if (\r\n                availableSpaceAbove < popupElementBounds.height &&\r\n                availableSpaceBelow < popupElementBounds.height\r\n            ) {\r\n                // Not enough space above or below root element\r\n                const actualPopupHeight = Math.min(popupElementBounds.height, window.innerHeight);\r\n\r\n                this._popupElement.style.maxHeight = actualPopupHeight + \"px\";\r\n\r\n                if (actualPopupHeight < popupElementBounds.height) {\r\n                    top = Utils.getScrollY();\r\n                } else {\r\n                    top =\r\n                        Utils.getScrollY() +\r\n                        rootElementBounds.top +\r\n                        (rootElementBounds.height - actualPopupHeight) / 2;\r\n                }\r\n\r\n                if (\r\n                    availableSpaceLeft < popupElementBounds.width &&\r\n                    availableSpaceRight < popupElementBounds.width\r\n                ) {\r\n                    // Not enough space left or right of root element\r\n                    const actualPopupWidth = Math.min(popupElementBounds.width, window.innerWidth);\r\n\r\n                    this._popupElement.style.maxWidth = actualPopupWidth + \"px\";\r\n\r\n                    if (actualPopupWidth < popupElementBounds.width) {\r\n                        left = Utils.getScrollX();\r\n                    } else {\r\n                        left =\r\n                            Utils.getScrollX() +\r\n                            rootElementBounds.left +\r\n                            (rootElementBounds.width - actualPopupWidth) / 2;\r\n                    }\r\n                } else {\r\n                    // Enough space on the left or right of the root element\r\n                    if (availableSpaceRight >= popupElementBounds.width) {\r\n                        left = Utils.getScrollX() + rootElementBounds.right;\r\n\r\n                        this._popupElement.classList.add(\r\n                            ...this.hostConfig.makeCssClassNames(\r\n                                \"ac-ctrl-slide\",\r\n                                \"ac-ctrl-slideLeftToRight\"\r\n                            )\r\n                        );\r\n                    } else {\r\n                        left =\r\n                            Utils.getScrollX() + rootElementBounds.left - popupElementBounds.width;\r\n\r\n                        this._popupElement.classList.add(\r\n                            ...this.hostConfig.makeCssClassNames(\r\n                                \"ac-ctrl-slide\",\r\n                                \"ac-ctrl-slideRightToLeft\"\r\n                            )\r\n                        );\r\n                    }\r\n                }\r\n            } else {\r\n                // Enough space above or below root element\r\n                if (availableSpaceBelow >= popupElementBounds.height) {\r\n                    top = Utils.getScrollY() + rootElementBounds.bottom;\r\n\r\n                    this._popupElement.classList.add(\r\n                        ...this.hostConfig.makeCssClassNames(\r\n                            \"ac-ctrl-slide\",\r\n                            \"ac-ctrl-slideTopToBottom\"\r\n                        )\r\n                    );\r\n                } else {\r\n                    top = Utils.getScrollY() + rootElementBounds.top - popupElementBounds.height;\r\n\r\n                    this._popupElement.classList.add(\r\n                        ...this.hostConfig.makeCssClassNames(\r\n                            \"ac-ctrl-slide\",\r\n                            \"ac-ctrl-slideBottomToTop\"\r\n                        )\r\n                    );\r\n                }\r\n\r\n                if (availableSpaceRight < popupElementBounds.width) {\r\n                    left = Utils.getScrollX() + rootElementBounds.right - popupElementBounds.width;\r\n                }\r\n            }\r\n\r\n            this._popupElement.style.left = left + \"px\";\r\n            this._popupElement.style.top = top + \"px\";\r\n\r\n            this._popupElement.focus();\r\n\r\n            this._isOpen = true;\r\n        }\r\n    }\r\n\r\n    closePopup(wasCancelled: boolean) {\r\n        if (this._isOpen) {\r\n            document.body.removeChild(this._overlayElement);\r\n\r\n            this._isOpen = false;\r\n\r\n            if (this.onClose) {\r\n                this.onClose(this, wasCancelled);\r\n            }\r\n        }\r\n    }\r\n\r\n    get hostConfig(): HostConfig {\r\n        return this._hostConfig ? this._hostConfig : defaultHostConfig;\r\n    }\r\n\r\n    set hostConfig(value: HostConfig) {\r\n        this._hostConfig = value;\r\n    }\r\n\r\n    get isOpen(): boolean {\r\n        return this._isOpen;\r\n    }\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport {\r\n    AdaptiveCard,\r\n    ActionType,\r\n    CardElement,\r\n    Container,\r\n    SerializationContext,\r\n    ShowCardAction,\r\n    ToggleVisibilityAction\r\n} from \"./card-elements\";\r\nimport * as Enums from \"./enums\";\r\nimport {\r\n    BoolProperty,\r\n    NumProperty,\r\n    EnumProperty,\r\n    property,\r\n    PropertyBag,\r\n    SerializableObjectSchema,\r\n    Versions,\r\n    PixelSizeProperty\r\n} from \"./serialization\";\r\nimport { GlobalRegistry } from \"./registry\";\r\nimport { TypeErrorType, ValidationEvent } from \"./enums\";\r\nimport { Strings } from \"./strings\";\r\nimport {\r\n    Swiper,\r\n    A11y,\r\n    Autoplay,\r\n    History,\r\n    Keyboard,\r\n    Navigation,\r\n    Pagination,\r\n    Scrollbar,\r\n    SwiperOptions\r\n} from \"swiper\";\r\nimport * as Utils from \"./utils\";\r\nimport { GlobalSettings } from \"./shared\";\r\n\r\n// Note: to function correctly, consumers need to have CSS from swiper/css, swiper/css/pagination, and\r\n// swiper/css/navigation\r\n\r\nexport class CarouselPage extends Container {\r\n    //#region Schema\r\n    protected populateSchema(schema: SerializableObjectSchema) {\r\n        super.populateSchema(schema);\r\n\r\n        // `style`, `bleed`, `isVisible` are not supported in CarouselPage\r\n        schema.remove(Container.styleProperty);\r\n        schema.remove(Container.bleedProperty);\r\n        schema.remove(Container.isVisibleProperty);\r\n    }\r\n    //#endregion\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        const carouselSlide: HTMLElement = document.createElement(\"div\");\r\n        carouselSlide.className = this.hostConfig.makeCssClassName(\"swiper-slide\");\r\n        // `isRtl()` will set the correct value of rtl by reading the value from the parents\r\n        this.rtl = this.isRtl();\r\n        const renderedElement = super.internalRender();\r\n        Utils.appendChild(carouselSlide, renderedElement);\r\n        return carouselSlide;\r\n    }\r\n\r\n    getForbiddenActionTypes(): ActionType[] {\r\n        return [ShowCardAction, ToggleVisibilityAction];\r\n    }\r\n\r\n    getForbiddenChildElements(): string[] {\r\n        return this.forbiddenChildElements();\r\n    }\r\n\r\n    protected forbiddenChildElements(): string[] {\r\n        return [\r\n            ToggleVisibilityAction.JsonTypeName,\r\n            ShowCardAction.JsonTypeName,\r\n            \"Media\",\r\n            \"ActionSet\",\r\n            \"Input.Text\",\r\n            \"Input.Date\",\r\n            \"Input.Time\",\r\n            \"Input.Number\",\r\n            \"Input.ChoiceSet\",\r\n            \"Input.Toggle\",\r\n            \"Carousel\",\r\n            ...super.forbiddenChildElements()\r\n        ];\r\n    }\r\n\r\n    protected internalParse(source: any, context: SerializationContext) {\r\n        super.internalParse(source, context);\r\n\r\n        this.setShouldFallback(false);\r\n    }\r\n\r\n    protected shouldSerialize(_context: SerializationContext): boolean {\r\n        return true;\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"CarouselPage\";\r\n    }\r\n\r\n    get isStandalone(): boolean {\r\n        return false;\r\n    }\r\n\r\n    get hasVisibleSeparator(): boolean {\r\n        return false;\r\n    }\r\n}\r\n\r\nexport class Carousel extends Container {\r\n    //#region Schema\r\n    protected populateSchema(schema: SerializableObjectSchema) {\r\n        super.populateSchema(schema);\r\n\r\n        // `style`, `bleed`, `isVisible` are not supported in Carousel\r\n        schema.remove(Container.styleProperty);\r\n        schema.remove(Container.bleedProperty);\r\n        schema.remove(Container.isVisibleProperty);\r\n    }\r\n\r\n    static readonly timerProperty = new NumProperty(Versions.v1_6, \"timer\", undefined);\r\n    @property(Carousel.timerProperty)\r\n    get timer(): number | undefined {\r\n        let timer = this.getValue(Carousel.timerProperty);\r\n\r\n        if (timer && timer < this.hostConfig.carousel.minAutoplayDelay) {\r\n            console.warn(Strings.errors.tooLittleTimeDelay);\r\n            timer = this.hostConfig.carousel.minAutoplayDelay;\r\n        }\r\n\r\n        return timer;\r\n    }\r\n\r\n    set timer(value: number | undefined) {\r\n        if (value && value < this.hostConfig.carousel.minAutoplayDelay) {\r\n            console.warn(Strings.errors.tooLittleTimeDelay);\r\n            this.setValue(Carousel.timerProperty, this.hostConfig.carousel.minAutoplayDelay);\r\n        } else {\r\n            this.setValue(Carousel.timerProperty, value);\r\n        }\r\n    }\r\n\r\n    static readonly initialPageProperty = new NumProperty(Versions.v1_6, \"initialPage\", 0);\r\n    @property(Carousel.initialPageProperty)\r\n    get initialPageIndex(): number {\r\n        return this.getValue(Carousel.initialPageProperty); \r\n    }\r\n\r\n    set initialPageIndex(value: number) { \r\n        if (this.isValidParsedPageIndex(value)) { \r\n            this.setValue(Carousel.initialPageProperty, value);\r\n        } else { \r\n            console.warn(Strings.errors.invalidInitialPageIndex(value));\r\n            this.setValue(Carousel.initialPageProperty, 0); \r\n        }\r\n    }\r\n\r\n    static readonly loopProperty = new BoolProperty(Versions.v1_6, \"loop\", true);\r\n    @property(Carousel.loopProperty)\r\n    carouselLoop: boolean = true;\r\n    \r\n    static readonly orientationProperty = new EnumProperty(\r\n        Versions.v1_6,\r\n        \"orientation\",\r\n        Enums.Orientation,\r\n        Enums.Orientation.Horizontal\r\n    );\r\n    @property(Carousel.orientationProperty)\r\n    carouselOrientation: Enums.Orientation = Enums.Orientation.Horizontal; \r\n\r\n    static readonly carouselHeightProperty = new PixelSizeProperty(\r\n        Versions.v1_6,\r\n        \"heightInPixels\"\r\n    );\r\n    @property(Carousel.carouselHeightProperty)\r\n    carouselHeight?: number;\r\n    \r\n    private isValidParsedPageIndex(index: number) : boolean {\r\n        return this._pages ? this.isValidPageIndex(index, this._pages.length) : false;\r\n    }\r\n\r\n    private isValidRenderedPageIndex(index: number) : boolean {\r\n        return this._renderedPages ? this.isValidPageIndex(index, this._renderedPages.length) : false;\r\n    }\r\n\r\n    private isValidPageIndex(index: number, collectionSize: number) {\r\n        return (collectionSize > 0 && 0 <= index && index < collectionSize);\r\n    }\r\n\r\n    //#endregion\r\n\r\n    get previousEventType(): Enums.CarouselInteractionEvent {\r\n        return this._previousEventType;\r\n    }\r\n\r\n    set previousEventType(eventType: Enums.CarouselInteractionEvent) {\r\n        this._previousEventType = eventType;\r\n    }\r\n\r\n    private _pages: CarouselPage[] = [];\r\n    private _renderedPages: CarouselPage[];\r\n    private _carouselPageContainer: HTMLElement;\r\n    private _containerForAdorners: HTMLElement;\r\n    private _currentIndex: number = 0;\r\n    private _previousEventType: Enums.CarouselInteractionEvent = Enums.CarouselInteractionEvent.Pagination;\r\n    private _observer: ResizeObserver | null;\r\n    private _carousel: Swiper | null;\r\n\r\n    // Question: Why do we place this on the Carousel instead of the CarouselPage?\r\n    protected forbiddenChildElements(): string[] {\r\n        return [\r\n            ToggleVisibilityAction.JsonTypeName,\r\n            ShowCardAction.JsonTypeName,\r\n            \"Media\",\r\n            \"ActionSet\",\r\n            \"Input.Text\",\r\n            \"Input.Date\",\r\n            \"Input.Time\",\r\n            \"Input.Number\",\r\n            \"Input.ChoiceSet\",\r\n            \"Input.Toggle\",\r\n            ...super.forbiddenChildElements()\r\n        ];\r\n    }\r\n\r\n    protected adjustRenderedElementSize(renderedElement: HTMLElement) {\r\n        super.adjustRenderedElementSize(renderedElement);\r\n        if (this.height == \"stretch\" && this._containerForAdorners !== undefined) { \r\n            this._containerForAdorners.style.height = \"100%\";\r\n        }\r\n\r\n        // Assign the explicit height to carouselPageContainer if given\r\n        if (this.carouselHeight) {\r\n            this._carouselPageContainer.style.height = this.carouselHeight + \"px\";\r\n        }\r\n    }\r\n\r\n    getJsonTypeName(): string {\r\n        return \"Carousel\";\r\n    }\r\n\r\n    getItemCount(): number {\r\n        return this._pages.length;\r\n    }\r\n\r\n    getItemAt(index: number): CardElement {\r\n        return this._pages[index];\r\n    }\r\n\r\n    addPage(page: CarouselPage) {\r\n        this._pages.push(page);\r\n        page.setParent(this);\r\n    }\r\n\r\n    removeItem(item: CardElement): boolean {\r\n        if (item instanceof CarouselPage) {\r\n            const itemIndex = this._pages.indexOf(item);\r\n\r\n            if (itemIndex >= 0) {\r\n                this._pages.splice(itemIndex, 1);\r\n\r\n                item.setParent(undefined);\r\n\r\n                this.updateLayout();\r\n\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    getFirstVisibleRenderedItem(): CardElement | undefined {\r\n        if (this.renderedElement && this._renderedPages?.length > 0) {\r\n            return this._renderedPages[0];\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n\r\n    getLastVisibleRenderedItem(): CardElement | undefined {\r\n        if (this.renderedElement && this._renderedPages?.length > 0) {\r\n            return this._renderedPages[this._renderedPages.length - 1];\r\n        } else {\r\n            return undefined;\r\n        }\r\n    }\r\n\r\n    get currentPageId(): string | undefined {\r\n        if (this._carousel?.slides?.length) {\r\n            const activeSlide = this._carousel.slides[this._carousel.activeIndex] as HTMLElement;\r\n            return activeSlide.id;\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    get currentPageIndex(): number | undefined {\r\n        return this._carousel?.realIndex;\r\n    }\r\n\r\n    protected internalParse(source: any, context: SerializationContext) {\r\n        super.internalParse(source, context);\r\n\r\n        this._pages = [];\r\n\r\n        const jsonPages = source[\"pages\"];\r\n        if (Array.isArray(jsonPages)) {\r\n            for (const item of jsonPages) {\r\n                const page = this.createCarouselPageInstance(item, context);\r\n                if (page) {\r\n                    this._pages.push(page);\r\n                }\r\n            }\r\n        }\r\n\r\n        // everything is parsed do validate on initial page index\r\n        this.validateParsing(context);\r\n    }\r\n\r\n    private validateParsing(context: SerializationContext) {\r\n        if (!this.isValidParsedPageIndex(this.initialPageIndex)) {\r\n            context.logParseEvent(\r\n                this,\r\n                Enums.ValidationEvent.InvalidPropertyValue,\r\n                Strings.errors.invalidInitialPageIndex(this.initialPageIndex)\r\n            );\r\n        }\r\n    }\r\n\r\n    protected internalToJSON(target: PropertyBag, context: SerializationContext) {\r\n        super.internalToJSON(target, context);\r\n\r\n        context.serializeArray(target, \"pages\", this._pages);\r\n    }\r\n\r\n    protected internalRender(): HTMLElement | undefined {\r\n        this._renderedPages = [];\r\n\r\n        if (this._pages.length <= 0) {\r\n            return undefined;\r\n        }\r\n\r\n        this.validateOrientationProperties();\r\n\r\n        const cardLevelContainer: HTMLElement = document.createElement(\"div\");\r\n        cardLevelContainer.className = this.hostConfig.makeCssClassName(\"ac-carousel-card-level-container\");\r\n\r\n        const carouselContainer: HTMLElement = document.createElement(\"div\");\r\n        carouselContainer.className = this.hostConfig.makeCssClassName(\"swiper\", \"ac-carousel\");\r\n        this._carouselPageContainer = carouselContainer;\r\n\r\n        const containerForAdorners: HTMLElement = document.createElement(\"div\");\r\n        containerForAdorners.className = this.hostConfig.makeCssClassName(\"ac-carousel-container\");\r\n        this._containerForAdorners = containerForAdorners;\r\n\r\n        cardLevelContainer.appendChild(containerForAdorners);\r\n\r\n        const carouselWrapper: HTMLElement = document.createElement(\"div\");\r\n        carouselWrapper.className = this.hostConfig.makeCssClassName(\r\n            \"swiper-wrapper\",\r\n            \"ac-carousel-card-container\"\r\n        );\r\n        carouselWrapper.style.display = \"flex\";\r\n\r\n        switch (this.getEffectiveVerticalContentAlignment()) {\r\n            case Enums.VerticalAlignment.Top:\r\n                carouselWrapper.style.alignItems = \"flex-start\";\r\n                break;\r\n            case Enums.VerticalAlignment.Bottom:\r\n                carouselWrapper.style.alignItems = \"flex-end\";\r\n                break;\r\n            default:\r\n                carouselWrapper.style.alignItems = \"center\";\r\n                break;\r\n        }\r\n\r\n        if (GlobalSettings.useAdvancedCardBottomTruncation) {\r\n            // Forces the container to be at least as tall as its content.\r\n            //\r\n            // Fixes a quirk in Chrome where, for nested flex elements, the\r\n            // inner element's height would never exceed the outer element's\r\n            // height. This caused overflow truncation to break -- containers\r\n            // would always be measured as not overflowing, since their heights\r\n            // were constrained by their parents as opposed to truly reflecting\r\n            // the height of their content.\r\n            //\r\n            // See the \"Browser Rendering Notes\" section of this answer:\r\n            // https://stackoverflow.com/questions/36247140/why-doesnt-flex-item-shrink-past-content-size\r\n            carouselWrapper.style.minHeight = \"-webkit-min-content\";\r\n        }\r\n\r\n        const navigationContainer: HTMLElement = document.createElement(\"div\");\r\n        navigationContainer.className = this.hostConfig.makeCssClassName(\"ac-carousel-navigation\");\r\n\r\n        const prevElementDiv: HTMLElement = document.createElement(\"div\");\r\n        prevElementDiv.className = this.hostConfig.makeCssClassName(\r\n            \"swiper-button-prev\"\r\n        );\r\n\r\n        const nextElementDiv: HTMLElement = document.createElement(\"div\");\r\n        nextElementDiv.className = this.hostConfig.makeCssClassName(\r\n            \"swiper-button-next\"\r\n        );\r\n\r\n        if (this.carouselOrientation === Enums.Orientation.Horizontal) {\r\n            this.updateCssForHorizontalCarousel(prevElementDiv, nextElementDiv);\r\n        } else {\r\n            this.updateCssForVerticalCarousel(navigationContainer, prevElementDiv, nextElementDiv);\r\n        }\r\n\r\n        const pagination: HTMLElement = document.createElement(\"div\");\r\n        pagination.className = this.hostConfig.makeCssClassName(\r\n            \"swiper-pagination\",\r\n            \"ac-carousel-pagination\"\r\n        );\r\n\r\n        navigationContainer.appendChild(prevElementDiv);\r\n        Utils.addCancelSelectActionEventHandler(prevElementDiv);\r\n\r\n        navigationContainer.appendChild(pagination);\r\n        Utils.addCancelSelectActionEventHandler(pagination);\r\n\r\n        navigationContainer.appendChild(nextElementDiv);\r\n        Utils.addCancelSelectActionEventHandler(nextElementDiv);\r\n\r\n        if (this.isDesignMode()) {\r\n            // If we are in design mode, we need to ensure these elements are in front of the peers\r\n            prevElementDiv.style.zIndex = \"20\";\r\n            nextElementDiv.style.zIndex = \"20\";\r\n            pagination.style.zIndex = \"20\";\r\n        }\r\n\r\n        const requestedNumberOfPages: number = Math.min(\r\n            this._pages.length,\r\n            this.hostConfig.carousel.maxCarouselPages\r\n        );\r\n        if (this._pages.length > this.hostConfig.carousel.maxCarouselPages) {\r\n            console.warn(Strings.errors.tooManyCarouselPages);\r\n        }\r\n\r\n        if (this._pages.length > 0) {\r\n            for (let i = 0; i < requestedNumberOfPages; i++) {\r\n                const page = this._pages[i];\r\n                const renderedItem = this.isElementAllowed(page) ? page.render() : undefined;\r\n                renderedItem?.classList.add(\"ac-carousel-page\");\r\n                renderedItem?.children[0]?.classList.add(\"ac-carousel-page-container\");\r\n\r\n                if (renderedItem) {\r\n                    Utils.appendChild(carouselWrapper, renderedItem);\r\n                    this._renderedPages.push(page);\r\n                }\r\n            }\r\n        }\r\n\r\n        carouselContainer.appendChild(carouselWrapper);\r\n\r\n        carouselContainer.tabIndex = this.isDesignMode() ? -1 : 0;\r\n\r\n        containerForAdorners.appendChild(carouselContainer);\r\n        containerForAdorners.appendChild(navigationContainer);\r\n\r\n        // `isRtl()` will set the correct value of rtl by reading the value from the parents\r\n        this.rtl = this.isRtl();\r\n        this.applyRTL(pagination);\r\n\r\n        if (!this.isDesignMode()) {\r\n            if (this.isValidRenderedPageIndex(this.initialPageIndex)) {\r\n                this._currentIndex = this.initialPageIndex;\r\n            } else {\r\n                console.warn(Strings.errors.invalidInitialPageIndex(this.initialPageIndex));\r\n                this._currentIndex = 0\r\n            }\r\n        }\r\n\r\n        this.initializeCarouselControl(\r\n            carouselContainer,\r\n            nextElementDiv,\r\n            prevElementDiv,\r\n            pagination,\r\n            this.rtl\r\n        );\r\n\r\n        return this._renderedPages.length > 0 ? cardLevelContainer : undefined;\r\n    }\r\n\r\n    applyRTL(pagination: HTMLElement) {\r\n        super.applyRTL(this._carouselPageContainer);\r\n        if (this.rtl) {\r\n            pagination.classList.add(this.hostConfig.makeCssClassName(\r\n                \"ac-carousel-pagination-rtl\"\r\n            ));\r\n        }\r\n    }\r\n\r\n    validateOrientationProperties() {\r\n        if (!this.carouselHeight) {\r\n            this.carouselOrientation = Enums.Orientation.Horizontal;\r\n        }\r\n    }\r\n\r\n    updateCssForHorizontalCarousel(\r\n        prevElementDiv: HTMLElement,\r\n        nextElementDiv: HTMLElement\r\n    ) {\r\n        prevElementDiv.classList.add(this.hostConfig.makeCssClassName(\r\n            \"ac-carousel-left\"\r\n        ));\r\n        nextElementDiv.classList.add(this.hostConfig.makeCssClassName(\r\n            \"ac-carousel-right\"\r\n        ));\r\n    }\r\n\r\n    updateCssForVerticalCarousel(\r\n        navigationContainer: HTMLElement,\r\n        prevElementDiv: HTMLElement,\r\n        nextElementDiv: HTMLElement\r\n    ) {\r\n        this._containerForAdorners.classList.add(this.hostConfig.makeCssClassName(\r\n            \"ac-carousel-container-vertical\"\r\n        ));\r\n        navigationContainer.classList.add(this.hostConfig.makeCssClassName(\r\n            \"ac-carousel-navigation-vertical\"\r\n        ))\r\n\r\n        prevElementDiv.classList.add(this.hostConfig.makeCssClassName(\r\n            \"ac-carousel-up\"\r\n        ));\r\n        nextElementDiv.classList.add(this.hostConfig.makeCssClassName(\r\n            \"ac-carousel-down\"\r\n        ));\r\n    }\r\n\r\n    private initializeCarouselControl(\r\n        carouselContainer: HTMLElement,\r\n        nextElement: HTMLElement,\r\n        prevElement: HTMLElement,\r\n        paginationElement: HTMLElement,\r\n        rtl: boolean | undefined\r\n    ): void {\r\n\r\n        const nextElementAdjustedForRtl = (rtl === undefined || !rtl ? nextElement : prevElement);\r\n        const prevElementAdjustedForRtl = (rtl === undefined || !rtl ? prevElement : nextElement);\r\n\r\n        const prevElementAdjustedForOrientation = (Enums.Orientation.Horizontal === this.carouselOrientation) ? prevElementAdjustedForRtl : prevElement;\r\n        const nextElementAdjustedForOrientation = (Enums.Orientation.Horizontal === this.carouselOrientation) ? nextElementAdjustedForRtl : nextElement;\r\n\r\n        const swiperOptions: SwiperOptions = {\r\n            loop: !this.isDesignMode() && this.carouselLoop,\r\n            modules: [Navigation, Pagination, Scrollbar, A11y, History, Keyboard],\r\n            pagination: {\r\n                el: paginationElement,\r\n                clickable: true\r\n            },\r\n            navigation: {\r\n                prevEl: prevElementAdjustedForOrientation,\r\n                nextEl: nextElementAdjustedForOrientation\r\n            },\r\n            a11y: {\r\n                enabled: true\r\n            },\r\n            keyboard: {\r\n                enabled: false,\r\n                onlyInViewport: true\r\n            },\r\n            direction: this.carouselOrientation === Enums.Orientation.Horizontal ? \"horizontal\" : \"vertical\",\r\n            resizeObserver: false,\r\n            initialSlide: this._currentIndex\r\n        };\r\n\r\n        if (this.timer && !this.isDesignMode()) {\r\n            swiperOptions.modules?.push(Autoplay);\r\n            swiperOptions.autoplay = { delay: this.timer, pauseOnMouseEnter: true };\r\n        }\r\n\r\n        const carousel: Swiper = new Swiper(carouselContainer, swiperOptions);\r\n\r\n        // While the 'pauseOnMouseEnter' option should resume autoplay on\r\n        // mouse exit it doesn't do it, so adding custom events to handle it\r\n\r\n        carouselContainer.addEventListener(\"mouseenter\", function (_event) {\r\n            carousel.autoplay?.stop();\r\n        });\r\n\r\n        carouselContainer.addEventListener(\"mouseleave\", function (_event) {\r\n            carousel.autoplay?.start();\r\n        });\r\n\r\n        carousel.on('navigationNext',  (swiper: Swiper) => {\r\n            this.raiseCarouselEvent(Enums.CarouselInteractionEvent.NavigationNext);\r\n        });\r\n\r\n        carousel.on('navigationPrev',  (swiper: Swiper) => {\r\n            this.raiseCarouselEvent(Enums.CarouselInteractionEvent.NavigationPrevious);\r\n        });\r\n\r\n        carousel.on('slideChangeTransitionEnd',  (swiper: Swiper) => {\r\n            this.currentIndex = swiper.realIndex;\r\n            this.raiseCarouselEvent(Enums.CarouselInteractionEvent.Pagination); \r\n        });\r\n\r\n        carousel.on('autoplay',  () => {\r\n            this.raiseCarouselEvent(Enums.CarouselInteractionEvent.Autoplay);\r\n        });\r\n\r\n        carousel.on('paginationRender', (swiper, paginationEl) => {\r\n            swiper.pagination.bullets.forEach((bullet, index) => {\r\n                bullet.addEventListener(\"keypress\", function(event : KeyboardEvent) {\r\n                    if (event.key == \"Enter\") {\r\n                        event.preventDefault();\r\n                        swiper.slideTo(index + 1);\r\n                    }\r\n                });\r\n            });\r\n        });\r\n\r\n        carousel.on('destroy', () => {\r\n            this.destroyResizeObserver();\r\n        });\r\n\r\n        prevElement.title = prevElement.ariaLabel ?? Strings.defaults.carouselNavigationPreviousTooltip();\r\n\r\n        nextElement.title = nextElement.ariaLabel ?? Strings.defaults.carouselNavigationNextTooltip();\r\n\r\n        this._carousel = carousel;\r\n\r\n        this.createResizeObserver();\r\n    }\r\n\r\n    private createCarouselPageInstance(\r\n        source: any,\r\n        context: SerializationContext\r\n    ): CarouselPage | undefined {\r\n        return context.parseCardObject<CarouselPage>(\r\n            this,\r\n            source,\r\n            this.forbiddenChildElements(),\r\n            !this.isDesignMode(),\r\n            (typeName: string) => {\r\n                return !typeName || typeName === \"CarouselPage\" ? new CarouselPage() : undefined;\r\n            },\r\n            (typeName: string, _errorType: TypeErrorType) => {\r\n                context.logParseEvent(\r\n                    undefined,\r\n                    ValidationEvent.ElementTypeNotAllowed,\r\n                    Strings.errors.elementTypeNotAllowed(typeName)\r\n                );\r\n            }\r\n        );\r\n    }\r\n\r\n    slideTo(index: number) {\r\n        this._carousel?.slideTo(index);\r\n    }\r\n\r\n    get carouselPageContainer() {\r\n        return this._carouselPageContainer;\r\n    }\r\n\r\n    get currentIndex(): number {\r\n        return this._currentIndex;\r\n    }\r\n\r\n    set currentIndex(currentIndex: number) {\r\n        this._currentIndex = currentIndex;\r\n    }\r\n\r\n    private createCarouselEvent (type : Enums.CarouselInteractionEvent): CarouselEvent\r\n    {\r\n        let currentPageId : string | undefined;\r\n        if (this.currentPageIndex != undefined) {\r\n            currentPageId = this.getItemAt(this.currentPageIndex).id;\r\n        }\r\n        return new CarouselEvent(type, this.id, currentPageId, this.currentPageIndex);   \r\n    }\r\n\r\n    private raiseCarouselEvent(eventType : Enums.CarouselInteractionEvent) {\r\n        const card = this.parent ? (this.parent.getRootElement() as AdaptiveCard) : undefined;\r\n        const onCarouselEventHandler = \r\n            card && card.onCarouselEvent\r\n                ? card.onCarouselEvent\r\n                : AdaptiveCard.onCarouselEvent;\r\n        // pagination event is triggered on slide transition end event \r\n        if (onCarouselEventHandler && eventType == Enums.CarouselInteractionEvent.Pagination) {\r\n        // returns the event type that causes slide transition\r\n            onCarouselEventHandler(this.createCarouselEvent(this.previousEventType));\r\n        }\r\n        this.previousEventType = eventType;\r\n    }\r\n\r\n    /// Swiper version 8 added requestAnimationFrame() call in its resize observer code\r\n    /// The new call causes flickering issue,\r\n    /// We've copied resize observer code from Swiper version 7 with some modifications\r\n    private createResizeObserver() : void {\r\n\r\n        if (!this.checkIfCarouselInValidStateForResizeEvent()) {\r\n            return;\r\n        }\r\n\r\n        this._observer = new ResizeObserver((entries) => {\r\n            const width = this._carousel?.width;\r\n            const height = this._carousel?.height;\r\n            let newWidth = width;\r\n            let newHeight = height;\r\n            entries.forEach(({ contentBoxSize, contentRect, target }) => {\r\n            if (target && target !== this._carousel?.el) {\r\n                return;\r\n            }\r\n\r\n            newWidth = contentRect\r\n                ? contentRect.width\r\n                : (contentBoxSize[0] || contentBoxSize).inlineSize;\r\n\r\n            newHeight = contentRect\r\n                ? contentRect.height\r\n                : (contentBoxSize[0] || contentBoxSize).blockSize;\r\n            });\r\n\r\n            if (newWidth !== width || newHeight !== height) {\r\n                if (this.checkIfCarouselInValidStateForResizeEvent()) {\r\n                    this._carousel?.emit('beforeResize');\r\n                    this._carousel?.emit('resize');\r\n                }\r\n            }\r\n\r\n        });\r\n\r\n        this._observer.observe(this._carousel?.el!);\r\n    }\r\n\r\n    private destroyResizeObserver(): void {\r\n        if (this._observer && this._observer.unobserve && this._carousel?.el) {\r\n            this._observer.unobserve(this._carousel.el);\r\n            this._observer = null;\r\n        }\r\n    };\r\n\r\n    private checkIfCarouselInValidStateForResizeEvent()\r\n    {\r\n        return this._carousel && !this._carousel.destroyed;\r\n    }\r\n}\r\n\r\nexport class CarouselEvent {\r\n    constructor(public type : Enums.CarouselInteractionEvent,\r\n        public carouselId : string | undefined,\r\n        public activeCarouselPageId : string | undefined,\r\n        public activeCarouselPageIndex : number | undefined) {}\r\n}\r\n\r\nGlobalRegistry.defaultElements.register(\r\n    \"Carousel\",\r\n    Carousel,\r\n    Versions.v1_6\r\n);\r\n\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ActivityResponse, IActivityRequest } from \"./activity-request\";\r\n\r\nexport abstract class ChannelAdapter {\r\n    abstract sendRequestAsync(request: IActivityRequest): Promise<ActivityResponse>;\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport * as Enums from \"./enums\";\r\nimport * as Utils from \"./utils\";\r\nimport { GlobalSettings } from \"./shared\";\r\nimport { ChannelAdapter } from \"./channel-adapter\";\r\nimport {\r\n    ActivityResponse,\r\n    IActivityRequest,\r\n    ActivityRequestTrigger,\r\n    SuccessResponse,\r\n    ErrorResponse,\r\n    LoginRequestResponse\r\n} from \"./activity-request\";\r\nimport { Strings } from \"./strings\";\r\nimport {\r\n    SubmitAction,\r\n    ExecuteAction,\r\n    SerializationContext,\r\n    AdaptiveCard,\r\n    Action,\r\n    Input,\r\n    TokenExchangeResource,\r\n    AuthCardButton,\r\n    UniversalAction,\r\n    ChoiceSetInput,\r\n    DataQuery\r\n} from \"./card-elements\";\r\nimport { Versions } from \"./serialization\";\r\nimport { HostConfig } from \"./host-config\";\r\n\r\nfunction logEvent(level: Enums.LogLevel, message?: any, ...optionalParams: any[]) {\r\n    if (GlobalSettings.applets.logEnabled) {\r\n        if (GlobalSettings.applets.onLogEvent) {\r\n            GlobalSettings.applets.onLogEvent(level, message, optionalParams);\r\n        } else {\r\n            /* eslint-disable no-console */\r\n            switch (level) {\r\n                case Enums.LogLevel.Warning:\r\n                    console.warn(message, optionalParams);\r\n                    break;\r\n                case Enums.LogLevel.Error:\r\n                    console.error(message, optionalParams);\r\n                    break;\r\n                default:\r\n                    console.log(message, optionalParams);\r\n                    break;\r\n            }\r\n            /* eslint-enable no-console */\r\n        }\r\n    }\r\n}\r\n\r\nclass ActivityRequest implements IActivityRequest {\r\n    constructor(\r\n        readonly action: UniversalAction,\r\n        readonly trigger: ActivityRequestTrigger,\r\n        readonly consecutiveActions: number\r\n    ) {}\r\n\r\n    authCode?: string;\r\n    authToken?: string;\r\n    attemptNumber: number = 0;\r\n\r\n    onSend: (sender: ActivityRequest) => void;\r\n\r\n    // eslint-disable-next-line @typescript-eslint/require-await\r\n    async retryAsync(): Promise<void> {\r\n        if (this.onSend) {\r\n            this.onSend(this);\r\n        }\r\n    }\r\n}\r\n\r\nexport class AdaptiveApplet {\r\n    private static readonly _submitMagicCodeActionId = \"submitMagicCode\";\r\n    private static readonly _cancelMagicCodeAuthActionId = \"cancelMagicCodeAuth\";\r\n\r\n    private _card?: AdaptiveCard;\r\n    private _cardPayload: any;\r\n    private _choiceSet?: ChoiceSetInput;\r\n    private _allowAutomaticCardUpdate: boolean = false;\r\n    private _refreshButtonHostElement: HTMLElement;\r\n    private _cardHostElement: HTMLElement;\r\n    private _progressOverlay?: HTMLElement;\r\n\r\n    private displayCard(card: AdaptiveCard) {\r\n        if (card.renderedElement) {\r\n            Utils.clearElementChildren(this._cardHostElement);\r\n\r\n            this._refreshButtonHostElement.style.display = \"none\";\r\n\r\n            this._cardHostElement.appendChild(card.renderedElement);\r\n        } else {\r\n            throw new Error(\"displayCard: undefined card.\");\r\n        }\r\n    }\r\n\r\n    private showManualRefreshButton(refreshAction: ExecuteAction) {\r\n        const displayBuiltInManualRefreshButton = this.onShowManualRefreshButton\r\n            ? this.onShowManualRefreshButton(this)\r\n            : true;\r\n\r\n        if (displayBuiltInManualRefreshButton) {\r\n            this._refreshButtonHostElement.style.display = \"none\";\r\n\r\n            let renderedRefreshButton: HTMLElement | undefined = undefined;\r\n\r\n            if (this.onRenderManualRefreshButton) {\r\n                renderedRefreshButton = this.onRenderManualRefreshButton(this);\r\n            } else {\r\n                let message = Strings.runtime.refreshThisCard();\r\n\r\n                if (GlobalSettings.applets.refresh.mode === Enums.RefreshMode.Automatic) {\r\n                    let autoRefreshPausedMessage = Strings.runtime.automaticRefreshPaused();\r\n\r\n                    if (autoRefreshPausedMessage[autoRefreshPausedMessage.length - 1] !== \" \") {\r\n                        autoRefreshPausedMessage += \" \";\r\n                    }\r\n\r\n                    message = Strings.runtime.clckToRestartAutomaticRefresh();\r\n                }\r\n\r\n                const cardPayload = {\r\n                    type: \"AdaptiveCard\",\r\n                    version: \"1.2\",\r\n                    body: [\r\n                        {\r\n                            type: \"RichTextBlock\",\r\n                            horizontalAlignment: \"right\",\r\n                            inlines: [\r\n                                {\r\n                                    type: \"TextRun\",\r\n                                    text: message,\r\n                                    selectAction: {\r\n                                        type: \"Action.Submit\",\r\n                                        id: \"refreshCard\"\r\n                                    }\r\n                                }\r\n                            ]\r\n                        }\r\n                    ]\r\n                };\r\n\r\n                const card = new AdaptiveCard();\r\n                card.parse(cardPayload, new SerializationContext(Versions.v1_2));\r\n                card.onExecuteAction = (action: Action) => {\r\n                    if (action.id === \"refreshCard\") {\r\n                        Utils.clearElementChildren(this._refreshButtonHostElement);\r\n\r\n                        this.internalExecuteAction(\r\n                            refreshAction,\r\n                            ActivityRequestTrigger.Automatic,\r\n                            0\r\n                        );\r\n                    }\r\n                };\r\n\r\n                renderedRefreshButton = card.render();\r\n            }\r\n\r\n            if (renderedRefreshButton) {\r\n                Utils.clearElementChildren(this._refreshButtonHostElement);\r\n\r\n                this._refreshButtonHostElement.appendChild(renderedRefreshButton);\r\n\r\n                this._refreshButtonHostElement.style.removeProperty(\"display\");\r\n            }\r\n        }\r\n    }\r\n\r\n    private createActivityRequest(\r\n        action: UniversalAction,\r\n        trigger: ActivityRequestTrigger,\r\n        consecutiveActions: number\r\n    ): ActivityRequest | undefined {\r\n        if (this.card) {\r\n            const request = new ActivityRequest(action, trigger, consecutiveActions);\r\n            request.onSend = (sender: ActivityRequest) => {\r\n                sender.attemptNumber++;\r\n\r\n                void this.internalSendActivityRequestAsync(request);\r\n            };\r\n\r\n            const cancel = this.onPrepareActivityRequest\r\n                ? !this.onPrepareActivityRequest(this, request, action)\r\n                : false;\r\n\r\n            return cancel ? undefined : request;\r\n        } else {\r\n            throw new Error(\"createActivityRequest: no card has been set.\");\r\n        }\r\n    }\r\n\r\n    private createMagicCodeInputCard(attemptNumber: number): AdaptiveCard {\r\n        const payload = {\r\n            type: \"AdaptiveCard\",\r\n            version: \"1.0\",\r\n            body: [\r\n                {\r\n                    type: \"TextBlock\",\r\n                    color: \"attention\",\r\n                    text: attemptNumber === 1 ? undefined : \"That didn't work... let's try again.\",\r\n                    wrap: true,\r\n                    horizontalAlignment: \"center\"\r\n                },\r\n                {\r\n                    type: \"TextBlock\",\r\n                    text: 'Please login in the popup. You will obtain a magic code. Paste that code below and select \"Submit\"',\r\n                    wrap: true,\r\n                    horizontalAlignment: \"center\"\r\n                },\r\n                {\r\n                    type: \"Input.Text\",\r\n                    id: \"magicCode\",\r\n                    placeholder: \"Enter magic code\"\r\n                },\r\n                {\r\n                    type: \"ActionSet\",\r\n                    horizontalAlignment: \"center\",\r\n                    actions: [\r\n                        {\r\n                            type: \"Action.Submit\",\r\n                            id: AdaptiveApplet._submitMagicCodeActionId,\r\n                            title: \"Submit\"\r\n                        },\r\n                        {\r\n                            type: \"Action.Submit\",\r\n                            id: AdaptiveApplet._cancelMagicCodeAuthActionId,\r\n                            title: \"Cancel\"\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        };\r\n\r\n        const card = new AdaptiveCard();\r\n        card.parse(payload);\r\n\r\n        return card;\r\n    }\r\n\r\n    private cancelAutomaticRefresh() {\r\n        if (this._allowAutomaticCardUpdate) {\r\n            logEvent(\r\n                Enums.LogLevel.Warning,\r\n                \"Automatic card refresh has been cancelled as a result of the user interacting with the card.\"\r\n            );\r\n        }\r\n\r\n        this._allowAutomaticCardUpdate = false;\r\n    }\r\n\r\n    private createSerializationContext(): SerializationContext {\r\n        return this.onCreateSerializationContext\r\n            ? this.onCreateSerializationContext(this)\r\n            : new SerializationContext();\r\n    }\r\n\r\n    private internalSetCard(payload: any, consecutiveActions: number) {\r\n        if (typeof payload === \"object\" && payload[\"type\"] === \"AdaptiveCard\") {\r\n            this._cardPayload = payload;\r\n        }\r\n\r\n        if (this._cardPayload) {\r\n            try {\r\n                const card = new AdaptiveCard();\r\n\r\n                if (this.hostConfig) {\r\n                    card.hostConfig = this.hostConfig;\r\n                }\r\n\r\n                const serializationContext = this.createSerializationContext();\r\n\r\n                card.parse(this._cardPayload, serializationContext);\r\n\r\n                const doChangeCard = this.onCardChanging\r\n                    ? this.onCardChanging(this, this._cardPayload)\r\n                    : true;\r\n\r\n                if (doChangeCard) {\r\n                    this._card = card;\r\n\r\n                    if (\r\n                        this._card.authentication &&\r\n                        this._card.authentication.tokenExchangeResource &&\r\n                        this.onPrefetchSSOToken\r\n                    ) {\r\n                        this.onPrefetchSSOToken(\r\n                            this,\r\n                            this._card.authentication.tokenExchangeResource\r\n                        );\r\n                    }\r\n\r\n                    this._card.onExecuteAction = (action: Action) => {\r\n                        // If the user takes an action, cancel any pending automatic refresh\r\n                        this.cancelAutomaticRefresh();\r\n\r\n                        this.internalExecuteAction(action, ActivityRequestTrigger.Manual, 0);\r\n                    };\r\n                    this._card.onInputValueChanged = (input: Input) => {\r\n                        // If the user modifies an input, cancel any pending automatic refresh\r\n                        this.cancelAutomaticRefresh();\r\n                        if (input instanceof ChoiceSetInput && input.isDynamicTypeahead()) {\r\n                            const filter = input.getFilterForDynamicSearch();\r\n                            if (filter) {\r\n                                const dataQueryAction = new DataQuery();\r\n                                dataQueryAction.filter = filter;\r\n                                dataQueryAction.dataset = input.choicesData?.dataset || \"\";\r\n                                dataQueryAction.count = input.choicesData?.count;\r\n                                dataQueryAction.skip = input.choicesData?.skip;\r\n\r\n                                this._choiceSet = input;\r\n                                this.internalExecuteAction(\r\n                                    dataQueryAction,\r\n                                    ActivityRequestTrigger.Manual,\r\n                                    0 // consecutiveActions\r\n                                );\r\n                            }\r\n                        }\r\n                    };\r\n\r\n                    this._card.render();\r\n\r\n                    if (this._card.renderedElement) {\r\n                        this.displayCard(this._card);\r\n\r\n                        if (this.onCardChanged) {\r\n                            this.onCardChanged(this);\r\n                        }\r\n\r\n                        if (this._card.refresh) {\r\n                            if (\r\n                                GlobalSettings.applets.refresh.mode ===\r\n                                    Enums.RefreshMode.Automatic &&\r\n                                consecutiveActions <\r\n                                    GlobalSettings.applets.refresh\r\n                                        .maximumConsecutiveAutomaticRefreshes\r\n                            ) {\r\n                                if (\r\n                                    GlobalSettings.applets.refresh.timeBetweenAutomaticRefreshes <=\r\n                                    0\r\n                                ) {\r\n                                    logEvent(\r\n                                        Enums.LogLevel.Info,\r\n                                        \"Triggering automatic card refresh number \" +\r\n                                            (consecutiveActions + 1)\r\n                                    );\r\n\r\n                                    this.internalExecuteAction(\r\n                                        this._card.refresh.action,\r\n                                        ActivityRequestTrigger.Automatic,\r\n                                        consecutiveActions + 1\r\n                                    );\r\n                                } else {\r\n                                    logEvent(\r\n                                        Enums.LogLevel.Info,\r\n                                        \"Scheduling automatic card refresh number \" +\r\n                                            (consecutiveActions + 1) +\r\n                                            \" in \" +\r\n                                            GlobalSettings.applets.refresh\r\n                                                .timeBetweenAutomaticRefreshes +\r\n                                            \"ms\"\r\n                                    );\r\n\r\n                                    const action = this._card.refresh.action;\r\n\r\n                                    this._allowAutomaticCardUpdate = true;\r\n\r\n                                    window.setTimeout(() => {\r\n                                        if (this._allowAutomaticCardUpdate) {\r\n                                            this.internalExecuteAction(\r\n                                                action,\r\n                                                ActivityRequestTrigger.Automatic,\r\n                                                consecutiveActions + 1\r\n                                            );\r\n                                        }\r\n                                    }, GlobalSettings.applets.refresh.timeBetweenAutomaticRefreshes);\r\n                                }\r\n                            } else if (\r\n                                GlobalSettings.applets.refresh.mode !== Enums.RefreshMode.Disabled\r\n                            ) {\r\n                                if (consecutiveActions > 0) {\r\n                                    logEvent(\r\n                                        Enums.LogLevel.Warning,\r\n                                        \"Stopping automatic refreshes after \" +\r\n                                            consecutiveActions +\r\n                                            \" consecutive refreshes.\"\r\n                                    );\r\n                                } else {\r\n                                    logEvent(\r\n                                        Enums.LogLevel.Warning,\r\n                                        \"The card has a refresh section, but automatic refreshes are disabled.\"\r\n                                    );\r\n                                }\r\n\r\n                                if (\r\n                                    GlobalSettings.applets.refresh\r\n                                        .allowManualRefreshesAfterAutomaticRefreshes ||\r\n                                    GlobalSettings.applets.refresh.mode === Enums.RefreshMode.Manual\r\n                                ) {\r\n                                    logEvent(Enums.LogLevel.Info, \"Showing manual refresh button.\");\r\n\r\n                                    this.showManualRefreshButton(this._card.refresh.action);\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            } catch (error) {\r\n                // Ignore all errors\r\n                logEvent(Enums.LogLevel.Error, \"setCard: \" + error);\r\n            }\r\n        }\r\n    }\r\n\r\n    private internalExecuteAction(\r\n        action: Action,\r\n        trigger: ActivityRequestTrigger,\r\n        consecutiveActions: number\r\n    ) {\r\n        if (action instanceof UniversalAction) {\r\n            if (this.channelAdapter) {\r\n                const request = this.createActivityRequest(action, trigger, consecutiveActions);\r\n\r\n                if (request) {\r\n                    void request.retryAsync();\r\n                }\r\n            } else {\r\n                throw new Error(\"internalExecuteAction: No channel adapter set.\");\r\n            }\r\n        }\r\n\r\n        if (this.onAction) {\r\n            this.onAction(this, action);\r\n        }\r\n    }\r\n\r\n    private createProgressOverlay(request: ActivityRequest): HTMLElement | undefined {\r\n        if (!this._progressOverlay) {\r\n            if (this.onCreateProgressOverlay) {\r\n                this._progressOverlay = this.onCreateProgressOverlay(this, request);\r\n            } else {\r\n                this._progressOverlay = document.createElement(\"div\");\r\n                this._progressOverlay.className = \"aaf-progress-overlay\";\r\n\r\n                const spinner = document.createElement(\"div\");\r\n                spinner.className = \"aaf-spinner\";\r\n                spinner.style.width = \"28px\";\r\n                spinner.style.height = \"28px\";\r\n\r\n                this._progressOverlay.appendChild(spinner);\r\n            }\r\n        }\r\n\r\n        return this._progressOverlay;\r\n    }\r\n\r\n    private removeProgressOverlay(request: IActivityRequest) {\r\n        if (this.onRemoveProgressOverlay) {\r\n            this.onRemoveProgressOverlay(this, request);\r\n        }\r\n\r\n        if (this._progressOverlay !== undefined) {\r\n            this.renderedElement.removeChild(this._progressOverlay);\r\n\r\n            this._progressOverlay = undefined;\r\n        }\r\n    }\r\n\r\n    private activityRequestSucceeded(\r\n        response: SuccessResponse,\r\n        parsedContent: string | AdaptiveCard | undefined\r\n    ) {\r\n        if (this.onActivityRequestSucceeded) {\r\n            this.onActivityRequestSucceeded(this, response, parsedContent);\r\n        }\r\n    }\r\n\r\n    private activityRequestFailed(response: ErrorResponse): number {\r\n        return this.onActivityRequestFailed\r\n            ? this.onActivityRequestFailed(this, response)\r\n            : GlobalSettings.applets.defaultTimeBetweenRetryAttempts;\r\n    }\r\n\r\n    private showAuthCodeInputDialog(request: ActivityRequest) {\r\n        const showBuiltInAuthCodeInputCard = this.onShowAuthCodeInputDialog\r\n            ? this.onShowAuthCodeInputDialog(this, request)\r\n            : true;\r\n\r\n        if (showBuiltInAuthCodeInputCard) {\r\n            const authCodeInputCard = this.createMagicCodeInputCard(request.attemptNumber);\r\n            authCodeInputCard.render();\r\n            authCodeInputCard.onExecuteAction = (submitMagicCodeAction: Action) => {\r\n                if (this.card && submitMagicCodeAction instanceof SubmitAction) {\r\n                    switch (submitMagicCodeAction.id) {\r\n                        case AdaptiveApplet._submitMagicCodeActionId:\r\n                            let authCode: string | undefined = undefined;\r\n\r\n                            if (\r\n                                submitMagicCodeAction.data &&\r\n                                typeof (<any>submitMagicCodeAction.data)[\"magicCode\"] === \"string\"\r\n                            ) {\r\n                                authCode = (<any>submitMagicCodeAction.data)[\"magicCode\"];\r\n                            }\r\n\r\n                            if (authCode) {\r\n                                this.displayCard(this.card);\r\n\r\n                                request.authCode = authCode;\r\n                                void request.retryAsync();\r\n                            } else {\r\n                                alert(\"Please enter the magic code you received.\");\r\n                            }\r\n\r\n                            break;\r\n                        case AdaptiveApplet._cancelMagicCodeAuthActionId:\r\n                            logEvent(Enums.LogLevel.Warning, \"Authentication cancelled by user.\");\r\n\r\n                            this.displayCard(this.card);\r\n\r\n                            break;\r\n                        default:\r\n                            logEvent(\r\n                                Enums.LogLevel.Error,\r\n                                \"Unexpected action taken from magic code input card (id = \" +\r\n                                    submitMagicCodeAction.id +\r\n                                    \")\"\r\n                            );\r\n\r\n                            alert(Strings.magicCodeInputCard.somethingWentWrong());\r\n\r\n                            break;\r\n                    }\r\n                }\r\n            };\r\n\r\n            this.displayCard(authCodeInputCard);\r\n        }\r\n    }\r\n\r\n    private async internalSendActivityRequestAsync(request: ActivityRequest) {\r\n        if (!this.channelAdapter) {\r\n            throw new Error(\"internalSendActivityRequestAsync: channelAdapter is not set.\");\r\n        }\r\n        const { action } = request;\r\n        if (action instanceof ExecuteAction) {\r\n            await this.internalSendExecuteRequestAsync(request);\r\n        } else if (action instanceof DataQuery) {\r\n            await this.internalSendDataQueryRequestAsync(request);\r\n        } else {\r\n            throw new Error(\"internalSendActivityRequestAsync: Unhandled Action Type\");\r\n        }\r\n    }\r\n\r\n    private async internalSendExecuteRequestAsync(request: ActivityRequest) {\r\n        if (!this.channelAdapter) {\r\n            throw new Error(\"internalSendExecuteRequestAsync: channelAdapter is not set.\");\r\n        }\r\n\r\n        const overlay = this.createProgressOverlay(request);\r\n\r\n        if (overlay !== undefined) {\r\n            this.renderedElement.appendChild(overlay);\r\n        }\r\n\r\n        let done = false;\r\n\r\n        while (!done) {\r\n            let response: ActivityResponse | undefined = undefined;\r\n\r\n            if (request.attemptNumber === 1) {\r\n                logEvent(\r\n                    Enums.LogLevel.Info,\r\n                    \"Sending activity request to channel (attempt \" + request.attemptNumber + \")\"\r\n                );\r\n            } else {\r\n                logEvent(\r\n                    Enums.LogLevel.Info,\r\n                    \"Re-sending activity request to channel (attempt \" + request.attemptNumber + \")\"\r\n                );\r\n            }\r\n\r\n            try {\r\n                response = await this.channelAdapter.sendRequestAsync(request);\r\n            } catch (error) {\r\n                logEvent(Enums.LogLevel.Error, \"Activity request failed: \" + error);\r\n\r\n                this.removeProgressOverlay(request);\r\n\r\n                done = true;\r\n            }\r\n\r\n            if (response) {\r\n                if (response instanceof SuccessResponse) {\r\n                    this.removeProgressOverlay(request);\r\n\r\n                    if (response.rawContent === undefined) {\r\n                        throw new Error(\r\n                            \"internalSendExecuteRequestAsync: Action.Execute result is undefined\"\r\n                        );\r\n                    }\r\n\r\n                    let parsedContent = response.rawContent;\r\n\r\n                    try {\r\n                        parsedContent = JSON.parse(response.rawContent);\r\n                    } catch {\r\n                        // Leave parseContent as is\r\n                    }\r\n\r\n                    if (typeof parsedContent === \"string\") {\r\n                        logEvent(\r\n                            Enums.LogLevel.Info,\r\n                            \"The activity request returned a string after \" +\r\n                                request.attemptNumber +\r\n                                \" attempt(s).\"\r\n                        );\r\n\r\n                        this.activityRequestSucceeded(response, parsedContent);\r\n                    } else if (\r\n                        typeof parsedContent === \"object\" &&\r\n                        parsedContent[\"type\"] === \"AdaptiveCard\"\r\n                    ) {\r\n                        logEvent(\r\n                            Enums.LogLevel.Info,\r\n                            \"The activity request returned an Adaptive Card after \" +\r\n                                request.attemptNumber +\r\n                                \" attempt(s).\"\r\n                        );\r\n\r\n                        this.internalSetCard(parsedContent, request.consecutiveActions);\r\n                        this.activityRequestSucceeded(response, this.card);\r\n                    } else {\r\n                        throw new Error(\r\n                            \"internalSendExecuteRequestAsync: Action.Execute result is of unsupported type (\" +\r\n                                typeof response.rawContent +\r\n                                \")\"\r\n                        );\r\n                    }\r\n\r\n                    done = true;\r\n                } else if (response instanceof ErrorResponse) {\r\n                    const retryIn: number = this.activityRequestFailed(response);\r\n\r\n                    if (\r\n                        retryIn >= 0 &&\r\n                        request.attemptNumber < GlobalSettings.applets.maximumRetryAttempts\r\n                    ) {\r\n                        logEvent(\r\n                            Enums.LogLevel.Warning,\r\n                            `Activity request failed: ${response.error.message}. Retrying in ${retryIn}ms`\r\n                        );\r\n\r\n                        request.attemptNumber++;\r\n\r\n                        await new Promise<void>((resolve, _reject) => {\r\n                            window.setTimeout(() => {\r\n                                resolve();\r\n                            }, retryIn);\r\n                        });\r\n                    } else {\r\n                        logEvent(\r\n                            Enums.LogLevel.Error,\r\n                            `Activity request failed: ${response.error.message}. Giving up after ${request.attemptNumber} attempt(s)`\r\n                        );\r\n\r\n                        this.removeProgressOverlay(request);\r\n\r\n                        done = true;\r\n                    }\r\n                } else if (response instanceof LoginRequestResponse) {\r\n                    logEvent(\r\n                        Enums.LogLevel.Info,\r\n                        \"The activity request returned a LoginRequestResponse after \" +\r\n                            request.attemptNumber +\r\n                            \" attempt(s).\"\r\n                    );\r\n\r\n                    if (request.attemptNumber <= GlobalSettings.applets.maximumRetryAttempts) {\r\n                        let attemptOAuth = true;\r\n\r\n                        if (response.tokenExchangeResource && this.onSSOTokenNeeded) {\r\n                            // Attempt to use SSO. The host will return true if it can handle SSO, in which case\r\n                            // we bypass OAuth\r\n                            attemptOAuth = !this.onSSOTokenNeeded(\r\n                                this,\r\n                                request,\r\n                                response.tokenExchangeResource\r\n                            );\r\n                        }\r\n\r\n                        if (attemptOAuth) {\r\n                            // Attempt to use OAuth\r\n                            this.removeProgressOverlay(request);\r\n\r\n                            if (response.signinButton === undefined) {\r\n                                throw new Error(\r\n                                    \"internalSendExecuteRequestAsync: the login request doesn't contain a valid signin URL.\"\r\n                                );\r\n                            }\r\n\r\n                            logEvent(\r\n                                Enums.LogLevel.Info,\r\n                                \"Login required at \" + response.signinButton.value\r\n                            );\r\n\r\n                            if (this.onShowSigninPrompt) {\r\n                                // Bypass the built-in auth prompt if the host app handles it\r\n                                this.onShowSigninPrompt(this, request, response.signinButton);\r\n                            } else {\r\n                                this.showAuthCodeInputDialog(request);\r\n\r\n                                const left =\r\n                                    window.screenX +\r\n                                    (window.outerWidth - GlobalSettings.applets.authPromptWidth) /\r\n                                        2;\r\n                                const top =\r\n                                    window.screenY +\r\n                                    (window.outerHeight - GlobalSettings.applets.authPromptHeight) /\r\n                                        2;\r\n\r\n                                window.open(\r\n                                    response.signinButton.value,\r\n                                    response.signinButton.title\r\n                                        ? response.signinButton.title\r\n                                        : \"Sign in\",\r\n                                    `width=${GlobalSettings.applets.authPromptWidth},height=${GlobalSettings.applets.authPromptHeight},left=${left},top=${top}`\r\n                                );\r\n                            }\r\n                        }\r\n                    } else {\r\n                        logEvent(\r\n                            Enums.LogLevel.Error,\r\n                            \"Authentication failed. Giving up after \" +\r\n                                request.attemptNumber +\r\n                                \" attempt(s)\"\r\n                        );\r\n\r\n                        alert(Strings.magicCodeInputCard.authenticationFailed());\r\n                    }\r\n\r\n                    // Exit the loop. After a LoginRequestResponse, the host app is responsible for retrying the request\r\n                    break;\r\n                } else {\r\n                    throw new Error(\"Unhandled response type: \" + JSON.stringify(response));\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private async internalSendDataQueryRequestAsync(request: ActivityRequest) {\r\n        if (!this.channelAdapter) {\r\n            throw new Error(\"internalSendDataQueryRequestAsync: channel adapter not set\");\r\n        }\r\n        const filter = (request.action as DataQuery).filter;\r\n        if (this._choiceSet) {\r\n            this._choiceSet.showLoadingIndicator();\r\n            let response: ActivityResponse | undefined = undefined;\r\n            try {\r\n                response = await this.channelAdapter.sendRequestAsync(request);\r\n            } catch (error) {\r\n                this._choiceSet.showErrorIndicator(filter, \"Unable to load\");\r\n                logEvent(Enums.LogLevel.Error, \"Activity request failed: \" + error);\r\n            }\r\n            if (response) {\r\n                if (response instanceof SuccessResponse) {\r\n                    const rawResponse = response.rawContent;\r\n                    if (rawResponse) {\r\n                        let parsedResponse;\r\n                        try {\r\n                            parsedResponse = JSON.parse(rawResponse);\r\n                        } catch (error) {\r\n                            this._choiceSet.showErrorIndicator(filter, \"Unable to load\");\r\n                            throw new Error(\r\n                                \"internalSendDataQueryRequestAsync: Cannot parse response object: \" +\r\n                                    rawResponse\r\n                            );\r\n                        }\r\n                        if (typeof parsedResponse === \"object\") {\r\n                            this._choiceSet.renderChoices(filter, parsedResponse);\r\n                            this.activityRequestSucceeded(response, rawResponse);\r\n                        } else {\r\n                            this._choiceSet.showErrorIndicator(filter, \"Error loading results\");\r\n                            throw new Error(\r\n                                \"internalSendDataQueryRequestAsync: Data.Query result is of unsupported type (\" +\r\n                                    typeof rawResponse +\r\n                                    \")\"\r\n                            );\r\n                        }\r\n                    } else {\r\n                        this._choiceSet.showErrorIndicator(filter, \"Unable to load\");\r\n                        throw new Error(\r\n                            \"internalSendDataQueryRequestAsync: Data.Query result is undefined\"\r\n                        );\r\n                    }\r\n                } else if (response instanceof ErrorResponse) {\r\n                    this._choiceSet.showErrorIndicator(\r\n                        filter,\r\n                        response.error.message || \"Error loading results\"\r\n                    );\r\n                    logEvent(\r\n                        Enums.LogLevel.Error,\r\n                        `Activity request failed: ${response.error.message}.`\r\n                    );\r\n                    this.activityRequestFailed(response);\r\n                } else {\r\n                    this._choiceSet.showErrorIndicator(filter, \"Unable to load\");\r\n                    throw new Error(\"Unhandled response type: \" + JSON.stringify(response));\r\n                }\r\n            } else {\r\n                this._choiceSet.removeLoadingIndicator();\r\n            }\r\n        }\r\n    }\r\n\r\n    readonly renderedElement: HTMLElement;\r\n\r\n    hostConfig?: HostConfig;\r\n    channelAdapter?: ChannelAdapter;\r\n\r\n    onCardChanging?: (sender: AdaptiveApplet, card: any) => boolean;\r\n    onCardChanged?: (sender: AdaptiveApplet) => void;\r\n    onPrefetchSSOToken?: (\r\n        sender: AdaptiveApplet,\r\n        tokenExchangeResource: TokenExchangeResource\r\n    ) => void;\r\n    onSSOTokenNeeded?: (\r\n        sender: AdaptiveApplet,\r\n        request: IActivityRequest,\r\n        tokenExchangeResource: TokenExchangeResource\r\n    ) => boolean;\r\n    onPrepareActivityRequest?: (\r\n        sender: AdaptiveApplet,\r\n        request: IActivityRequest,\r\n        action: UniversalAction\r\n    ) => boolean;\r\n    onActivityRequestSucceeded?: (\r\n        sender: AdaptiveApplet,\r\n        response: SuccessResponse,\r\n        parsedContent: string | AdaptiveCard | undefined\r\n    ) => void;\r\n    onActivityRequestFailed?: (sender: AdaptiveApplet, response: ErrorResponse) => number;\r\n    onCreateSerializationContext?: (sender: AdaptiveApplet) => SerializationContext;\r\n    onCreateProgressOverlay?: (\r\n        sender: AdaptiveApplet,\r\n        request: IActivityRequest\r\n    ) => HTMLElement | undefined;\r\n    onRemoveProgressOverlay?: (sender: AdaptiveApplet, request: IActivityRequest) => void;\r\n    onRenderManualRefreshButton?: (sender: AdaptiveApplet) => HTMLElement | undefined;\r\n    onAction?: (sender: AdaptiveApplet, action: Action) => void;\r\n    onShowManualRefreshButton?: (sender: AdaptiveApplet) => boolean;\r\n    onShowAuthCodeInputDialog?: (sender: AdaptiveApplet, request: IActivityRequest) => boolean;\r\n    onShowSigninPrompt?: (\r\n        sender: AdaptiveApplet,\r\n        request: IActivityRequest,\r\n        signinButton: AuthCardButton\r\n    ) => void;\r\n\r\n    constructor() {\r\n        this.renderedElement = document.createElement(\"div\");\r\n        this.renderedElement.className = \"aaf-cardHost\";\r\n        this.renderedElement.style.position = \"relative\";\r\n        this.renderedElement.style.display = \"flex\";\r\n        this.renderedElement.style.flexDirection = \"column\";\r\n\r\n        this._cardHostElement = document.createElement(\"div\");\r\n\r\n        this._refreshButtonHostElement = document.createElement(\"div\");\r\n        this._refreshButtonHostElement.className = \"aaf-refreshButtonHost\";\r\n        this._refreshButtonHostElement.style.display = \"none\";\r\n\r\n        this.renderedElement.appendChild(this._cardHostElement);\r\n        this.renderedElement.appendChild(this._refreshButtonHostElement);\r\n    }\r\n\r\n    refreshCard() {\r\n        if (this._card && this._card.refresh) {\r\n            this.internalExecuteAction(this._card.refresh.action, ActivityRequestTrigger.Manual, 0);\r\n        }\r\n    }\r\n\r\n    setCard(payload: any) {\r\n        this.internalSetCard(payload, 0);\r\n    }\r\n\r\n    get card(): AdaptiveCard | undefined {\r\n        return this._card;\r\n    }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport * as AEL from \"adaptive-expressions\";\r\nconst pkg = require('./../package.json');\r\n\r\nclass EvaluationContext {\r\n    private static readonly _reservedFields = [\"$data\", \"$when\", \"$root\", \"$index\", \"$host\", \"$_acTemplateVersion\"];\r\n\r\n    private _stateStack: Array<{ $data: any, $index: any }> = [];\r\n    private _$data: any;\r\n\r\n    $root: any;\r\n    $host: any;\r\n    $index: number;\r\n    $_acTemplateVersion: any;\r\n\r\n    constructor(context?: IEvaluationContext) {\r\n        if (context !== undefined) {\r\n            this.$_acTemplateVersion = this.generateVersionJson();\r\n\r\n            this.$root = context.$root;\r\n            this.$host = context.$host;\r\n        }\r\n    }\r\n\r\n    isReservedField(name: string): boolean {\r\n        return EvaluationContext._reservedFields.indexOf(name) >= 0;\r\n    }\r\n\r\n    saveState() {\r\n        this._stateStack.push(\r\n            {\r\n                $data: this.$data,\r\n                $index: this.$index\r\n            });\r\n    }\r\n\r\n    restoreLastState() {\r\n        if (this._stateStack.length === 0) {\r\n            throw new Error(\"There is no evaluation context state to restore.\");\r\n        }\r\n\r\n        let savedContext = this._stateStack.pop();\r\n\r\n        this.$data = savedContext.$data;\r\n        this.$index = savedContext.$index;\r\n    }\r\n\r\n    get $data(): any {\r\n        return this._$data !== undefined ? this._$data : this.$root;\r\n    }\r\n\r\n    set $data(value: any) {\r\n        this._$data = value;\r\n    }\r\n\r\n    generateVersionJson() {\r\n        // Example version: 2.3.0-alpha\r\n        const version = pkg.version;\r\n        const versionSplit = version.split('.');\r\n\r\n        let patchSplit = [];\r\n        const patchIndex = 2;\r\n        if (versionSplit[patchIndex]) {\r\n            patchSplit = versionSplit[patchIndex].split('-');\r\n        }\r\n\r\n        return {\r\n            \"major\": parseInt(versionSplit[0]),\r\n            \"minor\": parseInt(versionSplit[1]),\r\n            \"patch\": parseInt(patchSplit[0]),\r\n            \"suffix\": patchSplit[1] || \"\",\r\n        }\r\n    }\r\n}\r\n\r\nclass TemplateObjectMemory implements AEL.MemoryInterface {\r\n    private _memory: AEL.MemoryInterface;\r\n\r\n    $root: any;\r\n    $data: any;\r\n    $index: any;\r\n    $host: any;\r\n    $_acTemplateVersion: any;\r\n\r\n    constructor() {\r\n        this._memory = new AEL.SimpleObjectMemory(this);\r\n    }\r\n\r\n    getValue(path: string): any {\r\n        let actualPath = (path.length > 0 && path[0] !== \"$\") ? \"$data.\" + path : path;\r\n\r\n        return this._memory.getValue(actualPath);\r\n    }\r\n\r\n    setValue(path: string, input: any) {\r\n        this._memory.setValue(path, input);\r\n    }\r\n\r\n    version(): string {\r\n        return this._memory.version();\r\n    }\r\n}\r\n\r\n/**\r\n * Holds global settings that can be used to customize the way templates are expanded.\r\n */\r\nexport class GlobalSettings {\r\n    /**\r\n     * Callback invoked when expression evaluation needs the value of a field in the source data object\r\n     * and that field is undefined or null. By default, expression evaluation will substitute an undefined\r\n     * field with its binding expression (e.g. `${field}`). This callback makes it possible to customize that\r\n     * behavior.\r\n     *\r\n     * **Example**\r\n     * Given this data object:\r\n     *\r\n     * ```json\r\n     * {\r\n     *     firstName: \"David\"\r\n     * }\r\n     * ```\r\n     *\r\n     * The expression `${firstName} ${lastName}` will evaluate to \"David ${lastName}\" because the `lastName`\r\n     * field is undefined.\r\n     *\r\n     * Now let's set the callback:\r\n     * ```typescript\r\n     * GlobalSettings.getUndefinedFieldValueSubstitutionString = (path: string) => { return \"<undefined value>\"; }\r\n     * ```\r\n     *\r\n     * With that, the above expression will evaluate to \"David &lt;undefined value&gt;\"\r\n     */\r\n    static getUndefinedFieldValueSubstitutionString?: (path: string) => string | undefined = undefined;\r\n}\r\n\r\n/**\r\n * Holds the context used to expand a template.\r\n */\r\nexport interface IEvaluationContext {\r\n    /**\r\n     * The root data object the template will bind to. Expressions that refer to $root in the template payload\r\n     * map to this field. Initially, $data also maps to $root.\r\n     */\r\n    $root?: any;\r\n    /**\r\n     * The host data object the template will bind to. Expressions that refer to $host in the template payload\r\n     * map to this field. This allows a host process to supply additional context to the template.\r\n     */\r\n    $host?: any;\r\n}\r\n\r\n/**\r\n * Represents a template that can be bound to data.\r\n */\r\nexport class Template {\r\n\r\n    private templateExpansionWarnings;\r\n\r\n    private static prepare(node: any): any {\r\n        if (typeof node === \"string\") {\r\n            return Template.parseInterpolatedString(node);\r\n        }\r\n        else if (typeof node === \"object\" && node !== null) {\r\n            if (Array.isArray(node)) {\r\n                let result: any[] = [];\r\n\r\n                for (let item of node) {\r\n                    result.push(Template.prepare(item));\r\n                }\r\n\r\n                return result;\r\n            }\r\n            else {\r\n                let keys = Object.keys(node);\r\n                let result = {};\r\n\r\n                for (let key of keys) {\r\n                    result[key] = Template.prepare(node[key]);\r\n                }\r\n\r\n                return result;\r\n            }\r\n        }\r\n        else {\r\n            return node;\r\n        }\r\n    }\r\n\r\n    private static internalTryEvaluateExpression(expression: AEL.Expression, context: EvaluationContext, allowSubstitutions: boolean): { value: any; error: string } {\r\n        let memory = new TemplateObjectMemory();\r\n        memory.$root = context.$root;\r\n        memory.$data = context.$data;\r\n        memory.$index = context.$index;\r\n        memory.$host = context.$host;\r\n        memory.$_acTemplateVersion = context.$_acTemplateVersion;\r\n\r\n        let options: AEL.Options | undefined = undefined;\r\n\r\n        if (allowSubstitutions) {\r\n            options = new AEL.Options();\r\n            options.nullSubstitution = (path: string) => {\r\n                let substitutionValue: string | undefined = undefined;\r\n\r\n                if (GlobalSettings.getUndefinedFieldValueSubstitutionString) {\r\n                    substitutionValue = GlobalSettings.getUndefinedFieldValueSubstitutionString(path);\r\n                }\r\n\r\n                return substitutionValue ? substitutionValue : \"${\" + path + \"}\";\r\n            }\r\n        }\r\n\r\n        // The root of an expression coming from an interpolated string is of type Concat.\r\n        // In that case, and if the caller allows it, we're doing our own concatenation\r\n        // in order to catch each individual expression evaluation error and substitute in\r\n        // the final string\r\n        if (expression.type === AEL.ExpressionType.Concat && allowSubstitutions) {\r\n            let result = \"\";\r\n\r\n            for (let childExpression of expression.children) {\r\n                let evaluationResult: { value: any; error: string };\r\n\r\n                try {\r\n                    evaluationResult = childExpression.tryEvaluate(memory, options);\r\n                }\r\n                catch (ex) {\r\n                    // We'll swallow all exceptions here\r\n                    evaluationResult = {\r\n                        value: undefined,\r\n                        error: ex\r\n                    };\r\n                }\r\n\r\n                if (evaluationResult.error) {\r\n                    evaluationResult.value = \"${\" + childExpression.toString() + \"}\";\r\n                }\r\n\r\n                result += evaluationResult.value.toString();\r\n            }\r\n\r\n            return { value: result, error: undefined };\r\n        }\r\n\r\n        return expression.tryEvaluate(memory, options);\r\n    }\r\n\r\n    /**\r\n     * Parses an interpolated string into an Expression object ready to evaluate.\r\n     *\r\n     * @param interpolatedString The interpolated string to parse. Example: \"Hello ${name}\"\r\n     * @returns An Expression object if the provided interpolated string contained at least one expression (e.g. \"${expression}\"); the original string otherwise.\r\n     */\r\n    public static parseInterpolatedString(interpolatedString: string): AEL.Expression | string {\r\n        let lookup: AEL.EvaluatorLookup = (type: string) => {\r\n            let standardFunction = AEL.ExpressionFunctions.standardFunctions.get(type);\r\n\r\n            if (standardFunction) {\r\n                return standardFunction;\r\n            }\r\n            else {\r\n                return new AEL.ExpressionEvaluator(\r\n                    type,\r\n                    (expression: AEL.Expression, state: AEL.MemoryInterface, options: AEL.Options) => { throw new Error(\"Unknown function \" + type); },\r\n                    AEL.ReturnType.String);\r\n            }\r\n        }\r\n\r\n        // If there is at least one expression start marker, let's attempt to convert into an expression\r\n        if (interpolatedString.indexOf(\"${\") >= 0) {\r\n            let parsedExpression = AEL.Expression.parse(\"`\" + interpolatedString + \"`\", lookup);\r\n\r\n            if (parsedExpression.type === \"concat\") {\r\n                if (parsedExpression.children.length === 1 && !(parsedExpression.children[0] instanceof AEL.Constant)) {\r\n                    // The concat contains a single child that isn't a constant, thus the original\r\n                    // string was a single expression. When evaluated, we want it to produce the type\r\n                    // of that single expression\r\n                    return parsedExpression.children[0];\r\n                }\r\n                else if (parsedExpression.children.length === 2) {\r\n                    let firstChild = parsedExpression.children[0];\r\n\r\n                    if (firstChild instanceof AEL.Constant && firstChild.value === \"\" && !(parsedExpression.children[1] instanceof AEL.Constant)) {\r\n                        // The concat contains 2 children, and the first one is an empty string constant and the second isn't a constant.\r\n                        // From version 4.10.3, AEL always inserts an empty string constant in all concat expression. Thus the original\r\n                        // string was a single expression in this case as well. When evaluated, we want it to produce the type\r\n                        // of that single expression.\r\n                        return parsedExpression.children[1];\r\n                    }\r\n                }\r\n\r\n                // Otherwise, we want the expression to produce a string\r\n                return parsedExpression;\r\n            }\r\n        }\r\n\r\n        // If the original string didn't contain any expression, return i as is\r\n        return interpolatedString;\r\n    }\r\n\r\n    /**\r\n     * Tries to evaluate the provided expression using the provided context.\r\n     *\r\n     * @param expression The expression to evaluate.\r\n     * @param context The context (data) used to evaluate the expression.\r\n     * @param allowSubstitutions Indicates if the expression evaluator should substitute undefined value with a default\r\n     *   string or the value returned by the GlobalSettings.getUndefinedFieldValueSubstitutionString callback.\r\n     * @returns An object representing the result of the evaluation. If the evaluation succeeded, the value property\r\n     *   contains the actual evaluation result, and the error property is undefined. If the evaluation fails, the error\r\n     *   property contains a message detailing the error that occurred.\r\n     */\r\n    public static tryEvaluateExpression(expression: AEL.Expression, context: IEvaluationContext, allowSubstitutions: boolean): { value: any; error: string } {\r\n        return Template.internalTryEvaluateExpression(expression, new EvaluationContext(context), allowSubstitutions);\r\n    }\r\n\r\n    private _context: EvaluationContext;\r\n    private _preparedPayload: any;\r\n\r\n    private expandSingleObject(node: object): any {\r\n        let result = {};\r\n        let keys = Object.keys(node);\r\n\r\n        for (let key of keys) {\r\n            if (!this._context.isReservedField(key)) {\r\n                let value = this.internalExpand(node[key]);\r\n\r\n                if (value !== undefined) {\r\n                    result[key] = value;\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    private internalExpand(node: any): any {\r\n        let result: any;\r\n\r\n        this._context.saveState();\r\n\r\n        if (Array.isArray(node)) {\r\n            let itemArray: any[] = [];\r\n\r\n            for (let item of node) {\r\n                let expandedItem = this.internalExpand(item);\r\n\r\n                if (expandedItem !== null) {\r\n                    if (Array.isArray(expandedItem)) {\r\n                        itemArray = itemArray.concat(expandedItem);\r\n                    }\r\n                    else {\r\n                        itemArray.push(expandedItem);\r\n                    }\r\n                }\r\n            }\r\n\r\n            result = itemArray;\r\n        }\r\n        else if (node instanceof AEL.Expression) {\r\n            let evaluationResult = Template.internalTryEvaluateExpression(node, this._context, true);\r\n\r\n            if (!evaluationResult.error) {\r\n                result = evaluationResult.value;\r\n            }\r\n            else {\r\n                throw new Error(evaluationResult.error);\r\n            }\r\n        }\r\n        else if (typeof node === \"object\" && node !== null) {\r\n            let when = node[\"$when\"];\r\n            let dataContext = node[\"$data\"];\r\n            let dataContextIsArray: boolean = false;\r\n            let dataContexts: any[];\r\n\r\n            if (dataContext === undefined) {\r\n                dataContexts = [ undefined ];\r\n            }\r\n            else {\r\n                if (dataContext instanceof AEL.Expression) {\r\n                    let evaluationResult = Template.internalTryEvaluateExpression(dataContext, this._context, true);\r\n\r\n                    if (!evaluationResult.error) {\r\n                        dataContext = evaluationResult.value;\r\n                    }\r\n                    else {\r\n                        throw new Error(evaluationResult.error);\r\n                    }\r\n                }\r\n\r\n                if (Array.isArray(dataContext)) {\r\n                    dataContexts = dataContext;\r\n                    dataContextIsArray = true;\r\n                }\r\n                else {\r\n                    dataContexts = [ dataContext ];\r\n                }\r\n            }\r\n\r\n            result = [];\r\n\r\n            for (let i = 0; i < dataContexts.length; i++) {\r\n                if (dataContextIsArray) {\r\n                    this._context.$index = i;\r\n                }\r\n\r\n                if (dataContexts[i] !== undefined) {\r\n                    this._context.$data = dataContexts[i];\r\n                }\r\n\r\n                let dropObject = false;\r\n\r\n                if (when instanceof AEL.Expression) {\r\n                    let evaluationResult = Template.internalTryEvaluateExpression(when, this._context, false);\r\n                    let whenValue: boolean = false;\r\n\r\n                    // If $when fails to evaluate or evaluates to anything but a boolean, consider it is false\r\n                    if (!evaluationResult.error) {\r\n                        whenValue = typeof evaluationResult.value === \"boolean\" && evaluationResult.value;\r\n                    }\r\n                    \r\n                    if (!evaluationResult.value) {\r\n                        // Value was not found, and we should warn the client that the Expression was invalid\r\n                        this.templateExpansionWarnings.push(`WARN: Unable to parse the Adaptive Expression ${when}. The $when condition has been set to false by default.`);\r\n                    }\r\n\r\n                    dropObject = !whenValue;\r\n                } else if (when) {\r\n                    // If $when was provided, but it is not an AEL.Expression, drop the object\r\n                    this.templateExpansionWarnings.push(`WARN: ${when} is not an Adaptive Expression. The $when condition has been set to false by default.`);\r\n                    dropObject = true;\r\n                }\r\n\r\n                if (!dropObject) {\r\n                    let expandedObject = this.expandSingleObject(node);\r\n\r\n                    if (expandedObject !== null) {\r\n                        result.push(expandedObject);\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (result.length === 0) {\r\n                result = null;\r\n            }\r\n            else if (result.length === 1) {\r\n                result = result[0];\r\n            }\r\n        }\r\n        else {\r\n            result = node;\r\n        }\r\n\r\n        this._context.restoreLastState();\r\n\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * Initializes a new Template instance based on the provided payload.\r\n     * Once created, the instance can be bound to different data objects\r\n     * in a loop.\r\n     *\r\n     * @param payload The template payload.\r\n     */\r\n    constructor(payload: any) {\r\n        this._preparedPayload = Template.prepare(payload);\r\n    }\r\n\r\n    /**\r\n     * Expands the template using the provided context. Template expansion involves\r\n     * evaluating the expressions used in the original template payload, as well as\r\n     * repeating (expanding) parts of that payload that are bound to arrays.\r\n     *\r\n     * Example:\r\n     *\r\n     * ```typescript\r\n     * let context = {\r\n     *     $root: {\r\n     *         firstName: \"John\",\r\n     *         lastName: \"Doe\",\r\n     *         children: [\r\n     *             { fullName: \"Jane Doe\", age: 9 },\r\n     *             { fullName: \"Alex Doe\", age: 12 }\r\n     *         ]\r\n     *     }\r\n     * }\r\n     *\r\n     * let templatePayload = {\r\n     *     type: \"AdaptiveCard\",\r\n     *     version: \"1.2\",\r\n     *     body: [\r\n     *         {\r\n     *             type: \"TextBlock\",\r\n     *             text: \"${firstName} ${lastName}\"\r\n     *         },\r\n     *         {\r\n     *             type: \"TextBlock\",\r\n     *             $data: \"${children}\",\r\n     *             text: \"${fullName} (${age})\"\r\n     *         }\r\n     *     ]\r\n     * }\r\n     *\r\n     * let template = new Template(templatePayload);\r\n     *\r\n     * let expandedTemplate = template.expand(context);\r\n     * ```\r\n     *\r\n     * With the above code, the value of `expandedTemplate` will be\r\n     *\r\n     * ```json\r\n     * {\r\n     *     type: \"AdaptiveCard\",\r\n     *     version: \"1.2\",\r\n     *     body: [\r\n     *         {\r\n     *             type: \"TextBlock\",\r\n     *             text: \"John Doe\"\r\n     *         },\r\n     *         {\r\n     *             type: \"TextBlock\",\r\n     *             text: \"Jane Doe (9)\"\r\n     *         },\r\n     *         {\r\n     *             type: \"TextBlock\",\r\n     *             text: \"Alex Doe (12)\"\r\n     *         }\r\n     *     ]\r\n     * }\r\n     * ```\r\n     *\r\n     * @param context The context to bind the template to.\r\n     * @returns A value representing the expanded template. The type of that value\r\n     *   is dependent on the type of the original template payload passed to the constructor.\r\n     */\r\n    expand(context: IEvaluationContext): any {\r\n        this.templateExpansionWarnings = [];\r\n        this._context = new EvaluationContext(context);\r\n        return this.internalExpand(this._preparedPayload);\r\n    }\r\n\r\n    /**\r\n     * Getter method for the array of warning strings\r\n     * @returns An array storing any warnings that occurred while expanding the template\r\n     */\r\n    public getLastTemplateExpansionWarnings(): string[] {\r\n        return this.templateExpansionWarnings;\r\n    }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { IAdaptiveCard, ICardElement, IChoiceSetInput, IContainer, INumberInput, ITextInput, ITimeInput, IToggleInput } from 'adaptivecards/src/schema';\r\nimport { JSONSchema7, JSONSchema7Definition, JSONSchema7Type } from 'json-schema';\r\n\r\n\r\n// JSON Schema Card\r\n// generates an Adaptive Card given a JSON schema\r\nexport function JSONSchemaCard(schema: JSONSchema7): IAdaptiveCard | undefined {\r\n\ttry {\r\n\t\treturn {\r\n\t\t\ttype: \"AdaptiveCard\",\r\n\t\t\tbody: [\r\n\t\t\t\tJSONSchemaCardObject(schema, '', 0),\r\n\t\t\t],\r\n\t\t}\r\n\t} catch (e) {\r\n\t\tconsole.error(e);\r\n\t\treturn undefined;\r\n\t}\r\n}\r\n\r\n\r\n// JSON Schema Elements\r\n\r\nfunction JSONSchemaCardElement(schema: JSONSchema7Definition, path: string, depth: number): ICardElement {\r\n    if (typeof (schema) === \"boolean\") return null;\r\n    switch (schema.type) {\r\n        case \"array\":\r\n            if (Array.isArray(schema.items)) {\r\n                return JSONSchemaCardTuple(schema, path, depth);\r\n            } else {\r\n                return JSONSchemaCardList(schema, path, depth);\r\n            }\r\n        case \"object\":\r\n            return JSONSchemaCardObject(schema, path, depth);\r\n        case \"boolean\":\r\n            return JSONSchemaCardBoolean(schema, path)\r\n        case \"integer\":\r\n        case \"number\":\r\n            return JSONSchemaCardNumber(schema, path)\r\n        case \"string\":\r\n            if (schema.enum) {\r\n                return JSONSchemaCardChoiceSet(schema, path)\r\n            } else {\r\n                return JSONSchemaCardText(schema, path)\r\n            }\r\n        case \"date-time\":\r\n        case \"time\":\r\n        case \"date\":\r\n            return JSONSchemaCardTime(schema, path)\r\n        default:\r\n            return null;\r\n    }\r\n}\r\n\r\nfunction encodeProperty(property: string) {\r\n    return encodeURIComponent(property).replace('.', '%2e')\r\n}\r\n\r\nfunction textSizeAtDepth(depth: number) {\r\n    switch (depth) {\r\n        case 0:\r\n            \"large\"\r\n        case 1:\r\n            \"medium\"\r\n        default:\r\n            \"small\"\r\n    }\r\n}\r\n\r\nfunction JSONSchemaFieldTitle(schema: JSONSchema7, path: string, depth: number): ICardElement[] {\r\n    return [\r\n        schema.title ? {\r\n            type: \"TextBlock\",\r\n            size: textSizeAtDepth(depth),\r\n            text: schema.title,\r\n        } : null,\r\n        schema.description ? {\r\n            type: \"TextBlock\",\r\n            size: textSizeAtDepth(depth + 1),\r\n            isSubtle: true,\r\n            wrap: true,\r\n            text: schema.description,\r\n        } : null,\r\n    ]\r\n}\r\n\r\nfunction JSONSchemaCardTuple(schema: JSONSchema7, path: string, depth: number): IContainer {\r\n    if (!Array.isArray(schema.items)) return null;\r\n    return {\r\n        type: \"Container\",\r\n        items: [\r\n            ...JSONSchemaFieldTitle(schema, path, depth),\r\n            ...schema.items?.map((item: JSONSchema7Definition, idx: number) => {\r\n                return JSONSchemaCardElement(item, `${path}[${idx}]`, depth + 1)\r\n            }) ?? [],\r\n        ],\r\n    }\r\n}\r\n\r\nfunction JSONSchemaCardList(schema: JSONSchema7, path: string, depth: number): IContainer {\r\n    return {\r\n        type: \"Container\",\r\n        items: [\r\n            ...JSONSchemaFieldTitle(schema, path, depth),\r\n            // TODO not implemented\r\n        ],\r\n    }\r\n}\r\n\r\nfunction JSONSchemaCardObject(schema: JSONSchema7, path: string, depth: number): IContainer {\r\n    return {\r\n        type: \"Container\",\r\n        items: [\r\n            ...JSONSchemaFieldTitle(schema, path, depth),\r\n            ...schema.required?.map((property: string) => {\r\n                return JSONSchemaCardElement(schema.properties[property], `${path}.${encodeProperty(property)}`, depth + 1)\r\n            }) ?? [],\r\n        ],\r\n    }\r\n}\r\n\r\nfunction JSONSchemaCardBoolean(schema: JSONSchema7, path: string): IToggleInput {\r\n    return {\r\n        type: \"Input.Toggle\",\r\n        id: path,\r\n        title: schema.title,\r\n        label: schema.description,\r\n        value: schema.default as string,\r\n    }\r\n}\r\n\r\nfunction JSONSchemaCardNumber(schema: JSONSchema7, path: string): INumberInput {\r\n    return {\r\n        type: \"Input.Number\",\r\n        id: path,\r\n        title: schema.title,\r\n        placeholder: schema.description,\r\n        value: schema.default as string,\r\n        min: schema.exclusiveMinimum ?? schema.minimum,\r\n        max: schema.exclusiveMaximum ?? schema.maximum,\r\n    }\r\n}\r\n\r\nfunction JSONSchemaCardChoiceSet(schema: JSONSchema7, path: string): IChoiceSetInput {\r\n    return {\r\n        type: \"Input.ChoiceSet\",\r\n        id: path,\r\n        title: schema.title,\r\n        choices: schema.enum.map((item: JSONSchema7Type) => {\r\n            return {\r\n                title: item as string,\r\n                value: item as string,\r\n            }\r\n        }),\r\n        placeholder: schema.description,\r\n        value: schema.default as string,\r\n    }\r\n}\r\n\r\nfunction JSONSchemaCardText(schema: JSONSchema7, path: string): ITextInput {\r\n    return {\r\n        type: \"Input.Text\",\r\n        id: path,\r\n        title: schema.title,\r\n        placeholder: schema.description,\r\n        value: schema.default as string,\r\n        maxLength: schema.maxLength,\r\n        regex: schema.pattern,\r\n    }\r\n}\r\n\r\nfunction JSONSchemaCardTime(schema: JSONSchema7, path: string): ITimeInput {\r\n    return {\r\n        type: \"Input.Time\",\r\n        id: path,\r\n        title: schema.title,\r\n        placeholder: schema.description,\r\n        value: schema.default as string,\r\n    }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n/*\r\n    This should really be a string enum, e.g.\r\n\r\n        export enum ContainerStyle {\r\n            Default = \"default\",\r\n            Emphasis = \"emphasis\"\r\n        }\r\n\r\n    However, some hosts do not use a version of TypeScript\r\n    recent enough to understand string enums. This is\r\n    a compatible construct that does not require using\r\n    a more recent version of TypeScript.\r\n\r\n    Also note the \"weird\" way these readonly fields are declared is to work around\r\n    a breaking change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\r\n    and adopt this syntax for all other static readonly fields.\r\n*/\r\n/* eslint-disable @typescript-eslint/no-extraneous-class, @typescript-eslint/naming-convention */\r\nexport class ContainerStyle {\r\n    static readonly Default: \"default\" = \"default\";\r\n    static readonly Emphasis: \"emphasis\" = \"emphasis\";\r\n    static readonly Accent: \"accent\" = \"accent\";\r\n    static readonly Good: \"good\" = \"good\";\r\n    static readonly Attention: \"attention\" = \"attention\";\r\n    static readonly Warning: \"warning\" = \"warning\";\r\n}\r\n\r\nexport class ActionStyle {\r\n    static readonly Default: \"default\" = \"default\";\r\n    static readonly Positive: \"positive\" = \"positive\";\r\n    static readonly Destructive: \"destructive\" = \"destructive\";\r\n}\r\n\r\nexport class ActionMode {\r\n    static readonly Primary: \"primary\" = \"primary\";\r\n    static readonly Secondary: \"secondary\" = \"secondary\";\r\n}\r\n/* eslint-enable @typescript-eslint/no-extraneous-class, @typescript-eslint/naming-convention */\r\n\r\nexport enum Size {\r\n    Auto,\r\n    Stretch,\r\n    Small,\r\n    Medium,\r\n    Large\r\n}\r\n\r\nexport enum ImageSize {\r\n    Small,\r\n    Medium,\r\n    Large\r\n}\r\n\r\nexport enum ImageSetPresentationStyle {\r\n    Default,\r\n    Stacked\r\n}\r\n\r\nexport enum SizeUnit {\r\n    Weight,\r\n    Pixel\r\n}\r\n\r\nexport enum TextSize {\r\n    Small,\r\n    Default,\r\n    Medium,\r\n    Large,\r\n    ExtraLarge\r\n}\r\n\r\nexport enum InputStyle {\r\n    RevealOnHover,\r\n    Default\r\n}\r\n\r\nexport enum TextWeight {\r\n    Lighter,\r\n    Default,\r\n    Bolder\r\n}\r\n\r\nexport enum FontType {\r\n    Default,\r\n    Monospace\r\n}\r\n\r\nexport enum Spacing {\r\n    None,\r\n    Small,\r\n    Default,\r\n    Medium,\r\n    Large,\r\n    ExtraLarge,\r\n    Padding\r\n}\r\n\r\nexport enum TextColor {\r\n    Default,\r\n    Dark,\r\n    Light,\r\n    Accent,\r\n    Good,\r\n    Warning,\r\n    Attention\r\n}\r\n\r\nexport enum HorizontalAlignment {\r\n    Left,\r\n    Center,\r\n    Right\r\n}\r\n\r\nexport enum VerticalAlignment {\r\n    Top,\r\n    Center,\r\n    Bottom\r\n}\r\n\r\nexport enum ActionAlignment {\r\n    Left,\r\n    Center,\r\n    Right,\r\n    Stretch\r\n}\r\n\r\nexport enum ImageStyle {\r\n    Default,\r\n    Person\r\n}\r\n\r\nexport enum ShowCardActionMode {\r\n    Inline,\r\n    Popup\r\n}\r\n\r\nexport enum Orientation {\r\n    Horizontal,\r\n    Vertical\r\n}\r\n\r\nexport enum FillMode {\r\n    Cover,\r\n    RepeatHorizontally,\r\n    RepeatVertically,\r\n    Repeat\r\n}\r\n\r\nexport enum ActionIconPlacement {\r\n    LeftOfTitle,\r\n    AboveTitle\r\n}\r\n\r\nexport enum InputTextStyle {\r\n    Text,\r\n    Tel,\r\n    Url,\r\n    Email,\r\n    Password\r\n}\r\n\r\nexport enum InputLabelPosition {\r\n    Inline,\r\n    Above\r\n}\r\n\r\nexport enum ValidationPhase {\r\n    Parse,\r\n    ToJSON,\r\n    Validation\r\n}\r\n\r\nexport enum ValidationEvent {\r\n    Hint,\r\n    ActionTypeNotAllowed,\r\n    CollectionCantBeEmpty,\r\n    Deprecated,\r\n    ElementTypeNotAllowed,\r\n    InteractivityNotAllowed,\r\n    InvalidPropertyValue,\r\n    MissingCardType,\r\n    PropertyCantBeNull,\r\n    TooManyActions,\r\n    UnknownActionType,\r\n    UnknownElementType,\r\n    UnsupportedCardVersion,\r\n    DuplicateId,\r\n    UnsupportedProperty,\r\n    RequiredInputsShouldHaveLabel,\r\n    RequiredInputsShouldHaveErrorMessage,\r\n    Other\r\n}\r\n\r\nexport enum ContainerFitStatus {\r\n    FullyInContainer,\r\n    Overflowing,\r\n    FullyOutOfContainer\r\n}\r\n\r\nexport enum TypeErrorType {\r\n    UnknownType,\r\n    ForbiddenType\r\n}\r\n\r\nexport enum RefreshMode {\r\n    Disabled,\r\n    Manual,\r\n    Automatic\r\n}\r\n\r\nexport enum LogLevel {\r\n    Info,\r\n    Warning,\r\n    Error\r\n}\r\n\r\nexport enum CarouselInteractionEvent {\r\n    NavigationNext,\r\n    NavigationPrevious,\r\n    Pagination,\r\n    Autoplay\r\n}\r\n\r\nexport enum ActionRole {\r\n    Button,\r\n    Link,\r\n    Tab,\r\n    Menu,\r\n    MenuItem\r\n}\r\n"],"sourceRoot":"","x_microsoft_symbol_client_key":"b667dce60d3a1b2a18b12956d8ed00a249d63aca20ea87162c6bdea8ca3f445a"}