{"version":3,"sources":["webpack:///./src/assets/img/icon/teacher-blue.svg","webpack:///./node_modules/vue-full-calendar/components/FullCalendar.vue?9640","webpack:///node_modules/vue-full-calendar/components/FullCalendar.vue","webpack:///./node_modules/vue-full-calendar/components/FullCalendar.vue?d16e","webpack:///./node_modules/vue-full-calendar/components/FullCalendar.vue","webpack:///./src/assets/img/icon/home-2.svg","webpack:///./node_modules/lodash.defaultsdeep/index.js","webpack:///./src/assets/img/icon/profile-blue.svg","webpack:///./src/containers/TheBottomCustom.vue?3606","webpack:///src/containers/TheBottomCustom.vue","webpack:///./src/containers/TheBottomCustom.vue?7d47","webpack:///./src/containers/TheBottomCustom.vue","webpack:///./node_modules/vue-sweet-calendar/dist/SweetCalendar.umd.min.js","webpack:///./node_modules/vue-full-calendar/node_modules/fullcalendar/dist/fullcalendar.js","webpack:///./src/assets/img/icon/icondefault.svg","webpack:///./src/assets/img/icon/iconBook.svg","webpack:///./src/assets/img/icon/book-blue.svg","webpack:///./src/views/FindTutor/MyTutor.vue?603b","webpack:///./node_modules/vue-full-calendar/node_modules/jquery/dist/jquery.js","webpack:///./src/assets/img/icon/homegrey.svg","webpack:///./src/assets/img/icon/iconTeacher.svg","webpack:///./src/assets/img/icon/iconBell.png","webpack:///./src/assets/img/icon/chevron-right.svg","webpack:///./node_modules/vue-date-pick/dist/vueDatePick.js","webpack:///./src/assets/img/icon/profile-circle.svg","webpack:///./src/views/FindTutor/MyTutor.vue?12b8","webpack:///src/views/FindTutor/MyTutor.vue","webpack:///./src/views/FindTutor/MyTutor.vue?ff0d","webpack:///./src/views/FindTutor/MyTutor.vue"],"names":["module","exports","render","_vm","this","_h","$createElement","_c","_self","ref","attrs","staticRenderFns","component","LARGE_ARRAY_SIZE","HASH_UNDEFINED","HOT_COUNT","HOT_SPAN","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","undefinedTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","Object","freeSelf","self","root","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","types","require","binding","e","nodeIsTypedArray","isTypedArray","apply","func","thisArg","args","length","call","baseTimes","n","iteratee","index","result","Array","baseUnary","value","getValue","object","key","undefined","overArg","transform","arg","arrayProto","prototype","funcProto","objectProto","coreJsData","funcToString","toString","hasOwnProperty","maskSrcKey","uid","exec","keys","IE_PROTO","nativeObjectToString","objectCtorString","reIsNative","RegExp","replace","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","symToStringTag","toStringTag","defineProperty","getNative","nativeIsBuffer","isBuffer","nativeMax","Math","max","nativeNow","Date","now","Map","nativeCreate","baseCreate","proto","isObject","Hash","entries","clear","entry","set","hashClear","__data__","size","hashDelete","has","hashGet","data","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","lastIndex","pop","listCacheGet","listCacheHas","listCacheSet","push","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","get","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArr","isArray","isArg","isArguments","isBuff","isType","skipIndexes","String","isIndex","assignMergeValue","eq","baseAssignValue","assignValue","objValue","array","baseFor","createBaseFor","baseGetTag","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsNative","isMasked","pattern","isFunction","test","toSource","baseIsTypedArray","isLength","baseKeysIn","nativeKeysIn","isProto","isPrototype","baseMerge","source","srcIndex","customizer","stack","srcValue","baseMergeDeep","newValue","safeGet","keysIn","mergeFunc","stacked","isCommon","isTyped","isArrayLikeObject","copyArray","cloneBuffer","cloneTypedArray","isPlainObject","toPlainObject","initCloneObject","baseRest","start","setToString","overRest","identity","baseSetToString","string","constant","buffer","isDeep","slice","constructor","copy","cloneArrayBuffer","arrayBuffer","byteLength","typedArray","byteOffset","copyObject","props","isNew","createAssigner","assigner","sources","guard","isIterateeCall","fromRight","keysFunc","iterable","customDefaultsMerge","map","isKeyable","isOwn","tag","unmasked","type","isArrayLike","Ctor","arguments","otherArgs","shortOut","count","lastCalled","stamp","remaining","other","stubFalse","defaultsDeep","mergeWith","staticClass","staticStyle","on","$event","GoHome","homeclick","_v","_e","homeclickgrey","GoClass","classclick","classclickgrey","GoNotification","noticlick","noticlickgrey","GoTutor","tutorclick","tutorclickgrey","GoProfile","profileclick","profileclickgrey","components","MainlayoutBottom","user","studentProfileAuthorize","schedule","hooperSettings","itemsToShow","centerMode","breakpoints","800","1000","pagination","childs","parent","methods","GetInfoUser","$API","$router","userType","t","r","o","i","l","m","c","d","enumerable","__esModule","bind","p","s","a","u","f","y","v","h","g","b","x","_","w","min","1169","getOwnPropertyDescriptor","1495","defineProperties","P","repeat","1654","_t","_i","done","1691","split","S","valueOf","TypeError","setPrototypeOf","document","createElement","inspectSource","join","style","display","appendChild","src","contentWindow","open","write","close","F","store","3024","O","j","D","k","M","T","A","C","next","name","values","documentElement","3702","ceil","floor","isNaN","callee","4562","4588","configurable","4630","writable","from","5168","5176","assign","5537","version","mode","copyright","5559","__e","G","B","U","core","W","R","random","concat","virtual","6821","fill","charCodeAt","charAt","Reflect","construct","7514","find","7726","window","__g","getIteratorMethod","getIterator","8378","8436","__proto__","check","9003","9093","getOwnPropertyNames","9138","9306","forEach","isIterable","9744","RangeError","getOwnPropertySymbols","a159","a3c3","a5b2","a745","aa28","aa77","trim","aebd","b0dc","b447","b8e3","be13","bf0b","c189","c366","c367","_k","Arguments","c3a1","c5f6","NaN","parseInt","c69a","c8bb","ca5a","cb7c","cd1c","ce10","d2d5","d3f4","d864","d8e8","d9f6","dbdb","e11e","e472","e4ae","e53d","e6f3","e853","ead6","f410","f772","fa5b","fab2","fae3","currentScript","match","id","click","prevMonth","_s","selectedMonthName","selectedYear","nextMonth","_l","weekdays","title","days","generateBeforeStyle","class","getDate","getDay","offDays","includes","toDateString","today","generateDayStyle","generateAfterStyle","sham","Proxy","setHours","_date","getMonth","toLocaleString","month","getFullYear","getTime","weekday","setDate","toISOString","getTimezoneOffset","E","date","computed","startWeekDayOfMonth","firstDayOfWeek","numberOfDays","selectedMonth","getFirstWeekdayOfMonth","getNumberOfDaysInMonth","getMonthName","generateWeekdayNames","shift","isInRange","end","eventCategories","categoryId","color","textColor","backgroundColor","fontWeight","events","return","getPrevDay","getNextDay","goToday","initialDate","default","Number","beforeMount","parse","I","options","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","N","L","isSelected","selectDay","Y","$emit","iso","timeZoneOffset","selectedDate","V","$","fdef","factory","__WEBPACK_EXTERNAL_MODULE_0__","__WEBPACK_EXTERNAL_MODULE_3__","modules","installedModules","__webpack_require__","moduleId","getter","property","extendStatics","__extends","__","moment","compensateScroll","rowEls","scrollbarWidths","left","css","right","uncompensateScroll","disableCursor","addClass","enableCursor","removeClass","distributeHeight","els","availableHeight","shouldRedistribute","minOffset1","minOffset2","flexEls","flexOffsets","flexHeights","usedHeight","undistributeHeight","each","el","minOffset","naturalOffset","outerHeight","height","naturalHeight","newHeight","matchCellWidths","maxInnerWidth","innerEl","innerWidth","outerWidth","width","subtractInnerElHeight","outerEl","diff","both","position","getScrollParent","scrollParent","parents","filter","ownerDocument","getOuterRect","origin","offset","top","bottom","getClientRect","getScrollbarWidths","getCssFloat","clientWidth","clientHeight","getContentRect","widths","leftRightWidth","offsetWidth","bottomWidth","offsetHeight","sanitizeScrollbarWidth","getIsLeftRtlScrollbars","round","_isLeftRtlScrollbars","computeIsLeftRtlScrollbars","border","padding","overflow","direction","appendTo","children","res","remove","prop","parseFloat","isPrimaryMouseButton","ev","which","ctrlKey","getEvX","touches","originalEvent","pageX","getEvY","pageY","getEvIsTouch","preventSelection","preventDefault","allowSelection","off","intersectRects","rect1","rect2","constrainPoint","point","rect","getRectCenter","diffPoints","point1","point2","parseFieldSpecs","input","token","specs","tokens","field","substring","order","compareByFieldSpecs","obj1","obj2","fieldSpecs","obj1fallback","obj2fallback","cmp","compareByFieldSpec","fieldSpec","val1","val2","flexibleCompare","localeCompare","diffDayTime","duration","clone","stripTime","ms","time","diffDay","diffByUnit","unit","computeGreatestUnit","val","unitsDesc","computeRangeAs","isInt","computeDurationGreatestUnit","durationInput","isDuration","as","divideRangeByDuration","dur","months","durationHasTime","asMonths","abs","asDays","divideDurationByDuration","dur1","dur2","months1","months2","multiplyDuration","Boolean","hours","minutes","seconds","milliseconds","isNativeDate","isTimeString","str","log","console","warn","dayIDs","hasOwnPropMethod","mergeProps","propObjs","complexProps","complexObjs","dest","unshift","copyOwnProps","name_1","hasOwnProp","obj","applyAll","functions","thisObj","ret","removeMatching","testFunc","removeCnt","removeExact","exactVal","isArraysEqual","a0","a1","len","firstDefined","htmlEscape","stripHtmlEntities","text","cssToStr","cssProps","statements","attrsToStr","parts","capitaliseFirstLetter","toUpperCase","compareNumbers","proxy","methodName","method","debounce","wait","immediate","timeout","context","timestamp","later","last","setTimeout","callNow","moment_ext_1","UnzonedRange","startInput","endInput","isStart","isEnd","isMoment","stripZone","startMs","endMs","invertRanges","ranges","constraintRange","dateRange","invertedRanges","sort","compareUnzonedRanges","intersect","otherRange","newRange","intersectsWith","containsRange","innerRange","containsDate","constrainDate","equals","range","getStart","utc","getEnd","range1","range2","tslib_1","ParsableModelMixin_1","Class_1","EventDefParser_1","EventSource","_super","calendar","_this","className","uuid","rawInput","applyProps","normalizeId","fetch","timezone","removeEventDefsById","eventDefId","removeAllEventDefs","getPrimitive","otherSource","parseEventDefs","rawEventDefs","eventDef","eventDefs","parseEventDef","calendarTransform","opt","sourceTransform","eventDataTransform","applyManualStandardProps","rawProps","defineStandardProps","copyVerbatimStandardProps","mixInto","borderColor","editable","startEditable","durationEditable","rendering","overlap","constraint","allDayDefault","Mixin_1","guid","ListenerMixin","listenTo","callback","eventName","getListenerNamespace","stopListeningTo","listenerId","EventDef_1","EventInstance_1","EventDateProfile_1","SingleEventDef","buildInstances","buildInstance","dateProfile","isAllDay","def","rezone","superSuccess","miscProps","allDay","util_1","ambigDateOfMonthRegex","ambigTimeOrZoneRegex","newMomentProto","fn","oldMomentProto","extend","momentProperties","oldMomentFormat","mom","formatStr","format","momentExt","makeMoment","parseAsUTC","parseZone","isAmbigTime","isAmbigZone","ambigMatch","isSingleString","_ambigTime","_ambigZone","utcOffset","_fullCalendar","hasTime","week","weeks","weekCalc","_locale","_fullCalendar_weekCalc","isoWeek","dayHours","wasAmbigTime","hasZone","local","keepLocalTime","tzo","ComponentFootprint","unzonedRange","toLegacy","msToMoment","EmitterMixin","handler","_prepareIntercept","one","intercept","extra","trigger","triggerHandler","triggerWith","hasHandlers","hash","_data","Interaction","view","_getView","Mixin","destClass","mixOver","UnzonedRange_1","EventDateProfile","buildUnzonedRange","forcedAllDay","forceEventDuration","isValid","isAfter","getDefaultEventEnd","isStandardProp","propName","DragListener_1","HitDragListener","handleInteractionStart","subjectRect","origPoint","subjectEl","hitsNeeded","computeScrollBounds","origHit","queryHit","subjectCenter","coordAdjust","handleDragStart","hit","handleHitOver","handleDrag","dx","dy","isHitsEqual","handleHitOut","handleDragEnd","handleHitDone","isOrig","handleInteractionEnd","isCancelled","hitsNotNeeded","handleScrollEnd","isDragging","releaseHits","prepareHits","hit0","hit1","isHitPropsWithin","subHit","superHit","internalApiVersion","date_formatting_1","formatDate","formatRange","queryMostGranularFormatUnit","locale_1","datepickerLocale","locale","getMomentLocaleData","populateInstanceComputableOptions","util_2","eventDefsToEventInstances","eventFootprintToComponentFootprint","eventInstanceToEventRange","eventInstanceToUnzonedRange","eventRangeToEventFootprint","EmitterMixin_1","ListenerMixin_1","Model_1","Model","Constraints_1","Constraints","DateProfileGenerator_1","DateProfileGenerator","ComponentFootprint_1","BusinessHourGenerator_1","BusinessHourGenerator","EventPeriod_1","EventPeriod","EventManager_1","EventManager","EventDef","EventDefMutation_1","EventDefMutation","EventDefParser","EventInstance","EventRange_1","EventRange","RecurringEventDef_1","RecurringEventDef","SingleEventDef_1","EventDefDateMutation_1","EventDefDateMutation","EventSourceParser_1","EventSourceParser","EventSource_1","ThemeRegistry_1","defineThemeSystem","getThemeSystemClass","EventInstanceGroup_1","EventInstanceGroup","ArrayEventSource_1","ArrayEventSource","FuncEventSource_1","FuncEventSource","JsonFeedEventSource_1","JsonFeedEventSource","EventFootprint_1","EventFootprint","Class","CoordCache_1","CoordCache","Iterator_1","Iterator","DragListener","HitDragListener_1","MouseFollower_1","MouseFollower","ParsableModelMixin","Popover_1","Popover","Promise_1","Promise","TaskQueue_1","TaskQueue","RenderQueue_1","RenderQueue","Scroller_1","Scroller","Theme_1","Theme","Component_1","Component","DateComponent_1","DateComponent","InteractiveDateComponent_1","InteractiveDateComponent","Calendar_1","Calendar","View_1","View","ViewRegistry_1","defineView","getViewConfig","DayTableMixin_1","DayTableMixin","BusinessHourRenderer_1","BusinessHourRenderer","EventRenderer_1","EventRenderer","FillRenderer_1","FillRenderer","HelperRenderer_1","HelperRenderer","ExternalDropping_1","ExternalDropping","EventResizing_1","EventResizing","EventPointing_1","EventPointing","EventDragging_1","EventDragging","DateSelecting_1","DateSelecting","DateClicking_1","DateClicking","Interaction_1","StandardInteractionsMixin_1","StandardInteractionsMixin","AgendaView_1","AgendaView","TimeGrid_1","TimeGrid","TimeGridEventRenderer_1","TimeGridEventRenderer","TimeGridFillRenderer_1","TimeGridFillRenderer","TimeGridHelperRenderer_1","TimeGridHelperRenderer","DayGrid_1","DayGrid","DayGridEventRenderer_1","DayGridEventRenderer","DayGridFillRenderer_1","DayGridFillRenderer","DayGridHelperRenderer_1","DayGridHelperRenderer","BasicView_1","BasicView","BasicViewDateProfileGenerator_1","BasicViewDateProfileGenerator","MonthView_1","MonthView","MonthViewDateProfileGenerator_1","MonthViewDateProfileGenerator","ListView_1","ListView","ListEventPointing_1","ListEventPointing","ListEventRenderer_1","ListEventRenderer","eventInstances","eventInstance","eventRange","eventFootprint","componentFootprint","getAllEventRanges","sliceNormalRenderRanges","sliceRenderRanges","isInverse","sliceInverseRenderRanges","slicedRange","slicedEventRanges","unzonedRanges","ownerDef","getEventDef","hasInverseRendering","explicitEventDef","PromiseStub","executor","deferred","Deferred","promise","resolve","attachImmediatelyResolvingThen","reject","attachImmediatelyRejectingThen","then","onResolve","onReject","optionsManager","processIconOverride","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","prefix","iconOverridePrefix","indexOf","getClass","classes","getIconClass","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","exportHooks","touchMouseIgnoreWait","globalEmitter","neededCount","GlobalEmitter","isTouching","mouseIgnoreDepth","needed","unneeded","unbind","touchstart","handleTouchStart","touchcancel","handleTouchCancel","touchend","handleTouchEnd","mousedown","handleMouseDown","mousemove","handleMouseMove","mouseup","handleMouseUp","handleClick","selectstart","handleSelectStart","contextmenu","handleContextMenu","addEventListener","handleTouchMoveProxy","handleTouchMove","Event","passive","handleScrollProxy","handleScroll","removeEventListener","stopTouch","shouldIgnoreMouse","skipMouseIgnore","startTouchMouseIgnore","viewName","viewConfig","viewHash","views","options_1","localeOptionHash","locales","dpComputableOptions","buttonText","dpOptions","prev","prevText","nextText","currentText","monthYearFormat","showMonthAfterYear","yearSuffix","momComputableOptions","dayOfMonthFormat","momOptions","fcOptions","longDateFormat","isRTL","mediumTimeFormat","smallTimeFormat","extraSmallTimeFormat","hourFormat","noMeridiemTimeFormat","instanceComputableOptions","smallDayDateFormat","weekFormat","weekNumberTitle","smallWeekFormat","localeCode","dpLocaleCode","weekHeader","jqDatePicker","datepicker","regional","en","setDefaults","newFcOptions","mergeOptions","globalDefaults","localeData","englishDefaults","titleRangeSeparator","defaultTimedEventDuration","defaultAllDayEventDuration","nextDayThreshold","columnHeader","defaultView","aspectRatio","header","center","weekends","weekNumbers","weekNumberCalculation","scrollTime","minTime","maxTime","showNonCurrentDates","lazyFetching","startParam","endParam","timezoneParam","prevYear","nextYear","year","day","allDayText","agendaEventMinHeight","theme","dragOpacity","dragRevertDuration","dragScroll","unselectAuto","dropAccept","eventOrder","eventLimit","eventLimitText","eventLimitClick","dayPopoverFormat","handleWindowResize","windowResizeDelay","longPressDelay","rtlDefaults","buttonIcons","themeButtonIcons","complexOptions","optionObjs","getEventLegacy","members","SubClass","mixin","eventInput","generateId","rawId","getRendering","hasBgRendering","getConstraint","getOverlap","isStartExplicitlyEditable","isDurationExplicitlyEditable","isExplicitlyEditable","_id","applyMiscProps","url","sourceClasses","registerClass","EventSourceClass","eventSource","createFromRawProps","largeUnit","dateMutation","defMutation","dateProps","standardProps","verbatimStandardProps","createFromDiff","mutateSingle","origDateProfile","buildNewDateProfile","setDateMutation","isEmpty","clearEnd","forceTimed","forceAllDay","dateProfile0","dateProfile1","dateDelta","endDiff","endDelta","mutation","subtractDates","date1","date0","subtract","setDateDelta","setEndDelta","eventDateProfile","shouldRezone","startDelta","applyTimezone","setStartDelta","overflowX","overflowY","renderEl","applyOverflow","scrollEl","setHeight","destroy","lockOverflow","scrollWidth","scrollHeight","getScrollTop","scrollTop","setScrollTop","getClientWidth","getClientHeight","GlobalEmitter_1","_view","_options","segSelector","dateSelectingClass","dateClicking","dateClickingClass","dateSelecting","eventPointingClass","eventPointing","eventDraggingClass","eventDragging","eventResizingClass","eventResizing","externalDroppingClass","externalDropping","setElement","bindToEl","bindAllSegHandlersToEl","removeElement","endInteractions","executeEventUnrender","bindGlobalHandlers","bindToDocument","unbindGlobalHandlers","unbindFromDocument","bindDateHandlerToEl","target","is","eventInteraction","bindSegHandlerToEl","segEl","currentTarget","seg","shouldIgnoreEventPointing","shouldIgnoreTouch","selectedEvent","isResizing","canStartSelection","canStartResize","isEventDefDraggable","footprint","isEventDefResizable","canStartDrag","isEventDefSelected","interaction","isEventDefStartEditable","isEditable","isEventDefGenerallyEditable","isEventDefResizableFromStart","isEventDefResizableFromEnd","isResizable","diffDates","isEventInstanceGroupAllowed","eventInstanceGroup","eventFootprints","eventRangesToEventFootprints","validUnzonedRange","constraints","isExternalInstanceGroupAllowed","isSelectionFootprintAllowed","viewSpec","batchRenderDepth","initRenderQueue","initHiddenDays","dateProfileGenerator","dateProfileGeneratorClass","bindBaseRenderHandlers","eventOrderSpecs","renderQueue","event","onRenderQueueStart","onRenderQueueStop","startBatchRender","stopBatchRender","freezeContentHeight","addScroll","queryScroll","updateViewSize","popScroll","thawContentHeight","pause","resume","requestRender","namespace","actionType","queue","whenSizeUpdated","isRunning","computeTitle","currentRangeUnit","currentUnzonedRange","activeUnzonedRange","isRangeAllDay","computeTitleFormat","currentDateProfile","newDateProfile","build","unsetDate","unset","fetchInitialEvents","usesMinMaxTime","requestEvents","bindEventChanges","resetEvents","unbindEventChanges","setEvents","eventsPayload","unsetEvents","requestDateRender","executeDateRender","requestDateUnrender","executeDateUnrender","isDateInit","startNowIndicator","unselect","stopNowIndicator","triggerViewRender","triggerViewDestroy","publiclyTrigger","requestEventsRender","executeEventRender","triggerAfterEventsRendered","requestEventsUnrender","triggerBeforeEventsDestroyed","requestBusinessHoursRender","businessHourGenerator","renderBusinessHours","requestBusinessHoursUnrender","unrenderBusinessHours","processUnselect","handleDocumentMousedown","update","delay","getNowIndicatorUnit","initialNowDate","getNow","initialNowQueriedMs","startOf","nowIndicatorTimeoutID","nowIndicatorIntervalID","setInterval","updateNowIndicator","isDatesRendered","unrenderNowIndicator","renderNowIndicator","isNowIndicatorRendered","clearTimeout","clearInterval","updateSize","totalHeight","isAuto","isResize","scroll","queuedScroll","applyQueuedScroll","applyScroll","queryDateScroll","computeInitialDateScroll","applyDateScroll","reportEventDrop","eventMutation","eventManager","undoFunc","mutateEventsWithId","triggerEventDrop","reportExternalDrop","singleEventDef","isEvent","isSticky","ui","addEventDef","triggerExternalDrop","reportEventResize","resizeDelta","triggerEventResize","select","renderSelectionFootprint","reportSelection","triggerSelect","footprintToDateProfile","unrenderSelection","selectEventInstance","selectedEventInstance","unselectEventInstance","getEventSegs","processRangeUnselect","processEventUnselect","ignore","closest","triggerBaseRendered","triggerBaseUnrendered","triggerDayClick","dayEl","isDateInOtherMonth","getUnzonedRangeOption","parseUnzonedRange","hiddenDays","isHiddenDayHash","dayCnt","inArray","Error","trimHiddenDays","inputUnzonedRange","skipHiddenDays","isHiddenDay","inc","isExclusive","out","watch","deps","initialEvents","intervalStart","intervalEnd","fillRenderer","rangeUpdated","displayEventTime","displayEventEnd","eventTimeFormat","computeEventTimeFormat","computeDisplayEventTime","computeDisplayEventEnd","instanceGroup","eventRanges","_getDateProfile","bgRanges","fgRanges","renderBgRanges","renderFgRanges","unrender","unrenderBgRanges","unrenderFgRanges","segs","eventFootprintsToSegs","renderFgSegEls","renderFgSegs","fgSegs","unrenderFgSegs","renderBgSegs","bgSegs","unrenderBgSegs","getSegs","renderSegs","getClasses","getBgClasses","getCss","getBgColor","filterEl","filterEventRenderEl","disableResizing","hasEventRenderHandlers","hasPublicHandlers","html","renderedSegs","beforeFgSegHtml","fgSegHtml","node","getSegClasses","isDraggable","legacy","custom","getTimeText","displayEnd","_getTimeText","classNames","objs","getStylingObjs","eventClassName","getSkinCss","getBorderColor","getTextColor","eventBackgroundColor","eventColor","eventBorderColor","eventTextColor","getFallbackStylingObjs","sortEventSegs","compareEventSegs","seg1","seg2","f1","f2","cf1","cf2","r1","r2","englishMoment","PART_SEPARATOR","SPECIAL_TOKEN_MARKER","MAYBE_MARKER","MAYBE_REGEXP","specialTokens","largeTokenMap","renderFakeFormatString","getParsedFormatString","fakeFormatString","date2","separator","renderParsedFormat","parsedFormat","leftI","rightI","middleI","sameUnits","unzonedDate1","unzonedDate2","renderedParts1","renderFakeFormatStringParts","renderedParts2","leftStr","rightStr","middleStr1","middleStr2","middleStr","isSame","processMaybeMarkers","parsedFormatStrCache","parseFormatString","chunks","chunkFormatString","buildFakeFormatString","buildSameUnits","chunker","splitStringLiteral","maybe","chunk","tokenInfo","units","fakePart","fakeRender","fakeParts","m0","m1","candidate","best","_watchers","_props","applyGlobalWatchers","constructed","_globalWatchArgs","newProps","setProps","reset","oldProps","changeset","names","changedProps","changedCnt","depList","startFunc","stopFunc","unwatch","_watchDeps","watcher","teardown","queuedChangeCnt","depCnt","satisfyCnt","bindTuples","isCallingStop","onBeforeDepChange","depName","isOptional","onDepChange","flash","propDefs","standardPropMap","manualProps","startTime","endTime","zonedDayStart","instanceStart","instanceEnd","unzonedDate","unzonedEnd","instances","isBefore","dowHash","setDow","dowNumbers","dow","msToUtcMoment","buildPrev","prevDate","dateIncrement","buildNext","nextDate","forceToValid","currentInfo","renderUnzonedRange","isDateAllDay","buildValidRange","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","dayCount","durationUnit","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","dateIncrementInput","dateIncrementDuration","alignment","computeRes","customAlignment","runningCount","visibleUnzonedRange","fallback","setRawEventDefs","currentTimezone","StandardTheme_1","JqueryUiTheme_1","themeClassHash","themeName","themeClass","themeSetting","isHorizontal","isVertical","forcedOffsetParentEl","offsetParent","offsetParentEl","boundingRect","queryBoundingRect","buildElHorizontals","buildElVerticals","lefts","rights","tops","bottoms","ensureBuilt","getHorizontalIndex","leftOffset","getVerticalIndex","topOffset","getLeftOffset","leftIndex","getLeftPosition","getRightOffset","getRightPosition","getWidth","getTopOffset","topIndex","getTopPosition","getBottomOffset","getBottomPosition","getHeight","scrollParentEl","isPointInBounds","isLeftInBounds","isTopInBounds","isInteracting","isDistanceSurpassed","isDelayEnded","isTouch","isGeneric","shouldCancelTouchScroll","scrollAlwaysKills","isAutoScroll","scrollSensitivity","scrollSpeed","scrollIntervalMs","startInteraction","extraOptions","minDistance","distance","originX","originY","bindHandlers","initAutoScroll","startDelay","handleDistanceSurpassed","endInteraction","endDrag","delayTimeoutId","destroyAutoScroll","unbindHandlers","drag","handleMove","dragstop","touchmove","handleTouchScroll","startDrag","distanceSq","updateAutoScroll","initialEv","handleDelayEnd","handleDebouncedScroll","endAutoScroll","scrollBounds","topCloseness","bottomCloseness","leftCloseness","rightCloseness","sensitivity","bounds","topVel","leftVel","setScrollVel","scrollTopVel","scrollLeftVel","constrainScrollVel","scrollIntervalId","scrollLeft","scrollIntervalFunc","frac","updateDayTable","daysPerRow","firstDay","rowCnt","dayIndex","dayIndices","dayDates","breakOnWeeks","updateDayTableCols","colCnt","computeColCnt","colHeadFormat","computeColHeadFormat","getCellDate","row","col","getCellDayIndex","getCellRange","getColDayIndex","getDateDayIndex","dayOffset","sliceRangeByRow","rowFirst","rowLast","segFirst","segLast","normalRange","computeDayRange","rangeFirst","rangeLast","firstRowDayIndex","lastRowDayIndex","sliceRangeByDay","renderHeadHtml","renderHeadTrHtml","renderHeadIntroHtml","renderIntroHtml","renderHeadDateCellsHtml","htmls","renderHeadDateCellHtml","colspan","otherAttrs","innerHtml","isDateValid","getDayClasses","buildGotoAnchorHtml","forceOff","renderBgTrHtml","renderBgIntroHtml","renderBgCellsHtml","renderBgCellHtml","bookendCells","trEl","introHtml","append","prepend","buildEventInstanceGroup","hasAllDayBusinessHours","renderEventFootprints","fillSegTag","elsByFill","renderFootprint","componentFootprintToSegs","buildSegEls","attachSegEls","reportEls","buildSegHtml","nodes","eventRenderer","renderComponentFootprint","fabricateEventFootprint","renderEventDraggingFootprints","sourceSeg","renderEventResizingFootprints","extraClassNames","opacity","helperEls","dummyInstance","dummyEvent","handleMouseover","handleMouseout","mousedOverSeg","cellWeekNumbersVisible","bottomCoordPadding","isRigid","leftCol","rightCol","renderDates","renderGrid","unrenderDates","removeSegPopover","headContainerEl","renderDayRowHtml","cellEls","rowCoordCache","colCoordCache","getCellEl","getIsNumbersVisible","renderNumberTrHtml","getIsDayNumbersVisible","renderNumberIntroHtml","renderNumberCellsHtml","renderNumberCellHtml","weekCalcFirstDoW","isDayNumberVisible","getCellHit","getHitFootprint","getHitEl","getOwnEventSegs","popoverSegs","renderDrag","renderHighlight","helperRenderer","unrenderDrag","unrenderHighlight","renderEventResize","unrenderEventResize","segPopover","hide","limitRows","levelLimit","rowLevelLimit","rowStructs","unlimitRow","computeRowLevelLimit","limitRow","trHeight","rowEl","rowHeight","trEls","tbodyEl","iterInnerHeights","childNode","levelSegs","cellMatrix","limitedNodes","segsBelow","totalSegsBelow","colSegsBelow","td","rowspan","segMoreNodes","moreTd","moreWrap","moreLink","rowStruct","moreNodes","emptyCellsUntil","endCol","getCellSegs","renderMoreLink","segLevels","attr","after","moreEls","limitedEls","hiddenSegs","getMoreLinkText","clickOption","moreEl","allSegs","reslicedAllSegs","resliceDaySegs","reslicedHiddenSegs","showSegPopover","zoomTo","topEl","content","renderSegPopoverContent","parentEl","autoHide","viewportConstrain","triggerBeforeEventSegsDestroyed","show","triggerAfterEventSegsRendered","segContainer","dayDate","dayStart","dayEnd","dayRange","newSegs","num","startLevel","segMatrix","level","eventRendererClass","businessHourRendererClass","helperRendererClass","fillRendererClass","dayGrid","instantiateDayGrid","hasRigidRows","colWeekNumbersVisible","addChild","scroller","subclass","makeDayGridSubclass","dayGridClass","renderSkeleton","dayGridContainerEl","dayGridEl","renderSkeletonHtml","unrenderSkeleton","weekNumberStyleAttr","weekNumberWidth","scrollerHeight","headRowEl","computeScrollerHeight","setGridHeight","SuperClass","weekStart","_calendar","peerEventInstances","getPeerEventInstances","peerEventRanges","peerEventFootprints","constraintVal","overlapVal","eventAllowFunc","isFootprintAllowed","getEventInstancesWithoutId","selectAllowFunc","getEventInstances","subjectEventInstance","constraintFootprints","overlapEventFootprints","constraintValToFootprints","isFootprintWithinConstraints","collectOverlapEventFootprints","isOverlapsAllowedByFunc","isOverlapEventInstancesAllowed","footprintContainsFootprint","buildCurrentBusinessFootprints","parseEventDefToInstances","eventInstancesToFootprints","parseFootprints","getEventInstancesWithId","targetFootprint","footprintsIntersect","currentPeriod","eventRangeToEventFootprints","outerFootprint","innerFootprint","footprint0","footprint1","overlapFunc","overlapEventInstance","overlapEventDef","subjectLegacyInstance","BUSINESS_HOUR_EVENT_DEFAULTS","rawComplexDef","buildEventDefs","rawDefs","requireDow","defs","buildEventDef","rawDef","fullRawDef","pendingCnt","freezeDepth","stuntedReleaseCnt","releaseCnt","requestsByUid","eventDefsByUid","eventDefsById","eventInstanceGroupsById","isWithinRange","requestSources","freeze","requestSource","thaw","request","status","addEventDefs","tryRelease","purgeSource","removeEventDef","purgeAllSources","completedCnt","getEventDefByUid","eventDefUid","getEventDefsById","addEventInstance","isEmptyObject","removeEventInstancesForDef","matchingInstances","currentEventInstance","release","whenReleased","stickySource","otherSources","force","setPeriod","addSource","removeSource","doomedSource","removeAllSources","refetchSource","refetchAllSources","getSources","multiQuerySources","matchInputs","matchingSources","querySources","matchInput","getSourceById","grep","isSourcesEquivalent","eventPeriod","unbindPeriod","bindPeriod","eventId","eventDefMutation","undoFuncs","buildMutatedEventInstanceGroup","defCopy","allInstances","source0","source1","StandardTheme","widget","widgetHeader","widgetContent","buttonGroup","button","cornerLeft","cornerRight","stateDefault","stateActive","stateDisabled","stateHover","stateDown","popoverHeader","popoverContent","headerRow","dayRow","listView","JqueryUiTheme","pushLoading","popLoading","ajaxSettings","onSuccess","success","onError","error","requestParams","buildRequestParams","ajax","AJAX_DEFAULTS","xhr","callbackRes","statusText","errorThrown","customRequestParams","params","dataType","cache","items","proxyCall","results","item","sourceEl","isFollowing","isHidden","isAnimating","y0","x0","topDelta","leftDelta","updatePosition","stop","shouldRevert","revertDuration","complete","top0","left0","animate","getEl","additionalClass","visibility","margin","zIndex","sourceOffset","documentMousedown","viewportTop","viewportLeft","viewportOffset","windowEl","viewportEl","q","isPaused","tryStart","getIsIdle","canRunNext","runRemaining","task","runTask","waitsByNamespace","taskFunc","waitMs","waitNamespace","delayWait","clearWait","compoundTask","startWait","spawnWait","waitId","newTask","shouldAppend","hitsNeededDepth","childrenByUid","businessHourRenderer","child","removeChild","callChildren","_getCalendar","convertEventsPayloadToLegacyArray","getBusinessHourSegs","getOwnBusinessHourSegs","iterChildren","showEventsWithId","hideEventsWithId","renderedHelper","getSafeHitFootprint","eventFootprintToSegs","gotoOptions","finalOptions","JSON","stringify","getAllDayHtml","noThemeHighlight","currentRangeAs","startDay","endTimeMS","endDay","isMultiDayRange","legacyEvents","Toolbar_1","OptionsManager_1","ViewSpecManager_1","overrides","loadingLevel","ignoreUpdateViewSize","freezeContentHeightDepth","viewsByType","viewSpecManager","initMomentInternals","initCurrentDate","initEventManager","getView","triggerInfo","optHandler","option","newOptionHash","instantiateView","viewType","spec","getViewSpec","isValidViewType","changeView","dateOrRange","recordOverrides","visibleRange","currentDate","renderView","newDate","getUnitViewSpec","defaultDateInput","prevInfo","nextInfo","gotoDate","zonedDateInput","incrementDate","delta","contentEl","elementVisible","calcSize","initialRender","anchorEl","customAction","opts","themeSystem","widgetClass","businessHours","toggleClass","prependTo","initToolbars","renderHeader","renderFooter","resize","windowResizeProxy","windowResize","clearView","toolbarsManager","bindViewHandlers","setToolbarsTitle","updateToolbarButtons","unbindViewHandlers","newView","oldView","currentView","reinitView","getSuggestedViewHeight","suggestedViewHeight","isHeightAuto","_calcSize","contentHeightInput","heightInput","queryToolbarsHeight","forceFreezeContentHeight","computeHeaderOptions","footer","computeFooterOptions","extraClasses","layout","setToolbarOptions","todayInfo","reduce","accumulator","toolbar","toolbarHeight","zonedStartInput","zonedEndInput","buildSelectFootprint","_week","monthNames","_months","monthNamesShort","_monthsShort","dayNames","_weekdays","dayNamesShort","_weekdaysShort","localizeMoment","getIsAmbigTimezone","adjustedZonedDate","zonedDate","toArray","timeAdjust","asMilliseconds","ignoreEnd","humanizeDuration","humanize","rangeInput","rawSources","singleRawSource","rawSource","getEventEnd","zonedStart","rerenderEvents","refetchEvents","renderEvents","eventInputs","renderEvent","removeEvents","legacyQuery","legacyInstances","idMap","filterLegacyEventInstances","clientEvents","legacyEventInstances","updateEvents","eventPropsArray","updateEvent","eventProps","getEventSources","getEventSourceById","addEventSource","sourceInput","removeEventSources","sourceMultiQuery","removeEventSource","sourceQuery","refetchEventSources","defaults","legacyEventInstance","dragListener","dragstart","sortstart","accept","listenToExternalDrag","meta","getDraggedElMeta","interactionStart","hitOver","mutatedEventInstanceGroup","isAllowed","hitFootprint","computeExternalDrop","hitOut","hitDone","interactionEnd","stick","dataAttrPrefix","buildDragListener","resizeMutation","dragStart","segResizeStart","origHitFootprint","computeEventStartResizeMutation","computeEventEndResizeMutation","segResizeStop","startFootprint","endFootprint","origEventFootprint","origRange","getSelectionDelay","handleMousedown","settings","buildSelectListener","mouseFollower","segDragStart","origFootprint","computeEventDropMutation","segDragStop","computeEventDateMutation","getDelay","selectionFootprint","computeSelection","wholeFootprint","computeSelectionFootprint","dayClickHit","agendaTimeGridMethods","agendaDayGridMethods","AGENDA_ALL_DAY_EVENT_LIMIT","timeGrid","instantiateTimeGrid","timeGridClass","timeGridWrapEl","timeGridEl","axisStyleAttr","axisWidth","colEls","noScrollRowEls","bottomRuleEl","getTotalSlatHeight","computeTimeTop","dayEventsPayload","timedEventsPayload","groups","groupEventFootprintsByAllDay","timed","weekText","AGENDA_STOCK_SUB_DURATIONS","processOptions","sliceRangeByTimes","segRange","dayRanges","slotDuration","snapDuration","snapsPerSlot","labelFormat","labelInterval","computeLabelInterval","slotsPerLabel","renderSlats","renderColumns","unrenderColumns","slatContainerEl","renderSlatRowHtml","slatEls","slatCoordCache","slotDate","isLabeled","axisHtml","slotTime","slotIterator","renderContentSkeleton","unrenderContentSkeleton","skeletonEl","cellHtml","contentSkeletonEl","colContainerEls","helperContainerEls","fgContainerEls","bgContainerEls","highlightContainerEls","businessContainerEls","groupSegsByCol","segsByCol","attachSegsByCol","containerEls","computeDateTop","nowIndicatorEls","updateSegVerticals","businessSegs","startOfDayDate","slatIndex","slatRemainder","slatCoverage","computeSegVerticals","assignSegVerticals","eventMinHeight","generateSegVerticalCss","colIndex","slatTop","slatHeight","partial","localSnapIndex","snapIndex","snapTop","snapBottom","snap","computeSnapTime","renderFgSegsIntoContainers","updateFgSegCoords","timeText","fullTimeText","startTimeText","isResizableFromStart","isResizableFromEnd","skinCss","zonedEnd","computeFgSegHorizontals","assignFgSegHorizontals","levels","level0","buildSlotSegLevels","computeForwardSlotSegs","computeSlotSegPressures","computeFgSegForwardBack","seriesBackwardPressure","seriesBackwardCoord","forwardSegs","forwardCoord","sortForwardSegs","backwardCoord","compareForwardSegs","forwardPressure","generateFgSegHorizontalCss","shouldOverlap","computeSlotSegCollisions","forwardSeg","otherSegs","isSlotSegCollision","helperNodes","renderSegRows","rowNode","segRows","groupSegRows","renderSegRow","rowSegs","tr","buildSegLevels","levelCnt","tbody","loneCellMatrix","isDaySegCollision","compareDaySegCols","titleHtml","timeHtml","otherSeg","skeletonTopEl","skeletonTop","renderFillRow","startCol","toLowerCase","viewEnd","renderEmptyMessage","renderSegList","daySegs","segsByDay","groupSegsByDay","tableEl","dayHeaderHtml","empty","mainFormat","altFormat","bgColor","isDefaultPrevented","location","href","fullCalendar","_element","singleRes","element","removeData","Toolbar","toolbarOptions","viewsWithButtons","newToolbarOptions","sections","renderSection","sectionEl","buttonStr","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","buttonGroupStr","groupEl","groupChildren","isOnlyButtons","buttonClick","buttonIcon","buttonInnerHtml","buttonClasses","buttonEl","buttonAriaAttr","buttonTextOverride","buttonTextDefault","hasClass","not","hover","first","updateTitle","activateButton","deactivateButton","disableButton","enableButton","getViewsWithButtons","OptionsManager","dynamicOverrides","compute","optionName","optionCnt","localeDefaults","dirDefaults","rawOptions","clearCache","ViewSpecManager","viewSpecCache","buildViewSpec","viewTypes","singleUnit","requestedViewType","viewOverrides","specChain","defaultsChain","overridesChain","buildViewSpecOptions","buildViewSpecButtonText","queryButtonText","buttonTextKey","Bootstrap3Theme_1","Bootstrap4Theme_1","Bootstrap3Theme","tableGrid","tableList","tableListHeading","popover","Bootstrap4Theme","fixedWeekCount","allDaySlot","slotEventOverlap","listDayFormat","noEventsMessage","listDayAltFormat","noGlobal","arr","getProto","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","code","doc","script","getAttribute","setAttribute","head","parentNode","toType","jQuery","selector","init","rtrim","jquery","pushStack","elems","merge","prevObject","elem","copyIsArray","deep","expando","isReady","msg","noop","globalEval","makeArray","second","invert","callbackInverse","matches","callbackExpect","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","childNodes","seed","nid","newSelector","newContext","getElementById","getElementsByTagName","getElementsByClassName","qsa","toSelector","testContext","querySelectorAll","qsaError","removeAttribute","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespaceURI","hasCompare","subWindow","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","elements","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","activeElement","hasFocus","tabIndex","checked","selected","selectedIndex","radio","checkbox","file","password","image","submit","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","filters","parseOnly","soFar","preFilters","cached","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","targets","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","createOptions","flag","Identity","Thrower","ex","adoptValue","noValue","fail","Callbacks","firing","memory","fired","locked","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","tuples","state","always","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","master","updateFunc","rerrorNames","message","readyException","readyList","completed","catch","readyWait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","dataAttr","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","thead","_default","getAll","setGlobalEval","refElements","optgroup","tfoot","colgroup","caption","th","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","htmlPrefilter","createTextNode","div","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","err","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","load","noBubble","beforeunload","returnValue","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","detail","eventPhase","metaKey","shiftKey","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","focus","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","insertBefore","before","replaceWith","replaceChild","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","setPositiveNumber","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","suffix","expand","expanded","propHooks","run","percent","eased","pos","step","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","propFilter","specialEasing","properties","stopped","prefilters","currentTime","tweens","originalProperties","originalOptions","gotoEnd","timer","tweener","prefilter","speed","speeds","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","classesToArray","removeProp","propFix","tabindex","curValue","clazz","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","throws","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","pageYOffset","pageXOffset","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","fnOver","fnOut","delegate","undelegate","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","displayFormat","hasInputElement","inputAttributes","selectableYearRange","startPeriod","parseDate","pickTime","pickMinutes","pickSeconds","use12HourClock","isDateDisabled","nextMonthCaption","prevMonthCaption","setTimeCaption","mobileBreakpointWidth","startWeekOnSunday","inputValue","valueToInputFormat","positionClass","opened","getPeriodFromValue","valueDate","parseDateString","isReadOnly","readonly","currentPeriodDates","outOfRange","dateKey","yearRange","getHours","getMinutes","getSeconds","isPM","hoursFormatted","minutesFormatted","secondsFormatted","directionClass","weekdaysSorted","beforeDestroy","removeCloseEvents","teardownPosition","formatDateToString","parseSimpleDateString","formatSimpleDateToString","incrementMonth","processUserInput","addCloseEvents","setupPosition","closeViaOverlay","$refs","outerWrap","closeEventListener","inspectCloseEvent","$el","positionEventListener","positionFloater","innerHeight","$nextTick","selectDateItem","setMinutes","setSeconds","set12HourClock","inputHours","inputTime","onTimeInputFocus","vdpWithInput","_b","domProps","vdpFloating","directives","rawName","expression","change","_value","$set","multiple","selectable","respond","Id","GoToTutorProfile","notiId","teacherId","tutorName","studentName","hour","subjectName","confirm","history","GoToTutorProfileH","teacher","_f","checkInTime","GoHomePage","GetListRespond","GetListConfirmed","GetListHistory","GoBack","back","GetLisWaitingStudent"],"mappings":"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","file":"js/chunk-b5447b82.65804f6c.js","sourcesContent":["module.exports = __webpack_public_path__ + \"img/teacher-blue.6f4c7e3f.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"calendar\",attrs:{\"id\":\"calendar\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./FullCalendar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./FullCalendar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FullCalendar.vue?vue&type=template&id=41e9886e&\"\nimport script from \"./FullCalendar.vue?vue&type=script&lang=js&\"\nexport * from \"./FullCalendar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/home-2.5f84ce41.svg\";","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\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 to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\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\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\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 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 * 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/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\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/**\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\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\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\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\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\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\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/**\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\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\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\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\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\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\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/**\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\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\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\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\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\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\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\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 stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\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 stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\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\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\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\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\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\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n}\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\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\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\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\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\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\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\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\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\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\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\n/**\n * Checks if `value` is likely an `arguments` 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 `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\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\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\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 array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\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\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\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 valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\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\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\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\nvar defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = defaultsDeep;\n","module.exports = __webpack_public_path__ + \"img/profile-blue.63949d32.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"footer-bottom\"},[_c('CRow',{staticClass:\"justify-content-center mb-2\"},[_c('CCol',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\"}},[_c('CCol',{attrs:{\"sm\":\"12\",\"lg\":\"12\"}},[_c('CCol',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"left\":\"0\",\"right\":\"0\",\"position\":\"fixed\",\"bottom\":\"0px\"},attrs:{\"sm\":\"12\",\"lg\":\"12\"}},[_c('CCol',{staticClass:\"p-0 m-0\",staticStyle:{\"flex\":\"1\"},attrs:{\"sm\":\"2\",\"lg\":\"2\"}},[_c('CCol',{on:{\"click\":function($event){return _vm.GoHome()}}},[(_vm.homeclick===true)?_c('div',[_c('img',{staticClass:\"btn-active\",attrs:{\"src\":require(\"../assets/img/icon/home-2.svg\")}}),_c('br'),_c('label',{staticClass:\"text-blue\"},[_vm._v(\" Home\")])]):_vm._e(),(_vm.homeclickgrey===true)?_c('div',[_c('img',{attrs:{\"src\":require(\"../assets/img/icon/homegrey.svg\")}}),_c('br'),_c('label',{staticClass:\"text-non-active\"},[_vm._v(\" Home\")])]):_vm._e()])],1),_c('CCol',{staticClass:\"p-0 m-0\",staticStyle:{\"flex\":\"1\"},attrs:{\"sm\":\"2\",\"lg\":\"2\"}},[_c('CCol',{on:{\"click\":function($event){return _vm.GoClass()}}},[(_vm.classclick===true)?_c('div',[_c('img',{attrs:{\"src\":require(\"../assets/img/icon/book-blue.svg\")}}),_c('br'),_c('label',{staticClass:\"text-blue\"},[_vm._v(\" Class\")])]):_vm._e(),(_vm.classclickgrey===true)?_c('div',[_c('img',{attrs:{\"src\":require(\"../assets/img/icon/iconBook.svg\")}}),_c('br'),_c('label',{staticClass:\"text-non-active\"},[_vm._v(\" Class\")])]):_vm._e()])],1),_c('CCol',{staticClass:\"p-0 m-0\",staticStyle:{\"flex\":\"1\"},attrs:{\"sm\":\"2\",\"lg\":\"2\"}},[_c('CCol',{on:{\"click\":function($event){return _vm.GoNotification()}}},[(_vm.noticlick===true)?_c('div',[_c('img',{attrs:{\"src\":require(\"../assets/img/icon/iconBell.png\")}}),_c('br'),_c('label',{staticClass:\"text-blue\"},[_vm._v(\" Notification\")])]):_vm._e(),(_vm.noticlickgrey===true)?_c('div',[_c('img',{attrs:{\"src\":require(\"../assets/img/icon/iconBell.png\")}}),_c('br'),_c('label',{staticClass:\"text-non-active\"},[_vm._v(\" Notification\")])]):_vm._e()])],1),_c('CCol',{staticClass:\"p-0 m-0\",staticStyle:{\"flex\":\"1\"},attrs:{\"sm\":\"2\",\"lg\":\"2\"}},[_c('CCol',{on:{\"click\":function($event){return _vm.GoTutor()}}},[(_vm.tutorclick===true)?_c('div',[_c('img',{attrs:{\"src\":require(\"../assets/img/icon/teacher-blue.svg\")}}),_c('br'),_c('label',{staticClass:\"text-blue\"},[_vm._v(\" Tutor\")])]):_vm._e(),(_vm.tutorclickgrey===true)?_c('div',[_c('img',{attrs:{\"src\":require(\"../assets/img/icon/iconTeacher.svg\")}}),_c('br'),_c('label',{staticClass:\"text-non-active\"},[_vm._v(\" Tutor\")])]):_vm._e()])],1),_c('CCol',{staticClass:\"p-0 m-0\",staticStyle:{\"flex\":\"1\"},attrs:{\"sm\":\"2\",\"lg\":\"2\"}},[_c('CCol',{on:{\"click\":function($event){return _vm.GoProfile()}}},[(_vm.profileclick===true)?_c('div',[_c('img',{attrs:{\"src\":require(\"../assets/img/icon/profile-blue.svg\")}}),_c('br'),_c('label',{staticClass:\"text-blue\"},[_vm._v(\" Profile\")])]):_vm._e(),(_vm.profileclickgrey===true)?_c('div',[_c('img',{attrs:{\"src\":require(\"../assets/img/icon/profile-circle.svg\")}}),_c('br'),_c('label',{staticClass:\"text-non-active\"},[_vm._v(\" Profile\")])]):_vm._e()])],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," \n\n \n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheBottomCustom.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheBottomCustom.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TheBottomCustom.vue?vue&type=template&id=1e5b9ae9&\"\nimport script from \"./TheBottomCustom.vue?vue&type=script&lang=js&\"\nexport * from \"./TheBottomCustom.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","(function(t,e){\"object\"===typeof exports&&\"object\"===typeof module?module.exports=e():\"function\"===typeof define&&define.amd?define([],e):\"object\"===typeof exports?exports[\"SweetCalendar\"]=e():t[\"SweetCalendar\"]=e()})(\"undefined\"!==typeof self?self:this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t[\"default\"]}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=\"fae3\")}({\"07e3\":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},\"0a49\":function(t,e,n){var r=n(\"9b43\"),o=n(\"626a\"),i=n(\"4bf8\"),a=n(\"9def\"),c=n(\"cd1c\");t.exports=function(t,e){var n=1==t,u=2==t,f=3==t,s=4==t,l=6==t,d=5==t||l,p=e||c;return function(e,c,y){for(var v,h,g=i(e),b=o(g),x=r(c,y,3),m=a(b.length),_=0,w=n?p(e,m):u?p(e,0):void 0;m>_;_++)if((d||_ in b)&&(v=b[_],h=x(v,_,g),t))if(n)w[_]=h;else if(h)switch(t){case 3:return!0;case 5:return v;case 6:return _;case 2:w.push(v)}else if(s)return!1;return l?-1:f||s?s:w}}},\"0d58\":function(t,e,n){var r=n(\"ce10\"),o=n(\"e11e\");t.exports=Object.keys||function(t){return r(t,o)}},\"0fc9\":function(t,e,n){var r=n(\"3a38\"),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},1169:function(t,e,n){var r=n(\"2d95\");t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},\"11e9\":function(t,e,n){var r=n(\"52a7\"),o=n(\"4630\"),i=n(\"6821\"),a=n(\"6a99\"),c=n(\"69a8\"),u=n(\"c69a\"),f=Object.getOwnPropertyDescriptor;e.f=n(\"9e1e\")?f:function(t,e){if(t=i(t),e=a(e,!0),u)try{return f(t,e)}catch(n){}if(c(t,e))return o(!r.f.call(t,e),t[e])}},1495:function(t,e,n){var r=n(\"86cc\"),o=n(\"cb7c\"),i=n(\"0d58\");t.exports=n(\"9e1e\")?Object.defineProperties:function(t,e){o(t);var n,a=i(e),c=a.length,u=0;while(c>u)r.f(t,n=a[u++],e[n]);return t}},\"14b9\":function(t,e,n){var r=n(\"5ca1\");r(r.P,\"String\",{repeat:n(\"9744\")})},1654:function(t,e,n){\"use strict\";var r=n(\"71c1\")(!0);n(\"30f1\")(String,\"String\",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},1691:function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},\"1af6\":function(t,e,n){var r=n(\"63b6\");r(r.S,\"Array\",{isArray:n(\"9003\")})},\"1bc3\":function(t,e,n){var r=n(\"f772\");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},\"1df8\":function(t,e,n){var r=n(\"63b6\");r(r.S,\"Object\",{setPrototypeOf:n(\"ead6\").set})},\"1ec9\":function(t,e,n){var r=n(\"f772\"),o=n(\"e53d\").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},\"20fd\":function(t,e,n){\"use strict\";var r=n(\"d9f6\"),o=n(\"aebd\");t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},\"230e\":function(t,e,n){var r=n(\"d3f4\"),o=n(\"7726\").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},\"241e\":function(t,e,n){var r=n(\"25eb\");t.exports=function(t){return Object(r(t))}},\"25b0\":function(t,e,n){n(\"1df8\"),t.exports=n(\"584a\").Object.setPrototypeOf},\"25eb\":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},\"294c\":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},\"2aba\":function(t,e,n){var r=n(\"7726\"),o=n(\"32e9\"),i=n(\"69a8\"),a=n(\"ca5a\")(\"src\"),c=n(\"fa5b\"),u=\"toString\",f=(\"\"+c).split(u);n(\"8378\").inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,n,c){var u=\"function\"==typeof n;u&&(i(n,\"name\")||o(n,\"name\",e)),t[e]!==n&&(u&&(i(n,a)||o(n,a,t[e]?\"\"+t[e]:f.join(String(e)))),t===r?t[e]=n:c?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,u,(function(){return\"function\"==typeof this&&this[a]||c.call(this)}))},\"2aeb\":function(t,e,n){var r=n(\"cb7c\"),o=n(\"1495\"),i=n(\"e11e\"),a=n(\"613b\")(\"IE_PROTO\"),c=function(){},u=\"prototype\",f=function(){var t,e=n(\"230e\")(\"iframe\"),r=i.length,o=\"<\",a=\">\";e.style.display=\"none\",n(\"fab2\").appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(o+\"script\"+a+\"document.F=Object\"+o+\"/script\"+a),t.close(),f=t.F;while(r--)delete f[u][i[r]];return f()};t.exports=Object.create||function(t,e){var n;return null!==t?(c[u]=r(t),n=new c,c[u]=null,n[a]=t):n=f(),void 0===e?n:o(n,e)}},\"2b4c\":function(t,e,n){var r=n(\"5537\")(\"wks\"),o=n(\"ca5a\"),i=n(\"7726\").Symbol,a=\"function\"==typeof i,c=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)(\"Symbol.\"+t))};c.store=r},\"2d00\":function(t,e){t.exports=!1},\"2d95\":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},3024:function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},\"30f1\":function(t,e,n){\"use strict\";var r=n(\"b8e3\"),o=n(\"63b6\"),i=n(\"9138\"),a=n(\"35e8\"),c=n(\"481b\"),u=n(\"8f60\"),f=n(\"45f2\"),s=n(\"53e2\"),l=n(\"5168\")(\"iterator\"),d=!([].keys&&\"next\"in[].keys()),p=\"@@iterator\",y=\"keys\",v=\"values\",h=function(){return this};t.exports=function(t,e,n,g,b,x,m){u(n,e,g);var _,w,O,S=function(t){if(!d&&t in j)return j[t];switch(t){case y:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},D=e+\" Iterator\",k=b==v,M=!1,j=t.prototype,T=j[l]||j[p]||b&&j[b],A=T||S(b),C=b?k?S(\"entries\"):A:void 0,P=\"Array\"==e&&j.entries||T;if(P&&(O=s(P.call(new t)),O!==Object.prototype&&O.next&&(f(O,D,!0),r||\"function\"==typeof O[l]||a(O,l,h))),k&&T&&T.name!==v&&(M=!0,A=function(){return T.call(this)}),r&&!m||!d&&!M&&j[l]||a(j,l,A),c[e]=A,c[D]=h,b)if(_={values:k?A:S(v),keys:x?A:S(y),entries:C},m)for(w in _)w in j||i(j,w,_[w]);else o(o.P+o.F*(d||M),e,_);return _}},\"32e9\":function(t,e,n){var r=n(\"86cc\"),o=n(\"4630\");t.exports=n(\"9e1e\")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},\"32fc\":function(t,e,n){var r=n(\"e53d\").document;t.exports=r&&r.documentElement},\"335c\":function(t,e,n){var r=n(\"6b4c\");t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},\"355d\":function(t,e){e.f={}.propertyIsEnumerable},\"35e8\":function(t,e,n){var r=n(\"d9f6\"),o=n(\"aebd\");t.exports=n(\"8e60\")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},\"36bd\":function(t,e,n){\"use strict\";var r=n(\"4bf8\"),o=n(\"77f1\"),i=n(\"9def\");t.exports=function(t){var e=r(this),n=i(e.length),a=arguments.length,c=o(a>1?arguments[1]:void 0,n),u=a>2?arguments[2]:void 0,f=void 0===u?n:o(u,n);while(f>c)e[c++]=t;return e}},\"36c3\":function(t,e,n){var r=n(\"335c\"),o=n(\"25eb\");t.exports=function(t){return r(o(t))}},3702:function(t,e,n){var r=n(\"481b\"),o=n(\"5168\")(\"iterator\"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},\"3a38\":function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},\"40c3\":function(t,e,n){var r=n(\"6b4c\"),o=n(\"5168\")(\"toStringTag\"),i=\"Arguments\"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,c;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=a(e=Object(t),o))?n:i?r(e):\"Object\"==(c=r(e))&&\"function\"==typeof e.callee?\"Arguments\":c}},\"454f\":function(t,e,n){n(\"46a7\");var r=n(\"584a\").Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},4562:function(t,e,n){},4588:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},\"45f2\":function(t,e,n){var r=n(\"d9f6\").f,o=n(\"07e3\"),i=n(\"5168\")(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},\"469f\":function(t,e,n){n(\"6c1c\"),n(\"1654\"),t.exports=n(\"7d7b\")},\"46a7\":function(t,e,n){var r=n(\"63b6\");r(r.S+r.F*!n(\"8e60\"),\"Object\",{defineProperty:n(\"d9f6\").f})},\"481b\":function(t,e){t.exports={}},\"4bf8\":function(t,e,n){var r=n(\"be13\");t.exports=function(t){return Object(r(t))}},\"4d16\":function(t,e,n){t.exports=n(\"25b0\")},\"4ee1\":function(t,e,n){var r=n(\"5168\")(\"iterator\"),o=!1;try{var i=[7][r]();i[\"return\"]=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(a){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],c=i[r]();c.next=function(){return{done:n=!0}},i[r]=function(){return c},t(i)}catch(a){}return n}},\"50ed\":function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},5168:function(t,e,n){var r=n(\"dbdb\")(\"wks\"),o=n(\"62a0\"),i=n(\"e53d\").Symbol,a=\"function\"==typeof i,c=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)(\"Symbol.\"+t))};c.store=r},5176:function(t,e,n){t.exports=n(\"51b6\")},\"51b6\":function(t,e,n){n(\"a3c3\"),t.exports=n(\"584a\").Object.assign},\"52a7\":function(t,e){e.f={}.propertyIsEnumerable},\"53e2\":function(t,e,n){var r=n(\"07e3\"),o=n(\"241e\"),i=n(\"5559\")(\"IE_PROTO\"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},\"549b\":function(t,e,n){\"use strict\";var r=n(\"d864\"),o=n(\"63b6\"),i=n(\"241e\"),a=n(\"b0dc\"),c=n(\"3702\"),u=n(\"b447\"),f=n(\"20fd\"),s=n(\"7cd6\");o(o.S+o.F*!n(\"4ee1\")((function(t){Array.from(t)})),\"Array\",{from:function(t){var e,n,o,l,d=i(t),p=\"function\"==typeof this?this:Array,y=arguments.length,v=y>1?arguments[1]:void 0,h=void 0!==v,g=0,b=s(d);if(h&&(v=r(v,y>2?arguments[2]:void 0,2)),void 0==b||p==Array&&c(b))for(e=u(d.length),n=new p(e);e>g;g++)f(n,g,h?v(d[g],g):d[g]);else for(l=b.call(d),n=new p;!(o=l.next()).done;g++)f(n,g,h?a(l,v,[o.value,g],!0):o.value);return n.length=g,n}})},\"54a1\":function(t,e,n){n(\"6c1c\"),n(\"1654\"),t.exports=n(\"95d5\")},5537:function(t,e,n){var r=n(\"8378\"),o=n(\"7726\"),i=\"__core-js_shared__\",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:r.version,mode:n(\"2d00\")?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},5559:function(t,e,n){var r=n(\"dbdb\")(\"keys\"),o=n(\"62a0\");t.exports=function(t){return r[t]||(r[t]=o(t))}},\"584a\":function(t,e){var n=t.exports={version:\"2.6.5\"};\"number\"==typeof __e&&(__e=n)},\"5b4e\":function(t,e,n){var r=n(\"36c3\"),o=n(\"b447\"),i=n(\"0fc9\");t.exports=function(t){return function(e,n,a){var c,u=r(e),f=o(u.length),s=i(a,f);if(t&&n!=n){while(f>s)if(c=u[s++],c!=c)return!0}else for(;f>s;s++)if((t||s in u)&&u[s]===n)return t||s||0;return!t&&-1}}},\"5ca1\":function(t,e,n){var r=n(\"7726\"),o=n(\"8378\"),i=n(\"32e9\"),a=n(\"2aba\"),c=n(\"9b43\"),u=\"prototype\",f=function(t,e,n){var s,l,d,p,y=t&f.F,v=t&f.G,h=t&f.S,g=t&f.P,b=t&f.B,x=v?r:h?r[e]||(r[e]={}):(r[e]||{})[u],m=v?o:o[e]||(o[e]={}),_=m[u]||(m[u]={});for(s in v&&(n=e),n)l=!y&&x&&void 0!==x[s],d=(l?x:n)[s],p=b&&l?c(d,r):g&&\"function\"==typeof d?c(Function.call,d):d,x&&a(x,s,d,t&f.U),m[s]!=d&&i(m,s,p),g&&_[s]!=d&&(_[s]=d)};r.core=o,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},\"5d73\":function(t,e,n){t.exports=n(\"469f\")},\"5dbc\":function(t,e,n){var r=n(\"d3f4\"),o=n(\"8b97\").set;t.exports=function(t,e,n){var i,a=e.constructor;return a!==n&&\"function\"==typeof a&&(i=a.prototype)!==n.prototype&&r(i)&&o&&o(t,i),t}},\"5f00\":function(t,e,n){\"use strict\";n(\"4562\")},\"613b\":function(t,e,n){var r=n(\"5537\")(\"keys\"),o=n(\"ca5a\");t.exports=function(t){return r[t]||(r[t]=o(t))}},\"626a\":function(t,e,n){var r=n(\"2d95\");t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},\"62a0\":function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},\"63b6\":function(t,e,n){var r=n(\"e53d\"),o=n(\"584a\"),i=n(\"d864\"),a=n(\"35e8\"),c=n(\"07e3\"),u=\"prototype\",f=function(t,e,n){var s,l,d,p=t&f.F,y=t&f.G,v=t&f.S,h=t&f.P,g=t&f.B,b=t&f.W,x=y?o:o[e]||(o[e]={}),m=x[u],_=y?r:v?r[e]:(r[e]||{})[u];for(s in y&&(n=e),n)l=!p&&_&&void 0!==_[s],l&&c(x,s)||(d=l?_[s]:n[s],x[s]=y&&\"function\"!=typeof _[s]?n[s]:g&&l?i(d,r):b&&_[s]==d?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[u]=t[u],e}(d):h&&\"function\"==typeof d?i(Function.call,d):d,h&&((x.virtual||(x.virtual={}))[s]=d,t&f.R&&m&&!m[s]&&a(m,s,d)))};f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},\"64fe\":function(t,e,n){},6821:function(t,e,n){var r=n(\"626a\"),o=n(\"be13\");t.exports=function(t){return r(o(t))}},\"69a8\":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},\"6a99\":function(t,e,n){var r=n(\"d3f4\");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},\"6b4c\":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},\"6c1c\":function(t,e,n){n(\"c367\");for(var r=n(\"e53d\"),o=n(\"35e8\"),i=n(\"481b\"),a=n(\"5168\")(\"toStringTag\"),c=\"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList\".split(\",\"),u=0;u=f?t?\"\":void 0:(i=c.charCodeAt(u),i<55296||i>56319||u+1===f||(a=c.charCodeAt(u+1))<56320||a>57343?t?c.charAt(u):i:t?c.slice(u,u+2):a-56320+(i-55296<<10)+65536)}}},\"733c\":function(t,e,n){var r=n(\"63b6\"),o=n(\"a159\"),i=n(\"79aa\"),a=n(\"e4ae\"),c=n(\"f772\"),u=n(\"294c\"),f=n(\"c189\"),s=(n(\"e53d\").Reflect||{}).construct,l=u((function(){function t(){}return!(s((function(){}),[],t)instanceof t)})),d=!u((function(){s((function(){}))}));r(r.S+r.F*(l||d),\"Reflect\",{construct:function(t,e){i(t),a(e);var n=arguments.length<3?t:i(arguments[2]);if(d&&!l)return s(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return r.push.apply(r,e),new(f.apply(t,r))}var u=n.prototype,p=o(c(u)?u:Object.prototype),y=Function.apply.call(t,p,e);return c(y)?y:p}})},7514:function(t,e,n){\"use strict\";var r=n(\"5ca1\"),o=n(\"0a49\")(5),i=\"find\",a=!0;i in[]&&Array(1)[i]((function(){a=!1})),r(r.P+r.F*a,\"Array\",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(\"9c6c\")(i)},7726:function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},\"774e\":function(t,e,n){t.exports=n(\"d2d5\")},\"77f1\":function(t,e,n){var r=n(\"4588\"),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},\"794b\":function(t,e,n){t.exports=!n(\"8e60\")&&!n(\"294c\")((function(){return 7!=Object.defineProperty(n(\"1ec9\")(\"div\"),\"a\",{get:function(){return 7}}).a}))},\"79aa\":function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},\"79e5\":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},\"7cd6\":function(t,e,n){var r=n(\"40c3\"),o=n(\"5168\")(\"iterator\"),i=n(\"481b\");t.exports=n(\"584a\").getIteratorMethod=function(t){if(void 0!=t)return t[o]||t[\"@@iterator\"]||i[r(t)]}},\"7d7b\":function(t,e,n){var r=n(\"e4ae\"),o=n(\"7cd6\");t.exports=n(\"584a\").getIterator=function(t){var e=o(t);if(\"function\"!=typeof e)throw TypeError(t+\" is not iterable!\");return r(e.call(t))}},\"7e90\":function(t,e,n){var r=n(\"d9f6\"),o=n(\"e4ae\"),i=n(\"c3a1\");t.exports=n(\"8e60\")?Object.defineProperties:function(t,e){o(t);var n,a=i(e),c=a.length,u=0;while(c>u)r.f(t,n=a[u++],e[n]);return t}},8378:function(t,e){var n=t.exports={version:\"2.6.5\"};\"number\"==typeof __e&&(__e=n)},8436:function(t,e){t.exports=function(){}},\"85f2\":function(t,e,n){t.exports=n(\"454f\")},\"86cc\":function(t,e,n){var r=n(\"cb7c\"),o=n(\"c69a\"),i=n(\"6a99\"),a=Object.defineProperty;e.f=n(\"9e1e\")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(c){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},\"8b97\":function(t,e,n){var r=n(\"d3f4\"),o=n(\"cb7c\"),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,r){try{r=n(\"9b43\")(Function.call,n(\"11e9\").f(Object.prototype,\"__proto__\").set,2),r(t,[]),e=!(t instanceof Array)}catch(o){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},\"8e60\":function(t,e,n){t.exports=!n(\"294c\")((function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a}))},\"8f60\":function(t,e,n){\"use strict\";var r=n(\"a159\"),o=n(\"aebd\"),i=n(\"45f2\"),a={};n(\"35e8\")(a,n(\"5168\")(\"iterator\"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+\" Iterator\")}},9003:function(t,e,n){var r=n(\"6b4c\");t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},9093:function(t,e,n){var r=n(\"ce10\"),o=n(\"e11e\").concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},9138:function(t,e,n){t.exports=n(\"35e8\")},9306:function(t,e,n){\"use strict\";var r=n(\"c3a1\"),o=n(\"9aa9\"),i=n(\"355d\"),a=n(\"241e\"),c=n(\"335c\"),u=Object.assign;t.exports=!u||n(\"294c\")((function(){var t={},e={},n=Symbol(),r=\"abcdefghijklmnopqrst\";return t[n]=7,r.split(\"\").forEach((function(t){e[t]=t})),7!=u({},t)[n]||Object.keys(u({},e)).join(\"\")!=r}))?function(t,e){var n=a(t),u=arguments.length,f=1,s=o.f,l=i.f;while(u>f){var d,p=c(arguments[f++]),y=s?r(p).concat(s(p)):r(p),v=y.length,h=0;while(v>h)l.call(p,d=y[h++])&&(n[d]=p[d])}return n}:u},\"95d5\":function(t,e,n){var r=n(\"40c3\"),o=n(\"5168\")(\"iterator\"),i=n(\"481b\");t.exports=n(\"584a\").isIterable=function(t){var e=Object(t);return void 0!==e[o]||\"@@iterator\"in e||i.hasOwnProperty(r(e))}},9744:function(t,e,n){\"use strict\";var r=n(\"4588\"),o=n(\"be13\");t.exports=function(t){var e=String(o(this)),n=\"\",i=r(t);if(i<0||i==1/0)throw RangeError(\"Count can't be negative\");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},\"9aa9\":function(t,e){e.f=Object.getOwnPropertySymbols},\"9b43\":function(t,e,n){var r=n(\"d8e8\");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},\"9c6c\":function(t,e,n){var r=n(\"2b4c\")(\"unscopables\"),o=Array.prototype;void 0==o[r]&&n(\"32e9\")(o,r,{}),t.exports=function(t){o[r][t]=!0}},\"9def\":function(t,e,n){var r=n(\"4588\"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},\"9e1e\":function(t,e,n){t.exports=!n(\"79e5\")((function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a}))},a159:function(t,e,n){var r=n(\"e4ae\"),o=n(\"7e90\"),i=n(\"1691\"),a=n(\"5559\")(\"IE_PROTO\"),c=function(){},u=\"prototype\",f=function(){var t,e=n(\"1ec9\")(\"iframe\"),r=i.length,o=\"<\",a=\">\";e.style.display=\"none\",n(\"32fc\").appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(o+\"script\"+a+\"document.F=Object\"+o+\"/script\"+a),t.close(),f=t.F;while(r--)delete f[u][i[r]];return f()};t.exports=Object.create||function(t,e){var n;return null!==t?(c[u]=r(t),n=new c,c[u]=null,n[a]=t):n=f(),void 0===e?n:o(n,e)}},a3c3:function(t,e,n){var r=n(\"63b6\");r(r.S+r.F,\"Object\",{assign:n(\"9306\")})},a5b2:function(t,e,n){t.exports=n(\"aa28\")},a745:function(t,e,n){t.exports=n(\"f410\")},aa28:function(t,e,n){n(\"733c\"),t.exports=n(\"584a\").Reflect.construct},aa77:function(t,e,n){var r=n(\"5ca1\"),o=n(\"be13\"),i=n(\"79e5\"),a=n(\"fdef\"),c=\"[\"+a+\"]\",u=\"​…\",f=RegExp(\"^\"+c+c+\"*\"),s=RegExp(c+c+\"*$\"),l=function(t,e,n){var o={},c=i((function(){return!!a[t]()||u[t]()!=u})),f=o[t]=c?e(d):a[t];n&&(o[n]=f),r(r.P+r.F*c,\"String\",o)},d=l.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(f,\"\")),2&e&&(t=t.replace(s,\"\")),t};t.exports=l},aebd:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},b0dc:function(t,e,n){var r=n(\"e4ae\");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t[\"return\"];throw void 0!==i&&r(i.call(t)),a}}},b447:function(t,e,n){var r=n(\"3a38\"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},b8e3:function(t,e){t.exports=!0},be13:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},bf0b:function(t,e,n){var r=n(\"355d\"),o=n(\"aebd\"),i=n(\"36c3\"),a=n(\"1bc3\"),c=n(\"07e3\"),u=n(\"794b\"),f=Object.getOwnPropertyDescriptor;e.f=n(\"8e60\")?f:function(t,e){if(t=i(t),e=a(e,!0),u)try{return f(t,e)}catch(n){}if(c(t,e))return o(!r.f.call(t,e),t[e])}},c189:function(t,e,n){\"use strict\";var r=n(\"79aa\"),o=n(\"f772\"),i=n(\"3024\"),a=[].slice,c={},u=function(t,e,n){if(!(e in c)){for(var r=[],o=0;os)if(c=u[s++],c!=c)return!0}else for(;f>s;s++)if((t||s in u)&&u[s]===n)return t||s||0;return!t&&-1}}},c367:function(t,e,n){\"use strict\";var r=n(\"8436\"),o=n(\"50ed\"),i=n(\"481b\"),a=n(\"36c3\");t.exports=n(\"30f1\")(Array,\"Array\",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,\"keys\"==e?n:\"values\"==e?t[n]:[n,t[n]])}),\"values\"),i.Arguments=i.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},c3a1:function(t,e,n){var r=n(\"e6f3\"),o=n(\"1691\");t.exports=Object.keys||function(t){return r(t,o)}},c5f6:function(t,e,n){\"use strict\";var r=n(\"7726\"),o=n(\"69a8\"),i=n(\"2d95\"),a=n(\"5dbc\"),c=n(\"6a99\"),u=n(\"79e5\"),f=n(\"9093\").f,s=n(\"11e9\").f,l=n(\"86cc\").f,d=n(\"aa77\").trim,p=\"Number\",y=r[p],v=y,h=y.prototype,g=i(n(\"2aeb\")(h))==p,b=\"trim\"in String.prototype,x=function(t){var e=c(t,!1);if(\"string\"==typeof e&&e.length>2){e=b?e.trim():d(e,3);var n,r,o,i=e.charCodeAt(0);if(43===i||45===i){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+e}for(var a,u=e.slice(2),f=0,s=u.length;fo)return NaN;return parseInt(u,r)}}return+e};if(!y(\" 0o1\")||!y(\"0b1\")||y(\"+0x1\")){y=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof y&&(g?u((function(){h.valueOf.call(n)})):i(n)!=p)?a(new v(x(e)),n,y):x(e)};for(var m,_=n(\"9e1e\")?f(v):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),w=0;_.length>w;w++)o(v,m=_[w])&&!o(y,m)&&l(y,m,s(v,m));y.prototype=h,h.constructor=y,n(\"2aba\")(r,p,y)}},c69a:function(t,e,n){t.exports=!n(\"9e1e\")&&!n(\"79e5\")((function(){return 7!=Object.defineProperty(n(\"230e\")(\"div\"),\"a\",{get:function(){return 7}}).a}))},c8bb:function(t,e,n){t.exports=n(\"54a1\")},ca5a:function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},cb7c:function(t,e,n){var r=n(\"d3f4\");t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},cd1c:function(t,e,n){var r=n(\"e853\");t.exports=function(t,e){return new(r(t))(e)}},ce10:function(t,e,n){var r=n(\"69a8\"),o=n(\"6821\"),i=n(\"c366\")(!1),a=n(\"613b\")(\"IE_PROTO\");t.exports=function(t,e){var n,c=o(t),u=0,f=[];for(n in c)n!=a&&r(c,n)&&f.push(n);while(e.length>u)r(c,n=e[u++])&&(~i(f,n)||f.push(n));return f}},d2d5:function(t,e,n){n(\"1654\"),n(\"549b\"),t.exports=n(\"584a\").Array.from},d3f4:function(t,e){t.exports=function(t){return\"object\"===typeof t?null!==t:\"function\"===typeof t}},d864:function(t,e,n){var r=n(\"79aa\");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},d8e8:function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},d9f6:function(t,e,n){var r=n(\"e4ae\"),o=n(\"794b\"),i=n(\"1bc3\"),a=Object.defineProperty;e.f=n(\"8e60\")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(c){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},dbdb:function(t,e,n){var r=n(\"584a\"),o=n(\"e53d\"),i=\"__core-js_shared__\",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:r.version,mode:n(\"b8e3\")?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},e11e:function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},e472:function(t,e,n){\"use strict\";n(\"64fe\")},e4ae:function(t,e,n){var r=n(\"f772\");t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},e53d:function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},e6f3:function(t,e,n){var r=n(\"07e3\"),o=n(\"36c3\"),i=n(\"5b4e\")(!1),a=n(\"5559\")(\"IE_PROTO\");t.exports=function(t,e){var n,c=o(t),u=0,f=[];for(n in c)n!=a&&r(c,n)&&f.push(n);while(e.length>u)r(c,n=e[u++])&&(~i(f,n)||f.push(n));return f}},e853:function(t,e,n){var r=n(\"d3f4\"),o=n(\"1169\"),i=n(\"2b4c\")(\"species\");t.exports=function(t){var e;return o(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&(e=e[i],null===e&&(e=void 0))),void 0===e?Array:e}},ead6:function(t,e,n){var r=n(\"f772\"),o=n(\"e4ae\"),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,r){try{r=n(\"d864\")(Function.call,n(\"bf0b\").f(Object.prototype,\"__proto__\").set,2),r(t,[]),e=!(t instanceof Array)}catch(o){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},f410:function(t,e,n){n(\"1af6\"),t.exports=n(\"584a\").Array.isArray},f772:function(t,e){t.exports=function(t){return\"object\"===typeof t?null!==t:\"function\"===typeof t}},fa5b:function(t,e,n){t.exports=n(\"5537\")(\"native-function-to-string\",Function.toString)},fab2:function(t,e,n){var r=n(\"7726\").document;t.exports=r&&r.documentElement},fae3:function(t,e,n){\"use strict\";var r;(n.r(e),\"undefined\"!==typeof window)&&((r=window.document.currentScript)&&(r=r.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))&&(n.p=r[1]));var o=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{attrs:{id:\"sweetCalendar\"}},[n(\"div\",{staticClass:\"container calendar\"},[n(\"div\",{staticClass:\"header\"},[n(\"div\",{staticClass:\"left-arrow\",on:{click:t.prevMonth}},[n(\"span\",[t._v(\"<\")])]),n(\"div\",{staticClass:\"month\"},[t._v(t._s(t.selectedMonthName)+\" \"+t._s(t.selectedYear))]),n(\"div\",{staticClass:\"right-arrow\",on:{click:t.nextMonth}},[n(\"span\",[t._v(\">\")])])]),n(\"div\",{staticClass:\"body\"},[t._l(t.weekdays,(function(e,r){return n(\"div\",{key:\"day-name-\"+(r+1),staticClass:\"day-name\",attrs:{title:e}},[t._v(\"\\n \"+t._s(e[0])+\"\\n \")])})),t._l(t.days,(function(e,r){return n(\"div\",{key:r,staticClass:\"day-container\"},[e?n(\"div\",{staticClass:\"before\",style:t.generateBeforeStyle(e)},[t._v(\" \")]):t._e(),e?n(\"div\",{class:[\"day\",\"day-\"+e.getDate()+\",\\n weekday-\"+e.getDay(),t.offDays.includes(e.getDay())?\"off-day\":null,e.toDateString()===t.today.toDateString()?\"today\":null],style:t.generateDayStyle(e)},[n(\"span\",[t._v(t._s(e.getDate()))])]):t._e(),e?n(\"div\",{staticClass:\"after\",style:t.generateAfterStyle(e)},[t._v(\" \")]):t._e()])}))],2)])])},i=[],a=(n(\"c5f6\"),n(\"5176\")),c=n.n(a),u=(n(\"7514\"),n(\"14b9\"),n(\"5d73\")),f=n.n(u),s=(n(\"6c7b\"),n(\"a5b2\")),l=n.n(s),d=n(\"4d16\"),p=n.n(d);function y(t,e){return y=p.a||function(t,e){return t.__proto__=e,t},y(t,e)}function v(){if(\"undefined\"===typeof Reflect||!l.a)return!1;if(l.a.sham)return!1;if(\"function\"===typeof Proxy)return!0;try{return Date.prototype.toString.call(l()(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t,e,n){return h=v()?l.a:function(t,e,n){var r=[null];r.push.apply(r,e);var o=Function.bind.apply(t,r),i=new o;return n&&y(i,n.prototype),i},h.apply(null,arguments)}var g=n(\"a745\"),b=n.n(g);function x(t){if(b()(t)){for(var e=0,n=new Array(t.length);e1){var i=r[0],a=r[1],c=r.slice(2);e=h(Date,[i,a-1].concat(k(c)))}else e=h(Date,r);e.setHours(0,0,0,0),this._date=e}return C(t,[{key:\"getMonth\",value:function(){return this._date.getMonth()+1}},{key:\"getDay\",value:function(){return this._date.getDay()+1}},{key:\"getMonthName\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"long\";return this._date.toLocaleString(\"en-US\",{month:t})}},{key:\"getFullYear\",value:function(){return this._date.getFullYear()}},{key:\"getDate\",value:function(){return this._date.getDate()}},{key:\"getTime\",value:function(){return this._date.getTime()}},{key:\"getDayName\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"long\";return this._date.toLocaleString(\"en-US\",{weekday:t})}},{key:\"getNextDay\",value:function(){var t=new this.constructor(this.getTime());return t.setDate(t.getDate()+1),t}},{key:\"getPrevDay\",value:function(){var t=new this.constructor(this.getTime());return t.setDate(t.getDate()-1),t}},{key:\"setDate\",value:function(t){return this._date.setDate(t),this.getTime()}},{key:\"isInRange\",value:function(t,e){var n,r,o,i,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"never\",c=new this.constructor(t),u=new this.constructor(e),f=this.getTime();switch(a){case\"weekly\":return n=c.getDay(),r=u.getDay(),o=this.getDay()>=n,i=this.getDay()<=r,o&&i;case\"monthly\":return n=new this.constructor(this.getFullYear(),this.getMonth(),c.getDate()).getTime(),r=new this.constructor(this.getFullYear(),this.getMonth(),u.getDate()).getTime(),o=f>=n,i=f<=r,o&&i;case\"yearly\":return n=new this.constructor(this.getFullYear(),c.getMonth(),c.getDate()).getTime(),r=new this.constructor(this.getFullYear(),u.getMonth(),u.getDate()).getTime(),o=f>=n,i=f<=r,o&&i;case\"never\":return o=f>=c.getTime(),i=f<=u.getTime(),o&&i;default:return o=f>=c.getTime(),i=f<=u.getTime(),o&&i}}},{key:\"toDateString\",value:function(){return this._date.toDateString()}},{key:\"toISOString\",value:function(){return this._date.toISOString()}},{key:\"getTimezoneOffset\",value:function(){return this._date.getTimezoneOffset()}},{key:\"getNumberOfDaysInMonth\",value:function(){return new this.constructor(this.getFullYear(),this.getMonth()+1,0).getDate()}},{key:\"getFirstWeekdayOfMonth\",value:function(){return new this.constructor(this.getFullYear(),this.getMonth(),1).getDay()}}]),t}(),E={name:\"Calendar\",data:function(){return{today:new P,date:null,weekdays:null}},computed:{days:function(){var t=this,e=Array((this.startWeekDayOfMonth-this.firstDayOfWeek+7)%7).fill(null),n=Array(this.numberOfDays).fill().map((function(e,n){return new P(t.selectedYear,t.selectedMonth,n+1)}));return e.concat(n)},startWeekDayOfMonth:function(){return this.date.getFirstWeekdayOfMonth()},numberOfDays:function(){return this.date.getNumberOfDaysInMonth()},selectedMonth:function(){return this.date.getMonth()},selectedMonthName:function(){return this.date.getMonthName()},selectedYear:function(){return this.date.getFullYear()}},methods:{prevMonth:function(){this.date=new P(this.selectedYear,this.selectedMonth-1,1)},nextMonth:function(){this.date=new P(this.selectedYear,this.selectedMonth+1,1)},generateWeekdayNames:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],n=2;n<=t;n++){var r=e.shift();e.push(r)}return e},generateDayStyle:function(t){var e=this,n={},r=!0,o=!1,i=void 0;try{for(var a,u=function(){var r=a.value;if(t.isInRange(r.start,r.end,r.repeat)){var o=e.eventCategories.find((function(t){return t.id===r.categoryId}))||{};c()(n,{color:o.id?o.textColor:null,backgroundColor:o.id?o.backgroundColor:null,fontWeight:o.id?\"bold\":\"normal\"})}},s=f()(this.events);!(r=(a=s.next()).done);r=!0)u()}catch(l){o=!0,i=l}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n},generateBeforeStyle:function(t){var e=this,n={},r=!0,o=!1,i=void 0;try{for(var a,u=function(){var r=a.value;if(t.isInRange(r.start,r.end,r.repeat)&&t.getPrevDay().isInRange(r.start,r.end,r.repeat)){var o=e.eventCategories.find((function(t){return t.id===r.categoryId}))||{};c()(n,{backgroundColor:o.backgroundColor})}},s=f()(this.events);!(r=(a=s.next()).done);r=!0)u()}catch(l){o=!0,i=l}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n},generateAfterStyle:function(t){var e=this,n={},r=!0,o=!1,i=void 0;try{for(var a,u=function(){var r=a.value;if(t.isInRange(r.start,r.end,r.repeat)&&t.getNextDay().isInRange(r.start,r.end,r.repeat)){var o=e.eventCategories.find((function(t){return t.id===r.categoryId}))||{};c()(n,{backgroundColor:o.backgroundColor})}},s=f()(this.events);!(r=(a=s.next()).done);r=!0)u()}catch(l){o=!0,i=l}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n},goToday:function(){this.date=this.today}},props:{initialDate:{type:String,default:null},firstDayOfWeek:{type:Number,default:1},eventCategories:{type:Array,default:function(){return[]}},events:{type:Array,default:function(){return[]}},offDays:{type:Array,default:function(){return[1,7]}}},beforeMount:function(){this.date=Date.parse(this.initialDate)?new P(this.initialDate):new P,this.weekdays=this.generateWeekdayNames(this.firstDayOfWeek)}},F=E;n(\"e472\");function I(t,e,n,r,o,i,a,c){var u,f=\"function\"===typeof t?t.options:t;if(e&&(f.render=e,f.staticRenderFns=n,f._compiled=!0),r&&(f.functional=!0),i&&(f._scopeId=\"data-v-\"+i),a?(u=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},f._ssrRegister=u):o&&(u=c?function(){o.call(this,(f.functional?this.parent:this).$root.$options.shadowRoot)}:o),u)if(f.functional){f._injectStyles=u;var s=f.render;f.render=function(t,e){return u.call(e),s(t,e)}}else{var l=f.beforeCreate;f.beforeCreate=l?[].concat(l,u):[u]}return{exports:t,options:f}}var N=I(F,o,i,!1,null,\"22807381\",null),L=N.exports,R=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{attrs:{id:\"sweetCalendar\"}},[n(\"div\",{staticClass:\"container date-picker\"},[n(\"div\",{staticClass:\"header\"},[n(\"div\",{staticClass:\"left-arrow\",on:{click:t.prevMonth}},[n(\"span\",[t._v(\"<\")])]),n(\"div\",{staticClass:\"month\"},[t._v(t._s(t.selectedMonthName)+\" \"+t._s(t.selectedYear))]),n(\"div\",{staticClass:\"right-arrow\",on:{click:t.nextMonth}},[n(\"span\",[t._v(\">\")])])]),n(\"div\",{staticClass:\"body\"},[t._l(t.weekdays,(function(e,r){return n(\"div\",{key:\"day-name-\"+(r+1),staticClass:\"day-name\",attrs:{title:e}},[t._v(\"\\n \"+t._s(e[0])+\"\\n \")])})),t._l(t.days,(function(e,r){return n(\"div\",{key:r,staticClass:\"day-container\"},[e?n(\"div\",{class:[\"day\",\"day-\"+e.getDate()+\",\\n weekday-\"+e.getDay(),t.offDays.includes(e.getDay())?\"off-day\":null,e.toDateString()===t.today.toDateString()?\"today\":null,t.isSelected(e)?\"selected\":null],on:{click:function(n){return t.selectDay(e)}}},[n(\"span\",[t._v(t._s(e.getDate()))])]):t._e()])}))],2)])])},W=[],Y={name:\"DatePicker\",data:function(){return{today:new P,date:null,weekdays:null}},computed:{days:function(){var t=this,e=Array((this.startWeekDayOfMonth-this.firstDayOfWeek+7)%7).fill(null),n=Array(this.numberOfDays).fill().map((function(e,n){return new P(t.selectedYear,t.selectedMonth,n+1)}));return e.concat(n)},startWeekDayOfMonth:function(){return this.date.getFirstWeekdayOfMonth()},numberOfDays:function(){return this.date.getNumberOfDaysInMonth()},selectedMonth:function(){return this.date.getMonth()},selectedMonthName:function(){return this.date.getMonthName()},selectedYear:function(){return this.date.getFullYear()}},methods:{prevMonth:function(){this.date=new P(this.selectedYear,this.selectedMonth-1,1)},nextMonth:function(){this.date=new P(this.selectedYear,this.selectedMonth+1,1)},generateWeekdayNames:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],n=2;n<=t;n++){var r=e.shift();e.push(r)}return e},selectDay:function(t){this.$emit(\"setDate\",{iso:t.toISOString(),timeZoneOffset:t.getTimezoneOffset()})},isSelected:function(t){return!!this.selectedDate&&t.toDateString()===new P(this.selectedDate).toDateString()}},props:{initialDate:{type:String,default:null},selectedDate:{type:String,default:null},firstDayOfWeek:{type:Number,default:1},offDays:{type:Array,default:function(){return[1,7]}}},beforeMount:function(){this.date=Date.parse(this.initialDate)?new P(this.initialDate):new P,this.weekdays=this.generateWeekdayNames(this.firstDayOfWeek)}},G=Y,V=(n(\"5f00\"),I(G,R,W,!1,null,\"0e5943d9\",null)),$=V.exports;n.d(e,\"Calendar\",(function(){return L})),n.d(e,\"DatePicker\",(function(){return $}))},fdef:function(t,e){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"}})}));\n//# sourceMappingURL=SweetCalendar.umd.min.js.map","/*!\n * FullCalendar v3.10.1\n * Docs & License: https://fullcalendar.io/\n * (c) 2019 Adam Shaw\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"moment\"), require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"moment\", \"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"FullCalendar\"] = factory(require(\"moment\"), require(\"jquery\"));\n\telse\n\t\troot[\"FullCalendar\"] = factory(root[\"moment\"], root[\"jQuery\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_3__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 256);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports) {\n\n/*\r\nderived from:\r\nhttps://github.com/Microsoft/tslib/blob/v1.6.0/tslib.js\r\n\nonly include the helpers we need, to keep down filesize\r\n*/\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b)\r\n if (b.hasOwnProperty(p))\r\n d[p] = b[p]; };\r\nexports.__extends = function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar $ = __webpack_require__(3);\r\n/* FullCalendar-specific DOM Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left\r\n// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that.\r\nfunction compensateScroll(rowEls, scrollbarWidths) {\r\n if (scrollbarWidths.left) {\r\n rowEls.css({\r\n 'border-left-width': 1,\r\n 'margin-left': scrollbarWidths.left - 1\r\n });\r\n }\r\n if (scrollbarWidths.right) {\r\n rowEls.css({\r\n 'border-right-width': 1,\r\n 'margin-right': scrollbarWidths.right - 1\r\n });\r\n }\r\n}\r\nexports.compensateScroll = compensateScroll;\r\n// Undoes compensateScroll and restores all borders/margins\r\nfunction uncompensateScroll(rowEls) {\r\n rowEls.css({\r\n 'margin-left': '',\r\n 'margin-right': '',\r\n 'border-left-width': '',\r\n 'border-right-width': ''\r\n });\r\n}\r\nexports.uncompensateScroll = uncompensateScroll;\r\n// Make the mouse cursor express that an event is not allowed in the current area\r\nfunction disableCursor() {\r\n $('body').addClass('fc-not-allowed');\r\n}\r\nexports.disableCursor = disableCursor;\r\n// Returns the mouse cursor to its original look\r\nfunction enableCursor() {\r\n $('body').removeClass('fc-not-allowed');\r\n}\r\nexports.enableCursor = enableCursor;\r\n// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate.\r\n// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering\r\n// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and\r\n// reduces the available height.\r\nfunction distributeHeight(els, availableHeight, shouldRedistribute) {\r\n // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions,\r\n // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars.\r\n var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element\r\n var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE*\r\n var flexEls = []; // elements that are allowed to expand. array of DOM nodes\r\n var flexOffsets = []; // amount of vertical space it takes up\r\n var flexHeights = []; // actual css height\r\n var usedHeight = 0;\r\n undistributeHeight(els); // give all elements their natural height\r\n // find elements that are below the recommended height (expandable).\r\n // important to query for heights in a single first pass (to avoid reflow oscillation).\r\n els.each(function (i, el) {\r\n var minOffset = i === els.length - 1 ? minOffset2 : minOffset1;\r\n var naturalOffset = $(el).outerHeight(true);\r\n if (naturalOffset < minOffset) {\r\n flexEls.push(el);\r\n flexOffsets.push(naturalOffset);\r\n flexHeights.push($(el).height());\r\n }\r\n else {\r\n // this element stretches past recommended height (non-expandable). mark the space as occupied.\r\n usedHeight += naturalOffset;\r\n }\r\n });\r\n // readjust the recommended height to only consider the height available to non-maxed-out rows.\r\n if (shouldRedistribute) {\r\n availableHeight -= usedHeight;\r\n minOffset1 = Math.floor(availableHeight / flexEls.length);\r\n minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE*\r\n }\r\n // assign heights to all expandable elements\r\n $(flexEls).each(function (i, el) {\r\n var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1;\r\n var naturalOffset = flexOffsets[i];\r\n var naturalHeight = flexHeights[i];\r\n var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding\r\n if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things\r\n $(el).height(newHeight);\r\n }\r\n });\r\n}\r\nexports.distributeHeight = distributeHeight;\r\n// Undoes distrubuteHeight, restoring all els to their natural height\r\nfunction undistributeHeight(els) {\r\n els.height('');\r\n}\r\nexports.undistributeHeight = undistributeHeight;\r\n// Given `els`, a jQuery set of cells, find the cell with the largest natural width and set the widths of all the\r\n// cells to be that width.\r\n// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline\r\nfunction matchCellWidths(els) {\r\n var maxInnerWidth = 0;\r\n els.find('> *').each(function (i, innerEl) {\r\n var innerWidth = $(innerEl).outerWidth();\r\n if (innerWidth > maxInnerWidth) {\r\n maxInnerWidth = innerWidth;\r\n }\r\n });\r\n maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance\r\n els.width(maxInnerWidth);\r\n return maxInnerWidth;\r\n}\r\nexports.matchCellWidths = matchCellWidths;\r\n// Given one element that resides inside another,\r\n// Subtracts the height of the inner element from the outer element.\r\nfunction subtractInnerElHeight(outerEl, innerEl) {\r\n var both = outerEl.add(innerEl);\r\n var diff;\r\n // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked\r\n both.css({\r\n position: 'relative',\r\n left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll\r\n });\r\n diff = outerEl.outerHeight() - innerEl.outerHeight(); // grab the dimensions\r\n both.css({ position: '', left: '' }); // undo hack\r\n return diff;\r\n}\r\nexports.subtractInnerElHeight = subtractInnerElHeight;\r\n/* Element Geom Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51\r\nfunction getScrollParent(el) {\r\n var position = el.css('position');\r\n var scrollParent = el.parents().filter(function () {\r\n var parent = $(this);\r\n return (/(auto|scroll)/).test(parent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x'));\r\n }).eq(0);\r\n return position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent;\r\n}\r\nexports.getScrollParent = getScrollParent;\r\n// Queries the outer bounding area of a jQuery element.\r\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\r\n// Origin is optional.\r\nfunction getOuterRect(el, origin) {\r\n var offset = el.offset();\r\n var left = offset.left - (origin ? origin.left : 0);\r\n var top = offset.top - (origin ? origin.top : 0);\r\n return {\r\n left: left,\r\n right: left + el.outerWidth(),\r\n top: top,\r\n bottom: top + el.outerHeight()\r\n };\r\n}\r\nexports.getOuterRect = getOuterRect;\r\n// Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding.\r\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\r\n// Origin is optional.\r\n// WARNING: given element can't have borders\r\n// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\r\nfunction getClientRect(el, origin) {\r\n var offset = el.offset();\r\n var scrollbarWidths = getScrollbarWidths(el);\r\n var left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left - (origin ? origin.left : 0);\r\n var top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top - (origin ? origin.top : 0);\r\n return {\r\n left: left,\r\n right: left + el[0].clientWidth,\r\n top: top,\r\n bottom: top + el[0].clientHeight // clientHeight includes padding but NOT scrollbars\r\n };\r\n}\r\nexports.getClientRect = getClientRect;\r\n// Queries the area within the margin/border/padding of a jQuery element. Assumed not to have scrollbars.\r\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\r\n// Origin is optional.\r\nfunction getContentRect(el, origin) {\r\n var offset = el.offset(); // just outside of border, margin not included\r\n var left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left') -\r\n (origin ? origin.left : 0);\r\n var top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top') -\r\n (origin ? origin.top : 0);\r\n return {\r\n left: left,\r\n right: left + el.width(),\r\n top: top,\r\n bottom: top + el.height()\r\n };\r\n}\r\nexports.getContentRect = getContentRect;\r\n// Returns the computed left/right/top/bottom scrollbar widths for the given jQuery element.\r\n// WARNING: given element can't have borders (which will cause offsetWidth/offsetHeight to be larger).\r\n// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\r\nfunction getScrollbarWidths(el) {\r\n var leftRightWidth = el[0].offsetWidth - el[0].clientWidth;\r\n var bottomWidth = el[0].offsetHeight - el[0].clientHeight;\r\n var widths;\r\n leftRightWidth = sanitizeScrollbarWidth(leftRightWidth);\r\n bottomWidth = sanitizeScrollbarWidth(bottomWidth);\r\n widths = { left: 0, right: 0, top: 0, bottom: bottomWidth };\r\n if (getIsLeftRtlScrollbars() && el.css('direction') === 'rtl') { // is the scrollbar on the left side?\r\n widths.left = leftRightWidth;\r\n }\r\n else {\r\n widths.right = leftRightWidth;\r\n }\r\n return widths;\r\n}\r\nexports.getScrollbarWidths = getScrollbarWidths;\r\n// The scrollbar width computations in getScrollbarWidths are sometimes flawed when it comes to\r\n// retina displays, rounding, and IE11. Massage them into a usable value.\r\nfunction sanitizeScrollbarWidth(width) {\r\n width = Math.max(0, width); // no negatives\r\n width = Math.round(width);\r\n return width;\r\n}\r\n// Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side\r\nvar _isLeftRtlScrollbars = null;\r\nfunction getIsLeftRtlScrollbars() {\r\n if (_isLeftRtlScrollbars === null) {\r\n _isLeftRtlScrollbars = computeIsLeftRtlScrollbars();\r\n }\r\n return _isLeftRtlScrollbars;\r\n}\r\nfunction computeIsLeftRtlScrollbars() {\r\n var el = $('
')\r\n .css({\r\n position: 'absolute',\r\n top: -1000,\r\n left: 0,\r\n border: 0,\r\n padding: 0,\r\n overflow: 'scroll',\r\n direction: 'rtl'\r\n })\r\n .appendTo('body');\r\n var innerEl = el.children();\r\n var res = innerEl.offset().left > el.offset().left; // is the inner div shifted to accommodate a left scrollbar?\r\n el.remove();\r\n return res;\r\n}\r\n// Retrieves a jQuery element's computed CSS value as a floating-point number.\r\n// If the queried value is non-numeric (ex: IE can return \"medium\" for border width), will just return zero.\r\nfunction getCssFloat(el, prop) {\r\n return parseFloat(el.css(prop)) || 0;\r\n}\r\n/* Mouse / Touch Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\r\nfunction isPrimaryMouseButton(ev) {\r\n return ev.which === 1 && !ev.ctrlKey;\r\n}\r\nexports.isPrimaryMouseButton = isPrimaryMouseButton;\r\nfunction getEvX(ev) {\r\n var touches = ev.originalEvent.touches;\r\n // on mobile FF, pageX for touch events is present, but incorrect,\r\n // so, look at touch coordinates first.\r\n if (touches && touches.length) {\r\n return touches[0].pageX;\r\n }\r\n return ev.pageX;\r\n}\r\nexports.getEvX = getEvX;\r\nfunction getEvY(ev) {\r\n var touches = ev.originalEvent.touches;\r\n // on mobile FF, pageX for touch events is present, but incorrect,\r\n // so, look at touch coordinates first.\r\n if (touches && touches.length) {\r\n return touches[0].pageY;\r\n }\r\n return ev.pageY;\r\n}\r\nexports.getEvY = getEvY;\r\nfunction getEvIsTouch(ev) {\r\n return /^touch/.test(ev.type);\r\n}\r\nexports.getEvIsTouch = getEvIsTouch;\r\nfunction preventSelection(el) {\r\n el.addClass('fc-unselectable')\r\n .on('selectstart', preventDefault);\r\n}\r\nexports.preventSelection = preventSelection;\r\nfunction allowSelection(el) {\r\n el.removeClass('fc-unselectable')\r\n .off('selectstart', preventDefault);\r\n}\r\nexports.allowSelection = allowSelection;\r\n// Stops a mouse/touch event from doing it's native browser action\r\nfunction preventDefault(ev) {\r\n ev.preventDefault();\r\n}\r\nexports.preventDefault = preventDefault;\r\n/* General Geometry Utils\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\r\nfunction intersectRects(rect1, rect2) {\r\n var res = {\r\n left: Math.max(rect1.left, rect2.left),\r\n right: Math.min(rect1.right, rect2.right),\r\n top: Math.max(rect1.top, rect2.top),\r\n bottom: Math.min(rect1.bottom, rect2.bottom)\r\n };\r\n if (res.left < res.right && res.top < res.bottom) {\r\n return res;\r\n }\r\n return false;\r\n}\r\nexports.intersectRects = intersectRects;\r\n// Returns a new point that will have been moved to reside within the given rectangle\r\nfunction constrainPoint(point, rect) {\r\n return {\r\n left: Math.min(Math.max(point.left, rect.left), rect.right),\r\n top: Math.min(Math.max(point.top, rect.top), rect.bottom)\r\n };\r\n}\r\nexports.constrainPoint = constrainPoint;\r\n// Returns a point that is the center of the given rectangle\r\nfunction getRectCenter(rect) {\r\n return {\r\n left: (rect.left + rect.right) / 2,\r\n top: (rect.top + rect.bottom) / 2\r\n };\r\n}\r\nexports.getRectCenter = getRectCenter;\r\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\r\nfunction diffPoints(point1, point2) {\r\n return {\r\n left: point1.left - point2.left,\r\n top: point1.top - point2.top\r\n };\r\n}\r\nexports.diffPoints = diffPoints;\r\n/* Object Ordering by Field\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nfunction parseFieldSpecs(input) {\r\n var specs = [];\r\n var tokens = [];\r\n var i;\r\n var token;\r\n if (typeof input === 'string') {\r\n tokens = input.split(/\\s*,\\s*/);\r\n }\r\n else if (typeof input === 'function') {\r\n tokens = [input];\r\n }\r\n else if ($.isArray(input)) {\r\n tokens = input;\r\n }\r\n for (i = 0; i < tokens.length; i++) {\r\n token = tokens[i];\r\n if (typeof token === 'string') {\r\n specs.push(token.charAt(0) === '-' ?\r\n { field: token.substring(1), order: -1 } :\r\n { field: token, order: 1 });\r\n }\r\n else if (typeof token === 'function') {\r\n specs.push({ func: token });\r\n }\r\n }\r\n return specs;\r\n}\r\nexports.parseFieldSpecs = parseFieldSpecs;\r\nfunction compareByFieldSpecs(obj1, obj2, fieldSpecs, obj1fallback, obj2fallback) {\r\n var i;\r\n var cmp;\r\n for (i = 0; i < fieldSpecs.length; i++) {\r\n cmp = compareByFieldSpec(obj1, obj2, fieldSpecs[i], obj1fallback, obj2fallback);\r\n if (cmp) {\r\n return cmp;\r\n }\r\n }\r\n return 0;\r\n}\r\nexports.compareByFieldSpecs = compareByFieldSpecs;\r\nfunction compareByFieldSpec(obj1, obj2, fieldSpec, obj1fallback, obj2fallback) {\r\n if (fieldSpec.func) {\r\n return fieldSpec.func(obj1, obj2);\r\n }\r\n var val1 = obj1[fieldSpec.field];\r\n var val2 = obj2[fieldSpec.field];\r\n if (val1 == null && obj1fallback) {\r\n val1 = obj1fallback[fieldSpec.field];\r\n }\r\n if (val2 == null && obj2fallback) {\r\n val2 = obj2fallback[fieldSpec.field];\r\n }\r\n return flexibleCompare(val1, val2) * (fieldSpec.order || 1);\r\n}\r\nexports.compareByFieldSpec = compareByFieldSpec;\r\nfunction flexibleCompare(a, b) {\r\n if (!a && !b) {\r\n return 0;\r\n }\r\n if (b == null) {\r\n return -1;\r\n }\r\n if (a == null) {\r\n return 1;\r\n }\r\n if ($.type(a) === 'string' || $.type(b) === 'string') {\r\n return String(a).localeCompare(String(b));\r\n }\r\n return a - b;\r\n}\r\nexports.flexibleCompare = flexibleCompare;\r\n/* Date Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nexports.dayIDs = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\r\nexports.unitsDesc = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; // descending\r\n// Diffs the two moments into a Duration where full-days are recorded first, then the remaining time.\r\n// Moments will have their timezones normalized.\r\nfunction diffDayTime(a, b) {\r\n return moment.duration({\r\n days: a.clone().stripTime().diff(b.clone().stripTime(), 'days'),\r\n ms: a.time() - b.time() // time-of-day from day start. disregards timezone\r\n });\r\n}\r\nexports.diffDayTime = diffDayTime;\r\n// Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations.\r\nfunction diffDay(a, b) {\r\n return moment.duration({\r\n days: a.clone().stripTime().diff(b.clone().stripTime(), 'days')\r\n });\r\n}\r\nexports.diffDay = diffDay;\r\n// Diffs two moments, producing a duration, made of a whole-unit-increment of the given unit. Uses rounding.\r\nfunction diffByUnit(a, b, unit) {\r\n return moment.duration(Math.round(a.diff(b, unit, true)), // returnFloat=true\r\n unit);\r\n}\r\nexports.diffByUnit = diffByUnit;\r\n// Computes the unit name of the largest whole-unit period of time.\r\n// For example, 48 hours will be \"days\" whereas 49 hours will be \"hours\".\r\n// Accepts start/end, a range object, or an original duration object.\r\nfunction computeGreatestUnit(start, end) {\r\n var i;\r\n var unit;\r\n var val;\r\n for (i = 0; i < exports.unitsDesc.length; i++) {\r\n unit = exports.unitsDesc[i];\r\n val = computeRangeAs(unit, start, end);\r\n if (val >= 1 && isInt(val)) {\r\n break;\r\n }\r\n }\r\n return unit; // will be \"milliseconds\" if nothing else matches\r\n}\r\nexports.computeGreatestUnit = computeGreatestUnit;\r\n// like computeGreatestUnit, but has special abilities to interpret the source input for clues\r\nfunction computeDurationGreatestUnit(duration, durationInput) {\r\n var unit = computeGreatestUnit(duration);\r\n // prevent days:7 from being interpreted as a week\r\n if (unit === 'week' && typeof durationInput === 'object' && durationInput.days) {\r\n unit = 'day';\r\n }\r\n return unit;\r\n}\r\nexports.computeDurationGreatestUnit = computeDurationGreatestUnit;\r\n// Computes the number of units (like \"hours\") in the given range.\r\n// Range can be a {start,end} object, separate start/end args, or a Duration.\r\n// Results are based on Moment's .as() and .diff() methods, so results can depend on internal handling\r\n// of month-diffing logic (which tends to vary from version to version).\r\nfunction computeRangeAs(unit, start, end) {\r\n if (end != null) { // given start, end\r\n return end.diff(start, unit, true);\r\n }\r\n else if (moment.isDuration(start)) { // given duration\r\n return start.as(unit);\r\n }\r\n else { // given { start, end } range object\r\n return start.end.diff(start.start, unit, true);\r\n }\r\n}\r\n// Intelligently divides a range (specified by a start/end params) by a duration\r\nfunction divideRangeByDuration(start, end, dur) {\r\n var months;\r\n if (durationHasTime(dur)) {\r\n return (end - start) / dur;\r\n }\r\n months = dur.asMonths();\r\n if (Math.abs(months) >= 1 && isInt(months)) {\r\n return end.diff(start, 'months', true) / months;\r\n }\r\n return end.diff(start, 'days', true) / dur.asDays();\r\n}\r\nexports.divideRangeByDuration = divideRangeByDuration;\r\n// Intelligently divides one duration by another\r\nfunction divideDurationByDuration(dur1, dur2) {\r\n var months1;\r\n var months2;\r\n if (durationHasTime(dur1) || durationHasTime(dur2)) {\r\n return dur1 / dur2;\r\n }\r\n months1 = dur1.asMonths();\r\n months2 = dur2.asMonths();\r\n if (Math.abs(months1) >= 1 && isInt(months1) &&\r\n Math.abs(months2) >= 1 && isInt(months2)) {\r\n return months1 / months2;\r\n }\r\n return dur1.asDays() / dur2.asDays();\r\n}\r\nexports.divideDurationByDuration = divideDurationByDuration;\r\n// Intelligently multiplies a duration by a number\r\nfunction multiplyDuration(dur, n) {\r\n var months;\r\n if (durationHasTime(dur)) {\r\n return moment.duration(dur * n);\r\n }\r\n months = dur.asMonths();\r\n if (Math.abs(months) >= 1 && isInt(months)) {\r\n return moment.duration({ months: months * n });\r\n }\r\n return moment.duration({ days: dur.asDays() * n });\r\n}\r\nexports.multiplyDuration = multiplyDuration;\r\n// Returns a boolean about whether the given duration has any time parts (hours/minutes/seconds/ms)\r\nfunction durationHasTime(dur) {\r\n return Boolean(dur.hours() || dur.minutes() || dur.seconds() || dur.milliseconds());\r\n}\r\nexports.durationHasTime = durationHasTime;\r\nfunction isNativeDate(input) {\r\n return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date;\r\n}\r\nexports.isNativeDate = isNativeDate;\r\n// Returns a boolean about whether the given input is a time string, like \"06:40:00\" or \"06:00\"\r\nfunction isTimeString(str) {\r\n return typeof str === 'string' &&\r\n /^\\d+\\:\\d+(?:\\:\\d+\\.?(?:\\d{3})?)?$/.test(str);\r\n}\r\nexports.isTimeString = isTimeString;\r\n/* Logging and Debug\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nfunction log() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var console = window.console;\r\n if (console && console.log) {\r\n return console.log.apply(console, args);\r\n }\r\n}\r\nexports.log = log;\r\nfunction warn() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var console = window.console;\r\n if (console && console.warn) {\r\n return console.warn.apply(console, args);\r\n }\r\n else {\r\n return log.apply(null, args);\r\n }\r\n}\r\nexports.warn = warn;\r\n/* General Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar hasOwnPropMethod = {}.hasOwnProperty;\r\n// Merges an array of objects into a single object.\r\n// The second argument allows for an array of property names who's object values will be merged together.\r\nfunction mergeProps(propObjs, complexProps) {\r\n var dest = {};\r\n var i;\r\n var name;\r\n var complexObjs;\r\n var j;\r\n var val;\r\n var props;\r\n if (complexProps) {\r\n for (i = 0; i < complexProps.length; i++) {\r\n name = complexProps[i];\r\n complexObjs = [];\r\n // collect the trailing object values, stopping when a non-object is discovered\r\n for (j = propObjs.length - 1; j >= 0; j--) {\r\n val = propObjs[j][name];\r\n if (typeof val === 'object') {\r\n complexObjs.unshift(val);\r\n }\r\n else if (val !== undefined) {\r\n dest[name] = val; // if there were no objects, this value will be used\r\n break;\r\n }\r\n }\r\n // if the trailing values were objects, use the merged value\r\n if (complexObjs.length) {\r\n dest[name] = mergeProps(complexObjs);\r\n }\r\n }\r\n }\r\n // copy values into the destination, going from last to first\r\n for (i = propObjs.length - 1; i >= 0; i--) {\r\n props = propObjs[i];\r\n for (name in props) {\r\n if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\r\n dest[name] = props[name];\r\n }\r\n }\r\n }\r\n return dest;\r\n}\r\nexports.mergeProps = mergeProps;\r\nfunction copyOwnProps(src, dest) {\r\n for (var name_1 in src) {\r\n if (hasOwnProp(src, name_1)) {\r\n dest[name_1] = src[name_1];\r\n }\r\n }\r\n}\r\nexports.copyOwnProps = copyOwnProps;\r\nfunction hasOwnProp(obj, name) {\r\n return hasOwnPropMethod.call(obj, name);\r\n}\r\nexports.hasOwnProp = hasOwnProp;\r\nfunction applyAll(functions, thisObj, args) {\r\n if ($.isFunction(functions)) {\r\n functions = [functions];\r\n }\r\n if (functions) {\r\n var i = void 0;\r\n var ret = void 0;\r\n for (i = 0; i < functions.length; i++) {\r\n ret = functions[i].apply(thisObj, args) || ret;\r\n }\r\n return ret;\r\n }\r\n}\r\nexports.applyAll = applyAll;\r\nfunction removeMatching(array, testFunc) {\r\n var removeCnt = 0;\r\n var i = 0;\r\n while (i < array.length) {\r\n if (testFunc(array[i])) { // truthy value means *remove*\r\n array.splice(i, 1);\r\n removeCnt++;\r\n }\r\n else {\r\n i++;\r\n }\r\n }\r\n return removeCnt;\r\n}\r\nexports.removeMatching = removeMatching;\r\nfunction removeExact(array, exactVal) {\r\n var removeCnt = 0;\r\n var i = 0;\r\n while (i < array.length) {\r\n if (array[i] === exactVal) {\r\n array.splice(i, 1);\r\n removeCnt++;\r\n }\r\n else {\r\n i++;\r\n }\r\n }\r\n return removeCnt;\r\n}\r\nexports.removeExact = removeExact;\r\nfunction isArraysEqual(a0, a1) {\r\n var len = a0.length;\r\n var i;\r\n if (len == null || len !== a1.length) { // not array? or not same length?\r\n return false;\r\n }\r\n for (i = 0; i < len; i++) {\r\n if (a0[i] !== a1[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexports.isArraysEqual = isArraysEqual;\r\nfunction firstDefined() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n for (var i = 0; i < args.length; i++) {\r\n if (args[i] !== undefined) {\r\n return args[i];\r\n }\r\n }\r\n}\r\nexports.firstDefined = firstDefined;\r\nfunction htmlEscape(s) {\r\n return (s + '').replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''')\r\n .replace(/\"/g, '"')\r\n .replace(/\\n/g, '
');\r\n}\r\nexports.htmlEscape = htmlEscape;\r\nfunction stripHtmlEntities(text) {\r\n return text.replace(/&.*?;/g, '');\r\n}\r\nexports.stripHtmlEntities = stripHtmlEntities;\r\n// Given a hash of CSS properties, returns a string of CSS.\r\n// Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values.\r\nfunction cssToStr(cssProps) {\r\n var statements = [];\r\n $.each(cssProps, function (name, val) {\r\n if (val != null) {\r\n statements.push(name + ':' + val);\r\n }\r\n });\r\n return statements.join(';');\r\n}\r\nexports.cssToStr = cssToStr;\r\n// Given an object hash of HTML attribute names to values,\r\n// generates a string that can be injected between < > in HTML\r\nfunction attrsToStr(attrs) {\r\n var parts = [];\r\n $.each(attrs, function (name, val) {\r\n if (val != null) {\r\n parts.push(name + '=\"' + htmlEscape(val) + '\"');\r\n }\r\n });\r\n return parts.join(' ');\r\n}\r\nexports.attrsToStr = attrsToStr;\r\nfunction capitaliseFirstLetter(str) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\nexports.capitaliseFirstLetter = capitaliseFirstLetter;\r\nfunction compareNumbers(a, b) {\r\n return a - b;\r\n}\r\nexports.compareNumbers = compareNumbers;\r\nfunction isInt(n) {\r\n return n % 1 === 0;\r\n}\r\nexports.isInt = isInt;\r\n// Returns a method bound to the given object context.\r\n// Just like one of the jQuery.proxy signatures, but without the undesired behavior of treating the same method with\r\n// different contexts as identical when binding/unbinding events.\r\nfunction proxy(obj, methodName) {\r\n var method = obj[methodName];\r\n return function () {\r\n return method.apply(obj, arguments);\r\n };\r\n}\r\nexports.proxy = proxy;\r\n// Returns a function, that, as long as it continues to be invoked, will not\r\n// be triggered. The function will be called after it stops being called for\r\n// N milliseconds. If `immediate` is passed, trigger the function on the\r\n// leading edge, instead of the trailing.\r\n// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714\r\nfunction debounce(func, wait, immediate) {\r\n if (immediate === void 0) { immediate = false; }\r\n var timeout;\r\n var args;\r\n var context;\r\n var timestamp;\r\n var result;\r\n var later = function () {\r\n var last = +new Date() - timestamp;\r\n if (last < wait) {\r\n timeout = setTimeout(later, wait - last);\r\n }\r\n else {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n context = args = null;\r\n }\r\n }\r\n };\r\n return function () {\r\n context = this;\r\n args = arguments;\r\n timestamp = +new Date();\r\n var callNow = immediate && !timeout;\r\n if (!timeout) {\r\n timeout = setTimeout(later, wait);\r\n }\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n context = args = null;\r\n }\r\n return result;\r\n };\r\n}\r\nexports.debounce = debounce;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar moment_ext_1 = __webpack_require__(11);\r\nvar UnzonedRange = /** @class */ (function () {\r\n function UnzonedRange(startInput, endInput) {\r\n // TODO: move these into footprint.\r\n // Especially, doesn't make sense for null startMs/endMs.\r\n this.isStart = true;\r\n this.isEnd = true;\r\n if (moment.isMoment(startInput)) {\r\n startInput = startInput.clone().stripZone();\r\n }\r\n if (moment.isMoment(endInput)) {\r\n endInput = endInput.clone().stripZone();\r\n }\r\n if (startInput) {\r\n this.startMs = startInput.valueOf();\r\n }\r\n if (endInput) {\r\n this.endMs = endInput.valueOf();\r\n }\r\n }\r\n /*\r\n SIDEEFFECT: will mutate eventRanges.\r\n Will return a new array result.\r\n Only works for non-open-ended ranges.\r\n */\r\n UnzonedRange.invertRanges = function (ranges, constraintRange) {\r\n var invertedRanges = [];\r\n var startMs = constraintRange.startMs; // the end of the previous range. the start of the new range\r\n var i;\r\n var dateRange;\r\n // ranges need to be in order. required for our date-walking algorithm\r\n ranges.sort(compareUnzonedRanges);\r\n for (i = 0; i < ranges.length; i++) {\r\n dateRange = ranges[i];\r\n // add the span of time before the event (if there is any)\r\n if (dateRange.startMs > startMs) { // compare millisecond time (skip any ambig logic)\r\n invertedRanges.push(new UnzonedRange(startMs, dateRange.startMs));\r\n }\r\n if (dateRange.endMs > startMs) {\r\n startMs = dateRange.endMs;\r\n }\r\n }\r\n // add the span of time after the last event (if there is any)\r\n if (startMs < constraintRange.endMs) { // compare millisecond time (skip any ambig logic)\r\n invertedRanges.push(new UnzonedRange(startMs, constraintRange.endMs));\r\n }\r\n return invertedRanges;\r\n };\r\n UnzonedRange.prototype.intersect = function (otherRange) {\r\n var startMs = this.startMs;\r\n var endMs = this.endMs;\r\n var newRange = null;\r\n if (otherRange.startMs != null) {\r\n if (startMs == null) {\r\n startMs = otherRange.startMs;\r\n }\r\n else {\r\n startMs = Math.max(startMs, otherRange.startMs);\r\n }\r\n }\r\n if (otherRange.endMs != null) {\r\n if (endMs == null) {\r\n endMs = otherRange.endMs;\r\n }\r\n else {\r\n endMs = Math.min(endMs, otherRange.endMs);\r\n }\r\n }\r\n if (startMs == null || endMs == null || startMs < endMs) {\r\n newRange = new UnzonedRange(startMs, endMs);\r\n newRange.isStart = this.isStart && startMs === this.startMs;\r\n newRange.isEnd = this.isEnd && endMs === this.endMs;\r\n }\r\n return newRange;\r\n };\r\n UnzonedRange.prototype.intersectsWith = function (otherRange) {\r\n return (this.endMs == null || otherRange.startMs == null || this.endMs > otherRange.startMs) &&\r\n (this.startMs == null || otherRange.endMs == null || this.startMs < otherRange.endMs);\r\n };\r\n UnzonedRange.prototype.containsRange = function (innerRange) {\r\n return (this.startMs == null || (innerRange.startMs != null && innerRange.startMs >= this.startMs)) &&\r\n (this.endMs == null || (innerRange.endMs != null && innerRange.endMs <= this.endMs));\r\n };\r\n // `date` can be a moment, a Date, or a millisecond time.\r\n UnzonedRange.prototype.containsDate = function (date) {\r\n var ms = date.valueOf();\r\n return (this.startMs == null || ms >= this.startMs) &&\r\n (this.endMs == null || ms < this.endMs);\r\n };\r\n // If the given date is not within the given range, move it inside.\r\n // (If it's past the end, make it one millisecond before the end).\r\n // `date` can be a moment, a Date, or a millisecond time.\r\n // Returns a MS-time.\r\n UnzonedRange.prototype.constrainDate = function (date) {\r\n var ms = date.valueOf();\r\n if (this.startMs != null && ms < this.startMs) {\r\n ms = this.startMs;\r\n }\r\n if (this.endMs != null && ms >= this.endMs) {\r\n ms = this.endMs - 1;\r\n }\r\n return ms;\r\n };\r\n UnzonedRange.prototype.equals = function (otherRange) {\r\n return this.startMs === otherRange.startMs && this.endMs === otherRange.endMs;\r\n };\r\n UnzonedRange.prototype.clone = function () {\r\n var range = new UnzonedRange(this.startMs, this.endMs);\r\n range.isStart = this.isStart;\r\n range.isEnd = this.isEnd;\r\n return range;\r\n };\r\n // Returns an ambig-zoned moment from startMs.\r\n // BEWARE: returned moment is not localized.\r\n // Formatting and start-of-week will be default.\r\n UnzonedRange.prototype.getStart = function () {\r\n if (this.startMs != null) {\r\n return moment_ext_1.default.utc(this.startMs).stripZone();\r\n }\r\n return null;\r\n };\r\n // Returns an ambig-zoned moment from startMs.\r\n // BEWARE: returned moment is not localized.\r\n // Formatting and start-of-week will be default.\r\n UnzonedRange.prototype.getEnd = function () {\r\n if (this.endMs != null) {\r\n return moment_ext_1.default.utc(this.endMs).stripZone();\r\n }\r\n return null;\r\n };\r\n UnzonedRange.prototype.as = function (unit) {\r\n return moment.utc(this.endMs).diff(moment.utc(this.startMs), unit, true);\r\n };\r\n return UnzonedRange;\r\n}());\r\nexports.default = UnzonedRange;\r\n/*\r\nOnly works for non-open-ended ranges.\r\n*/\r\nfunction compareUnzonedRanges(range1, range2) {\r\n return range1.startMs - range2.startMs; // earlier ranges go first\r\n}\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar ParsableModelMixin_1 = __webpack_require__(52);\r\nvar Class_1 = __webpack_require__(35);\r\nvar EventDefParser_1 = __webpack_require__(36);\r\nvar EventSource = /** @class */ (function (_super) {\r\n tslib_1.__extends(EventSource, _super);\r\n // can we do away with calendar? at least for the abstract?\r\n // useful for buildEventDef\r\n function EventSource(calendar) {\r\n var _this = _super.call(this) || this;\r\n _this.calendar = calendar;\r\n _this.className = [];\r\n _this.uid = String(EventSource.uuid++);\r\n return _this;\r\n }\r\n /*\r\n rawInput can be any data type!\r\n */\r\n EventSource.parse = function (rawInput, calendar) {\r\n var source = new this(calendar);\r\n if (typeof rawInput === 'object') {\r\n if (source.applyProps(rawInput)) {\r\n return source;\r\n }\r\n }\r\n return false;\r\n };\r\n EventSource.normalizeId = function (id) {\r\n if (id) {\r\n return String(id);\r\n }\r\n return null;\r\n };\r\n EventSource.prototype.fetch = function (start, end, timezone) {\r\n // subclasses must implement. must return a promise.\r\n };\r\n EventSource.prototype.removeEventDefsById = function (eventDefId) {\r\n // optional for subclasses to implement\r\n };\r\n EventSource.prototype.removeAllEventDefs = function () {\r\n // optional for subclasses to implement\r\n };\r\n /*\r\n For compairing/matching\r\n */\r\n EventSource.prototype.getPrimitive = function (otherSource) {\r\n // subclasses must implement\r\n };\r\n EventSource.prototype.parseEventDefs = function (rawEventDefs) {\r\n var i;\r\n var eventDef;\r\n var eventDefs = [];\r\n for (i = 0; i < rawEventDefs.length; i++) {\r\n eventDef = this.parseEventDef(rawEventDefs[i]);\r\n if (eventDef) {\r\n eventDefs.push(eventDef);\r\n }\r\n }\r\n return eventDefs;\r\n };\r\n EventSource.prototype.parseEventDef = function (rawInput) {\r\n var calendarTransform = this.calendar.opt('eventDataTransform');\r\n var sourceTransform = this.eventDataTransform;\r\n if (calendarTransform) {\r\n rawInput = calendarTransform(rawInput, this.calendar);\r\n }\r\n if (sourceTransform) {\r\n rawInput = sourceTransform(rawInput, this.calendar);\r\n }\r\n return EventDefParser_1.default.parse(rawInput, this);\r\n };\r\n EventSource.prototype.applyManualStandardProps = function (rawProps) {\r\n if (rawProps.id != null) {\r\n this.id = EventSource.normalizeId(rawProps.id);\r\n }\r\n // TODO: converge with EventDef\r\n if ($.isArray(rawProps.className)) {\r\n this.className = rawProps.className;\r\n }\r\n else if (typeof rawProps.className === 'string') {\r\n this.className = rawProps.className.split(/\\s+/);\r\n }\r\n return true;\r\n };\r\n EventSource.uuid = 0;\r\n EventSource.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps;\r\n EventSource.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps;\r\n return EventSource;\r\n}(Class_1.default));\r\nexports.default = EventSource;\r\nParsableModelMixin_1.default.mixInto(EventSource);\r\n// Parsing\r\n// ---------------------------------------------------------------------------------------------------------------------\r\nEventSource.defineStandardProps({\r\n // manually process...\r\n id: false,\r\n className: false,\r\n // automatically transfer...\r\n color: true,\r\n backgroundColor: true,\r\n borderColor: true,\r\n textColor: true,\r\n editable: true,\r\n startEditable: true,\r\n durationEditable: true,\r\n rendering: true,\r\n overlap: true,\r\n constraint: true,\r\n allDayDefault: true,\r\n eventDataTransform: true\r\n});\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\r\nUtility methods for easily listening to events on another object,\r\nand more importantly, easily unlistening from them.\r\n\nUSAGE:\r\n import { default as ListenerMixin, ListenerInterface } from './ListenerMixin'\r\nin class:\r\n listenTo: ListenerInterface['listenTo']\r\n stopListeningTo: ListenerInterface['stopListeningTo']\r\nafter class:\r\n ListenerMixin.mixInto(TheClass)\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar Mixin_1 = __webpack_require__(15);\r\nvar guid = 0;\r\nvar ListenerMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(ListenerMixin, _super);\r\n function ListenerMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /*\r\n Given an `other` object that has on/off methods, bind the given `callback` to an event by the given name.\r\n The `callback` will be called with the `this` context of the object that .listenTo is being called on.\r\n Can be called:\r\n .listenTo(other, eventName, callback)\r\n OR\r\n .listenTo(other, {\r\n eventName1: callback1,\r\n eventName2: callback2\r\n })\r\n */\r\n ListenerMixin.prototype.listenTo = function (other, arg, callback) {\r\n if (typeof arg === 'object') { // given dictionary of callbacks\r\n for (var eventName in arg) {\r\n if (arg.hasOwnProperty(eventName)) {\r\n this.listenTo(other, eventName, arg[eventName]);\r\n }\r\n }\r\n }\r\n else if (typeof arg === 'string') {\r\n other.on(arg + '.' + this.getListenerNamespace(), // use event namespacing to identify this object\r\n $.proxy(callback, this) // always use `this` context\r\n // the usually-undesired jQuery guid behavior doesn't matter,\r\n // because we always unbind via namespace\r\n );\r\n }\r\n };\r\n /*\r\n Causes the current object to stop listening to events on the `other` object.\r\n `eventName` is optional. If omitted, will stop listening to ALL events on `other`.\r\n */\r\n ListenerMixin.prototype.stopListeningTo = function (other, eventName) {\r\n other.off((eventName || '') + '.' + this.getListenerNamespace());\r\n };\r\n /*\r\n Returns a string, unique to this object, to be used for event namespacing\r\n */\r\n ListenerMixin.prototype.getListenerNamespace = function () {\r\n if (this.listenerId == null) {\r\n this.listenerId = guid++;\r\n }\r\n return '_listener' + this.listenerId;\r\n };\r\n return ListenerMixin;\r\n}(Mixin_1.default));\r\nexports.default = ListenerMixin;\r\n\n\n/***/ }),\n/* 8 */,\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar EventDef_1 = __webpack_require__(37);\r\nvar EventInstance_1 = __webpack_require__(53);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar SingleEventDef = /** @class */ (function (_super) {\r\n tslib_1.__extends(SingleEventDef, _super);\r\n function SingleEventDef() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /*\r\n Will receive start/end params, but will be ignored.\r\n */\r\n SingleEventDef.prototype.buildInstances = function () {\r\n return [this.buildInstance()];\r\n };\r\n SingleEventDef.prototype.buildInstance = function () {\r\n return new EventInstance_1.default(this, // definition\r\n this.dateProfile);\r\n };\r\n SingleEventDef.prototype.isAllDay = function () {\r\n return this.dateProfile.isAllDay();\r\n };\r\n SingleEventDef.prototype.clone = function () {\r\n var def = _super.prototype.clone.call(this);\r\n def.dateProfile = this.dateProfile;\r\n return def;\r\n };\r\n SingleEventDef.prototype.rezone = function () {\r\n var calendar = this.source.calendar;\r\n var dateProfile = this.dateProfile;\r\n this.dateProfile = new EventDateProfile_1.default(calendar.moment(dateProfile.start), dateProfile.end ? calendar.moment(dateProfile.end) : null, calendar);\r\n };\r\n /*\r\n NOTE: if super-method fails, should still attempt to apply\r\n */\r\n SingleEventDef.prototype.applyManualStandardProps = function (rawProps) {\r\n var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps);\r\n var dateProfile = EventDateProfile_1.default.parse(rawProps, this.source); // returns null on failure\r\n if (dateProfile) {\r\n this.dateProfile = dateProfile;\r\n // make sure `date` shows up in the legacy event objects as-is\r\n if (rawProps.date != null) {\r\n this.miscProps.date = rawProps.date;\r\n }\r\n return superSuccess;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n return SingleEventDef;\r\n}(EventDef_1.default));\r\nexports.default = SingleEventDef;\r\n// Parsing\r\n// ---------------------------------------------------------------------------------------------------------------------\r\nSingleEventDef.defineStandardProps({\r\n start: false,\r\n date: false,\r\n end: false,\r\n allDay: false\r\n});\r\n\n\n/***/ }),\n/* 10 */,\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar ambigDateOfMonthRegex = /^\\s*\\d{4}-\\d\\d$/;\r\nvar ambigTimeOrZoneRegex = /^\\s*\\d{4}-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?)?$/;\r\nvar newMomentProto = moment.fn; // where we will attach our new methods\r\nexports.newMomentProto = newMomentProto;\r\nvar oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods\r\nexports.oldMomentProto = oldMomentProto;\r\n// tell momentjs to transfer these properties upon clone\r\nvar momentProperties = moment.momentProperties;\r\nmomentProperties.push('_fullCalendar');\r\nmomentProperties.push('_ambigTime');\r\nmomentProperties.push('_ambigZone');\r\n/*\r\nCall this if you want Moment's original format method to be used\r\n*/\r\nfunction oldMomentFormat(mom, formatStr) {\r\n return oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js\r\n}\r\nexports.oldMomentFormat = oldMomentFormat;\r\n// Creating\r\n// -------------------------------------------------------------------------------------------------\r\n// Creates a new moment, similar to the vanilla moment(...) constructor, but with\r\n// extra features (ambiguous time, enhanced formatting). When given an existing moment,\r\n// it will function as a clone (and retain the zone of the moment). Anything else will\r\n// result in a moment in the local zone.\r\nvar momentExt = function () {\r\n return makeMoment(arguments);\r\n};\r\nexports.default = momentExt;\r\n// Sames as momentExt, but forces the resulting moment to be in the UTC timezone.\r\nmomentExt.utc = function () {\r\n var mom = makeMoment(arguments, true);\r\n // Force it into UTC because makeMoment doesn't guarantee it\r\n // (if given a pre-existing moment for example)\r\n if (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone\r\n mom.utc();\r\n }\r\n return mom;\r\n};\r\n// Same as momentExt, but when given an ISO8601 string, the timezone offset is preserved.\r\n// ISO8601 strings with no timezone offset will become ambiguously zoned.\r\nmomentExt.parseZone = function () {\r\n return makeMoment(arguments, true, true);\r\n};\r\n// Builds an enhanced moment from args. When given an existing moment, it clones. When given a\r\n// native Date, or called with no arguments (the current time), the resulting moment will be local.\r\n// Anything else needs to be \"parsed\" (a string or an array), and will be affected by:\r\n// parseAsUTC - if there is no zone information, should we parse the input in UTC?\r\n// parseZone - if there is zone information, should we force the zone of the moment?\r\nfunction makeMoment(args, parseAsUTC, parseZone) {\r\n if (parseAsUTC === void 0) { parseAsUTC = false; }\r\n if (parseZone === void 0) { parseZone = false; }\r\n var input = args[0];\r\n var isSingleString = args.length === 1 && typeof input === 'string';\r\n var isAmbigTime;\r\n var isAmbigZone;\r\n var ambigMatch;\r\n var mom;\r\n if (moment.isMoment(input) || util_1.isNativeDate(input) || input === undefined) {\r\n mom = moment.apply(null, args);\r\n }\r\n else { // \"parsing\" is required\r\n isAmbigTime = false;\r\n isAmbigZone = false;\r\n if (isSingleString) {\r\n if (ambigDateOfMonthRegex.test(input)) {\r\n // accept strings like '2014-05', but convert to the first of the month\r\n input += '-01';\r\n args = [input]; // for when we pass it on to moment's constructor\r\n isAmbigTime = true;\r\n isAmbigZone = true;\r\n }\r\n else if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) {\r\n isAmbigTime = !ambigMatch[5]; // no time part?\r\n isAmbigZone = true;\r\n }\r\n }\r\n else if ($.isArray(input)) {\r\n // arrays have no timezone information, so assume ambiguous zone\r\n isAmbigZone = true;\r\n }\r\n // otherwise, probably a string with a format\r\n if (parseAsUTC || isAmbigTime) {\r\n mom = moment.utc.apply(moment, args);\r\n }\r\n else {\r\n mom = moment.apply(null, args);\r\n }\r\n if (isAmbigTime) {\r\n mom._ambigTime = true;\r\n mom._ambigZone = true; // ambiguous time always means ambiguous zone\r\n }\r\n else if (parseZone) { // let's record the inputted zone somehow\r\n if (isAmbigZone) {\r\n mom._ambigZone = true;\r\n }\r\n else if (isSingleString) {\r\n mom.utcOffset(input); // if not a valid zone, will assign UTC\r\n }\r\n }\r\n }\r\n mom._fullCalendar = true; // flag for extended functionality\r\n return mom;\r\n}\r\n// Week Number\r\n// -------------------------------------------------------------------------------------------------\r\n// Returns the week number, considering the locale's custom week number calcuation\r\n// `weeks` is an alias for `week`\r\nnewMomentProto.week = newMomentProto.weeks = function (input) {\r\n var weekCalc = this._locale._fullCalendar_weekCalc;\r\n if (input == null && typeof weekCalc === 'function') { // custom function only works for getter\r\n return weekCalc(this);\r\n }\r\n else if (weekCalc === 'ISO') {\r\n return oldMomentProto.isoWeek.apply(this, arguments); // ISO getter/setter\r\n }\r\n return oldMomentProto.week.apply(this, arguments); // local getter/setter\r\n};\r\n// Time-of-day\r\n// -------------------------------------------------------------------------------------------------\r\n// GETTER\r\n// Returns a Duration with the hours/minutes/seconds/ms values of the moment.\r\n// If the moment has an ambiguous time, a duration of 00:00 will be returned.\r\n//\r\n// SETTER\r\n// You can supply a Duration, a Moment, or a Duration-like argument.\r\n// When setting the time, and the moment has an ambiguous time, it then becomes unambiguous.\r\nnewMomentProto.time = function (time) {\r\n // Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar.\r\n // `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins.\r\n if (!this._fullCalendar) {\r\n return oldMomentProto.time.apply(this, arguments);\r\n }\r\n if (time == null) { // getter\r\n return moment.duration({\r\n hours: this.hours(),\r\n minutes: this.minutes(),\r\n seconds: this.seconds(),\r\n milliseconds: this.milliseconds()\r\n });\r\n }\r\n else { // setter\r\n this._ambigTime = false; // mark that the moment now has a time\r\n if (!moment.isDuration(time) && !moment.isMoment(time)) {\r\n time = moment.duration(time);\r\n }\r\n // The day value should cause overflow (so 24 hours becomes 00:00:00 of next day).\r\n // Only for Duration times, not Moment times.\r\n var dayHours = 0;\r\n if (moment.isDuration(time)) {\r\n dayHours = Math.floor(time.asDays()) * 24;\r\n }\r\n // We need to set the individual fields.\r\n // Can't use startOf('day') then add duration. In case of DST at start of day.\r\n return this.hours(dayHours + time.hours())\r\n .minutes(time.minutes())\r\n .seconds(time.seconds())\r\n .milliseconds(time.milliseconds());\r\n }\r\n};\r\n// Converts the moment to UTC, stripping out its time-of-day and timezone offset,\r\n// but preserving its YMD. A moment with a stripped time will display no time\r\n// nor timezone offset when .format() is called.\r\nnewMomentProto.stripTime = function () {\r\n if (!this._ambigTime) {\r\n this.utc(true); // keepLocalTime=true (for keeping *date* value)\r\n // set time to zero\r\n this.set({\r\n hours: 0,\r\n minutes: 0,\r\n seconds: 0,\r\n ms: 0\r\n });\r\n // Mark the time as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\r\n // which clears all ambig flags.\r\n this._ambigTime = true;\r\n this._ambigZone = true; // if ambiguous time, also ambiguous timezone offset\r\n }\r\n return this; // for chaining\r\n};\r\n// Returns if the moment has a non-ambiguous time (boolean)\r\nnewMomentProto.hasTime = function () {\r\n return !this._ambigTime;\r\n};\r\n// Timezone\r\n// -------------------------------------------------------------------------------------------------\r\n// Converts the moment to UTC, stripping out its timezone offset, but preserving its\r\n// YMD and time-of-day. A moment with a stripped timezone offset will display no\r\n// timezone offset when .format() is called.\r\nnewMomentProto.stripZone = function () {\r\n var wasAmbigTime;\r\n if (!this._ambigZone) {\r\n wasAmbigTime = this._ambigTime;\r\n this.utc(true); // keepLocalTime=true (for keeping date and time values)\r\n // the above call to .utc()/.utcOffset() unfortunately might clear the ambig flags, so restore\r\n this._ambigTime = wasAmbigTime || false;\r\n // Mark the zone as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\r\n // which clears the ambig flags.\r\n this._ambigZone = true;\r\n }\r\n return this; // for chaining\r\n};\r\n// Returns of the moment has a non-ambiguous timezone offset (boolean)\r\nnewMomentProto.hasZone = function () {\r\n return !this._ambigZone;\r\n};\r\n// implicitly marks a zone\r\nnewMomentProto.local = function (keepLocalTime) {\r\n // for when converting from ambiguously-zoned to local,\r\n // keep the time values when converting from UTC -> local\r\n oldMomentProto.local.call(this, this._ambigZone || keepLocalTime);\r\n // ensure non-ambiguous\r\n // this probably already happened via local() -> utcOffset(), but don't rely on Moment's internals\r\n this._ambigTime = false;\r\n this._ambigZone = false;\r\n return this; // for chaining\r\n};\r\n// implicitly marks a zone\r\nnewMomentProto.utc = function (keepLocalTime) {\r\n oldMomentProto.utc.call(this, keepLocalTime);\r\n // ensure non-ambiguous\r\n // this probably already happened via utc() -> utcOffset(), but don't rely on Moment's internals\r\n this._ambigTime = false;\r\n this._ambigZone = false;\r\n return this;\r\n};\r\n// implicitly marks a zone (will probably get called upon .utc() and .local())\r\nnewMomentProto.utcOffset = function (tzo) {\r\n if (tzo != null) { // setter\r\n // these assignments needs to happen before the original zone method is called.\r\n // I forget why, something to do with a browser crash.\r\n this._ambigTime = false;\r\n this._ambigZone = false;\r\n }\r\n return oldMomentProto.utcOffset.apply(this, arguments);\r\n};\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\nMeant to be immutable\r\n*/\r\nvar ComponentFootprint = /** @class */ (function () {\r\n function ComponentFootprint(unzonedRange, isAllDay) {\r\n this.isAllDay = false; // component can choose to ignore this\r\n this.unzonedRange = unzonedRange;\r\n this.isAllDay = isAllDay;\r\n }\r\n /*\r\n Only works for non-open-ended ranges.\r\n */\r\n ComponentFootprint.prototype.toLegacy = function (calendar) {\r\n return {\r\n start: calendar.msToMoment(this.unzonedRange.startMs, this.isAllDay),\r\n end: calendar.msToMoment(this.unzonedRange.endMs, this.isAllDay)\r\n };\r\n };\r\n return ComponentFootprint;\r\n}());\r\nexports.default = ComponentFootprint;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\r\nUSAGE:\r\n import { default as EmitterMixin, EmitterInterface } from './EmitterMixin'\r\nin class:\r\n on: EmitterInterface['on']\r\n one: EmitterInterface['one']\r\n off: EmitterInterface['off']\r\n trigger: EmitterInterface['trigger']\r\n triggerWith: EmitterInterface['triggerWith']\r\n hasHandlers: EmitterInterface['hasHandlers']\r\nafter class:\r\n EmitterMixin.mixInto(TheClass)\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar Mixin_1 = __webpack_require__(15);\r\nvar EmitterMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(EmitterMixin, _super);\r\n function EmitterMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // jQuery-ification via $(this) allows a non-DOM object to have\r\n // the same event handling capabilities (including namespaces).\r\n EmitterMixin.prototype.on = function (types, handler) {\r\n $(this).on(types, this._prepareIntercept(handler));\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype.one = function (types, handler) {\r\n $(this).one(types, this._prepareIntercept(handler));\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype._prepareIntercept = function (handler) {\r\n // handlers are always called with an \"event\" object as their first param.\r\n // sneak the `this` context and arguments into the extra parameter object\r\n // and forward them on to the original handler.\r\n var intercept = function (ev, extra) {\r\n return handler.apply(extra.context || this, extra.args || []);\r\n };\r\n // mimick jQuery's internal \"proxy\" system (risky, I know)\r\n // causing all functions with the same .guid to appear to be the same.\r\n // https://github.com/jquery/jquery/blob/2.2.4/src/core.js#L448\r\n // this is needed for calling .off with the original non-intercept handler.\r\n if (!handler.guid) {\r\n handler.guid = $.guid++;\r\n }\r\n intercept.guid = handler.guid;\r\n return intercept;\r\n };\r\n EmitterMixin.prototype.off = function (types, handler) {\r\n $(this).off(types, handler);\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype.trigger = function (types) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n // pass in \"extra\" info to the intercept\r\n $(this).triggerHandler(types, { args: args });\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype.triggerWith = function (types, context, args) {\r\n // `triggerHandler` is less reliant on the DOM compared to `trigger`.\r\n // pass in \"extra\" info to the intercept.\r\n $(this).triggerHandler(types, { context: context, args: args });\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype.hasHandlers = function (type) {\r\n var hash = $._data(this, 'events'); // http://blog.jquery.com/2012/08/09/jquery-1-8-released/\r\n return hash && hash[type] && hash[type].length > 0;\r\n };\r\n return EmitterMixin;\r\n}(Mixin_1.default));\r\nexports.default = EmitterMixin;\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Interaction = /** @class */ (function () {\r\n function Interaction(component) {\r\n this.view = component._getView();\r\n this.component = component;\r\n }\r\n Interaction.prototype.opt = function (name) {\r\n return this.view.opt(name);\r\n };\r\n Interaction.prototype.end = function () {\r\n // subclasses can implement\r\n };\r\n return Interaction;\r\n}());\r\nexports.default = Interaction;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Mixin = /** @class */ (function () {\r\n function Mixin() {\r\n }\r\n Mixin.mixInto = function (destClass) {\r\n var _this = this;\r\n Object.getOwnPropertyNames(this.prototype).forEach(function (name) {\r\n if (!destClass.prototype[name]) { // if destination class doesn't already define it\r\n destClass.prototype[name] = _this.prototype[name];\r\n }\r\n });\r\n };\r\n /*\r\n will override existing methods\r\n TODO: remove! not used anymore\r\n */\r\n Mixin.mixOver = function (destClass) {\r\n var _this = this;\r\n Object.getOwnPropertyNames(this.prototype).forEach(function (name) {\r\n destClass.prototype[name] = _this.prototype[name];\r\n });\r\n };\r\n return Mixin;\r\n}());\r\nexports.default = Mixin;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\n/*\r\nMeant to be immutable\r\n*/\r\nvar EventDateProfile = /** @class */ (function () {\r\n function EventDateProfile(start, end, calendar) {\r\n this.start = start;\r\n this.end = end || null;\r\n this.unzonedRange = this.buildUnzonedRange(calendar);\r\n }\r\n /*\r\n Needs an EventSource object\r\n */\r\n EventDateProfile.parse = function (rawProps, source) {\r\n var startInput = rawProps.start || rawProps.date;\r\n var endInput = rawProps.end;\r\n if (!startInput) {\r\n return false;\r\n }\r\n var calendar = source.calendar;\r\n var start = calendar.moment(startInput);\r\n var end = endInput ? calendar.moment(endInput) : null;\r\n var forcedAllDay = rawProps.allDay;\r\n var forceEventDuration = calendar.opt('forceEventDuration');\r\n if (!start.isValid()) {\r\n return false;\r\n }\r\n if (forcedAllDay == null) {\r\n forcedAllDay = source.allDayDefault;\r\n if (forcedAllDay == null) {\r\n forcedAllDay = calendar.opt('allDayDefault');\r\n }\r\n }\r\n if (forcedAllDay === true) {\r\n start.stripTime();\r\n if (end) {\r\n end.stripTime();\r\n }\r\n }\r\n else if (forcedAllDay === false) {\r\n if (!start.hasTime()) {\r\n start.time(0);\r\n }\r\n if (end && !end.hasTime()) {\r\n end.time(0);\r\n }\r\n }\r\n if (end && (!end.isValid() || !end.isAfter(start))) {\r\n end = null;\r\n }\r\n if (!end && forceEventDuration) {\r\n end = calendar.getDefaultEventEnd(!start.hasTime(), start);\r\n }\r\n return new EventDateProfile(start, end, calendar);\r\n };\r\n EventDateProfile.isStandardProp = function (propName) {\r\n return propName === 'start' || propName === 'date' || propName === 'end' || propName === 'allDay';\r\n };\r\n EventDateProfile.prototype.isAllDay = function () {\r\n return !(this.start.hasTime() || (this.end && this.end.hasTime()));\r\n };\r\n /*\r\n Needs a Calendar object\r\n */\r\n EventDateProfile.prototype.buildUnzonedRange = function (calendar) {\r\n var startMs = this.start.clone().stripZone().valueOf();\r\n var endMs = this.getEnd(calendar).stripZone().valueOf();\r\n return new UnzonedRange_1.default(startMs, endMs);\r\n };\r\n /*\r\n Needs a Calendar object\r\n */\r\n EventDateProfile.prototype.getEnd = function (calendar) {\r\n return this.end ?\r\n this.end.clone() :\r\n // derive the end from the start and allDay. compute allDay if necessary\r\n calendar.getDefaultEventEnd(this.isAllDay(), this.start);\r\n };\r\n return EventDateProfile;\r\n}());\r\nexports.default = EventDateProfile;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar DragListener_1 = __webpack_require__(59);\r\n/* Tracks mouse movements over a component and raises events about which hit the mouse is over.\r\n------------------------------------------------------------------------------------------------------------------------\r\noptions:\r\n- subjectEl\r\n- subjectCenter\r\n*/\r\nvar HitDragListener = /** @class */ (function (_super) {\r\n tslib_1.__extends(HitDragListener, _super);\r\n function HitDragListener(component, options) {\r\n var _this = _super.call(this, options) || this;\r\n _this.component = component;\r\n return _this;\r\n }\r\n // Called when drag listening starts (but a real drag has not necessarily began).\r\n // ev might be undefined if dragging was started manually.\r\n HitDragListener.prototype.handleInteractionStart = function (ev) {\r\n var subjectEl = this.subjectEl;\r\n var subjectRect;\r\n var origPoint;\r\n var point;\r\n this.component.hitsNeeded();\r\n this.computeScrollBounds(); // for autoscroll\r\n if (ev) {\r\n origPoint = { left: util_1.getEvX(ev), top: util_1.getEvY(ev) };\r\n point = origPoint;\r\n // constrain the point to bounds of the element being dragged\r\n if (subjectEl) {\r\n subjectRect = util_1.getOuterRect(subjectEl); // used for centering as well\r\n point = util_1.constrainPoint(point, subjectRect);\r\n }\r\n this.origHit = this.queryHit(point.left, point.top);\r\n // treat the center of the subject as the collision point?\r\n if (subjectEl && this.options.subjectCenter) {\r\n // only consider the area the subject overlaps the hit. best for large subjects.\r\n // TODO: skip this if hit didn't supply left/right/top/bottom\r\n if (this.origHit) {\r\n subjectRect = util_1.intersectRects(this.origHit, subjectRect) ||\r\n subjectRect; // in case there is no intersection\r\n }\r\n point = util_1.getRectCenter(subjectRect);\r\n }\r\n this.coordAdjust = util_1.diffPoints(point, origPoint); // point - origPoint\r\n }\r\n else {\r\n this.origHit = null;\r\n this.coordAdjust = null;\r\n }\r\n // call the super-method. do it after origHit has been computed\r\n _super.prototype.handleInteractionStart.call(this, ev);\r\n };\r\n // Called when the actual drag has started\r\n HitDragListener.prototype.handleDragStart = function (ev) {\r\n var hit;\r\n _super.prototype.handleDragStart.call(this, ev);\r\n // might be different from this.origHit if the min-distance is large\r\n hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev));\r\n // report the initial hit the mouse is over\r\n // especially important if no min-distance and drag starts immediately\r\n if (hit) {\r\n this.handleHitOver(hit);\r\n }\r\n };\r\n // Called when the drag moves\r\n HitDragListener.prototype.handleDrag = function (dx, dy, ev) {\r\n var hit;\r\n _super.prototype.handleDrag.call(this, dx, dy, ev);\r\n hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev));\r\n if (!isHitsEqual(hit, this.hit)) { // a different hit than before?\r\n if (this.hit) {\r\n this.handleHitOut();\r\n }\r\n if (hit) {\r\n this.handleHitOver(hit);\r\n }\r\n }\r\n };\r\n // Called when dragging has been stopped\r\n HitDragListener.prototype.handleDragEnd = function (ev) {\r\n this.handleHitDone();\r\n _super.prototype.handleDragEnd.call(this, ev);\r\n };\r\n // Called when a the mouse has just moved over a new hit\r\n HitDragListener.prototype.handleHitOver = function (hit) {\r\n var isOrig = isHitsEqual(hit, this.origHit);\r\n this.hit = hit;\r\n this.trigger('hitOver', this.hit, isOrig, this.origHit);\r\n };\r\n // Called when the mouse has just moved out of a hit\r\n HitDragListener.prototype.handleHitOut = function () {\r\n if (this.hit) {\r\n this.trigger('hitOut', this.hit);\r\n this.handleHitDone();\r\n this.hit = null;\r\n }\r\n };\r\n // Called after a hitOut. Also called before a dragStop\r\n HitDragListener.prototype.handleHitDone = function () {\r\n if (this.hit) {\r\n this.trigger('hitDone', this.hit);\r\n }\r\n };\r\n // Called when the interaction ends, whether there was a real drag or not\r\n HitDragListener.prototype.handleInteractionEnd = function (ev, isCancelled) {\r\n _super.prototype.handleInteractionEnd.call(this, ev, isCancelled);\r\n this.origHit = null;\r\n this.hit = null;\r\n this.component.hitsNotNeeded();\r\n };\r\n // Called when scrolling has stopped, whether through auto scroll, or the user scrolling\r\n HitDragListener.prototype.handleScrollEnd = function () {\r\n _super.prototype.handleScrollEnd.call(this);\r\n // hits' absolute positions will be in new places after a user's scroll.\r\n // HACK for recomputing.\r\n if (this.isDragging) {\r\n this.component.releaseHits();\r\n this.component.prepareHits();\r\n }\r\n };\r\n // Gets the hit underneath the coordinates for the given mouse event\r\n HitDragListener.prototype.queryHit = function (left, top) {\r\n if (this.coordAdjust) {\r\n left += this.coordAdjust.left;\r\n top += this.coordAdjust.top;\r\n }\r\n return this.component.queryHit(left, top);\r\n };\r\n return HitDragListener;\r\n}(DragListener_1.default));\r\nexports.default = HitDragListener;\r\n// Returns `true` if the hits are identically equal. `false` otherwise. Must be from the same component.\r\n// Two null values will be considered equal, as two \"out of the component\" states are the same.\r\nfunction isHitsEqual(hit0, hit1) {\r\n if (!hit0 && !hit1) {\r\n return true;\r\n }\r\n if (hit0 && hit1) {\r\n return hit0.component === hit1.component &&\r\n isHitPropsWithin(hit0, hit1) &&\r\n isHitPropsWithin(hit1, hit0); // ensures all props are identical\r\n }\r\n return false;\r\n}\r\n// Returns true if all of subHit's non-standard properties are within superHit\r\nfunction isHitPropsWithin(subHit, superHit) {\r\n for (var propName in subHit) {\r\n if (!/^(component|left|right|top|bottom)$/.test(propName)) {\r\n if (subHit[propName] !== superHit[propName]) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.version = '3.10.1';\r\n// When introducing internal API incompatibilities (where fullcalendar plugins would break),\r\n// the minor version of the calendar should be upped (ex: 2.7.2 -> 2.8.0)\r\n// and the below integer should be incremented.\r\nexports.internalApiVersion = 12;\r\nvar util_1 = __webpack_require__(4);\r\nexports.applyAll = util_1.applyAll;\r\nexports.debounce = util_1.debounce;\r\nexports.isInt = util_1.isInt;\r\nexports.htmlEscape = util_1.htmlEscape;\r\nexports.cssToStr = util_1.cssToStr;\r\nexports.proxy = util_1.proxy;\r\nexports.capitaliseFirstLetter = util_1.capitaliseFirstLetter;\r\nexports.getOuterRect = util_1.getOuterRect;\r\nexports.getClientRect = util_1.getClientRect;\r\nexports.getContentRect = util_1.getContentRect;\r\nexports.getScrollbarWidths = util_1.getScrollbarWidths;\r\nexports.preventDefault = util_1.preventDefault;\r\nexports.parseFieldSpecs = util_1.parseFieldSpecs;\r\nexports.compareByFieldSpecs = util_1.compareByFieldSpecs;\r\nexports.compareByFieldSpec = util_1.compareByFieldSpec;\r\nexports.flexibleCompare = util_1.flexibleCompare;\r\nexports.computeGreatestUnit = util_1.computeGreatestUnit;\r\nexports.divideRangeByDuration = util_1.divideRangeByDuration;\r\nexports.divideDurationByDuration = util_1.divideDurationByDuration;\r\nexports.multiplyDuration = util_1.multiplyDuration;\r\nexports.durationHasTime = util_1.durationHasTime;\r\nexports.log = util_1.log;\r\nexports.warn = util_1.warn;\r\nexports.removeExact = util_1.removeExact;\r\nexports.intersectRects = util_1.intersectRects;\r\nexports.allowSelection = util_1.allowSelection;\r\nexports.attrsToStr = util_1.attrsToStr;\r\nexports.compareNumbers = util_1.compareNumbers;\r\nexports.compensateScroll = util_1.compensateScroll;\r\nexports.computeDurationGreatestUnit = util_1.computeDurationGreatestUnit;\r\nexports.constrainPoint = util_1.constrainPoint;\r\nexports.copyOwnProps = util_1.copyOwnProps;\r\nexports.diffByUnit = util_1.diffByUnit;\r\nexports.diffDay = util_1.diffDay;\r\nexports.diffDayTime = util_1.diffDayTime;\r\nexports.diffPoints = util_1.diffPoints;\r\nexports.disableCursor = util_1.disableCursor;\r\nexports.distributeHeight = util_1.distributeHeight;\r\nexports.enableCursor = util_1.enableCursor;\r\nexports.firstDefined = util_1.firstDefined;\r\nexports.getEvIsTouch = util_1.getEvIsTouch;\r\nexports.getEvX = util_1.getEvX;\r\nexports.getEvY = util_1.getEvY;\r\nexports.getRectCenter = util_1.getRectCenter;\r\nexports.getScrollParent = util_1.getScrollParent;\r\nexports.hasOwnProp = util_1.hasOwnProp;\r\nexports.isArraysEqual = util_1.isArraysEqual;\r\nexports.isNativeDate = util_1.isNativeDate;\r\nexports.isPrimaryMouseButton = util_1.isPrimaryMouseButton;\r\nexports.isTimeString = util_1.isTimeString;\r\nexports.matchCellWidths = util_1.matchCellWidths;\r\nexports.mergeProps = util_1.mergeProps;\r\nexports.preventSelection = util_1.preventSelection;\r\nexports.removeMatching = util_1.removeMatching;\r\nexports.stripHtmlEntities = util_1.stripHtmlEntities;\r\nexports.subtractInnerElHeight = util_1.subtractInnerElHeight;\r\nexports.uncompensateScroll = util_1.uncompensateScroll;\r\nexports.undistributeHeight = util_1.undistributeHeight;\r\nexports.dayIDs = util_1.dayIDs;\r\nexports.unitsDesc = util_1.unitsDesc;\r\nvar date_formatting_1 = __webpack_require__(49);\r\nexports.formatDate = date_formatting_1.formatDate;\r\nexports.formatRange = date_formatting_1.formatRange;\r\nexports.queryMostGranularFormatUnit = date_formatting_1.queryMostGranularFormatUnit;\r\nvar locale_1 = __webpack_require__(32);\r\nexports.datepickerLocale = locale_1.datepickerLocale;\r\nexports.locale = locale_1.locale;\r\nexports.getMomentLocaleData = locale_1.getMomentLocaleData;\r\nexports.populateInstanceComputableOptions = locale_1.populateInstanceComputableOptions;\r\nvar util_2 = __webpack_require__(19);\r\nexports.eventDefsToEventInstances = util_2.eventDefsToEventInstances;\r\nexports.eventFootprintToComponentFootprint = util_2.eventFootprintToComponentFootprint;\r\nexports.eventInstanceToEventRange = util_2.eventInstanceToEventRange;\r\nexports.eventInstanceToUnzonedRange = util_2.eventInstanceToUnzonedRange;\r\nexports.eventRangeToEventFootprint = util_2.eventRangeToEventFootprint;\r\nvar moment_ext_1 = __webpack_require__(11);\r\nexports.moment = moment_ext_1.default;\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nexports.EmitterMixin = EmitterMixin_1.default;\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nexports.ListenerMixin = ListenerMixin_1.default;\r\nvar Model_1 = __webpack_require__(51);\r\nexports.Model = Model_1.default;\r\nvar Constraints_1 = __webpack_require__(217);\r\nexports.Constraints = Constraints_1.default;\r\nvar DateProfileGenerator_1 = __webpack_require__(55);\r\nexports.DateProfileGenerator = DateProfileGenerator_1.default;\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nexports.UnzonedRange = UnzonedRange_1.default;\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nexports.ComponentFootprint = ComponentFootprint_1.default;\r\nvar BusinessHourGenerator_1 = __webpack_require__(218);\r\nexports.BusinessHourGenerator = BusinessHourGenerator_1.default;\r\nvar EventPeriod_1 = __webpack_require__(219);\r\nexports.EventPeriod = EventPeriod_1.default;\r\nvar EventManager_1 = __webpack_require__(220);\r\nexports.EventManager = EventManager_1.default;\r\nvar EventDef_1 = __webpack_require__(37);\r\nexports.EventDef = EventDef_1.default;\r\nvar EventDefMutation_1 = __webpack_require__(39);\r\nexports.EventDefMutation = EventDefMutation_1.default;\r\nvar EventDefParser_1 = __webpack_require__(36);\r\nexports.EventDefParser = EventDefParser_1.default;\r\nvar EventInstance_1 = __webpack_require__(53);\r\nexports.EventInstance = EventInstance_1.default;\r\nvar EventRange_1 = __webpack_require__(50);\r\nexports.EventRange = EventRange_1.default;\r\nvar RecurringEventDef_1 = __webpack_require__(54);\r\nexports.RecurringEventDef = RecurringEventDef_1.default;\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nexports.SingleEventDef = SingleEventDef_1.default;\r\nvar EventDefDateMutation_1 = __webpack_require__(40);\r\nexports.EventDefDateMutation = EventDefDateMutation_1.default;\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nexports.EventDateProfile = EventDateProfile_1.default;\r\nvar EventSourceParser_1 = __webpack_require__(38);\r\nexports.EventSourceParser = EventSourceParser_1.default;\r\nvar EventSource_1 = __webpack_require__(6);\r\nexports.EventSource = EventSource_1.default;\r\nvar ThemeRegistry_1 = __webpack_require__(57);\r\nexports.defineThemeSystem = ThemeRegistry_1.defineThemeSystem;\r\nexports.getThemeSystemClass = ThemeRegistry_1.getThemeSystemClass;\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nexports.EventInstanceGroup = EventInstanceGroup_1.default;\r\nvar ArrayEventSource_1 = __webpack_require__(56);\r\nexports.ArrayEventSource = ArrayEventSource_1.default;\r\nvar FuncEventSource_1 = __webpack_require__(223);\r\nexports.FuncEventSource = FuncEventSource_1.default;\r\nvar JsonFeedEventSource_1 = __webpack_require__(224);\r\nexports.JsonFeedEventSource = JsonFeedEventSource_1.default;\r\nvar EventFootprint_1 = __webpack_require__(34);\r\nexports.EventFootprint = EventFootprint_1.default;\r\nvar Class_1 = __webpack_require__(35);\r\nexports.Class = Class_1.default;\r\nvar Mixin_1 = __webpack_require__(15);\r\nexports.Mixin = Mixin_1.default;\r\nvar CoordCache_1 = __webpack_require__(58);\r\nexports.CoordCache = CoordCache_1.default;\r\nvar Iterator_1 = __webpack_require__(225);\r\nexports.Iterator = Iterator_1.default;\r\nvar DragListener_1 = __webpack_require__(59);\r\nexports.DragListener = DragListener_1.default;\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nexports.HitDragListener = HitDragListener_1.default;\r\nvar MouseFollower_1 = __webpack_require__(226);\r\nexports.MouseFollower = MouseFollower_1.default;\r\nvar ParsableModelMixin_1 = __webpack_require__(52);\r\nexports.ParsableModelMixin = ParsableModelMixin_1.default;\r\nvar Popover_1 = __webpack_require__(227);\r\nexports.Popover = Popover_1.default;\r\nvar Promise_1 = __webpack_require__(21);\r\nexports.Promise = Promise_1.default;\r\nvar TaskQueue_1 = __webpack_require__(228);\r\nexports.TaskQueue = TaskQueue_1.default;\r\nvar RenderQueue_1 = __webpack_require__(229);\r\nexports.RenderQueue = RenderQueue_1.default;\r\nvar Scroller_1 = __webpack_require__(41);\r\nexports.Scroller = Scroller_1.default;\r\nvar Theme_1 = __webpack_require__(22);\r\nexports.Theme = Theme_1.default;\r\nvar Component_1 = __webpack_require__(230);\r\nexports.Component = Component_1.default;\r\nvar DateComponent_1 = __webpack_require__(231);\r\nexports.DateComponent = DateComponent_1.default;\r\nvar InteractiveDateComponent_1 = __webpack_require__(42);\r\nexports.InteractiveDateComponent = InteractiveDateComponent_1.default;\r\nvar Calendar_1 = __webpack_require__(232);\r\nexports.Calendar = Calendar_1.default;\r\nvar View_1 = __webpack_require__(43);\r\nexports.View = View_1.default;\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nexports.defineView = ViewRegistry_1.defineView;\r\nexports.getViewConfig = ViewRegistry_1.getViewConfig;\r\nvar DayTableMixin_1 = __webpack_require__(60);\r\nexports.DayTableMixin = DayTableMixin_1.default;\r\nvar BusinessHourRenderer_1 = __webpack_require__(61);\r\nexports.BusinessHourRenderer = BusinessHourRenderer_1.default;\r\nvar EventRenderer_1 = __webpack_require__(44);\r\nexports.EventRenderer = EventRenderer_1.default;\r\nvar FillRenderer_1 = __webpack_require__(62);\r\nexports.FillRenderer = FillRenderer_1.default;\r\nvar HelperRenderer_1 = __webpack_require__(63);\r\nexports.HelperRenderer = HelperRenderer_1.default;\r\nvar ExternalDropping_1 = __webpack_require__(233);\r\nexports.ExternalDropping = ExternalDropping_1.default;\r\nvar EventResizing_1 = __webpack_require__(234);\r\nexports.EventResizing = EventResizing_1.default;\r\nvar EventPointing_1 = __webpack_require__(64);\r\nexports.EventPointing = EventPointing_1.default;\r\nvar EventDragging_1 = __webpack_require__(235);\r\nexports.EventDragging = EventDragging_1.default;\r\nvar DateSelecting_1 = __webpack_require__(236);\r\nexports.DateSelecting = DateSelecting_1.default;\r\nvar DateClicking_1 = __webpack_require__(237);\r\nexports.DateClicking = DateClicking_1.default;\r\nvar Interaction_1 = __webpack_require__(14);\r\nexports.Interaction = Interaction_1.default;\r\nvar StandardInteractionsMixin_1 = __webpack_require__(65);\r\nexports.StandardInteractionsMixin = StandardInteractionsMixin_1.default;\r\nvar AgendaView_1 = __webpack_require__(238);\r\nexports.AgendaView = AgendaView_1.default;\r\nvar TimeGrid_1 = __webpack_require__(239);\r\nexports.TimeGrid = TimeGrid_1.default;\r\nvar TimeGridEventRenderer_1 = __webpack_require__(240);\r\nexports.TimeGridEventRenderer = TimeGridEventRenderer_1.default;\r\nvar TimeGridFillRenderer_1 = __webpack_require__(242);\r\nexports.TimeGridFillRenderer = TimeGridFillRenderer_1.default;\r\nvar TimeGridHelperRenderer_1 = __webpack_require__(241);\r\nexports.TimeGridHelperRenderer = TimeGridHelperRenderer_1.default;\r\nvar DayGrid_1 = __webpack_require__(66);\r\nexports.DayGrid = DayGrid_1.default;\r\nvar DayGridEventRenderer_1 = __webpack_require__(243);\r\nexports.DayGridEventRenderer = DayGridEventRenderer_1.default;\r\nvar DayGridFillRenderer_1 = __webpack_require__(245);\r\nexports.DayGridFillRenderer = DayGridFillRenderer_1.default;\r\nvar DayGridHelperRenderer_1 = __webpack_require__(244);\r\nexports.DayGridHelperRenderer = DayGridHelperRenderer_1.default;\r\nvar BasicView_1 = __webpack_require__(67);\r\nexports.BasicView = BasicView_1.default;\r\nvar BasicViewDateProfileGenerator_1 = __webpack_require__(68);\r\nexports.BasicViewDateProfileGenerator = BasicViewDateProfileGenerator_1.default;\r\nvar MonthView_1 = __webpack_require__(246);\r\nexports.MonthView = MonthView_1.default;\r\nvar MonthViewDateProfileGenerator_1 = __webpack_require__(247);\r\nexports.MonthViewDateProfileGenerator = MonthViewDateProfileGenerator_1.default;\r\nvar ListView_1 = __webpack_require__(248);\r\nexports.ListView = ListView_1.default;\r\nvar ListEventPointing_1 = __webpack_require__(250);\r\nexports.ListEventPointing = ListEventPointing_1.default;\r\nvar ListEventRenderer_1 = __webpack_require__(249);\r\nexports.ListEventRenderer = ListEventRenderer_1.default;\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventRange_1 = __webpack_require__(50);\r\nvar EventFootprint_1 = __webpack_require__(34);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nfunction eventDefsToEventInstances(eventDefs, unzonedRange) {\r\n var eventInstances = [];\r\n var i;\r\n for (i = 0; i < eventDefs.length; i++) {\r\n eventInstances.push.apply(eventInstances, // append\r\n eventDefs[i].buildInstances(unzonedRange));\r\n }\r\n return eventInstances;\r\n}\r\nexports.eventDefsToEventInstances = eventDefsToEventInstances;\r\nfunction eventInstanceToEventRange(eventInstance) {\r\n return new EventRange_1.default(eventInstance.dateProfile.unzonedRange, eventInstance.def, eventInstance);\r\n}\r\nexports.eventInstanceToEventRange = eventInstanceToEventRange;\r\nfunction eventRangeToEventFootprint(eventRange) {\r\n return new EventFootprint_1.default(new ComponentFootprint_1.default(eventRange.unzonedRange, eventRange.eventDef.isAllDay()), eventRange.eventDef, eventRange.eventInstance // might not exist\r\n );\r\n}\r\nexports.eventRangeToEventFootprint = eventRangeToEventFootprint;\r\nfunction eventInstanceToUnzonedRange(eventInstance) {\r\n return eventInstance.dateProfile.unzonedRange;\r\n}\r\nexports.eventInstanceToUnzonedRange = eventInstanceToUnzonedRange;\r\nfunction eventFootprintToComponentFootprint(eventFootprint) {\r\n return eventFootprint.componentFootprint;\r\n}\r\nexports.eventFootprintToComponentFootprint = eventFootprintToComponentFootprint;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar util_1 = __webpack_require__(19);\r\nvar EventRange_1 = __webpack_require__(50);\r\n/*\r\nIt's expected that there will be at least one EventInstance,\r\nOR that an explicitEventDef is assigned.\r\n*/\r\nvar EventInstanceGroup = /** @class */ (function () {\r\n function EventInstanceGroup(eventInstances) {\r\n this.eventInstances = eventInstances || [];\r\n }\r\n EventInstanceGroup.prototype.getAllEventRanges = function (constraintRange) {\r\n if (constraintRange) {\r\n return this.sliceNormalRenderRanges(constraintRange);\r\n }\r\n else {\r\n return this.eventInstances.map(util_1.eventInstanceToEventRange);\r\n }\r\n };\r\n EventInstanceGroup.prototype.sliceRenderRanges = function (constraintRange) {\r\n if (this.isInverse()) {\r\n return this.sliceInverseRenderRanges(constraintRange);\r\n }\r\n else {\r\n return this.sliceNormalRenderRanges(constraintRange);\r\n }\r\n };\r\n EventInstanceGroup.prototype.sliceNormalRenderRanges = function (constraintRange) {\r\n var eventInstances = this.eventInstances;\r\n var i;\r\n var eventInstance;\r\n var slicedRange;\r\n var slicedEventRanges = [];\r\n for (i = 0; i < eventInstances.length; i++) {\r\n eventInstance = eventInstances[i];\r\n slicedRange = eventInstance.dateProfile.unzonedRange.intersect(constraintRange);\r\n if (slicedRange) {\r\n slicedEventRanges.push(new EventRange_1.default(slicedRange, eventInstance.def, eventInstance));\r\n }\r\n }\r\n return slicedEventRanges;\r\n };\r\n EventInstanceGroup.prototype.sliceInverseRenderRanges = function (constraintRange) {\r\n var unzonedRanges = this.eventInstances.map(util_1.eventInstanceToUnzonedRange);\r\n var ownerDef = this.getEventDef();\r\n unzonedRanges = UnzonedRange_1.default.invertRanges(unzonedRanges, constraintRange);\r\n return unzonedRanges.map(function (unzonedRange) {\r\n return new EventRange_1.default(unzonedRange, ownerDef); // don't give an EventInstance\r\n });\r\n };\r\n EventInstanceGroup.prototype.isInverse = function () {\r\n return this.getEventDef().hasInverseRendering();\r\n };\r\n EventInstanceGroup.prototype.getEventDef = function () {\r\n return this.explicitEventDef || this.eventInstances[0].def;\r\n };\r\n return EventInstanceGroup;\r\n}());\r\nexports.default = EventInstanceGroup;\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar PromiseStub = {\r\n construct: function (executor) {\r\n var deferred = $.Deferred();\r\n var promise = deferred.promise();\r\n if (typeof executor === 'function') {\r\n executor(function (val) {\r\n deferred.resolve(val);\r\n attachImmediatelyResolvingThen(promise, val);\r\n }, function () {\r\n deferred.reject();\r\n attachImmediatelyRejectingThen(promise);\r\n });\r\n }\r\n return promise;\r\n },\r\n resolve: function (val) {\r\n var deferred = $.Deferred().resolve(val);\r\n var promise = deferred.promise();\r\n attachImmediatelyResolvingThen(promise, val);\r\n return promise;\r\n },\r\n reject: function () {\r\n var deferred = $.Deferred().reject();\r\n var promise = deferred.promise();\r\n attachImmediatelyRejectingThen(promise);\r\n return promise;\r\n }\r\n};\r\nexports.default = PromiseStub;\r\nfunction attachImmediatelyResolvingThen(promise, val) {\r\n promise.then = function (onResolve) {\r\n if (typeof onResolve === 'function') {\r\n return PromiseStub.resolve(onResolve(val));\r\n }\r\n return promise;\r\n };\r\n}\r\nfunction attachImmediatelyRejectingThen(promise) {\r\n promise.then = function (onResolve, onReject) {\r\n if (typeof onReject === 'function') {\r\n onReject();\r\n }\r\n return promise;\r\n };\r\n}\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar Theme = /** @class */ (function () {\r\n function Theme(optionsManager) {\r\n this.optionsManager = optionsManager;\r\n this.processIconOverride();\r\n }\r\n Theme.prototype.processIconOverride = function () {\r\n if (this.iconOverrideOption) {\r\n this.setIconOverride(this.optionsManager.get(this.iconOverrideOption));\r\n }\r\n };\r\n Theme.prototype.setIconOverride = function (iconOverrideHash) {\r\n var iconClassesCopy;\r\n var buttonName;\r\n if ($.isPlainObject(iconOverrideHash)) {\r\n iconClassesCopy = $.extend({}, this.iconClasses);\r\n for (buttonName in iconOverrideHash) {\r\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\r\n }\r\n this.iconClasses = iconClassesCopy;\r\n }\r\n else if (iconOverrideHash === false) {\r\n this.iconClasses = {};\r\n }\r\n };\r\n Theme.prototype.applyIconOverridePrefix = function (className) {\r\n var prefix = this.iconOverridePrefix;\r\n if (prefix && className.indexOf(prefix) !== 0) { // if not already present\r\n className = prefix + className;\r\n }\r\n return className;\r\n };\r\n Theme.prototype.getClass = function (key) {\r\n return this.classes[key] || '';\r\n };\r\n Theme.prototype.getIconClass = function (buttonName) {\r\n var className = this.iconClasses[buttonName];\r\n if (className) {\r\n return this.baseIconClass + ' ' + className;\r\n }\r\n return '';\r\n };\r\n Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {\r\n var className;\r\n if (this.iconOverrideCustomButtonOption) {\r\n className = customButtonProps[this.iconOverrideCustomButtonOption];\r\n if (className) {\r\n return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className);\r\n }\r\n }\r\n return '';\r\n };\r\n return Theme;\r\n}());\r\nexports.default = Theme;\r\nTheme.prototype.classes = {};\r\nTheme.prototype.iconClasses = {};\r\nTheme.prototype.baseIconClass = '';\r\nTheme.prototype.iconOverridePrefix = '';\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar exportHooks = __webpack_require__(18);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nexportHooks.touchMouseIgnoreWait = 500;\r\nvar globalEmitter = null;\r\nvar neededCount = 0;\r\n/*\r\nListens to document and window-level user-interaction events, like touch events and mouse events,\r\nand fires these events as-is to whoever is observing a GlobalEmitter.\r\nBest when used as a singleton via GlobalEmitter.get()\r\n\nNormalizes mouse/touch events. For examples:\r\n- ignores the the simulated mouse events that happen after a quick tap: mousemove+mousedown+mouseup+click\r\n- compensates for various buggy scenarios where a touchend does not fire\r\n*/\r\nvar GlobalEmitter = /** @class */ (function () {\r\n function GlobalEmitter() {\r\n this.isTouching = false;\r\n this.mouseIgnoreDepth = 0;\r\n }\r\n // gets the singleton\r\n GlobalEmitter.get = function () {\r\n if (!globalEmitter) {\r\n globalEmitter = new GlobalEmitter();\r\n globalEmitter.bind();\r\n }\r\n return globalEmitter;\r\n };\r\n // called when an object knows it will need a GlobalEmitter in the near future.\r\n GlobalEmitter.needed = function () {\r\n GlobalEmitter.get(); // ensures globalEmitter\r\n neededCount++;\r\n };\r\n // called when the object that originally called needed() doesn't need a GlobalEmitter anymore.\r\n GlobalEmitter.unneeded = function () {\r\n neededCount--;\r\n if (!neededCount) { // nobody else needs it\r\n globalEmitter.unbind();\r\n globalEmitter = null;\r\n }\r\n };\r\n GlobalEmitter.prototype.bind = function () {\r\n var _this = this;\r\n this.listenTo($(document), {\r\n touchstart: this.handleTouchStart,\r\n touchcancel: this.handleTouchCancel,\r\n touchend: this.handleTouchEnd,\r\n mousedown: this.handleMouseDown,\r\n mousemove: this.handleMouseMove,\r\n mouseup: this.handleMouseUp,\r\n click: this.handleClick,\r\n selectstart: this.handleSelectStart,\r\n contextmenu: this.handleContextMenu\r\n });\r\n // because we need to call preventDefault\r\n // because https://www.chromestatus.com/features/5093566007214080\r\n // TODO: investigate performance because this is a global handler\r\n window.addEventListener('touchmove', this.handleTouchMoveProxy = function (ev) {\r\n _this.handleTouchMove($.Event(ev));\r\n }, { passive: false } // allows preventDefault()\r\n );\r\n // attach a handler to get called when ANY scroll action happens on the page.\r\n // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\r\n // http://stackoverflow.com/a/32954565/96342\r\n window.addEventListener('scroll', this.handleScrollProxy = function (ev) {\r\n _this.handleScroll($.Event(ev));\r\n }, true // useCapture\r\n );\r\n };\r\n GlobalEmitter.prototype.unbind = function () {\r\n this.stopListeningTo($(document));\r\n window.removeEventListener('touchmove', this.handleTouchMoveProxy, { passive: false } // use same options as addEventListener\r\n );\r\n window.removeEventListener('scroll', this.handleScrollProxy, true // useCapture\r\n );\r\n };\r\n // Touch Handlers\r\n // -----------------------------------------------------------------------------------------------------------------\r\n GlobalEmitter.prototype.handleTouchStart = function (ev) {\r\n // if a previous touch interaction never ended with a touchend, then implicitly end it,\r\n // but since a new touch interaction is about to begin, don't start the mouse ignore period.\r\n this.stopTouch(ev, true); // skipMouseIgnore=true\r\n this.isTouching = true;\r\n this.trigger('touchstart', ev);\r\n };\r\n GlobalEmitter.prototype.handleTouchMove = function (ev) {\r\n if (this.isTouching) {\r\n this.trigger('touchmove', ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleTouchCancel = function (ev) {\r\n if (this.isTouching) {\r\n this.trigger('touchcancel', ev);\r\n // Have touchcancel fire an artificial touchend. That way, handlers won't need to listen to both.\r\n // If touchend fires later, it won't have any effect b/c isTouching will be false.\r\n this.stopTouch(ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleTouchEnd = function (ev) {\r\n this.stopTouch(ev);\r\n };\r\n // Mouse Handlers\r\n // -----------------------------------------------------------------------------------------------------------------\r\n GlobalEmitter.prototype.handleMouseDown = function (ev) {\r\n if (!this.shouldIgnoreMouse()) {\r\n this.trigger('mousedown', ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleMouseMove = function (ev) {\r\n if (!this.shouldIgnoreMouse()) {\r\n this.trigger('mousemove', ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleMouseUp = function (ev) {\r\n if (!this.shouldIgnoreMouse()) {\r\n this.trigger('mouseup', ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleClick = function (ev) {\r\n if (!this.shouldIgnoreMouse()) {\r\n this.trigger('click', ev);\r\n }\r\n };\r\n // Misc Handlers\r\n // -----------------------------------------------------------------------------------------------------------------\r\n GlobalEmitter.prototype.handleSelectStart = function (ev) {\r\n this.trigger('selectstart', ev);\r\n };\r\n GlobalEmitter.prototype.handleContextMenu = function (ev) {\r\n this.trigger('contextmenu', ev);\r\n };\r\n GlobalEmitter.prototype.handleScroll = function (ev) {\r\n this.trigger('scroll', ev);\r\n };\r\n // Utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n GlobalEmitter.prototype.stopTouch = function (ev, skipMouseIgnore) {\r\n if (skipMouseIgnore === void 0) { skipMouseIgnore = false; }\r\n if (this.isTouching) {\r\n this.isTouching = false;\r\n this.trigger('touchend', ev);\r\n if (!skipMouseIgnore) {\r\n this.startTouchMouseIgnore();\r\n }\r\n }\r\n };\r\n GlobalEmitter.prototype.startTouchMouseIgnore = function () {\r\n var _this = this;\r\n var wait = exportHooks.touchMouseIgnoreWait;\r\n if (wait) {\r\n this.mouseIgnoreDepth++;\r\n setTimeout(function () {\r\n _this.mouseIgnoreDepth--;\r\n }, wait);\r\n }\r\n };\r\n GlobalEmitter.prototype.shouldIgnoreMouse = function () {\r\n return this.isTouching || Boolean(this.mouseIgnoreDepth);\r\n };\r\n return GlobalEmitter;\r\n}());\r\nexports.default = GlobalEmitter;\r\nListenerMixin_1.default.mixInto(GlobalEmitter);\r\nEmitterMixin_1.default.mixInto(GlobalEmitter);\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar exportHooks = __webpack_require__(18);\r\nexports.viewHash = {};\r\nexportHooks.views = exports.viewHash;\r\nfunction defineView(viewName, viewConfig) {\r\n exports.viewHash[viewName] = viewConfig;\r\n}\r\nexports.defineView = defineView;\r\nfunction getViewConfig(viewName) {\r\n return exports.viewHash[viewName];\r\n}\r\nexports.getViewConfig = getViewConfig;\r\n\n\n/***/ }),\n/* 25 */,\n/* 26 */,\n/* 27 */,\n/* 28 */,\n/* 29 */,\n/* 30 */,\n/* 31 */,\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar exportHooks = __webpack_require__(18);\r\nvar options_1 = __webpack_require__(33);\r\nvar util_1 = __webpack_require__(4);\r\nexports.localeOptionHash = {};\r\nexportHooks.locales = exports.localeOptionHash;\r\n// NOTE: can't guarantee any of these computations will run because not every locale has datepicker\r\n// configs, so make sure there are English fallbacks for these in the defaults file.\r\nvar dpComputableOptions = {\r\n buttonText: function (dpOptions) {\r\n return {\r\n // the translations sometimes wrongly contain HTML entities\r\n prev: util_1.stripHtmlEntities(dpOptions.prevText),\r\n next: util_1.stripHtmlEntities(dpOptions.nextText),\r\n today: util_1.stripHtmlEntities(dpOptions.currentText)\r\n };\r\n },\r\n // Produces format strings like \"MMMM YYYY\" -> \"September 2014\"\r\n monthYearFormat: function (dpOptions) {\r\n return dpOptions.showMonthAfterYear ?\r\n 'YYYY[' + dpOptions.yearSuffix + '] MMMM' :\r\n 'MMMM YYYY[' + dpOptions.yearSuffix + ']';\r\n }\r\n};\r\nvar momComputableOptions = {\r\n // Produces format strings like \"ddd M/D\" -> \"Fri 9/15\"\r\n dayOfMonthFormat: function (momOptions, fcOptions) {\r\n var format = momOptions.longDateFormat('l'); // for the format like \"M/D/YYYY\"\r\n // strip the year off the edge, as well as other misc non-whitespace chars\r\n format = format.replace(/^Y+[^\\w\\s]*|[^\\w\\s]*Y+$/g, '');\r\n if (fcOptions.isRTL) {\r\n format += ' ddd'; // for RTL, add day-of-week to end\r\n }\r\n else {\r\n format = 'ddd ' + format; // for LTR, add day-of-week to beginning\r\n }\r\n return format;\r\n },\r\n // Produces format strings like \"h:mma\" -> \"6:00pm\"\r\n mediumTimeFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\r\n },\r\n // Produces format strings like \"h(:mm)a\" -> \"6pm\" / \"6:30pm\"\r\n smallTimeFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(':mm', '(:mm)')\r\n .replace(/(\\Wmm)$/, '($1)') // like above, but for foreign locales\r\n .replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\r\n },\r\n // Produces format strings like \"h(:mm)t\" -> \"6p\" / \"6:30p\"\r\n extraSmallTimeFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(':mm', '(:mm)')\r\n .replace(/(\\Wmm)$/, '($1)') // like above, but for foreign locales\r\n .replace(/\\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand\r\n },\r\n // Produces format strings like \"ha\" / \"H\" -> \"6pm\" / \"18\"\r\n hourFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(':mm', '')\r\n .replace(/(\\Wmm)$/, '') // like above, but for foreign locales\r\n .replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\r\n },\r\n // Produces format strings like \"h:mm\" -> \"6:30\" (with no AM/PM)\r\n noMeridiemTimeFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(/\\s*a$/i, ''); // remove trailing AM/PM\r\n }\r\n};\r\n// options that should be computed off live calendar options (considers override options)\r\n// TODO: best place for this? related to locale?\r\n// TODO: flipping text based on isRTL is a bad idea because the CSS `direction` might want to handle it\r\nvar instanceComputableOptions = {\r\n // Produces format strings for results like \"Mo 16\"\r\n smallDayDateFormat: function (options) {\r\n return options.isRTL ?\r\n 'D dd' :\r\n 'dd D';\r\n },\r\n // Produces format strings for results like \"Wk 5\"\r\n weekFormat: function (options) {\r\n return options.isRTL ?\r\n 'w[ ' + options.weekNumberTitle + ']' :\r\n '[' + options.weekNumberTitle + ' ]w';\r\n },\r\n // Produces format strings for results like \"Wk5\"\r\n smallWeekFormat: function (options) {\r\n return options.isRTL ?\r\n 'w[' + options.weekNumberTitle + ']' :\r\n '[' + options.weekNumberTitle + ']w';\r\n }\r\n};\r\n// TODO: make these computable properties in optionsManager\r\nfunction populateInstanceComputableOptions(options) {\r\n $.each(instanceComputableOptions, function (name, func) {\r\n if (options[name] == null) {\r\n options[name] = func(options);\r\n }\r\n });\r\n}\r\nexports.populateInstanceComputableOptions = populateInstanceComputableOptions;\r\n// Initialize jQuery UI datepicker translations while using some of the translations\r\n// Will set this as the default locales for datepicker.\r\nfunction datepickerLocale(localeCode, dpLocaleCode, dpOptions) {\r\n // get the FullCalendar internal option hash for this locale. create if necessary\r\n var fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {});\r\n // transfer some simple options from datepicker to fc\r\n fcOptions.isRTL = dpOptions.isRTL;\r\n fcOptions.weekNumberTitle = dpOptions.weekHeader;\r\n // compute some more complex options from datepicker\r\n $.each(dpComputableOptions, function (name, func) {\r\n fcOptions[name] = func(dpOptions);\r\n });\r\n var jqDatePicker = $.datepicker;\r\n // is jQuery UI Datepicker is on the page?\r\n if (jqDatePicker) {\r\n // Register the locale data.\r\n // FullCalendar and MomentJS use locale codes like \"pt-br\" but Datepicker\r\n // does it like \"pt-BR\" or if it doesn't have the locale, maybe just \"pt\".\r\n // Make an alias so the locale can be referenced either way.\r\n jqDatePicker.regional[dpLocaleCode] =\r\n jqDatePicker.regional[localeCode] = // alias\r\n dpOptions;\r\n // Alias 'en' to the default locale data. Do this every time.\r\n jqDatePicker.regional.en = jqDatePicker.regional[''];\r\n // Set as Datepicker's global defaults.\r\n jqDatePicker.setDefaults(dpOptions);\r\n }\r\n}\r\nexports.datepickerLocale = datepickerLocale;\r\n// Sets FullCalendar-specific translations. Will set the locales as the global default.\r\nfunction locale(localeCode, newFcOptions) {\r\n var fcOptions;\r\n var momOptions;\r\n // get the FullCalendar internal option hash for this locale. create if necessary\r\n fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {});\r\n // provided new options for this locales? merge them in\r\n if (newFcOptions) {\r\n fcOptions = exports.localeOptionHash[localeCode] = options_1.mergeOptions([fcOptions, newFcOptions]);\r\n }\r\n // compute locale options that weren't defined.\r\n // always do this. newFcOptions can be undefined when initializing from i18n file,\r\n // so no way to tell if this is an initialization or a default-setting.\r\n momOptions = getMomentLocaleData(localeCode); // will fall back to en\r\n $.each(momComputableOptions, function (name, func) {\r\n if (fcOptions[name] == null) {\r\n fcOptions[name] = (func)(momOptions, fcOptions);\r\n }\r\n });\r\n // set it as the default locale for FullCalendar\r\n options_1.globalDefaults.locale = localeCode;\r\n}\r\nexports.locale = locale;\r\n// Returns moment's internal locale data. If doesn't exist, returns English.\r\nfunction getMomentLocaleData(localeCode) {\r\n return moment.localeData(localeCode) || moment.localeData('en');\r\n}\r\nexports.getMomentLocaleData = getMomentLocaleData;\r\n// Initialize English by forcing computation of moment-derived options.\r\n// Also, sets it as the default.\r\nlocale('en', options_1.englishDefaults);\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(4);\r\nexports.globalDefaults = {\r\n titleRangeSeparator: ' \\u2013 ',\r\n monthYearFormat: 'MMMM YYYY',\r\n defaultTimedEventDuration: '02:00:00',\r\n defaultAllDayEventDuration: { days: 1 },\r\n forceEventDuration: false,\r\n nextDayThreshold: '09:00:00',\r\n // display\r\n columnHeader: true,\r\n defaultView: 'month',\r\n aspectRatio: 1.35,\r\n header: {\r\n left: 'title',\r\n center: '',\r\n right: 'today prev,next'\r\n },\r\n weekends: true,\r\n weekNumbers: false,\r\n weekNumberTitle: 'W',\r\n weekNumberCalculation: 'local',\r\n // editable: false,\r\n // nowIndicator: false,\r\n scrollTime: '06:00:00',\r\n minTime: '00:00:00',\r\n maxTime: '24:00:00',\r\n showNonCurrentDates: true,\r\n // event ajax\r\n lazyFetching: true,\r\n startParam: 'start',\r\n endParam: 'end',\r\n timezoneParam: 'timezone',\r\n timezone: false,\r\n // allDayDefault: undefined,\r\n // locale\r\n locale: null,\r\n isRTL: false,\r\n buttonText: {\r\n prev: 'prev',\r\n next: 'next',\r\n prevYear: 'prev year',\r\n nextYear: 'next year',\r\n year: 'year',\r\n today: 'today',\r\n month: 'month',\r\n week: 'week',\r\n day: 'day'\r\n },\r\n // buttonIcons: null,\r\n allDayText: 'all-day',\r\n // allows setting a min-height to the event segment to prevent short events overlapping each other\r\n agendaEventMinHeight: 0,\r\n // jquery-ui theming\r\n theme: false,\r\n // themeButtonIcons: null,\r\n // eventResizableFromStart: false,\r\n dragOpacity: .75,\r\n dragRevertDuration: 500,\r\n dragScroll: true,\r\n // selectable: false,\r\n unselectAuto: true,\r\n // selectMinDistance: 0,\r\n dropAccept: '*',\r\n eventOrder: 'title',\r\n // eventRenderWait: null,\r\n eventLimit: false,\r\n eventLimitText: 'more',\r\n eventLimitClick: 'popover',\r\n dayPopoverFormat: 'LL',\r\n handleWindowResize: true,\r\n windowResizeDelay: 100,\r\n longPressDelay: 1000\r\n};\r\nexports.englishDefaults = {\r\n dayPopoverFormat: 'dddd, MMMM D'\r\n};\r\nexports.rtlDefaults = {\r\n header: {\r\n left: 'next,prev today',\r\n center: '',\r\n right: 'title'\r\n },\r\n buttonIcons: {\r\n prev: 'right-single-arrow',\r\n next: 'left-single-arrow',\r\n prevYear: 'right-double-arrow',\r\n nextYear: 'left-double-arrow'\r\n },\r\n themeButtonIcons: {\r\n prev: 'circle-triangle-e',\r\n next: 'circle-triangle-w',\r\n nextYear: 'seek-prev',\r\n prevYear: 'seek-next'\r\n }\r\n};\r\nvar complexOptions = [\r\n 'header',\r\n 'footer',\r\n 'buttonText',\r\n 'buttonIcons',\r\n 'themeButtonIcons'\r\n];\r\n// Merges an array of option objects into a single object\r\nfunction mergeOptions(optionObjs) {\r\n return util_1.mergeProps(optionObjs, complexOptions);\r\n}\r\nexports.mergeOptions = mergeOptions;\r\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventFootprint = /** @class */ (function () {\r\n function EventFootprint(componentFootprint, eventDef, eventInstance) {\r\n this.componentFootprint = componentFootprint;\r\n this.eventDef = eventDef;\r\n if (eventInstance) {\r\n this.eventInstance = eventInstance;\r\n }\r\n }\r\n EventFootprint.prototype.getEventLegacy = function () {\r\n return (this.eventInstance || this.eventDef).toLegacy();\r\n };\r\n return EventFootprint;\r\n}());\r\nexports.default = EventFootprint;\r\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\n// Class that all other classes will inherit from\r\nvar Class = /** @class */ (function () {\r\n function Class() {\r\n }\r\n // Called on a class to create a subclass.\r\n // LIMITATION: cannot provide a constructor!\r\n Class.extend = function (members) {\r\n var SubClass = /** @class */ (function (_super) {\r\n tslib_1.__extends(SubClass, _super);\r\n function SubClass() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return SubClass;\r\n }(this));\r\n util_1.copyOwnProps(members, SubClass.prototype);\r\n return SubClass;\r\n };\r\n // Adds new member variables/methods to the class's prototype.\r\n // Can be called with another class, or a plain object hash containing new members.\r\n Class.mixin = function (members) {\r\n util_1.copyOwnProps(members, this.prototype);\r\n };\r\n return Class;\r\n}());\r\nexports.default = Class;\r\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar RecurringEventDef_1 = __webpack_require__(54);\r\nexports.default = {\r\n parse: function (eventInput, source) {\r\n if (util_1.isTimeString(eventInput.start) || moment.isDuration(eventInput.start) ||\r\n util_1.isTimeString(eventInput.end) || moment.isDuration(eventInput.end)) {\r\n return RecurringEventDef_1.default.parse(eventInput, source);\r\n }\r\n else {\r\n return SingleEventDef_1.default.parse(eventInput, source);\r\n }\r\n }\r\n};\r\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar ParsableModelMixin_1 = __webpack_require__(52);\r\nvar EventDef = /** @class */ (function () {\r\n function EventDef(source) {\r\n this.source = source;\r\n this.className = [];\r\n this.miscProps = {};\r\n }\r\n EventDef.parse = function (rawInput, source) {\r\n var def = new this(source);\r\n if (def.applyProps(rawInput)) {\r\n return def;\r\n }\r\n return false;\r\n };\r\n EventDef.normalizeId = function (id) {\r\n return String(id);\r\n };\r\n EventDef.generateId = function () {\r\n return '_fc' + (EventDef.uuid++);\r\n };\r\n EventDef.prototype.clone = function () {\r\n var copy = new this.constructor(this.source);\r\n copy.id = this.id;\r\n copy.rawId = this.rawId;\r\n copy.uid = this.uid; // not really unique anymore :(\r\n EventDef.copyVerbatimStandardProps(this, copy);\r\n copy.className = this.className.slice(); // copy\r\n copy.miscProps = $.extend({}, this.miscProps);\r\n return copy;\r\n };\r\n EventDef.prototype.hasInverseRendering = function () {\r\n return this.getRendering() === 'inverse-background';\r\n };\r\n EventDef.prototype.hasBgRendering = function () {\r\n var rendering = this.getRendering();\r\n return rendering === 'inverse-background' || rendering === 'background';\r\n };\r\n EventDef.prototype.getRendering = function () {\r\n if (this.rendering != null) {\r\n return this.rendering;\r\n }\r\n return this.source.rendering;\r\n };\r\n EventDef.prototype.getConstraint = function () {\r\n if (this.constraint != null) {\r\n return this.constraint;\r\n }\r\n if (this.source.constraint != null) {\r\n return this.source.constraint;\r\n }\r\n return this.source.calendar.opt('eventConstraint'); // what about View option?\r\n };\r\n EventDef.prototype.getOverlap = function () {\r\n if (this.overlap != null) {\r\n return this.overlap;\r\n }\r\n if (this.source.overlap != null) {\r\n return this.source.overlap;\r\n }\r\n return this.source.calendar.opt('eventOverlap'); // what about View option?\r\n };\r\n EventDef.prototype.isStartExplicitlyEditable = function () {\r\n if (this.startEditable != null) {\r\n return this.startEditable;\r\n }\r\n return this.source.startEditable;\r\n };\r\n EventDef.prototype.isDurationExplicitlyEditable = function () {\r\n if (this.durationEditable != null) {\r\n return this.durationEditable;\r\n }\r\n return this.source.durationEditable;\r\n };\r\n EventDef.prototype.isExplicitlyEditable = function () {\r\n if (this.editable != null) {\r\n return this.editable;\r\n }\r\n return this.source.editable;\r\n };\r\n EventDef.prototype.toLegacy = function () {\r\n var obj = $.extend({}, this.miscProps);\r\n obj._id = this.uid;\r\n obj.source = this.source;\r\n obj.className = this.className.slice(); // copy\r\n obj.allDay = this.isAllDay();\r\n if (this.rawId != null) {\r\n obj.id = this.rawId;\r\n }\r\n EventDef.copyVerbatimStandardProps(this, obj);\r\n return obj;\r\n };\r\n EventDef.prototype.applyManualStandardProps = function (rawProps) {\r\n if (rawProps.id != null) {\r\n this.id = EventDef.normalizeId((this.rawId = rawProps.id));\r\n }\r\n else {\r\n this.id = EventDef.generateId();\r\n }\r\n if (rawProps._id != null) { // accept this prop, even tho somewhat internal\r\n this.uid = String(rawProps._id);\r\n }\r\n else {\r\n this.uid = EventDef.generateId();\r\n }\r\n // TODO: converge with EventSource\r\n if ($.isArray(rawProps.className)) {\r\n this.className = rawProps.className;\r\n }\r\n if (typeof rawProps.className === 'string') {\r\n this.className = rawProps.className.split(/\\s+/);\r\n }\r\n return true;\r\n };\r\n EventDef.prototype.applyMiscProps = function (rawProps) {\r\n $.extend(this.miscProps, rawProps);\r\n };\r\n EventDef.uuid = 0;\r\n EventDef.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps;\r\n EventDef.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps;\r\n return EventDef;\r\n}());\r\nexports.default = EventDef;\r\nParsableModelMixin_1.default.mixInto(EventDef);\r\nEventDef.defineStandardProps({\r\n // not automatically assigned (`false`)\r\n _id: false,\r\n id: false,\r\n className: false,\r\n source: false,\r\n // automatically assigned (`true`)\r\n title: true,\r\n url: true,\r\n rendering: true,\r\n constraint: true,\r\n overlap: true,\r\n editable: true,\r\n startEditable: true,\r\n durationEditable: true,\r\n color: true,\r\n backgroundColor: true,\r\n borderColor: true,\r\n textColor: true\r\n});\r\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.default = {\r\n sourceClasses: [],\r\n registerClass: function (EventSourceClass) {\r\n this.sourceClasses.unshift(EventSourceClass); // give highest priority\r\n },\r\n parse: function (rawInput, calendar) {\r\n var sourceClasses = this.sourceClasses;\r\n var i;\r\n var eventSource;\r\n for (i = 0; i < sourceClasses.length; i++) {\r\n eventSource = sourceClasses[i].parse(rawInput, calendar);\r\n if (eventSource) {\r\n return eventSource;\r\n }\r\n }\r\n }\r\n};\r\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(4);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar EventDef_1 = __webpack_require__(37);\r\nvar EventDefDateMutation_1 = __webpack_require__(40);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventDefMutation = /** @class */ (function () {\r\n function EventDefMutation() {\r\n }\r\n EventDefMutation.createFromRawProps = function (eventInstance, rawProps, largeUnit) {\r\n var eventDef = eventInstance.def;\r\n var dateProps = {};\r\n var standardProps = {};\r\n var miscProps = {};\r\n var verbatimStandardProps = {};\r\n var eventDefId = null;\r\n var className = null;\r\n var propName;\r\n var dateProfile;\r\n var dateMutation;\r\n var defMutation;\r\n for (propName in rawProps) {\r\n if (EventDateProfile_1.default.isStandardProp(propName)) {\r\n dateProps[propName] = rawProps[propName];\r\n }\r\n else if (eventDef.isStandardProp(propName)) {\r\n standardProps[propName] = rawProps[propName];\r\n }\r\n else if (eventDef.miscProps[propName] !== rawProps[propName]) { // only if changed\r\n miscProps[propName] = rawProps[propName];\r\n }\r\n }\r\n dateProfile = EventDateProfile_1.default.parse(dateProps, eventDef.source);\r\n if (dateProfile) { // no failure?\r\n dateMutation = EventDefDateMutation_1.default.createFromDiff(eventInstance.dateProfile, dateProfile, largeUnit);\r\n }\r\n if (standardProps.id !== eventDef.id) {\r\n eventDefId = standardProps.id; // only apply if there's a change\r\n }\r\n if (!util_1.isArraysEqual(standardProps.className, eventDef.className)) {\r\n className = standardProps.className; // only apply if there's a change\r\n }\r\n EventDef_1.default.copyVerbatimStandardProps(standardProps, // src\r\n verbatimStandardProps // dest\r\n );\r\n defMutation = new EventDefMutation();\r\n defMutation.eventDefId = eventDefId;\r\n defMutation.className = className;\r\n defMutation.verbatimStandardProps = verbatimStandardProps;\r\n defMutation.miscProps = miscProps;\r\n if (dateMutation) {\r\n defMutation.dateMutation = dateMutation;\r\n }\r\n return defMutation;\r\n };\r\n /*\r\n eventDef assumed to be a SingleEventDef.\r\n returns an undo function.\r\n */\r\n EventDefMutation.prototype.mutateSingle = function (eventDef) {\r\n var origDateProfile;\r\n if (this.dateMutation) {\r\n origDateProfile = eventDef.dateProfile;\r\n eventDef.dateProfile = this.dateMutation.buildNewDateProfile(origDateProfile, eventDef.source.calendar);\r\n }\r\n // can't undo\r\n // TODO: more DRY with EventDef::applyManualStandardProps\r\n if (this.eventDefId != null) {\r\n eventDef.id = EventDef_1.default.normalizeId((eventDef.rawId = this.eventDefId));\r\n }\r\n // can't undo\r\n // TODO: more DRY with EventDef::applyManualStandardProps\r\n if (this.className) {\r\n eventDef.className = this.className;\r\n }\r\n // can't undo\r\n if (this.verbatimStandardProps) {\r\n SingleEventDef_1.default.copyVerbatimStandardProps(this.verbatimStandardProps, // src\r\n eventDef // dest\r\n );\r\n }\r\n // can't undo\r\n if (this.miscProps) {\r\n eventDef.applyMiscProps(this.miscProps);\r\n }\r\n if (origDateProfile) {\r\n return function () {\r\n eventDef.dateProfile = origDateProfile;\r\n };\r\n }\r\n else {\r\n return function () { };\r\n }\r\n };\r\n EventDefMutation.prototype.setDateMutation = function (dateMutation) {\r\n if (dateMutation && !dateMutation.isEmpty()) {\r\n this.dateMutation = dateMutation;\r\n }\r\n else {\r\n this.dateMutation = null;\r\n }\r\n };\r\n EventDefMutation.prototype.isEmpty = function () {\r\n return !this.dateMutation;\r\n };\r\n return EventDefMutation;\r\n}());\r\nexports.default = EventDefMutation;\r\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(4);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar EventDefDateMutation = /** @class */ (function () {\r\n function EventDefDateMutation() {\r\n this.clearEnd = false;\r\n this.forceTimed = false;\r\n this.forceAllDay = false;\r\n }\r\n EventDefDateMutation.createFromDiff = function (dateProfile0, dateProfile1, largeUnit) {\r\n var clearEnd = dateProfile0.end && !dateProfile1.end;\r\n var forceTimed = dateProfile0.isAllDay() && !dateProfile1.isAllDay();\r\n var forceAllDay = !dateProfile0.isAllDay() && dateProfile1.isAllDay();\r\n var dateDelta;\r\n var endDiff;\r\n var endDelta;\r\n var mutation;\r\n // subtracts the dates in the appropriate way, returning a duration\r\n function subtractDates(date1, date0) {\r\n if (largeUnit) {\r\n return util_1.diffByUnit(date1, date0, largeUnit); // poorly named\r\n }\r\n else if (dateProfile1.isAllDay()) {\r\n return util_1.diffDay(date1, date0); // poorly named\r\n }\r\n else {\r\n return util_1.diffDayTime(date1, date0); // poorly named\r\n }\r\n }\r\n dateDelta = subtractDates(dateProfile1.start, dateProfile0.start);\r\n if (dateProfile1.end) {\r\n // use unzonedRanges because dateProfile0.end might be null\r\n endDiff = subtractDates(dateProfile1.unzonedRange.getEnd(), dateProfile0.unzonedRange.getEnd());\r\n endDelta = endDiff.subtract(dateDelta);\r\n }\r\n mutation = new EventDefDateMutation();\r\n mutation.clearEnd = clearEnd;\r\n mutation.forceTimed = forceTimed;\r\n mutation.forceAllDay = forceAllDay;\r\n mutation.setDateDelta(dateDelta);\r\n mutation.setEndDelta(endDelta);\r\n return mutation;\r\n };\r\n /*\r\n returns an undo function.\r\n */\r\n EventDefDateMutation.prototype.buildNewDateProfile = function (eventDateProfile, calendar) {\r\n var start = eventDateProfile.start.clone();\r\n var end = null;\r\n var shouldRezone = false;\r\n if (eventDateProfile.end && !this.clearEnd) {\r\n end = eventDateProfile.end.clone();\r\n }\r\n else if (this.endDelta && !end) {\r\n end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start);\r\n }\r\n if (this.forceTimed) {\r\n shouldRezone = true;\r\n if (!start.hasTime()) {\r\n start.time(0);\r\n }\r\n if (end && !end.hasTime()) {\r\n end.time(0);\r\n }\r\n }\r\n else if (this.forceAllDay) {\r\n if (start.hasTime()) {\r\n start.stripTime();\r\n }\r\n if (end && end.hasTime()) {\r\n end.stripTime();\r\n }\r\n }\r\n if (this.dateDelta) {\r\n shouldRezone = true;\r\n start.add(this.dateDelta);\r\n if (end) {\r\n end.add(this.dateDelta);\r\n }\r\n }\r\n // do this before adding startDelta to start, so we can work off of start\r\n if (this.endDelta) {\r\n shouldRezone = true;\r\n end.add(this.endDelta);\r\n }\r\n if (this.startDelta) {\r\n shouldRezone = true;\r\n start.add(this.startDelta);\r\n }\r\n if (shouldRezone) {\r\n start = calendar.applyTimezone(start);\r\n if (end) {\r\n end = calendar.applyTimezone(end);\r\n }\r\n }\r\n // TODO: okay to access calendar option?\r\n if (!end && calendar.opt('forceEventDuration')) {\r\n end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start);\r\n }\r\n return new EventDateProfile_1.default(start, end, calendar);\r\n };\r\n EventDefDateMutation.prototype.setDateDelta = function (dateDelta) {\r\n if (dateDelta && dateDelta.valueOf()) {\r\n this.dateDelta = dateDelta;\r\n }\r\n else {\r\n this.dateDelta = null;\r\n }\r\n };\r\n EventDefDateMutation.prototype.setStartDelta = function (startDelta) {\r\n if (startDelta && startDelta.valueOf()) {\r\n this.startDelta = startDelta;\r\n }\r\n else {\r\n this.startDelta = null;\r\n }\r\n };\r\n EventDefDateMutation.prototype.setEndDelta = function (endDelta) {\r\n if (endDelta && endDelta.valueOf()) {\r\n this.endDelta = endDelta;\r\n }\r\n else {\r\n this.endDelta = null;\r\n }\r\n };\r\n EventDefDateMutation.prototype.isEmpty = function () {\r\n return !this.clearEnd && !this.forceTimed && !this.forceAllDay &&\r\n !this.dateDelta && !this.startDelta && !this.endDelta;\r\n };\r\n return EventDefDateMutation;\r\n}());\r\nexports.default = EventDefDateMutation;\r\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Class_1 = __webpack_require__(35);\r\n/*\r\nEmbodies a div that has potential scrollbars\r\n*/\r\nvar Scroller = /** @class */ (function (_super) {\r\n tslib_1.__extends(Scroller, _super);\r\n function Scroller(options) {\r\n var _this = _super.call(this) || this;\r\n options = options || {};\r\n _this.overflowX = options.overflowX || options.overflow || 'auto';\r\n _this.overflowY = options.overflowY || options.overflow || 'auto';\r\n return _this;\r\n }\r\n Scroller.prototype.render = function () {\r\n this.el = this.renderEl();\r\n this.applyOverflow();\r\n };\r\n Scroller.prototype.renderEl = function () {\r\n return (this.scrollEl = $('
'));\r\n };\r\n // sets to natural height, unlocks overflow\r\n Scroller.prototype.clear = function () {\r\n this.setHeight('auto');\r\n this.applyOverflow();\r\n };\r\n Scroller.prototype.destroy = function () {\r\n this.el.remove();\r\n };\r\n // Overflow\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Scroller.prototype.applyOverflow = function () {\r\n this.scrollEl.css({\r\n 'overflow-x': this.overflowX,\r\n 'overflow-y': this.overflowY\r\n });\r\n };\r\n // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'.\r\n // Useful for preserving scrollbar widths regardless of future resizes.\r\n // Can pass in scrollbarWidths for optimization.\r\n Scroller.prototype.lockOverflow = function (scrollbarWidths) {\r\n var overflowX = this.overflowX;\r\n var overflowY = this.overflowY;\r\n scrollbarWidths = scrollbarWidths || this.getScrollbarWidths();\r\n if (overflowX === 'auto') {\r\n overflowX = (scrollbarWidths.top || scrollbarWidths.bottom || // horizontal scrollbars?\r\n // OR scrolling pane with massless scrollbars?\r\n this.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth\r\n // subtract 1 because of IE off-by-one issue\r\n ) ? 'scroll' : 'hidden';\r\n }\r\n if (overflowY === 'auto') {\r\n overflowY = (scrollbarWidths.left || scrollbarWidths.right || // vertical scrollbars?\r\n // OR scrolling pane with massless scrollbars?\r\n this.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight\r\n // subtract 1 because of IE off-by-one issue\r\n ) ? 'scroll' : 'hidden';\r\n }\r\n this.scrollEl.css({ 'overflow-x': overflowX, 'overflow-y': overflowY });\r\n };\r\n // Getters / Setters\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Scroller.prototype.setHeight = function (height) {\r\n this.scrollEl.height(height);\r\n };\r\n Scroller.prototype.getScrollTop = function () {\r\n return this.scrollEl.scrollTop();\r\n };\r\n Scroller.prototype.setScrollTop = function (top) {\r\n this.scrollEl.scrollTop(top);\r\n };\r\n Scroller.prototype.getClientWidth = function () {\r\n return this.scrollEl[0].clientWidth;\r\n };\r\n Scroller.prototype.getClientHeight = function () {\r\n return this.scrollEl[0].clientHeight;\r\n };\r\n Scroller.prototype.getScrollbarWidths = function () {\r\n return util_1.getScrollbarWidths(this.scrollEl);\r\n };\r\n return Scroller;\r\n}(Class_1.default));\r\nexports.default = Scroller;\r\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar DateComponent_1 = __webpack_require__(231);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\nvar InteractiveDateComponent = /** @class */ (function (_super) {\r\n tslib_1.__extends(InteractiveDateComponent, _super);\r\n function InteractiveDateComponent(_view, _options) {\r\n var _this = _super.call(this, _view, _options) || this;\r\n // self-config, overridable by subclasses\r\n _this.segSelector = '.fc-event-container > *'; // what constitutes an event element?\r\n if (_this.dateSelectingClass) {\r\n _this.dateClicking = new _this.dateClickingClass(_this);\r\n }\r\n if (_this.dateSelectingClass) {\r\n _this.dateSelecting = new _this.dateSelectingClass(_this);\r\n }\r\n if (_this.eventPointingClass) {\r\n _this.eventPointing = new _this.eventPointingClass(_this);\r\n }\r\n if (_this.eventDraggingClass && _this.eventPointing) {\r\n _this.eventDragging = new _this.eventDraggingClass(_this, _this.eventPointing);\r\n }\r\n if (_this.eventResizingClass && _this.eventPointing) {\r\n _this.eventResizing = new _this.eventResizingClass(_this, _this.eventPointing);\r\n }\r\n if (_this.externalDroppingClass) {\r\n _this.externalDropping = new _this.externalDroppingClass(_this);\r\n }\r\n return _this;\r\n }\r\n // Sets the container element that the view should render inside of, does global DOM-related initializations,\r\n // and renders all the non-date-related content inside.\r\n InteractiveDateComponent.prototype.setElement = function (el) {\r\n _super.prototype.setElement.call(this, el);\r\n if (this.dateClicking) {\r\n this.dateClicking.bindToEl(el);\r\n }\r\n if (this.dateSelecting) {\r\n this.dateSelecting.bindToEl(el);\r\n }\r\n this.bindAllSegHandlersToEl(el);\r\n };\r\n InteractiveDateComponent.prototype.removeElement = function () {\r\n this.endInteractions();\r\n _super.prototype.removeElement.call(this);\r\n };\r\n InteractiveDateComponent.prototype.executeEventUnrender = function () {\r\n this.endInteractions();\r\n _super.prototype.executeEventUnrender.call(this);\r\n };\r\n InteractiveDateComponent.prototype.bindGlobalHandlers = function () {\r\n _super.prototype.bindGlobalHandlers.call(this);\r\n if (this.externalDropping) {\r\n this.externalDropping.bindToDocument();\r\n }\r\n };\r\n InteractiveDateComponent.prototype.unbindGlobalHandlers = function () {\r\n _super.prototype.unbindGlobalHandlers.call(this);\r\n if (this.externalDropping) {\r\n this.externalDropping.unbindFromDocument();\r\n }\r\n };\r\n InteractiveDateComponent.prototype.bindDateHandlerToEl = function (el, name, handler) {\r\n var _this = this;\r\n // attach a handler to the grid's root element.\r\n // jQuery will take care of unregistering them when removeElement gets called.\r\n this.el.on(name, function (ev) {\r\n if (!$(ev.target).is(_this.segSelector + ':not(.fc-helper),' + // directly on an event element\r\n _this.segSelector + ':not(.fc-helper) *,' + // within an event element\r\n '.fc-more,' + // a \"more..\" link\r\n 'a[data-goto]' // a clickable nav link\r\n )) {\r\n return handler.call(_this, ev);\r\n }\r\n });\r\n };\r\n InteractiveDateComponent.prototype.bindAllSegHandlersToEl = function (el) {\r\n [\r\n this.eventPointing,\r\n this.eventDragging,\r\n this.eventResizing\r\n ].forEach(function (eventInteraction) {\r\n if (eventInteraction) {\r\n eventInteraction.bindToEl(el);\r\n }\r\n });\r\n };\r\n InteractiveDateComponent.prototype.bindSegHandlerToEl = function (el, name, handler) {\r\n var _this = this;\r\n el.on(name, this.segSelector, function (ev) {\r\n var segEl = $(ev.currentTarget);\r\n if (!segEl.is('.fc-helper')) {\r\n var seg = segEl.data('fc-seg'); // grab segment data. put there by View::renderEventsPayload\r\n if (seg && !_this.shouldIgnoreEventPointing()) {\r\n return handler.call(_this, seg, ev); // context will be the Grid\r\n }\r\n }\r\n });\r\n };\r\n InteractiveDateComponent.prototype.shouldIgnoreMouse = function () {\r\n // HACK\r\n // This will still work even though bindDateHandlerToEl doesn't use GlobalEmitter.\r\n return GlobalEmitter_1.default.get().shouldIgnoreMouse();\r\n };\r\n InteractiveDateComponent.prototype.shouldIgnoreTouch = function () {\r\n var view = this._getView();\r\n // On iOS (and Android?) when a new selection is initiated overtop another selection,\r\n // the touchend never fires because the elements gets removed mid-touch-interaction (my theory).\r\n // HACK: simply don't allow this to happen.\r\n // ALSO: prevent selection when an *event* is already raised.\r\n return view.isSelected || view.selectedEvent;\r\n };\r\n InteractiveDateComponent.prototype.shouldIgnoreEventPointing = function () {\r\n // only call the handlers if there is not a drag/resize in progress\r\n return (this.eventDragging && this.eventDragging.isDragging) ||\r\n (this.eventResizing && this.eventResizing.isResizing);\r\n };\r\n InteractiveDateComponent.prototype.canStartSelection = function (seg, ev) {\r\n return util_1.getEvIsTouch(ev) &&\r\n !this.canStartResize(seg, ev) &&\r\n (this.isEventDefDraggable(seg.footprint.eventDef) ||\r\n this.isEventDefResizable(seg.footprint.eventDef));\r\n };\r\n InteractiveDateComponent.prototype.canStartDrag = function (seg, ev) {\r\n return !this.canStartResize(seg, ev) &&\r\n this.isEventDefDraggable(seg.footprint.eventDef);\r\n };\r\n InteractiveDateComponent.prototype.canStartResize = function (seg, ev) {\r\n var view = this._getView();\r\n var eventDef = seg.footprint.eventDef;\r\n return (!util_1.getEvIsTouch(ev) || view.isEventDefSelected(eventDef)) &&\r\n this.isEventDefResizable(eventDef) &&\r\n $(ev.target).is('.fc-resizer');\r\n };\r\n // Kills all in-progress dragging.\r\n // Useful for when public API methods that result in re-rendering are invoked during a drag.\r\n // Also useful for when touch devices misbehave and don't fire their touchend.\r\n InteractiveDateComponent.prototype.endInteractions = function () {\r\n [\r\n this.dateClicking,\r\n this.dateSelecting,\r\n this.eventPointing,\r\n this.eventDragging,\r\n this.eventResizing\r\n ].forEach(function (interaction) {\r\n if (interaction) {\r\n interaction.end();\r\n }\r\n });\r\n };\r\n // Event Drag-n-Drop\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Computes if the given event is allowed to be dragged by the user\r\n InteractiveDateComponent.prototype.isEventDefDraggable = function (eventDef) {\r\n return this.isEventDefStartEditable(eventDef);\r\n };\r\n InteractiveDateComponent.prototype.isEventDefStartEditable = function (eventDef) {\r\n var isEditable = eventDef.isStartExplicitlyEditable();\r\n if (isEditable == null) {\r\n isEditable = this.opt('eventStartEditable');\r\n if (isEditable == null) {\r\n isEditable = this.isEventDefGenerallyEditable(eventDef);\r\n }\r\n }\r\n return isEditable;\r\n };\r\n InteractiveDateComponent.prototype.isEventDefGenerallyEditable = function (eventDef) {\r\n var isEditable = eventDef.isExplicitlyEditable();\r\n if (isEditable == null) {\r\n isEditable = this.opt('editable');\r\n }\r\n return isEditable;\r\n };\r\n // Event Resizing\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Computes if the given event is allowed to be resized from its starting edge\r\n InteractiveDateComponent.prototype.isEventDefResizableFromStart = function (eventDef) {\r\n return this.opt('eventResizableFromStart') && this.isEventDefResizable(eventDef);\r\n };\r\n // Computes if the given event is allowed to be resized from its ending edge\r\n InteractiveDateComponent.prototype.isEventDefResizableFromEnd = function (eventDef) {\r\n return this.isEventDefResizable(eventDef);\r\n };\r\n // Computes if the given event is allowed to be resized by the user at all\r\n InteractiveDateComponent.prototype.isEventDefResizable = function (eventDef) {\r\n var isResizable = eventDef.isDurationExplicitlyEditable();\r\n if (isResizable == null) {\r\n isResizable = this.opt('eventDurationEditable');\r\n if (isResizable == null) {\r\n isResizable = this.isEventDefGenerallyEditable(eventDef);\r\n }\r\n }\r\n return isResizable;\r\n };\r\n // Event Mutation / Constraints\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Diffs the two dates, returning a duration, based on granularity of the grid\r\n // TODO: port isTimeScale into this system?\r\n InteractiveDateComponent.prototype.diffDates = function (a, b) {\r\n if (this.largeUnit) {\r\n return util_1.diffByUnit(a, b, this.largeUnit);\r\n }\r\n else {\r\n return util_1.diffDayTime(a, b);\r\n }\r\n };\r\n // is it allowed, in relation to the view's validRange?\r\n // NOTE: very similar to isExternalInstanceGroupAllowed\r\n InteractiveDateComponent.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) {\r\n var view = this._getView();\r\n var dateProfile = this.dateProfile;\r\n var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges());\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n // TODO: just use getAllEventRanges directly\r\n if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) {\r\n return false;\r\n }\r\n }\r\n return view.calendar.constraints.isEventInstanceGroupAllowed(eventInstanceGroup);\r\n };\r\n // NOTE: very similar to isEventInstanceGroupAllowed\r\n // when it's a completely anonymous external drag, no event.\r\n InteractiveDateComponent.prototype.isExternalInstanceGroupAllowed = function (eventInstanceGroup) {\r\n var view = this._getView();\r\n var dateProfile = this.dateProfile;\r\n var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges());\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) {\r\n return false;\r\n }\r\n }\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n // treat it as a selection\r\n // TODO: pass in eventInstanceGroup instead\r\n // because we don't want calendar's constraint system to depend on a component's\r\n // determination of footprints.\r\n if (!view.calendar.constraints.isSelectionFootprintAllowed(eventFootprints[i].componentFootprint)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return InteractiveDateComponent;\r\n}(DateComponent_1.default));\r\nexports.default = InteractiveDateComponent;\r\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar RenderQueue_1 = __webpack_require__(229);\r\nvar DateProfileGenerator_1 = __webpack_require__(55);\r\nvar InteractiveDateComponent_1 = __webpack_require__(42);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\n/* An abstract class from which other views inherit from\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar View = /** @class */ (function (_super) {\r\n tslib_1.__extends(View, _super);\r\n function View(calendar, viewSpec) {\r\n var _this = _super.call(this, null, viewSpec.options) || this;\r\n _this.batchRenderDepth = 0;\r\n _this.isSelected = false; // boolean whether a range of time is user-selected or not\r\n _this.calendar = calendar;\r\n _this.viewSpec = viewSpec;\r\n // shortcuts\r\n _this.type = viewSpec.type;\r\n // .name is deprecated\r\n _this.name = _this.type;\r\n _this.initRenderQueue();\r\n _this.initHiddenDays();\r\n _this.dateProfileGenerator = new _this.dateProfileGeneratorClass(_this);\r\n _this.bindBaseRenderHandlers();\r\n _this.eventOrderSpecs = util_1.parseFieldSpecs(_this.opt('eventOrder'));\r\n // legacy\r\n if (_this['initialize']) {\r\n _this['initialize']();\r\n }\r\n return _this;\r\n }\r\n View.prototype._getView = function () {\r\n return this;\r\n };\r\n // Retrieves an option with the given name\r\n View.prototype.opt = function (name) {\r\n return this.options[name];\r\n };\r\n /* Render Queue\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.initRenderQueue = function () {\r\n this.renderQueue = new RenderQueue_1.default({\r\n event: this.opt('eventRenderWait')\r\n });\r\n this.renderQueue.on('start', this.onRenderQueueStart.bind(this));\r\n this.renderQueue.on('stop', this.onRenderQueueStop.bind(this));\r\n this.on('before:change', this.startBatchRender);\r\n this.on('change', this.stopBatchRender);\r\n };\r\n View.prototype.onRenderQueueStart = function () {\r\n this.calendar.freezeContentHeight();\r\n this.addScroll(this.queryScroll());\r\n };\r\n View.prototype.onRenderQueueStop = function () {\r\n if (this.calendar.updateViewSize()) { // success?\r\n this.popScroll();\r\n }\r\n this.calendar.thawContentHeight();\r\n };\r\n View.prototype.startBatchRender = function () {\r\n if (!(this.batchRenderDepth++)) {\r\n this.renderQueue.pause();\r\n }\r\n };\r\n View.prototype.stopBatchRender = function () {\r\n if (!(--this.batchRenderDepth)) {\r\n this.renderQueue.resume();\r\n }\r\n };\r\n View.prototype.requestRender = function (func, namespace, actionType) {\r\n this.renderQueue.queue(func, namespace, actionType);\r\n };\r\n // given func will auto-bind to `this`\r\n View.prototype.whenSizeUpdated = function (func) {\r\n if (this.renderQueue.isRunning) {\r\n this.renderQueue.one('stop', func.bind(this));\r\n }\r\n else {\r\n func.call(this);\r\n }\r\n };\r\n /* Title and Date Formatting\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Computes what the title at the top of the calendar should be for this view\r\n View.prototype.computeTitle = function (dateProfile) {\r\n var unzonedRange;\r\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\r\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\r\n unzonedRange = dateProfile.currentUnzonedRange;\r\n }\r\n else { // for day units or smaller, use the actual day range\r\n unzonedRange = dateProfile.activeUnzonedRange;\r\n }\r\n return this.formatRange({\r\n start: this.calendar.msToMoment(unzonedRange.startMs, dateProfile.isRangeAllDay),\r\n end: this.calendar.msToMoment(unzonedRange.endMs, dateProfile.isRangeAllDay)\r\n }, dateProfile.isRangeAllDay, this.opt('titleFormat') || this.computeTitleFormat(dateProfile), this.opt('titleRangeSeparator'));\r\n };\r\n // Generates the format string that should be used to generate the title for the current date range.\r\n // Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\r\n View.prototype.computeTitleFormat = function (dateProfile) {\r\n var currentRangeUnit = dateProfile.currentRangeUnit;\r\n if (currentRangeUnit === 'year') {\r\n return 'YYYY';\r\n }\r\n else if (currentRangeUnit === 'month') {\r\n return this.opt('monthYearFormat'); // like \"September 2014\"\r\n }\r\n else if (dateProfile.currentUnzonedRange.as('days') > 1) {\r\n return 'll'; // multi-day range. shorter, like \"Sep 9 - 10 2014\"\r\n }\r\n else {\r\n return 'LL'; // one day. longer, like \"September 9 2014\"\r\n }\r\n };\r\n // Date Setting/Unsetting\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.setDate = function (date) {\r\n var currentDateProfile = this.get('dateProfile');\r\n var newDateProfile = this.dateProfileGenerator.build(date, undefined, true); // forceToValid=true\r\n if (!currentDateProfile ||\r\n !currentDateProfile.activeUnzonedRange.equals(newDateProfile.activeUnzonedRange)) {\r\n this.set('dateProfile', newDateProfile);\r\n }\r\n };\r\n View.prototype.unsetDate = function () {\r\n this.unset('dateProfile');\r\n };\r\n // Event Data\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.fetchInitialEvents = function (dateProfile) {\r\n var calendar = this.calendar;\r\n var forceAllDay = dateProfile.isRangeAllDay && !this.usesMinMaxTime;\r\n return calendar.requestEvents(calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, forceAllDay), calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, forceAllDay));\r\n };\r\n View.prototype.bindEventChanges = function () {\r\n this.listenTo(this.calendar, 'eventsReset', this.resetEvents); // TODO: make this a real event\r\n };\r\n View.prototype.unbindEventChanges = function () {\r\n this.stopListeningTo(this.calendar, 'eventsReset');\r\n };\r\n View.prototype.setEvents = function (eventsPayload) {\r\n this.set('currentEvents', eventsPayload);\r\n this.set('hasEvents', true);\r\n };\r\n View.prototype.unsetEvents = function () {\r\n this.unset('currentEvents');\r\n this.unset('hasEvents');\r\n };\r\n View.prototype.resetEvents = function (eventsPayload) {\r\n this.startBatchRender();\r\n this.unsetEvents();\r\n this.setEvents(eventsPayload);\r\n this.stopBatchRender();\r\n };\r\n // Date High-level Rendering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.requestDateRender = function (dateProfile) {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.executeDateRender(dateProfile);\r\n }, 'date', 'init');\r\n };\r\n View.prototype.requestDateUnrender = function () {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.executeDateUnrender();\r\n }, 'date', 'destroy');\r\n };\r\n // if dateProfile not specified, uses current\r\n View.prototype.executeDateRender = function (dateProfile) {\r\n _super.prototype.executeDateRender.call(this, dateProfile);\r\n if (this['render']) {\r\n this['render'](); // TODO: deprecate\r\n }\r\n this.trigger('datesRendered');\r\n this.addScroll({ isDateInit: true });\r\n this.startNowIndicator(); // shouldn't render yet because updateSize will be called soon\r\n };\r\n View.prototype.executeDateUnrender = function () {\r\n this.unselect();\r\n this.stopNowIndicator();\r\n this.trigger('before:datesUnrendered');\r\n if (this['destroy']) {\r\n this['destroy'](); // TODO: deprecate\r\n }\r\n _super.prototype.executeDateUnrender.call(this);\r\n };\r\n // \"Base\" rendering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.bindBaseRenderHandlers = function () {\r\n var _this = this;\r\n this.on('datesRendered', function () {\r\n _this.whenSizeUpdated(_this.triggerViewRender);\r\n });\r\n this.on('before:datesUnrendered', function () {\r\n _this.triggerViewDestroy();\r\n });\r\n };\r\n View.prototype.triggerViewRender = function () {\r\n this.publiclyTrigger('viewRender', {\r\n context: this,\r\n args: [this, this.el]\r\n });\r\n };\r\n View.prototype.triggerViewDestroy = function () {\r\n this.publiclyTrigger('viewDestroy', {\r\n context: this,\r\n args: [this, this.el]\r\n });\r\n };\r\n // Event High-level Rendering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.requestEventsRender = function (eventsPayload) {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.executeEventRender(eventsPayload);\r\n _this.whenSizeUpdated(_this.triggerAfterEventsRendered);\r\n }, 'event', 'init');\r\n };\r\n View.prototype.requestEventsUnrender = function () {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.triggerBeforeEventsDestroyed();\r\n _this.executeEventUnrender();\r\n }, 'event', 'destroy');\r\n };\r\n // Business Hour High-level Rendering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.requestBusinessHoursRender = function (businessHourGenerator) {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.renderBusinessHours(businessHourGenerator);\r\n }, 'businessHours', 'init');\r\n };\r\n View.prototype.requestBusinessHoursUnrender = function () {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.unrenderBusinessHours();\r\n }, 'businessHours', 'destroy');\r\n };\r\n // Misc view rendering utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Binds DOM handlers to elements that reside outside the view container, such as the document\r\n View.prototype.bindGlobalHandlers = function () {\r\n _super.prototype.bindGlobalHandlers.call(this);\r\n this.listenTo(GlobalEmitter_1.default.get(), {\r\n touchstart: this.processUnselect,\r\n mousedown: this.handleDocumentMousedown\r\n });\r\n };\r\n // Unbinds DOM handlers from elements that reside outside the view container\r\n View.prototype.unbindGlobalHandlers = function () {\r\n _super.prototype.unbindGlobalHandlers.call(this);\r\n this.stopListeningTo(GlobalEmitter_1.default.get());\r\n };\r\n /* Now Indicator\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Immediately render the current time indicator and begins re-rendering it at an interval,\r\n // which is defined by this.getNowIndicatorUnit().\r\n // TODO: somehow do this for the current whole day's background too\r\n View.prototype.startNowIndicator = function () {\r\n var _this = this;\r\n var unit;\r\n var update;\r\n var delay; // ms wait value\r\n if (this.opt('nowIndicator')) {\r\n unit = this.getNowIndicatorUnit();\r\n if (unit) {\r\n update = util_1.proxy(this, 'updateNowIndicator'); // bind to `this`\r\n this.initialNowDate = this.calendar.getNow();\r\n this.initialNowQueriedMs = new Date().valueOf();\r\n // wait until the beginning of the next interval\r\n delay = this.initialNowDate.clone().startOf(unit).add(1, unit).valueOf() - this.initialNowDate.valueOf();\r\n this.nowIndicatorTimeoutID = setTimeout(function () {\r\n _this.nowIndicatorTimeoutID = null;\r\n update();\r\n delay = +moment.duration(1, unit);\r\n delay = Math.max(100, delay); // prevent too frequent\r\n _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval\r\n }, delay);\r\n }\r\n // rendering will be initiated in updateSize\r\n }\r\n };\r\n // rerenders the now indicator, computing the new current time from the amount of time that has passed\r\n // since the initial getNow call.\r\n View.prototype.updateNowIndicator = function () {\r\n if (this.isDatesRendered &&\r\n this.initialNowDate // activated before?\r\n ) {\r\n this.unrenderNowIndicator(); // won't unrender if unnecessary\r\n this.renderNowIndicator(this.initialNowDate.clone().add(new Date().valueOf() - this.initialNowQueriedMs) // add ms\r\n );\r\n this.isNowIndicatorRendered = true;\r\n }\r\n };\r\n // Immediately unrenders the view's current time indicator and stops any re-rendering timers.\r\n // Won't cause side effects if indicator isn't rendered.\r\n View.prototype.stopNowIndicator = function () {\r\n if (this.isNowIndicatorRendered) {\r\n if (this.nowIndicatorTimeoutID) {\r\n clearTimeout(this.nowIndicatorTimeoutID);\r\n this.nowIndicatorTimeoutID = null;\r\n }\r\n if (this.nowIndicatorIntervalID) {\r\n clearInterval(this.nowIndicatorIntervalID);\r\n this.nowIndicatorIntervalID = null;\r\n }\r\n this.unrenderNowIndicator();\r\n this.isNowIndicatorRendered = false;\r\n }\r\n };\r\n /* Dimensions\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n if (this['setHeight']) { // for legacy API\r\n this['setHeight'](totalHeight, isAuto);\r\n }\r\n else {\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n }\r\n this.updateNowIndicator();\r\n };\r\n /* Scroller\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.addScroll = function (scroll) {\r\n var queuedScroll = this.queuedScroll || (this.queuedScroll = {});\r\n $.extend(queuedScroll, scroll);\r\n };\r\n View.prototype.popScroll = function () {\r\n this.applyQueuedScroll();\r\n this.queuedScroll = null;\r\n };\r\n View.prototype.applyQueuedScroll = function () {\r\n if (this.queuedScroll) {\r\n this.applyScroll(this.queuedScroll);\r\n }\r\n };\r\n View.prototype.queryScroll = function () {\r\n var scroll = {};\r\n if (this.isDatesRendered) {\r\n $.extend(scroll, this.queryDateScroll());\r\n }\r\n return scroll;\r\n };\r\n View.prototype.applyScroll = function (scroll) {\r\n if (scroll.isDateInit && this.isDatesRendered) {\r\n $.extend(scroll, this.computeInitialDateScroll());\r\n }\r\n if (this.isDatesRendered) {\r\n this.applyDateScroll(scroll);\r\n }\r\n };\r\n View.prototype.computeInitialDateScroll = function () {\r\n return {}; // subclasses must implement\r\n };\r\n View.prototype.queryDateScroll = function () {\r\n return {}; // subclasses must implement\r\n };\r\n View.prototype.applyDateScroll = function (scroll) {\r\n // subclasses must implement\r\n };\r\n /* Event Drag-n-Drop\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.reportEventDrop = function (eventInstance, eventMutation, el, ev) {\r\n var eventManager = this.calendar.eventManager;\r\n var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation);\r\n var dateMutation = eventMutation.dateMutation;\r\n // update the EventInstance, for handlers\r\n if (dateMutation) {\r\n eventInstance.dateProfile = dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar);\r\n }\r\n this.triggerEventDrop(eventInstance, \r\n // a drop doesn't necessarily mean a date mutation (ex: resource change)\r\n (dateMutation && dateMutation.dateDelta) || moment.duration(), undoFunc, el, ev);\r\n };\r\n // Triggers event-drop handlers that have subscribed via the API\r\n View.prototype.triggerEventDrop = function (eventInstance, dateDelta, undoFunc, el, ev) {\r\n this.publiclyTrigger('eventDrop', {\r\n context: el[0],\r\n args: [\r\n eventInstance.toLegacy(),\r\n dateDelta,\r\n undoFunc,\r\n ev,\r\n {},\r\n this\r\n ]\r\n });\r\n };\r\n /* External Element Drag-n-Drop\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Must be called when an external element, via jQuery UI, has been dropped onto the calendar.\r\n // `meta` is the parsed data that has been embedded into the dragging event.\r\n // `dropLocation` is an object that contains the new zoned start/end/allDay values for the event.\r\n View.prototype.reportExternalDrop = function (singleEventDef, isEvent, isSticky, el, ev, ui) {\r\n if (isEvent) {\r\n this.calendar.eventManager.addEventDef(singleEventDef, isSticky);\r\n }\r\n this.triggerExternalDrop(singleEventDef, isEvent, el, ev, ui);\r\n };\r\n // Triggers external-drop handlers that have subscribed via the API\r\n View.prototype.triggerExternalDrop = function (singleEventDef, isEvent, el, ev, ui) {\r\n // trigger 'drop' regardless of whether element represents an event\r\n this.publiclyTrigger('drop', {\r\n context: el[0],\r\n args: [\r\n singleEventDef.dateProfile.start.clone(),\r\n ev,\r\n ui,\r\n this\r\n ]\r\n });\r\n if (isEvent) {\r\n // signal an external event landed\r\n this.publiclyTrigger('eventReceive', {\r\n context: this,\r\n args: [\r\n singleEventDef.buildInstance().toLegacy(),\r\n this\r\n ]\r\n });\r\n }\r\n };\r\n /* Event Resizing\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Must be called when an event in the view has been resized to a new length\r\n View.prototype.reportEventResize = function (eventInstance, eventMutation, el, ev) {\r\n var eventManager = this.calendar.eventManager;\r\n var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation);\r\n // update the EventInstance, for handlers\r\n eventInstance.dateProfile = eventMutation.dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar);\r\n var resizeDelta = eventMutation.dateMutation.endDelta || eventMutation.dateMutation.startDelta;\r\n this.triggerEventResize(eventInstance, resizeDelta, undoFunc, el, ev);\r\n };\r\n // Triggers event-resize handlers that have subscribed via the API\r\n View.prototype.triggerEventResize = function (eventInstance, resizeDelta, undoFunc, el, ev) {\r\n this.publiclyTrigger('eventResize', {\r\n context: el[0],\r\n args: [\r\n eventInstance.toLegacy(),\r\n resizeDelta,\r\n undoFunc,\r\n ev,\r\n {},\r\n this\r\n ]\r\n });\r\n };\r\n /* Selection (time range)\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Selects a date span on the view. `start` and `end` are both Moments.\r\n // `ev` is the native mouse event that begin the interaction.\r\n View.prototype.select = function (footprint, ev) {\r\n this.unselect(ev);\r\n this.renderSelectionFootprint(footprint);\r\n this.reportSelection(footprint, ev);\r\n };\r\n View.prototype.renderSelectionFootprint = function (footprint) {\r\n if (this['renderSelection']) { // legacy method in custom view classes\r\n this['renderSelection'](footprint.toLegacy(this.calendar));\r\n }\r\n else {\r\n _super.prototype.renderSelectionFootprint.call(this, footprint);\r\n }\r\n };\r\n // Called when a new selection is made. Updates internal state and triggers handlers.\r\n View.prototype.reportSelection = function (footprint, ev) {\r\n this.isSelected = true;\r\n this.triggerSelect(footprint, ev);\r\n };\r\n // Triggers handlers to 'select'\r\n View.prototype.triggerSelect = function (footprint, ev) {\r\n var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of \"Event\"DateProfile?\r\n this.publiclyTrigger('select', {\r\n context: this,\r\n args: [\r\n dateProfile.start,\r\n dateProfile.end,\r\n ev,\r\n this\r\n ]\r\n });\r\n };\r\n // Undoes a selection. updates in the internal state and triggers handlers.\r\n // `ev` is the native mouse event that began the interaction.\r\n View.prototype.unselect = function (ev) {\r\n if (this.isSelected) {\r\n this.isSelected = false;\r\n if (this['destroySelection']) {\r\n this['destroySelection'](); // TODO: deprecate\r\n }\r\n this.unrenderSelection();\r\n this.publiclyTrigger('unselect', {\r\n context: this,\r\n args: [ev, this]\r\n });\r\n }\r\n };\r\n /* Event Selection\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.selectEventInstance = function (eventInstance) {\r\n if (!this.selectedEventInstance ||\r\n this.selectedEventInstance !== eventInstance) {\r\n this.unselectEventInstance();\r\n this.getEventSegs().forEach(function (seg) {\r\n if (seg.footprint.eventInstance === eventInstance &&\r\n seg.el // necessary?\r\n ) {\r\n seg.el.addClass('fc-selected');\r\n }\r\n });\r\n this.selectedEventInstance = eventInstance;\r\n }\r\n };\r\n View.prototype.unselectEventInstance = function () {\r\n if (this.selectedEventInstance) {\r\n this.getEventSegs().forEach(function (seg) {\r\n if (seg.el) { // necessary?\r\n seg.el.removeClass('fc-selected');\r\n }\r\n });\r\n this.selectedEventInstance = null;\r\n }\r\n };\r\n View.prototype.isEventDefSelected = function (eventDef) {\r\n // event references might change on refetchEvents(), while selectedEventInstance doesn't,\r\n // so compare IDs\r\n return this.selectedEventInstance && this.selectedEventInstance.def.id === eventDef.id;\r\n };\r\n /* Mouse / Touch Unselecting (time range & event unselection)\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // TODO: move consistently to down/start or up/end?\r\n // TODO: don't kill previous selection if touch scrolling\r\n View.prototype.handleDocumentMousedown = function (ev) {\r\n if (util_1.isPrimaryMouseButton(ev)) {\r\n this.processUnselect(ev);\r\n }\r\n };\r\n View.prototype.processUnselect = function (ev) {\r\n this.processRangeUnselect(ev);\r\n this.processEventUnselect(ev);\r\n };\r\n View.prototype.processRangeUnselect = function (ev) {\r\n var ignore;\r\n // is there a time-range selection?\r\n if (this.isSelected && this.opt('unselectAuto')) {\r\n // only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element\r\n ignore = this.opt('unselectCancel');\r\n if (!ignore || !$(ev.target).closest(ignore).length) {\r\n this.unselect(ev);\r\n }\r\n }\r\n };\r\n View.prototype.processEventUnselect = function (ev) {\r\n if (this.selectedEventInstance) {\r\n if (!$(ev.target).closest('.fc-selected').length) {\r\n this.unselectEventInstance();\r\n }\r\n }\r\n };\r\n /* Triggers\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.triggerBaseRendered = function () {\r\n this.publiclyTrigger('viewRender', {\r\n context: this,\r\n args: [this, this.el]\r\n });\r\n };\r\n View.prototype.triggerBaseUnrendered = function () {\r\n this.publiclyTrigger('viewDestroy', {\r\n context: this,\r\n args: [this, this.el]\r\n });\r\n };\r\n // Triggers handlers to 'dayClick'\r\n // Span has start/end of the clicked area. Only the start is useful.\r\n View.prototype.triggerDayClick = function (footprint, dayEl, ev) {\r\n var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of \"Event\"DateProfile?\r\n this.publiclyTrigger('dayClick', {\r\n context: dayEl,\r\n args: [dateProfile.start, ev, this]\r\n });\r\n };\r\n /* Date Utils\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // For DateComponent::getDayClasses\r\n View.prototype.isDateInOtherMonth = function (date, dateProfile) {\r\n return false;\r\n };\r\n // Arguments after name will be forwarded to a hypothetical function value\r\n // WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects.\r\n // Always clone your objects if you fear mutation.\r\n View.prototype.getUnzonedRangeOption = function (name) {\r\n var val = this.opt(name);\r\n if (typeof val === 'function') {\r\n val = val.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n if (val) {\r\n return this.calendar.parseUnzonedRange(val);\r\n }\r\n };\r\n /* Hidden Days\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Initializes internal variables related to calculating hidden days-of-week\r\n View.prototype.initHiddenDays = function () {\r\n var hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden\r\n var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\r\n var dayCnt = 0;\r\n var i;\r\n if (this.opt('weekends') === false) {\r\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\r\n }\r\n for (i = 0; i < 7; i++) {\r\n if (!(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1)) {\r\n dayCnt++;\r\n }\r\n }\r\n if (!dayCnt) {\r\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\r\n }\r\n this.isHiddenDayHash = isHiddenDayHash;\r\n };\r\n // Remove days from the beginning and end of the range that are computed as hidden.\r\n // If the whole range is trimmed off, returns null\r\n View.prototype.trimHiddenDays = function (inputUnzonedRange) {\r\n var start = inputUnzonedRange.getStart();\r\n var end = inputUnzonedRange.getEnd();\r\n if (start) {\r\n start = this.skipHiddenDays(start);\r\n }\r\n if (end) {\r\n end = this.skipHiddenDays(end, -1, true);\r\n }\r\n if (start === null || end === null || start < end) {\r\n return new UnzonedRange_1.default(start, end);\r\n }\r\n return null;\r\n };\r\n // Is the current day hidden?\r\n // `day` is a day-of-week index (0-6), or a Moment\r\n View.prototype.isHiddenDay = function (day) {\r\n if (moment.isMoment(day)) {\r\n day = day.day();\r\n }\r\n return this.isHiddenDayHash[day];\r\n };\r\n // Incrementing the current day until it is no longer a hidden day, returning a copy.\r\n // DOES NOT CONSIDER validUnzonedRange!\r\n // If the initial value of `date` is not a hidden day, don't do anything.\r\n // Pass `isExclusive` as `true` if you are dealing with an end date.\r\n // `inc` defaults to `1` (increment one day forward each time)\r\n View.prototype.skipHiddenDays = function (date, inc, isExclusive) {\r\n if (inc === void 0) { inc = 1; }\r\n if (isExclusive === void 0) { isExclusive = false; }\r\n var out = date.clone();\r\n while (this.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7]) {\r\n out.add(inc, 'days');\r\n }\r\n return out;\r\n };\r\n return View;\r\n}(InteractiveDateComponent_1.default));\r\nexports.default = View;\r\nView.prototype.usesMinMaxTime = false;\r\nView.prototype.dateProfileGeneratorClass = DateProfileGenerator_1.default;\r\nView.watch('displayingDates', ['isInDom', 'dateProfile'], function (deps) {\r\n this.requestDateRender(deps.dateProfile);\r\n}, function () {\r\n this.requestDateUnrender();\r\n});\r\nView.watch('displayingBusinessHours', ['displayingDates', 'businessHourGenerator'], function (deps) {\r\n this.requestBusinessHoursRender(deps.businessHourGenerator);\r\n}, function () {\r\n this.requestBusinessHoursUnrender();\r\n});\r\nView.watch('initialEvents', ['dateProfile'], function (deps) {\r\n return this.fetchInitialEvents(deps.dateProfile);\r\n});\r\nView.watch('bindingEvents', ['initialEvents'], function (deps) {\r\n this.setEvents(deps.initialEvents);\r\n this.bindEventChanges();\r\n}, function () {\r\n this.unbindEventChanges();\r\n this.unsetEvents();\r\n});\r\nView.watch('displayingEvents', ['displayingDates', 'hasEvents'], function () {\r\n this.requestEventsRender(this.get('currentEvents'));\r\n}, function () {\r\n this.requestEventsUnrender();\r\n});\r\nView.watch('title', ['dateProfile'], function (deps) {\r\n return (this.title = this.computeTitle(deps.dateProfile)); // assign to View for legacy reasons\r\n});\r\nView.watch('legacyDateProps', ['dateProfile'], function (deps) {\r\n var calendar = this.calendar;\r\n var dateProfile = deps.dateProfile;\r\n // DEPRECATED, but we need to keep it updated...\r\n this.start = calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, dateProfile.isRangeAllDay);\r\n this.end = calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, dateProfile.isRangeAllDay);\r\n this.intervalStart = calendar.msToMoment(dateProfile.currentUnzonedRange.startMs, dateProfile.isRangeAllDay);\r\n this.intervalEnd = calendar.msToMoment(dateProfile.currentUnzonedRange.endMs, dateProfile.isRangeAllDay);\r\n});\r\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventRenderer = /** @class */ (function () {\r\n function EventRenderer(component, fillRenderer) {\r\n this.view = component._getView();\r\n this.component = component;\r\n this.fillRenderer = fillRenderer;\r\n }\r\n EventRenderer.prototype.opt = function (name) {\r\n return this.view.opt(name);\r\n };\r\n // Updates values that rely on options and also relate to range\r\n EventRenderer.prototype.rangeUpdated = function () {\r\n var displayEventTime;\r\n var displayEventEnd;\r\n this.eventTimeFormat =\r\n this.opt('eventTimeFormat') ||\r\n this.opt('timeFormat') || // deprecated\r\n this.computeEventTimeFormat();\r\n displayEventTime = this.opt('displayEventTime');\r\n if (displayEventTime == null) {\r\n displayEventTime = this.computeDisplayEventTime(); // might be based off of range\r\n }\r\n displayEventEnd = this.opt('displayEventEnd');\r\n if (displayEventEnd == null) {\r\n displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range\r\n }\r\n this.displayEventTime = displayEventTime;\r\n this.displayEventEnd = displayEventEnd;\r\n };\r\n EventRenderer.prototype.render = function (eventsPayload) {\r\n var dateProfile = this.component._getDateProfile();\r\n var eventDefId;\r\n var instanceGroup;\r\n var eventRanges;\r\n var bgRanges = [];\r\n var fgRanges = [];\r\n for (eventDefId in eventsPayload) {\r\n instanceGroup = eventsPayload[eventDefId];\r\n eventRanges = instanceGroup.sliceRenderRanges(dateProfile.activeUnzonedRange);\r\n if (instanceGroup.getEventDef().hasBgRendering()) {\r\n bgRanges.push.apply(bgRanges, eventRanges);\r\n }\r\n else {\r\n fgRanges.push.apply(fgRanges, eventRanges);\r\n }\r\n }\r\n this.renderBgRanges(bgRanges);\r\n this.renderFgRanges(fgRanges);\r\n };\r\n EventRenderer.prototype.unrender = function () {\r\n this.unrenderBgRanges();\r\n this.unrenderFgRanges();\r\n };\r\n EventRenderer.prototype.renderFgRanges = function (eventRanges) {\r\n var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges);\r\n var segs = this.component.eventFootprintsToSegs(eventFootprints);\r\n // render an `.el` on each seg\r\n // returns a subset of the segs. segs that were actually rendered\r\n segs = this.renderFgSegEls(segs);\r\n if (this.renderFgSegs(segs) !== false) { // no failure?\r\n this.fgSegs = segs;\r\n }\r\n };\r\n EventRenderer.prototype.unrenderFgRanges = function () {\r\n this.unrenderFgSegs(this.fgSegs || []);\r\n this.fgSegs = null;\r\n };\r\n EventRenderer.prototype.renderBgRanges = function (eventRanges) {\r\n var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges);\r\n var segs = this.component.eventFootprintsToSegs(eventFootprints);\r\n if (this.renderBgSegs(segs) !== false) { // no failure?\r\n this.bgSegs = segs;\r\n }\r\n };\r\n EventRenderer.prototype.unrenderBgRanges = function () {\r\n this.unrenderBgSegs();\r\n this.bgSegs = null;\r\n };\r\n EventRenderer.prototype.getSegs = function () {\r\n return (this.bgSegs || []).concat(this.fgSegs || []);\r\n };\r\n // Renders foreground event segments onto the grid\r\n EventRenderer.prototype.renderFgSegs = function (segs) {\r\n // subclasses must implement\r\n // segs already has rendered els, and has been filtered.\r\n return false; // signal failure if not implemented\r\n };\r\n // Unrenders all currently rendered foreground segments\r\n EventRenderer.prototype.unrenderFgSegs = function (segs) {\r\n // subclasses must implement\r\n };\r\n EventRenderer.prototype.renderBgSegs = function (segs) {\r\n var _this = this;\r\n if (this.fillRenderer) {\r\n this.fillRenderer.renderSegs('bgEvent', segs, {\r\n getClasses: function (seg) {\r\n return _this.getBgClasses(seg.footprint.eventDef);\r\n },\r\n getCss: function (seg) {\r\n return {\r\n 'background-color': _this.getBgColor(seg.footprint.eventDef)\r\n };\r\n },\r\n filterEl: function (seg, el) {\r\n return _this.filterEventRenderEl(seg.footprint, el);\r\n }\r\n });\r\n }\r\n else {\r\n return false; // signal failure if no fillRenderer\r\n }\r\n };\r\n EventRenderer.prototype.unrenderBgSegs = function () {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.unrender('bgEvent');\r\n }\r\n };\r\n // Renders and assigns an `el` property for each foreground event segment.\r\n // Only returns segments that successfully rendered.\r\n EventRenderer.prototype.renderFgSegEls = function (segs, disableResizing) {\r\n var _this = this;\r\n if (disableResizing === void 0) { disableResizing = false; }\r\n var hasEventRenderHandlers = this.view.hasPublicHandlers('eventRender');\r\n var html = '';\r\n var renderedSegs = [];\r\n var i;\r\n if (segs.length) { // don't build an empty html string\r\n // build a large concatenation of event segment HTML\r\n for (i = 0; i < segs.length; i++) {\r\n this.beforeFgSegHtml(segs[i]);\r\n html += this.fgSegHtml(segs[i], disableResizing);\r\n }\r\n // Grab individual elements from the combined HTML string. Use each as the default rendering.\r\n // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.\r\n $(html).each(function (i, node) {\r\n var seg = segs[i];\r\n var el = $(node);\r\n if (hasEventRenderHandlers) { // optimization\r\n el = _this.filterEventRenderEl(seg.footprint, el);\r\n }\r\n if (el) {\r\n el.data('fc-seg', seg); // used by handlers\r\n seg.el = el;\r\n renderedSegs.push(seg);\r\n }\r\n });\r\n }\r\n return renderedSegs;\r\n };\r\n EventRenderer.prototype.beforeFgSegHtml = function (seg) {\r\n };\r\n // Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls()\r\n EventRenderer.prototype.fgSegHtml = function (seg, disableResizing) {\r\n // subclasses should implement\r\n };\r\n // Generic utility for generating the HTML classNames for an event segment's element\r\n EventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable) {\r\n var classes = [\r\n 'fc-event',\r\n seg.isStart ? 'fc-start' : 'fc-not-start',\r\n seg.isEnd ? 'fc-end' : 'fc-not-end'\r\n ].concat(this.getClasses(seg.footprint.eventDef));\r\n if (isDraggable) {\r\n classes.push('fc-draggable');\r\n }\r\n if (isResizable) {\r\n classes.push('fc-resizable');\r\n }\r\n // event is currently selected? attach a className.\r\n if (this.view.isEventDefSelected(seg.footprint.eventDef)) {\r\n classes.push('fc-selected');\r\n }\r\n return classes;\r\n };\r\n // Given an event and the default element used for rendering, returns the element that should actually be used.\r\n // Basically runs events and elements through the eventRender hook.\r\n EventRenderer.prototype.filterEventRenderEl = function (eventFootprint, el) {\r\n var legacy = eventFootprint.getEventLegacy();\r\n var custom = this.view.publiclyTrigger('eventRender', {\r\n context: legacy,\r\n args: [legacy, el, this.view]\r\n });\r\n if (custom === false) { // means don't render at all\r\n el = null;\r\n }\r\n else if (custom && custom !== true) {\r\n el = $(custom);\r\n }\r\n return el;\r\n };\r\n // Compute the text that should be displayed on an event's element.\r\n // `range` can be the Event object itself, or something range-like, with at least a `start`.\r\n // If event times are disabled, or the event has no time, will return a blank string.\r\n // If not specified, formatStr will default to the eventTimeFormat setting,\r\n // and displayEnd will default to the displayEventEnd setting.\r\n EventRenderer.prototype.getTimeText = function (eventFootprint, formatStr, displayEnd) {\r\n return this._getTimeText(eventFootprint.eventInstance.dateProfile.start, eventFootprint.eventInstance.dateProfile.end, eventFootprint.componentFootprint.isAllDay, formatStr, displayEnd);\r\n };\r\n EventRenderer.prototype._getTimeText = function (start, end, isAllDay, formatStr, displayEnd) {\r\n if (formatStr == null) {\r\n formatStr = this.eventTimeFormat;\r\n }\r\n if (displayEnd == null) {\r\n displayEnd = this.displayEventEnd;\r\n }\r\n if (this.displayEventTime && !isAllDay) {\r\n if (displayEnd && end) {\r\n return this.view.formatRange({ start: start, end: end }, false, // allDay\r\n formatStr);\r\n }\r\n else {\r\n return start.format(formatStr);\r\n }\r\n }\r\n return '';\r\n };\r\n EventRenderer.prototype.computeEventTimeFormat = function () {\r\n return this.opt('smallTimeFormat');\r\n };\r\n EventRenderer.prototype.computeDisplayEventTime = function () {\r\n return true;\r\n };\r\n EventRenderer.prototype.computeDisplayEventEnd = function () {\r\n return true;\r\n };\r\n EventRenderer.prototype.getBgClasses = function (eventDef) {\r\n var classNames = this.getClasses(eventDef);\r\n classNames.push('fc-bgevent');\r\n return classNames;\r\n };\r\n EventRenderer.prototype.getClasses = function (eventDef) {\r\n var objs = this.getStylingObjs(eventDef);\r\n var i;\r\n var classNames = [];\r\n for (i = 0; i < objs.length; i++) {\r\n classNames.push.apply(// append\r\n classNames, objs[i].eventClassName || objs[i].className || []);\r\n }\r\n return classNames;\r\n };\r\n // Utility for generating event skin-related CSS properties\r\n EventRenderer.prototype.getSkinCss = function (eventDef) {\r\n return {\r\n 'background-color': this.getBgColor(eventDef),\r\n 'border-color': this.getBorderColor(eventDef),\r\n color: this.getTextColor(eventDef)\r\n };\r\n };\r\n // Queries for caller-specified color, then falls back to default\r\n EventRenderer.prototype.getBgColor = function (eventDef) {\r\n var objs = this.getStylingObjs(eventDef);\r\n var i;\r\n var val;\r\n for (i = 0; i < objs.length && !val; i++) {\r\n val = objs[i].eventBackgroundColor || objs[i].eventColor ||\r\n objs[i].backgroundColor || objs[i].color;\r\n }\r\n if (!val) {\r\n val = this.opt('eventBackgroundColor') || this.opt('eventColor');\r\n }\r\n return val;\r\n };\r\n // Queries for caller-specified color, then falls back to default\r\n EventRenderer.prototype.getBorderColor = function (eventDef) {\r\n var objs = this.getStylingObjs(eventDef);\r\n var i;\r\n var val;\r\n for (i = 0; i < objs.length && !val; i++) {\r\n val = objs[i].eventBorderColor || objs[i].eventColor ||\r\n objs[i].borderColor || objs[i].color;\r\n }\r\n if (!val) {\r\n val = this.opt('eventBorderColor') || this.opt('eventColor');\r\n }\r\n return val;\r\n };\r\n // Queries for caller-specified color, then falls back to default\r\n EventRenderer.prototype.getTextColor = function (eventDef) {\r\n var objs = this.getStylingObjs(eventDef);\r\n var i;\r\n var val;\r\n for (i = 0; i < objs.length && !val; i++) {\r\n val = objs[i].eventTextColor ||\r\n objs[i].textColor;\r\n }\r\n if (!val) {\r\n val = this.opt('eventTextColor');\r\n }\r\n return val;\r\n };\r\n EventRenderer.prototype.getStylingObjs = function (eventDef) {\r\n var objs = this.getFallbackStylingObjs(eventDef);\r\n objs.unshift(eventDef);\r\n return objs;\r\n };\r\n EventRenderer.prototype.getFallbackStylingObjs = function (eventDef) {\r\n return [eventDef.source];\r\n };\r\n EventRenderer.prototype.sortEventSegs = function (segs) {\r\n segs.sort(util_1.proxy(this, 'compareEventSegs'));\r\n };\r\n // A cmp function for determining which segments should take visual priority\r\n EventRenderer.prototype.compareEventSegs = function (seg1, seg2) {\r\n var f1 = seg1.footprint;\r\n var f2 = seg2.footprint;\r\n var cf1 = f1.componentFootprint;\r\n var cf2 = f2.componentFootprint;\r\n var r1 = cf1.unzonedRange;\r\n var r2 = cf2.unzonedRange;\r\n return r1.startMs - r2.startMs || // earlier events go first\r\n (r2.endMs - r2.startMs) - (r1.endMs - r1.startMs) || // tie? longer events go first\r\n cf2.isAllDay - cf1.isAllDay || // tie? put all-day events first (booleans cast to 0/1)\r\n util_1.compareByFieldSpecs(f1.eventDef, f2.eventDef, this.view.eventOrderSpecs, f1.eventDef.miscProps, f2.eventDef.miscProps);\r\n };\r\n return EventRenderer;\r\n}());\r\nexports.default = EventRenderer;\r\n\n\n/***/ }),\n/* 45 */,\n/* 46 */,\n/* 47 */,\n/* 48 */,\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment_ext_1 = __webpack_require__(11);\r\n// Plugin\r\n// -------------------------------------------------------------------------------------------------\r\nmoment_ext_1.newMomentProto.format = function () {\r\n if (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided?\r\n return formatDate(this, arguments[0]); // our extended formatting\r\n }\r\n if (this._ambigTime) {\r\n return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD');\r\n }\r\n if (this._ambigZone) {\r\n return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss');\r\n }\r\n if (this._fullCalendar) { // enhanced non-ambig moment?\r\n // moment.format() doesn't ensure english, but we want to.\r\n return moment_ext_1.oldMomentFormat(englishMoment(this));\r\n }\r\n return moment_ext_1.oldMomentProto.format.apply(this, arguments);\r\n};\r\nmoment_ext_1.newMomentProto.toISOString = function () {\r\n if (this._ambigTime) {\r\n return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD');\r\n }\r\n if (this._ambigZone) {\r\n return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss');\r\n }\r\n if (this._fullCalendar) { // enhanced non-ambig moment?\r\n // depending on browser, moment might not output english. ensure english.\r\n // https://github.com/moment/moment/blob/2.18.1/src/lib/moment/format.js#L22\r\n return moment_ext_1.oldMomentProto.toISOString.apply(englishMoment(this), arguments);\r\n }\r\n return moment_ext_1.oldMomentProto.toISOString.apply(this, arguments);\r\n};\r\nfunction englishMoment(mom) {\r\n if (mom.locale() !== 'en') {\r\n return mom.clone().locale('en');\r\n }\r\n return mom;\r\n}\r\n// Config\r\n// ---------------------------------------------------------------------------------------------------------------------\r\n/*\r\nInserted between chunks in the fake (\"intermediate\") formatting string.\r\nImportant that it passes as whitespace (\\s) because moment often identifies non-standalone months\r\nvia a regexp with an \\s.\r\n*/\r\nvar PART_SEPARATOR = '\\u000b'; // vertical tab\r\n/*\r\nInserted as the first character of a literal-text chunk to indicate that the literal text is not actually literal text,\r\nbut rather, a \"special\" token that has custom rendering (see specialTokens map).\r\n*/\r\nvar SPECIAL_TOKEN_MARKER = '\\u001f'; // information separator 1\r\n/*\r\nInserted at the beginning and end of a span of text that must have non-zero numeric characters.\r\nHandling of these markers is done in a post-processing step at the very end of text rendering.\r\n*/\r\nvar MAYBE_MARKER = '\\u001e'; // information separator 2\r\nvar MAYBE_REGEXP = new RegExp(MAYBE_MARKER + '([^' + MAYBE_MARKER + ']*)' + MAYBE_MARKER, 'g'); // must be global\r\n/*\r\nAddition formatting tokens we want recognized\r\n*/\r\nvar specialTokens = {\r\n t: function (date) {\r\n return moment_ext_1.oldMomentFormat(date, 'a').charAt(0);\r\n },\r\n T: function (date) {\r\n return moment_ext_1.oldMomentFormat(date, 'A').charAt(0);\r\n }\r\n};\r\n/*\r\nThe first characters of formatting tokens for units that are 1 day or larger.\r\n`value` is for ranking relative size (lower means bigger).\r\n`unit` is a normalized unit, used for comparing moments.\r\n*/\r\nvar largeTokenMap = {\r\n Y: { value: 1, unit: 'year' },\r\n M: { value: 2, unit: 'month' },\r\n W: { value: 3, unit: 'week' },\r\n w: { value: 3, unit: 'week' },\r\n D: { value: 4, unit: 'day' },\r\n d: { value: 4, unit: 'day' } // day of week\r\n};\r\n// Single Date Formatting\r\n// ---------------------------------------------------------------------------------------------------------------------\r\n/*\r\nFormats `date` with a Moment formatting string, but allow our non-zero areas and special token\r\n*/\r\nfunction formatDate(date, formatStr) {\r\n return renderFakeFormatString(getParsedFormatString(formatStr).fakeFormatString, date);\r\n}\r\nexports.formatDate = formatDate;\r\n// Date Range Formatting\r\n// -------------------------------------------------------------------------------------------------\r\n// TODO: make it work with timezone offset\r\n/*\r\nUsing a formatting string meant for a single date, generate a range string, like\r\n\"Sep 2 - 9 2013\", that intelligently inserts a separator where the dates differ.\r\nIf the dates are the same as far as the format string is concerned, just return a single\r\nrendering of one date, without any separator.\r\n*/\r\nfunction formatRange(date1, date2, formatStr, separator, isRTL) {\r\n var localeData;\r\n date1 = moment_ext_1.default.parseZone(date1);\r\n date2 = moment_ext_1.default.parseZone(date2);\r\n localeData = date1.localeData();\r\n // Expand localized format strings, like \"LL\" -> \"MMMM D YYYY\".\r\n // BTW, this is not important for `formatDate` because it is impossible to put custom tokens\r\n // or non-zero areas in Moment's localized format strings.\r\n formatStr = localeData.longDateFormat(formatStr) || formatStr;\r\n return renderParsedFormat(getParsedFormatString(formatStr), date1, date2, separator || ' - ', isRTL);\r\n}\r\nexports.formatRange = formatRange;\r\n/*\r\nRenders a range with an already-parsed format string.\r\n*/\r\nfunction renderParsedFormat(parsedFormat, date1, date2, separator, isRTL) {\r\n var sameUnits = parsedFormat.sameUnits;\r\n var unzonedDate1 = date1.clone().stripZone(); // for same-unit comparisons\r\n var unzonedDate2 = date2.clone().stripZone(); // \"\r\n var renderedParts1 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date1);\r\n var renderedParts2 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date2);\r\n var leftI;\r\n var leftStr = '';\r\n var rightI;\r\n var rightStr = '';\r\n var middleI;\r\n var middleStr1 = '';\r\n var middleStr2 = '';\r\n var middleStr = '';\r\n // Start at the leftmost side of the formatting string and continue until you hit a token\r\n // that is not the same between dates.\r\n for (leftI = 0; leftI < sameUnits.length && (!sameUnits[leftI] || unzonedDate1.isSame(unzonedDate2, sameUnits[leftI])); leftI++) {\r\n leftStr += renderedParts1[leftI];\r\n }\r\n // Similarly, start at the rightmost side of the formatting string and move left\r\n for (rightI = sameUnits.length - 1; rightI > leftI && (!sameUnits[rightI] || unzonedDate1.isSame(unzonedDate2, sameUnits[rightI])); rightI--) {\r\n // If current chunk is on the boundary of unique date-content, and is a special-case\r\n // date-formatting postfix character, then don't consume it. Consider it unique date-content.\r\n // TODO: make configurable\r\n if (rightI - 1 === leftI && renderedParts1[rightI] === '.') {\r\n break;\r\n }\r\n rightStr = renderedParts1[rightI] + rightStr;\r\n }\r\n // The area in the middle is different for both of the dates.\r\n // Collect them distinctly so we can jam them together later.\r\n for (middleI = leftI; middleI <= rightI; middleI++) {\r\n middleStr1 += renderedParts1[middleI];\r\n middleStr2 += renderedParts2[middleI];\r\n }\r\n if (middleStr1 || middleStr2) {\r\n if (isRTL) {\r\n middleStr = middleStr2 + separator + middleStr1;\r\n }\r\n else {\r\n middleStr = middleStr1 + separator + middleStr2;\r\n }\r\n }\r\n return processMaybeMarkers(leftStr + middleStr + rightStr);\r\n}\r\n// Format String Parsing\r\n// ---------------------------------------------------------------------------------------------------------------------\r\nvar parsedFormatStrCache = {};\r\n/*\r\nReturns a parsed format string, leveraging a cache.\r\n*/\r\nfunction getParsedFormatString(formatStr) {\r\n return parsedFormatStrCache[formatStr] ||\r\n (parsedFormatStrCache[formatStr] = parseFormatString(formatStr));\r\n}\r\n/*\r\nParses a format string into the following:\r\n- fakeFormatString: a momentJS formatting string, littered with special control characters that get post-processed.\r\n- sameUnits: for every part in fakeFormatString, if the part is a token, the value will be a unit string (like \"day\"),\r\n that indicates how similar a range's start & end must be in order to share the same formatted text.\r\n If not a token, then the value is null.\r\n Always a flat array (not nested liked \"chunks\").\r\n*/\r\nfunction parseFormatString(formatStr) {\r\n var chunks = chunkFormatString(formatStr);\r\n return {\r\n fakeFormatString: buildFakeFormatString(chunks),\r\n sameUnits: buildSameUnits(chunks)\r\n };\r\n}\r\n/*\r\nBreak the formatting string into an array of chunks.\r\nA 'maybe' chunk will have nested chunks.\r\n*/\r\nfunction chunkFormatString(formatStr) {\r\n var chunks = [];\r\n var match;\r\n // TODO: more descrimination\r\n // \\4 is a backreference to the first character of a multi-character set.\r\n var chunker = /\\[([^\\]]*)\\]|\\(([^\\)]*)\\)|(LTS|LT|(\\w)\\4*o?)|([^\\w\\[\\(]+)/g;\r\n while ((match = chunker.exec(formatStr))) {\r\n if (match[1]) { // a literal string inside [ ... ]\r\n chunks.push.apply(chunks, // append\r\n splitStringLiteral(match[1]));\r\n }\r\n else if (match[2]) { // non-zero formatting inside ( ... )\r\n chunks.push({ maybe: chunkFormatString(match[2]) });\r\n }\r\n else if (match[3]) { // a formatting token\r\n chunks.push({ token: match[3] });\r\n }\r\n else if (match[5]) { // an unenclosed literal string\r\n chunks.push.apply(chunks, // append\r\n splitStringLiteral(match[5]));\r\n }\r\n }\r\n return chunks;\r\n}\r\n/*\r\nPotentially splits a literal-text string into multiple parts. For special cases.\r\n*/\r\nfunction splitStringLiteral(s) {\r\n if (s === '. ') {\r\n return ['.', ' ']; // for locales with periods bound to the end of each year/month/date\r\n }\r\n else {\r\n return [s];\r\n }\r\n}\r\n/*\r\nGiven chunks parsed from a real format string, generate a fake (aka \"intermediate\") format string with special control\r\ncharacters that will eventually be given to moment for formatting, and then post-processed.\r\n*/\r\nfunction buildFakeFormatString(chunks) {\r\n var parts = [];\r\n var i;\r\n var chunk;\r\n for (i = 0; i < chunks.length; i++) {\r\n chunk = chunks[i];\r\n if (typeof chunk === 'string') {\r\n parts.push('[' + chunk + ']');\r\n }\r\n else if (chunk.token) {\r\n if (chunk.token in specialTokens) {\r\n parts.push(SPECIAL_TOKEN_MARKER + // useful during post-processing\r\n '[' + chunk.token + ']' // preserve as literal text\r\n );\r\n }\r\n else {\r\n parts.push(chunk.token); // unprotected text implies a format string\r\n }\r\n }\r\n else if (chunk.maybe) {\r\n parts.push(MAYBE_MARKER + // useful during post-processing\r\n buildFakeFormatString(chunk.maybe) +\r\n MAYBE_MARKER);\r\n }\r\n }\r\n return parts.join(PART_SEPARATOR);\r\n}\r\n/*\r\nGiven parsed chunks from a real formatting string, generates an array of unit strings (like \"day\") that indicate\r\nin which regard two dates must be similar in order to share range formatting text.\r\nThe `chunks` can be nested (because of \"maybe\" chunks), however, the returned array will be flat.\r\n*/\r\nfunction buildSameUnits(chunks) {\r\n var units = [];\r\n var i;\r\n var chunk;\r\n var tokenInfo;\r\n for (i = 0; i < chunks.length; i++) {\r\n chunk = chunks[i];\r\n if (chunk.token) {\r\n tokenInfo = largeTokenMap[chunk.token.charAt(0)];\r\n units.push(tokenInfo ? tokenInfo.unit : 'second'); // default to a very strict same-second\r\n }\r\n else if (chunk.maybe) {\r\n units.push.apply(units, // append\r\n buildSameUnits(chunk.maybe));\r\n }\r\n else {\r\n units.push(null);\r\n }\r\n }\r\n return units;\r\n}\r\n// Rendering to text\r\n// ---------------------------------------------------------------------------------------------------------------------\r\n/*\r\nFormats a date with a fake format string, post-processes the control characters, then returns.\r\n*/\r\nfunction renderFakeFormatString(fakeFormatString, date) {\r\n return processMaybeMarkers(renderFakeFormatStringParts(fakeFormatString, date).join(''));\r\n}\r\n/*\r\nFormats a date into parts that will have been post-processed, EXCEPT for the \"maybe\" markers.\r\n*/\r\nfunction renderFakeFormatStringParts(fakeFormatString, date) {\r\n var parts = [];\r\n var fakeRender = moment_ext_1.oldMomentFormat(date, fakeFormatString);\r\n var fakeParts = fakeRender.split(PART_SEPARATOR);\r\n var i;\r\n var fakePart;\r\n for (i = 0; i < fakeParts.length; i++) {\r\n fakePart = fakeParts[i];\r\n if (fakePart.charAt(0) === SPECIAL_TOKEN_MARKER) {\r\n parts.push(\r\n // the literal string IS the token's name.\r\n // call special token's registered function.\r\n specialTokens[fakePart.substring(1)](date));\r\n }\r\n else {\r\n parts.push(fakePart);\r\n }\r\n }\r\n return parts;\r\n}\r\n/*\r\nAccepts an almost-finally-formatted string and processes the \"maybe\" control characters, returning a new string.\r\n*/\r\nfunction processMaybeMarkers(s) {\r\n return s.replace(MAYBE_REGEXP, function (m0, m1) {\r\n if (m1.match(/[1-9]/)) { // any non-zero numeric characters?\r\n return m1;\r\n }\r\n else {\r\n return '';\r\n }\r\n });\r\n}\r\n// Misc Utils\r\n// -------------------------------------------------------------------------------------------------\r\n/*\r\nReturns a unit string, either 'year', 'month', 'day', or null for the most granular formatting token in the string.\r\n*/\r\nfunction queryMostGranularFormatUnit(formatStr) {\r\n var chunks = chunkFormatString(formatStr);\r\n var i;\r\n var chunk;\r\n var candidate;\r\n var best;\r\n for (i = 0; i < chunks.length; i++) {\r\n chunk = chunks[i];\r\n if (chunk.token) {\r\n candidate = largeTokenMap[chunk.token.charAt(0)];\r\n if (candidate) {\r\n if (!best || candidate.value > best.value) {\r\n best = candidate;\r\n }\r\n }\r\n }\r\n }\r\n if (best) {\r\n return best.unit;\r\n }\r\n return null;\r\n}\r\nexports.queryMostGranularFormatUnit = queryMostGranularFormatUnit;\r\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventRange = /** @class */ (function () {\r\n function EventRange(unzonedRange, eventDef, eventInstance) {\r\n this.unzonedRange = unzonedRange;\r\n this.eventDef = eventDef;\r\n if (eventInstance) {\r\n this.eventInstance = eventInstance;\r\n }\r\n }\r\n return EventRange;\r\n}());\r\nexports.default = EventRange;\r\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Class_1 = __webpack_require__(35);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar Model = /** @class */ (function (_super) {\r\n tslib_1.__extends(Model, _super);\r\n function Model() {\r\n var _this = _super.call(this) || this;\r\n _this._watchers = {};\r\n _this._props = {};\r\n _this.applyGlobalWatchers();\r\n _this.constructed();\r\n return _this;\r\n }\r\n Model.watch = function (name) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n // subclasses should make a masked-copy of the superclass's map\r\n // TODO: write test\r\n if (!this.prototype.hasOwnProperty('_globalWatchArgs')) {\r\n this.prototype._globalWatchArgs = Object.create(this.prototype._globalWatchArgs);\r\n }\r\n this.prototype._globalWatchArgs[name] = args;\r\n };\r\n Model.prototype.constructed = function () {\r\n // useful for monkeypatching. TODO: BaseClass?\r\n };\r\n Model.prototype.applyGlobalWatchers = function () {\r\n var map = this._globalWatchArgs;\r\n var name;\r\n for (name in map) {\r\n this.watch.apply(this, [name].concat(map[name]));\r\n }\r\n };\r\n Model.prototype.has = function (name) {\r\n return name in this._props;\r\n };\r\n Model.prototype.get = function (name) {\r\n if (name === undefined) {\r\n return this._props;\r\n }\r\n return this._props[name];\r\n };\r\n Model.prototype.set = function (name, val) {\r\n var newProps;\r\n if (typeof name === 'string') {\r\n newProps = {};\r\n newProps[name] = val === undefined ? null : val;\r\n }\r\n else {\r\n newProps = name;\r\n }\r\n this.setProps(newProps);\r\n };\r\n Model.prototype.reset = function (newProps) {\r\n var oldProps = this._props;\r\n var changeset = {}; // will have undefined's to signal unsets\r\n var name;\r\n for (name in oldProps) {\r\n changeset[name] = undefined;\r\n }\r\n for (name in newProps) {\r\n changeset[name] = newProps[name];\r\n }\r\n this.setProps(changeset);\r\n };\r\n Model.prototype.unset = function (name) {\r\n var newProps = {};\r\n var names;\r\n var i;\r\n if (typeof name === 'string') {\r\n names = [name];\r\n }\r\n else {\r\n names = name;\r\n }\r\n for (i = 0; i < names.length; i++) {\r\n newProps[names[i]] = undefined;\r\n }\r\n this.setProps(newProps);\r\n };\r\n Model.prototype.setProps = function (newProps) {\r\n var changedProps = {};\r\n var changedCnt = 0;\r\n var name;\r\n var val;\r\n for (name in newProps) {\r\n val = newProps[name];\r\n // a change in value?\r\n // if an object, don't check equality, because might have been mutated internally.\r\n // TODO: eventually enforce immutability.\r\n if (typeof val === 'object' ||\r\n val !== this._props[name]) {\r\n changedProps[name] = val;\r\n changedCnt++;\r\n }\r\n }\r\n if (changedCnt) {\r\n this.trigger('before:batchChange', changedProps);\r\n for (name in changedProps) {\r\n val = changedProps[name];\r\n this.trigger('before:change', name, val);\r\n this.trigger('before:change:' + name, val);\r\n }\r\n for (name in changedProps) {\r\n val = changedProps[name];\r\n if (val === undefined) {\r\n delete this._props[name];\r\n }\r\n else {\r\n this._props[name] = val;\r\n }\r\n this.trigger('change:' + name, val);\r\n this.trigger('change', name, val);\r\n }\r\n this.trigger('batchChange', changedProps);\r\n }\r\n };\r\n Model.prototype.watch = function (name, depList, startFunc, stopFunc) {\r\n var _this = this;\r\n this.unwatch(name);\r\n this._watchers[name] = this._watchDeps(depList, function (deps) {\r\n var res = startFunc.call(_this, deps);\r\n if (res && res.then) {\r\n _this.unset(name); // put in an unset state while resolving\r\n res.then(function (val) {\r\n _this.set(name, val);\r\n });\r\n }\r\n else {\r\n _this.set(name, res);\r\n }\r\n }, function (deps) {\r\n _this.unset(name);\r\n if (stopFunc) {\r\n stopFunc.call(_this, deps);\r\n }\r\n });\r\n };\r\n Model.prototype.unwatch = function (name) {\r\n var watcher = this._watchers[name];\r\n if (watcher) {\r\n delete this._watchers[name];\r\n watcher.teardown();\r\n }\r\n };\r\n Model.prototype._watchDeps = function (depList, startFunc, stopFunc) {\r\n var _this = this;\r\n var queuedChangeCnt = 0;\r\n var depCnt = depList.length;\r\n var satisfyCnt = 0;\r\n var values = {}; // what's passed as the `deps` arguments\r\n var bindTuples = []; // array of [ eventName, handlerFunc ] arrays\r\n var isCallingStop = false;\r\n var onBeforeDepChange = function (depName, val, isOptional) {\r\n queuedChangeCnt++;\r\n if (queuedChangeCnt === 1) { // first change to cause a \"stop\" ?\r\n if (satisfyCnt === depCnt) { // all deps previously satisfied?\r\n isCallingStop = true;\r\n stopFunc(values);\r\n isCallingStop = false;\r\n }\r\n }\r\n };\r\n var onDepChange = function (depName, val, isOptional) {\r\n if (val === undefined) { // unsetting a value?\r\n // required dependency that was previously set?\r\n if (!isOptional && values[depName] !== undefined) {\r\n satisfyCnt--;\r\n }\r\n delete values[depName];\r\n }\r\n else { // setting a value?\r\n // required dependency that was previously unset?\r\n if (!isOptional && values[depName] === undefined) {\r\n satisfyCnt++;\r\n }\r\n values[depName] = val;\r\n }\r\n queuedChangeCnt--;\r\n if (!queuedChangeCnt) { // last change to cause a \"start\"?\r\n // now finally satisfied or satisfied all along?\r\n if (satisfyCnt === depCnt) {\r\n // if the stopFunc initiated another value change, ignore it.\r\n // it will be processed by another change event anyway.\r\n if (!isCallingStop) {\r\n startFunc(values);\r\n }\r\n }\r\n }\r\n };\r\n // intercept for .on() that remembers handlers\r\n var bind = function (eventName, handler) {\r\n _this.on(eventName, handler);\r\n bindTuples.push([eventName, handler]);\r\n };\r\n // listen to dependency changes\r\n depList.forEach(function (depName) {\r\n var isOptional = false;\r\n if (depName.charAt(0) === '?') { // TODO: more DRY\r\n depName = depName.substring(1);\r\n isOptional = true;\r\n }\r\n bind('before:change:' + depName, function (val) {\r\n onBeforeDepChange(depName, val, isOptional);\r\n });\r\n bind('change:' + depName, function (val) {\r\n onDepChange(depName, val, isOptional);\r\n });\r\n });\r\n // process current dependency values\r\n depList.forEach(function (depName) {\r\n var isOptional = false;\r\n if (depName.charAt(0) === '?') { // TODO: more DRY\r\n depName = depName.substring(1);\r\n isOptional = true;\r\n }\r\n if (_this.has(depName)) {\r\n values[depName] = _this.get(depName);\r\n satisfyCnt++;\r\n }\r\n else if (isOptional) {\r\n satisfyCnt++;\r\n }\r\n });\r\n // initially satisfied\r\n if (satisfyCnt === depCnt) {\r\n startFunc(values);\r\n }\r\n return {\r\n teardown: function () {\r\n // remove all handlers\r\n for (var i = 0; i < bindTuples.length; i++) {\r\n _this.off(bindTuples[i][0], bindTuples[i][1]);\r\n }\r\n bindTuples = null;\r\n // was satisfied, so call stopFunc\r\n if (satisfyCnt === depCnt) {\r\n stopFunc();\r\n }\r\n },\r\n flash: function () {\r\n if (satisfyCnt === depCnt) {\r\n stopFunc();\r\n startFunc(values);\r\n }\r\n }\r\n };\r\n };\r\n Model.prototype.flash = function (name) {\r\n var watcher = this._watchers[name];\r\n if (watcher) {\r\n watcher.flash();\r\n }\r\n };\r\n return Model;\r\n}(Class_1.default));\r\nexports.default = Model;\r\nModel.prototype._globalWatchArgs = {}; // mutation protection in Model.watch\r\nEmitterMixin_1.default.mixInto(Model);\r\nListenerMixin_1.default.mixInto(Model);\r\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\r\nUSAGE:\r\n import { default as ParsableModelMixin, ParsableModelInterface } from './ParsableModelMixin'\r\nin class:\r\n applyProps: ParsableModelInterface['applyProps']\r\n applyManualStandardProps: ParsableModelInterface['applyManualStandardProps']\r\n applyMiscProps: ParsableModelInterface['applyMiscProps']\r\n isStandardProp: ParsableModelInterface['isStandardProp']\r\n static defineStandardProps = ParsableModelMixin.defineStandardProps\r\n static copyVerbatimStandardProps = ParsableModelMixin.copyVerbatimStandardProps\r\nafter class:\r\n ParsableModelMixin.mixInto(TheClass)\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar Mixin_1 = __webpack_require__(15);\r\nvar ParsableModelMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(ParsableModelMixin, _super);\r\n function ParsableModelMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ParsableModelMixin.defineStandardProps = function (propDefs) {\r\n var proto = this.prototype;\r\n if (!proto.hasOwnProperty('standardPropMap')) {\r\n proto.standardPropMap = Object.create(proto.standardPropMap);\r\n }\r\n util_1.copyOwnProps(propDefs, proto.standardPropMap);\r\n };\r\n ParsableModelMixin.copyVerbatimStandardProps = function (src, dest) {\r\n var map = this.prototype.standardPropMap;\r\n var propName;\r\n for (propName in map) {\r\n if (src[propName] != null && // in the src object?\r\n map[propName] === true // false means \"copy verbatim\"\r\n ) {\r\n dest[propName] = src[propName];\r\n }\r\n }\r\n };\r\n /*\r\n Returns true/false for success.\r\n Meant to be only called ONCE, at object creation.\r\n */\r\n ParsableModelMixin.prototype.applyProps = function (rawProps) {\r\n var standardPropMap = this.standardPropMap;\r\n var manualProps = {};\r\n var miscProps = {};\r\n var propName;\r\n for (propName in rawProps) {\r\n if (standardPropMap[propName] === true) { // copy verbatim\r\n this[propName] = rawProps[propName];\r\n }\r\n else if (standardPropMap[propName] === false) {\r\n manualProps[propName] = rawProps[propName];\r\n }\r\n else {\r\n miscProps[propName] = rawProps[propName];\r\n }\r\n }\r\n this.applyMiscProps(miscProps);\r\n return this.applyManualStandardProps(manualProps);\r\n };\r\n /*\r\n If subclasses override, they must call this supermethod and return the boolean response.\r\n Meant to be only called ONCE, at object creation.\r\n */\r\n ParsableModelMixin.prototype.applyManualStandardProps = function (rawProps) {\r\n return true;\r\n };\r\n /*\r\n Can be called even after initial object creation.\r\n */\r\n ParsableModelMixin.prototype.applyMiscProps = function (rawProps) {\r\n // subclasses can implement\r\n };\r\n /*\r\n TODO: why is this a method when defineStandardProps is static\r\n */\r\n ParsableModelMixin.prototype.isStandardProp = function (propName) {\r\n return propName in this.standardPropMap;\r\n };\r\n return ParsableModelMixin;\r\n}(Mixin_1.default));\r\nexports.default = ParsableModelMixin;\r\nParsableModelMixin.prototype.standardPropMap = {}; // will be cloned by defineStandardProps\r\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventInstance = /** @class */ (function () {\r\n function EventInstance(def, dateProfile) {\r\n this.def = def;\r\n this.dateProfile = dateProfile;\r\n }\r\n EventInstance.prototype.toLegacy = function () {\r\n var dateProfile = this.dateProfile;\r\n var obj = this.def.toLegacy();\r\n obj.start = dateProfile.start.clone();\r\n obj.end = dateProfile.end ? dateProfile.end.clone() : null;\r\n return obj;\r\n };\r\n return EventInstance;\r\n}());\r\nexports.default = EventInstance;\r\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar EventDef_1 = __webpack_require__(37);\r\nvar EventInstance_1 = __webpack_require__(53);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar RecurringEventDef = /** @class */ (function (_super) {\r\n tslib_1.__extends(RecurringEventDef, _super);\r\n function RecurringEventDef() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RecurringEventDef.prototype.isAllDay = function () {\r\n return !this.startTime && !this.endTime;\r\n };\r\n RecurringEventDef.prototype.buildInstances = function (unzonedRange) {\r\n var calendar = this.source.calendar;\r\n var unzonedDate = unzonedRange.getStart();\r\n var unzonedEnd = unzonedRange.getEnd();\r\n var zonedDayStart;\r\n var instanceStart;\r\n var instanceEnd;\r\n var instances = [];\r\n while (unzonedDate.isBefore(unzonedEnd)) {\r\n // if everyday, or this particular day-of-week\r\n if (!this.dowHash || this.dowHash[unzonedDate.day()]) {\r\n zonedDayStart = calendar.applyTimezone(unzonedDate);\r\n instanceStart = zonedDayStart.clone();\r\n instanceEnd = null;\r\n if (this.startTime) {\r\n instanceStart.time(this.startTime);\r\n }\r\n else {\r\n instanceStart.stripTime();\r\n }\r\n if (this.endTime) {\r\n instanceEnd = zonedDayStart.clone().time(this.endTime);\r\n }\r\n instances.push(new EventInstance_1.default(this, // definition\r\n new EventDateProfile_1.default(instanceStart, instanceEnd, calendar)));\r\n }\r\n unzonedDate.add(1, 'days');\r\n }\r\n return instances;\r\n };\r\n RecurringEventDef.prototype.setDow = function (dowNumbers) {\r\n if (!this.dowHash) {\r\n this.dowHash = {};\r\n }\r\n for (var i = 0; i < dowNumbers.length; i++) {\r\n this.dowHash[dowNumbers[i]] = true;\r\n }\r\n };\r\n RecurringEventDef.prototype.clone = function () {\r\n var def = _super.prototype.clone.call(this);\r\n if (def.startTime) {\r\n def.startTime = moment.duration(this.startTime);\r\n }\r\n if (def.endTime) {\r\n def.endTime = moment.duration(this.endTime);\r\n }\r\n if (this.dowHash) {\r\n def.dowHash = $.extend({}, this.dowHash);\r\n }\r\n return def;\r\n };\r\n return RecurringEventDef;\r\n}(EventDef_1.default));\r\nexports.default = RecurringEventDef;\r\n/*\r\nHACK to work with TypeScript mixins\r\nNOTE: if super-method fails, should still attempt to apply\r\n*/\r\nRecurringEventDef.prototype.applyProps = function (rawProps) {\r\n var superSuccess = EventDef_1.default.prototype.applyProps.call(this, rawProps);\r\n if (rawProps.start) {\r\n this.startTime = moment.duration(rawProps.start);\r\n }\r\n if (rawProps.end) {\r\n this.endTime = moment.duration(rawProps.end);\r\n }\r\n if (rawProps.dow) {\r\n this.setDow(rawProps.dow);\r\n }\r\n return superSuccess;\r\n};\r\n// Parsing\r\n// ---------------------------------------------------------------------------------------------------------------------\r\nRecurringEventDef.defineStandardProps({\r\n start: false,\r\n end: false,\r\n dow: false\r\n});\r\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar DateProfileGenerator = /** @class */ (function () {\r\n function DateProfileGenerator(_view) {\r\n this._view = _view;\r\n }\r\n DateProfileGenerator.prototype.opt = function (name) {\r\n return this._view.opt(name);\r\n };\r\n DateProfileGenerator.prototype.trimHiddenDays = function (unzonedRange) {\r\n return this._view.trimHiddenDays(unzonedRange);\r\n };\r\n DateProfileGenerator.prototype.msToUtcMoment = function (ms, forceAllDay) {\r\n return this._view.calendar.msToUtcMoment(ms, forceAllDay);\r\n };\r\n /* Date Range Computation\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\r\n DateProfileGenerator.prototype.buildPrev = function (currentDateProfile) {\r\n var prevDate = currentDateProfile.date.clone()\r\n .startOf(currentDateProfile.currentRangeUnit)\r\n .subtract(currentDateProfile.dateIncrement);\r\n return this.build(prevDate, -1);\r\n };\r\n // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\r\n DateProfileGenerator.prototype.buildNext = function (currentDateProfile) {\r\n var nextDate = currentDateProfile.date.clone()\r\n .startOf(currentDateProfile.currentRangeUnit)\r\n .add(currentDateProfile.dateIncrement);\r\n return this.build(nextDate, 1);\r\n };\r\n // Builds a structure holding dates/ranges for rendering around the given date.\r\n // Optional direction param indicates whether the date is being incremented/decremented\r\n // from its previous value. decremented = -1, incremented = 1 (default).\r\n DateProfileGenerator.prototype.build = function (date, direction, forceToValid) {\r\n if (forceToValid === void 0) { forceToValid = false; }\r\n var isDateAllDay = !date.hasTime();\r\n var validUnzonedRange;\r\n var minTime = null;\r\n var maxTime = null;\r\n var currentInfo;\r\n var isRangeAllDay;\r\n var renderUnzonedRange;\r\n var activeUnzonedRange;\r\n var isValid;\r\n validUnzonedRange = this.buildValidRange();\r\n validUnzonedRange = this.trimHiddenDays(validUnzonedRange);\r\n if (forceToValid) {\r\n date = this.msToUtcMoment(validUnzonedRange.constrainDate(date), // returns MS\r\n isDateAllDay);\r\n }\r\n currentInfo = this.buildCurrentRangeInfo(date, direction);\r\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\r\n renderUnzonedRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.unzonedRange), currentInfo.unit, isRangeAllDay);\r\n renderUnzonedRange = this.trimHiddenDays(renderUnzonedRange);\r\n activeUnzonedRange = renderUnzonedRange.clone();\r\n if (!this.opt('showNonCurrentDates')) {\r\n activeUnzonedRange = activeUnzonedRange.intersect(currentInfo.unzonedRange);\r\n }\r\n minTime = moment.duration(this.opt('minTime'));\r\n maxTime = moment.duration(this.opt('maxTime'));\r\n activeUnzonedRange = this.adjustActiveRange(activeUnzonedRange, minTime, maxTime);\r\n activeUnzonedRange = activeUnzonedRange.intersect(validUnzonedRange); // might return null\r\n if (activeUnzonedRange) {\r\n date = this.msToUtcMoment(activeUnzonedRange.constrainDate(date), // returns MS\r\n isDateAllDay);\r\n }\r\n // it's invalid if the originally requested date is not contained,\r\n // or if the range is completely outside of the valid range.\r\n isValid = currentInfo.unzonedRange.intersectsWith(validUnzonedRange);\r\n return {\r\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\r\n // an object with optional start and end properties.\r\n validUnzonedRange: validUnzonedRange,\r\n // range the view is formally responsible for.\r\n // for example, a month view might have 1st-31st, excluding padded dates\r\n currentUnzonedRange: currentInfo.unzonedRange,\r\n // name of largest unit being displayed, like \"month\" or \"week\"\r\n currentRangeUnit: currentInfo.unit,\r\n isRangeAllDay: isRangeAllDay,\r\n // dates that display events and accept drag-n-drop\r\n // will be `null` if no dates accept events\r\n activeUnzonedRange: activeUnzonedRange,\r\n // date range with a rendered skeleton\r\n // includes not-active days that need some sort of DOM\r\n renderUnzonedRange: renderUnzonedRange,\r\n // Duration object that denotes the first visible time of any given day\r\n minTime: minTime,\r\n // Duration object that denotes the exclusive visible end time of any given day\r\n maxTime: maxTime,\r\n isValid: isValid,\r\n date: date,\r\n // how far the current date will move for a prev/next operation\r\n dateIncrement: this.buildDateIncrement(currentInfo.duration)\r\n // pass a fallback (might be null) ^\r\n };\r\n };\r\n // Builds an object with optional start/end properties.\r\n // Indicates the minimum/maximum dates to display.\r\n // not responsible for trimming hidden days.\r\n DateProfileGenerator.prototype.buildValidRange = function () {\r\n return this._view.getUnzonedRangeOption('validRange', this._view.calendar.getNow()) ||\r\n new UnzonedRange_1.default(); // completely open-ended\r\n };\r\n // Builds a structure with info about the \"current\" range, the range that is\r\n // highlighted as being the current month for example.\r\n // See build() for a description of `direction`.\r\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\r\n // TODO: accept a MS-time instead of a moment `date`?\r\n DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {\r\n var viewSpec = this._view.viewSpec;\r\n var duration = null;\r\n var unit = null;\r\n var unzonedRange = null;\r\n var dayCount;\r\n if (viewSpec.duration) {\r\n duration = viewSpec.duration;\r\n unit = viewSpec.durationUnit;\r\n unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit);\r\n }\r\n else if ((dayCount = this.opt('dayCount'))) {\r\n unit = 'day';\r\n unzonedRange = this.buildRangeFromDayCount(date, direction, dayCount);\r\n }\r\n else if ((unzonedRange = this.buildCustomVisibleRange(date))) {\r\n unit = util_1.computeGreatestUnit(unzonedRange.getStart(), unzonedRange.getEnd());\r\n }\r\n else {\r\n duration = this.getFallbackDuration();\r\n unit = util_1.computeGreatestUnit(duration);\r\n unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit);\r\n }\r\n return { duration: duration, unit: unit, unzonedRange: unzonedRange };\r\n };\r\n DateProfileGenerator.prototype.getFallbackDuration = function () {\r\n return moment.duration({ days: 1 });\r\n };\r\n // Returns a new activeUnzonedRange to have time values (un-ambiguate)\r\n // minTime or maxTime causes the range to expand.\r\n DateProfileGenerator.prototype.adjustActiveRange = function (unzonedRange, minTime, maxTime) {\r\n var start = unzonedRange.getStart();\r\n var end = unzonedRange.getEnd();\r\n if (this._view.usesMinMaxTime) {\r\n if (minTime < 0) {\r\n start.time(0).add(minTime);\r\n }\r\n if (maxTime > 24 * 60 * 60 * 1000) { // beyond 24 hours?\r\n end.time(maxTime - (24 * 60 * 60 * 1000));\r\n }\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n // Builds the \"current\" range when it is specified as an explicit duration.\r\n // `unit` is the already-computed computeGreatestUnit value of duration.\r\n // TODO: accept a MS-time instead of a moment `date`?\r\n DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {\r\n var alignment = this.opt('dateAlignment');\r\n var dateIncrementInput;\r\n var dateIncrementDuration;\r\n var start;\r\n var end;\r\n var res;\r\n // compute what the alignment should be\r\n if (!alignment) {\r\n dateIncrementInput = this.opt('dateIncrement');\r\n if (dateIncrementInput) {\r\n dateIncrementDuration = moment.duration(dateIncrementInput);\r\n // use the smaller of the two units\r\n if (dateIncrementDuration < duration) {\r\n alignment = util_1.computeDurationGreatestUnit(dateIncrementDuration, dateIncrementInput);\r\n }\r\n else {\r\n alignment = unit;\r\n }\r\n }\r\n else {\r\n alignment = unit;\r\n }\r\n }\r\n // if the view displays a single day or smaller\r\n if (duration.as('days') <= 1) {\r\n if (this._view.isHiddenDay(start)) {\r\n start = this._view.skipHiddenDays(start, direction);\r\n start.startOf('day');\r\n }\r\n }\r\n function computeRes() {\r\n start = date.clone().startOf(alignment);\r\n end = start.clone().add(duration);\r\n res = new UnzonedRange_1.default(start, end);\r\n }\r\n computeRes();\r\n // if range is completely enveloped by hidden days, go past the hidden days\r\n if (!this.trimHiddenDays(res)) {\r\n date = this._view.skipHiddenDays(date, direction);\r\n computeRes();\r\n }\r\n return res;\r\n };\r\n // Builds the \"current\" range when a dayCount is specified.\r\n // TODO: accept a MS-time instead of a moment `date`?\r\n DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {\r\n var customAlignment = this.opt('dateAlignment');\r\n var runningCount = 0;\r\n var start;\r\n var end;\r\n if (customAlignment || direction !== -1) {\r\n start = date.clone();\r\n if (customAlignment) {\r\n start.startOf(customAlignment);\r\n }\r\n start.startOf('day');\r\n start = this._view.skipHiddenDays(start);\r\n end = start.clone();\r\n do {\r\n end.add(1, 'day');\r\n if (!this._view.isHiddenDay(end)) {\r\n runningCount++;\r\n }\r\n } while (runningCount < dayCount);\r\n }\r\n else {\r\n end = date.clone().startOf('day').add(1, 'day');\r\n end = this._view.skipHiddenDays(end, -1, true);\r\n start = end.clone();\r\n do {\r\n start.add(-1, 'day');\r\n if (!this._view.isHiddenDay(start)) {\r\n runningCount++;\r\n }\r\n } while (runningCount < dayCount);\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n // Builds a normalized range object for the \"visible\" range,\r\n // which is a way to define the currentUnzonedRange and activeUnzonedRange at the same time.\r\n // TODO: accept a MS-time instead of a moment `date`?\r\n DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {\r\n var visibleUnzonedRange = this._view.getUnzonedRangeOption('visibleRange', this._view.calendar.applyTimezone(date) // correct zone. also generates new obj that avoids mutations\r\n );\r\n if (visibleUnzonedRange && (visibleUnzonedRange.startMs == null || visibleUnzonedRange.endMs == null)) {\r\n return null;\r\n }\r\n return visibleUnzonedRange;\r\n };\r\n // Computes the range that will represent the element/cells for *rendering*,\r\n // but which may have voided days/times.\r\n // not responsible for trimming hidden days.\r\n DateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) {\r\n return currentUnzonedRange.clone();\r\n };\r\n // Compute the duration value that should be added/substracted to the current date\r\n // when a prev/next operation happens.\r\n DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {\r\n var dateIncrementInput = this.opt('dateIncrement');\r\n var customAlignment;\r\n if (dateIncrementInput) {\r\n return moment.duration(dateIncrementInput);\r\n }\r\n else if ((customAlignment = this.opt('dateAlignment'))) {\r\n return moment.duration(1, customAlignment);\r\n }\r\n else if (fallback) {\r\n return fallback;\r\n }\r\n else {\r\n return moment.duration({ days: 1 });\r\n }\r\n };\r\n return DateProfileGenerator;\r\n}());\r\nexports.default = DateProfileGenerator;\r\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Promise_1 = __webpack_require__(21);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar ArrayEventSource = /** @class */ (function (_super) {\r\n tslib_1.__extends(ArrayEventSource, _super);\r\n function ArrayEventSource(calendar) {\r\n var _this = _super.call(this, calendar) || this;\r\n _this.eventDefs = []; // for if setRawEventDefs is never called\r\n return _this;\r\n }\r\n ArrayEventSource.parse = function (rawInput, calendar) {\r\n var rawProps;\r\n // normalize raw input\r\n if ($.isArray(rawInput.events)) { // extended form\r\n rawProps = rawInput;\r\n }\r\n else if ($.isArray(rawInput)) { // short form\r\n rawProps = { events: rawInput };\r\n }\r\n if (rawProps) {\r\n return EventSource_1.default.parse.call(this, rawProps, calendar);\r\n }\r\n return false;\r\n };\r\n ArrayEventSource.prototype.setRawEventDefs = function (rawEventDefs) {\r\n this.rawEventDefs = rawEventDefs;\r\n this.eventDefs = this.parseEventDefs(rawEventDefs);\r\n };\r\n ArrayEventSource.prototype.fetch = function (start, end, timezone) {\r\n var eventDefs = this.eventDefs;\r\n var i;\r\n if (this.currentTimezone != null &&\r\n this.currentTimezone !== timezone) {\r\n for (i = 0; i < eventDefs.length; i++) {\r\n if (eventDefs[i] instanceof SingleEventDef_1.default) {\r\n eventDefs[i].rezone();\r\n }\r\n }\r\n }\r\n this.currentTimezone = timezone;\r\n return Promise_1.default.resolve(eventDefs);\r\n };\r\n ArrayEventSource.prototype.addEventDef = function (eventDef) {\r\n this.eventDefs.push(eventDef);\r\n };\r\n /*\r\n eventDefId already normalized to a string\r\n */\r\n ArrayEventSource.prototype.removeEventDefsById = function (eventDefId) {\r\n return util_1.removeMatching(this.eventDefs, function (eventDef) {\r\n return eventDef.id === eventDefId;\r\n });\r\n };\r\n ArrayEventSource.prototype.removeAllEventDefs = function () {\r\n this.eventDefs = [];\r\n };\r\n ArrayEventSource.prototype.getPrimitive = function () {\r\n return this.rawEventDefs;\r\n };\r\n ArrayEventSource.prototype.applyManualStandardProps = function (rawProps) {\r\n var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps);\r\n this.setRawEventDefs(rawProps.events);\r\n return superSuccess;\r\n };\r\n return ArrayEventSource;\r\n}(EventSource_1.default));\r\nexports.default = ArrayEventSource;\r\nArrayEventSource.defineStandardProps({\r\n events: false // don't automatically transfer\r\n});\r\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar StandardTheme_1 = __webpack_require__(221);\r\nvar JqueryUiTheme_1 = __webpack_require__(222);\r\nvar themeClassHash = {};\r\nfunction defineThemeSystem(themeName, themeClass) {\r\n themeClassHash[themeName] = themeClass;\r\n}\r\nexports.defineThemeSystem = defineThemeSystem;\r\nfunction getThemeSystemClass(themeSetting) {\r\n if (!themeSetting) {\r\n return StandardTheme_1.default;\r\n }\r\n else if (themeSetting === true) {\r\n return JqueryUiTheme_1.default;\r\n }\r\n else {\r\n return themeClassHash[themeSetting];\r\n }\r\n}\r\nexports.getThemeSystemClass = getThemeSystemClass;\r\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\n/*\r\nA cache for the left/right/top/bottom/width/height values for one or more elements.\r\nWorks with both offset (from topleft document) and position (from offsetParent).\r\n\noptions:\r\n- els\r\n- isHorizontal\r\n- isVertical\r\n*/\r\nvar CoordCache = /** @class */ (function () {\r\n function CoordCache(options) {\r\n this.isHorizontal = false; // whether to query for left/right/width\r\n this.isVertical = false; // whether to query for top/bottom/height\r\n this.els = $(options.els);\r\n this.isHorizontal = options.isHorizontal;\r\n this.isVertical = options.isVertical;\r\n this.forcedOffsetParentEl = options.offsetParent ? $(options.offsetParent) : null;\r\n }\r\n // Queries the els for coordinates and stores them.\r\n // Call this method before using and of the get* methods below.\r\n CoordCache.prototype.build = function () {\r\n var offsetParentEl = this.forcedOffsetParentEl;\r\n if (!offsetParentEl && this.els.length > 0) {\r\n offsetParentEl = this.els.eq(0).offsetParent();\r\n }\r\n this.origin = offsetParentEl ?\r\n offsetParentEl.offset() :\r\n null;\r\n this.boundingRect = this.queryBoundingRect();\r\n if (this.isHorizontal) {\r\n this.buildElHorizontals();\r\n }\r\n if (this.isVertical) {\r\n this.buildElVerticals();\r\n }\r\n };\r\n // Destroys all internal data about coordinates, freeing memory\r\n CoordCache.prototype.clear = function () {\r\n this.origin = null;\r\n this.boundingRect = null;\r\n this.lefts = null;\r\n this.rights = null;\r\n this.tops = null;\r\n this.bottoms = null;\r\n };\r\n // When called, if coord caches aren't built, builds them\r\n CoordCache.prototype.ensureBuilt = function () {\r\n if (!this.origin) {\r\n this.build();\r\n }\r\n };\r\n // Populates the left/right internal coordinate arrays\r\n CoordCache.prototype.buildElHorizontals = function () {\r\n var lefts = [];\r\n var rights = [];\r\n this.els.each(function (i, node) {\r\n var el = $(node);\r\n var left = el.offset().left;\r\n var width = el.outerWidth();\r\n lefts.push(left);\r\n rights.push(left + width);\r\n });\r\n this.lefts = lefts;\r\n this.rights = rights;\r\n };\r\n // Populates the top/bottom internal coordinate arrays\r\n CoordCache.prototype.buildElVerticals = function () {\r\n var tops = [];\r\n var bottoms = [];\r\n this.els.each(function (i, node) {\r\n var el = $(node);\r\n var top = el.offset().top;\r\n var height = el.outerHeight();\r\n tops.push(top);\r\n bottoms.push(top + height);\r\n });\r\n this.tops = tops;\r\n this.bottoms = bottoms;\r\n };\r\n // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\r\n // If no intersection is made, returns undefined.\r\n CoordCache.prototype.getHorizontalIndex = function (leftOffset) {\r\n this.ensureBuilt();\r\n var lefts = this.lefts;\r\n var rights = this.rights;\r\n var len = lefts.length;\r\n var i;\r\n for (i = 0; i < len; i++) {\r\n if (leftOffset >= lefts[i] && leftOffset < rights[i]) {\r\n return i;\r\n }\r\n }\r\n };\r\n // Given a top offset (from document top), returns the index of the el that it vertically intersects.\r\n // If no intersection is made, returns undefined.\r\n CoordCache.prototype.getVerticalIndex = function (topOffset) {\r\n this.ensureBuilt();\r\n var tops = this.tops;\r\n var bottoms = this.bottoms;\r\n var len = tops.length;\r\n var i;\r\n for (i = 0; i < len; i++) {\r\n if (topOffset >= tops[i] && topOffset < bottoms[i]) {\r\n return i;\r\n }\r\n }\r\n };\r\n // Gets the left offset (from document left) of the element at the given index\r\n CoordCache.prototype.getLeftOffset = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.lefts[leftIndex];\r\n };\r\n // Gets the left position (from offsetParent left) of the element at the given index\r\n CoordCache.prototype.getLeftPosition = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.lefts[leftIndex] - this.origin.left;\r\n };\r\n // Gets the right offset (from document left) of the element at the given index.\r\n // This value is NOT relative to the document's right edge, like the CSS concept of \"right\" would be.\r\n CoordCache.prototype.getRightOffset = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.rights[leftIndex];\r\n };\r\n // Gets the right position (from offsetParent left) of the element at the given index.\r\n // This value is NOT relative to the offsetParent's right edge, like the CSS concept of \"right\" would be.\r\n CoordCache.prototype.getRightPosition = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.rights[leftIndex] - this.origin.left;\r\n };\r\n // Gets the width of the element at the given index\r\n CoordCache.prototype.getWidth = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.rights[leftIndex] - this.lefts[leftIndex];\r\n };\r\n // Gets the top offset (from document top) of the element at the given index\r\n CoordCache.prototype.getTopOffset = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.tops[topIndex];\r\n };\r\n // Gets the top position (from offsetParent top) of the element at the given position\r\n CoordCache.prototype.getTopPosition = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.tops[topIndex] - this.origin.top;\r\n };\r\n // Gets the bottom offset (from the document top) of the element at the given index.\r\n // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\r\n CoordCache.prototype.getBottomOffset = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.bottoms[topIndex];\r\n };\r\n // Gets the bottom position (from the offsetParent top) of the element at the given index.\r\n // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\r\n CoordCache.prototype.getBottomPosition = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.bottoms[topIndex] - this.origin.top;\r\n };\r\n // Gets the height of the element at the given index\r\n CoordCache.prototype.getHeight = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.bottoms[topIndex] - this.tops[topIndex];\r\n };\r\n // Bounding Rect\r\n // TODO: decouple this from CoordCache\r\n // Compute and return what the elements' bounding rectangle is, from the user's perspective.\r\n // Right now, only returns a rectangle if constrained by an overflow:scroll element.\r\n // Returns null if there are no elements\r\n CoordCache.prototype.queryBoundingRect = function () {\r\n var scrollParentEl;\r\n if (this.els.length > 0) {\r\n scrollParentEl = util_1.getScrollParent(this.els.eq(0));\r\n if (!scrollParentEl.is(document) &&\r\n !scrollParentEl.is('html,body') // don't consider these bounding rects. solves issue 3615\r\n ) {\r\n return util_1.getClientRect(scrollParentEl);\r\n }\r\n }\r\n return null;\r\n };\r\n CoordCache.prototype.isPointInBounds = function (leftOffset, topOffset) {\r\n return this.isLeftInBounds(leftOffset) && this.isTopInBounds(topOffset);\r\n };\r\n CoordCache.prototype.isLeftInBounds = function (leftOffset) {\r\n return !this.boundingRect || (leftOffset >= this.boundingRect.left && leftOffset < this.boundingRect.right);\r\n };\r\n CoordCache.prototype.isTopInBounds = function (topOffset) {\r\n return !this.boundingRect || (topOffset >= this.boundingRect.top && topOffset < this.boundingRect.bottom);\r\n };\r\n return CoordCache;\r\n}());\r\nexports.default = CoordCache;\r\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\n/* Tracks a drag's mouse movement, firing various handlers\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// TODO: use Emitter\r\nvar DragListener = /** @class */ (function () {\r\n function DragListener(options) {\r\n this.isInteracting = false;\r\n this.isDistanceSurpassed = false;\r\n this.isDelayEnded = false;\r\n this.isDragging = false;\r\n this.isTouch = false;\r\n this.isGeneric = false; // initiated by 'dragstart' (jqui)\r\n this.shouldCancelTouchScroll = true;\r\n this.scrollAlwaysKills = false;\r\n this.isAutoScroll = false;\r\n // defaults\r\n this.scrollSensitivity = 30; // pixels from edge for scrolling to start\r\n this.scrollSpeed = 200; // pixels per second, at maximum speed\r\n this.scrollIntervalMs = 50; // millisecond wait between scroll increment\r\n this.options = options || {};\r\n }\r\n // Interaction (high-level)\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.startInteraction = function (ev, extraOptions) {\r\n if (extraOptions === void 0) { extraOptions = {}; }\r\n if (ev.type === 'mousedown') {\r\n if (GlobalEmitter_1.default.get().shouldIgnoreMouse()) {\r\n return;\r\n }\r\n else if (!util_1.isPrimaryMouseButton(ev)) {\r\n return;\r\n }\r\n else {\r\n ev.preventDefault(); // prevents native selection in most browsers\r\n }\r\n }\r\n if (!this.isInteracting) {\r\n // process options\r\n this.delay = util_1.firstDefined(extraOptions.delay, this.options.delay, 0);\r\n this.minDistance = util_1.firstDefined(extraOptions.distance, this.options.distance, 0);\r\n this.subjectEl = this.options.subjectEl;\r\n util_1.preventSelection($('body'));\r\n this.isInteracting = true;\r\n this.isTouch = util_1.getEvIsTouch(ev);\r\n this.isGeneric = ev.type === 'dragstart';\r\n this.isDelayEnded = false;\r\n this.isDistanceSurpassed = false;\r\n this.originX = util_1.getEvX(ev);\r\n this.originY = util_1.getEvY(ev);\r\n this.scrollEl = util_1.getScrollParent($(ev.target));\r\n this.bindHandlers();\r\n this.initAutoScroll();\r\n this.handleInteractionStart(ev);\r\n this.startDelay(ev);\r\n if (!this.minDistance) {\r\n this.handleDistanceSurpassed(ev);\r\n }\r\n }\r\n };\r\n DragListener.prototype.handleInteractionStart = function (ev) {\r\n this.trigger('interactionStart', ev);\r\n };\r\n DragListener.prototype.endInteraction = function (ev, isCancelled) {\r\n if (this.isInteracting) {\r\n this.endDrag(ev);\r\n if (this.delayTimeoutId) {\r\n clearTimeout(this.delayTimeoutId);\r\n this.delayTimeoutId = null;\r\n }\r\n this.destroyAutoScroll();\r\n this.unbindHandlers();\r\n this.isInteracting = false;\r\n this.handleInteractionEnd(ev, isCancelled);\r\n util_1.allowSelection($('body'));\r\n }\r\n };\r\n DragListener.prototype.handleInteractionEnd = function (ev, isCancelled) {\r\n this.trigger('interactionEnd', ev, isCancelled || false);\r\n };\r\n // Binding To DOM\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.bindHandlers = function () {\r\n // some browsers (Safari in iOS 10) don't allow preventDefault on touch events that are bound after touchstart,\r\n // so listen to the GlobalEmitter singleton, which is always bound, instead of the document directly.\r\n var globalEmitter = GlobalEmitter_1.default.get();\r\n if (this.isGeneric) {\r\n this.listenTo($(document), {\r\n drag: this.handleMove,\r\n dragstop: this.endInteraction\r\n });\r\n }\r\n else if (this.isTouch) {\r\n this.listenTo(globalEmitter, {\r\n touchmove: this.handleTouchMove,\r\n touchend: this.endInteraction,\r\n scroll: this.handleTouchScroll\r\n });\r\n }\r\n else {\r\n this.listenTo(globalEmitter, {\r\n mousemove: this.handleMouseMove,\r\n mouseup: this.endInteraction\r\n });\r\n }\r\n this.listenTo(globalEmitter, {\r\n selectstart: util_1.preventDefault,\r\n contextmenu: util_1.preventDefault // long taps would open menu on Chrome dev tools\r\n });\r\n };\r\n DragListener.prototype.unbindHandlers = function () {\r\n this.stopListeningTo(GlobalEmitter_1.default.get());\r\n this.stopListeningTo($(document)); // for isGeneric\r\n };\r\n // Drag (high-level)\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // extraOptions ignored if drag already started\r\n DragListener.prototype.startDrag = function (ev, extraOptions) {\r\n this.startInteraction(ev, extraOptions); // ensure interaction began\r\n if (!this.isDragging) {\r\n this.isDragging = true;\r\n this.handleDragStart(ev);\r\n }\r\n };\r\n DragListener.prototype.handleDragStart = function (ev) {\r\n this.trigger('dragStart', ev);\r\n };\r\n DragListener.prototype.handleMove = function (ev) {\r\n var dx = util_1.getEvX(ev) - this.originX;\r\n var dy = util_1.getEvY(ev) - this.originY;\r\n var minDistance = this.minDistance;\r\n var distanceSq; // current distance from the origin, squared\r\n if (!this.isDistanceSurpassed) {\r\n distanceSq = dx * dx + dy * dy;\r\n if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\r\n this.handleDistanceSurpassed(ev);\r\n }\r\n }\r\n if (this.isDragging) {\r\n this.handleDrag(dx, dy, ev);\r\n }\r\n };\r\n // Called while the mouse is being moved and when we know a legitimate drag is taking place\r\n DragListener.prototype.handleDrag = function (dx, dy, ev) {\r\n this.trigger('drag', dx, dy, ev);\r\n this.updateAutoScroll(ev); // will possibly cause scrolling\r\n };\r\n DragListener.prototype.endDrag = function (ev) {\r\n if (this.isDragging) {\r\n this.isDragging = false;\r\n this.handleDragEnd(ev);\r\n }\r\n };\r\n DragListener.prototype.handleDragEnd = function (ev) {\r\n this.trigger('dragEnd', ev);\r\n };\r\n // Delay\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.startDelay = function (initialEv) {\r\n var _this = this;\r\n if (this.delay) {\r\n this.delayTimeoutId = setTimeout(function () {\r\n _this.handleDelayEnd(initialEv);\r\n }, this.delay);\r\n }\r\n else {\r\n this.handleDelayEnd(initialEv);\r\n }\r\n };\r\n DragListener.prototype.handleDelayEnd = function (initialEv) {\r\n this.isDelayEnded = true;\r\n if (this.isDistanceSurpassed) {\r\n this.startDrag(initialEv);\r\n }\r\n };\r\n // Distance\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.handleDistanceSurpassed = function (ev) {\r\n this.isDistanceSurpassed = true;\r\n if (this.isDelayEnded) {\r\n this.startDrag(ev);\r\n }\r\n };\r\n // Mouse / Touch\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.handleTouchMove = function (ev) {\r\n // prevent inertia and touchmove-scrolling while dragging\r\n if (this.isDragging && this.shouldCancelTouchScroll) {\r\n ev.preventDefault();\r\n }\r\n this.handleMove(ev);\r\n };\r\n DragListener.prototype.handleMouseMove = function (ev) {\r\n this.handleMove(ev);\r\n };\r\n // Scrolling (unrelated to auto-scroll)\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.handleTouchScroll = function (ev) {\r\n // if the drag is being initiated by touch, but a scroll happens before\r\n // the drag-initiating delay is over, cancel the drag\r\n if (!this.isDragging || this.scrollAlwaysKills) {\r\n this.endInteraction(ev, true); // isCancelled=true\r\n }\r\n };\r\n // Utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Triggers a callback. Calls a function in the option hash of the same name.\r\n // Arguments beyond the first `name` are forwarded on.\r\n DragListener.prototype.trigger = function (name) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (this.options[name]) {\r\n this.options[name].apply(this, args);\r\n }\r\n // makes _methods callable by event name. TODO: kill this\r\n if (this['_' + name]) {\r\n this['_' + name].apply(this, args);\r\n }\r\n };\r\n // Auto-scroll\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.initAutoScroll = function () {\r\n var scrollEl = this.scrollEl;\r\n this.isAutoScroll =\r\n this.options.scroll &&\r\n scrollEl &&\r\n !scrollEl.is(window) &&\r\n !scrollEl.is(document);\r\n if (this.isAutoScroll) {\r\n // debounce makes sure rapid calls don't happen\r\n this.listenTo(scrollEl, 'scroll', util_1.debounce(this.handleDebouncedScroll, 100));\r\n }\r\n };\r\n DragListener.prototype.destroyAutoScroll = function () {\r\n this.endAutoScroll(); // kill any animation loop\r\n // remove the scroll handler if there is a scrollEl\r\n if (this.isAutoScroll) {\r\n this.stopListeningTo(this.scrollEl, 'scroll'); // will probably get removed by unbindHandlers too :(\r\n }\r\n };\r\n // Computes and stores the bounding rectangle of scrollEl\r\n DragListener.prototype.computeScrollBounds = function () {\r\n if (this.isAutoScroll) {\r\n this.scrollBounds = util_1.getOuterRect(this.scrollEl);\r\n // TODO: use getClientRect in future. but prevents auto scrolling when on top of scrollbars\r\n }\r\n };\r\n // Called when the dragging is in progress and scrolling should be updated\r\n DragListener.prototype.updateAutoScroll = function (ev) {\r\n var sensitivity = this.scrollSensitivity;\r\n var bounds = this.scrollBounds;\r\n var topCloseness;\r\n var bottomCloseness;\r\n var leftCloseness;\r\n var rightCloseness;\r\n var topVel = 0;\r\n var leftVel = 0;\r\n if (bounds) { // only scroll if scrollEl exists\r\n // compute closeness to edges. valid range is from 0.0 - 1.0\r\n topCloseness = (sensitivity - (util_1.getEvY(ev) - bounds.top)) / sensitivity;\r\n bottomCloseness = (sensitivity - (bounds.bottom - util_1.getEvY(ev))) / sensitivity;\r\n leftCloseness = (sensitivity - (util_1.getEvX(ev) - bounds.left)) / sensitivity;\r\n rightCloseness = (sensitivity - (bounds.right - util_1.getEvX(ev))) / sensitivity;\r\n // translate vertical closeness into velocity.\r\n // mouse must be completely in bounds for velocity to happen.\r\n if (topCloseness >= 0 && topCloseness <= 1) {\r\n topVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up\r\n }\r\n else if (bottomCloseness >= 0 && bottomCloseness <= 1) {\r\n topVel = bottomCloseness * this.scrollSpeed;\r\n }\r\n // translate horizontal closeness into velocity\r\n if (leftCloseness >= 0 && leftCloseness <= 1) {\r\n leftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left\r\n }\r\n else if (rightCloseness >= 0 && rightCloseness <= 1) {\r\n leftVel = rightCloseness * this.scrollSpeed;\r\n }\r\n }\r\n this.setScrollVel(topVel, leftVel);\r\n };\r\n // Sets the speed-of-scrolling for the scrollEl\r\n DragListener.prototype.setScrollVel = function (topVel, leftVel) {\r\n this.scrollTopVel = topVel;\r\n this.scrollLeftVel = leftVel;\r\n this.constrainScrollVel(); // massages into realistic values\r\n // if there is non-zero velocity, and an animation loop hasn't already started, then START\r\n if ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) {\r\n this.scrollIntervalId = setInterval(util_1.proxy(this, 'scrollIntervalFunc'), // scope to `this`\r\n this.scrollIntervalMs);\r\n }\r\n };\r\n // Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way\r\n DragListener.prototype.constrainScrollVel = function () {\r\n var el = this.scrollEl;\r\n if (this.scrollTopVel < 0) { // scrolling up?\r\n if (el.scrollTop() <= 0) { // already scrolled all the way up?\r\n this.scrollTopVel = 0;\r\n }\r\n }\r\n else if (this.scrollTopVel > 0) { // scrolling down?\r\n if (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down?\r\n this.scrollTopVel = 0;\r\n }\r\n }\r\n if (this.scrollLeftVel < 0) { // scrolling left?\r\n if (el.scrollLeft() <= 0) { // already scrolled all the left?\r\n this.scrollLeftVel = 0;\r\n }\r\n }\r\n else if (this.scrollLeftVel > 0) { // scrolling right?\r\n if (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right?\r\n this.scrollLeftVel = 0;\r\n }\r\n }\r\n };\r\n // This function gets called during every iteration of the scrolling animation loop\r\n DragListener.prototype.scrollIntervalFunc = function () {\r\n var el = this.scrollEl;\r\n var frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by\r\n // change the value of scrollEl's scroll\r\n if (this.scrollTopVel) {\r\n el.scrollTop(el.scrollTop() + this.scrollTopVel * frac);\r\n }\r\n if (this.scrollLeftVel) {\r\n el.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac);\r\n }\r\n this.constrainScrollVel(); // since the scroll values changed, recompute the velocities\r\n // if scrolled all the way, which causes the vels to be zero, stop the animation loop\r\n if (!this.scrollTopVel && !this.scrollLeftVel) {\r\n this.endAutoScroll();\r\n }\r\n };\r\n // Kills any existing scrolling animation loop\r\n DragListener.prototype.endAutoScroll = function () {\r\n if (this.scrollIntervalId) {\r\n clearInterval(this.scrollIntervalId);\r\n this.scrollIntervalId = null;\r\n this.handleScrollEnd();\r\n }\r\n };\r\n // Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce)\r\n DragListener.prototype.handleDebouncedScroll = function () {\r\n // recompute all coordinates, but *only* if this is *not* part of our scrolling animation\r\n if (!this.scrollIntervalId) {\r\n this.handleScrollEnd();\r\n }\r\n };\r\n DragListener.prototype.handleScrollEnd = function () {\r\n // Called when scrolling has stopped, whether through auto scroll, or the user scrolling\r\n };\r\n return DragListener;\r\n}());\r\nexports.default = DragListener;\r\nListenerMixin_1.default.mixInto(DragListener);\r\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar Mixin_1 = __webpack_require__(15);\r\n/*\r\nA set of rendering and date-related methods for a visual component comprised of one or more rows of day columns.\r\nPrerequisite: the object being mixed into needs to be a *Grid*\r\n*/\r\nvar DayTableMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayTableMixin, _super);\r\n function DayTableMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Populates internal variables used for date calculation and rendering\r\n DayTableMixin.prototype.updateDayTable = function () {\r\n var t = this;\r\n var view = t.view;\r\n var calendar = view.calendar;\r\n var date = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.startMs, true);\r\n var end = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.endMs, true);\r\n var dayIndex = -1;\r\n var dayIndices = [];\r\n var dayDates = [];\r\n var daysPerRow;\r\n var firstDay;\r\n var rowCnt;\r\n while (date.isBefore(end)) { // loop each day from start to end\r\n if (view.isHiddenDay(date)) {\r\n dayIndices.push(dayIndex + 0.5); // mark that it's between indices\r\n }\r\n else {\r\n dayIndex++;\r\n dayIndices.push(dayIndex);\r\n dayDates.push(date.clone());\r\n }\r\n date.add(1, 'days');\r\n }\r\n if (this.breakOnWeeks) {\r\n // count columns until the day-of-week repeats\r\n firstDay = dayDates[0].day();\r\n for (daysPerRow = 1; daysPerRow < dayDates.length; daysPerRow++) {\r\n if (dayDates[daysPerRow].day() === firstDay) {\r\n break;\r\n }\r\n }\r\n rowCnt = Math.ceil(dayDates.length / daysPerRow);\r\n }\r\n else {\r\n rowCnt = 1;\r\n daysPerRow = dayDates.length;\r\n }\r\n this.dayDates = dayDates;\r\n this.dayIndices = dayIndices;\r\n this.daysPerRow = daysPerRow;\r\n this.rowCnt = rowCnt;\r\n this.updateDayTableCols();\r\n };\r\n // Computes and assigned the colCnt property and updates any options that may be computed from it\r\n DayTableMixin.prototype.updateDayTableCols = function () {\r\n this.colCnt = this.computeColCnt();\r\n this.colHeadFormat =\r\n this.opt('columnHeaderFormat') ||\r\n this.opt('columnFormat') || // deprecated\r\n this.computeColHeadFormat();\r\n };\r\n // Determines how many columns there should be in the table\r\n DayTableMixin.prototype.computeColCnt = function () {\r\n return this.daysPerRow;\r\n };\r\n // Computes the ambiguously-timed moment for the given cell\r\n DayTableMixin.prototype.getCellDate = function (row, col) {\r\n return this.dayDates[this.getCellDayIndex(row, col)].clone();\r\n };\r\n // Computes the ambiguously-timed date range for the given cell\r\n DayTableMixin.prototype.getCellRange = function (row, col) {\r\n var start = this.getCellDate(row, col);\r\n var end = start.clone().add(1, 'days');\r\n return { start: start, end: end };\r\n };\r\n // Returns the number of day cells, chronologically, from the first of the grid (0-based)\r\n DayTableMixin.prototype.getCellDayIndex = function (row, col) {\r\n return row * this.daysPerRow + this.getColDayIndex(col);\r\n };\r\n // Returns the numner of day cells, chronologically, from the first cell in *any given row*\r\n DayTableMixin.prototype.getColDayIndex = function (col) {\r\n if (this.isRTL) {\r\n return this.colCnt - 1 - col;\r\n }\r\n else {\r\n return col;\r\n }\r\n };\r\n // Given a date, returns its chronolocial cell-index from the first cell of the grid.\r\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\r\n // If before the first offset, returns a negative number.\r\n // If after the last offset, returns an offset past the last cell offset.\r\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\r\n DayTableMixin.prototype.getDateDayIndex = function (date) {\r\n var dayIndices = this.dayIndices;\r\n var dayOffset = date.diff(this.dayDates[0], 'days');\r\n if (dayOffset < 0) {\r\n return dayIndices[0] - 1;\r\n }\r\n else if (dayOffset >= dayIndices.length) {\r\n return dayIndices[dayIndices.length - 1] + 1;\r\n }\r\n else {\r\n return dayIndices[dayOffset];\r\n }\r\n };\r\n /* Options\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Computes a default column header formatting string if `colFormat` is not explicitly defined\r\n DayTableMixin.prototype.computeColHeadFormat = function () {\r\n // if more than one week row, or if there are a lot of columns with not much space,\r\n // put just the day numbers will be in each cell\r\n if (this.rowCnt > 1 || this.colCnt > 10) {\r\n return 'ddd'; // \"Sat\"\r\n }\r\n else if (this.colCnt > 1) {\r\n return this.opt('dayOfMonthFormat'); // \"Sat 12/10\"\r\n }\r\n else {\r\n return 'dddd'; // \"Saturday\"\r\n }\r\n };\r\n /* Slicing\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Slices up a date range into a segment for every week-row it intersects with\r\n DayTableMixin.prototype.sliceRangeByRow = function (unzonedRange) {\r\n var daysPerRow = this.daysPerRow;\r\n var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold\r\n var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\r\n var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\r\n var segs = [];\r\n var row;\r\n var rowFirst;\r\n var rowLast; // inclusive day-index range for current row\r\n var segFirst;\r\n var segLast; // inclusive day-index range for segment\r\n for (row = 0; row < this.rowCnt; row++) {\r\n rowFirst = row * daysPerRow;\r\n rowLast = rowFirst + daysPerRow - 1;\r\n // intersect segment's offset range with the row's\r\n segFirst = Math.max(rangeFirst, rowFirst);\r\n segLast = Math.min(rangeLast, rowLast);\r\n // deal with in-between indices\r\n segFirst = Math.ceil(segFirst); // in-between starts round to next cell\r\n segLast = Math.floor(segLast); // in-between ends round to prev cell\r\n if (segFirst <= segLast) { // was there any intersection with the current row?\r\n segs.push({\r\n row: row,\r\n // normalize to start of row\r\n firstRowDayIndex: segFirst - rowFirst,\r\n lastRowDayIndex: segLast - rowFirst,\r\n // must be matching integers to be the segment's start/end\r\n isStart: segFirst === rangeFirst,\r\n isEnd: segLast === rangeLast\r\n });\r\n }\r\n }\r\n return segs;\r\n };\r\n // Slices up a date range into a segment for every day-cell it intersects with.\r\n // TODO: make more DRY with sliceRangeByRow somehow.\r\n DayTableMixin.prototype.sliceRangeByDay = function (unzonedRange) {\r\n var daysPerRow = this.daysPerRow;\r\n var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold\r\n var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\r\n var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\r\n var segs = [];\r\n var row;\r\n var rowFirst;\r\n var rowLast; // inclusive day-index range for current row\r\n var i;\r\n var segFirst;\r\n var segLast; // inclusive day-index range for segment\r\n for (row = 0; row < this.rowCnt; row++) {\r\n rowFirst = row * daysPerRow;\r\n rowLast = rowFirst + daysPerRow - 1;\r\n for (i = rowFirst; i <= rowLast; i++) {\r\n // intersect segment's offset range with the row's\r\n segFirst = Math.max(rangeFirst, i);\r\n segLast = Math.min(rangeLast, i);\r\n // deal with in-between indices\r\n segFirst = Math.ceil(segFirst); // in-between starts round to next cell\r\n segLast = Math.floor(segLast); // in-between ends round to prev cell\r\n if (segFirst <= segLast) { // was there any intersection with the current row?\r\n segs.push({\r\n row: row,\r\n // normalize to start of row\r\n firstRowDayIndex: segFirst - rowFirst,\r\n lastRowDayIndex: segLast - rowFirst,\r\n // must be matching integers to be the segment's start/end\r\n isStart: segFirst === rangeFirst,\r\n isEnd: segLast === rangeLast\r\n });\r\n }\r\n }\r\n }\r\n return segs;\r\n };\r\n /* Header Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayTableMixin.prototype.renderHeadHtml = function () {\r\n var theme = this.view.calendar.theme;\r\n return '' +\r\n '
' +\r\n '' +\r\n '' +\r\n this.renderHeadTrHtml() +\r\n '' +\r\n '
' +\r\n '
';\r\n };\r\n DayTableMixin.prototype.renderHeadIntroHtml = function () {\r\n return this.renderIntroHtml(); // fall back to generic\r\n };\r\n DayTableMixin.prototype.renderHeadTrHtml = function () {\r\n return '' +\r\n '' +\r\n (this.isRTL ? '' : this.renderHeadIntroHtml()) +\r\n this.renderHeadDateCellsHtml() +\r\n (this.isRTL ? this.renderHeadIntroHtml() : '') +\r\n '';\r\n };\r\n DayTableMixin.prototype.renderHeadDateCellsHtml = function () {\r\n var htmls = [];\r\n var col;\r\n var date;\r\n for (col = 0; col < this.colCnt; col++) {\r\n date = this.getCellDate(0, col);\r\n htmls.push(this.renderHeadDateCellHtml(date));\r\n }\r\n return htmls.join('');\r\n };\r\n // TODO: when internalApiVersion, accept an object for HTML attributes\r\n // (colspan should be no different)\r\n DayTableMixin.prototype.renderHeadDateCellHtml = function (date, colspan, otherAttrs) {\r\n var t = this;\r\n var view = t.view;\r\n var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow.\r\n var classNames = [\r\n 'fc-day-header',\r\n view.calendar.theme.getClass('widgetHeader')\r\n ];\r\n var innerHtml;\r\n if (typeof t.opt('columnHeaderHtml') === 'function') {\r\n innerHtml = t.opt('columnHeaderHtml')(date);\r\n }\r\n else if (typeof t.opt('columnHeaderText') === 'function') {\r\n innerHtml = util_1.htmlEscape(t.opt('columnHeaderText')(date));\r\n }\r\n else {\r\n innerHtml = util_1.htmlEscape(date.format(t.colHeadFormat));\r\n }\r\n // if only one row of days, the classNames on the header can represent the specific days beneath\r\n if (t.rowCnt === 1) {\r\n classNames = classNames.concat(\r\n // includes the day-of-week class\r\n // noThemeHighlight=true (don't highlight the header)\r\n t.getDayClasses(date, true));\r\n }\r\n else {\r\n classNames.push('fc-' + util_1.dayIDs[date.day()]); // only add the day-of-week class\r\n }\r\n return '' +\r\n ' 1 ?\r\n ' colspan=\"' + colspan + '\"' :\r\n '') +\r\n (otherAttrs ?\r\n ' ' + otherAttrs :\r\n '') +\r\n '>' +\r\n (isDateValid ?\r\n // don't make a link if the heading could represent multiple days, or if there's only one day (forceOff)\r\n view.buildGotoAnchorHtml({ date: date, forceOff: t.rowCnt > 1 || t.colCnt === 1 }, innerHtml) :\r\n // if not valid, display text, but no link\r\n innerHtml) +\r\n '';\r\n };\r\n /* Background Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayTableMixin.prototype.renderBgTrHtml = function (row) {\r\n return '' +\r\n '' +\r\n (this.isRTL ? '' : this.renderBgIntroHtml(row)) +\r\n this.renderBgCellsHtml(row) +\r\n (this.isRTL ? this.renderBgIntroHtml(row) : '') +\r\n '';\r\n };\r\n DayTableMixin.prototype.renderBgIntroHtml = function (row) {\r\n return this.renderIntroHtml(); // fall back to generic\r\n };\r\n DayTableMixin.prototype.renderBgCellsHtml = function (row) {\r\n var htmls = [];\r\n var col;\r\n var date;\r\n for (col = 0; col < this.colCnt; col++) {\r\n date = this.getCellDate(row, col);\r\n htmls.push(this.renderBgCellHtml(date));\r\n }\r\n return htmls.join('');\r\n };\r\n DayTableMixin.prototype.renderBgCellHtml = function (date, otherAttrs) {\r\n var t = this;\r\n var view = t.view;\r\n var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow.\r\n var classes = t.getDayClasses(date);\r\n classes.unshift('fc-day', view.calendar.theme.getClass('widgetContent'));\r\n return '';\r\n };\r\n /* Generic\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayTableMixin.prototype.renderIntroHtml = function () {\r\n // Generates the default HTML intro for any row. User classes should override\r\n };\r\n // TODO: a generic method for dealing with , RTL, intro\r\n // when increment internalApiVersion\r\n // wrapTr (scheduler)\r\n /* Utils\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Applies the generic \"intro\" and \"outro\" HTML to the given cells.\r\n // Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro.\r\n DayTableMixin.prototype.bookendCells = function (trEl) {\r\n var introHtml = this.renderIntroHtml();\r\n if (introHtml) {\r\n if (this.isRTL) {\r\n trEl.append(introHtml);\r\n }\r\n else {\r\n trEl.prepend(introHtml);\r\n }\r\n }\r\n };\r\n return DayTableMixin;\r\n}(Mixin_1.default));\r\nexports.default = DayTableMixin;\r\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BusinessHourRenderer = /** @class */ (function () {\r\n /*\r\n component implements:\r\n - eventRangesToEventFootprints\r\n - eventFootprintsToSegs\r\n */\r\n function BusinessHourRenderer(component, fillRenderer) {\r\n this.component = component;\r\n this.fillRenderer = fillRenderer;\r\n }\r\n BusinessHourRenderer.prototype.render = function (businessHourGenerator) {\r\n var component = this.component;\r\n var unzonedRange = component._getDateProfile().activeUnzonedRange;\r\n var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(component.hasAllDayBusinessHours, unzonedRange);\r\n var eventFootprints = eventInstanceGroup ?\r\n component.eventRangesToEventFootprints(eventInstanceGroup.sliceRenderRanges(unzonedRange)) :\r\n [];\r\n this.renderEventFootprints(eventFootprints);\r\n };\r\n BusinessHourRenderer.prototype.renderEventFootprints = function (eventFootprints) {\r\n var segs = this.component.eventFootprintsToSegs(eventFootprints);\r\n this.renderSegs(segs);\r\n this.segs = segs;\r\n };\r\n BusinessHourRenderer.prototype.renderSegs = function (segs) {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.renderSegs('businessHours', segs, {\r\n getClasses: function (seg) {\r\n return ['fc-nonbusiness', 'fc-bgevent'];\r\n }\r\n });\r\n }\r\n };\r\n BusinessHourRenderer.prototype.unrender = function () {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.unrender('businessHours');\r\n }\r\n this.segs = null;\r\n };\r\n BusinessHourRenderer.prototype.getSegs = function () {\r\n return this.segs || [];\r\n };\r\n return BusinessHourRenderer;\r\n}());\r\nexports.default = BusinessHourRenderer;\r\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar FillRenderer = /** @class */ (function () {\r\n function FillRenderer(component) {\r\n this.fillSegTag = 'div';\r\n this.component = component;\r\n this.elsByFill = {};\r\n }\r\n FillRenderer.prototype.renderFootprint = function (type, componentFootprint, props) {\r\n this.renderSegs(type, this.component.componentFootprintToSegs(componentFootprint), props);\r\n };\r\n FillRenderer.prototype.renderSegs = function (type, segs, props) {\r\n var els;\r\n segs = this.buildSegEls(type, segs, props); // assignes `.el` to each seg. returns successfully rendered segs\r\n els = this.attachSegEls(type, segs);\r\n if (els) {\r\n this.reportEls(type, els);\r\n }\r\n return segs;\r\n };\r\n // Unrenders a specific type of fill that is currently rendered on the grid\r\n FillRenderer.prototype.unrender = function (type) {\r\n var el = this.elsByFill[type];\r\n if (el) {\r\n el.remove();\r\n delete this.elsByFill[type];\r\n }\r\n };\r\n // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types.\r\n // Only returns segments that successfully rendered.\r\n FillRenderer.prototype.buildSegEls = function (type, segs, props) {\r\n var _this = this;\r\n var html = '';\r\n var renderedSegs = [];\r\n var i;\r\n if (segs.length) {\r\n // build a large concatenation of segment HTML\r\n for (i = 0; i < segs.length; i++) {\r\n html += this.buildSegHtml(type, segs[i], props);\r\n }\r\n // Grab individual elements from the combined HTML string. Use each as the default rendering.\r\n // Then, compute the 'el' for each segment.\r\n $(html).each(function (i, node) {\r\n var seg = segs[i];\r\n var el = $(node);\r\n // allow custom filter methods per-type\r\n if (props.filterEl) {\r\n el = props.filterEl(seg, el);\r\n }\r\n if (el) { // custom filters did not cancel the render\r\n el = $(el); // allow custom filter to return raw DOM node\r\n // correct element type? (would be bad if a non-TD were inserted into a table for example)\r\n if (el.is(_this.fillSegTag)) {\r\n seg.el = el;\r\n renderedSegs.push(seg);\r\n }\r\n }\r\n });\r\n }\r\n return renderedSegs;\r\n };\r\n // Builds the HTML needed for one fill segment. Generic enough to work with different types.\r\n FillRenderer.prototype.buildSegHtml = function (type, seg, props) {\r\n // custom hooks per-type\r\n var classes = props.getClasses ? props.getClasses(seg) : [];\r\n var css = util_1.cssToStr(props.getCss ? props.getCss(seg) : {});\r\n return '<' + this.fillSegTag +\r\n (classes.length ? ' class=\"' + classes.join(' ') + '\"' : '') +\r\n (css ? ' style=\"' + css + '\"' : '') +\r\n ' />';\r\n };\r\n // Should return wrapping DOM structure\r\n FillRenderer.prototype.attachSegEls = function (type, segs) {\r\n // subclasses must implement\r\n };\r\n FillRenderer.prototype.reportEls = function (type, nodes) {\r\n if (this.elsByFill[type]) {\r\n this.elsByFill[type] = this.elsByFill[type].add(nodes);\r\n }\r\n else {\r\n this.elsByFill[type] = $(nodes);\r\n }\r\n };\r\n return FillRenderer;\r\n}());\r\nexports.default = FillRenderer;\r\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventFootprint_1 = __webpack_require__(34);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar HelperRenderer = /** @class */ (function () {\r\n function HelperRenderer(component, eventRenderer) {\r\n this.view = component._getView();\r\n this.component = component;\r\n this.eventRenderer = eventRenderer;\r\n }\r\n HelperRenderer.prototype.renderComponentFootprint = function (componentFootprint) {\r\n this.renderEventFootprints([\r\n this.fabricateEventFootprint(componentFootprint)\r\n ]);\r\n };\r\n HelperRenderer.prototype.renderEventDraggingFootprints = function (eventFootprints, sourceSeg, isTouch) {\r\n this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-dragging', isTouch ? null : this.view.opt('dragOpacity'));\r\n };\r\n HelperRenderer.prototype.renderEventResizingFootprints = function (eventFootprints, sourceSeg, isTouch) {\r\n this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-resizing');\r\n };\r\n HelperRenderer.prototype.renderEventFootprints = function (eventFootprints, sourceSeg, extraClassNames, opacity) {\r\n var segs = this.component.eventFootprintsToSegs(eventFootprints);\r\n var classNames = 'fc-helper ' + (extraClassNames || '');\r\n var i;\r\n // assigns each seg's el and returns a subset of segs that were rendered\r\n segs = this.eventRenderer.renderFgSegEls(segs);\r\n for (i = 0; i < segs.length; i++) {\r\n segs[i].el.addClass(classNames);\r\n }\r\n if (opacity != null) {\r\n for (i = 0; i < segs.length; i++) {\r\n segs[i].el.css('opacity', opacity);\r\n }\r\n }\r\n this.helperEls = this.renderSegs(segs, sourceSeg);\r\n };\r\n /*\r\n Must return all mock event elements\r\n */\r\n HelperRenderer.prototype.renderSegs = function (segs, sourceSeg) {\r\n // Subclasses must implement\r\n };\r\n HelperRenderer.prototype.unrender = function () {\r\n if (this.helperEls) {\r\n this.helperEls.remove();\r\n this.helperEls = null;\r\n }\r\n };\r\n HelperRenderer.prototype.fabricateEventFootprint = function (componentFootprint) {\r\n var calendar = this.view.calendar;\r\n var eventDateProfile = calendar.footprintToDateProfile(componentFootprint);\r\n var dummyEvent = new SingleEventDef_1.default(new EventSource_1.default(calendar));\r\n var dummyInstance;\r\n dummyEvent.dateProfile = eventDateProfile;\r\n dummyInstance = dummyEvent.buildInstance();\r\n return new EventFootprint_1.default(componentFootprint, dummyEvent, dummyInstance);\r\n };\r\n return HelperRenderer;\r\n}());\r\nexports.default = HelperRenderer;\r\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar EventPointing = /** @class */ (function (_super) {\r\n tslib_1.__extends(EventPointing, _super);\r\n function EventPointing() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /*\r\n component must implement:\r\n - publiclyTrigger\r\n */\r\n EventPointing.prototype.bindToEl = function (el) {\r\n var component = this.component;\r\n component.bindSegHandlerToEl(el, 'click', this.handleClick.bind(this));\r\n component.bindSegHandlerToEl(el, 'mouseenter', this.handleMouseover.bind(this));\r\n component.bindSegHandlerToEl(el, 'mouseleave', this.handleMouseout.bind(this));\r\n };\r\n EventPointing.prototype.handleClick = function (seg, ev) {\r\n var res = this.component.publiclyTrigger('eventClick', {\r\n context: seg.el[0],\r\n args: [seg.footprint.getEventLegacy(), ev, this.view]\r\n });\r\n if (res === false) {\r\n ev.preventDefault();\r\n }\r\n };\r\n // Updates internal state and triggers handlers for when an event element is moused over\r\n EventPointing.prototype.handleMouseover = function (seg, ev) {\r\n if (!GlobalEmitter_1.default.get().shouldIgnoreMouse() &&\r\n !this.mousedOverSeg) {\r\n this.mousedOverSeg = seg;\r\n // TODO: move to EventSelecting's responsibility\r\n if (this.view.isEventDefResizable(seg.footprint.eventDef)) {\r\n seg.el.addClass('fc-allow-mouse-resize');\r\n }\r\n this.component.publiclyTrigger('eventMouseover', {\r\n context: seg.el[0],\r\n args: [seg.footprint.getEventLegacy(), ev, this.view]\r\n });\r\n }\r\n };\r\n // Updates internal state and triggers handlers for when an event element is moused out.\r\n // Can be given no arguments, in which case it will mouseout the segment that was previously moused over.\r\n EventPointing.prototype.handleMouseout = function (seg, ev) {\r\n if (this.mousedOverSeg) {\r\n this.mousedOverSeg = null;\r\n // TODO: move to EventSelecting's responsibility\r\n if (this.view.isEventDefResizable(seg.footprint.eventDef)) {\r\n seg.el.removeClass('fc-allow-mouse-resize');\r\n }\r\n this.component.publiclyTrigger('eventMouseout', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev || {},\r\n this.view\r\n ]\r\n });\r\n }\r\n };\r\n EventPointing.prototype.end = function () {\r\n if (this.mousedOverSeg) {\r\n this.handleMouseout(this.mousedOverSeg);\r\n }\r\n };\r\n return EventPointing;\r\n}(Interaction_1.default));\r\nexports.default = EventPointing;\r\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Mixin_1 = __webpack_require__(15);\r\nvar DateClicking_1 = __webpack_require__(237);\r\nvar DateSelecting_1 = __webpack_require__(236);\r\nvar EventPointing_1 = __webpack_require__(64);\r\nvar EventDragging_1 = __webpack_require__(235);\r\nvar EventResizing_1 = __webpack_require__(234);\r\nvar ExternalDropping_1 = __webpack_require__(233);\r\nvar StandardInteractionsMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(StandardInteractionsMixin, _super);\r\n function StandardInteractionsMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return StandardInteractionsMixin;\r\n}(Mixin_1.default));\r\nexports.default = StandardInteractionsMixin;\r\nStandardInteractionsMixin.prototype.dateClickingClass = DateClicking_1.default;\r\nStandardInteractionsMixin.prototype.dateSelectingClass = DateSelecting_1.default;\r\nStandardInteractionsMixin.prototype.eventPointingClass = EventPointing_1.default;\r\nStandardInteractionsMixin.prototype.eventDraggingClass = EventDragging_1.default;\r\nStandardInteractionsMixin.prototype.eventResizingClass = EventResizing_1.default;\r\nStandardInteractionsMixin.prototype.externalDroppingClass = ExternalDropping_1.default;\r\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar CoordCache_1 = __webpack_require__(58);\r\nvar Popover_1 = __webpack_require__(227);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar EventFootprint_1 = __webpack_require__(34);\r\nvar BusinessHourRenderer_1 = __webpack_require__(61);\r\nvar StandardInteractionsMixin_1 = __webpack_require__(65);\r\nvar InteractiveDateComponent_1 = __webpack_require__(42);\r\nvar DayTableMixin_1 = __webpack_require__(60);\r\nvar DayGridEventRenderer_1 = __webpack_require__(243);\r\nvar DayGridHelperRenderer_1 = __webpack_require__(244);\r\nvar DayGridFillRenderer_1 = __webpack_require__(245);\r\n/* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week.\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar DayGrid = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayGrid, _super);\r\n function DayGrid(view) {\r\n var _this = _super.call(this, view) || this;\r\n _this.cellWeekNumbersVisible = false; // display week numbers in day cell?\r\n _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid\r\n // isRigid determines whether the individual rows should ignore the contents and be a constant height.\r\n // Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient.\r\n _this.isRigid = false;\r\n _this.hasAllDayBusinessHours = true;\r\n return _this;\r\n }\r\n // Slices up the given span (unzoned start/end with other misc data) into an array of segments\r\n DayGrid.prototype.componentFootprintToSegs = function (componentFootprint) {\r\n var segs = this.sliceRangeByRow(componentFootprint.unzonedRange);\r\n var i;\r\n var seg;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n if (this.isRTL) {\r\n seg.leftCol = this.daysPerRow - 1 - seg.lastRowDayIndex;\r\n seg.rightCol = this.daysPerRow - 1 - seg.firstRowDayIndex;\r\n }\r\n else {\r\n seg.leftCol = seg.firstRowDayIndex;\r\n seg.rightCol = seg.lastRowDayIndex;\r\n }\r\n }\r\n return segs;\r\n };\r\n /* Date Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayGrid.prototype.renderDates = function (dateProfile) {\r\n this.dateProfile = dateProfile;\r\n this.updateDayTable();\r\n this.renderGrid();\r\n };\r\n DayGrid.prototype.unrenderDates = function () {\r\n this.removeSegPopover();\r\n };\r\n // Renders the rows and columns into the component's `this.el`, which should already be assigned.\r\n DayGrid.prototype.renderGrid = function () {\r\n var view = this.view;\r\n var rowCnt = this.rowCnt;\r\n var colCnt = this.colCnt;\r\n var html = '';\r\n var row;\r\n var col;\r\n if (this.headContainerEl) {\r\n this.headContainerEl.html(this.renderHeadHtml());\r\n }\r\n for (row = 0; row < rowCnt; row++) {\r\n html += this.renderDayRowHtml(row, this.isRigid);\r\n }\r\n this.el.html(html);\r\n this.rowEls = this.el.find('.fc-row');\r\n this.cellEls = this.el.find('.fc-day, .fc-disabled-day');\r\n this.rowCoordCache = new CoordCache_1.default({\r\n els: this.rowEls,\r\n isVertical: true\r\n });\r\n this.colCoordCache = new CoordCache_1.default({\r\n els: this.cellEls.slice(0, this.colCnt),\r\n isHorizontal: true\r\n });\r\n // trigger dayRender with each cell's element\r\n for (row = 0; row < rowCnt; row++) {\r\n for (col = 0; col < colCnt; col++) {\r\n this.publiclyTrigger('dayRender', {\r\n context: view,\r\n args: [\r\n this.getCellDate(row, col),\r\n this.getCellEl(row, col),\r\n view\r\n ]\r\n });\r\n }\r\n }\r\n };\r\n // Generates the HTML for a single row, which is a div that wraps a table.\r\n // `row` is the row number.\r\n DayGrid.prototype.renderDayRowHtml = function (row, isRigid) {\r\n var theme = this.view.calendar.theme;\r\n var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')];\r\n if (isRigid) {\r\n classes.push('fc-rigid');\r\n }\r\n return '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n this.renderBgTrHtml(row) +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n (this.getIsNumbersVisible() ?\r\n '' +\r\n this.renderNumberTrHtml(row) +\r\n '' :\r\n '') +\r\n '
' +\r\n '
' +\r\n '
';\r\n };\r\n DayGrid.prototype.getIsNumbersVisible = function () {\r\n return this.getIsDayNumbersVisible() || this.cellWeekNumbersVisible;\r\n };\r\n DayGrid.prototype.getIsDayNumbersVisible = function () {\r\n return this.rowCnt > 1;\r\n };\r\n /* Grid Number Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayGrid.prototype.renderNumberTrHtml = function (row) {\r\n return '' +\r\n '' +\r\n (this.isRTL ? '' : this.renderNumberIntroHtml(row)) +\r\n this.renderNumberCellsHtml(row) +\r\n (this.isRTL ? this.renderNumberIntroHtml(row) : '') +\r\n '';\r\n };\r\n DayGrid.prototype.renderNumberIntroHtml = function (row) {\r\n return this.renderIntroHtml();\r\n };\r\n DayGrid.prototype.renderNumberCellsHtml = function (row) {\r\n var htmls = [];\r\n var col;\r\n var date;\r\n for (col = 0; col < this.colCnt; col++) {\r\n date = this.getCellDate(row, col);\r\n htmls.push(this.renderNumberCellHtml(date));\r\n }\r\n return htmls.join('');\r\n };\r\n // Generates the HTML for the s of the \"number\" row in the DayGrid's content skeleton.\r\n // The number row will only exist if either day numbers or week numbers are turned on.\r\n DayGrid.prototype.renderNumberCellHtml = function (date) {\r\n var view = this.view;\r\n var html = '';\r\n var isDateValid = this.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow.\r\n var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid;\r\n var classes;\r\n var weekCalcFirstDoW;\r\n if (!isDayNumberVisible && !this.cellWeekNumbersVisible) {\r\n // no numbers in day cell (week number must be along the side)\r\n return ''; // will create an empty space above events :(\r\n }\r\n classes = this.getDayClasses(date);\r\n classes.unshift('fc-day-top');\r\n if (this.cellWeekNumbersVisible) {\r\n // To determine the day of week number change under ISO, we cannot\r\n // rely on moment.js methods such as firstDayOfWeek() or weekday(),\r\n // because they rely on the locale's dow (possibly overridden by\r\n // our firstDay option), which may not be Monday. We cannot change\r\n // dow, because that would affect the calendar start day as well.\r\n if (date._locale._fullCalendar_weekCalc === 'ISO') {\r\n weekCalcFirstDoW = 1; // Monday by ISO 8601 definition\r\n }\r\n else {\r\n weekCalcFirstDoW = date._locale.firstDayOfWeek();\r\n }\r\n }\r\n html += '';\r\n if (this.cellWeekNumbersVisible && (date.day() === weekCalcFirstDoW)) {\r\n html += view.buildGotoAnchorHtml({ date: date, type: 'week' }, { 'class': 'fc-week-number' }, date.format('w') // inner HTML\r\n );\r\n }\r\n if (isDayNumberVisible) {\r\n html += view.buildGotoAnchorHtml(date, { 'class': 'fc-day-number' }, date.format('D') // inner HTML\r\n );\r\n }\r\n html += '';\r\n return html;\r\n };\r\n /* Hit System\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayGrid.prototype.prepareHits = function () {\r\n this.colCoordCache.build();\r\n this.rowCoordCache.build();\r\n this.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack\r\n };\r\n DayGrid.prototype.releaseHits = function () {\r\n this.colCoordCache.clear();\r\n this.rowCoordCache.clear();\r\n };\r\n DayGrid.prototype.queryHit = function (leftOffset, topOffset) {\r\n if (this.colCoordCache.isLeftInBounds(leftOffset) && this.rowCoordCache.isTopInBounds(topOffset)) {\r\n var col = this.colCoordCache.getHorizontalIndex(leftOffset);\r\n var row = this.rowCoordCache.getVerticalIndex(topOffset);\r\n if (row != null && col != null) {\r\n return this.getCellHit(row, col);\r\n }\r\n }\r\n };\r\n DayGrid.prototype.getHitFootprint = function (hit) {\r\n var range = this.getCellRange(hit.row, hit.col);\r\n return new ComponentFootprint_1.default(new UnzonedRange_1.default(range.start, range.end), true // all-day?\r\n );\r\n };\r\n DayGrid.prototype.getHitEl = function (hit) {\r\n return this.getCellEl(hit.row, hit.col);\r\n };\r\n /* Cell System\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // FYI: the first column is the leftmost column, regardless of date\r\n DayGrid.prototype.getCellHit = function (row, col) {\r\n return {\r\n row: row,\r\n col: col,\r\n component: this,\r\n left: this.colCoordCache.getLeftOffset(col),\r\n right: this.colCoordCache.getRightOffset(col),\r\n top: this.rowCoordCache.getTopOffset(row),\r\n bottom: this.rowCoordCache.getBottomOffset(row)\r\n };\r\n };\r\n DayGrid.prototype.getCellEl = function (row, col) {\r\n return this.cellEls.eq(row * this.colCnt + col);\r\n };\r\n /* Event Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Unrenders all events currently rendered on the grid\r\n DayGrid.prototype.executeEventUnrender = function () {\r\n this.removeSegPopover(); // removes the \"more..\" events popover\r\n _super.prototype.executeEventUnrender.call(this);\r\n };\r\n // Retrieves all rendered segment objects currently rendered on the grid\r\n DayGrid.prototype.getOwnEventSegs = function () {\r\n // append the segments from the \"more...\" popover\r\n return _super.prototype.getOwnEventSegs.call(this).concat(this.popoverSegs || []);\r\n };\r\n /* Event Drag Visualization\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of an event or external element being dragged.\r\n // `eventLocation` has zoned start and end (optional)\r\n DayGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) {\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n this.renderHighlight(eventFootprints[i].componentFootprint);\r\n }\r\n // render drags from OTHER components as helpers\r\n if (eventFootprints.length && seg && seg.component !== this) {\r\n this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch);\r\n return true; // signal helpers rendered\r\n }\r\n };\r\n // Unrenders any visual indication of a hovering event\r\n DayGrid.prototype.unrenderDrag = function () {\r\n this.unrenderHighlight();\r\n this.helperRenderer.unrender();\r\n };\r\n /* Event Resize Visualization\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of an event being resized\r\n DayGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n this.renderHighlight(eventFootprints[i].componentFootprint);\r\n }\r\n this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch);\r\n };\r\n // Unrenders a visual indication of an event being resized\r\n DayGrid.prototype.unrenderEventResize = function () {\r\n this.unrenderHighlight();\r\n this.helperRenderer.unrender();\r\n };\r\n /* More+ Link Popover\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayGrid.prototype.removeSegPopover = function () {\r\n if (this.segPopover) {\r\n this.segPopover.hide(); // in handler, will call segPopover's removeElement\r\n }\r\n };\r\n // Limits the number of \"levels\" (vertically stacking layers of events) for each row of the grid.\r\n // `levelLimit` can be false (don't limit), a number, or true (should be computed).\r\n DayGrid.prototype.limitRows = function (levelLimit) {\r\n var rowStructs = this.eventRenderer.rowStructs || [];\r\n var row; // row #\r\n var rowLevelLimit;\r\n for (row = 0; row < rowStructs.length; row++) {\r\n this.unlimitRow(row);\r\n if (!levelLimit) {\r\n rowLevelLimit = false;\r\n }\r\n else if (typeof levelLimit === 'number') {\r\n rowLevelLimit = levelLimit;\r\n }\r\n else {\r\n rowLevelLimit = this.computeRowLevelLimit(row);\r\n }\r\n if (rowLevelLimit !== false) {\r\n this.limitRow(row, rowLevelLimit);\r\n }\r\n }\r\n };\r\n // Computes the number of levels a row will accomodate without going outside its bounds.\r\n // Assumes the row is \"rigid\" (maintains a constant height regardless of what is inside).\r\n // `row` is the row number.\r\n DayGrid.prototype.computeRowLevelLimit = function (row) {\r\n var rowEl = this.rowEls.eq(row); // the containing \"fake\" row div\r\n var rowHeight = rowEl.height(); // TODO: cache somehow?\r\n var trEls = this.eventRenderer.rowStructs[row].tbodyEl.children();\r\n var i;\r\n var trEl;\r\n var trHeight;\r\n function iterInnerHeights(i, childNode) {\r\n trHeight = Math.max(trHeight, $(childNode).outerHeight());\r\n }\r\n // Reveal one level at a time and stop when we find one out of bounds\r\n for (i = 0; i < trEls.length; i++) {\r\n trEl = trEls.eq(i).removeClass('fc-limited'); // reset to original state (reveal)\r\n // with rowspans>1 and IE8, trEl.outerHeight() would return the height of the largest cell,\r\n // so instead, find the tallest inner content element.\r\n trHeight = 0;\r\n trEl.find('> td > :first-child').each(iterInnerHeights);\r\n if (trEl.position().top + trHeight > rowHeight) {\r\n return i;\r\n }\r\n }\r\n return false; // should not limit at all\r\n };\r\n // Limits the given grid row to the maximum number of levels and injects \"more\" links if necessary.\r\n // `row` is the row number.\r\n // `levelLimit` is a number for the maximum (inclusive) number of levels allowed.\r\n DayGrid.prototype.limitRow = function (row, levelLimit) {\r\n var _this = this;\r\n var rowStruct = this.eventRenderer.rowStructs[row];\r\n var moreNodes = []; // array of \"more\" links and DOM nodes\r\n var col = 0; // col #, left-to-right (not chronologically)\r\n var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right\r\n var cellMatrix; // a matrix (by level, then column) of all jQuery elements in the row\r\n var limitedNodes; // array of temporarily hidden level and segment DOM nodes\r\n var i;\r\n var seg;\r\n var segsBelow; // array of segment objects below `seg` in the current `col`\r\n var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies\r\n var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column)\r\n var td;\r\n var rowspan;\r\n var segMoreNodes; // array of \"more\" cells that will stand-in for the current seg's cell\r\n var j;\r\n var moreTd;\r\n var moreWrap;\r\n var moreLink;\r\n // Iterates through empty level cells and places \"more\" links inside if need be\r\n var emptyCellsUntil = function (endCol) {\r\n while (col < endCol) {\r\n segsBelow = _this.getCellSegs(row, col, levelLimit);\r\n if (segsBelow.length) {\r\n td = cellMatrix[levelLimit - 1][col];\r\n moreLink = _this.renderMoreLink(row, col, segsBelow);\r\n moreWrap = $('
').append(moreLink);\r\n td.append(moreWrap);\r\n moreNodes.push(moreWrap[0]);\r\n }\r\n col++;\r\n }\r\n };\r\n if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?\r\n levelSegs = rowStruct.segLevels[levelLimit - 1];\r\n cellMatrix = rowStruct.cellMatrix;\r\n limitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level elements past the limit\r\n .addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array\r\n // iterate though segments in the last allowable level\r\n for (i = 0; i < levelSegs.length; i++) {\r\n seg = levelSegs[i];\r\n emptyCellsUntil(seg.leftCol); // process empty cells before the segment\r\n // determine *all* segments below `seg` that occupy the same columns\r\n colSegsBelow = [];\r\n totalSegsBelow = 0;\r\n while (col <= seg.rightCol) {\r\n segsBelow = this.getCellSegs(row, col, levelLimit);\r\n colSegsBelow.push(segsBelow);\r\n totalSegsBelow += segsBelow.length;\r\n col++;\r\n }\r\n if (totalSegsBelow) { // do we need to replace this segment with one or many \"more\" links?\r\n td = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell\r\n rowspan = td.attr('rowspan') || 1;\r\n segMoreNodes = [];\r\n // make a replacement for each column the segment occupies. will be one for each colspan\r\n for (j = 0; j < colSegsBelow.length; j++) {\r\n moreTd = $('').attr('rowspan', rowspan);\r\n segsBelow = colSegsBelow[j];\r\n moreLink = this.renderMoreLink(row, seg.leftCol + j, [seg].concat(segsBelow) // count seg as hidden too\r\n );\r\n moreWrap = $('
').append(moreLink);\r\n moreTd.append(moreWrap);\r\n segMoreNodes.push(moreTd[0]);\r\n moreNodes.push(moreTd[0]);\r\n }\r\n td.addClass('fc-limited').after($(segMoreNodes)); // hide original and inject replacements\r\n limitedNodes.push(td[0]);\r\n }\r\n }\r\n emptyCellsUntil(this.colCnt); // finish off the level\r\n rowStruct.moreEls = $(moreNodes); // for easy undoing later\r\n rowStruct.limitedEls = $(limitedNodes); // for easy undoing later\r\n }\r\n };\r\n // Reveals all levels and removes all \"more\"-related elements for a grid's row.\r\n // `row` is a row number.\r\n DayGrid.prototype.unlimitRow = function (row) {\r\n var rowStruct = this.eventRenderer.rowStructs[row];\r\n if (rowStruct.moreEls) {\r\n rowStruct.moreEls.remove();\r\n rowStruct.moreEls = null;\r\n }\r\n if (rowStruct.limitedEls) {\r\n rowStruct.limitedEls.removeClass('fc-limited');\r\n rowStruct.limitedEls = null;\r\n }\r\n };\r\n // Renders an element that represents hidden event element for a cell.\r\n // Responsible for attaching click handler as well.\r\n DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) {\r\n var _this = this;\r\n var view = this.view;\r\n return $('')\r\n .text(this.getMoreLinkText(hiddenSegs.length))\r\n .on('click', function (ev) {\r\n var clickOption = _this.opt('eventLimitClick');\r\n var date = _this.getCellDate(row, col);\r\n var moreEl = $(ev.currentTarget);\r\n var dayEl = _this.getCellEl(row, col);\r\n var allSegs = _this.getCellSegs(row, col);\r\n // rescope the segments to be within the cell's date\r\n var reslicedAllSegs = _this.resliceDaySegs(allSegs, date);\r\n var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date);\r\n if (typeof clickOption === 'function') {\r\n // the returned value can be an atomic option\r\n clickOption = _this.publiclyTrigger('eventLimitClick', {\r\n context: view,\r\n args: [\r\n {\r\n date: date.clone(),\r\n dayEl: dayEl,\r\n moreEl: moreEl,\r\n segs: reslicedAllSegs,\r\n hiddenSegs: reslicedHiddenSegs\r\n },\r\n ev,\r\n view\r\n ]\r\n });\r\n }\r\n if (clickOption === 'popover') {\r\n _this.showSegPopover(row, col, moreEl, reslicedAllSegs);\r\n }\r\n else if (typeof clickOption === 'string') { // a view name\r\n view.calendar.zoomTo(date, clickOption);\r\n }\r\n });\r\n };\r\n // Reveals the popover that displays all events within a cell\r\n DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) {\r\n var _this = this;\r\n var view = this.view;\r\n var moreWrap = moreLink.parent(); // the
wrapper around the \r\n var topEl; // the element we want to match the top coordinate of\r\n var options;\r\n if (this.rowCnt === 1) {\r\n topEl = view.el; // will cause the popover to cover any sort of header\r\n }\r\n else {\r\n topEl = this.rowEls.eq(row); // will align with top of row\r\n }\r\n options = {\r\n className: 'fc-more-popover ' + view.calendar.theme.getClass('popover'),\r\n content: this.renderSegPopoverContent(row, col, segs),\r\n parentEl: view.el,\r\n top: topEl.offset().top,\r\n autoHide: true,\r\n viewportConstrain: this.opt('popoverViewportConstrain'),\r\n hide: function () {\r\n // kill everything when the popover is hidden\r\n // notify events to be removed\r\n if (_this.popoverSegs) {\r\n _this.triggerBeforeEventSegsDestroyed(_this.popoverSegs);\r\n }\r\n _this.segPopover.removeElement();\r\n _this.segPopover = null;\r\n _this.popoverSegs = null;\r\n }\r\n };\r\n // Determine horizontal coordinate.\r\n // We use the moreWrap instead of the to avoid border confusion.\r\n if (this.isRTL) {\r\n options.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border\r\n }\r\n else {\r\n options.left = moreWrap.offset().left - 1; // -1 to be over cell border\r\n }\r\n this.segPopover = new Popover_1.default(options);\r\n this.segPopover.show();\r\n // the popover doesn't live within the grid's container element, and thus won't get the event\r\n // delegated-handlers for free. attach event-related handlers to the popover.\r\n this.bindAllSegHandlersToEl(this.segPopover.el);\r\n this.triggerAfterEventSegsRendered(segs);\r\n };\r\n // Builds the inner DOM contents of the segment popover\r\n DayGrid.prototype.renderSegPopoverContent = function (row, col, segs) {\r\n var view = this.view;\r\n var theme = view.calendar.theme;\r\n var title = this.getCellDate(row, col).format(this.opt('dayPopoverFormat'));\r\n var content = $('
' +\r\n '' +\r\n '' +\r\n util_1.htmlEscape(title) +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
');\r\n var segContainer = content.find('.fc-event-container');\r\n var i;\r\n // render each seg's `el` and only return the visible segs\r\n segs = this.eventRenderer.renderFgSegEls(segs, true); // disableResizing=true\r\n this.popoverSegs = segs;\r\n for (i = 0; i < segs.length; i++) {\r\n // because segments in the popover are not part of a grid coordinate system, provide a hint to any\r\n // grids that want to do drag-n-drop about which cell it came from\r\n this.hitsNeeded();\r\n segs[i].hit = this.getCellHit(row, col);\r\n this.hitsNotNeeded();\r\n segContainer.append(segs[i].el);\r\n }\r\n return content;\r\n };\r\n // Given the events within an array of segment objects, reslice them to be in a single day\r\n DayGrid.prototype.resliceDaySegs = function (segs, dayDate) {\r\n var dayStart = dayDate.clone();\r\n var dayEnd = dayStart.clone().add(1, 'days');\r\n var dayRange = new UnzonedRange_1.default(dayStart, dayEnd);\r\n var newSegs = [];\r\n var i;\r\n var seg;\r\n var slicedRange;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n slicedRange = seg.footprint.componentFootprint.unzonedRange.intersect(dayRange);\r\n if (slicedRange) {\r\n newSegs.push($.extend({}, seg, {\r\n footprint: new EventFootprint_1.default(new ComponentFootprint_1.default(slicedRange, seg.footprint.componentFootprint.isAllDay), seg.footprint.eventDef, seg.footprint.eventInstance),\r\n isStart: seg.isStart && slicedRange.isStart,\r\n isEnd: seg.isEnd && slicedRange.isEnd\r\n }));\r\n }\r\n }\r\n // force an order because eventsToSegs doesn't guarantee one\r\n // TODO: research if still needed\r\n this.eventRenderer.sortEventSegs(newSegs);\r\n return newSegs;\r\n };\r\n // Generates the text that should be inside a \"more\" link, given the number of events it represents\r\n DayGrid.prototype.getMoreLinkText = function (num) {\r\n var opt = this.opt('eventLimitText');\r\n if (typeof opt === 'function') {\r\n return opt(num);\r\n }\r\n else {\r\n return '+' + num + ' ' + opt;\r\n }\r\n };\r\n // Returns segments within a given cell.\r\n // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.\r\n DayGrid.prototype.getCellSegs = function (row, col, startLevel) {\r\n var segMatrix = this.eventRenderer.rowStructs[row].segMatrix;\r\n var level = startLevel || 0;\r\n var segs = [];\r\n var seg;\r\n while (level < segMatrix.length) {\r\n seg = segMatrix[level][col];\r\n if (seg) {\r\n segs.push(seg);\r\n }\r\n level++;\r\n }\r\n return segs;\r\n };\r\n return DayGrid;\r\n}(InteractiveDateComponent_1.default));\r\nexports.default = DayGrid;\r\nDayGrid.prototype.eventRendererClass = DayGridEventRenderer_1.default;\r\nDayGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default;\r\nDayGrid.prototype.helperRendererClass = DayGridHelperRenderer_1.default;\r\nDayGrid.prototype.fillRendererClass = DayGridFillRenderer_1.default;\r\nStandardInteractionsMixin_1.default.mixInto(DayGrid);\r\nDayTableMixin_1.default.mixInto(DayGrid);\r\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Scroller_1 = __webpack_require__(41);\r\nvar View_1 = __webpack_require__(43);\r\nvar BasicViewDateProfileGenerator_1 = __webpack_require__(68);\r\nvar DayGrid_1 = __webpack_require__(66);\r\n/* An abstract class for the \"basic\" views, as well as month view. Renders one or more rows of day cells.\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.\r\n// It is responsible for managing width/height.\r\nvar BasicView = /** @class */ (function (_super) {\r\n tslib_1.__extends(BasicView, _super);\r\n function BasicView(calendar, viewSpec) {\r\n var _this = _super.call(this, calendar, viewSpec) || this;\r\n _this.dayGrid = _this.instantiateDayGrid();\r\n _this.dayGrid.isRigid = _this.hasRigidRows();\r\n if (_this.opt('weekNumbers')) {\r\n if (_this.opt('weekNumbersWithinDays')) {\r\n _this.dayGrid.cellWeekNumbersVisible = true;\r\n _this.dayGrid.colWeekNumbersVisible = false;\r\n }\r\n else {\r\n _this.dayGrid.cellWeekNumbersVisible = false;\r\n _this.dayGrid.colWeekNumbersVisible = true;\r\n }\r\n }\r\n _this.addChild(_this.dayGrid);\r\n _this.scroller = new Scroller_1.default({\r\n overflowX: 'hidden',\r\n overflowY: 'auto'\r\n });\r\n return _this;\r\n }\r\n // Generates the DayGrid object this view needs. Draws from this.dayGridClass\r\n BasicView.prototype.instantiateDayGrid = function () {\r\n // generate a subclass on the fly with BasicView-specific behavior\r\n // TODO: cache this subclass\r\n var subclass = makeDayGridSubclass(this.dayGridClass);\r\n return new subclass(this);\r\n };\r\n BasicView.prototype.executeDateRender = function (dateProfile) {\r\n this.dayGrid.breakOnWeeks = /year|month|week/.test(dateProfile.currentRangeUnit);\r\n _super.prototype.executeDateRender.call(this, dateProfile);\r\n };\r\n BasicView.prototype.renderSkeleton = function () {\r\n var dayGridContainerEl;\r\n var dayGridEl;\r\n this.el.addClass('fc-basic-view').html(this.renderSkeletonHtml());\r\n this.scroller.render();\r\n dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container');\r\n dayGridEl = $('
').appendTo(dayGridContainerEl);\r\n this.el.find('.fc-body > tr > td').append(dayGridContainerEl);\r\n this.dayGrid.headContainerEl = this.el.find('.fc-head-container');\r\n this.dayGrid.setElement(dayGridEl);\r\n };\r\n BasicView.prototype.unrenderSkeleton = function () {\r\n this.dayGrid.removeElement();\r\n this.scroller.destroy();\r\n };\r\n // Builds the HTML skeleton for the view.\r\n // The day-grid component will render inside of a container defined by this HTML.\r\n BasicView.prototype.renderSkeletonHtml = function () {\r\n var theme = this.calendar.theme;\r\n return '' +\r\n '' +\r\n (this.opt('columnHeader') ?\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' :\r\n '') +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
 
';\r\n };\r\n // Generates an HTML attribute string for setting the width of the week number column, if it is known\r\n BasicView.prototype.weekNumberStyleAttr = function () {\r\n if (this.weekNumberWidth != null) {\r\n return 'style=\"width:' + this.weekNumberWidth + 'px\"';\r\n }\r\n return '';\r\n };\r\n // Determines whether each row should have a constant height\r\n BasicView.prototype.hasRigidRows = function () {\r\n var eventLimit = this.opt('eventLimit');\r\n return eventLimit && typeof eventLimit !== 'number';\r\n };\r\n /* Dimensions\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Refreshes the horizontal dimensions of the view\r\n BasicView.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n var eventLimit = this.opt('eventLimit');\r\n var headRowEl = this.dayGrid.headContainerEl.find('.fc-row');\r\n var scrollerHeight;\r\n var scrollbarWidths;\r\n // hack to give the view some height prior to dayGrid's columns being rendered\r\n // TODO: separate setting height from scroller VS dayGrid.\r\n if (!this.dayGrid.rowEls) {\r\n if (!isAuto) {\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n }\r\n return;\r\n }\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n if (this.dayGrid.colWeekNumbersVisible) {\r\n // Make sure all week number cells running down the side have the same width.\r\n // Record the width for cells created later.\r\n this.weekNumberWidth = util_1.matchCellWidths(this.el.find('.fc-week-number'));\r\n }\r\n // reset all heights to be natural\r\n this.scroller.clear();\r\n util_1.uncompensateScroll(headRowEl);\r\n this.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\r\n // is the event limit a constant level number?\r\n if (eventLimit && typeof eventLimit === 'number') {\r\n this.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after\r\n }\r\n // distribute the height to the rows\r\n // (totalHeight is a \"recommended\" value if isAuto)\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.setGridHeight(scrollerHeight, isAuto);\r\n // is the event limit dynamically calculated?\r\n if (eventLimit && typeof eventLimit !== 'number') {\r\n this.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set\r\n }\r\n if (!isAuto) { // should we force dimensions of the scroll container?\r\n this.scroller.setHeight(scrollerHeight);\r\n scrollbarWidths = this.scroller.getScrollbarWidths();\r\n if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\r\n util_1.compensateScroll(headRowEl, scrollbarWidths);\r\n // doing the scrollbar compensation might have created text overflow which created more height. redo\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n }\r\n // guarantees the same scrollbar widths\r\n this.scroller.lockOverflow(scrollbarWidths);\r\n }\r\n };\r\n // given a desired total height of the view, returns what the height of the scroller should be\r\n BasicView.prototype.computeScrollerHeight = function (totalHeight) {\r\n return totalHeight -\r\n util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\r\n };\r\n // Sets the height of just the DayGrid component in this view\r\n BasicView.prototype.setGridHeight = function (height, isAuto) {\r\n if (isAuto) {\r\n util_1.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding\r\n }\r\n else {\r\n util_1.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows\r\n }\r\n };\r\n /* Scroll\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n BasicView.prototype.computeInitialDateScroll = function () {\r\n return { top: 0 };\r\n };\r\n BasicView.prototype.queryDateScroll = function () {\r\n return { top: this.scroller.getScrollTop() };\r\n };\r\n BasicView.prototype.applyDateScroll = function (scroll) {\r\n if (scroll.top !== undefined) {\r\n this.scroller.setScrollTop(scroll.top);\r\n }\r\n };\r\n return BasicView;\r\n}(View_1.default));\r\nexports.default = BasicView;\r\nBasicView.prototype.dateProfileGeneratorClass = BasicViewDateProfileGenerator_1.default;\r\nBasicView.prototype.dayGridClass = DayGrid_1.default;\r\n// customize the rendering behavior of BasicView's dayGrid\r\nfunction makeDayGridSubclass(SuperClass) {\r\n return /** @class */ (function (_super) {\r\n tslib_1.__extends(SubClass, _super);\r\n function SubClass() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.colWeekNumbersVisible = false; // display week numbers along the side?\r\n return _this;\r\n }\r\n // Generates the HTML that will go before the day-of week header cells\r\n SubClass.prototype.renderHeadIntroHtml = function () {\r\n var view = this.view;\r\n if (this.colWeekNumbersVisible) {\r\n return '' +\r\n '' +\r\n '' + // needed for matchCellWidths\r\n util_1.htmlEscape(this.opt('weekNumberTitle')) +\r\n '' +\r\n '';\r\n }\r\n return '';\r\n };\r\n // Generates the HTML that will go before content-skeleton cells that display the day/week numbers\r\n SubClass.prototype.renderNumberIntroHtml = function (row) {\r\n var view = this.view;\r\n var weekStart = this.getCellDate(row, 0);\r\n if (this.colWeekNumbersVisible) {\r\n return '' +\r\n '' +\r\n view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths\r\n { date: weekStart, type: 'week', forceOff: this.colCnt === 1 }, weekStart.format('w') // inner HTML\r\n ) +\r\n '';\r\n }\r\n return '';\r\n };\r\n // Generates the HTML that goes before the day bg cells for each day-row\r\n SubClass.prototype.renderBgIntroHtml = function () {\r\n var view = this.view;\r\n if (this.colWeekNumbersVisible) {\r\n return '';\r\n }\r\n return '';\r\n };\r\n // Generates the HTML that goes before every other type of row generated by DayGrid.\r\n // Affects helper-skeleton and highlight-skeleton rows.\r\n SubClass.prototype.renderIntroHtml = function () {\r\n var view = this.view;\r\n if (this.colWeekNumbersVisible) {\r\n return '';\r\n }\r\n return '';\r\n };\r\n SubClass.prototype.getIsNumbersVisible = function () {\r\n return DayGrid_1.default.prototype.getIsNumbersVisible.apply(this, arguments) || this.colWeekNumbersVisible;\r\n };\r\n return SubClass;\r\n }(SuperClass));\r\n}\r\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar DateProfileGenerator_1 = __webpack_require__(55);\r\nvar BasicViewDateProfileGenerator = /** @class */ (function (_super) {\r\n tslib_1.__extends(BasicViewDateProfileGenerator, _super);\r\n function BasicViewDateProfileGenerator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Computes the date range that will be rendered.\r\n BasicViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) {\r\n var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay); // an UnzonedRange\r\n var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay);\r\n var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay);\r\n // year and month views should be aligned with weeks. this is already done for week\r\n if (/^(year|month)$/.test(currentRangeUnit)) {\r\n start.startOf('week');\r\n // make end-of-week if not already\r\n if (end.weekday()) {\r\n end.add(1, 'week').startOf('week'); // exclusively move backwards\r\n }\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n return BasicViewDateProfileGenerator;\r\n}(DateProfileGenerator_1.default));\r\nexports.default = BasicViewDateProfileGenerator;\r\n\n\n/***/ }),\n/* 69 */,\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */,\n/* 81 */,\n/* 82 */,\n/* 83 */,\n/* 84 */,\n/* 85 */,\n/* 86 */,\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */,\n/* 96 */,\n/* 97 */,\n/* 98 */,\n/* 99 */,\n/* 100 */,\n/* 101 */,\n/* 102 */,\n/* 103 */,\n/* 104 */,\n/* 105 */,\n/* 106 */,\n/* 107 */,\n/* 108 */,\n/* 109 */,\n/* 110 */,\n/* 111 */,\n/* 112 */,\n/* 113 */,\n/* 114 */,\n/* 115 */,\n/* 116 */,\n/* 117 */,\n/* 118 */,\n/* 119 */,\n/* 120 */,\n/* 121 */,\n/* 122 */,\n/* 123 */,\n/* 124 */,\n/* 125 */,\n/* 126 */,\n/* 127 */,\n/* 128 */,\n/* 129 */,\n/* 130 */,\n/* 131 */,\n/* 132 */,\n/* 133 */,\n/* 134 */,\n/* 135 */,\n/* 136 */,\n/* 137 */,\n/* 138 */,\n/* 139 */,\n/* 140 */,\n/* 141 */,\n/* 142 */,\n/* 143 */,\n/* 144 */,\n/* 145 */,\n/* 146 */,\n/* 147 */,\n/* 148 */,\n/* 149 */,\n/* 150 */,\n/* 151 */,\n/* 152 */,\n/* 153 */,\n/* 154 */,\n/* 155 */,\n/* 156 */,\n/* 157 */,\n/* 158 */,\n/* 159 */,\n/* 160 */,\n/* 161 */,\n/* 162 */,\n/* 163 */,\n/* 164 */,\n/* 165 */,\n/* 166 */,\n/* 167 */,\n/* 168 */,\n/* 169 */,\n/* 170 */,\n/* 171 */,\n/* 172 */,\n/* 173 */,\n/* 174 */,\n/* 175 */,\n/* 176 */,\n/* 177 */,\n/* 178 */,\n/* 179 */,\n/* 180 */,\n/* 181 */,\n/* 182 */,\n/* 183 */,\n/* 184 */,\n/* 185 */,\n/* 186 */,\n/* 187 */,\n/* 188 */,\n/* 189 */,\n/* 190 */,\n/* 191 */,\n/* 192 */,\n/* 193 */,\n/* 194 */,\n/* 195 */,\n/* 196 */,\n/* 197 */,\n/* 198 */,\n/* 199 */,\n/* 200 */,\n/* 201 */,\n/* 202 */,\n/* 203 */,\n/* 204 */,\n/* 205 */,\n/* 206 */,\n/* 207 */,\n/* 208 */,\n/* 209 */,\n/* 210 */,\n/* 211 */,\n/* 212 */,\n/* 213 */,\n/* 214 */,\n/* 215 */,\n/* 216 */,\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar EventDefParser_1 = __webpack_require__(36);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar util_1 = __webpack_require__(19);\r\nvar Constraints = /** @class */ (function () {\r\n function Constraints(eventManager, _calendar) {\r\n this.eventManager = eventManager;\r\n this._calendar = _calendar;\r\n }\r\n Constraints.prototype.opt = function (name) {\r\n return this._calendar.opt(name);\r\n };\r\n /*\r\n determines if eventInstanceGroup is allowed,\r\n in relation to other EVENTS and business hours.\r\n */\r\n Constraints.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) {\r\n var eventDef = eventInstanceGroup.getEventDef();\r\n var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges());\r\n var i;\r\n var peerEventInstances = this.getPeerEventInstances(eventDef);\r\n var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange);\r\n var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges);\r\n var constraintVal = eventDef.getConstraint();\r\n var overlapVal = eventDef.getOverlap();\r\n var eventAllowFunc = this.opt('eventAllow');\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n if (!this.isFootprintAllowed(eventFootprints[i].componentFootprint, peerEventFootprints, constraintVal, overlapVal, eventFootprints[i].eventInstance)) {\r\n return false;\r\n }\r\n }\r\n if (eventAllowFunc) {\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n if (eventAllowFunc(eventFootprints[i].componentFootprint.toLegacy(this._calendar), eventFootprints[i].getEventLegacy()) === false) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n Constraints.prototype.getPeerEventInstances = function (eventDef) {\r\n return this.eventManager.getEventInstancesWithoutId(eventDef.id);\r\n };\r\n Constraints.prototype.isSelectionFootprintAllowed = function (componentFootprint) {\r\n var peerEventInstances = this.eventManager.getEventInstances();\r\n var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange);\r\n var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges);\r\n var selectAllowFunc;\r\n if (this.isFootprintAllowed(componentFootprint, peerEventFootprints, this.opt('selectConstraint'), this.opt('selectOverlap'))) {\r\n selectAllowFunc = this.opt('selectAllow');\r\n if (selectAllowFunc) {\r\n return selectAllowFunc(componentFootprint.toLegacy(this._calendar)) !== false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Constraints.prototype.isFootprintAllowed = function (componentFootprint, peerEventFootprints, constraintVal, overlapVal, subjectEventInstance // optional\r\n ) {\r\n var constraintFootprints; // ComponentFootprint[]\r\n var overlapEventFootprints; // EventFootprint[]\r\n if (constraintVal != null) {\r\n constraintFootprints = this.constraintValToFootprints(constraintVal, componentFootprint.isAllDay);\r\n if (!this.isFootprintWithinConstraints(componentFootprint, constraintFootprints)) {\r\n return false;\r\n }\r\n }\r\n overlapEventFootprints = this.collectOverlapEventFootprints(peerEventFootprints, componentFootprint);\r\n if (overlapVal === false) {\r\n if (overlapEventFootprints.length) {\r\n return false;\r\n }\r\n }\r\n else if (typeof overlapVal === 'function') {\r\n if (!isOverlapsAllowedByFunc(overlapEventFootprints, overlapVal, subjectEventInstance)) {\r\n return false;\r\n }\r\n }\r\n if (subjectEventInstance) {\r\n if (!isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n // Constraint\r\n // ------------------------------------------------------------------------------------------------\r\n Constraints.prototype.isFootprintWithinConstraints = function (componentFootprint, constraintFootprints) {\r\n var i;\r\n for (i = 0; i < constraintFootprints.length; i++) {\r\n if (this.footprintContainsFootprint(constraintFootprints[i], componentFootprint)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Constraints.prototype.constraintValToFootprints = function (constraintVal, isAllDay) {\r\n var eventInstances;\r\n if (constraintVal === 'businessHours') {\r\n return this.buildCurrentBusinessFootprints(isAllDay);\r\n }\r\n else if (typeof constraintVal === 'object') {\r\n eventInstances = this.parseEventDefToInstances(constraintVal); // handles recurring events\r\n if (!eventInstances) { // invalid input. fallback to parsing footprint directly\r\n return this.parseFootprints(constraintVal);\r\n }\r\n else {\r\n return this.eventInstancesToFootprints(eventInstances);\r\n }\r\n }\r\n else if (constraintVal != null) { // an ID\r\n eventInstances = this.eventManager.getEventInstancesWithId(constraintVal);\r\n return this.eventInstancesToFootprints(eventInstances);\r\n }\r\n };\r\n // returns ComponentFootprint[]\r\n // uses current view's range\r\n Constraints.prototype.buildCurrentBusinessFootprints = function (isAllDay) {\r\n var view = this._calendar.view;\r\n var businessHourGenerator = view.get('businessHourGenerator');\r\n var unzonedRange = view.dateProfile.activeUnzonedRange;\r\n var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(isAllDay, unzonedRange);\r\n if (eventInstanceGroup) {\r\n return this.eventInstancesToFootprints(eventInstanceGroup.eventInstances);\r\n }\r\n else {\r\n return [];\r\n }\r\n };\r\n // conversion util\r\n Constraints.prototype.eventInstancesToFootprints = function (eventInstances) {\r\n var eventRanges = eventInstances.map(util_1.eventInstanceToEventRange);\r\n var eventFootprints = this.eventRangesToEventFootprints(eventRanges);\r\n return eventFootprints.map(util_1.eventFootprintToComponentFootprint);\r\n };\r\n // Overlap\r\n // ------------------------------------------------------------------------------------------------\r\n Constraints.prototype.collectOverlapEventFootprints = function (peerEventFootprints, targetFootprint) {\r\n var overlapEventFootprints = [];\r\n var i;\r\n for (i = 0; i < peerEventFootprints.length; i++) {\r\n if (this.footprintsIntersect(targetFootprint, peerEventFootprints[i].componentFootprint)) {\r\n overlapEventFootprints.push(peerEventFootprints[i]);\r\n }\r\n }\r\n return overlapEventFootprints;\r\n };\r\n // Conversion: eventDefs -> eventInstances -> eventRanges -> eventFootprints -> componentFootprints\r\n // ------------------------------------------------------------------------------------------------\r\n // NOTE: this might seem like repetitive code with the Grid class, however, this code is related to\r\n // constraints whereas the Grid code is related to rendering. Each approach might want to convert\r\n // eventRanges -> eventFootprints in a different way. Regardless, there are opportunities to make\r\n // this more DRY.\r\n /*\r\n Returns false on invalid input.\r\n */\r\n Constraints.prototype.parseEventDefToInstances = function (eventInput) {\r\n var eventManager = this.eventManager;\r\n var eventDef = EventDefParser_1.default.parse(eventInput, new EventSource_1.default(this._calendar));\r\n if (!eventDef) { // invalid\r\n return false;\r\n }\r\n return eventDef.buildInstances(eventManager.currentPeriod.unzonedRange);\r\n };\r\n Constraints.prototype.eventRangesToEventFootprints = function (eventRanges) {\r\n var i;\r\n var eventFootprints = [];\r\n for (i = 0; i < eventRanges.length; i++) {\r\n eventFootprints.push.apply(// footprints\r\n eventFootprints, this.eventRangeToEventFootprints(eventRanges[i]));\r\n }\r\n return eventFootprints;\r\n };\r\n Constraints.prototype.eventRangeToEventFootprints = function (eventRange) {\r\n return [util_1.eventRangeToEventFootprint(eventRange)];\r\n };\r\n /*\r\n Parses footprints directly.\r\n Very similar to EventDateProfile::parse :(\r\n */\r\n Constraints.prototype.parseFootprints = function (rawInput) {\r\n var start;\r\n var end;\r\n if (rawInput.start) {\r\n start = this._calendar.moment(rawInput.start);\r\n if (!start.isValid()) {\r\n start = null;\r\n }\r\n }\r\n if (rawInput.end) {\r\n end = this._calendar.moment(rawInput.end);\r\n if (!end.isValid()) {\r\n end = null;\r\n }\r\n }\r\n return [\r\n new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), (start && !start.hasTime()) || (end && !end.hasTime()) // isAllDay\r\n )\r\n ];\r\n };\r\n // Footprint Utils\r\n // ----------------------------------------------------------------------------------------\r\n Constraints.prototype.footprintContainsFootprint = function (outerFootprint, innerFootprint) {\r\n return outerFootprint.unzonedRange.containsRange(innerFootprint.unzonedRange);\r\n };\r\n Constraints.prototype.footprintsIntersect = function (footprint0, footprint1) {\r\n return footprint0.unzonedRange.intersectsWith(footprint1.unzonedRange);\r\n };\r\n return Constraints;\r\n}());\r\nexports.default = Constraints;\r\n// optional subjectEventInstance\r\nfunction isOverlapsAllowedByFunc(overlapEventFootprints, overlapFunc, subjectEventInstance) {\r\n var i;\r\n for (i = 0; i < overlapEventFootprints.length; i++) {\r\n if (!overlapFunc(overlapEventFootprints[i].eventInstance.toLegacy(), subjectEventInstance ? subjectEventInstance.toLegacy() : null)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance) {\r\n var subjectLegacyInstance = subjectEventInstance.toLegacy();\r\n var i;\r\n var overlapEventInstance;\r\n var overlapEventDef;\r\n var overlapVal;\r\n for (i = 0; i < overlapEventFootprints.length; i++) {\r\n overlapEventInstance = overlapEventFootprints[i].eventInstance;\r\n overlapEventDef = overlapEventInstance.def;\r\n // don't need to pass in calendar, because don't want to consider global eventOverlap property,\r\n // because we already considered that earlier in the process.\r\n overlapVal = overlapEventDef.getOverlap();\r\n if (overlapVal === false) {\r\n return false;\r\n }\r\n else if (typeof overlapVal === 'function') {\r\n if (!overlapVal(overlapEventInstance.toLegacy(), subjectLegacyInstance)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(19);\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nvar RecurringEventDef_1 = __webpack_require__(54);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar BUSINESS_HOUR_EVENT_DEFAULTS = {\r\n start: '09:00',\r\n end: '17:00',\r\n dow: [1, 2, 3, 4, 5],\r\n rendering: 'inverse-background'\r\n // classNames are defined in businessHoursSegClasses\r\n};\r\nvar BusinessHourGenerator = /** @class */ (function () {\r\n function BusinessHourGenerator(rawComplexDef, calendar) {\r\n this.rawComplexDef = rawComplexDef;\r\n this.calendar = calendar;\r\n }\r\n BusinessHourGenerator.prototype.buildEventInstanceGroup = function (isAllDay, unzonedRange) {\r\n var eventDefs = this.buildEventDefs(isAllDay);\r\n var eventInstanceGroup;\r\n if (eventDefs.length) {\r\n eventInstanceGroup = new EventInstanceGroup_1.default(util_1.eventDefsToEventInstances(eventDefs, unzonedRange));\r\n // so that inverse-background rendering can happen even when no eventRanges in view\r\n eventInstanceGroup.explicitEventDef = eventDefs[0];\r\n return eventInstanceGroup;\r\n }\r\n };\r\n BusinessHourGenerator.prototype.buildEventDefs = function (isAllDay) {\r\n var rawComplexDef = this.rawComplexDef;\r\n var rawDefs = [];\r\n var requireDow = false;\r\n var i;\r\n var defs = [];\r\n if (rawComplexDef === true) {\r\n rawDefs = [{}]; // will get BUSINESS_HOUR_EVENT_DEFAULTS verbatim\r\n }\r\n else if ($.isPlainObject(rawComplexDef)) {\r\n rawDefs = [rawComplexDef];\r\n }\r\n else if ($.isArray(rawComplexDef)) {\r\n rawDefs = rawComplexDef;\r\n requireDow = true; // every sub-definition NEEDS a day-of-week\r\n }\r\n for (i = 0; i < rawDefs.length; i++) {\r\n if (!requireDow || rawDefs[i].dow) {\r\n defs.push(this.buildEventDef(isAllDay, rawDefs[i]));\r\n }\r\n }\r\n return defs;\r\n };\r\n BusinessHourGenerator.prototype.buildEventDef = function (isAllDay, rawDef) {\r\n var fullRawDef = $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, rawDef);\r\n if (isAllDay) {\r\n fullRawDef.start = null;\r\n fullRawDef.end = null;\r\n }\r\n return RecurringEventDef_1.default.parse(fullRawDef, new EventSource_1.default(this.calendar) // dummy source\r\n );\r\n };\r\n return BusinessHourGenerator;\r\n}());\r\nexports.default = BusinessHourGenerator;\r\n\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Promise_1 = __webpack_require__(21);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nvar EventPeriod = /** @class */ (function () {\r\n function EventPeriod(start, end, timezone) {\r\n this.pendingCnt = 0;\r\n this.freezeDepth = 0;\r\n this.stuntedReleaseCnt = 0;\r\n this.releaseCnt = 0;\r\n this.start = start;\r\n this.end = end;\r\n this.timezone = timezone;\r\n this.unzonedRange = new UnzonedRange_1.default(start.clone().stripZone(), end.clone().stripZone());\r\n this.requestsByUid = {};\r\n this.eventDefsByUid = {};\r\n this.eventDefsById = {};\r\n this.eventInstanceGroupsById = {};\r\n }\r\n EventPeriod.prototype.isWithinRange = function (start, end) {\r\n // TODO: use a range util function?\r\n return !start.isBefore(this.start) && !end.isAfter(this.end);\r\n };\r\n // Requesting and Purging\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventPeriod.prototype.requestSources = function (sources) {\r\n this.freeze();\r\n for (var i = 0; i < sources.length; i++) {\r\n this.requestSource(sources[i]);\r\n }\r\n this.thaw();\r\n };\r\n EventPeriod.prototype.requestSource = function (source) {\r\n var _this = this;\r\n var request = { source: source, status: 'pending', eventDefs: null };\r\n this.requestsByUid[source.uid] = request;\r\n this.pendingCnt += 1;\r\n source.fetch(this.start, this.end, this.timezone).then(function (eventDefs) {\r\n if (request.status !== 'cancelled') {\r\n request.status = 'completed';\r\n request.eventDefs = eventDefs;\r\n _this.addEventDefs(eventDefs);\r\n _this.pendingCnt--;\r\n _this.tryRelease();\r\n }\r\n }, function () {\r\n if (request.status !== 'cancelled') {\r\n request.status = 'failed';\r\n _this.pendingCnt--;\r\n _this.tryRelease();\r\n }\r\n });\r\n };\r\n EventPeriod.prototype.purgeSource = function (source) {\r\n var request = this.requestsByUid[source.uid];\r\n if (request) {\r\n delete this.requestsByUid[source.uid];\r\n if (request.status === 'pending') {\r\n request.status = 'cancelled';\r\n this.pendingCnt--;\r\n this.tryRelease();\r\n }\r\n else if (request.status === 'completed') {\r\n request.eventDefs.forEach(this.removeEventDef.bind(this));\r\n }\r\n }\r\n };\r\n EventPeriod.prototype.purgeAllSources = function () {\r\n var requestsByUid = this.requestsByUid;\r\n var uid;\r\n var request;\r\n var completedCnt = 0;\r\n for (uid in requestsByUid) {\r\n request = requestsByUid[uid];\r\n if (request.status === 'pending') {\r\n request.status = 'cancelled';\r\n }\r\n else if (request.status === 'completed') {\r\n completedCnt++;\r\n }\r\n }\r\n this.requestsByUid = {};\r\n this.pendingCnt = 0;\r\n if (completedCnt) {\r\n this.removeAllEventDefs(); // might release\r\n }\r\n };\r\n // Event Definitions\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventPeriod.prototype.getEventDefByUid = function (eventDefUid) {\r\n return this.eventDefsByUid[eventDefUid];\r\n };\r\n EventPeriod.prototype.getEventDefsById = function (eventDefId) {\r\n var a = this.eventDefsById[eventDefId];\r\n if (a) {\r\n return a.slice(); // clone\r\n }\r\n return [];\r\n };\r\n EventPeriod.prototype.addEventDefs = function (eventDefs) {\r\n for (var i = 0; i < eventDefs.length; i++) {\r\n this.addEventDef(eventDefs[i]);\r\n }\r\n };\r\n EventPeriod.prototype.addEventDef = function (eventDef) {\r\n var eventDefsById = this.eventDefsById;\r\n var eventDefId = eventDef.id;\r\n var eventDefs = eventDefsById[eventDefId] || (eventDefsById[eventDefId] = []);\r\n var eventInstances = eventDef.buildInstances(this.unzonedRange);\r\n var i;\r\n eventDefs.push(eventDef);\r\n this.eventDefsByUid[eventDef.uid] = eventDef;\r\n for (i = 0; i < eventInstances.length; i++) {\r\n this.addEventInstance(eventInstances[i], eventDefId);\r\n }\r\n };\r\n EventPeriod.prototype.removeEventDefsById = function (eventDefId) {\r\n var _this = this;\r\n this.getEventDefsById(eventDefId).forEach(function (eventDef) {\r\n _this.removeEventDef(eventDef);\r\n });\r\n };\r\n EventPeriod.prototype.removeAllEventDefs = function () {\r\n var isEmpty = $.isEmptyObject(this.eventDefsByUid);\r\n this.eventDefsByUid = {};\r\n this.eventDefsById = {};\r\n this.eventInstanceGroupsById = {};\r\n if (!isEmpty) {\r\n this.tryRelease();\r\n }\r\n };\r\n EventPeriod.prototype.removeEventDef = function (eventDef) {\r\n var eventDefsById = this.eventDefsById;\r\n var eventDefs = eventDefsById[eventDef.id];\r\n delete this.eventDefsByUid[eventDef.uid];\r\n if (eventDefs) {\r\n util_1.removeExact(eventDefs, eventDef);\r\n if (!eventDefs.length) {\r\n delete eventDefsById[eventDef.id];\r\n }\r\n this.removeEventInstancesForDef(eventDef);\r\n }\r\n };\r\n // Event Instances\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventPeriod.prototype.getEventInstances = function () {\r\n var eventInstanceGroupsById = this.eventInstanceGroupsById;\r\n var eventInstances = [];\r\n var id;\r\n for (id in eventInstanceGroupsById) {\r\n eventInstances.push.apply(eventInstances, // append\r\n eventInstanceGroupsById[id].eventInstances);\r\n }\r\n return eventInstances;\r\n };\r\n EventPeriod.prototype.getEventInstancesWithId = function (eventDefId) {\r\n var eventInstanceGroup = this.eventInstanceGroupsById[eventDefId];\r\n if (eventInstanceGroup) {\r\n return eventInstanceGroup.eventInstances.slice(); // clone\r\n }\r\n return [];\r\n };\r\n EventPeriod.prototype.getEventInstancesWithoutId = function (eventDefId) {\r\n var eventInstanceGroupsById = this.eventInstanceGroupsById;\r\n var matchingInstances = [];\r\n var id;\r\n for (id in eventInstanceGroupsById) {\r\n if (id !== eventDefId) {\r\n matchingInstances.push.apply(matchingInstances, // append\r\n eventInstanceGroupsById[id].eventInstances);\r\n }\r\n }\r\n return matchingInstances;\r\n };\r\n EventPeriod.prototype.addEventInstance = function (eventInstance, eventDefId) {\r\n var eventInstanceGroupsById = this.eventInstanceGroupsById;\r\n var eventInstanceGroup = eventInstanceGroupsById[eventDefId] ||\r\n (eventInstanceGroupsById[eventDefId] = new EventInstanceGroup_1.default());\r\n eventInstanceGroup.eventInstances.push(eventInstance);\r\n this.tryRelease();\r\n };\r\n EventPeriod.prototype.removeEventInstancesForDef = function (eventDef) {\r\n var eventInstanceGroupsById = this.eventInstanceGroupsById;\r\n var eventInstanceGroup = eventInstanceGroupsById[eventDef.id];\r\n var removeCnt;\r\n if (eventInstanceGroup) {\r\n removeCnt = util_1.removeMatching(eventInstanceGroup.eventInstances, function (currentEventInstance) {\r\n return currentEventInstance.def === eventDef;\r\n });\r\n if (!eventInstanceGroup.eventInstances.length) {\r\n delete eventInstanceGroupsById[eventDef.id];\r\n }\r\n if (removeCnt) {\r\n this.tryRelease();\r\n }\r\n }\r\n };\r\n // Releasing and Freezing\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventPeriod.prototype.tryRelease = function () {\r\n if (!this.pendingCnt) {\r\n if (!this.freezeDepth) {\r\n this.release();\r\n }\r\n else {\r\n this.stuntedReleaseCnt++;\r\n }\r\n }\r\n };\r\n EventPeriod.prototype.release = function () {\r\n this.releaseCnt++;\r\n this.trigger('release', this.eventInstanceGroupsById);\r\n };\r\n EventPeriod.prototype.whenReleased = function () {\r\n var _this = this;\r\n if (this.releaseCnt) {\r\n return Promise_1.default.resolve(this.eventInstanceGroupsById);\r\n }\r\n else {\r\n return Promise_1.default.construct(function (onResolve) {\r\n _this.one('release', onResolve);\r\n });\r\n }\r\n };\r\n EventPeriod.prototype.freeze = function () {\r\n if (!(this.freezeDepth++)) {\r\n this.stuntedReleaseCnt = 0;\r\n }\r\n };\r\n EventPeriod.prototype.thaw = function () {\r\n if (!(--this.freezeDepth) && this.stuntedReleaseCnt && !this.pendingCnt) {\r\n this.release();\r\n }\r\n };\r\n return EventPeriod;\r\n}());\r\nexports.default = EventPeriod;\r\nEmitterMixin_1.default.mixInto(EventPeriod);\r\n\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventPeriod_1 = __webpack_require__(219);\r\nvar ArrayEventSource_1 = __webpack_require__(56);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar EventSourceParser_1 = __webpack_require__(38);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar EventManager = /** @class */ (function () {\r\n function EventManager(calendar) {\r\n this.calendar = calendar;\r\n this.stickySource = new ArrayEventSource_1.default(calendar);\r\n this.otherSources = [];\r\n }\r\n EventManager.prototype.requestEvents = function (start, end, timezone, force) {\r\n if (force ||\r\n !this.currentPeriod ||\r\n !this.currentPeriod.isWithinRange(start, end) ||\r\n timezone !== this.currentPeriod.timezone) {\r\n this.setPeriod(// will change this.currentPeriod\r\n new EventPeriod_1.default(start, end, timezone));\r\n }\r\n return this.currentPeriod.whenReleased();\r\n };\r\n // Source Adding/Removing\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.addSource = function (eventSource) {\r\n this.otherSources.push(eventSource);\r\n if (this.currentPeriod) {\r\n this.currentPeriod.requestSource(eventSource); // might release\r\n }\r\n };\r\n EventManager.prototype.removeSource = function (doomedSource) {\r\n util_1.removeExact(this.otherSources, doomedSource);\r\n if (this.currentPeriod) {\r\n this.currentPeriod.purgeSource(doomedSource); // might release\r\n }\r\n };\r\n EventManager.prototype.removeAllSources = function () {\r\n this.otherSources = [];\r\n if (this.currentPeriod) {\r\n this.currentPeriod.purgeAllSources(); // might release\r\n }\r\n };\r\n // Source Refetching\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.refetchSource = function (eventSource) {\r\n var currentPeriod = this.currentPeriod;\r\n if (currentPeriod) {\r\n currentPeriod.freeze();\r\n currentPeriod.purgeSource(eventSource);\r\n currentPeriod.requestSource(eventSource);\r\n currentPeriod.thaw();\r\n }\r\n };\r\n EventManager.prototype.refetchAllSources = function () {\r\n var currentPeriod = this.currentPeriod;\r\n if (currentPeriod) {\r\n currentPeriod.freeze();\r\n currentPeriod.purgeAllSources();\r\n currentPeriod.requestSources(this.getSources());\r\n currentPeriod.thaw();\r\n }\r\n };\r\n // Source Querying\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.getSources = function () {\r\n return [this.stickySource].concat(this.otherSources);\r\n };\r\n // like querySources, but accepts multple match criteria (like multiple IDs)\r\n EventManager.prototype.multiQuerySources = function (matchInputs) {\r\n // coerce into an array\r\n if (!matchInputs) {\r\n matchInputs = [];\r\n }\r\n else if (!$.isArray(matchInputs)) {\r\n matchInputs = [matchInputs];\r\n }\r\n var matchingSources = [];\r\n var i;\r\n // resolve raw inputs to real event source objects\r\n for (i = 0; i < matchInputs.length; i++) {\r\n matchingSources.push.apply(// append\r\n matchingSources, this.querySources(matchInputs[i]));\r\n }\r\n return matchingSources;\r\n };\r\n // matchInput can either by a real event source object, an ID, or the function/URL for the source.\r\n // returns an array of matching source objects.\r\n EventManager.prototype.querySources = function (matchInput) {\r\n var sources = this.otherSources;\r\n var i;\r\n var source;\r\n // given a proper event source object\r\n for (i = 0; i < sources.length; i++) {\r\n source = sources[i];\r\n if (source === matchInput) {\r\n return [source];\r\n }\r\n }\r\n // an ID match\r\n source = this.getSourceById(EventSource_1.default.normalizeId(matchInput));\r\n if (source) {\r\n return [source];\r\n }\r\n // parse as an event source\r\n matchInput = EventSourceParser_1.default.parse(matchInput, this.calendar);\r\n if (matchInput) {\r\n return $.grep(sources, function (source) {\r\n return isSourcesEquivalent(matchInput, source);\r\n });\r\n }\r\n };\r\n /*\r\n ID assumed to already be normalized\r\n */\r\n EventManager.prototype.getSourceById = function (id) {\r\n return $.grep(this.otherSources, function (source) {\r\n return source.id && source.id === id;\r\n })[0];\r\n };\r\n // Event-Period\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.setPeriod = function (eventPeriod) {\r\n if (this.currentPeriod) {\r\n this.unbindPeriod(this.currentPeriod);\r\n this.currentPeriod = null;\r\n }\r\n this.currentPeriod = eventPeriod;\r\n this.bindPeriod(eventPeriod);\r\n eventPeriod.requestSources(this.getSources());\r\n };\r\n EventManager.prototype.bindPeriod = function (eventPeriod) {\r\n this.listenTo(eventPeriod, 'release', function (eventsPayload) {\r\n this.trigger('release', eventsPayload);\r\n });\r\n };\r\n EventManager.prototype.unbindPeriod = function (eventPeriod) {\r\n this.stopListeningTo(eventPeriod);\r\n };\r\n // Event Getting/Adding/Removing\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.getEventDefByUid = function (uid) {\r\n if (this.currentPeriod) {\r\n return this.currentPeriod.getEventDefByUid(uid);\r\n }\r\n };\r\n EventManager.prototype.addEventDef = function (eventDef, isSticky) {\r\n if (isSticky) {\r\n this.stickySource.addEventDef(eventDef);\r\n }\r\n if (this.currentPeriod) {\r\n this.currentPeriod.addEventDef(eventDef); // might release\r\n }\r\n };\r\n EventManager.prototype.removeEventDefsById = function (eventId) {\r\n this.getSources().forEach(function (eventSource) {\r\n eventSource.removeEventDefsById(eventId);\r\n });\r\n if (this.currentPeriod) {\r\n this.currentPeriod.removeEventDefsById(eventId); // might release\r\n }\r\n };\r\n EventManager.prototype.removeAllEventDefs = function () {\r\n this.getSources().forEach(function (eventSource) {\r\n eventSource.removeAllEventDefs();\r\n });\r\n if (this.currentPeriod) {\r\n this.currentPeriod.removeAllEventDefs();\r\n }\r\n };\r\n // Event Mutating\r\n // -----------------------------------------------------------------------------------------------------------------\r\n /*\r\n Returns an undo function.\r\n */\r\n EventManager.prototype.mutateEventsWithId = function (eventDefId, eventDefMutation) {\r\n var currentPeriod = this.currentPeriod;\r\n var eventDefs;\r\n var undoFuncs = [];\r\n if (currentPeriod) {\r\n currentPeriod.freeze();\r\n eventDefs = currentPeriod.getEventDefsById(eventDefId);\r\n eventDefs.forEach(function (eventDef) {\r\n // add/remove esp because id might change\r\n currentPeriod.removeEventDef(eventDef);\r\n undoFuncs.push(eventDefMutation.mutateSingle(eventDef));\r\n currentPeriod.addEventDef(eventDef);\r\n });\r\n currentPeriod.thaw();\r\n return function () {\r\n currentPeriod.freeze();\r\n for (var i = 0; i < eventDefs.length; i++) {\r\n currentPeriod.removeEventDef(eventDefs[i]);\r\n undoFuncs[i]();\r\n currentPeriod.addEventDef(eventDefs[i]);\r\n }\r\n currentPeriod.thaw();\r\n };\r\n }\r\n return function () { };\r\n };\r\n /*\r\n copies and then mutates\r\n */\r\n EventManager.prototype.buildMutatedEventInstanceGroup = function (eventDefId, eventDefMutation) {\r\n var eventDefs = this.getEventDefsById(eventDefId);\r\n var i;\r\n var defCopy;\r\n var allInstances = [];\r\n for (i = 0; i < eventDefs.length; i++) {\r\n defCopy = eventDefs[i].clone();\r\n if (defCopy instanceof SingleEventDef_1.default) {\r\n eventDefMutation.mutateSingle(defCopy);\r\n allInstances.push.apply(allInstances, // append\r\n defCopy.buildInstances());\r\n }\r\n }\r\n return new EventInstanceGroup_1.default(allInstances);\r\n };\r\n // Freezing\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.freeze = function () {\r\n if (this.currentPeriod) {\r\n this.currentPeriod.freeze();\r\n }\r\n };\r\n EventManager.prototype.thaw = function () {\r\n if (this.currentPeriod) {\r\n this.currentPeriod.thaw();\r\n }\r\n };\r\n // methods that simply forward to EventPeriod\r\n EventManager.prototype.getEventDefsById = function (eventDefId) {\r\n return this.currentPeriod.getEventDefsById(eventDefId);\r\n };\r\n EventManager.prototype.getEventInstances = function () {\r\n return this.currentPeriod.getEventInstances();\r\n };\r\n EventManager.prototype.getEventInstancesWithId = function (eventDefId) {\r\n return this.currentPeriod.getEventInstancesWithId(eventDefId);\r\n };\r\n EventManager.prototype.getEventInstancesWithoutId = function (eventDefId) {\r\n return this.currentPeriod.getEventInstancesWithoutId(eventDefId);\r\n };\r\n return EventManager;\r\n}());\r\nexports.default = EventManager;\r\nEmitterMixin_1.default.mixInto(EventManager);\r\nListenerMixin_1.default.mixInto(EventManager);\r\nfunction isSourcesEquivalent(source0, source1) {\r\n return source0.getPrimitive() === source1.getPrimitive();\r\n}\r\n\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Theme_1 = __webpack_require__(22);\r\nvar StandardTheme = /** @class */ (function (_super) {\r\n tslib_1.__extends(StandardTheme, _super);\r\n function StandardTheme() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return StandardTheme;\r\n}(Theme_1.default));\r\nexports.default = StandardTheme;\r\nStandardTheme.prototype.classes = {\r\n widget: 'fc-unthemed',\r\n widgetHeader: 'fc-widget-header',\r\n widgetContent: 'fc-widget-content',\r\n buttonGroup: 'fc-button-group',\r\n button: 'fc-button',\r\n cornerLeft: 'fc-corner-left',\r\n cornerRight: 'fc-corner-right',\r\n stateDefault: 'fc-state-default',\r\n stateActive: 'fc-state-active',\r\n stateDisabled: 'fc-state-disabled',\r\n stateHover: 'fc-state-hover',\r\n stateDown: 'fc-state-down',\r\n popoverHeader: 'fc-widget-header',\r\n popoverContent: 'fc-widget-content',\r\n // day grid\r\n headerRow: 'fc-widget-header',\r\n dayRow: 'fc-widget-content',\r\n // list view\r\n listView: 'fc-widget-content'\r\n};\r\nStandardTheme.prototype.baseIconClass = 'fc-icon';\r\nStandardTheme.prototype.iconClasses = {\r\n close: 'fc-icon-x',\r\n prev: 'fc-icon-left-single-arrow',\r\n next: 'fc-icon-right-single-arrow',\r\n prevYear: 'fc-icon-left-double-arrow',\r\n nextYear: 'fc-icon-right-double-arrow'\r\n};\r\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons';\r\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\r\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\r\n\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Theme_1 = __webpack_require__(22);\r\nvar JqueryUiTheme = /** @class */ (function (_super) {\r\n tslib_1.__extends(JqueryUiTheme, _super);\r\n function JqueryUiTheme() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return JqueryUiTheme;\r\n}(Theme_1.default));\r\nexports.default = JqueryUiTheme;\r\nJqueryUiTheme.prototype.classes = {\r\n widget: 'ui-widget',\r\n widgetHeader: 'ui-widget-header',\r\n widgetContent: 'ui-widget-content',\r\n buttonGroup: 'fc-button-group',\r\n button: 'ui-button',\r\n cornerLeft: 'ui-corner-left',\r\n cornerRight: 'ui-corner-right',\r\n stateDefault: 'ui-state-default',\r\n stateActive: 'ui-state-active',\r\n stateDisabled: 'ui-state-disabled',\r\n stateHover: 'ui-state-hover',\r\n stateDown: 'ui-state-down',\r\n today: 'ui-state-highlight',\r\n popoverHeader: 'ui-widget-header',\r\n popoverContent: 'ui-widget-content',\r\n // day grid\r\n headerRow: 'ui-widget-header',\r\n dayRow: 'ui-widget-content',\r\n // list view\r\n listView: 'ui-widget-content'\r\n};\r\nJqueryUiTheme.prototype.baseIconClass = 'ui-icon';\r\nJqueryUiTheme.prototype.iconClasses = {\r\n close: 'ui-icon-closethick',\r\n prev: 'ui-icon-circle-triangle-w',\r\n next: 'ui-icon-circle-triangle-e',\r\n prevYear: 'ui-icon-seek-prev',\r\n nextYear: 'ui-icon-seek-next'\r\n};\r\nJqueryUiTheme.prototype.iconOverrideOption = 'themeButtonIcons';\r\nJqueryUiTheme.prototype.iconOverrideCustomButtonOption = 'themeIcon';\r\nJqueryUiTheme.prototype.iconOverridePrefix = 'ui-icon-';\r\n\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar Promise_1 = __webpack_require__(21);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar FuncEventSource = /** @class */ (function (_super) {\r\n tslib_1.__extends(FuncEventSource, _super);\r\n function FuncEventSource() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FuncEventSource.parse = function (rawInput, calendar) {\r\n var rawProps;\r\n // normalize raw input\r\n if ($.isFunction(rawInput.events)) { // extended form\r\n rawProps = rawInput;\r\n }\r\n else if ($.isFunction(rawInput)) { // short form\r\n rawProps = { events: rawInput };\r\n }\r\n if (rawProps) {\r\n return EventSource_1.default.parse.call(this, rawProps, calendar);\r\n }\r\n return false;\r\n };\r\n FuncEventSource.prototype.fetch = function (start, end, timezone) {\r\n var _this = this;\r\n this.calendar.pushLoading();\r\n return Promise_1.default.construct(function (onResolve) {\r\n _this.func.call(_this.calendar, start.clone(), end.clone(), timezone, function (rawEventDefs) {\r\n _this.calendar.popLoading();\r\n onResolve(_this.parseEventDefs(rawEventDefs));\r\n });\r\n });\r\n };\r\n FuncEventSource.prototype.getPrimitive = function () {\r\n return this.func;\r\n };\r\n FuncEventSource.prototype.applyManualStandardProps = function (rawProps) {\r\n var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps);\r\n this.func = rawProps.events;\r\n return superSuccess;\r\n };\r\n return FuncEventSource;\r\n}(EventSource_1.default));\r\nexports.default = FuncEventSource;\r\nFuncEventSource.defineStandardProps({\r\n events: false // don't automatically transfer\r\n});\r\n\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Promise_1 = __webpack_require__(21);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar JsonFeedEventSource = /** @class */ (function (_super) {\r\n tslib_1.__extends(JsonFeedEventSource, _super);\r\n function JsonFeedEventSource() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n JsonFeedEventSource.parse = function (rawInput, calendar) {\r\n var rawProps;\r\n // normalize raw input\r\n if (typeof rawInput.url === 'string') { // extended form\r\n rawProps = rawInput;\r\n }\r\n else if (typeof rawInput === 'string') { // short form\r\n rawProps = { url: rawInput };\r\n }\r\n if (rawProps) {\r\n return EventSource_1.default.parse.call(this, rawProps, calendar);\r\n }\r\n return false;\r\n };\r\n JsonFeedEventSource.prototype.fetch = function (start, end, timezone) {\r\n var _this = this;\r\n var ajaxSettings = this.ajaxSettings;\r\n var onSuccess = ajaxSettings.success;\r\n var onError = ajaxSettings.error;\r\n var requestParams = this.buildRequestParams(start, end, timezone);\r\n // todo: eventually handle the promise's then,\r\n // don't intercept success/error\r\n // tho will be a breaking API change\r\n this.calendar.pushLoading();\r\n return Promise_1.default.construct(function (onResolve, onReject) {\r\n $.ajax($.extend({}, // destination\r\n JsonFeedEventSource.AJAX_DEFAULTS, ajaxSettings, {\r\n url: _this.url,\r\n data: requestParams,\r\n success: function (rawEventDefs, status, xhr) {\r\n var callbackRes;\r\n _this.calendar.popLoading();\r\n if (rawEventDefs) {\r\n callbackRes = util_1.applyAll(onSuccess, _this, [rawEventDefs, status, xhr]); // redirect `this`\r\n if ($.isArray(callbackRes)) {\r\n rawEventDefs = callbackRes;\r\n }\r\n onResolve(_this.parseEventDefs(rawEventDefs));\r\n }\r\n else {\r\n onReject();\r\n }\r\n },\r\n error: function (xhr, statusText, errorThrown) {\r\n _this.calendar.popLoading();\r\n util_1.applyAll(onError, _this, [xhr, statusText, errorThrown]); // redirect `this`\r\n onReject();\r\n }\r\n }));\r\n });\r\n };\r\n JsonFeedEventSource.prototype.buildRequestParams = function (start, end, timezone) {\r\n var calendar = this.calendar;\r\n var ajaxSettings = this.ajaxSettings;\r\n var startParam;\r\n var endParam;\r\n var timezoneParam;\r\n var customRequestParams;\r\n var params = {};\r\n startParam = this.startParam;\r\n if (startParam == null) {\r\n startParam = calendar.opt('startParam');\r\n }\r\n endParam = this.endParam;\r\n if (endParam == null) {\r\n endParam = calendar.opt('endParam');\r\n }\r\n timezoneParam = this.timezoneParam;\r\n if (timezoneParam == null) {\r\n timezoneParam = calendar.opt('timezoneParam');\r\n }\r\n // retrieve any outbound GET/POST $.ajax data from the options\r\n if ($.isFunction(ajaxSettings.data)) {\r\n // supplied as a function that returns a key/value object\r\n customRequestParams = ajaxSettings.data();\r\n }\r\n else {\r\n // probably supplied as a straight key/value object\r\n customRequestParams = ajaxSettings.data || {};\r\n }\r\n $.extend(params, customRequestParams);\r\n params[startParam] = start.format();\r\n params[endParam] = end.format();\r\n if (timezone && timezone !== 'local') {\r\n params[timezoneParam] = timezone;\r\n }\r\n return params;\r\n };\r\n JsonFeedEventSource.prototype.getPrimitive = function () {\r\n return this.url;\r\n };\r\n JsonFeedEventSource.prototype.applyMiscProps = function (rawProps) {\r\n this.ajaxSettings = rawProps;\r\n };\r\n JsonFeedEventSource.AJAX_DEFAULTS = {\r\n dataType: 'json',\r\n cache: false\r\n };\r\n return JsonFeedEventSource;\r\n}(EventSource_1.default));\r\nexports.default = JsonFeedEventSource;\r\nJsonFeedEventSource.defineStandardProps({\r\n // automatically transfer (true)...\r\n url: true,\r\n startParam: true,\r\n endParam: true,\r\n timezoneParam: true\r\n});\r\n\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Iterator = /** @class */ (function () {\r\n function Iterator(items) {\r\n this.items = items || [];\r\n }\r\n /* Calls a method on every item passing the arguments through */\r\n Iterator.prototype.proxyCall = function (methodName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var results = [];\r\n this.items.forEach(function (item) {\r\n results.push(item[methodName].apply(item, args));\r\n });\r\n return results;\r\n };\r\n return Iterator;\r\n}());\r\nexports.default = Iterator;\r\n\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\n/* Creates a clone of an element and lets it track the mouse as it moves\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar MouseFollower = /** @class */ (function () {\r\n function MouseFollower(sourceEl, options) {\r\n this.isFollowing = false;\r\n this.isHidden = false;\r\n this.isAnimating = false; // doing the revert animation?\r\n this.options = options = options || {};\r\n this.sourceEl = sourceEl;\r\n this.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent\r\n }\r\n // Causes the element to start following the mouse\r\n MouseFollower.prototype.start = function (ev) {\r\n if (!this.isFollowing) {\r\n this.isFollowing = true;\r\n this.y0 = util_1.getEvY(ev);\r\n this.x0 = util_1.getEvX(ev);\r\n this.topDelta = 0;\r\n this.leftDelta = 0;\r\n if (!this.isHidden) {\r\n this.updatePosition();\r\n }\r\n if (util_1.getEvIsTouch(ev)) {\r\n this.listenTo($(document), 'touchmove', this.handleMove);\r\n }\r\n else {\r\n this.listenTo($(document), 'mousemove', this.handleMove);\r\n }\r\n }\r\n };\r\n // Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position.\r\n // `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately.\r\n MouseFollower.prototype.stop = function (shouldRevert, callback) {\r\n var _this = this;\r\n var revertDuration = this.options.revertDuration;\r\n var complete = function () {\r\n _this.isAnimating = false;\r\n _this.removeElement();\r\n _this.top0 = _this.left0 = null; // reset state for future updatePosition calls\r\n if (callback) {\r\n callback();\r\n }\r\n };\r\n if (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time\r\n this.isFollowing = false;\r\n this.stopListeningTo($(document));\r\n if (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation?\r\n this.isAnimating = true;\r\n this.el.animate({\r\n top: this.top0,\r\n left: this.left0\r\n }, {\r\n duration: revertDuration,\r\n complete: complete\r\n });\r\n }\r\n else {\r\n complete();\r\n }\r\n }\r\n };\r\n // Gets the tracking element. Create it if necessary\r\n MouseFollower.prototype.getEl = function () {\r\n var el = this.el;\r\n if (!el) {\r\n el = this.el = this.sourceEl.clone()\r\n .addClass(this.options.additionalClass || '')\r\n .css({\r\n position: 'absolute',\r\n visibility: '',\r\n display: this.isHidden ? 'none' : '',\r\n margin: 0,\r\n right: 'auto',\r\n bottom: 'auto',\r\n width: this.sourceEl.width(),\r\n height: this.sourceEl.height(),\r\n opacity: this.options.opacity || '',\r\n zIndex: this.options.zIndex\r\n });\r\n // we don't want long taps or any mouse interaction causing selection/menus.\r\n // would use preventSelection(), but that prevents selectstart, causing problems.\r\n el.addClass('fc-unselectable');\r\n el.appendTo(this.parentEl);\r\n }\r\n return el;\r\n };\r\n // Removes the tracking element if it has already been created\r\n MouseFollower.prototype.removeElement = function () {\r\n if (this.el) {\r\n this.el.remove();\r\n this.el = null;\r\n }\r\n };\r\n // Update the CSS position of the tracking element\r\n MouseFollower.prototype.updatePosition = function () {\r\n var sourceOffset;\r\n var origin;\r\n this.getEl(); // ensure this.el\r\n // make sure origin info was computed\r\n if (this.top0 == null) {\r\n sourceOffset = this.sourceEl.offset();\r\n origin = this.el.offsetParent().offset();\r\n this.top0 = sourceOffset.top - origin.top;\r\n this.left0 = sourceOffset.left - origin.left;\r\n }\r\n this.el.css({\r\n top: this.top0 + this.topDelta,\r\n left: this.left0 + this.leftDelta\r\n });\r\n };\r\n // Gets called when the user moves the mouse\r\n MouseFollower.prototype.handleMove = function (ev) {\r\n this.topDelta = util_1.getEvY(ev) - this.y0;\r\n this.leftDelta = util_1.getEvX(ev) - this.x0;\r\n if (!this.isHidden) {\r\n this.updatePosition();\r\n }\r\n };\r\n // Temporarily makes the tracking element invisible. Can be called before following starts\r\n MouseFollower.prototype.hide = function () {\r\n if (!this.isHidden) {\r\n this.isHidden = true;\r\n if (this.el) {\r\n this.el.hide();\r\n }\r\n }\r\n };\r\n // Show the tracking element after it has been temporarily hidden\r\n MouseFollower.prototype.show = function () {\r\n if (this.isHidden) {\r\n this.isHidden = false;\r\n this.updatePosition();\r\n this.getEl().show();\r\n }\r\n };\r\n return MouseFollower;\r\n}());\r\nexports.default = MouseFollower;\r\nListenerMixin_1.default.mixInto(MouseFollower);\r\n\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* A rectangular panel that is absolutely positioned over other content\r\n------------------------------------------------------------------------------------------------------------------------\r\nOptions:\r\n - className (string)\r\n - content (HTML string or jQuery element set)\r\n - parentEl\r\n - top\r\n - left\r\n - right (the x coord of where the right edge should be. not a \"CSS\" right)\r\n - autoHide (boolean)\r\n - show (callback)\r\n - hide (callback)\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar Popover = /** @class */ (function () {\r\n function Popover(options) {\r\n this.isHidden = true;\r\n this.margin = 10; // the space required between the popover and the edges of the scroll container\r\n this.options = options || {};\r\n }\r\n // Shows the popover on the specified position. Renders it if not already\r\n Popover.prototype.show = function () {\r\n if (this.isHidden) {\r\n if (!this.el) {\r\n this.render();\r\n }\r\n this.el.show();\r\n this.position();\r\n this.isHidden = false;\r\n this.trigger('show');\r\n }\r\n };\r\n // Hides the popover, through CSS, but does not remove it from the DOM\r\n Popover.prototype.hide = function () {\r\n if (!this.isHidden) {\r\n this.el.hide();\r\n this.isHidden = true;\r\n this.trigger('hide');\r\n }\r\n };\r\n // Creates `this.el` and renders content inside of it\r\n Popover.prototype.render = function () {\r\n var _this = this;\r\n var options = this.options;\r\n this.el = $('
')\r\n .addClass(options.className || '')\r\n .css({\r\n // position initially to the top left to avoid creating scrollbars\r\n top: 0,\r\n left: 0\r\n })\r\n .append(options.content)\r\n .appendTo(options.parentEl);\r\n // when a click happens on anything inside with a 'fc-close' className, hide the popover\r\n this.el.on('click', '.fc-close', function () {\r\n _this.hide();\r\n });\r\n if (options.autoHide) {\r\n this.listenTo($(document), 'mousedown', this.documentMousedown);\r\n }\r\n };\r\n // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\r\n Popover.prototype.documentMousedown = function (ev) {\r\n // only hide the popover if the click happened outside the popover\r\n if (this.el && !$(ev.target).closest(this.el).length) {\r\n this.hide();\r\n }\r\n };\r\n // Hides and unregisters any handlers\r\n Popover.prototype.removeElement = function () {\r\n this.hide();\r\n if (this.el) {\r\n this.el.remove();\r\n this.el = null;\r\n }\r\n this.stopListeningTo($(document), 'mousedown');\r\n };\r\n // Positions the popover optimally, using the top/left/right options\r\n Popover.prototype.position = function () {\r\n var options = this.options;\r\n var origin = this.el.offsetParent().offset();\r\n var width = this.el.outerWidth();\r\n var height = this.el.outerHeight();\r\n var windowEl = $(window);\r\n var viewportEl = util_1.getScrollParent(this.el);\r\n var viewportTop;\r\n var viewportLeft;\r\n var viewportOffset;\r\n var top; // the \"position\" (not \"offset\") values for the popover\r\n var left; //\r\n // compute top and left\r\n top = options.top || 0;\r\n if (options.left !== undefined) {\r\n left = options.left;\r\n }\r\n else if (options.right !== undefined) {\r\n left = options.right - width; // derive the left value from the right value\r\n }\r\n else {\r\n left = 0;\r\n }\r\n if (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result\r\n viewportEl = windowEl;\r\n viewportTop = 0; // the window is always at the top left\r\n viewportLeft = 0; // (and .offset() won't work if called here)\r\n }\r\n else {\r\n viewportOffset = viewportEl.offset();\r\n viewportTop = viewportOffset.top;\r\n viewportLeft = viewportOffset.left;\r\n }\r\n // if the window is scrolled, it causes the visible area to be further down\r\n viewportTop += windowEl.scrollTop();\r\n viewportLeft += windowEl.scrollLeft();\r\n // constrain to the view port. if constrained by two edges, give precedence to top/left\r\n if (options.viewportConstrain !== false) {\r\n top = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin);\r\n top = Math.max(top, viewportTop + this.margin);\r\n left = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin);\r\n left = Math.max(left, viewportLeft + this.margin);\r\n }\r\n this.el.css({\r\n top: top - origin.top,\r\n left: left - origin.left\r\n });\r\n };\r\n // Triggers a callback. Calls a function in the option hash of the same name.\r\n // Arguments beyond the first `name` are forwarded on.\r\n // TODO: better code reuse for this. Repeat code\r\n Popover.prototype.trigger = function (name) {\r\n if (this.options[name]) {\r\n this.options[name].apply(this, Array.prototype.slice.call(arguments, 1));\r\n }\r\n };\r\n return Popover;\r\n}());\r\nexports.default = Popover;\r\nListenerMixin_1.default.mixInto(Popover);\r\n\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar TaskQueue = /** @class */ (function () {\r\n function TaskQueue() {\r\n this.q = [];\r\n this.isPaused = false;\r\n this.isRunning = false;\r\n }\r\n TaskQueue.prototype.queue = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n this.q.push.apply(this.q, args); // append\r\n this.tryStart();\r\n };\r\n TaskQueue.prototype.pause = function () {\r\n this.isPaused = true;\r\n };\r\n TaskQueue.prototype.resume = function () {\r\n this.isPaused = false;\r\n this.tryStart();\r\n };\r\n TaskQueue.prototype.getIsIdle = function () {\r\n return !this.isRunning && !this.isPaused;\r\n };\r\n TaskQueue.prototype.tryStart = function () {\r\n if (!this.isRunning && this.canRunNext()) {\r\n this.isRunning = true;\r\n this.trigger('start');\r\n this.runRemaining();\r\n }\r\n };\r\n TaskQueue.prototype.canRunNext = function () {\r\n return !this.isPaused && this.q.length;\r\n };\r\n TaskQueue.prototype.runRemaining = function () {\r\n var _this = this;\r\n var task;\r\n var res;\r\n do {\r\n task = this.q.shift(); // always freshly reference q. might have been reassigned.\r\n res = this.runTask(task);\r\n if (res && res.then) {\r\n res.then(function () {\r\n if (_this.canRunNext()) {\r\n _this.runRemaining();\r\n }\r\n });\r\n return; // prevent marking as stopped\r\n }\r\n } while (this.canRunNext());\r\n this.trigger('stop'); // not really a 'stop' ... more of a 'drained'\r\n this.isRunning = false;\r\n // if 'stop' handler added more tasks.... TODO: write test for this\r\n this.tryStart();\r\n };\r\n TaskQueue.prototype.runTask = function (task) {\r\n return task(); // task *is* the function, but subclasses can change the format of a task\r\n };\r\n return TaskQueue;\r\n}());\r\nexports.default = TaskQueue;\r\nEmitterMixin_1.default.mixInto(TaskQueue);\r\n\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar TaskQueue_1 = __webpack_require__(228);\r\nvar RenderQueue = /** @class */ (function (_super) {\r\n tslib_1.__extends(RenderQueue, _super);\r\n function RenderQueue(waitsByNamespace) {\r\n var _this = _super.call(this) || this;\r\n _this.waitsByNamespace = waitsByNamespace || {};\r\n return _this;\r\n }\r\n RenderQueue.prototype.queue = function (taskFunc, namespace, type) {\r\n var task = {\r\n func: taskFunc,\r\n namespace: namespace,\r\n type: type\r\n };\r\n var waitMs;\r\n if (namespace) {\r\n waitMs = this.waitsByNamespace[namespace];\r\n }\r\n if (this.waitNamespace) {\r\n if (namespace === this.waitNamespace && waitMs != null) {\r\n this.delayWait(waitMs);\r\n }\r\n else {\r\n this.clearWait();\r\n this.tryStart();\r\n }\r\n }\r\n if (this.compoundTask(task)) { // appended to queue?\r\n if (!this.waitNamespace && waitMs != null) {\r\n this.startWait(namespace, waitMs);\r\n }\r\n else {\r\n this.tryStart();\r\n }\r\n }\r\n };\r\n RenderQueue.prototype.startWait = function (namespace, waitMs) {\r\n this.waitNamespace = namespace;\r\n this.spawnWait(waitMs);\r\n };\r\n RenderQueue.prototype.delayWait = function (waitMs) {\r\n clearTimeout(this.waitId);\r\n this.spawnWait(waitMs);\r\n };\r\n RenderQueue.prototype.spawnWait = function (waitMs) {\r\n var _this = this;\r\n this.waitId = setTimeout(function () {\r\n _this.waitNamespace = null;\r\n _this.tryStart();\r\n }, waitMs);\r\n };\r\n RenderQueue.prototype.clearWait = function () {\r\n if (this.waitNamespace) {\r\n clearTimeout(this.waitId);\r\n this.waitId = null;\r\n this.waitNamespace = null;\r\n }\r\n };\r\n RenderQueue.prototype.canRunNext = function () {\r\n if (!_super.prototype.canRunNext.call(this)) {\r\n return false;\r\n }\r\n // waiting for a certain namespace to stop receiving tasks?\r\n if (this.waitNamespace) {\r\n var q = this.q;\r\n // if there was a different namespace task in the meantime,\r\n // that forces all previously-waiting tasks to suddenly execute.\r\n // TODO: find a way to do this in constant time.\r\n for (var i = 0; i < q.length; i++) {\r\n if (q[i].namespace !== this.waitNamespace) {\r\n return true; // allow execution\r\n }\r\n }\r\n return false;\r\n }\r\n return true;\r\n };\r\n RenderQueue.prototype.runTask = function (task) {\r\n task.func();\r\n };\r\n RenderQueue.prototype.compoundTask = function (newTask) {\r\n var q = this.q;\r\n var shouldAppend = true;\r\n var i;\r\n var task;\r\n if (newTask.namespace && newTask.type === 'destroy') {\r\n // remove all init/add/remove ops with same namespace, regardless of order\r\n for (i = q.length - 1; i >= 0; i--) {\r\n task = q[i];\r\n if (task.namespace === newTask.namespace) {\r\n switch (task.type) {\r\n case 'init':\r\n shouldAppend = false;\r\n // the latest destroy is cancelled out by not doing the init\r\n /* falls through */\r\n case 'add':\r\n /* falls through */\r\n case 'remove':\r\n q.splice(i, 1); // remove task\r\n }\r\n }\r\n }\r\n }\r\n if (shouldAppend) {\r\n q.push(newTask);\r\n }\r\n return shouldAppend;\r\n };\r\n return RenderQueue;\r\n}(TaskQueue_1.default));\r\nexports.default = RenderQueue;\r\n\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Model_1 = __webpack_require__(51);\r\nvar Component = /** @class */ (function (_super) {\r\n tslib_1.__extends(Component, _super);\r\n function Component() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Component.prototype.setElement = function (el) {\r\n this.el = el;\r\n this.bindGlobalHandlers();\r\n this.renderSkeleton();\r\n this.set('isInDom', true);\r\n };\r\n Component.prototype.removeElement = function () {\r\n this.unset('isInDom');\r\n this.unrenderSkeleton();\r\n this.unbindGlobalHandlers();\r\n this.el.remove();\r\n // NOTE: don't null-out this.el in case the View was destroyed within an API callback.\r\n // We don't null-out the View's other jQuery element references upon destroy,\r\n // so we shouldn't kill this.el either.\r\n };\r\n Component.prototype.bindGlobalHandlers = function () {\r\n // subclasses can override\r\n };\r\n Component.prototype.unbindGlobalHandlers = function () {\r\n // subclasses can override\r\n };\r\n /*\r\n NOTE: Can't have a `render` method. Read the deprecation notice in View::executeDateRender\r\n */\r\n // Renders the basic structure of the view before any content is rendered\r\n Component.prototype.renderSkeleton = function () {\r\n // subclasses should implement\r\n };\r\n // Unrenders the basic structure of the view\r\n Component.prototype.unrenderSkeleton = function () {\r\n // subclasses should implement\r\n };\r\n return Component;\r\n}(Model_1.default));\r\nexports.default = Component;\r\n\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar moment_ext_1 = __webpack_require__(11);\r\nvar date_formatting_1 = __webpack_require__(49);\r\nvar Component_1 = __webpack_require__(230);\r\nvar util_2 = __webpack_require__(19);\r\nvar DateComponent = /** @class */ (function (_super) {\r\n tslib_1.__extends(DateComponent, _super);\r\n function DateComponent(_view, _options) {\r\n var _this = _super.call(this) || this;\r\n _this.isRTL = false; // frequently accessed options\r\n _this.hitsNeededDepth = 0; // necessary because multiple callers might need the same hits\r\n _this.hasAllDayBusinessHours = false; // TODO: unify with largeUnit and isTimeScale?\r\n _this.isDatesRendered = false;\r\n // hack to set options prior to the this.opt calls\r\n if (_view) {\r\n _this['view'] = _view;\r\n }\r\n if (_options) {\r\n _this['options'] = _options;\r\n }\r\n _this.uid = String(DateComponent.guid++);\r\n _this.childrenByUid = {};\r\n _this.nextDayThreshold = moment.duration(_this.opt('nextDayThreshold'));\r\n _this.isRTL = _this.opt('isRTL');\r\n if (_this.fillRendererClass) {\r\n _this.fillRenderer = new _this.fillRendererClass(_this);\r\n }\r\n if (_this.eventRendererClass) { // fillRenderer is optional -----v\r\n _this.eventRenderer = new _this.eventRendererClass(_this, _this.fillRenderer);\r\n }\r\n if (_this.helperRendererClass && _this.eventRenderer) {\r\n _this.helperRenderer = new _this.helperRendererClass(_this, _this.eventRenderer);\r\n }\r\n if (_this.businessHourRendererClass && _this.fillRenderer) {\r\n _this.businessHourRenderer = new _this.businessHourRendererClass(_this, _this.fillRenderer);\r\n }\r\n return _this;\r\n }\r\n DateComponent.prototype.addChild = function (child) {\r\n if (!this.childrenByUid[child.uid]) {\r\n this.childrenByUid[child.uid] = child;\r\n return true;\r\n }\r\n return false;\r\n };\r\n DateComponent.prototype.removeChild = function (child) {\r\n if (this.childrenByUid[child.uid]) {\r\n delete this.childrenByUid[child.uid];\r\n return true;\r\n }\r\n return false;\r\n };\r\n // TODO: only do if isInDom?\r\n // TODO: make part of Component, along with children/batch-render system?\r\n DateComponent.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n this.callChildren('updateSize', arguments);\r\n };\r\n // Options\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.opt = function (name) {\r\n return this._getView().opt(name); // default implementation\r\n };\r\n DateComponent.prototype.publiclyTrigger = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var calendar = this._getCalendar();\r\n return calendar.publiclyTrigger.apply(calendar, args);\r\n };\r\n DateComponent.prototype.hasPublicHandlers = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var calendar = this._getCalendar();\r\n return calendar.hasPublicHandlers.apply(calendar, args);\r\n };\r\n // Date\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.executeDateRender = function (dateProfile) {\r\n this.dateProfile = dateProfile; // for rendering\r\n this.renderDates(dateProfile);\r\n this.isDatesRendered = true;\r\n this.callChildren('executeDateRender', arguments);\r\n };\r\n DateComponent.prototype.executeDateUnrender = function () {\r\n this.callChildren('executeDateUnrender', arguments);\r\n this.dateProfile = null;\r\n this.unrenderDates();\r\n this.isDatesRendered = false;\r\n };\r\n // date-cell content only\r\n DateComponent.prototype.renderDates = function (dateProfile) {\r\n // subclasses should implement\r\n };\r\n // date-cell content only\r\n DateComponent.prototype.unrenderDates = function () {\r\n // subclasses should override\r\n };\r\n // Now-Indicator\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Returns a string unit, like 'second' or 'minute' that defined how often the current time indicator\r\n // should be refreshed. If something falsy is returned, no time indicator is rendered at all.\r\n DateComponent.prototype.getNowIndicatorUnit = function () {\r\n // subclasses should implement\r\n };\r\n // Renders a current time indicator at the given datetime\r\n DateComponent.prototype.renderNowIndicator = function (date) {\r\n this.callChildren('renderNowIndicator', arguments);\r\n };\r\n // Undoes the rendering actions from renderNowIndicator\r\n DateComponent.prototype.unrenderNowIndicator = function () {\r\n this.callChildren('unrenderNowIndicator', arguments);\r\n };\r\n // Business Hours\r\n // ---------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.renderBusinessHours = function (businessHourGenerator) {\r\n if (this.businessHourRenderer) {\r\n this.businessHourRenderer.render(businessHourGenerator);\r\n }\r\n this.callChildren('renderBusinessHours', arguments);\r\n };\r\n // Unrenders previously-rendered business-hours\r\n DateComponent.prototype.unrenderBusinessHours = function () {\r\n this.callChildren('unrenderBusinessHours', arguments);\r\n if (this.businessHourRenderer) {\r\n this.businessHourRenderer.unrender();\r\n }\r\n };\r\n // Event Displaying\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.executeEventRender = function (eventsPayload) {\r\n if (this.eventRenderer) {\r\n this.eventRenderer.rangeUpdated(); // poorly named now\r\n this.eventRenderer.render(eventsPayload);\r\n }\r\n else if (this['renderEvents']) { // legacy\r\n this['renderEvents'](convertEventsPayloadToLegacyArray(eventsPayload));\r\n }\r\n this.callChildren('executeEventRender', arguments);\r\n };\r\n DateComponent.prototype.executeEventUnrender = function () {\r\n this.callChildren('executeEventUnrender', arguments);\r\n if (this.eventRenderer) {\r\n this.eventRenderer.unrender();\r\n }\r\n else if (this['destroyEvents']) { // legacy\r\n this['destroyEvents']();\r\n }\r\n };\r\n DateComponent.prototype.getBusinessHourSegs = function () {\r\n var segs = this.getOwnBusinessHourSegs();\r\n this.iterChildren(function (child) {\r\n segs.push.apply(segs, child.getBusinessHourSegs());\r\n });\r\n return segs;\r\n };\r\n DateComponent.prototype.getOwnBusinessHourSegs = function () {\r\n if (this.businessHourRenderer) {\r\n return this.businessHourRenderer.getSegs();\r\n }\r\n return [];\r\n };\r\n DateComponent.prototype.getEventSegs = function () {\r\n var segs = this.getOwnEventSegs();\r\n this.iterChildren(function (child) {\r\n segs.push.apply(segs, child.getEventSegs());\r\n });\r\n return segs;\r\n };\r\n DateComponent.prototype.getOwnEventSegs = function () {\r\n if (this.eventRenderer) {\r\n return this.eventRenderer.getSegs();\r\n }\r\n return [];\r\n };\r\n // Event Rendering Triggering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.triggerAfterEventsRendered = function () {\r\n this.triggerAfterEventSegsRendered(this.getEventSegs());\r\n this.publiclyTrigger('eventAfterAllRender', {\r\n context: this,\r\n args: [this]\r\n });\r\n };\r\n DateComponent.prototype.triggerAfterEventSegsRendered = function (segs) {\r\n var _this = this;\r\n // an optimization, because getEventLegacy is expensive\r\n if (this.hasPublicHandlers('eventAfterRender')) {\r\n segs.forEach(function (seg) {\r\n var legacy;\r\n if (seg.el) { // necessary?\r\n legacy = seg.footprint.getEventLegacy();\r\n _this.publiclyTrigger('eventAfterRender', {\r\n context: legacy,\r\n args: [legacy, seg.el, _this]\r\n });\r\n }\r\n });\r\n }\r\n };\r\n DateComponent.prototype.triggerBeforeEventsDestroyed = function () {\r\n this.triggerBeforeEventSegsDestroyed(this.getEventSegs());\r\n };\r\n DateComponent.prototype.triggerBeforeEventSegsDestroyed = function (segs) {\r\n var _this = this;\r\n if (this.hasPublicHandlers('eventDestroy')) {\r\n segs.forEach(function (seg) {\r\n var legacy;\r\n if (seg.el) { // necessary?\r\n legacy = seg.footprint.getEventLegacy();\r\n _this.publiclyTrigger('eventDestroy', {\r\n context: legacy,\r\n args: [legacy, seg.el, _this]\r\n });\r\n }\r\n });\r\n }\r\n };\r\n // Event Rendering Utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Hides all rendered event segments linked to the given event\r\n // RECURSIVE with subcomponents\r\n DateComponent.prototype.showEventsWithId = function (eventDefId) {\r\n this.getEventSegs().forEach(function (seg) {\r\n if (seg.footprint.eventDef.id === eventDefId &&\r\n seg.el // necessary?\r\n ) {\r\n seg.el.css('visibility', '');\r\n }\r\n });\r\n this.callChildren('showEventsWithId', arguments);\r\n };\r\n // Shows all rendered event segments linked to the given event\r\n // RECURSIVE with subcomponents\r\n DateComponent.prototype.hideEventsWithId = function (eventDefId) {\r\n this.getEventSegs().forEach(function (seg) {\r\n if (seg.footprint.eventDef.id === eventDefId &&\r\n seg.el // necessary?\r\n ) {\r\n seg.el.css('visibility', 'hidden');\r\n }\r\n });\r\n this.callChildren('hideEventsWithId', arguments);\r\n };\r\n // Drag-n-Drop Rendering (for both events and external elements)\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Renders a visual indication of a event or external-element drag over the given drop zone.\r\n // If an external-element, seg will be `null`.\r\n // Must return elements used for any mock events.\r\n DateComponent.prototype.renderDrag = function (eventFootprints, seg, isTouch) {\r\n var renderedHelper = false;\r\n this.iterChildren(function (child) {\r\n if (child.renderDrag(eventFootprints, seg, isTouch)) {\r\n renderedHelper = true;\r\n }\r\n });\r\n return renderedHelper;\r\n };\r\n // Unrenders a visual indication of an event or external-element being dragged.\r\n DateComponent.prototype.unrenderDrag = function () {\r\n this.callChildren('unrenderDrag', arguments);\r\n };\r\n // Event Resizing\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Renders a visual indication of an event being resized.\r\n DateComponent.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {\r\n this.callChildren('renderEventResize', arguments);\r\n };\r\n // Unrenders a visual indication of an event being resized.\r\n DateComponent.prototype.unrenderEventResize = function () {\r\n this.callChildren('unrenderEventResize', arguments);\r\n };\r\n // Selection\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Renders a visual indication of the selection\r\n // TODO: rename to `renderSelection` after legacy is gone\r\n DateComponent.prototype.renderSelectionFootprint = function (componentFootprint) {\r\n this.renderHighlight(componentFootprint);\r\n this.callChildren('renderSelectionFootprint', arguments);\r\n };\r\n // Unrenders a visual indication of selection\r\n DateComponent.prototype.unrenderSelection = function () {\r\n this.unrenderHighlight();\r\n this.callChildren('unrenderSelection', arguments);\r\n };\r\n // Highlight\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Renders an emphasis on the given date range. Given a span (unzoned start/end and other misc data)\r\n DateComponent.prototype.renderHighlight = function (componentFootprint) {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.renderFootprint('highlight', componentFootprint, {\r\n getClasses: function () {\r\n return ['fc-highlight'];\r\n }\r\n });\r\n }\r\n this.callChildren('renderHighlight', arguments);\r\n };\r\n // Unrenders the emphasis on a date range\r\n DateComponent.prototype.unrenderHighlight = function () {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.unrender('highlight');\r\n }\r\n this.callChildren('unrenderHighlight', arguments);\r\n };\r\n // Hit Areas\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // just because all DateComponents support this interface\r\n // doesn't mean they need to have their own internal coord system. they can defer to sub-components.\r\n DateComponent.prototype.hitsNeeded = function () {\r\n if (!(this.hitsNeededDepth++)) {\r\n this.prepareHits();\r\n }\r\n this.callChildren('hitsNeeded', arguments);\r\n };\r\n DateComponent.prototype.hitsNotNeeded = function () {\r\n if (this.hitsNeededDepth && !(--this.hitsNeededDepth)) {\r\n this.releaseHits();\r\n }\r\n this.callChildren('hitsNotNeeded', arguments);\r\n };\r\n DateComponent.prototype.prepareHits = function () {\r\n // subclasses can implement\r\n };\r\n DateComponent.prototype.releaseHits = function () {\r\n // subclasses can implement\r\n };\r\n // Given coordinates from the topleft of the document, return data about the date-related area underneath.\r\n // Can return an object with arbitrary properties (although top/right/left/bottom are encouraged).\r\n // Must have a `grid` property, a reference to this current grid. TODO: avoid this\r\n // The returned object will be processed by getHitFootprint and getHitEl.\r\n DateComponent.prototype.queryHit = function (leftOffset, topOffset) {\r\n var childrenByUid = this.childrenByUid;\r\n var uid;\r\n var hit;\r\n for (uid in childrenByUid) {\r\n hit = childrenByUid[uid].queryHit(leftOffset, topOffset);\r\n if (hit) {\r\n break;\r\n }\r\n }\r\n return hit;\r\n };\r\n DateComponent.prototype.getSafeHitFootprint = function (hit) {\r\n var footprint = this.getHitFootprint(hit);\r\n if (!this.dateProfile.activeUnzonedRange.containsRange(footprint.unzonedRange)) {\r\n return null;\r\n }\r\n return footprint;\r\n };\r\n DateComponent.prototype.getHitFootprint = function (hit) {\r\n // what about being abstract!?\r\n };\r\n // Given position-level information about a date-related area within the grid,\r\n // should return a jQuery element that best represents it. passed to dayClick callback.\r\n DateComponent.prototype.getHitEl = function (hit) {\r\n // what about being abstract!?\r\n };\r\n /* Converting eventRange -> eventFootprint\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DateComponent.prototype.eventRangesToEventFootprints = function (eventRanges) {\r\n var eventFootprints = [];\r\n var i;\r\n for (i = 0; i < eventRanges.length; i++) {\r\n eventFootprints.push.apply(// append\r\n eventFootprints, this.eventRangeToEventFootprints(eventRanges[i]));\r\n }\r\n return eventFootprints;\r\n };\r\n DateComponent.prototype.eventRangeToEventFootprints = function (eventRange) {\r\n return [util_2.eventRangeToEventFootprint(eventRange)];\r\n };\r\n /* Converting componentFootprint/eventFootprint -> segs\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DateComponent.prototype.eventFootprintsToSegs = function (eventFootprints) {\r\n var segs = [];\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n segs.push.apply(segs, this.eventFootprintToSegs(eventFootprints[i]));\r\n }\r\n return segs;\r\n };\r\n // Given an event's span (unzoned start/end and other misc data), and the event itself,\r\n // slices into segments and attaches event-derived properties to them.\r\n // eventSpan - { start, end, isStart, isEnd, otherthings... }\r\n DateComponent.prototype.eventFootprintToSegs = function (eventFootprint) {\r\n var unzonedRange = eventFootprint.componentFootprint.unzonedRange;\r\n var segs;\r\n var i;\r\n var seg;\r\n segs = this.componentFootprintToSegs(eventFootprint.componentFootprint);\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n if (!unzonedRange.isStart) {\r\n seg.isStart = false;\r\n }\r\n if (!unzonedRange.isEnd) {\r\n seg.isEnd = false;\r\n }\r\n seg.footprint = eventFootprint;\r\n // TODO: rename to seg.eventFootprint\r\n }\r\n return segs;\r\n };\r\n DateComponent.prototype.componentFootprintToSegs = function (componentFootprint) {\r\n return [];\r\n };\r\n // Utils\r\n // ---------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.callChildren = function (methodName, args) {\r\n this.iterChildren(function (child) {\r\n child[methodName].apply(child, args);\r\n });\r\n };\r\n DateComponent.prototype.iterChildren = function (func) {\r\n var childrenByUid = this.childrenByUid;\r\n var uid;\r\n for (uid in childrenByUid) {\r\n func(childrenByUid[uid]);\r\n }\r\n };\r\n DateComponent.prototype._getCalendar = function () {\r\n var t = this;\r\n return t.calendar || t.view.calendar;\r\n };\r\n DateComponent.prototype._getView = function () {\r\n return this.view;\r\n };\r\n DateComponent.prototype._getDateProfile = function () {\r\n return this._getView().get('dateProfile');\r\n };\r\n // Generates HTML for an anchor to another view into the calendar.\r\n // Will either generate an tag or a non-clickable tag, depending on enabled settings.\r\n // `gotoOptions` can either be a moment input, or an object with the form:\r\n // { date, type, forceOff }\r\n // `type` is a view-type like \"day\" or \"week\". default value is \"day\".\r\n // `attrs` and `innerHtml` are use to generate the rest of the HTML tag.\r\n DateComponent.prototype.buildGotoAnchorHtml = function (gotoOptions, attrs, innerHtml) {\r\n var date;\r\n var type;\r\n var forceOff;\r\n var finalOptions;\r\n if ($.isPlainObject(gotoOptions)) {\r\n date = gotoOptions.date;\r\n type = gotoOptions.type;\r\n forceOff = gotoOptions.forceOff;\r\n }\r\n else {\r\n date = gotoOptions; // a single moment input\r\n }\r\n date = moment_ext_1.default(date); // if a string, parse it\r\n finalOptions = {\r\n date: date.format('YYYY-MM-DD'),\r\n type: type || 'day'\r\n };\r\n if (typeof attrs === 'string') {\r\n innerHtml = attrs;\r\n attrs = null;\r\n }\r\n attrs = attrs ? ' ' + util_1.attrsToStr(attrs) : ''; // will have a leading space\r\n innerHtml = innerHtml || '';\r\n if (!forceOff && this.opt('navLinks')) {\r\n return '' +\r\n innerHtml +\r\n '';\r\n }\r\n else {\r\n return '' +\r\n innerHtml +\r\n '';\r\n }\r\n };\r\n DateComponent.prototype.getAllDayHtml = function () {\r\n return this.opt('allDayHtml') || util_1.htmlEscape(this.opt('allDayText'));\r\n };\r\n // Computes HTML classNames for a single-day element\r\n DateComponent.prototype.getDayClasses = function (date, noThemeHighlight) {\r\n var view = this._getView();\r\n var classes = [];\r\n var today;\r\n if (!this.dateProfile.activeUnzonedRange.containsDate(date)) {\r\n classes.push('fc-disabled-day'); // TODO: jQuery UI theme?\r\n }\r\n else {\r\n classes.push('fc-' + util_1.dayIDs[date.day()]);\r\n if (view.isDateInOtherMonth(date, this.dateProfile)) { // TODO: use DateComponent subclass somehow\r\n classes.push('fc-other-month');\r\n }\r\n today = view.calendar.getNow();\r\n if (date.isSame(today, 'day')) {\r\n classes.push('fc-today');\r\n if (noThemeHighlight !== true) {\r\n classes.push(view.calendar.theme.getClass('today'));\r\n }\r\n }\r\n else if (date < today) {\r\n classes.push('fc-past');\r\n }\r\n else {\r\n classes.push('fc-future');\r\n }\r\n }\r\n return classes;\r\n };\r\n // Utility for formatting a range. Accepts a range object, formatting string, and optional separator.\r\n // Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account.\r\n // The timezones of the dates within `range` will be respected.\r\n DateComponent.prototype.formatRange = function (range, isAllDay, formatStr, separator) {\r\n var end = range.end;\r\n if (isAllDay) {\r\n end = end.clone().subtract(1); // convert to inclusive. last ms of previous day\r\n }\r\n return date_formatting_1.formatRange(range.start, end, formatStr, separator, this.isRTL);\r\n };\r\n // Compute the number of the give units in the \"current\" range.\r\n // Will return a floating-point number. Won't round.\r\n DateComponent.prototype.currentRangeAs = function (unit) {\r\n return this._getDateProfile().currentUnzonedRange.as(unit);\r\n };\r\n // Returns the date range of the full days the given range visually appears to occupy.\r\n // Returns a plain object with start/end, NOT an UnzonedRange!\r\n DateComponent.prototype.computeDayRange = function (unzonedRange) {\r\n var calendar = this._getCalendar();\r\n var startDay = calendar.msToUtcMoment(unzonedRange.startMs, true); // the beginning of the day the range starts\r\n var end = calendar.msToUtcMoment(unzonedRange.endMs);\r\n var endTimeMS = +end.time(); // # of milliseconds into `endDay`\r\n var endDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends\r\n // If the end time is actually inclusively part of the next day and is equal to or\r\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\r\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\r\n if (endTimeMS && endTimeMS >= this.nextDayThreshold) {\r\n endDay.add(1, 'days');\r\n }\r\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\r\n if (endDay <= startDay) {\r\n endDay = startDay.clone().add(1, 'days');\r\n }\r\n return { start: startDay, end: endDay };\r\n };\r\n // Does the given range visually appear to occupy more than one day?\r\n DateComponent.prototype.isMultiDayRange = function (unzonedRange) {\r\n var dayRange = this.computeDayRange(unzonedRange);\r\n return dayRange.end.diff(dayRange.start, 'days') > 1;\r\n };\r\n DateComponent.guid = 0; // TODO: better system for this?\r\n return DateComponent;\r\n}(Component_1.default));\r\nexports.default = DateComponent;\r\n// legacy\r\nfunction convertEventsPayloadToLegacyArray(eventsPayload) {\r\n var eventDefId;\r\n var eventInstances;\r\n var legacyEvents = [];\r\n var i;\r\n for (eventDefId in eventsPayload) {\r\n eventInstances = eventsPayload[eventDefId].eventInstances;\r\n for (i = 0; i < eventInstances.length; i++) {\r\n legacyEvents.push(eventInstances[i].toLegacy());\r\n }\r\n }\r\n return legacyEvents;\r\n}\r\n\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar options_1 = __webpack_require__(33);\r\nvar Iterator_1 = __webpack_require__(225);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar Toolbar_1 = __webpack_require__(257);\r\nvar OptionsManager_1 = __webpack_require__(258);\r\nvar ViewSpecManager_1 = __webpack_require__(259);\r\nvar Constraints_1 = __webpack_require__(217);\r\nvar locale_1 = __webpack_require__(32);\r\nvar moment_ext_1 = __webpack_require__(11);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar EventManager_1 = __webpack_require__(220);\r\nvar BusinessHourGenerator_1 = __webpack_require__(218);\r\nvar EventSourceParser_1 = __webpack_require__(38);\r\nvar EventDefParser_1 = __webpack_require__(36);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventDefMutation_1 = __webpack_require__(39);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar ThemeRegistry_1 = __webpack_require__(57);\r\nvar Calendar = /** @class */ (function () {\r\n function Calendar(el, overrides) {\r\n this.loadingLevel = 0; // number of simultaneous loading tasks\r\n this.ignoreUpdateViewSize = 0;\r\n this.freezeContentHeightDepth = 0;\r\n // declare the current calendar instance relies on GlobalEmitter. needed for garbage collection.\r\n // unneeded() is called in destroy.\r\n GlobalEmitter_1.default.needed();\r\n this.el = el;\r\n this.viewsByType = {};\r\n this.optionsManager = new OptionsManager_1.default(this, overrides);\r\n this.viewSpecManager = new ViewSpecManager_1.default(this.optionsManager, this);\r\n this.initMomentInternals(); // needs to happen after options hash initialized\r\n this.initCurrentDate();\r\n this.initEventManager();\r\n this.constraints = new Constraints_1.default(this.eventManager, this);\r\n this.constructed();\r\n }\r\n Calendar.prototype.constructed = function () {\r\n // useful for monkeypatching. used?\r\n };\r\n Calendar.prototype.getView = function () {\r\n return this.view;\r\n };\r\n Calendar.prototype.publiclyTrigger = function (name, triggerInfo) {\r\n var optHandler = this.opt(name);\r\n var context;\r\n var args;\r\n if ($.isPlainObject(triggerInfo)) {\r\n context = triggerInfo.context;\r\n args = triggerInfo.args;\r\n }\r\n else if ($.isArray(triggerInfo)) {\r\n args = triggerInfo;\r\n }\r\n if (context == null) {\r\n context = this.el[0]; // fallback context\r\n }\r\n if (!args) {\r\n args = [];\r\n }\r\n this.triggerWith(name, context, args); // Emitter's method\r\n if (optHandler) {\r\n return optHandler.apply(context, args);\r\n }\r\n };\r\n Calendar.prototype.hasPublicHandlers = function (name) {\r\n return this.hasHandlers(name) ||\r\n this.opt(name); // handler specified in options\r\n };\r\n // Options Public API\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // public getter/setter\r\n Calendar.prototype.option = function (name, value) {\r\n var newOptionHash;\r\n if (typeof name === 'string') {\r\n if (value === undefined) { // getter\r\n return this.optionsManager.get(name);\r\n }\r\n else { // setter for individual option\r\n newOptionHash = {};\r\n newOptionHash[name] = value;\r\n this.optionsManager.add(newOptionHash);\r\n }\r\n }\r\n else if (typeof name === 'object') { // compound setter with object input\r\n this.optionsManager.add(name);\r\n }\r\n };\r\n // private getter\r\n Calendar.prototype.opt = function (name) {\r\n return this.optionsManager.get(name);\r\n };\r\n // View\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Given a view name for a custom view or a standard view, creates a ready-to-go View object\r\n Calendar.prototype.instantiateView = function (viewType) {\r\n var spec = this.viewSpecManager.getViewSpec(viewType);\r\n if (!spec) {\r\n throw new Error(\"View type \\\"\" + viewType + \"\\\" is not valid\");\r\n }\r\n return new spec['class'](this, spec);\r\n };\r\n // Returns a boolean about whether the view is okay to instantiate at some point\r\n Calendar.prototype.isValidViewType = function (viewType) {\r\n return Boolean(this.viewSpecManager.getViewSpec(viewType));\r\n };\r\n Calendar.prototype.changeView = function (viewName, dateOrRange) {\r\n if (dateOrRange) {\r\n if (dateOrRange.start && dateOrRange.end) { // a range\r\n this.optionsManager.recordOverrides({\r\n visibleRange: dateOrRange\r\n });\r\n }\r\n else { // a date\r\n this.currentDate = this.moment(dateOrRange).stripZone(); // just like gotoDate\r\n }\r\n }\r\n this.renderView(viewName);\r\n };\r\n // Forces navigation to a view for the given date.\r\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\r\n Calendar.prototype.zoomTo = function (newDate, viewType) {\r\n var spec;\r\n viewType = viewType || 'day'; // day is default zoom\r\n spec = this.viewSpecManager.getViewSpec(viewType) ||\r\n this.viewSpecManager.getUnitViewSpec(viewType);\r\n this.currentDate = newDate.clone();\r\n this.renderView(spec ? spec.type : null);\r\n };\r\n // Current Date\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.initCurrentDate = function () {\r\n var defaultDateInput = this.opt('defaultDate');\r\n // compute the initial ambig-timezone date\r\n if (defaultDateInput != null) {\r\n this.currentDate = this.moment(defaultDateInput).stripZone();\r\n }\r\n else {\r\n this.currentDate = this.getNow(); // getNow already returns unzoned\r\n }\r\n };\r\n Calendar.prototype.prev = function () {\r\n var view = this.view;\r\n var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile'));\r\n if (prevInfo.isValid) {\r\n this.currentDate = prevInfo.date;\r\n this.renderView();\r\n }\r\n };\r\n Calendar.prototype.next = function () {\r\n var view = this.view;\r\n var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile'));\r\n if (nextInfo.isValid) {\r\n this.currentDate = nextInfo.date;\r\n this.renderView();\r\n }\r\n };\r\n Calendar.prototype.prevYear = function () {\r\n this.currentDate.add(-1, 'years');\r\n this.renderView();\r\n };\r\n Calendar.prototype.nextYear = function () {\r\n this.currentDate.add(1, 'years');\r\n this.renderView();\r\n };\r\n Calendar.prototype.today = function () {\r\n this.currentDate = this.getNow(); // should deny like prev/next?\r\n this.renderView();\r\n };\r\n Calendar.prototype.gotoDate = function (zonedDateInput) {\r\n this.currentDate = this.moment(zonedDateInput).stripZone();\r\n this.renderView();\r\n };\r\n Calendar.prototype.incrementDate = function (delta) {\r\n this.currentDate.add(moment.duration(delta));\r\n this.renderView();\r\n };\r\n // for external API\r\n Calendar.prototype.getDate = function () {\r\n return this.applyTimezone(this.currentDate); // infuse the calendar's timezone\r\n };\r\n // Loading Triggering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Should be called when any type of async data fetching begins\r\n Calendar.prototype.pushLoading = function () {\r\n if (!(this.loadingLevel++)) {\r\n this.publiclyTrigger('loading', [true, this.view]);\r\n }\r\n };\r\n // Should be called when any type of async data fetching completes\r\n Calendar.prototype.popLoading = function () {\r\n if (!(--this.loadingLevel)) {\r\n this.publiclyTrigger('loading', [false, this.view]);\r\n }\r\n };\r\n // High-level Rendering\r\n // -----------------------------------------------------------------------------------\r\n Calendar.prototype.render = function () {\r\n if (!this.contentEl) {\r\n this.initialRender();\r\n }\r\n else if (this.elementVisible()) {\r\n // mainly for the public API\r\n this.calcSize();\r\n this.updateViewSize();\r\n }\r\n };\r\n Calendar.prototype.initialRender = function () {\r\n var _this = this;\r\n var el = this.el;\r\n el.addClass('fc');\r\n // event delegation for nav links\r\n el.on('click.fc', 'a[data-goto]', function (ev) {\r\n var anchorEl = $(ev.currentTarget);\r\n var gotoOptions = anchorEl.data('goto'); // will automatically parse JSON\r\n var date = _this.moment(gotoOptions.date);\r\n var viewType = gotoOptions.type;\r\n // property like \"navLinkDayClick\". might be a string or a function\r\n var customAction = _this.view.opt('navLink' + util_1.capitaliseFirstLetter(viewType) + 'Click');\r\n if (typeof customAction === 'function') {\r\n customAction(date, ev);\r\n }\r\n else {\r\n if (typeof customAction === 'string') {\r\n viewType = customAction;\r\n }\r\n _this.zoomTo(date, viewType);\r\n }\r\n });\r\n // called immediately, and upon option change\r\n this.optionsManager.watch('settingTheme', ['?theme', '?themeSystem'], function (opts) {\r\n var themeClass = ThemeRegistry_1.getThemeSystemClass(opts.themeSystem || opts.theme);\r\n var theme = new themeClass(_this.optionsManager);\r\n var widgetClass = theme.getClass('widget');\r\n _this.theme = theme;\r\n if (widgetClass) {\r\n el.addClass(widgetClass);\r\n }\r\n }, function () {\r\n var widgetClass = _this.theme.getClass('widget');\r\n _this.theme = null;\r\n if (widgetClass) {\r\n el.removeClass(widgetClass);\r\n }\r\n });\r\n this.optionsManager.watch('settingBusinessHourGenerator', ['?businessHours'], function (deps) {\r\n _this.businessHourGenerator = new BusinessHourGenerator_1.default(deps.businessHours, _this);\r\n if (_this.view) {\r\n _this.view.set('businessHourGenerator', _this.businessHourGenerator);\r\n }\r\n }, function () {\r\n _this.businessHourGenerator = null;\r\n });\r\n // called immediately, and upon option change.\r\n // HACK: locale often affects isRTL, so we explicitly listen to that too.\r\n this.optionsManager.watch('applyingDirClasses', ['?isRTL', '?locale'], function (opts) {\r\n el.toggleClass('fc-ltr', !opts.isRTL);\r\n el.toggleClass('fc-rtl', opts.isRTL);\r\n });\r\n this.contentEl = $(\"
\").prependTo(el);\r\n this.initToolbars();\r\n this.renderHeader();\r\n this.renderFooter();\r\n this.renderView(this.opt('defaultView'));\r\n if (this.opt('handleWindowResize')) {\r\n $(window).resize(this.windowResizeProxy = util_1.debounce(// prevents rapid calls\r\n this.windowResize.bind(this), this.opt('windowResizeDelay')));\r\n }\r\n };\r\n Calendar.prototype.destroy = function () {\r\n if (this.view) {\r\n this.clearView();\r\n }\r\n this.toolbarsManager.proxyCall('removeElement');\r\n this.contentEl.remove();\r\n this.el.removeClass('fc fc-ltr fc-rtl');\r\n // removes theme-related root className\r\n this.optionsManager.unwatch('settingTheme');\r\n this.optionsManager.unwatch('settingBusinessHourGenerator');\r\n this.el.off('.fc'); // unbind nav link handlers\r\n if (this.windowResizeProxy) {\r\n $(window).unbind('resize', this.windowResizeProxy);\r\n this.windowResizeProxy = null;\r\n }\r\n GlobalEmitter_1.default.unneeded();\r\n };\r\n Calendar.prototype.elementVisible = function () {\r\n return this.el.is(':visible');\r\n };\r\n // Render Queue\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.bindViewHandlers = function (view) {\r\n var _this = this;\r\n view.watch('titleForCalendar', ['title'], function (deps) {\r\n if (view === _this.view) { // hack\r\n _this.setToolbarsTitle(deps.title);\r\n }\r\n });\r\n view.watch('dateProfileForCalendar', ['dateProfile'], function (deps) {\r\n if (view === _this.view) { // hack\r\n _this.currentDate = deps.dateProfile.date; // might have been constrained by view dates\r\n _this.updateToolbarButtons(deps.dateProfile);\r\n }\r\n });\r\n };\r\n Calendar.prototype.unbindViewHandlers = function (view) {\r\n view.unwatch('titleForCalendar');\r\n view.unwatch('dateProfileForCalendar');\r\n };\r\n // View Rendering\r\n // -----------------------------------------------------------------------------------\r\n // Renders a view because of a date change, view-type change, or for the first time.\r\n // If not given a viewType, keep the current view but render different dates.\r\n // Accepts an optional scroll state to restore to.\r\n Calendar.prototype.renderView = function (viewType) {\r\n var oldView = this.view;\r\n var newView;\r\n this.freezeContentHeight();\r\n if (oldView && viewType && oldView.type !== viewType) {\r\n this.clearView();\r\n }\r\n // if viewType changed, or the view was never created, create a fresh view\r\n if (!this.view && viewType) {\r\n newView = this.view =\r\n this.viewsByType[viewType] ||\r\n (this.viewsByType[viewType] = this.instantiateView(viewType));\r\n this.bindViewHandlers(newView);\r\n newView.startBatchRender(); // so that setElement+setDate rendering are joined\r\n newView.setElement($(\"
\").appendTo(this.contentEl));\r\n this.toolbarsManager.proxyCall('activateButton', viewType);\r\n }\r\n if (this.view) {\r\n // prevent unnecessary change firing\r\n if (this.view.get('businessHourGenerator') !== this.businessHourGenerator) {\r\n this.view.set('businessHourGenerator', this.businessHourGenerator);\r\n }\r\n this.view.setDate(this.currentDate);\r\n if (newView) {\r\n newView.stopBatchRender();\r\n }\r\n }\r\n this.thawContentHeight();\r\n };\r\n // Unrenders the current view and reflects this change in the Header.\r\n // Unregsiters the `view`, but does not remove from viewByType hash.\r\n Calendar.prototype.clearView = function () {\r\n var currentView = this.view;\r\n this.toolbarsManager.proxyCall('deactivateButton', currentView.type);\r\n this.unbindViewHandlers(currentView);\r\n currentView.removeElement();\r\n currentView.unsetDate(); // so bindViewHandlers doesn't fire with old values next time\r\n this.view = null;\r\n };\r\n // Destroys the view, including the view object. Then, re-instantiates it and renders it.\r\n // Maintains the same scroll state.\r\n // TODO: maintain any other user-manipulated state.\r\n Calendar.prototype.reinitView = function () {\r\n var oldView = this.view;\r\n var scroll = oldView.queryScroll(); // wouldn't be so complicated if Calendar owned the scroll\r\n this.freezeContentHeight();\r\n this.clearView();\r\n this.calcSize();\r\n this.renderView(oldView.type); // needs the type to freshly render\r\n this.view.applyScroll(scroll);\r\n this.thawContentHeight();\r\n };\r\n // Resizing\r\n // -----------------------------------------------------------------------------------\r\n Calendar.prototype.getSuggestedViewHeight = function () {\r\n if (this.suggestedViewHeight == null) {\r\n this.calcSize();\r\n }\r\n return this.suggestedViewHeight;\r\n };\r\n Calendar.prototype.isHeightAuto = function () {\r\n return this.opt('contentHeight') === 'auto' || this.opt('height') === 'auto';\r\n };\r\n Calendar.prototype.updateViewSize = function (isResize) {\r\n if (isResize === void 0) { isResize = false; }\r\n var view = this.view;\r\n var scroll;\r\n if (!this.ignoreUpdateViewSize && view) {\r\n if (isResize) {\r\n this.calcSize();\r\n scroll = view.queryScroll();\r\n }\r\n this.ignoreUpdateViewSize++;\r\n view.updateSize(this.getSuggestedViewHeight(), this.isHeightAuto(), isResize);\r\n this.ignoreUpdateViewSize--;\r\n if (isResize) {\r\n view.applyScroll(scroll);\r\n }\r\n return true; // signal success\r\n }\r\n };\r\n Calendar.prototype.calcSize = function () {\r\n if (this.elementVisible()) {\r\n this._calcSize();\r\n }\r\n };\r\n Calendar.prototype._calcSize = function () {\r\n var contentHeightInput = this.opt('contentHeight');\r\n var heightInput = this.opt('height');\r\n if (typeof contentHeightInput === 'number') { // exists and not 'auto'\r\n this.suggestedViewHeight = contentHeightInput;\r\n }\r\n else if (typeof contentHeightInput === 'function') { // exists and is a function\r\n this.suggestedViewHeight = contentHeightInput();\r\n }\r\n else if (typeof heightInput === 'number') { // exists and not 'auto'\r\n this.suggestedViewHeight = heightInput - this.queryToolbarsHeight();\r\n }\r\n else if (typeof heightInput === 'function') { // exists and is a function\r\n this.suggestedViewHeight = heightInput() - this.queryToolbarsHeight();\r\n }\r\n else if (heightInput === 'parent') { // set to height of parent element\r\n this.suggestedViewHeight = this.el.parent().height() - this.queryToolbarsHeight();\r\n }\r\n else {\r\n this.suggestedViewHeight = Math.round(this.contentEl.width() /\r\n Math.max(this.opt('aspectRatio'), .5));\r\n }\r\n };\r\n Calendar.prototype.windowResize = function (ev) {\r\n if (\r\n // the purpose: so we don't process jqui \"resize\" events that have bubbled up\r\n // cast to any because .target, which is Element, can't be compared to window for some reason.\r\n ev.target === window &&\r\n this.view &&\r\n this.view.isDatesRendered) {\r\n if (this.updateViewSize(true)) { // isResize=true, returns true on success\r\n this.publiclyTrigger('windowResize', [this.view]);\r\n }\r\n }\r\n };\r\n /* Height \"Freezing\"\r\n -----------------------------------------------------------------------------*/\r\n Calendar.prototype.freezeContentHeight = function () {\r\n if (!(this.freezeContentHeightDepth++)) {\r\n this.forceFreezeContentHeight();\r\n }\r\n };\r\n Calendar.prototype.forceFreezeContentHeight = function () {\r\n this.contentEl.css({\r\n width: '100%',\r\n height: this.contentEl.height(),\r\n overflow: 'hidden'\r\n });\r\n };\r\n Calendar.prototype.thawContentHeight = function () {\r\n this.freezeContentHeightDepth--;\r\n // always bring back to natural height\r\n this.contentEl.css({\r\n width: '',\r\n height: '',\r\n overflow: ''\r\n });\r\n // but if there are future thaws, re-freeze\r\n if (this.freezeContentHeightDepth) {\r\n this.forceFreezeContentHeight();\r\n }\r\n };\r\n // Toolbar\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.initToolbars = function () {\r\n this.header = new Toolbar_1.default(this, this.computeHeaderOptions());\r\n this.footer = new Toolbar_1.default(this, this.computeFooterOptions());\r\n this.toolbarsManager = new Iterator_1.default([this.header, this.footer]);\r\n };\r\n Calendar.prototype.computeHeaderOptions = function () {\r\n return {\r\n extraClasses: 'fc-header-toolbar',\r\n layout: this.opt('header')\r\n };\r\n };\r\n Calendar.prototype.computeFooterOptions = function () {\r\n return {\r\n extraClasses: 'fc-footer-toolbar',\r\n layout: this.opt('footer')\r\n };\r\n };\r\n // can be called repeatedly and Header will rerender\r\n Calendar.prototype.renderHeader = function () {\r\n var header = this.header;\r\n header.setToolbarOptions(this.computeHeaderOptions());\r\n header.render();\r\n if (header.el) {\r\n this.el.prepend(header.el);\r\n }\r\n };\r\n // can be called repeatedly and Footer will rerender\r\n Calendar.prototype.renderFooter = function () {\r\n var footer = this.footer;\r\n footer.setToolbarOptions(this.computeFooterOptions());\r\n footer.render();\r\n if (footer.el) {\r\n this.el.append(footer.el);\r\n }\r\n };\r\n Calendar.prototype.setToolbarsTitle = function (title) {\r\n this.toolbarsManager.proxyCall('updateTitle', title);\r\n };\r\n Calendar.prototype.updateToolbarButtons = function (dateProfile) {\r\n var now = this.getNow();\r\n var view = this.view;\r\n var todayInfo = view.dateProfileGenerator.build(now);\r\n var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile'));\r\n var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile'));\r\n this.toolbarsManager.proxyCall((todayInfo.isValid && !dateProfile.currentUnzonedRange.containsDate(now)) ?\r\n 'enableButton' :\r\n 'disableButton', 'today');\r\n this.toolbarsManager.proxyCall(prevInfo.isValid ?\r\n 'enableButton' :\r\n 'disableButton', 'prev');\r\n this.toolbarsManager.proxyCall(nextInfo.isValid ?\r\n 'enableButton' :\r\n 'disableButton', 'next');\r\n };\r\n Calendar.prototype.queryToolbarsHeight = function () {\r\n return this.toolbarsManager.items.reduce(function (accumulator, toolbar) {\r\n var toolbarHeight = toolbar.el ? toolbar.el.outerHeight(true) : 0; // includes margin\r\n return accumulator + toolbarHeight;\r\n }, 0);\r\n };\r\n // Selection\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // this public method receives start/end dates in any format, with any timezone\r\n Calendar.prototype.select = function (zonedStartInput, zonedEndInput) {\r\n this.view.select(this.buildSelectFootprint.apply(this, arguments));\r\n };\r\n Calendar.prototype.unselect = function () {\r\n if (this.view) {\r\n this.view.unselect();\r\n }\r\n };\r\n // Given arguments to the select method in the API, returns a span (unzoned start/end and other info)\r\n Calendar.prototype.buildSelectFootprint = function (zonedStartInput, zonedEndInput) {\r\n var start = this.moment(zonedStartInput).stripZone();\r\n var end;\r\n if (zonedEndInput) {\r\n end = this.moment(zonedEndInput).stripZone();\r\n }\r\n else if (start.hasTime()) {\r\n end = start.clone().add(this.defaultTimedEventDuration);\r\n }\r\n else {\r\n end = start.clone().add(this.defaultAllDayEventDuration);\r\n }\r\n return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), !start.hasTime());\r\n };\r\n // Date Utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.initMomentInternals = function () {\r\n var _this = this;\r\n this.defaultAllDayEventDuration = moment.duration(this.opt('defaultAllDayEventDuration'));\r\n this.defaultTimedEventDuration = moment.duration(this.opt('defaultTimedEventDuration'));\r\n // Called immediately, and when any of the options change.\r\n // Happens before any internal objects rebuild or rerender, because this is very core.\r\n this.optionsManager.watch('buildingMomentLocale', [\r\n '?locale', '?monthNames', '?monthNamesShort', '?dayNames', '?dayNamesShort',\r\n '?firstDay', '?weekNumberCalculation'\r\n ], function (opts) {\r\n var weekNumberCalculation = opts.weekNumberCalculation;\r\n var firstDay = opts.firstDay;\r\n var _week;\r\n // normalize\r\n if (weekNumberCalculation === 'iso') {\r\n weekNumberCalculation = 'ISO'; // normalize\r\n }\r\n var localeData = Object.create(// make a cheap copy\r\n locale_1.getMomentLocaleData(opts.locale) // will fall back to en\r\n );\r\n if (opts.monthNames) {\r\n localeData._months = opts.monthNames;\r\n }\r\n if (opts.monthNamesShort) {\r\n localeData._monthsShort = opts.monthNamesShort;\r\n }\r\n if (opts.dayNames) {\r\n localeData._weekdays = opts.dayNames;\r\n }\r\n if (opts.dayNamesShort) {\r\n localeData._weekdaysShort = opts.dayNamesShort;\r\n }\r\n if (firstDay == null && weekNumberCalculation === 'ISO') {\r\n firstDay = 1;\r\n }\r\n if (firstDay != null) {\r\n _week = Object.create(localeData._week); // _week: { dow: # }\r\n _week.dow = firstDay;\r\n localeData._week = _week;\r\n }\r\n if ( // whitelist certain kinds of input\r\n weekNumberCalculation === 'ISO' ||\r\n weekNumberCalculation === 'local' ||\r\n typeof weekNumberCalculation === 'function') {\r\n localeData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it\r\n }\r\n _this.localeData = localeData;\r\n // If the internal current date object already exists, move to new locale.\r\n // We do NOT need to do this technique for event dates, because this happens when converting to \"segments\".\r\n if (_this.currentDate) {\r\n _this.localizeMoment(_this.currentDate); // sets to localeData\r\n }\r\n });\r\n };\r\n // Builds a moment using the settings of the current calendar: timezone and locale.\r\n // Accepts anything the vanilla moment() constructor accepts.\r\n Calendar.prototype.moment = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var mom;\r\n if (this.opt('timezone') === 'local') {\r\n mom = moment_ext_1.default.apply(null, args);\r\n // Force the moment to be local, because momentExt doesn't guarantee it.\r\n if (mom.hasTime()) { // don't give ambiguously-timed moments a local zone\r\n mom.local();\r\n }\r\n }\r\n else if (this.opt('timezone') === 'UTC') {\r\n mom = moment_ext_1.default.utc.apply(null, args); // process as UTC\r\n }\r\n else {\r\n mom = moment_ext_1.default.parseZone.apply(null, args); // let the input decide the zone\r\n }\r\n this.localizeMoment(mom); // TODO\r\n return mom;\r\n };\r\n Calendar.prototype.msToMoment = function (ms, forceAllDay) {\r\n var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC\r\n if (forceAllDay) {\r\n mom.stripTime();\r\n }\r\n else {\r\n mom = this.applyTimezone(mom); // may or may not apply locale\r\n }\r\n this.localizeMoment(mom);\r\n return mom;\r\n };\r\n Calendar.prototype.msToUtcMoment = function (ms, forceAllDay) {\r\n var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC\r\n if (forceAllDay) {\r\n mom.stripTime();\r\n }\r\n this.localizeMoment(mom);\r\n return mom;\r\n };\r\n // Updates the given moment's locale settings to the current calendar locale settings.\r\n Calendar.prototype.localizeMoment = function (mom) {\r\n mom._locale = this.localeData;\r\n };\r\n // Returns a boolean about whether or not the calendar knows how to calculate\r\n // the timezone offset of arbitrary dates in the current timezone.\r\n Calendar.prototype.getIsAmbigTimezone = function () {\r\n return this.opt('timezone') !== 'local' && this.opt('timezone') !== 'UTC';\r\n };\r\n // Returns a copy of the given date in the current timezone. Has no effect on dates without times.\r\n Calendar.prototype.applyTimezone = function (date) {\r\n if (!date.hasTime()) {\r\n return date.clone();\r\n }\r\n var zonedDate = this.moment(date.toArray());\r\n var timeAdjust = date.time().asMilliseconds() - zonedDate.time().asMilliseconds();\r\n var adjustedZonedDate;\r\n // Safari sometimes has problems with this coersion when near DST. Adjust if necessary. (bug #2396)\r\n if (timeAdjust) { // is the time result different than expected?\r\n adjustedZonedDate = zonedDate.clone().add(timeAdjust); // add milliseconds\r\n if (date.time().asMilliseconds() - adjustedZonedDate.time().asMilliseconds() === 0) { // does it match perfectly now?\r\n zonedDate = adjustedZonedDate;\r\n }\r\n }\r\n return zonedDate;\r\n };\r\n /*\r\n Assumes the footprint is non-open-ended.\r\n */\r\n Calendar.prototype.footprintToDateProfile = function (componentFootprint, ignoreEnd) {\r\n if (ignoreEnd === void 0) { ignoreEnd = false; }\r\n var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs);\r\n var end;\r\n if (!ignoreEnd) {\r\n end = moment_ext_1.default.utc(componentFootprint.unzonedRange.endMs);\r\n }\r\n if (componentFootprint.isAllDay) {\r\n start.stripTime();\r\n if (end) {\r\n end.stripTime();\r\n }\r\n }\r\n else {\r\n start = this.applyTimezone(start);\r\n if (end) {\r\n end = this.applyTimezone(end);\r\n }\r\n }\r\n this.localizeMoment(start);\r\n if (end) {\r\n this.localizeMoment(end);\r\n }\r\n return new EventDateProfile_1.default(start, end, this);\r\n };\r\n // Returns a moment for the current date, as defined by the client's computer or from the `now` option.\r\n // Will return an moment with an ambiguous timezone.\r\n Calendar.prototype.getNow = function () {\r\n var now = this.opt('now');\r\n if (typeof now === 'function') {\r\n now = now();\r\n }\r\n return this.moment(now).stripZone();\r\n };\r\n // Produces a human-readable string for the given duration.\r\n // Side-effect: changes the locale of the given duration.\r\n Calendar.prototype.humanizeDuration = function (duration) {\r\n return duration.locale(this.opt('locale')).humanize();\r\n };\r\n // will return `null` if invalid range\r\n Calendar.prototype.parseUnzonedRange = function (rangeInput) {\r\n var start = null;\r\n var end = null;\r\n if (rangeInput.start) {\r\n start = this.moment(rangeInput.start).stripZone();\r\n }\r\n if (rangeInput.end) {\r\n end = this.moment(rangeInput.end).stripZone();\r\n }\r\n if (!start && !end) {\r\n return null;\r\n }\r\n if (start && end && end.isBefore(start)) {\r\n return null;\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n // Event-Date Utilities\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.initEventManager = function () {\r\n var _this = this;\r\n var eventManager = new EventManager_1.default(this);\r\n var rawSources = this.opt('eventSources') || [];\r\n var singleRawSource = this.opt('events');\r\n this.eventManager = eventManager;\r\n if (singleRawSource) {\r\n rawSources.unshift(singleRawSource);\r\n }\r\n eventManager.on('release', function (eventsPayload) {\r\n _this.trigger('eventsReset', eventsPayload);\r\n });\r\n eventManager.freeze();\r\n rawSources.forEach(function (rawSource) {\r\n var source = EventSourceParser_1.default.parse(rawSource, _this);\r\n if (source) {\r\n eventManager.addSource(source);\r\n }\r\n });\r\n eventManager.thaw();\r\n };\r\n Calendar.prototype.requestEvents = function (start, end) {\r\n return this.eventManager.requestEvents(start, end, this.opt('timezone'), !this.opt('lazyFetching'));\r\n };\r\n // Get an event's normalized end date. If not present, calculate it from the defaults.\r\n Calendar.prototype.getEventEnd = function (event) {\r\n if (event.end) {\r\n return event.end.clone();\r\n }\r\n else {\r\n return this.getDefaultEventEnd(event.allDay, event.start);\r\n }\r\n };\r\n // Given an event's allDay status and start date, return what its fallback end date should be.\r\n // TODO: rename to computeDefaultEventEnd\r\n Calendar.prototype.getDefaultEventEnd = function (allDay, zonedStart) {\r\n var end = zonedStart.clone();\r\n if (allDay) {\r\n end.stripTime().add(this.defaultAllDayEventDuration);\r\n }\r\n else {\r\n end.add(this.defaultTimedEventDuration);\r\n }\r\n if (this.getIsAmbigTimezone()) {\r\n end.stripZone(); // we don't know what the tzo should be\r\n }\r\n return end;\r\n };\r\n // Public Events API\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.rerenderEvents = function () {\r\n this.view.flash('displayingEvents');\r\n };\r\n Calendar.prototype.refetchEvents = function () {\r\n this.eventManager.refetchAllSources();\r\n };\r\n Calendar.prototype.renderEvents = function (eventInputs, isSticky) {\r\n this.eventManager.freeze();\r\n for (var i = 0; i < eventInputs.length; i++) {\r\n this.renderEvent(eventInputs[i], isSticky);\r\n }\r\n this.eventManager.thaw();\r\n };\r\n Calendar.prototype.renderEvent = function (eventInput, isSticky) {\r\n if (isSticky === void 0) { isSticky = false; }\r\n var eventManager = this.eventManager;\r\n var eventDef = EventDefParser_1.default.parse(eventInput, eventInput.source || eventManager.stickySource);\r\n if (eventDef) {\r\n eventManager.addEventDef(eventDef, isSticky);\r\n }\r\n };\r\n // legacyQuery operates on legacy event instance objects\r\n Calendar.prototype.removeEvents = function (legacyQuery) {\r\n var eventManager = this.eventManager;\r\n var legacyInstances = [];\r\n var idMap = {};\r\n var eventDef;\r\n var i;\r\n if (legacyQuery == null) { // shortcut for removing all\r\n eventManager.removeAllEventDefs(); // persist=true\r\n }\r\n else {\r\n eventManager.getEventInstances().forEach(function (eventInstance) {\r\n legacyInstances.push(eventInstance.toLegacy());\r\n });\r\n legacyInstances = filterLegacyEventInstances(legacyInstances, legacyQuery);\r\n // compute unique IDs\r\n for (i = 0; i < legacyInstances.length; i++) {\r\n eventDef = this.eventManager.getEventDefByUid(legacyInstances[i]._id);\r\n idMap[eventDef.id] = true;\r\n }\r\n eventManager.freeze();\r\n for (i in idMap) { // reuse `i` as an \"id\"\r\n eventManager.removeEventDefsById(i); // persist=true\r\n }\r\n eventManager.thaw();\r\n }\r\n };\r\n // legacyQuery operates on legacy event instance objects\r\n Calendar.prototype.clientEvents = function (legacyQuery) {\r\n var legacyEventInstances = [];\r\n this.eventManager.getEventInstances().forEach(function (eventInstance) {\r\n legacyEventInstances.push(eventInstance.toLegacy());\r\n });\r\n return filterLegacyEventInstances(legacyEventInstances, legacyQuery);\r\n };\r\n Calendar.prototype.updateEvents = function (eventPropsArray) {\r\n this.eventManager.freeze();\r\n for (var i = 0; i < eventPropsArray.length; i++) {\r\n this.updateEvent(eventPropsArray[i]);\r\n }\r\n this.eventManager.thaw();\r\n };\r\n Calendar.prototype.updateEvent = function (eventProps) {\r\n var eventDef = this.eventManager.getEventDefByUid(eventProps._id);\r\n var eventInstance;\r\n var eventDefMutation;\r\n if (eventDef instanceof SingleEventDef_1.default) {\r\n eventInstance = eventDef.buildInstance();\r\n eventDefMutation = EventDefMutation_1.default.createFromRawProps(eventInstance, eventProps, // raw props\r\n null // largeUnit -- who uses it?\r\n );\r\n this.eventManager.mutateEventsWithId(eventDef.id, eventDefMutation); // will release\r\n }\r\n };\r\n // Public Event Sources API\r\n // ------------------------------------------------------------------------------------\r\n Calendar.prototype.getEventSources = function () {\r\n return this.eventManager.otherSources.slice(); // clone\r\n };\r\n Calendar.prototype.getEventSourceById = function (id) {\r\n return this.eventManager.getSourceById(EventSource_1.default.normalizeId(id));\r\n };\r\n Calendar.prototype.addEventSource = function (sourceInput) {\r\n var source = EventSourceParser_1.default.parse(sourceInput, this);\r\n if (source) {\r\n this.eventManager.addSource(source);\r\n }\r\n };\r\n Calendar.prototype.removeEventSources = function (sourceMultiQuery) {\r\n var eventManager = this.eventManager;\r\n var sources;\r\n var i;\r\n if (sourceMultiQuery == null) {\r\n this.eventManager.removeAllSources();\r\n }\r\n else {\r\n sources = eventManager.multiQuerySources(sourceMultiQuery);\r\n eventManager.freeze();\r\n for (i = 0; i < sources.length; i++) {\r\n eventManager.removeSource(sources[i]);\r\n }\r\n eventManager.thaw();\r\n }\r\n };\r\n Calendar.prototype.removeEventSource = function (sourceQuery) {\r\n var eventManager = this.eventManager;\r\n var sources = eventManager.querySources(sourceQuery);\r\n var i;\r\n eventManager.freeze();\r\n for (i = 0; i < sources.length; i++) {\r\n eventManager.removeSource(sources[i]);\r\n }\r\n eventManager.thaw();\r\n };\r\n Calendar.prototype.refetchEventSources = function (sourceMultiQuery) {\r\n var eventManager = this.eventManager;\r\n var sources = eventManager.multiQuerySources(sourceMultiQuery);\r\n var i;\r\n eventManager.freeze();\r\n for (i = 0; i < sources.length; i++) {\r\n eventManager.refetchSource(sources[i]);\r\n }\r\n eventManager.thaw();\r\n };\r\n // not for internal use. use options module directly instead.\r\n Calendar.defaults = options_1.globalDefaults;\r\n Calendar.englishDefaults = options_1.englishDefaults;\r\n Calendar.rtlDefaults = options_1.rtlDefaults;\r\n return Calendar;\r\n}());\r\nexports.default = Calendar;\r\nEmitterMixin_1.default.mixInto(Calendar);\r\nListenerMixin_1.default.mixInto(Calendar);\r\nfunction filterLegacyEventInstances(legacyEventInstances, legacyQuery) {\r\n if (legacyQuery == null) {\r\n return legacyEventInstances;\r\n }\r\n else if ($.isFunction(legacyQuery)) {\r\n return legacyEventInstances.filter(legacyQuery);\r\n }\r\n else { // an event ID\r\n legacyQuery += ''; // normalize to string\r\n return legacyEventInstances.filter(function (legacyEventInstance) {\r\n // soft comparison because id not be normalized to string\r\n // tslint:disable-next-line\r\n return legacyEventInstance.id == legacyQuery ||\r\n legacyEventInstance._id === legacyQuery; // can specify internal id, but must exactly match\r\n });\r\n }\r\n}\r\n\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar exportHooks = __webpack_require__(18);\r\nvar util_1 = __webpack_require__(4);\r\nvar moment_ext_1 = __webpack_require__(11);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar ExternalDropping = /** @class */ (function (_super) {\r\n tslib_1.__extends(ExternalDropping, _super);\r\n function ExternalDropping() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.isDragging = false; // jqui-dragging an external element? boolean\r\n return _this;\r\n }\r\n /*\r\n component impements:\r\n - eventRangesToEventFootprints\r\n - isEventInstanceGroupAllowed\r\n - isExternalInstanceGroupAllowed\r\n - renderDrag\r\n - unrenderDrag\r\n */\r\n ExternalDropping.prototype.end = function () {\r\n if (this.dragListener) {\r\n this.dragListener.endInteraction();\r\n }\r\n };\r\n ExternalDropping.prototype.bindToDocument = function () {\r\n this.listenTo($(document), {\r\n dragstart: this.handleDragStart,\r\n sortstart: this.handleDragStart // jqui\r\n });\r\n };\r\n ExternalDropping.prototype.unbindFromDocument = function () {\r\n this.stopListeningTo($(document));\r\n };\r\n // Called when a jQuery UI drag is initiated anywhere in the DOM\r\n ExternalDropping.prototype.handleDragStart = function (ev, ui) {\r\n var el;\r\n var accept;\r\n if (this.opt('droppable')) { // only listen if this setting is on\r\n el = $((ui ? ui.item : null) || ev.target);\r\n // Test that the dragged element passes the dropAccept selector or filter function.\r\n // FYI, the default is \"*\" (matches all)\r\n accept = this.opt('dropAccept');\r\n if ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) {\r\n if (!this.isDragging) { // prevent double-listening if fired twice\r\n this.listenToExternalDrag(el, ev, ui);\r\n }\r\n }\r\n }\r\n };\r\n // Called when a jQuery UI drag starts and it needs to be monitored for dropping\r\n ExternalDropping.prototype.listenToExternalDrag = function (el, ev, ui) {\r\n var _this = this;\r\n var component = this.component;\r\n var view = this.view;\r\n var meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create\r\n var singleEventDef; // a null value signals an unsuccessful drag\r\n // listener that tracks mouse movement over date-associated pixel regions\r\n var dragListener = this.dragListener = new HitDragListener_1.default(component, {\r\n interactionStart: function () {\r\n _this.isDragging = true;\r\n },\r\n hitOver: function (hit) {\r\n var isAllowed = true;\r\n var hitFootprint = hit.component.getSafeHitFootprint(hit); // hit might not belong to this grid\r\n var mutatedEventInstanceGroup;\r\n if (hitFootprint) {\r\n singleEventDef = _this.computeExternalDrop(hitFootprint, meta);\r\n if (singleEventDef) {\r\n mutatedEventInstanceGroup = new EventInstanceGroup_1.default(singleEventDef.buildInstances());\r\n isAllowed = meta.eventProps ? // isEvent?\r\n component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup) :\r\n component.isExternalInstanceGroupAllowed(mutatedEventInstanceGroup);\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n if (!isAllowed) {\r\n singleEventDef = null;\r\n util_1.disableCursor();\r\n }\r\n if (singleEventDef) {\r\n component.renderDrag(// called without a seg parameter\r\n component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, view.calendar)));\r\n }\r\n },\r\n hitOut: function () {\r\n singleEventDef = null; // signal unsuccessful\r\n },\r\n hitDone: function () {\r\n util_1.enableCursor();\r\n component.unrenderDrag();\r\n },\r\n interactionEnd: function (ev) {\r\n if (singleEventDef) { // element was dropped on a valid hit\r\n view.reportExternalDrop(singleEventDef, Boolean(meta.eventProps), // isEvent\r\n Boolean(meta.stick), // isSticky\r\n el, ev, ui);\r\n }\r\n _this.isDragging = false;\r\n _this.dragListener = null;\r\n }\r\n });\r\n dragListener.startDrag(ev); // start listening immediately\r\n };\r\n // Given a hit to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object),\r\n // returns the zoned start/end dates for the event that would result from the hypothetical drop. end might be null.\r\n // Returning a null value signals an invalid drop hit.\r\n // DOES NOT consider overlap/constraint.\r\n // Assumes both footprints are non-open-ended.\r\n ExternalDropping.prototype.computeExternalDrop = function (componentFootprint, meta) {\r\n var calendar = this.view.calendar;\r\n var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs).stripZone();\r\n var end;\r\n var eventDef;\r\n if (componentFootprint.isAllDay) {\r\n // if dropped on an all-day span, and element's metadata specified a time, set it\r\n if (meta.startTime) {\r\n start.time(meta.startTime);\r\n }\r\n else {\r\n start.stripTime();\r\n }\r\n }\r\n if (meta.duration) {\r\n end = start.clone().add(meta.duration);\r\n }\r\n start = calendar.applyTimezone(start);\r\n if (end) {\r\n end = calendar.applyTimezone(end);\r\n }\r\n eventDef = SingleEventDef_1.default.parse($.extend({}, meta.eventProps, {\r\n start: start,\r\n end: end\r\n }), new EventSource_1.default(calendar));\r\n return eventDef;\r\n };\r\n return ExternalDropping;\r\n}(Interaction_1.default));\r\nexports.default = ExternalDropping;\r\nListenerMixin_1.default.mixInto(ExternalDropping);\r\n/* External-Dragging-Element Data\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Require all HTML5 data-* attributes used by FullCalendar to have this prefix.\r\n// A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event.\r\nexportHooks.dataAttrPrefix = '';\r\n// Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure\r\n// to be used for Event Object creation.\r\n// A defined `.eventProps`, even when empty, indicates that an event should be created.\r\nfunction getDraggedElMeta(el) {\r\n var prefix = exportHooks.dataAttrPrefix;\r\n var eventProps; // properties for creating the event, not related to date/time\r\n var startTime; // a Duration\r\n var duration;\r\n var stick;\r\n if (prefix) {\r\n prefix += '-';\r\n }\r\n eventProps = el.data(prefix + 'event') || null;\r\n if (eventProps) {\r\n if (typeof eventProps === 'object') {\r\n eventProps = $.extend({}, eventProps); // make a copy\r\n }\r\n else { // something like 1 or true. still signal event creation\r\n eventProps = {};\r\n }\r\n // pluck special-cased date/time properties\r\n startTime = eventProps.start;\r\n if (startTime == null) {\r\n startTime = eventProps.time;\r\n } // accept 'time' as well\r\n duration = eventProps.duration;\r\n stick = eventProps.stick;\r\n delete eventProps.start;\r\n delete eventProps.time;\r\n delete eventProps.duration;\r\n delete eventProps.stick;\r\n }\r\n // fallback to standalone attribute values for each of the date/time properties\r\n if (startTime == null) {\r\n startTime = el.data(prefix + 'start');\r\n }\r\n if (startTime == null) {\r\n startTime = el.data(prefix + 'time');\r\n } // accept 'time' as well\r\n if (duration == null) {\r\n duration = el.data(prefix + 'duration');\r\n }\r\n if (stick == null) {\r\n stick = el.data(prefix + 'stick');\r\n }\r\n // massage into correct data types\r\n startTime = startTime != null ? moment.duration(startTime) : null;\r\n duration = duration != null ? moment.duration(duration) : null;\r\n stick = Boolean(stick);\r\n return { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick };\r\n}\r\n\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventDefMutation_1 = __webpack_require__(39);\r\nvar EventDefDateMutation_1 = __webpack_require__(40);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar EventResizing = /** @class */ (function (_super) {\r\n tslib_1.__extends(EventResizing, _super);\r\n /*\r\n component impements:\r\n - bindSegHandlerToEl\r\n - publiclyTrigger\r\n - diffDates\r\n - eventRangesToEventFootprints\r\n - isEventInstanceGroupAllowed\r\n - getSafeHitFootprint\r\n */\r\n function EventResizing(component, eventPointing) {\r\n var _this = _super.call(this, component) || this;\r\n _this.isResizing = false;\r\n _this.eventPointing = eventPointing;\r\n return _this;\r\n }\r\n EventResizing.prototype.end = function () {\r\n if (this.dragListener) {\r\n this.dragListener.endInteraction();\r\n }\r\n };\r\n EventResizing.prototype.bindToEl = function (el) {\r\n var component = this.component;\r\n component.bindSegHandlerToEl(el, 'mousedown', this.handleMouseDown.bind(this));\r\n component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this));\r\n };\r\n EventResizing.prototype.handleMouseDown = function (seg, ev) {\r\n if (this.component.canStartResize(seg, ev)) {\r\n this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer'))\r\n .startInteraction(ev, { distance: 5 });\r\n }\r\n };\r\n EventResizing.prototype.handleTouchStart = function (seg, ev) {\r\n if (this.component.canStartResize(seg, ev)) {\r\n this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer'))\r\n .startInteraction(ev);\r\n }\r\n };\r\n // Creates a listener that tracks the user as they resize an event segment.\r\n // Generic enough to work with any type of Grid.\r\n EventResizing.prototype.buildDragListener = function (seg, isStart) {\r\n var _this = this;\r\n var component = this.component;\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var eventManager = calendar.eventManager;\r\n var el = seg.el;\r\n var eventDef = seg.footprint.eventDef;\r\n var eventInstance = seg.footprint.eventInstance;\r\n var isDragging;\r\n var resizeMutation; // zoned event date properties. falsy if invalid resize\r\n // Tracks mouse movement over the *grid's* coordinate map\r\n var dragListener = this.dragListener = new HitDragListener_1.default(component, {\r\n scroll: this.opt('dragScroll'),\r\n subjectEl: el,\r\n interactionStart: function () {\r\n isDragging = false;\r\n },\r\n dragStart: function (ev) {\r\n isDragging = true;\r\n // ensure a mouseout on the manipulated event has been reported\r\n _this.eventPointing.handleMouseout(seg, ev);\r\n _this.segResizeStart(seg, ev);\r\n },\r\n hitOver: function (hit, isOrig, origHit) {\r\n var isAllowed = true;\r\n var origHitFootprint = component.getSafeHitFootprint(origHit);\r\n var hitFootprint = component.getSafeHitFootprint(hit);\r\n var mutatedEventInstanceGroup;\r\n if (origHitFootprint && hitFootprint) {\r\n resizeMutation = isStart ?\r\n _this.computeEventStartResizeMutation(origHitFootprint, hitFootprint, seg.footprint) :\r\n _this.computeEventEndResizeMutation(origHitFootprint, hitFootprint, seg.footprint);\r\n if (resizeMutation) {\r\n mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, resizeMutation);\r\n isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup);\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n if (!isAllowed) {\r\n resizeMutation = null;\r\n util_1.disableCursor();\r\n }\r\n else if (resizeMutation.isEmpty()) {\r\n // no change. (FYI, event dates might have zones)\r\n resizeMutation = null;\r\n }\r\n if (resizeMutation) {\r\n view.hideEventsWithId(seg.footprint.eventDef.id);\r\n view.renderEventResize(component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg);\r\n }\r\n },\r\n hitOut: function () {\r\n resizeMutation = null;\r\n },\r\n hitDone: function () {\r\n view.unrenderEventResize(seg);\r\n view.showEventsWithId(seg.footprint.eventDef.id);\r\n util_1.enableCursor();\r\n },\r\n interactionEnd: function (ev) {\r\n if (isDragging) {\r\n _this.segResizeStop(seg, ev);\r\n }\r\n if (resizeMutation) { // valid date to resize to?\r\n // no need to re-show original, will rerender all anyways. esp important if eventRenderWait\r\n view.reportEventResize(eventInstance, resizeMutation, el, ev);\r\n }\r\n _this.dragListener = null;\r\n }\r\n });\r\n return dragListener;\r\n };\r\n // Called before event segment resizing starts\r\n EventResizing.prototype.segResizeStart = function (seg, ev) {\r\n this.isResizing = true;\r\n this.component.publiclyTrigger('eventResizeStart', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev,\r\n {},\r\n this.view\r\n ]\r\n });\r\n };\r\n // Called after event segment resizing stops\r\n EventResizing.prototype.segResizeStop = function (seg, ev) {\r\n this.isResizing = false;\r\n this.component.publiclyTrigger('eventResizeStop', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev,\r\n {},\r\n this.view\r\n ]\r\n });\r\n };\r\n // Returns new date-information for an event segment being resized from its start\r\n EventResizing.prototype.computeEventStartResizeMutation = function (startFootprint, endFootprint, origEventFootprint) {\r\n var origRange = origEventFootprint.componentFootprint.unzonedRange;\r\n var startDelta = this.component.diffDates(endFootprint.unzonedRange.getStart(), startFootprint.unzonedRange.getStart());\r\n var dateMutation;\r\n var eventDefMutation;\r\n if (origRange.getStart().add(startDelta) < origRange.getEnd()) {\r\n dateMutation = new EventDefDateMutation_1.default();\r\n dateMutation.setStartDelta(startDelta);\r\n eventDefMutation = new EventDefMutation_1.default();\r\n eventDefMutation.setDateMutation(dateMutation);\r\n return eventDefMutation;\r\n }\r\n return false;\r\n };\r\n // Returns new date-information for an event segment being resized from its end\r\n EventResizing.prototype.computeEventEndResizeMutation = function (startFootprint, endFootprint, origEventFootprint) {\r\n var origRange = origEventFootprint.componentFootprint.unzonedRange;\r\n var endDelta = this.component.diffDates(endFootprint.unzonedRange.getEnd(), startFootprint.unzonedRange.getEnd());\r\n var dateMutation;\r\n var eventDefMutation;\r\n if (origRange.getEnd().add(endDelta) > origRange.getStart()) {\r\n dateMutation = new EventDefDateMutation_1.default();\r\n dateMutation.setEndDelta(endDelta);\r\n eventDefMutation = new EventDefMutation_1.default();\r\n eventDefMutation.setDateMutation(dateMutation);\r\n return eventDefMutation;\r\n }\r\n return false;\r\n };\r\n return EventResizing;\r\n}(Interaction_1.default));\r\nexports.default = EventResizing;\r\n\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventDefMutation_1 = __webpack_require__(39);\r\nvar EventDefDateMutation_1 = __webpack_require__(40);\r\nvar DragListener_1 = __webpack_require__(59);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar MouseFollower_1 = __webpack_require__(226);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar EventDragging = /** @class */ (function (_super) {\r\n tslib_1.__extends(EventDragging, _super);\r\n /*\r\n component implements:\r\n - bindSegHandlerToEl\r\n - publiclyTrigger\r\n - diffDates\r\n - eventRangesToEventFootprints\r\n - isEventInstanceGroupAllowed\r\n */\r\n function EventDragging(component, eventPointing) {\r\n var _this = _super.call(this, component) || this;\r\n _this.isDragging = false;\r\n _this.eventPointing = eventPointing;\r\n return _this;\r\n }\r\n EventDragging.prototype.end = function () {\r\n if (this.dragListener) {\r\n this.dragListener.endInteraction();\r\n }\r\n };\r\n EventDragging.prototype.getSelectionDelay = function () {\r\n var delay = this.opt('eventLongPressDelay');\r\n if (delay == null) {\r\n delay = this.opt('longPressDelay'); // fallback\r\n }\r\n return delay;\r\n };\r\n EventDragging.prototype.bindToEl = function (el) {\r\n var component = this.component;\r\n component.bindSegHandlerToEl(el, 'mousedown', this.handleMousedown.bind(this));\r\n component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this));\r\n };\r\n EventDragging.prototype.handleMousedown = function (seg, ev) {\r\n if (!this.component.shouldIgnoreMouse() &&\r\n this.component.canStartDrag(seg, ev)) {\r\n this.buildDragListener(seg).startInteraction(ev, { distance: 5 });\r\n }\r\n };\r\n EventDragging.prototype.handleTouchStart = function (seg, ev) {\r\n var component = this.component;\r\n var settings = {\r\n delay: this.view.isEventDefSelected(seg.footprint.eventDef) ? // already selected?\r\n 0 : this.getSelectionDelay()\r\n };\r\n if (component.canStartDrag(seg, ev)) {\r\n this.buildDragListener(seg).startInteraction(ev, settings);\r\n }\r\n else if (component.canStartSelection(seg, ev)) {\r\n this.buildSelectListener(seg).startInteraction(ev, settings);\r\n }\r\n };\r\n // seg isn't draggable, but let's use a generic DragListener\r\n // simply for the delay, so it can be selected.\r\n // Has side effect of setting/unsetting `dragListener`\r\n EventDragging.prototype.buildSelectListener = function (seg) {\r\n var _this = this;\r\n var view = this.view;\r\n var eventDef = seg.footprint.eventDef;\r\n var eventInstance = seg.footprint.eventInstance; // null for inverse-background events\r\n if (this.dragListener) {\r\n return this.dragListener;\r\n }\r\n var dragListener = this.dragListener = new DragListener_1.default({\r\n dragStart: function (ev) {\r\n if (dragListener.isTouch &&\r\n !view.isEventDefSelected(eventDef) &&\r\n eventInstance) {\r\n // if not previously selected, will fire after a delay. then, select the event\r\n view.selectEventInstance(eventInstance);\r\n }\r\n },\r\n interactionEnd: function (ev) {\r\n _this.dragListener = null;\r\n }\r\n });\r\n return dragListener;\r\n };\r\n // Builds a listener that will track user-dragging on an event segment.\r\n // Generic enough to work with any type of Grid.\r\n // Has side effect of setting/unsetting `dragListener`\r\n EventDragging.prototype.buildDragListener = function (seg) {\r\n var _this = this;\r\n var component = this.component;\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var eventManager = calendar.eventManager;\r\n var el = seg.el;\r\n var eventDef = seg.footprint.eventDef;\r\n var eventInstance = seg.footprint.eventInstance; // null for inverse-background events\r\n var isDragging;\r\n var mouseFollower; // A clone of the original element that will move with the mouse\r\n var eventDefMutation;\r\n if (this.dragListener) {\r\n return this.dragListener;\r\n }\r\n // Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents\r\n // of the view.\r\n var dragListener = this.dragListener = new HitDragListener_1.default(view, {\r\n scroll: this.opt('dragScroll'),\r\n subjectEl: el,\r\n subjectCenter: true,\r\n interactionStart: function (ev) {\r\n seg.component = component; // for renderDrag\r\n isDragging = false;\r\n mouseFollower = new MouseFollower_1.default(seg.el, {\r\n additionalClass: 'fc-dragging',\r\n parentEl: view.el,\r\n opacity: dragListener.isTouch ? null : _this.opt('dragOpacity'),\r\n revertDuration: _this.opt('dragRevertDuration'),\r\n zIndex: 2 // one above the .fc-view\r\n });\r\n mouseFollower.hide(); // don't show until we know this is a real drag\r\n mouseFollower.start(ev);\r\n },\r\n dragStart: function (ev) {\r\n if (dragListener.isTouch &&\r\n !view.isEventDefSelected(eventDef) &&\r\n eventInstance) {\r\n // if not previously selected, will fire after a delay. then, select the event\r\n view.selectEventInstance(eventInstance);\r\n }\r\n isDragging = true;\r\n // ensure a mouseout on the manipulated event has been reported\r\n _this.eventPointing.handleMouseout(seg, ev);\r\n _this.segDragStart(seg, ev);\r\n view.hideEventsWithId(seg.footprint.eventDef.id);\r\n },\r\n hitOver: function (hit, isOrig, origHit) {\r\n var isAllowed = true;\r\n var origFootprint;\r\n var footprint;\r\n var mutatedEventInstanceGroup;\r\n // starting hit could be forced (DayGrid.limit)\r\n if (seg.hit) {\r\n origHit = seg.hit;\r\n }\r\n // hit might not belong to this grid, so query origin grid\r\n origFootprint = origHit.component.getSafeHitFootprint(origHit);\r\n footprint = hit.component.getSafeHitFootprint(hit);\r\n if (origFootprint && footprint) {\r\n eventDefMutation = _this.computeEventDropMutation(origFootprint, footprint, eventDef);\r\n if (eventDefMutation) {\r\n mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, eventDefMutation);\r\n isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup);\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n if (!isAllowed) {\r\n eventDefMutation = null;\r\n util_1.disableCursor();\r\n }\r\n // if a valid drop location, have the subclass render a visual indication\r\n if (eventDefMutation &&\r\n view.renderDrag(// truthy if rendered something\r\n component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg, dragListener.isTouch)) {\r\n mouseFollower.hide(); // if the subclass is already using a mock event \"helper\", hide our own\r\n }\r\n else {\r\n mouseFollower.show(); // otherwise, have the helper follow the mouse (no snapping)\r\n }\r\n if (isOrig) {\r\n // needs to have moved hits to be a valid drop\r\n eventDefMutation = null;\r\n }\r\n },\r\n hitOut: function () {\r\n view.unrenderDrag(seg); // unrender whatever was done in renderDrag\r\n mouseFollower.show(); // show in case we are moving out of all hits\r\n eventDefMutation = null;\r\n },\r\n hitDone: function () {\r\n util_1.enableCursor();\r\n },\r\n interactionEnd: function (ev) {\r\n delete seg.component; // prevent side effects\r\n // do revert animation if hasn't changed. calls a callback when finished (whether animation or not)\r\n mouseFollower.stop(!eventDefMutation, function () {\r\n if (isDragging) {\r\n view.unrenderDrag(seg);\r\n _this.segDragStop(seg, ev);\r\n }\r\n view.showEventsWithId(seg.footprint.eventDef.id);\r\n if (eventDefMutation) {\r\n // no need to re-show original, will rerender all anyways. esp important if eventRenderWait\r\n view.reportEventDrop(eventInstance, eventDefMutation, el, ev);\r\n }\r\n });\r\n _this.dragListener = null;\r\n }\r\n });\r\n return dragListener;\r\n };\r\n // Called before event segment dragging starts\r\n EventDragging.prototype.segDragStart = function (seg, ev) {\r\n this.isDragging = true;\r\n this.component.publiclyTrigger('eventDragStart', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev,\r\n {},\r\n this.view\r\n ]\r\n });\r\n };\r\n // Called after event segment dragging stops\r\n EventDragging.prototype.segDragStop = function (seg, ev) {\r\n this.isDragging = false;\r\n this.component.publiclyTrigger('eventDragStop', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev,\r\n {},\r\n this.view\r\n ]\r\n });\r\n };\r\n // DOES NOT consider overlap/constraint\r\n EventDragging.prototype.computeEventDropMutation = function (startFootprint, endFootprint, eventDef) {\r\n var eventDefMutation = new EventDefMutation_1.default();\r\n eventDefMutation.setDateMutation(this.computeEventDateMutation(startFootprint, endFootprint));\r\n return eventDefMutation;\r\n };\r\n EventDragging.prototype.computeEventDateMutation = function (startFootprint, endFootprint) {\r\n var date0 = startFootprint.unzonedRange.getStart();\r\n var date1 = endFootprint.unzonedRange.getStart();\r\n var clearEnd = false;\r\n var forceTimed = false;\r\n var forceAllDay = false;\r\n var dateDelta;\r\n var dateMutation;\r\n if (startFootprint.isAllDay !== endFootprint.isAllDay) {\r\n clearEnd = true;\r\n if (endFootprint.isAllDay) {\r\n forceAllDay = true;\r\n date0.stripTime();\r\n }\r\n else {\r\n forceTimed = true;\r\n }\r\n }\r\n dateDelta = this.component.diffDates(date1, date0);\r\n dateMutation = new EventDefDateMutation_1.default();\r\n dateMutation.clearEnd = clearEnd;\r\n dateMutation.forceTimed = forceTimed;\r\n dateMutation.forceAllDay = forceAllDay;\r\n dateMutation.setDateDelta(dateDelta);\r\n return dateMutation;\r\n };\r\n return EventDragging;\r\n}(Interaction_1.default));\r\nexports.default = EventDragging;\r\n\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar DateSelecting = /** @class */ (function (_super) {\r\n tslib_1.__extends(DateSelecting, _super);\r\n /*\r\n component must implement:\r\n - bindDateHandlerToEl\r\n - getSafeHitFootprint\r\n - renderHighlight\r\n - unrenderHighlight\r\n */\r\n function DateSelecting(component) {\r\n var _this = _super.call(this, component) || this;\r\n _this.dragListener = _this.buildDragListener();\r\n return _this;\r\n }\r\n DateSelecting.prototype.end = function () {\r\n this.dragListener.endInteraction();\r\n };\r\n DateSelecting.prototype.getDelay = function () {\r\n var delay = this.opt('selectLongPressDelay');\r\n if (delay == null) {\r\n delay = this.opt('longPressDelay'); // fallback\r\n }\r\n return delay;\r\n };\r\n DateSelecting.prototype.bindToEl = function (el) {\r\n var _this = this;\r\n var component = this.component;\r\n var dragListener = this.dragListener;\r\n component.bindDateHandlerToEl(el, 'mousedown', function (ev) {\r\n if (_this.opt('selectable') && !component.shouldIgnoreMouse()) {\r\n dragListener.startInteraction(ev, {\r\n distance: _this.opt('selectMinDistance')\r\n });\r\n }\r\n });\r\n component.bindDateHandlerToEl(el, 'touchstart', function (ev) {\r\n if (_this.opt('selectable') && !component.shouldIgnoreTouch()) {\r\n dragListener.startInteraction(ev, {\r\n delay: _this.getDelay()\r\n });\r\n }\r\n });\r\n util_1.preventSelection(el);\r\n };\r\n // Creates a listener that tracks the user's drag across day elements, for day selecting.\r\n DateSelecting.prototype.buildDragListener = function () {\r\n var _this = this;\r\n var component = this.component;\r\n var selectionFootprint; // null if invalid selection\r\n var dragListener = new HitDragListener_1.default(component, {\r\n scroll: this.opt('dragScroll'),\r\n interactionStart: function () {\r\n selectionFootprint = null;\r\n },\r\n dragStart: function (ev) {\r\n _this.view.unselect(ev); // since we could be rendering a new selection, we want to clear any old one\r\n },\r\n hitOver: function (hit, isOrig, origHit) {\r\n var origHitFootprint;\r\n var hitFootprint;\r\n if (origHit) { // click needs to have started on a hit\r\n origHitFootprint = component.getSafeHitFootprint(origHit);\r\n hitFootprint = component.getSafeHitFootprint(hit);\r\n if (origHitFootprint && hitFootprint) {\r\n selectionFootprint = _this.computeSelection(origHitFootprint, hitFootprint);\r\n }\r\n else {\r\n selectionFootprint = null;\r\n }\r\n if (selectionFootprint) {\r\n component.renderSelectionFootprint(selectionFootprint);\r\n }\r\n else if (selectionFootprint === false) {\r\n util_1.disableCursor();\r\n }\r\n }\r\n },\r\n hitOut: function () {\r\n selectionFootprint = null;\r\n component.unrenderSelection();\r\n },\r\n hitDone: function () {\r\n util_1.enableCursor();\r\n },\r\n interactionEnd: function (ev, isCancelled) {\r\n if (!isCancelled && selectionFootprint) {\r\n // the selection will already have been rendered. just report it\r\n _this.view.reportSelection(selectionFootprint, ev);\r\n }\r\n }\r\n });\r\n return dragListener;\r\n };\r\n // Given the first and last date-spans of a selection, returns another date-span object.\r\n // Subclasses can override and provide additional data in the span object. Will be passed to renderSelectionFootprint().\r\n // Will return false if the selection is invalid and this should be indicated to the user.\r\n // Will return null/undefined if a selection invalid but no error should be reported.\r\n DateSelecting.prototype.computeSelection = function (footprint0, footprint1) {\r\n var wholeFootprint = this.computeSelectionFootprint(footprint0, footprint1);\r\n if (wholeFootprint && !this.isSelectionFootprintAllowed(wholeFootprint)) {\r\n return false;\r\n }\r\n return wholeFootprint;\r\n };\r\n // Given two spans, must return the combination of the two.\r\n // TODO: do this separation of concerns (combining VS validation) for event dnd/resize too.\r\n // Assumes both footprints are non-open-ended.\r\n DateSelecting.prototype.computeSelectionFootprint = function (footprint0, footprint1) {\r\n var ms = [\r\n footprint0.unzonedRange.startMs,\r\n footprint0.unzonedRange.endMs,\r\n footprint1.unzonedRange.startMs,\r\n footprint1.unzonedRange.endMs\r\n ];\r\n ms.sort(util_1.compareNumbers);\r\n return new ComponentFootprint_1.default(new UnzonedRange_1.default(ms[0], ms[3]), footprint0.isAllDay);\r\n };\r\n DateSelecting.prototype.isSelectionFootprintAllowed = function (componentFootprint) {\r\n return this.component.dateProfile.validUnzonedRange.containsRange(componentFootprint.unzonedRange) &&\r\n this.view.calendar.constraints.isSelectionFootprintAllowed(componentFootprint);\r\n };\r\n return DateSelecting;\r\n}(Interaction_1.default));\r\nexports.default = DateSelecting;\r\n\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar DateClicking = /** @class */ (function (_super) {\r\n tslib_1.__extends(DateClicking, _super);\r\n /*\r\n component must implement:\r\n - bindDateHandlerToEl\r\n - getSafeHitFootprint\r\n - getHitEl\r\n */\r\n function DateClicking(component) {\r\n var _this = _super.call(this, component) || this;\r\n _this.dragListener = _this.buildDragListener();\r\n return _this;\r\n }\r\n DateClicking.prototype.end = function () {\r\n this.dragListener.endInteraction();\r\n };\r\n DateClicking.prototype.bindToEl = function (el) {\r\n var component = this.component;\r\n var dragListener = this.dragListener;\r\n component.bindDateHandlerToEl(el, 'mousedown', function (ev) {\r\n if (!component.shouldIgnoreMouse()) {\r\n dragListener.startInteraction(ev);\r\n }\r\n });\r\n component.bindDateHandlerToEl(el, 'touchstart', function (ev) {\r\n if (!component.shouldIgnoreTouch()) {\r\n dragListener.startInteraction(ev);\r\n }\r\n });\r\n };\r\n // Creates a listener that tracks the user's drag across day elements, for day clicking.\r\n DateClicking.prototype.buildDragListener = function () {\r\n var _this = this;\r\n var component = this.component;\r\n var dayClickHit; // null if invalid dayClick\r\n var dragListener = new HitDragListener_1.default(component, {\r\n scroll: this.opt('dragScroll'),\r\n interactionStart: function () {\r\n dayClickHit = dragListener.origHit;\r\n },\r\n hitOver: function (hit, isOrig, origHit) {\r\n // if user dragged to another cell at any point, it can no longer be a dayClick\r\n if (!isOrig) {\r\n dayClickHit = null;\r\n }\r\n },\r\n hitOut: function () {\r\n dayClickHit = null;\r\n },\r\n interactionEnd: function (ev, isCancelled) {\r\n var componentFootprint;\r\n if (!isCancelled && dayClickHit) {\r\n componentFootprint = component.getSafeHitFootprint(dayClickHit);\r\n if (componentFootprint) {\r\n _this.view.triggerDayClick(componentFootprint, component.getHitEl(dayClickHit), ev);\r\n }\r\n }\r\n }\r\n });\r\n // because dragListener won't be called with any time delay, \"dragging\" will begin immediately,\r\n // which will kill any touchmoving/scrolling. Prevent this.\r\n dragListener.shouldCancelTouchScroll = false;\r\n dragListener.scrollAlwaysKills = true;\r\n return dragListener;\r\n };\r\n return DateClicking;\r\n}(Interaction_1.default));\r\nexports.default = DateClicking;\r\n\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar moment = __webpack_require__(0);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Scroller_1 = __webpack_require__(41);\r\nvar View_1 = __webpack_require__(43);\r\nvar TimeGrid_1 = __webpack_require__(239);\r\nvar DayGrid_1 = __webpack_require__(66);\r\nvar AGENDA_ALL_DAY_EVENT_LIMIT = 5;\r\nvar agendaTimeGridMethods;\r\nvar agendaDayGridMethods;\r\n/* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically.\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).\r\n// Responsible for managing width/height.\r\nvar AgendaView = /** @class */ (function (_super) {\r\n tslib_1.__extends(AgendaView, _super);\r\n function AgendaView(calendar, viewSpec) {\r\n var _this = _super.call(this, calendar, viewSpec) || this;\r\n _this.usesMinMaxTime = true; // indicates that minTime/maxTime affects rendering\r\n _this.timeGrid = _this.instantiateTimeGrid();\r\n _this.addChild(_this.timeGrid);\r\n if (_this.opt('allDaySlot')) { // should we display the \"all-day\" area?\r\n _this.dayGrid = _this.instantiateDayGrid(); // the all-day subcomponent of this view\r\n _this.addChild(_this.dayGrid);\r\n }\r\n _this.scroller = new Scroller_1.default({\r\n overflowX: 'hidden',\r\n overflowY: 'auto'\r\n });\r\n return _this;\r\n }\r\n // Instantiates the TimeGrid object this view needs. Draws from this.timeGridClass\r\n AgendaView.prototype.instantiateTimeGrid = function () {\r\n var timeGrid = new this.timeGridClass(this);\r\n util_1.copyOwnProps(agendaTimeGridMethods, timeGrid);\r\n return timeGrid;\r\n };\r\n // Instantiates the DayGrid object this view might need. Draws from this.dayGridClass\r\n AgendaView.prototype.instantiateDayGrid = function () {\r\n var dayGrid = new this.dayGridClass(this);\r\n util_1.copyOwnProps(agendaDayGridMethods, dayGrid);\r\n return dayGrid;\r\n };\r\n /* Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n AgendaView.prototype.renderSkeleton = function () {\r\n var timeGridWrapEl;\r\n var timeGridEl;\r\n this.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml());\r\n this.scroller.render();\r\n timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container');\r\n timeGridEl = $('
').appendTo(timeGridWrapEl);\r\n this.el.find('.fc-body > tr > td').append(timeGridWrapEl);\r\n this.timeGrid.headContainerEl = this.el.find('.fc-head-container');\r\n this.timeGrid.setElement(timeGridEl);\r\n if (this.dayGrid) {\r\n this.dayGrid.setElement(this.el.find('.fc-day-grid'));\r\n // have the day-grid extend it's coordinate area over the
dividing the two grids\r\n this.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight();\r\n }\r\n };\r\n AgendaView.prototype.unrenderSkeleton = function () {\r\n this.timeGrid.removeElement();\r\n if (this.dayGrid) {\r\n this.dayGrid.removeElement();\r\n }\r\n this.scroller.destroy();\r\n };\r\n // Builds the HTML skeleton for the view.\r\n // The day-grid and time-grid components will render inside containers defined by this HTML.\r\n AgendaView.prototype.renderSkeletonHtml = function () {\r\n var theme = this.calendar.theme;\r\n return '' +\r\n '' +\r\n (this.opt('columnHeader') ?\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' :\r\n '') +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
 
' +\r\n (this.dayGrid ?\r\n '
' +\r\n '
' :\r\n '') +\r\n '
';\r\n };\r\n // Generates an HTML attribute string for setting the width of the axis, if it is known\r\n AgendaView.prototype.axisStyleAttr = function () {\r\n if (this.axisWidth != null) {\r\n return 'style=\"width:' + this.axisWidth + 'px\"';\r\n }\r\n return '';\r\n };\r\n /* Now Indicator\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n AgendaView.prototype.getNowIndicatorUnit = function () {\r\n return this.timeGrid.getNowIndicatorUnit();\r\n };\r\n /* Dimensions\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Adjusts the vertical dimensions of the view to the specified values\r\n AgendaView.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n var eventLimit;\r\n var scrollerHeight;\r\n var scrollbarWidths;\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n // make all axis cells line up, and record the width so newly created axis cells will have it\r\n this.axisWidth = util_1.matchCellWidths(this.el.find('.fc-axis'));\r\n // hack to give the view some height prior to timeGrid's columns being rendered\r\n // TODO: separate setting height from scroller VS timeGrid.\r\n if (!this.timeGrid.colEls) {\r\n if (!isAuto) {\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n }\r\n return;\r\n }\r\n // set of fake row elements that must compensate when scroller has scrollbars\r\n var noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)');\r\n // reset all dimensions back to the original state\r\n this.timeGrid.bottomRuleEl.hide(); // .show() will be called later if this
is necessary\r\n this.scroller.clear(); // sets height to 'auto' and clears overflow\r\n util_1.uncompensateScroll(noScrollRowEls);\r\n // limit number of events in the all-day area\r\n if (this.dayGrid) {\r\n this.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\r\n eventLimit = this.opt('eventLimit');\r\n if (eventLimit && typeof eventLimit !== 'number') {\r\n eventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure \"auto\" goes to a real number\r\n }\r\n if (eventLimit) {\r\n this.dayGrid.limitRows(eventLimit);\r\n }\r\n }\r\n if (!isAuto) { // should we force dimensions of the scroll container?\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n scrollbarWidths = this.scroller.getScrollbarWidths();\r\n if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\r\n // make the all-day and header rows lines up\r\n util_1.compensateScroll(noScrollRowEls, scrollbarWidths);\r\n // the scrollbar compensation might have changed text flow, which might affect height, so recalculate\r\n // and reapply the desired height to the scroller.\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n }\r\n // guarantees the same scrollbar widths\r\n this.scroller.lockOverflow(scrollbarWidths);\r\n // if there's any space below the slats, show the horizontal rule.\r\n // this won't cause any new overflow, because lockOverflow already called.\r\n if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) {\r\n this.timeGrid.bottomRuleEl.show();\r\n }\r\n }\r\n };\r\n // given a desired total height of the view, returns what the height of the scroller should be\r\n AgendaView.prototype.computeScrollerHeight = function (totalHeight) {\r\n return totalHeight -\r\n util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\r\n };\r\n /* Scroll\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Computes the initial pre-configured scroll state prior to allowing the user to change it\r\n AgendaView.prototype.computeInitialDateScroll = function () {\r\n var scrollTime = moment.duration(this.opt('scrollTime'));\r\n var top = this.timeGrid.computeTimeTop(scrollTime);\r\n // zoom can give weird floating-point values. rather scroll a little bit further\r\n top = Math.ceil(top);\r\n if (top) {\r\n top++; // to overcome top border that slots beyond the first have. looks better\r\n }\r\n return { top: top };\r\n };\r\n AgendaView.prototype.queryDateScroll = function () {\r\n return { top: this.scroller.getScrollTop() };\r\n };\r\n AgendaView.prototype.applyDateScroll = function (scroll) {\r\n if (scroll.top !== undefined) {\r\n this.scroller.setScrollTop(scroll.top);\r\n }\r\n };\r\n /* Hit Areas\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // forward all hit-related method calls to the grids (dayGrid might not be defined)\r\n AgendaView.prototype.getHitFootprint = function (hit) {\r\n // TODO: hit.component is set as a hack to identify where the hit came from\r\n return hit.component.getHitFootprint(hit);\r\n };\r\n AgendaView.prototype.getHitEl = function (hit) {\r\n // TODO: hit.component is set as a hack to identify where the hit came from\r\n return hit.component.getHitEl(hit);\r\n };\r\n /* Event Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n AgendaView.prototype.executeEventRender = function (eventsPayload) {\r\n var dayEventsPayload = {};\r\n var timedEventsPayload = {};\r\n var id;\r\n var eventInstanceGroup;\r\n // separate the events into all-day and timed\r\n for (id in eventsPayload) {\r\n eventInstanceGroup = eventsPayload[id];\r\n if (eventInstanceGroup.getEventDef().isAllDay()) {\r\n dayEventsPayload[id] = eventInstanceGroup;\r\n }\r\n else {\r\n timedEventsPayload[id] = eventInstanceGroup;\r\n }\r\n }\r\n this.timeGrid.executeEventRender(timedEventsPayload);\r\n if (this.dayGrid) {\r\n this.dayGrid.executeEventRender(dayEventsPayload);\r\n }\r\n };\r\n /* Dragging/Resizing Routing\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // A returned value of `true` signals that a mock \"helper\" event has been rendered.\r\n AgendaView.prototype.renderDrag = function (eventFootprints, seg, isTouch) {\r\n var groups = groupEventFootprintsByAllDay(eventFootprints);\r\n var renderedHelper = false;\r\n renderedHelper = this.timeGrid.renderDrag(groups.timed, seg, isTouch);\r\n if (this.dayGrid) {\r\n renderedHelper = this.dayGrid.renderDrag(groups.allDay, seg, isTouch) || renderedHelper;\r\n }\r\n return renderedHelper;\r\n };\r\n AgendaView.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {\r\n var groups = groupEventFootprintsByAllDay(eventFootprints);\r\n this.timeGrid.renderEventResize(groups.timed, seg, isTouch);\r\n if (this.dayGrid) {\r\n this.dayGrid.renderEventResize(groups.allDay, seg, isTouch);\r\n }\r\n };\r\n /* Selection\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of a selection\r\n AgendaView.prototype.renderSelectionFootprint = function (componentFootprint) {\r\n if (!componentFootprint.isAllDay) {\r\n this.timeGrid.renderSelectionFootprint(componentFootprint);\r\n }\r\n else if (this.dayGrid) {\r\n this.dayGrid.renderSelectionFootprint(componentFootprint);\r\n }\r\n };\r\n return AgendaView;\r\n}(View_1.default));\r\nexports.default = AgendaView;\r\nAgendaView.prototype.timeGridClass = TimeGrid_1.default;\r\nAgendaView.prototype.dayGridClass = DayGrid_1.default;\r\n// Will customize the rendering behavior of the AgendaView's timeGrid\r\nagendaTimeGridMethods = {\r\n // Generates the HTML that will go before the day-of week header cells\r\n renderHeadIntroHtml: function () {\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var weekStart = calendar.msToUtcMoment(this.dateProfile.renderUnzonedRange.startMs, true);\r\n var weekText;\r\n if (this.opt('weekNumbers')) {\r\n weekText = weekStart.format(this.opt('smallWeekFormat'));\r\n return '' +\r\n '' +\r\n view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths\r\n { date: weekStart, type: 'week', forceOff: this.colCnt > 1 }, util_1.htmlEscape(weekText) // inner HTML\r\n ) +\r\n '';\r\n }\r\n else {\r\n return '';\r\n }\r\n },\r\n // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column.\r\n renderBgIntroHtml: function () {\r\n var view = this.view;\r\n return '';\r\n },\r\n // Generates the HTML that goes before all other types of cells.\r\n // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\r\n renderIntroHtml: function () {\r\n var view = this.view;\r\n return '';\r\n }\r\n};\r\n// Will customize the rendering behavior of the AgendaView's dayGrid\r\nagendaDayGridMethods = {\r\n // Generates the HTML that goes before the all-day cells\r\n renderBgIntroHtml: function () {\r\n var view = this.view;\r\n return '' +\r\n '' +\r\n '' + // needed for matchCellWidths\r\n view.getAllDayHtml() +\r\n '' +\r\n '';\r\n },\r\n // Generates the HTML that goes before all other types of cells.\r\n // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\r\n renderIntroHtml: function () {\r\n var view = this.view;\r\n return '';\r\n }\r\n};\r\nfunction groupEventFootprintsByAllDay(eventFootprints) {\r\n var allDay = [];\r\n var timed = [];\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n if (eventFootprints[i].componentFootprint.isAllDay) {\r\n allDay.push(eventFootprints[i]);\r\n }\r\n else {\r\n timed.push(eventFootprints[i]);\r\n }\r\n }\r\n return { allDay: allDay, timed: timed };\r\n}\r\n\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar InteractiveDateComponent_1 = __webpack_require__(42);\r\nvar BusinessHourRenderer_1 = __webpack_require__(61);\r\nvar StandardInteractionsMixin_1 = __webpack_require__(65);\r\nvar DayTableMixin_1 = __webpack_require__(60);\r\nvar CoordCache_1 = __webpack_require__(58);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar TimeGridEventRenderer_1 = __webpack_require__(240);\r\nvar TimeGridHelperRenderer_1 = __webpack_require__(241);\r\nvar TimeGridFillRenderer_1 = __webpack_require__(242);\r\n/* A component that renders one or more columns of vertical time slots\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// We mixin DayTable, even though there is only a single row of days\r\n// potential nice values for the slot-duration and interval-duration\r\n// from largest to smallest\r\nvar AGENDA_STOCK_SUB_DURATIONS = [\r\n { hours: 1 },\r\n { minutes: 30 },\r\n { minutes: 15 },\r\n { seconds: 30 },\r\n { seconds: 15 }\r\n];\r\nvar TimeGrid = /** @class */ (function (_super) {\r\n tslib_1.__extends(TimeGrid, _super);\r\n function TimeGrid(view) {\r\n var _this = _super.call(this, view) || this;\r\n _this.processOptions();\r\n return _this;\r\n }\r\n // Slices up the given span (unzoned start/end with other misc data) into an array of segments\r\n TimeGrid.prototype.componentFootprintToSegs = function (componentFootprint) {\r\n var segs = this.sliceRangeByTimes(componentFootprint.unzonedRange);\r\n var i;\r\n for (i = 0; i < segs.length; i++) {\r\n if (this.isRTL) {\r\n segs[i].col = this.daysPerRow - 1 - segs[i].dayIndex;\r\n }\r\n else {\r\n segs[i].col = segs[i].dayIndex;\r\n }\r\n }\r\n return segs;\r\n };\r\n /* Date Handling\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.sliceRangeByTimes = function (unzonedRange) {\r\n var segs = [];\r\n var segRange;\r\n var dayIndex;\r\n for (dayIndex = 0; dayIndex < this.daysPerRow; dayIndex++) {\r\n segRange = unzonedRange.intersect(this.dayRanges[dayIndex]);\r\n if (segRange) {\r\n segs.push({\r\n startMs: segRange.startMs,\r\n endMs: segRange.endMs,\r\n isStart: segRange.isStart,\r\n isEnd: segRange.isEnd,\r\n dayIndex: dayIndex\r\n });\r\n }\r\n }\r\n return segs;\r\n };\r\n /* Options\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Parses various options into properties of this object\r\n TimeGrid.prototype.processOptions = function () {\r\n var slotDuration = this.opt('slotDuration');\r\n var snapDuration = this.opt('snapDuration');\r\n var input;\r\n slotDuration = moment.duration(slotDuration);\r\n snapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration;\r\n this.slotDuration = slotDuration;\r\n this.snapDuration = snapDuration;\r\n this.snapsPerSlot = slotDuration / snapDuration; // TODO: ensure an integer multiple?\r\n // might be an array value (for TimelineView).\r\n // if so, getting the most granular entry (the last one probably).\r\n input = this.opt('slotLabelFormat');\r\n if ($.isArray(input)) {\r\n input = input[input.length - 1];\r\n }\r\n this.labelFormat = input ||\r\n this.opt('smallTimeFormat'); // the computed default\r\n input = this.opt('slotLabelInterval');\r\n this.labelInterval = input ?\r\n moment.duration(input) :\r\n this.computeLabelInterval(slotDuration);\r\n };\r\n // Computes an automatic value for slotLabelInterval\r\n TimeGrid.prototype.computeLabelInterval = function (slotDuration) {\r\n var i;\r\n var labelInterval;\r\n var slotsPerLabel;\r\n // find the smallest stock label interval that results in more than one slots-per-label\r\n for (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {\r\n labelInterval = moment.duration(AGENDA_STOCK_SUB_DURATIONS[i]);\r\n slotsPerLabel = util_1.divideDurationByDuration(labelInterval, slotDuration);\r\n if (util_1.isInt(slotsPerLabel) && slotsPerLabel > 1) {\r\n return labelInterval;\r\n }\r\n }\r\n return moment.duration(slotDuration); // fall back. clone\r\n };\r\n /* Date Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.renderDates = function (dateProfile) {\r\n this.dateProfile = dateProfile;\r\n this.updateDayTable();\r\n this.renderSlats();\r\n this.renderColumns();\r\n };\r\n TimeGrid.prototype.unrenderDates = function () {\r\n // this.unrenderSlats(); // don't need this because repeated .html() calls clear\r\n this.unrenderColumns();\r\n };\r\n TimeGrid.prototype.renderSkeleton = function () {\r\n var theme = this.view.calendar.theme;\r\n this.el.html('
' +\r\n '
' +\r\n '
');\r\n this.bottomRuleEl = this.el.find('hr');\r\n };\r\n TimeGrid.prototype.renderSlats = function () {\r\n var theme = this.view.calendar.theme;\r\n this.slatContainerEl = this.el.find('> .fc-slats')\r\n .html(// avoids needing ::unrenderSlats()\r\n '' +\r\n this.renderSlatRowHtml() +\r\n '
');\r\n this.slatEls = this.slatContainerEl.find('tr');\r\n this.slatCoordCache = new CoordCache_1.default({\r\n els: this.slatEls,\r\n isVertical: true\r\n });\r\n };\r\n // Generates the HTML for the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\r\n TimeGrid.prototype.renderSlatRowHtml = function () {\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var theme = calendar.theme;\r\n var isRTL = this.isRTL;\r\n var dateProfile = this.dateProfile;\r\n var html = '';\r\n var slotTime = moment.duration(+dateProfile.minTime); // wish there was .clone() for durations\r\n var slotIterator = moment.duration(0);\r\n var slotDate; // will be on the view's first day, but we only care about its time\r\n var isLabeled;\r\n var axisHtml;\r\n // Calculate the time for each slot\r\n while (slotTime < dateProfile.maxTime) {\r\n slotDate = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs).time(slotTime);\r\n isLabeled = util_1.isInt(util_1.divideDurationByDuration(slotIterator, this.labelInterval));\r\n axisHtml =\r\n '' +\r\n (isLabeled ?\r\n '' + // for matchCellWidths\r\n util_1.htmlEscape(slotDate.format(this.labelFormat)) +\r\n '' :\r\n '') +\r\n '';\r\n html +=\r\n '' +\r\n (!isRTL ? axisHtml : '') +\r\n '' +\r\n (isRTL ? axisHtml : '') +\r\n '';\r\n slotTime.add(this.slotDuration);\r\n slotIterator.add(this.slotDuration);\r\n }\r\n return html;\r\n };\r\n TimeGrid.prototype.renderColumns = function () {\r\n var dateProfile = this.dateProfile;\r\n var theme = this.view.calendar.theme;\r\n this.dayRanges = this.dayDates.map(function (dayDate) {\r\n return new UnzonedRange_1.default(dayDate.clone().add(dateProfile.minTime), dayDate.clone().add(dateProfile.maxTime));\r\n });\r\n if (this.headContainerEl) {\r\n this.headContainerEl.html(this.renderHeadHtml());\r\n }\r\n this.el.find('> .fc-bg').html('' +\r\n this.renderBgTrHtml(0) + // row=0\r\n '
');\r\n this.colEls = this.el.find('.fc-day, .fc-disabled-day');\r\n this.colCoordCache = new CoordCache_1.default({\r\n els: this.colEls,\r\n isHorizontal: true\r\n });\r\n this.renderContentSkeleton();\r\n };\r\n TimeGrid.prototype.unrenderColumns = function () {\r\n this.unrenderContentSkeleton();\r\n };\r\n /* Content Skeleton\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders the DOM that the view's content will live in\r\n TimeGrid.prototype.renderContentSkeleton = function () {\r\n var cellHtml = '';\r\n var i;\r\n var skeletonEl;\r\n for (i = 0; i < this.colCnt; i++) {\r\n cellHtml +=\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '';\r\n }\r\n skeletonEl = this.contentSkeletonEl = $('
' +\r\n '' +\r\n '' + cellHtml + '' +\r\n '
' +\r\n '
');\r\n this.colContainerEls = skeletonEl.find('.fc-content-col');\r\n this.helperContainerEls = skeletonEl.find('.fc-helper-container');\r\n this.fgContainerEls = skeletonEl.find('.fc-event-container:not(.fc-helper-container)');\r\n this.bgContainerEls = skeletonEl.find('.fc-bgevent-container');\r\n this.highlightContainerEls = skeletonEl.find('.fc-highlight-container');\r\n this.businessContainerEls = skeletonEl.find('.fc-business-container');\r\n this.bookendCells(skeletonEl.find('tr')); // TODO: do this on string level\r\n this.el.append(skeletonEl);\r\n };\r\n TimeGrid.prototype.unrenderContentSkeleton = function () {\r\n if (this.contentSkeletonEl) { // defensive :(\r\n this.contentSkeletonEl.remove();\r\n this.contentSkeletonEl = null;\r\n this.colContainerEls = null;\r\n this.helperContainerEls = null;\r\n this.fgContainerEls = null;\r\n this.bgContainerEls = null;\r\n this.highlightContainerEls = null;\r\n this.businessContainerEls = null;\r\n }\r\n };\r\n // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col\r\n TimeGrid.prototype.groupSegsByCol = function (segs) {\r\n var segsByCol = [];\r\n var i;\r\n for (i = 0; i < this.colCnt; i++) {\r\n segsByCol.push([]);\r\n }\r\n for (i = 0; i < segs.length; i++) {\r\n segsByCol[segs[i].col].push(segs[i]);\r\n }\r\n return segsByCol;\r\n };\r\n // Given segments grouped by column, insert the segments' elements into a parallel array of container\r\n // elements, each living within a column.\r\n TimeGrid.prototype.attachSegsByCol = function (segsByCol, containerEls) {\r\n var col;\r\n var segs;\r\n var i;\r\n for (col = 0; col < this.colCnt; col++) { // iterate each column grouping\r\n segs = segsByCol[col];\r\n for (i = 0; i < segs.length; i++) {\r\n containerEls.eq(col).append(segs[i].el);\r\n }\r\n }\r\n };\r\n /* Now Indicator\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.getNowIndicatorUnit = function () {\r\n return 'minute'; // will refresh on the minute\r\n };\r\n TimeGrid.prototype.renderNowIndicator = function (date) {\r\n // HACK: if date columns not ready for some reason (scheduler)\r\n if (!this.colContainerEls) {\r\n return;\r\n }\r\n // seg system might be overkill, but it handles scenario where line needs to be rendered\r\n // more than once because of columns with the same date (resources columns for example)\r\n var segs = this.componentFootprintToSegs(new ComponentFootprint_1.default(new UnzonedRange_1.default(date, date.valueOf() + 1), // protect against null range\r\n false // all-day\r\n ));\r\n var top = this.computeDateTop(date, date);\r\n var nodes = [];\r\n var i;\r\n // render lines within the columns\r\n for (i = 0; i < segs.length; i++) {\r\n nodes.push($('
')\r\n .css('top', top)\r\n .appendTo(this.colContainerEls.eq(segs[i].col))[0]);\r\n }\r\n // render an arrow over the axis\r\n if (segs.length > 0) { // is the current time in view?\r\n nodes.push($('
')\r\n .css('top', top)\r\n .appendTo(this.el.find('.fc-content-skeleton'))[0]);\r\n }\r\n this.nowIndicatorEls = $(nodes);\r\n };\r\n TimeGrid.prototype.unrenderNowIndicator = function () {\r\n if (this.nowIndicatorEls) {\r\n this.nowIndicatorEls.remove();\r\n this.nowIndicatorEls = null;\r\n }\r\n };\r\n /* Coordinates\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n this.slatCoordCache.build();\r\n if (isResize) {\r\n this.updateSegVerticals([].concat(this.eventRenderer.getSegs(), this.businessSegs || []));\r\n }\r\n };\r\n TimeGrid.prototype.getTotalSlatHeight = function () {\r\n return this.slatContainerEl.outerHeight();\r\n };\r\n // Computes the top coordinate, relative to the bounds of the grid, of the given date.\r\n // `ms` can be a millisecond UTC time OR a UTC moment.\r\n // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\r\n TimeGrid.prototype.computeDateTop = function (ms, startOfDayDate) {\r\n return this.computeTimeTop(moment.duration(ms - startOfDayDate.clone().stripTime()));\r\n };\r\n // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\r\n TimeGrid.prototype.computeTimeTop = function (time) {\r\n var len = this.slatEls.length;\r\n var dateProfile = this.dateProfile;\r\n var slatCoverage = (time - dateProfile.minTime) / this.slotDuration; // floating-point value of # of slots covered\r\n var slatIndex;\r\n var slatRemainder;\r\n // compute a floating-point number for how many slats should be progressed through.\r\n // from 0 to number of slats (inclusive)\r\n // constrained because minTime/maxTime might be customized.\r\n slatCoverage = Math.max(0, slatCoverage);\r\n slatCoverage = Math.min(len, slatCoverage);\r\n // an integer index of the furthest whole slat\r\n // from 0 to number slats (*exclusive*, so len-1)\r\n slatIndex = Math.floor(slatCoverage);\r\n slatIndex = Math.min(slatIndex, len - 1);\r\n // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\r\n // could be 1.0 if slatCoverage is covering *all* the slots\r\n slatRemainder = slatCoverage - slatIndex;\r\n return this.slatCoordCache.getTopPosition(slatIndex) +\r\n this.slatCoordCache.getHeight(slatIndex) * slatRemainder;\r\n };\r\n // Refreshes the CSS top/bottom coordinates for each segment element.\r\n // Works when called after initial render, after a window resize/zoom for example.\r\n TimeGrid.prototype.updateSegVerticals = function (segs) {\r\n this.computeSegVerticals(segs);\r\n this.assignSegVerticals(segs);\r\n };\r\n // For each segment in an array, computes and assigns its top and bottom properties\r\n TimeGrid.prototype.computeSegVerticals = function (segs) {\r\n var eventMinHeight = this.opt('agendaEventMinHeight');\r\n var i;\r\n var seg;\r\n var dayDate;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n dayDate = this.dayDates[seg.dayIndex];\r\n seg.top = this.computeDateTop(seg.startMs, dayDate);\r\n seg.bottom = Math.max(seg.top + eventMinHeight, this.computeDateTop(seg.endMs, dayDate));\r\n }\r\n };\r\n // Given segments that already have their top/bottom properties computed, applies those values to\r\n // the segments' elements.\r\n TimeGrid.prototype.assignSegVerticals = function (segs) {\r\n var i;\r\n var seg;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n seg.el.css(this.generateSegVerticalCss(seg));\r\n }\r\n };\r\n // Generates an object with CSS properties for the top/bottom coordinates of a segment element\r\n TimeGrid.prototype.generateSegVerticalCss = function (seg) {\r\n return {\r\n top: seg.top,\r\n bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container\r\n };\r\n };\r\n /* Hit System\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.prepareHits = function () {\r\n this.colCoordCache.build();\r\n this.slatCoordCache.build();\r\n };\r\n TimeGrid.prototype.releaseHits = function () {\r\n this.colCoordCache.clear();\r\n // NOTE: don't clear slatCoordCache because we rely on it for computeTimeTop\r\n };\r\n TimeGrid.prototype.queryHit = function (leftOffset, topOffset) {\r\n var snapsPerSlot = this.snapsPerSlot;\r\n var colCoordCache = this.colCoordCache;\r\n var slatCoordCache = this.slatCoordCache;\r\n if (colCoordCache.isLeftInBounds(leftOffset) && slatCoordCache.isTopInBounds(topOffset)) {\r\n var colIndex = colCoordCache.getHorizontalIndex(leftOffset);\r\n var slatIndex = slatCoordCache.getVerticalIndex(topOffset);\r\n if (colIndex != null && slatIndex != null) {\r\n var slatTop = slatCoordCache.getTopOffset(slatIndex);\r\n var slatHeight = slatCoordCache.getHeight(slatIndex);\r\n var partial = (topOffset - slatTop) / slatHeight; // floating point number between 0 and 1\r\n var localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\r\n var snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\r\n var snapTop = slatTop + (localSnapIndex / snapsPerSlot) * slatHeight;\r\n var snapBottom = slatTop + ((localSnapIndex + 1) / snapsPerSlot) * slatHeight;\r\n return {\r\n col: colIndex,\r\n snap: snapIndex,\r\n component: this,\r\n left: colCoordCache.getLeftOffset(colIndex),\r\n right: colCoordCache.getRightOffset(colIndex),\r\n top: snapTop,\r\n bottom: snapBottom\r\n };\r\n }\r\n }\r\n };\r\n TimeGrid.prototype.getHitFootprint = function (hit) {\r\n var start = this.getCellDate(0, hit.col); // row=0\r\n var time = this.computeSnapTime(hit.snap); // pass in the snap-index\r\n var end;\r\n start.time(time);\r\n end = start.clone().add(this.snapDuration);\r\n return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), false // all-day?\r\n );\r\n };\r\n // Given a row number of the grid, representing a \"snap\", returns a time (Duration) from its start-of-day\r\n TimeGrid.prototype.computeSnapTime = function (snapIndex) {\r\n return moment.duration(this.dateProfile.minTime + this.snapDuration * snapIndex);\r\n };\r\n TimeGrid.prototype.getHitEl = function (hit) {\r\n return this.colEls.eq(hit.col);\r\n };\r\n /* Event Drag Visualization\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of an event being dragged over the specified date(s).\r\n // A returned value of `true` signals that a mock \"helper\" event has been rendered.\r\n TimeGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) {\r\n var i;\r\n if (seg) { // if there is event information for this drag, render a helper event\r\n if (eventFootprints.length) {\r\n this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch);\r\n // signal that a helper has been rendered\r\n return true;\r\n }\r\n }\r\n else { // otherwise, just render a highlight\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n this.renderHighlight(eventFootprints[i].componentFootprint);\r\n }\r\n }\r\n };\r\n // Unrenders any visual indication of an event being dragged\r\n TimeGrid.prototype.unrenderDrag = function () {\r\n this.unrenderHighlight();\r\n this.helperRenderer.unrender();\r\n };\r\n /* Event Resize Visualization\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of an event being resized\r\n TimeGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {\r\n this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch);\r\n };\r\n // Unrenders any visual indication of an event being resized\r\n TimeGrid.prototype.unrenderEventResize = function () {\r\n this.helperRenderer.unrender();\r\n };\r\n /* Selection\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight.\r\n TimeGrid.prototype.renderSelectionFootprint = function (componentFootprint) {\r\n if (this.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered\r\n this.helperRenderer.renderComponentFootprint(componentFootprint);\r\n }\r\n else {\r\n this.renderHighlight(componentFootprint);\r\n }\r\n };\r\n // Unrenders any visual indication of a selection\r\n TimeGrid.prototype.unrenderSelection = function () {\r\n this.helperRenderer.unrender();\r\n this.unrenderHighlight();\r\n };\r\n return TimeGrid;\r\n}(InteractiveDateComponent_1.default));\r\nexports.default = TimeGrid;\r\nTimeGrid.prototype.eventRendererClass = TimeGridEventRenderer_1.default;\r\nTimeGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default;\r\nTimeGrid.prototype.helperRendererClass = TimeGridHelperRenderer_1.default;\r\nTimeGrid.prototype.fillRendererClass = TimeGridFillRenderer_1.default;\r\nStandardInteractionsMixin_1.default.mixInto(TimeGrid);\r\nDayTableMixin_1.default.mixInto(TimeGrid);\r\n\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventRenderer_1 = __webpack_require__(44);\r\n/*\r\nOnly handles foreground segs.\r\nDoes not own rendering. Use for low-level util methods by TimeGrid.\r\n*/\r\nvar TimeGridEventRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(TimeGridEventRenderer, _super);\r\n function TimeGridEventRenderer(timeGrid, fillRenderer) {\r\n var _this = _super.call(this, timeGrid, fillRenderer) || this;\r\n _this.timeGrid = timeGrid;\r\n return _this;\r\n }\r\n TimeGridEventRenderer.prototype.renderFgSegs = function (segs) {\r\n this.renderFgSegsIntoContainers(segs, this.timeGrid.fgContainerEls);\r\n };\r\n // Given an array of foreground segments, render a DOM element for each, computes position,\r\n // and attaches to the column inner-container elements.\r\n TimeGridEventRenderer.prototype.renderFgSegsIntoContainers = function (segs, containerEls) {\r\n var segsByCol;\r\n var col;\r\n segsByCol = this.timeGrid.groupSegsByCol(segs);\r\n for (col = 0; col < this.timeGrid.colCnt; col++) {\r\n this.updateFgSegCoords(segsByCol[col]);\r\n }\r\n this.timeGrid.attachSegsByCol(segsByCol, containerEls);\r\n };\r\n TimeGridEventRenderer.prototype.unrenderFgSegs = function () {\r\n if (this.fgSegs) { // hack\r\n this.fgSegs.forEach(function (seg) {\r\n seg.el.remove();\r\n });\r\n }\r\n };\r\n // Computes a default event time formatting string if `timeFormat` is not explicitly defined\r\n TimeGridEventRenderer.prototype.computeEventTimeFormat = function () {\r\n return this.opt('noMeridiemTimeFormat'); // like \"6:30\" (no AM/PM)\r\n };\r\n // Computes a default `displayEventEnd` value if one is not expliclty defined\r\n TimeGridEventRenderer.prototype.computeDisplayEventEnd = function () {\r\n return true;\r\n };\r\n // Renders the HTML for a single event segment's default rendering\r\n TimeGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) {\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var componentFootprint = seg.footprint.componentFootprint;\r\n var isAllDay = componentFootprint.isAllDay;\r\n var eventDef = seg.footprint.eventDef;\r\n var isDraggable = view.isEventDefDraggable(eventDef);\r\n var isResizableFromStart = !disableResizing && seg.isStart && view.isEventDefResizableFromStart(eventDef);\r\n var isResizableFromEnd = !disableResizing && seg.isEnd && view.isEventDefResizableFromEnd(eventDef);\r\n var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\r\n var skinCss = util_1.cssToStr(this.getSkinCss(eventDef));\r\n var timeText;\r\n var fullTimeText; // more verbose time text. for the print stylesheet\r\n var startTimeText; // just the start time text\r\n classes.unshift('fc-time-grid-event', 'fc-v-event');\r\n // if the event appears to span more than one day...\r\n if (view.isMultiDayRange(componentFootprint.unzonedRange)) {\r\n // Don't display time text on segments that run entirely through a day.\r\n // That would appear as midnight-midnight and would look dumb.\r\n // Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am)\r\n if (seg.isStart || seg.isEnd) {\r\n var zonedStart = calendar.msToMoment(seg.startMs);\r\n var zonedEnd = calendar.msToMoment(seg.endMs);\r\n timeText = this._getTimeText(zonedStart, zonedEnd, isAllDay);\r\n fullTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, 'LT');\r\n startTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, null, false); // displayEnd=false\r\n }\r\n }\r\n else {\r\n // Display the normal time text for the *event's* times\r\n timeText = this.getTimeText(seg.footprint);\r\n fullTimeText = this.getTimeText(seg.footprint, 'LT');\r\n startTimeText = this.getTimeText(seg.footprint, null, false); // displayEnd=false\r\n }\r\n return '' +\r\n '
' +\r\n (timeText ?\r\n '
' +\r\n '' + util_1.htmlEscape(timeText) + '' +\r\n '
' :\r\n '') +\r\n (eventDef.title ?\r\n '
' +\r\n util_1.htmlEscape(eventDef.title) +\r\n '
' :\r\n '') +\r\n '
' +\r\n '
' +\r\n /* TODO: write CSS for this\r\n (isResizableFromStart ?\r\n '
' :\r\n ''\r\n ) +\r\n */\r\n (isResizableFromEnd ?\r\n '
' :\r\n '') +\r\n '';\r\n };\r\n // Given segments that are assumed to all live in the *same column*,\r\n // compute their verical/horizontal coordinates and assign to their elements.\r\n TimeGridEventRenderer.prototype.updateFgSegCoords = function (segs) {\r\n this.timeGrid.computeSegVerticals(segs); // horizontals relies on this\r\n this.computeFgSegHorizontals(segs); // compute horizontal coordinates, z-index's, and reorder the array\r\n this.timeGrid.assignSegVerticals(segs);\r\n this.assignFgSegHorizontals(segs);\r\n };\r\n // Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each.\r\n // NOTE: Also reorders the given array by date!\r\n TimeGridEventRenderer.prototype.computeFgSegHorizontals = function (segs) {\r\n var levels;\r\n var level0;\r\n var i;\r\n this.sortEventSegs(segs); // order by certain criteria\r\n levels = buildSlotSegLevels(segs);\r\n computeForwardSlotSegs(levels);\r\n if ((level0 = levels[0])) {\r\n for (i = 0; i < level0.length; i++) {\r\n computeSlotSegPressures(level0[i]);\r\n }\r\n for (i = 0; i < level0.length; i++) {\r\n this.computeFgSegForwardBack(level0[i], 0, 0);\r\n }\r\n }\r\n };\r\n // Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range\r\n // from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to \"left\" and\r\n // seg.forwardCoord maps to \"right\" (via percentage). Vice-versa if the calendar is right-to-left.\r\n //\r\n // The segment might be part of a \"series\", which means consecutive segments with the same pressure\r\n // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of\r\n // segments behind this one in the current series, and `seriesBackwardCoord` is the starting\r\n // coordinate of the first segment in the series.\r\n TimeGridEventRenderer.prototype.computeFgSegForwardBack = function (seg, seriesBackwardPressure, seriesBackwardCoord) {\r\n var forwardSegs = seg.forwardSegs;\r\n var i;\r\n if (seg.forwardCoord === undefined) { // not already computed\r\n if (!forwardSegs.length) {\r\n // if there are no forward segments, this segment should butt up against the edge\r\n seg.forwardCoord = 1;\r\n }\r\n else {\r\n // sort highest pressure first\r\n this.sortForwardSegs(forwardSegs);\r\n // this segment's forwardCoord will be calculated from the backwardCoord of the\r\n // highest-pressure forward segment.\r\n this.computeFgSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord);\r\n seg.forwardCoord = forwardSegs[0].backwardCoord;\r\n }\r\n // calculate the backwardCoord from the forwardCoord. consider the series\r\n seg.backwardCoord = seg.forwardCoord -\r\n (seg.forwardCoord - seriesBackwardCoord) / // available width for series\r\n (seriesBackwardPressure + 1); // # of segments in the series\r\n // use this segment's coordinates to computed the coordinates of the less-pressurized\r\n // forward segments\r\n for (i = 0; i < forwardSegs.length; i++) {\r\n this.computeFgSegForwardBack(forwardSegs[i], 0, seg.forwardCoord);\r\n }\r\n }\r\n };\r\n TimeGridEventRenderer.prototype.sortForwardSegs = function (forwardSegs) {\r\n forwardSegs.sort(util_1.proxy(this, 'compareForwardSegs'));\r\n };\r\n // A cmp function for determining which forward segment to rely on more when computing coordinates.\r\n TimeGridEventRenderer.prototype.compareForwardSegs = function (seg1, seg2) {\r\n // put higher-pressure first\r\n return seg2.forwardPressure - seg1.forwardPressure ||\r\n // put segments that are closer to initial edge first (and favor ones with no coords yet)\r\n (seg1.backwardCoord || 0) - (seg2.backwardCoord || 0) ||\r\n // do normal sorting...\r\n this.compareEventSegs(seg1, seg2);\r\n };\r\n // Given foreground event segments that have already had their position coordinates computed,\r\n // assigns position-related CSS values to their elements.\r\n TimeGridEventRenderer.prototype.assignFgSegHorizontals = function (segs) {\r\n var i;\r\n var seg;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n seg.el.css(this.generateFgSegHorizontalCss(seg));\r\n // if the event is short that the title will be cut off,\r\n // attach a className that condenses the title into the time area.\r\n if (seg.footprint.eventDef.title && seg.bottom - seg.top < 30) {\r\n seg.el.addClass('fc-short'); // TODO: \"condensed\" is a better name\r\n }\r\n }\r\n };\r\n // Generates an object with CSS properties/values that should be applied to an event segment element.\r\n // Contains important positioning-related properties that should be applied to any event element, customized or not.\r\n TimeGridEventRenderer.prototype.generateFgSegHorizontalCss = function (seg) {\r\n var shouldOverlap = this.opt('slotEventOverlap');\r\n var backwardCoord = seg.backwardCoord; // the left side if LTR. the right side if RTL. floating-point\r\n var forwardCoord = seg.forwardCoord; // the right side if LTR. the left side if RTL. floating-point\r\n var props = this.timeGrid.generateSegVerticalCss(seg); // get top/bottom first\r\n var isRTL = this.timeGrid.isRTL;\r\n var left; // amount of space from left edge, a fraction of the total width\r\n var right; // amount of space from right edge, a fraction of the total width\r\n if (shouldOverlap) {\r\n // double the width, but don't go beyond the maximum forward coordinate (1.0)\r\n forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2);\r\n }\r\n if (isRTL) {\r\n left = 1 - forwardCoord;\r\n right = backwardCoord;\r\n }\r\n else {\r\n left = backwardCoord;\r\n right = 1 - forwardCoord;\r\n }\r\n props.zIndex = seg.level + 1; // convert from 0-base to 1-based\r\n props.left = left * 100 + '%';\r\n props.right = right * 100 + '%';\r\n if (shouldOverlap && seg.forwardPressure) {\r\n // add padding to the edge so that forward stacked events don't cover the resizer's icon\r\n props[isRTL ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width\r\n }\r\n return props;\r\n };\r\n return TimeGridEventRenderer;\r\n}(EventRenderer_1.default));\r\nexports.default = TimeGridEventRenderer;\r\n// Builds an array of segments \"levels\". The first level will be the leftmost tier of segments if the calendar is\r\n// left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date.\r\nfunction buildSlotSegLevels(segs) {\r\n var levels = [];\r\n var i;\r\n var seg;\r\n var j;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n // go through all the levels and stop on the first level where there are no collisions\r\n for (j = 0; j < levels.length; j++) {\r\n if (!computeSlotSegCollisions(seg, levels[j]).length) {\r\n break;\r\n }\r\n }\r\n seg.level = j;\r\n (levels[j] || (levels[j] = [])).push(seg);\r\n }\r\n return levels;\r\n}\r\n// For every segment, figure out the other segments that are in subsequent\r\n// levels that also occupy the same vertical space. Accumulate in seg.forwardSegs\r\nfunction computeForwardSlotSegs(levels) {\r\n var i;\r\n var level;\r\n var j;\r\n var seg;\r\n var k;\r\n for (i = 0; i < levels.length; i++) {\r\n level = levels[i];\r\n for (j = 0; j < level.length; j++) {\r\n seg = level[j];\r\n seg.forwardSegs = [];\r\n for (k = i + 1; k < levels.length; k++) {\r\n computeSlotSegCollisions(seg, levels[k], seg.forwardSegs);\r\n }\r\n }\r\n }\r\n}\r\n// Figure out which path forward (via seg.forwardSegs) results in the longest path until\r\n// the furthest edge is reached. The number of segments in this path will be seg.forwardPressure\r\nfunction computeSlotSegPressures(seg) {\r\n var forwardSegs = seg.forwardSegs;\r\n var forwardPressure = 0;\r\n var i;\r\n var forwardSeg;\r\n if (seg.forwardPressure === undefined) { // not already computed\r\n for (i = 0; i < forwardSegs.length; i++) {\r\n forwardSeg = forwardSegs[i];\r\n // figure out the child's maximum forward path\r\n computeSlotSegPressures(forwardSeg);\r\n // either use the existing maximum, or use the child's forward pressure\r\n // plus one (for the forwardSeg itself)\r\n forwardPressure = Math.max(forwardPressure, 1 + forwardSeg.forwardPressure);\r\n }\r\n seg.forwardPressure = forwardPressure;\r\n }\r\n}\r\n// Find all the segments in `otherSegs` that vertically collide with `seg`.\r\n// Append into an optionally-supplied `results` array and return.\r\nfunction computeSlotSegCollisions(seg, otherSegs, results) {\r\n if (results === void 0) { results = []; }\r\n for (var i = 0; i < otherSegs.length; i++) {\r\n if (isSlotSegCollision(seg, otherSegs[i])) {\r\n results.push(otherSegs[i]);\r\n }\r\n }\r\n return results;\r\n}\r\n// Do these segments occupy the same vertical space?\r\nfunction isSlotSegCollision(seg1, seg2) {\r\n return seg1.bottom > seg2.top && seg1.top < seg2.bottom;\r\n}\r\n\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar HelperRenderer_1 = __webpack_require__(63);\r\nvar TimeGridHelperRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(TimeGridHelperRenderer, _super);\r\n function TimeGridHelperRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TimeGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) {\r\n var helperNodes = [];\r\n var i;\r\n var seg;\r\n var sourceEl;\r\n // TODO: not good to call eventRenderer this way\r\n this.eventRenderer.renderFgSegsIntoContainers(segs, this.component.helperContainerEls);\r\n // Try to make the segment that is in the same row as sourceSeg look the same\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n if (sourceSeg && sourceSeg.col === seg.col) {\r\n sourceEl = sourceSeg.el;\r\n seg.el.css({\r\n left: sourceEl.css('left'),\r\n right: sourceEl.css('right'),\r\n 'margin-left': sourceEl.css('margin-left'),\r\n 'margin-right': sourceEl.css('margin-right')\r\n });\r\n }\r\n helperNodes.push(seg.el[0]);\r\n }\r\n return $(helperNodes); // must return the elements rendered\r\n };\r\n return TimeGridHelperRenderer;\r\n}(HelperRenderer_1.default));\r\nexports.default = TimeGridHelperRenderer;\r\n\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar FillRenderer_1 = __webpack_require__(62);\r\nvar TimeGridFillRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(TimeGridFillRenderer, _super);\r\n function TimeGridFillRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TimeGridFillRenderer.prototype.attachSegEls = function (type, segs) {\r\n var timeGrid = this.component;\r\n var containerEls;\r\n // TODO: more efficient lookup\r\n if (type === 'bgEvent') {\r\n containerEls = timeGrid.bgContainerEls;\r\n }\r\n else if (type === 'businessHours') {\r\n containerEls = timeGrid.businessContainerEls;\r\n }\r\n else if (type === 'highlight') {\r\n containerEls = timeGrid.highlightContainerEls;\r\n }\r\n timeGrid.updateSegVerticals(segs);\r\n timeGrid.attachSegsByCol(timeGrid.groupSegsByCol(segs), containerEls);\r\n return segs.map(function (seg) {\r\n return seg.el[0];\r\n });\r\n };\r\n return TimeGridFillRenderer;\r\n}(FillRenderer_1.default));\r\nexports.default = TimeGridFillRenderer;\r\n\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventRenderer_1 = __webpack_require__(44);\r\n/* Event-rendering methods for the DayGrid class\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar DayGridEventRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayGridEventRenderer, _super);\r\n function DayGridEventRenderer(dayGrid, fillRenderer) {\r\n var _this = _super.call(this, dayGrid, fillRenderer) || this;\r\n _this.dayGrid = dayGrid;\r\n return _this;\r\n }\r\n DayGridEventRenderer.prototype.renderBgRanges = function (eventRanges) {\r\n // don't render timed background events\r\n eventRanges = $.grep(eventRanges, function (eventRange) {\r\n return eventRange.eventDef.isAllDay();\r\n });\r\n _super.prototype.renderBgRanges.call(this, eventRanges);\r\n };\r\n // Renders the given foreground event segments onto the grid\r\n DayGridEventRenderer.prototype.renderFgSegs = function (segs) {\r\n var rowStructs = this.rowStructs = this.renderSegRows(segs);\r\n // append to each row's content skeleton\r\n this.dayGrid.rowEls.each(function (i, rowNode) {\r\n $(rowNode).find('.fc-content-skeleton > table').append(rowStructs[i].tbodyEl);\r\n });\r\n };\r\n // Unrenders all currently rendered foreground event segments\r\n DayGridEventRenderer.prototype.unrenderFgSegs = function () {\r\n var rowStructs = this.rowStructs || [];\r\n var rowStruct;\r\n while ((rowStruct = rowStructs.pop())) {\r\n rowStruct.tbodyEl.remove();\r\n }\r\n this.rowStructs = null;\r\n };\r\n // Uses the given events array to generate elements that should be appended to each row's content skeleton.\r\n // Returns an array of rowStruct objects (see the bottom of `renderSegRow`).\r\n // PRECONDITION: each segment shoud already have a rendered and assigned `.el`\r\n DayGridEventRenderer.prototype.renderSegRows = function (segs) {\r\n var rowStructs = [];\r\n var segRows;\r\n var row;\r\n segRows = this.groupSegRows(segs); // group into nested arrays\r\n // iterate each row of segment groupings\r\n for (row = 0; row < segRows.length; row++) {\r\n rowStructs.push(this.renderSegRow(row, segRows[row]));\r\n }\r\n return rowStructs;\r\n };\r\n // Given a row # and an array of segments all in the same row, render a element, a skeleton that contains\r\n // the segments. Returns object with a bunch of internal data about how the render was calculated.\r\n // NOTE: modifies rowSegs\r\n DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) {\r\n var colCnt = this.dayGrid.colCnt;\r\n var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels\r\n var levelCnt = Math.max(1, segLevels.length); // ensure at least one level\r\n var tbody = $('');\r\n var segMatrix = []; // lookup for which segments are rendered into which level+col cells\r\n var cellMatrix = []; // lookup for all elements of the level+col matrix\r\n var loneCellMatrix = []; // lookup for elements that only take up a single column\r\n var i;\r\n var levelSegs;\r\n var col;\r\n var tr;\r\n var j;\r\n var seg;\r\n var td;\r\n // populates empty cells from the current column (`col`) to `endCol`\r\n function emptyCellsUntil(endCol) {\r\n while (col < endCol) {\r\n // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell\r\n td = (loneCellMatrix[i - 1] || [])[col];\r\n if (td) {\r\n td.attr('rowspan', parseInt(td.attr('rowspan') || 1, 10) + 1);\r\n }\r\n else {\r\n td = $('');\r\n tr.append(td);\r\n }\r\n cellMatrix[i][col] = td;\r\n loneCellMatrix[i][col] = td;\r\n col++;\r\n }\r\n }\r\n for (i = 0; i < levelCnt; i++) { // iterate through all levels\r\n levelSegs = segLevels[i];\r\n col = 0;\r\n tr = $('');\r\n segMatrix.push([]);\r\n cellMatrix.push([]);\r\n loneCellMatrix.push([]);\r\n // levelCnt might be 1 even though there are no actual levels. protect against this.\r\n // this single empty row is useful for styling.\r\n if (levelSegs) {\r\n for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level\r\n seg = levelSegs[j];\r\n emptyCellsUntil(seg.leftCol);\r\n // create a container that occupies or more columns. append the event element.\r\n td = $('').append(seg.el);\r\n if (seg.leftCol !== seg.rightCol) {\r\n td.attr('colspan', seg.rightCol - seg.leftCol + 1);\r\n }\r\n else { // a single-column segment\r\n loneCellMatrix[i][col] = td;\r\n }\r\n while (col <= seg.rightCol) {\r\n cellMatrix[i][col] = td;\r\n segMatrix[i][col] = seg;\r\n col++;\r\n }\r\n tr.append(td);\r\n }\r\n }\r\n emptyCellsUntil(colCnt); // finish off the row\r\n this.dayGrid.bookendCells(tr);\r\n tbody.append(tr);\r\n }\r\n return {\r\n row: row,\r\n tbodyEl: tbody,\r\n cellMatrix: cellMatrix,\r\n segMatrix: segMatrix,\r\n segLevels: segLevels,\r\n segs: rowSegs\r\n };\r\n };\r\n // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.\r\n // NOTE: modifies segs\r\n DayGridEventRenderer.prototype.buildSegLevels = function (segs) {\r\n var levels = [];\r\n var i;\r\n var seg;\r\n var j;\r\n // Give preference to elements with certain criteria, so they have\r\n // a chance to be closer to the top.\r\n this.sortEventSegs(segs);\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n // loop through levels, starting with the topmost, until the segment doesn't collide with other segments\r\n for (j = 0; j < levels.length; j++) {\r\n if (!isDaySegCollision(seg, levels[j])) {\r\n break;\r\n }\r\n }\r\n // `j` now holds the desired subrow index\r\n seg.level = j;\r\n // create new level array if needed and append segment\r\n (levels[j] || (levels[j] = [])).push(seg);\r\n }\r\n // order segments left-to-right. very important if calendar is RTL\r\n for (j = 0; j < levels.length; j++) {\r\n levels[j].sort(compareDaySegCols);\r\n }\r\n return levels;\r\n };\r\n // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row\r\n DayGridEventRenderer.prototype.groupSegRows = function (segs) {\r\n var segRows = [];\r\n var i;\r\n for (i = 0; i < this.dayGrid.rowCnt; i++) {\r\n segRows.push([]);\r\n }\r\n for (i = 0; i < segs.length; i++) {\r\n segRows[segs[i].row].push(segs[i]);\r\n }\r\n return segRows;\r\n };\r\n // Computes a default event time formatting string if `timeFormat` is not explicitly defined\r\n DayGridEventRenderer.prototype.computeEventTimeFormat = function () {\r\n return this.opt('extraSmallTimeFormat'); // like \"6p\" or \"6:30p\"\r\n };\r\n // Computes a default `displayEventEnd` value if one is not expliclty defined\r\n DayGridEventRenderer.prototype.computeDisplayEventEnd = function () {\r\n return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day\r\n };\r\n // Builds the HTML to be used for the default element for an individual segment\r\n DayGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) {\r\n var view = this.view;\r\n var eventDef = seg.footprint.eventDef;\r\n var isAllDay = seg.footprint.componentFootprint.isAllDay;\r\n var isDraggable = view.isEventDefDraggable(eventDef);\r\n var isResizableFromStart = !disableResizing && isAllDay &&\r\n seg.isStart && view.isEventDefResizableFromStart(eventDef);\r\n var isResizableFromEnd = !disableResizing && isAllDay &&\r\n seg.isEnd && view.isEventDefResizableFromEnd(eventDef);\r\n var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\r\n var skinCss = util_1.cssToStr(this.getSkinCss(eventDef));\r\n var timeHtml = '';\r\n var timeText;\r\n var titleHtml;\r\n classes.unshift('fc-day-grid-event', 'fc-h-event');\r\n // Only display a timed events time if it is the starting segment\r\n if (seg.isStart) {\r\n timeText = this.getTimeText(seg.footprint);\r\n if (timeText) {\r\n timeHtml = '' + util_1.htmlEscape(timeText) + '';\r\n }\r\n }\r\n titleHtml =\r\n '' +\r\n (util_1.htmlEscape(eventDef.title || '') || ' ') + // we always want one line of height\r\n '';\r\n return '' +\r\n '
' +\r\n (this.dayGrid.isRTL ?\r\n titleHtml + ' ' + timeHtml : // put a natural space in between\r\n timeHtml + ' ' + titleHtml //\r\n ) +\r\n '
' +\r\n (isResizableFromStart ?\r\n '
' :\r\n '') +\r\n (isResizableFromEnd ?\r\n '
' :\r\n '') +\r\n '';\r\n };\r\n return DayGridEventRenderer;\r\n}(EventRenderer_1.default));\r\nexports.default = DayGridEventRenderer;\r\n// Computes whether two segments' columns collide. They are assumed to be in the same row.\r\nfunction isDaySegCollision(seg, otherSegs) {\r\n var i;\r\n var otherSeg;\r\n for (i = 0; i < otherSegs.length; i++) {\r\n otherSeg = otherSegs[i];\r\n if (otherSeg.leftCol <= seg.rightCol &&\r\n otherSeg.rightCol >= seg.leftCol) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n// A cmp function for determining the leftmost event\r\nfunction compareDaySegCols(a, b) {\r\n return a.leftCol - b.leftCol;\r\n}\r\n\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar HelperRenderer_1 = __webpack_require__(63);\r\nvar DayGridHelperRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayGridHelperRenderer, _super);\r\n function DayGridHelperRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Renders a mock \"helper\" event. `sourceSeg` is the associated internal segment object. It can be null.\r\n DayGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) {\r\n var helperNodes = [];\r\n var rowStructs;\r\n // TODO: not good to call eventRenderer this way\r\n rowStructs = this.eventRenderer.renderSegRows(segs);\r\n // inject each new event skeleton into each associated row\r\n this.component.rowEls.each(function (row, rowNode) {\r\n var rowEl = $(rowNode); // the .fc-row\r\n var skeletonEl = $('
'); // will be absolutely positioned\r\n var skeletonTopEl;\r\n var skeletonTop;\r\n // If there is an original segment, match the top position. Otherwise, put it at the row's top level\r\n if (sourceSeg && sourceSeg.row === row) {\r\n skeletonTop = sourceSeg.el.position().top;\r\n }\r\n else {\r\n skeletonTopEl = rowEl.find('.fc-content-skeleton tbody');\r\n if (!skeletonTopEl.length) { // when no events\r\n skeletonTopEl = rowEl.find('.fc-content-skeleton table');\r\n }\r\n skeletonTop = skeletonTopEl.position().top;\r\n }\r\n skeletonEl.css('top', skeletonTop)\r\n .find('table')\r\n .append(rowStructs[row].tbodyEl);\r\n rowEl.append(skeletonEl);\r\n helperNodes.push(skeletonEl[0]);\r\n });\r\n return $(helperNodes); // must return the elements rendered\r\n };\r\n return DayGridHelperRenderer;\r\n}(HelperRenderer_1.default));\r\nexports.default = DayGridHelperRenderer;\r\n\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar FillRenderer_1 = __webpack_require__(62);\r\nvar DayGridFillRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayGridFillRenderer, _super);\r\n function DayGridFillRenderer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.fillSegTag = 'td'; // override the default tag name\r\n return _this;\r\n }\r\n DayGridFillRenderer.prototype.attachSegEls = function (type, segs) {\r\n var nodes = [];\r\n var i;\r\n var seg;\r\n var skeletonEl;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n skeletonEl = this.renderFillRow(type, seg);\r\n this.component.rowEls.eq(seg.row).append(skeletonEl);\r\n nodes.push(skeletonEl[0]);\r\n }\r\n return nodes;\r\n };\r\n // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.\r\n DayGridFillRenderer.prototype.renderFillRow = function (type, seg) {\r\n var colCnt = this.component.colCnt;\r\n var startCol = seg.leftCol;\r\n var endCol = seg.rightCol + 1;\r\n var className;\r\n var skeletonEl;\r\n var trEl;\r\n if (type === 'businessHours') {\r\n className = 'bgevent';\r\n }\r\n else {\r\n className = type.toLowerCase();\r\n }\r\n skeletonEl = $('
' +\r\n '
' +\r\n '
');\r\n trEl = skeletonEl.find('tr');\r\n if (startCol > 0) {\r\n trEl.append(\r\n // will create (startCol + 1) td's\r\n new Array(startCol + 1).join(''));\r\n }\r\n trEl.append(seg.el.attr('colspan', endCol - startCol));\r\n if (endCol < colCnt) {\r\n trEl.append(\r\n // will create (colCnt - endCol) td's\r\n new Array(colCnt - endCol + 1).join(''));\r\n }\r\n this.component.bookendCells(trEl);\r\n return skeletonEl;\r\n };\r\n return DayGridFillRenderer;\r\n}(FillRenderer_1.default));\r\nexports.default = DayGridFillRenderer;\r\n\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar BasicView_1 = __webpack_require__(67);\r\nvar MonthViewDateProfileGenerator_1 = __webpack_require__(247);\r\n/* A month view with day cells running in rows (one-per-week) and columns\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar MonthView = /** @class */ (function (_super) {\r\n tslib_1.__extends(MonthView, _super);\r\n function MonthView() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Overrides the default BasicView behavior to have special multi-week auto-height logic\r\n MonthView.prototype.setGridHeight = function (height, isAuto) {\r\n // if auto, make the height of each row the height that it would be if there were 6 weeks\r\n if (isAuto) {\r\n height *= this.dayGrid.rowCnt / 6;\r\n }\r\n util_1.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows\r\n };\r\n MonthView.prototype.isDateInOtherMonth = function (date, dateProfile) {\r\n return date.month() !== moment.utc(dateProfile.currentUnzonedRange.startMs).month(); // TODO: optimize\r\n };\r\n return MonthView;\r\n}(BasicView_1.default));\r\nexports.default = MonthView;\r\nMonthView.prototype.dateProfileGeneratorClass = MonthViewDateProfileGenerator_1.default;\r\n\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar BasicViewDateProfileGenerator_1 = __webpack_require__(68);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar MonthViewDateProfileGenerator = /** @class */ (function (_super) {\r\n tslib_1.__extends(MonthViewDateProfileGenerator, _super);\r\n function MonthViewDateProfileGenerator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Computes the date range that will be rendered.\r\n MonthViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) {\r\n var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay);\r\n var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay);\r\n var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay);\r\n var rowCnt;\r\n // ensure 6 weeks\r\n if (this.opt('fixedWeekCount')) {\r\n rowCnt = Math.ceil(// could be partial weeks due to hiddenDays\r\n end.diff(start, 'weeks', true) // dontRound=true\r\n );\r\n end.add(6 - rowCnt, 'weeks');\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n return MonthViewDateProfileGenerator;\r\n}(BasicViewDateProfileGenerator_1.default));\r\nexports.default = MonthViewDateProfileGenerator;\r\n\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar View_1 = __webpack_require__(43);\r\nvar Scroller_1 = __webpack_require__(41);\r\nvar ListEventRenderer_1 = __webpack_require__(249);\r\nvar ListEventPointing_1 = __webpack_require__(250);\r\n/*\r\nResponsible for the scroller, and forwarding event-related actions into the \"grid\".\r\n*/\r\nvar ListView = /** @class */ (function (_super) {\r\n tslib_1.__extends(ListView, _super);\r\n function ListView(calendar, viewSpec) {\r\n var _this = _super.call(this, calendar, viewSpec) || this;\r\n _this.segSelector = '.fc-list-item'; // which elements accept event actions\r\n _this.scroller = new Scroller_1.default({\r\n overflowX: 'hidden',\r\n overflowY: 'auto'\r\n });\r\n return _this;\r\n }\r\n ListView.prototype.renderSkeleton = function () {\r\n this.el.addClass('fc-list-view ' +\r\n this.calendar.theme.getClass('listView'));\r\n this.scroller.render();\r\n this.scroller.el.appendTo(this.el);\r\n this.contentEl = this.scroller.scrollEl; // shortcut\r\n };\r\n ListView.prototype.unrenderSkeleton = function () {\r\n this.scroller.destroy(); // will remove the Grid too\r\n };\r\n ListView.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n this.scroller.clear(); // sets height to 'auto' and clears overflow\r\n if (!isAuto) {\r\n this.scroller.setHeight(this.computeScrollerHeight(totalHeight));\r\n }\r\n };\r\n ListView.prototype.computeScrollerHeight = function (totalHeight) {\r\n return totalHeight -\r\n util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\r\n };\r\n ListView.prototype.renderDates = function (dateProfile) {\r\n var calendar = this.calendar;\r\n var dayStart = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs, true);\r\n var viewEnd = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.endMs, true);\r\n var dayDates = [];\r\n var dayRanges = [];\r\n while (dayStart < viewEnd) {\r\n dayDates.push(dayStart.clone());\r\n dayRanges.push(new UnzonedRange_1.default(dayStart, dayStart.clone().add(1, 'day')));\r\n dayStart.add(1, 'day');\r\n }\r\n this.dayDates = dayDates;\r\n this.dayRanges = dayRanges;\r\n // all real rendering happens in EventRenderer\r\n };\r\n // slices by day\r\n ListView.prototype.componentFootprintToSegs = function (footprint) {\r\n var dayRanges = this.dayRanges;\r\n var dayIndex;\r\n var segRange;\r\n var seg;\r\n var segs = [];\r\n for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex++) {\r\n segRange = footprint.unzonedRange.intersect(dayRanges[dayIndex]);\r\n if (segRange) {\r\n seg = {\r\n startMs: segRange.startMs,\r\n endMs: segRange.endMs,\r\n isStart: segRange.isStart,\r\n isEnd: segRange.isEnd,\r\n dayIndex: dayIndex\r\n };\r\n segs.push(seg);\r\n // detect when footprint won't go fully into the next day,\r\n // and mutate the latest seg to the be the end.\r\n if (!seg.isEnd && !footprint.isAllDay &&\r\n dayIndex + 1 < dayRanges.length &&\r\n footprint.unzonedRange.endMs < dayRanges[dayIndex + 1].startMs + this.nextDayThreshold) {\r\n seg.endMs = footprint.unzonedRange.endMs;\r\n seg.isEnd = true;\r\n break;\r\n }\r\n }\r\n }\r\n return segs;\r\n };\r\n ListView.prototype.renderEmptyMessage = function () {\r\n this.contentEl.html('
' + // TODO: try less wraps\r\n '
' +\r\n '
' +\r\n util_1.htmlEscape(this.opt('noEventsMessage')) +\r\n '
' +\r\n '
' +\r\n '
');\r\n };\r\n // render the event segments in the view\r\n ListView.prototype.renderSegList = function (allSegs) {\r\n var segsByDay = this.groupSegsByDay(allSegs); // sparse array\r\n var dayIndex;\r\n var daySegs;\r\n var i;\r\n var tableEl = $('
');\r\n var tbodyEl = tableEl.find('tbody');\r\n for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) {\r\n daySegs = segsByDay[dayIndex];\r\n if (daySegs) { // sparse array, so might be undefined\r\n // append a day header\r\n tbodyEl.append(this.dayHeaderHtml(this.dayDates[dayIndex]));\r\n this.eventRenderer.sortEventSegs(daySegs);\r\n for (i = 0; i < daySegs.length; i++) {\r\n tbodyEl.append(daySegs[i].el); // append event row\r\n }\r\n }\r\n }\r\n this.contentEl.empty().append(tableEl);\r\n };\r\n // Returns a sparse array of arrays, segs grouped by their dayIndex\r\n ListView.prototype.groupSegsByDay = function (segs) {\r\n var segsByDay = []; // sparse array\r\n var i;\r\n var seg;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))\r\n .push(seg);\r\n }\r\n return segsByDay;\r\n };\r\n // generates the HTML for the day headers that live amongst the event rows\r\n ListView.prototype.dayHeaderHtml = function (dayDate) {\r\n var mainFormat = this.opt('listDayFormat');\r\n var altFormat = this.opt('listDayAltFormat');\r\n return '' +\r\n '' +\r\n (mainFormat ?\r\n this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-main' }, util_1.htmlEscape(dayDate.format(mainFormat)) // inner HTML\r\n ) :\r\n '') +\r\n (altFormat ?\r\n this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-alt' }, util_1.htmlEscape(dayDate.format(altFormat)) // inner HTML\r\n ) :\r\n '') +\r\n '' +\r\n '';\r\n };\r\n return ListView;\r\n}(View_1.default));\r\nexports.default = ListView;\r\nListView.prototype.eventRendererClass = ListEventRenderer_1.default;\r\nListView.prototype.eventPointingClass = ListEventPointing_1.default;\r\n\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventRenderer_1 = __webpack_require__(44);\r\nvar ListEventRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(ListEventRenderer, _super);\r\n function ListEventRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ListEventRenderer.prototype.renderFgSegs = function (segs) {\r\n if (!segs.length) {\r\n this.component.renderEmptyMessage();\r\n }\r\n else {\r\n this.component.renderSegList(segs);\r\n }\r\n };\r\n // generates the HTML for a single event row\r\n ListEventRenderer.prototype.fgSegHtml = function (seg) {\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var theme = calendar.theme;\r\n var eventFootprint = seg.footprint;\r\n var eventDef = eventFootprint.eventDef;\r\n var componentFootprint = eventFootprint.componentFootprint;\r\n var url = eventDef.url;\r\n var classes = ['fc-list-item'].concat(this.getClasses(eventDef));\r\n var bgColor = this.getBgColor(eventDef);\r\n var timeHtml;\r\n if (componentFootprint.isAllDay) {\r\n timeHtml = view.getAllDayHtml();\r\n }\r\n else if (view.isMultiDayRange(componentFootprint.unzonedRange)) {\r\n if (seg.isStart || seg.isEnd) { // outer segment that probably lasts part of the day\r\n timeHtml = util_1.htmlEscape(this._getTimeText(calendar.msToMoment(seg.startMs), calendar.msToMoment(seg.endMs), componentFootprint.isAllDay));\r\n }\r\n else { // inner segment that lasts the whole day\r\n timeHtml = view.getAllDayHtml();\r\n }\r\n }\r\n else {\r\n // Display the normal time text for the *event's* times\r\n timeHtml = util_1.htmlEscape(this.getTimeText(eventFootprint));\r\n }\r\n if (url) {\r\n classes.push('fc-has-url');\r\n }\r\n return '' +\r\n (this.displayEventTime ?\r\n '' +\r\n (timeHtml || '') +\r\n '' :\r\n '') +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n util_1.htmlEscape(eventDef.title || '') +\r\n '' +\r\n '' +\r\n '';\r\n };\r\n // like \"4:00am\"\r\n ListEventRenderer.prototype.computeEventTimeFormat = function () {\r\n return this.opt('mediumTimeFormat');\r\n };\r\n return ListEventRenderer;\r\n}(EventRenderer_1.default));\r\nexports.default = ListEventRenderer;\r\n\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar EventPointing_1 = __webpack_require__(64);\r\nvar ListEventPointing = /** @class */ (function (_super) {\r\n tslib_1.__extends(ListEventPointing, _super);\r\n function ListEventPointing() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // for events with a url, the whole should be clickable,\r\n // but it's impossible to wrap with an tag. simulate this.\r\n ListEventPointing.prototype.handleClick = function (seg, ev) {\r\n var url;\r\n _super.prototype.handleClick.call(this, seg, ev); // might prevent the default action\r\n // not clicking on or within an with an href\r\n if (!$(ev.target).closest('a[href]').length) {\r\n url = seg.footprint.eventDef.url;\r\n if (url && !ev.isDefaultPrevented()) { // jsEvent not cancelled in handler\r\n window.location.href = url; // simulate link click\r\n }\r\n }\r\n };\r\n return ListEventPointing;\r\n}(EventPointing_1.default));\r\nexports.default = ListEventPointing;\r\n\n\n/***/ }),\n/* 251 */,\n/* 252 */,\n/* 253 */,\n/* 254 */,\n/* 255 */,\n/* 256 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\r\nvar exportHooks = __webpack_require__(18);\r\nvar util_1 = __webpack_require__(4);\r\nvar Calendar_1 = __webpack_require__(232);\r\n// for intentional side-effects\r\n__webpack_require__(11);\r\n__webpack_require__(49);\r\n__webpack_require__(260);\r\n__webpack_require__(261);\r\n__webpack_require__(264);\r\n__webpack_require__(265);\r\n__webpack_require__(266);\r\n__webpack_require__(267);\r\n$.fullCalendar = exportHooks;\r\n$.fn.fullCalendar = function (options) {\r\n var args = Array.prototype.slice.call(arguments, 1); // for a possible method call\r\n var res = this; // what this function will return (this jQuery object by default)\r\n this.each(function (i, _element) {\r\n var element = $(_element);\r\n var calendar = element.data('fullCalendar'); // get the existing calendar object (if any)\r\n var singleRes; // the returned value of this single method call\r\n // a method call\r\n if (typeof options === 'string') {\r\n if (options === 'getCalendar') {\r\n if (!i) { // first element only\r\n res = calendar;\r\n }\r\n }\r\n else if (options === 'destroy') { // don't warn if no calendar object\r\n if (calendar) {\r\n calendar.destroy();\r\n element.removeData('fullCalendar');\r\n }\r\n }\r\n else if (!calendar) {\r\n util_1.warn('Attempting to call a FullCalendar method on an element with no calendar.');\r\n }\r\n else if ($.isFunction(calendar[options])) {\r\n singleRes = calendar[options].apply(calendar, args);\r\n if (!i) {\r\n res = singleRes; // record the first method call result\r\n }\r\n if (options === 'destroy') { // for the destroy method, must remove Calendar object data\r\n element.removeData('fullCalendar');\r\n }\r\n }\r\n else {\r\n util_1.warn(\"'\" + options + \"' is an unknown FullCalendar method.\");\r\n }\r\n }\r\n else if (!calendar) { // don't initialize twice\r\n calendar = new Calendar_1.default(element, options);\r\n element.data('fullCalendar', calendar);\r\n calendar.render();\r\n }\r\n });\r\n return res;\r\n};\r\nmodule.exports = exportHooks;\r\n\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\n/* Toolbar with buttons and title\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar Toolbar = /** @class */ (function () {\r\n function Toolbar(calendar, toolbarOptions) {\r\n this.el = null; // mirrors local `el`\r\n this.viewsWithButtons = [];\r\n this.calendar = calendar;\r\n this.toolbarOptions = toolbarOptions;\r\n }\r\n // method to update toolbar-specific options, not calendar-wide options\r\n Toolbar.prototype.setToolbarOptions = function (newToolbarOptions) {\r\n this.toolbarOptions = newToolbarOptions;\r\n };\r\n // can be called repeatedly and will rerender\r\n Toolbar.prototype.render = function () {\r\n var sections = this.toolbarOptions.layout;\r\n var el = this.el;\r\n if (sections) {\r\n if (!el) {\r\n el = this.el = $(\"
\");\r\n }\r\n else {\r\n el.empty();\r\n }\r\n el.append(this.renderSection('left'))\r\n .append(this.renderSection('right'))\r\n .append(this.renderSection('center'))\r\n .append('
');\r\n }\r\n else {\r\n this.removeElement();\r\n }\r\n };\r\n Toolbar.prototype.removeElement = function () {\r\n if (this.el) {\r\n this.el.remove();\r\n this.el = null;\r\n }\r\n };\r\n Toolbar.prototype.renderSection = function (position) {\r\n var _this = this;\r\n var calendar = this.calendar;\r\n var theme = calendar.theme;\r\n var optionsManager = calendar.optionsManager;\r\n var viewSpecManager = calendar.viewSpecManager;\r\n var sectionEl = $('
');\r\n var buttonStr = this.toolbarOptions.layout[position];\r\n var calendarCustomButtons = optionsManager.get('customButtons') || {};\r\n var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {};\r\n var calendarButtonText = optionsManager.get('buttonText') || {};\r\n if (buttonStr) {\r\n $.each(buttonStr.split(' '), function (i, buttonGroupStr) {\r\n var groupChildren = $();\r\n var isOnlyButtons = true;\r\n var groupEl;\r\n $.each(buttonGroupStr.split(','), function (j, buttonName) {\r\n var customButtonProps;\r\n var viewSpec;\r\n var buttonClick;\r\n var buttonIcon; // only one of these will be set\r\n var buttonText; // \"\r\n var buttonInnerHtml;\r\n var buttonClasses;\r\n var buttonEl;\r\n var buttonAriaAttr;\r\n if (buttonName === 'title') {\r\n groupChildren = groupChildren.add($('

 

')); // we always want it to take up height\r\n isOnlyButtons = false;\r\n }\r\n else {\r\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\r\n buttonClick = function (ev) {\r\n if (customButtonProps.click) {\r\n customButtonProps.click.call(buttonEl[0], ev);\r\n }\r\n };\r\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\r\n (buttonIcon = theme.getIconClass(buttonName)) ||\r\n (buttonText = customButtonProps.text);\r\n }\r\n else if ((viewSpec = viewSpecManager.getViewSpec(buttonName))) {\r\n _this.viewsWithButtons.push(buttonName);\r\n buttonClick = function () {\r\n calendar.changeView(buttonName);\r\n };\r\n (buttonText = viewSpec.buttonTextOverride) ||\r\n (buttonIcon = theme.getIconClass(buttonName)) ||\r\n (buttonText = viewSpec.buttonTextDefault);\r\n }\r\n else if (calendar[buttonName]) { // a calendar method\r\n buttonClick = function () {\r\n calendar[buttonName]();\r\n };\r\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\r\n (buttonIcon = theme.getIconClass(buttonName)) ||\r\n (buttonText = calendarButtonText[buttonName]);\r\n // ^ everything else is considered default\r\n }\r\n if (buttonClick) {\r\n buttonClasses = [\r\n 'fc-' + buttonName + '-button',\r\n theme.getClass('button'),\r\n theme.getClass('stateDefault')\r\n ];\r\n if (buttonText) {\r\n buttonInnerHtml = util_1.htmlEscape(buttonText);\r\n buttonAriaAttr = '';\r\n }\r\n else if (buttonIcon) {\r\n buttonInnerHtml = \"\";\r\n buttonAriaAttr = ' aria-label=\"' + buttonName + '\"';\r\n }\r\n buttonEl = $(// type=\"button\" so that it doesn't submit a form\r\n '')\r\n .click(function (ev) {\r\n // don't process clicks for disabled buttons\r\n if (!buttonEl.hasClass(theme.getClass('stateDisabled'))) {\r\n buttonClick(ev);\r\n // after the click action, if the button becomes the \"active\" tab, or disabled,\r\n // it should never have a hover class, so remove it now.\r\n if (buttonEl.hasClass(theme.getClass('stateActive')) ||\r\n buttonEl.hasClass(theme.getClass('stateDisabled'))) {\r\n buttonEl.removeClass(theme.getClass('stateHover'));\r\n }\r\n }\r\n })\r\n .mousedown(function () {\r\n // the *down* effect (mouse pressed in).\r\n // only on buttons that are not the \"active\" tab, or disabled\r\n buttonEl\r\n .not('.' + theme.getClass('stateActive'))\r\n .not('.' + theme.getClass('stateDisabled'))\r\n .addClass(theme.getClass('stateDown'));\r\n })\r\n .mouseup(function () {\r\n // undo the *down* effect\r\n buttonEl.removeClass(theme.getClass('stateDown'));\r\n })\r\n .hover(function () {\r\n // the *hover* effect.\r\n // only on buttons that are not the \"active\" tab, or disabled\r\n buttonEl\r\n .not('.' + theme.getClass('stateActive'))\r\n .not('.' + theme.getClass('stateDisabled'))\r\n .addClass(theme.getClass('stateHover'));\r\n }, function () {\r\n // undo the *hover* effect\r\n buttonEl\r\n .removeClass(theme.getClass('stateHover'))\r\n .removeClass(theme.getClass('stateDown')); // if mouseleave happens before mouseup\r\n });\r\n groupChildren = groupChildren.add(buttonEl);\r\n }\r\n }\r\n });\r\n if (isOnlyButtons) {\r\n groupChildren\r\n .first().addClass(theme.getClass('cornerLeft')).end()\r\n .last().addClass(theme.getClass('cornerRight')).end();\r\n }\r\n if (groupChildren.length > 1) {\r\n groupEl = $('
');\r\n if (isOnlyButtons) {\r\n groupEl.addClass(theme.getClass('buttonGroup'));\r\n }\r\n groupEl.append(groupChildren);\r\n sectionEl.append(groupEl);\r\n }\r\n else {\r\n sectionEl.append(groupChildren); // 1 or 0 children\r\n }\r\n });\r\n }\r\n return sectionEl;\r\n };\r\n Toolbar.prototype.updateTitle = function (text) {\r\n if (this.el) {\r\n this.el.find('h2').text(text);\r\n }\r\n };\r\n Toolbar.prototype.activateButton = function (buttonName) {\r\n if (this.el) {\r\n this.el.find('.fc-' + buttonName + '-button')\r\n .addClass(this.calendar.theme.getClass('stateActive'));\r\n }\r\n };\r\n Toolbar.prototype.deactivateButton = function (buttonName) {\r\n if (this.el) {\r\n this.el.find('.fc-' + buttonName + '-button')\r\n .removeClass(this.calendar.theme.getClass('stateActive'));\r\n }\r\n };\r\n Toolbar.prototype.disableButton = function (buttonName) {\r\n if (this.el) {\r\n this.el.find('.fc-' + buttonName + '-button')\r\n .prop('disabled', true)\r\n .addClass(this.calendar.theme.getClass('stateDisabled'));\r\n }\r\n };\r\n Toolbar.prototype.enableButton = function (buttonName) {\r\n if (this.el) {\r\n this.el.find('.fc-' + buttonName + '-button')\r\n .prop('disabled', false)\r\n .removeClass(this.calendar.theme.getClass('stateDisabled'));\r\n }\r\n };\r\n Toolbar.prototype.getViewsWithButtons = function () {\r\n return this.viewsWithButtons;\r\n };\r\n return Toolbar;\r\n}());\r\nexports.default = Toolbar;\r\n\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar options_1 = __webpack_require__(33);\r\nvar locale_1 = __webpack_require__(32);\r\nvar Model_1 = __webpack_require__(51);\r\nvar OptionsManager = /** @class */ (function (_super) {\r\n tslib_1.__extends(OptionsManager, _super);\r\n function OptionsManager(_calendar, overrides) {\r\n var _this = _super.call(this) || this;\r\n _this._calendar = _calendar;\r\n _this.overrides = $.extend({}, overrides); // make a copy\r\n _this.dynamicOverrides = {};\r\n _this.compute();\r\n return _this;\r\n }\r\n OptionsManager.prototype.add = function (newOptionHash) {\r\n var optionCnt = 0;\r\n var optionName;\r\n this.recordOverrides(newOptionHash); // will trigger this model's watchers\r\n for (optionName in newOptionHash) {\r\n optionCnt++;\r\n }\r\n // special-case handling of single option change.\r\n // if only one option change, `optionName` will be its name.\r\n if (optionCnt === 1) {\r\n if (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') {\r\n this._calendar.updateViewSize(true); // isResize=true\r\n return;\r\n }\r\n else if (optionName === 'defaultDate') {\r\n return; // can't change date this way. use gotoDate instead\r\n }\r\n else if (optionName === 'businessHours') {\r\n return; // this model already reacts to this\r\n }\r\n else if (/^(event|select)(Overlap|Constraint|Allow)$/.test(optionName)) {\r\n return; // doesn't affect rendering. only interactions.\r\n }\r\n else if (optionName === 'timezone') {\r\n this._calendar.view.flash('initialEvents');\r\n return;\r\n }\r\n }\r\n // catch-all. rerender the header and footer and rebuild/rerender the current view\r\n this._calendar.renderHeader();\r\n this._calendar.renderFooter();\r\n // even non-current views will be affected by this option change. do before rerender\r\n // TODO: detangle\r\n this._calendar.viewsByType = {};\r\n this._calendar.reinitView();\r\n };\r\n // Computes the flattened options hash for the calendar and assigns to `this.options`.\r\n // Assumes this.overrides and this.dynamicOverrides have already been initialized.\r\n OptionsManager.prototype.compute = function () {\r\n var locale;\r\n var localeDefaults;\r\n var isRTL;\r\n var dirDefaults;\r\n var rawOptions;\r\n locale = util_1.firstDefined(// explicit locale option given?\r\n this.dynamicOverrides.locale, this.overrides.locale);\r\n localeDefaults = locale_1.localeOptionHash[locale];\r\n if (!localeDefaults) { // explicit locale option not given or invalid?\r\n locale = options_1.globalDefaults.locale;\r\n localeDefaults = locale_1.localeOptionHash[locale] || {};\r\n }\r\n isRTL = util_1.firstDefined(// based on options computed so far, is direction RTL?\r\n this.dynamicOverrides.isRTL, this.overrides.isRTL, localeDefaults.isRTL, options_1.globalDefaults.isRTL);\r\n dirDefaults = isRTL ? options_1.rtlDefaults : {};\r\n this.dirDefaults = dirDefaults;\r\n this.localeDefaults = localeDefaults;\r\n rawOptions = options_1.mergeOptions([\r\n options_1.globalDefaults,\r\n dirDefaults,\r\n localeDefaults,\r\n this.overrides,\r\n this.dynamicOverrides\r\n ]);\r\n locale_1.populateInstanceComputableOptions(rawOptions); // fill in gaps with computed options\r\n this.reset(rawOptions);\r\n };\r\n // stores the new options internally, but does not rerender anything.\r\n OptionsManager.prototype.recordOverrides = function (newOptionHash) {\r\n var optionName;\r\n for (optionName in newOptionHash) {\r\n this.dynamicOverrides[optionName] = newOptionHash[optionName];\r\n }\r\n this._calendar.viewSpecManager.clearCache(); // the dynamic override invalidates the options in this cache, so just clear it\r\n this.compute(); // this.options needs to be recomputed after the dynamic override\r\n };\r\n return OptionsManager;\r\n}(Model_1.default));\r\nexports.default = OptionsManager;\r\n\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar $ = __webpack_require__(3);\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nvar util_1 = __webpack_require__(4);\r\nvar options_1 = __webpack_require__(33);\r\nvar locale_1 = __webpack_require__(32);\r\nvar ViewSpecManager = /** @class */ (function () {\r\n function ViewSpecManager(optionsManager, _calendar) {\r\n this.optionsManager = optionsManager;\r\n this._calendar = _calendar;\r\n this.clearCache();\r\n }\r\n ViewSpecManager.prototype.clearCache = function () {\r\n this.viewSpecCache = {};\r\n };\r\n // Gets information about how to create a view. Will use a cache.\r\n ViewSpecManager.prototype.getViewSpec = function (viewType) {\r\n var cache = this.viewSpecCache;\r\n return cache[viewType] || (cache[viewType] = this.buildViewSpec(viewType));\r\n };\r\n // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\r\n // Preference is given to views that have corresponding buttons.\r\n ViewSpecManager.prototype.getUnitViewSpec = function (unit) {\r\n var viewTypes;\r\n var i;\r\n var spec;\r\n if ($.inArray(unit, util_1.unitsDesc) !== -1) {\r\n // put views that have buttons first. there will be duplicates, but oh well\r\n viewTypes = this._calendar.header.getViewsWithButtons(); // TODO: include footer as well?\r\n $.each(ViewRegistry_1.viewHash, function (viewType) {\r\n viewTypes.push(viewType);\r\n });\r\n for (i = 0; i < viewTypes.length; i++) {\r\n spec = this.getViewSpec(viewTypes[i]);\r\n if (spec) {\r\n if (spec.singleUnit === unit) {\r\n return spec;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n // Builds an object with information on how to create a given view\r\n ViewSpecManager.prototype.buildViewSpec = function (requestedViewType) {\r\n var viewOverrides = this.optionsManager.overrides.views || {};\r\n var specChain = []; // for the view. lowest to highest priority\r\n var defaultsChain = []; // for the view. lowest to highest priority\r\n var overridesChain = []; // for the view. lowest to highest priority\r\n var viewType = requestedViewType;\r\n var spec; // for the view\r\n var overrides; // for the view\r\n var durationInput;\r\n var duration;\r\n var unit;\r\n // iterate from the specific view definition to a more general one until we hit an actual View class\r\n while (viewType) {\r\n spec = ViewRegistry_1.viewHash[viewType];\r\n overrides = viewOverrides[viewType];\r\n viewType = null; // clear. might repopulate for another iteration\r\n if (typeof spec === 'function') { // TODO: deprecate\r\n spec = { 'class': spec };\r\n }\r\n if (spec) {\r\n specChain.unshift(spec);\r\n defaultsChain.unshift(spec.defaults || {});\r\n durationInput = durationInput || spec.duration;\r\n viewType = viewType || spec.type;\r\n }\r\n if (overrides) {\r\n overridesChain.unshift(overrides); // view-specific option hashes have options at zero-level\r\n durationInput = durationInput || overrides.duration;\r\n viewType = viewType || overrides.type;\r\n }\r\n }\r\n spec = util_1.mergeProps(specChain);\r\n spec.type = requestedViewType;\r\n if (!spec['class']) {\r\n return false;\r\n }\r\n // fall back to top-level `duration` option\r\n durationInput = durationInput ||\r\n this.optionsManager.dynamicOverrides.duration ||\r\n this.optionsManager.overrides.duration;\r\n if (durationInput) {\r\n duration = moment.duration(durationInput);\r\n if (duration.valueOf()) { // valid?\r\n unit = util_1.computeDurationGreatestUnit(duration, durationInput);\r\n spec.duration = duration;\r\n spec.durationUnit = unit;\r\n // view is a single-unit duration, like \"week\" or \"day\"\r\n // incorporate options for this. lowest priority\r\n if (duration.as(unit) === 1) {\r\n spec.singleUnit = unit;\r\n overridesChain.unshift(viewOverrides[unit] || {});\r\n }\r\n }\r\n }\r\n spec.defaults = options_1.mergeOptions(defaultsChain);\r\n spec.overrides = options_1.mergeOptions(overridesChain);\r\n this.buildViewSpecOptions(spec);\r\n this.buildViewSpecButtonText(spec, requestedViewType);\r\n return spec;\r\n };\r\n // Builds and assigns a view spec's options object from its already-assigned defaults and overrides\r\n ViewSpecManager.prototype.buildViewSpecOptions = function (spec) {\r\n var optionsManager = this.optionsManager;\r\n spec.options = options_1.mergeOptions([\r\n options_1.globalDefaults,\r\n spec.defaults,\r\n optionsManager.dirDefaults,\r\n optionsManager.localeDefaults,\r\n optionsManager.overrides,\r\n spec.overrides,\r\n optionsManager.dynamicOverrides // dynamically set via setter. highest precedence\r\n ]);\r\n locale_1.populateInstanceComputableOptions(spec.options);\r\n };\r\n // Computes and assigns a view spec's buttonText-related options\r\n ViewSpecManager.prototype.buildViewSpecButtonText = function (spec, requestedViewType) {\r\n var optionsManager = this.optionsManager;\r\n // given an options object with a possible `buttonText` hash, lookup the buttonText for the\r\n // requested view, falling back to a generic unit entry like \"week\" or \"day\"\r\n function queryButtonText(options) {\r\n var buttonText = options.buttonText || {};\r\n return buttonText[requestedViewType] ||\r\n // view can decide to look up a certain key\r\n (spec.buttonTextKey ? buttonText[spec.buttonTextKey] : null) ||\r\n // a key like \"month\"\r\n (spec.singleUnit ? buttonText[spec.singleUnit] : null);\r\n }\r\n // highest to lowest priority\r\n spec.buttonTextOverride =\r\n queryButtonText(optionsManager.dynamicOverrides) ||\r\n queryButtonText(optionsManager.overrides) || // constructor-specified buttonText lookup hash takes precedence\r\n spec.overrides.buttonText; // `buttonText` for view-specific options is a string\r\n // highest to lowest priority. mirrors buildViewSpecOptions\r\n spec.buttonTextDefault =\r\n queryButtonText(optionsManager.localeDefaults) ||\r\n queryButtonText(optionsManager.dirDefaults) ||\r\n spec.defaults.buttonText || // a single string. from ViewSubclass.defaults\r\n queryButtonText(options_1.globalDefaults) ||\r\n (spec.duration ? this._calendar.humanizeDuration(spec.duration) : null) || // like \"3 days\"\r\n requestedViewType; // fall back to given view name\r\n };\r\n return ViewSpecManager;\r\n}());\r\nexports.default = ViewSpecManager;\r\n\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventSourceParser_1 = __webpack_require__(38);\r\nvar ArrayEventSource_1 = __webpack_require__(56);\r\nvar FuncEventSource_1 = __webpack_require__(223);\r\nvar JsonFeedEventSource_1 = __webpack_require__(224);\r\nEventSourceParser_1.default.registerClass(ArrayEventSource_1.default);\r\nEventSourceParser_1.default.registerClass(FuncEventSource_1.default);\r\nEventSourceParser_1.default.registerClass(JsonFeedEventSource_1.default);\r\n\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ThemeRegistry_1 = __webpack_require__(57);\r\nvar StandardTheme_1 = __webpack_require__(221);\r\nvar JqueryUiTheme_1 = __webpack_require__(222);\r\nvar Bootstrap3Theme_1 = __webpack_require__(262);\r\nvar Bootstrap4Theme_1 = __webpack_require__(263);\r\nThemeRegistry_1.defineThemeSystem('standard', StandardTheme_1.default);\r\nThemeRegistry_1.defineThemeSystem('jquery-ui', JqueryUiTheme_1.default);\r\nThemeRegistry_1.defineThemeSystem('bootstrap3', Bootstrap3Theme_1.default);\r\nThemeRegistry_1.defineThemeSystem('bootstrap4', Bootstrap4Theme_1.default);\r\n\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Theme_1 = __webpack_require__(22);\r\nvar Bootstrap3Theme = /** @class */ (function (_super) {\r\n tslib_1.__extends(Bootstrap3Theme, _super);\r\n function Bootstrap3Theme() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return Bootstrap3Theme;\r\n}(Theme_1.default));\r\nexports.default = Bootstrap3Theme;\r\nBootstrap3Theme.prototype.classes = {\r\n widget: 'fc-bootstrap3',\r\n tableGrid: 'table-bordered',\r\n tableList: 'table',\r\n tableListHeading: 'active',\r\n buttonGroup: 'btn-group',\r\n button: 'btn btn-default',\r\n stateActive: 'active',\r\n stateDisabled: 'disabled',\r\n today: 'alert alert-info',\r\n popover: 'panel panel-default',\r\n popoverHeader: 'panel-heading',\r\n popoverContent: 'panel-body',\r\n // day grid\r\n // for left/right border color when border is inset from edges (all-day in agenda view)\r\n // avoid `panel` class b/c don't want margins/radius. only border color.\r\n headerRow: 'panel-default',\r\n dayRow: 'panel-default',\r\n // list view\r\n listView: 'panel panel-default'\r\n};\r\nBootstrap3Theme.prototype.baseIconClass = 'glyphicon';\r\nBootstrap3Theme.prototype.iconClasses = {\r\n close: 'glyphicon-remove',\r\n prev: 'glyphicon-chevron-left',\r\n next: 'glyphicon-chevron-right',\r\n prevYear: 'glyphicon-backward',\r\n nextYear: 'glyphicon-forward'\r\n};\r\nBootstrap3Theme.prototype.iconOverrideOption = 'bootstrapGlyphicons';\r\nBootstrap3Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapGlyphicon';\r\nBootstrap3Theme.prototype.iconOverridePrefix = 'glyphicon-';\r\n\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Theme_1 = __webpack_require__(22);\r\nvar Bootstrap4Theme = /** @class */ (function (_super) {\r\n tslib_1.__extends(Bootstrap4Theme, _super);\r\n function Bootstrap4Theme() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return Bootstrap4Theme;\r\n}(Theme_1.default));\r\nexports.default = Bootstrap4Theme;\r\nBootstrap4Theme.prototype.classes = {\r\n widget: 'fc-bootstrap4',\r\n tableGrid: 'table-bordered',\r\n tableList: 'table',\r\n tableListHeading: 'table-active',\r\n buttonGroup: 'btn-group',\r\n button: 'btn btn-primary',\r\n stateActive: 'active',\r\n stateDisabled: 'disabled',\r\n today: 'alert alert-info',\r\n popover: 'card card-primary',\r\n popoverHeader: 'card-header',\r\n popoverContent: 'card-body',\r\n // day grid\r\n // for left/right border color when border is inset from edges (all-day in agenda view)\r\n // avoid `table` class b/c don't want margins/padding/structure. only border color.\r\n headerRow: 'table-bordered',\r\n dayRow: 'table-bordered',\r\n // list view\r\n listView: 'card card-primary'\r\n};\r\nBootstrap4Theme.prototype.baseIconClass = 'fa';\r\nBootstrap4Theme.prototype.iconClasses = {\r\n close: 'fa-times',\r\n prev: 'fa-chevron-left',\r\n next: 'fa-chevron-right',\r\n prevYear: 'fa-angle-double-left',\r\n nextYear: 'fa-angle-double-right'\r\n};\r\nBootstrap4Theme.prototype.iconOverrideOption = 'bootstrapFontAwesome';\r\nBootstrap4Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome';\r\nBootstrap4Theme.prototype.iconOverridePrefix = 'fa-';\r\n\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nvar BasicView_1 = __webpack_require__(67);\r\nvar MonthView_1 = __webpack_require__(246);\r\nViewRegistry_1.defineView('basic', {\r\n 'class': BasicView_1.default\r\n});\r\nViewRegistry_1.defineView('basicDay', {\r\n type: 'basic',\r\n duration: { days: 1 }\r\n});\r\nViewRegistry_1.defineView('basicWeek', {\r\n type: 'basic',\r\n duration: { weeks: 1 }\r\n});\r\nViewRegistry_1.defineView('month', {\r\n 'class': MonthView_1.default,\r\n duration: { months: 1 },\r\n defaults: {\r\n fixedWeekCount: true\r\n }\r\n});\r\n\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nvar AgendaView_1 = __webpack_require__(238);\r\nViewRegistry_1.defineView('agenda', {\r\n 'class': AgendaView_1.default,\r\n defaults: {\r\n allDaySlot: true,\r\n slotDuration: '00:30:00',\r\n slotEventOverlap: true // a bad name. confused with overlap/constraint system\r\n }\r\n});\r\nViewRegistry_1.defineView('agendaDay', {\r\n type: 'agenda',\r\n duration: { days: 1 }\r\n});\r\nViewRegistry_1.defineView('agendaWeek', {\r\n type: 'agenda',\r\n duration: { weeks: 1 }\r\n});\r\n\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nvar ListView_1 = __webpack_require__(248);\r\nViewRegistry_1.defineView('list', {\r\n 'class': ListView_1.default,\r\n buttonTextKey: 'list',\r\n defaults: {\r\n buttonText: 'list',\r\n listDayFormat: 'LL',\r\n noEventsMessage: 'No events to display'\r\n }\r\n});\r\nViewRegistry_1.defineView('listDay', {\r\n type: 'list',\r\n duration: { days: 1 },\r\n defaults: {\r\n listDayFormat: 'dddd' // day-of-week is all we need. full date is probably in header\r\n }\r\n});\r\nViewRegistry_1.defineView('listWeek', {\r\n type: 'list',\r\n duration: { weeks: 1 },\r\n defaults: {\r\n listDayFormat: 'dddd',\r\n listDayAltFormat: 'LL'\r\n }\r\n});\r\nViewRegistry_1.defineView('listMonth', {\r\n type: 'list',\r\n duration: { month: 1 },\r\n defaults: {\r\n listDayAltFormat: 'dddd' // day-of-week is nice-to-have\r\n }\r\n});\r\nViewRegistry_1.defineView('listYear', {\r\n type: 'list',\r\n duration: { year: 1 },\r\n defaults: {\r\n listDayAltFormat: 'dddd' // day-of-week is nice-to-have\r\n }\r\n});\r\n\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ })\n/******/ ]);\n});","module.exports = __webpack_public_path__ + \"img/icondefault.ffbf2ec3.svg\";","module.exports = __webpack_public_path__ + \"img/iconBook.55bdc272.svg\";","module.exports = __webpack_public_path__ + \"img/book-blue.e2552d16.svg\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyTutor.vue?vue&type=style&index=0&id=72b49857&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyTutor.vue?vue&type=style&index=0&id=72b49857&scoped=true&lang=css&\"","/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyTutor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyTutor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MyTutor.vue?vue&type=template&id=72b49857&scoped=true&\"\nimport script from \"./MyTutor.vue?vue&type=script&lang=js&\"\nexport * from \"./MyTutor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MyTutor.vue?vue&type=style&index=0&id=72b49857&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72b49857\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}