{"version":3,"sources":["webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_Map.js?132b","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/zoom-image/ZoomImage.tsx?3088","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_getRawTag.js?09c9","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_listCacheSet.js?0cef","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/table/Table.tsx?8faf","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/progress/Progress.tsx?fbb5","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/tooltip/UncontrolledTooltip.tsx?30ec","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/slider/SliderThumb.tsx?5d3f","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/slider/Slider.tsx?bb4c","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_baseGetTag.js?0b57","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_listCacheClear.js?916b","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/debounce.js?0a86","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_trimmedEndIndex.js?8d8e","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/toString.js?b2c0","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/table/checkbox.tsx?36f8","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_isKey.js?4da5","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/isArray.js?7f4a","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_hashDelete.js?4299","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_MapCache.js?8eb4","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/wrapper/node.tsx?cdf8","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/waiting/Waiting.tsx?ba13","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_nativeCreate.js?a082","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_toSource.js?20fb","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/tooltip/Tooltip.tsx?8355","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/popover/index.ts?bf24","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_listCacheGet.js?afaa","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_mapCacheClear.js?13ab","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/collapse/Collapse.tsx?27f6","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/button/Button.tsx?457f","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/index.ts?5680","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/popup-products/Popup-products.tsx?2288","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_memoizeCapped.js?2bc4","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/common/KeyCodes.ts?0c24","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_getMapData.js?5a9e","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_arrayMap.js?3705","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_getValue.js?90d1","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_isMasked.js?b55d","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/labeled-dropdown/LabeledDropdown.tsx?ab7c","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_isKeyable.js?5cd2","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_hashGet.js?5ae3","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_baseToString.js?3dcd","webpack:///./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.number.parse-float.js?5298","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_ListCache.js?575e","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/common/localeBasedPrice.ts?42e9","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_mapCacheHas.js?1139","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_hashSet.js?4374","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_mapCacheDelete.js?9ace","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/wrapper/module.tsx?dadb","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/isMobile/isMobile.props.ts?d9d2","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_listCacheDelete.js?72ff","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/quantity/Quantity.tsx?b66b","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/incremental-quantity/index.ts?6ddc","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/price/price-editor-mode-selection.tsx?3c70","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/price/price-editor.tsx?ca15","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/PaginationLink.tsx?b97e","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_hashHas.js?025d","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_hashClear.js?fdd5","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/toNumber.js?381c","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/zoom-image/ImagefullView.tsx?adc9","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/isObject.js?3013","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_baseGet.js?d37d","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/flipper/Flipper.tsx?36cd","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_coreJsData.js?3c76","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_toKey.js?87c2","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_baseTrim.js?12bc","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_freeGlobal.js?216b","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/memoize.js?8b94","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/table/index.ts?75ef","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/isMobile/isMobile.tsx?1fd3","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/incremental-quantity/IncrementalQuantity.tsx?1af1","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_Hash.js?3317","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/drawer/Drawer.tsx?da2c","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/popup/Popup.tsx?0173","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/heading/Heading.tsx?c36b","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_baseIsNative.js?2516","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/popper-content/PopperContent.tsx?1148","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/fade/Fade.tsx?31ba","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/common/telemetryHelper.ts?068b","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/eq.js?7b54","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/isObjectLike.js?8312","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/common/urlCheck.ts?1d7a","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_Symbol.js?5882","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_castPath.js?afc3","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/alert/Alert.tsx?44c5","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/back-to-top/BackToTop.tsx?0cf6","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_mapCacheGet.js?add5","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_mapCacheSet.js?3bb0","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/isFunction.js?804e","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_root.js?902b","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/single-slide-carousel/SingleSlideCarousel.tsx?b47d","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_objectToString.js?27a9","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/quantity/index.ts?f7b4","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_assocIndexOf.js?5680","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/common/date-time-helper.ts?febc","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/drawer/ControlledDrawer.tsx?9a39","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_listCacheHas.js?6ab2","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/isSymbol.js?8f03","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_getNative.js?0c36","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/common/utilities.ts?93e6","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/PaginationItem.tsx?6f25","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/get.js?3f3a","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/form-builder/form-builder.tsx?c7f3","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/_stringToPath.js?8448","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/common/stringExtensions.ts?f421","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/node_modules/lodash/now.js?053f","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/UncontrolledPagination.tsx?4877","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/pagination/Pagination.tsx?ebf9","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/popover/Popover.tsx?3cf4","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/modal/Portal.tsx?c937","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/modal/Modal.tsx?7d4b","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalBody.tsx?c097","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalFooter.tsx?8e31","webpack:///./node_modules/@msdyn365-commerce-modules/utilities/src/modal/ModalHeader.tsx?627d"],"names":["Map","getNative","module","exports","removeInlineZoomStyle","zoomedImages","document","body","getElementsByClassName","zoomedImagesArray","Array","from","item","style","width","height","defaultDataScale","onMouseOutLensContainer","event","zoomLens","currentTarget","visibility","classList","remove","zoomedImageContainer","querySelector","getCenter","size","x","y","getLensPosition","cursorPosition","lensSize","originalSize","lensCenter","position","maxPositionX","Math","min","max","maxPositionY","getCursorPosition","element","containerBoundingRect","getBoundingClientRect","pageX","left","window","pageXOffset","pageY","top","pageYOffset","formatPixelsValue","numericValue","handleInlineStyles","zoomedImage","dataScaleText","removeAttribute","imageElement","parentElement","previousElementSibling","dataScale","Number","imageContainerSize","offsetWidth","offsetHeight","zoomedImageSize","opacity","imageCenter","offset","scaledCursorPosition","zoomedImagePosition","inlineZoomInitClick","_event$currentTarget$","type","zoomImg","nextElementSibling","handleMouseMovementInContainerZoom","lens","_lens$getAttribute","zoomedContainer","createElement","setAttribute","appendChild","getAttribute","displayedImageSize","imageInitialHeight","naturalHeight","imageInitialWidth","naturalWidth","imageContainerHeight","widthScaleRatio","heightScaleRatio","scaleRatio","getDisplayedImageSize","lensPosition","mainImageSource","backgroundImage","offsetCenter","lensScaledPositionX","lensScaledPositionY","backgroundPositionX","backgroundPositionY","backgroundSize","topPosition","onMouseOverImageContainer","add","onMouseMoveLensContainer","onContainerZoomInit","containerDiv","inlineZoomImageOnMouseMove","_parentElement$getAtt","inlineZoomImageOnMouseOut","inlineZoomImageOnHover","scale","arguments","length","undefined","zoomedImg","removeContainerZoomStyle","Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","value","isOwn","call","tag","unmasked","e","result","assocIndexOf","key","data","this","__data__","index","push","TableDataType","Table","React","PureComponent","constructor","props","super","componentClassName","headingPrefix","capitalizeHeadingPrefix","_selectSortingKey","target","columnName","sortingKey","ascendingOrder","state","newOrder","setState","showActions","_onCheckBoxChangeHandler","rows","checkBoxCallback","ObjectExtensions","isNumber","isSelected","_renderHeadingRow","columnData","resources","showCheckBoxes","enableToModify","minifyActions","actionLinkText","isSortable","resourcePrefix","isSingleSelectOnly","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","sortingClassName","sortingValue","columns","map","cellIndex","updatedCellIndex","heading","name","columnSortValue","columnAriaLabel","ariaLabel","format","sortable","onClick","onKeyUp","_handleKeyPressPrev","className","classnames","scope","role","tabIndex","trim","radioCheckBox","CheckBoxButton","onChange","actionContent","tableCell","header","content","_renderRow","excludedColumns","actions","formatPrice","rowsData","additionalNameAriaLabel","row","cell","includes","id","extraClass","Price","cellContent","columnSpecificClass","rowKey","selectedIndex","actionButtons","_renderActions","buttonReferences","records","buttonReference","editLinkText","deleteLinkText","viewLinkText","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","actionLinkTooltip","minifiedButtonText","onEdit","onDelete","onView","handleClickEdit","_buttonReference$edit","edit","current","handleClickDelete","_buttonReference$dele","delete","handleClickView","Node","Button","innerRef","title","_toggleActions","newKey","_sortTableRow","table","sortingkey","sort","userOne","userTwo","userOneData","find","userTwoData","cleanFirst","toLowerCase","cleanSecond","_getCurrentPageData","tableRows","start","end","i","colSpan","_renderPrev","paginationPreviousText","_renderNext","paginationNextText","keyCode","KeyCodes","Enter","Space","headings","render","showPagination","paginationProperty","tableAriaLabel","tableTabIndex","classname","paginationLinks","skipCount","itemPerPage","nextText","prevText","paginationText","url","UncontrolledPagination","qsp","items","itemsPerPage","startingItem","previousText","previousAriaLabel","nextAriaLabel","tableBody","tableHead","Progress","percent","defaultProps","UncontrolledTooltip","isOpen","_toggle","bind","_isAutoDisplayTriggered","isCartPage","StringExtensions","isNullOrWhitespace","cartPageUrl","location","shouldShowMiniCart","Tooltip","assign","showToolTipOnTab","toggle","previousState","SliderThumb","sliderButtonRef","sliderThumbClass","trackThumbClass","ref","onMouseDown","handleStart","onMouseUp","handleEnd","onTouchMove","handleDrag","onTouchEnd","onKeyDown","handleKeydown","onFocus","handleFocus","onBlur","handleBlur","showTooltip","placement","tooltip","handleTooltipText","sliderValue","orientations","horizontal","dimension","direction","coordinate","vertical","EventType","Slider","thumb1Ref","thumb2Ref","_prevState","_renderLabels","labels","label","labelId","labelPositioning","labelString","_renderSliderThumbs","thumbStyles","isMobileCheck","isMobile","variant","VariantType","Browser","context","gridSettings","xs","w","sm","md","lg","xl","isMobileView","sliderAriaLabelMin","sliderThumbs","sliderAriaLabelMax","isRangeSlider","step","orientation","_handleOnChange","_handleStart","_handleDrag","_handleEnd","ariaValueText","_handleUpdate","dimensionStr","toUpperCaseFirstChar","sliderPos","handlePos","limit","grab","stopPropagation","eventType","addEventListener","castTarget","thumbid","active","_getThumbAndPublishEvent","Start","_position","castEvent","node","coordinateStyle","directionStyle","clientCoordinateStyle","touches","pos","_getValueFromPosition","_getPositionFromValue","percentage","round","clamp","baseVal","_coordinates","fill","handle","_setSliderValue","sliderThumb","_objectSpread","Change","_publishNotification","thumb","delegate","slider","firstThumbValue","secondThumbValue","NaN","nativeEventType","elmenentId","replace","_getThumbFromProps","End","onChangeEnd","onChangeStart","_willThumbsCrossOver","_handleOnClick","MsDyn365","isBrowser","shouldSliderAdjustToRTL","nextState","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","_nextState","shouldRender","thumb1Position","thumb2Position","componentWillUnmount","removeEventListener","sliderClass","sliderBaseClass","sliderId","camelCasedDirection","positionThumb1","coordsThumb1","fillStyle","handleStyle","trackProgressClass","sliderKey","String","positionThumb2","coordsThumb2","marginBottom","showProgressBar","fillTrackValue","showLabels","castThumb","thumbId","thumbPressed","thumb1","thumb2","thumbInteractedWith","parseInt","thumbFound","filter","keycode","checkCondition","inForm","getRawTag","objectToString","isObject","now","toNumber","nativeMax","nativeMin","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","clearTimeout","cancel","flush","reWhitespace","string","test","charAt","baseToString","_ref","isChecked","cssClass","checked","isArray","isSymbol","reIsDeepProp","reIsPlainProp","object","has","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","entries","clear","entry","set","get","Tag","Element","restAttribute","_objectWithoutProperties","_excluded","Waiting","_this$props","watingClassName","nativeCreate","funcToString","Function","DEFAULT_DELAYS","show","hide","addTargetEvents","handleDocumentClick","removeTargetEvents","onMouseOverTooltip","onMouseLeaveTooltip","onMouseOverTooltipContent","onMouseLeaveTooltipContent","onFocusOutTarget","onEscKeyDown","onEscKeyDownNative","tabPressed","getTargetElement","getElementsByTagName","bodyClasses","attributes","getNamedItem","removeNamedItem","clearHideTimeout","clearShowTimeout","hideTimeout","showTimeout","getDelay","nativeEvent","nextFocus","activeElement","contains","delay","isNaN","ariaAttr","createAttribute","setNamedItem","trigger","triggers","split","forEach","displayMode","disabled","preventDefault","cssModule","placementPrefix","hideArrow","hideAriaHidden","innerClassName","modifiers","boundariesElement","arrowClassName","classes","mapToCssModules","classNames","popperClasses","PopperContent","shouldShowCloseButton","onMouseOver","onMouseLeave","Hash","ListCache","Collapse","_transitionStatusToClassHash","entering","entered","exiting","exited","_tagRef","_updateParentElement","minHeight","_onEntering","_onExit","_onExited","_onExiting","_reevaluateHeight","children","navbar","in","collapseIn","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","onEnter","onEntering","onEntered","onExit","onExiting","onExited","otherProps","transitionProps","Transition","TransitionTimeouts","status","collapseClass","_getTransitionClass","reEvaluateHeight","firstElementChild","scrollHeight","isAppearing","block","color","outline","href","PopupProducts","popupProps","processStatusClass","dialogStrings","text","modalOpen","setModalOpen","closeModal","Modal","onClosed","ModalHeader","ModalBody","closeWindowButtonText","memoize","cache","isKeyable","array","iteratee","uid","coreJsData","maskSrcKey","exec","keys","IE_PROTO","LabeledDropdown","_onSelectOption","selectedKey","selectedOption","dropdownOptions","option","indexOf","labelText","labelClassname","dropdownId","dropdownClassname","labelClassNames","dropdownClassNames","_getSelectedIndex","htmlFor","selected","controlledByParent","onSelectOption","selectedOptions","toggleColor","arrayMap","symbolProto","symbolToString","$","parseFloat","stat","forced","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","getLocaleBasedCustomizedPrice","customPrice","locale","returnState","Back","amountData","amountVariable","slice","isNullOrEmpty","paymentAmount","setLocaleBasedAmount","_state$amountVariable","stringAmount","EMPTY","_state$amountVariable2","lastDigit","inputTextValue","amountForUI","newVar","usedVar","recentInputNumber","Intl","NumberFormat","customizedAmount","_state$amountVariable3","_state$amountVariable4","_state$amountVariable5","substring","inputWithDot","getMapData","Module","moduleProps","renderModuleAttributes","splice","pop","Quantity","_props$currentCount","inputRef","_validateMin","minValue","currentInput","currentCount","_handleChange","currentValue","pattern","inputQuantityAriaLabel","inputElement","HTMLInputElement","debounce","PriceEditorModeSelectionState","getPriceEditorModeSelectionStateResources","modeState","full","payFullAmountButtonText","partial","specifyAmountButtonText","Error","onClickHandler","handleStateChange","togglePopoverHandler","setPopoverState","isPopoverState","PriceEditorModeSelectionComponent","popoverReference","createRef","isPopoverShown","setIsPopoverShown","useState","setModeState","currentState","onChangeMode","clickedState","onStateChanged","Popover","EnumExtensions","getEnumValues","renderModeStateItem","stateStringRepresentation","PriceEditor","_handleInputFocus","isInputFocused","_handleInputBlur","_handleEditorModeStateChange","newState","_this$_inputRef$curre","_updateAmount","maximumValue","_inputRef","focus","newAmount","handleChange","toFixed","_precision","isNullOrUndefined","minimumValue","defaultValue","defaultAmount","_this$state$currentVa","_this$state$currentVa2","_this$state$currentVa3","hasMultipleModes","mode","formattedValue","editedValue","priceEditorInputAriaLabel","PaginationLink","payLoad","getPayloadObject","telemetryContent","next","previous","etext","paginationLinkclasses","defaultCaret","contentAction","attribute","getTelemetryAttributes","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","ImagefullView","galleryCarousel","modalWindow","autoFocus","applicationNode","modalIsOpen","ontoggle","zIndex","modalHeader","cloneElement","castPath","toKey","path","Flipper","telemetryLabel","glyphProps","displayTooltip","sizeClass","trimmedEndIndex","reTrimStart","freeGlobal","global","resolver","memoized","Cache","_context$device","innerWidth","Viewport","device","Type","IncrementalQuantity","IncrementalQuantity_1","_this$props$min","_minValue","isUpdating","_onIncrement","_onDecrement","_props$applyDefaultOr","_props$currentCount2","applyDefaultOrderSettings","_this$props$inputQuan","_this$props$inputQuan2","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","TelemetryConstant","DecrementQuantity","decrementAttributes","IncrementQuantity","incrementAttributes","ariaLablelText","extraClassDecrement","extraClassIncrement","decrementButtonAriaLabel","incrementButtonAriaLabel","invokeCallback","currQuantity","updatedQuantity","_debounce","__decorate","observer","hashClear","hashDelete","hashGet","hashHas","hashSet","Drawer","_props$collapseProps$","_props$collapseProps","isManuallyToggled","collapseProps","buttonText","drawerGlyphClass","toggleGlyphClassName","animateGlyph","drawerOpenGlyph","openGlyph","closeGlyph","drawerCloseGlyph","drawerClass","toggleButtonProps","_generateDrawerButtonInnerMarkup","collapseState","drawerButtonTextClass","toggleButtonClassName","glyphPlacement","toggleButtonText","_generateGlyphMarkup","glyphClass","onToggle","innerText","Popup","_context$request$app","_context$app$config","imageSettings","product","price","productQuantity","priceComponent","navigationUrl","ContinueShopping","continueShoppingAttribute","ViewBagAndCheckout","viewBagAttribute","fallbackImageUrl","getFallbackImageUrl","ItemId","actionContext","requestContext","apiSettings","request","app","config","OmniChannelMedia","cropFocalRegion","quantity","itemsString","headerItemOneText","headerItemFormatText","shouldDisplayUnitOfMeasure","unitOfMeasureDisplayType","reducedDimensions","Dimensions","reduce","str","productDimension","DimensionValue","Value","headerMessageText","Image","src","PrimaryImageUrl","fallBackSrc","altText","Name","loadFailureBehavior","DefaultUnitOfMeasure","ModalFooter","goToCartText","continueShoppingText","Heading","headingTag","HTag","isFunction","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","_handlePlacementChange","_handleProps","prevProps","_renderChildren","container","_show","_hide","flip","fallbackPlacement","focusOut","arrowClassNameOrUndefined","attrs","popperClassName","extendedModifiers","enabled","behavior","preventOverflow","update","order","fn","targetElement","ReactPopper","component","display","Arrow","Fade","baseClass","baseClassActive","fadeIn","timeoutOrUndefined","addEndListener","baseClassAlways","baseClassActiveAlways","isActive","getTelemetryObject","pageName","moduleName","telemetry","recid","contentCategory","pgname","mname","etype","contentData","setTelemetryAttribute","onTelemetryClick","linkText","logEvent","TelemetryEvent","Custom","urlCheck","testUrl","parsedUrl","parse","protocol","host","isKey","stringToPath","Alert","closeClassName","transition","fade","assertive","includeAlertClass","closeClasses","alertTransition","buttonId","innerContent","closeAriaLabel","BackToTop","_renderHeading","Msdyn365","editProps","_reevaluatePosition","_scrollToTop","threshold","delayInMs","scrollStepInPx","_scrollStep","documentElement","scrollTop","clearInterval","intervalId","scrollTo","setInterval","innerHeight","clientHeight","tabIndexValue","baseGetTag","freeSelf","self","root","SingleSlideCarousel","carouselSize","slideSize","itemSize","flipperNextLabel","flipperPrevLabel","_onResized","_onCarouselResized","_nextSlide","_previousSlide","_handleTouchStart","_handleTouchEnd","_onFocus","showPrevious","showNext","slideRef","itemRef","parentId","scrollThreshold","touchScrollThreshold","carousel","slide","_setSizes","_updateFlippers","resizeThrottledEventHandler","addThrottledEvent","isVert","slidePositionStyle","modifiedChildren","_getClonedChildren","carouselClass","carouselSlideClass","overflowClass","previousFlipperGlyph","nextFlipperGlyph","previousFlipperClassName","nextFlipperClassName","disableClassName","onTouchStart","useTabList","child","castChild","verticalItemsSelector","itemsSelector","_moveSingleSlide","evt","scrollStart","screenY","screenX","changedTouches","delta","currentOffset","getCSS","maxScrollCount","floor","directionModifier","maxScrollDistance","distanceToEdge","abs","scrollWidth","_calculateCarouselSize","carouselStyle","getComputedStyle","padding","paddingTop","paddingBottom","paddingLeft","paddingRight","clientWidth","_canScrollPrevious","_canScrollNext","_scrollItemIntoView","offsetTop","offsetLeft","updateOffset","scrollLeft","eq","ControlledDrawer","isExpanded","Expand","_generateTitle","isStart","additionalClassName","titleLClassName","onTextChange","isObjectLike","baseIsNative","getValue","toUpperCase","substr","property","createThrottledEvent","listener","timer","last","Date","throttledEventHandler","c","join","canUseDOM","getTarget","selection","querySelectorAll","_unused","console","error","findDOMElements","isRef","isElement","Carousel","focusableElements","updateMaxQuantityForCartLineItem","currentMaxQuantityForCartLineItem","PaginationItem","paginationItemClasses","baseGet","FormBuilderErrorComponent","errorMessage","FormBuilder","_onSubmit","async","formData","formKey","values","resourceId","resourceValue","onSubmit","isSubmitted","_onInputChange","_event$target$getAttr","changedValueIndex","Promise","reject","currentKey","_currentKey$isRequire","requiredValueMissing","setValue","isRequired","resolve","Dictionary","_formKey$isRequired","confirmationComponent","submitButtonText","requiredValueMissingErrorMessage","every","ArrayExtensions","hasElements","autoComplete","_formKey$isRequired2","_formKey$isRequired3","required","isAnyRequiredValueMissing","getValues","findIndex","isMissing","memoizeCapped","rePropName","reEscapeChar","charCodeAt","match","number","quote","subString","formatSpecifier","_len","parameters","_key","isNullOrWhiteSpace","activePage","maxPages","ceil","qsps","splitUrl","secondSplit","hash","parsedQsps","qspPair","baseUrl","listClassName","listTag","ListTag","activeQsp","paginationClasses","listpaginationClasses","_generatePageLinks","_generateUrl","page","qspUrl","_generatePaginationArrow","disable","tooltipId","nextId","prevId","ariaDescribedBy","nextAreaDescribed","prevAreaDescribed","_generatePaginationItem","_generateEllipse","leftDistance","rightDistance","leftEllipse","pagesDisplayed","rightEllipse","pages","displayedPagesOnLeft","startingIndex","endIndex","Pagination","popover","_addTargetEvents","_handleDocumentClick","_removeTargetEvents","getRef","_focusOutTarget","_focusOutPopover","_keyDown","Portal","defaultNode","createPortal","mounted","_getFocusableChildren","_handleBackdropClick","_handleBackdropMouseDown","_handleEscape","_handleTab","_onOpened","_onClosed","wasOpen","mouseDownElement","_open","HTMLElement","_close","_prevProps","prevState","shouldUpdateFocusToFirstElement","focusableElementArr","componentWillReceiveProps","wrapClassName","modalClassName","backdropClassName","contentClassName","modalTransition","backdropTransition","backdrop","onOpened","external","verticalPosition","horizontalPosition","keyboard","returnFocusRef","ariaLabelledbyId","dialogAttributes","modalAttributes","modalTransitions","backdropTransitions","Backdrop","dialogBaseClass","dialogClasses","dialog","_document$body$firstE","openCount","scrollY","scrollbarWidth","right","removeProperty","_document$body$firstE2","modalOpenClassName","modalOpenClassNameRegex","_getFocusedChild","focusableChildren","which","totalFocusable","currentFocus","focusedIndex","el","shiftKey","closeButton","wrapTag","closeButtonLabel","WrapTag","closeButtonTabIndex"],"mappings":";gFAAA,IAIIA,EAJY,EAAQ,OAIdC,CAHC,EAAQ,QAGO,OAE1BC,EAAOC,QAAUH,G,oaCDV,SAASI,IACZ,MAAMC,EAA0CC,SAASC,KAAKC,uBAAuB,6BAE/EC,EAAoBC,MAAMC,KAAKN,GACrC,IAAK,MAAMO,KAAQH,EACfG,EAAKC,MAAMC,MAAQ,IACnBF,EAAKC,MAAME,OAAS,IAOrB,MAAMC,EAAmB,EAMzB,SAASC,EAAwBC,GACpC,MAAMC,EAAWD,EAAME,cACvBD,EAASN,MAAMQ,WAAa,SAC5BF,EAASG,UAAUC,OAAO,wCAE1B,MAAMC,EAAuBlB,SAASC,KAAKkB,cAA8B,6BACrED,IACAA,EAAqBX,MAAMQ,WAAa,UAsDhD,SAASK,EAAUC,GAEf,MAAO,CACHC,EAAGD,EAAKb,MAFU,EAGlBe,EAAGF,EAAKZ,OAHU,GAc1B,SAASe,EAAgBC,EAA2BC,EAAiBC,GACjE,MAAMC,EAAaR,EAAUM,GAEvBG,EAAsB,CACxBP,EAAGG,EAAeH,EAAIM,EAAWN,EACjCC,EAAGE,EAAeF,EAAIK,EAAWL,GAK/BO,EAAeH,EAAanB,MAAQkB,EAASlB,MACnDqB,EAASP,EAAIS,KAAKC,IAAID,KAAKE,IAAIJ,EAASP,EAFnB,GAEqCQ,GAE1D,MACMI,EAAeP,EAAalB,OAASiB,EAASjB,OAGpD,OAFAoB,EAASN,EAAIQ,KAAKC,IAAID,KAAKE,IAAIJ,EAASN,EAFnB,GAEqCW,GAEnDL,EASX,SAASM,EAAkBvB,EAAyBwB,GAChD,MAAMC,EAAwBD,EAAQE,wBACtC,MAAO,CACHhB,EAAGV,EAAM2B,MAAQF,EAAsBG,KAAOC,OAAOC,YACrDnB,EAAGX,EAAM+B,MAAQN,EAAsBO,IAAMH,OAAOI,aAS5D,SAASC,EAAkBC,GACvB,OAAUA,EAAH,KAkBX,SAASC,EACLC,EACAC,EACAtC,GAEAqC,EAAYE,gBAAgB,SAC5B,MAAMC,EAAeH,EAAYI,cAAeC,uBAAwBnC,cAAc,OAEhFoC,EAAYC,OAAON,GAEnBO,EAA4B,CAC9BjD,MAAO4C,EAAaM,YACpBjD,OAAQ2C,EAAaO,cAGnBC,EAAyB,CAC3BpD,MAAOiD,EAAmBjD,MAAQ+C,EAClC9C,OAAQgD,EAAmBhD,OAAS8C,GAGxCN,EAAY1C,MAAMC,MAAQsC,EAAkBc,EAAgBpD,OAC5DyC,EAAY1C,MAAME,OAASqC,EAAkBc,EAAgBnD,QAC7DwC,EAAY1C,MAAMsD,QAAU,IAE5B,MAAMpC,EAAiBU,EAAkBvB,EAAOwC,GAC1CU,EAAc1C,EAAUqC,GACxBM,EACCtC,EAAeH,EAAIwC,EAAYxC,EADhCyC,EAECtC,EAAeF,EAAIuC,EAAYvC,EAGhCyC,EAAkC,CACpC1C,EAAGG,EAAeH,EAAIiC,EACtBhC,EAAGE,EAAeF,EAAIgC,GAE1BS,EAAqB1C,GAAKyC,EAC1BC,EAAqBzC,GAAKwC,EAE1B,MAAME,EAAsBzC,EAAgBwC,EAAsBP,EAAoBG,GAEtFX,EAAY1C,MAAMiC,KAAOM,GAAmBmB,EAAoB3C,GAChE2B,EAAY1C,MAAMqC,IAAME,GAAmBmB,EAAoB1C,GAQ5D,SAAS2C,EAAoBtD,EAA2C2C,GAAkB,IAAAY,EAC7F,GAAmB,cAAfvD,EAAMwD,MAAuC,eAAfxD,EAAMwD,MAAwC,aAAfxD,EAAMwD,KACnE,OAGJ,MAAMC,EAA2C,QAApCF,EAAGvD,EAAME,cAAcuC,qBAAa,IAAAc,GAAoB,QAApBA,EAAjCA,EAAmCG,0BAAkB,IAAAH,OAAA,EAArDA,EAAuDhD,cAAc,OAChFkD,GAILrB,EAAmBqB,EAASd,UAAa,IAAK3C,GASlD,SAAS2D,EACL3D,EACAwC,EACAoB,GAAkC,IAAAC,EAElC,IAAIC,EAAkB1E,SAASC,KAAKkB,cAA8B,6BAC7DuD,IACDA,EAAkB1E,SAAS2E,cAAc,OACzCD,EAAgBE,aAAa,QAAS,4BACtC5E,SAASC,KAAK4E,YAAYH,IAG9B,MAAMhD,EAAkB,CACpBlB,MAAOgE,EAAKd,YACZjD,OAAQ+D,EAAKb,cAGXJ,EAAYC,OAAsC,QAAhCiB,EAACD,EAAKM,aAAa,qBAAa,IAAAL,IAAI/D,GAEtDe,EAAiBU,EAAkBvB,EAAOwC,GAC1C2B,EAvLV,SAA+B3B,GAC3B,MAAM4B,EAAqB5B,EAAa6B,cAClCC,EAAoB9B,EAAa+B,aACjCC,EAAuBhC,EAAa3C,OAGpC4E,EAFsBjC,EAAa5C,MAEK0E,EACxCI,EAAmBF,EAAuBJ,EAE1CO,EAAaxD,KAAKC,IAAIqD,EAAiBC,GAE7C,MAAO,CACH9E,MAAO0E,EAAoBK,EAC3B9E,OAAQuE,EAAqBO,GA0KNC,CAAsBpC,GAC3CK,EAA4B,CAC9BjD,MAAO4C,EAAaM,YACpBjD,OAAQ2C,EAAaO,cAGnB8B,EAAejE,EAAgBC,EAAgBC,EAAU+B,GAC/De,EAAKjE,MAAMQ,WAAa,QACxByD,EAAKjE,MAAMiC,KAAOM,EAAkB2C,EAAanE,GACjDkD,EAAKjE,MAAMqC,IAAME,EAAkB2C,EAAalE,GAEhD,MAAMmE,EAAkBtC,EAAa0B,aAAa,OAElDJ,EAAgBnE,MAAMQ,WAAa,QACnC2D,EAAgBnE,MAAMoF,gBA/Gf,QA+G0DD,MACjEhB,EAAgBnE,MAAMC,MAAQsC,EAAkBpB,EAASlB,MAAQ+C,GACjEmB,EAAgBnE,MAAME,OAASqC,EAAkBpB,EAASlB,MAAQ+C,GAElE,MAIMqC,EAAexE,EAJK,CACtBZ,MAAOiD,EAAmBjD,MAAQuE,EAAmBvE,MACrDC,OAAQgD,EAAmBhD,OAASsE,EAAmBtE,SAGrDoF,GAAuBD,EAAatE,EAAImE,EAAanE,GAAKiC,EAC1DuC,GAAuBF,EAAarE,EAAIkE,EAAalE,GAAKgC,EAEhEmB,EAAgBnE,MAAMwF,oBAAsBjD,EAAkB+C,GAC9DnB,EAAgBnE,MAAMyF,oBAAsBlD,EAAkBgD,GAE9DpB,EAAgBnE,MAAM0F,eAAiB,GAAGnD,EAAkBiC,EAAmBvE,MAAQ+C,MAAcT,EACjGiC,EAAmBtE,OAAS8C,KAGhC,MAAM2C,EAAc9C,EAAad,wBAAwBM,IACzD8B,EAAgBnE,MAAMqC,IAAME,EAAkBoD,GAG3C,SAASC,EAA0BvF,GACtC,MAAM4D,EAAO5D,EAAME,cAAcuC,cAAeC,uBAChDkB,EAAKxD,UAAUoF,IAAI,wCAInB7B,EAAmC3D,EAFdA,EAAME,cAE6B0D,GAGrD,SAAS6B,EAAyBzF,GACrC,GAAmB,cAAfA,EAAMwD,MAAuC,eAAfxD,EAAMwD,MAAwC,aAAfxD,EAAMwD,KACnE,OAGJ,MAAMhB,EAAexC,EAAME,cAAcwD,mBAAoBnD,cAAc,OAG3EoD,EAAmC3D,EAAOwC,EAF7BxC,EAAME,eAKhB,SAASwF,EAAoB1F,GAChC,IAAKZ,SAASC,KAAKkB,cAAc,6BAA8B,CAC3D,MAAMoF,EAAevG,SAAS2E,cAAc,OAC5C4B,EAAa3B,aAAa,QAAS,4BACnC5E,SAASC,KAAK4E,YAAY0B,GAG9BJ,EAA0BvF,GAGvB,SAAS4F,EAA2B5F,GAAyC,IAAA6F,EAChF,GAAmB,cAAf7F,EAAMwD,MAAuC,eAAfxD,EAAMwD,MAAwC,aAAfxD,EAAMwD,KACnE,OAGJ,MAAMf,EAAgBzC,EAAME,cAAcuC,cAAeA,cAIzDL,EAHgBpC,EAAME,cAEoC,QAA3C2F,EAAGpD,EAAcyB,aAAa,qBAAa,IAAA2B,IAAI,GAAG/F,EAC1BE,GAGpC,SAAS8F,EAA0B9F,GACnB,cAAfA,EAAMwD,MAAuC,eAAfxD,EAAMwD,MAAwC,aAAfxD,EAAMwD,OAIvExD,EAAME,cAAcP,MAAME,OAAS,IACnCG,EAAME,cAAcP,MAAMC,MAAQ,KAgB/B,SAASmG,EAAuB/F,GAA8D,IAAnBgG,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAgB,IAC9F,GAAmB,cAAfjG,EAAMwD,MAAuC,eAAfxD,EAAMwD,MAAwC,aAAfxD,EAAMwD,KACnE,OAGJ,MAAM4C,EAAYpG,EAAME,cAAcuC,cAAeiB,mBAAoBnD,cAAc,OACvF6B,EAAmBgE,EAAWJ,EAAOhG,GAMlC,SAASqG,IACZ,MAAMpG,EAAWb,SAASC,KAAKkB,cAA8B,gCACzDN,IACAA,EAASN,MAAMQ,WAAa,SAC5BF,EAASG,UAAUC,OAAO,yCAG9B,MAAMC,EAAuBlB,SAASC,KAAKkB,cAA8B,6BACrED,IACAA,EAAqBX,MAAMQ,WAAa,Y,uBChXhD,IAAImG,EAAS,EAAQ,QAGjBC,EAAcC,OAAOC,UAGrBC,EAAiBH,EAAYG,eAO7BC,EAAuBJ,EAAYK,SAGnCC,EAAiBP,EAASA,EAAOQ,iBAAcX,EA6BnDnH,EAAOC,QApBP,SAAmB8H,GACjB,IAAIC,EAAQN,EAAeO,KAAKF,EAAOF,GACnCK,EAAMH,EAAMF,GAEhB,IACEE,EAAMF,QAAkBV,EACxB,IAAIgB,GAAW,EACf,MAAOC,IAET,IAAIC,EAASV,EAAqBM,KAAKF,GAQvC,OAPII,IACEH,EACFD,EAAMF,GAAkBK,SAEjBH,EAAMF,IAGVQ,I,uBC1CT,IAAIC,EAAe,EAAQ,QAyB3BtI,EAAOC,QAbP,SAAsBsI,EAAKR,GACzB,IAAIS,EAAOC,KAAKC,SACZC,EAAQL,EAAaE,EAAMD,GAQ/B,OANII,EAAQ,KACRF,KAAKhH,KACP+G,EAAKI,KAAK,CAACL,EAAKR,KAEhBS,EAAKG,GAAO,GAAKZ,EAEZU,O,0IC6GGI,E,+EAAZ,SAAYA,GACRA,EAAA,gBACAA,EAAA,YACAA,EAAA,cAHJ,CAAYA,MAAa,KAMV,MAAMC,UAAcC,IAAMC,cAOrCC,YAAYC,GACRC,MAAMD,GAPH,KAAAE,mBAA6B,WAEnB,KAAAC,cAAwB,QAExB,KAAAC,wBAAkC,QA6DlC,KAAAC,kBAAqBvI,IAClC,MAAMwI,EAASxI,EAAMwI,OACfC,EAAaD,EAAOtE,aAAa,kBAAqBsE,EAAOtE,aAAa,kBAA+B,IACzG,WAAEwE,EAAU,eAAEC,GAAmBlB,KAAKmB,MAC5C,IAAIC,GAAW,EAEXH,IAAeD,IACfI,GAAYF,GAGhBlB,KAAKqB,SAAS,CACVJ,WAAYD,EACZE,eAAgBE,EAChBE,aAAa,KAWJ,KAAAC,yBAA2B,CACxCC,EACAC,EACAvB,IACC,KACGwB,mBAAiBC,SAASzB,KAC1BsB,EAAKtB,GAAO0B,YAAcJ,EAAKtB,GAAO0B,YAE1CH,EAAiBD,IAGJ,KAAAK,kBAAqBC,IAClC,MAAM,UACFC,EAAS,eACTC,EAAc,eACdC,EAAc,cACdC,EAAa,KACbV,EAAI,eACJW,EAAc,WACdC,EAAU,iBACVX,EAAgB,eAChBY,EAAc,mBACdC,EAAkB,wCAClBC,EAAuC,gBACvCC,EAAe,iBACfC,GACAzC,KAAKS,OACH,WAAEQ,EAAU,eAAEC,GAAmBlB,KAAKmB,MAEtCuB,EAAmBxB,EAAiB,MAAQ,MAE5CyB,EAAezB,EAAiBsB,EAAkBC,EAElDG,EAAUd,EAAWe,IAAI,CAAC9C,EAAM+C,KAClC,IAAK/C,EACD,OAEJ,MACMgD,EAAmBD,EADD,EAGlBE,EACFjB,EAAU,GAAG/B,KAAKY,gBAAgBb,EAAKkD,oBACvClB,EAAU,GAAGM,IAAkBrC,KAAKa,0BAA0Bd,EAAKkD,oBACnElB,EAAahC,EAAKkD,KAAR,gBACVlD,EAAKkD,KAEHC,EAAkBjC,IAAelB,EAAKkD,WAAyBvE,IAAjBiE,EAA6BA,EAAe,GAE1FQ,EAAkBpD,EAAKqD,UAAY,GAAGC,iBAAOtD,EAAKqD,UAAWJ,MAAYE,IAAoB,GA4BnG,OA1BiBd,GAAcrC,EAAKuD,UAChChD,IAAAhE,cAAA,uBACoByD,EAAKkD,KACrBM,QAASvD,KAAKc,kBACd0C,QAASxD,KAAKyD,oBACdC,UAAWC,IAAc3D,KAAKW,mBAAR,sBACtBb,IAAK,WAAWiD,EAChBa,MAAM,MACNC,KAAK,eACLC,SAAU,GAEVxD,IAAAhE,cAAA,OACIoH,UAAWC,IAAc3D,KAAKW,mBAAR,oBAA+CM,IAAelB,EAAKkD,MAAQP,GAAiB,aACtG3C,EAAKqD,WAAaD,EAAgBY,OAAM,iBACpC,GAAGhE,EAAKkD,KAAM,YACpB,UAETD,KAIT1C,IAAAhE,cAAA,MAAIsH,MAAM,MAAMC,KAAK,eAAeC,SAAU,GACzCd,KAOPgB,EAAgBhC,GAAkBP,IAAqBa,GACzDhC,IAAAhE,cAAC2H,IAAc,CACXC,SAAUlE,KAAKuB,yBAAyBC,EAAMC,GAC9CwB,KAAK,MACLG,UAAWb,IAIb4B,EACF7D,IAAAhE,cAAA,OACIoH,UAAWC,IAAc3D,KAAKW,mBAAR,oBAA6C,aACvDuB,EAAgB,GAAKC,EAAc,YACrC,UAETD,EAAgB,GAAKC,GAI9B,OACI7B,IAAAhE,cAAA,MAAIoH,UAAc1D,KAAKW,mBAAR,iBACVqB,GACGhC,KAAKoE,UAAU,CACXC,QAAQ,EACRX,UAAc1D,KAAKW,mBAAR,wCACX2D,QAASN,EACTlB,WAAY,EACZc,MAAO,QAEdhB,EACAX,GACGjC,KAAKoE,UAAU,CACXC,QAAQ,EACRX,UAAc1D,KAAKW,mBAAR,kCACX2D,QAASH,EACTrB,UAAW,EACXc,MAAO,UAMV,KAAAW,WAAc/C,IAC3B,MAAM,eACFS,EAAc,eACdD,EAAc,gBACdwC,EAAe,QACfC,EAAO,iBACPhD,EAAgB,YAChBiD,EAAW,mBACXpC,EAAkB,wCAClBC,GACAvC,KAAKS,MAoET,OAlEkBe,EAAKqB,IAAI,CAAC8B,EAAUzE,KAClC,IAAIwD,EAAYxD,EAAQ,EAAOF,KAAKW,mBAAR,iBAAgDX,KAAKW,mBAAR,gBACrEW,GAAc,EAElB,MAAMsD,EAA0BD,EAASE,IAAI,GAAGvF,MAAMH,WAChD2C,EAAa6C,EAASE,IAAIhC,IAAIiC,IAChC,GAAIN,GAAmBA,EAAgBO,SAASD,EAAKE,IACjD,OAIJ,MAAMC,EAAaH,EAAK/I,OAASqE,EAAcjF,QAAU2J,EAAK/I,OAASqE,EAAc8E,MAAQ,WAAa,GACpGC,EAAcL,EAAK/I,OAASqE,EAAc8E,OAASR,EAAcA,EAAYI,EAAKxF,OAAmBwF,EAAKxF,MAC1G8F,EAAsBN,EAAKpB,WAAa,GAC9C,OAAO1D,KAAKoE,UAAU,CAClBC,QAAQ,EACRX,UAAWC,IAAc3D,KAAKW,mBAAR,aAAwCsE,EAAYG,GAC1Ed,QAASa,EACTrC,UAAW5C,EACX0D,MAAO,UAITI,EAAgBhC,GAAkBP,GACpCnB,IAAAhE,cAAC2H,IAAc,CACXC,SAAUlE,KAAKuB,yBAAyBC,EAAMC,EAAkBvB,GAChE+C,KAAK,gBACL3D,MAAO,YAAYY,EACnBoC,mBAAoBA,EACpBc,UAAW,GAAGb,KAA4CqC,MAG5DS,EAAS,OAAOnF,EAElBmF,IAAWrF,KAAKmB,MAAMmE,eAAiBtF,KAAKmB,MAAMG,cAClDoC,GAAa,YACbpC,GAAc,GAGlB,MAAMiE,EAAgBd,GAAWzE,KAAKwF,eAAeb,EAASE,IAAKvD,EAAa+D,EAAQV,EAASc,kBAEjG,OACInF,IAAAhE,cAAA,MAAIwD,IAAKuF,EAAQ3B,UAAWA,GACvB1B,GACGhC,KAAKoE,UAAU,CACXC,QAAQ,EACRX,UAAc1D,KAAKW,mBAAR,aACX2D,QAASN,EACTlB,UAAW5C,EACX0D,MAAO,MACP8B,QAASf,IAEhB7C,EACAG,GACGjC,KAAKoE,UAAU,CACXC,QAAQ,EACRX,UAAc1D,KAAKW,mBAAR,aACX2D,QAASiB,EACTzC,UAAW5C,EACX0D,MAAO,MACP8B,QAASf,QAShB,KAAAa,eAAiB,CAC9BzF,EACAuB,EACAxB,EACA6F,KAEA,MAAM,aACFC,EAAY,eACZC,EAAc,aACdC,EAAY,gBACZC,EAAe,kBACfC,EAAiB,gBACjBC,EAAe,kBACfC,EAAiB,cACjBhE,EAAa,mBACbiE,EAAkB,eAClBhE,EACAsC,SAAS,OAAE2B,EAAM,SAAEC,EAAQ,OAAEC,IAC7BtG,KAAKS,MACH8F,OACS7H,IAAX0H,EACM,KAAK,IAAAI,EACDJ,EAAOrG,EAAM4F,SAAqB,QAANa,EAAfb,EAAiBc,YAAI,IAAAD,OAAA,EAArBA,EAAuBE,eAExChI,EACJiI,OACWjI,IAAb2H,EACM,KAAK,IAAAO,EACDP,EAAStG,EAAM4F,SAAuB,QAARiB,EAAfjB,EAAiBkB,cAAM,IAAAD,OAAA,EAAvBA,EAAyBF,eAE5ChI,EACJoI,OACSpI,IAAX4H,EACM,KACIA,EAAOvG,SAEXrB,EAEJ6G,EACFjF,IAAAhE,cAACyK,OAAI,CAACrD,UAAc1D,KAAKW,mBAAR,eACZmG,GACGxG,IAAAhE,cAAC0K,SAAM,CAACtD,UAAc1D,KAAKW,mBAAR,mBAA4C,aAAcsF,EAAiB1C,QAASuD,GAClGhB,GAGRS,GACGjG,IAAAhE,cAAC0K,SAAM,CACHC,SAAUtB,aAAe,EAAfA,EAAiBc,KAC3B/C,UAAc1D,KAAKW,mBAAR,mBAA4C,aAC3CoF,EACZxC,QAASgD,GAERX,GAGRe,GACGrG,IAAAhE,cAAC0K,SAAM,CACHC,SAAUtB,aAAe,EAAfA,EAAiBkB,OAC3BnD,UAAc1D,KAAKW,mBAAR,qBAA8C,aAC7CqF,EACZzC,QAASoD,GAERd,IAMjB,OAAI3D,EAEI5B,IAAAhE,cAACyK,OAAI,CAACrD,UAAc1D,KAAKW,mBAAR,wBACbL,IAAAhE,cAAC0K,SAAM,CACHtD,UAAc1D,KAAKW,mBAAR,qBAA8C,aAC7CwB,EAAc,YACfrC,EACXoH,MAAOhB,EACP3C,QAASvD,KAAKmH,eAAc,gBACbnH,KAAKmB,MAAMG,aAEzB6E,GAA0C,IAE9C7E,GAAeiE,GAIrBA,GAGM,KAAA4B,eAAkB5O,IAC/B,MAAMwI,EAASxI,GAAUA,EAAMwI,OACzBqG,EAASrG,GAAUA,EAAOtE,aAAa,aAAgBsE,EAAOtE,aAAa,aAA0B,GAC3GuD,KAAKqB,SAAS,CACVC,aAActB,KAAKmB,MAAMG,YACzBgE,cAAe8B,KAIN,KAAAC,cAAgB,CAACC,EAAyBC,EAAoBrG,IACpEoG,EAAME,KAAK,CAACC,EAAyBC,KACxC,MAAMC,EAAcF,EAAQ5C,IAAI+C,KAAK9C,GAC1BA,EAAKE,KAAOuC,GAEjBM,EAAcH,EAAQ7C,IAAI+C,KAAK9C,GAC1BA,EAAKE,KAAOuC,GAGvB,IAAKI,IAAgBE,EACjB,OAAQ,EAGZ,GAAiC,iBAAtBF,EAAYrI,OAAmD,iBAAtBuI,EAAYvI,MAC5D,OAAO4B,EAAiByG,EAAYrI,MAAQuI,EAAYvI,MAAQuI,EAAYvI,MAAQqI,EAAYrI,MAGpG,MAAMwI,EACDH,EAAYrI,OACbqI,EAAYrI,MACPH,WACA4I,cACAhE,OACHiE,EACDL,EAAYrI,OACbuI,EAAYvI,MACPH,WACA4I,cACAhE,OAET,OAAK+D,GAAeE,EAGhB9G,EACO4G,EAAaE,GAAe,EAAI,EAEpCF,EAAaE,GAAe,EAAI,GAL3B,IASH,KAAAC,oBAAsB,CAACC,EAA6BC,EAAeC,KAChF,GAAID,GAASC,EACT,OAAOF,EAGX,MAAMtI,EAAS,GACf,IAAK,IAAIyI,EAAIF,EAAOE,EAAID,EAAKC,IACzBH,EAAUG,IAAMzI,EAAOO,KAAK+H,EAAUG,IAG1C,OAAOzI,GAGM,KAAAwE,UAAa3D,IAC1B,MAAM,UAAEiD,EAAS,OAAEW,EAAM,UAAEvB,EAAS,MAAEc,EAAK,QAAE0E,EAAO,QAAEhE,GAAY7D,EAGlE,OAAO4D,EACH/D,IAAAhE,cAAA,MACIoH,UAAWA,EACX5D,IAAK,WAAWgD,EAChBc,MAAOA,EACP0E,QAASA,EACTxE,SAAUhB,EAPM,KADA,GAUfwB,GAGLhE,IAAAhE,cAAA,MAAIoH,UAAWA,EAAWE,MAAOA,EAAO0E,QAASA,GAC5ChE,IAUI,KAAAiE,YAAeC,GAExBlI,IAAAhE,cAAA,OAAKoH,UAAU,wBACXpD,IAAAhE,cAAA,QAAMoH,UAAU,yCAAwC,cAAa,SACrEpD,IAAAhE,cAAA,QAAMoH,UAAU,aAAa8E,IAUxB,KAAAC,YAAeC,GAExBpI,IAAAhE,cAAA,OAAKoH,UAAU,wBACXpD,IAAAhE,cAAA,QAAMoH,UAAU,aAAagF,GAC7BpI,IAAAhE,cAAA,QAAMoH,UAAU,0CAAyC,cAAa,UASjE,KAAAD,oBAAuBlL,IAChCA,EAAMoQ,UAAYC,WAASC,OAAStQ,EAAMoQ,UAAYC,WAASE,OAC/D9I,KAAKc,kBAAkBvI,IAve3ByH,KAAKmB,MAAQ,CACTD,gBAAgB,EAChBD,WAAaR,EAAMsI,SAAS,IAAMtI,EAAMsI,SAAS,GAAG9F,MAAS,GAC7D3B,iBAAqC5C,IAAxB+B,EAAMyB,gBAA+BzB,EAAMyB,cACxDoD,cAAe,IAIhB0D,SACH,MAAM,UAAEtF,EAAS,SAAEqF,EAAQ,KAAEvH,EAAI,WAAEY,EAAU,eAAE6G,EAAc,mBAAEC,EAAkB,eAAEC,EAAc,cAAEC,GAAkBpJ,KAAKS,OACpH,WAAEQ,EAAU,eAAEC,GAAmBlB,KAAKmB,MAEtCkI,EAAY1F,IAAW3D,KAAKW,mBAAoB+C,GACtD,IAAIwE,EAAY9F,GAAcnB,EAAajB,KAAKqH,cAAc7F,EAAMP,EAAYC,GAAkBM,EAC9F8H,EAAkB,KAEtB,GAAIL,EAAgB,CAChB,MAAM,UAAEM,EAAS,YAAEC,EAAW,SAAEC,EAAQ,SAAEC,EAAQ,eAAEC,EAAc,IAAEC,GAAQV,EAE5EI,EACIhJ,IAAAhE,cAACuN,yBAAsB,CACnBnG,UAAU,oCACVG,KAAK,aAAY,aACL8F,EACZC,IAAKA,EACLE,IAAI,OACJC,MAAO7B,EAAUzJ,OACjBuL,aAAcR,EACdS,aAAcV,EACdW,aAAclK,KAAKuI,YAAYmB,GAC/BD,SAAUzJ,KAAKyI,YAAYgB,GAC3BU,kBAAmBT,EACnBU,cAAeX,IAIvBvB,EAAYlI,KAAKiI,oBAAoBC,EAAWqB,EAAWA,EAAYC,GAG3E,MAAMa,EAAYrK,KAAKuE,WAAW2D,GAC5BoC,EAAYtK,KAAK6B,kBAAkBkH,GAEzC,OACIzI,IAAAhE,cAAA,OAAKoH,UAAc1D,KAAKW,mBAAR,eACZL,IAAAhE,cAAA,SAAOoH,UAAW2F,EAAS,aAAcF,EAAgBrF,SAAUsF,GAC/D9I,IAAAhE,cAAA,aAAQgO,GACRhK,IAAAhE,cAAA,aAAQ+N,IAEXf,M,oCClMjB,qCAiBO,MAAMiB,EAAsC9J,IAC/C,MAAM,GAAEuE,EAAE,UAAEtB,EAAS,IAAE9J,EAAG,IAAED,EAAG,MAAE2F,EAAK,UAAE8D,GAAc3C,EAChD+J,EAAU9Q,KAAKE,IAAI,EAAGF,KAAKC,IAAa,IAAR2F,EAAe1F,EAAK,MACpD1B,EAAQ,CAAEC,MAAUqS,EAAH,KAEvB,OACIlK,gBAAA,OAAKoD,UAAW2F,IAAU,eAAgB3F,GAAU,YAAa8G,EAAU,KACvElK,gBAAA,OACIoD,UAAU,oBACVxL,MAAOA,EACP8M,GAAIA,EACJnB,KAAK,cAAa,gBACHjK,EAAG,gBACH0F,EAAK,gBACL3F,EAAG,aACNyJ,EAAS,YACVoH,EAAU,QAOrCD,EAASE,aAAe,CACpB,gBAAiB,IACjB,gBAAiB,GAGNF,O,mKC3BA,MAAMG,UAA4BpK,gBAG7CE,YAAYC,GACRC,MAAMD,GACNT,KAAKmB,MAAQ,CAAEwJ,QAAQ,GACvB3K,KAAK4K,QAAU5K,KAAK4K,QAAQC,KAAK7K,MACjCA,KAAK8K,yBAA0B,EAG5B9B,SACH,MAAM+B,GACDC,mBAAiBC,mBAAmBjL,KAAKS,MAAMyK,cAAgB9Q,OAAO+Q,SAAShM,WAAW4F,SAAS/E,KAAKS,MAAMyK,aAanH,OAXIlL,KAAKS,MAAM2K,qBAAuBL,IAC7B/K,KAAK8K,wBAIE9K,KAAKmB,MAAMwJ,SAEnB3K,KAAK8K,yBAA0B,IAJ/B9K,KAAKqB,SAAS,CAAEsJ,QAAQ,IACxB3K,KAAK8K,yBAA0B,IAQnCxK,gBAAC+K,IAAOtM,OAAAuM,OAAA,CACJX,OAAQ3K,KAAKS,MAAMmK,QAAU5K,KAAKS,MAAM8K,mBAAoB,EAAQvL,KAAKmB,MAAMwJ,OAC/Ea,OAAQA,KACJxL,KAAKS,MAAMmK,QAAU5K,KAAKS,MAAMmK,UAAY5K,KAAK4K,YAEjD5K,KAAKS,QAKbmK,UACJ5K,KAAKqB,SAASoK,IAAa,CAAOd,QAASc,EAAcd,a,mOCzClD,MAAMe,UAAoBpL,gBAAzCE,c,oBASW,KAAAmL,gBAAmDrL,cAEnD0I,SACH,MACM4C,EAAmB5L,KAAKS,MAAMoL,gBAC9B,kBAA2B7L,KAAKS,MAAMoL,gBAFf,iBAK7B,OACIvL,2BAAA,KACIA,gBAAA,OACIuD,KAAK,QACLmB,GAAIhF,KAAKS,MAAMuE,GACf8G,IAAK9L,KAAK2L,gBACVI,YAAa/L,KAAKS,MAAMuL,YACxBC,UAAWjM,KAAKS,MAAMyL,UACtBC,YAAanM,KAAKS,MAAM2L,WACxBC,WAAYrM,KAAKS,MAAMyL,UACvBI,UAAWtM,KAAKS,MAAM8L,cACtBC,QAASxM,KAAKS,MAAMgM,YACpBC,OAAQ1M,KAAKS,MAAMkM,WACnBzU,MAAO8H,KAAKS,MAAMvI,MAClBwL,UAAWkI,EAAgB,aACf5L,KAAKS,MAAM2C,YAE1BpD,KAAKS,MAAMmM,aACRtM,gBAACoK,sBAAmB,CAChBmC,UAAW7M,KAAKS,MAAMqM,QAASD,UAC/B9L,OAAQf,KAAK2L,gBACbJ,iBAAkBvL,KAAKS,MAAM8K,iBAC7BX,QAAS5K,KAAKS,MAAMmK,SAEnB5K,KAAKS,MAAMsM,kBACN/M,KAAKS,MAAMsM,kBAAkB/M,KAAKS,MAAMuM,aACxChN,KAAKS,MAAMuM,YAAa7N,c,ykBA1CpCuM,EAAAjB,aAA2C,CACrDmC,aAAa,EACbrB,kBAAkB,EAClBuB,QAAS,CACLD,UAAW,QCKvB,MAAMI,EAAe,CACjBC,WAAY,CACRC,UAAW,QACXC,UAAW,OACXC,WAAY,KAEhBC,SAAU,CACNH,UAAW,SACXC,UAAW,MACXC,WAAY,MAUpB,IAAKE,GAAL,SAAKA,GACDA,IAAA,iBACAA,IAAA,aACAA,IAAA,mBAHJ,CAAKA,MAAS,KAaC,MAAMC,UAAelN,YAoChCE,YAAYC,GACRC,MAAMD,GAtBO,KAAAqL,IAAuCxL,cAEvC,KAAAmN,UAA0CnN,cAE1C,KAAAoN,UAA0CpN,cA6DpD,KAAAkL,OAAS,KACZxL,KAAKqB,SAAUsM,IACJ,CAAEpC,kBAAmBoC,EAAWpC,qBAmF9B,KAAAqC,cAAiBC,GAE1BvN,gBAAA,OAAKoD,UAAU,sBACVmK,EAAOhL,IAAKiL,GAELxN,gBAAA,OAAKR,IAAKgO,EAAMC,QAASlK,KAAK,eAAeH,UAAW,uBAAuBoK,EAAME,kBAChFF,EAAMG,eAQd,KAAAC,oBAAuBC,IAEpC,MAUMC,EAAgBC,mBAAS,CAAEC,QAASC,cAAYC,QAASC,QAV/C,CACZC,aAAc,CACVC,GAAI,CAAEC,EAAG,KACTC,GAAI,CAAED,EAAG,KACTE,GAAI,CAAEF,EAAG,MACTG,GAAI,CAAEH,EAAG,MACTI,GAAI,CAAEJ,EAAG,UAKXK,EAAiC,OAAlBb,GAA4C,OAAlBA,EAEzCc,EAAqB7L,iBAAO,UAAWrD,KAAKS,MAAM0O,aAAa,GAAG/L,UAAWpD,KAAKmB,MAAMgO,aAAa,GAAG7P,OAExG8P,EAAqBpP,KAAKqP,cAC1BhM,iBAAO,UAAWrD,KAAKS,MAAM0O,aAAa,GAAG/L,UAAWpD,KAAKmB,MAAMgO,aAAa,GAAG7P,OACnF,GACN,OACIgB,2BAAA,KACIA,gBAAA,SACIvE,KAAK,QACLiJ,GAAOhF,KAAKS,MAAM0O,aAAa,GAAGnK,GAA9B,QACJtB,UAAU,+BACV/J,IAAKqG,KAAKS,MAAM9G,IAChBC,IAAKoG,KAAKqP,cAAgBrP,KAAKmB,MAAMgO,aAAa,GAAG7P,MAAQU,KAAKS,MAAM6O,KAAOtP,KAAKS,MAAM7G,IAC1F0F,MAAOU,KAAKmB,MAAMgO,aAAa,GAAG7P,MAClCuE,KAAK,SAAQ,YACH,SAAQ,gBACH7D,KAAKS,MAAM9G,IAAG,gBACdqG,KAAKqP,cAAgBrP,KAAKmB,MAAMgO,aAAa,GAAG7P,MAAQU,KAAKS,MAAM6O,KAAOtP,KAAKS,MAAM7G,IAAG,aAC3FqV,EAAeC,EAAqBlP,KAAKS,MAAM0O,aAAa,GAAG/L,UAAS,mBAClEpD,KAAKS,MAAM8O,YAC7BrL,SAAUlE,KAAKwP,gBACf9C,OAAQA,KACJ1M,KAAKqB,SAAS,CACVkK,kBAAkB,IAEtBvL,KAAKS,MAAMiM,QAAU1M,KAAKS,MAAMiM,UAEpCJ,UAAWA,KACPtM,KAAKqB,SAAS,CACVkK,kBAAkB,KAG1BiB,QAASA,KACLxM,KAAKqB,SAAS,CACVkK,kBAAkB,KAG1BzH,SAAU,EACV5L,MAAOiW,EAAY,GAAE,gBACNc,OAAevQ,EAAYsB,KAAKmB,MAAMgO,aAAa,GAAG7P,QAEzEgB,gBAACoL,EAAW,CACR1G,GAAIhF,KAAKS,MAAM0O,aAAa,GAAGnK,GAC/B8G,IAAK9L,KAAKyN,UACVzB,YAAahM,KAAKyP,aAClBrD,WAAYpM,KAAK0P,YACjBxD,UAAWlM,KAAK2P,WAChBlD,YAAazM,KAAKS,MAAM+L,QACxBG,WAAY3M,KAAKS,MAAMiM,OACvBK,kBAAmB/M,KAAKS,MAAMsM,kBAC9BH,YAAa5M,KAAKS,MAAMmM,YACxB1U,MAAOiW,EAAY,GACnBvD,QAAS5K,KAAKwL,OACdD,iBAAkBvL,KAAKmB,MAAMoK,iBAC7BM,gBAAiB7L,KAAKS,MAAMoL,gBAC5BmB,YAAahN,KAAKmB,MAAMgO,aAAa,GAAG7P,MACxC8D,UAAW6L,EAAeC,EAAqBlP,KAAKS,MAAM0O,aAAa,GAAG/L,YAC3E,IACFpD,KAAKqP,eACF/O,2BAAA,KACIA,gBAAA,SACIvE,KAAK,QACLiJ,GAAOhF,KAAKS,MAAM0O,aAAa,GAAGnK,GAA9B,QACJtB,UAAU,+BACV/J,IAAKqG,KAAKmB,MAAMgO,aAAa,GAAG7P,MAAQU,KAAKS,MAAM6O,KACnD1V,IAAKoG,KAAKS,MAAM7G,IAChB0F,MAAOU,KAAKmB,MAAMgO,aAAa,GAAG7P,MAClCuE,KAAK,SAAQ,YACH,SAAQ,gBACH7D,KAAKmB,MAAMgO,aAAa,GAAG7P,MAAQU,KAAKS,MAAM6O,KAAI,gBAClDtP,KAAKS,MAAM7G,IAAG,aACjBqV,EAAeG,EAAqBpP,KAAKS,MAAM0O,aAAa,GAAG/L,UAAS,mBAClEpD,KAAKS,MAAM8O,YAC7BrL,SAAUlE,KAAKwP,gBACf9C,OAAQ1M,KAAKS,MAAMiM,OACnBF,QAASxM,KAAKS,MAAM+L,QACpB1I,SAAU,EACV5L,MAAOiW,EAAY,GAAE,gBACNc,OAAevQ,EAAYsB,KAAKmB,MAAMgO,aAAa,GAAG7P,QAEzEgB,gBAACoL,EAAW,CACR1G,GAAIhF,KAAKS,MAAM0O,aAAa,GAAGnK,GAC/B8G,IAAK9L,KAAK0N,UACVV,YAAahN,KAAKmB,MAAMgO,aAAa,GAAG7P,MACxC0M,YAAahM,KAAKyP,aAClBrD,WAAYpM,KAAK0P,YACjBxD,UAAWlM,KAAK2P,WAChBlD,YAAazM,KAAKS,MAAM+L,QACxBG,WAAY3M,KAAKS,MAAMiM,OACvBK,kBAAmB/M,KAAKS,MAAMsM,kBAC9BH,YAAa5M,KAAKS,MAAMmM,YACxB1U,MAAOiW,EAAY,GACnBtC,gBAAiB7L,KAAKS,MAAMoL,gBAC5B+D,cAAe5P,KAAKS,MAAM0O,aAAa,GAAGS,cAC1CxM,UAAW6L,EAAeG,EAAqBpP,KAAKS,MAAM0O,aAAa,GAAG/L,eAQjF,KAAAyM,cAAgB,KAC7B,MAAM,YAAEN,GAAgBvP,KAAKS,MACvBqP,EAAeC,YAAqB9C,EAAasC,GAAapC,WAG9D6C,EAAYhQ,KAAK8L,IAAIpF,QAAS,SAASoJ,GACvCG,EAAYjQ,KAAKyN,UAAU/G,QAASiF,gBAAgBjF,QAAS,SAASoJ,GAE1D,IAAdG,GACAjQ,KAAKqB,SAAS,CACV6O,MAAOF,EAAYC,EACnBE,KAA4C,UAAtClD,EAAaC,WAAWE,WAAyB6C,EAAY,EAAIA,EAAY,KAK9E,KAAAR,aAAgB9P,IAC7BA,EAAEyQ,kBACF,MAAMC,EAAY1Q,EAAE5D,KACpBpE,SAAS2Y,iBAAiB,YAActQ,KAAK0P,aAC7C/X,SAAS2Y,iBAAiB,UAAYtQ,KAAK2P,YAC3C,MAAMY,EAAa5Q,EAAEoB,OACfyP,EAAUD,GAAcA,EAAWvL,GACzChF,KAAKqB,SACAsM,IACU,CAAE8C,QAAQ,EAAMzL,GAAIwL,IAE/B,KACIxQ,KAAK0Q,yBAAyBH,EAAYhD,EAAUoD,MAAON,MA+EtD,KAAAO,UAAajR,IAC1B,MAAM,KAAEwQ,GAASnQ,KAAKmB,OAChB,YAAEoO,GAAgBvP,KAAKS,MACvBoQ,EAAalR,EACbmR,EAAO9Q,KAAK8L,IACZiF,EAAkBhB,YAAqB9C,EAAasC,GAAalC,YACjE2D,EAAiB/D,EAAasC,GAAanC,UAG3C6D,EAAwB,SAASF,EACjC1D,EAAcwD,EAAUK,QAAqCL,EAAUK,QAAQ,GAAGD,GAAhDtR,EAAEsR,GACpC7D,EAAY0D,EAAKpK,QAASzM,wBAAwB+W,GAClDG,EAA4C,UAAtClE,EAAaC,WAAWE,UAAwBA,EAAYC,EAAa8C,EAAO9C,EAAaD,EAAY+C,EACrH,OAAOnQ,KAAKoR,sBAAsBD,IAGrB,KAAAE,sBAAyB/R,IACtC,MAAM,MAAE4Q,GAAUlQ,KAAKmB,OACjB,IAAExH,EAAG,IAAEC,GAAQoG,KAAKS,MAGpB6Q,GADahS,EAAQ3F,IADRC,EAAMD,GAGzB,OAAOD,KAAK6X,MAAMD,EAAapB,IAQlB,KAAAkB,sBAAyBD,IACtC,MAAM,MAAEjB,GAAUlQ,KAAKmB,OACjB,YAAEoO,EAAW,IAAE5V,EAAG,IAAEC,EAAG,KAAE0V,GAAStP,KAAKS,MAEvC6Q,EAAaE,YAAML,EAAK,EAAGjB,IAAUA,GAAS,GAC9CuB,EAAUnC,EAAO5V,KAAK6X,MAAOD,GAAc1X,EAAMD,GAAQ2V,GACzDhQ,EAAwB,eAAhBiQ,EAA+BkC,EAAU9X,EAAMC,EAAM6X,EAEnE,OAAOD,YAAMlS,EAAO3F,EAAKC,IAQZ,KAAA8X,aAAgBP,IAC7B,MAAM,MAAEjB,EAAK,KAAEC,GAASnQ,KAAKmB,OACvB,YAAEoO,GAAgBvP,KAAKS,MACvBnB,EAAQU,KAAKoR,sBAAsBD,GACnC3X,EAAWwG,KAAKqR,sBAAsB/R,GACtC2Q,EAA4B,eAAhBV,EAA+B/V,EAAW2W,EAAO3W,EAGnE,MAAO,CACHmY,KAH4B,eAAhBpC,EAA+BU,EAAYC,EAAQD,EAI/D2B,OAAQ3B,EACRnC,MAAOmC,IAaE,KAAA4B,gBAAkB,CAACC,EAAkCvB,EAAyBF,KACvFrQ,KAAKqP,eACDrP,KAAKS,MAAM0O,aAAa,GAAG7P,MAAQU,KAAKS,MAAM0O,aAAa,GAAG7P,QAC9DU,KAAKS,MAAM0O,aAAa,GAAG7P,MAAQU,KAAKS,MAAM0O,aAAa,GAAG7P,OAElEU,KAAKqB,SACAsM,IACU,CACHwB,aAAY4C,EAAA,GAAO/R,KAAKS,MAAM0O,gBAGtC,KACInP,KAAK0Q,yBAAyBH,EAAYhD,EAAUyE,OAAQ3B,MAIpErQ,KAAKqB,SACAsM,IACU,CACHwB,aAAc2C,IAGtB,KACI9R,KAAK0Q,yBAAyBH,EAAYhD,EAAUyE,OAAQ3B,MAgB3D,KAAA4B,qBAAuB,CACpCC,EACAC,EACA9B,KAEA8B,EAAS,CACLnN,GAAKkN,GAASA,EAAMlN,IAAO,GAC3BoN,OAAQpS,KACRqS,gBAAiBrS,KAAKmB,MAAMgO,aAAa,GAAG7P,MAC5CgT,iBAAmBtS,KAAKmB,MAAMgO,aAAa,IAAMnP,KAAKmB,MAAMgO,aAAa,GAAG7P,OAAUnE,OAAOoX,IAC7FlC,eAIS,KAAAK,yBAA2B,CAAC3W,EAAsBsW,EAAsBmC,KACrF,IAAIC,EAAa,GACb1Y,GAAWA,EAAQiL,IAAMqL,IAAc9C,EAAUyE,SACjDS,EAAa1Y,EAAQiL,GAAG0N,QAAQ,QAAS,KAE7C,MAAMR,EAAQnY,GAAWiG,KAAK2S,mBAAmBF,GAE7CpC,IAAc9C,EAAUqF,KACpB5S,KAAKS,MAAMoS,aACX7S,KAAKiS,qBAAqBC,GAASA,EAAM,GAAIlS,KAAKS,MAAMoS,YAAaL,GAGzEnC,IAAc9C,EAAUoD,OACpB3Q,KAAKS,MAAMqS,eACX9S,KAAKiS,qBAAqBC,GAASA,EAAM,GAAIlS,KAAKS,MAAMqS,cAAeN,GAG3EnC,IAAc9C,EAAUyE,QACpBhS,KAAKS,MAAMyD,UACXlE,KAAKiS,qBAAqBC,GAASA,EAAM,GAAIlS,KAAKS,MAAMyD,SAAUsO,IA3f1ExS,KAAKqP,cAAmD,IAAnCrP,KAAKS,MAAM0O,aAAa1Q,OAC7CuB,KAAKmB,MAAQ,CACTgO,aAAcnP,KAAKS,MAAM0O,aACzBgB,KAAM,EACND,MAAO,EACPO,QAAQ,EACRzL,GAAI,GACJuG,kBAAkB,GAEtBvL,KAAK6P,cAAgB7P,KAAK6P,cAAchF,KAAK7K,MAC7CA,KAAK0P,YAAc1P,KAAK0P,YAAY7E,KAAK7K,MACzCA,KAAK2P,WAAa3P,KAAK2P,WAAW9E,KAAK7K,MACvCA,KAAKyP,aAAezP,KAAKyP,aAAa5E,KAAK7K,MAC3CA,KAAKwL,OAASxL,KAAKwL,OAAOX,KAAK7K,MAC/BA,KAAKwP,gBAAkBxP,KAAKwP,gBAAgB3E,KAAK7K,MACjDA,KAAK6R,gBAAkB7R,KAAK6R,gBAAgBhH,KAAK7K,MACjDA,KAAK2S,mBAAqB3S,KAAK2S,mBAAmB9H,KAAK7K,MACvDA,KAAKiS,qBAAuBjS,KAAKiS,qBAAqBpH,KAAK7K,MAC3DA,KAAK0Q,yBAA2B1Q,KAAK0Q,yBAAyB7F,KAAK7K,MACnEA,KAAK+S,qBAAuB/S,KAAK+S,qBAAqBlI,KAAK7K,MAC3DA,KAAKgT,eAAiBhT,KAAKgT,eAAenI,KAAK7K,MAE3CiT,IAASC,WACTvb,SAASC,KAAKoD,eACsC,QAApDrD,SAASC,KAAKoD,cAAcyB,aAAa,cACDiC,IAAvCsB,KAAKS,MAAM0S,yBAAyCnT,KAAKS,MAAM0S,2BAEhElG,EAAaC,WAAWE,UAAY,SA5CrC,gCAAgC3M,EAAqBU,GACxD,GACKV,EAAM0O,aAAa1Q,OAAS,GAAKgC,EAAM0O,aAAa,GAAG7P,QAAU6B,EAAMgO,aAAa,GAAG7P,OACvFmB,EAAM0O,aAAa1Q,OAAS,GAAKgC,EAAM0O,aAAa,GAAG7P,QAAU6B,EAAMgO,aAAa,GAAG7P,MAC1F,CACE,MAAM8T,EAASrB,EAAA,GAAQ5Q,GAKvB,OAJAiS,EAAUjE,aAAa,GAAG7P,MAAQmB,EAAM0O,aAAa,GAAG7P,MACpDmB,EAAM0O,aAAa1Q,OAAS,IAC5B2U,EAAUjE,aAAa,GAAG7P,MAAQmB,EAAM0O,aAAa,GAAG7P,OAErD8T,EAEX,OAAO,KAoCJC,oBACHrT,KAAK6P,gBACLoD,IAASC,WAAa9Y,OAAOkW,iBAAiB,SAAUtQ,KAAK6P,eAG1DyD,qBACCtT,KAAK8L,IAAIpF,SAAW1G,KAAK8L,IAAIpF,QAAQrL,YAlFpB,OAkF0D2E,KAAKmB,MAAM+O,OACtFlQ,KAAK6P,gBAUN0D,sBAAsBC,EAAyBC,GAClD,IAAIC,GAAe,EACnB,GAAI1T,KAAKqP,cAAe,CACpB,MAAMsE,EAAiB3T,KAAKqR,sBAAsBmC,EAAUrE,aAAa,GAAG7P,OACtEsU,EAAiB5T,KAAKqR,sBAAsBmC,EAAUrE,aAAa,GAAG7P,OAO5EoU,IAAeE,EAAiB,IAAIA,GAAkBD,EAAiBH,EAAUlE,KAErF,OAAOoE,EAGJG,uBACHzZ,OAAO0Z,oBAAoB,SAAU9T,KAAK6P,eAGvC7G,SACH,MAAM,YAAEuG,GAAgBvP,KAAKS,MACvBsT,EAAc/T,KAAKS,MAAMiD,UACzB,GAAG8J,EAAOwG,0BAA0BzE,KAAevP,KAAKS,MAAMiD,YAC9D,GAAG8J,EAAOwG,0BAA0BzE,IAEpC0E,EAAWjU,KAAKS,MAAMuE,GACtBmI,EAAYF,EAAasC,GAAapC,UACtCC,EAAYH,EAAasC,GAAanC,UACtC8G,EAAsBnE,YAAqB3C,GAC3C+G,EAAiBnU,KAAKqR,sBAAsBrR,KAAKS,MAAM0O,aAAa,GAAG7P,OACvE8U,EAAepU,KAAK0R,aAAayC,GACvC,IAAIE,EAAY,CAAE,CAAClH,GAAeiH,EAAazC,KAAhB,MAC/B,MAAM2C,EAAqC,GAC3CA,EAAYnU,KAAK,CAAE,CAACiN,GAAegH,EAAaxC,OAAhB,OAChC,MAAM2C,EAAqB5Q,IAAW,eAAgB3D,KAAKS,MAAM8T,mBAAqBvU,KAAKS,MAAM8T,mBAAqB,IAChHC,EAAYxU,KAAKS,MAAM+T,UAAY,IAAIC,OAAOzU,KAAKS,MAAM+T,WAAe,GAE9E,GAAIxU,KAAKqP,cAAe,CACpB,MAAMqF,EAAiB1U,KAAKqR,sBAAsBrR,KAAKS,MAAM0O,aAAa,GAAG7P,OACvEqV,EAAe3U,KAAK0R,aAAagD,GACvCJ,EAAYnU,KAAK,CAAE,CAACiN,GAAeuH,EAAa/C,OAAhB,OAE5ByC,EADgB,aAAhB9E,EACY,CACRqF,aAAiBR,EAAazC,KAAhB,KACd,CAACxE,GAAewH,EAAahD,KAAOyC,EAAazC,KAApC,MAGL,CACR,CAAC,SAASuC,IACgC,UAAtCjH,EAAaC,WAAWE,UAAwBgH,EAAazC,KAAO3R,KAAKmB,MAAMgP,KAAOiE,EAAazC,MADrE,KAGlC,CAACxE,GAAewH,EAAa/C,OAASwC,EAAaxC,OAAtC,MAKzB,OACItR,gBAAA,OAAKoD,UAAWqQ,EAAajI,IAAK9L,KAAK8L,KACnCxL,gBAAA,OAAKoD,UAAU,oBAAoBH,QAASvD,KAAKgT,eAAgBnP,KAAK,QACjE7D,KAAKS,MAAMoU,iBACRvU,gBAACiK,WAAQxL,OAAAuM,OAAA,CACLtG,GAAI,YAAYiP,EAChB7Q,UAAWpD,KAAKS,MAAM2C,UACtBM,UAAW6Q,EACX5a,IAAKqG,KAAKS,MAAM9G,IAChBC,IAAKoG,KAAKS,MAAM7G,IAChB0F,MAAOU,KAAKS,MAAMqU,eAAiB9U,KAAKS,MAAMqU,eAAiB,GAC1D9U,KAAKS,MAAMqU,eAAiB,CAAE,iBAAkB9U,KAAKS,MAAMqU,gBAAmB,KAG3FxU,gBAAA,OAAKoD,UAAU,gBAAgBsB,GAAI,GAAGiP,IAAWO,IAAatc,MAAOmc,IACpErU,KAAKkO,oBAAoBoG,IAE7BtU,KAAKS,MAAMsU,WAAa/U,KAAK4N,cAAc5N,KAAKS,MAAMoN,QAAW,MAyKtE8B,WAAWhQ,GACfA,EAAEyQ,kBACF,MAAMC,EAAY1Q,EAAE5D,KACdwU,EAAa5Q,EAAEoB,OACrBf,KAAKqB,SACAsM,IACU,CAAE8C,QAAQ,EAAOzL,GAAI,KAEhC,KACIhF,KAAK0Q,yBAAyBH,EAAYhD,EAAUqF,IAAKvC,KAGjE1Y,SAASmc,oBAAoB,YAAc9T,KAAK0P,aAChD/X,SAASmc,oBAAoB,UAAY9T,KAAK2P,YAG1CD,YAAY/P,GAChBA,EAAEyQ,kBACF,MAAM9Q,EAAQU,KAAK4Q,UAAUjR,GACvB0Q,EAAY1Q,EAAE5D,KACdiZ,EAAYrV,EAAEoB,OACdkU,EAAUjV,KAAKmB,MAAM6D,IAAOgQ,GAAaA,EAAUhQ,GACnDkQ,EAAelV,KAAK2S,mBAAmBsC,GAEzCC,IAAiBlV,KAAK+S,qBAAqBmC,EAAa,GAAIvV,KAC5DuV,EAAa,GAAG5V,MAAQA,EACxBU,KAAK6R,gBAAgBqD,EAAcF,EAAW3E,IAI9C2C,eAAerT,GACnBA,EAAEyQ,kBACF,MAAM5W,EAAWwG,KAAK4Q,UAAUjR,GAC1BqV,EAAYrV,EAAEoB,OACdsP,EAAY1Q,EAAE5D,KACdoZ,EAASnV,KAAK2S,mBAAmB3S,KAAKS,MAAM0O,aAAa,GAAGnK,IAElE,GAAIhF,KAAKqP,cAAe,CACpB,MAAM+F,EAASpV,KAAK2S,mBAAmB3S,KAAKS,MAAM0O,aAAa,GAAGnK,IAElE,GAAImQ,GAAUC,EAAQ,CAGO5b,EAFD2b,EAAO,GAAG7V,MACV8V,EAAO,GAAG9V,MAES9F,EAGvC2b,EAAO,GAAG7V,MAAQ9F,EAElB4b,EAAO,GAAG9V,MAAQ9F,EAGtBwG,KAAKqB,SACAsM,IACU,CAAEwB,aAAc,CAACgG,EAAO,GAAIC,EAAO,MAE9C,KACIpV,KAAK0Q,yBAAyBsE,EAAWzH,EAAUyE,OAAQ3B,WAIhE8E,IACPA,EAAO,GAAG7V,MAAQ9F,EAClBwG,KAAKqB,SACAsM,IACU,CAAEwB,aAAcgG,IAE3B,KACInV,KAAK0Q,yBAAyBsE,EAAWzH,EAAUyE,OAAQ3B,MAmEnEb,gBAAgB7P,GACpBA,EAAEyQ,kBACF,MAAMG,EAAa5Q,EAAEoB,OACfsU,EAAsB9E,GAAcvQ,KAAK2S,mBAAmBpC,EAAWvL,GAAG0N,QAAQ,QAAS,KAC3FrC,EAAY1Q,EAAE5D,KACpBsZ,EAAqB,GAAG/V,MAAQnE,OAAOma,SAAS3V,EAAEoB,OAAOzB,MAAO,IAChEU,KAAK6R,gBAAgBwD,EAAsB9E,EAAYF,GAgCnDsC,mBAAmBsC,GACvB,IAAIM,EAMJ,OAJAA,EAAavV,KAAKS,MAAM0O,aAAaqG,OAAQtD,GAClCA,EAAMlN,KAAOiQ,GAGjBM,EAAW9W,OAAS,EAAI8W,EAAa,KAyCxCxC,qBACJmC,EACA3c,GAEA,IAAKyH,KAAKqP,cACN,OAAO,EAEX,IAAIoG,EAAU,EACVC,GAAiB,EAErB,GAAmB,YAAfnd,EAAMwD,KAAoB,CAG1B,GADA0Z,EADmBld,EACCoQ,QAEfuM,IAAiBlV,KAAKS,MAAM0O,aAAa,KAAmB,KAAZsG,GAA8B,KAAZA,IAClEP,IAAiBlV,KAAKS,MAAM0O,aAAa,KAAmB,KAAZsG,GAA8B,KAAZA,GAEnE,OAAO,EAEXC,GAAiB,EAErB,GAAmB,cAAfnd,EAAMwD,MAAuC,cAAfxD,EAAMwD,MAAuC,UAAfxD,EAAMwD,KAAkB,CACpF,MAAMuD,EAAQU,KAAK4Q,UAAUrY,GAC7B,GACKyH,KAAKmB,MAAMgO,aAAa,GAAG7P,MAAQA,GAAS4V,EAAalQ,KAAOhF,KAAKS,MAAM0O,aAAa,GAAGnK,IAC3FhF,KAAKmB,MAAMgO,aAAa,GAAG7P,MAAQA,GAAS4V,EAAalQ,KAAOhF,KAAKS,MAAM0O,aAAa,GAAGnK,GAE5F,OAAO,EAEX0Q,GAAiB,EAGrB,QAASA,GAAkB1V,KAAKS,MAAM0O,aAAa,GAAG7P,MAA0B,EAAlBU,KAAKS,MAAM6O,MAAYtP,KAAKS,MAAM0O,aAAa,GAAG7P,QArkBtGkO,EAAA/C,aAAsC,CAChDmC,aAAa,EACb+I,QAAQ,EACRpG,YAAa,aACb5V,IAAK,EACLC,IAAK,IACL0V,KAAM,EACNH,aAAc,CAAC,CAAEnK,GAAI,kBAAmB1F,MAAO,MAG3BkO,EAAAwG,gBAA0B,U,uBCnEtD,IAAInV,EAAS,EAAQ,QACjB+W,EAAY,EAAQ,QACpBC,EAAiB,EAAQ,QAOzBzW,EAAiBP,EAASA,EAAOQ,iBAAcX,EAkBnDnH,EAAOC,QATP,SAAoB8H,GAClB,OAAa,MAATA,OACeZ,IAAVY,EAdQ,qBADL,gBAiBJF,GAAkBA,KAAkBL,OAAOO,GAC/CsW,EAAUtW,GACVuW,EAAevW,K,mBCZrB/H,EAAOC,QALP,WACEwI,KAAKC,SAAW,GAChBD,KAAKhH,KAAO,I,qBCTd,IAAI8c,EAAW,EAAQ,QACnBC,EAAM,EAAQ,QACdC,EAAW,EAAQ,QAMnBC,EAAYvc,KAAKE,IACjBsc,EAAYxc,KAAKC,IAqLrBpC,EAAOC,QA7HP,SAAkB2e,EAAMC,EAAMC,GAC5B,IAAIC,EACAC,EACAC,EACA5W,EACA6W,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARX,EACT,MAAM,IAAIY,UAzEQ,uBAmFpB,SAASC,EAAWC,GAClB,IAAIC,EAAOZ,EACPa,EAAUZ,EAKd,OAHAD,EAAWC,OAAW7X,EACtBiY,EAAiBM,EACjBrX,EAASuW,EAAKiB,MAAMD,EAASD,GAI/B,SAASG,EAAYJ,GAMnB,OAJAN,EAAiBM,EAEjBR,EAAUa,WAAWC,EAAcnB,GAE5BQ,EAAUI,EAAWC,GAAQrX,EAatC,SAAS4X,EAAaP,GACpB,IAAIQ,EAAoBR,EAAOP,EAM/B,YAAyBhY,IAAjBgY,GAA+Be,GAAqBrB,GACzDqB,EAAoB,GAAOZ,GANJI,EAAON,GAM8BH,EAGjE,SAASe,IACP,IAAIN,EAAOlB,IACX,GAAIyB,EAAaP,GACf,OAAOS,EAAaT,GAGtBR,EAAUa,WAAWC,EA3BvB,SAAuBN,GACrB,IAEIU,EAAcvB,GAFMa,EAAOP,GAI/B,OAAOG,EACHX,EAAUyB,EAAanB,GAJDS,EAAON,IAK7BgB,EAoB+BC,CAAcX,IAGnD,SAASS,EAAaT,GAKpB,OAJAR,OAAU/X,EAINoY,GAAYR,EACPU,EAAWC,IAEpBX,EAAWC,OAAW7X,EACfkB,GAeT,SAASiY,IACP,IAAIZ,EAAOlB,IACP+B,EAAaN,EAAaP,GAM9B,GAJAX,EAAW9X,UACX+X,EAAWvW,KACX0W,EAAeO,EAEXa,EAAY,CACd,QAAgBpZ,IAAZ+X,EACF,OAAOY,EAAYX,GAErB,GAAIG,EAIF,OAFAkB,aAAatB,GACbA,EAAUa,WAAWC,EAAcnB,GAC5BY,EAAWN,GAMtB,YAHgBhY,IAAZ+X,IACFA,EAAUa,WAAWC,EAAcnB,IAE9BxW,EAIT,OA3GAwW,EAAOJ,EAASI,IAAS,EACrBN,EAASO,KACXO,IAAYP,EAAQO,QAEpBJ,GADAK,EAAS,YAAaR,GACHJ,EAAUD,EAASK,EAAQG,UAAY,EAAGJ,GAAQI,EACrEM,EAAW,aAAcT,IAAYA,EAAQS,SAAWA,GAoG1De,EAAUG,OApCV,gBACkBtZ,IAAZ+X,GACFsB,aAAatB,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAU/X,GAgCjDmZ,EAAUI,MA7BV,WACE,YAAmBvZ,IAAZ+X,EAAwB7W,EAAS8X,EAAa3B,MA6BhD8B,I,mBC1LT,IAAIK,EAAe,KAiBnB3gB,EAAOC,QAPP,SAAyB2gB,GAGvB,IAFA,IAAIjY,EAAQiY,EAAO1Z,OAEZyB,KAAWgY,EAAaE,KAAKD,EAAOE,OAAOnY,MAClD,OAAOA,I,qBCfT,IAAIoY,EAAe,EAAQ,QA2B3B/gB,EAAOC,QAJP,SAAkB8H,GAChB,OAAgB,MAATA,EAAgB,GAAKgZ,EAAahZ,K,kCCxB3C,qCAgDe2E,IAhBqCsU,IAAmF,IAAlF,UAAEC,EAAS,MAAElZ,EAAK,UAAE8D,EAAS,KAAEH,EAAI,UAAES,EAAS,SAAEQ,EAAQ,mBAAE5B,GAAoBiW,EAC/H,MAAME,EAAW9U,IAAW,iBAAkBD,GAAwB,IACtE,OACIpD,gBAAA,SACIoD,UAAW+U,EACXC,QAASF,EAAS,eACJA,EACdzc,KAAMuG,EAAqB,QAAU,WAAU,aACnCc,EACZ9D,MAAOA,EACP2D,KAAMA,EACNiB,SAAUA,M,qBC3CtB,IAAIyU,EAAU,EAAQ,QAClBC,EAAW,EAAQ,QAGnBC,EAAe,mDACfC,EAAgB,QAuBpBvhB,EAAOC,QAbP,SAAe8H,EAAOyZ,GACpB,GAAIJ,EAAQrZ,GACV,OAAO,EAET,IAAIvD,SAAcuD,EAClB,QAAY,UAARvD,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATuD,IAAiBsZ,EAAStZ,MAGvBwZ,EAAcV,KAAK9Y,KAAWuZ,EAAaT,KAAK9Y,IAC1C,MAAVyZ,GAAkBzZ,KAASP,OAAOga,M,mBCFvC,IAAIJ,EAAU5gB,MAAM4gB,QAEpBphB,EAAOC,QAAUmhB,G,mBCTjBphB,EAAOC,QANP,SAAoBsI,GAClB,IAAIF,EAASI,KAAKgZ,IAAIlZ,WAAeE,KAAKC,SAASH,GAEnD,OADAE,KAAKhH,MAAQ4G,EAAS,EAAI,EACnBA,I,qBCbT,IAAIqZ,EAAgB,EAAQ,QACxBC,EAAiB,EAAQ,QACzBC,EAAc,EAAQ,QACtBC,EAAc,EAAQ,QACtBC,EAAc,EAAQ,QAS1B,SAASC,EAASC,GAChB,IAAIrZ,GAAS,EACTzB,EAAoB,MAAX8a,EAAkB,EAAIA,EAAQ9a,OAG3C,IADAuB,KAAKwZ,UACItZ,EAAQzB,GAAQ,CACvB,IAAIgb,EAAQF,EAAQrZ,GACpBF,KAAK0Z,IAAID,EAAM,GAAIA,EAAM,KAK7BH,EAASta,UAAUwa,MAAQP,EAC3BK,EAASta,UAAkB,OAAIka,EAC/BI,EAASta,UAAU2a,IAAMR,EACzBG,EAASta,UAAUga,IAAMI,EACzBE,EAASta,UAAU0a,IAAML,EAEzB9hB,EAAOC,QAAU8hB,G,kJCDJvS,EAA6BzG,aACtC,CAAAiY,EAA2EzM,KAAO,IAAjF,UAAEpI,EAAY,GAAIjE,IAAKma,EAAM,MAAO7f,QAAS8f,GAA2BtB,EAAfuB,EAAaC,YAAAxB,EAAAyB,GACnE,OAAO1Z,gBAACsZ,EAAG7a,OAAAuM,OAAA,CAAC5H,UAAWA,GAAeoW,EAAa,CAAEhO,IAAKA,Q,kICpBnD,MAAMmO,UAAgB3Z,gBAK1B0I,SACH,MAAAkR,EAAgCla,KAAKS,OAA/B,UAAEiD,GAAqBwW,EAAPzZ,EAAKsZ,YAAAG,EAAAF,GACrBG,EAAkB,eAAezW,EAEvC,OAAOpD,gBAAA,MAAAvB,OAAAuM,OAAA,CAAK5H,UAAWyW,GAAqB1Z,KARlCwZ,EAAAxP,aAAuC,CACjD/G,UAAW,yB,qBCdnB,IAGI0W,EAHY,EAAQ,OAGL9iB,CAAUyH,OAAQ,UAErCxH,EAAOC,QAAU4iB,G,mBCJjB,IAGIC,EAHYC,SAAStb,UAGIG,SAqB7B5H,EAAOC,QAZP,SAAkB2e,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOkE,EAAa7a,KAAK2W,GACzB,MAAOxW,IACT,IACE,OAAQwW,EAAO,GACf,MAAOxW,KAEX,MAAO,K,iaCVH4a,EAAiB,CACnBC,KAAM,EACNC,KAAM,KAMK,MAAMpP,UAAgB/K,gBA2BjCE,YAAYC,GACRC,MAAMD,GAENT,KAAK8L,IAAMxL,cACXN,KAAK0a,gBAAkB1a,KAAK0a,gBAAgB7P,KAAK7K,MACjDA,KAAK2a,oBAAsB3a,KAAK2a,oBAAoB9P,KAAK7K,MACzDA,KAAK4a,mBAAqB5a,KAAK4a,mBAAmB/P,KAAK7K,MACvDA,KAAKwL,OAASxL,KAAKwL,OAAOX,KAAK7K,MAC/BA,KAAK6a,mBAAqB7a,KAAK6a,mBAAmBhQ,KAAK7K,MACvDA,KAAK8a,oBAAsB9a,KAAK8a,oBAAoBjQ,KAAK7K,MACzDA,KAAK+a,0BAA4B/a,KAAK+a,0BAA0BlQ,KAAK7K,MACrEA,KAAKgb,2BAA6Bhb,KAAKgb,2BAA2BnQ,KAAK7K,MACvEA,KAAKwa,KAAOxa,KAAKwa,KAAK3P,KAAK7K,MAC3BA,KAAKya,KAAOza,KAAKya,KAAK5P,KAAK7K,MAC3BA,KAAKib,iBAAmBjb,KAAKib,iBAAiBpQ,KAAK7K,MACnDA,KAAKkb,aAAelb,KAAKkb,aAAarQ,KAAK7K,MAC3CA,KAAKmb,mBAAqBnb,KAAKmb,mBAAmBtQ,KAAK7K,MACvDA,KAAKe,OAAS,KACdf,KAAKqO,UAAW,EAChBrO,KAAKob,YAAa,EAGf/H,oBACHrT,KAAKe,OAASsa,YAAiBrb,KAAKS,MAAMM,QAC1Cf,KAAK0a,kBAIL,MAAM9iB,EAAOD,SAAS2jB,qBAAqB,QAAQrjB,KAAK,GACxD,GAAIL,EAAM,CACN,MAAM2jB,EAAc3jB,EAAK6E,aAAa,SAClC8e,GAAeA,EAAYxW,SAAS,YACpC/E,KAAKqO,UAAW,GAIJ,OAAhBrO,KAAKe,QAA+E,OAA5Df,KAAKe,OAAOya,WAAWC,aAAa,qBAC5Dzb,KAAKe,OAAOya,WAAWE,gBAAgB,oBAIxC7H,uBACH7T,KAAK2b,mBACL3b,KAAK4b,mBACL5b,KAAK4a,qBAGFC,mBAAmBlb,GAClBK,KAAK6b,aACL7b,KAAK2b,mBAET3b,KAAK8b,YAAc1hB,OAAOkd,WAAWtX,KAAKwa,KAAK3P,KAAK7K,KAAML,GAAIK,KAAK+b,SAAS,SAGzEjB,oBAAoBnb,GACnBK,KAAK8b,aACL9b,KAAK4b,mBAET5b,KAAK6b,YAAczhB,OAAOkd,WAAWtX,KAAKya,KAAK5P,KAAK7K,KAAML,GAAIK,KAAK+b,SAAS,SAGzEhB,4BACC/a,KAAK6b,aACL7b,KAAK2b,mBAINX,2BAA2Brb,GAC1BK,KAAK8b,aACL9b,KAAK4b,mBAET5b,KAAK6b,YAAczhB,OAAOkd,WAAWtX,KAAKya,KAAK5P,KAAK7K,KAAML,EAAEqc,aAAchc,KAAK+b,SAAS,SAGrFd,iBAAiBtb,GACfK,KAAKS,MAAMkK,SAIZ3K,KAAKob,YACLpb,KAAKob,YAAa,EAClB9D,WAAW,KACP,MAAM2E,EAAYtkB,SAASukB,cAEtBlc,KAAK8L,KAAQ9L,KAAK8L,IAAIpF,SAAY1G,KAAK8L,IAAIpF,QAAQyV,SAASF,IAC7Djc,KAAKya,KAAK9a,IAEf,IAEHK,KAAKya,KAAK9a,IAIXub,aAAavb,GACE,IAAdA,EAAEgJ,QACF3I,KAAKob,YAAa,EACD,WAAVzb,EAAEG,KACTE,KAAKya,KAAK9a,EAAEqc,aAIbb,mBAAmBxb,GACJ,IAAdA,EAAEgJ,QACF3I,KAAKob,YAAa,EACD,WAAVzb,EAAEG,KACTE,KAAKya,KAAK9a,GAIXoc,SAASjc,GACZ,MAAM,MAAEsc,GAAUpc,KAAKS,MACvB,MAAqB,iBAAV2b,EACAC,MAAMD,EAAMtc,IAAQya,EAAeza,GAAOsc,EAAMtc,GAGpDsc,GAAS,EAGb5B,KAAK7a,GACR,IAAKK,KAAKS,MAAMkK,SACZ3K,KAAK4b,mBACL5b,KAAKwL,OAAO7L,GAGQ,OAAhBK,KAAKe,QAAiB,CACtB,MAAMub,EAAW3kB,SAAS4kB,gBAAgB,oBAC1CD,EAAShd,MAAQU,KAAKS,MAAMuE,GAC5BhF,KAAKe,OAAOya,WAAWgB,aAAaF,IAKzC7B,KAAK9a,GACJK,KAAKS,MAAMkK,SACX3K,KAAK2b,mBACL3b,KAAKwL,OAAO7L,GAGQ,OAAhBK,KAAKe,QAA+E,OAA5Df,KAAKe,OAAOya,WAAWC,aAAa,qBAC5Dzb,KAAKe,OAAOya,WAAWE,gBAAgB,qBAK5CE,mBACH7D,aAAa/X,KAAK8b,aAClB9b,KAAK8b,iBAAcpd,EAGhBid,mBACH5D,aAAa/X,KAAK6b,aAClB7b,KAAK6b,iBAAcnd,EAGhBic,oBAAoBhb,GACvB,IAAKK,KAAKe,OACN,OAGJ,MAAMA,EAASpB,EAAEoB,OACbpB,EAAEoB,SAAWf,KAAKe,QAAUf,KAAKe,OAAOob,SAASpb,IAC7Cf,KAAK6b,aACL7b,KAAK2b,mBAGJ3b,KAAKS,MAAMkK,QACZ3K,KAAKwL,OAAO7L,IAETK,KAAKS,MAAMkK,QAA0C,YAAhC5J,EAAOtE,aAAa,UAC5CuD,KAAK8b,aACL9b,KAAK4b,mBAET5b,KAAK6b,YAAczhB,OAAOkd,WAAWtX,KAAKya,KAAK5P,KAAK7K,KAAML,GAAIK,KAAK+b,SAAS,UAI7ErB,kBACH,GAAK1a,KAAKe,OAIV,GAAIf,KAAKS,MAAMgc,QAAS,CACpB,MAAMC,EAAW1c,KAAKS,MAAMgc,QAAQE,MAAM,KACrCD,EAAS3X,SAAS,YACf2X,EAAS3X,SAAS,UAClB,CAAC,QAAS,cAAc6X,QAASrkB,IAC7BZ,SAAS2Y,iBAAiB/X,EAAOyH,KAAK2a,qBAAqB,KAG/D+B,EAAS3X,SAAS,WAClB/E,KAAKe,OAAOuP,iBAAiB,YAAatQ,KAAK6a,oBAAoB,GACnE7a,KAAKe,OAAOuP,iBAAiB,WAAYtQ,KAAK8a,qBAAqB,IAEnE4B,EAAS3X,SAAS,WAClB/E,KAAKe,OAAOuP,iBAAiB,UAAWtQ,KAAKwa,MAAM,GACpB,WAA3Bxa,KAAKS,MAAMoc,YACX7c,KAAKe,OAAOuP,iBAAiB,WAAYtQ,KAAKib,kBAAkB,GAEhEjb,KAAKe,OAAOuP,iBAAiB,WAAYtQ,KAAKya,MAAM,IAG5Dza,KAAKe,OAAOuP,iBAAiB,UAAWtQ,KAAKmb,oBAAoB,SAGrEnb,KAAKe,OAAOuP,iBAAiB,YAAatQ,KAAK6a,oBAAoB,GACnE7a,KAAKe,OAAOuP,iBAAiB,WAAYtQ,KAAK8a,qBAAqB,GACnE9a,KAAKe,OAAOuP,iBAAiB,UAAWtQ,KAAKmb,oBAAoB,GACjEnb,KAAKe,OAAOuP,iBAAiB,UAAWtQ,KAAKwa,MAAM,GACpB,WAA3Bxa,KAAKS,MAAMoc,YACX7c,KAAKe,OAAOuP,iBAAiB,WAAYtQ,KAAKib,kBAAkB,GAEhEjb,KAAKe,OAAOuP,iBAAiB,WAAYtQ,KAAKya,MAAM,GAGxD,CAAC,QAAS,cAAcmC,QAASrkB,IAC7BZ,SAAS2Y,iBAAiB/X,EAAOyH,KAAK2a,qBAAqB,KAKhEC,qBACE5a,KAAKe,SAIVf,KAAKe,OAAO+S,oBAAoB,YAAa9T,KAAK6a,oBAAoB,GACtE7a,KAAKe,OAAO+S,oBAAoB,WAAY9T,KAAK8a,qBAAqB,GACtE9a,KAAKe,OAAO+S,oBAAoB,UAAW9T,KAAKmb,oBAAoB,GACpEnb,KAAKe,OAAO+S,oBAAoB,UAAW9T,KAAKwa,MAAM,GACtDxa,KAAKe,OAAO+S,oBAAoB,WAAY9T,KAAKib,kBAAkB,GACnEjb,KAAKe,OAAO+S,oBAAoB,WAAY9T,KAAKya,MAAM,GAEvD,CAAC,QAAS,cAAcmC,QAASrkB,IAC7BZ,SAASmc,oBAAoBvb,EAAOyH,KAAK2a,qBAAqB,MAI/DnP,OAAO7L,GACNA,GAAKK,KAAKS,MAAMqc,UAChBnd,EAAEod,iBAGF/c,KAAKS,MAAM+K,QACXxL,KAAKS,MAAM+K,SAIZxC,SACH,IAAKhJ,KAAKS,MAAMkK,QAAU3K,KAAKqO,SAC3B,OAAO,KAGX,MAAA6L,EAsBIla,KAAKS,OAtBH,UACFuc,EAAS,OACTrS,EAAM,OACN5J,EAAM,gBACNkc,EAAe,UACfC,EAAS,eACTC,EAAc,UACdzZ,EAAS,eACT0Z,EAAc,SACdnW,EAAQ,UACRoW,EAAS,OACT7R,EAAM,MACN4Q,EAAK,UACLvP,EAAS,SACTiQ,EAAQ,QACRL,EAAO,kBACPa,EAAiB,OACjB5hB,EAAM,eACN6hB,EAAc,YACdV,EAAW,GACX7X,GAEHkV,EADMsB,EAAUzB,YAAAG,EAAAF,GAGXwD,EAAUC,YACZC,IAA2B,WAAhBb,EAA2B,mBAAqB,oBAAqB7c,KAAKS,MAAM2c,gBAC3Fpd,KAAKS,MAAMuc,WAGTW,EAAgBF,YAClBC,IAA2B,WAAhBb,EAA2B,aAAe,cAAe,OAAQ7c,KAAKS,MAAMiD,WACvF1D,KAAKS,MAAMuc,WAGf,OACI1c,gBAAA,OAAKwL,IAAK9L,KAAK8L,KACXxL,gBAACsd,IAAa,CACV/Q,UAAWA,EACXlC,OAAQA,IAAU,EAClB5J,OAAQA,EACR2C,UAAWia,EACXT,UAAWA,EACXD,gBAAiBA,EACjBK,kBAAmBA,EACnBC,eAAgBA,EAChB7hB,OAAQA,EACR2hB,UAAWA,EACXL,UAAWA,GAEVhd,KAAKS,MAAM+K,QAAUxL,KAAKS,MAAMod,sBAC7Bvd,gBAAA,UAAQvE,KAAK,SAAS2H,UAAU,2BAA2BH,QAASvD,KAAKS,MAAM+K,OAAM,aAAa,UAElG,GAEJlL,gBAAA,MAAAvB,OAAAuM,OAAA,GACQkQ,EAAU,CACd9X,UAAW8Z,EACX3Z,UAAsBnF,IAAhBme,GAA6C,YAAhBA,EAA4B,eAAYne,EAC3EoN,IAAK7E,EACLjC,GAAIhF,KAAKS,MAAMuE,GAAE,eACJmY,GAAyBxS,EACtCmT,YAAa9d,KAAK+a,0BAClBgD,aAAc/d,KAAKgb,2BACnB1O,UAAWtM,KAAKkb,mBArVtB7P,EAAAZ,aAAuC,CACjDE,QAAQ,EACRS,oBAAoB,EACpByS,uBAAuB,EACvBX,WAAW,EACXC,gBAAgB,EAChBtQ,UAAW,MACXoQ,gBAAiB,iBACjBb,MAAO7B,EACP/O,OAAQA,S,kCC9BhB,0a,qBCAA,IAAI3L,EAAe,EAAQ,QAkB3BtI,EAAOC,QAPP,SAAsBsI,GACpB,IAAIC,EAAOC,KAAKC,SACZC,EAAQL,EAAaE,EAAMD,GAE/B,OAAOI,EAAQ,OAAIxB,EAAYqB,EAAKG,GAAO,K,qBCf7C,IAAI8d,EAAO,EAAQ,QACfC,EAAY,EAAQ,QACpB5mB,EAAM,EAAQ,QAkBlBE,EAAOC,QATP,WACEwI,KAAKhH,KAAO,EACZgH,KAAKC,SAAW,CACd,KAAQ,IAAI+d,EACZ,IAAO,IAAK3mB,GAAO4mB,GACnB,OAAU,IAAID,K,+8BCSH,MAAME,UAAiB5d,YAoBlCE,YAAYC,GACRC,MAAMD,GAVO,KAAA0d,6BAAsC,CACnDC,SAAU,aACVC,QAAS,gBACTC,QAAS,aACTC,OAAQ,YAGK,KAAAC,QAAwCle,cAsJxC,KAAAme,qBAAwB3N,IACrC,MAAM9V,EAAgB8V,EAAK9V,cACvBA,IACIA,EAAcrC,UAAUwjB,SAAS,aAAenhB,EAAcrC,UAAUwjB,SAAS,UACjFnhB,EAAc9C,MAAMwmB,UAAY,QAEpC1e,KAAKye,qBAAqBzjB,KAxJ9BgF,KAAKS,MAAQA,EAEbT,KAAKmB,MAAQ,CACT/I,OAAQ,GAGZ4H,KAAK2e,YAAc3e,KAAK2e,YAAY9T,KAAK7K,MACzCA,KAAK4e,QAAU5e,KAAK4e,QAAQ/T,KAAK7K,MACjCA,KAAK6e,UAAY7e,KAAK6e,UAAUhU,KAAK7K,MACrCA,KAAK8e,WAAa9e,KAAK8e,WAAWjU,KAAK7K,MACvCA,KAAK+e,kBAAoB/e,KAAK+e,kBAAkBlU,KAAK7K,MAGlDqT,oBACHjZ,QAAUA,OAAOkW,iBAAiB,SAAUtQ,KAAK+e,mBAG9CzL,mBAAmBE,GAClBA,EAAUwL,WAAahf,KAAKS,MAAMue,UAClChf,KAAK+e,oBAINlL,uBACHzZ,QAAUA,OAAO0Z,oBAAoB,SAAU9T,KAAK+e,mBAGjDxL,sBAAsBC,EAA2BJ,GACpD,OAAIpT,KAAKmB,QAAUiS,GAAapT,KAAKS,QAAU+S,EAM5CxK,SACH,MAAAkR,EAuBIla,KAAKS,OAvBH,IACFhB,EAAG,OACHkL,EAAM,UACNjH,EAAS,SACTsb,EAAQ,OACRC,EAAM,UACNjC,EAEAkC,GAAIC,EAAU,aACdC,EAAY,cACZC,EAAa,OACbC,EAAM,MACNC,EAAK,KACLC,EAAI,QACJC,EAAO,QACPC,EAAO,WACPC,EAAU,UACVC,EAAS,OACTC,EAAM,UACNC,EAAS,SACTC,GAGH7F,EADM8F,EAAUjG,YAAAG,EAAAF,GAGXJ,EAAMna,GAAO,MACbwgB,EAAkB,CACpBf,GAAIC,EACJC,eACAC,gBACAC,SACAC,QACAC,OACAE,UACAC,aACAC,YACAC,SACAC,YACAC,aAGE,OAAE3nB,GAAW4H,KAAKmB,MAClBjJ,EAAmB,OAAXE,GAA8B,IAAXA,EAAe,KAAO,CAAEsmB,UAAWtmB,GAEpE,OACIkI,gBAAC4f,IAAUnhB,OAAAuM,OAAA,GACH2U,EAAe,CACnBf,GAAIvU,EACJ8U,QAASA,GAAWU,IAAmBjC,SACvCyB,WAAY3f,KAAK2e,YACjBkB,OAAQ7f,KAAK4e,QACbkB,UAAW9f,KAAK8e,WAChBiB,SAAU/f,KAAK6e,YAEbuB,IACE,MAAMC,EAAgBrgB,KAAKsgB,oBAAoBF,GACzC5C,EAAUC,YAAgBC,IAAWha,EAAW2c,EAAepB,GAAU,mBAAoBjC,GAEnG,OACI1c,gBAACsZ,EAAG7a,OAAAuM,OAAA,GAAK0U,EAAU,CAAEtc,UAAW8Z,EAAS1R,IAAK9L,KAAKwe,QAAStmB,MAAK6Z,EAAA,GAAO7Z,KACnE8mB,KAQlBuB,mBACHvgB,KAAK+e,oBAGDA,oBACJ,MAAMjO,EAAO9Q,KAAKwe,QAAQ9X,QACb,OAAToK,GAAiBA,EAAK0P,mBAAqB1P,EAAK0P,kBAAkBC,aAAe,GACjFzgB,KAAKqB,SAAS,CAAEjJ,OAAQ0Y,EAAK0P,kBAAkBC,eAI/CH,oBAAoBF,GACxB,OAAOpgB,KAAKme,6BAA6BiC,IAAW,WAGhDzB,YAAY7N,EAAmB4P,GACnC1gB,KAAKqB,SAAS,CAAEjJ,OAAQ0Y,EAAK2P,eAEzBzgB,KAAKS,MAAMkf,YACX3f,KAAKS,MAAMkf,WAAW7O,EAAM4P,GAI5B9B,QAAQ9N,GACZ9Q,KAAKqB,SAAS,CAAEjJ,OAAQ0Y,EAAK2P,eAEzBzgB,KAAKS,MAAMof,QACX7f,KAAKS,MAAMof,OAAO/O,GAIlBgO,WAAWhO,GACf9Q,KAAKqB,SAAS,CAAEjJ,OAAQ,IAEpB4H,KAAKS,MAAMqf,WACX9f,KAAKS,MAAMqf,UAAUhP,GAkBrB+N,UAAU/N,GACd9Q,KAAKqB,SAAS,CAAEjJ,OAAQ,OACxB4H,KAAKye,qBAAqB3N,GAEtB9Q,KAAKS,MAAMsf,UACX/f,KAAKS,MAAMsf,SAASjP,IAtLdoN,EAAAzT,aAAwC,CAClDE,QAAQ,EACRlL,IAAK,MACLggB,QAASU,IAAmBjC,W,0OCfrB,MAAMlX,UAAe1G,gBAQhCE,YAAYC,GACRC,MAAMD,GA0CO,KAAA8C,QAAW5D,IACpBK,KAAKS,MAAMqc,SACXnd,EAAEod,iBAKF/c,KAAKS,MAAM8C,SACXvD,KAAKS,MAAM8C,QAAQ5D,IAjDvBK,KAAKS,MAAQA,EACbT,KAAKuD,QAAUvD,KAAKuD,QAAQsH,KAAK7K,MAG9BgJ,SACH,MAAAkR,EAAoGla,KAAKS,OAAnG,OAAEgQ,EAAM,MAAEkQ,EAAK,UAAEjd,EAAS,UAAEsZ,EAAS,MAAE4D,EAAK,QAAEC,EAAO,KAAE7nB,EAAI,IAAEyG,EAAG,SAAEwH,GAAyBiT,EAAZsB,EAAUzB,YAAAG,EAAAF,GACzFwD,EAAUC,YACZC,IACIha,EACA,UACAmd,GAAWD,EACL,eAAeA,EACfA,IAAqB,IAAZC,EACT,OAAOD,OACGliB,IAAVkiB,IAAmC,IAAZC,EACvB,cACA,KACN7nB,GAAO,OAAOA,IACd2nB,GAAQ,YACR,CAAElQ,SAAQqM,SAAU9c,KAAKS,MAAMqc,WAEnCE,GAGJ,IAAIpD,EAAMna,GAAO,SAMjB,OAJI+b,EAAWsF,MAAgB,WAARlH,IACnBA,EAAM,KAINtZ,gBAACsZ,EAAG7a,OAAAuM,OAAA,CACAvP,KAAc,WAAR6d,GAAoB4B,EAAWjY,QAAU,cAAW7E,GACtD8c,EAAU,CACd9X,UAAW8Z,EACX1R,IAAK7E,EACL1D,QAASvD,KAAKuD,YA7CZyD,EAAAyD,aAAsC,CAChDhL,IAAK,SACLohB,SAAS,I,kCCjBjB,ojI,kCCAA,6DAqDeE,IA7BeC,IAC1B,MAAM,mBAAEC,EAAkB,cAAEC,EAAa,UAAExd,EAAS,KAAEyd,EAAI,UAAEC,EAAS,aAAEC,GAAiBL,EAElFM,EAAahhB,cAAkB,KACjC+gB,GAAa,IACd,CAACA,IAEJ,OAAKH,GAAkBC,EAKnB7gB,gBAACihB,IAAK,CAAC/V,OAAQ8V,EAAY3W,OAAQyW,EAAWI,SAAUF,EAAY5d,UAAcA,EAAH,YAC3EpD,gBAACmhB,IAAW,CAACjW,OAAQ8V,EAAY5d,UAAcA,EAAH,qBAC5CpD,gBAACohB,IAAS,CAAChe,UAAWC,IAAcD,EAAH,iBAA8B,GAAGA,oBAA4Bud,MAC1F3gB,gBAAA,OAAKoD,UAAcA,EAAH,oBAChBpD,gBAAA,OAAKoD,UAAcA,EAAH,4BAAyCyd,GACzD7gB,gBAAC0G,SAAM,CACHtD,UAAcA,EAAH,mCACXH,QAAS+d,EACTpa,MAAOga,EAAcS,uBAEpBT,EAAcS,yBAdpB,O,qBChCf,IAAIC,EAAU,EAAQ,QAyBtBrqB,EAAOC,QAZP,SAAuB2e,GACrB,IAAIvW,EAASgiB,EAAQzL,GAAM,SAASrW,GAIlC,OAfmB,MAYf+hB,EAAM7oB,MACR6oB,EAAMrI,QAED1Z,KAGL+hB,EAAQjiB,EAAOiiB,MACnB,OAAOjiB,I,kCCjBF,IAAKgJ,EALZ,kCAKA,SAAYA,GACRA,IAAA,eACAA,IAAA,aACAA,IAAA,kBACAA,IAAA,kBACAA,IAAA,gBACAA,IAAA,cACAA,IAAA,kBACAA,IAAA,wBACAA,IAAA,oBACAA,IAAA,kBACAA,IAAA,oBACAA,IAAA,wBACAA,IAAA,cACAA,IAAA,gBACAA,IAAA,0BACAA,IAAA,sBACAA,IAAA,4BACAA,IAAA,0BACAA,IAAA,kBACAA,IAAA,oBACAA,IAAA,oBACAA,IAAA,oBACAA,IAAA,sBACAA,IAAA,uBACAA,IAAA,qBACAA,IAAA,qBACAA,IAAA,8BACAA,IAAA,gCACAA,IAAA,iCACAA,IAAA,gBACAA,IAAA,sBACAA,IAAA,sBACAA,IAAA,sBACAA,IAAA,sBACAA,IAAA,uBACAA,IAAA,uBACAA,IAAA,uBACAA,IAAA,uBACAA,IAAA,uBACAA,IAAA,uBACAA,IAAA,qCACAA,IAAA,6BACAA,IAAA,+BACAA,IAAA,2BACAA,IAAA,iCACAA,IAAA,2BACAA,IAAA,2BACAA,IAAA,2BACAA,IAAA,2BACAA,IAAA,2BACAA,IAAA,2BACAA,IAAA,2BACAA,IAAA,2BACAA,IAAA,2BACAA,IAAA,6BACAA,IAAA,6BACAA,IAAA,6BACAA,IAAA,iCACAA,IAAA,qCACAA,IAAA,qCACAA,IAAA,uCACAA,IAAA,yCACAA,IAAA,uBACAA,IAAA,6BACAA,IAAA,mBACAA,IAAA,qBACAA,IAAA,mBACAA,IAAA,mBACAA,IAAA,iCACAA,IAAA,mBACAA,IAAA,yBACAA,IAAA,yBACAA,IAAA,yBACAA,IAAA,yBACAA,IAAA,6CACAA,IAAA,2CACAA,IAAA,6CACAA,IAAA,+CACAA,IAAA,mCACAA,IAAA,uCACAA,IAAA,uCACAA,IAAA,yCACAA,IAAA,mCACAA,IAAA,iCACAA,IAAA,mDACAA,IAAA,qDACAA,IAAA,uDACAA,IAAA,2DACAA,IAAA,6DACAA,IAAA,2DACAA,IAAA,yDACAA,IAAA,6DACAA,IAAA,+DACAA,IAAA,6DACAA,IAAA,+BACAA,IAAA,2BACAA,IAAA,iCACAA,IAAA,mBAlGJ,CAAYA,MAAQ,M,qBCLpB,IAAIkZ,EAAY,EAAQ,QAiBxBvqB,EAAOC,QAPP,SAAoBqL,EAAK/C,GACvB,IAAIC,EAAO8C,EAAI5C,SACf,OAAO6hB,EAAUhiB,GACbC,EAAmB,iBAAPD,EAAkB,SAAW,QACzCC,EAAK8C,M,mBCMXtL,EAAOC,QAXP,SAAkBuqB,EAAOC,GAKvB,IAJA,IAAI9hB,GAAS,EACTzB,EAAkB,MAATsjB,EAAgB,EAAIA,EAAMtjB,OACnCmB,EAAS7H,MAAM0G,KAEVyB,EAAQzB,GACfmB,EAAOM,GAAS8hB,EAASD,EAAM7hB,GAAQA,EAAO6hB,GAEhD,OAAOniB,I,mBCLTrI,EAAOC,QAJP,SAAkBuhB,EAAQjZ,GACxB,OAAiB,MAAViZ,OAAiBra,EAAYqa,EAAOjZ,K,qBCT7C,IAIMmiB,EAJFC,EAAa,EAAQ,QAGrBC,GACEF,EAAM,SAASG,KAAKF,GAAcA,EAAWG,MAAQH,EAAWG,KAAKC,UAAY,KACvE,iBAAmBL,EAAO,GAc1C1qB,EAAOC,QAJP,SAAkB2e,GAChB,QAASgM,GAAeA,KAAchM,I,kCChBxC,uEAiBe,MAAMoM,UAAwBjiB,gBAKzCE,YAAYC,GACRC,MAAMD,GACNT,KAAKwiB,gBAAkBxiB,KAAKwiB,gBAAgB3X,KAAK7K,MACjD,MAAMyiB,EAAcziB,KAAKS,MAAMiiB,eAAe5iB,IACxCuiB,EAAOriB,KAAKS,MAAMkiB,gBAAgB9f,IAAI+f,GAAUA,EAAO9iB,KAC7DE,KAAKmB,MAAQ,CAAEmE,cAAe+c,EAAKQ,QAAQJ,IAGxCzZ,SACH,MAAM,UAAE8Z,EAAS,eAAEC,EAAc,WAAEC,EAAU,gBAAEL,EAAe,kBAAEM,GAAsBjjB,KAAKS,MAErFyiB,EAAkBxF,IAAW,wBAAyBqF,GACtDI,EAAqBzF,IAAW,iBAAkBuF,GAClD3d,EAAgBtF,KAAKojB,oBAE3B,OACI9iB,2BAAA,KACIA,gBAAA,SAAOoD,UAAWwf,EAAiBG,QAASL,GACvCF,GAELxiB,gBAAA,UAAQ0E,GAAIge,EAAYtf,UAAWyf,EAAoBjf,SAAUlE,KAAKwiB,iBACjEG,EAAgB9f,IAAI,CAAC+f,EAAQ1iB,KAC1B,MAAMojB,EAAWpjB,IAAUoF,EAC3B,OACIhF,gBAAA,UAAQoD,UAAU,yBAAyB5D,IAAK8iB,EAAO9iB,IAAKwjB,SAAUA,EAAQ,gBAAiBA,GAC1FV,EAAOtjB,WAS5B8jB,oBACJ,GAAIpjB,KAAKS,MAAM8iB,mBAAoB,CAC/B,IAAIje,GAAiB,EACrB,MAAMmd,EAAcziB,KAAKS,MAAMiiB,eAAe5iB,IAC9C,IAAK,IAAIuI,EAAI,EAAGA,EAAIrI,KAAKS,MAAMkiB,gBAAgBlkB,OAAQ4J,IACnD,GAAIrI,KAAKS,MAAMkiB,gBAAgBta,GAAGvI,MAAQ2iB,EAAa,CACnDnd,EAAgB+C,EAChB,MAIR,OAAO/C,EAGX,OAAOtF,KAAKmB,MAAMmE,cAGdkd,gBAAgBjqB,GACpB,MAAM,gBAAEoqB,EAAe,eAAEa,GAAmBxjB,KAAKS,MAC3CP,EAAQ3H,EAAME,cAAcgrB,gBAAgB,GAAGvjB,MAC/CwiB,EAAiBC,EAAgBziB,GACvCF,KAAKqB,SAAS,CAAEiE,cAAepF,IAC/BsjB,EAAe,CAAEd,oBA5DPH,EAAA9X,aAA+C,CACzDiZ,YAAa,S,mBCLrBnsB,EAAOC,QAPP,SAAmB8H,GACjB,IAAIvD,SAAcuD,EAClB,MAAgB,UAARvD,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVuD,EACU,OAAVA,I,qBCXP,IAAI8a,EAAe,EAAQ,QASvBnb,EAHcF,OAAOC,UAGQC,eAoBjC1H,EAAOC,QATP,SAAiBsI,GACf,IAAIC,EAAOC,KAAKC,SAChB,GAAIma,EAAc,CAChB,IAAIxa,EAASG,EAAKD,GAClB,MArBiB,8BAqBVF,OAA4BlB,EAAYkB,EAEjD,OAAOX,EAAeO,KAAKO,EAAMD,GAAOC,EAAKD,QAAOpB,I,qBC1BtD,IAAIG,EAAS,EAAQ,QACjB8kB,EAAW,EAAQ,QACnBhL,EAAU,EAAQ,QAClBC,EAAW,EAAQ,QAMnBgL,EAAc/kB,EAASA,EAAOG,eAAYN,EAC1CmlB,EAAiBD,EAAcA,EAAYzkB,cAAWT,EA0B1DnH,EAAOC,QAhBP,SAAS8gB,EAAahZ,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIqZ,EAAQrZ,GAEV,OAAOqkB,EAASrkB,EAAOgZ,GAAgB,GAEzC,GAAIM,EAAStZ,GACX,OAAOukB,EAAiBA,EAAerkB,KAAKF,GAAS,GAEvD,IAAIM,EAAUN,EAAQ,GACtB,MAAkB,KAAVM,GAAkB,EAAIN,IA3BjB,IA2BwC,KAAOM,I,kCChC9D,IAAIkkB,EAAI,EAAQ,QACZC,EAAa,EAAQ,QAKzBD,EAAE,CAAE/iB,OAAQ,SAAUijB,MAAM,EAAMC,OAAQ9oB,OAAO4oB,aAAeA,GAAc,CAC5EA,WAAYA,K,qBCRd,IAAIG,EAAiB,EAAQ,QACzBC,EAAkB,EAAQ,QAC1BC,EAAe,EAAQ,QACvBC,EAAe,EAAQ,QACvBC,EAAe,EAAQ,QAS3B,SAASrG,EAAU1E,GACjB,IAAIrZ,GAAS,EACTzB,EAAoB,MAAX8a,EAAkB,EAAIA,EAAQ9a,OAG3C,IADAuB,KAAKwZ,UACItZ,EAAQzB,GAAQ,CACvB,IAAIgb,EAAQF,EAAQrZ,GACpBF,KAAK0Z,IAAID,EAAM,GAAIA,EAAM,KAK7BwE,EAAUjf,UAAUwa,MAAQ0K,EAC5BjG,EAAUjf,UAAkB,OAAImlB,EAChClG,EAAUjf,UAAU2a,IAAMyK,EAC1BnG,EAAUjf,UAAUga,IAAMqL,EAC1BpG,EAAUjf,UAAU0a,IAAM4K,EAE1B/sB,EAAOC,QAAUymB,G,8JCRV,SAASsG,EACZC,EACArjB,EACAsjB,EACA9b,GAGA,MAAM+b,EAA+BvjB,EACrC,GAAIwH,IAAYC,IAAS+b,KAAM,CAE3B,MAAMC,EAAczjB,EAAM0jB,eAA0BC,MAAM,GAAI,GAC1D9Z,mBAAiB+Z,cAAcP,IAC/BE,EAAYM,cAAgBjB,WAAWS,GACvCS,EAAqB,IAAKR,EAAQC,EAAavjB,EAAOwH,KAGtD+b,EAAYM,cAAgBjB,WAAWa,GACvCK,EAAqBT,EAAaC,EAAQC,EAAavjB,EAAOwH,SAE/D,GAAIqC,mBAAiBC,mBAAmBuZ,IAAuC,IAAvBA,EAAY/lB,OAEvEimB,EAAYM,cAAgBjB,WAAWS,GACZ,IAAvBA,EAAY/lB,OACZwmB,EAAqBT,EAAaC,EAAQC,EAAavjB,EAAOwH,GAG9Dsc,EAAqB,IAAKR,EAAQC,EAAavjB,EAAOwH,QAGvD,GAAmD,MAA/C6b,EAAYnM,OAAOmM,EAAY/lB,OAAS,IAAe0C,EAAM0jB,eAA0BlI,MAAM,KAAKle,OAAS,GAAM,EAAG,CAAC,IAADymB,EAG3H,GAAwB,QAApBA,EAAA/jB,EAAM0jB,sBAAc,IAAAK,GAApBA,EAAsBngB,SAAS,MAAuD,MAA/Cyf,EAAYnM,OAAOmM,EAAY/lB,OAAS,GAC/E,OAAO0C,EAEX,IAAIgkB,EAAeX,EAAY9R,QAAQ,UAAW0S,SAClDD,GAAe,IACfT,EAAYM,cAAgBjB,WAAWoB,GACvCF,EAAqBT,EAAaC,EAAQC,EAAavjB,EAAOwH,QAC3D,GAAmD,MAA/C6b,EAAYnM,OAAOmM,EAAY/lB,OAAS,IAAe0C,EAAM0jB,eAA0BlI,MAAM,KAAKle,OAAS,GAAM,EAAG,CAAC,IAAD4mB,EAE3H,GAAwB,QAApBA,EAAAlkB,EAAM0jB,sBAAc,IAAAQ,GAApBA,EAAsBtgB,SAAS,MAAuD,MAA/Cyf,EAAYnM,OAAOmM,EAAY/lB,OAAS,GAC/E,OAAO0C,EAEXujB,EAAYM,cAAgBjB,WAAWS,GACvCS,EAAqBT,EAAaC,EAAQC,EAAavjB,EAAOwH,QAC3D,GAAKxH,EAAM0jB,eAA0B9f,SAAS,MAAS5D,EAAM0jB,eAA0BlI,MAAM,KAAKle,OAAS,GAAM,EAAG,CAEvH,MAAM6mB,EAAYd,EAAYnM,OAAOmM,EAAY/lB,OAAS,GAC1DimB,EAAYM,cAAgBjB,WAAY5iB,EAAM0jB,eAA4BS,GAC1EL,EAAsB9jB,EAAM0jB,eAA4BS,EAAWb,EAAQC,EAAavjB,EAAOwH,OAC5F,CAEH,MAAMwc,EAAeX,EAAY9R,QAAQ,UAAW0S,SAASZ,EAAY7H,MAAM,KAAKle,OAAS,GAAM,GACnGimB,EAAYM,cAAgBjB,WAAWoB,GACvCF,EAAqBT,EAAaC,EAAQC,EAAavjB,EAAOwH,GAGlE,OAAO+b,EAYX,MAAMO,EAAuBA,CACzBM,EACAd,EACAC,EACAvjB,EACAwH,KAEA,IAAI6c,EAAsBJ,QACtBK,EAAkBtkB,EAAM6jB,cAAyB7lB,WACrD,MAAMumB,EAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAG9D,GAAI1a,mBAAiBC,mBAAmBsa,IAA6C,IAA1BA,EAAe9mB,OAAc,CACpF,MAAMknB,EAAoBJ,EAAelN,OAAOkN,EAAe9mB,OAAS,GACxE,IAAIinB,EAAQ3gB,SAAS4gB,GAGjB,OAFAjB,EAAYG,eAAiBU,EAIjCC,EAAc,IAAII,KAAKC,aAAapB,GAAQphB,OAAOlI,OAAOoqB,IAC1Db,EAAYoB,iBAAmBN,MAC5B,CACH,MAAMG,EAAoBJ,EAAelN,OAAOkN,EAAe9mB,OAAS,GAG9B,IAADsnB,EACIC,EAAAC,EAD7C,GAAIP,EAAQ3gB,SAAS4gB,GACjB,GAAwB,QAAxBI,EAAI5kB,EAAM0jB,sBAAc,IAAAkB,GAApBA,EAAsBhhB,SAAS,MACP,QAApBihB,EAAA7kB,EAAM0jB,sBAAc,IAAAmB,OAAA,EAApBA,EAAsBE,WAA8B,QAApBD,EAAA9kB,EAAM0jB,sBAAc,IAAAoB,OAAA,EAApBA,EAAsBpD,QAAQ,MAAO,GAAGpkB,SAAU,IAClFgnB,EAASA,EAAOX,MAAM,GAAI,GAC1BJ,EAAYG,eAAiBY,EAASE,EACtCH,EAAc,IAAII,KAAKC,aAAapB,GAAQphB,OAAOlI,OAAOsqB,EAASE,IACnEjB,EAAYoB,iBAAmBN,QAGnCd,EAAYG,eAAiBY,EAC7BD,EAAc,IAAII,KAAKC,aAAapB,GAAQphB,OAAOlI,OAAOsqB,IAC1Df,EAAYoB,iBAAmBN,OAEhC,GAA0B,MAAtBG,GAAuE,IAA1CF,EAAO/S,QAAQ,QAAS0S,SAAO3mB,QAAgBgnB,EAAO9I,MAAM,KAAKle,OAAS,GAAM,EAAG,CAEvH,MAAM0nB,EAAeV,EAASE,EAC9BjB,EAAYG,eAAiBsB,EAC7BzB,EAAYoB,iBAAmBK,OACxBxd,IAAYC,IAAS+b,OAC5BD,EAAYG,eAAiBY,EAC7BD,EAAc,IAAII,KAAKC,aAAapB,GAAQphB,OAAOlI,OAAOsqB,IAC1Df,EAAYoB,iBAAmBN,M,qBC3I3C,IAAIY,EAAa,EAAQ,QAezB7uB,EAAOC,QAJP,SAAqBsI,GACnB,OAAOsmB,EAAWpmB,KAAMF,GAAKkZ,IAAIlZ,K,qBCZnC,IAAIsa,EAAe,EAAQ,QAsB3B7iB,EAAOC,QAPP,SAAiBsI,EAAKR,GACpB,IAAIS,EAAOC,KAAKC,SAGhB,OAFAD,KAAKhH,MAAQgH,KAAKgZ,IAAIlZ,GAAO,EAAI,EACjCC,EAAKD,GAAQsa,QAA0B1b,IAAVY,EAfV,4BAekDA,EAC9DU,O,qBCnBT,IAAIomB,EAAa,EAAQ,QAiBzB7uB,EAAOC,QANP,SAAwBsI,GACtB,IAAIF,EAASwmB,EAAWpmB,KAAMF,GAAa,OAAEA,GAE7C,OADAE,KAAKhH,MAAQ4G,EAAS,EAAI,EACnBA,I,6JCAIymB,EAAiC/lB,aAC1C,CAAAiY,EAA+EzM,KAAO,IAArF,UAAEpI,EAAY,GAAE,GAAEsB,EAAK,GAAIvF,IAAKma,EAAM,MAAK,YAAE0M,GAA+B/N,EAAfuB,EAAaC,YAAAxB,EAAAyB,GACvE,OAAO1Z,gBAACsZ,EAAG7a,OAAAuM,OAAA,CAAC5H,UAAWA,EAAWsB,GAAIA,GAAQshB,EAAYC,uBAAuBD,GAAkBxM,EAAa,CAAEhO,IAAKA,Q,kCCTxH,IAAKyC,EAPZ,kCAOA,SAAYA,GACRA,IAAA,qBACAA,IAAA,uBAFJ,CAAYA,MAAW,M,qBCPvB,IAAI1O,EAAe,EAAQ,QAMvB2mB,EAHazuB,MAAMiH,UAGCwnB,OA4BxBjvB,EAAOC,QAjBP,SAAyBsI,GACvB,IAAIC,EAAOC,KAAKC,SACZC,EAAQL,EAAaE,EAAMD,GAE/B,QAAII,EAAQ,KAIRA,GADYH,EAAKtB,OAAS,EAE5BsB,EAAK0mB,MAELD,EAAOhnB,KAAKO,EAAMG,EAAO,KAEzBF,KAAKhH,MACA,K,6HCZM,MAAM0tB,UAAiBpmB,gBAOlCE,YAAYC,GAAqB,IAAAkmB,EAC7BjmB,MAAMD,GAHO,KAAAmmB,SAA8CtmB,cA4D9C,KAAAumB,aAAe,KAC5B,MAAMC,OAA8BpoB,IAAnBsB,KAAKS,MAAM9G,IAAoB,EAAIqG,KAAKS,MAAM9G,IAC3D0iB,MAAMrc,KAAKmB,MAAM4lB,eAAiB/mB,KAAKmB,MAAM4lB,aAAeD,EAC5D9mB,KAAKqB,SAAS,CAAE0lB,aAAcD,GAAY,KACtC9mB,KAAKS,MAAMyD,UAAYlE,KAAKS,MAAMyD,SAASlE,KAAKmB,MAAM4lB,gBAG1D/mB,KAAKS,MAAMyD,UAAYlE,KAAKS,MAAMyD,SAASlE,KAAKmB,MAAM4lB,eA/D1D/mB,KAAKmB,MAAQ,CAAE4lB,aAAgC,QAApBJ,EAAElmB,EAAMumB,oBAAY,IAAAL,IAAI,GACnD3mB,KAAKinB,cAAgBjnB,KAAKinB,cAAcpc,KAAK7K,MAG1CgJ,SACH,MAAMke,EAAelnB,KAAKmB,MAAM4lB,aAEhC,OACIzmB,gBAAA,SACIvE,KAAK,SACLpC,IAAKqG,KAAKS,MAAM9G,IAChB+J,UAAU,qBACVyjB,QAAQ,SACR7nB,MAAOU,KAAKmB,MAAM4lB,aAClB7iB,SAAUlE,KAAKinB,cACfva,OAAQ1M,KAAK6mB,aAAY,YACf,SAAQ,aACN,GAAG7mB,KAAKS,MAAM2mB,uBAC1BvjB,KAAK,aAAY,gBACF7D,KAAKS,MAAM9G,IAAG,gBACdqG,KAAKS,MAAM7G,IAAG,gBACdstB,EACfliB,GAAIhF,KAAKS,MAAMuE,GACf8G,IAAK9L,KAAK4mB,WAKdK,cAActnB,GAClB,MAAMunB,EAAe/rB,OAAOma,SAAS3V,EAAEoB,OAAOzB,MAAO,IAC/CwnB,OAA8BpoB,IAAnBsB,KAAKS,MAAM9G,IAAoB,EAAIqG,KAAKS,MAAM9G,IACzD0tB,EACFrnB,KAAK4mB,UAAY5mB,KAAK4mB,SAASlgB,SAAW1G,KAAK4mB,SAASlgB,mBAAmB4gB,kBAAoBtnB,KAAK4mB,SAASlgB,QAE7GwgB,EAAelnB,KAAKS,MAAM7G,IAC1BoG,KAAKqB,SAAS,CAAE0lB,aAAc/mB,KAAKS,MAAM7G,KAAO,KAC5C2tB,IAAS,KACLvnB,KAAKS,MAAMyD,UAAYlE,KAAKS,MAAMyD,SAASlE,KAAKmB,MAAM4lB,eACvD,IAFHQ,KAKJvnB,KAAKqB,SAAS,CAAE0lB,aAAcG,GAAgB,KAC1CK,IAAS,KACAlL,MAAMrc,KAAKmB,MAAM4lB,eAAmB/mB,KAAKmB,MAAM4lB,aAAeD,IAC/D9mB,KAAKS,MAAMyD,UAAYlE,KAAKS,MAAMyD,SAASlE,KAAKmB,MAAM4lB,cAElDM,IACAA,EAAa9qB,aAAa,gBAAiB2qB,EAAa/nB,YACxDkoB,EAAa9qB,aAAa,QAAS2qB,EAAa/nB,eAGzD,IATHooB,MAlDEb,EAAAjc,aAAwC,CAClD9Q,IAAK,I,oCCrBb,iF,4FCkCY6tB,E,2FAAZ,SAAYA,GACRA,IAAA,eACAA,IAAA,qBAFJ,CAAYA,MAA6B,KAWzC,MAAMC,EAA4CA,CAC9CC,EACA3lB,KAEA,OAAQ2lB,GACJ,KAAKF,EAA8BG,KAC/B,OAAO5lB,EAAU6lB,wBACrB,KAAKJ,EAA8BK,QAC/B,OAAO9lB,EAAU+lB,wBACrB,QACI,MAAM,IAAIC,MAAM,uFAUtBC,EAAiBA,CACnBC,EACAP,IACC,KACDO,EAAkBP,IAgChBQ,EAAuBA,CAACC,EAAgEC,IAA4B,KACtHD,GAAiBC,IAQRC,EAA+E5nB,IACxF,MAAM6nB,EAAmBhoB,IAAMioB,aACxBC,EAAgBC,GAAqBnoB,IAAMooB,UAAS,IAEpDhB,EAAWiB,GAAgBroB,IAAMooB,SAASjoB,EAAMmoB,cAMjDC,EAAgBC,IAClBH,EAAaG,GACbL,GAAkB,GAClBhoB,EAAMsoB,eAAeD,IAGzB,OACIxoB,IAAAhE,cAAA,OAAKoH,UAAWjD,EAAMiD,WAClBpD,IAAAhE,cAAC0K,IAAM,CACHtD,UAAcjD,EAAMiD,UAAT,wBACXuD,SAAUqhB,EAAgB,gBACXE,EAAc,mBACX/nB,EAAMiD,UACxBH,QAAS2kB,EAAqBO,EAAmBD,IAEhDf,EAA0CC,EAAWjnB,EAAMsB,YAEhEzB,IAAAhE,cAAC0sB,UAAO,CACJhkB,GAAIvE,EAAMiD,UACVmJ,UAAU,aACVlC,OAAQ6d,EACRznB,OAAQunB,EACR9c,OAAQ0c,EAAqBO,EAAmBD,IAE/CS,iBAAeC,cAA6C1B,GAA+B3kB,IAAI1B,GAhEpFgoB,EACxBzB,EACA3lB,EACA2B,EACAukB,KAEA,MAAMmB,EAA4B5B,EAA8BE,GAEhE,OACIpnB,IAAAhE,cAAA,UAAQoH,UAAW,GAAGA,YAAoB0lB,IAA6B7lB,QAASykB,EAAeC,EAAmBP,IAC7GD,EAA0CC,EAAW3lB,KAuDvConB,CAAoBhoB,EAAOV,EAAMsB,UAAWtB,EAAMiD,UAAWmlB,OChGjF,MAAMQ,UAAoB/oB,gBAK7BE,YAAmBC,GACfC,MAAMD,GAsEO,KAAA6oB,kBAAoB,KACjCtpB,KAAKqB,SAAS,CAAEkoB,gBAAgB,KAMnB,KAAAC,iBAAmB,KAChCxpB,KAAKqB,SAAS,CAAEkoB,gBAAgB,KAOnB,KAAAE,6BAAgCC,IAGrC,IAADC,EAFHD,IAAalC,EAA8BG,KAC3C3nB,KAAK4pB,cAAc5pB,KAAKS,MAAMopB,eAE9B7pB,KAAKqB,SAAS,CAAE6lB,kBAAcxoB,IACR,QAAtBirB,EAAA3pB,KAAK8pB,UAAUpjB,eAAO,IAAAijB,GAAtBA,EAAwBI,UAQf,KAAAH,cAAiBI,IAC9BhqB,KAAKqB,SAAS,CAAE6lB,aAAc8C,IAE1BhqB,KAAKS,MAAMwpB,cACXjqB,KAAKS,MAAMwpB,aAAaD,IAQf,KAAA/C,cAAiB1uB,IAC9B,IAAI2uB,EAAe/rB,OAAO4oB,WAAWxrB,EAAMwI,OAAOzB,OAE9CnE,OAAOkhB,MAAM6K,GACblnB,KAAKqB,SAAS,CAAE6lB,kBAAcxoB,KAIlCwoB,GAAgBA,EAAagD,QAAQb,EAAYc,aAE5CzoB,mBAAiB0oB,kBAAkBpqB,KAAKS,MAAM4pB,eAAiBnD,EAAelnB,KAAKS,MAAM4pB,aAC1FrqB,KAAK4pB,cAAc5pB,KAAKS,MAAM4pB,eACtB3oB,mBAAiB0oB,kBAAkBpqB,KAAKS,MAAMopB,eAAiB3C,EAAelnB,KAAKS,MAAMopB,aACjG7pB,KAAK4pB,cAAc5pB,KAAKS,MAAMopB,cAE9B7pB,KAAK4pB,cAAc1C,KA3HvBlnB,KAAK8pB,UAAYxpB,cAEjB,IAAIgqB,EAAe7pB,EAAM8pB,eAEpB7oB,mBAAiB0oB,kBAAkBpqB,KAAKS,MAAM4pB,eAAiBC,EAAetqB,KAAKS,MAAM4pB,aAC1FC,EAAetqB,KAAKS,MAAM4pB,cAClB3oB,mBAAiB0oB,kBAAkBpqB,KAAKS,MAAMopB,eAAiBS,EAAetqB,KAAKS,MAAMopB,eACjGS,EAAetqB,KAAKS,MAAMopB,cAG9B7pB,KAAKmB,MAAQ,CACT+lB,aAAcoD,EACdf,gBAAgB,GAIjBvgB,SAAM,IAAAwhB,EAAAC,EAAAC,EACT,MAEMC,GAAoBjpB,mBAAiB0oB,kBAAkBpqB,KAAKS,MAAMopB,cAExE,IAAIe,EAAOpD,EAA8BK,QAEpCnmB,mBAAiB0oB,kBAAkBpqB,KAAKS,MAAMopB,eAAiB7pB,KAAKmB,MAAM+lB,eAAiBlnB,KAAKS,MAAMopB,eACvGe,EAAOpD,EAA8BG,MAGzC,MAAMkD,EAAyE,QAA3DL,EAA0B,QAA1BC,EAAGzqB,KAAKmB,MAAM+lB,oBAAY,IAAAuD,OAAA,EAAvBA,EAAyBP,QAAQb,EAAYc,mBAAW,IAAAK,IAAI,GAC7EM,EAAqC,QAA1BJ,EAAG1qB,KAAKmB,MAAM+lB,oBAAY,IAAAwD,IAAI,GAE/C,OACIpqB,gBAAA,OAAKoD,UAAWC,IAAW3D,KAAKS,MAAMiD,UAdf,qBAenBpD,gBAAA,SACIoD,UAAWC,IAAc3D,KAAKS,MAAMiD,UAAd,UAAkC,2BACxD3H,KAAK,SACLpC,IAAKqG,KAAKS,MAAM4pB,aAChBzwB,IAAKoG,KAAKS,MAAMopB,aAChB1C,QAAQ,yBACR7nB,MAAOU,KAAKmB,MAAMooB,eAAiBuB,EAAcD,EACjD3mB,SAAUlE,KAAKinB,cAAa,YAClB,SAAQ,aACN,GAAGjnB,KAAKS,MAAMsB,UAAUgpB,0BACpClnB,KAAK,aAAY,gBACF7D,KAAKS,MAAM4pB,aAAY,gBACvBrqB,KAAKS,MAAMopB,aAAY,gBACvB7pB,KAAKmB,MAAM+lB,aAC1B1a,QAASxM,KAAKspB,kBACd5c,OAAQ1M,KAAKwpB,iBACb1d,IAAK9L,KAAK8pB,YAEba,GACGrqB,gBAAA,OAAKoD,UAAWC,IAAc3D,KAAKS,MAAMiD,UAAd,YAAoC,8BAC3DpD,gBAAC+nB,EAAiC,CAC9BvoB,IAAK8qB,EACLlnB,UAAc1D,KAAKS,MAAMiD,UAAd,yCACXklB,aAAcgC,EACd7oB,UAAW/B,KAAKS,MAAMsB,UACtBgnB,eAAgB/oB,KAAKypB,kCAhErBJ,EAAAc,WAAa,G,iPCnC1B,MAAMa,UAAuB1qB,gBAQxCE,YAAYC,GACRC,MAAMD,GACNT,KAAKirB,QAAUC,YAAiB,QAASlrB,KAAKS,MAAM0qB,iBAAmB,IAGpEniB,SAEH,IAAAkR,EAAoGla,KAAKS,OAArG,UAAEiD,EAAS,UAAEsZ,EAAS,KAAEoO,EAAI,SAAEC,EAAU5rB,IAAKma,EAAG,SAAEoF,EAAQ,iBAAEmM,GAA4BjR,EAAPzZ,EAAKsZ,YAAAG,EAAAF,GACtFsR,EAAgBtM,EACpB,MAAMuM,EAAwB9N,YAAgBC,IAAWha,EAAW,iBAAkBsZ,GAEtF,IAAIwO,EACAH,GACAG,EAAe,IACfF,EAAQ,YACDF,IACPI,EAAe,IACfF,EAAQ,QAGRtM,GAAYjnB,MAAM4gB,QAAQqG,IAAiC,IAApBA,EAASvgB,SAChDugB,EAAW,MAEVve,EAAMqgB,MAAgB,MAARlH,IACfA,EAAM,SAGNyR,GAAYD,KACZpM,EAAW,CAAC1e,gBAAA,QAAMR,IAAI,SAASkf,GAAYwM,KAG/CxrB,KAAKirB,QAAQQ,cAAcH,MAAQA,EACnC,MAAMI,EAAYC,YAAuBR,EAAkBnrB,KAAKirB,SAEhE,OACI3qB,gBAACsZ,EAAG7a,OAAAuM,OAAA,GAAK7K,EAAK,CAAEiD,UAAW6nB,GAA2BG,GACjD1M,IA3CCgM,EAAAvgB,aAA8C,CACxDhL,IAAK,IACLoE,KAAM,S,uBClBd,IAAIuW,EAAe,EAAQ,QAMvBnb,EAHcF,OAAOC,UAGQC,eAgBjC1H,EAAOC,QALP,SAAiBsI,GACf,IAAIC,EAAOC,KAAKC,SAChB,OAAOma,OAA8B1b,IAAdqB,EAAKD,GAAsBb,EAAeO,KAAKO,EAAMD,K,uBCnB9E,IAAIsa,EAAe,EAAQ,QAc3B7iB,EAAOC,QALP,WACEwI,KAAKC,SAAWma,EAAeA,EAAa,MAAQ,GACpDpa,KAAKhH,KAAO,I,qBCXd,IAAI4yB,EAAW,EAAQ,QACnB9V,EAAW,EAAQ,QACnB8C,EAAW,EAAQ,QAMnBiT,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAe1W,SA8CnB/d,EAAOC,QArBP,SAAkB8H,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIsZ,EAAStZ,GACX,OA1CM,IA4CR,GAAIwW,EAASxW,GAAQ,CACnB,IAAI2sB,EAAgC,mBAAjB3sB,EAAM4sB,QAAwB5sB,EAAM4sB,UAAY5sB,EACnEA,EAAQwW,EAASmW,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAAT3sB,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQssB,EAAStsB,GACjB,IAAI6sB,EAAWL,EAAW1T,KAAK9Y,GAC/B,OAAQ6sB,GAAYJ,EAAU3T,KAAK9Y,GAC/B0sB,EAAa1sB,EAAMwlB,MAAM,GAAIqH,EAAW,EAAI,GAC3CN,EAAWzT,KAAK9Y,GAvDb,KAuD6BA,I,kCC5DvC,4FAiBO,MAAM8sB,EAA4C3rB,IACrD,MAAM7I,EACF0I,IAAAhE,cAACyK,OAAI,CAACtH,IAAKiiB,YAAWhe,UAAU,2BAC3BjD,EAAM4rB,iBAITC,EACFhsB,IAAAhE,cAACilB,QAAK,CACFgL,WAAS,EACTC,gBAAgB,aAChB7hB,OAAQlK,EAAMgsB,YACdjhB,OAAQ/K,EAAMisB,SACdhpB,UAAWga,IAAW,qBAAsBjd,EAAMid,YAClDiP,OAAQ,OAIVC,EAActsB,IAAAhE,cAACmlB,cAAW,CAACjW,OAAQ/K,EAAMisB,WAE/C,OAAOpsB,IAAMusB,aAAaP,EAAa,GAAIM,EAAah1B,K,mBCP5DL,EAAOC,QALP,SAAkB8H,GAChB,IAAIvD,SAAcuD,EAClB,OAAgB,MAATA,IAA0B,UAARvD,GAA4B,YAARA,K,qBC3B/C,IAAI+wB,EAAW,EAAQ,QACnBC,EAAQ,EAAQ,QAsBpBx1B,EAAOC,QAZP,SAAiBuhB,EAAQiU,GAMvB,IAHA,IAAI9sB,EAAQ,EACRzB,GAHJuuB,EAAOF,EAASE,EAAMjU,IAGJta,OAED,MAAVsa,GAAkB7Y,EAAQzB,GAC/Bsa,EAASA,EAAOgU,EAAMC,EAAK9sB,OAE7B,OAAQA,GAASA,GAASzB,EAAUsa,OAASra,I,kOCJhC,MAAMuuB,UAAgB3sB,gBAGjCE,YAAYC,GACRC,MAAMD,GACNT,KAAKirB,QAAUC,2BAAiB,QAASlrB,KAAKS,MAAM0qB,iBAAmBnrB,KAAKS,MAAMysB,gBAG/ElkB,SACH,MAAAkR,EAA8Gla,KAAKS,OAA7G,UAAEiD,EAAS,WAAEypB,EAAU,KAAEn0B,EAAI,eAAEo0B,EAAc,SAAEtQ,EAAQ,iBAAEqO,EAAgB,eAAE+B,GAA0BhT,EAAPzZ,EAAKsZ,YAAAG,EAAAF,GACnGqT,EAAqB,UAATr0B,EAAmB,qBAAgC,UAATA,EAAmB,qBAAuB,GAChG0kB,EAAaha,EAAY,eAAe2pB,KAAa3pB,IAAc,eAAe2pB,EAClF3B,EAAYC,iCAAuBR,EAAmBnrB,KAAKirB,SAKjE,OAFAkC,EAAWzpB,UAAeypB,EAAWzpB,UAAd,4BAGnBpD,2BAAA,KACIA,gBAAA,SAAAvB,OAAAuM,OAAA,CAAQwR,SAAUA,EAAUpZ,UAAWga,GAAgBjd,EAAWirB,GAC9DprB,gBAAA,IAAAvB,OAAAuM,OAAA,GAAO6hB,EAAU,sBAEpBC,IAAmBtQ,GAChBxc,gBAACoK,sBAAmB,CAAC+R,QAAQ,cAAc1b,OAAQN,EAAMuE,IACpD,IACAvE,EAAM,mB,qBCzC/B,IAGIyhB,EAHO,EAAQ,QAGG,sBAEtB3qB,EAAOC,QAAU0qB,G,qBCLjB,IAAItJ,EAAW,EAAQ,QAoBvBrhB,EAAOC,QARP,SAAe8H,GACb,GAAoB,iBAATA,GAAqBsZ,EAAStZ,GACvC,OAAOA,EAET,IAAIM,EAAUN,EAAQ,GACtB,MAAkB,KAAVM,GAAkB,EAAIN,IAdjB,IAcwC,KAAOM,I,uBCjB9D,IAAI0tB,EAAkB,EAAQ,QAG1BC,EAAc,OAelBh2B,EAAOC,QANP,SAAkB2gB,GAChB,OAAOA,EACHA,EAAO2M,MAAM,EAAGwI,EAAgBnV,GAAU,GAAGzF,QAAQ6a,EAAa,IAClEpV,I,sBCfN,YACA,IAAIqV,EAA8B,iBAAVC,GAAsBA,GAAUA,EAAO1uB,SAAWA,QAAU0uB,EAEpFl2B,EAAOC,QAAUg2B,I,2CCHjB,IAAIlU,EAAW,EAAQ,QAiDvB,SAASsI,EAAQzL,EAAMuX,GACrB,GAAmB,mBAARvX,GAAmC,MAAZuX,GAAuC,mBAAZA,EAC3D,MAAM,IAAI3W,UAhDQ,uBAkDpB,IAAI4W,EAAW,WACb,IAAIzW,EAAO1Y,UACPsB,EAAM4tB,EAAWA,EAAStW,MAAMpX,KAAMkX,GAAQA,EAAK,GACnD2K,EAAQ8L,EAAS9L,MAErB,GAAIA,EAAM7I,IAAIlZ,GACZ,OAAO+hB,EAAMlI,IAAI7Z,GAEnB,IAAIF,EAASuW,EAAKiB,MAAMpX,KAAMkX,GAE9B,OADAyW,EAAS9L,MAAQA,EAAMnI,IAAI5Z,EAAKF,IAAWiiB,EACpCjiB,GAGT,OADA+tB,EAAS9L,MAAQ,IAAKD,EAAQgM,OAAStU,GAChCqU,EAIT/L,EAAQgM,MAAQtU,EAEhB/hB,EAAOC,QAAUoqB,G,oCCxEjB,+D,kCCAA,8DAaO,MAAMvT,EAAY5N,IAAuB,IAAAotB,EAC5C,MAAM,QAAEvf,EAAO,QAAEG,GAAYhO,EAC7B,OAAQ6N,GACJ,KAAKC,IAAYC,QACb,GAAIyE,IAASC,WAAa9Y,OAAO0zB,WAAY,CACzC,MAAMpf,EAAeD,aAAO,EAAPA,EAASC,aAC9B,GAAIA,EACA,OAAIA,EAAaC,IAAMvU,OAAO0zB,YAAcpf,EAAaC,GAAGC,EACjD,KACAF,EAAaG,IAAMzU,OAAO0zB,YAAcpf,EAAaG,GAAGD,EACxD,KACAF,EAAaI,IAAM1U,OAAO0zB,YAAcpf,EAAaI,GAAGF,EACxD,KACAF,EAAaK,IAAM3U,OAAO0zB,YAAcpf,EAAaK,GAAGH,EACxD,KAEJ,KAIf,MAAO,KACX,KAAKL,IAAYwf,SAEb,MAD2C,YAA1Btf,SAAe,QAARof,EAAPpf,EAASuf,cAAM,IAAAH,OAAA,EAAfA,EAAiBI,MAAoB,KAAO,KAEjE,QACI,MAAO,Q,6YCZnB,IAAqBC,EAAmBC,EAAxC,cAAiD7tB,gBAqC7CE,YAAYC,GAAgC,IAAAkmB,EAAAyH,EACxC1tB,MAAMD,GA7BO,KAAAmmB,SAA8CtmB,cA8H9C,KAAA2O,aAAe,KAE5B,MAUMb,EAAgBC,mBAAS,CAAEC,QAASC,cAAYC,QAASC,QAV/C,CACZC,aAAc,CACVC,GAAI,CAAEC,EAAG,KACTC,GAAI,CAAED,EAAG,KACTE,GAAI,CAAEF,EAAG,MACTG,GAAI,CAAEH,EAAG,MACTI,GAAI,CAAEJ,EAAG,UAKjB,MAAyB,OAAlBR,GAA4C,OAAlBA,GAmEpB,KAAAyY,aAAe,KAC5B,GAAI1rB,OAAOkhB,MAAMrc,KAAKmB,MAAM4lB,cACxB/mB,KAAKqB,SAAS,CAAE0lB,aAAc/mB,KAAKquB,gBAChC,CACH,MAAMnH,EAAextB,KAAKC,IAAIqG,KAAKS,MAAM7G,IAAKF,KAAKE,IAAIoG,KAAKquB,UAAWruB,KAAKmB,MAAM4lB,eAC9EG,IAAiBlnB,KAAKmB,MAAM4lB,cAC5B/mB,KAAKqB,SAAS,CAAE0lB,aAAcG,MAtLtClnB,KAAKmB,MAAQ,CAAE4lB,aAAgC,QAApBJ,EAAElmB,EAAMumB,oBAAY,IAAAL,IAAI,EAAG2H,YAAY,GAClEtuB,KAAKuuB,aAAevuB,KAAKuuB,aAAa1jB,KAAK7K,MAC3CA,KAAKwuB,aAAexuB,KAAKwuB,aAAa3jB,KAAK7K,MAC3CA,KAAKinB,cAAgBjnB,KAAKinB,cAAcpc,KAAK7K,MAC7CA,KAAKirB,QAAUC,YAAiB,QAASlrB,KAAKS,MAAM0qB,iBAAmB,IACvEnrB,KAAKquB,UAA0B,QAAjBD,EAAGpuB,KAAKS,MAAM9G,WAAG,IAAAy0B,IAAID,EAAoB1jB,aAAa9Q,IA/BjE,gCACH8G,EACAU,GAAgC,IAAAstB,EAEhC,MAAMrb,E,yWAASrB,CAAA,GAAQ5Q,GAYpB,IAADutB,GAVEjuB,EAAMqc,WAAa3b,EAAMmtB,aACzBlb,EAAUkb,YAAa,IAIrB7tB,EAAMqc,UAAY3b,EAAMmtB,YACO,QAAhCG,EAAChuB,EAAMkuB,iCAAyB,IAAAF,MACN,IAAvBttB,EAAM4lB,cACNtmB,EAAMumB,cACNvmB,EAAMumB,aAAemH,EAAoB1jB,aAAa9Q,OAE1DyZ,EAAU2T,aAAiC,QAArB2H,EAAGjuB,EAAMumB,oBAAY,IAAA0H,IAAI,EAC/Ctb,EAAUkb,YAAa,GAG3B,OAAOlb,EAaJpK,SAAM,IAAA4lB,EAAAC,EACT,MAAM,IAAEl1B,EAAG,IAAEC,GAAQoG,KAAKS,MAE1BT,KAAKquB,UAAY10B,UAAOw0B,EAAoB1jB,aAAa9Q,IACzD,MAAM2F,EAAQU,KAAKmB,MAAM4lB,aAEnB+H,EAAiC9uB,KAAKS,MAAMsuB,oBAAd,4BAC9BC,EAAgChvB,KAAKS,MAAMwuB,oBAAd,4BAC7BC,EAAoB5vB,GAASU,KAAKquB,WAAaruB,KAAKS,MAAM0uB,WAC1DC,EAAoB9vB,GAAS1F,GAAOoG,KAAKS,MAAM0uB,WAC/CjI,EAAe5nB,EACrBU,KAAKirB,QAAQQ,cAAcH,MAAQ+D,IAAkBC,kBACrD,MAAMC,EAAsB5D,YAAuB3rB,KAAKS,MAAM0qB,iBAAmBnrB,KAAKirB,SACtFjrB,KAAKirB,QAAQQ,cAAcH,MAAQ+D,IAAkBG,kBACrD,MAAMC,EAAsB9D,YAAuB3rB,KAAKS,MAAM0qB,iBAAmBnrB,KAAKirB,SAChFyE,EAAiB,GAAoC,QAApCd,EAAG5uB,KAAKS,MAAM2mB,8BAAsB,IAAAwH,IAAI,MAAMtvB,IAErE,IAAIqwB,EAAsB,GACtBT,EAEAS,EAAsB,WACf3vB,KAAKS,MAAMqc,WAElB6S,EAAsB,cAE1B,IAAIC,EAAsB,GAS1B,OARIR,EAEAQ,EAAsB,WACf5vB,KAAKS,MAAMqc,WAElB8S,EAAsB,cAItBtvB,2BAAA,KACIA,gBAAA,OAAKoD,UAAU,WAAWsB,GAAIhF,KAAKS,MAAMuE,IACrC1E,gBAAA,SAAAvB,OAAAuM,OAAA,CACIwR,SAAU9c,KAAKS,MAAMqc,UAAYoS,EACjChoB,MAAOgoB,EAAoB,GAAKlvB,KAAKS,MAAMovB,yBAC3CnsB,UAAW,gCAAgCisB,EAC3CpsB,QAASvD,KAAKwuB,aAAY,gBACXU,EAAiB,aACpB,GAAGlvB,KAAKS,MAAMovB,yBAC1BjP,MAAM,aACF2O,GAEJjvB,gBAAA,QAAMoD,UAAWorB,KAErBxuB,gBAAA,SACIvE,KAAK,SACL2H,UAAU,iBACVyjB,QAAQ,SACR7nB,MAAOA,EACP4E,SAAUlE,KAAKinB,cACfva,OAAQ1M,KAAK6mB,aAAY,YACf,SAAQ,aACN7mB,KAAKiP,eAAiBygB,EAAiB,IAAoC,QAApCb,EAAG7uB,KAAKS,MAAM2mB,8BAAsB,IAAAyH,IAAI,IAC3FhrB,KAAK,aAAY,gBACF7D,KAAKquB,UAAS,gBACdz0B,EAAG,gBACHstB,EACfpb,IAAK9L,KAAK4mB,SACV9J,SAAU9c,KAAKS,MAAMqc,SACrBnjB,IAAKqG,KAAKquB,UACVz0B,IAAKA,IAET0G,gBAAA,SAAAvB,OAAAuM,OAAA,CACIwR,SAAU9c,KAAKS,MAAMqc,UAAYsS,EACjCloB,MAAOkoB,EAAoB,GAAKpvB,KAAKS,MAAMqvB,yBAC3CpsB,UAAW,gCAAgCksB,EAC3CrsB,QAASvD,KAAKuuB,aAAY,gBACXa,EAAiB,aACpB,GAAGpvB,KAAKS,MAAMqvB,yBAC1BlP,MAAM,aACF6O,GAEJnvB,gBAAA,QAAMoD,UAAWsrB,OA2B7BT,eACJ,IAAIwB,GAAiB,EACrB,MAAMC,EAAehwB,KAAKmB,MAAM4lB,aAChC,IAAIkJ,EAEAD,EAAehwB,KAAKS,MAAM7G,KAC1Bm2B,GAAiB,EACjBE,EAAkBD,EAAe,IAEjCD,GAAiB,EACjBE,EAAkBjwB,KAAKS,MAAM7G,KAG7Bm2B,GAAkB/vB,KAAKS,MAAMyD,UACzBlE,KAAKS,MAAMyD,SAAS+rB,IACpBjwB,KAAKqB,SAAS,CAAE0lB,aAAckJ,IAKlCzB,eACJ,IAAIuB,GAAiB,EACrB,MAAMC,EAAehwB,KAAKmB,MAAM4lB,aAChC,IAAIkJ,EAEAD,GAAgBhwB,KAAKquB,WACrB0B,GAAiB,EACjBE,EAAkBD,EAAe,IAEjCD,GAAiB,EACjBE,EAAkBjwB,KAAKquB,WAGvB0B,GAAkB/vB,KAAKS,MAAMyD,UACzBlE,KAAKS,MAAMyD,SAAS+rB,IACpBjwB,KAAKqB,SAAS,CAAE0lB,aAAckJ,IAKlChJ,cAActnB,GAClB,IAAIunB,EAAe/rB,OAAOma,SAAS3V,EAAEoB,OAAOzB,MAAO,IAC/CnE,OAAOkhB,MAAM6K,GACblnB,KAAKqB,SAAS,CAAE0lB,aAAcG,KAGlCA,EAAextB,KAAKC,IAAIqG,KAAKS,MAAM7G,IAAKF,KAAKE,IAAIoG,KAAKquB,UAAWnH,IACjElnB,KAAKqB,SAAS,CAAE0lB,aAAcG,IAC9BgJ,IAAS,KAELlwB,KAAKS,MAAMyD,UAAYlE,KAAKS,MAAMyD,SAASlE,KAAKmB,MAAM4lB,cAEtD,MAAMM,EACFrnB,KAAK4mB,UAAY5mB,KAAK4mB,SAASlgB,SAAW1G,KAAK4mB,SAASlgB,mBAAmB4gB,kBAAoBtnB,KAAK4mB,SAASlgB,QAC7G2gB,IACAA,EAAa9qB,aAAa,gBAAiByD,KAAKmB,MAAM4lB,aAAa5nB,YACnEkoB,EAAa9qB,aAAa,QAASyD,KAAKmB,MAAM4lB,aAAa5nB,cAEhE,IAVH+wB,MAtMUhC,EAAAzjB,aAAmD,CAC7D9Q,IAAK,EACLo1B,oBAAqB,eACrBE,oBAAqB,eAJRf,EAAmBC,EAAAgC,YAAA,CADvCC,KACoBlC,U,uBC1BrB,IAAImC,EAAY,EAAQ,QACpBC,EAAa,EAAQ,QACrBC,EAAU,EAAQ,QAClBC,EAAU,EAAQ,QAClBC,EAAU,EAAQ,QAStB,SAASzS,EAAKzE,GACZ,IAAIrZ,GAAS,EACTzB,EAAoB,MAAX8a,EAAkB,EAAIA,EAAQ9a,OAG3C,IADAuB,KAAKwZ,UACItZ,EAAQzB,GAAQ,CACvB,IAAIgb,EAAQF,EAAQrZ,GACpBF,KAAK0Z,IAAID,EAAM,GAAIA,EAAM,KAK7BuE,EAAKhf,UAAUwa,MAAQ6W,EACvBrS,EAAKhf,UAAkB,OAAIsxB,EAC3BtS,EAAKhf,UAAU2a,IAAM4W,EACrBvS,EAAKhf,UAAUga,IAAMwX,EACrBxS,EAAKhf,UAAU0a,IAAM+W,EAErBl5B,EAAOC,QAAUwmB,G,iYCAF,MAAM0S,UAAepwB,gBAWhCE,YAAYC,GAAmB,IAAAkwB,EAAAC,EAC3BlwB,MAAMD,GACNT,KAAK4K,QAAU5K,KAAK4K,QAAQC,KAAK7K,MACjCA,KAAK6wB,mBAAoB,EACzB7wB,KAAKmB,MAAQ,CAAEwJ,OAAmC,QAA7BgmB,EAAqB,QAArBC,EAAEnwB,EAAMqwB,qBAAa,IAAAF,OAAA,EAAnBA,EAAqBjmB,cAAM,IAAAgmB,KAAWI,WAAY,IACzE/wB,KAAKgxB,iBAAmBrtB,IACpB,gBAEA3D,KAAKS,MAAMwwB,qBAAuBjxB,KAAKS,MAAMwwB,qBAAuB,IAGpEjxB,KAAKS,MAAMywB,cACXlxB,KAAKmxB,gBAAkBxtB,IACnB3D,KAAKgxB,iBAELhxB,KAAKS,MAAM2wB,UAAYpxB,KAAKS,MAAM2wB,UAAYpxB,KAAKS,MAAM4wB,WAAarxB,KAAKS,MAAM4wB,WAAa,IAElGrxB,KAAKsxB,iBAAmBtxB,KAAKmxB,kBAE7BnxB,KAAKmxB,gBAAkBxtB,IACnB3D,KAAKgxB,iBAELhxB,KAAKS,MAAM2wB,UAAYpxB,KAAKS,MAAM2wB,UAAY,IAElDpxB,KAAKsxB,iBAAmB3tB,IACpB3D,KAAKgxB,iBAELhxB,KAAKS,MAAM4wB,WAAarxB,KAAKS,MAAM4wB,WAAa,KAKrDroB,SACH,MAAM8nB,E,yWAAa/e,CAAA,GAAQ/R,KAAKS,MAAMqwB,oBAGTpyB,IAAzBoyB,EAAcnmB,QAAwB3K,KAAK6wB,kBAC3CC,EAAcnmB,OAAS3K,KAAKmB,MAAMwJ,OAElC3K,KAAKqB,SAAS,CACVsJ,OAAQmmB,EAAcnmB,SAG9BmmB,EAAc9R,SAAWhf,KAAKS,MAAMue,SACpC,MAAMuS,EAAc5tB,IAChB,SAEA3D,KAAKS,MAAMiD,UAAY1D,KAAKS,MAAMiD,UAAY,IAGlD,OADA1D,KAAK6wB,mBAAoB,EAErBvwB,gBAAA,OAAKoD,UAAW6tB,EAAa1tB,KAAM7D,KAAKS,MAAMoD,MAC1CvD,gBAAC0G,SAAMjI,OAAAuM,OAAA,GACCtL,KAAKS,MAAM+wB,kBAAiB,CAChCjuB,QAASvD,KAAK4K,QAAO,gBACNkmB,EAAcnmB,OAC7BgW,OAAK,eACO3gB,KAAKS,MAAM2C,UACvB0Z,SAAU9c,KAAKS,MAAMqc,SACrBpZ,UAAU,iBACVkd,MAAM,cAEL5gB,KAAKyxB,iCAAiCX,EAAcnmB,SAEzDrK,gBAAC4d,IAAQnf,OAAAuM,OAAA,GAAKwlB,KAUlBW,iCAAiCC,GACrC,MAAMC,EAAwBhuB,IAC1B,qBAEA3D,KAAKS,MAAMmxB,sBAAwB5xB,KAAKS,MAAMmxB,sBAAwB,IAE1E,MAAkC,QAA9B5xB,KAAKS,MAAMoxB,eAEPvxB,2BAAA,KACIA,gBAAA,QAAMoD,UAAWC,IAAWguB,EAAuB,YAAa3xB,KAAKS,MAAMqxB,kBAC1E9xB,KAAK+xB,qBAAqB,qBAAsBL,IAK3B,UAA9B1xB,KAAKS,MAAMoxB,eAEPvxB,2BAAA,KACKN,KAAK+xB,qBAAqB,uBAAwBL,GACnDpxB,gBAAA,QAAMoD,UAAWC,IAAWguB,EAAuB,UAAW3xB,KAAKS,MAAMqxB,mBAI9ExxB,gBAAA,QAAMoD,UAAWC,IAAWguB,EAAuB,YAAa3xB,KAAKS,MAAMqxB,kBAS9EC,qBAAqB5mB,EAAkBumB,GAC3C,IAAIM,EAAaN,EAAgB1xB,KAAKmxB,gBAAkBnxB,KAAKsxB,iBAE7D,OADAU,EAAa,GAAGA,KAAc7mB,IACvB7K,gBAAA,QAAMoD,UAAWsuB,IAOpBpnB,QAAQjL,GACZA,EAAEod,iBACF/c,KAAK6wB,mBAAoB,EAErB7wB,KAAKS,MAAMwxB,SACXjyB,KAAKqB,SACD,CAAEsJ,QAAS3K,KAAKmB,MAAMwJ,OAAQomB,WAAYpxB,EAAElH,cAAcy5B,WAC1D,IAAMlyB,KAAKS,MAAMwxB,UAAYjyB,KAAKS,MAAMwxB,SAASjyB,KAAKmB,QAG1DnB,KAAKqB,SAAS,CAAEsJ,QAAS3K,KAAKmB,MAAMwJ,Y,0IC3BjCwnB,IAzGOnR,IAA2B,IAAAoR,EAAAC,EAC7C,MAAM,cACFnR,EAAa,UACbxd,EAAS,cACT4uB,EAAa,aACb5jB,EACA3O,MAAM,QAAEwyB,EAAO,MAAEC,GAAO,gBACxBC,EAAe,eACfC,EAAc,cACdC,EAAa,UACbvR,EAAS,iBACT+J,EAAgB,aAChB9J,EAAY,QACZ5S,GACAuS,EACEM,EAAahhB,cAAkB,KACjC+gB,GAAa,IACd,CAACA,IACJ,IAAKH,IAAkBqR,EACnB,OAAO,KAEX,MAAMtH,EAAUC,2BAAiB,QAASC,EAAmBkE,oBAAkBuD,kBACzEC,EAA4BlH,iCAAuBR,EAAmBF,GAC5EA,EAAQQ,cAAcH,MAAQ+D,oBAAkByD,mBAChD,MAAMC,EAAmBpH,iCAAuBR,EAAmBF,GAE7D+H,EAAmBC,8BACrBV,EAAQW,OACRzkB,EAAQ0kB,cAAcC,eAAeC,YAClB,QAD6BjB,EAChD3jB,EAAQ6kB,QAAQC,WAAG,IAAAnB,GAAQ,QAARA,EAAnBA,EAAqBoB,cAAM,IAAApB,OAAA,EAA3BA,EAA6BqB,kBAE7BnB,IACAA,EAAcoB,iBAAkB,GAEpC,MAAMC,OAA+Bj1B,IAApB+zB,EAAgCA,EAAkB,EAC7DmB,EACW,IAAbD,EAAiBzS,EAAc2S,kBAAoB3S,EAAc4S,qBAAqBphB,QAAQ,MAAOihB,EAASx0B,YAE5G40B,GACgB,QAAlB1B,EAAA5jB,EAAQ8kB,IAAIC,cAAM,IAAAnB,OAAA,EAAlBA,EAAoB2B,2BAA4E,SAAhDvlB,EAAQ8kB,IAAIC,OAAOQ,yBAEjEC,EAA4B1B,EAAQ2B,WACpC3B,EAAQ2B,WAAWC,OAAe,CAACC,EAAKC,IAChCA,EAAiBC,gBAAkBD,EAAiBC,eAAeC,MAC/DH,EACO,GAAGA,MAAQC,EAAiBC,eAAeC,QAG/C,GAAGF,EAAiBC,eAAeC,MAGvCH,EACR,IACH,GAEN,OACI9zB,gBAACihB,IAAK,CAAC5W,OAAQyW,EAAWI,SAAUF,EAAY5d,UAAcA,EAAH,WAAwB8H,OAAQ8V,GACvFhhB,gBAACmhB,IAAW,CAACjW,OAAQ8V,EAAY5d,UAAcA,EAAH,oBACxCpD,gBAAA,YAAOszB,GACPtzB,gBAAA,YAAO4gB,EAAcsT,oBAEzBl0B,gBAACohB,IAAS,CAAChe,UAAcA,EAAH,kBAClBpD,gBAACm0B,IAAK,CACFrB,eAAgB3kB,EAAQ0kB,cAAcC,eACtC1vB,UAAcA,EAAH,kBACXgxB,IAAKnC,EAAQoC,iBAAmB,GAChCC,YAAa5B,EACb6B,QAAStC,EAAQuC,KACjBpmB,aAAcA,GAAgB,GAC9B4jB,cAAeA,EACfyC,oBAAoB,UAExBz0B,gBAAA,QAAMoD,UAAcA,EAAH,2BAAwC6uB,EAAQuC,MAC1C,KAAtBb,EAA2B3zB,gBAAA,OAAKoD,UAAcA,EAAH,8BAA2CuwB,GAA2B,GACjHzB,EAAQlyB,gBAAA,OAAKoD,UAAcA,EAAH,2BAAwCgvB,GAAwB,GACxFH,EAAQyC,sBAAwBjB,EAC7BzzB,gBAAA,OAAKoD,UAAcA,EAAH,mCACZpD,gBAAA,YAAOiyB,EAAQyC,uBAGnB,IAGR10B,gBAAC20B,IAAW,CAACvxB,UAAcA,EAAH,oBACpBpD,gBAAC0G,SAAMjI,OAAAuM,OAAA,CACH5H,UAAcA,EAAH,uBACXod,KAAM6R,EAAa,aACPzR,EAAcgU,cACtBnC,GAEH7R,EAAcgU,cAEnB50B,gBAAC0G,SAAMjI,OAAAuM,OAAA,CACH5H,UAAcA,EAAH,6BACXH,QAAS+d,EAAU,aACPJ,EAAciU,sBACtBtC,GAEH3R,EAAciU,0B,kCCtInC,qCAkBeC,IAHC7c,IAAA,IAAG8c,WAAYC,EAAO,KAAM71B,IAAKma,EAAG,UAAElW,EAAS,KAAEyd,GAAqB5I,EAAA,OAClFqB,EAAMtZ,gBAACsZ,EAAG,CAAClW,UAAWC,IAAWD,IAAayd,GAAc7gB,gBAACg1B,EAAI,CAAC5xB,UAAWC,IAAWD,IAAayd,K,qBChBzG,IAAIoU,EAAa,EAAQ,QACrBC,EAAW,EAAQ,QACnB1f,EAAW,EAAQ,QACnB2f,EAAW,EAAQ,QASnBC,EAAe,8BAGfC,EAAYrb,SAAStb,UACrBF,EAAcC,OAAOC,UAGrBqb,EAAesb,EAAUx2B,SAGzBF,EAAiBH,EAAYG,eAG7B22B,EAAaC,OAAO,IACtBxb,EAAa7a,KAAKP,GAAgByT,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhFnb,EAAOC,QARP,SAAsB8H,GACpB,SAAKwW,EAASxW,IAAUk2B,EAASl2B,MAGnBi2B,EAAWj2B,GAASs2B,EAAaF,GAChCtd,KAAKqd,EAASn2B,M,glBCtBhB,MAAMse,UAAsBtd,YAavCE,YAAYC,GACRC,MAAMD,GAENT,KAAK81B,uBAAyB91B,KAAK81B,uBAAuBjrB,KAAK7K,MAC/DA,KAAKmB,MAAQ,CAAEwJ,OAAQlK,EAAMkK,QAG1B0I,oBACHrT,KAAK+1B,eAGFziB,mBAAmB0iB,GAClBh2B,KAAKS,MAAMkK,SAAWqrB,EAAUrrB,QAChC3K,KAAK+1B,eAINxiB,sBAAsBC,EAAgCJ,GACzD,OAAIpT,KAAKmB,QAAUiS,GAAapT,KAAKS,QAAU+S,EAM5CxK,SACH,OAAOhJ,KAAKS,MAAMkK,OAAS3K,KAAKi2B,kBAAoB,KAGhDH,uBAAuB/1B,GAK3B,OAJIC,KAAKmB,MAAM0L,YAAc9M,EAAK8M,WAC9B7M,KAAKqB,SAAS,CAAEwL,UAAW9M,EAAK8M,YAG7B9M,EAGHg2B,eACyB,WAAzB/1B,KAAKS,MAAMy1B,YACPl2B,KAAKS,MAAMkK,OACX3K,KAAKm2B,QAELn2B,KAAKo2B,SAKTA,QACJp2B,KAAKqB,SAAS,CAAEsJ,QAAQ,IAGpBwrB,QACJn2B,KAAKqB,SAAS,CAAEsJ,QAAQ,IAGpBsrB,kBACJ,MAAA/b,EAiBIla,KAAKS,OAjBH,UACFuc,EAAS,SACTgC,EAAQ,OACRrU,EAAM,KACN0rB,EAAI,OACJ36B,EAAM,OACNqF,EAAM,kBACNu1B,EAAiB,SACjBC,EAAQ,gBACRtZ,EACAM,eAAgBiZ,EAAyB,UACzCtZ,EAAS,UACTxZ,EAAS,IACTjE,EAAG,UACH4d,EAAS,kBACTC,GAEHpD,EADMuc,EAAK1c,YAAAG,EAAAF,GAGNuD,EAAiBE,YAAgBC,IAAW,YAAa8Y,GAA4BxZ,GAErFnQ,GAAa7M,KAAKmB,MAAM0L,WAAa4pB,EAAM5pB,WAAa,QAAQ8P,MAAM,KAAK,GAC3E+Z,EAAkBjZ,YACpBC,IAAWha,EAAWuZ,EAAkB,GAAGA,KAAmBpQ,IAAcA,GAC5E7M,KAAKS,MAAMuc,WAGT2Z,E,yWAAiB5kB,CAAA,CACnBrW,OAAQ,CAAEA,UACV26B,KAAM,CAAEO,QAASP,EAAMQ,SAAUP,GACjCQ,gBAAiB,CAAExZ,qBACnByZ,OAAQ,CACJH,SAAS,EACTI,MAAO,IACPC,GAAIj3B,KAAK81B,yBAEVzY,GAGD6Z,EAAgB7b,YAAiBta,GACvC,OAAsB,OAAlBm2B,EACO,KAIP52B,gBAAC62B,IAAWp4B,OAAAuM,OAAA,GACJmrB,EAAK,CACTpZ,UAAWsZ,EACX51B,OAAQm2B,EACRE,UAAW33B,EACXiN,OAAQ6pB,EACR7yB,UAAWgzB,EAAe,cACb12B,KAAKmB,MAAM0L,WAAa4pB,EAAM5pB,UAC3C3U,MAAO,CAAEm/B,QAASr3B,KAAKmB,MAAMwJ,OAAS,QAAU,UAE/CqU,GACC9B,GAAa5c,gBAACg3B,IAAK,CAAC5zB,UAAW6Z,MA3H/BK,EAAAnT,aAA6C,CACvD6S,kBAAmB,eACnBzQ,UAAW,OACXqQ,WAAW,EACXvS,QAAQ,EACRjP,OAAQ,EACR46B,kBAAmB,OACnBD,MAAM,EACNH,UAAW,OACX7Y,UAAW,K,oaCVJ,MAAMka,UAAaj3B,YAYvBiT,sBAAsBC,GACzB,SAAIA,EAAU0L,IAAMlf,KAAKS,MAAMye,KAAO1L,EAAU0L,IAM7ClW,SACH,MAAAkR,EAwBIla,KAAKS,OAxBH,IACFhB,EAAG,UACHiE,EAAS,UACTsZ,EAAS,UACTwa,EAAS,gBACTC,EAAe,OAEfnY,EAAM,MACNC,EAAK,KACLC,EACAN,GAAIwY,EAAM,aACVtY,EAAY,cACZC,EACAI,QAASkY,EAAkB,eAC3BC,EAAc,QACdlY,EAAO,WACPC,EAAU,UACVC,EAAS,OACTC,EAAM,UACNC,EAAS,SACTC,EAAQ,SACRf,GAGH9E,EADM8F,EAAUjG,YAAAG,EAAAF,GAIXiG,EAAkB,CACpBX,SACAC,QACAC,OACAN,GAAIwY,EACJtY,eACAC,gBACAI,aATmC/gB,IAAvBi5B,EAAmCA,EAAqBxX,IAAmBoX,KAUvFK,iBACAlY,UACAC,aACAC,YACAC,SACAC,YACAC,WACAf,YAGEpF,EAAM5Z,KAAKS,MAAMhB,IAAMO,KAAKS,MAAMhB,IAAM,MACxCo4B,EAAkBL,GAAa,OAC/BM,EAAwBL,GAAmB,OAEjD,OACIn3B,gBAAC4f,IAAUnhB,OAAAuM,OAAA,GAAK2U,GACVG,IACE,MAAM2X,EAAsB,YAAX3X,EACX5C,EAAUC,YAAgBC,IAAW,CAACha,EAAWm0B,EAAiBE,GAAYD,IAAyB9a,GAE7G,OACI1c,gBAACsZ,EAAG7a,OAAAuM,OAAA,CAAC5H,UAAW8Z,GAAawC,GACxBhB,MA5EXuY,EAAA9sB,aAAoC,CAC9ChL,IAAK,MACL+3B,UAAW,OACXC,gBAAiB,OACjBhY,QAASU,IAAmBoX,KAC5BrY,IAAI,EACJI,QAAQ,EACRC,OAAO,EACPC,MAAM,I,kCC9Bd,8KA2BY6P,EA3BZ,YAsGO,SAAS2I,EAAmBC,EAAkBC,EAAoBC,GAErE,MAD4C,CAAEF,WAAUC,aAAYC,aAcjE,SAASjN,EAAiB7a,EAAmB8a,EAAqCG,EAAe8M,GAapG,MAV0B,CACtBC,gBAAiBhoB,EACjBob,cAAe,CACX6M,OALSnN,GAAoBA,EAAiB8M,SAAW9M,EAAiB8M,SAAW,GAMrFM,MALWpN,GAAoBA,EAAiB+M,WAAa/M,EAAiB+M,WAAa,GAM3F5M,QACA8M,QACAI,MAAOnoB,IAYZ,SAASsb,EAAuBR,EAAqCF,GACxE,MAAMwN,EAAcxN,EAAQQ,cAAc2M,MAAQnN,EAAQQ,cAAc2M,MAAQnN,EAAQQ,cAAcH,MAMtG,OAJIH,GACAA,EAAiBgN,WACjBhN,EAAiBgN,UAAUO,uBAC3BvN,EAAiBgN,UAAUO,sBAAsBD,EAAcxN,EAAQQ,gBAtH/E,SAAY4D,GACRA,EAAA,sCACAA,EAAA,kDACAA,EAAA,iCACAA,EAAA,wCACAA,EAAA,8CACAA,EAAA,uCACAA,EAAA,uCACAA,EAAA,oBACAA,EAAA,+BACAA,EAAA,kCACAA,EAAA,kCACAA,EAAA,qBACAA,EAAA,6BACAA,EAAA,mCACAA,EAAA,iCACAA,EAAA,mBACAA,EAAA,0BACAA,EAAA,8BACAA,EAAA,wBACAA,EAAA,YACAA,EAAA,iCACAA,EAAA,gBACAA,EAAA,mCACAA,EAAA,2DACAA,EAAA,uBACAA,EAAA,2BACAA,EAAA,gBACAA,EAAA,oBACAA,EAAA,iBACAA,EAAA,iBACAA,EAAA,mBACAA,EAAA,iCACAA,EAAA,uCACAA,EAAA,sCACAA,EAAA,0CACAA,EAAA,0CACAA,EAAA,wCACAA,EAAA,kCACAA,EAAA,qBACAA,EAAA,wBACAA,EAAA,YACAA,EAAA,0BACAA,EAAA,2CACAA,EAAA,qCACAA,EAAA,oDACAA,EAAA,sCACAA,EAAA,2BACAA,EAAA,YACAA,EAAA,oBACAA,EAAA,6BACAA,EAAA,wBACAA,EAAA,2BACAA,EAAA,8BACAA,EAAA,gCACAA,EAAA,+BACAA,EAAA,oCACAA,EAAA,uBACAA,EAAA,yBACAA,EAAA,gDACAA,EAAA,qBACAA,EAAA,6BACAA,EAAA,gBA9DJ,CAAYA,MAAiB,KAgItB,MAAMsJ,EAAmBA,CAACxN,EAAqCF,EAAmB2N,IAAqB,KAC1G3N,EAAQQ,cAAcH,MAAQsN,EAC1BzN,GAAoBA,EAAiBgN,WACrChN,EAAiBgN,UAAUU,SAASC,IAAeC,OAAQ9N,K,mBC1HnE1zB,EAAOC,QAJP,SAAY8H,EAAO2sB,GACjB,OAAO3sB,IAAU2sB,GAAU3sB,GAAUA,GAAS2sB,GAAUA,I,mBCL1D10B,EAAOC,QAJP,SAAsB8H,GACpB,OAAgB,MAATA,GAAiC,iBAATA,I,kCCzBjC,2DAOO,SAAS05B,EAASC,GACrB,MAAMC,EAAYtvB,IAAIuvB,MAAMF,GAAS,GACrC,SAAIC,EAAUE,WAAYF,EAAUG,Q,qBCTxC,IAGIx6B,EAHO,EAAQ,QAGDA,OAElBtH,EAAOC,QAAUqH,G,qBCLjB,IAAI8Z,EAAU,EAAQ,QAClB2gB,EAAQ,EAAQ,QAChBC,EAAe,EAAQ,QACvBp6B,EAAW,EAAQ,QAiBvB5H,EAAOC,QAPP,SAAkB8H,EAAOyZ,GACvB,OAAIJ,EAAQrZ,GACHA,EAEFg6B,EAAMh6B,EAAOyZ,GAAU,CAACzZ,GAASi6B,EAAap6B,EAASG,M,+wBCDjD,MAAMk6B,UAAcl5B,gBAexB0I,SACH,MAAM,GACFhE,EAAE,UACFtB,EAAS,eACT+1B,EAAc,UACdzc,EAAS,IACTvd,EAAG,OACH+L,EAAM,MACNoV,EAAK,OACLjW,EAAM,SACNqU,EAAQ,WACR0a,EAAU,KACVC,EAAI,UACJC,EAAS,kBACTC,EACA,aAAcz2B,GACdpD,KAAKS,MAEH+c,EAAUqc,EACVpc,YAAgBC,IAAWha,EAAW,YAAa,aAAakd,GAAU5D,GAC1EtZ,EAEAo2B,EAAerc,YAAgBC,IAAW,QAAS+b,GAAiBzc,GAEpE+c,EAAehoB,MAAA,GACdwlB,IAAK9sB,cACLivB,GAAU,IACblC,UAAWmC,EAAO,OAAS,GAC3Bla,QAASka,GAAQD,EAAaA,EAAWja,QAAe,EACxDH,SAAUqa,EACVpa,QAASoa,EACTna,OAAQma,IAGN/f,EAAMna,GAAO,MACbu6B,EAAWL,EAAO,gBAAkB,iBAEpCM,EACF35B,2BAAA,KACKkL,EACGlL,gBAAA,WACIA,gBAAA,UACIvE,KAAK,SACLiJ,GAAIg1B,EACJt2B,UAAWo2B,EAAY,aACX95B,KAAKS,MAAMy5B,eACvB32B,QAASiI,IAEblL,gBAACoK,IAAmB,CAAC1F,GAAG,eAAejE,OAAQ,IAAIi5B,EAAYntB,UAAU,OAAK,UAIlF,KACHmS,GAIH9mB,EAAQyS,OAASjM,EAAY,CAAE24B,QAAS,QAQ9C,OAAIsC,GAAQC,EAEJt5B,gBAACsZ,EAAG,CAAC1hB,MAAOA,EAAO8M,GAAIA,EAAItB,UAAW8Z,EAAS3Z,KAAK,QAAO,YAAW,YAAW,aAAaT,GAC1F9C,gBAACi3B,IAAIx4B,OAAAuM,OAAA,GAAKyuB,EAAe,CAAEt6B,IAAKma,EAAKsF,GAAIvU,IACpCsvB,IAINN,EAEHr5B,gBAACi3B,IAAIx4B,OAAAuM,OAAA,CAACtG,GAAIA,GAAQ+0B,EAAe,CAAEt6B,IAAKma,EAAKlW,UAAW8Z,EAAS3Z,KAAK,QAAQqb,GAAIvU,IAC7EsvB,GAKT35B,gBAACsZ,EAAG,CACA1hB,MAAOA,EACP8M,GAAIA,EACJtB,UAAW8Z,EACX3Z,KAAK,QAAO,YACD+1B,EAAY,iBAAcl7B,EAAS,aAClC0E,GAEX62B,IAvGCT,EAAA/uB,aAAqC,CAC/CmW,MAAO,UACPjW,QAAQ,EACRlL,IAAK,MACLy6B,eAAgB,QAChBP,MAAM,EACNC,WAAW,EACXC,mBAAmB,EACnBH,WAAU3nB,IAAA,GACHwlB,IAAK9sB,cAAY,IACpB4U,eAAe,M,mMCJZ,MAAM8a,UAAkB75B,gBASnCE,YAAYC,GACRC,MAAMD,GAkDO,KAAA25B,eAAkBjZ,GACxB7gB,gBAAC+5B,IAAa,CAAC32B,UAAU,uCAAuCyd,KAAMA,EAAMmZ,UAAWt6B,KAAKS,MAAM65B,YAlDzGt6B,KAAKmB,MAAQ,CAAEqa,WAAY,CAAE,eAAe,EAAM1X,UAAW,IAC7D9D,KAAKu6B,oBAAsBv6B,KAAKu6B,oBAAoB1vB,KAAK7K,MACzDA,KAAKw6B,aAAex6B,KAAKw6B,aAAa3vB,KAAK7K,MAC3C,MAAMirB,EAAUC,2BAAiB,QAASzqB,EAAM0qB,iBAAmBkE,oBAAkB8K,WACrFn6B,KAAKwb,WAAamQ,iCAAuBlrB,EAAM0qB,iBAAmBF,GAG/D5X,oBACHjZ,OAAOkW,iBAAiB,SAAUtQ,KAAKu6B,qBACvCngC,OAAOkW,iBAAiB,SAAUtQ,KAAKu6B,qBACvCv6B,KAAKu6B,sBAGF1mB,uBACHzZ,OAAO0Z,oBAAoB,SAAU9T,KAAKu6B,qBAC1CngC,OAAO0Z,oBAAoB,SAAU9T,KAAKu6B,qBAGvCvxB,SACH,MAAAkR,EAAsEla,KAAKS,OAArE,UAAEiD,EAAS,UAAE+2B,EAAS,UAAEC,EAAS,eAAEC,GAA0BzgB,EAAPzZ,EAAKsZ,YAAAG,EAAAF,GAC3DgF,EAAWhf,KAAKS,MAAMue,UAAY1e,gBAAA,KAAGoD,UAAU,mBACrD,OAAI1D,KAAKS,MAAM0gB,KAEP7gB,gBAAA,IAAAvB,OAAAuM,OAAA,CACI5H,UAAW,eAAeA,GACtBjD,EACAT,KAAKmB,MAAMqa,WAAU,CACzB3X,KAAK,OACLN,QAASvD,KAAKw6B,cACVx6B,KAAKwb,YAERxb,KAAKo6B,eAAep6B,KAAKS,MAAM0gB,OAKxC7gB,gBAAA,IAAAvB,OAAAuM,OAAA,CACI5H,UAAW,eAAeA,GACtBjD,EACAT,KAAKmB,MAAMqa,WAAU,CACzB3X,KAAK,OACLN,QAASvD,KAAKw6B,cACVx6B,KAAKwb,YAERwD,GASL4b,cACoE,KAAnEjjC,SAASkjC,gBAAgBC,WAAanjC,SAASC,KAAKkjC,aACrDC,cAAc/6B,KAAKmB,MAAM65B,YACzBh7B,KAAKqB,SAAS,CAAE25B,WAAY,IAC5Bh7B,KAAKu6B,uBAGqB,IAA1Bv6B,KAAKmB,MAAM65B,aACX5gC,OAAO6gC,SAAS,EAAGtjC,SAASC,KAAKkjC,UAAY96B,KAAKS,MAAMk6B,gBACxDhjC,SAASC,KAAKkjC,UAAYnjC,SAASC,KAAKkjC,UAAY,EAAInjC,SAASC,KAAKkjC,UAAY96B,KAAKS,MAAMk6B,eAAiB,GAK9GH,aAAa76B,GACjBA,EAAEod,iBACF,MAAMie,EAAaE,YAAYl7B,KAAK46B,YAAY/vB,KAAK7K,MAAOA,KAAKS,MAAMi6B,WACvE16B,KAAKqB,SAAS,CAAE25B,eAGZT,sBAKJ,MAAMO,EAAY1gC,OAAOI,aAAe7C,SAASC,KAAKkjC,UAChD1iC,EAASsB,KAAKC,IAAIS,OAAO+gC,YAAaxjC,SAASkjC,gBAAgBO,cAC/DX,EAAY/gC,KAAKC,SAA6B+E,IAAzBsB,KAAKS,MAAMg6B,UAA0Bz6B,KAAKS,MAAMg6B,WAAa,EAAG,KACrFhgB,EACFqgB,EAAY,GAAKL,GAAa,EACxBK,GAAcnjC,SAASkjC,gBAAgBpa,aAAeroB,GAAUqiC,EAAa,IAC7EK,EAAqB,EAAT1iC,EAChBijC,EAAgB5gB,GAAQ,EAAI,EAClCza,KAAKqB,SAAS,CAAEma,WAAY,CAAE,cAAef,EAAM3W,SAAUu3B,MAhGnDlB,EAAA1vB,aAAyC,CACnD/G,UAAW,2BACXg3B,UAAW,EACXC,eAAgB,K,uBC3BxB,IAAIvU,EAAa,EAAQ,QAezB7uB,EAAOC,QAJP,SAAqBsI,GACnB,OAAOsmB,EAAWpmB,KAAMF,GAAK6Z,IAAI7Z,K,qBCZnC,IAAIsmB,EAAa,EAAQ,QAqBzB7uB,EAAOC,QATP,SAAqBsI,EAAKR,GACxB,IAAIS,EAAOqmB,EAAWpmB,KAAMF,GACxB9G,EAAO+G,EAAK/G,KAIhB,OAFA+G,EAAK2Z,IAAI5Z,EAAKR,GACdU,KAAKhH,MAAQ+G,EAAK/G,MAAQA,EAAO,EAAI,EAC9BgH,O,qBClBT,IAAIs7B,EAAa,EAAQ,QACrBxlB,EAAW,EAAQ,QAmCvBve,EAAOC,QAVP,SAAoB8H,GAClB,IAAKwW,EAASxW,GACZ,OAAO,EAIT,IAAIG,EAAM67B,EAAWh8B,GACrB,MA5BY,qBA4BLG,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,I,qBCjC/D,IAAI+tB,EAAa,EAAQ,QAGrB+N,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKz8B,SAAWA,QAAUy8B,KAGxEC,EAAOjO,GAAc+N,GAAYjhB,SAAS,cAATA,GAErC/iB,EAAOC,QAAUikC,G,gICYF,MAAMC,UAA4Bp7B,gBAqC7CE,YAAYC,GACRC,MAAMD,GAzBF,KAAAk7B,aAAuB,EAEvB,KAAAC,UAAoB,EAEpB,KAAAC,SAAmB,EAgBV,KAAAC,iBAA2B,OAE3B,KAAAC,iBAA2B,OAkS3B,KAAAC,WAAa,KAC1Bh8B,KAAKi8B,sBA/RLj8B,KAAKk8B,WAAal8B,KAAKk8B,WAAWrxB,KAAK7K,MACvCA,KAAKm8B,eAAiBn8B,KAAKm8B,eAAetxB,KAAK7K,MAC/CA,KAAKo8B,kBAAoBp8B,KAAKo8B,kBAAkBvxB,KAAK7K,MACrDA,KAAKq8B,gBAAkBr8B,KAAKq8B,gBAAgBxxB,KAAK7K,MACjDA,KAAKs8B,SAAWt8B,KAAKs8B,SAASzxB,KAAK7K,MACnCA,KAAKg8B,WAAah8B,KAAKg8B,WAAWnxB,KAAK7K,MACvCA,KAAKmB,MAAQ,CAAEo7B,cAAc,EAAOC,UAAU,EAAO9gC,OAAQ,GAC7DsE,KAAK8L,IAAMxL,cACXN,KAAKy8B,SAAWn8B,cAChBN,KAAK08B,QAAUp8B,cACfN,KAAKoN,UAAY,OACjBpN,KAAKgF,GAAKvE,EAAMk8B,UAAY,GAC5B38B,KAAK48B,qBAAsDl+B,IAApCsB,KAAKS,MAAMo8B,qBAAqC78B,KAAKS,MAAMo8B,qBAAuB,IAGtGvpB,qBACHtT,KAAK88B,SAAW98B,KAAK8L,IAAIpF,QACzB1G,KAAK+8B,MAAQ/8B,KAAKy8B,SAAS/1B,QAC3B1G,KAAK/H,KAAO+H,KAAK08B,QAAQh2B,QACzB1G,KAAKg9B,YACLh9B,KAAKi9B,gBAAgBj9B,KAAKmB,MAAMzF,QAG7B2X,oBACHrT,KAAKoN,UAAYpN,KAAKS,MAAM6M,SAAW,MAAQ,OAC/CtN,KAAK88B,SAAW98B,KAAK8L,IAAIpF,QACzB1G,KAAK+8B,MAAQ/8B,KAAKy8B,SAAS/1B,QAC3B1G,KAAK/H,KAAO+H,KAAK08B,QAAQh2B,QACzB1G,KAAKg9B,YACLh9B,KAAKk9B,4BAA8B9iC,QAAU+iC,YAAkB/iC,OAAQ,SAAU4F,KAAKg8B,YACtFh8B,KAAKi9B,gBAAgB,GAGlBppB,uBACHzZ,QAAUA,OAAO0Z,oBAAoB,SAAU9T,KAAKk9B,6BAA8B,GAG/El0B,SACH,MAAMo0B,GAA0C,IAAxBp9B,KAAKS,MAAM6M,SAC7B+vB,EAAqB,GACrBC,EAAmBt9B,KAAKu9B,mBAAmBH,GACjDC,EAAmBr9B,KAAKoN,WAAgBpN,KAAKmB,MAAMzF,OAAd,KACrC,MAAM8hC,EAAgBJ,EAAS,uBAAyB,kBAClDK,EAAqBL,EAAS,6BAA+B,wBAC7DM,EAAgBN,EAAS,6BAA+B,wBACxDO,EAAuBP,EAAS,iBAAmB,mBACnDQ,EAAmBR,EAAS,mBAAqB,oBACjDS,EAA2BT,EAAS,gCAAkC,2BACtEU,EAAuBV,EACvB,oEACA,0DACAW,EAAoB/9B,KAAKmB,MAAMo7B,cAAiBv8B,KAAKmB,MAAMq7B,SAAwB,KAAb,WAC5E,OACIl8B,gBAAA,OAAKoD,UAAW85B,EAAeQ,aAAch+B,KAAKo8B,kBAAmB/vB,WAAYrM,KAAKq8B,iBAClF/7B,gBAAC2sB,IAAO,CACJjoB,GAAI,yBAAyBhF,KAAKgF,GAClCmoB,WAAY,CAAEzpB,UAAWi6B,GACzBp6B,QAASvD,KAAKm8B,eACdz4B,UAAY1D,KAAKmB,MAAMo7B,aAAmE,GAAGsB,EAAvD,GAAGA,KAA4BE,IAAkD,eACzG/9B,KAAKmB,MAAMo7B,aAAY,aACzBv8B,KAAKS,MAAMs7B,iBACvBjf,UAAW9c,KAAKmB,MAAMo7B,aACtBnP,kBAAmBptB,KAAKS,MAAMs7B,kBAAoB/7B,KAAKS,MAAMs7B,iBAAiBt9B,OAAS,GACvF0sB,iBAAkBnrB,KAAKS,MAAM0qB,iBAC7B+B,eAAgBltB,KAAK+7B,mBAEzBz7B,gBAAC2sB,IAAO,CACJjoB,GAAI,qBAAqBhF,KAAKgF,GAC9BmoB,WAAY,CAAEzpB,UAAWk6B,GACzBr6B,QAASvD,KAAKk8B,WACdx4B,UAAY1D,KAAKmB,MAAMq7B,SAA2D,GAAGsB,EAAnD,GAAGA,KAAwBC,IAA8C,eAC7F/9B,KAAKmB,MAAMq7B,SAAQ,aACrBx8B,KAAKS,MAAMq7B,iBACvBhf,UAAW9c,KAAKmB,MAAMq7B,SACtBpP,kBAAmBptB,KAAKS,MAAMq7B,kBAAoB97B,KAAKS,MAAMq7B,iBAAiBr9B,OAAS,GACvF0sB,iBAAkBnrB,KAAKS,MAAM0qB,iBAC7B+B,eAAgBltB,KAAK87B,mBAEzBx7B,gBAAA,OAAKwL,IAAK9L,KAAK8L,IAAKpI,UAAW,GAAGg6B,GAC9Bp9B,gBAAA,MACIoD,UAAW+5B,EACXvlC,MAAOmlC,EACPvxB,IAAK9L,KAAKy8B,SACV54B,KAAM7D,KAAKS,MAAMw9B,WAAa,UAAY,QAEzCX,KAObC,mBAAmBH,GACvB,OAAO98B,WAAeuC,IAAI7C,KAAKS,MAAMue,SAAU,CAACkf,EAAwBh+B,KACpE,MAAMi+B,EAAaD,EACnB,OAAc,IAAVh+B,EACOI,eAAmB69B,EAAW,CACjCz6B,UAAW,GAAG05B,EAAS1B,EAAoB0C,sBAAwB1C,EAAoB2C,iBACnFF,EAAU19B,MAAMiD,YAIpBoI,IAAK9L,KAAK08B,QACVlwB,QAASxM,KAAKs8B,WAGfh8B,eAAmB69B,EAAW,CACjCz6B,UAAW,GAAG05B,EAAS1B,EAAoB0C,sBAAwB1C,EAAoB2C,iBACnFF,EAAU19B,MAAMiD,YAIpB8I,QAASxM,KAAKs8B,aAKlBJ,aACJl8B,KAAKs+B,kBAAiB,GAGlBnC,iBACJn8B,KAAKs+B,kBAAiB,GAGlBlC,kBAAkBmC,GACK,IAAvBA,EAAIrtB,QAAQzS,OACZuB,KAAKw+B,iBAAc9/B,EAEnBsB,KAAKw+B,aAAsC,IAAxBx+B,KAAKS,MAAM6M,SAAoBixB,EAAIrtB,QAAQ,GAAGutB,QAAUF,EAAIrtB,QAAQ,GAAGwtB,QAI1FrC,gBAAgBkC,GACpB,GAAIA,EAAII,eAAelgC,OAAS,QAA0BC,IAArBsB,KAAKw+B,YAA2B,CACjE,MAEMI,IAF4C,IAAxB5+B,KAAKS,MAAM6M,SAAoBixB,EAAII,eAAe,GAAGF,QAAUF,EAAII,eAAe,GAAGD,SAErF1+B,KAAKw+B,YAE3BI,EAAQ5+B,KAAK48B,iBACb58B,KAAKm8B,iBAGLyC,GAAS5+B,KAAK48B,iBACd58B,KAAKk8B,aAIbl8B,KAAKw+B,iBAAc9/B,EAKf4/B,iBAAiBlT,GACrB,IAAIyT,EAAgB1jC,OAAOma,SAASwpB,YAAO9+B,KAAK+8B,MAAQ/8B,KAAKoN,WAAY,IACzE,MAAMuuB,EAAe37B,KAAK27B,aAC1B,IAAIoD,EAAiBrlC,KAAKslC,MAAMrD,EAAe37B,KAAK67B,UACpD,MAAMoD,EAAoB7T,GAAQ,EAAI,EACtCyT,EAAiBxiB,MAAMwiB,IAA2C,iBAAlBA,EAA6C,EAAhBA,EAEtD,IAAnBE,IACAA,EAAiB,GAGrBA,EAAiBpD,EAAe37B,KAAK67B,UAAa,EAAIkD,EAAiB,EAAIA,EAC3EA,EAAiBrlC,KAAKE,IAAImlC,EAAgB,GAC1C,MAAMG,EAAoBH,EAAiB/+B,KAAK67B,SAChD,IAAIsD,EAAiB/T,EAAOprB,KAAK47B,UAAYD,EAAekD,EAAgBnlC,KAAK0lC,IAAIP,GACrFM,EAAiBzlC,KAAKE,IAAI,EAAGulC,GAE7B,MAAMzjC,EACFwjC,GAAqBC,EACfD,EAAoBD,EAAoBJ,EACxCM,EAAiBF,EAAoBJ,EAE/C7+B,KAAKi9B,gBAAgBvhC,GAGjBshC,YACJ,MAAM/kC,EAAO+H,KAAK/H,KAEd+H,KAAK67B,SADL5jC,EACgB+H,KAAKS,MAAM6M,SAAWrV,EAAKwoB,aAAexoB,EAAKonC,YAE/C,EAGpBr/B,KAAK27B,aAAe37B,KAAKs/B,yBACzBt/B,KAAK47B,UAAY57B,KAAK+8B,MAAS/8B,KAAKS,MAAM6M,SAAWtN,KAAK+8B,MAAMtc,aAAezgB,KAAK+8B,MAAMsC,YAAe,EAGrGC,yBACJ,IAAKt/B,KAAK88B,SACN,OAAO,EAGX,MAAMyC,EAAgBC,iBAAiBx/B,KAAK88B,UAEtC2C,EAAUz/B,KAAKS,MAAM6M,SACrBnS,OAAO4oB,WAAWwb,EAAcG,YAAc,IAAMvkC,OAAO4oB,WAAWwb,EAAcI,eAAiB,IACrGxkC,OAAO4oB,WAAWwb,EAAcK,aAAe,IAAMzkC,OAAO4oB,WAAWwb,EAAcM,cAAgB,IAE3G,OAAO7/B,KAAKS,MAAM6M,SAAWtN,KAAK88B,SAAS1B,aAAeqE,EAAUz/B,KAAK88B,SAASgD,YAAcL,EAG5FM,mBAAmBrkC,GACvB,OAAQ2gB,MAAM3gB,IAAsB,IAAXA,EAGrBskC,eAAetkC,GACnB,QAAIsE,KAAK27B,aAAejiC,KAAK0lC,IAAI1jC,IAAWsE,KAAK47B,WAO7CqB,gBAAgBvhC,GACpBsE,KAAKqB,SAAS,CACVk7B,aAAcv8B,KAAK+/B,mBAAmBrkC,GACtC8gC,SAAUx8B,KAAKggC,eAAetkC,GAC9BA,WAIAukC,oBAAoBhoC,GACxB,MAAM0jC,EAAe37B,KAAK27B,aAC1B,IAAIjgC,EAASsE,KAAKS,MAAM6M,SAAWrV,EAAKioC,UAAYjoC,EAAKkoC,WACrDC,GAAe,EAEnB,MAAMjmC,EAAOgB,OAAOma,SAASwpB,YAAO9+B,KAAK+8B,MAAQ,QAAS,KAAO,EAC3DxiC,EAAMY,OAAOma,SAASwpB,YAAO9+B,KAAK+8B,MAAQ,OAAQ,KAAO,EAE3D/8B,KAAKS,MAAM6M,SACP/S,EAAM,IAAMA,EAAMmB,GACH,IAAXA,IACAA,EAAmB,EAATA,GAEd0kC,GAAe,GACR7lC,EAAMmB,EAASigC,EAAe37B,KAAK67B,WAC1CngC,EAASigC,EAAe37B,KAAK67B,SAAWngC,EAAS,EACjD0kC,GAAe,GAEO,SAAnBpgC,KAAKoN,YACRjT,EAAO,IAAMA,EAAOuB,GACL,IAAXA,IACAA,EAAmB,EAATA,GAEd0kC,GAAe,GACRjmC,EAAOuB,EAASigC,EAAe37B,KAAK67B,WAC3CngC,EAASigC,EAAe37B,KAAK67B,SAAWngC,EAAS,GACjD0kC,GAAe,IAInBA,IACApgC,KAAKi9B,gBAAgBvhC,GAEjBsE,KAAKS,MAAM6M,SACXgK,WAAW,KACNtX,KAAK+8B,MAAe/hC,cAAe8/B,UAAY,GACjD,GAEHxjB,WAAW,KACNtX,KAAK+8B,MAAe/hC,cAAeqlC,WAAa,GAClD,IAKP/D,SAAS/jC,GACb,MAAMwI,EAASxI,EAAME,cACrBuH,KAAKigC,oBAAoBl/B,GAGrBk7B,qBACJj8B,KAAKg9B,YACL,IAAIthC,EAASP,OAAOma,SAASwpB,YAAO9+B,KAAK+8B,MAAQ/8B,KAAKoN,WAAY,KAG7DiP,MAAM3gB,IAAWA,EAAS,GAAKsE,KAAK47B,UAAYlgC,EAASsE,KAAK27B,eAC/DjgC,EAAShC,KAAKC,IAAI,EAAGqG,KAAK27B,aAAe37B,KAAK47B,YAGlD57B,KAAKi9B,gBAAgBvhC,IAjUDggC,EAAA2C,cAAwB,uBAExB3C,EAAA0C,sBAAgC,6B,mBCtB5D,IAOIl/B,EAPcH,OAAOC,UAOcG,SAavC5H,EAAOC,QAJP,SAAwB8H,GACtB,OAAOJ,EAAqBM,KAAKF,K,kCClBnC,0V,qBCAA,IAAIghC,EAAK,EAAQ,QAoBjB/oC,EAAOC,QAVP,SAAsBuqB,EAAOjiB,GAE3B,IADA,IAAIrB,EAASsjB,EAAMtjB,OACZA,KACL,GAAI6hC,EAAGve,EAAMtjB,GAAQ,GAAIqB,GACvB,OAAOrB,EAGX,OAAQ,I,kCCjBV,W,uZCyBe,MAAM8hC,UAAyBjgC,gBAa1CE,YAAYC,GACRC,MAAMD,GACN,MAAM,UAAE2wB,EAAS,WAAEC,GAAerxB,KAAKS,MACvCT,KAAK4K,QAAU5K,KAAK4K,QAAQC,KAAK7K,MACjCA,KAAK6wB,mBAAoB,EACzB7wB,KAAKmB,MAAQ,CAAEwJ,OAASlK,EAAMqwB,eAAiBrwB,EAAMqwB,cAAcnmB,SAAW,GAC9E3K,KAAKwgC,WAAaxgC,KAAKmB,MAAMwJ,OAC7B3K,KAAKgxB,iBAAmBrtB,IAAW,gBAAiB3D,KAAKS,MAAMwwB,sBAAwB,IACvFjxB,KAAKirB,QAAUC,2BAAiB,QAASzqB,EAAM0qB,iBAAmB,IAE9DnrB,KAAKS,MAAMywB,cACXlxB,KAAKmxB,gBAAkBxtB,IAAW,CAAC3D,KAAKgxB,iBAAkBI,GAAaC,GAAc,KACrFrxB,KAAKsxB,iBAAmBtxB,KAAKmxB,kBAE7BnxB,KAAKmxB,gBAAkBxtB,IAAW,CAAC3D,KAAKgxB,iBAAkBI,GAAa,KACvEpxB,KAAKsxB,iBAAmB3tB,IAAW,CAAC3D,KAAKgxB,iBAAkBK,GAAc,MAI1EroB,SACH,MAAM8nB,E,yWAAa/e,CAAA,GAAQ/R,KAAKS,MAAMqwB,eACtCA,EAAcnmB,OAAS3K,KAAK6wB,kBAAoB7wB,KAAKmB,MAAMwJ,OAASmmB,EAAcnmB,SAAU,EAC5FmmB,EAAc9R,SAAWhf,KAAKS,MAAMue,SACpC,MAAMuS,EAAc5tB,IAAW,SAAU3D,KAAKS,MAAMiD,WAAa,IACjE1D,KAAK6wB,mBAAoB,EACzB7wB,KAAKwgC,WAAa1P,EAAcnmB,OAChC3K,KAAKqB,SAAS,CAAEsJ,OAAQmmB,EAAcnmB,SACtC3K,KAAKirB,QAAQQ,cAAcH,MAAQwF,EAAcnmB,OAAS0kB,oBAAkBnR,SAAWmR,oBAAkBoR,OACzG,MAAMjlB,EAAamQ,iCAAuB3rB,KAAKS,MAAM0qB,iBAAmBnrB,KAAKirB,SAC7E,OACI3qB,gBAAA,OAAKoD,UAAW6tB,GACZjxB,gBAAC0G,SAAMjI,OAAAuM,OAAA,GACCtL,KAAKS,MAAM+wB,kBAAiB,CAChCjuB,QAASvD,KAAK4K,QAAO,gBACNkmB,EAAcnmB,OAC7BgW,OAAK,EACL7D,SAAU9c,KAAKS,MAAMqc,SACrBpZ,UAAU,kBACN8X,GAEHxb,KAAKyxB,iCAAiCX,EAAcnmB,SAEzDrK,gBAAC4d,IAAQnf,OAAAuM,OAAA,GAAKwlB,KAKlBW,iCAAiCC,GACrC,MAAM,iBAAEI,GAAqB9xB,KAAKS,MAC5BkxB,EAAwBhuB,IAAW,qBAAsB3D,KAAKS,MAAMmxB,uBAAyB,IACnG,GAAkC,QAA9B5xB,KAAKS,MAAMoxB,eACX,OACIvxB,2BAAA,KACKN,KAAK0gC,eAAe/8B,IAAWguB,EAAuB,WAAYG,EAAiB3yB,YACnFa,KAAK+xB,qBAAqB,qBAAsBL,IAK7D,MAAMiP,EAAwC,UAA9B3gC,KAAKS,MAAMoxB,eACrB+O,EAAsB,MAAKD,EAAU,MAAQ,SACnD,OACIrgC,2BAAA,KACKqgC,GAAW3gC,KAAK+xB,qBAAqB,uBAAwBL,GAC7D1xB,KAAK0gC,eAAe/8B,IAAWguB,EAAuBiP,GAAsB5gC,KAAKS,MAAMqxB,iBAAiB3yB,aAK7GuhC,eAAeG,EAAyB35B,GAC5C,OAAIlH,KAAKS,MAAMqgC,cAAgB9gC,KAAKS,MAAM2yB,eAElC9yB,gBAAC+5B,IAAa,CACV56B,IAAI,OACJ0hB,KAAMja,EACNxD,UAAWm9B,EACXvG,UAAW,CAAEl0B,OAAQpG,KAAKS,MAAMqgC,aAAc1N,eAAgBpzB,KAAKS,MAAM2yB,kBAI9E9yB,gBAAA,QAAMoD,UAAWm9B,GAAkB35B,GAGtC6qB,qBAAqB5mB,EAAkBumB,GAC3C,MAAMM,EAAa,GAAGN,EAAgB1xB,KAAKmxB,gBAAkBnxB,KAAKsxB,oBAAoBnmB,IACtF,OAAO7K,gBAAA,QAAMoD,UAAWsuB,IAGpBpnB,QAAQjL,GACZA,EAAEod,iBACF/c,KAAKwgC,YAAcxgC,KAAKwgC,WACxBxgC,KAAKqB,SAAS,CAAEsJ,OAAQ3K,KAAKwgC,aAC7BxgC,KAAK6wB,mBAAoB,EACrB7wB,KAAKS,MAAMwxB,UACXjyB,KAAKS,MAAMwxB,SAASjyB,KAAKmB,U,uBCpIrC,IAAItB,EAAe,EAAQ,QAe3BtI,EAAOC,QAJP,SAAsBsI,GACpB,OAAOD,EAAaG,KAAKC,SAAUH,IAAQ,I,qBCZ7C,IAAIw7B,EAAa,EAAQ,QACrByF,EAAe,EAAQ,QA2B3BxpC,EAAOC,QALP,SAAkB8H,GAChB,MAAuB,iBAATA,GACXyhC,EAAazhC,IArBF,mBAqBYg8B,EAAWh8B,K,qBCzBvC,IAAI0hC,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QAevB1pC,EAAOC,QALP,SAAmBuhB,EAAQjZ,GACzB,IAAIR,EAAQ2hC,EAASloB,EAAQjZ,GAC7B,OAAOkhC,EAAa1hC,GAASA,OAAQZ,I,0YCmBhC,SAAS8S,EAAMlS,EAAe3F,EAAaC,GAC9C,OAAID,GAAOC,EACAF,KAAKC,IAAID,KAAKE,IAAI0F,EAAO3F,GAAMC,GAEnC,EAQJ,SAASmW,EAAqBzQ,GACjC,OAAIA,EAAMb,OAAS,EACRa,EAAM+Y,OAAO,GAAG6oB,cAAgB5hC,EAAM6hC,OAAO,GAEnC,IAAjB7hC,EAAMb,OACCa,EAAM+Y,OAAO,GAAG6oB,cAEpB,GAOJ,SAASpC,EAAO/kC,EAAsBqnC,GACzC,IAAIlpC,EAAQ6B,EAAQ7B,MAAMkpC,GAM1B,OAJKlpC,IACDA,EAAQsnC,iBAAiBzlC,GAASqnC,IAG/BlpC,EAGJ,SAASmpC,EAAqBC,EAAyB7G,GAE1D,IAAI8G,EACAC,EAAO,EAEX,OAAQjpC,IACJ,MAAMwd,EAAM0rB,KAAK1rB,MAEbwrB,IACAxpB,aAAawpB,GACbA,OAAQ7iC,GAGR8iC,GAAQzrB,EAAMyrB,EAAO/G,EACrB8G,EAAQjqB,WAAW,KACfkqB,EAAOC,KAAK1rB,MACZurB,EAAS/oC,IACVkiC,GAAa1kB,EAAMyrB,KAEtBA,EAAOzrB,EACPurB,EAAS/oC,KAKd,SAAS4kC,EACZp8B,EACAkC,EACAq+B,GACuB,IAAvB7G,EAAAj8B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAoB,IAEpB,MAAMkjC,EAAwBL,EAAqBC,EAAU7G,GAG7D,OAFA15B,EAAOuP,iBAAiBrN,EAAMy+B,GAAuB,GAE9CA,EAMJ,SAASjkB,IAAsD,IAAtC/Z,EAAAlF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAoB,GAAIwe,EAAcxe,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAClE,OAAKse,EAIEtZ,EACFiZ,MAAM,KACN9Z,IAAK8+B,GAAc3kB,EAAU2kB,IAAMA,GACnCC,KAAK,KANCl+B,EAkDR,MAAMm+B,IAAiC,oBAAXznC,SAA0BA,OAAOzC,WAAYyC,OAAOzC,SAAS2E,eAwBzF,SAASwlC,EAAU/gC,GACtB,MAAMghC,EAvBH,SAAyBhhC,GAC5B,IACI,GAAsB,iBAAXA,GAAuB8gC,EAAW,CACzC,IAAIE,EAAYpqC,SAASqqC,iBAAiBjhC,GAM1C,GAJyB,IAArBghC,EAAUtjC,SACVsjC,EAAYpqC,SAASqqC,iBAAiB,IAAIjhC,IAGrB,IAArBghC,EAAUtjC,OACV,MAAM,IAAIspB,MAEd,OAAOga,EAGX,OAAOhhC,EACT,MAAAkhC,GAEE,OADAC,QAAQC,MAAM,eAAephC,8DACtB,MAKOqhC,CAAwBrhC,GAC1C,OAAIghC,GAAaA,EAAUtjC,OAAS,EACZsjC,EAAU,GAG3BhhC,EAGJ,SAASsa,EAAiBta,GAC7B,MAAMm2B,EAAgB4K,EAAU/gC,GAChC,OA3EG,SAAeA,GAClB,QAAKA,QAIqDrC,IAApBqC,EAAQ2F,QAsE1C27B,CAAMnL,GACgCA,EAAexwB,QAnEtD,SAAmB3F,GACtB,QAAKA,QAI6CrC,IAA7BqC,EAAQuP,iBAgEzBgyB,CAAUpL,GACUA,EAGjB,KAGJ,MAAM/W,EAAqB,CAC9BoX,KAAM,IACNrZ,SAAU,IACVqD,MAAO,IACPghB,SAAU,KAKDC,EAAoB,CAC7B,UACA,aACA,2CACA,yBACA,2BACA,yBACA,SACA,SACA,QACA,yBACA,kBACA,kBACA,oDA0GG,SAASC,EAAiCC,GAK7C,OAF0CA,GAFf,K,yMChUhB,MAAMC,UAAuBriC,gBAKjC0I,SAEH,MAAAkR,EAA4Ela,KAAKS,OAA3E,OAAEgQ,EAAM,UAAE/M,EAAS,UAAEsZ,EAAS,SAAEF,EAAUrd,IAAKma,GAAeM,EAAPzZ,EAAKsZ,YAAAG,EAAAF,GAE5D4oB,EAAwBnlB,YAC1BC,IAAWha,EAAW,gBAAiB,CACnC+M,SACAqM,aAEJE,GAGJ,OAAO1c,gBAACsZ,EAAG7a,OAAAuM,OAAA,GAAK7K,EAAK,CAAEiD,UAAWk/B,MAhBxBD,EAAAl4B,aAA8C,CACxDhL,IAAK,O,qBChBb,IAAIojC,EAAU,EAAQ,QAgCtBtrC,EAAOC,QALP,SAAauhB,EAAQiU,EAAM1C,GACzB,IAAI1qB,EAAmB,MAAVmZ,OAAiBra,EAAYmkC,EAAQ9pB,EAAQiU,GAC1D,YAAkBtuB,IAAXkB,EAAuB0qB,EAAe1qB,I,0IC8CxC,MAAMkjC,EAA8DvqB,IAAqB,IAApB,aAAEwqB,GAAcxqB,EACxF,OAAKwqB,EAKDziC,gBAAA,QAAMoD,UAAU,gCACZpD,gBAAA,YAAOyiC,IALJ,MAaR,MAAMC,UAAoB1iC,YAG7BE,YAAmBC,GACfC,MAAMD,GA+HO,KAAAwiC,UAAYC,UACzB3qC,EAAMwkB,iBACN,MAAMomB,EAAwDnjC,KAAKS,MAAM4hB,KAAKxf,IAAI,CAACugC,EAAwBljC,KACvG,MAAMgnB,EAAuBlnB,KAAKmB,MAAMkiC,OAAOloC,OAAO+E,IACtD,MAAO,CACHkjC,QAAS,CAAEE,WAAYF,EAAQE,WAAaC,cAAeH,EAAQG,eACnEjkC,MAAO4nB,WAGTlnB,KAAKS,MAAM+iC,SAASL,GAC1BnjC,KAAKqB,SAAUoK,IACJ,CAAE43B,OAAQ53B,EAAc43B,OAAQI,aAAa,MAS3C,KAAAC,eAAiBR,UAAoE,IAAAS,EAClGprC,EAAMwkB,iBACN,MAAM6mB,EAA4BzoC,OAAOma,SAAgD,QAAxCquB,EAACprC,EAAMwI,OAAOtE,aAAa,qBAAa,IAAAknC,IAAI,GAAI,IACjG,GAAIjiC,mBAAiB0oB,kBAAkBwZ,GACnC,OAAOC,QAAQC,OAAO,IAAI/b,MAAM,uCAEpC,MAAM2B,EAAW,CACb2Z,OAAQrjC,KAAKmB,MAAMkiC,OAAOxgC,IAAI,CAACvD,EAAeY,KAC1C,MAAM6jC,EAA4B/jC,KAAKS,MAAM4hB,KAAKlnB,OAAO+E,IACE,IAAD8jC,EAA1D,OAAI9jC,IAAU0jC,GAAqBG,EAAWT,YAC1CtjC,KAAKikC,qBAAqBC,SACtBH,EAAWT,WACW,QAAtBU,EAACD,EAAWI,kBAAU,IAAAH,MAAqC,KAAvBzrC,EAAMwI,OAAOzB,OAE9C/G,EAAMwI,OAAOzB,OAEjBA,KAIf,OADAU,KAAKqB,SAASqoB,GACPma,QAAQO,WAtKfpkC,KAAKmB,MAAQ,CAAEkiC,OAAQrjC,KAAKS,MAAM4hB,KAAKxf,IAAI,IAAM,IAAK4gC,aAAa,GAGnEzjC,KAAKikC,qBAAuB,IAAII,aAChC,IAAK,MAAMjB,KAAWpjC,KAAKS,MAAM4hB,KAAM,CACV,IAADiiB,EAAxB,GAAIlB,EAAQE,WACRtjC,KAAKikC,qBAAqBC,SAASd,EAAQE,WAA8B,QAApBgB,EAAElB,EAAQe,kBAAU,IAAAG,OAK9E/wB,sBAAsBC,EAA8BJ,GACvD,OACIpT,KAAKS,MAAMuC,UAAYwQ,EAAUxQ,SACjChD,KAAKS,MAAM8jC,wBAA0B/wB,EAAU+wB,uBAC/CvkC,KAAKS,MAAM+jC,mBAAqBhxB,EAAUgxB,kBAC1CxkC,KAAKS,MAAMgkC,mCAAqCjxB,EAAUixB,oCAOzDzkC,KAAKS,MAAM4hB,KAAKqiB,MAAM,CAACtB,EAAwBljC,IAExCsT,EAAU6O,KAAKlnB,OAAO+E,IAAQikC,aAAef,EAAQe,YACrD3wB,EAAU6O,KAAKlnB,OAAO+E,IAAQojC,aAAeF,EAAQE,YACrD9vB,EAAU6O,KAAKlnB,OAAO+E,IAAQqjC,gBAAkBH,EAAQG,iBAShEvjC,KAAKmB,MAAMsiC,cAAgBrwB,EAAUqwB,cACpCzjC,KAAKmB,MAAMkiC,OAAOqB,MAAM,CAACplC,EAAeY,IAC9BZ,IAAU8T,EAAUjY,OAAO+E,OASvC8I,SACH,OACI1I,2BAAA,MACMN,KAAKmB,MAAMsiC,aAAekB,kBAAgBC,YAAY5kC,KAAKS,MAAM4hB,OAC/D/hB,gBAAA,OAAKoD,UAAU,4DACXpD,gBAAA,MAAIoD,UAAU,6BAA6B1D,KAAKS,MAAMuC,SACtD1C,gBAAA,OAAKoD,UAAU,oCACXpD,gBAAA,QACIkjC,SAAUxjC,KAAKijC,UACfv/B,UAAU,yBAAwB,aACtB1D,KAAKS,MAAM+jC,iBACvBK,aAAa,MAEZ7kC,KAAKS,MAAM4hB,KACP7M,OAAQ4tB,IAEA1hC,mBAAiB0oB,kBAAkBgZ,EAAQE,cAC3C5hC,mBAAiB0oB,kBAAkBgZ,EAAQG,gBAGnD1gC,IAAI,CAACugC,EAAwBljC,KAAiB,IAAA4kC,EAAAC,EAC3C,MAAM7d,EAAuBlnB,KAAKmB,MAAMkiC,OAAOloC,OAAO+E,IACtD,OACII,gBAAA,OAAKR,IAAKsjC,EAAQE,WAAY5/B,UAAU,yBACpCpD,gBAAA,SACI0E,GAAOo+B,EAAQE,WAAX,SACJjgB,QAAS+f,EAAQE,WACjB5/B,UAAU,2BAET,GAAG0/B,EAAQG,gBAAiBH,EAAQe,WAAa,KAAO,KACxDnkC,KAAKikC,qBAAqBhD,SAASmC,EAAQE,aACxChjC,gBAACwiC,EAAyB,CACtBC,aAAc/iC,KAAKS,MAAMgkC,mCAGjCnkC,gBAAA,SACIvE,KAAK,OACLiJ,GAAOo+B,EAAQE,WAAX,SACJ5/B,UAAU,0BACV5D,IAAKsjC,EAAQE,WAAU,aACXpjC,EACZgE,SAAUlE,KAAK0jC,eACfpkC,MAAO4nB,EAAY,aACPkc,EAAQG,cAAa,gBACA,QADAuB,EAClB1B,EAAQe,kBAAU,IAAAW,KACjCE,SAA4B,QAApBD,EAAE3B,EAAQe,kBAAU,IAAAY,WAMpDzkC,gBAAA,OAAKoD,UAAU,yBACXpD,gBAAC0G,IAAM,cACShH,KAAKS,MAAM+jC,iBACvB9gC,UAAU,mCACVoZ,SAAU9c,KAAKilC,2BAEdjlC,KAAKS,MAAM+jC,sBAOnCxkC,KAAKmB,MAAMsiC,aAAezjC,KAAKS,MAAM8jC,uBAKlD,gCAEI,OAD0B,IACnBvkC,KAAKikC,qBAAqBiB,YAAYC,UAAWC,GAAuBA,M,uBCrNvF,IAAIC,EAAgB,EAAQ,QAGxBC,EAAa,mGAGbC,EAAe,WASfhM,EAAe8L,GAAc,SAASltB,GACxC,IAAIvY,EAAS,GAOb,OAN6B,KAAzBuY,EAAOqtB,WAAW,IACpB5lC,EAAOO,KAAK,IAEdgY,EAAOzF,QAAQ4yB,GAAY,SAASG,EAAOC,EAAQC,EAAOC,GACxDhmC,EAAOO,KAAKwlC,EAAQC,EAAUlzB,QAAQ6yB,EAAc,MAASG,GAAUD,MAElE7lC,KAGTrI,EAAOC,QAAU+hC,G,8ICpBV,SAASl2B,EAAOwiC,GAA6C,QAAAC,EAAAtnC,UAAAC,OAAjBsnC,EAAiB,IAAAhuC,MAAA+tC,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAjBD,EAAiBC,EAAA,GAAAxnC,UAAAwnC,GAChE,OAAKH,EAIEA,EAAgBnzB,QAAQ,WAAY,CAAC+yB,EAAevlC,KACvD,GAAIA,GAAS6lC,EAAWtnC,OACpB,OAAOgnC,EAGX,MAAMnmC,EAAQymC,EAAW7lC,GAEzB,MAAqB,iBAAVZ,GAAuBA,EAIb,iBAAVA,EACAA,EAGJA,EAAMH,WAPF,KAXJ,GA8BR,SAAS8mC,EAAmB3mC,GAC/B,OAAQA,GAA0B,iBAAVA,IAWrB,SAAcA,GAEjB,IAAKA,GAA0B,iBAAVA,EACjB,OAAOA,EAGX,GAAIA,EAAMyE,KACN,OAAOzE,EAAMyE,OAGjB,OAAOzE,EAAMoT,QAAQ,aAAc,IArBY3O,CAAKzE,K,qBCvCxD,IAAIm8B,EAAO,EAAQ,QAsBnBlkC,EAAOC,QAJG,WACR,OAAOikC,EAAKgG,KAAK1rB,Q,iaCFJ,MAAMlM,UAA+BvJ,gBAsBhDE,YAAYC,GACRC,MAAMD,GATF,KAAAylC,WAAqB,EAUzBlmC,KAAKmmC,SAAWnmC,KAAKS,MAAMsJ,MAAQrQ,KAAK0sC,KAAKpmC,KAAKS,MAAMsJ,MAAQ/J,KAAKS,MAAMuJ,cAAiB,EAC5FhK,KAAKkmC,WAAaxsC,KAAKslC,OAAOh/B,KAAKS,MAAMwJ,cAAgB,GAAKjK,KAAKS,MAAMuJ,cACzEhK,KAAKqmC,KAAO,GACZ,MAAMC,EAAWtmC,KAAKS,MAAMmJ,IAAI+S,MAAM,KAEtC,GAAI2pB,EAAS,GAAI,CACbtmC,KAAK4J,IAAM08B,EAAS,GACpB,MAAMC,EAAcD,EAAS,GAAG3pB,MAAM,KACtC3c,KAAKwmC,KAAOD,EAAY,GAAK,IAAIA,EAAY,GAAO,GACpD,MAAME,EAAaF,EAAY,GAAG5pB,MAAM,KAExC,IAAK,MAAM7S,KAAO28B,EAAY,CAC1B,MAAMC,EAAU58B,EAAI6S,MAAM,KAEtB3c,KAAKS,MAAMqJ,MAAQ48B,EAAQ,KAC3B1mC,KAAKqmC,KAAKK,EAAQ,IAAMA,EAAQ,SAGrC,CACH,MAAMH,EAAcD,EAAS,GAAG3pB,MAAM,KACtC3c,KAAK4J,IAAM28B,EAAY,GACvBvmC,KAAKwmC,KAAOD,EAAY,GAAK,IAAIA,EAAY,GAAO,IAIrDv9B,SAEH,MAAAkR,EAoBSla,KAAKS,OApBR,UACFiD,EAAS,QACTijC,EAAO,IACP78B,EAAG,MACHC,EAAK,aACLC,EAAY,aACZC,EAAY,aACZC,EAAY,SACZT,EAAQ,kBACRU,EAAiB,cACjBC,EAAa,cACbw8B,EAAa,UACb5pB,EAAS,SACTgC,EAAQ,KACRhmB,EACAyG,IAAKma,EACLitB,QAASC,EACT,aAAch5B,EAAK,KACnBjK,GAEHqW,EADMzZ,EAAKsZ,YAAAG,EAAAF,GAGZha,KAAKmmC,SAAWnmC,KAAKS,MAAMsJ,MAAQrQ,KAAK0sC,KAAKpmC,KAAKS,MAAMsJ,MAAQ/J,KAAKS,MAAMuJ,cAAiB,EAC5FhK,KAAKkmC,WAAaxsC,KAAKslC,OAAOh/B,KAAKS,MAAMwJ,cAAgB,GAAKjK,KAAKS,MAAMuJ,cACzEhK,KAAKqmC,KAAO,GACZ,MAAMC,EAAWtmC,KAAKS,MAAMmJ,IAAI+S,MAAM,KAEtC,GAAI2pB,EAAS,GAAI,CACbtmC,KAAK4J,IAAM08B,EAAS,GACpB,MAAMC,EAAcD,EAAS,GAAG3pB,MAAM,KACtC3c,KAAKwmC,KAAOD,EAAY,GAAK,IAAIA,EAAY,GAAO,GACpD,MAAME,EAAaF,EAAY,GAAG5pB,MAAM,KAExC,IAAK,MAAMoqB,KAAaN,EAAY,CAChC,MAAMC,EAAUK,EAAUpqB,MAAM,KAE5B3c,KAAKS,MAAMqJ,MAAQ48B,EAAQ,KAC3B1mC,KAAKqmC,KAAKK,EAAQ,IAAMA,EAAQ,SAGrC,CACH,MAAMH,EAAcD,EAAS,GAAG3pB,MAAM,KACtC3c,KAAK4J,IAAM28B,EAAY,GACvBvmC,KAAKwmC,KAAOD,EAAY,GAAK,IAAIA,EAAY,GAAO,GAGxD,MAAMS,EAAoBvpB,YAAgBC,IAAWha,GAAYsZ,GAE3DiqB,EAAwBxpB,YAC1BC,IAAWkpB,EAAe,iBAAkB,CACxC,CAAC,kBAAkB5tC,KAAWA,IAElCgkB,GAGJ,OACI1c,gBAACsZ,EAAG,CAAClW,UAAWsjC,EAAmBnjC,KAAK,aAAY,aAAaiK,GAC7DxN,gBAACwmC,EAAO/nC,OAAAuM,OAAA,GAAK7K,EAAK,CAAEiD,UAAWujC,IAC1BjnC,KAAKknC,uBAMdC,aAAaC,GACjB,MAAMr9B,EAAQ/J,KAAKS,MAAMuJ,aAAgBo9B,EACnC/kB,EAAOtjB,OAAOsjB,KAAKriB,KAAKqmC,MAC9B,IAAIgB,EAASD,EAAO,EAAI,IAAIpnC,KAAKS,MAAMqJ,OAAOC,IAAU,GAMxD,OAJAsY,EAAKzF,QAAS9c,IACVunC,EAASA,EAAS,GAAGA,KAAUvnC,KAAOE,KAAKqmC,KAAKvmC,KAAS,IAAIA,KAAOE,KAAKqmC,KAAKvmC,OAG3EE,KAAK4J,IAAMy9B,EAASrnC,KAAKwmC,KAG5Bc,yBAAyBlc,EAAemc,EAAkB7jC,GAC9D,MAAMkG,EAAM29B,OAAU7oC,EAAYsB,KAAKmnC,aAAannC,KAAKkmC,YAAc9a,EAAO,GAAK,IAC7Eoc,EAAYpc,EAAOprB,KAAKS,MAAMgnC,OAASznC,KAAKS,MAAMinC,OAClDC,EAAkBvc,EAAOprB,KAAKS,MAAMmnC,kBAAoB5nC,KAAKS,MAAMonC,kBACnEh7B,EAAYue,EAAO,QAAU,OAC7B3rB,EAAM8nC,EAAU,OAAS,IAE/B,OACIjnC,gBAACqiC,IAAc,CAAC7lB,SAAUyqB,EAAS7jC,UAAWA,GAC1CpD,gBAAC0qB,IAAc,CACXhmB,GAAIwiC,EACJ1mB,KAAMlX,EACNwhB,KAAMA,EACNC,UAAWD,EAAI,mBACGuc,EAClBloC,IAAKA,EAAG,aACI2rB,EAAOprB,KAAKS,MAAM2J,cAAgBpK,KAAKS,MAAM0J,kBAAiB,gBAC3Do9B,EACfpc,iBAAkBnrB,KAAKS,MAAM0qB,kBAE5BC,EAAOprB,KAAKS,MAAMgJ,SAAWzJ,KAAKS,MAAMyJ,cAE5Cs9B,GACGlnC,gBAACoK,sBAAmB,CAACmC,UAAWA,EAAW7H,GAAI2iC,EAAiB5mC,OAAQymC,GACnEpc,EAAO,OAAS,aAO7B0c,wBAAwBV,GAC5B,MAAM32B,EAASzQ,KAAKkmC,aAAekB,EAC7Bx9B,EAAM5J,KAAKmnC,aAAaC,GAG9B,OAFAA,GAAQ,EAGJ9mC,gBAACqiC,IAAc,CAAClyB,OAAQA,GACpBnQ,gBAAC0qB,IAAc,CAAClK,KAAMrQ,OAAS/R,EAAYkL,EAAKuhB,iBAAkBnrB,KAAKS,MAAM0qB,kBACxEic,IAMTW,mBACJ,OACIznC,gBAACqiC,IAAc,KACXriC,gBAAC0qB,IAAc,CAACvrB,IAAI,QAAM,QAK9BynC,qBAEJ,IAAIc,EAAehoC,KAAKkmC,WACpB+B,EAAgBjoC,KAAKmmC,SAAWnmC,KAAKkmC,WAAa,EACtD,MAAMgC,EAAcloC,KAAKmmC,SAAWt8B,EAAuBs+B,gBAAkBH,EAAe,EACtFI,EAAepoC,KAAKmmC,SAAWt8B,EAAuBs+B,gBAAkBF,EAAgB,EAE9FD,EAAetuC,KAAKC,IAAIquC,EANC,GAOzBC,EAAgBvuC,KAAKC,IAAIsuC,EAPA,GAQzB,MAAMI,EAAQ,GAERC,EAAuBN,GAVJ,EAUuCC,IAD1CC,GAAe,EAAI,GAEnCK,EAAgB7uC,KAAKE,IAAIoG,KAAKkmC,WAAaoC,EAAsB,GACjEE,EAAW9uC,KAAKC,IAClB4uC,EAAgB,GAAKH,EAAe,EAAI,IAAMF,EAAc,EAAI,GAChEE,EAAepoC,KAAKmmC,SAAW,EAAInmC,KAAKmmC,UAGxC+B,IACAG,EAAMloC,KAAKH,KAAK8nC,wBAAwB,IACxCO,EAAMloC,KAAKH,KAAK+nC,qBAGpB,IAAK,IAAI1/B,EAAIkgC,EAAelgC,EAAImgC,EAAUngC,IACtCggC,EAAMloC,KAAKH,KAAK8nC,wBAAwBz/B,IAQ5C,OALI+/B,IACAC,EAAMloC,KAAKH,KAAK+nC,oBAChBM,EAAMloC,KAAKH,KAAK8nC,wBAAwB9nC,KAAKmmC,SAAW,KAIxD7lC,2BAAA,KACKN,KAAKsnC,0BAAyB,EAA2B,IAApBtnC,KAAKkmC,WAAkB,YAC5DmC,EACAroC,KAAKsnC,0BAAyB,EAAMtnC,KAAKkmC,aAAelmC,KAAKmmC,SAAW,EAAG,UAvN1Et8B,EAAAY,aAAsD,CAChEhL,IAAK,MACLonC,QAAS,KACT,aAAc,aACd98B,MAAO,EACPC,aAAc,GACdC,aAAc,GAGMJ,EAAAs+B,eAAyB,G,wMCbtC,MAAMM,UAAmBnoC,gBAO7B0I,SAEH,MAAAkR,EAUSla,KAAKS,OAVR,UACFiD,EAAS,cACTkjC,EAAa,UACb5pB,EAAS,KACThkB,EACAyG,IAAKma,EACLitB,QAASC,EACT,aAAch5B,EAAK,KACnBjK,GAEHqW,EADMzZ,EAAKsZ,YAAAG,EAAAF,GAGNgtB,EAAoBvpB,YAAgBC,IAAWha,GAAYsZ,GAE3DiqB,EAAwBxpB,YAC1BC,IAAWkpB,EAAe,iBAAkB,CACxC,CAAC,kBAAkB5tC,KAAWA,IAElCgkB,GAGJ,OACI1c,gBAACsZ,EAAG,CAAClW,UAAWsjC,EAAmBnjC,KAAK,aAAY,aAAaiK,GAC7DxN,gBAACwmC,EAAO/nC,OAAAuM,OAAA,GAAK7K,EAAK,CAAEiD,UAAWujC,OA/B7BwB,EAAAh+B,aAA0C,CACpDhL,IAAK,MACLonC,QAAS,KACT,aAAc,e,6UCHP,MAAM7d,UAAgB1oB,gBAiBjCE,YAAYC,GACRC,MAAMD,GAHF,KAAA2a,YAAsB,EAI1Bpb,KAAKS,MAAQA,EAEbT,KAAK0oC,QAAU,KACf1oC,KAAK2oC,iBAAmB3oC,KAAK2oC,iBAAiB99B,KAAK7K,MACnDA,KAAK4oC,qBAAuB5oC,KAAK4oC,qBAAqB/9B,KAAK7K,MAC3DA,KAAK6oC,oBAAsB7oC,KAAK6oC,oBAAoBh+B,KAAK7K,MACzDA,KAAK8oC,OAAS9oC,KAAK8oC,OAAOj+B,KAAK7K,MAC/BA,KAAK4K,QAAU5K,KAAK4K,QAAQC,KAAK7K,MACjCA,KAAK+oC,gBAAkB/oC,KAAK+oC,gBAAgBl+B,KAAK7K,MACjDA,KAAKgpC,iBAAmBhpC,KAAKgpC,iBAAiBn+B,KAAK7K,MACnDA,KAAKipC,SAAWjpC,KAAKipC,SAASp+B,KAAK7K,MACnCA,KAAKm2B,MAAQn2B,KAAKm2B,MAAMtrB,KAAK7K,MAC7BA,KAAKo2B,MAAQp2B,KAAKo2B,MAAMvrB,KAAK7K,MAC7BA,KAAKe,OAAS,KAGXsS,oBACHrT,KAAKe,OAASsa,YAAiBrb,KAAKS,MAAMM,QAC1Cf,KAAK+1B,eAGFziB,qBACHtT,KAAK+1B,eAGFliB,uBACH7T,KAAK6oC,sBAGFC,OAAOh9B,GACV9L,KAAK0oC,QAAU58B,EAGZ9C,SACH,IAAKhJ,KAAKS,MAAMkK,OACZ,OAAO,KAGX,MAAAuP,EAgBIla,KAAKS,OAhBH,UACFuc,EAAS,OACTrS,EAAM,OACN5J,EAAM,gBACNkc,EAAe,UACfC,EAAS,UACTxZ,EAAS,eACT0Z,EAAc,UACdC,EAAS,UACTxQ,EAAS,UACTqpB,EAAS,OACTx6B,EAAM,OACN8P,EAAM,kBACN8R,EAAiB,KACjBzZ,GAEHqW,EADMsB,EAAUzB,YAAAG,EAAAF,GAGXwD,EAAUC,YAAgBC,IAAW,oBAAqB1d,KAAKS,MAAM2c,gBAAiBpd,KAAKS,MAAMuc,WAEjGW,EAAgBF,YAAgBC,IAAW,cAAe,OAAQ1d,KAAKS,MAAMiD,WAAY1D,KAAKS,MAAMuc,WAE1G,OACI1c,gBAACsd,IAAa,CACVla,UAAWia,EACX5c,OAAQA,EACR4J,OAAQA,EACRuS,UAAWA,EACXrQ,UAAWA,EACXoQ,gBAAiBA,EACjBiZ,UAAWA,EACX7Y,UAAWA,EACXkZ,SAAUv2B,KAAKgpC,iBACfttC,OAAQA,EACR4hB,kBAAmBA,GAEnBhd,gBAAA,MAAAvB,OAAAuM,OAAA,GAASkQ,EAAU,CAAE3X,KAAMA,EAAMH,UAAW8Z,EAAS1R,IAAK9L,KAAK8oC,WAKnE/S,eACA/1B,KAAKS,MAAMkK,OACX3K,KAAKm2B,QAELn2B,KAAKo2B,QAILD,QACJn2B,KAAKob,YAAa,EAClBpb,KAAK2oC,mBACA3oC,KAAKS,MAAMkK,QACZ3K,KAAK4K,UAILwrB,QACJp2B,KAAK6oC,sBACD7oC,KAAKS,MAAMkK,QACX3K,KAAK4K,UAILg+B,qBAAqBjpC,GACzB,IAAKK,KAAKe,OACN,OAGJ,MAAMA,EAASpB,EAAEoB,OAGbpB,EAAEoB,SAAWf,KAAKe,QACjBf,KAAKe,OAAOob,SAASpb,IACtBpB,EAAEoB,SAAWf,KAAK0oC,SAChB1oC,KAAK0oC,SAAW1oC,KAAK0oC,QAAQvsB,SAASpb,IAEpCf,KAAKS,MAAMkK,QACX3K,KAAK4K,UAKT+9B,mBACC3oC,KAAKe,QAGN8gC,MACA,CAAC,QAAS,cAAcjlB,QAASrkB,IAC7BZ,SAAS2Y,iBAAiB/X,EAAOyH,KAAK4oC,sBAAsB,KAEhE5oC,KAAKe,OAAOuP,iBAAiB,WAAYtQ,KAAK+oC,iBAAiB,GAC/D/oC,KAAKe,OAAOuP,iBAAiB,UAAWtQ,KAAKipC,UAAU,IAIvDJ,sBACC7oC,KAAKe,QAGN8gC,MACA,CAAC,QAAS,cAAcjlB,QAASrkB,IAC7BZ,SAASmc,oBAAoBvb,EAAOyH,KAAK4oC,sBAAsB,KAEnE5oC,KAAKe,OAAO+S,oBAAoB,WAAY9T,KAAK+oC,iBAAiB,GAClE/oC,KAAKe,OAAO+S,oBAAoB,UAAW9T,KAAKipC,UAAU,IAI1DD,mBACJ1xB,WAAW,KACP,MAAM2E,EAAYtkB,SAASukB,cACvBlc,KAAK0oC,UAAY1oC,KAAK0oC,QAAQvsB,SAASF,IACvCjc,KAAKo2B,SAEV,GAGC2S,kBACA/oC,KAAKob,aACLpb,KAAKob,YAAa,EAClB9D,WAAW,KACP,MAAM2E,EAAYtkB,SAASukB,cACvBlc,KAAK0oC,UAAY1oC,KAAK0oC,QAAQvsB,SAASF,IACvCjc,KAAKo2B,SAEV,IAIH6S,SAAStpC,GACK,IAAdA,EAAEgJ,QACF3I,KAAKob,YAAa,EACXpb,KAAKS,MAAMkK,QAAwB,KAAdhL,EAAEgJ,SAAkB3I,KAAKS,MAAM+K,QAC3DxL,KAAKS,MAAM+K,SAIXZ,UACA5K,KAAKS,MAAMqc,UAIX9c,KAAKS,MAAM+K,QACXxL,KAAKS,MAAM+K,UAxMLwd,EAAAve,aAAuC,CACjDE,QAAQ,EACRkC,UAAW,QACXrB,OAAQA,S,mVCDD,MAAM09B,UAAe5oC,gBAChCE,YAAYC,GACRC,MAAMD,GAENT,KAAKmB,MAAQ,CACTgoC,YAAa,MAIdt1B,uBACC7T,KAAKmB,MAAMgoC,aACXnpC,KAAKmB,MAAMgoC,YAAYvwC,SAIxBoQ,SACH,IAAI8H,EAAO,KACX,OAAK+wB,KAIA7hC,KAAKS,MAAMqQ,MAAS9Q,KAAKmB,MAAMgoC,cAChCr4B,EAAOnZ,SAAS2E,cAAc,OAC9B3E,SAASC,KAAK4E,YAAYsU,GAC1B9Q,KAAKqB,SAAS,CAAE8nC,YAAar4B,KAE1Bs4B,uBAAappC,KAAKS,MAAMue,SAAUhf,KAAKS,MAAMqQ,MAAQA,IARjD,M,o7BCXJ,MAAMyQ,UAAcjhB,gBAkC/BE,YAAYC,GACRC,MAAMD,GACNT,KAAKjG,QAAU,KACfiG,KAAK8L,IAAMxL,cACXN,KAAKqpC,SAAU,EAEfrpC,KAAKspC,sBAAwBtpC,KAAKspC,sBAAsBz+B,KAAK7K,MAC7DA,KAAKupC,qBAAuBvpC,KAAKupC,qBAAqB1+B,KAAK7K,MAC3DA,KAAKwpC,yBAA2BxpC,KAAKwpC,yBAAyB3+B,KAAK7K,MACnEA,KAAKypC,cAAgBzpC,KAAKypC,cAAc5+B,KAAK7K,MAC7CA,KAAK0pC,WAAa1pC,KAAK0pC,WAAW7+B,KAAK7K,MACvCA,KAAK2pC,UAAY3pC,KAAK2pC,UAAU9+B,KAAK7K,MACrCA,KAAK4pC,UAAY5pC,KAAK4pC,UAAU/+B,KAAK7K,MAErCA,KAAKmB,MAAQ,CACT0oC,SAAS,EACTl/B,OAAQlK,EAAMkK,SAAU,EACxBm/B,iBAAkB,MAGlBrpC,EAAMkK,QACN3K,KAAK+pC,QAIN12B,oBACCrT,KAAKS,MAAMif,SACX1f,KAAKS,MAAMif,UAEf1f,KAAKqpC,SAAU,EAEf,MAAMtvC,EAAUpC,SAAS2E,cAAc,OACvCvC,EAAQwC,aAAa,WAAY,MACjCxC,EAAQ7B,MAAMQ,WAAa,SAC3BqB,EAAQ7B,MAAMsB,SAAW,WACzBwG,KAAKjG,QAAUA,EACfpC,SAASC,KAAK4E,YAAYzC,GAE1BiG,KAAKwsB,gBACDxsB,KAAKS,MAAM+rB,2BAA2Bwd,YAChChqC,KAAKS,MAAM+rB,gBACX70B,SAASmB,cAAc,IAAIkH,KAAKS,MAAM+rB,iBAE5CxsB,KAAKmB,MAAMwJ,SAAW3K,KAAKmB,MAAM0oC,SACjC7pC,KAAK+pC,QAINl2B,uBACC7T,KAAKS,MAAMof,QACX7f,KAAKS,MAAMof,SAEX7f,KAAKmB,MAAMwJ,QACX3K,KAAKiqC,SAETjqC,KAAKqpC,SAAU,EAEXrpC,KAAKjG,SACLiG,KAAKjG,QAAQnB,SAId0a,mBAAmB42B,EAAyBC,IAE1CnqC,KAAKmB,MAAMwJ,SAAWw/B,EAAUx/B,QAChC3K,KAAKS,MAAM2pC,kCAAoCF,EAAWE,kCAE3D9yB,WAAW,KACP,MAAM+yB,EAAsBrqC,KAAKspC,wBACjC,GAAIe,GAAuBA,EAAoB5rC,OAAS,GAAK4rC,EAAoB,GAAI,CACnDA,EAAoB,GAC5BtgB,UAE3B,KAIJugB,0BAA0B92B,GACzBA,EAAU7I,SAAW3K,KAAKS,MAAMkK,QAChC3K,KAAKqB,SAAS,CAAEsJ,OAAQ6I,EAAU7I,SAInC3B,SAIH,GAHIhJ,KAAKmB,MAAMwJ,SAAW3K,KAAKmB,MAAM0oC,SACjC7pC,KAAK+pC,QAEY,OAAjB/pC,KAAKjG,QAAkB,CACvB,MAAAmgB,EA4BIla,KAAKS,OA5BH,cACF8pC,EAAa,eACbC,EAAc,kBACdC,EAAiB,iBACjBC,EAAgB,UAChBhnC,EAAS,UACTsZ,EAAS,gBACT2tB,EAAe,mBACfC,EAAkB,SAClBC,EAAQ,OACRlgC,EAAM,SACNmgC,EAAQ,SACRtpB,EAAQ,KACR3d,EAAI,KACJ7K,EAAI,SACJ8K,EAAQ,SACRinC,EAAQ,iBACRC,EAAgB,mBAChBC,EAAkB,SAClBC,EAAQ,OACRve,EAAM,KACNgN,EAAI,OACJnuB,EAAM,SACNwT,EAAQ,gBACRwN,EAAe,eACf2e,EACA,kBAAmBC,GAEtBlxB,EADMmxB,EAAgBtxB,YAAAG,EAAAF,GAGjBsxB,EAAkB,CACpB/nC,QAASvD,KAAKupC,qBACdx9B,YAAa/L,KAAKwpC,yBAClBhmC,QAASxD,KAAKypC,cACdn9B,UAAWtM,KAAK0pC,WAChBxxC,MAAO,CAAEm/B,QAAS,UAGhBkU,EAAgBx5B,MAAA,GACfwlB,IAAK9sB,cACLkgC,GAAe,IAClBnT,UAAWmC,GAAQgR,EAAkBA,EAAgBnT,UAAY,GACjE/X,QAASka,GAAQgR,EAAkBA,EAAgBlrB,QAAU,IAE3D+rB,EAAmBz5B,MAAA,GAClBwlB,IAAK9sB,cACLmgC,GAAkB,IACrBpT,UAAWmC,GAAQiR,EAAqBA,EAAmBpT,UAAY,GACvE/X,QAASka,GAAQiR,EAAqBA,EAAmBnrB,QAAU,IAGjEgsB,EAAW9R,EACbr5B,gBAACi3B,IAAIx4B,OAAAuM,OAAA,GACGkgC,EAAmB,CACvBtsB,GAAIlf,KAAKmB,MAAMwJ,UAAYkgC,EAC3B7tB,UAAWA,EACXtZ,UAAWga,IAAW,sBAAuB+sB,MAGjDnqC,gBAAA,OAAKoD,UAAWga,IAAW,sBAAuB,OAAQ+sB,KAGxDiB,EAAkB,oBAClBC,EAAgBjuB,IAAW,CAACguB,EAAiBhoC,EAAW1K,EAAO,cAAcA,EAAS,OAEtF4yC,EACFtrC,gBAAA,MAAAvB,OAAAuM,OAAA,CACIQ,IAAK9L,KAAK8L,KACNu/B,EAAgB,CACpB3nC,UAAWioC,EACX9nC,KAAMA,EAAI,aACE7D,KAAKmB,MAAMwJ,OAAM,kBACZ3K,KAAKS,MAAM,mBAC5BqD,SAAUA,IAEVxD,gBAAA,OAAKoD,UAAWga,IAAW,qBAAsBgtB,GAAmB7mC,KAAK,YACpEmb,IAKb,OACI1e,gBAAC4oC,EAAM,CAACp4B,KAAM9Q,KAAKjG,SACfuG,gBAAA,OAAKoD,UAAW6mC,GACZjqC,gBAACi3B,IAAIx4B,OAAAuM,OAAA,GACGggC,EACAC,EAAgB,CACpBrsB,GAAIvU,EACJiV,UAAW5f,KAAK2pC,UAChB5pB,SAAU/f,KAAK4pC,UACf5sB,UAAWA,EACXsC,OAAQqa,EACRj2B,UAAWga,IAAW,YAAa8sB,KAElCO,EACAa,GAEJH,IAMjB,OAAO,KAGH1B,QACJ,GAAI/pC,KAAKjG,QAAS,CAAC,IAAD8xC,EAId,GAHA7rC,KAAKjG,QAAQ7B,MAAMy0B,OAAS,IAAG3sB,KAAKS,MAAMksB,QAAU,KACpD3sB,KAAKjG,QAAQ7B,MAAMm/B,QAAU,QAC7Br3B,KAAKjG,QAAQ7B,MAAMQ,WAAa,UACR,IAApB6oB,EAAMuqB,UAAiB,CACvB,GAAI1xC,OAAQ,CACR,MAAM2xC,EAAU3xC,OAAO2xC,QACjBC,EAAiB5xC,OAAO0zB,WAAan2B,SAASC,KAAKkoC,YACzDnoC,SAASC,KAAKM,MAAMsB,SAAW,QAC/B7B,SAASC,KAAKM,MAAMqC,IAAM,IAAIwxC,MAC9Bp0C,SAASC,KAAKM,MAAM+zC,MAAWD,EAAH,KAC5Br0C,SAASC,KAAKM,MAAMiC,KAAO,MAG/BxC,SAASC,KAAK8L,UAAYga,IAAW/lB,SAASC,KAAK8L,UAAW,cAElE6d,EAAMuqB,WAAa,EACY,QAA/BD,EAAAl0C,SAASC,KAAK4oB,yBAAiB,IAAAqrB,GAA/BA,EAAiCtvC,aAAa,cAAe,QACzDyD,KAAKwsB,iBACLxsB,KAAKwsB,gBAAgBjwB,aAAa,cAAe,QAGrDyD,KAAKqB,SAAQ0Q,IAAC,GAAK/R,KAAKmB,OAAK,IAAE0oC,SAAS,MAIxCI,SACJ,GAAKjqC,KAAKmB,MAAMwJ,OAAhB,CAcA,GAVI3K,KAAKjG,UACLiG,KAAKjG,QAAQ7B,MAAMm/B,QAAU,OAC7B/f,WAAW,KACHtX,KAAKjG,UACLiG,KAAKjG,QAAQ7B,MAAMQ,WAAa,SAChCsH,KAAKjG,QAAQ7B,MAAMg0C,eAAe,aAEvC,IAGH3qB,EAAMuqB,WAAa,EAAG,CAAC,IAADK,EACtB,MAAMC,EAAqB,aACI,QAA/BD,EAAAx0C,SAASC,KAAK4oB,yBAAiB,IAAA2rB,GAA/BA,EAAiC5vC,aAAa,cAAe,SAG7D,MAAM8vC,EAA0B,IAAIxW,OAAO,QAAQuW,UAGnD,GAFAz0C,SAASC,KAAK8L,UAAY/L,SAASC,KAAK8L,UAAUgP,QAAQ25B,EAAyB,KAAKtoC,OAEpF3J,OAAQ,CACR,MAAM2xC,EAAUp0C,SAASC,KAAKM,MAAMqC,IACpC5C,SAASC,KAAKM,MAAMsB,SAAW,GAC/B7B,SAASC,KAAKM,MAAMqC,IAAM,GAC1B5C,SAASC,KAAKM,MAAM+zC,MAAQ,GAC5Bt0C,SAASC,KAAKM,MAAMiC,KAAO,GAC3BC,OAAO6gC,SAAS,GAAI9/B,OAAOma,SAASy2B,GAAW,IAAK,MAG5DxqB,EAAMuqB,WAAa,EAEf9rC,KAAKwsB,iBACLxsB,KAAKwsB,gBAAgBjwB,aAAa,cAAe,SAGjDyD,KAAKS,MAAM0qC,gBAAkBnrC,KAAKS,MAAM0qC,eAAezkC,SACvD1G,KAAKS,MAAM0qC,eAAezkC,QAAQqjB,QAGtC/pB,KAAKqB,SAAQ0Q,IAAC,GAAK/R,KAAKmB,OAAK,IAAE0oC,SAAS,MAGpCP,wBACJ,OAAqB,OAAjBtpC,KAAKjG,QACE,KAGJiG,KAAKjG,QAAQioC,iBAAiBQ,IAAkBZ,KAAK,OAGxD0K,mBACJ,MAAMC,EAAoBvsC,KAAKspC,wBAE/B,IACI,OAAO3xC,SAASukB,cAClB,MAAA+lB,GACE,OAA6B,OAAtBsK,EAA6B,KAAOA,EAAkB,IAI7DhD,qBAAqB5pC,GACzB,GAAIA,EAAEoB,SAAWf,KAAKmB,MAAM2oC,iBAAkB,CAE1C,GADAnqC,EAAEyQ,mBACGpQ,KAAKS,MAAMkK,SAAkC,IAAxB3K,KAAKS,MAAMoqC,SACjC,OAGJ,MAAM3U,EAAYl2B,KAAK8L,IAAIpF,QAEvB/G,EAAEoB,QAAUm1B,IAAcA,EAAU/Z,SAASxc,EAAEoB,SAAmBf,KAAKS,MAAM+K,QAC7ExL,KAAKS,MAAM+K,UAKfk+B,WAAW/pC,GACf,GAAgB,IAAZA,EAAE6sC,MACF,OAGJ,MAAMD,EAAoBvsC,KAAKspC,wBAC/B,GAA0B,OAAtBiD,EACA,OAGJ,MAAME,EAAiBF,EAAkB9tC,OACnCiuC,EAAe1sC,KAAKssC,mBAE1B,IAAIK,EAAe,EAEnB,IAAK,IAAItkC,EAAI,EAAGA,EAAIokC,EAAgBpkC,GAAK,EACrC,GAAIkkC,EAAkBlkC,KAAOqkC,EAAc,CACvCC,EAAetkC,EACf,MAIR,IAAIukC,EAAyB,KACzBjtC,EAAEktC,UAA6B,IAAjBF,GACdhtC,EAAEod,iBACF6vB,EAAKL,EAAkBE,EAAiB,IAChC9sC,EAAEktC,UAAYF,IAAiBF,EAAiB,IACxD9sC,EAAEod,iBACF6vB,EAAKL,EAAkB,IAEvBK,GACAA,EAAG7iB,QAIHyf,yBAAyB7pC,GAC7BK,KAAKqB,SAAS,CACVyoC,iBAAkBnqC,EAAEoB,SAIpB0oC,cAAc9pC,GACdK,KAAKS,MAAMkK,QAAU3K,KAAKS,MAAMyqC,UAA0B,KAAdvrC,EAAEgJ,SAAkB3I,KAAKS,MAAM+K,QAC3ExL,KAAKS,MAAM+K,SAIXm+B,UAAU74B,EAAmB4P,QACLhiB,IAAxBsB,KAAKS,MAAMqqC,UACX9qC,KAAKS,MAAMqqC,gBAEoBpsC,IAA/BsB,KAAKS,MAAMkqC,sBAA0EjsC,IAAzCsB,KAAKS,MAAMkqC,gBAAgB/qB,WACvE5f,KAAKS,MAAMkqC,gBAAgB/qB,UAAU9O,EAAM4P,GAI3CkpB,UAAU94B,QACcpS,IAAxBsB,KAAKS,MAAM+gB,UACXxhB,KAAKS,MAAM+gB,WAEfxhB,KAAKiqC,cAC8BvrC,IAA/BsB,KAAKS,MAAMkqC,sBAAyEjsC,IAAxCsB,KAAKS,MAAMkqC,gBAAgB5qB,UACvE/f,KAAKS,MAAMkqC,gBAAgB5qB,SAASjP,GAEpC9Q,KAAKqpC,SACLrpC,KAAKqB,SAAS,CAAEsJ,QAAQ,KA7YlB4W,EAAA9W,aAAqC,CAC/CE,QAAQ,EACR4hB,WAAW,EACXye,iBAAkB,MAClBC,mBAAoB,SACpBpnC,KAAM,SACNgnC,UAAU,EACVK,UAAU,EACVve,OAAQ,IACR7oB,SAAU,EACV61B,MAAM,EACNgR,gBAAiB,CACblrB,QAASU,IAAmBoB,OAEhCqpB,mBAAoB,CAChBxrB,cAAc,EACdK,QAASU,IAAmBoX,OAIrBhW,EAAAuqB,UAAoB,E,6CChCxB,MAAMpqB,UAAkBphB,gBAK5B0I,SACH,MAAAkR,EAAyDla,KAAKS,OAAxD,UAAEiD,EAAS,UAAEsZ,EAAS,IAAEvd,EAAG,GAAEuF,GAAmBkV,EAAZsB,EAAUzB,YAAAG,EAAAF,GAC9CJ,EAAMna,GAAO,MACb+d,EAAUC,YAAgBC,IAAWha,EAAW,mBAAoBsZ,GAC1E,OAAO1c,gBAACsZ,EAAG7a,OAAAuM,OAAA,GAAKkQ,EAAU,CAAE9X,UAAW8Z,MAR7BkE,EAAAjX,aAAyC,CACnDhL,IAAK,O,wCCFE,MAAMw1B,UAAoB30B,gBAK9B0I,SACH,MAAAkR,EAAqDla,KAAKS,OAApD,UAAEiD,EAAS,UAAEsZ,EAAS,IAAEvd,GAAoBya,EAAZsB,EAAUzB,YAAAG,EAAAF,GAC1CJ,EAAMna,GAAO,MACb+d,EAAUC,YAAgBC,IAAWha,EAAW,qBAAsBsZ,GAC5E,OAAO1c,gBAACsZ,EAAG7a,OAAAuM,OAAA,GAAKkQ,EAAU,CAAE9X,UAAW8Z,MAR7ByX,EAAAxqB,aAA2C,CACrDhL,IAAK,O,+GCFE,MAAMgiB,UAAoBnhB,gBAC9B0I,SACH,IAAI8jC,EACJ,MAAA5yB,EAAsHla,KAAKS,OAArH,UAAEiD,EAAS,UAAEsZ,EAAS,SAAEgC,EAAQ,OAAExT,EAAM,IAAE/L,EAAG,QAAEstC,EAAO,eAAE7S,EAAc,iBAAE8S,EAAgB,GAAEhoC,GAAmBkV,EAAZsB,EAAUzB,YAAAG,EAAAF,GAE3GJ,EAAMna,GAAO,KACbwtC,EAAUF,GAAW,MACrBvvB,EAAUC,YAAgBC,IAAWha,EAAW,qBAAsBsZ,GAc5E,OAZIxR,IACAshC,EACIxsC,gBAAA,UACIvE,KAAK,SACLwH,QAASiI,EACT9H,UAAW+Z,YAAgB,0BAA2BT,GAAU,aACpDkd,GAAkB,QAC9Bp2B,SAAU9D,KAAKS,MAAMysC,uBAM7B5sC,gBAAC2sC,EAAOluC,OAAAuM,OAAA,GAAKkQ,EAAU,CAAE9X,UAAW8Z,IAC/BwB,GAAY1e,gBAACsZ,EAAG,CAAClW,UAAW+Z,YAAgB,mBAAoBT,IAAagC,GAC7E8tB","file":"static/js/1.0192abbb077168619a49.chunk.js","sourcesContent":["var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport function removeInlineZoomStyle(): void {\n const zoomedImages: HTMLCollectionOf = document.body.getElementsByClassName('ms-inline-zoom__zoomedImg');\n\n const zoomedImagesArray = Array.from(zoomedImages) as HTMLImageElement[];\n for (const item of zoomedImagesArray) {\n item.style.width = '0';\n item.style.height = '0';\n }\n}\n\n/**\n * Represents default data scale value which should be used in case improper value specified in module config.\n */\nexport const defaultDataScale = 2;\n\n/**\n * Clears zooming state and reverts to initial image.\n * @param event - Event of moving the mouse out of the image.\n */\nexport function onMouseOutLensContainer(event: React.MouseEvent): void {\n const zoomLens = event.currentTarget;\n zoomLens.style.visibility = 'hidden';\n zoomLens.classList.remove('ms-containerZoom__zoom-lens__opacity');\n\n const zoomedImageContainer = document.body.querySelector('.ms-containerZoom__result');\n if (zoomedImageContainer) {\n zoomedImageContainer.style.visibility = 'hidden';\n }\n}\n\n/**\n * Represents size dimensions.\n */\ninterface ISize {\n width: number;\n height: number;\n}\n\n/**\n * Represents two-dimensional position.\n */\ninterface ILocation {\n /**\n * Left offset.\n */\n x: number; // eslint-disable-line @typescript-eslint/naming-convention -- To align with html standards.\n\n /**\n * Top offset.\n */\n y: number; // eslint-disable-line @typescript-eslint/naming-convention -- To align with html standards.\n}\n\n/**\n * Retrieves the displayed image size preserving image proportions.\n * @param imageElement - The html image element which is displayed.\n * @returns The dimensions of the displayed image ignoring all the offsets and paddings.\n */\nfunction getDisplayedImageSize(imageElement: HTMLImageElement): ISize {\n const imageInitialHeight = imageElement.naturalHeight;\n const imageInitialWidth = imageElement.naturalWidth;\n const imageContainerHeight = imageElement.height;\n const imageContainerWidth = imageElement.width;\n\n const widthScaleRatio = imageContainerWidth / imageInitialWidth;\n const heightScaleRatio = imageContainerHeight / imageInitialHeight;\n\n const scaleRatio = Math.min(widthScaleRatio, heightScaleRatio);\n\n return {\n width: imageInitialWidth * scaleRatio,\n height: imageInitialHeight * scaleRatio\n };\n}\n\n/**\n * Retrieves the center point based on the given dimensions.\n * @param size - Dimensions of an element.\n * @returns The point of the center.\n */\nfunction getCenter(size: ISize): ILocation {\n const centerDivider = 2;\n return {\n x: size.width / centerDivider,\n y: size.height / centerDivider\n };\n}\n\n/**\n * Retrieves the position where the lens must be placed based by the mouse position, lens size, and container size.\n * @param cursorPosition - The location of the mouse.\n * @param lensSize - The size of the lens.\n * @param originalSize - The container in which the lens should be placed.\n * @returns The location where the lens must be placed.\n */\nfunction getLensPosition(cursorPosition: ILocation, lensSize: ISize, originalSize: ISize) {\n const lensCenter = getCenter(lensSize);\n\n const position: ILocation = {\n x: cursorPosition.x - lensCenter.x,\n y: cursorPosition.y - lensCenter.y\n };\n\n // Limit lens to be inside the image element.\n const minPositionX = 0;\n const maxPositionX = originalSize.width - lensSize.width;\n position.x = Math.min(Math.max(position.x, minPositionX), maxPositionX);\n\n const minPositionY = 0;\n const maxPositionY = originalSize.height - lensSize.height;\n position.y = Math.min(Math.max(position.y, minPositionY), maxPositionY);\n\n return position;\n}\n\n/**\n * Retrieves mouse position.\n * @param event - Mouse event.\n * @param element - Element in which the event happened.\n * @returns Mouse position inside the given element.\n */\nfunction getCursorPosition(event: React.MouseEvent, element: HTMLElement): ILocation {\n const containerBoundingRect = element.getBoundingClientRect();\n return {\n x: event.pageX - containerBoundingRect.left - window.pageXOffset,\n y: event.pageY - containerBoundingRect.top - window.pageYOffset\n };\n}\n\n/**\n * Formats number to represent pixels, e.g. 42px.\n * @param numericValue - The numeric value of pixels.\n * @returns String in pixel format.\n */\nfunction formatPixelsValue(numericValue: number): string {\n return `${numericValue}px`;\n}\n\n/**\n * Formats the given url to be a background image style value.\n * @param sourceUrl - The image source.\n * @returns Background image style value.\n */\nfunction formatBackgroundImageUrl(sourceUrl: string): string {\n return `url('${sourceUrl}')`;\n}\n\n/**\n * Get the cursor position on image click.\n * @param zoomedImage - The target image.\n * @param dataScaleText - Zoom factor for image.\n * @param event - Mouse event action.\n */\nfunction handleInlineStyles(\n zoomedImage: EventTarget & HTMLImageElement,\n dataScaleText: string,\n event: React.MouseEvent\n): void {\n zoomedImage.removeAttribute('style');\n const imageElement = zoomedImage.parentElement!.previousElementSibling!.querySelector('img')!;\n\n const dataScale = Number(dataScaleText);\n\n const imageContainerSize: ISize = {\n width: imageElement.offsetWidth,\n height: imageElement.offsetHeight\n };\n\n const zoomedImageSize: ISize = {\n width: imageContainerSize.width * dataScale,\n height: imageContainerSize.height * dataScale\n };\n\n zoomedImage.style.width = formatPixelsValue(zoomedImageSize.width);\n zoomedImage.style.height = formatPixelsValue(zoomedImageSize.height);\n zoomedImage.style.opacity = '1';\n\n const cursorPosition = getCursorPosition(event, imageElement);\n const imageCenter = getCenter(imageContainerSize);\n const offset: ILocation = {\n x: cursorPosition.x - imageCenter.x,\n y: cursorPosition.y - imageCenter.y\n };\n\n const scaledCursorPosition: ILocation = {\n x: cursorPosition.x * dataScale,\n y: cursorPosition.y * dataScale\n };\n scaledCursorPosition.x -= offset.x;\n scaledCursorPosition.y -= offset.y;\n\n const zoomedImagePosition = getLensPosition(scaledCursorPosition, imageContainerSize, zoomedImageSize);\n\n zoomedImage.style.left = formatPixelsValue(-zoomedImagePosition.x);\n zoomedImage.style.top = formatPixelsValue(-zoomedImagePosition.y);\n}\n\n/**\n * ZoomIn functionality on image click.\n * @param event -The mouse event.\n * @param dataScale -The zoom factor.\n */\nexport function inlineZoomInitClick(event: React.MouseEvent, dataScale?: string): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomImg = event.currentTarget.parentElement?.nextElementSibling?.querySelector('img');\n if (!zoomImg) {\n return;\n }\n\n handleInlineStyles(zoomImg, dataScale ?? '2', event);\n}\n\n/**\n * Updates lens and zoomed image positions on the page.\n * @param event - Mouse movement event.\n * @param imageElement - Original image element.\n * @param lens - The element which shows the part of the image which is zoomed.\n */\nfunction handleMouseMovementInContainerZoom(\n event: React.MouseEvent,\n imageElement: HTMLImageElement,\n lens: EventTarget & HTMLDivElement\n): void {\n let zoomedContainer = document.body.querySelector('.ms-containerZoom__result');\n if (!zoomedContainer) {\n zoomedContainer = document.createElement('div');\n zoomedContainer.setAttribute('class', 'ms-containerZoom__result');\n document.body.appendChild(zoomedContainer);\n }\n\n const lensSize: ISize = {\n width: lens.offsetWidth,\n height: lens.offsetHeight\n };\n\n const dataScale = Number(lens.getAttribute('data-scale') ?? defaultDataScale);\n\n const cursorPosition = getCursorPosition(event, imageElement);\n const displayedImageSize = getDisplayedImageSize(imageElement);\n const imageContainerSize: ISize = {\n width: imageElement.offsetWidth,\n height: imageElement.offsetHeight\n };\n\n const lensPosition = getLensPosition(cursorPosition, lensSize, imageContainerSize);\n lens.style.visibility = 'unset';\n lens.style.left = formatPixelsValue(lensPosition.x);\n lens.style.top = formatPixelsValue(lensPosition.y);\n\n const mainImageSource = imageElement.getAttribute('src')!;\n\n zoomedContainer.style.visibility = 'unset';\n zoomedContainer.style.backgroundImage = formatBackgroundImageUrl(mainImageSource);\n zoomedContainer.style.width = formatPixelsValue(lensSize.width * dataScale);\n zoomedContainer.style.height = formatPixelsValue(lensSize.width * dataScale);\n\n const offsetSize: ISize = {\n width: imageContainerSize.width - displayedImageSize.width,\n height: imageContainerSize.height - displayedImageSize.height\n };\n const offsetCenter = getCenter(offsetSize);\n const lensScaledPositionX = (offsetCenter.x - lensPosition.x) * dataScale;\n const lensScaledPositionY = (offsetCenter.y - lensPosition.y) * dataScale;\n\n zoomedContainer.style.backgroundPositionX = formatPixelsValue(lensScaledPositionX);\n zoomedContainer.style.backgroundPositionY = formatPixelsValue(lensScaledPositionY);\n\n zoomedContainer.style.backgroundSize = `${formatPixelsValue(displayedImageSize.width * dataScale)} ${formatPixelsValue(\n displayedImageSize.height * dataScale\n )}`;\n\n const topPosition = imageElement.getBoundingClientRect().top;\n zoomedContainer.style.top = formatPixelsValue(topPosition);\n}\n\nexport function onMouseOverImageContainer(event: React.MouseEvent): void {\n const lens = event.currentTarget.parentElement!.previousElementSibling! as HTMLDivElement;\n lens.classList.add('ms-containerZoom__zoom-lens__opacity');\n\n const imageElement = event.currentTarget as HTMLImageElement;\n\n handleMouseMovementInContainerZoom(event, imageElement, lens);\n}\n\nexport function onMouseMoveLensContainer(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const imageElement = event.currentTarget.nextElementSibling!.querySelector('img')!;\n const lens = event.currentTarget;\n\n handleMouseMovementInContainerZoom(event, imageElement, lens);\n}\n\nexport function onContainerZoomInit(event: React.MouseEvent): void {\n if (!document.body.querySelector('.ms-containerZoom__result')) {\n const containerDiv = document.createElement('div');\n containerDiv.setAttribute('class', 'ms-containerZoom__result');\n document.body.appendChild(containerDiv);\n }\n\n onMouseOverImageContainer(event);\n}\n\nexport function inlineZoomImageOnMouseMove(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const parentElement = event.currentTarget.parentElement!.parentElement!;\n const zoomImg = event.currentTarget;\n\n const dataScale = parentElement.getAttribute('data-scale') ?? `${defaultDataScale}`;\n handleInlineStyles(zoomImg, dataScale, event);\n}\n\nexport function inlineZoomImageOnMouseOut(event: React.MouseEvent): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n event.currentTarget.style.height = '0';\n event.currentTarget.style.width = '0';\n}\n\nexport function inlineZoomInit(event: React.MouseEvent, dataScale: string = '2'): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomedImage = event.currentTarget.parentElement?.nextElementSibling?.querySelector('img');\n if (!zoomedImage) {\n return;\n }\n\n handleInlineStyles(zoomedImage, dataScale, event);\n}\n\nexport function inlineZoomImageOnHover(event: React.MouseEvent, scale: string = '2'): void {\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n return;\n }\n\n const zoomedImg = event.currentTarget.parentElement!.nextElementSibling!.querySelector('img')!;\n handleInlineStyles(zoomedImg, scale, event);\n}\n\n/**\n * Remove container zoomed image.\n */\nexport function removeContainerZoomStyle(): void {\n const zoomLens = document.body.querySelector('.ms-containerZoom__zoom-lens');\n if (zoomLens) {\n zoomLens.style.visibility = 'hidden';\n zoomLens.classList.remove('ms-containerZoom__zoom-lens__opacity');\n }\n\n const zoomedImageContainer = document.body.querySelector('.ms-containerZoom__result');\n if (zoomedImageContainer) {\n zoomedImageContainer.style.visibility = 'hidden';\n }\n}\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { Button, format, KeyCodes, Node, UncontrolledPagination } from '..';\nimport CheckBoxButton from './checkbox';\n\n/**\n * Table Resources.\n */\nexport interface ITableResources {}\n\n/**\n * Table props.\n */\nexport interface IDataTableProps {\n resources: ITableResources;\n headings: (IHeadingsProperty | undefined)[];\n rows: ITableRowProps[];\n className?: string;\n editLinkText?: string;\n actionLinkText?: string;\n deleteLinkText?: string;\n viewLinkText?: string;\n editLinkTooltip?: string;\n actionLinkTooltip?: string;\n deleteLinkTooltip?: string;\n viewLinkTooltip?: string;\n enableToModify: boolean;\n showCheckBoxes?: boolean;\n isSortable?: boolean;\n showPagination?: boolean;\n paginationProperty: IPaginationProperty;\n minifyActions?: boolean;\n minifiedButtonText?: string;\n excludedColumns?: string[]; // Filled with ITableItemProps.id of columns not to show\n isSingleSelectOnly: boolean;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n resourcePrefix?: string;\n actions: {\n onDelete?(userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null): void | undefined;\n onEdit?(userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null): void | undefined;\n onView?(userData: ITableItemProps[]): void | undefined;\n };\n checkBoxCallback?(records: ITableRowProps[]): void;\n formatPrice?(price: number): string;\n tableAriaLabel?: string;\n tableTabIndex?: number;\n}\n\n/**\n * Table IPaginationProperty props.\n */\nexport interface IPaginationProperty {\n itemPerPage: number;\n skipCount: number;\n prevText: string;\n nextText: string;\n paginationText: string;\n url: string;\n}\n\n/**\n * Table ITableItemProps props.\n */\nexport interface ITableItemProps {\n id: string;\n type: TableDataType;\n value: boolean | number | string;\n className?: string;\n}\n\n/**\n * Table IButtonReferences props.\n */\nexport interface IButtonReferences {\n edit?: React.RefObject;\n delete?: React.RefObject;\n}\n\n/**\n * Table ITableRowProps props.\n */\nexport interface ITableRowProps {\n row: ITableItemProps[];\n isSelected: boolean;\n buttonReferences?: IButtonReferences;\n}\n\n/**\n * Table IDataTableCells props.\n */\ninterface IDataTableCells {\n header: boolean;\n className: string;\n content: string | number | React.ReactNode;\n cellIndex: number;\n scope: 'col' | 'row';\n colSpan?: number;\n records?: ITableRowProps;\n}\n\n/**\n * Table IHeadingsProperty props.\n */\nexport interface IHeadingsProperty {\n name: string;\n sortable: boolean;\n ariaLabel?: string;\n}\n\n/**\n * Table ITableState props.\n */\nexport interface ITableState {\n sortingKey: string;\n ascendingOrder: boolean;\n showActions: boolean;\n selectedIndex: string;\n}\n\n/**\n * Table TableDataType props.\n */\nexport enum TableDataType {\n Number = 'Number',\n Text = 'Text',\n Price = 'Price'\n}\n\nexport default class Table extends React.PureComponent {\n public componentClassName: string = 'ms-table';\n\n private readonly headingPrefix: string = 'table';\n\n private readonly capitalizeHeadingPrefix: string = 'Table';\n\n constructor(props: IDataTableProps) {\n super(props);\n this.state = {\n ascendingOrder: true,\n sortingKey: (props.headings[0] && props.headings[0].name) || '',\n showActions: props.minifyActions !== undefined ? !props.minifyActions : true,\n selectedIndex: ''\n };\n }\n\n public render(): JSX.Element {\n const { className, headings, rows, isSortable, showPagination, paginationProperty, tableAriaLabel, tableTabIndex } = this.props;\n const { sortingKey, ascendingOrder } = this.state;\n\n const classname = classnames(this.componentClassName, className);\n let tableRows = isSortable && sortingKey ? this._sortTableRow(rows, sortingKey, ascendingOrder) : rows;\n let paginationLinks = null;\n\n if (showPagination) {\n const { skipCount, itemPerPage, nextText, prevText, paginationText, url } = paginationProperty;\n\n paginationLinks = (\n \n );\n\n tableRows = this._getCurrentPageData(tableRows, skipCount, skipCount + itemPerPage);\n }\n\n const tableBody = this._renderRow(tableRows);\n const tableHead = this._renderHeadingRow(headings);\n\n return (\n
\n \n {tableHead}\n {tableBody}\n
\n {paginationLinks}\n
\n );\n }\n\n /**\n * Set sorting key.\n * @param event -The mouse event.\n */\n private readonly _selectSortingKey = (event: React.MouseEvent | React.KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const columnName = target.getAttribute('data-sort-name') ? (target.getAttribute('data-sort-name') as string) : '';\n const { sortingKey, ascendingOrder } = this.state;\n let newOrder = true;\n\n if (sortingKey === columnName) {\n newOrder = !ascendingOrder;\n }\n\n this.setState({\n sortingKey: columnName,\n ascendingOrder: newOrder,\n showActions: false\n });\n };\n\n /**\n * Checkbox change.\n * @param rows -Table rows.\n * @param checkBoxCallback -Checkboxcallback function.\n * @param index -Index value for row.\n * @returns Checkbox rows.\n */\n private readonly _onCheckBoxChangeHandler = (\n rows: ITableRowProps[],\n checkBoxCallback: (records: ITableRowProps[]) => void,\n index?: number\n ) => () => {\n if (ObjectExtensions.isNumber(index)) {\n rows[index].isSelected = !rows[index].isSelected;\n }\n checkBoxCallback(rows);\n };\n\n private readonly _renderHeadingRow = (columnData: (IHeadingsProperty | undefined)[]) => {\n const {\n resources,\n showCheckBoxes,\n enableToModify,\n minifyActions,\n rows,\n actionLinkText,\n isSortable,\n checkBoxCallback,\n resourcePrefix,\n isSingleSelectOnly,\n businessUserSelectCheckBoxAriaLabelText,\n sortByAscending,\n sortByDescending\n } = this.props;\n const { sortingKey, ascendingOrder } = this.state;\n\n const sortingClassName = ascendingOrder ? 'asc' : 'dsc';\n\n const sortingValue = ascendingOrder ? sortByAscending : sortByDescending;\n\n const columns = columnData.map((data, cellIndex) => {\n if (!data) {\n return;\n }\n const counterAddition = 1;\n const updatedCellIndex = cellIndex + counterAddition;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- unsafe assignment.\n const heading =\n resources[`${this.headingPrefix}${data.name}HeadingText`] ||\n resources[`${resourcePrefix!}${this.capitalizeHeadingPrefix}${data.name}HeadingText`] ||\n resources[`${data.name}HeadingText`] ||\n data.name;\n\n const columnSortValue = sortingKey === data.name && sortingValue !== undefined ? sortingValue : '';\n\n const columnAriaLabel = data.ariaLabel ? `${format(data.ariaLabel, heading)} ${columnSortValue}` : '';\n\n const content = (isSortable && data.sortable && (\n \n \n {heading}\n \n \n )) || (\n \n {heading}\n \n );\n\n return content;\n });\n\n const radioCheckBox = showCheckBoxes && checkBoxCallback && !isSingleSelectOnly && (\n \n );\n\n const actionContent = (\n \n {minifyActions ? '' : actionLinkText}\n \n );\n\n return (\n \n {showCheckBoxes &&\n this.tableCell({\n header: true,\n className: `${this.componentClassName}__heading-row-data__checkbox checkbox`,\n content: radioCheckBox,\n cellIndex: -1,\n scope: 'col'\n })}\n {columns}\n {enableToModify &&\n this.tableCell({\n header: true,\n className: `${this.componentClassName}__heading-row-data action-links`,\n content: actionContent,\n cellIndex: 1,\n scope: 'col'\n })}\n \n );\n };\n\n private readonly _renderRow = (rows: ITableRowProps[]) => {\n const {\n enableToModify,\n showCheckBoxes,\n excludedColumns,\n actions,\n checkBoxCallback,\n formatPrice,\n isSingleSelectOnly,\n businessUserSelectCheckBoxAriaLabelText\n } = this.props;\n\n const tableRows = rows.map((rowsData, index) => {\n let className = index % 2 ? `${this.componentClassName}__row even-row` : `${this.componentClassName}__row odd-row`;\n let showActions = false;\n\n const additionalNameAriaLabel = rowsData.row[0].value.toString();\n const columnData = rowsData.row.map(cell => {\n if (excludedColumns && excludedColumns.includes(cell.id)) {\n return;\n }\n\n // Numbers/price data types will always be right-aligned per design standards\n const extraClass = cell.type === TableDataType.Number || cell.type === TableDataType.Price ? 'num-type' : '';\n const cellContent = cell.type === TableDataType.Price && formatPrice ? formatPrice(cell.value as number) : cell.value;\n const columnSpecificClass = cell.className || '';\n return this.tableCell({\n header: false,\n className: classnames(`${this.componentClassName}__row-data`, extraClass, columnSpecificClass),\n content: cellContent,\n cellIndex: index,\n scope: 'row'\n });\n });\n\n const radioCheckBox = showCheckBoxes && checkBoxCallback && (\n \n );\n const rowKey = `row-${index}`;\n\n if (rowKey === this.state.selectedIndex && this.state.showActions) {\n className += ' selected';\n showActions = true;\n }\n\n const actionButtons = actions && this._renderActions(rowsData.row, showActions, rowKey, rowsData.buttonReferences);\n\n return (\n \n {showCheckBoxes &&\n this.tableCell({\n header: false,\n className: `${this.componentClassName}__row-data`,\n content: radioCheckBox,\n cellIndex: index,\n scope: 'row',\n records: rowsData\n })}\n {columnData}\n {enableToModify &&\n this.tableCell({\n header: false,\n className: `${this.componentClassName}__row-data`,\n content: actionButtons,\n cellIndex: index,\n scope: 'row',\n records: rowsData\n })}\n \n );\n });\n\n return tableRows;\n };\n\n private readonly _renderActions = (\n data: ITableItemProps[],\n showActions: boolean,\n key: string,\n buttonReference?: IButtonReferences\n ): React.ReactNode => {\n const {\n editLinkText,\n deleteLinkText,\n viewLinkText,\n editLinkTooltip,\n deleteLinkTooltip,\n viewLinkTooltip,\n actionLinkTooltip,\n minifyActions,\n minifiedButtonText,\n actionLinkText,\n actions: { onEdit, onDelete, onView }\n } = this.props;\n const handleClickEdit =\n onEdit !== undefined\n ? () => {\n onEdit(data, buttonReference?.edit?.current);\n }\n : undefined;\n const handleClickDelete =\n onDelete !== undefined\n ? () => {\n onDelete(data, buttonReference?.delete?.current);\n }\n : undefined;\n const handleClickView =\n onView !== undefined\n ? () => {\n onView(data);\n }\n : undefined;\n\n const actionButtons = (\n \n {handleClickView && (\n \n )}\n {handleClickEdit && (\n \n {editLinkText}\n \n )}\n {handleClickDelete && (\n \n {deleteLinkText}\n \n )}\n \n );\n\n if (minifyActions) {\n return (\n \n \n {minifiedButtonText ? minifiedButtonText : ''}\n \n {showActions && actionButtons}\n \n );\n }\n return actionButtons;\n };\n\n private readonly _toggleActions = (event: React.MouseEvent) => {\n const target = event && (event.target as HTMLElement);\n const newKey = target && target.getAttribute('data-type') ? (target.getAttribute('data-type') as string) : '';\n this.setState({\n showActions: !this.state.showActions,\n selectedIndex: newKey\n });\n };\n\n private readonly _sortTableRow = (table: ITableRowProps[], sortingkey: string, ascendingOrder: boolean): ITableRowProps[] => {\n return table.sort((userOne: ITableRowProps, userTwo: ITableRowProps) => {\n const userOneData = userOne.row.find(cell => {\n return cell.id === sortingkey;\n });\n const userTwoData = userTwo.row.find(cell => {\n return cell.id === sortingkey;\n });\n\n if (!userOneData || !userTwoData) {\n return -1;\n }\n\n if (typeof userOneData.value === 'number' && typeof userTwoData.value === 'number') {\n return ascendingOrder ? userOneData.value - userTwoData.value : userTwoData.value - userOneData.value;\n }\n\n const cleanFirst =\n (userOneData.value as string) &&\n userOneData.value\n .toString()\n .toLowerCase()\n .trim();\n const cleanSecond =\n (userOneData.value as string) &&\n userTwoData.value\n .toString()\n .toLowerCase()\n .trim();\n\n if (!cleanFirst || !cleanSecond) {\n return -1;\n }\n if (ascendingOrder) {\n return cleanFirst < cleanSecond ? -1 : 1;\n }\n return cleanFirst > cleanSecond ? -1 : 1;\n });\n };\n\n private readonly _getCurrentPageData = (tableRows: ITableRowProps[], start: number, end: number): ITableRowProps[] => {\n if (start >= end) {\n return tableRows;\n }\n\n const result = [];\n for (let i = start; i < end; i++) {\n tableRows[i] && result.push(tableRows[i]);\n }\n\n return result;\n };\n\n private readonly tableCell = (props: IDataTableCells) => {\n const { className, header, cellIndex, scope, colSpan, content } = props;\n const hiddenTabIndex = -1;\n const initialTabIndex = 0;\n return header ? (\n initialTabIndex ? initialTabIndex : hiddenTabIndex}\n >\n {content}\n \n ) : (\n \n {content}\n \n );\n };\n\n /**\n * Renders a Pagination previous text.\n * @param paginationPreviousText - Pagination previous text from resources.\n * @returns Previous text and flipper icon.\n */\n private readonly _renderPrev = (paginationPreviousText: string) => {\n return (\n
\n \n {paginationPreviousText}\n
\n );\n };\n\n /**\n * Renders a Pagination next text.\n * @param paginationNextText - Pagination next text from resources.\n * @returns Next text and flipper icon.\n */\n private readonly _renderNext = (paginationNextText: string) => {\n return (\n
\n {paginationNextText}\n \n
\n );\n };\n\n /**\n * Calls method display result.\n * @param event - Keyboard event.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this._selectSortingKey(event);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IProgressProps {\n id?: string;\n className?: string;\n max: number;\n min?: number;\n value: number;\n ariaLabel?: string;\n}\n\nexport const Progress: React.FC = (props: IProgressProps) => {\n const { id, className, max, min, value, ariaLabel } = props;\n const percent = Math.max(0, Math.min((value * 100) / max, 100));\n const style = { width: `${percent}%` };\n\n return (\n
\n \n
\n );\n};\n\n// Set default props\nProgress.defaultProps = {\n 'aria-valuemax': 100,\n 'aria-valuenow': 0\n} as Partial;\n\nexport default Progress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport Tooltip from './Tooltip';\nimport { IUncontrolledTooltipProps } from './Tooltip.props';\n\nexport interface IUncontrolledTooltipState {\n isOpen: boolean;\n}\n\n/**\n * UncontrolledTooltip examples.\n */\nexport default class UncontrolledTooltip extends React.PureComponent {\n private _isAutoDisplayTriggered: boolean;\n\n constructor(props: IUncontrolledTooltipProps) {\n super(props);\n this.state = { isOpen: false };\n this._toggle = this._toggle.bind(this);\n this._isAutoDisplayTriggered = false;\n }\n\n public render(): JSX.Element {\n const isCartPage =\n !StringExtensions.isNullOrWhitespace(this.props.cartPageUrl) && window.location.toString().includes(this.props.cartPageUrl!);\n\n if (this.props.shouldShowMiniCart && !isCartPage) {\n if (!this._isAutoDisplayTriggered) {\n // First time trigger auto mini cart.\n this.setState({ isOpen: true });\n this._isAutoDisplayTriggered = true;\n } else if (!this.state.isOpen) {\n // If tooptip is closed, reset the flag.\n this._isAutoDisplayTriggered = false;\n }\n }\n\n return (\n {\n this.props._toggle ? this.props._toggle() : this._toggle();\n }}\n {...this.props}\n />\n );\n }\n\n private _toggle(): void {\n this.setState(previousState => ({ isOpen: !previousState.isOpen }));\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { UncontrolledTooltip } from '..';\nimport { ISliderThumbProps } from './SliderThumb.props';\n\n/**\n * Sliderthumb - This is a sliderthumb component this component which is\n * used to control the slider thumb.\n */\nexport default class SliderThumb extends React.PureComponent {\n public static defaultProps: Partial = {\n showTooltip: true,\n showToolTipOnTab: false,\n tooltip: {\n placement: 'top'\n }\n };\n\n public sliderButtonRef: React.RefObject = React.createRef();\n\n public render(): JSX.Element {\n const sliderThumbBaseClass = 'slider__thumb ';\n const sliderThumbClass = this.props.trackThumbClass\n ? `${sliderThumbBaseClass} ${this.props.trackThumbClass}`\n : sliderThumbBaseClass;\n\n return (\n <>\n \n {this.props.showTooltip && (\n \n {this.props.handleTooltipText\n ? this.props.handleTooltipText(this.props.sliderValue!)\n : this.props.sliderValue!.toString()}\n \n )}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { format, isMobile, Progress, VariantType } from '..';\nimport { clamp, toUpperCaseFirstChar } from '../common/utilities';\nimport { ISliderChangeNotification, ISliderLabel, ISliderProps, ISliderThumbProps } from './Slider.props';\nimport SliderThumb from './SliderThumb';\n\n// This maintains the min and max values for the 2 thumbs\nexport interface ISliderState {\n sliderThumbs: ISliderThumbProps[];\n limit: number;\n grab: number;\n active: boolean;\n id: string;\n showToolTipOnTab?: boolean;\n}\n\nconst orientations = {\n horizontal: {\n dimension: 'width',\n direction: 'left',\n coordinate: 'x'\n },\n vertical: {\n dimension: 'height',\n direction: 'top',\n coordinate: 'y'\n }\n};\n\ninterface IFillCoordinates {\n fill: number;\n handle: number;\n label: number;\n}\n\nenum EventType {\n Start,\n End,\n Change\n}\n\nconst rangeDefaultChkValue = 0;\n\n/**\n * Slider - This is a slider component this component morphs into a range slider\n * based on flags.\n */\n\nexport default class Slider extends React.Component {\n public static defaultProps: Partial = {\n showTooltip: true,\n inForm: false,\n orientation: 'horizontal',\n min: 0,\n max: 100,\n step: 1,\n sliderThumbs: [{ id: 'slider_thumb_id', value: 50 }]\n };\n\n private static readonly sliderBaseClass: string = 'slider';\n\n public isRangeSlider: boolean;\n\n private readonly ref: React.RefObject = React.createRef();\n\n private readonly thumb1Ref: React.RefObject = React.createRef();\n\n private readonly thumb2Ref: React.RefObject = React.createRef();\n\n public static getDerivedStateFromProps(props: ISliderProps, state: ISliderState): ISliderState | null {\n if (\n (props.sliderThumbs.length > 0 && props.sliderThumbs[0].value !== state.sliderThumbs[0].value) ||\n (props.sliderThumbs.length > 1 && props.sliderThumbs[1].value !== state.sliderThumbs[1].value)\n ) {\n const nextState = { ...state };\n nextState.sliderThumbs[0].value = props.sliderThumbs[0].value;\n if (props.sliderThumbs.length > 1) {\n nextState.sliderThumbs[1].value = props.sliderThumbs[1].value;\n }\n return nextState;\n }\n return null;\n }\n\n constructor(props: ISliderProps) {\n super(props);\n this.isRangeSlider = this.props.sliderThumbs.length === 2;\n this.state = {\n sliderThumbs: this.props.sliderThumbs,\n grab: 0,\n limit: 0,\n active: false,\n id: '',\n showToolTipOnTab: false\n };\n this._handleUpdate = this._handleUpdate.bind(this);\n this._handleDrag = this._handleDrag.bind(this);\n this._handleEnd = this._handleEnd.bind(this);\n this._handleStart = this._handleStart.bind(this);\n this.toggle = this.toggle.bind(this);\n this._handleOnChange = this._handleOnChange.bind(this);\n this._setSliderValue = this._setSliderValue.bind(this);\n this._getThumbFromProps = this._getThumbFromProps.bind(this);\n this._publishNotification = this._publishNotification.bind(this);\n this._getThumbAndPublishEvent = this._getThumbAndPublishEvent.bind(this);\n this._willThumbsCrossOver = this._willThumbsCrossOver.bind(this);\n this._handleOnClick = this._handleOnClick.bind(this);\n if (\n MsDyn365.isBrowser &&\n document.body.parentElement &&\n document.body.parentElement.getAttribute('dir') === 'rtl' &&\n (this.props.shouldSliderAdjustToRTL === undefined || this.props.shouldSliderAdjustToRTL)\n ) {\n orientations.horizontal.direction = 'right';\n }\n }\n\n public componentDidMount(): void {\n this._handleUpdate();\n MsDyn365.isBrowser && window.addEventListener('resize', this._handleUpdate);\n }\n\n public componentDidUpdate(): void {\n if (this.ref.current && this.ref.current.offsetWidth > rangeDefaultChkValue && this.state.limit === rangeDefaultChkValue) {\n this._handleUpdate();\n }\n }\n\n public toggle = (): void => {\n this.setState((_prevState: ISliderState) => {\n return { showToolTipOnTab: !_prevState.showToolTipOnTab };\n });\n };\n\n public shouldComponentUpdate(nextProps: ISliderProps, _nextState: ISliderState): boolean {\n let shouldRender = true;\n if (this.isRangeSlider) {\n const thumb1Position = this._getPositionFromValue(nextProps.sliderThumbs[0].value);\n const thumb2Position = this._getPositionFromValue(nextProps.sliderThumbs[1].value);\n\n /**\n * During first render the second thumb isn't positioned since handleUpdate positions it after it's mounted\n * in the componentDidMount method. This check is to make sure that the first render happens correctly and then\n * for all subsequent renders and updates, the thumb2 position cannot be 0 thanks to this condition.\n */\n shouldRender = thumb2Position > 0 ? thumb2Position >= thumb1Position + nextProps.step : true;\n }\n return shouldRender;\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this._handleUpdate);\n }\n\n public render(): JSX.Element {\n const { orientation } = this.props;\n const sliderClass = this.props.className\n ? `${Slider.sliderBaseClass} slider-${orientation} ${this.props.className}`\n : `${Slider.sliderBaseClass} slider-${orientation}`;\n\n const sliderId = this.props.id;\n const dimension = orientations[orientation].dimension;\n const direction = orientations[orientation].direction;\n const camelCasedDirection = toUpperCaseFirstChar(direction);\n const positionThumb1 = this._getPositionFromValue(this.props.sliderThumbs[0].value);\n const coordsThumb1 = this._coordinates(positionThumb1);\n let fillStyle = { [dimension]: `${coordsThumb1.fill}px` };\n const handleStyle: React.CSSProperties[] = [];\n handleStyle.push({ [direction]: `${coordsThumb1.handle}px` });\n const trackProgressClass = classnames('progress-bar', this.props.trackProgressClass ? this.props.trackProgressClass : '');\n const sliderKey = this.props.sliderKey ? `_${String(this.props.sliderKey)}` : '';\n\n if (this.isRangeSlider) {\n const positionThumb2 = this._getPositionFromValue(this.props.sliderThumbs[1].value);\n const coordsThumb2 = this._coordinates(positionThumb2);\n handleStyle.push({ [direction]: `${coordsThumb2.handle}px` });\n if (orientation === 'vertical') {\n fillStyle = {\n marginBottom: `${coordsThumb1.fill}px`,\n [dimension]: `${coordsThumb2.fill - coordsThumb1.fill}px`\n };\n } else {\n fillStyle = {\n [`margin${camelCasedDirection}`]: `${\n orientations.horizontal.direction === 'right' ? coordsThumb1.fill - this.state.grab : coordsThumb1.fill\n }px`,\n [dimension]: `${coordsThumb2.handle - coordsThumb1.handle}px`\n };\n }\n }\n\n return (\n
\n
\n {this.props.showProgressBar && (\n \n )}\n
\n {this._renderSliderThumbs(handleStyle)}\n
\n {this.props.showLabels ? this._renderLabels(this.props.labels!) : null}\n
\n );\n }\n\n private readonly _renderLabels = (labels: ISliderLabel[]): JSX.Element => {\n return (\n
\n {labels.map((label: ISliderLabel) => {\n return (\n
\n {label.labelString}\n
\n );\n })}\n
\n );\n };\n\n private readonly _renderSliderThumbs = (thumbStyles: React.CSSProperties[]): React.ReactFragment | JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\n const context = {\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as IRequestContext;\n\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n const sliderAriaLabelMin = format('{0} {1}', this.props.sliderThumbs[0].ariaLabel, this.state.sliderThumbs[0].value);\n\n const sliderAriaLabelMax = this.isRangeSlider\n ? format('{0} {1}', this.props.sliderThumbs[1].ariaLabel, this.state.sliderThumbs[1].value)\n : '';\n return (\n <>\n {\n this.setState({\n showToolTipOnTab: false\n });\n this.props.onBlur && this.props.onBlur();\n }}\n onKeyDown={() => {\n this.setState({\n showToolTipOnTab: true\n });\n }}\n onFocus={() => {\n this.setState({\n showToolTipOnTab: true\n });\n }}\n tabIndex={0}\n style={thumbStyles[0]}\n aria-valuenow={isMobileView ? undefined : this.state.sliderThumbs[0].value}\n />\n {' '}\n {this.isRangeSlider && (\n <>\n \n \n \n )}\n \n );\n };\n\n private readonly _handleUpdate = (): void => {\n const { orientation } = this.props;\n const dimensionStr = toUpperCaseFirstChar(orientations[orientation].dimension);\n\n // To get the offsetWidth and offsetHeight of the slider element\n const sliderPos = this.ref.current![`offset${dimensionStr}`];\n const handlePos = this.thumb1Ref.current!.sliderButtonRef.current![`offset${dimensionStr}`];\n\n if (handlePos !== 0) {\n this.setState({\n limit: sliderPos - handlePos,\n grab: orientations.horizontal.direction === 'right' ? -handlePos / 2 : handlePos / 2\n });\n }\n };\n\n private readonly _handleStart = (e: React.TouchEvent | React.KeyboardEvent | React.MouseEvent): void => {\n e.stopPropagation();\n const eventType = e.type;\n document.addEventListener('mousemove', (this._handleDrag as unknown) as EventListener);\n document.addEventListener('mouseup', (this._handleEnd as unknown) as EventListener);\n const castTarget = e.target as HTMLElement;\n const thumbid = castTarget && castTarget.id;\n this.setState(\n (_prevState: ISliderState) => {\n return { active: true, id: thumbid };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Start, eventType);\n }\n );\n };\n\n private _handleEnd(e: React.KeyboardEvent | React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const eventType = e.type;\n const castTarget = e.target as HTMLElement;\n this.setState(\n (_prevState: ISliderState) => {\n return { active: false, id: '' };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.End, eventType);\n }\n );\n document.removeEventListener('mousemove', (this._handleDrag as unknown) as EventListener);\n document.removeEventListener('mouseup', (this._handleEnd as unknown) as EventListener);\n }\n\n private _handleDrag(e: React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const value = this._position(e);\n const eventType = e.type;\n const castThumb = e.target as HTMLElement;\n const thumbId = this.state.id || (castThumb && castThumb.id);\n const thumbPressed = this._getThumbFromProps(thumbId);\n\n if (thumbPressed && !this._willThumbsCrossOver(thumbPressed[0], e)) {\n thumbPressed[0].value = value;\n this._setSliderValue(thumbPressed, castThumb, eventType);\n }\n }\n\n private _handleOnClick(e: React.MouseEvent | React.TouchEvent): void {\n e.stopPropagation();\n const position = this._position(e);\n const castThumb = e.target as HTMLElement;\n const eventType = e.type;\n const thumb1 = this._getThumbFromProps(this.props.sliderThumbs[0].id);\n\n if (this.isRangeSlider) {\n const thumb2 = this._getThumbFromProps(this.props.sliderThumbs[1].id);\n\n if (thumb1 && thumb2) {\n const currentMinValue = thumb1[0].value;\n const currentMaxValue = thumb2[0].value;\n const lengthToMinValue = position - currentMinValue;\n const lengthToMaxValue = currentMaxValue - position;\n\n if (lengthToMinValue < lengthToMaxValue) {\n thumb1[0].value = position;\n } else {\n thumb2[0].value = position;\n }\n\n this.setState(\n (_prevState: ISliderState) => {\n return { sliderThumbs: [thumb1[0], thumb2[0]] };\n },\n () => {\n this._getThumbAndPublishEvent(castThumb, EventType.Change, eventType);\n }\n );\n }\n } else if (thumb1) {\n thumb1[0].value = position;\n this.setState(\n (_prevState: ISliderState) => {\n return { sliderThumbs: thumb1 };\n },\n () => {\n this._getThumbAndPublishEvent(castThumb, EventType.Change, eventType);\n }\n );\n }\n }\n\n private readonly _position = (e: React.KeyboardEvent | React.MouseEvent | React.TouchEvent): number => {\n const { grab } = this.state;\n const { orientation } = this.props;\n const castEvent = (e as unknown) as TouchEvent;\n const node = this.ref;\n const coordinateStyle = toUpperCaseFirstChar(orientations[orientation].coordinate);\n const directionStyle = orientations[orientation].direction;\n\n // String conversion to the right property value\n const clientCoordinateStyle = `client${coordinateStyle}`;\n const coordinate = !castEvent.touches ? e[clientCoordinateStyle] : castEvent.touches[0][clientCoordinateStyle];\n const direction = node.current!.getBoundingClientRect()[directionStyle];\n const pos = orientations.horizontal.direction === 'right' ? direction - coordinate - grab : coordinate - direction - grab;\n return this._getValueFromPosition(pos);\n };\n\n private readonly _getPositionFromValue = (value: number): number => {\n const { limit } = this.state;\n const { min, max } = this.props;\n const diffMaxMin = max - min;\n const diffValMin = value - min;\n const percentage = diffValMin / diffMaxMin;\n return Math.round(percentage * limit);\n };\n\n /**\n * Translate position of slider to slider value.\n * @param {number} pos - Current position/coordinates of slider.\n * @returns {number} Value - Slider value.\n */\n private readonly _getValueFromPosition = (pos: number): number => {\n const { limit } = this.state;\n const { orientation, min, max, step } = this.props;\n\n const percentage = clamp(pos, 0, limit) / (limit || 1);\n const baseVal = step * Math.round((percentage * (max - min)) / step);\n const value = orientation === 'horizontal' ? baseVal + min : max - baseVal;\n\n return clamp(value, min, max);\n };\n\n /**\n * Grab coordinates of slider.\n * @param {Object} pos - Position object.\n * @returns {Object} - Slider fill/handle coordinates.\n */\n private readonly _coordinates = (pos: number): IFillCoordinates => {\n const { limit, grab } = this.state;\n const { orientation } = this.props;\n const value = this._getValueFromPosition(pos);\n const position = this._getPositionFromValue(value);\n const handlePos = orientation === 'horizontal' ? position + grab : position;\n const fillPos = orientation === 'horizontal' ? handlePos : limit - handlePos;\n\n return {\n fill: fillPos,\n handle: handlePos,\n label: handlePos\n };\n };\n\n private _handleOnChange(e: React.ChangeEvent): void {\n e.stopPropagation();\n const castTarget = e.target as HTMLInputElement;\n const thumbInteractedWith = castTarget && this._getThumbFromProps(castTarget.id.replace('range', ''));\n const eventType = e.type;\n thumbInteractedWith![0].value = Number.parseInt(e.target.value, 10);\n this._setSliderValue(thumbInteractedWith!, castTarget, eventType);\n }\n\n private readonly _setSliderValue = (sliderThumb: ISliderThumbProps[], castTarget: HTMLElement, eventType: string): void => {\n if (this.isRangeSlider) {\n if (this.props.sliderThumbs[0].value > this.props.sliderThumbs[1].value) {\n this.props.sliderThumbs[0].value = this.props.sliderThumbs[1].value;\n }\n this.setState(\n (_prevState: ISliderState) => {\n return {\n sliderThumbs: { ...this.props.sliderThumbs }\n };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Change, eventType);\n }\n );\n } else {\n this.setState(\n (_prevState: ISliderState) => {\n return {\n sliderThumbs: sliderThumb\n };\n },\n () => {\n this._getThumbAndPublishEvent(castTarget, EventType.Change, eventType);\n }\n );\n }\n };\n\n private _getThumbFromProps(thumbId: string): ISliderThumbProps[] | null {\n let thumbFound;\n\n thumbFound = this.props.sliderThumbs.filter((thumb: ISliderThumbProps) => {\n return thumb.id === thumbId;\n });\n\n return thumbFound.length > 0 ? thumbFound : null;\n }\n\n private readonly _publishNotification = (\n thumb: ISliderThumbProps | null,\n delegate: (sliderNotification: Readonly) => void,\n eventType: string\n ): void => {\n delegate({\n id: (thumb && thumb.id) || '',\n slider: this,\n firstThumbValue: this.state.sliderThumbs[0].value,\n secondThumbValue: (this.state.sliderThumbs[1] && this.state.sliderThumbs[1].value) || Number.NaN,\n eventType\n });\n };\n\n private readonly _getThumbAndPublishEvent = (element: HTMLElement, eventType: EventType, nativeEventType: string): void => {\n let elmenentId = '';\n if (element && element.id && eventType === EventType.Change) {\n elmenentId = element.id.replace('range', '');\n }\n const thumb = element && this._getThumbFromProps(elmenentId);\n\n if (eventType === EventType.End) {\n if (this.props.onChangeEnd) {\n this._publishNotification(thumb && thumb[0], this.props.onChangeEnd, nativeEventType);\n }\n }\n if (eventType === EventType.Start) {\n if (this.props.onChangeStart) {\n this._publishNotification(thumb && thumb[0], this.props.onChangeStart, nativeEventType);\n }\n }\n if (eventType === EventType.Change) {\n if (this.props.onChange) {\n this._publishNotification(thumb && thumb[0], this.props.onChange, nativeEventType);\n }\n }\n };\n\n private _willThumbsCrossOver(\n thumbPressed: ISliderThumbProps,\n event: React.KeyboardEvent | React.MouseEvent | React.TouchEvent\n ): boolean {\n if (!this.isRangeSlider) {\n return false;\n }\n let keycode = 0;\n let checkCondition = false;\n\n if (event.type === 'keydown') {\n const castEvent = (event as unknown) as KeyboardEvent;\n keycode = castEvent.keyCode;\n if (\n (thumbPressed === this.props.sliderThumbs[1] && (keycode === 38 || keycode === 39)) ||\n (thumbPressed === this.props.sliderThumbs[0] && (keycode === 37 || keycode === 40))\n ) {\n return false;\n }\n checkCondition = true;\n }\n if (event.type === 'touchmove' || event.type === 'mousemove' || event.type === 'click') {\n const value = this._position(event);\n if (\n (this.state.sliderThumbs[1].value < value && thumbPressed.id === this.props.sliderThumbs[1].id) ||\n (this.state.sliderThumbs[0].value > value && thumbPressed.id === this.props.sliderThumbs[0].id)\n ) {\n return false;\n }\n checkCondition = true;\n }\n\n return !(checkCondition && this.props.sliderThumbs[1].value - this.props.step * 2 >= this.props.sliderThumbs[0].value);\n }\n}\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IRadioButtonProps {\n isChecked?: boolean;\n value?: string;\n ariaSetSize?: number;\n ariaPosInSet?: number;\n ariaLabel?: string;\n name: string;\n className?: string;\n isSingleSelectOnly?: boolean;\n onChange(reacords: object): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaLabel\n * @param root0.name\n * @param root0.className\n * @param root0.onChange\n * @param root0.isSingleSelectOnly\n * @extends {React.FC}\n */\nconst CheckBoxButton: React.FC = ({ isChecked, value, ariaLabel, name, className, onChange, isSingleSelectOnly }) => {\n const cssClass = classnames('ms-input-radio', className ? className : '');\n return (\n \n );\n};\n\nexport default CheckBoxButton;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport type NodeTag = React.ReactType;\n\nexport interface INodeProps {\n /* Wrapper class */\n className: string;\n\n /* Children node */\n children?: React.ReactNode;\n\n /* Wrapper Tag */\n tag?: NodeTag;\n\n /* Other attrributes */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any;\n}\n\nexport type IComponentNodeProps = INodeProps &\n T & {\n /* Wrapper Tag */\n tag?: React.ReactType;\n };\n\nexport const Node: React.FC = React.forwardRef(\n ({ className = '', tag: Tag = 'div', element: Element, ...restAttribute }, ref) => {\n return ;\n }\n);\n\nexport default Node;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { IWaitingProps } from './Waiting.props';\n\n/**\n * Waiting - this component is a visual indication of a pre-loader.\n */\nexport default class Waiting extends React.PureComponent {\n public static defaultProps: Partial = {\n className: 'msc-waiting-circular'\n };\n\n public render(): JSX.Element {\n const { className, ...props } = this.props;\n const watingClassName = `msc-waiting ${className}`;\n\n return
;\n }\n}\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { getTargetElement, mapToCssModules } from '../common/utilities';\nimport PopperContent from '../popper-content/PopperContent';\nimport { ITooltipProps } from './Tooltip.props';\n\nconst DEFAULT_DELAYS = {\n show: 0,\n hide: 250\n};\n\n/**\n * Tooltip component.\n */\nexport default class Tooltip extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n shouldShowMiniCart: false,\n shouldShowCloseButton: false,\n hideArrow: false,\n hideAriaHidden: false,\n placement: 'top',\n placementPrefix: 'msc-bs-tooltip',\n delay: DEFAULT_DELAYS,\n toggle: () => {\n return;\n }\n };\n\n public ref: React.RefObject;\n\n public hideTimeout?: number;\n\n public showTimeout?: number;\n\n public target: HTMLElement | null;\n\n public isMobile: boolean;\n\n public tabPressed: boolean;\n\n constructor(props: ITooltipProps) {\n super(props);\n\n this.ref = React.createRef();\n this.addTargetEvents = this.addTargetEvents.bind(this);\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n this.removeTargetEvents = this.removeTargetEvents.bind(this);\n this.toggle = this.toggle.bind(this);\n this.onMouseOverTooltip = this.onMouseOverTooltip.bind(this);\n this.onMouseLeaveTooltip = this.onMouseLeaveTooltip.bind(this);\n this.onMouseOverTooltipContent = this.onMouseOverTooltipContent.bind(this);\n this.onMouseLeaveTooltipContent = this.onMouseLeaveTooltipContent.bind(this);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this);\n this.onFocusOutTarget = this.onFocusOutTarget.bind(this);\n this.onEscKeyDown = this.onEscKeyDown.bind(this);\n this.onEscKeyDownNative = this.onEscKeyDownNative.bind(this);\n this.target = null;\n this.isMobile = false;\n this.tabPressed = false;\n }\n\n public componentDidMount(): void {\n this.target = getTargetElement(this.props.target);\n this.addTargetEvents();\n\n // Remove the attr from parent obj when tooltip is hidden\n\n const body = document.getElementsByTagName('body').item(0);\n if (body) {\n const bodyClasses = body.getAttribute('class');\n if (bodyClasses && bodyClasses.includes('mobile')) {\n this.isMobile = true;\n }\n }\n\n if (this.target !== null && this.target.attributes.getNamedItem('aria-describedby') !== null) {\n this.target.attributes.removeNamedItem('aria-describedby');\n }\n }\n\n public componentWillUnmount(): void {\n this.clearHideTimeout();\n this.clearShowTimeout();\n this.removeTargetEvents();\n }\n\n public onMouseOverTooltip(e: MouseEvent): void {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n this.showTimeout = window.setTimeout(this.show.bind(this, e), this.getDelay('show'));\n }\n\n public onMouseLeaveTooltip(e: MouseEvent): void {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n\n public onMouseOverTooltipContent(): void {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n }\n\n public onMouseLeaveTooltipContent(e: React.MouseEvent): void {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e.nativeEvent), this.getDelay('hide'));\n }\n\n public onFocusOutTarget(e: Event): void {\n if (!this.props.isOpen) {\n return;\n }\n\n if (this.tabPressed) {\n this.tabPressed = false;\n setTimeout(() => {\n const nextFocus = document.activeElement;\n\n if (!this.ref || !this.ref.current || !this.ref.current.contains(nextFocus)) {\n this.hide(e);\n }\n }, 1);\n } else {\n this.hide(e);\n }\n }\n\n public onEscKeyDown(e: React.KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (e.key === 'Escape') {\n this.hide(e.nativeEvent);\n }\n }\n\n public onEscKeyDownNative(e: KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (e.key === 'Escape') {\n this.hide(e);\n }\n }\n\n public getDelay(key: 'show' | 'hide'): number {\n const { delay } = this.props;\n if (typeof delay === 'object') {\n return isNaN(delay[key]) ? DEFAULT_DELAYS[key] : delay[key];\n }\n\n return delay || 0;\n }\n\n public show(e: Event): void {\n if (!this.props.isOpen) {\n this.clearShowTimeout();\n this.toggle(e);\n\n // Create a new attr for parent obj when tooltip shown\n if (this.target !== null) {\n const ariaAttr = document.createAttribute('aria-describedby');\n ariaAttr.value = this.props.id as string;\n this.target.attributes.setNamedItem(ariaAttr);\n }\n }\n }\n\n public hide(e: Event): void {\n if (this.props.isOpen) {\n this.clearHideTimeout();\n this.toggle(e);\n\n // Remove the attr from parent obj when tooltip is hidden\n if (this.target !== null && this.target.attributes.getNamedItem('aria-describedby') !== null) {\n this.target.attributes.removeNamedItem('aria-describedby');\n }\n }\n }\n\n public clearShowTimeout(): void {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n\n public clearHideTimeout(): void {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n\n public handleDocumentClick(e: Event): void {\n if (!this.target) {\n return;\n }\n\n const target = e.target as HTMLElement;\n if (e.target === this.target || this.target.contains(target)) {\n if (this.hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (!this.props.isOpen) {\n this.toggle(e);\n }\n } else if (this.props.isOpen && target.getAttribute('role') !== 'tooltip') {\n if (this.showTimeout) {\n this.clearShowTimeout();\n }\n this.hideTimeout = window.setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n }\n\n public addTargetEvents(): void {\n if (!this.target) {\n return;\n }\n\n if (this.props.trigger) {\n const triggers = this.props.trigger.split(' ');\n if (!triggers.includes('manual')) {\n if (triggers.includes('click')) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this.handleDocumentClick, true);\n });\n }\n if (triggers.includes('hover')) {\n this.target.addEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.addEventListener('mouseout', this.onMouseLeaveTooltip, true);\n }\n if (triggers.includes('focus')) {\n this.target.addEventListener('focusin', this.show, true);\n if (this.props.displayMode === 'FLYOUT') {\n this.target.addEventListener('focusout', this.onFocusOutTarget, true);\n } else {\n this.target.addEventListener('focusout', this.hide, true);\n }\n }\n this.target.addEventListener('keydown', this.onEscKeyDownNative, true);\n }\n } else {\n this.target.addEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.addEventListener('mouseout', this.onMouseLeaveTooltip, true);\n this.target.addEventListener('keydown', this.onEscKeyDownNative, true);\n this.target.addEventListener('focusin', this.show, true);\n if (this.props.displayMode === 'FLYOUT') {\n this.target.addEventListener('focusout', this.onFocusOutTarget, true);\n } else {\n this.target.addEventListener('focusout', this.hide, true);\n }\n\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this.handleDocumentClick, true);\n });\n }\n }\n\n public removeTargetEvents(): void {\n if (!this.target) {\n return;\n }\n\n this.target.removeEventListener('mouseover', this.onMouseOverTooltip, true);\n this.target.removeEventListener('mouseout', this.onMouseLeaveTooltip, true);\n this.target.removeEventListener('keydown', this.onEscKeyDownNative, true);\n this.target.removeEventListener('focusin', this.show, true);\n this.target.removeEventListener('focusout', this.onFocusOutTarget, true);\n this.target.removeEventListener('focusout', this.hide, true);\n\n ['click', 'touchstart'].forEach((event: string) => {\n document.removeEventListener(event, this.handleDocumentClick, true);\n });\n }\n\n public toggle(e?: Event): void {\n if (e && this.props.disabled) {\n e.preventDefault();\n }\n\n if (this.props.toggle) {\n this.props.toggle();\n }\n }\n\n public render(): JSX.Element | null {\n if (!this.props.isOpen || this.isMobile) {\n return null;\n }\n\n const {\n cssModule,\n isOpen,\n target,\n placementPrefix,\n hideArrow,\n hideAriaHidden,\n className,\n innerClassName,\n innerRef,\n modifiers,\n toggle,\n delay,\n placement,\n disabled,\n trigger,\n boundariesElement,\n offset,\n arrowClassName,\n displayMode,\n id,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(\n classNames(displayMode === 'FLYOUT' ? 'msc-flyout-inner' : 'msc-tooltip-inner', this.props.innerClassName),\n this.props.cssModule\n );\n\n const popperClasses = mapToCssModules(\n classNames(displayMode === 'FLYOUT' ? 'msc-flyout' : 'msc-tooltip', 'show', this.props.className),\n this.props.cssModule\n );\n\n return (\n
\n \n {this.props.toggle && this.props.shouldShowCloseButton ? (\n
\n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Popover from './Popover';\n\nexport * from './Popover.props';\n\nexport { Popover };\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Transition from 'react-transition-group/Transition';\n\nimport { mapToCssModules, TransitionStatuses, TransitionTimeouts } from '../common/utilities';\nimport { ICollapseProps } from './Collapse.props';\n\nexport interface ICollapseState {\n height: number | null;\n}\n\ntype IHash = {\n [key in TransitionStatuses]: string;\n};\n\n/**\n * This is the controlled version of a Collapse component, and as such the toggle behavior is expected to be handled in a parent component.\n * @see See [Uncontrolled Components - React](https://reactjs.org/docs/uncontrolled-components.html) to learn more.\n * @visibleName Collapse (controlled)\n */\nexport default class Collapse extends React.Component {\n public static defaultProps: Partial = {\n isOpen: false,\n tag: 'div',\n timeout: TransitionTimeouts.Collapse\n };\n\n public props: ICollapseProps;\n\n public state: ICollapseState;\n\n private readonly _transitionStatusToClassHash: IHash = {\n entering: 'collapsing',\n entered: 'collapse show',\n exiting: 'collapsing',\n exited: 'collapse'\n };\n\n private readonly _tagRef: React.RefObject = React.createRef();\n\n constructor(props: ICollapseProps) {\n super(props);\n this.props = props;\n\n this.state = {\n height: 0\n };\n\n this._onEntering = this._onEntering.bind(this);\n this._onExit = this._onExit.bind(this);\n this._onExited = this._onExited.bind(this);\n this._onExiting = this._onExiting.bind(this);\n this._reevaluateHeight = this._reevaluateHeight.bind(this);\n }\n\n public componentDidMount(): void {\n window && window.addEventListener('resize', this._reevaluateHeight);\n }\n\n public componentDidUpdate(nextProps: ICollapseProps): void {\n if (nextProps.children !== this.props.children) {\n this._reevaluateHeight();\n }\n }\n\n public componentWillUnmount(): void {\n window && window.removeEventListener('resize', this._reevaluateHeight);\n }\n\n public shouldComponentUpdate(nextProps: ICollapseProps, nextState: ICollapseState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n tag,\n isOpen,\n className,\n children,\n navbar,\n cssModule,\n\n in: collapseIn,\n mountOnEnter,\n unmountOnExit,\n appear,\n enter,\n exit,\n timeout,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n\n ...otherProps\n } = this.props;\n\n const Tag = tag || 'div';\n const transitionProps = {\n in: collapseIn,\n mountOnEnter,\n unmountOnExit,\n appear,\n enter,\n exit,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n };\n\n const { height } = this.state;\n const style = height === null || height === 0 ? null : { minHeight: height };\n\n return (\n \n {(status: TransitionStatuses) => {\n const collapseClass = this._getTransitionClass(status);\n const classes = mapToCssModules(classNames(className, collapseClass, navbar && 'navbar-collapse'), cssModule);\n\n return (\n \n {children}\n \n );\n }}\n \n );\n }\n\n public reEvaluateHeight(): void {\n this._reevaluateHeight();\n }\n\n private _reevaluateHeight(): void {\n const node = this._tagRef.current;\n if (node !== null && node.firstElementChild && node.firstElementChild.scrollHeight > 0) {\n this.setState({ height: node.firstElementChild.scrollHeight });\n }\n }\n\n private _getTransitionClass(status: TransitionStatuses): string {\n return this._transitionStatusToClassHash[status] || 'collapse';\n }\n\n private _onEntering(node: HTMLElement, isAppearing: boolean): void {\n this.setState({ height: node.scrollHeight });\n\n if (this.props.onEntering) {\n this.props.onEntering(node, isAppearing);\n }\n }\n\n private _onExit(node: HTMLElement): void {\n this.setState({ height: node.scrollHeight });\n\n if (this.props.onExit) {\n this.props.onExit(node);\n }\n }\n\n private _onExiting(node: HTMLElement): void {\n this.setState({ height: 0 });\n\n if (this.props.onExiting) {\n this.props.onExiting(node);\n }\n }\n\n /**\n * Get Parent element.\n * @param node - HTML Element.\n */\n private readonly _updateParentElement = (node: HTMLElement): void => {\n const parentElement = node.parentElement;\n if (parentElement) {\n if (parentElement.classList.contains('collapse') && parentElement.classList.contains('show')) {\n parentElement.style.minHeight = 'auto';\n }\n this._updateParentElement(parentElement);\n }\n };\n\n private _onExited(node: HTMLElement): void {\n this.setState({ height: null });\n this._updateParentElement(node);\n\n if (this.props.onExited) {\n this.props.onExited(node);\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IButtonProps } from './Button.props';\n\n/**\n * Button component.\n */\nexport default class Button extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'button',\n outline: false\n };\n\n public props: IButtonProps;\n\n constructor(props: IButtonProps) {\n super(props);\n this.props = props;\n this.onClick = this.onClick.bind(this); // Put this in componentDidMount\n }\n\n public render(): JSX.Element {\n const { active, block, className, cssModule, color, outline, size, tag, innerRef, ...attributes } = this.props;\n const classes = mapToCssModules(\n classNames(\n className,\n 'msc-btn',\n outline && color\n ? `btn-outline-${color}`\n : color && outline === false\n ? `btn-${color}`\n : color === undefined && outline === true\n ? 'btn-outline'\n : '',\n size ? `btn-${size}` : false,\n block ? 'btn-block' : false,\n { active, disabled: this.props.disabled }\n ),\n cssModule\n );\n\n let Tag = tag || 'button';\n\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n\n return (\n \n );\n }\n\n private readonly onClick = (e: React.MouseEvent) => {\n if (this.props.disabled) {\n e.preventDefault();\n\n return;\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Alert from './alert/Alert';\nimport { IAlertProps } from './alert/Alert.props';\nimport BackToTop from './back-to-top/BackToTop';\nimport Button from './button/Button';\nimport { IButtonProps } from './button/Button.props';\nimport Collapse from './collapse/Collapse';\nimport { ICollapseProps } from './collapse/Collapse.props';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IContentAction,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick,\n TelemetryConstant\n} from './common/telemetryHelper';\nimport ControlledDrawer from './drawer/ControlledDrawer';\nimport Drawer, { IDrawerState } from './drawer/Drawer';\nimport Fade, { IFadeState } from './fade/Fade';\nimport { IFadeProps } from './fade/Fade.props';\nimport Flipper from './flipper/Flipper';\nimport { FormBuilder } from './form-builder/form-builder';\nimport Heading from './heading/Heading';\nimport { HeadingTag, IHeadingProps } from './heading/Heading.props';\nimport { IncrementalQuantity } from './incremental-quantity';\nimport { isMobile } from './isMobile/isMobile';\nimport { VariantType } from './isMobile/isMobile.props';\nimport LabeledDropdown from './labeled-dropdown/LabeledDropdown';\nimport { ILabeledDropdownOnChangeNotification, ILabeledDropdownOption } from './labeled-dropdown/LabeledDropdown.props';\nimport Pagination from './pagination/Pagination';\nimport PaginationItem from './pagination/PaginationItem';\nimport PaginationLink from './pagination/PaginationLink';\nimport UncontrolledPagination from './pagination/UncontrolledPagination';\nimport PopperContent from './popper-content/PopperContent';\nimport Popup, { IPopupProps } from './popup/Popup';\nimport PopupProducts, { IPopupProductsProps } from './popup-products/Popup-products';\nimport Progress from './progress/Progress';\nimport SingleSlideCarousel from './single-slide-carousel/SingleSlideCarousel';\nimport { ISingleSlideCarouselProps } from './single-slide-carousel/SingleSlideCarousel.props';\nimport Slider from './slider/Slider';\nimport { ISliderChangeNotification, ISliderLabel, ISliderProps, ISliderThumbProps } from './slider/Slider.props';\nimport Table, { IDataTableProps, ITableItemProps } from './table/Table';\nimport Tooltip from './tooltip/Tooltip';\nimport UncontrolledTooltip from './tooltip/UncontrolledTooltip';\nimport Waiting from './waiting/Waiting';\nimport { ImagefullView, IModalViewProps } from './zoom-image/ImagefullView';\nimport { buildStoreHours, IHoursDisplayInfo, IDateTimeHelperResources } from './common/date-time-helper';\nimport {\n defaultDataScale,\n inlineZoomImageOnHover,\n inlineZoomImageOnMouseMove,\n inlineZoomImageOnMouseOut,\n inlineZoomInit,\n inlineZoomInitClick,\n onContainerZoomInit,\n onMouseMoveLensContainer,\n onMouseOutLensContainer,\n onMouseOverImageContainer,\n removeContainerZoomStyle,\n removeInlineZoomStyle\n} from './zoom-image/ZoomImage';\n\nexport * from './common/KeyCodes';\nexport * from './common/stringExtensions';\nexport * from './common/localeBasedPrice';\nexport * from './common/utilities';\nexport * from './common/urlCheck';\nexport * from './modal';\nexport * from './popover';\nexport * from './price';\nexport * from './quantity';\nexport * from './table';\nexport * from './wrapper/module';\nexport * from './wrapper/node';\nexport {\n Alert,\n BackToTop,\n Button,\n buildStoreHours,\n Collapse,\n ControlledDrawer,\n defaultDataScale,\n Drawer,\n Fade,\n Flipper,\n FormBuilder,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n Heading,\n HeadingTag,\n IAlertProps,\n IButtonProps,\n ICollapseProps,\n IContentAction,\n IDataTableProps,\n IDateTimeHelperResources,\n IDrawerState,\n IFadeProps,\n IFadeState,\n IHeadingProps,\n IHoursDisplayInfo,\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption,\n ImagefullView,\n IModalViewProps,\n IncrementalQuantity,\n inlineZoomImageOnHover,\n inlineZoomImageOnMouseMove,\n inlineZoomImageOnMouseOut,\n inlineZoomInit,\n inlineZoomInitClick,\n IPayLoad,\n IPopupProductsProps,\n IPopupProps,\n ISingleSlideCarouselProps,\n ISliderChangeNotification,\n ISliderLabel,\n ISliderProps,\n ISliderThumbProps,\n isMobile,\n ITableItemProps,\n ITelemetryContent,\n LabeledDropdown,\n onContainerZoomInit,\n onMouseMoveLensContainer,\n onMouseOutLensContainer,\n onMouseOverImageContainer,\n onTelemetryClick,\n Pagination,\n PaginationItem,\n PaginationLink,\n PopperContent,\n Popup,\n PopupProducts,\n Progress,\n removeContainerZoomStyle,\n removeInlineZoomStyle,\n SingleSlideCarousel,\n Slider,\n Table,\n TelemetryConstant,\n Tooltip,\n UncontrolledPagination,\n UncontrolledTooltip,\n VariantType,\n Waiting\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button } from '..';\nimport { Modal, ModalBody, ModalHeader } from '../modal';\n\nexport interface IPopupProductsProps {\n dialogStrings?: {\n closeWindowButtonText: string;\n };\n\n className: string;\n processStatusClass: string;\n text: string;\n\n modalOpen: boolean | undefined;\n setModalOpen(newValue: boolean): void;\n}\n\nexport const PopupProducts = (popupProps: IPopupProductsProps) => {\n const { processStatusClass, dialogStrings, className, text, modalOpen, setModalOpen } = popupProps;\n\n const closeModal = React.useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n\n if (!dialogStrings || !text) {\n return null;\n }\n\n return (\n \n \n \n
\n
{text}
\n \n {dialogStrings.closeWindowButtonText}\n \n \n \n );\n};\n\nexport default PopupProducts;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport enum KeyCodes {\n Back = 8,\n Tab = 9,\n Enter = 13,\n Shift = 16,\n Ctrl = 17,\n Alt = 18,\n Break = 19,\n CapsLock = 20,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40,\n Print = 44,\n Insert = 45,\n Delete = 46,\n Colon2 = 59, // Opera and Firefox\n Equals2 = 61, // Opera\n Equals3 = 107, // Firefox\n Minus2 = 109, // Opera and Firefox\n Period = 190,\n WindowsLeft = 91,\n WindowsRight = 92,\n WindowsOpera = 219, // Opera\n Menu = 93,\n NumPad0 = 96,\n NumPad1 = 97,\n NumPad2 = 98,\n NumPad3 = 99,\n NumPad4 = 100,\n NumPad5 = 101,\n NumPad6 = 102,\n NumPad7 = 103,\n NumPad8 = 104,\n NumPad9 = 105,\n NumPadMultiply = 106,\n NumPadPlus = 107,\n NumPadMinus = 109,\n NumPadDot = 110,\n NumPadDivide = 111,\n Function1 = 112,\n Function2 = 113,\n Function3 = 114,\n Function4 = 115,\n Function5 = 116,\n Function6 = 117,\n Function7 = 118,\n Function8 = 119,\n Function9 = 120,\n Function10 = 121,\n Function11 = 122,\n Function12 = 123,\n NavigationUp = 138,\n NavigationDown = 139,\n NavigationLeft = 140,\n NavigationRight = 141,\n NavigationAccept = 142,\n NumLock = 144,\n ScrollLock = 145,\n Colon = 186,\n Equals = 187,\n Comma = 188,\n Minus = 189,\n ForwardSlash = 191,\n Tilde = 192,\n GamepadA = 195,\n GamepadB = 196,\n GamepadX = 197,\n GamepadY = 198,\n GamepadRightButton = 199,\n GamepadLeftButton = 200,\n GamepadLeftTrigger = 201,\n GamepadRightTrigger = 202,\n GamepadDPadUp = 203,\n GamepadDPadDown = 204,\n GamepadDPadLeft = 205,\n GamepadDPadRight = 206,\n GamepadSelect = 207,\n GamepadStart = 208,\n GamepadLeftThumbstick = 209,\n GamepadRightThumbstick = 210,\n GamepadLeftThumbstickUp = 211,\n GamepadLeftThumbstickDown = 212,\n GamepadLeftThumbstickRight = 213,\n GamepadLeftThumbstickLeft = 214,\n GamepadRightThumbstickUp = 215,\n GamepadRightThumbstickDown = 216,\n GamepadRightThumbstickRight = 217,\n GamepadRightThumbstickLeft = 218,\n OpenBracket = 219,\n BackSlash = 220,\n CloseBracket = 221,\n Quote = 222\n}\n\n/**\n * Here for test coverage.\n */\nexport class KeycodesClass {\n public testCoverage(): string {\n return ':(';\n }\n}\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { ILabeledDropdownProps } from './LabeledDropdown.props';\n\nexport interface ILabeledDropdownState {\n selectedIndex: number;\n}\n\n/**\n * Labeled Dropdown component.\n */\nexport default class LabeledDropdown extends React.PureComponent {\n public static defaultProps: Partial = {\n toggleColor: 'link'\n };\n\n constructor(props: ILabeledDropdownProps) {\n super(props);\n this._onSelectOption = this._onSelectOption.bind(this);\n const selectedKey = this.props.selectedOption.key;\n const keys = this.props.dropdownOptions.map(option => option.key);\n this.state = { selectedIndex: keys.indexOf(selectedKey) };\n }\n\n public render(): JSX.Element {\n const { labelText, labelClassname, dropdownId, dropdownOptions, dropdownClassname } = this.props;\n\n const labelClassNames = classNames('msc-l-dropdown__label', labelClassname);\n const dropdownClassNames = classNames('msc-l-dropdown', dropdownClassname);\n const selectedIndex = this._getSelectedIndex();\n\n return (\n <>\n \n \n \n );\n }\n\n private _getSelectedIndex(): number {\n if (this.props.controlledByParent) {\n let selectedIndex = -1;\n const selectedKey = this.props.selectedOption.key;\n for (let i = 0; i < this.props.dropdownOptions.length; i++) {\n if (this.props.dropdownOptions[i].key === selectedKey) {\n selectedIndex = i;\n break;\n }\n }\n\n return selectedIndex;\n }\n\n return this.state.selectedIndex;\n }\n\n private _onSelectOption(event: React.ChangeEvent): void {\n const { dropdownOptions, onSelectOption } = this.props;\n const index = event.currentTarget.selectedOptions[0].index;\n const selectedOption = dropdownOptions[index];\n this.setState({ selectedIndex: index });\n onSelectOption({ selectedOption });\n }\n}\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","'use strict';\nvar $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat !== parseFloat }, {\n parseFloat: parseFloat\n});\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { EMPTY } from '@msdyn365-commerce/retail-proxy';\nimport { KeyCodes } from './KeyCodes';\n\nexport interface ILocalizedPrice {\n customizedAmount?: string;\n amountVariable?: string;\n paymentAmount?: number;\n}\n\n/**\n * Get Locale Based Customized Price function.\n * @param customPrice - customPrice.\n * @param state - state.\n * @param locale - locale.\n * @param keyCode - keyCode\n * @returns modified state.\n */\nexport function getLocaleBasedCustomizedPrice(\n customPrice: string,\n state: ILocalizedPrice,\n locale: string,\n keyCode: number\n): ILocalizedPrice {\n // Checking if the backspace is being pressed then remove the particular digit from string. so added char 'B' to identify backspace event.\n const returnState: ILocalizedPrice = state;\n if (keyCode === KeyCodes.Back) {\n // Checking if the all value is being deleted by CTRL+ A+ BACKSPACE, then set value as 0.\n const amountData = (state.amountVariable as string).slice(0, -1);\n if (StringExtensions.isNullOrEmpty(customPrice)) {\n returnState.paymentAmount = parseFloat(customPrice);\n setLocaleBasedAmount('0', locale, returnState, state, keyCode);\n } else {\n // Otherwise remove the particular digit from string and send data to format.\n returnState.paymentAmount = parseFloat(amountData);\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n }\n } else if (StringExtensions.isNullOrWhitespace(customPrice) || customPrice.length === 1) {\n // Checking if the last entered digit is space only or contains only one digit then assign value accordingly without appending prefix value.\n returnState.paymentAmount = parseFloat(customPrice);\n if (customPrice.length === 1) {\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n } else {\n // If no value found then set value as 0.\n setLocaleBasedAmount('0', locale, returnState, state, keyCode);\n }\n // this._updatePrice(state.productPrice, parseFloat(customPrice));\n } else if (customPrice.charAt(customPrice.length - 1) === '.' && (state.amountVariable as string).split('.').length - 1 === 1) {\n // Checking if the last entered value is dot and existing value is containing dot or not.\n // checking for first char after dot should not contain any other dots.\n if (state.amountVariable?.includes('.') && customPrice.charAt(customPrice.length - 1) === '.') {\n return state;\n }\n let stringAmount = customPrice.replace(/[^0-9]/g, EMPTY);\n stringAmount = `${stringAmount}.`;\n returnState.paymentAmount = parseFloat(stringAmount);\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n } else if (customPrice.charAt(customPrice.length - 2) === '.' && (state.amountVariable as string).split('.').length - 1 === 1) {\n // checking for second char after dot should not contain any other dots.\n if (state.amountVariable?.includes('.') && customPrice.charAt(customPrice.length - 1) === '.') {\n return state;\n }\n returnState.paymentAmount = parseFloat(customPrice);\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n } else if ((state.amountVariable as string).includes('.') && (state.amountVariable as string).split('.').length - 1 === 1) {\n // checking if pre existing amount doesn't contain any dot then append last entered value and then send for customize the amount.\n const lastDigit = customPrice.charAt(customPrice.length - 1);\n returnState.paymentAmount = parseFloat((state.amountVariable as string) + lastDigit);\n setLocaleBasedAmount((state.amountVariable as string) + lastDigit, locale, returnState, state, keyCode);\n } else {\n // Generally without backspace and dot value comes under this section and get appended into existing string for further amount customization.\n const stringAmount = customPrice.replace(/[^0-9]/g, EMPTY && customPrice.split('.').length - 1 === 1);\n returnState.paymentAmount = parseFloat(stringAmount);\n setLocaleBasedAmount(customPrice, locale, returnState, state, keyCode);\n }\n\n return returnState;\n}\n\n/**\n * Set customizedAmount and amountVariable in state as per Locale Based function.\n * @param inputTextValue - inputTextValue.\n * @param locale - locale.\n * @param returnState - returnState.\n * @param state - state.\n * @param keyCode - keyCode.\n * @returns void.\n */\nconst setLocaleBasedAmount = (\n inputTextValue: string,\n locale: string,\n returnState: ILocalizedPrice,\n state: ILocalizedPrice,\n keyCode: number\n): void => {\n let amountForUI: string = EMPTY;\n let newVar: string = (state.paymentAmount as number).toString();\n const usedVar = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];\n\n // Check if the Input is one or less than one characters the initialize the value in input box.\n if (StringExtensions.isNullOrWhitespace(inputTextValue) || inputTextValue.length === 1) {\n const recentInputNumber = inputTextValue.charAt(inputTextValue.length - 1);\n if (usedVar.includes(recentInputNumber)) {\n returnState.amountVariable = inputTextValue;\n } else {\n return;\n }\n amountForUI = new Intl.NumberFormat(locale).format(Number(inputTextValue));\n returnState.customizedAmount = amountForUI;\n } else {\n const recentInputNumber = inputTextValue.charAt(inputTextValue.length - 1);\n\n // Append last input amount digit and append with previous input amount and then send to format the value.\n if (usedVar.includes(recentInputNumber)) {\n if (state.amountVariable?.includes('.')) {\n if (state.amountVariable?.substring(state.amountVariable?.indexOf('.') + 1).length <= 3) {\n newVar = newVar.slice(0, -1);\n returnState.amountVariable = newVar + recentInputNumber;\n amountForUI = new Intl.NumberFormat(locale).format(Number(newVar + recentInputNumber));\n returnState.customizedAmount = amountForUI;\n }\n } else {\n returnState.amountVariable = newVar;\n amountForUI = new Intl.NumberFormat(locale).format(Number(newVar));\n returnState.customizedAmount = amountForUI;\n }\n } else if (recentInputNumber === '.' && newVar.replace(/[^.]/g, EMPTY).length === 0 && newVar.split('.').length - 1 === 0) {\n // Append dot (.) in Amount string.\n const inputWithDot = newVar + recentInputNumber;\n returnState.amountVariable = inputWithDot;\n returnState.customizedAmount = inputWithDot;\n } else if (keyCode === KeyCodes.Back) {\n returnState.amountVariable = newVar;\n amountForUI = new Intl.NumberFormat(locale).format(Number(newVar));\n returnState.customizedAmount = amountForUI;\n }\n }\n};\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { INodeProps } from './node';\n\nexport interface IModuleProps extends INodeProps {\n moduleProps: Msdyn365.IModule;\n}\n\nexport const Module: React.FC = React.forwardRef(\n ({ className = '', id = '', tag: Tag = 'div', moduleProps, ...restAttribute }, ref) => {\n return ;\n }\n);\n\nexport default Module;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n\nexport enum VariantType {\n Browser,\n Viewport\n}\n\n/**\n * IsMobile properties.\n */\nexport interface IMobileProps {\n /**\n * Contains variant i.e browser | viewport.\n */\n variant?: VariantType;\n context?: Msdyn365.IRequestContext;\n}\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport debounce from 'lodash/debounce';\nimport * as React from 'react';\n\nimport { IQuantityProps } from './Quantity.props';\n\ninterface IQuantityState {\n currentInput: number;\n}\n\n/**\n * Quantity Component - This component is used to allow input of quantity between a\n * range of values.\n */\n\nexport default class Quantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n constructor(props: IQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1 };\n this._handleChange = this._handleChange.bind(this);\n }\n\n public render(): JSX.Element {\n const currentValue = this.state.currentInput;\n\n return (\n \n );\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n const currentValue = Number.parseInt(e.target.value, 10);\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n\n if (currentValue > this.props.max) {\n this.setState({ currentInput: this.props.max }, () => {\n debounce(() => {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n }, 200)();\n });\n } else {\n this.setState({ currentInput: currentValue }, () => {\n debounce(() => {\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue)) {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.setAttribute('value', currentValue.toString());\n }\n }\n }, 200)();\n });\n }\n }\n\n private readonly _validateMin = (): void => {\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\n this.setState({ currentInput: minValue }, () => {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n });\n } else {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport IncrementalQuantity from './IncrementalQuantity';\n\nexport * from './IncrementalQuantity.props';\n\nexport { IncrementalQuantity };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport Button from '../button/Button';\nimport { Popover } from '../popover';\n\n/**\n * Resources for the price editor mode selection.\n */\nexport interface IPriceEditorModeSelectionResources {\n specifyAmountButtonText: string;\n payFullAmountButtonText: string;\n}\n\n/**\n * Props for the price editor mode selection.\n */\nexport interface IPriceEditorModeSelectionProps {\n className: string;\n\n resources: IPriceEditorModeSelectionResources;\n\n currentState: PriceEditorModeSelectionState;\n onStateChanged(state: PriceEditorModeSelectionState): void;\n}\n\n/**\n * Defines editor modes for the amount.\n */\nexport enum PriceEditorModeSelectionState {\n full = 0,\n partial = 1\n}\n\n/**\n * Retrieves resource value based by the given mode state.\n * @param modeState - Given state.\n * @param resources - All resources.\n * @returns Resource value for the given state.\n */\nconst getPriceEditorModeSelectionStateResources = (\n modeState: PriceEditorModeSelectionState,\n resources: IPriceEditorModeSelectionResources\n): string => {\n switch (modeState) {\n case PriceEditorModeSelectionState.full:\n return resources.payFullAmountButtonText;\n case PriceEditorModeSelectionState.partial:\n return resources.specifyAmountButtonText;\n default:\n throw new Error('Failed to retrieve resource description for unknown price editor selection state.');\n }\n};\n\n/**\n * On click functionality.\n * @param handleStateChange - Handle change state function.\n * @param modeState - New state.\n * @returns Event handler.\n */\nconst onClickHandler = (\n handleStateChange: (modeState: PriceEditorModeSelectionState) => void,\n modeState: PriceEditorModeSelectionState\n) => () => {\n handleStateChange(modeState);\n};\n\n/**\n * Renders a button that allows to update the mode to the given state.\n * @param modeState - The state to render.\n * @param resources - Resource values.\n * @param className - Element class name.\n * @param handleStateChange - Event handler to update the state.\n * @returns React node.\n */\nconst renderModeStateItem = (\n modeState: PriceEditorModeSelectionState,\n resources: IPriceEditorModeSelectionResources,\n className: string,\n handleStateChange: (modeState: PriceEditorModeSelectionState) => void\n): React.ReactNode => {\n const stateStringRepresentation = PriceEditorModeSelectionState[modeState];\n\n return (\n \n );\n};\n\n/**\n * On Toggle Popover functionality.\n * @param setPopoverState -Set popover state function.\n * @param isPopoverState -Boolean value.\n * @returns Set toggle popover state functionality.\n */\nconst togglePopoverHandler = (setPopoverState: React.Dispatch>, isPopoverState: boolean) => () => {\n setPopoverState(!isPopoverState);\n};\n\n/**\n * Price editor component which handles selection modes (for instance, full or partial amount).\n * @param props - Configuration of the component.\n * @returns React element.\n */\nexport const PriceEditorModeSelectionComponent: React.FC = (props: IPriceEditorModeSelectionProps) => {\n const popoverReference = React.createRef();\n const [isPopoverShown, setIsPopoverShown] = React.useState(false);\n\n const [modeState, setModeState] = React.useState(props.currentState);\n\n /**\n * Updates component state when a selection is changed.\n * @param clickedState - New mode state.\n */\n const onChangeMode = (clickedState: PriceEditorModeSelectionState) => {\n setModeState(clickedState);\n setIsPopoverShown(false);\n props.onStateChanged(clickedState);\n };\n\n return (\n
\n \n {getPriceEditorModeSelectionStateResources(modeState, props.resources)}\n \n \n {EnumExtensions.getEnumValues(PriceEditorModeSelectionState).map(state => {\n return renderModeStateItem(state, props.resources, props.className, onChangeMode);\n })}\n \n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport {\n IPriceEditorModeSelectionResources,\n PriceEditorModeSelectionComponent,\n PriceEditorModeSelectionState\n} from './price-editor-mode-selection';\n\n/**\n * Resources for price editor.\n */\nexport interface IPriceEditorResources extends IPriceEditorModeSelectionResources {\n priceEditorInputAriaLabel: string;\n}\n\n/**\n * The props required to render the component.\n */\nexport interface IPriceEditorProps {\n className: string;\n\n defaultAmount: number;\n\n resources: IPriceEditorResources;\n\n minimumValue?: number;\n maximumValue?: number;\n\n handleChange?(newValue: number): void;\n}\n\n/**\n * The state of the component.\n */\nexport interface IPriceEditorState {\n currentValue?: number;\n isInputFocused: boolean;\n}\n\n/**\n * Provides an input field which allows entering a price amount.\n */\nexport class PriceEditor extends React.PureComponent {\n private static readonly _precision = 2;\n\n private readonly _inputRef: React.RefObject;\n\n public constructor(props: IPriceEditorProps) {\n super(props);\n\n this._inputRef = React.createRef();\n\n let defaultValue = props.defaultAmount;\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.minimumValue) && defaultValue < this.props.minimumValue) {\n defaultValue = this.props.minimumValue;\n } else if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && defaultValue > this.props.maximumValue) {\n defaultValue = this.props.maximumValue;\n }\n\n this.state = {\n currentValue: defaultValue,\n isInputFocused: false\n };\n }\n\n public render(): JSX.Element {\n const containerClassName = 'msc-price-editor';\n\n const hasMultipleModes = !ObjectExtensions.isNullOrUndefined(this.props.maximumValue);\n\n let mode = PriceEditorModeSelectionState.partial;\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && this.state.currentValue === this.props.maximumValue) {\n mode = PriceEditorModeSelectionState.full;\n }\n\n const formattedValue = this.state.currentValue?.toFixed(PriceEditor._precision) ?? '';\n const editedValue = this.state.currentValue ?? '';\n\n return (\n
\n \n {hasMultipleModes && (\n
\n \n
\n )}\n
\n );\n }\n\n /**\n * Handles input focus.\n */\n private readonly _handleInputFocus = () => {\n this.setState({ isInputFocused: true });\n };\n\n /**\n * Handles input blur.\n */\n private readonly _handleInputBlur = () => {\n this.setState({ isInputFocused: false });\n };\n\n /**\n * Handles editor mode state change.\n * @param newState - New selection mode state.\n */\n private readonly _handleEditorModeStateChange = (newState: PriceEditorModeSelectionState) => {\n if (newState === PriceEditorModeSelectionState.full) {\n this._updateAmount(this.props.maximumValue!);\n } else {\n this.setState({ currentValue: undefined });\n this._inputRef.current?.focus();\n }\n };\n\n /**\n * Update the price and calls corresponding callbacks.\n * @param newAmount - New price amount.\n */\n private readonly _updateAmount = (newAmount: number) => {\n this.setState({ currentValue: newAmount });\n\n if (this.props.handleChange) {\n this.props.handleChange(newAmount);\n }\n };\n\n /**\n * Handles value change.\n * @param event - React change event.\n */\n private readonly _handleChange = (event: React.ChangeEvent) => {\n let currentValue = Number.parseFloat(event.target.value);\n\n if (Number.isNaN(currentValue)) {\n this.setState({ currentValue: undefined });\n return;\n }\n\n currentValue = +currentValue.toFixed(PriceEditor._precision);\n\n if (!ObjectExtensions.isNullOrUndefined(this.props.minimumValue) && currentValue < this.props.minimumValue) {\n this._updateAmount(this.props.minimumValue);\n } else if (!ObjectExtensions.isNullOrUndefined(this.props.maximumValue) && currentValue > this.props.maximumValue) {\n this._updateAmount(this.props.maximumValue);\n } else {\n this._updateAmount(currentValue);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad } from '../common/telemetryHelper';\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationLinkProps } from './PaginationLink.props';\n\n/**\n * PaginationLink component.\n */\nexport default class PaginationLink extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'a',\n role: 'link'\n };\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IPaginationLinkProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n }\n\n public render(): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let { className, cssModule, next, previous, tag: Tag, children, telemetryContent, ...props }: any = this.props;\n let etext: string = children;\n const paginationLinkclasses = mapToCssModules(classNames(className, 'msc-page-link'), cssModule);\n\n let defaultCaret;\n if (previous) {\n defaultCaret = '\\u00AB';\n etext = 'previous';\n } else if (next) {\n defaultCaret = '\\u00BB';\n etext = 'next';\n }\n\n if (children && Array.isArray(children) && children.length === 0) {\n children = null;\n }\n if (!props.href && Tag === 'a') {\n Tag = 'span';\n }\n\n if (previous || next) {\n children = [{children || defaultCaret}];\n }\n\n this.payLoad.contentAction.etext = etext;\n const attribute = getTelemetryAttributes(telemetryContent, this.payLoad);\n\n return (\n \n {children}\n \n );\n }\n}\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { Modal, ModalBody, ModalHeader, Node } from '..';\n\nexport interface IModalViewProps {\n classNames?: string;\n galleryCarousel: React.ReactElement;\n modalIsOpen: boolean;\n ontoggle(): void;\n}\n\nexport const ImagefullView: React.FC = (props: IModalViewProps): React.ReactElement => {\n const body = (\n \n {props.galleryCarousel}\n \n );\n\n const modalWindow = (\n \n );\n\n const modalHeader = ;\n\n return React.cloneElement(modalWindow, {}, modalHeader, body);\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, UncontrolledTooltip } from '..';\nimport { IFlipperProps } from './Flipper.props';\n\nexport type FlipperSize = 'small' | 'medium' | 'large';\n\n/**\n * Flipper Component - This component is used to add\n * flippers to a carousel/jumbotron.\n */\nexport default class Flipper extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n constructor(props: IFlipperProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, this.props.telemetryLabel!);\n }\n\n public render(): JSX.Element {\n const { className, glyphProps, size, displayTooltip, disabled, telemetryContent, telemetryLabel, ...props } = this.props;\n const sizeClass = size === 'small' ? 'msc-flipper__small' : size === 'large' ? 'msc-flipper__large' : '';\n const classNames = className ? `msc-flipper ${sizeClass} ${className}` : `msc-flipper ${sizeClass}`;\n const attribute = getTelemetryAttributes(telemetryContent!, this.payLoad);\n\n // Do not flip next/previous glyphs in RTL (commonly chevron-left and chevron-right)\n glyphProps.className = `${glyphProps.className} msc-no-rtl-flip-required`;\n\n return (\n <>\n \n {displayTooltip && !disabled && (\n \n {' '}\n {props['aria-label']}\n \n )}\n \n );\n }\n}\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './checkbox';\nexport * from './Table';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\n\nimport { IMobileProps, VariantType } from './isMobile.props';\n\n/**\n * IsMobile component.\n * @param props\n */\nexport const isMobile = (props: IMobileProps) => {\n const { variant, context } = props;\n switch (variant) {\n case VariantType.Browser:\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context?.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'lg';\n case VariantType.Viewport:\n const viewport = context?.device?.Type === 'Mobile' ? 'xs' : 'lg';\n return viewport;\n default:\n return 'lg';\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRequestContext } from '@msdyn365-commerce/core';\nimport { debounce } from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isMobile, VariantType } from '..';\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '../common/telemetryHelper';\nimport { IIncrementalQuantityProps } from './IncrementalQuantity.props';\n\n/**\n * IIncrementalQuantityState interface.\n */\ninterface IIncrementalQuantityState {\n currentInput: number;\n isUpdating: boolean;\n}\n\n/**\n * Quantity Component - This component is used to add or remove quantity.\n */\n@observer\nexport default class IncrementalQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private _minValue: number;\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly payLoad: IPayLoad;\n\n public static getDerivedStateFromProps(\n props: Readonly,\n state: IIncrementalQuantityState\n ): IIncrementalQuantityState {\n const nextState = { ...state };\n\n if (props.disabled && !state.isUpdating) {\n nextState.isUpdating = true;\n }\n\n if (\n (!props.disabled && state.isUpdating) ||\n ((props.applyDefaultOrderSettings ?? false) &&\n state.currentInput === 1 &&\n props.currentCount &&\n props.currentCount > IncrementalQuantity.defaultProps.min!)\n ) {\n nextState.currentInput = props.currentCount ?? 1;\n nextState.isUpdating = false;\n }\n\n return nextState;\n }\n\n constructor(props: IIncrementalQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1, isUpdating: false };\n this._onIncrement = this._onIncrement.bind(this);\n this._onDecrement = this._onDecrement.bind(this);\n this._handleChange = this._handleChange.bind(this);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n this._minValue = this.props.min ?? IncrementalQuantity.defaultProps.min!;\n }\n\n public render(): JSX.Element {\n const { min, max } = this.props;\n\n this._minValue = min ?? IncrementalQuantity.defaultProps.min!;\n const value = this.state.currentInput;\n\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const decrementDisabled = value <= this._minValue || this.props.isGiftCard;\n const incrementDisabled = value >= max || this.props.isGiftCard;\n const currentValue = value;\n this.payLoad.contentAction.etext = TelemetryConstant.DecrementQuantity;\n const decrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.IncrementQuantity;\n const incrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n const ariaLablelText = `${this.props.inputQuantityAriaLabel ?? ''} ${value}`;\n\n let extraClassDecrement = '';\n if (decrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassDecrement = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassDecrement = 'transition';\n }\n let extraClassIncrement = '';\n if (incrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassIncrement = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassIncrement = 'transition';\n }\n\n return (\n <>\n
\n \n \n \n \n \n \n \n
\n \n );\n }\n\n /**\n * It checks if its in mobile view or not.\n * @returns Boolean.\n */\n private readonly isMobileView = (): boolean => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\n const context = {\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as IRequestContext;\n\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n return isMobileCheck === 'xs' || isMobileCheck === 'sm';\n };\n\n private _onIncrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity < this.props.max) {\n invokeCallback = true;\n updatedQuantity = currQuantity + 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this.props.max;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _onDecrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity >= this._minValue) {\n invokeCallback = true;\n updatedQuantity = currQuantity - 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this._minValue;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n let currentValue = Number.parseInt(e.target.value, 10);\n if (Number.isNaN(currentValue)) {\n this.setState({ currentInput: currentValue });\n return;\n }\n currentValue = Math.min(this.props.max, Math.max(this._minValue, currentValue));\n this.setState({ currentInput: currentValue });\n debounce(() => {\n // Due of usage debouncer, we may ignore onChange return value\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', this.state.currentInput.toString());\n inputElement.setAttribute('value', this.state.currentInput.toString());\n }\n }, 1000)();\n }\n\n /**\n * Validates min and updates.\n */\n private readonly _validateMin = (): void => {\n if (Number.isNaN(this.state.currentInput)) {\n this.setState({ currentInput: this._minValue });\n } else {\n const currentValue = Math.min(this.props.max, Math.max(this._minValue, this.state.currentInput));\n if (currentValue !== this.state.currentInput) {\n this.setState({ currentInput: currentValue });\n }\n }\n };\n}\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button } from '..';\nimport Collapse from '../collapse/Collapse';\nimport { ICollapseProps } from '../collapse/Collapse.props';\nimport { IDrawerProps } from './Drawer.props';\n\n/**\n * Drawer State Interface\n */\nexport interface IDrawerState {\n isOpen: boolean;\n buttonText?: string;\n}\n\n/**\n * Glyph placement type.\n */\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * Drawer - This is a full width uncontrolled collapse where the button glyph changes\n * when the drawer is open and closed.\n */\n\nexport default class Drawer extends React.PureComponent {\n public state: IDrawerState;\n\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n constructor(props: IDrawerProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: props.collapseProps?.isOpen ?? false, buttonText: '' };\n this.drawerGlyphClass = classnames(\n 'drawer__glyph',\n\n this.props.toggleGlyphClassName ? this.props.toggleGlyphClassName : ''\n );\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames(\n this.drawerGlyphClass,\n\n this.props.openGlyph ? this.props.openGlyph : this.props.closeGlyph ? this.props.closeGlyph : ''\n );\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames(\n this.drawerGlyphClass,\n\n this.props.openGlyph ? this.props.openGlyph : ''\n );\n this.drawerCloseGlyph = classnames(\n this.drawerGlyphClass,\n\n this.props.closeGlyph ? this.props.closeGlyph : ''\n );\n }\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n\n // If the drawer is manually toggled by pressing the button, then we use the internal state\n if (collapseProps.isOpen === undefined || this.isManuallyToggled) {\n collapseProps.isOpen = this.state.isOpen;\n } else {\n this.setState({\n isOpen: collapseProps.isOpen\n });\n }\n collapseProps.children = this.props.children;\n const drawerClass = classnames(\n 'drawer',\n\n this.props.className ? this.props.className : ''\n );\n this.isManuallyToggled = false;\n return (\n
\n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
\n );\n }\n\n /**\n * Method generate drawer inner markup.\n * @param collapseState -Drawer button collapse state.\n * @returns Jsx element.\n */\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const drawerButtonTextClass = classnames(\n 'drawer__buttontext',\n\n this.props.toggleButtonClassName ? this.props.toggleButtonClassName : ''\n );\n if (this.props.glyphPlacement === 'end') {\n return (\n <>\n {this.props.toggleButtonText}\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n if (this.props.glyphPlacement === 'start') {\n return (\n <>\n {this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\n {this.props.toggleButtonText}\n \n );\n }\n return {this.props.toggleButtonText};\n }\n\n /**\n * Method generate glyph markup.\n * @param location -Glyph icon location.\n * @param collapseState -Drawer button collapse state.\n * @returns Jsx element.\n */\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n let glyphClass = collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph;\n glyphClass = `${glyphClass} ${location}`;\n return ;\n }\n\n /**\n * Method on click of drawer button.\n * @param e -Mouse event for drawer button.\n */\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.isManuallyToggled = true;\n\n if (this.props.onToggle) {\n this.setState(\n { isOpen: !this.state.isOpen, buttonText: e.currentTarget.innerText },\n () => this.props.onToggle && this.props.onToggle(this.state)\n );\n } else {\n this.setState({ isOpen: !this.state.isOpen });\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '..';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../modal';\n\nexport interface IPopupProps extends IComponentProps<{ product: SimpleProduct | undefined; price: ProductPrice | undefined }> {\n dialogStrings?: {\n goToCartText: string;\n continueShoppingText: string;\n headerItemOneText: string;\n headerItemFormatText: string;\n headerMessageText: string;\n freePriceText: string;\n originalPriceText: string;\n currentPriceText: string;\n };\n\n className: string;\n imageSettings?: IImageSettings;\n gridSettings: IGridSettings | undefined;\n productQuantity: number;\n priceComponent: React.ReactNode;\n navigationUrl?: string;\n modalOpen: boolean | undefined;\n telemetryContent?: ITelemetryContent;\n setModalOpen(newValue: boolean): void;\n}\n\nexport const Popup = (popupProps: IPopupProps) => {\n const {\n dialogStrings,\n className,\n imageSettings,\n gridSettings,\n data: { product, price },\n productQuantity,\n priceComponent,\n navigationUrl,\n modalOpen,\n telemetryContent,\n setModalOpen,\n context\n } = popupProps;\n const closeModal = React.useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n if (!dialogStrings || !product) {\n return null;\n }\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.ContinueShopping);\n const continueShoppingAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ViewBagAndCheckout;\n const viewBagAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n const fallbackImageUrl = getFallbackImageUrl(\n product.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const quantity = productQuantity !== undefined ? productQuantity : 1;\n const itemsString =\n quantity === 1 ? dialogStrings.headerItemOneText : dialogStrings.headerItemFormatText.replace('{0}', quantity.toString());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n const shouldDisplayUnitOfMeasure =\n context.app.config?.unitOfMeasureDisplayType && context.app.config.unitOfMeasureDisplayType !== 'none';\n\n const reducedDimensions: string = product.Dimensions\n ? product.Dimensions.reduce((str, productDimension) => {\n if (productDimension.DimensionValue && productDimension.DimensionValue.Value) {\n if (str) {\n return `${str}, ${productDimension.DimensionValue.Value}`;\n }\n\n return `${productDimension.DimensionValue.Value}`;\n }\n\n return str;\n }, '')\n : '';\n\n return (\n \n \n {itemsString}\n {dialogStrings.headerMessageText}\n \n \n \n {product.Name}\n {reducedDimensions !== '' ?
{reducedDimensions}
: ''}\n {price ?
{priceComponent}
: ''}\n {product.DefaultUnitOfMeasure && shouldDisplayUnitOfMeasure ? (\n
\n {product.DefaultUnitOfMeasure}\n
\n ) : (\n ''\n )}\n
\n \n \n {dialogStrings.goToCartText}\n \n \n {dialogStrings.continueShoppingText}\n \n \n
\n );\n};\n\nexport default Popup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingProps } from './Heading.props';\n\n/**\n * Heading component.\n * @extends {React.PureComponent}\n */\n\nconst Heading = ({ headingTag: HTag = 'h1', tag: Tag, className, text }: IHeadingProps) =>\n Tag ? {text} : {text};\n\nexport default Heading;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport { Data } from 'popper.js';\nimport * as React from 'react';\nimport { Arrow, Popper as ReactPopper } from 'react-popper';\n\nimport { getTargetElement, mapToCssModules } from '../common/utilities';\nimport { IPopperContentProps } from './PopperContent.props';\n\nexport interface IPopperContentState {\n placement?: string;\n isOpen: boolean;\n}\n\n/**\n * Renders popper content. This is an internal helper class shared between components.\n */\nexport default class PopperContent extends React.Component {\n public static defaultProps: Partial = {\n boundariesElement: 'scrollParent',\n placement: 'auto',\n hideArrow: false,\n isOpen: false,\n offset: 0,\n fallbackPlacement: 'flip',\n flip: true,\n container: 'body',\n modifiers: {}\n };\n\n constructor(props: IPopperContentProps) {\n super(props);\n\n this._handlePlacementChange = this._handlePlacementChange.bind(this);\n this.state = { isOpen: props.isOpen };\n }\n\n public componentDidMount(): void {\n this._handleProps();\n }\n\n public componentDidUpdate(prevProps: IPopperContentProps): void {\n if (this.props.isOpen !== prevProps.isOpen) {\n this._handleProps();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPopperContentProps, nextState: IPopperContentState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return this.props.isOpen ? this._renderChildren() : null;\n }\n\n private _handlePlacementChange(data: Data): Data {\n if (this.state.placement !== data.placement) {\n this.setState({ placement: data.placement });\n }\n\n return data;\n }\n\n private _handleProps(): void {\n if (this.props.container !== 'inline') {\n if (this.props.isOpen) {\n this._show();\n } else {\n this._hide();\n }\n }\n }\n\n private _hide(): void {\n this.setState({ isOpen: false });\n }\n\n private _show(): void {\n this.setState({ isOpen: true });\n }\n\n private _renderChildren(): JSX.Element | null {\n const {\n cssModule,\n children,\n isOpen,\n flip,\n offset,\n target,\n fallbackPlacement,\n focusOut,\n placementPrefix,\n arrowClassName: arrowClassNameOrUndefined,\n hideArrow,\n className,\n tag,\n modifiers,\n boundariesElement,\n ...attrs\n } = this.props;\n\n const arrowClassName = mapToCssModules(classNames('msc-arrow', arrowClassNameOrUndefined), cssModule);\n\n const placement = (this.state.placement || attrs.placement || 'auto').split('-')[0];\n const popperClassName = mapToCssModules(\n classNames(className, placementPrefix ? `${placementPrefix}-${placement}` : placement),\n this.props.cssModule\n );\n\n const extendedModifiers = {\n offset: { offset },\n flip: { enabled: flip, behavior: fallbackPlacement },\n preventOverflow: { boundariesElement },\n update: {\n enabled: true,\n order: 950,\n fn: this._handlePlacementChange\n },\n ...modifiers\n };\n\n const targetElement = getTargetElement(target);\n if (targetElement === null) {\n return null;\n }\n\n return (\n \n {children}\n {!hideArrow && }\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING, UNMOUNTED } from 'react-transition-group/Transition';\n\nimport { mapToCssModules, TransitionTimeouts } from '../common/utilities';\nimport { IFadeProps } from './Fade.props';\n\nexport interface IFadeState {\n fadeIn: boolean;\n}\n\ntype TransitionStatus = typeof ENTERING | typeof ENTERED | typeof EXITING | typeof EXITED | typeof UNMOUNTED;\n\n/**\n * Fade component.\n */\nexport default class Fade extends React.Component {\n public static defaultProps: Partial = {\n tag: 'div',\n baseClass: 'fade',\n baseClassActive: 'show',\n timeout: TransitionTimeouts.Fade,\n in: true,\n appear: true,\n enter: true,\n exit: true\n };\n\n public shouldComponentUpdate(nextProps: IFadeProps): boolean {\n if (nextProps.in || this.props.in !== nextProps.in) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const {\n tag,\n className,\n cssModule,\n baseClass,\n baseClassActive,\n\n appear,\n enter,\n exit,\n in: fadeIn,\n mountOnEnter,\n unmountOnExit,\n timeout: timeoutOrUndefined,\n addEndListener,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n children,\n\n ...otherProps\n } = this.props;\n const timeout = timeoutOrUndefined !== undefined ? timeoutOrUndefined : TransitionTimeouts.Fade;\n\n const transitionProps = {\n appear,\n enter,\n exit,\n in: fadeIn,\n mountOnEnter,\n unmountOnExit,\n timeout,\n addEndListener,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n children\n };\n\n const Tag = this.props.tag ? this.props.tag : 'div';\n const baseClassAlways = baseClass || 'fade';\n const baseClassActiveAlways = baseClassActive || 'show';\n\n return (\n \n {(status: TransitionStatus) => {\n const isActive = status === 'entered';\n const classes = mapToCssModules(classNames([className, baseClassAlways, isActive && baseClassActiveAlways]), cssModule);\n\n return (\n \n {children}\n \n );\n }}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IDictionary, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\n\nexport interface IContentAction {\n pgname: string;\n mname: string;\n etext?: string;\n recid?: string;\n etype?: string;\n}\n\nexport interface IPayLoad {\n contentCategory: string;\n contentAction: IContentAction;\n}\n\nexport interface ITelemetryContent {\n pageName: string;\n moduleName: string;\n telemetry?: ITelemetry;\n}\n\nexport enum TelemetryConstant {\n ShopSimliarLooks = 'shop similar looks',\n ShopSimliarDescription = 'shop similar description',\n PickupInStore = 'pick up in store',\n PreferredStore = 'set as preferred store',\n RemovePreferredStore = 'remove preferred store',\n IncrementQuantity = 'Increment quantity',\n DecrementQuantity = 'Decrement quantity',\n Checkout = 'Checkout',\n GuestCheckout = 'Guest checkout',\n BackToShopping = 'Back to shopping',\n ApplyPromoCode = 'Apply promo code',\n ViewMore = 'View more',\n OrderDetails = 'Order details',\n AvailablePoints = 'Available points',\n ExpiringPoints = 'Expiring points',\n AddUser = 'Add user',\n BuyItAgain = 'Buy it again',\n ContactNumber = 'ContactNumber',\n CheckoutChange = 'Change',\n Save = 'Save',\n SaveContinue = 'Save and Continue',\n Cancel = 'Cancel',\n DeliveryOptions = 'Delivery options',\n CheckoutTermsAndConditions = 'Checkout terms and conditions',\n ExpandAll = 'Expand all',\n CollapseAll = 'Collapse all',\n Expand = 'Expand',\n Collapse = 'Collapse',\n SignIn = 'Sign in',\n SignUp = 'Sign up',\n SignOut = 'Sign out',\n SwitchCustomer = 'Switch Customer',\n LoyaltyDetailLink = 'Loyalty detail ink',\n LoyaltyTermsLink = 'Loyalty terms link',\n LoyaltyTermsCancel = 'Loyalty terms cancel',\n LoyaltyTermsSubmit = 'Loyalty terms submit',\n LoyaltyTermsAgree = 'Loyalty terms agree',\n RemoveCartItem = 'Remove cart item',\n EditCart = 'Edit cart',\n BackToTop = 'Back to top',\n Logo = 'Logo',\n NavIcon = 'Navigation icon',\n ViewBagAndCheckout = 'View bag and checkout',\n ContinueShopping = 'Continue shopping',\n AddOrderTemplateToCart = 'Add order template to cart',\n PromoBannerClose = 'Close promo banner',\n WriteReview = 'Write Review',\n Next = 'Next',\n Previous = 'Previous',\n SubmitReview = 'Submit review',\n SuccessButton = 'Success',\n SearchStore = 'Search store',\n ShowAllStore = 'Show all store',\n ToggleMapView = 'Toggle map view',\n PrivacyPolicy = 'Privacy policy',\n ViewShoppingBag = 'View shopping bag',\n MyProfile = 'My profile',\n seeDetails = 'See Details',\n CurrentDistributor = 'Set as current distributor',\n ViewMode = 'View mode',\n ApplyRefiner = 'Apply Refiner',\n Search = 'Search'\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param pageName\n * @param {string} moduleName - Module Name.\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n * @param telemetry\n */\nexport function getTelemetryObject(pageName: string, moduleName: string, telemetry: ITelemetry): ITelemetryContent {\n const telemetryContent: ITelemetryContent = { pageName, moduleName, telemetry };\n return telemetryContent;\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param {string} moduleName - Module Name.\n * @param eventType\n * @param telemetryContent\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n */\nexport function getPayloadObject(eventType: string, telemetryContent: ITelemetryContent, etext: string, recid?: string): IPayLoad {\n const pageName = telemetryContent && telemetryContent.pageName ? telemetryContent.pageName : '';\n const moduleName = telemetryContent && telemetryContent.moduleName ? telemetryContent.moduleName : '';\n const payload: IPayLoad = {\n contentCategory: eventType,\n contentAction: {\n pgname: pageName,\n mname: moduleName,\n etext,\n recid,\n etype: eventType\n }\n };\n return payload;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param telemetryContent\n * @param {IPayLoad} payLoad - Pay Load.\n */\nexport function getTelemetryAttributes(telemetryContent: ITelemetryContent, payLoad: IPayLoad): IDictionary | undefined {\n const contentData = payLoad.contentAction.recid ? payLoad.contentAction.recid : payLoad.contentAction.etext;\n const attributes: IDictionary | undefined =\n telemetryContent &&\n telemetryContent.telemetry &&\n telemetryContent.telemetry.setTelemetryAttribute &&\n telemetryContent.telemetry.setTelemetryAttribute(contentData!, payLoad.contentAction);\n return attributes;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param {IPayLoad} payLoad - Pay Load.\n */\n\nexport const onTelemetryClick = (telemetryContent: ITelemetryContent, payLoad: IPayLoad, linkText: string) => () => {\n payLoad.contentAction.etext = linkText;\n if (telemetryContent && telemetryContent.telemetry) {\n telemetryContent.telemetry.logEvent(TelemetryEvent.Custom, payLoad);\n }\n};\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport url from 'url';\n\nexport function urlCheck(testUrl: string): boolean {\n const parsedUrl = url.parse(testUrl, true);\n if (parsedUrl.protocol && parsedUrl.host) {\n return true;\n } else {\n return false;\n }\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport Fade from '../fade/Fade';\nimport UncontrolledTooltip from '../tooltip/UncontrolledTooltip';\nimport { IAlertProps } from './Alert.props';\n\n/**\n * Alert component.\n */\nexport default class Alert extends React.PureComponent {\n public static defaultProps: Partial = {\n color: 'success',\n isOpen: true,\n tag: 'div',\n closeAriaLabel: 'Close',\n fade: true,\n assertive: false,\n includeAlertClass: true,\n transition: {\n ...Fade.defaultProps,\n unmountOnExit: true\n }\n };\n\n public render(): JSX.Element {\n const {\n id,\n className,\n closeClassName,\n cssModule,\n tag,\n toggle,\n color,\n isOpen,\n children,\n transition,\n fade,\n assertive,\n includeAlertClass,\n 'aria-label': ariaLabel\n } = this.props;\n\n const classes = includeAlertClass\n ? mapToCssModules(classNames(className, 'msc-alert', `msc-alert-${color}`), cssModule)\n : className;\n\n const closeClasses = mapToCssModules(classNames('close', closeClassName), cssModule);\n\n const alertTransition = {\n ...Fade.defaultProps,\n ...transition,\n baseClass: fade ? 'fade' : '',\n timeout: fade ? (transition ? transition.timeout : 0) : 0,\n appear: !!fade,\n enter: !!fade,\n exit: !!fade\n };\n\n const Tag = tag || 'div';\n const buttonId = fade ? 'buttonDismiss' : 'buttonFadeless';\n\n const innerContent = (\n <>\n {toggle ? (\n
\n \n \n close\n \n
\n ) : null}\n {children}\n \n );\n\n const style = isOpen ? undefined : { display: 'none' };\n\n // When using assertive alerts, you need to have the assertive region rendered on the page from\n // the start. When using fade, the entire fade region doesn't render. So you gotta first wrap the\n // fade region in a tag, keep that tag hidden if the alert is closed.\n //\n // Note that this current approach will have some issues if tag is something like li. But that is a bridge\n // that can be crossed when/if we need to cross it this works for divs/spans so it should be good enough for now\n if (fade && assertive) {\n return (\n \n \n {innerContent}\n \n \n );\n } else if (fade) {\n return (\n \n {innerContent}\n \n );\n }\n return (\n \n {innerContent}\n
\n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, TelemetryConstant } from '..';\nimport { IBackToTopProps } from './BackToTop.props';\n\nexport interface IBackToTopStateAttributes {\n 'aria-hidden': boolean;\n tabIndex: number;\n}\n\nexport interface IBackToTopState extends React.ComponentState {\n attributes: IBackToTopStateAttributes;\n}\n\n/**\n * Back To Top - This component is used to scroll to the top of the page.\n */\nexport default class BackToTop extends React.PureComponent {\n public static defaultProps: Partial = {\n className: 'btn btn-lg btn-secondary',\n delayInMs: 0,\n scrollStepInPx: 25\n };\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: IBackToTopProps) {\n super(props);\n this.state = { attributes: { 'aria-hidden': true, tabIndex: -1 } };\n this._reevaluatePosition = this._reevaluatePosition.bind(this);\n this._scrollToTop = this._scrollToTop.bind(this);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.BackToTop);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public componentDidMount(): void {\n window.addEventListener('resize', this._reevaluatePosition);\n window.addEventListener('scroll', this._reevaluatePosition);\n this._reevaluatePosition();\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this._reevaluatePosition);\n window.removeEventListener('scroll', this._reevaluatePosition);\n }\n\n public render(): JSX.Element {\n const { className, threshold, delayInMs, scrollStepInPx, ...props } = this.props;\n const children = this.props.children || ;\n if (this.props.text) {\n return (\n \n {this._renderHeading(this.props.text)}\n \n );\n }\n return (\n \n {children}\n \n );\n }\n\n private readonly _renderHeading = (text: string): JSX.Element | undefined => {\n return ;\n };\n\n private _scrollStep(): void {\n if ((document.documentElement.scrollTop || document.body.scrollTop) === 0) {\n clearInterval(this.state.intervalId);\n this.setState({ intervalId: 0 });\n this._reevaluatePosition();\n }\n\n if (this.state.intervalId !== 0) {\n window.scrollTo(0, document.body.scrollTop - this.props.scrollStepInPx);\n document.body.scrollTop = document.body.scrollTop > 0 ? document.body.scrollTop - this.props.scrollStepInPx : 0;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _scrollToTop(e: any): void {\n e.preventDefault();\n const intervalId = setInterval(this._scrollStep.bind(this), this.props.delayInMs);\n this.setState({ intervalId });\n }\n\n private _reevaluatePosition(): void {\n // TODO:\n // change the threshold minimum to zero\n // add a prop for specifying multiplier of page height instead of absolute threshold\n // add clientWidth check to hide at < 768\n const scrollTop = window.pageYOffset || document.body.scrollTop;\n const height = Math.min(window.innerHeight, document.documentElement.clientHeight);\n const threshold = Math.min(this.props.threshold !== undefined ? this.props.threshold : -1, 100);\n const hide =\n scrollTop > 0 && threshold >= 0\n ? scrollTop < ((document.documentElement.scrollHeight - height) * threshold) / 100\n : scrollTop < height * 2;\n const tabIndexValue = hide ? -1 : 0;\n this.setState({ attributes: { 'aria-hidden': hide, tabIndex: tabIndexValue } });\n }\n}\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { addThrottledEvent, getCSS } from '../common/utilities';\nimport Flipper from '../flipper/Flipper';\nimport { ISingleSlideCarouselProps } from './SingleSlideCarousel.props';\n\ninterface ISingleSlideCarouselState {\n showPrevious: boolean;\n showNext: boolean;\n offset: number;\n}\n\n/**\n * SingleSlideCarousel - yup.\n */\nexport default class SingleSlideCarousel extends React.PureComponent {\n private static readonly itemsSelector: string = 'msc-ss-carousel-item';\n\n private static readonly verticalItemsSelector: string = 'msc-ss-carousel-vert-item';\n\n private direction: string;\n\n private item: HTMLElement | undefined;\n\n private slide: HTMLElement | undefined;\n\n private carousel: HTMLElement | undefined;\n\n private carouselSize: number = 0;\n\n private slideSize: number = 0;\n\n private itemSize: number = 0;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private readonly ref: React.RefObject;\n\n private readonly slideRef: React.RefObject;\n\n private readonly itemRef: React.RefObject;\n\n private readonly id: string;\n\n private scrollStart: number | undefined;\n\n private readonly scrollThreshold: number;\n\n private readonly flipperNextLabel: string = 'next';\n\n private readonly flipperPrevLabel: string = 'prev';\n\n constructor(props: ISingleSlideCarouselProps) {\n super(props);\n this._nextSlide = this._nextSlide.bind(this);\n this._previousSlide = this._previousSlide.bind(this);\n this._handleTouchStart = this._handleTouchStart.bind(this);\n this._handleTouchEnd = this._handleTouchEnd.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onResized = this._onResized.bind(this);\n this.state = { showPrevious: false, showNext: false, offset: 0 };\n this.ref = React.createRef();\n this.slideRef = React.createRef();\n this.itemRef = React.createRef();\n this.direction = 'left';\n this.id = props.parentId || '';\n this.scrollThreshold = this.props.touchScrollThreshold !== undefined ? this.props.touchScrollThreshold : 100;\n }\n\n public componentDidUpdate(): void {\n this.carousel = this.ref.current!;\n this.slide = this.slideRef.current!;\n this.item = this.itemRef.current!;\n this._setSizes();\n this._updateFlippers(this.state.offset);\n }\n\n public componentDidMount(): void {\n this.direction = this.props.vertical ? 'top' : 'left';\n this.carousel = this.ref.current!;\n this.slide = this.slideRef.current!;\n this.item = this.itemRef.current!;\n this._setSizes();\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._onResized as EventListener);\n this._updateFlippers(0);\n }\n\n public componentWillUnmount(): void {\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n\n public render(): JSX.Element {\n const isVert: boolean = this.props.vertical === true;\n const slidePositionStyle = {} as React.CSSProperties;\n const modifiedChildren = this._getClonedChildren(isVert);\n slidePositionStyle[this.direction] = `${this.state.offset}px`;\n const carouselClass = isVert ? 'msc-ss-carousel-vert' : 'msc-ss-carousel';\n const carouselSlideClass = isVert ? 'msc-ss-carousel-vert-slide' : 'msc-ss-carousel-slide';\n const overflowClass = isVert ? 'msc-ss-carousel-vert-strip' : 'msc-ss-carousel-strip';\n const previousFlipperGlyph = isVert ? 'msi-chevron-up' : 'msi-chevron-left';\n const nextFlipperGlyph = isVert ? 'msi-chevron-down' : 'msi-chevron-right';\n const previousFlipperClassName = isVert ? 'msc-ss-carousel-vert__flipper' : 'msc-ss-carousel__flipper';\n const nextFlipperClassName = isVert\n ? 'msc-ss-carousel-vert__flipper msc-ss-carousel-vert__flipper--next'\n : 'msc-ss-carousel__flipper msc-ss-carousel__flipper--next';\n const disableClassName = !this.state.showPrevious || !this.state.showNext ? 'disabled' : null;\n return (\n
\n 0)}\n telemetryContent={this.props.telemetryContent}\n telemetryLabel={this.flipperPrevLabel}\n />\n 0)}\n telemetryContent={this.props.telemetryContent}\n telemetryLabel={this.flipperNextLabel}\n />\n
\n \n {modifiedChildren}\n \n
\n
\n );\n }\n\n private _getClonedChildren(isVert: boolean): React.DetailedReactHTMLElement, HTMLElement>[] {\n return React.Children.map(this.props.children, (child: React.ReactNode, index: number) => {\n const castChild = (child as React.ReactChild) as React.ReactElement;\n if (index === 1) {\n return React.cloneElement(castChild, {\n className: `${isVert ? SingleSlideCarousel.verticalItemsSelector : SingleSlideCarousel.itemsSelector} ${\n castChild.props.className\n }`,\n\n // @ts-expect-error\n ref: this.itemRef,\n onFocus: this._onFocus\n });\n }\n return React.cloneElement(castChild, {\n className: `${isVert ? SingleSlideCarousel.verticalItemsSelector : SingleSlideCarousel.itemsSelector} ${\n castChild.props.className\n }`,\n\n // @ts-expect-error\n onFocus: this._onFocus\n });\n });\n }\n\n private _nextSlide(): void {\n this._moveSingleSlide(true);\n }\n\n private _previousSlide(): void {\n this._moveSingleSlide(false);\n }\n\n private _handleTouchStart(evt: React.TouchEvent): void {\n if (evt.touches.length === 0) {\n this.scrollStart = undefined;\n } else {\n this.scrollStart = this.props.vertical === true ? evt.touches[0].screenY : evt.touches[0].screenX;\n }\n }\n\n private _handleTouchEnd(evt: React.TouchEvent): void {\n if (evt.changedTouches.length > 0 && this.scrollStart !== undefined) {\n const newTarget: number = this.props.vertical === true ? evt.changedTouches[0].screenY : evt.changedTouches[0].screenX;\n\n const delta = newTarget - this.scrollStart;\n\n if (delta > this.scrollThreshold) {\n this._previousSlide();\n }\n\n if (delta < -this.scrollThreshold) {\n this._nextSlide();\n }\n }\n\n this.scrollStart = undefined;\n\n return;\n }\n\n private _moveSingleSlide(next: boolean): void {\n let currentOffset = Number.parseInt(getCSS(this.slide!, this.direction), 10);\n const carouselSize = this.carouselSize;\n let maxScrollCount = Math.floor(carouselSize / this.itemSize);\n const directionModifier = next ? -1 : 1;\n currentOffset = !isNaN(currentOffset) && typeof currentOffset === 'number' ? currentOffset : 0;\n\n if (maxScrollCount === 0) {\n maxScrollCount = 1;\n }\n\n maxScrollCount = carouselSize % this.itemSize === 0 ? maxScrollCount - 1 : maxScrollCount;\n maxScrollCount = Math.max(maxScrollCount, 1);\n const maxScrollDistance = maxScrollCount * this.itemSize;\n let distanceToEdge = next ? this.slideSize - carouselSize + currentOffset : Math.abs(currentOffset);\n distanceToEdge = Math.max(0, distanceToEdge);\n\n const offset =\n maxScrollDistance <= distanceToEdge\n ? maxScrollDistance * directionModifier + currentOffset\n : distanceToEdge * directionModifier + currentOffset;\n\n this._updateFlippers(offset);\n }\n\n private _setSizes(): void {\n const item = this.item;\n if (item) {\n this.itemSize = this.props.vertical ? item.scrollHeight : item.scrollWidth;\n } else {\n this.itemSize = 0;\n }\n\n this.carouselSize = this._calculateCarouselSize();\n this.slideSize = this.slide ? (this.props.vertical ? this.slide.scrollHeight : this.slide.scrollWidth) : 0;\n }\n\n private _calculateCarouselSize(): number {\n if (!this.carousel) {\n return 0;\n }\n\n const carouselStyle = getComputedStyle(this.carousel);\n\n const padding = this.props.vertical\n ? Number.parseFloat(carouselStyle.paddingTop || '') + Number.parseFloat(carouselStyle.paddingBottom || '')\n : Number.parseFloat(carouselStyle.paddingLeft || '') + Number.parseFloat(carouselStyle.paddingRight || '');\n\n return this.props.vertical ? this.carousel.clientHeight - padding : this.carousel.clientWidth - padding;\n }\n\n private _canScrollPrevious(offset: number): boolean {\n return !isNaN(offset) && offset !== 0;\n }\n\n private _canScrollNext(offset: number): boolean {\n if (this.carouselSize + Math.abs(offset) >= this.slideSize) {\n return false;\n }\n\n return true;\n }\n\n private _updateFlippers(offset: number): void {\n this.setState({\n showPrevious: this._canScrollPrevious(offset),\n showNext: this._canScrollNext(offset),\n offset\n });\n }\n\n private _scrollItemIntoView(item: HTMLElement): void {\n const carouselSize = this.carouselSize;\n let offset = this.props.vertical ? item.offsetTop : item.offsetLeft;\n let updateOffset = false;\n\n const left = Number.parseInt(getCSS(this.slide!, 'left'), 10) || 0;\n const top = Number.parseInt(getCSS(this.slide!, 'top'), 10) || 0;\n\n if (this.props.vertical) {\n if (top < 0 && -top > offset) {\n if (offset !== 0) {\n offset = -offset + 1;\n }\n updateOffset = true;\n } else if (top + offset > carouselSize - this.itemSize) {\n offset = carouselSize - this.itemSize - offset - 1;\n updateOffset = true;\n }\n } else if (this.direction === 'left') {\n if (left < 0 && -left > offset) {\n if (offset !== 0) {\n offset = -offset + 1;\n }\n updateOffset = true;\n } else if (left + offset > carouselSize - this.itemSize) {\n offset = carouselSize - this.itemSize - offset + 19;\n updateOffset = true;\n }\n }\n\n if (updateOffset) {\n this._updateFlippers(offset);\n\n if (this.props.vertical) {\n setTimeout(() => {\n (this.slide as Node).parentElement!.scrollTop = 0;\n }, 0);\n } else {\n setTimeout(() => {\n (this.slide as Node).parentElement!.scrollLeft = 0;\n }, 0);\n }\n }\n }\n\n private _onFocus(event: React.FocusEvent): void {\n const target = event.currentTarget as HTMLElement;\n this._scrollItemIntoView(target);\n }\n\n private _onCarouselResized(): void {\n this._setSizes();\n let offset = Number.parseInt(getCSS(this.slide!, this.direction), 10);\n\n // Ensure the carousel slide fits across the entire alotted space\n if (!isNaN(offset) && offset < 0 && this.slideSize + offset < this.carouselSize) {\n offset = Math.min(0, this.carouselSize - this.slideSize);\n }\n\n this._updateFlippers(offset);\n }\n\n private readonly _onResized = (): void => {\n this._onCarouselResized();\n };\n}\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Quantity from './Quantity';\n\nexport * from './Quantity.props';\n\nexport { Quantity };\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nexport interface IDateTimeHelperResources {\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n closedText: string;\n}\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IDateTimeHelperResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IDateTimeHelperResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IDateTimeHelperResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IDateTimeHelperResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom} – ${openTo}`;\n};\n\nexport const buildStoreHours = (\n storeHours: RegularStoreHours,\n shouldMergeDays: boolean,\n resources: IDateTimeHelperResources\n): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n if (shouldMergeDays) {\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n } else {\n storeHoursList.push(buildHoursDisplayInfo('MON', 'MON', buildStoreHoursString(mondayHours, resources), resources));\n storeHoursList.push(buildHoursDisplayInfo('TUE', 'TUE', buildStoreHoursString(tuesdayHours, resources), resources));\n storeHoursList.push(buildHoursDisplayInfo('WED', 'WED', buildStoreHoursString(wednesdayHours, resources), resources));\n storeHoursList.push(buildHoursDisplayInfo('THU', 'THU', buildStoreHoursString(thursdayHours, resources), resources));\n storeHoursList.push(buildHoursDisplayInfo('FRI', 'FRI', buildStoreHoursString(fridayHours, resources), resources));\n storeHoursList.push(buildHoursDisplayInfo('SAT', 'SAT', buildStoreHoursString(saturdayHours, resources), resources));\n storeHoursList.push(buildHoursDisplayInfo('SUN', 'SUN', buildStoreHoursString(sundayHours, resources), resources));\n }\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '..';\nimport Collapse from '../collapse/Collapse';\nimport { ICollapseProps } from '../collapse/Collapse.props';\nimport { IDrawerProps } from './Drawer.props';\n\nexport interface IControlledDrawerState {\n isOpen: boolean;\n}\n\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * ControlledDrawer - This is a full width controlled collapse where the button glyph changes\n * when the drawer is open and closed. The toggle function can be managed by the parent.\n */\n\nexport default class ControlledDrawer extends React.PureComponent {\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n private isExpanded: boolean;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IDrawerProps) {\n super(props);\n const { openGlyph, closeGlyph } = this.props;\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: (props.collapseProps && props.collapseProps.isOpen) || false };\n this.isExpanded = this.state.isOpen;\n this.drawerGlyphClass = classnames('drawer__glyph', this.props.toggleGlyphClassName || '');\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames([this.drawerGlyphClass, openGlyph || closeGlyph || '']);\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames([this.drawerGlyphClass, openGlyph || '']);\n this.drawerCloseGlyph = classnames([this.drawerGlyphClass, closeGlyph || '']);\n }\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n collapseProps.isOpen = this.isManuallyToggled ? this.state.isOpen : collapseProps.isOpen || false;\n collapseProps.children = this.props.children;\n const drawerClass = classnames('drawer', this.props.className || '');\n this.isManuallyToggled = false;\n this.isExpanded = collapseProps.isOpen;\n this.setState({ isOpen: collapseProps.isOpen });\n this.payLoad.contentAction.etext = collapseProps.isOpen ? TelemetryConstant.Collapse : TelemetryConstant.Expand;\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n return (\n
\n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
\n );\n }\n\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const { toggleButtonText } = this.props;\n const drawerButtonTextClass = classnames('drawer__buttontext', this.props.toggleButtonClassName || '');\n if (this.props.glyphPlacement === 'end') {\n return (\n <>\n {this._generateTitle(classnames(drawerButtonTextClass, '__start'), toggleButtonText.toString())}\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n const isStart = this.props.glyphPlacement === 'start';\n const additionalClassName = `__${isStart ? 'end' : 'start'}`;\n return (\n <>\n {isStart && this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\n {this._generateTitle(classnames(drawerButtonTextClass, additionalClassName), this.props.toggleButtonText.toString())}\n \n );\n }\n\n private _generateTitle(titleLClassName: string, title: string): JSX.Element {\n if (this.props.onTextChange && this.props.requestContext) {\n return (\n \n );\n }\n return {title};\n }\n\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n const glyphClass = `${collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph} ${location}`;\n return ;\n }\n\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.isExpanded = !this.isExpanded;\n this.setState({ isOpen: this.isExpanded });\n this.isManuallyToggled = true;\n if (this.props.onToggle) {\n this.props.onToggle(this.state);\n }\n }\n}\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport interface IClientDimension {\n width: number;\n height: number;\n}\n\n/* A type safe Dictionary */\nexport interface IDictionaryStringString {\n [key: string]: string;\n}\n\n/**\n * @interface IGrid\n * @classdesc - The IGrid interface contract.\n * @export\n */\nexport interface IGrid {\n rows: number;\n columns: number;\n}\n\n/**\n * Clamp position between a range.\n * @param {number} value - Value to be clamped.\n * @param {number} min - Minimum value in range.\n * @param {number} max - Maximum value in range.\n * @returns The clap value if min passed is less than max else returns 0.\n */\nexport function clamp(value: number, min: number, max: number): number {\n if (min <= max) {\n return Math.min(Math.max(value, min), max);\n }\n return 0;\n}\n\n/**\n * Upper case the first letter of the string, if only one char exists on the string, uppercase it.\n * @param {string} value - Value to be upper cased.\n * @returns The upper cased string of the passed value, if it has just one char uppercase it.\n */\nexport function toUpperCaseFirstChar(value: string): string {\n if (value.length > 1) {\n return value.charAt(0).toUpperCase() + value.substr(1);\n }\n if (value.length === 1) {\n return value.charAt(0).toUpperCase();\n }\n return '';\n}\n\nexport function htmlCollectionToArray(nodeList: HTMLCollection): HTMLElement[] {\n return Array.prototype.slice.call(nodeList);\n}\n\nexport function getCSS(element: HTMLElement, property: string): string {\n let style = element.style[property];\n\n if (!style) {\n style = getComputedStyle(element)[property];\n }\n\n return style;\n}\n\nexport function createThrottledEvent(listener: EventListener, threshold: number): (event: Event) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let timer: any;\n let last = 0;\n\n return (event: Event) => {\n const now = Date.now();\n\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n\n if (last && now < last + threshold) {\n timer = setTimeout(() => {\n last = Date.now();\n listener(event);\n }, threshold - (now - last));\n } else {\n last = now;\n listener(event);\n }\n };\n}\n\nexport function addThrottledEvent(\n target: EventTarget,\n name: string,\n listener: EventListener,\n threshold: number = 150\n): (event: Event) => void {\n const throttledEventHandler = createThrottledEvent(listener, threshold);\n target.addEventListener(name, throttledEventHandler, false);\n\n return throttledEventHandler;\n}\n\n/* RTS utilities */\n/* TODO: Using any here for now, need to convert cssmodules into a dictionary in all modules */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function mapToCssModules(className: string = '', cssModule: any): string {\n if (!cssModule) {\n return className;\n }\n\n return className\n .split(' ')\n .map((c: string) => cssModule[c] || c)\n .join(' ');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isRef(target: any): boolean {\n if (!target) {\n return false;\n }\n\n return (>target).current !== undefined;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isElement(target: any): boolean {\n if (!target) {\n return false;\n }\n\n return (target).addEventListener !== undefined;\n}\n\nexport const keyCodes = {\n esc: 27,\n space: 32,\n tab: 9,\n up: 38,\n down: 40,\n enter: 13\n};\n\ninterface IMap {\n [key: string]: T;\n}\nconst warned: IMap = {};\n\nexport function warnOnce(message: string): void {\n if (!warned[message]) {\n if (typeof console !== 'undefined') {\n throw new Error(message);\n }\n warned[message] = true;\n }\n}\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport function findDOMElements(target: string): NodeListOf | string | null {\n try {\n if (typeof target === 'string' && canUseDOM) {\n let selection = document.querySelectorAll(target);\n\n if (selection.length === 0) {\n selection = document.querySelectorAll(`#${target}`);\n }\n\n if (selection.length === 0) {\n throw new Error();\n }\n return selection;\n }\n\n return target;\n } catch {\n console.error(`The target '${target}' could not be identified in the dom, tip: check spelling`);\n return null;\n }\n}\n\nexport function getTarget(target: string | HTMLElement | React.Ref): HTMLElement | React.Ref | null | string {\n const selection = findDOMElements(target);\n if (selection && selection.length > 0) {\n return selection[0];\n }\n\n return target;\n}\n\nexport function getTargetElement(target: string | HTMLElement | React.Ref): HTMLElement | null {\n const targetElement = getTarget(target);\n if (isRef(targetElement)) {\n return (>targetElement).current;\n }\n if (isElement(targetElement)) {\n return targetElement;\n }\n\n return null;\n}\n\nexport const TransitionTimeouts = {\n Fade: 150,\n Collapse: 350,\n Modal: 300,\n Carousel: 600\n};\n\nexport type TransitionStatuses = 'entering' | 'entered' | 'exiting' | 'exited';\n\nexport const focusableElements = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '[tabindex]:not(.modal)',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])'\n];\n\n/**\n * @name - extend\n * @description - extends an object with properties/values from one or more others.\n * @export\n * @public\n * @param {any[]} parameters - The objects to merge together.\n * @returns {any} - The extended object.\n */\n\n// eslint-disable-next-line complexity, @typescript-eslint/no-explicit-any\nexport function extend(...parameters: any[]): any {\n if (!parameters || parameters.length === 0) {\n return null;\n }\n\n const recursive = typeof parameters[0] === 'boolean' && parameters[0];\n\n if (parameters.length < 2) {\n return recursive ? null : parameters[0];\n }\n\n if (recursive && parameters.length < 3) {\n return parameters[1];\n }\n\n const target = recursive ? parameters[1] : parameters[0];\n\n for (let paramIndex = recursive ? 2 : 1; paramIndex < parameters.length; paramIndex++) {\n if (parameters[paramIndex] !== undefined) {\n for (const key of Object.keys(parameters[paramIndex])) {\n if (parameters[paramIndex].hasOwnProperty(key)) {\n const source = parameters[paramIndex][key];\n\n if (recursive) {\n let isSourceArray = Array.isArray ? Array.isArray(source) : {}.toString.call(source) === '[object Array]';\n let isTargetArray =\n !!target[key] &&\n (Array.isArray ? Array.isArray(target[key]) : {}.toString.call(target[key]) === '[object Array]');\n let isSourceObject = !isSourceArray && typeof source === 'object';\n let isTargetObject = !isTargetArray && !!target[key] && typeof target[key] === 'object';\n\n if (isSourceArray && isTargetArray) {\n for (const [arrayIndex, element] of source.entries()) {\n isSourceArray = Array.isArray ? Array.isArray(element) : {}.toString.call(element) === '[object Array]';\n isTargetArray =\n !!target[key][arrayIndex] &&\n (Array.isArray\n ? Array.isArray(target[key][arrayIndex])\n : {}.toString.call(target[key][arrayIndex]) === '[object Array]');\n isSourceObject = !isSourceArray && typeof element === 'object';\n isTargetObject = !isTargetArray && !!target[key][arrayIndex] && typeof target[key][arrayIndex] === 'object';\n\n if (isSourceArray) {\n target[key][arrayIndex] = extend(true, isTargetArray ? target[key][arrayIndex] : [], element);\n } else if (isSourceObject) {\n target[key][arrayIndex] = extend(true, isTargetObject ? target[key][arrayIndex] : {}, element);\n } else {\n target[key][arrayIndex] = element;\n }\n }\n continue;\n } else if (isSourceArray) {\n target[key] = extend(true, [], source);\n continue;\n } else if (isSourceObject) {\n target[key] = extend(true, isTargetObject ? target[key] : {}, source);\n continue;\n }\n }\n\n target[key] = source;\n }\n }\n }\n }\n\n return target;\n}\n\n/**\n * @name - getDimensions\n * @description - Gets the dimension of an element.\n * @export\n * @param {HTMLElement} containerElement - The container element.\n * @returns {IClientDimension} - The client dimension.\n * {IClientDimension.width} - The client width\n * {IClientDimension.height} - The client height.\n */\nexport function getDimensions(containerElement: HTMLElement): IClientDimension | null {\n if (containerElement === null) {\n return null;\n }\n return {\n width: containerElement.clientWidth,\n height: containerElement.clientHeight\n };\n}\n\n/**\n * Updates the max quantity for cart line item to default if not configured.\n * @param currentMaxQuantityForCartLineItem - The current max quantity for cart line item.\n * @returns The updated max quantity for cart line item.\n */\nexport function updateMaxQuantityForCartLineItem(currentMaxQuantityForCartLineItem: number | undefined): number {\n const defaultMaxQuantity = 10;\n\n const updatedMaxQuantityForCartLineItem = currentMaxQuantityForCartLineItem || defaultMaxQuantity;\n\n return updatedMaxQuantityForCartLineItem;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationItemProps } from './PaginationItem.props';\n\n/**\n * PaginationItem component.\n */\nexport default class PaginationItem extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'li'\n };\n\n public render(): JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { active, className, cssModule, disabled, tag: Tag, ...props }: any = this.props;\n\n const paginationItemClasses = mapToCssModules(\n classNames(className, 'msc-page-item', {\n active,\n disabled\n }),\n cssModule\n );\n\n return ;\n }\n}\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, Dictionary, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport Button from '../button/Button';\nimport { IFormKeyProps } from './form-builder.props';\n\n/**\n * The state of the form builder.\n */\nexport interface IFormBuilderState {\n /**\n * The captured values.\n */\n values: string[];\n\n /**\n * If the form has been submitted.\n */\n isSubmitted: boolean;\n}\n\n/**\n * The properties of the form builder.\n */\nexport interface IFormBuilderProps {\n /**\n * The component showing confirmation after form submitted successfully.\n */\n confirmationComponent: React.ReactNode;\n\n /**\n * The heading for the component shown above the input boxes.\n */\n heading: string;\n\n /**\n * The text shown on the submit button.\n */\n submitButtonText: string;\n\n /**\n * The keys of the form values to capture, which will be shown as labels for the inputs.\n */\n keys: IFormKeyProps[];\n\n /**\n * The error message shown when submitting the form and required value is missing.\n */\n requiredValueMissingErrorMessage: string;\n\n /**\n * The action to perform when the form is submitted.\n * @param { formKey: IFormKeyProps, value: string[] } entry - The form data as key-value pairs to submit.\n */\n onSubmit(entry?: { formKey: IFormKeyProps; value: string }[]): Promise;\n}\n\n/**\n * The interface for properties of form builder error.\n */\nexport interface IFormBuilderErrorProps {\n errorMessage?: string;\n}\n\n/**\n * The error component in form builder.\n * @param errorProperties - The error properties.\n * @param errorProperties.errorMessage - The error message to show.\n * @returns The error component.\n */\nexport const FormBuilderErrorComponent: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n {errorMessage}\n \n );\n};\n\n/**\n * The component to capture form data.\n */\nexport class FormBuilder extends React.Component {\n private readonly requiredValueMissing: Dictionary;\n\n public constructor(props: IFormBuilderProps) {\n super(props);\n this.state = { values: this.props.keys.map(() => ''), isSubmitted: false };\n\n // Setup a boolean dictionary to keep track if required value is missing for every field to submit.\n this.requiredValueMissing = new Dictionary();\n for (const formKey of this.props.keys) {\n if (formKey.resourceId) {\n this.requiredValueMissing.setValue(formKey.resourceId, formKey.isRequired ?? false);\n }\n }\n }\n\n public shouldComponentUpdate(nextProps: IFormBuilderProps, nextState: IFormBuilderState): boolean {\n if (\n this.props.heading !== nextProps.heading ||\n this.props.confirmationComponent !== nextProps.confirmationComponent ||\n this.props.submitButtonText !== nextProps.submitButtonText ||\n this.props.requiredValueMissingErrorMessage !== nextProps.requiredValueMissingErrorMessage\n ) {\n return true;\n }\n\n // If any form key has changed, the component should update.\n if (\n !this.props.keys.every((formKey: IFormKeyProps, index: number) => {\n return (\n nextProps.keys[Number(index)].isRequired === formKey.isRequired &&\n nextProps.keys[Number(index)].resourceId === formKey.resourceId &&\n nextProps.keys[Number(index)].resourceValue === formKey.resourceValue\n );\n })\n ) {\n return true;\n }\n\n // If any value has changed, the component should update.\n if (\n this.state.isSubmitted !== nextState.isSubmitted ||\n !this.state.values.every((value: string, index: number) => {\n return value === nextState[Number(index)];\n })\n ) {\n return true;\n }\n\n return false;\n }\n\n public render(): JSX.Element {\n return (\n <>\n {!this.state.isSubmitted && ArrayExtensions.hasElements(this.props.keys) && (\n
\n

{this.props.heading}

\n
\n \n {this.props.keys\n .filter((formKey: IFormKeyProps) => {\n return (\n !ObjectExtensions.isNullOrUndefined(formKey.resourceId) &&\n !ObjectExtensions.isNullOrUndefined(formKey.resourceValue)\n );\n })\n .map((formKey: IFormKeyProps, index: number) => {\n const currentValue: string = this.state.values[Number(index)];\n return (\n
\n \n {`${formKey.resourceValue!}${formKey.isRequired ? ' *' : ''}`}\n {this.requiredValueMissing.getValue(formKey.resourceId!) && (\n \n )}\n \n \n
\n );\n })}\n
\n \n {this.props.submitButtonText}\n \n
\n \n
\n
\n )}\n {this.state.isSubmitted && this.props.confirmationComponent}\n \n );\n }\n\n private get isAnyRequiredValueMissing(): boolean {\n const notFound: number = -1;\n return this.requiredValueMissing.getValues().findIndex((isMissing: boolean) => isMissing) !== notFound;\n }\n\n /**\n * The action to perform when the submit button is clicked.\n * @param event - The click event.\n * @returns The async result.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n const formData: { formKey: IFormKeyProps; value: string }[] = this.props.keys.map((formKey: IFormKeyProps, index: number) => {\n const currentValue: string = this.state.values[Number(index)];\n return {\n formKey: { resourceId: formKey.resourceId!, resourceValue: formKey.resourceValue },\n value: currentValue\n };\n });\n await this.props.onSubmit(formData);\n this.setState((previousState: Readonly) => {\n return { values: previousState.values, isSubmitted: true };\n });\n };\n\n /**\n * The action to perform when any input in the form has changed.\n * @param event - The input change event.\n * @returns The async result.\n */\n private readonly _onInputChange = async (event: React.ChangeEvent): Promise => {\n event.preventDefault();\n const changedValueIndex: number = Number.parseInt(event.target.getAttribute('data-index') ?? '', 10);\n if (ObjectExtensions.isNullOrUndefined(changedValueIndex)) {\n return Promise.reject(new Error('form-builder: invalid value index.'));\n }\n const newState = {\n values: this.state.values.map((value: string, index: number) => {\n const currentKey: IFormKeyProps = this.props.keys[Number(index)];\n if (index === changedValueIndex && currentKey.resourceId) {\n this.requiredValueMissing.setValue(\n currentKey.resourceId,\n (currentKey.isRequired ?? false) && event.target.value === ''\n );\n return event.target.value;\n }\n return value;\n })\n };\n this.setState(newState);\n return Promise.resolve();\n };\n}\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function format(formatSpecifier: string, ...parameters: any[]): string {\n if (!formatSpecifier) {\n return '';\n }\n\n return formatSpecifier.replace(/{(\\d+)}/g, (match: string, index: number) => {\n if (index >= parameters.length) {\n return match;\n }\n\n const value = parameters[index];\n\n if (typeof value !== 'number' && !value) {\n return '';\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n return value.toString();\n });\n}\n\n/**\n * @name - isNullOrWhiteSpace\n * @description - Determines if the specified string is undefined, null, empty, or whitespace.\n * @export\n * @public\n * @param {string} value - The string to examine.\n * @returns {boolean} - True if the value is undefined, null, empty, or whitespace, otherwise false.\n */\nexport function isNullOrWhiteSpace(value: string): boolean {\n return !value || typeof value !== 'string' || !trim(value);\n}\n\n/**\n * @name - trim\n * @description - Trims leading and trailing whitespace from the string.\n * @export\n * @public\n * @param {string} value - The string to examine.\n * @returns {string} - The trimmed string.\n */\nexport function trim(value: string): string {\n // Any flavor of !value (ie. null/undefined/'') should return itself.\n if (!value || typeof value !== 'string') {\n return value;\n }\n\n if (value.trim) {\n return value.trim();\n }\n\n return value.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * @name - startsWith\n * @description - Determines if the specified string starts with the specified value.\n * @param ignoreCase\n * @export\n * @public\n * @param {string} value - The string to look in.\n * @param {string} prefix - The prefix to look for.\n * @returns {boolean} - True if the string starts with the prefix, otherwise false.\n */\nexport function startsWith(value: string, prefix: string, ignoreCase: boolean = true): boolean {\n if (!value || !prefix) {\n return false;\n }\n\n if (ignoreCase) {\n value = value.toLocaleLowerCase();\n prefix = prefix.toLocaleLowerCase();\n }\n\n if (value.startsWith) {\n return value.startsWith(prefix);\n }\n\n return value.startsWith(prefix);\n}\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { UncontrolledTooltip } from '..';\nimport { mapToCssModules } from '../common/utilities';\nimport PaginationItem from './PaginationItem';\nimport PaginationLink from './PaginationLink';\nimport { IUncontrolledPaginationProps } from './UncontrolledPagination.props';\n\n/**\n * Uncontrolled Pagination component.\n */\nexport default class UncontrolledPagination extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'nav',\n listTag: 'ul',\n 'aria-label': 'pagination',\n items: 0,\n itemsPerPage: 25,\n startingItem: 0\n };\n\n private static readonly pagesDisplayed: number = 7;\n\n private maxPages: number;\n\n private activePage: number = 0;\n\n private qsps: { [param: string]: string };\n\n private url: string;\n\n private hash: string;\n\n constructor(props: IUncontrolledPaginationProps) {\n super(props);\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage!) : 0;\n this.activePage = Math.floor((this.props.startingItem || 0) / this.props.itemsPerPage!);\n this.qsps = {};\n const splitUrl = this.props.url.split('?');\n\n if (splitUrl[1]) {\n this.url = splitUrl[0];\n const secondSplit = splitUrl[1].split('#');\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n const parsedQsps = secondSplit[0].split('&');\n\n for (const qsp of parsedQsps) {\n const qspPair = qsp.split('=');\n\n if (this.props.qsp !== qspPair[0]) {\n this.qsps[qspPair[0]] = qspPair[1];\n }\n }\n } else {\n const secondSplit = splitUrl[0].split('#');\n this.url = secondSplit[0];\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n }\n }\n\n public render(): JSX.Element {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const {\n className,\n baseUrl,\n qsp,\n items,\n itemsPerPage,\n startingItem,\n previousText,\n nextText,\n previousAriaLabel,\n nextAriaLabel,\n listClassName,\n cssModule,\n children,\n size,\n tag: Tag,\n listTag: ListTag,\n 'aria-label': label,\n role,\n ...props\n }: any = this.props;\n\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage!) : 0;\n this.activePage = Math.floor((this.props.startingItem || 0) / this.props.itemsPerPage!);\n this.qsps = {};\n const splitUrl = this.props.url.split('?');\n\n if (splitUrl[1]) {\n this.url = splitUrl[0];\n const secondSplit = splitUrl[1].split('#');\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n const parsedQsps = secondSplit[0].split('&');\n\n for (const activeQsp of parsedQsps) {\n const qspPair = activeQsp.split('=');\n\n if (this.props.qsp !== qspPair[0]) {\n this.qsps[qspPair[0]] = qspPair[1];\n }\n }\n } else {\n const secondSplit = splitUrl[0].split('#');\n this.url = secondSplit[0];\n this.hash = secondSplit[1] ? `#${secondSplit[1]}` : '';\n }\n\n const paginationClasses = mapToCssModules(classNames(className), cssModule);\n\n const listpaginationClasses = mapToCssModules(\n classNames(listClassName, 'msc-pagination', {\n [`msc-pagination-${size}`]: !!size\n }),\n cssModule\n );\n\n return (\n \n \n {this._generatePageLinks()}\n \n \n );\n }\n\n private _generateUrl(page: number): string {\n const items = this.props.itemsPerPage! * page;\n const keys = Object.keys(this.qsps);\n let qspUrl = page > 0 ? `?${this.props.qsp}=${items}` : '';\n\n keys.forEach((key: string) => {\n qspUrl = qspUrl ? `${qspUrl}&${key}=${this.qsps[key]}` : `?${key}=${this.qsps[key]}`;\n });\n\n return this.url + qspUrl + this.hash;\n }\n\n private _generatePaginationArrow(next: boolean, disable: boolean, className: string): React.ReactElement {\n const url = disable ? undefined : this._generateUrl(this.activePage + (next ? 1 : -1));\n const tooltipId = next ? this.props.nextId : this.props.prevId;\n const ariaDescribedBy = next ? this.props.nextAreaDescribed : this.props.prevAreaDescribed;\n const placement = next ? 'right' : 'left';\n const tag = disable ? 'span' : 'a';\n\n return (\n \n \n {next ? this.props.nextText : this.props.previousText}\n \n {tooltipId && (\n \n {next ? 'next' : 'previous'}\n \n )}\n \n );\n }\n\n private _generatePaginationItem(page: number): React.ReactElement {\n const active = this.activePage === page;\n const url = this._generateUrl(page);\n page += 1;\n\n return (\n \n \n {page}\n \n \n );\n }\n\n private _generateEllipse(): React.ReactElement {\n return (\n \n ...\n \n );\n }\n\n private _generatePageLinks(): React.ReactFragment {\n const displayCountSide = 3;\n let leftDistance = this.activePage;\n let rightDistance = this.maxPages - this.activePage - 1;\n const leftEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && leftDistance > 3;\n const rightEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && rightDistance > 3;\n\n leftDistance = Math.min(leftDistance, displayCountSide);\n rightDistance = Math.min(rightDistance, displayCountSide);\n const pages = [];\n const ellipseOffset = leftEllipse ? -1 : 0;\n const displayedPagesOnLeft = leftDistance + (displayCountSide - rightDistance) + ellipseOffset;\n const startingIndex = Math.max(this.activePage - displayedPagesOnLeft, 0);\n const endIndex = Math.min(\n startingIndex + 5 + (rightEllipse ? 0 : 1) + (leftEllipse ? 0 : 1),\n rightEllipse ? this.maxPages - 1 : this.maxPages\n );\n\n if (leftEllipse) {\n pages.push(this._generatePaginationItem(0));\n pages.push(this._generateEllipse());\n }\n\n for (let i = startingIndex; i < endIndex; i++) {\n pages.push(this._generatePaginationItem(i));\n }\n\n if (rightEllipse) {\n pages.push(this._generateEllipse());\n pages.push(this._generatePaginationItem(this.maxPages - 1));\n }\n\n return (\n <>\n {this._generatePaginationArrow(false, this.activePage === 0, 'previous')}\n {pages}\n {this._generatePaginationArrow(true, this.activePage === this.maxPages - 1, 'next')}\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport { IPaginationProps } from './Pagination.props';\n\n/**\n * Pagination component.\n */\nexport default class Pagination extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'nav',\n listTag: 'ul',\n 'aria-label': 'pagination'\n };\n\n public render(): JSX.Element {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const {\n className,\n listClassName,\n cssModule,\n size,\n tag: Tag,\n listTag: ListTag,\n 'aria-label': label,\n role,\n ...props\n }: any = this.props;\n\n const paginationClasses = mapToCssModules(classNames(className), cssModule);\n\n const listpaginationClasses = mapToCssModules(\n classNames(listClassName, 'msc-pagination', {\n [`msc-pagination-${size}`]: !!size\n }),\n cssModule\n );\n\n return (\n \n \n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { canUseDOM, getTargetElement, mapToCssModules } from '../common/utilities';\nimport PopperContent from '../popper-content/PopperContent';\nimport { IPopoverProps } from './Popover.props';\n\n/**\n * Popover component.\n */\nexport default class Popover extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n placement: 'right',\n toggle: () => {\n return;\n }\n };\n\n public props: IPopoverProps;\n\n private target: HTMLElement | null;\n\n private popover: HTMLDivElement | null;\n\n private tabPressed: boolean = false;\n\n constructor(props: IPopoverProps) {\n super(props);\n this.props = props;\n\n this.popover = null;\n this._addTargetEvents = this._addTargetEvents.bind(this);\n this._handleDocumentClick = this._handleDocumentClick.bind(this);\n this._removeTargetEvents = this._removeTargetEvents.bind(this);\n this.getRef = this.getRef.bind(this);\n this._toggle = this._toggle.bind(this);\n this._focusOutTarget = this._focusOutTarget.bind(this);\n this._focusOutPopover = this._focusOutPopover.bind(this);\n this._keyDown = this._keyDown.bind(this);\n this._show = this._show.bind(this);\n this._hide = this._hide.bind(this);\n this.target = null;\n }\n\n public componentDidMount(): void {\n this.target = getTargetElement(this.props.target);\n this._handleProps();\n }\n\n public componentDidUpdate(): void {\n this._handleProps();\n }\n\n public componentWillUnmount(): void {\n this._removeTargetEvents();\n }\n\n public getRef(ref: HTMLDivElement | null): void {\n this.popover = ref;\n }\n\n public render(): JSX.Element | null {\n if (!this.props.isOpen) {\n return null;\n }\n\n const {\n cssModule,\n isOpen,\n target,\n placementPrefix,\n hideArrow,\n className,\n innerClassName,\n modifiers,\n placement,\n container,\n offset,\n toggle,\n boundariesElement,\n role,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(classNames('msc-popover-inner', this.props.innerClassName), this.props.cssModule);\n\n const popperClasses = mapToCssModules(classNames('msc-popover', 'show', this.props.className), this.props.cssModule);\n\n return (\n \n
\n \n );\n }\n\n private _handleProps(): void {\n if (this.props.isOpen) {\n this._show();\n } else {\n this._hide();\n }\n }\n\n private _show(): void {\n this.tabPressed = false;\n this._addTargetEvents();\n if (!this.props.isOpen) {\n this._toggle();\n }\n }\n\n private _hide(): void {\n this._removeTargetEvents();\n if (this.props.isOpen) {\n this._toggle();\n }\n }\n\n private _handleDocumentClick(e: Event): void {\n if (!this.target) {\n return;\n }\n\n const target = e.target as HTMLElement;\n\n if (\n e.target !== this.target &&\n !this.target.contains(target) &&\n e.target !== this.popover &&\n !(this.popover && this.popover.contains(target))\n ) {\n if (this.props.isOpen) {\n this._toggle();\n }\n }\n }\n\n private _addTargetEvents(): void {\n if (!this.target) {\n return;\n }\n if (canUseDOM) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.addEventListener(event, this._handleDocumentClick, true);\n });\n this.target.addEventListener('focusout', this._focusOutTarget, true);\n this.target.addEventListener('keydown', this._keyDown, true);\n }\n }\n\n private _removeTargetEvents(): void {\n if (!this.target) {\n return;\n }\n if (canUseDOM) {\n ['click', 'touchstart'].forEach((event: string) => {\n document.removeEventListener(event, this._handleDocumentClick, true);\n });\n this.target.removeEventListener('focusout', this._focusOutTarget, true);\n this.target.removeEventListener('keydown', this._keyDown, true);\n }\n }\n\n private _focusOutPopover(): void {\n setTimeout(() => {\n const nextFocus = document.activeElement;\n if (this.popover && !this.popover.contains(nextFocus)) {\n this._hide();\n }\n }, 1);\n }\n\n private _focusOutTarget(): void {\n if (this.tabPressed) {\n this.tabPressed = false;\n setTimeout(() => {\n const nextFocus = document.activeElement;\n if (this.popover && !this.popover.contains(nextFocus)) {\n this._hide();\n }\n }, 1);\n }\n }\n\n private _keyDown(e: KeyboardEvent): void {\n if (e.keyCode === 9) {\n this.tabPressed = true;\n } else if (this.props.isOpen && e.keyCode === 27 && this.props.toggle) {\n this.props.toggle();\n }\n }\n\n private _toggle(): void {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.toggle) {\n this.props.toggle();\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { canUseDOM } from '../common/utilities';\nimport { IPortalProps } from './Portal.props';\n\nexport interface IPortalState {\n defaultNode: Element | null;\n}\n\n/**\n * Portal component.\n */\nexport default class Portal extends React.PureComponent {\n constructor(props: IPortalProps) {\n super(props);\n\n this.state = {\n defaultNode: null\n };\n }\n\n public componentWillUnmount(): void {\n if (this.state.defaultNode) {\n this.state.defaultNode.remove();\n }\n }\n\n public render(): React.ReactPortal | null {\n let node = null;\n if (!canUseDOM) {\n return null;\n }\n\n if (!this.props.node && !this.state.defaultNode) {\n node = document.createElement('div');\n document.body.appendChild(node);\n this.setState({ defaultNode: node });\n }\n return createPortal(this.props.children, this.props.node || node);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { focusableElements, TransitionTimeouts } from '../common/utilities';\nimport Fade from '../fade/Fade';\nimport IModalProps from './Modal.props';\nimport Portal from './Portal';\n\nexport interface IModalState {\n wasOpen: boolean;\n isOpen: boolean;\n mouseDownElement: EventTarget | null;\n}\n\nexport type ModalVerticalPosition = 'top' | 'center' | 'bottom';\nexport type ModalHorizontalPosition = 'left' | 'center' | 'right';\n\n/**\n * Modal component.\n */\nexport default class Modal extends React.PureComponent {\n public static defaultProps: Partial = {\n isOpen: false,\n autoFocus: true,\n verticalPosition: 'top', // Needs to be non-null since we use non-null assertion in getVerticalPositionClass\n horizontalPosition: 'center', // Needs to be non-null since we use non-null assertion in getHorizontalPositionClass\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n zIndex: 1000,\n tabIndex: 0,\n fade: true,\n modalTransition: {\n timeout: TransitionTimeouts.Modal\n },\n backdropTransition: {\n mountOnEnter: true,\n timeout: TransitionTimeouts.Fade // Uses standard fade transition\n }\n };\n\n private static openCount: number = 0;\n\n private element: HTMLElement | null;\n\n private mounted: boolean;\n\n private readonly ref: React.RefObject;\n\n /**\n * This property is initialized in componentDidMount rather than constructor in case the dialog needs to be pre-rendered.\n */\n private applicationNode!: HTMLElement | null;\n\n constructor(props: IModalProps) {\n super(props);\n this.element = null;\n this.ref = React.createRef();\n this.mounted = false;\n\n this._getFocusableChildren = this._getFocusableChildren.bind(this);\n this._handleBackdropClick = this._handleBackdropClick.bind(this);\n this._handleBackdropMouseDown = this._handleBackdropMouseDown.bind(this);\n this._handleEscape = this._handleEscape.bind(this);\n this._handleTab = this._handleTab.bind(this);\n this._onOpened = this._onOpened.bind(this);\n this._onClosed = this._onClosed.bind(this);\n\n this.state = {\n wasOpen: false,\n isOpen: props.isOpen || false,\n mouseDownElement: null\n };\n\n if (props.isOpen) {\n this._open();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.onEnter) {\n this.props.onEnter();\n }\n this.mounted = true;\n\n const element = document.createElement('div');\n element.setAttribute('tabindex', '-1');\n element.style.visibility = 'hidden';\n element.style.position = 'position';\n this.element = element;\n document.body.appendChild(element);\n\n this.applicationNode =\n this.props.applicationNode instanceof HTMLElement\n ? this.props.applicationNode\n : document.querySelector(`#${this.props.applicationNode}`);\n\n if (this.state.isOpen && !this.state.wasOpen) {\n this._open();\n }\n }\n\n public componentWillUnmount(): void {\n if (this.props.onExit) {\n this.props.onExit();\n }\n if (this.state.isOpen) {\n this._close();\n }\n this.mounted = false;\n\n if (this.element) {\n this.element.remove();\n }\n }\n\n public componentDidUpdate(_prevProps: IModalProps, prevState: IModalState): void {\n if (\n (this.state.isOpen && !prevState.isOpen) ||\n (this.props.shouldUpdateFocusToFirstElement && !_prevProps.shouldUpdateFocusToFirstElement)\n ) {\n setTimeout(() => {\n const focusableElementArr = this._getFocusableChildren();\n if (focusableElementArr && focusableElementArr.length > 0 && focusableElementArr[0]) {\n const firstFocusableElement = focusableElementArr[0] as HTMLElement;\n firstFocusableElement.focus();\n }\n }, 100);\n }\n }\n // eslint-disable-next-line react/no-deprecated\n public componentWillReceiveProps(nextProps: IModalProps): void {\n if (nextProps.isOpen && !this.props.isOpen) {\n this.setState({ isOpen: nextProps.isOpen });\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.isOpen && !this.state.wasOpen) {\n this._open();\n }\n if (this.element !== null) {\n const {\n wrapClassName,\n modalClassName,\n backdropClassName,\n contentClassName,\n className,\n cssModule,\n modalTransition,\n backdropTransition,\n backdrop,\n isOpen,\n onOpened,\n onClosed,\n role,\n size,\n tabIndex,\n external,\n verticalPosition,\n horizontalPosition,\n keyboard,\n zIndex,\n fade,\n toggle,\n children,\n applicationNode,\n returnFocusRef,\n 'aria-labelledby': ariaLabelledbyId,\n ...dialogAttributes\n } = this.props;\n\n const modalAttributes = {\n onClick: this._handleBackdropClick,\n onMouseDown: this._handleBackdropMouseDown,\n onKeyUp: this._handleEscape,\n onKeyDown: this._handleTab,\n style: { display: 'block' }\n };\n\n const modalTransitions = {\n ...Fade.defaultProps,\n ...modalTransition,\n baseClass: fade && modalTransition ? modalTransition.baseClass : '',\n timeout: fade && modalTransition ? modalTransition.timeout : 0\n };\n const backdropTransitions = {\n ...Fade.defaultProps,\n ...backdropTransition,\n baseClass: fade && backdropTransition ? backdropTransition.baseClass : '',\n timeout: fade && backdropTransition ? backdropTransition.timeout : 0\n };\n\n const Backdrop = fade ? (\n \n ) : (\n
\n );\n\n const dialogBaseClass = 'msc-modal__dialog';\n const dialogClasses = classNames([dialogBaseClass, className, size ? `msc-modal__${size}` : null]);\n\n const dialog = (\n \n
\n {children}\n
\n
\n );\n\n return (\n \n
\n \n {external}\n {dialog}\n \n {Backdrop}\n
\n
\n );\n }\n\n return null;\n }\n\n private _open(): void {\n if (this.element) {\n this.element.style.zIndex = `${this.props.zIndex || 1000}`;\n this.element.style.display = 'block';\n this.element.style.visibility = 'visible';\n if (Modal.openCount === 0) {\n if (window) {\n const scrollY = window.scrollY;\n const scrollbarWidth = window.innerWidth - document.body.clientWidth;\n document.body.style.position = 'fixed';\n document.body.style.top = `-${scrollY}px`;\n document.body.style.right = `${scrollbarWidth}px`;\n document.body.style.left = '0px';\n }\n\n document.body.className = classNames(document.body.className, 'modal-open');\n }\n Modal.openCount += 1;\n document.body.firstElementChild?.setAttribute('aria-hidden', 'true');\n if (this.applicationNode) {\n this.applicationNode.setAttribute('aria-hidden', 'true');\n }\n\n this.setState({ ...this.state, wasOpen: true });\n }\n }\n\n private _close(): void {\n if (!this.state.isOpen) {\n return;\n }\n\n if (this.element) {\n this.element.style.display = 'none';\n setTimeout(() => {\n if (this.element) {\n this.element.style.visibility = 'hidden';\n this.element.style.removeProperty('display');\n }\n }, 0);\n }\n\n if (Modal.openCount <= 1) {\n const modalOpenClassName = 'modal-open';\n document.body.firstElementChild?.setAttribute('aria-hidden', 'false');\n\n // Use regex to prevent matching `modal-open` as part of a different class, e.g. `my-modal-opened`\n const modalOpenClassNameRegex = new RegExp(`(^| )${modalOpenClassName}( |$)`);\n document.body.className = document.body.className.replace(modalOpenClassNameRegex, ' ').trim();\n\n if (window) {\n const scrollY = document.body.style.top;\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.right = '';\n document.body.style.left = '';\n window.scrollTo(0, -Number.parseInt(scrollY || '0', 10));\n }\n }\n Modal.openCount -= 1;\n\n if (this.applicationNode) {\n this.applicationNode.setAttribute('aria-hidden', 'false');\n }\n\n if (this.props.returnFocusRef && this.props.returnFocusRef.current) {\n this.props.returnFocusRef.current.focus();\n }\n\n this.setState({ ...this.state, wasOpen: false });\n }\n\n private _getFocusableChildren(): NodeListOf | null {\n if (this.element === null) {\n return null;\n }\n\n return this.element.querySelectorAll(focusableElements.join(', '));\n }\n\n private _getFocusedChild(): Element | null {\n const focusableChildren = this._getFocusableChildren();\n\n try {\n return document.activeElement;\n } catch {\n return focusableChildren === null ? null : focusableChildren[0];\n }\n }\n\n private _handleBackdropClick(e: React.MouseEvent): void {\n if (e.target === this.state.mouseDownElement) {\n e.stopPropagation();\n if (!this.props.isOpen || this.props.backdrop !== true) {\n return;\n }\n\n const container = this.ref.current;\n\n if (e.target && container && !container.contains(e.target as Node) && this.props.toggle) {\n this.props.toggle();\n }\n }\n }\n\n private _handleTab(e: React.KeyboardEvent): void {\n if (e.which !== 9) {\n return;\n }\n\n const focusableChildren = this._getFocusableChildren();\n if (focusableChildren === null) {\n return;\n }\n\n const totalFocusable = focusableChildren.length;\n const currentFocus = this._getFocusedChild();\n\n let focusedIndex = 0;\n\n for (let i = 0; i < totalFocusable; i += 1) {\n if (focusableChildren[i] === currentFocus) {\n focusedIndex = i;\n break;\n }\n }\n\n let el: HTMLElement | null = null;\n if (e.shiftKey && focusedIndex === 0) {\n e.preventDefault();\n el = focusableChildren[totalFocusable - 1] as HTMLElement;\n } else if (!e.shiftKey && focusedIndex === totalFocusable - 1) {\n e.preventDefault();\n el = focusableChildren[0] as HTMLElement;\n }\n if (el) {\n el.focus();\n }\n }\n\n private _handleBackdropMouseDown(e: React.MouseEvent): void {\n this.setState({\n mouseDownElement: e.target\n });\n }\n\n private _handleEscape(e: React.KeyboardEvent): void {\n if (this.props.isOpen && this.props.keyboard && e.keyCode === 27 && this.props.toggle) {\n this.props.toggle();\n }\n }\n\n private _onOpened(node: HTMLElement, isAppearing: boolean): void {\n if (this.props.onOpened !== undefined) {\n this.props.onOpened();\n }\n if (this.props.modalTransition !== undefined && this.props.modalTransition.onEntered !== undefined) {\n this.props.modalTransition.onEntered(node, isAppearing);\n }\n }\n\n private _onClosed(node: HTMLElement): void {\n if (this.props.onClosed !== undefined) {\n this.props.onClosed();\n }\n this._close();\n if (this.props.modalTransition !== undefined && this.props.modalTransition.onExited !== undefined) {\n this.props.modalTransition.onExited(node);\n }\n if (this.mounted) {\n this.setState({ isOpen: false });\n }\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalBodyProps from './ModalBody.props';\n\n/**\n * ModalBody component.\n */\nexport default class ModalBody extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'div'\n };\n\n public render(): JSX.Element {\n const { className, cssModule, tag, id, ...attributes } = this.props;\n const Tag = tag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__body'), cssModule);\n return ;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalFooterProps from './ModalFooter.props';\n\n/**\n * ModalFooter component.\n */\nexport default class ModalFooter extends React.PureComponent {\n public static defaultProps: Partial = {\n tag: 'div'\n };\n\n public render(): JSX.Element {\n const { className, cssModule, tag, ...attributes } = this.props;\n const Tag = tag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__footer'), cssModule);\n return ;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { mapToCssModules } from '../common/utilities';\nimport IModalHeaderProps from './ModalHeader.props';\n\n/**\n * ModalHeader component.\n */\nexport default class ModalHeader extends React.PureComponent {\n public render(): JSX.Element {\n let closeButton;\n const { className, cssModule, children, toggle, tag, wrapTag, closeAriaLabel, closeButtonLabel, id, ...attributes } = this.props;\n\n const Tag = tag || 'h5';\n const WrapTag = wrapTag || 'div';\n const classes = mapToCssModules(classNames(className, 'msc-modal__header'), cssModule);\n\n if (toggle) {\n closeButton = (\n \n );\n }\n\n return (\n \n {children && {children}}\n {closeButton}\n \n );\n }\n}\n"],"sourceRoot":""}